aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJack Steiner <steiner@sgi.com>2009-06-17 19:28:29 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2009-06-18 16:04:03 -0400
commitd6e2fbce0d70c2072a1c478dbd37b34d27129d74 (patch)
treea5751ae55607dae0e9d394bf09857d15ea72c028
parentd5826dd6002f23940458860701ce22fba9df2614 (diff)
gru: fix automatic retry of gru instruction failures
Fix bug in automatic retry of GRU instruction failures. CBR substatus (message queue failure) was being checked incorrectly. Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--drivers/misc/sgi-gru/grukservices.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/misc/sgi-gru/grukservices.c b/drivers/misc/sgi-gru/grukservices.c
index 5078f57da882..eedbf9c32760 100644
--- a/drivers/misc/sgi-gru/grukservices.c
+++ b/drivers/misc/sgi-gru/grukservices.c
@@ -436,11 +436,10 @@ static int gru_retry_exception(void *cb)
436 int retry = EXCEPTION_RETRY_LIMIT; 436 int retry = EXCEPTION_RETRY_LIMIT;
437 437
438 while (1) { 438 while (1) {
439 if (gru_get_cb_message_queue_substatus(cb))
440 break;
441 if (gru_wait_idle_or_exception(gen) == CBS_IDLE) 439 if (gru_wait_idle_or_exception(gen) == CBS_IDLE)
442 return CBS_IDLE; 440 return CBS_IDLE;
443 441 if (gru_get_cb_message_queue_substatus(cb))
442 return CBS_EXCEPTION;
444 gru_get_cb_exception_detail(cb, &excdet); 443 gru_get_cb_exception_detail(cb, &excdet);
445 if ((excdet.ecause & ~EXCEPTION_RETRY_BITS) || 444 if ((excdet.ecause & ~EXCEPTION_RETRY_BITS) ||
446 (excdet.cbrexecstatus & CBR_EXS_ABORT_OCC)) 445 (excdet.cbrexecstatus & CBR_EXS_ABORT_OCC))