xen-devel
[Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravi
To: |
David Miller <davem@xxxxxxxxxxxxx> |
Subject: |
[Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable |
From: |
Ingo Molnar <mingo@xxxxxxx> |
Date: |
Fri, 16 Mar 2007 10:57:02 +0100 |
Cc: |
zach@xxxxxxxxxx, jeremy@xxxxxxxx, xen-devel@xxxxxxxxxxxxxxxxxxx, ak@xxxxxx, rusty@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, chrisw@xxxxxxxxxxxx, virtualization@xxxxxxxxxxxxxx, anthony@xxxxxxxxxxxxx, akpm@xxxxxxxxxxxxxxxxxxxx, torvalds@xxxxxxxxxxxxxxxxxxxx |
Delivery-date: |
Fri, 16 Mar 2007 02:56:56 -0700 |
Envelope-to: |
www-data@xxxxxxxxxxxxxxxxxx |
In-reply-to: |
<20070316.023331.59468179.davem@xxxxxxxxxxxxx> |
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/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe> |
List-unsubscribe: |
<http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe> |
References: |
<20070301232443.195603797@xxxxxxxx> <20070301232527.956565107@xxxxxxxx> <20070316092445.GM23174@xxxxxxx> <20070316.023331.59468179.davem@xxxxxxxxxxxxx> |
Sender: |
xen-devel-bounces@xxxxxxxxxxxxxxxxxxx |
User-agent: |
Mutt/1.4.2.2i |
* David Miller <davem@xxxxxxxxxxxxx> wrote:
> From: Ingo Molnar <mingo@xxxxxxx>
> Date: Fri, 16 Mar 2007 10:24:45 +0100
>
> > ugh. This is beyond ugly! Why dont we just compile two images, one
> > for Xen and one for native, do two passes to get those two images
> > and 'merge' them into a single vmlinuz (so that we still have a
> > 'single' kernel unit to deal with on the distro side). This way we
> > avoid all this crazy, limited, fragile patchery business...
>
> Perhaps the problem can be dealt with using ELF relocations.
>
> There is another case, discussed yesterday on netdev, where run-time
> resolution of ELF relocations would be useful (for
> very-very-very-read-only variables) so if it can solve this problem
> too it would be nice to have a generic infrastructure for it.
yeah, and i really think this is very fundamental: we've already got a
very nice tool that can do things like detect when we are paravirt and
optimize and patch things in a machine-specific way. It can even reorder
instructions and simulate the CPU's pipeline state and do very smart
optimizations based on that. It's a really neat thing, they call it
"GCC".
Limited, instruction-level patching like alternatives.h is fine because
that makes it easier to support multiple, incompatible CPU
architectures, without having to do a hugely intrusive split at the
kernel RPM level.
but the level of 'binary patching' done by the paravirt and Xen goes way
beyond that, and the changes here really underscore that we:
_should not emulate the closed source world_
There the only solution is to binary-patch - because they have no source
code. But here, we've got all the source code.
splitting the images and simply extending vmlinuz to have a
'multi-image' format would not only eliminate a huge amount of hookery,
it would also solve the problem of CONFIG_PARAVIRT bloating the native
kernel's codepaths by ~7%.
nobody wants to boot a xen-paravirt kernel from a floppy, so image size
is not an issue. In-RAM overhead would in fact be /reduced/, because
currently all the paravirt overhead hits both the native and the
paravirt kernel. Nor would /all/ of the vmlinuz have to be replicated in
the images - it's enough to replicate only those functions that truly
differ between the two build methods.
Ingo
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
<Prev in Thread] |
Current Thread |
[Next in Thread>
|
- [Xen-devel] Re: [patch 15/26] Xen-paravirt_ops: Add apply_to_page_range() which applies a function to a pte range., (continued)
- [Xen-devel] [patch 04/26] Xen-paravirt_ops: Add pagetable accessors to pack and unpack pagetable entries, Jeremy Fitzhardinge
- [Xen-devel] [patch 09/26] Xen-paravirt_ops: remove HAVE_ARCH_MM_LIFETIME, define no-op architecture implementations, Jeremy Fitzhardinge
- [Xen-devel] [patch 11/26] Xen-paravirt_ops: Use patch site IDs computed from offset in paravirt_ops structure, Jeremy Fitzhardinge
- [Xen-devel] [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable, Jeremy Fitzhardinge
- [Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable, Ingo Molnar
- [Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable, Jeremy Fitzhardinge
- [Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable, Rusty Russell
- [Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable, David Miller
- [Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable, Jeremy Fitzhardinge
- [Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable, Andi Kleen
- [Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable, Jeremy Fitzhardinge
- [Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable, Andi Kleen
- [Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable, Jeremy Fitzhardinge
- [Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable, Andi Kleen
|
|
|