Best way to determine if an IRQ is present
John Baldwin
jhb at FreeBSD.org
Thu Nov 25 15:28:51 UTC 2010
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
More information about the freebsd-hackers
mailing list