--- //depot/projects/smpng/sys/kern/kern_timeout.c +++ //depot/user/jhb/intr/kern/kern_timeout.c @@ -358,24 +358,30 @@ { struct callout_cpu *cc; #ifdef SMP + char name[MAXCOMLEN]; int cpu; -#endif cc = CC_CPU(timeout_cpu); - if (swi_add(&clk_intr_event, "clock", softclock, cc, SWI_CLOCK, + snprintf(name, sizeof(name), "clock: cpu%d", timeout_cpu); + if (swi_add(&clk_intr_event, name, softclock, cc, SWI_CLOCK, INTR_MPSAFE, &cc->cc_cookie)) panic("died while creating standard software ithreads"); -#ifdef SMP CPU_FOREACH(cpu) { if (cpu == timeout_cpu) continue; cc = CC_CPU(cpu); cc->cc_callout = NULL; /* Only cpu0 handles timeout(9). */ callout_cpu_init(cc); - if (swi_add(NULL, "clock", softclock, cc, SWI_CLOCK, + snprintf(name, sizeof(name), "clock: cpu%d", cpu); + if (swi_add(NULL, name, softclock, cc, SWI_CLOCK, INTR_MPSAFE, &cc->cc_cookie)) panic("died while creating standard software ithreads"); } +#else + cc = CC_CPU(timeout_cpu); + if (swi_add(&clk_intr_event, "clock", softclock, cc, SWI_CLOCK, + INTR_MPSAFE, &cc->cc_cookie)) + panic("died while creating standard software ithreads"); #endif } SYSINIT(start_softclock, SI_SUB_SOFTINTR, SI_ORDER_FIRST, start_softclock, NULL);