|
@@ -315,10 +315,17 @@ static void get_output_lock(void)
|
|
if (last_speaker == 0)
|
|
if (last_speaker == 0)
|
|
return;
|
|
return;
|
|
|
|
|
|
- timeout = 10000000;
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Wait a full second for the lock, we might be on a slow
|
|
|
|
+ * console, but check every 100us.
|
|
|
|
+ */
|
|
|
|
+ timeout = 10000;
|
|
while (xmon_speaker == last_speaker) {
|
|
while (xmon_speaker == last_speaker) {
|
|
- if (--timeout > 0)
|
|
|
|
|
|
+ if (--timeout > 0) {
|
|
|
|
+ udelay(100);
|
|
continue;
|
|
continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
/* hostile takeover */
|
|
/* hostile takeover */
|
|
prev = cmpxchg(&xmon_speaker, last_speaker, me);
|
|
prev = cmpxchg(&xmon_speaker, last_speaker, me);
|
|
if (prev == last_speaker)
|
|
if (prev == last_speaker)
|