From: Soby Mathew Date: Tue, 18 Nov 2014 10:45:04 +0000 (+0000) Subject: Remove the wfe() for bounded wait in bakery_lock X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=d4f4ad90f9fe754bc098bbb392ba780e5a1bb0b3;p=project%2Fbcm63xx%2Fatf.git Remove the wfe() for bounded wait in bakery_lock This patch is an optimization in the bakery_lock_get() function which removes the wfe() when waiting for other contenders to choose their ticket i.e when their `entering` flag is set. Since the time taken to execute bakery_get_ticket() by other contenders is bounded, this wait is a bounded time wait. Hence the removal of wfe() and the corresponding sev() and dsb() in bakery_get_ticket() may result in better time performance during lock acquisition. Change-Id: I141bb21294226b54cb6e89e7cac0175c553afd8d --- diff --git a/lib/locks/bakery/bakery_lock.c b/lib/locks/bakery/bakery_lock.c index 7e71dec0..6bdc35a5 100644 --- a/lib/locks/bakery/bakery_lock.c +++ b/lib/locks/bakery/bakery_lock.c @@ -107,8 +107,6 @@ static unsigned int bakery_get_ticket(bakery_lock_t *bakery, unsigned int me) ++my_ticket; bakery->number[me] = my_ticket; bakery->entering[me] = 0; - dsb(); - sev(); return my_ticket; } @@ -151,7 +149,7 @@ void bakery_lock_get(bakery_lock_t *bakery) /* Wait for the contender to get their ticket */ while (bakery->entering[they]) - wfe(); + ; /* * If the other party is a contender, they'll have non-zero