char: ipmi: handle HAS_IOPORT dependencies
authorNiklas Schnelle <schnelle@linux.ibm.com>
Thu, 4 Apr 2024 10:45:06 +0000 (12:45 +0200)
committerCorey Minyard <minyard@acm.org>
Wed, 17 Apr 2024 19:55:04 +0000 (14:55 -0500)
In a future patch HAS_IOPORT=n will disable inb()/outb() and friends at
compile time. We thus need to add this dependency and ifdef sections of
code using inb()/outb() as alternative access methods.

Acked-by: Corey Minyard <cminyard@mvista.com>
Co-developed-by: Arnd Bergmann <arnd@kernel.org>
Signed-off-by: Arnd Bergmann <arnd@kernel.org>
Signed-off-by: Niklas Schnelle <schnelle@linux.ibm.com>
Message-Id: <20240404104506.3352637-2-schnelle@linux.ibm.com>
Signed-off-by: Corey Minyard <minyard@acm.org>
drivers/char/ipmi/Makefile
drivers/char/ipmi/ipmi_si_intf.c
drivers/char/ipmi/ipmi_si_pci.c

index cb6138b8ded90548dea6bee34fc10fd805e618e8..e0944547c9d0ee1f3046e35335d4f43b460381b5 100644 (file)
@@ -5,13 +5,10 @@
 
 ipmi_si-y := ipmi_si_intf.o ipmi_kcs_sm.o ipmi_smic_sm.o ipmi_bt_sm.o \
        ipmi_si_hotmod.o ipmi_si_hardcode.o ipmi_si_platform.o \
-       ipmi_si_port_io.o ipmi_si_mem_io.o
-ifdef CONFIG_PCI
-ipmi_si-y += ipmi_si_pci.o
-endif
-ifdef CONFIG_PARISC
-ipmi_si-y += ipmi_si_parisc.o
-endif
+       ipmi_si_mem_io.o
+ipmi_si-$(CONFIG_HAS_IOPORT) += ipmi_si_port_io.o
+ipmi_si-$(CONFIG_PCI) += ipmi_si_pci.o
+ipmi_si-$(CONFIG_PARISC) += ipmi_si_parisc.o
 
 obj-$(CONFIG_IPMI_HANDLER) += ipmi_msghandler.o
 obj-$(CONFIG_IPMI_DEVICE_INTERFACE) += ipmi_devintf.o
index 5cd031f3fc9700f10b1d5bcef0564ece1928df69..eea23a3b966ef1c317a948685cf95bc476081b55 100644 (file)
@@ -1882,7 +1882,8 @@ int ipmi_si_add_smi(struct si_sm_io *io)
        }
 
        if (!io->io_setup) {
-               if (io->addr_space == IPMI_IO_ADDR_SPACE) {
+               if (IS_ENABLED(CONFIG_HAS_IOPORT) &&
+                   io->addr_space == IPMI_IO_ADDR_SPACE) {
                        io->io_setup = ipmi_si_port_setup;
                } else if (io->addr_space == IPMI_MEM_ADDR_SPACE) {
                        io->io_setup = ipmi_si_mem_setup;
index 74fa2055868b325fb59e37ba5534e7bc122b92f1..b83d55685b221c3af0b9d5d31d94f38a77cf3b80 100644 (file)
@@ -97,6 +97,9 @@ static int ipmi_pci_probe(struct pci_dev *pdev,
        }
 
        if (pci_resource_flags(pdev, 0) & IORESOURCE_IO) {
+               if (!IS_ENABLED(CONFIG_HAS_IOPORT))
+                       return -ENXIO;
+
                io.addr_space = IPMI_IO_ADDR_SPACE;
                io.io_setup = ipmi_si_port_setup;
        } else {