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 | */ |
