On Thu, Jun 8, 2017 at 1:07 AM, Babu Moger <babu.moger@xxxxxxxxxx> wrote: > > On 5/29/2017 9:56 PM, Michael Ellerman wrote: >> >> Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> writes: >> >>> Hi Michael, >>> >>> On Mon, May 29, 2017 at 2:07 PM, Michael Ellerman <mpe@xxxxxxxxxxxxxx> >>> wrote: >>>> >>>> Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> writes: >>>>> >>>>> On Tue, May 23, 2017 at 11:45 PM, Babu Moger <babu.moger@xxxxxxxxxx> >>>>> wrote: >>> >>> So far we tried always doing that, but a few checks for the semi-existing >>> Kconfig symbol crept in in generic code. Those could be replaced by the >>> __*__ >>> variants, but consistently having the Kconfig symbols would be useful >>> anyway >>> (e.g. to avoid building the broken-on-big-endian ISDN drivers). >> >> Ah OK, the original mail was citing C code, but yeah I guess it would be >> handy in Makefiles etc. > > > Thanks for all the responses. I see couple of options here. > > 1. Fix the c code in include/asm-generic/qrwlock.h using ifdef > __BIG_ENDIAN__ > This will fix the issue for us. > > 2. Define CPU_BIG_ENDIAN for all the missing fixed endian architectures. > Because the problem is only for fixed big endian archs. > > I prefer the option 1. What do you guys think ? I would prefer option 2. If we leave out CONFIG_CPU_LITTLE_ENDIAN, then the patch becomes much easier than what we had discussed earlier, and we just need to patch a few Kconfig files to add config CPU_BIG_ENDIAN def_bool y I would also suggest adding a sanity check like diff --git a/include/linux/byteorder/big_endian.h b/include/linux/byteorder/big_endian.h index 392041475c72..18a1ab5b0260 100644 --- a/include/linux/byteorder/big_endian.h +++ b/include/linux/byteorder/big_endian.h @@ -3,5 +3,9 @@ #include <uapi/linux/byteorder/big_endian.h> +#ifndef CONFIG_CPU_BIG_ENDIAN +#warning inconsistent configuration, need CONFIG_CPU_BIG_ENDIAN +#endif + #include <linux/byteorder/generic.h> #endif /* _LINUX_BYTEORDER_BIG_ENDIAN_H */ diff --git a/include/linux/byteorder/little_endian.h b/include/linux/byteorder/little_endian.h index 08057377aa23..ba910bb9aad0 100644 --- a/include/linux/byteorder/little_endian.h +++ b/include/linux/byteorder/little_endian.h @@ -3,5 +3,9 @@ #include <uapi/linux/byteorder/little_endian.h> +#ifdef CONFIG_CPU_BIG_ENDIAN +#warning inconsistent configuration, CONFIG_CPU_BIG_ENDIAN is set +#endif + #include <linux/byteorder/generic.h> #endif /* _LINUX_BYTEORDER_LITTLE_ENDIAN_H */ Fixing xtensa properly might still be tricky, but with that change, at least we detect when things go wrong in this area. Arnd -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html