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]"