mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-11-08 11:45:53 -05:00
| Filename | Latest commit message | Latest commit date |
|---|---|---|
The omap_hwmod _enable() function can return success without setting
the hwmod state to _HWMOD_STATE_ENABLED for IPs with reset lines when
all of the reset lines are asserted. The omap_hwmod _idle() function
also performs a similar check, but after checking for the hwmod state
first. This triggers the WARN when pm_runtime_get and pm_runtime_put
are invoked on IPs with all reset lines asserted. Reverse the checks
for hwmod state and reset lines status to fix this.
Issue found during a unbind operation on a device with reset lines
still asserted, example backtrace below
------------[ cut here ]------------
WARNING: CPU: 1 PID: 879 at arch/arm/mach-omap2/omap_hwmod.c:2207 _idle+0x1e4/0x240()
omap_hwmod: mmu_dsp: idle state can only be entered from enabled state
Modules linked in:
CPU: 1 PID: 879 Comm: sh Not tainted 4.4.0-00008-ga989d951331a #3
Hardware name: Generic OMAP5 (Flattened Device Tree)
[<c0018e60>] (unwind_backtrace) from [<c0014dc4>] (show_stack+0x10/0x14)
[<c0014dc4>] (show_stack) from [<c037ac28>] (dump_stack+0x90/0xc0)
[<c037ac28>] (dump_stack) from [<c003f420>] (warn_slowpath_common+0x78/0xb4)
[<c003f420>] (warn_slowpath_common) from [<c003f48c>] (warn_slowpath_fmt+0x30/0x40)
[<c003f48c>] (warn_slowpath_fmt) from [<c0028c20>] (_idle+0x1e4/0x240)
[<c0028c20>] (_idle) from [<c0029080>] (omap_hwmod_idle+0x28/0x48)
[<c0029080>] (omap_hwmod_idle) from [<c002a5a4>] (omap_device_idle+0x3c/0x90)
[<c002a5a4>] (omap_device_idle) from [<c0427a90>] (__rpm_callback+0x2c/0x60)
[<c0427a90>] (__rpm_callback) from [<c0427ae4>] (rpm_callback+0x20/0x80)
[<c0427ae4>] (rpm_callback) from [<c0427f84>] (rpm_suspend+0x138/0x74c)
[<c0427f84>] (rpm_suspend) from [<c0428b78>] (__pm_runtime_idle+0x78/0xa8)
[<c0428b78>] (__pm_runtime_idle) from [<c041f514>] (__device_release_driver+0x64/0x100)
[<c041f514>] (__device_release_driver) from [<c041f5d0>] (device_release_driver+0x20/0x2c)
[<c041f5d0>] (device_release_driver) from [<c041d85c>] (unbind_store+0x78/0xf8)
[<c041d85c>] (unbind_store) from [<c0206df8>] (kernfs_fop_write+0xc0/0x1c4)
[<c0206df8>] (kernfs_fop_write) from [<c018a120>] (__vfs_write+0x20/0xdc)
[<c018a120>] (__vfs_write) from [<c018a9cc>] (vfs_write+0x90/0x164)
[<c018a9cc>] (vfs_write) from [<c018b1f0>] (SyS_write+0x44/0x9c)
[<c018b1f0>] (SyS_write) from [<c0010420>] (ret_fast_syscall+0x0/0x1c)
---[ end trace a4182013c75a9f50 ]---
While at this, fix the sequence in _shutdown() as well, though there
is no easy reproducible scenario.
Fixes:
|
||
| .. | ||
| boot | ||
| common | ||
| configs | ||
| crypto | ||
| firmware | ||
| include | ||
| kernel | ||
| kvm | ||
| lib | ||
| mach-alpine | ||
| mach-artpec | ||
| mach-asm9260 | ||
| mach-at91 | ||
| mach-axxia | ||
| mach-bcm | ||
| mach-berlin | ||
| mach-clps711x | ||
| mach-cns3xxx | ||
| mach-davinci | ||
| mach-digicolor | ||
| mach-dove | ||
| mach-ebsa110 | ||
| mach-efm32 | ||
| mach-ep93xx | ||
| mach-exynos | ||
| mach-footbridge | ||
| mach-gemini | ||
| mach-highbank | ||
| mach-hisi | ||
| mach-imx | ||
| mach-integrator | ||
| mach-iop13xx | ||
| mach-iop32x | ||
| mach-iop33x | ||
| mach-ixp4xx | ||
| mach-keystone | ||
| mach-ks8695 | ||
| mach-lpc18xx | ||
| mach-lpc32xx | ||
| mach-mediatek | ||
| mach-meson | ||
| mach-mmp | ||
| mach-moxart | ||
| mach-mv78xx0 | ||
| mach-mvebu | ||
| mach-mxs | ||
| mach-netx | ||
| mach-nomadik | ||
| mach-nspire | ||
| mach-omap1 | ||
| mach-omap2 | ||
| mach-orion5x | ||
| mach-picoxcell | ||
| mach-prima2 | ||
| mach-pxa | ||
| mach-qcom | ||
| mach-realview | ||
| mach-rockchip | ||
| mach-rpc | ||
| mach-s3c24xx | ||
| mach-s3c64xx | ||
| mach-s5pv210 | ||
| mach-sa1100 | ||
| mach-shmobile | ||
| mach-socfpga | ||
| mach-spear | ||
| mach-sti | ||
| mach-stm32 | ||
| mach-sunxi | ||
| mach-tango | ||
| mach-tegra | ||
| mach-u300 | ||
| mach-uniphier | ||
| mach-ux500 | ||
| mach-versatile | ||
| mach-vexpress | ||
| mach-vt8500 | ||
| mach-w90x900 | ||
| mach-zx | ||
| mach-zynq | ||
| mm | ||
| net | ||
| nwfpe | ||
| oprofile | ||
| plat-iop | ||
| plat-omap | ||
| plat-orion | ||
| plat-pxa | ||
| plat-samsung | ||
| plat-versatile | ||
| probes | ||
| tools | ||
| vdso | ||
| vfp | ||
| xen | ||
| Kconfig | ||
| Kconfig-nommu | ||
| Kconfig.debug | ||
| Makefile | ||