[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20120518154236.GA23406@dhcp-26-207.brq.redhat.com>
Date: Fri, 18 May 2012 17:42:37 +0200
From: Alexander Gordeev <agordeev@...hat.com>
To: Cyrill Gorcunov <gorcunov@...nvz.org>
Cc: linux-kernel@...r.kernel.org, x86@...nel.org,
Suresh Siddha <suresh.b.siddha@...el.com>,
Yinghai Lu <yinghai@...nel.org>
Subject: Re: [PATCH 2/3] x86: x2apic/cluster: Make use of lowest priority
delivery mode
On Fri, May 18, 2012 at 06:41:53PM +0400, Cyrill Gorcunov wrote:
> On Fri, May 18, 2012 at 12:26:41PM +0200, Alexander Gordeev wrote:
> > Currently x2APIC in logical destination mode delivers interrupts to a
> > single CPU, no matter how many CPUs were specified in the destination
> > cpumask.
> >
> > This fix enables delivery of interrupts to multiple CPUs by bit-ORing
> > Logical IDs of destination CPUs that have matching Cluster ID.
> >
> > Because only one cluster could be specified in a message destination
> > address, the destination cpumask is tried for a cluster that contains
> > maximum number of CPUs matching this cpumask. The CPUs in this cluster
> > are selected to receive the interrupts while all other CPUs (in the
> > cpumask) are ignored.
>
> Hi Alexander,
>
> I'm a bit confused, we do compose destination id from target cpumask
> and send one ipi per _cluster_ with all cpus belonging to this cluster
> OR'ed. So if my memory doesn't betray me all specified cpus in cluster
> should obtain this message. Thus I'm wondering where do you find that
> only one apic obtains ipi? (note i don't have the real physical
> machine with x2apic enabled handy to test, so please share
> the experience).
Cyrill,
This patchset is not about IPIs at all. It is about interrupts coming from
IO-APICs.
I.e. if you check /proc/interrups for some IR-IO-APIC you will notice that just
a single (first found) CPU receives the interrupts, even though the
corresponding /proc/irq/<irq#>/smp_affinity would specify multiple CPUs.
Given the current design it is unavoidable in physical destination mode (well,
as long as we do not broadcast, which I did not try yet). But it is well
avoidable in clustered logical addressing mode + lowest priority delivery mode.
I am attaching my debugging patchses so you could check actual values of ITREs.
>
> Cyrill
--
Regards,
Alexander Gordeev
agordeev@...hat.com
View attachment "0001-x86-io-apic-Dump-IO-APICs-to-sys-kernel-ioapic.patch" of type "text/plain" (6692 bytes)
View attachment "0002-x86-intremap-Fix-get_irte-NULL-pointer-assignment.patch" of type "text/plain" (816 bytes)
View attachment "0003-x86-intremap-Dump-IRTEs-to-sys-kernel-intremap.patch" of type "text/plain" (2693 bytes)
Powered by blists - more mailing lists