From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Keir Fraser <keir@xen.org>
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: Re: [PATCH] IRQ: manually EOI migrating line interrupts
Date: Tue, 30 Aug 2011 16:19:24 +0100 [thread overview]
Message-ID: <4E5CFF7C.90309@citrix.com> (raw)
In-Reply-To: <CA82B48D.30D07%keir@xen.org>
On 30/08/11 15:38, Keir Fraser wrote:
> On 30/08/2011 15:28, "Andrew Cooper" <andrew.cooper3@citrix.com> wrote:
>
>>> @@ -1739,6 +1739,14 @@ static void end_level_ioapic_irq (unsign
>>> */
>>> i = IO_APIC_VECTOR(irq);
>>>
>>> + /* Manually EOI the old vector if we are moving to the new */
>>> + if ( vector && i != vector )
>>> + {
>>> + int ioapic;
>>> + for (ioapic = 0; ioapic < nr_ioapics; ioapic++)
>>> + io_apic_eoi(ioapic, i);
>>> + }
>>> +
> I don't know whether it's worth the effort, but we ought to be able to do
> better than this and send EOI to exactly the correct IO-APIC. I think
> irq=gsi here? And we should know the gsi_base of every IO-APIC, so we can
> work out in fact which pin of which IO-APIC needs clobbering?
>
> -- Keir
irq does (or really should) equal gsi. I had not noticed gsi_base and
gsi_end when making this fix.
io_apic_eoi does not require a pin, but it is using IO-APIC registers
which I can not find references to. The Local APIC document implies
that you just write the vector to the EOI register, and the IO-APIC will
work out which pin to clear.
However, because Xen currently might assign the same vector to two pins
in the same IO-APIC, changing the code at this point will not fix the
problem - just make it rarer. Therefore, I would suggest that it is not
worth the effort, as the problem is already very rare, and unlikely to
be a problem with any sane hardware which avoids PCI INTx interrupts
where possible.
P.S. If anyone knows which manual contains the specificaion/programming
guide for the IO-APIC, I would be very gratefull. Google always points
to 82093AA datasheet which is very out of date.
--
Andrew Cooper - Dom0 Kernel Engineer, Citrix XenServer
T: +44 (0)1223 225 900, http://www.citrix.com
next prev parent reply other threads:[~2011-08-30 15:19 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-30 14:17 [PATCH] IRQ: manually EOI migrating line interrupts Andrew Cooper
2011-08-30 14:19 ` Andrew Cooper
2011-08-30 14:28 ` Andrew Cooper
2011-08-30 14:35 ` Keir Fraser
2011-08-30 15:03 ` Andrew Cooper
2011-08-30 14:38 ` Keir Fraser
2011-08-30 15:19 ` Andrew Cooper [this message]
2011-08-30 16:04 ` Keir Fraser
2011-09-05 10:50 ` Jan Beulich
2011-09-05 12:24 ` Andrew Cooper
2011-09-05 10:43 ` Jan Beulich
2011-09-05 12:29 ` Andrew Cooper
2011-09-05 12:50 ` Jan Beulich
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4E5CFF7C.90309@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=keir@xen.org \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.