• Johan Hovold's avatar
    ARM: OMAP2+: omap_device: drop broken RPM status update from suspend_noirq · 90de9634
    Johan Hovold authored
    Since commit a8636c89 ("PM / Runtime: Don't allow to suspend a
    device with an active child"), which went into 4.10, it is no longer
    permitted to set RPM_SUSPENDED state for a device with active children
    (unless power.ignore_children is set).
    
    This specifically means that the attempts to do just that from the omap
    pm-domain suspend_noirq callback have since been failing whenever a
    child is active, for example:
    
      am335x-usb-childs 47400000.usb: runtime PM trying to suspend
        device but active child
    
    Silence this warning by dropping the broken pm_runtime_set_suspended()
    call from the omap suspend_noirq callback along with the redundant
    pm_runtime_set_active() in resume_noirq.
    
    This effectively reverts commit 3522bf7b ("ARM: OMAP2+: omap_device:
    maintain sane runtime pm status around suspend/resume"), which started
    updating the RPM state after the runtime_suspend callback (!) for active
    omap devices had been called during system suspend. The rationale was
    that a later pm_runtime_get_sync() would then fail (even after runtime
    pm had been disabled) and that this in turn would avoid any external
    aborts when accessing registers with clocks disabled. (See also commit
    6f3c77b0 ("PM / Runtime: let rpm_resume() succeed if RPM_ACTIVE,
    even when disabled, v2").
    
    But during the suspend_noirq phase all children would already have been
    suspended and their drivers would specifically not attempt any further
    register accesses. And if this was all just a workaround for random
    device drivers doing cross-tree calls during system suspend, those
    drivers should be fixed and updated to explicitly model such
    dependencies using device-links instead (and either way, any such calls
    have been causing crashes since 4.10).
    
    Fixes: 3522bf7b ("ARM: OMAP2+: omap_device: maintain sane runtime pm status around suspend/resume")
    Fixes: a8636c89 ("PM / Runtime: Don't allow to suspend a device with an active child")
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Dave Gerlach <d-gerlach@ti.com>
    Cc: Kevin Hilman <khilman@baylibre.com>
    Cc: Nishanth Menon <nm@ti.com>
    Cc: Rafael J. Wysocki <rjw@rjwysocki.net>
    Cc: Tony Lindgren <tony@atomide.com>
    Cc: Ulf Hansson <ulf.hansson@linaro.org>
    Signed-off-by: default avatarJohan Hovold <johan@kernel.org>
    Tested-by: default avatarGrygorii Strashko <grygorii.strashko@ti.com>
    Signed-off-by: default avatarTony Lindgren <tony@atomide.com>
    90de9634
omap_device.c 24.6 KB