xen-devel
[Xen-devel] Re: [PATCH 30 of 38] xen: implement io_apic_ops
To: |
Jeremy Fitzhardinge <jeremy@xxxxxxxx> |
Subject: |
[Xen-devel] Re: [PATCH 30 of 38] xen: implement io_apic_ops |
From: |
Ingo Molnar <mingo@xxxxxxx> |
Date: |
Thu, 20 Nov 2008 20:22:18 +0100 |
Cc: |
Xen-devel <xen-devel@xxxxxxxxxxxxxxxxxxx>, Ian Campbell <ian.campbell@xxxxxxxxxx>, the arch/x86 maintainers <x86@xxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx, "Eric W. Biederman" <ebiederm@xxxxxxxxxxxx>, "H. Peter Anvin" <hpa@xxxxxxxxx>, Thomas Gleixner <tglx@xxxxxxxxxxxxx>, Yinghai Lu <yinghai@xxxxxxxxxx> |
Delivery-date: |
Thu, 20 Nov 2008 11:23:06 -0800 |
Envelope-to: |
www-data@xxxxxxxxxxxxxxxxxxx |
In-reply-to: |
<492597B9.8070506@xxxxxxxx> |
List-help: |
<mailto:xen-devel-request@lists.xensource.com?subject=help> |
List-id: |
Xen developer discussion <xen-devel.lists.xensource.com> |
List-post: |
<mailto:xen-devel@lists.xensource.com> |
List-subscribe: |
<http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe> |
List-unsubscribe: |
<http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe> |
References: |
<patchbomb.1226603398@xxxxxxxxxxxxxxxxx> <d103c0da2fa147ac31af.1226603428@xxxxxxxxxxxxxxxxx> <20081120093506.GB6885@xxxxxxx> <492597B9.8070506@xxxxxxxx> |
Sender: |
xen-devel-bounces@xxxxxxxxxxxxxxxxxxx |
User-agent: |
Mutt/1.5.18 (2008-05-17) |
* Jeremy Fitzhardinge <jeremy@xxxxxxxx> wrote:
> Ingo Molnar wrote:
>> * Jeremy Fitzhardinge <jeremy@xxxxxxxx> wrote:
>>
>>
>>> Writes to the IO APIC are paravirtualized via hypercalls, so implement
>>> the appropriate operations.
>>>
>>> Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>
>>> ---
>>> arch/x86/xen/Makefile | 3 +-
>>> arch/x86/xen/apic.c | 66
>>> ++++++++++++++++++++++++++++++++++++++++++++++
>>> arch/x86/xen/enlighten.c | 2 +
>>> arch/x86/xen/xen-ops.h | 2 +
>>> 4 files changed, 72 insertions(+), 1 deletion(-)
>>>
>>
>> hm, why is the ioapic used as the API here, and not an irqchip?
>>
>
> In essence, the purpose of the series is to break the 1:1
> relationship between Linux irqs and hardware GSIs. This allows me
> to have my own irq allocator, which in turn allows me to intermix
> "physical" irqs (ie, a Linux irq number bound to a real hardware
> interrupt source) with the various software/virtual irqs the Xen
> system needs.
>
> Once a physical irq has been mapped onto a gsi interrupt source, the
> mechanisms for handing the ioapic side of things are more or less
> the same. There's the same procedure of finding the ioapic/pin for
> a gsi and programming the appropriate vector.
>
> (Presumably once I implement MSI support, all references to "gsi"
> will become "gsi/msi/etc".)
>
> So, there's an awkward tradeoff. I could just completely duplicate
> the whole irq/vector/ioapic management code and hide it under my own
> irqchip, but it would end up duplicating a lot of the existing code.
> My alternative was to try to open out the existing code into
> something like a thin ioapic library, which I can call into as
> needed. The only low-level difference is that the Xen ioapics need
> to be programmed via a hypercall rather than register writes.
>
> If the x86 interrupt layer in general decouples irqs from GSIs, then
> I can probably make use of that to clean things up. A general irq
> allocator along with some way of attaching interrupt-source-specific
> information to each irq would get me a long way, I think. I'd still
> need hooks to paravirtualize the actual ioapic writes, but at least
> I wouldn't need to have quite so much delicate hooking.
it certainly looks thin enough to me although i'm really not sure we
want to virtualize at the IO-APIC level. Peter, what's your
opinion/preference?
Ingo
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
|
|