From: Bin Liu <b-liu@ti.com>
To: Merlijn Wajer <merlijn@wizzup.org>
Cc: ivo.g.dimitrov.75@gmail.com, linux-omap@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [RFC PATCH] usb: musb: Fix external abort in musb_remove
Date: Thu, 8 Mar 2018 10:46:13 -0600 [thread overview]
Message-ID: <20180308164613.GH14921@uda0271908> (raw)
In-Reply-To: <20180308093121.11943-1-merlijn@wizzup.org>
Hi,
On Thu, Mar 08, 2018 at 10:31:21AM +0100, Merlijn Wajer wrote:
> This fixes an oops on unbind / module unload. The fix is similar to the
> one in this commit: 0c3aae9bd59978fb8c3557d7883380bef0f2cfa1 (USB: musb:
> fix late external abort on suspend), which only fixes the issue for
> musb_suspend.
>
> musb_remove function now also flushes any work and also calls
> musb_platform_exit before disabling runtime pm.
>
> Signed-off-by: Merlijn Wajer <merlijn@wizzup.org>
> ---
>
> If I understand commit 0c3aae9bd59978fb8c3557d7883380bef0f2cfa1 correctly,
> this patch should also be backported to 4.9 (and newer kernels).
>
> I have verified that this works on the Nokia N900, RX-51. The problem did not
> occur on the Motorola Droid 4, but I have yet to test if this patch causes
> issues there.
>
> drivers/usb/musb/musb_core.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
> index e2e95071328a..4fb0f345c04e 100644
> --- a/drivers/usb/musb/musb_core.c
> +++ b/drivers/usb/musb/musb_core.c
> @@ -2472,13 +2472,19 @@ static int musb_remove(struct platform_device *pdev)
> musb_platform_disable(musb);
> spin_lock_irqsave(&musb->lock, flags);
> musb_disable_interrupts(musb);
> +
> + musb->flush_irq_work = true;
> + while (flush_delayed_work(&musb->irq_work))
> + ;
> + musb->flush_irq_work = false;
No need to flush, the work is already cancelled at this point.
> +
> musb_writeb(musb->mregs, MUSB_DEVCTL, 0);
> + musb_platform_exit(musb);
This can be move down to out side of holding the spinlock,
> spin_unlock_irqrestore(&musb->lock, flags);
to here.
>
> pm_runtime_dont_use_autosuspend(musb->controller);
> pm_runtime_put_sync(musb->controller);
> pm_runtime_disable(musb->controller);
> - musb_platform_exit(musb);
> musb_phy_callback = NULL;
> if (musb->dma_controller)
> musb_dma_controller_destroy(musb->dma_controller);
> --
Thanks for the patch.
Regards,
-Bin.
WARNING: multiple messages have this Message-ID (diff)
From: Bin Liu <b-liu@ti.com>
To: Merlijn Wajer <merlijn@wizzup.org>
Cc: ivo.g.dimitrov.75@gmail.com, linux-omap@vger.kernel.org,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [RFC] usb: musb: Fix external abort in musb_remove
Date: Thu, 8 Mar 2018 10:46:13 -0600 [thread overview]
Message-ID: <20180308164613.GH14921@uda0271908> (raw)
Hi,
On Thu, Mar 08, 2018 at 10:31:21AM +0100, Merlijn Wajer wrote:
> This fixes an oops on unbind / module unload. The fix is similar to the
> one in this commit: 0c3aae9bd59978fb8c3557d7883380bef0f2cfa1 (USB: musb:
> fix late external abort on suspend), which only fixes the issue for
> musb_suspend.
>
> musb_remove function now also flushes any work and also calls
> musb_platform_exit before disabling runtime pm.
>
> Signed-off-by: Merlijn Wajer <merlijn@wizzup.org>
> ---
>
> If I understand commit 0c3aae9bd59978fb8c3557d7883380bef0f2cfa1 correctly,
> this patch should also be backported to 4.9 (and newer kernels).
>
> I have verified that this works on the Nokia N900, RX-51. The problem did not
> occur on the Motorola Droid 4, but I have yet to test if this patch causes
> issues there.
>
> drivers/usb/musb/musb_core.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
> index e2e95071328a..4fb0f345c04e 100644
> --- a/drivers/usb/musb/musb_core.c
> +++ b/drivers/usb/musb/musb_core.c
> @@ -2472,13 +2472,19 @@ static int musb_remove(struct platform_device *pdev)
> musb_platform_disable(musb);
> spin_lock_irqsave(&musb->lock, flags);
> musb_disable_interrupts(musb);
> +
> + musb->flush_irq_work = true;
> + while (flush_delayed_work(&musb->irq_work))
> + ;
> + musb->flush_irq_work = false;
No need to flush, the work is already cancelled at this point.
> +
> musb_writeb(musb->mregs, MUSB_DEVCTL, 0);
> + musb_platform_exit(musb);
This can be move down to out side of holding the spinlock,
> spin_unlock_irqrestore(&musb->lock, flags);
to here.
>
> pm_runtime_dont_use_autosuspend(musb->controller);
> pm_runtime_put_sync(musb->controller);
> pm_runtime_disable(musb->controller);
> - musb_platform_exit(musb);
> musb_phy_callback = NULL;
> if (musb->dma_controller)
> musb_dma_controller_destroy(musb->dma_controller);
> --
Thanks for the patch.
Regards,
-Bin.
---
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Bin Liu <b-liu@ti.com>
To: Merlijn Wajer <merlijn@wizzup.org>
Cc: <ivo.g.dimitrov.75@gmail.com>, <linux-omap@vger.kernel.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
<linux-usb@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Subject: Re: [RFC PATCH] usb: musb: Fix external abort in musb_remove
Date: Thu, 8 Mar 2018 10:46:13 -0600 [thread overview]
Message-ID: <20180308164613.GH14921@uda0271908> (raw)
In-Reply-To: <20180308093121.11943-1-merlijn@wizzup.org>
Hi,
On Thu, Mar 08, 2018 at 10:31:21AM +0100, Merlijn Wajer wrote:
> This fixes an oops on unbind / module unload. The fix is similar to the
> one in this commit: 0c3aae9bd59978fb8c3557d7883380bef0f2cfa1 (USB: musb:
> fix late external abort on suspend), which only fixes the issue for
> musb_suspend.
>
> musb_remove function now also flushes any work and also calls
> musb_platform_exit before disabling runtime pm.
>
> Signed-off-by: Merlijn Wajer <merlijn@wizzup.org>
> ---
>
> If I understand commit 0c3aae9bd59978fb8c3557d7883380bef0f2cfa1 correctly,
> this patch should also be backported to 4.9 (and newer kernels).
>
> I have verified that this works on the Nokia N900, RX-51. The problem did not
> occur on the Motorola Droid 4, but I have yet to test if this patch causes
> issues there.
>
> drivers/usb/musb/musb_core.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
> index e2e95071328a..4fb0f345c04e 100644
> --- a/drivers/usb/musb/musb_core.c
> +++ b/drivers/usb/musb/musb_core.c
> @@ -2472,13 +2472,19 @@ static int musb_remove(struct platform_device *pdev)
> musb_platform_disable(musb);
> spin_lock_irqsave(&musb->lock, flags);
> musb_disable_interrupts(musb);
> +
> + musb->flush_irq_work = true;
> + while (flush_delayed_work(&musb->irq_work))
> + ;
> + musb->flush_irq_work = false;
No need to flush, the work is already cancelled at this point.
> +
> musb_writeb(musb->mregs, MUSB_DEVCTL, 0);
> + musb_platform_exit(musb);
This can be move down to out side of holding the spinlock,
> spin_unlock_irqrestore(&musb->lock, flags);
to here.
>
> pm_runtime_dont_use_autosuspend(musb->controller);
> pm_runtime_put_sync(musb->controller);
> pm_runtime_disable(musb->controller);
> - musb_platform_exit(musb);
> musb_phy_callback = NULL;
> if (musb->dma_controller)
> musb_dma_controller_destroy(musb->dma_controller);
> --
Thanks for the patch.
Regards,
-Bin.
next prev parent reply other threads:[~2018-03-08 16:46 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-08 9:31 [RFC PATCH] usb: musb: Fix external abort in musb_remove Merlijn Wajer
2018-03-08 9:31 ` [RFC] " Merlijn Wajer
2018-03-08 16:46 ` Bin Liu [this message]
2018-03-08 16:46 ` [RFC PATCH] " Bin Liu
2018-03-08 16:46 ` [RFC] " Bin Liu
2018-03-08 18:00 ` [RFC PATCH] " Merlijn Wajer
2018-03-08 18:00 ` [RFC] " Merlijn Wajer
2018-03-08 18:22 ` [RFC PATCH] " Bin Liu
2018-03-08 18:22 ` Bin Liu
2018-03-08 18:22 ` [RFC] " Bin Liu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180308164613.GH14921@uda0271908 \
--to=b-liu@ti.com \
--cc=gregkh@linuxfoundation.org \
--cc=ivo.g.dimitrov.75@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=merlijn@wizzup.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.