aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/ia64/kernel/mca.c41
1 files changed, 19 insertions, 22 deletions
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c
index 63b73f3d4c9f..92367faecbbf 100644
--- a/arch/ia64/kernel/mca.c
+++ b/arch/ia64/kernel/mca.c
@@ -1135,30 +1135,27 @@ no_mod:
1135static void 1135static void
1136ia64_wait_for_slaves(int monarch, const char *type) 1136ia64_wait_for_slaves(int monarch, const char *type)
1137{ 1137{
1138 int c, wait = 0, missing = 0; 1138 int c, i , wait;
1139 for_each_online_cpu(c) { 1139
1140 if (c == monarch) 1140 /*
1141 continue; 1141 * wait 5 seconds total for slaves (arbitrary)
1142 if (ia64_mc_info.imi_rendez_checkin[c] == IA64_MCA_RENDEZ_CHECKIN_NOTDONE) { 1142 */
1143 udelay(1000); /* short wait first */ 1143 for (i = 0; i < 5000; i++) {
1144 wait = 1; 1144 wait = 0;
1145 break; 1145 for_each_online_cpu(c) {
1146 } 1146 if (c == monarch)
1147 } 1147 continue;
1148 if (!wait) 1148 if (ia64_mc_info.imi_rendez_checkin[c]
1149 goto all_in; 1149 == IA64_MCA_RENDEZ_CHECKIN_NOTDONE) {
1150 for_each_online_cpu(c) { 1150 udelay(1000); /* short wait */
1151 if (c == monarch) 1151 wait = 1;
1152 continue; 1152 break;
1153 if (ia64_mc_info.imi_rendez_checkin[c] == IA64_MCA_RENDEZ_CHECKIN_NOTDONE) { 1153 }
1154 udelay(5*1000000); /* wait 5 seconds for slaves (arbitrary) */
1155 if (ia64_mc_info.imi_rendez_checkin[c] == IA64_MCA_RENDEZ_CHECKIN_NOTDONE)
1156 missing = 1;
1157 break;
1158 } 1154 }
1155 if (!wait)
1156 goto all_in;
1159 } 1157 }
1160 if (!missing) 1158
1161 goto all_in;
1162 /* 1159 /*
1163 * Maybe slave(s) dead. Print buffered messages immediately. 1160 * Maybe slave(s) dead. Print buffered messages immediately.
1164 */ 1161 */