Skip to contentSkip to conversation

pcmcia : make PCMCIA depend on HAS_IOMEM

PATCH Superseded Baoquan He 3 participants 5 messages Feb 16, 2023

Subsystems (5)
lore
Share & tools
lore

Baoquan He

author
#0 lore raw

PATCH 1/2 pcmcia : make PCMCIA depend on HAS_IOMEM

On s390 systems (aka mainframes), it has classic channel devices for networking and permanent storage that are currently even more common than PCI devices. Hence it could have a fully functional s390 kernel with CONFIG_PCI=n, then the relevant iomem mapping functions [including ioremap(), devm_ioremap(), etc.] are not available.

Here let depend PCMCIA on HAS_IOMEM so that it won't be built to cause below compiling error if PCI is unset.

-------------------------------------------------------
ld: drivers/pcmcia/cistpl.o: in function `set_cis_map':
cistpl.c:(.text+0x1202): undefined reference to `ioremap'
ld: cistpl.c:(.text+0x13b0): undefined reference to `iounmap'
ld: cistpl.c:(.text+0x14a6): undefined reference to `iounmap'
ld: cistpl.c:(.text+0x1544): undefined reference to `ioremap'
ld: drivers/pcmcia/cistpl.o: in function `release_cis_mem':
cistpl.c:(.text+0x3f14): undefined reference to `iounmap'

---
 drivers/pcmcia/Kconfig | 1 +
 1 file changed, 1 insertion(+)
drivers/pcmcia/Kconfig +1 -0
index 1525023e49b6..7c412bbe8bbe 100644
@@ -20,6 +20,7 @@ if PCCARD
 
 config PCMCIA
 	tristate "16-bit PCMCIA support"
+	depends on HAS_IOMEM
 	select CRC32
 	default y
 	help
Signature · 1 line
2.34.1
author
#1 lore raw

PATCH 2/2 dmaengine: make QCOM_HIDMA depend on HAS_IOMEM

On s390 systems (aka mainframes), it has classic channel devices for networking and permanent storage that are currently even more common than PCI devices. Hence it could have a fully functional s390 kernel with CONFIG_PCI=n, then the relevant iomem mapping functions [including ioremap(), devm_ioremap(), etc.] are not available.

Here let QCOM_HIDMA depend on HAS_IOMEM so that it won't be built to cause below compiling error if PCI is unset.

--------------------------------------------------------
ld: drivers/dma/qcom/hidma.o: in function `hidma_probe':
hidma.c:(.text+0x4b46): undefined reference to `devm_ioremap_resource'
ld: hidma.c:(.text+0x4b9e): undefined reference to `devm_ioremap_resource' make[1]: *** [scripts/Makefile.vmlinux:35: vmlinux] Error 1
make: *** [Makefile:1264: vmlinux] Error 2

---
 drivers/dma/qcom/Kconfig | 1 +
 1 file changed, 1 insertion(+)
drivers/dma/qcom/Kconfig +1 -0
index 3f926a653bd8..ace75d7b835a 100644
@@ -45,6 +45,7 @@ config QCOM_HIDMA_MGMT
 
 config QCOM_HIDMA
 	tristate "Qualcomm Technologies HIDMA Channel support"
+	depends on HAS_IOMEM
 	select DMA_ENGINE
 	help
 	  Enable support for the Qualcomm Technologies HIDMA controller.
Signature · 1 line
2.34.1
Reviewed-by on v1 2/2
#2 lore raw

Re: [PATCH 2/2] dmaengine: make QCOM_HIDMA depend on HAS_IOMEM

Quoted 33 lines · Baoquan He

On s390 systems (aka mainframes), it has classic channel devices for networking and permanent storage that are currently even more common than PCI devices. Hence it could have a fully functional s390 kernel with CONFIG_PCI=n, then the relevant iomem mapping functions [including ioremap(), devm_ioremap(), etc.] are not available.

Here let QCOM_HIDMA depend on HAS_IOMEM so that it won't be built to cause below compiling error if PCI is unset.

--------------------------------------------------------
ld: drivers/dma/qcom/hidma.o: in function `hidma_probe':
hidma.c:(.text+0x4b46): undefined reference to `devm_ioremap_resource'
ld: hidma.c:(.text+0x4b9e): undefined reference to `devm_ioremap_resource' make[1]: *** [scripts/Makefile.vmlinux:35: vmlinux] Error 1
make: *** [Makefile:1264: vmlinux] Error 2

---
 drivers/dma/qcom/Kconfig | 1 +
 1 file changed, 1 insertion(+)
drivers/dma/qcom/Kconfig +0 -0
index 3f926a653bd8..ace75d7b835a 100644

drivers/dma/qcom/Kconfig config QCOM_HIDMA_MGMT · line 51

Quoted 7 lines
drivers/dma/qcom/Kconfig +1 -0
@@ -45,6 +45,7 @@ config QCOM_HIDMA_MGMT
 
 config QCOM_HIDMA
 	tristate "Qualcomm Technologies HIDMA Channel support"
+	depends on HAS_IOMEM
 	select DMA_ENGINE
 	help
 	  Enable support for the Qualcomm Technologies HIDMA controller.

Thanks for the patch!

Reviewed-by on v1 1/2
#3 lore raw
In reply to Baoquan He
Quoted 34 lines · Baoquan He

On s390 systems (aka mainframes), it has classic channel devices for networking and permanent storage that are currently even more common than PCI devices. Hence it could have a fully functional s390 kernel with CONFIG_PCI=n, then the relevant iomem mapping functions [including ioremap(), devm_ioremap(), etc.] are not available.

Here let depend PCMCIA on HAS_IOMEM so that it won't be built to cause below compiling error if PCI is unset.

-------------------------------------------------------
ld: drivers/pcmcia/cistpl.o: in function `set_cis_map':
cistpl.c:(.text+0x1202): undefined reference to `ioremap'
ld: cistpl.c:(.text+0x13b0): undefined reference to `iounmap'
ld: cistpl.c:(.text+0x14a6): undefined reference to `iounmap'
ld: cistpl.c:(.text+0x1544): undefined reference to `ioremap'
ld: drivers/pcmcia/cistpl.o: in function `release_cis_mem':
cistpl.c:(.text+0x3f14): undefined reference to `iounmap'

---
 drivers/pcmcia/Kconfig | 1 +
 1 file changed, 1 insertion(+)
drivers/pcmcia/Kconfig +0 -0
index 1525023e49b6..7c412bbe8bbe 100644

drivers/pcmcia/Kconfig if PCCARD · line 26

Quoted 7 lines
drivers/pcmcia/Kconfig +1 -0
@@ -20,6 +20,7 @@ if PCCARD
 
 config PCMCIA
 	tristate "16-bit PCMCIA support"
+	depends on HAS_IOMEM
 	select CRC32
 	default y
 	help

Not sure how many PCMCIA drivers only use I/O memory but not I/O ports the latter of which are badly stubbed out on s390, though at leat they compile. I have a series on that part that I intend to send a new version for soon™. That said yes this does solve the compilation issue and there could be drivers which rely only on I/O memory and are not broken in principle.

Acked-by
#4 lore raw
Quoted 7 lines · Niklas Schnelle
Quoted 6 lines · Baoquan He
drivers/pcmcia/Kconfig +0 -0
index 1525023e49b6..7c412bbe8bbe 100644
@@ -20,6 +20,7 @@ if PCCARD
 
Quoted 13 lines

drivers/pcmcia/Kconfig if PCCARD · line 26

Quoted 6 lines
drivers/pcmcia/Kconfig +1 -0
 config PCMCIA
 	tristate "16-bit PCMCIA support"
+	depends on HAS_IOMEM
 	select CRC32
 	default y
 	help

Not sure how many PCMCIA drivers only use I/O memory but not I/O ports the latter of which are badly stubbed out on s390, though at leat they compile. I have a series on that part that I intend to send a new version for soon™. That said yes this does solve the compilation issue and there could be drivers which rely only on I/O memory and are not broken in principle.

There are no platforms that have I/O ports but don't set HAS_IOMEM, so it doesn't really matter.

Quoted 1 line