[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen: arm: clear the exclusive monitor on exception return
On Wed, 2013-07-17 at 20:48 +0100, Tim Deegan wrote: > At 12:18 +0100 on 17 Jul (1374063531), Ian Campbell wrote: > > Otherwise context switching between two vcpus which are contending the same > > lock can result in a spurious success. > > Shouldn't this go in ctxt_swicth_to(), then? I think any use that Xen > itself makes of the monitor should end with it cleared. Our atomic read/set which we stole^Winherited from Linux relies on this behaviour (interlocking with atomic_add_and_blah stuff). /* * On ARM, ordinary assignment (str instruction) doesn't clear the local * strex/ldrex monitor on some implementations. The reason we can use it for * atomic_set() is the clrex or dummy strex done on every exception return. */ As well as atomics our spin unlock (also inherited) is just a plain store. If nothing else it makes v7 and v8 consistent since the clrex is implicit in the eret on v8. > > Tim. > > > This is not required on ARMv8 since eret implicitly clears the monitor. > > > > Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx> > > --- > > xen/arch/arm/arm32/entry.S | 1 + > > 1 files changed, 1 insertions(+), 0 deletions(-) > > > > diff --git a/xen/arch/arm/arm32/entry.S b/xen/arch/arm/arm32/entry.S > > index 76814dd..1c26835 100644 > > --- a/xen/arch/arm/arm32/entry.S > > +++ b/xen/arch/arm/arm32/entry.S > > @@ -117,6 +117,7 @@ ENTRY(return_to_hypervisor) > > msr SPSR_hyp, r11 > > pop {r0-r12} > > add sp, #(UREGS_SP_usr - UREGS_sp); /* SP, LR, SPSR, PC */ > > + clrex > > eret > > > > /* > > -- > > 1.7.2.5 > > > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@xxxxxxxxxxxxx > > http://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |