Re: [PATCH] usb: musb: Fix external abort on non-linefetch

From: Bin Liu
Date: Wed Dec 11 2019 - 14:10:34 EST


Hi,

On Sun, Oct 27, 2019 at 02:06:21PM +0530, Saurav Girepunje wrote:
> While setting the usb mode from sysfs. Below error came on kernel
> version 4.19.
>
> On latest kernel vserion api name changed. Therefore API
> name and backtrace API name are different.
>
> [ 821.908066] Backtrace:
> [ 821.910695] [<bf078fc0>] (musb_default_readl [musb_hdrc]) from [<bf0af738>] (dsps_musb_set_mode+0x38/0x12c [musb_dsps])
> [ 821.922059] [<bf0af700>] (dsps_musb_set_mode [musb_dsps]) from [<bf07899c>] (musb_mode_store+0xc8/0x12c [musb_hdrc])
> [ 821.933105] r7:a0010013 r6:0000000b r5:cd79d200 r4:cb634010
> [ 821.939096] [<bf0788d4>] (musb_mode_store [musb_hdrc]) from [<c0425184>] (dev_attr_store+0x20/0x2c)
> [ 821.948593] r7:cd79d200 r6:c5abbf78 r5:00000000 r4:bf0788d4
> [ 821.954549] [<c0425164>] (dev_attr_store) from [<c0285b08>] (sysfs_kf_write+0x48/0x4c)
> [ 821.962859] r5:00000000 r4:c0425164
> [ 821.966620] [<c0285ac0>] (sysfs_kf_write) from [<c0285274>] (kernfs_fop_write+0xfc/0x1fc)
> [ 821.975200] r5:00000000 r4:cd79d080
> [ 821.978966] [<c0285178>] (kernfs_fop_write) from [<c020ec00>] (__vfs_write+0x34/0x120)
> [ 821.987280] r10:00000000 r9:0000000b r8:00000000 r7:0000000b r6:c5abbf78 r5:c0285178
> [ 821.995493] r4:cb67a3c0
> [ 821.998160] [<c020ebcc>] (__vfs_write) from [<c020fae8>] (vfs_write+0xa8/0x170)
> [ 822.005835] r9:0000000b r8:00000000 r7:c5abbf78 r6:000def80 r5:cb67a3c0 r4:0000000b
> [ 822.013969] [<c020fa40>] (vfs_write) from [<c02108d0>] (SyS_write+0x44/0x98)
> [ 822.021371] r9:0000000b r8:000def80 r7:00000000 r6:00000000 r5:cb67a3c0 r4:cb67a3c0
> [ 822.029517] [<c021088c>] (SyS_write) from [<c010d8a0>] (ret_fast_syscall+0x0/0x3c)
> [ 822.037467] r9:c5aba000 r8:c010daa8 r7:00000004 r6:b6f0ad58 r5:000def80 r4:0000000b
> [ 822.045599] Code: e1a0c00d e92dd800 e24cb004 e0801001 (e5910000)
>
> Without pm_runtime_{get,put}_sync calls in place,
> Similar issue come on "mode_show" and "vbus_store" also.

Do you really get the kernel dump on mode_show() and vbus_store()? It
shouldn't because the two functions don't access musb registers. What
platform have you tested on?

>
> fix- call pm_runtime_{get,put}_sync before reading/writing
> usb mode/vbus from sysfs.
>
> As sugguested on commit '2d15f69ed5c1c33f283e77ec161578badde33eaf'

This seems to be your private commit id. You don't have to refer to it,
including the quote below.

> Merged all the fix which reslove same bug in the same file.
> "
> commit '2d15f69ed5c1c33f283e77ec161578badde33eaf'
> Author: Saurav Girepunje <saurav.girepunje@xxxxxxxxx>
> Date: Thu Aug 8 00:05:03 2019 +0530
>
> usb: musb: Fix external abort on non-linefetch for vbus_store
>
> Without pm_runtime_{get,put}_sync calls in place, writing
> vbus value via /sys causes the error
>
> "Unhandled fault external abort on non-linefetch"
>
> On Thu, Aug 08, 2019 at 12:11:46AM +0530, Saurav Girepunje wrote:
> > Without pm_runtime_{get,put}_sync calls in place, writing
> > vbus value via /sys causes the error
> >
> > "Unhandled fault external abort on non-linefetch"
> >
> > Signed-off-by: Saurav Girepunje <saurav.girepunje@xxxxxxxxx>
>
> Thanks for the patch. Can you please merge another two similar patches
> you just sent with this one? They all fix the same bug in the same file
> so could be just in one patch.
>
> -Bin.
> "
>
> Signed-off-by: Saurav Girepunje <saurav.girepunje@xxxxxxxxx>

-Bin.