From: Ingo Molnar <mingo@elte.hu>
To: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: the arch/x86 maintainers <x86@kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Xen-devel <xen-devel@lists.xensource.com>,
Keir Fraser <keir.fraser@eu.citrix.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
Avi Kivity <avi@redhat.com>
Subject: Re: [GIT PULL] Xen APIC hooks (with io_apic_ops)
Date: Mon, 25 May 2009 06:10:57 +0200 [thread overview]
Message-ID: <20090525041057.GD9396@elte.hu> (raw)
In-Reply-To: <4A14447E.9060607@goop.org>
* Jeremy Fitzhardinge <jeremy@goop.org> wrote:
> Ingo Molnar wrote:
>> Since they are not performance critical, then why doesnt Xen catch the
>> IO-APIC accesses, and virtualizes the device?
>>
>> If you want to hook into the IO-APIC code at such a low level, why
>> dont you hook into the _hardware_ API - i.e. catch those setup/routing
>> modifications to the IO-APIC space. No Linux changes are needed in that
>> case.
>>
>
> Yes, these changes aren't for a performance reason. It's a case
> where a few lines change in Linux saves many hundreds or thousands
> of lines change in Xen.
>
> Xen doesn't have an internal mechanism for emulating devices via
> pagefaults (that's generally handled by a qemu instance running as
> part of a guest domain), so there's no mechanism to map and
> emulate the io-apic. Putting such support into Xen would mean
> adding a pile of new infrastructure to support this case.
Note that this design problem has been created by Xen,
intentionally, and Xen is now suffering under those bad technical
choices made years ago. It's not Linux's problem.
The whole Xen design is messed up really: you have taken off bits of
the Linux kernel you found interesting, turned them into a
micro-kernel in essence and renamed it to 'Xen'.
But drivers and proper architecture is apparently boring (and
fragile and hard and expensive to write and support in a
micro-kernel setup) so you came up with this DOM0 piece of cr*p that
ties Linux to Xen even closer (along an _ABI_), where Linux does
most of the real work while Xen still stays 'separate' on paper.
Xen isnt actually useful _at all_ without Linux/DOM0. Without Dom0
Xen is slow and native hardware support within Xen is virtually
non-existent, as you point out above.
This is proof that you should have done all that work within Linux -
instead of duplicating a lot of code.
> Unlike the mtrr discussion, where the msr read/write ops would
> allow us to emulate the mtrr within the Xen-specific parts of the
> kernel, the io-apic ops are just accessed via normal memory writes
> which we can't hook, so it would have to be done within Xen.
>
> The other thing I thought about was putting a hook in the Linux
> pagefault handler, so we could emulate the ioapic at that level.
> But putting a hook in a very hot path to avoid code changes in a
> cold path doesn't make any sense. (Same applies to doing PF
> emulation within Xen; that's an even hotter path than Linux's.)
We already have various page fault notifiers, you could reuse them
if you wanted to.
Anyway, i'll pull the IO-APIC driver-ization changes if it's
complete, thorough and clean, because that will obviously help Linux
too. But the influx of paravirt overhead slowing down the native
kernel has to stop really.
Ingo
next prev parent reply other threads:[~2009-05-25 4:11 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-12 23:25 [GIT PULL] Xen APIC hooks (with io_apic_ops) Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 01/17] xen/dom0: handle acpi lapic parsing in Xen dom0 Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 02/17] x86: add io_apic_ops to allow interception Jeremy Fitzhardinge
2009-05-25 3:54 ` Ingo Molnar
2009-05-27 7:17 ` Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 03/17] xen: implement io_apic_ops Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 04/17] xen: create dummy ioapic mapping Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 05/17] xen: implement pirq type event channels Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 06/17] x86/io_apic: add get_nr_irqs_gsi() Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 07/17] xen/apic: identity map gsi->irqs Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 08/17] xen: direct irq registration to pirq event channels Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 09/17] xen: bind pirq to vector and event channel Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 10/17] xen: pre-initialize legacy irqs early Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 11/17] xen: don't setup acpi interrupt unless there is one Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 12/17] xen: use acpi_get_override_irq() to get triggering for legacy irqs Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 13/17] xen: initialize irq 0 too Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 14/17] xen: dynamically allocate irq & event structures Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 15/17] xen: set pirq name to something useful Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 16/17] xen: fix legacy irq setup, make ioapic-less machines work Jeremy Fitzhardinge
2009-05-12 23:25 ` [PATCH 17/17] xen: disable MSI Jeremy Fitzhardinge
2009-05-19 12:35 ` [GIT PULL] Xen APIC hooks (with io_apic_ops) Ingo Molnar
2009-05-20 17:57 ` Jeremy Fitzhardinge
2009-05-25 4:10 ` Ingo Molnar [this message]
2009-05-26 12:46 ` [Xen-devel] " George Dunlap
2009-05-26 18:26 ` Avi Kivity
2009-05-26 19:18 ` Dan Magenheimer
2009-05-26 19:41 ` Avi Kivity
2009-05-28 0:13 ` Ingo Molnar
2009-05-28 0:49 ` Jeremy Fitzhardinge
2009-05-28 3:47 ` Dan Magenheimer
2009-05-28 14:26 ` George Dunlap
2009-05-29 0:45 ` Xen is a feature Jeremy Fitzhardinge
2009-05-29 1:27 ` Greg KH
2009-05-29 4:05 ` David Miller
2009-05-29 6:37 ` Jaswinder Singh Rajput
2009-05-29 6:51 ` David Miller
2009-05-29 12:01 ` George Dunlap
2009-05-29 14:14 ` Pasi Kärkkäinen
2009-05-29 21:29 ` David Miller
[not found] ` <87tz33ep1b.fsf@basil.nowhere.org>
2009-05-29 21:31 ` [Xen-devel] " Jeremy Fitzhardinge
2009-05-29 23:09 ` Nakajima, Jun
2009-05-29 23:26 ` Jeremy Fitzhardinge
2009-06-02 15:23 ` Thomas Gleixner
2009-06-02 16:41 ` George Dunlap
2009-06-02 17:28 ` Chris Friesen
2009-06-02 17:46 ` Linus Torvalds
2009-06-02 18:02 ` Linus Torvalds
2009-06-02 18:59 ` Avi Kivity
2009-06-07 9:13 ` Ingo Molnar
2009-06-07 10:01 ` Avi Kivity
2009-06-07 10:35 ` Ingo Molnar
2009-06-07 12:46 ` Avi Kivity
2009-06-07 13:02 ` Jaswinder Singh Rajput
2009-06-04 14:02 ` [Xen-users] " Thomas Goirand
2009-06-02 18:59 ` Thomas Gleixner
2009-06-03 19:49 ` Bill Davidsen
2009-06-03 20:20 ` Thomas Gleixner
2009-06-03 22:37 ` Bill Davidsen
2009-06-03 23:29 ` Frans Pop
2009-06-04 13:21 ` George Dunlap
2009-06-04 15:10 ` Theodore Tso
2009-06-04 15:31 ` Chris Friesen
2009-06-05 4:14 ` Bill Davidsen
2009-06-05 4:55 ` Chris Friesen
2009-06-02 22:40 ` Steven Rostedt
2009-06-02 23:28 ` Merge Xen (the hypervisor) into Linux Ingo Molnar
2009-06-03 0:00 ` Dan Magenheimer
2009-06-03 0:32 ` Thomas Gleixner
2009-06-03 2:43 ` Theodore Tso
2009-06-03 3:42 ` Steven Rostedt
2009-06-03 4:49 ` Dan Magenheimer
2009-06-03 4:58 ` David Miller
2009-06-03 5:07 ` Steven Rostedt
2009-06-03 5:22 ` Steven Rostedt
2009-06-03 12:03 ` George Dunlap
2009-06-03 19:05 ` Theodore Tso
[not found] ` <4A27CF94.1050903@gmx.de>
2009-06-04 14:03 ` [Xen-users] " Steven Rostedt
2009-06-03 7:28 ` Gerd Hoffmann
2009-06-03 8:47 ` Alan Cox
2009-06-03 9:09 ` Gerd Hoffmann
2009-06-03 9:20 ` Keir Fraser
2009-06-03 11:15 ` Theodore Tso
2009-06-03 11:39 ` Keir Fraser
2009-06-03 11:41 ` Gerd Hoffmann
2009-06-03 1:00 ` Joel Becker
2009-06-03 2:00 ` david
2009-06-03 7:59 ` Alan Cox
2009-06-03 8:07 ` Christian Tramnitz
2009-06-04 18:53 ` Linus Torvalds
2009-06-05 0:09 ` Samuel Thibault
2009-06-05 0:18 ` David Miller
2009-06-05 0:54 ` Linus Torvalds
2009-06-03 17:31 ` Chris Friesen
2009-06-03 17:36 ` Alan Cox
2009-06-02 23:41 ` Xen is a feature Thomas Gleixner
2009-05-30 2:19 ` [Xen-devel] " Andy Burns
2009-05-26 21:19 ` [Xen-devel] Re: [GIT PULL] Xen APIC hooks (with io_apic_ops) Gerd Hoffmann
2009-05-27 10:14 ` George Dunlap
2009-05-24 20:10 ` Avi Kivity
2009-05-25 3:51 ` Ingo Molnar
2009-05-25 4:55 ` Avi Kivity
2009-05-25 5:06 ` Ingo Molnar
2009-05-25 5:12 ` Avi Kivity
2009-05-25 5:19 ` Ingo Molnar
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=20090525041057.GD9396@elte.hu \
--to=mingo@elte.hu \
--cc=avi@redhat.com \
--cc=jeremy@goop.org \
--cc=keir.fraser@eu.citrix.com \
--cc=linux-kernel@vger.kernel.org \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).