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 780d467..a5c2b1a 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 e24a982..4acb5bc 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 1023e89..b740019 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 d7e4a24..2e13ec8 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 7fd5125..e1615df 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 8215495..40198a1 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 cc88af6..211f338 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 e2f3ca7..2ea3539 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 a98940e..466a255 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 a6c4407..02fd9bc 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 c5e42cc..b957d12 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 0665ac0..cfb797b 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 84437a4..d4c1d96 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 a825bf0..44514c6 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 7bfe998..fcfa280 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 9eb2c1b..2fc3222 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 ce2abff..5c2da56 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