[PATCH v3] powerpc/iommu/ddw: Fix endianness
Anton Blanchard
anton at samba.org
Fri Oct 3 14:21:15 EST 2014
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: stable at vger.kernel.org # v3.13
> Cc: Benjamin Herrenschmidt <benh at kernel.crashing.org>
> Reviewed-by: Anton Blanchard <anton at samba.org>
> [aik: folded Anton's patch with of_property_read_u32_array]
> Signed-off-by: Alexey Kardashevskiy <aik at ozlabs.ru>
Thanks for updating, looks good. Could we make it clear the bug is
present in 3.13-3.17 with:
Cc: stable at vger.kernel.org # v3.13+
Acked-by: Anton Blanchard <anton at samba.org>
Anton
More information about the Linuxppc-dev
mailing list