mmc: core: move ->request() call from atomic context
authorAdrian Hunter <adrian.hunter@intel.com>
Mon, 3 Oct 2011 12:33:33 +0000 (15:33 +0300)
committerChris Ball <cjb@laptop.org>
Wed, 26 Oct 2011 20:32:19 +0000 (16:32 -0400)
commit08a7e1dfaa63bf5132b5b7231fcf9a33473c78f5
treef52edc2a2dbca622d3e26836728bc9ffe4216fda
parent88b47679746b81534002bcba42da97ab82b5d12a
mmc: core: move ->request() call from atomic context

mmc_request_done() is sometimes called from interrupt or other atomic
context.  Mostly all mmc_request_done() does is complete(), however it
contains code to retry on error, which uses ->request().  As the error
path is certainly not performance critical, this may be moved to the
waiting function mmc_wait_for_req_done().

This allows ->request() to use runtime PM get_sync() and guarantee it
is never in an atomic context.

Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Acked-by: Ulf Hansson <ulf.hansson@stericsson.com>
Signed-off-by: Chris Ball <cjb@laptop.org>
drivers/mmc/core/core.c