Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Nov 2010 10:28:49 -0500
From:      John Baldwin <jhb@FreeBSD.org>
To:        Andriy Gapon <avg@freebsd.org>
Cc:        Garrett Cooper <yanegomi@gmail.com>, freebsd-hackers@freebsd.org
Subject:   Re: Best way to determine if an IRQ is present
Message-ID:  <4CEE80B1.6000602@FreeBSD.org>
In-Reply-To: <4CEBDD42.5010007@freebsd.org>
References:  <AANLkTi=%2ByXVrcWDC1QZLA0JWNOQjWG%2Bud_BmwiMXAMXt@mail.gmail.com> <201011220924.53709.jhb@freebsd.org> <4CEBDD42.5010007@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4CEE80B1.6000602>