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"

Reply via email to