arch/arc/Kconfig | 5 ---
arch/arc/Makefile | 3 +-
arch/arc/include/uapi/asm/swab.h | 63 --------------------------------
arch/arm/include/asm/processor.h | 3 +-
arch/arm/include/uapi/asm/ptrace.h | 9 -----
arch/arm/kernel/signal.c | 3 +-
arch/nios2/include/{uapi => }/asm/swab.h | 0
arch/x86/include/uapi/asm/auxvec.h | 2 +-
include/asm-generic/topology.h | 8 +---
scripts/headers_install.sh | 30 +--------------
10 files changed, 10 insertions(+), 116 deletions(-)
rename arch/nios2/include/{uapi => }/asm/swab.h (100%)
Forgot to Cc lkml
----- Original message -----
From: Arnd Bergmann <arnd@arndb.de>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Linux-Arch <linux-arch@vger.kernel.org>, linux-api@vger.kernel.org, "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
Subject: [GIT PULL] asm-generic header updates for 7.0
Date: Tuesday, February 10, 2026 18:02
The following changes since commit 0f61b1860cc3f52aef9036d7235ed1f017632193:
Linux 6.19-rc5 (2026-01-11 17:03:14 -1000)
are available in the Git repository at:
https://git.kernel.org/pub/scm/linux/kernel/git/arnd/asm-generic.git tags/asm-generic-7.0
for you to fetch changes up to adbbd9714f8058730f93c8df5c5bf1679456424b:
scripts: headers_install.sh: Remove config leak ignore machinery (2026-01-30 16:46:17 +0100)
----------------------------------------------------------------
asm-generic header updates for 7.0
A series from Thomas Weißschuh cleans up the UAPI header files to no
longer contain any references to Kconfig symbols, as these make no sense
in userspace. The build-time check for these was originally added by Sam
Ravnborg in linux-2.6.28, and a later version started warning for all
newly added CONFIG_* checks here but kept a list of known exceptions. With
the last exceptions gone from that list, the warning is now unconditional
in 'make headers_install'.
John Garry contributed a cleanup of cpumask_of_node().
----------------------------------------------------------------
John Garry (1):
include/asm-generic/topology.h: Remove unused definition of cpumask_of_node()
Thomas Weißschuh (5):
ARC: Always use SWAPE instructions for __arch_swab32()
ARM: uapi: Drop PSR_ENDSTATE
nios2: uapi: Remove custom asm/swab.h from UAPI
x86/uapi: Stop leaking kconfig references to userspace
scripts: headers_install.sh: Remove config leak ignore machinery
arch/arc/Kconfig | 5 ---
arch/arc/Makefile | 3 +-
arch/arc/include/uapi/asm/swab.h | 63 --------------------------------
arch/arm/include/asm/processor.h | 3 +-
arch/arm/include/uapi/asm/ptrace.h | 9 -----
arch/arm/kernel/signal.c | 3 +-
arch/nios2/include/{uapi => }/asm/swab.h | 0
arch/x86/include/uapi/asm/auxvec.h | 2 +-
include/asm-generic/topology.h | 8 +---
scripts/headers_install.sh | 30 +--------------
10 files changed, 10 insertions(+), 116 deletions(-)
rename arch/nios2/include/{uapi => }/asm/swab.h (100%)
diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
index f27e6b90428e..2ed7186c81c5 100644
--- a/arch/arc/Kconfig
+++ b/arch/arc/Kconfig
@@ -121,7 +121,6 @@ choice
config ARC_CPU_770
bool "ARC770"
depends on ISA_ARCOMPACT
- select ARC_HAS_SWAPE
help
Support for ARC770 core introduced with Rel 4.10 (Summer 2011)
This core has a bunch of cool new features:
@@ -340,10 +339,6 @@ config ARC_HAS_LLSC
default y
depends on !ARC_CANT_LLSC
-config ARC_HAS_SWAPE
- bool "Insn: SWAPE (endian-swap)"
- default y
-
if ISA_ARCV2
config ARC_USE_UNALIGNED_MEM_ACCESS
diff --git a/arch/arc/Makefile b/arch/arc/Makefile
index 0c5e6e6314f2..868805ffcfea 100644
--- a/arch/arc/Makefile
+++ b/arch/arc/Makefile
@@ -9,7 +9,7 @@ ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE := $(call cc-cross-prefix, arc-linux- arceb-linux- arc-linux-gnu-)
endif
-cflags-y += -fno-common -pipe -fno-builtin -mmedium-calls -D__linux__
+cflags-y += -fno-common -pipe -fno-builtin -mmedium-calls -mswape -D__linux__
tune-mcpu-def-$(CONFIG_ISA_ARCOMPACT) := -mcpu=arc700
tune-mcpu-def-$(CONFIG_ISA_ARCV2) := -mcpu=hs38
@@ -41,7 +41,6 @@ endif
cflags-y += -fsection-anchors
cflags-$(CONFIG_ARC_HAS_LLSC) += -mlock
-cflags-$(CONFIG_ARC_HAS_SWAPE) += -mswape
ifdef CONFIG_ISA_ARCV2
diff --git a/arch/arc/include/uapi/asm/swab.h b/arch/arc/include/uapi/asm/swab.h
index 8d1f1ef44ba7..417ea30f29f5 100644
--- a/arch/arc/include/uapi/asm/swab.h
+++ b/arch/arc/include/uapi/asm/swab.h
@@ -19,9 +19,6 @@
#include <linux/types.h>
-/* Native single cycle endian swap insn */
-#ifdef CONFIG_ARC_HAS_SWAPE
-
#define __arch_swab32(x) \
({ \
unsigned int tmp = x; \
@@ -32,66 +29,6 @@
tmp; \
})
-#else
-
-/* Several ways of Endian-Swap Emulation for ARC
- * 0: kernel generic
- * 1: ARC optimised "C"
- * 2: ARC Custom instruction
- */
-#define ARC_BSWAP_TYPE 1
-
-#if (ARC_BSWAP_TYPE == 1) /******* Software only ********/
-
-/* The kernel default implementation of htonl is
- * return x<<24 | x>>24 |
- * (x & (__u32)0x0000ff00UL)<<8 | (x & (__u32)0x00ff0000UL)>>8;
- *
- * This generates 9 instructions on ARC (excluding the ld/st)
- *
- * 8051fd8c: ld r3,[r7,20] ; Mem op : Get the value to be swapped
- * 8051fd98: asl r5,r3,24 ; get 3rd Byte
- * 8051fd9c: lsr r2,r3,24 ; get 0th Byte
- * 8051fda0: and r4,r3,0xff00
- * 8051fda8: asl r4,r4,8 ; get 1st Byte
- * 8051fdac: and r3,r3,0x00ff0000
- * 8051fdb4: or r2,r2,r5 ; combine 0th and 3rd Bytes
- * 8051fdb8: lsr r3,r3,8 ; 2nd Byte at correct place in Dst Reg
- * 8051fdbc: or r2,r2,r4 ; combine 0,3 Bytes with 1st Byte
- * 8051fdc0: or r2,r2,r3 ; combine 0,3,1 Bytes with 2nd Byte
- * 8051fdc4: st r2,[r1,20] ; Mem op : save result back to mem
- *
- * Joern suggested a better "C" algorithm which is great since
- * (1) It is portable to any architecture
- * (2) At the same time it takes advantage of ARC ISA (rotate intrns)
- */
-
-#define __arch_swab32(x) \
-({ unsigned long __in = (x), __tmp; \
- __tmp = __in << 8 | __in >> 24; /* ror tmp,in,24 */ \
- __in = __in << 24 | __in >> 8; /* ror in,in,8 */ \
- __tmp ^= __in; \
- __tmp &= 0xff00ff; \
- __tmp ^ __in; \
-})
-
-#elif (ARC_BSWAP_TYPE == 2) /* Custom single cycle bswap instruction */
-
-#define __arch_swab32(x) \
-({ \
- unsigned int tmp = x; \
- __asm__( \
- " .extInstruction bswap, 7, 0x00, SUFFIX_NONE, SYNTAX_2OP \n"\
- " bswap %0, %1 \n"\
- : "=r" (tmp) \
- : "r" (tmp)); \
- tmp; \
-})
-
-#endif /* ARC_BSWAP_TYPE=zzz */
-
-#endif /* CONFIG_ARC_HAS_SWAPE */
-
#if !defined(__STRICT_ANSI__) || defined(__KERNEL__)
#define __SWAB_64_THRU_32__
#endif
diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
index 326864f79d18..bba83228bc22 100644
--- a/arch/arm/include/asm/processor.h
+++ b/arch/arm/include/asm/processor.h
@@ -73,7 +73,8 @@ static inline void arch_thread_struct_whitelist(unsigned long *offset,
regs->ARM_cpsr = USR26_MODE; \
if (elf_hwcap & HWCAP_THUMB && pc & 1) \
regs->ARM_cpsr |= PSR_T_BIT; \
- regs->ARM_cpsr |= PSR_ENDSTATE; \
+ if (IS_ENABLED(CONFIG_CPU_ENDIAN_BE8)) \
+ regs->ARM_cpsr |= PSR_E_BIT; \
regs->ARM_pc = pc & ~1; /* pc */ \
regs->ARM_sp = sp; /* sp */ \
})
diff --git a/arch/arm/include/uapi/asm/ptrace.h b/arch/arm/include/uapi/asm/ptrace.h
index 8896c23ccba7..2ef917957005 100644
--- a/arch/arm/include/uapi/asm/ptrace.h
+++ b/arch/arm/include/uapi/asm/ptrace.h
@@ -102,15 +102,6 @@
#define PSR_IT_MASK 0x0600fc00 /* If-Then execution state mask */
#define PSR_ENDIAN_MASK 0x00000200 /* Endianness state mask */
-/*
- * Default endianness state
- */
-#ifdef CONFIG_CPU_ENDIAN_BE8
-#define PSR_ENDSTATE PSR_E_BIT
-#else
-#define PSR_ENDSTATE 0
-#endif
-
/*
* These are 'magic' values for PTRACE_PEEKUSR that return info about where a
* process is located in memory.
diff --git a/arch/arm/kernel/signal.c b/arch/arm/kernel/signal.c
index 79a6730fa0eb..7be9188d83d9 100644
--- a/arch/arm/kernel/signal.c
+++ b/arch/arm/kernel/signal.c
@@ -337,7 +337,8 @@ setup_return(struct pt_regs *regs, struct ksignal *ksig,
return 1;
}
- cpsr |= PSR_ENDSTATE;
+ if (IS_ENABLED(CONFIG_CPU_ENDIAN_BE8))
+ cpsr |= PSR_E_BIT;
/*
* Maybe we need to deliver a 32-bit signal to a 26-bit task.
diff --git a/arch/nios2/include/uapi/asm/swab.h b/arch/nios2/include/asm/swab.h
similarity index 100%
rename from arch/nios2/include/uapi/asm/swab.h
rename to arch/nios2/include/asm/swab.h
diff --git a/arch/x86/include/uapi/asm/auxvec.h b/arch/x86/include/uapi/asm/auxvec.h
index 6beb55bbefa4..bdde9e18f94e 100644
--- a/arch/x86/include/uapi/asm/auxvec.h
+++ b/arch/x86/include/uapi/asm/auxvec.h
@@ -11,7 +11,7 @@
#define AT_SYSINFO_EHDR 33
/* entries in ARCH_DLINFO: */
-#if defined(CONFIG_IA32_EMULATION) || !defined(CONFIG_X86_64)
+#if defined(__KERNEL__) && (defined(CONFIG_IA32_EMULATION) || !defined(CONFIG_X86_64))
# define AT_VECTOR_SIZE_ARCH 3
#else /* else it's non-compat x86-64 */
# define AT_VECTOR_SIZE_ARCH 2
diff --git a/include/asm-generic/topology.h b/include/asm-generic/topology.h
index 4dbe715be65b..9865ba48c5b1 100644
--- a/include/asm-generic/topology.h
+++ b/include/asm-generic/topology.h
@@ -45,11 +45,7 @@
#endif
#ifndef cpumask_of_node
- #ifdef CONFIG_NUMA
- #define cpumask_of_node(node) ((node) == 0 ? cpu_online_mask : cpu_none_mask)
- #else
- #define cpumask_of_node(node) ((void)(node), cpu_online_mask)
- #endif
+#define cpumask_of_node(node) ((void)(node), cpu_online_mask)
#endif
#ifndef pcibus_to_node
#define pcibus_to_node(bus) ((void)(bus), -1)
@@ -61,7 +57,7 @@
cpumask_of_node(pcibus_to_node(bus)))
#endif
-#endif /* CONFIG_NUMA */
+#endif /* !CONFIG_NUMA */
#if !defined(CONFIG_NUMA) || !defined(CONFIG_HAVE_MEMORYLESS_NODES)
diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh
index 0e4e939efc94..9c15e748761c 100755
--- a/scripts/headers_install.sh
+++ b/scripts/headers_install.sh
@@ -64,36 +64,10 @@ configs=$(sed -e '
d
' $OUTFILE)
-# The entries in the following list do not result in an error.
-# Please do not add a new entry. This list is only for existing ones.
-# The list will be reduced gradually, and deleted eventually. (hopefully)
-#
-# The format is <file-name>:<CONFIG-option> in each line.
-config_leak_ignores="
-arch/arc/include/uapi/asm/swab.h:CONFIG_ARC_HAS_SWAPE
-arch/arm/include/uapi/asm/ptrace.h:CONFIG_CPU_ENDIAN_BE8
-arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_NO
-arch/nios2/include/uapi/asm/swab.h:CONFIG_NIOS2_CI_SWAB_SUPPORT
-arch/x86/include/uapi/asm/auxvec.h:CONFIG_IA32_EMULATION
-arch/x86/include/uapi/asm/auxvec.h:CONFIG_X86_64
-"
-
for c in $configs
do
- leak_error=1
-
- for ignore in $config_leak_ignores
- do
- if echo "$INFILE:$c" | grep -q "$ignore$"; then
- leak_error=
- break
- fi
- done
-
- if [ "$leak_error" = 1 ]; then
- echo "error: $INFILE: leak $c to user-space" >&2
- exit 1
- fi
+ echo "error: $INFILE: leak $c to user-space" >&2
+ exit 1
done
rm -f $TMPFILE
© 2016 - 2026 Red Hat, Inc.