From: "H. Peter Anvin" <hpa@zytor.com>
To: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: Peter Zijlstra <peterz@infradead.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Ingo Molnar <mingo@elte.hu>,
the arch/x86 maintainers <x86@kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Nick Piggin <npiggin@kernel.dk>, Avi Kivity <avi@redhat.com>,
Marcelo Tosatti <mtosatti@redhat.com>, KVM <kvm@vger.kernel.org>,
Andi Kleen <andi@firstfloor.org>,
Xen Devel <xen-devel@lists.xensource.com>,
Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Subject: Re: [PATCH RFC V5 00/11] Paravirtualized ticketlocks
Date: Mon, 17 Oct 2011 09:33:26 -0700 [thread overview]
Message-ID: <4E9C58D6.9010103@zytor.com> (raw)
In-Reply-To: <4E971580.6030300@goop.org>
On 10/13/2011 09:44 AM, Jeremy Fitzhardinge wrote:
>
> Yeah, that's a good question. There are three mechanisms with somewhat
> overlapping concerns:
>
> * alternative()
> * pvops patching
> * jump_labels
>
> Alternative() is for low-level instruction substitution, and really only
> makes sense at the assembler level with one or two instructions.
>
> pvops is basically a collection of ordinary _ops structures full of
> function pointers, but it has a layer of patching to help optimise it.
> In the common case, this just replaces an indirect call with a direct
> one, but in some special cases it can inline code. This is used for
> small, extremely performance-critical things like cli/sti, but it
> awkward to use in general because you have to specify the inlined code
> as a parameterless asm.
>
> Jump_labels is basically an efficient way of doing conditionals
> predicated on rarely-changed booleans - so it's similar to pvops in that
> it is effectively a very ordinary C construct optimised by dynamic code
> patching.
Then there is static_cpu_has(), which is basically jump labels
implemented using the alternatives mechanism.
If nothing else it would be good to:
1. Make more general use of ops patching;
2. Merge mechanisms where practical.
-hpa
--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.
prev parent reply other threads:[~2011-10-17 16:34 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-13 0:51 [PATCH RFC V5 00/11] Paravirtualized ticketlocks Jeremy Fitzhardinge
2011-10-13 0:51 ` [PATCH RFC V5 01/11] x86/spinlock: replace pv spinlocks with pv ticketlocks Jeremy Fitzhardinge
2011-10-13 0:51 ` [PATCH RFC V5 02/11] x86/ticketlock: don't inline _spin_unlock when using paravirt spinlocks Jeremy Fitzhardinge
2011-10-13 0:51 ` [PATCH RFC V5 03/11] x86/ticketlock: collapse a layer of functions Jeremy Fitzhardinge
2011-10-13 0:51 ` [PATCH RFC V5 04/11] xen: defer spinlock setup until boot CPU setup Jeremy Fitzhardinge
2011-10-13 0:51 ` [PATCH RFC V5 05/11] xen/pvticketlock: Xen implementation for PV ticket locks Jeremy Fitzhardinge
2011-10-13 0:51 ` [PATCH RFC V5 06/11] xen/pvticketlocks: add xen_nopvspin parameter to disable xen pv ticketlocks Jeremy Fitzhardinge
2011-10-13 0:51 ` [PATCH RFC V5 07/11] x86/pvticketlock: use callee-save for lock_spinning Jeremy Fitzhardinge
2011-10-13 0:51 ` [PATCH RFC V5 08/11] x86/pvticketlock: when paravirtualizing ticket locks, increment by 2 Jeremy Fitzhardinge
2011-10-13 0:51 ` [PATCH RFC V5 09/11] x86/ticketlock: add slowpath logic Jeremy Fitzhardinge
2011-10-13 0:51 ` [PATCH RFC V5 10/11] xen/pvticketlock: allow interrupts to be enabled while blocking Jeremy Fitzhardinge
2011-10-13 0:51 ` [PATCH RFC V5 11/11] xen: enable PV ticketlocks on HVM Xen Jeremy Fitzhardinge
2011-10-13 10:54 ` [PATCH RFC V5 00/11] Paravirtualized ticketlocks Peter Zijlstra
2011-10-13 16:44 ` Jeremy Fitzhardinge
2011-10-14 14:17 ` Jason Baron
2011-10-14 17:02 ` Jeremy Fitzhardinge
2011-10-14 18:35 ` Jason Baron
2011-10-14 18:38 ` H. Peter Anvin
2011-10-14 18:51 ` Jeremy Fitzhardinge
2011-10-14 19:02 ` Jeremy Fitzhardinge
2011-10-17 14:58 ` Jason Baron
2011-10-14 18:37 ` H. Peter Anvin
2011-10-14 19:10 ` Jeremy Fitzhardinge
2011-10-14 19:12 ` H. Peter Anvin
2011-10-17 16:33 ` H. Peter Anvin [this message]
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=4E9C58D6.9010103@zytor.com \
--to=hpa@zytor.com \
--cc=andi@firstfloor.org \
--cc=avi@redhat.com \
--cc=jeremy.fitzhardinge@citrix.com \
--cc=jeremy@goop.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mtosatti@redhat.com \
--cc=npiggin@kernel.dk \
--cc=peterz@infradead.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).