on 25/11/2010 17:28 John Baldwin said the following: > Andriy Gapon wrote: >> on 22/11/2010 16:24 John Baldwin said the following: >>> Well, the real solution is actually larger than described in the PR. What >>> you >>> really want to do is take the logical CPUs offline when they are "halted". >>> Taking a CPU offline should trigger an EVENTHANDLER that various bits of >>> code >>> could invoke. In the case of platforms that support binding interrupts to >>> CPUs >>> (x86 and sparc64 at least), they would install an event handler that >>> searches >>> the MD interrupt tables (e.g. the interrupt_sources[] array on x86) and move >>> bound interrupts to other CPUs. However, I think all the interrupt >>> bits will be MD, not MI. >> >> That's a good idea and a comprehensive approach. >> One minor technical detail - should an offlined CPU be removed from all_cpus >> mask/set? > > That's tricky. In other e-mails I've had on this topic, the idea has been to > have > a new online_cpus mask and maybe a CPU_ONLINE() test macro similar to > CPU_ABSENT(). In that case, an offline CPU should still be in all_cpus, but > many > places that use all_cpus would need to use online_cpus instead. >
This sounds like a plan. CPU_FOREACH_ONLINE() could also come handy, Thanks! -- Andriy Gapon _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscr...@freebsd.org"