Subject: Re: [PATCH v3] powerpc/iommu/ddw: Fix endianness

From: Anton Blanchard <[email-masked]>
Date: Fri, 3 Oct 2014 14:21:15 +1000

Hi Alexey,

> rtas_call() accepts and returns values in CPU endianness.
> The ddw_query_response and ddw_create_response structs members are
> defined and treated as BE but as they are passed to rtas_call() as
> (u32 *) and they get byteswapped automatically, the data is
> CPU-endian. This fixes ddw_query_response and ddw_create_response
> definitions and use.
> 
> of_read_number() is designed to work with device tree cells - it
> assumes the input is big-endian and returns data in CPU-endian.
> However due to the ddw_create_response struct fix, create.addr_hi/lo
> are already CPU-endian so do not byteswap them.
> 
> ddw_avail is a pointer to the "ibm,ddw-applicable" property which
> contains 3 cells which are big-endian as it is a device tree.
> rtas_call() accepts a RTAS token in CPU-endian. This makes use of
> of_property_read_u32_array to byte swap and avoid the need for a
> number of be32_to_cpu calls.
> 
> Cc: [email-masked] # v3.13
> Cc: Benjamin Herrenschmidt <[email-masked]>
> Reviewed-by: Anton Blanchard <[email-masked]>
> [aik: folded Anton's patch with of_property_read_u32_array]
> Signed-off-by: Alexey Kardashevskiy <[email-masked]>

Thanks for updating, looks good. Could we make it clear the bug is
present in 3.13-3.17 with:

Cc: [email-masked] # v3.13+

Acked-by: Anton Blanchard <[email-masked]>

Anton