Found this problem while enabling queued rwlock on SPARC. The parameter CONFIG_CPU_BIG_ENDIAN is used to clear the specific byte in qrwlock structure. Without this parameter, we clear the wrong byte. Here is the code.
static inline u8 *__qrwlock_write_byte(struct qrwlock *lock) { return (u8 *)lock + 3 * IS_BUILTIN(CONFIG_CPU_BIG_ENDIAN); } Define CPU_BIG_ENDIAN for SPARC to fix it. Signed-off-by: Babu Moger <babu.mo...@oracle.com> Reviewed-by: HÃ¥kon Bugge <haakon.bu...@oracle.com> Reviewed-by: Jane Chu <jane....@oracle.com> Reviewed-by: Shannon Nelson <shannon.nel...@oracle.com> Reviewed-by: Vijay Kumar <vijay.ac.ku...@oracle.com> --- arch/sparc/Kconfig | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/arch/sparc/Kconfig b/arch/sparc/Kconfig index a2ad946..0f5813b 100644 --- a/arch/sparc/Kconfig +++ b/arch/sparc/Kconfig @@ -91,6 +91,10 @@ config ARCH_DEFCONFIG config ARCH_PROC_KCORE_TEXT def_bool y +config CPU_BIG_ENDIAN + bool + default y if SPARC + config ARCH_ATU bool default y if SPARC64 -- 1.7.1