WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Xen

xen-devel

[Top] [All Lists]

[Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravi

To: Jeremy Fitzhardinge <jeremy@xxxxxxxx>
Subject: [Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable
From: Zachary Amsden <zach@xxxxxxxxxx>
Date: 2007年3月17日 01:10:18 -0800
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx, Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx>, virtualization@xxxxxxxxxxxxxx, Rusty Russell <rusty@xxxxxxxxxxxxxxx>, linux-kernel@xxxxxxxxxxxxxxx, Chris Wright <chrisw@xxxxxxxxxxxx>, Andi Kleen <ak@xxxxxx>, Anthony Liguori <anthony@xxxxxxxxxxxxx>, Ingo Molnar <mingo@xxxxxxx>, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, David Miller <davem@xxxxxxxxxxxxx>
Delivery-date: 2007年3月17日 02:09:29 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <45FB38F7.5010306@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/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> <45FAD592.9010105@xxxxxxxx> <45FB283F.6080000@xxxxxxxxxx> <45FB38F7.5010306@xxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 1.5.0.10 (X11/20070221)
Jeremy Fitzhardinge wrote:
I think the suggestion is much simpler. If you convince gcc/binutils to
leave the .reloc section in vmlinux, and make that available to the
kernel itself, then you can scan all the kernel's relocs to find ones
which refer to paravirt_ops, and use those to determine which are
callsites that can be patched.
Yes, that is pretty nice.
The main upside is that all the callsites are just normal C calls;
there's no special syntax or strange macros, and we get the full benefit
of typechecking, etc.
But I can see a few downsides compared the current scheme:
 1. Identifying the callsites is a somewhat hackish process of looking
 at a reloc and doing a bit of dissassembly to see what is using
 the reloc, to identify calls and jumps
 2. There's nothing explicit to tell us how much space there is to
 patch into; we just have to assume sizeof(indirect call/jmp)
 3. There's no information about the register environment at the
 callsite, so we just have to adopt normal C ABI rules. For the
 patch sites in hand-written asm, this could be tricky.
 4. gcc could do strange things which prevent detection of patch
 sites. For example, it might CSE the value of, say,
 paravirt_ops.irq_enable, which would be a reasonable optimisation,
 but prevent any of the resulting indirect calls from being
 patched. In general it relies on gcc to generate identifiable
 callsites, which is a bit unpredictable.
 5. There's still a moderate amount of binutils hackery to get the
 relocs into the right form, and there's plenty of scope for it to
 screw up.
And yes, those are nasty points. I think I'd be interested in seeing more discussion on it, perhaps those issues could be worked out.
[ Roswell technology deleted ]
Nack. Everyone needs Roswell technology.
Actually, that was not a serious proposal. I think the effort and complexity would likely not justify the gain. But I still had to throw it out, since it is what we use on Betelgeuse.
Z
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
<Prev in Thread] Current Thread [Next in Thread>
Previous by Date: Re: [Xen-devel] upgrading Xen3.0.4-1 to Xen-unstable ... , Keir Fraser
Next by Date: Re: [Xen-devel] upgrading Xen3.0.4-1 to Xen-unstable ... , Ewan Mellor
Previous by Thread: [Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable , Jeremy Fitzhardinge
Next by Thread: Re: [Xen-devel] Re: [patch 13/26] Xen-paravirt_ops: Consistently wrap paravirt ops callsites to make them patchable , Rusty Russell
Indexes: [Date] [Thread] [Top] [All Lists]

Copyright ©, Citrix Systems Inc. All rights reserved. Legal and Privacy
Citrix This site is hosted by Citrix

AltStyle によって変換されたページ (->オリジナル) /