Messages in this thread | | | Date | Fri, 20 Dec 2013 17:41:55 +0800 | Subject | Re: [PATCH] x86: Add check for number of available vectors before CPU down [v2] | From | rui wang <> |
| |
On 12/20/13, Prarit Bhargava <prarit@redhat.com> wrote: > > > On 12/19/2013 01:05 PM, Tony Luck wrote: >> On Wed, Dec 18, 2013 at 11:50 AM, Tony Luck <tony.luck@intel.com> wrote: >>> Looks good to me. >> >> Though now I've been confused by an offline question about affinity. > > Heh :) I'm pursuing it now. Rui has asked a pretty good question that I > don't > know the answer to off the top of my head. I'm still looking at the code. > >> >> Suppose we have some interrupt that has affinity to multiple cpus. E.g. >> (real example from one of my machines): >> >> # cat /proc/irq/94/smp_affinity_list >> 26,54 >> >> Now If I want to take either cpu26 or cpu54 offline - I'm guessing that I >> don't >> really need to find a new home for vector 94 - because the other one of >> that >> pair already has that set up. But your check_vectors code doesn't look >> like >> it accounts for that - if we take cpu26 offline - it would see that >> cpu54 doesn't >> have 94 free - but doesn't check that it is for the same interrupt. >> >> But I may be mixing "vectors" and "irqs" here. > > Yep. The question really is this: is the irq mapped to a single vector or > multiple vectors. (I think) >
The vector number for an irq is programmed in the LSB of the IOAPIC IRTE (or MSI data register in the case of MSI/MSIx). So there can be only one vector number (although multiple CPUs can be specified through DM). An MSI-capable device can dynamically change the lower few bits in the LSB to signal multiple interrupts with a contiguous range of vectors in powers of 2,but each of these vectors is treated as a separate IRQ. i.e. each of them has a separate irq desc, or a separate line in the /proc/interrupt file. This patch shows the MSI irq allocation in detail: http://git.kernel.org/cgit/linux/kernel/git/tip/tip.git/commit/?id=51906e779f2b13b38f8153774c4c7163d412ffd9
Thanks Rui
> P. > >> >> -Tony > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ >
| |