diff options
-rw-r--r-- | arch/ia64/kernel/mca.c | 41 |
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: | |||
1135 | static void | 1135 | static void |
1136 | ia64_wait_for_slaves(int monarch, const char *type) | 1136 | ia64_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 | */ |