From: Keir Fraser <keir@xensource.com>
To: "Tian, Kevin" <kevin.tian@intel.com>, Guy Zana <guy@neocleus.com>,
xen-devel@lists.xensource.com
Cc: Alex Novik <alex@neocleus.com>
Subject: Re: [RFC] Pass-through Interdomain Interrupts Sharing(HVM/Dom0)
Date: Fri, 10 Aug 2007 08:37:16 +0100 [thread overview]
Message-ID: <C2E1D43C.C5DA%keir@xensource.com> (raw)
In-Reply-To: <D470B4E54465E3469E2ABBC5AFAC390F013B20B2@pdsmsx412.ccr.corp.intel.com>
On 10/8/07 08:15, "Tian, Kevin" <kevin.tian@intel.com> wrote:
>> My thought here is a simple priority list with move-to-back of the
>> frontmost
>> domain when we deliver him the interrupt but he does not deassert the
>> line
>> either in reasonable time or by the time he EOIs the interrupt. This is
>> simple generic logic needing no PV guest changes.
>>
>> -- Keir
>
> How is the priority defined?
It is defined dynamically by the move-to-back policy of the priority list.
> What's reasonable time for different device requirement?
For the timeout? Actually I'm not sure how important having a timeout
actually is -- unless in the worst case it can reset the PCI device and
ensure the line is quiesced in that way. Otherwise a non-responsive guest is
unlikely to deassert its device and hence you cannot timeout and re-enable
the interrupt line anyway. I consider this to be a secondary issue in
implementing shared interrupts, and can reasonably be left until later.
> PV irq sharing takes response from all shared side, and Guy's RFC
> only takes dom0's response. Now your suggestion is much simpler
> toward timeout only, but what do you expect the final performance
> to be?
The timeout isn't part of this method's normal operation. The usual case
will be that we deliver to just one guest -- at the front of our priority
list -- and it was the correct single guest to deliver the interrupt to. In
which case the list does not change, and if using the polarity-change method
from Neocleus we would take the usual two interrupts per device assertion
(one on +ve edge, one on -ve edge), or just one interrupt if we use the
existing Xen late-EOI method or Intel's dummy-EOI method.
We take potentially two interrupts if the highest-prio domain is not the
service domain for this particular interrupt. In this case we move domain to
back of list and continue to deliver until the line is deasserted. Neocleus
polarity-change method works really nicely here because we take no second
interrupt until the physical INTx line is actually deasserted (and hence the
interrupt is serviced,a nd our delivery algorithm hence terminates). Using
Xen/Intel methods of EOI'ing we have to somehow detect the immediate
re-interrupt on EOI (which will happen because the physical INTx line is
still asserted)
Worst case is where multiple devices are issuing interrupts simultaneously,
of course. In this case we do truely *need* to issue the interrupt to
multiple guests. This will work, but be a bit slow. I think this is true of
the Neocleus algorithm too, however.
In conclusion, my algorithm works well when I run through it in my head. :-)
-- Keir
next prev parent reply other threads:[~2007-08-10 7:37 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-09 17:45 [RFC] Pass-through Interdomain Interrupts Sharing (HVM/Dom0) Guy Zana
2007-08-10 2:58 ` [RFC] Pass-through Interdomain Interrupts Sharing(HVM/Dom0) Tian, Kevin
2007-08-10 10:10 ` Guy Zana
2007-08-10 7:01 ` [RFC] Pass-through Interdomain Interrupts Sharing (HVM/Dom0) Keir Fraser
2007-08-10 7:04 ` Keir Fraser
2007-08-10 7:15 ` [RFC] Pass-through Interdomain Interrupts Sharing(HVM/Dom0) Tian, Kevin
2007-08-10 7:37 ` Keir Fraser [this message]
2007-08-10 8:02 ` Tian, Kevin
2007-08-10 8:16 ` Keir Fraser
2007-08-10 8:41 ` Tian, Kevin
2007-08-10 8:52 ` Keir Fraser
2007-08-10 10:22 ` [RFC] Pass-through Interdomain Interrupts Sharing (HVM/Dom0) Guy Zana
2007-08-10 11:21 ` Keir Fraser
2007-08-10 11:50 ` Guy Zana
2007-08-10 13:18 ` Keir Fraser
2007-08-10 15:51 ` Guy Zana
2007-08-10 16:00 ` Keir Fraser
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=C2E1D43C.C5DA%keir@xensource.com \
--to=keir@xensource.com \
--cc=alex@neocleus.com \
--cc=guy@neocleus.com \
--cc=kevin.tian@intel.com \
--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.