From: Rayagonda Kokatanur <[email protected]>
RING_CONTROL reg was not written due to wrong address, hence all
the subsequent ring flush was timing out.
Fixes: a371c10ea4b3 ("mailbox: bcm-flexrm-mailbox: Fix FlexRM ring flush sequence")
Signed-off-by: Rayagonda Kokatanur <[email protected]>
Signed-off-by: Ray Jui <[email protected]>
---
drivers/mailbox/bcm-flexrm-mailbox.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/mailbox/bcm-flexrm-mailbox.c b/drivers/mailbox/bcm-flexrm-mailbox.c
index d713271ebf7c..a64116586b4c 100644
--- a/drivers/mailbox/bcm-flexrm-mailbox.c
+++ b/drivers/mailbox/bcm-flexrm-mailbox.c
@@ -1396,9 +1396,9 @@ static void flexrm_shutdown(struct mbox_chan *chan)
/* Clear ring flush state */
timeout = 1000; /* timeout of 1s */
- writel_relaxed(0x0, ring + RING_CONTROL);
+ writel_relaxed(0x0, ring->regs + RING_CONTROL);
do {
- if (!(readl_relaxed(ring + RING_FLUSH_DONE) &
+ if (!(readl_relaxed(ring->regs + RING_FLUSH_DONE) &
FLUSH_DONE_MASK))
break;
mdelay(1);
--
2.17.1
Fix looks good.
On 2019-02-04 11:21 a.m., Ray Jui wrote:
> From: Rayagonda Kokatanur <[email protected]>
>
> RING_CONTROL reg was not written due to wrong address, hence all
> the subsequent ring flush was timing out.
>
> Fixes: a371c10ea4b3 ("mailbox: bcm-flexrm-mailbox: Fix FlexRM ring flush sequence")
>
> Signed-off-by: Rayagonda Kokatanur <[email protected]>
> Signed-off-by: Ray Jui <[email protected]>
Reviewed-by: Scott Branden <[email protected]>
> ---
> drivers/mailbox/bcm-flexrm-mailbox.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/mailbox/bcm-flexrm-mailbox.c b/drivers/mailbox/bcm-flexrm-mailbox.c
> index d713271ebf7c..a64116586b4c 100644
> --- a/drivers/mailbox/bcm-flexrm-mailbox.c
> +++ b/drivers/mailbox/bcm-flexrm-mailbox.c
> @@ -1396,9 +1396,9 @@ static void flexrm_shutdown(struct mbox_chan *chan)
>
> /* Clear ring flush state */
> timeout = 1000; /* timeout of 1s */
> - writel_relaxed(0x0, ring + RING_CONTROL);
> + writel_relaxed(0x0, ring->regs + RING_CONTROL);
> do {
> - if (!(readl_relaxed(ring + RING_FLUSH_DONE) &
> + if (!(readl_relaxed(ring->regs + RING_FLUSH_DONE) &
> FLUSH_DONE_MASK))
> break;
> mdelay(1);
Hi Jassi,
Have you had a chance to review this fix? This is a critical fix for a
crash during driver shutdown.
Regards,
Ray
On 2/4/2019 11:22 AM, Scott Branden wrote:
> Fix looks good.
>
> On 2019-02-04 11:21 a.m., Ray Jui wrote:
>> From: Rayagonda Kokatanur <[email protected]>
>>
>> RING_CONTROL reg was not written due to wrong address, hence all
>> the subsequent ring flush was timing out.
>>
>> Fixes: a371c10ea4b3 ("mailbox: bcm-flexrm-mailbox: Fix FlexRM ring
>> flush sequence")
>>
>> Signed-off-by: Rayagonda Kokatanur <[email protected]>
>> Signed-off-by: Ray Jui <[email protected]>
> Reviewed-by: Scott Branden <[email protected]>
>> ---
>> drivers/mailbox/bcm-flexrm-mailbox.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/mailbox/bcm-flexrm-mailbox.c
>> b/drivers/mailbox/bcm-flexrm-mailbox.c
>> index d713271ebf7c..a64116586b4c 100644
>> --- a/drivers/mailbox/bcm-flexrm-mailbox.c
>> +++ b/drivers/mailbox/bcm-flexrm-mailbox.c
>> @@ -1396,9 +1396,9 @@ static void flexrm_shutdown(struct mbox_chan *chan)
>> /* Clear ring flush state */
>> timeout = 1000; /* timeout of 1s */
>> - writel_relaxed(0x0, ring + RING_CONTROL);
>> + writel_relaxed(0x0, ring->regs + RING_CONTROL);
>> do {
>> - if (!(readl_relaxed(ring + RING_FLUSH_DONE) &
>> + if (!(readl_relaxed(ring->regs + RING_FLUSH_DONE) &
>> FLUSH_DONE_MASK))
>> break;
>> mdelay(1);