| 
         
xen-devel
Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized	ticketlocks
 
| 
To:  | 
Jeremy Fitzhardinge <jeremy@xxxxxxxx> | 
 
| 
Subject:  | 
Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized	ticketlocks | 
 
| 
From:  | 
Stephan Diestelhorst <stephan.diestelhorst@xxxxxxx> | 
 
| 
Date:  | 
Wed, 28 Sep 2011 20:13:10 +0200 | 
 
| 
Cc:  | 
"xen-devel@xxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxx>,	Piggin <npiggin@xxxxxxxxx>, KVM <kvm@xxxxxxxxxxxxxxx>, Linux,	Peter Zijlstra <peterz@xxxxxxxxxxxxx>,	Marcelo Tosatti <mtosatti@xxxxxxxxxx>,	the arch/x86 maintainers <x86@xxxxxxxxxx>,	Kernel Mailing List <linux-kernel@xxxxxxxxxxxxxxx>,	Jan Beulich <JBeulich@xxxxxxxx>, Nick,	Andi Kleen <andi@xxxxxxxxxxxxxx>, Avi Kivity <avi@xxxxxxxxxx>,	Jeremy Fitzhardinge <jeremy.fitzhardinge@xxxxxxxxxx>, "H.	Peter Anvin" <hpa@xxxxxxxxx>, Ingo Molnar <mingo@xxxxxxx>,	Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> | 
 
| 
Delivery-date:  | 
Wed, 28 Sep 2011 11:14:25 -0700 | 
 
| 
Envelope-to:  | 
www-data@xxxxxxxxxxxxxxxxxxx | 
 
| 
In-reply-to:  | 
<4E834EE9.70102@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> | 
 
| 
Organization:  | 
AMD OSRC | 
 
| 
References:  | 
<cover.1315878463.git.jeremy.fitzhardinge@xxxxxxxxxx>	<33782147.oLTY4kzH1r@chlor> <4E834EE9.70102@xxxxxxxx> | 
 
| 
Sender:  | 
xen-devel-bounces@xxxxxxxxxxxxxxxxxxx | 
 
| 
User-agent:  | 
KMail/1.13.6 (Linux/3.0.4-030004-generic; KDE/4.7.1; x86_64; ; ) | 
 
 
 
On Wednesday 28 September 2011 18:44:25 Jeremy Fitzhardinge wrote:
> On 09/28/2011 06:58 AM, Stephan Diestelhorst wrote:
> >> I guess it comes down to throwing myself on the efficiency of some kind
> >> of fence instruction.  I guess an lfence would be sufficient; is that
> >> any more efficient than a full mfence?
> > An lfence should not be sufficient, since that essentially is a NOP on
> > WB memory. You really want a full fence here, since the store needs to
> > be published before reading the lock with the next load.
> 
> The Intel manual reads:
> 
>     Reads cannot pass earlier LFENCE and MFENCE instructions.
>     Writes cannot pass earlier LFENCE, SFENCE, and MFENCE instructions.
>     LFENCE instructions cannot pass earlier reads.
> 
> Which I interpreted as meaning that an lfence would prevent forwarding. 
> But I guess it doesn't say "lfence instructions cannot pass earlier
> writes", which means that the lfence could logically happen before the
> write, thereby allowing forwarding?  Or should I be reading this some
> other way?
Indeed. You are reading this the right way. 
> >> Could you give me a pointer to AMD's description of the ordering rules?
> > They should be in "AMD64 Architecture Programmer's Manual Volume 2:
> > System Programming", Section 7.2 Multiprocessor Memory Access Ordering.
> >
> > http://developer.amd.com/documentation/guides/pages/default.aspx#manuals
> >
> > Let me know if you have some clarifying suggestions. We are currently
> > revising these documents...
> 
> I find the English descriptions of these kinds of things frustrating to
> read because of ambiguities in the precise meaning of words like "pass",
> "ahead", "behind" in these contexts.  I find the prose useful to get an
> overview, but when I have a specific question I wonder if something more
> formal would be useful.
It would be, and some have started this efort:
http://www.cl.cam.ac.uk/~pes20/weakmemory/
But I am not sure whether that particular nasty forwarding case is
captured properly in their model It is on my list of things to check.
> I guess it's implied that anything that is not prohibited by the
> ordering rules is allowed, but it wouldn't hurt to say it explicitly.
> That said, the AMD description seems clearer and more explicit than the
> Intel manual (esp since it specifically discusses the problem here).
Thanks! Glad you like it :)
Stephan
-- 
Stephan Diestelhorst, AMD Operating System Research Center
stephan.diestelhorst@xxxxxxx, Tel. +49 (0)351 448 356 719
Advanced Micro Devices GmbH
Einsteinring 24
85609 Aschheim
Germany
Geschaeftsfuehrer: Alberto Bozzo;
Sitz: Dornach, Gemeinde Aschheim, Landkreis Muenchen
Registergericht Muenchen, HRB Nr. 43632, WEEE-Reg-Nr: DE 12919551 
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
 
 |   
 
| <Prev in Thread] | 
Current Thread | 
[Next in Thread>
 |  
- [Xen-devel] [PATCH 06/10] x86/pvticketlock: use callee-save for	lock_spinning, (continued)
- [Xen-devel] [PATCH 06/10] x86/pvticketlock: use callee-save for	lock_spinning, Jeremy Fitzhardinge
 
- [Xen-devel] [PATCH 09/10] xen/pvticketlock: allow interrupts to be	enabled while blocking, Jeremy Fitzhardinge
 
- [Xen-devel] [PATCH 10/10] xen: enable PV ticketlocks on HVM Xen, Jeremy Fitzhardinge
 
- [Xen-devel] [PATCH 08/10] x86/ticketlock: add slowpath logic, Jeremy Fitzhardinge
 
- [Xen-devel] [PATCH 05/10] xen/pvticketlock: Xen implementation for	PV ticket locks, Jeremy Fitzhardinge
 
- [Xen-devel] [PATCH 01/10] x86/ticketlocks: remove obsolete comment, Jeremy Fitzhardinge
 
- Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized	ticketlocks, Stephan Diestelhorst
 
- Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized	ticketlocks, Linus Torvalds
 - Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized	ticketlocks, Jan Beulich
 - Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized	ticketlocks, Linus Torvalds
 - Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized	ticketlocks, Jeremy Fitzhardinge
 - Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized	ticketlocks, Linus Torvalds
 - Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized	ticketlocks, H. Peter Anvin
 - Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized	ticketlocks, Jeremy Fitzhardinge
 - Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized	ticketlocks, Stephan Diestelhorst
 - Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized	ticketlocks, Jeremy Fitzhardinge
 
- Re: [Xen-devel] [PATCH 00/10] [PATCH RFC V2] Paravirtualized	ticketlocks, Linus Torvalds
 
  
 
 |  
  
 | 
    |