[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20150127233524.32160.26896.stgit@notabene.brown>
Date: Wed, 28 Jan 2015 10:35:24 +1100
From: NeilBrown <neilb@...e.de>
To: Tony Lindgren <tony@...mide.com>,
Ulf Hansson <ulf.hansson@...aro.org>
Cc: Andreas Fenkart <afenkart@...il.com>, linux-mmc@...r.kernel.org,
linux-kernel@...r.kernel.org,
GTA04 owners <gta04-owner@...delico.com>,
NeilBrown <neil@...wn.name>, linux-omap@...r.kernel.org
Subject: [PATCH 1/3] mmc: core: allow non-blocking form of mmc_claim_host
Change the handling for the 'abort' flag so that if
it is set, but we can claim the host, the do the claim,
rather than aborting.
When the abort is async this just means that a race between aborting
an allowing a claim is resolved slightly differently. Any
code must already be able to handle 'abort' being set just as the host
is claimed.
This allows extra functionality. If __mmc_claim_host() is called
with an 'abort' point which is initialized to '1', it will effect a
non-blocking 'claim'.
Signed-off-by: NeilBrown <neil@...wn.name>
---
drivers/mmc/core/core.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c
index b8cc02b325c4..7162ada24a24 100644
--- a/drivers/mmc/core/core.c
+++ b/drivers/mmc/core/core.c
@@ -903,10 +903,11 @@ int __mmc_claim_host(struct mmc_host *host, atomic_t *abort)
spin_lock_irqsave(&host->lock, flags);
}
set_current_state(TASK_RUNNING);
- if (!stop) {
+ if (!host->claimed || host->claimer == current) {
host->claimed = 1;
host->claimer = current;
host->claim_cnt += 1;
+ stop = 0;
} else
wake_up(&host->wq);
spin_unlock_irqrestore(&host->lock, flags);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists