Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/ia32/src/smp/apic.c

    r5e4f22b r9d58539  
    259259}
    260260
    261 #define DELIVS_PENDING_SILENT_RETRIES   4       
    262 
    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_DEBUG
    272                         printf("IPI is pending.\n");
    273 #endif
    274                         delay(20);
    275                 }
    276                 icr.lo = l_apic[ICRlo];
    277         } while (icr.delivs == DELIVS_PENDING);
    278        
    279 }
    280 
    281261/** Send all CPUs excluding CPU IPI vector.
    282262 *
     
    299279       
    300280        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        }
    303288       
    304289        return apic_poll_errors();
     
    342327                return 0;
    343328       
    344         l_apic_wait_for_delivery();
    345 
    346329        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       
    347336        icr.delmod = DELMOD_INIT;
    348337        icr.destmod = DESTMOD_PHYS;
Note: See TracChangeset for help on using the changeset viewer.