[PATCH] xen: arm: mandate EABI and use generic atomic operations.

Stefano Stabellini stefano.stabellini at eu.citrix.com
Thu Mar 7 21:42:48 EST 2013


On Thu, 7 Mar 2013, Konrad Rzeszutek Wilk wrote:
> On Thu, Mar 07, 2013 at 07:17:25AM +0000, Ian Campbell wrote:
> > Rob Herring has observed that c81611c4e96f "xen: event channel arrays are
> > xen_ulong_t and not unsigned long" introduced a compile failure when building
> > without CONFIG_AEABI:
> > 
> > /tmp/ccJaIZOW.s: Assembler messages:
> > /tmp/ccJaIZOW.s:831: Error: even register required -- `ldrexd r5,r6,[r4]'
> > 
> > Will Deacon pointed out that this is because OABI does not require even base
> > registers for 64-bit values. We can avoid this by simply using the existing
> > atomic64_xchg operation and the same containerof trick as used by the cmpxchg
> > macros. However since this code is used on memory which is shared with the
> > hypervisor we require proper atomic instructions and cannot use the generic
> > atomic64 callbacks (which are based on spinlocks), therefore add a dependency
> > on !GENERIC_ATOMIC64. Since we already depend on !CPU_V6 there isn't much
> > downside to this.
> > 
> > While thinking about this we also observed that OABI has different struct
> > alignment requirements to EABI, which is a problem for hypercall argument
> > structs which are shared with the hypervisor and which must be in EABI layout.
> > Since I don't expect people to want to run OABI kernels on Xen depend on
> > CONFIG_AEABI explicitly too (although it also happens to be enforced by the
> > !GENERIC_ATOMIC64 requirement too).
> > 
> > Signed-off-by: Ian Campbell <ian.campbell at citrix.com>
> > Cc: Will Deacon <will.deacon at arm.com>
> > Cc: Rob Herring <robherring2 at gmail.com>
> > Cc: Stefano Stabellini <Stefano.Stabellini at eu.citrix.com>
> > Cc: Konrad Rzeszutek Wilk <konrad.wilk at oracle.com>
> 
> Stefano, I need your Ack before I can put it in my tree for Linus.

It looks OK to me


Acked-by: Stefano Stabellini <stefano.stabellini at eu.citrix.com>




More information about the linux-arm-kernel mailing list