• Ulf Hansson's avatar
    mmc: core: Fix hangs related to insert/remove of cards · 7f7e4129
    Ulf Hansson authored
    During a rescan operation mmc_attach(sd|mmc|sdio) functions are
    called. The error handling in these function can trigger a detach
    of the bus, which also meant a power off. This is not notified by
    the rescan operation which then continues to the next attach function.
    
    If a power off has been done, the framework must never send any
    new commands to the host driver, without first doing a new power up.
    This will most likely trigger any host driver to hang.
    
    Moving power off out of detach and instead handle power off
    separately when it is actually needed, solves the issue.
    Signed-off-by: default avatarUlf Hansson <ulf.hansson@stericsson.com>
    Acked-by: default avatarLinus Walleij <linus.walleij@linaro.org>
    Cc: <stable@kernel.org>
    Signed-off-by: default avatarChris Ball <cjb@laptop.org>
    7f7e4129
core.c 51 KB