|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 16/45] xen: arm64: barriers and wait for interrupts/events
On Thu, 2013-02-07 at 16:43 +0000, Tim Deegan wrote:
> At 15:56 +0000 on 23 Jan (1358956582), Ian Campbell wrote:
> > --- /dev/null
> > +++ b/xen/include/asm-arm/arm64/system.h
> > @@ -0,0 +1,28 @@
> > +/* Portions taken from Linux arch arm64 */
> > +#ifndef __ASM_ARM64_SYSTEM_H
> > +#define __ASM_ARM64_SYSTEM_H
> > +
> > +#define sev() asm volatile("sev" : : : "memory")
> > +#define wfe() asm volatile("wfe" : : : "memory")
> > +#define wfi() asm volatile("wfi" : : : "memory")
> > +
> > +#define isb() asm volatile("isb" : : : "memory")
> > +#define dsb() asm volatile("dsb sy" : : : "memory")
> > +
> > +#define mb() dsb()
> > +#define rmb() asm volatile("dsb ld" : : : "memory")
> > +#define wmb() asm volatile("dsb st" : : : "memory")
> > +
> > +#define smp_mb() asm volatile("dmb ish" : : : "memory")
> > +#define smp_rmb() asm volatile("dmb ishld" : : : "memory")
> > +#define smp_wmb() asm volatile("dmb ishst" : : : "memory")
>
> Is this effectively declaring that all 'normal' RAM shall be inner
> shareable? I think if that's the case we might want to update all the
> rest of the memory management to see things that way too.
> What's the intended difference between rmb() and smp_rmb(), anyway?
It's part of the Linux CONFIG_SMP abstraction, smp_rmb becomes just a
regular barrier on UP but is a proper rmb (e.g. lfence) on SMP, rmp() is
always a proper barrier.
But that's a Linux-ism and I see x86 Xen has diverged from x86 Linux
here and just defines smp_foo as foo (i.e. a stronger barrier than might
strictly be required).
I think I'll do that here as well, until asyou say previously we revisit
this and decide what inner and outer shareable mean for Xen...
Ian.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |