• O
    mmc: sdio: fix SDIO suspend/resume regression · 1c8cf9c9
    Ohad Ben-Cohen 提交于
    Fix SDIO suspend/resume regression introduced by 4c2ef25f "mmc: fix
    all hangs related to mmc/sd card insert/removal during suspend/resume":
    
      PM: Syncing filesystems ... done.
      Freezing user space processes ... (elapsed 0.01 seconds) done.
      Freezing remaining freezable tasks ... (elapsed 0.01 seconds) done.
      Suspending console(s) (use no_console_suspend to debug)
      pm_op(): platform_pm_suspend+0x0/0x5c returns -38
      PM: Device pxa2xx-mci.0 failed to suspend: error -38
      PM: Some devices failed to suspend
    
    4c2ef25f moved the card removal/insertion mechanism out of MMC's
    suspend/resume path and into pm notifiers (mmc_pm_notify), and that
    broke SDIO's expectation that mmc_suspend_host() will remove the card,
    and squash the error, in case -ENOSYS is returned from the bus suspend
    handler (mmc_sdio_suspend() in this case).
    
    mmc_sdio_suspend() is using this whenever at least one of the card's SDIO
    function drivers does not have suspend/resume handlers - in that case
    it is agreed to force removal of the entire card.
    
    This patch fixes this regression by trivially bringing back that part of
    mmc_suspend_host(), which was removed by 4c2ef25f.
    Reported-and-tested-by: NSven Neumann <s.neumann@raumfeld.com>
    Signed-off-by: NOhad Ben-Cohen <ohad@wizery.com>
    Cc: Maxim Levitsky <maximlevitsky@gmail.com>
    Cc: <stable@kernel.org>
    Acked-by: NNicolas Pitre <nico@fluxnic.net>
    Signed-off-by: NChris Ball <cjb@laptop.org>
    1c8cf9c9
core.c 40.9 KB