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.

--
John Baldwin
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[email protected]"

Reply via email to