Kconfig: introduce HAS_IOPORT option and select it as necessary
authorNiklas Schnelle <schnelle@linux.ibm.com>
Thu, 23 Mar 2023 16:33:52 +0000 (17:33 +0100)
committerArnd Bergmann <arnd@arndb.de>
Wed, 5 Apr 2023 20:15:19 +0000 (22:15 +0200)
We introduce a new HAS_IOPORT Kconfig option to indicate support for I/O
Port access. In a future patch HAS_IOPORT=n will disable compilation of
the I/O accessor functions inb()/outb() and friends on architectures
which can not meaningfully support legacy I/O spaces such as s390.

The following architectures do not select HAS_IOPORT:

* ARC
* C-SKY
* Hexagon
* Nios II
* OpenRISC
* s390
* User-Mode Linux
* Xtensa

All other architectures select HAS_IOPORT at least conditionally.

The "depends on" relations on HAS_IOPORT in drivers as well as ifdefs
for HAS_IOPORT specific sections will be added in subsequent patches on
a per subsystem basis.

Co-developed-by: Arnd Bergmann <arnd@kernel.org>
Signed-off-by: Arnd Bergmann <arnd@kernel.org>
Acked-by: Johannes Berg <johannes@sipsolutions.net> # for ARCH=um
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
17 files changed:
arch/alpha/Kconfig
arch/arm/Kconfig
arch/arm64/Kconfig
arch/ia64/Kconfig
arch/loongarch/Kconfig
arch/m68k/Kconfig
arch/microblaze/Kconfig
arch/mips/Kconfig
arch/parisc/Kconfig
arch/powerpc/Kconfig
arch/riscv/Kconfig
arch/sh/Kconfig
arch/sparc/Kconfig
arch/x86/Kconfig
drivers/bus/Kconfig
drivers/parisc/Kconfig
lib/Kconfig

index 780d4673c3ca78feed39590e11096090f4ef8262..a5c2b1aa46b02edbea92c2fea1d76d0d7e4e887c 100644 (file)
@@ -27,6 +27,7 @@ config ALPHA
        select AUDIT_ARCH
        select GENERIC_CPU_VULNERABILITIES
        select GENERIC_SMP_IDLE_THREAD
+       select HAS_IOPORT
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_MOD_ARCH_SPECIFIC
        select MODULES_USE_ELF_RELA
index e24a9820e12fa0bea7e8e9db4e1b773264681a98..4acb5bc4b52a0c86514dad75f29a6d8c44594040 100644 (file)
@@ -70,6 +70,7 @@ config ARM
        select GENERIC_SCHED_CLOCK
        select GENERIC_SMP_IDLE_THREAD
        select HARDIRQS_SW_RESEND
+       select HAS_IOPORT
        select HAVE_ARCH_AUDITSYSCALL if AEABI && !OABI_COMPAT
        select HAVE_ARCH_BITREVERSE if (CPU_32v7M || CPU_32v7) && !CPU_32v6
        select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL && !CPU_ENDIAN_BE32 && MMU
index 1023e896d46b89698c69c84fcf0779f407c390da..b740019c4aee3bda445590cb9b19b9541182f3ca 100644 (file)
@@ -145,6 +145,7 @@ config ARM64
        select GENERIC_GETTIMEOFDAY
        select GENERIC_VDSO_TIME_NS
        select HARDIRQS_SW_RESEND
+       select HAS_IOPORT
        select HAVE_MOVE_PMD
        select HAVE_MOVE_PUD
        select HAVE_PCI
index d7e4a24e8644cdecb03d96228871e8e294a2004e..2e13ec8263b97da193bfb69df6388fdd719033cc 100644 (file)
@@ -25,6 +25,7 @@ config IA64
        select PCI_DOMAINS if PCI
        select PCI_MSI
        select PCI_SYSCALL if PCI
+       select HAS_IOPORT
        select HAVE_ASM_MODVERSIONS
        select HAVE_UNSTABLE_SCHED_CLOCK
        select HAVE_EXIT_THREAD
index 7fd51257e0ed41b0460e584683805c2ed0f3714f..e1615dfb543710ee1b6626e440e5cd3b1ecec121 100644 (file)
@@ -80,6 +80,7 @@ config LOONGARCH
        select GENERIC_SMP_IDLE_THREAD
        select GENERIC_TIME_VSYSCALL
        select GPIOLIB
+       select HAS_IOPORT
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_ARCH_MMAP_RND_BITS if MMU
        select HAVE_ARCH_SECCOMP_FILTER
index 82154952e574e47861972d87a9cae62d47d68583..40198a1ebe274f62024b7c3943eb273ba3f34d43 100644 (file)
@@ -18,6 +18,7 @@ config M68K
        select GENERIC_CPU_DEVICES
        select GENERIC_IOMAP
        select GENERIC_IRQ_SHOW
+       select HAS_IOPORT if PCI || ISA || ATARI_ROM_ISA
        select HAVE_ARCH_SECCOMP
        select HAVE_ARCH_SECCOMP_FILTER
        select HAVE_ASM_MODVERSIONS
index cc88af6fa7a4420d7d92e5dc403eab09afbbd19e..211f338d6235d00dfa3592fec1ff21acd8b510c1 100644 (file)
@@ -21,6 +21,7 @@ config MICROBLAZE
        select GENERIC_IRQ_SHOW
        select GENERIC_PCI_IOMAP
        select GENERIC_SCHED_CLOCK
+       select HAS_IOPORT if PCI
        select HAVE_ARCH_HASH
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_SECCOMP
index e2f3ca73f40d6542fc711cba3d502a06f284ad23..2ea3539a07ade143f3fc1c3e36df0d1ed4ebce3b 100644 (file)
@@ -47,6 +47,7 @@ config MIPS
        select GENERIC_SMP_IDLE_THREAD
        select GENERIC_TIME_VSYSCALL
        select GUP_GET_PXX_LOW_HIGH if CPU_MIPS32 && PHYS_ADDR_T_64BIT
+       select HAS_IOPORT if !NO_IOPORT_MAP || ISA
        select HAVE_ARCH_COMPILER_H
        select HAVE_ARCH_JUMP_LABEL
        select HAVE_ARCH_KGDB if MIPS_FP_SUPPORT
index a98940e6424327fe5a5232dc0613404c5c559ae4..466a25525364d2d45e7ed5bf286856242fdc90d2 100644 (file)
@@ -47,6 +47,7 @@ config PARISC
        select MODULES_USE_ELF_RELA
        select CLONE_BACKWARDS
        select TTY # Needed for pdc_cons.c
+       select HAS_IOPORT if PCI || EISA
        select HAVE_DEBUG_STACKOVERFLOW
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_ARCH_HASH
index a6c4407d3ec835a972b78f15fb3033f7492b2d60..02fd9bcd9215b81f3894fb55ea1f7c17dc1e5912 100644 (file)
@@ -188,6 +188,7 @@ config PPC
        select GENERIC_SMP_IDLE_THREAD
        select GENERIC_TIME_VSYSCALL
        select GENERIC_VDSO_TIME_NS
+       select HAS_IOPORT                       if PCI
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_ARCH_HUGE_VMALLOC           if HAVE_ARCH_HUGE_VMAP
        select HAVE_ARCH_HUGE_VMAP              if PPC_RADIX_MMU || PPC_8xx
index c5e42cc376048dbc9d960a6275b40c983acb7618..b957d12a171ba7e0c65a10c599db3bf0d231ce69 100644 (file)
@@ -74,6 +74,7 @@ config RISCV
        select GENERIC_TIME_VSYSCALL if MMU && 64BIT
        select GENERIC_VDSO_TIME_NS if HAVE_GENERIC_VDSO
        select HARDIRQS_SW_RESEND
+       select HAS_IOPORT if MMU
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_ARCH_HUGE_VMALLOC if HAVE_ARCH_HUGE_VMAP
        select HAVE_ARCH_HUGE_VMAP if MMU && 64BIT && !XIP_KERNEL
index 0665ac0add0b4991fd6ed82d4928dfa86063ffe7..cfb797bc4200a41daadeb2aa8b5df4a83b4bb6c4 100644 (file)
@@ -25,6 +25,7 @@ config SUPERH
        select GENERIC_SCHED_CLOCK
        select GENERIC_SMP_IDLE_THREAD
        select GUP_GET_PXX_LOW_HIGH if X2TLB
+       select HAS_IOPORT if HAS_IOPORT_MAP
        select HAVE_ARCH_AUDITSYSCALL
        select HAVE_ARCH_KGDB
        select HAVE_ARCH_SECCOMP_FILTER
index 84437a4c65454ca0677c6d4271b55fa4a7ffbc3f..d4c1d96f85cd8fc21f9b2c1b73a1c9d089540940 100644 (file)
@@ -32,6 +32,7 @@ config SPARC
        select GENERIC_IRQ_SHOW
        select ARCH_WANT_IPC_PARSE_VERSION
        select GENERIC_PCI_IOMAP
+       select HAS_IOPORT
        select HAVE_NMI_WATCHDOG if SPARC64
        select HAVE_CBPF_JIT if SPARC32
        select HAVE_EBPF_JIT if SPARC64
index a825bf031f4957396c8201ff375abeafaceceab2..44514c63a476d771e52329874bc8ab7e32ba26ff 100644 (file)
@@ -162,6 +162,7 @@ config X86
        select GUP_GET_PXX_LOW_HIGH             if X86_PAE
        select HARDIRQS_SW_RESEND
        select HARDLOCKUP_CHECK_TIMESTAMP       if X86_64
+       select HAS_IOPORT
        select HAVE_ACPI_APEI                   if ACPI
        select HAVE_ACPI_APEI_NMI               if ACPI
        select HAVE_ALIGNED_STRUCT_PAGE         if SLUB
index 7bfe998f3514ac6d8f3a5f2f0e8283c264bc7a5d..fcfa280df98aeb2cfe12c5731d405a052212ee80 100644 (file)
@@ -81,7 +81,7 @@ config MOXTET
 config HISILICON_LPC
        bool "Support for ISA I/O space on HiSilicon Hip06/7"
        depends on (ARM64 && ARCH_HISI) || (COMPILE_TEST && !ALPHA && !HEXAGON && !PARISC)
-       depends on HAS_IOMEM
+       depends on HAS_IOPORT
        select INDIRECT_PIO if ARM64
        help
          Driver to enable I/O access to devices attached to the Low Pin
index 9eb2c1b5de7de18fbf0cae924dbc633e27499114..2fc3222d26346c24394992ec4faf75efe2ac6b2c 100644 (file)
@@ -4,6 +4,7 @@ menu "Bus options (PCI, PCMCIA, EISA, GSC, ISA)"
 config GSC
        bool "VSC/GSC/HSC bus support"
        select HAVE_EISA
+       select HAS_IOPORT
        default y
        help
          The VSC, GSC and HSC busses were used from the earliest 700-series
index ce2abffb9ed8909591f633dc39c9bc068f943e34..5c2da561c516d00a8f90e7a4554aee4416afbe74 100644 (file)
@@ -92,6 +92,7 @@ config ARCH_USE_SYM_ANNOTATIONS
 config INDIRECT_PIO
        bool "Access I/O in non-MMIO mode"
        depends on ARM64
+       depends on HAS_IOPORT
        help
          On some platforms where no separate I/O space exists, there are I/O
          hosts which can not be accessed in MMIO mode. Using the logical PIO
@@ -509,6 +510,9 @@ config HAS_IOMEM
        depends on !NO_IOMEM
        default y
 
+config HAS_IOPORT
+       bool
+
 config HAS_IOPORT_MAP
        bool
        depends on HAS_IOMEM && !NO_IOPORT_MAP