[PATCH 4.14 105/136] usb/ehci-platform: Set PM runtime as active on resume

Eugeniu Rosca erosca at de.adit-jv.com
Thu Jul 9 03:00:23 EDT 2020


Hello everyone,

Cc: linux-renesas-soc
Cc: linux-pm

On Tue, Jun 23, 2020 at 09:59:21PM +0200, Greg Kroah-Hartman wrote:
> From: Qais Yousef <qais.yousef at arm.com>
> 
> [ Upstream commit 16bdc04cc98ab0c74392ceef2475ecc5e73fcf49 ]
> 
> Follow suit of ohci-platform.c and perform pm_runtime_set_active() on
> resume.
> 
> ohci-platform.c had a warning reported due to the missing
> pm_runtime_set_active() [1].
> 
> [1] https://lore.kernel.org/lkml/20200323143857.db5zphxhq4hz3hmd@e107158-lin.cambridge.arm.com/
> 
> Acked-by: Alan Stern <stern at rowland.harvard.edu>
> Signed-off-by: Qais Yousef <qais.yousef at arm.com>
> CC: Tony Prisk <linux at prisktech.co.nz>
> CC: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
> CC: Mathias Nyman <mathias.nyman at intel.com>
> CC: Oliver Neukum <oneukum at suse.de>
> CC: linux-arm-kernel at lists.infradead.org
> CC: linux-usb at vger.kernel.org
> CC: linux-kernel at vger.kernel.org
> Link: https://lore.kernel.org/r/20200518154931.6144-3-qais.yousef@arm.com
> Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
> Signed-off-by: Sasha Levin <sashal at kernel.org>
> ---
>  drivers/usb/host/ehci-platform.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/usb/host/ehci-platform.c b/drivers/usb/host/ehci-platform.c
> index f1908ea9fbd86..6fcd332880143 100644
> --- a/drivers/usb/host/ehci-platform.c
> +++ b/drivers/usb/host/ehci-platform.c
> @@ -390,6 +390,11 @@ static int ehci_platform_resume(struct device *dev)
>  	}
>  
>  	ehci_resume(hcd, priv->reset_on_resume);
> +
> +	pm_runtime_disable(dev);
> +	pm_runtime_set_active(dev);
> +	pm_runtime_enable(dev);
> +
>  	return 0;

After integrating v4.14.186 commit 5410d158ca2a50 ("usb/ehci-platform:
Set PM runtime as active on resume") into downstream v4.14.x, we started
to consistently experience below panic [1] on every second s2ram of
R-Car H3 Salvator-X Renesas reference board.

After some investigations, we concluded the following:
 - the issue does not exist in vanilla v5.8-rc4+
 - [bisecting shows that] the panic on v4.14.186 is caused by the lack
   of v5.6-rc1 commit 987351e1ea7772 ("phy: core: Add consumer device
   link support"). Getting evidence for that is easy. Reverting
   987351e1ea7772 in vanilla leads to a similar backtrace [2].

Questions:
 - Backporting 987351e1ea7772 ("phy: core: Add consumer device
   link support") to v4.14.187 looks challenging enough, so probably not
   worth it. Anybody to contradict this?
 - Assuming no plans to backport the missing mainline commit to v4.14.x,
   should the following three v4.14.186 commits be reverted on v4.14.x?
   * baef809ea497a4 ("usb/ohci-platform: Fix a warning when hibernating")
   * 9f33eff4958885 ("usb/xhci-plat: Set PM runtime as active on resume")
   * 5410d158ca2a50 ("usb/ehci-platform: Set PM runtime as active on resume")

[1] https://elinux.org/R-Car/Boards/Salvator-X#Suspend-to-RAM
root at rcar-gen3:~# cat s2ram.sh 
modprobe i2c-dev
echo 9 > /proc/sys/kernel/printk
i2cset -f -y 7 0x30 0x20 0x0F
echo 0 > /sys/module/suspend/parameters/pm_test_delay
echo core  > /sys/power/pm_test
echo deep > /sys/power/mem_sleep
echo 1 > /sys/power/pm_debug_messages
echo 0 > /sys/power/pm_print_times
echo mem > /sys/power/state;
root at rcar-gen3:~#
root at rcar-gen3:~# sh s2ram.sh 
[   65.853020] PM: suspend entry (deep)
[   65.858395] PM: Syncing filesystems ... done.
[   65.895890] PM: Preparing system for sleep (deep)
[   65.906272] Freezing user space processes ... (elapsed 0.004 seconds) done.
[   65.918350] OOM killer disabled.
[   65.921827] Freezing remaining freezable tasks ... (elapsed 0.005 seconds) done.
[   65.935063] PM: Suspending system (deep)
[   66.094910] PM: suspend of devices complete after 143.807 msecs
[   66.101282] PM: suspend devices took 0.162 seconds
[   66.133020] PM: late suspend of devices complete after 26.225 msecs
[   66.166806] PM: noirq suspend of devices complete after 24.050 msecs
[   66.173518] Disabling non-boot CPUs ...
[   66.199539] CPU1: shutdown
[   66.202563] psci: CPU1 killed (polled 0 ms)
[   66.230911] CPU2: shutdown
[   66.233923] psci: CPU2 killed (polled 0 ms)
[   66.261940] CPU3: shutdown
[   66.265351] psci: CPU3 killed (polled 0 ms)
[   66.300596] CPU4: shutdown
[   66.303837] psci: CPU4 killed (polled 0 ms)
[   66.340455] NOHZ: local_softirq_pending 202
[   66.346818] CPU5: shutdown
[   66.349811] psci: CPU5 killed (polled 0 ms)
[   66.388761] CPU6: shutdown
[   66.391732] psci: CPU6 killed (polled 0 ms)
[   66.442557] CPU7: shutdown
[   66.445659] psci: CPU7 killed (polled 0 ms)
[   66.452730] PM: suspend debug: Waiting for 0 second(s).
[   66.452730] PM: Timekeeping suspended for 0.005 seconds
[   66.452898] Enabling non-boot CPUs ...
[   66.470705] CPU1 is up
[   66.480825] CPU2 is up
[   66.491482] CPU3 is up
[   66.517818] CPU4 is up
[   66.537699] CPU5 is up
[   66.558622] CPU6 is up
[   66.580985] CPU7 is up
[   66.597724] PM: noirq resume of devices complete after 13.979 msecs
[   66.689793] PM: early resume of devices complete after 83.851 msecs
[   66.700577] Bad mode in Error handler detected on CPU3, code 0xbf000002 -- SError
[   66.700610] Bad mode in Error handler detected on CPU2, code 0xbf000002 -- SError
[   66.700687] Kernel panic - not syncing: bad mode
[   66.700709] CPU: 3 PID: 2689 Comm: kworker/u16:22 Tainted: G         C      4.14.187-ltsi+ #17
[   66.730293] Hardware name: Renesas Salvator-X board based on r8a7795 ES2.0+ (DT)
[   66.738028] Workqueue: events_unbound async_run_entry_fn
[   66.743598] Call trace:
[   66.746232]  dump_backtrace+0x0/0x348
[   66.750106]  show_stack+0x24/0x30
[   66.753618]  dump_stack+0x11c/0x18c
[   66.757311]  panic+0x2e4/0x5fc
[   66.760560]  bad_el0_sync+0x0/0x210
[   66.764375]  el1_error_invalid+0x7c/0x9c
[   66.768528]  rcar_gen3_phy_usb2_init+0xa8/0x228
[   66.773283]  phy_init+0xdc/0x15c
[   66.776701]  ehci_platform_power_on+0x1f4/0x43c
[   66.781443]  ehci_platform_resume+0x194/0x1d8
[   66.786014]  dpm_run_callback+0x754/0xe80
[   66.790232]  device_resume+0x194/0x3bc
[   66.794178]  async_resume+0x30/0x64
[   66.797855]  async_run_entry_fn+0x194/0x4f0
[   66.802244]  process_one_work+0xfe4/0x1b58
[   66.806544]  worker_thread+0x73c/0xaf0
[   66.810490]  kthread+0x3fc/0x414
[   66.813903]  ret_from_fork+0x10/0x18
[   66.817784] SMP: stopping secondary CPUs
[   67.843559] SMP: failed to stop secondary CPUs 2-3
[   67.848616] Kernel Offset: disabled
[   67.852599] CPU features: 0x1002004
[   67.856285] Memory Limit: none
[   67.859568] ---[ end Kernel panic - not syncing: bad mode ]---

[2] Same as [1], but on vanilla after reverting 987351e1ea7772 ("phy: core: Add consumer device link support")
root at rcar-gen3:~# sh s2ram.sh
[   23.028192] Filesystems sync: 0.000 seconds
[   23.033611] PM: Preparing system for sleep (deep)
[   23.040723] Freezing user space processes ... (elapsed 0.001 seconds) done.
[   23.050170] OOM killer disabled.
[   23.054796] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[   23.064901] PM: Suspending system (deep)
[   23.098442] PM: suspend of devices complete after 28.499 msecs
[   23.104324] PM: start suspend of devices complete after 35.478 msecs
[   23.110705] PM: suspend devices took 0.042 seconds
[   23.118196] PM: late suspend of devices complete after 2.673 msecs
[   23.126686] PM: noirq suspend of devices complete after 1.837 msecs
[   23.132982] Disabling non-boot CPUs ...
[   23.137756] CPU1: shutdown
[   23.140496] psci: CPU1 killed (polled 0 ms)
[   23.145860] CPU2: shutdown
[   23.148598] psci: CPU2 killed (polled 0 ms)
[   23.153920] CPU3: shutdown
[   23.156658] psci: CPU3 killed (polled 0 ms)
[   23.162406] CPU4: shutdown
[   23.165135] psci: CPU4 killed (polled 0 ms)
[   23.170701] CPU5: shutdown
[   23.173441] psci: CPU5 killed (polled 0 ms)
[   23.178930] CPU6: shutdown
[   23.181706] psci: CPU6 killed (polled 0 ms)
[   23.187070] CPU7: shutdown
[   23.189834] psci: CPU7 killed (polled 0 ms)
[   23.194490] PM: suspend debug: Waiting for 0 second(s).
[   23.194490] PM: Timekeeping suspended for 0.005 seconds
[   23.194515] Enabling non-boot CPUs ...
[   23.203786] Detected PIPT I-cache on CPU1
[   23.203837] CPU1: Booted secondary processor 0x0000000001 [0x411fd073]
[   23.204566] CPU1 is up
[   23.217725] Detected PIPT I-cache on CPU2
[   23.217756] CPU2: Booted secondary processor 0x0000000002 [0x411fd073]
[   23.218352] CPU2 is up
[   23.231469] Detected PIPT I-cache on CPU3
[   23.231496] CPU3: Booted secondary processor 0x0000000003 [0x411fd073]
[   23.232098] CPU3 is up
[   23.245257] Detected VIPT I-cache on CPU4
[   23.245315] CPU4: Booted secondary processor 0x0000000100 [0x410fd034]
[   23.246621] CPU4 is up
[   23.259744] Detected VIPT I-cache on CPU5
[   23.259782] CPU5: Booted secondary processor 0x0000000101 [0x410fd034]
[   23.261039] CPU5 is up
[   23.274141] Detected VIPT I-cache on CPU6
[   23.274180] CPU6: Booted secondary processor 0x0000000102 [0x410fd034]
[   23.275494] CPU6 is up
[   23.288598] Detected VIPT I-cache on CPU7
[   23.288639] CPU7: Booted secondary processor 0x0000000103 [0x410fd034]
[   23.289996] CPU7 is up
[   23.304324] PM: noirq resume of devices complete after 1.369 msecs
[   23.315803] PM: early resume of devices complete after 4.991 msecs
[   23.322623] Internal error: synchronous external abort: 96000210 [#1] PREEMPT SMP
[   23.322680] SError Interrupt on CPU2, code 0xbf000002 -- SError
[   23.322682] CPU: 2 PID: 1032 Comm: kworker/u16:6 Not tainted 5.8.0-rc4-00075-g81e8773b8f41 #28
[   23.322684] Hardware name: Renesas Salvator-X board based on r8a77951 (DT)
[   23.322686] Workqueue: events_unbound async_run_entry_fn
[   23.322688] pstate: 40000005 (nZcv daif -PAN -UAO BTYPE=--)
[   23.322690] pc : ehci_readl.isra.13+0x8/0x20
[   23.322691] lr : ehci_resume+0x60/0x14c
[   23.322692] sp : ffff80001252bca0
[   23.322693] x29: ffff80001252bca0 x28: 0000000000000000
[   23.322696] x27: 0000000000000000 x26: 0000000000000000
[   23.322698] x25: 0000000000000000 x24: 0000000000000010
[   23.322701] x23: ffff800010d79000 x22: 0000000000000000
[   23.322704] x21: ffff0006f917f324 x20: ffff0006f917f000
[   23.322706] x19: ffff0006f917f250 x18: 000000000000000a
[   23.322709] x17: 0000000000000000 x16: 0000000000000000
[   23.322712] x15: 0000000000000000 x14: 0000000000000000
[   23.322714] x13: 0000000400000000 x12: 0000000000000001
[   23.322717] x11: 0000000000000001 x10: 0000000000000a60
[   23.322719] x9 : ffff80001252bab0 x8 : ffff0006f92045c0
[   23.322722] x7 : ffff80001252bc70 x6 : 0000000000000000
[   23.322724] x5 : ffff0006fa610848 x4 : 0000000000000000
[   23.322727] x3 : 0000000000000000 x2 : 0000000000000001
[   23.322730] x1 : ffff0006f917f138 x0 : 0000000000000000
[   23.322733] Kernel panic - not syncing: Asynchronous SError Interrupt
[   23.460158] Modules linked in:
[   23.463225] CPU: 5 PID: 2116 Comm: kworker/u16:12 Not tainted 5.8.0-rc4-00075-g81e8773b8f41 #28
[   23.471946] Hardware name: Renesas Salvator-X board based on r8a77951 (DT)
[   23.478844] Workqueue: events_unbound async_run_entry_fn
[   23.484172] pstate: 40000005 (nZcv daif -PAN -UAO BTYPE=--)
[   23.489760] pc : ehci_readl.isra.13+0x4/0x20
[   23.494041] lr : ehci_resume+0x60/0x14c
[   23.497885] sp : ffff800012da3ca0
[   23.501206] x29: ffff800012da3ca0 x28: 0000000000000000
[   23.506532] x27: 0000000000000000 x26: 0000000000000000
[   23.511858] x25: 0000000000000000 x24: 0000000000000010
[   23.517184] x23: ffff800010d79000 x22: 0000000000000000
[   23.522510] x21: ffff0006f9f4cb24 x20: ffff0006f9f4c800
[   23.527835] x19: ffff0006f9f4ca50 x18: fffffe001bc4e708
[   23.533162] x17: 0000000000000000 x16: 0000000000000000
[   23.538487] x15: 0000000000000001 x14: 0000000000000000
[   23.543814] x13: 0000000100000000 x12: 0000000000000001
[   23.549139] x11: 0000000000000001 x10: 0000000000000a60
[   23.554465] x9 : ffff800012da3ab0 x8 : ffff0006faeba840
[   23.559791] x7 : ffff800012da3c70 x6 : 0000000000000000
[   23.565117] x5 : ffff0006fa610c48 x4 : 0000000000000000
[   23.570443] x3 : 0000000000000000 x2 : 0000000000000001
[   23.575768] x1 : ffff0006f9f4c938 x0 : ffff800010f6d160
[   23.581096] Call trace:
[   23.583549]  ehci_readl.isra.13+0x4/0x20
[   23.587484]  ehci_platform_resume+0x48/0xb8
[   23.591681]  dpm_run_callback+0x68/0xdc
[   23.595527]  device_resume+0xcc/0x180
[   23.599199]  async_resume+0x28/0x5c
[   23.602696]  async_run_entry_fn+0x50/0x14c
[   23.606808]  process_one_work+0x1dc/0x2b4
[   23.610829]  worker_thread+0x1d0/0x260
[   23.614590]  kthread+0xf0/0x100
[   23.617743]  ret_from_fork+0x10/0x30
[   23.621331] Code: d65f03c0 52808000 17fffffd d503233f (b9400000)
[   23.627441] ---[ end trace f663646e2a9dfb92 ]---
[   23.632072] Internal error: synchronous external abort: 96000210 [#2] PREEMPT SMP
[   23.639576] Modules linked in:
[   23.642642] CPU: 7 PID: 2112 Comm: kworker/u16:8 Tainted: G      D           5.8.0-rc4-00075-g81e8773b8f41 #28
[   23.652668] Hardware name: Renesas Salvator-X board based on r8a77951 (DT)
[   23.659563] Workqueue: events_unbound async_run_entry_fn
[   23.664890] pstate: 40000005 (nZcv daif -PAN -UAO BTYPE=--)
[   23.670477] pc : ehci_readl.isra.13+0x4/0x20
[   23.674758] lr : ehci_resume+0x60/0x14c
[   23.678601] sp : ffff800012d83ca0
[   23.681922] x29: ffff800012d83ca0 x28: 0000000000000000
[   23.687249] x27: 0000000000000000 x26: 0000000000000000
[   23.692574] x25: 0000000000000000 x24: 0000000000000010
[   23.697900] x23: ffff800010d79000 x22: 0000000000000000
[   23.703226] x21: ffff0006f9f4db24 x20: ffff0006f9f4d800
[   23.708552] x19: ffff0006f9f4da50 x18: 000000000000000a
[   23.713878] x17: 0000000000000000 x16: 0000000000000000
[   23.719203] x15: 000000000000000d x14: ffff80001103be18
[   23.724529] x13: ffffffffffffffff x12: 0000000000000000
[   23.729855] x11: 0000000000000000 x10: 0000000000000a60
[   23.735181] x9 : ffff800012d83ab0 x8 : ffff0006faeb9980
[   23.740507] x7 : ffff800012d83c70 x6 : 0000000000000000
[   23.745833] x5 : ffff0006fa611048 x4 : 0000000000000000
[   23.751159] x3 : 0000000000000000 x2 : 0000000000000001
[   23.756484] x1 : ffff0006f9f4d938 x0 : ffff800010f8d160
[   23.761810] Call trace:
[   23.764263]  ehci_readl.isra.13+0x4/0x20
[   23.768197]  ehci_platform_resume+0x48/0xb8
[   23.772391]  dpm_run_callback+0x68/0xdc
[   23.776237]  device_resume+0xcc/0x180
[   23.779908]  async_resume+0x28/0x5c
[   23.783406]  async_run_entry_fn+0x50/0x14c
[   23.787513]  process_one_work+0x1dc/0x2b4
[   23.791534]  worker_thread+0x1d0/0x260
[   23.795292]  kthread+0xf0/0x100
[   23.798442]  ret_from_fork+0x10/0x30
[   23.802028] Code: d65f03c0 52808000 17fffffd d503233f (b9400000)
[   23.808137] ---[ end trace f663646e2a9dfb93 ]---
[   23.812773] SMP: stopping secondary CPUs
[   23.812774] Kernel Offset: disabled
[   23.812775] CPU features: 0x040022,20006004
[   23.812777] Memory Limit: none

-- 
Best regards,
Eugeniu Rosca



More information about the linux-arm-kernel mailing list