Changes in kernel/arch/ia32/src/smp/apic.c [5e4f22b:9d58539] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/smp/apic.c
r5e4f22b r9d58539 259 259 } 260 260 261 #define DELIVS_PENDING_SILENT_RETRIES 4262 263 static void l_apic_wait_for_delivery(void)264 {265 icr_t icr;266 unsigned retries = 0;267 268 do {269 if (retries++ > DELIVS_PENDING_SILENT_RETRIES) {270 retries = 0;271 #ifdef CONFIG_DEBUG272 printf("IPI is pending.\n");273 #endif274 delay(20);275 }276 icr.lo = l_apic[ICRlo];277 } while (icr.delivs == DELIVS_PENDING);278 279 }280 281 261 /** Send all CPUs excluding CPU IPI vector. 282 262 * … … 299 279 300 280 l_apic[ICRlo] = icr.lo; 301 302 l_apic_wait_for_delivery(); 281 282 icr.lo = l_apic[ICRlo]; 283 if (icr.delivs == DELIVS_PENDING) { 284 #ifdef CONFIG_DEBUG 285 printf("IPI is pending.\n"); 286 #endif 287 } 303 288 304 289 return apic_poll_errors(); … … 342 327 return 0; 343 328 344 l_apic_wait_for_delivery();345 346 329 icr.lo = l_apic[ICRlo]; 330 if (icr.delivs == DELIVS_PENDING) { 331 #ifdef CONFIG_DEBUG 332 printf("IPI is pending.\n"); 333 #endif 334 } 335 347 336 icr.delmod = DELMOD_INIT; 348 337 icr.destmod = DESTMOD_PHYS;
Note:
See TracChangeset
for help on using the changeset viewer.