Hi,
Building allyesconfig on ARCH=um fails with:
drivers/mfd/syscon.c: In function ‘of_syscon_register’:
drivers/mfd/syscon.c:67:9: error: implicit declaration of function ‘ioremap’ [-Werror=implicit-function-declaration]
base = ioremap(res.start, resource_size(&res));
Since commit c89c0114955a ("mfd: syscon: Set regmap max_register in
of_syscon_register") the syscon depends on HAS_IOMEM because
it uses the ioremap().
However syscon is often directly selected... so first the dependency on
HAS_IOMEM has to be added to all selecting symbols.
Comments are welcomed whether this is appropriate approach.
The last patch "mfd: syscon: Fix build of missing ioremap on UM" should
enter all other to avoid kbuild complains like:
warning: (ST_IRQCHIP && HIP04_ETH && STMMAC_PLATFORM && DWMAC_IPQ806X &&
DWMAC_LPC18XX && DWMAC_ROCKCHIP && DWMAC_SOCFPGA && DWMAC_STI && TI_CPSW
&& PINCTRL_ROCKCHIP && PINCTRL_DOVE && POWER_RESET_KEYSTONE &&
S3C2410_WATCHDOG && VIDEO_OMAP3 && VIDEO_S5P_FIMC && USB_XHCI_MTK &&
RTC_DRV_AT91SAM9 && LPC18XX_DMAMUX && VIDEO_OMAP4 && HWSPINLOCK_QCOM && ATMEL_ST
&& QCOM_GSBI && PHY_HI6220_USB)
selects MFD_SYSCON which has unmet direct dependencies (HAS_IOMEM)
Best regards,
Krzysztof
Krzysztof Kozlowski (15):
clocksource: atmel: Add missing MFD_SYSCON dependency on HAS_IOMEM
dmaengine: nxp: Add missing MFD_SYSCON dependency on HAS_IOMEM
hwspinlock: qcom: Add missing MFD_SYSCON dependency on HAS_IOMEM
irqchip: st: Add missing MFD_SYSCON dependency on HAS_IOMEM
phy: hi6220: Add missing MFD_SYSCON dependency on HAS_IOMEM
pinctrl: rockchip: Add missing MFD_SYSCON dependency on HAS_IOMEM
pinctrl: mvebu: Add missing MFD_SYSCON dependency on HAS_IOMEM
rtc: at91sam9: Add missing MFD_SYSCON dependency on HAS_IOMEM
media: platform: Add missing MFD_SYSCON dependency on HAS_IOMEM
net: ethernet: Add missing MFD_SYSCON dependency on HAS_IOMEM
power: reset: keystone: Add missing MFD_SYSCON dependency on HAS_IOMEM
soc: qcom: Add missing MFD_SYSCON dependency on HAS_IOMEM
staging: media: omap4iss: Add missing MFD_SYSCON dependency on
HAS_IOMEM
usb: xhci: mtk: Add missing MFD_SYSCON dependency on HAS_IOMEM
mfd: syscon: Fix build of missing ioremap on UM
drivers/clocksource/Kconfig | 1 +
drivers/dma/Kconfig | 1 +
drivers/hwspinlock/Kconfig | 1 +
drivers/irqchip/Kconfig | 1 +
drivers/media/platform/Kconfig | 1 +
drivers/media/platform/exynos4-is/Kconfig | 1 +
drivers/mfd/Kconfig | 1 +
drivers/net/ethernet/hisilicon/Kconfig | 1 +
drivers/net/ethernet/stmicro/stmmac/Kconfig | 6 ++++++
drivers/net/ethernet/ti/Kconfig | 1 +
drivers/phy/Kconfig | 1 +
drivers/pinctrl/Kconfig | 1 +
drivers/pinctrl/mvebu/Kconfig | 1 +
drivers/power/reset/Kconfig | 1 +
drivers/rtc/Kconfig | 1 +
drivers/soc/qcom/Kconfig | 1 +
drivers/staging/media/omap4iss/Kconfig | 1 +
drivers/usb/host/Kconfig | 1 +
18 files changed, 23 insertions(+)
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/media/platform/Kconfig | 1 +
drivers/media/platform/exynos4-is/Kconfig | 1 +
2 files changed, 2 insertions(+)
diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
index 201f5c296a95..e5931e434fa2 100644
--- a/drivers/media/platform/Kconfig
+++ b/drivers/media/platform/Kconfig
@@ -79,6 +79,7 @@ config VIDEO_OMAP3
depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3
depends on HAS_DMA && OF
depends on OMAP_IOMMU
+ depends on HAS_IOMEM # For MFD_SYSCON
select ARM_DMA_USE_IOMMU
select VIDEOBUF2_DMA_CONTIG
select MFD_SYSCON
diff --git a/drivers/media/platform/exynos4-is/Kconfig b/drivers/media/platform/exynos4-is/Kconfig
index 57d42c6172c5..c4317b99d257 100644
--- a/drivers/media/platform/exynos4-is/Kconfig
+++ b/drivers/media/platform/exynos4-is/Kconfig
@@ -17,6 +17,7 @@ config VIDEO_S5P_FIMC
tristate "S5P/EXYNOS4 FIMC/CAMIF camera interface driver"
depends on I2C
depends on HAS_DMA
+ depends on HAS_IOMEM # For MFD_SYSCON
select VIDEOBUF2_DMA_CONTIG
select V4L2_MEM2MEM_DEV
select MFD_SYSCON
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/power/reset/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
index 0a6408a39c66..0f34846ae80d 100644
--- a/drivers/power/reset/Kconfig
+++ b/drivers/power/reset/Kconfig
@@ -141,6 +141,7 @@ config POWER_RESET_XGENE
config POWER_RESET_KEYSTONE
bool "Keystone reset driver"
depends on ARCH_KEYSTONE
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
help
Reboot support for the KEYSTONE SoCs.
--
2.5.0
Since commit c89c0114955a ("mfd: syscon: Set regmap max_register in
of_syscon_register") the syscon uses ioremap so it fails on COMPILE_TEST
without HAS_IOMEM:
drivers/mfd/syscon.c: In function ‘of_syscon_register’:
drivers/mfd/syscon.c:67:9: error: implicit declaration of function ‘ioremap’ [-Werror=implicit-function-declaration]
base = ioremap(res.start, resource_size(&res));
^
drivers/mfd/syscon.c:67:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
base = ioremap(res.start, resource_size(&res));
^
drivers/mfd/syscon.c:109:2: error: implicit declaration of function ‘iounmap’ [-Werror=implicit-function-declaration]
iounmap(base);
When selecting MFD_SYSCON, depend on HAS_IOMEM to avoid unmet direct
dependencies.
Reported-by: kbuild test robot <[email protected]>
Fixes: c89c0114955a ("mfd: syscon: Set regmap max_register in of_syscon_register")
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/mfd/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index aa21dc55eb15..2e5b1e525a1d 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -1034,6 +1034,7 @@ config MFD_SUN6I_PRCM
config MFD_SYSCON
bool "System Controller Register R/W Based on Regmap"
+ depends on HAS_IOMEM
select REGMAP_MMIO
help
Select this option to enable accessing system control registers
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/soc/qcom/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig
index 461b387d03cc..24de48134c15 100644
--- a/drivers/soc/qcom/Kconfig
+++ b/drivers/soc/qcom/Kconfig
@@ -4,6 +4,7 @@
config QCOM_GSBI
tristate "QCOM General Serial Bus Interface"
depends on ARCH_QCOM
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
help
Say y here to enable GSBI support. The GSBI provides control
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/usb/host/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index 8c20ebbc049c..f759a778d606 100644
--- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig
@@ -45,6 +45,7 @@ config USB_XHCI_PLATFORM
config USB_XHCI_MTK
tristate "xHCI support for Mediatek MT65xx"
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
depends on ARCH_MEDIATEK || COMPILE_TEST
---help---
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/staging/media/omap4iss/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/staging/media/omap4iss/Kconfig b/drivers/staging/media/omap4iss/Kconfig
index 46183464ee79..7dea072172aa 100644
--- a/drivers/staging/media/omap4iss/Kconfig
+++ b/drivers/staging/media/omap4iss/Kconfig
@@ -2,6 +2,7 @@ config VIDEO_OMAP4
tristate "OMAP 4 Camera support"
depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API && I2C && ARCH_OMAP4
depends on HAS_DMA
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
select VIDEOBUF2_DMA_CONTIG
---help---
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/net/ethernet/hisilicon/Kconfig | 1 +
drivers/net/ethernet/stmicro/stmmac/Kconfig | 6 ++++++
drivers/net/ethernet/ti/Kconfig | 1 +
3 files changed, 8 insertions(+)
diff --git a/drivers/net/ethernet/hisilicon/Kconfig b/drivers/net/ethernet/hisilicon/Kconfig
index 74beb1867230..6a9c91781bf9 100644
--- a/drivers/net/ethernet/hisilicon/Kconfig
+++ b/drivers/net/ethernet/hisilicon/Kconfig
@@ -26,6 +26,7 @@ config HIX5HD2_GMAC
config HIP04_ETH
tristate "HISILICON P04 Ethernet support"
select MARVELL_PHY
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
select HNS_MDIO
---help---
diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig
index cec147d1d34f..d6902bf6e90f 100644
--- a/drivers/net/ethernet/stmicro/stmmac/Kconfig
+++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig
@@ -16,6 +16,7 @@ if STMMAC_ETH
config STMMAC_PLATFORM
tristate "STMMAC Platform bus support"
depends on STMMAC_ETH
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
default y
---help---
@@ -41,6 +42,7 @@ config DWMAC_IPQ806X
tristate "QCA IPQ806x DWMAC support"
default ARCH_QCOM
depends on OF
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
help
Support for QCA IPQ806X DWMAC Ethernet.
@@ -54,6 +56,7 @@ config DWMAC_LPC18XX
tristate "NXP LPC18xx/43xx DWMAC support"
default ARCH_LPC18XX
depends on OF
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
---help---
Support for NXP LPC18xx/43xx DWMAC Ethernet.
@@ -73,6 +76,7 @@ config DWMAC_ROCKCHIP
tristate "Rockchip dwmac support"
default ARCH_ROCKCHIP
depends on OF
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
help
Support for Ethernet controller on Rockchip RK3288 SoC.
@@ -84,6 +88,7 @@ config DWMAC_SOCFPGA
tristate "SOCFPGA dwmac support"
default ARCH_SOCFPGA
depends on OF
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
help
Support for ethernet controller on Altera SOCFPGA
@@ -96,6 +101,7 @@ config DWMAC_STI
tristate "STi GMAC support"
default ARCH_STI
depends on OF
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
---help---
Support for ethernet controller on STi SOCs.
diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig
index e7f0b7d95b65..ec56cebe929d 100644
--- a/drivers/net/ethernet/ti/Kconfig
+++ b/drivers/net/ethernet/ti/Kconfig
@@ -62,6 +62,7 @@ config TI_CPSW_ALE
config TI_CPSW
tristate "TI CPSW Switch Support"
depends on ARCH_DAVINCI || ARCH_OMAP2PLUS
+ depends on HAS_IOMEM # For MFD_SYSCON
select TI_DAVINCI_CPDMA
select TI_DAVINCI_MDIO
select TI_CPSW_PHY_SEL
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/pinctrl/mvebu/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/pinctrl/mvebu/Kconfig b/drivers/pinctrl/mvebu/Kconfig
index 170602407c0d..13685923729c 100644
--- a/drivers/pinctrl/mvebu/Kconfig
+++ b/drivers/pinctrl/mvebu/Kconfig
@@ -7,6 +7,7 @@ config PINCTRL_MVEBU
config PINCTRL_DOVE
bool
+ depends on HAS_IOMEM # For MFD_SYSCON
select PINCTRL_MVEBU
select MFD_SYSCON
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/rtc/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index 0da40e2e4280..5c530b6b125d 100644
--- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig
@@ -1302,6 +1302,7 @@ config RTC_DRV_AT91RM9200
config RTC_DRV_AT91SAM9
tristate "AT91SAM9 RTT as RTC"
depends on ARCH_AT91 || COMPILE_TEST
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
help
Some AT91SAM9 SoCs provide an RTT (Real Time Timer) block which
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/pinctrl/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
index fb8200b8e8ec..dc7ab58d4d74 100644
--- a/drivers/pinctrl/Kconfig
+++ b/drivers/pinctrl/Kconfig
@@ -131,6 +131,7 @@ config PINCTRL_MESON
config PINCTRL_ROCKCHIP
bool
+ depends on HAS_IOMEM # For MFD_SYSCON
select PINMUX
select GENERIC_PINCONF
select GENERIC_IRQ_CHIP
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/irqchip/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/irqchip/Kconfig b/drivers/irqchip/Kconfig
index 00bbec6eca0b..10775b099daa 100644
--- a/drivers/irqchip/Kconfig
+++ b/drivers/irqchip/Kconfig
@@ -157,6 +157,7 @@ config RENESAS_IRQC
config ST_IRQCHIP
bool
select REGMAP
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
help
Enables SysCfg Controlled IRQs on STi based platforms.
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/phy/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
index 0124d17bd9fe..cfdb3551a675 100644
--- a/drivers/phy/Kconfig
+++ b/drivers/phy/Kconfig
@@ -225,6 +225,7 @@ config PHY_MT65XX_USB3
config PHY_HI6220_USB
tristate "hi6220 USB PHY support"
depends on (ARCH_HISI && ARM64) || COMPILE_TEST
+ depends on HAS_IOMEM # For MFD_SYSCON
select GENERIC_PHY
select MFD_SYSCON
help
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/hwspinlock/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/hwspinlock/Kconfig b/drivers/hwspinlock/Kconfig
index 73a401662853..5ab2d51dc147 100644
--- a/drivers/hwspinlock/Kconfig
+++ b/drivers/hwspinlock/Kconfig
@@ -21,6 +21,7 @@ config HWSPINLOCK_OMAP
config HWSPINLOCK_QCOM
tristate "Qualcomm Hardware Spinlock device"
depends on ARCH_QCOM
+ depends on HAS_IOMEM # For MFD_SYSCON
select HWSPINLOCK
select MFD_SYSCON
help
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/dma/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index c77f214c9466..7fbf96bff280 100644
--- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig
@@ -290,6 +290,7 @@ config LPC18XX_DMAMUX
bool "NXP LPC18xx/43xx DMA MUX for PL080"
depends on ARCH_LPC18XX || COMPILE_TEST
depends on OF && AMBA_PL08X
+ depends on HAS_IOMEM # For MFD_SYSCON
select MFD_SYSCON
help
Enable support for DMA on NXP LPC18xx/43xx platforms
--
2.5.0
The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
direct dependencies.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/clocksource/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index c346be650892..5927944b46e0 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -239,6 +239,7 @@ config ATMEL_PIT
config ATMEL_ST
bool
+ depends on HAS_IOMEM # For MFD_SYSCON
select CLKSRC_OF
select MFD_SYSCON
--
2.5.0
On Thursday 03 March 2016 17:03:41 Krzysztof Kozlowski wrote:
> Since commit c89c0114955a ("mfd: syscon: Set regmap max_register in
> of_syscon_register") the syscon uses ioremap so it fails on COMPILE_TEST
> without HAS_IOMEM:
>
> drivers/mfd/syscon.c: In function ‘of_syscon_register’:
> drivers/mfd/syscon.c:67:9: error: implicit declaration of function ‘ioremap’ [-Werror=implicit-function-declaration]
> base = ioremap(res.start, resource_size(&res));
> ^
> drivers/mfd/syscon.c:67:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
> base = ioremap(res.start, resource_size(&res));
> ^
> drivers/mfd/syscon.c:109:2: error: implicit declaration of function ‘iounmap’ [-Werror=implicit-function-declaration]
> iounmap(base);
>
> When selecting MFD_SYSCON, depend on HAS_IOMEM to avoid unmet direct
> dependencies.
>
> Reported-by: kbuild test robot <[email protected]>
> Fixes: c89c0114955a ("mfd: syscon: Set regmap max_register in of_syscon_register")
> Signed-off-by: Krzysztof Kozlowski <[email protected]>
> ---
Thanks for looking into this, the patches all look right to me, but
I fear we are forever playing catch-up here, as the number of syscon users
is only growing, and it's not obvious to the average driver developer
why they have to select this symbol.
Interestingly, when I try to build an allmodconfig kernel for UML,
it seems to reject any driver calling ioremap/iounmap but not
the wrapper functions around that (of_iomap, devm_ioremap,
devm_ioremap_resource, ...) or the actual accessors that make no
sense without ioremap (readl, writel, inb, outb, iowrite32, ...).
I've played with this a bit, and arrived at the patch below, is this
something we want as well?
Arnd
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index aa21dc55eb15..2e5b1e525a1d 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -1034,6 +1034,7 @@ config MFD_SUN6I_PRCM
>
> config MFD_SYSCON
> bool "System Controller Register R/W Based on Regmap"
> + depends on HAS_IOMEM
> select REGMAP_MMIO
> help
> Select this option to enable accessing system control registers
>
arch/um/include/asm/io.h | 1 +
drivers/char/Kconfig | 3 +++
drivers/char/mem.c | 16 ++++++++++++++++
drivers/clocksource/Kconfig | 3 +++
drivers/fmc/Kconfig | 1 +
drivers/fpga/Kconfig | 1 +
drivers/hwtracing/intel_th/Kconfig | 1 +
drivers/mfd/Kconfig | 1 +
drivers/misc/altera-stapl/Kconfig | 2 +-
drivers/mtd/chips/Kconfig | 4 ++++
drivers/mtd/lpddr/Kconfig | 1 +
drivers/mtd/maps/Kconfig | 3 ++-
drivers/mtd/nand/Kconfig | 2 +-
drivers/mtd/spi-nor/Kconfig | 1 +
drivers/net/can/Kconfig | 1 +
drivers/net/hamradio/Kconfig | 9 ++++++---
drivers/nvmem/Kconfig | 1 +
drivers/phy/Kconfig | 9 +++++++--
drivers/power/reset/Kconfig | 4 +++-
drivers/staging/comedi/Kconfig | 6 +++++-
drivers/thermal/Kconfig | 11 +++++++++--
include/linux/irq.h | 2 ++
include/linux/mtd/cfi.h | 2 ++
include/linux/mtd/map.h | 2 ++
kernel/resource.c | 2 ++
lib/Kconfig | 7 ++++++-
mm/bootmem.c | 4 ++--
27 files changed, 85 insertions(+), 15 deletions(-)
diff --git a/arch/um/include/asm/io.h b/arch/um/include/asm/io.h
new file mode 100644
index 0000000..618ff13
--- /dev/null
+++ b/arch/um/include/asm/io.h
@@ -0,0 +1 @@
+/* no IOPORT or IOMEM suport */
diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
index a043107..f6dc17a 100644
--- a/drivers/char/Kconfig
+++ b/drivers/char/Kconfig
@@ -8,6 +8,7 @@ source "drivers/tty/Kconfig"
config DEVMEM
bool "/dev/mem virtual device support"
+ depends on HAS_IOMEM
default y
help
Say Y here if you want to support the /dev/mem device.
@@ -17,6 +18,7 @@ config DEVMEM
config DEVKMEM
bool "/dev/kmem virtual device support"
+ depends on HAS_IOMEM
default y
help
Say Y here if you want to support the /dev/kmem device. The
@@ -94,6 +96,7 @@ config BFIN_OTP_WRITE_ENABLE
config PRINTER
tristate "Parallel printer support"
depends on PARPORT
+ depends on HAS_IOPORT
---help---
If you intend to attach a printer to the parallel port of your Linux
box (as opposed to using a serial printer; if the connector at the
diff --git a/drivers/char/mem.c b/drivers/char/mem.c
index 4f6f94c..eedd129 100644
--- a/drivers/char/mem.c
+++ b/drivers/char/mem.c
@@ -91,6 +91,7 @@ void __weak unxlate_dev_mem_ptr(phys_addr_t phys, void *addr)
}
#endif
+#ifdef CONFIG_DEVMEM
/*
* This funcion reads the *physical* memory. The f_pos points directly to the
* memory location.
@@ -219,6 +220,7 @@ static ssize_t write_mem(struct file *file, const char __user *buf,
*ppos += written;
return written;
}
+#endif
int __weak phys_mem_access_prot_allowed(struct file *file,
unsigned long pfn, unsigned long size, pgprot_t *vma_prot)
@@ -312,6 +314,7 @@ static inline int private_mapping_ok(struct vm_area_struct *vma)
}
#endif
+#ifdef CONFIG_DEVMEM
static const struct vm_operations_struct mmap_mem_ops = {
#ifdef CONFIG_HAVE_IOREMAP_PROT
.access = generic_access_phys
@@ -351,7 +354,9 @@ static int mmap_mem(struct file *file, struct vm_area_struct *vma)
}
return 0;
}
+#endif
+#ifdef CONFIG_DEVKMEM
static int mmap_kmem(struct file *file, struct vm_area_struct *vma)
{
unsigned long pfn;
@@ -552,7 +557,9 @@ static ssize_t write_kmem(struct file *file, const char __user *buf,
*ppos = p;
return virtr + wrote ? : err;
}
+#endif
+#ifdef CONFIG_DEVPORT
static ssize_t read_port(struct file *file, char __user *buf,
size_t count, loff_t *ppos)
{
@@ -594,6 +601,7 @@ static ssize_t write_port(struct file *file, const char __user *buf,
*ppos = i;
return tmp-buf;
}
+#endif
static ssize_t read_null(struct file *file, char __user *buf,
size_t count, loff_t *ppos)
@@ -710,10 +718,12 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig)
return ret;
}
+#ifdef CONFIG_DEVPORT
static int open_port(struct inode *inode, struct file *filp)
{
return capable(CAP_SYS_RAWIO) ? 0 : -EPERM;
}
+#endif
#define zero_lseek null_lseek
#define full_lseek null_lseek
@@ -722,6 +732,7 @@ static int open_port(struct inode *inode, struct file *filp)
#define open_mem open_port
#define open_kmem open_mem
+#ifdef CONFIG_DEVMEM
static const struct file_operations __maybe_unused mem_fops = {
.llseek = memory_lseek,
.read = read_mem,
@@ -733,7 +744,9 @@ static const struct file_operations __maybe_unused mem_fops = {
.mmap_capabilities = memory_mmap_capabilities,
#endif
};
+#endif
+#ifdef CONFIG_DEVKMEM
static const struct file_operations __maybe_unused kmem_fops = {
.llseek = memory_lseek,
.read = read_kmem,
@@ -745,6 +758,7 @@ static const struct file_operations __maybe_unused kmem_fops = {
.mmap_capabilities = memory_mmap_capabilities,
#endif
};
+#endif
static const struct file_operations null_fops = {
.llseek = null_lseek,
@@ -755,12 +769,14 @@ static const struct file_operations null_fops = {
.splice_write = splice_write_null,
};
+#ifdef CONFIG_DEVPORT
static const struct file_operations __maybe_unused port_fops = {
.llseek = memory_lseek,
.read = read_port,
.write = write_port,
.open = open_port,
};
+#endif
static const struct file_operations zero_fops = {
.llseek = zero_lseek,
diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
index 33db740..6b58974 100644
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
@@ -38,6 +38,7 @@ config DIGICOLOR_TIMER
config DW_APB_TIMER
bool "DW APB timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
+ depends on HAS_IOMEM
help
Enables the support for the dw_apb timer.
@@ -64,6 +65,7 @@ config ARMADA_370_XP_TIMER
config MESON6_TIMER
bool "Meson6 timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
+ depends on HAS_IOMEM
select CLKSRC_MMIO
help
Enables the support for the Meson6 timer driver.
@@ -114,6 +116,7 @@ config CADENCE_TTC_TIMER
config ASM9260_TIMER
bool "ASM9260 timer driver" if COMPILE_TEST
depends on GENERIC_CLOCKEVENTS
+ depends on HAS_IOMEM
select CLKSRC_MMIO
select CLKSRC_OF
help
diff --git a/drivers/fmc/Kconfig b/drivers/fmc/Kconfig
index 3a75f42..adf1391 100644
--- a/drivers/fmc/Kconfig
+++ b/drivers/fmc/Kconfig
@@ -4,6 +4,7 @@
menuconfig FMC
tristate "FMC support"
+ depends on HAS_IOMEM
help
FMC (FPGA Mezzanine Carrier) is a mechanical and electrical
diff --git a/drivers/fpga/Kconfig b/drivers/fpga/Kconfig
index c9b9fdf..36c54af 100644
--- a/drivers/fpga/Kconfig
+++ b/drivers/fpga/Kconfig
@@ -21,6 +21,7 @@ config FPGA_MGR_SOCFPGA
config FPGA_MGR_ZYNQ_FPGA
tristate "Xilinx Zynq FPGA"
+ depends on HAS_IOMEM
help
FPGA manager driver support for Xilinx Zynq FPGAs.
diff --git a/drivers/hwtracing/intel_th/Kconfig b/drivers/hwtracing/intel_th/Kconfig
index b7a9073..467dae9 100644
--- a/drivers/hwtracing/intel_th/Kconfig
+++ b/drivers/hwtracing/intel_th/Kconfig
@@ -1,5 +1,6 @@
config INTEL_TH
tristate "Intel(R) Trace Hub controller"
+ depends on HAS_IOMEM
help
Intel(R) Trace Hub (TH) is a set of hardware blocks (subdevices) that
produce, switch and output trace data from multiple hardware and
diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
index 9ca66de..6ff6246 100644
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
@@ -999,6 +999,7 @@ config MFD_SUN6I_PRCM
config MFD_SYSCON
bool "System Controller Register R/W Based on Regmap"
+ depends on HAS_IOMEM
select REGMAP_MMIO
help
Select this option to enable accessing system control registers
diff --git a/drivers/misc/altera-stapl/Kconfig b/drivers/misc/altera-stapl/Kconfig
index 7f01d8e..c7e4c77 100644
--- a/drivers/misc/altera-stapl/Kconfig
+++ b/drivers/misc/altera-stapl/Kconfig
@@ -2,7 +2,7 @@ comment "Altera FPGA firmware download module"
config ALTERA_STAPL
tristate "Altera FPGA firmware download module"
- depends on I2C
+ depends on I2C && HAS_IOPORT
default n
help
An Altera FPGA module. Say Y when you want to support this tool.
diff --git a/drivers/mtd/chips/Kconfig b/drivers/mtd/chips/Kconfig
index 3b3dabc..189ddce 100644
--- a/drivers/mtd/chips/Kconfig
+++ b/drivers/mtd/chips/Kconfig
@@ -3,6 +3,7 @@ menu "RAM/ROM/Flash chip drivers"
config MTD_CFI
tristate "Detect flash chips by Common Flash Interface (CFI) probe"
+ depends on HAS_IOMEM
select MTD_GEN_PROBE
select MTD_CFI_UTIL
help
@@ -15,6 +16,7 @@ config MTD_CFI
config MTD_JEDECPROBE
tristate "Detect non-CFI AMD/JEDEC-compatible flash chips"
+ depends on HAS_IOMEM
select MTD_GEN_PROBE
select MTD_CFI_UTIL
help
@@ -207,12 +209,14 @@ config MTD_CFI_UTIL
config MTD_RAM
tristate "Support for RAM chips in bus mapping"
+ depends on HAS_IOMEM
help
This option enables basic support for RAM chips accessed through
a bus mapping driver.
config MTD_ROM
tristate "Support for ROM chips in bus mapping"
+ depends on HAS_IOMEM
help
This option enables basic support for ROM chips accessed through
a bus mapping driver.
diff --git a/drivers/mtd/lpddr/Kconfig b/drivers/mtd/lpddr/Kconfig
index 3a19cbe..07dd95a 100644
--- a/drivers/mtd/lpddr/Kconfig
+++ b/drivers/mtd/lpddr/Kconfig
@@ -4,6 +4,7 @@ menu "LPDDR & LPDDR2 PCM memory drivers"
config MTD_LPDDR
tristate "Support for LPDDR flash chips"
select MTD_QINFO_PROBE
+ depends on HAS_IOMEM
help
This option enables support of LPDDR (Low power double data rate)
flash chips. Synonymous with Mobile-DDR. It is a new standard for
diff --git a/drivers/mtd/maps/Kconfig b/drivers/mtd/maps/Kconfig
index 7c95a65..86a9604 100644
--- a/drivers/mtd/maps/Kconfig
+++ b/drivers/mtd/maps/Kconfig
@@ -3,7 +3,8 @@ menu "Mapping drivers for chip access"
depends on HAS_IOMEM
config MTD_COMPLEX_MAPPINGS
- bool "Support non-linear mappings of flash chips"
+ bool "Support non-linear mappings of flash chips" if HAS_IOMEM
+ default !HAS_IOMEM
help
This causes the chip drivers to allow for complicated
paged mappings of flash chips.
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
index 20f01b3..6ed3de7 100644
--- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig
@@ -12,7 +12,7 @@ config MTD_NAND_ECC_SMC
menuconfig MTD_NAND
tristate "NAND Device Support"
- depends on MTD
+ depends on MTD && HAS_IOMEM
select MTD_NAND_IDS
select MTD_NAND_ECC
help
diff --git a/drivers/mtd/spi-nor/Kconfig b/drivers/mtd/spi-nor/Kconfig
index 0dc9275..83befab 100644
--- a/drivers/mtd/spi-nor/Kconfig
+++ b/drivers/mtd/spi-nor/Kconfig
@@ -9,6 +9,7 @@ if MTD_SPI_NOR
config MTD_MT81xx_NOR
tristate "Mediatek MT81xx SPI NOR flash controller"
+ depends on HAS_IOMEM
help
This enables access to SPI NOR flash, using MT81xx SPI NOR flash
controller. This controller does not support generic SPI BUS, it only
diff --git a/drivers/net/can/Kconfig b/drivers/net/can/Kconfig
index 6d04183..b1e268b 100644
--- a/drivers/net/can/Kconfig
+++ b/drivers/net/can/Kconfig
@@ -132,6 +132,7 @@ config CAN_RCAR
config CAN_SUN4I
tristate "Allwinner A10 CAN controller"
depends on MACH_SUN4I || MACH_SUN7I || COMPILE_TEST
+ depends on HAS_IOMEM
---help---
Say Y here if you want to use CAN controller found on Allwinner
A10/A20 SoCs.
diff --git a/drivers/net/hamradio/Kconfig b/drivers/net/hamradio/Kconfig
index bf5e596..507f7a5 100644
--- a/drivers/net/hamradio/Kconfig
+++ b/drivers/net/hamradio/Kconfig
@@ -113,7 +113,8 @@ config SCC_TRXECHO
config BAYCOM_SER_FDX
tristate "BAYCOM ser12 fullduplex driver for AX.25"
- depends on AX25 && !S390
+ depends on AX25
+ depends on HAS_IOPORT
select CRC_CCITT
---help---
This is one of two drivers for Baycom style simple amateur radio
@@ -133,7 +134,8 @@ config BAYCOM_SER_FDX
config BAYCOM_SER_HDX
tristate "BAYCOM ser12 halfduplex driver for AX.25"
- depends on AX25 && !S390
+ depends on AX25
+ depends on HAS_IOPORT
select CRC_CCITT
---help---
This is one of two drivers for Baycom style simple amateur radio
@@ -181,7 +183,8 @@ config BAYCOM_EPP
config YAM
tristate "YAM driver for AX.25"
- depends on AX25 && !S390
+ depends on AX25
+ depends on HAS_IOPORT
help
The YAM is a modem for packet radio which connects to the serial
port and includes some of the functions of a Terminal Node
diff --git a/drivers/nvmem/Kconfig b/drivers/nvmem/Kconfig
index bc4ea58..6ef3d0a 100644
--- a/drivers/nvmem/Kconfig
+++ b/drivers/nvmem/Kconfig
@@ -1,6 +1,7 @@
menuconfig NVMEM
tristate "NVMEM Support"
select REGMAP
+ depends on HAS_IOMEM
help
Support for NVMEM(Non Volatile Memory) devices like EEPROM, EFUSES...
diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
index e7e117d..d2216df 100644
--- a/drivers/phy/Kconfig
+++ b/drivers/phy/Kconfig
@@ -30,9 +30,10 @@ config PHY_BERLIN_SATA
Enable this to support the SATA PHY on Marvell Berlin SoCs.
config ARMADA375_USBCLUSTER_PHY
- def_bool y
- depends on MACH_ARMADA_375 || COMPILE_TEST
+ bool "ARMADA 375 USB cluster PHY driver" if COMPILE_TEST && !MACH_ARMADA_375
+ def_bool MACH_ARMADA_375
depends on OF
+ depends on HAS_IOMEM
select GENERIC_PHY
config PHY_DM816X_USB
@@ -128,6 +129,7 @@ config PHY_RCAR_GEN3_USB2
config OMAP_CONTROL_PHY
tristate "OMAP CONTROL PHY Driver"
depends on ARCH_OMAP2PLUS || COMPILE_TEST
+ depends on HAS_IOMEM
help
Enable this to add support for the PHY part present in the control
module. This driver has API to power on the USB2 PHY and to write to
@@ -224,6 +226,8 @@ config PHY_MT65XX_USB3
config PHY_HI6220_USB
tristate "hi6220 USB PHY support"
+ depends on ARM64 || COMPILE_TEST
+ depends on HAS_IOMEM
select GENERIC_PHY
select MFD_SYSCON
help
@@ -401,6 +405,7 @@ config PHY_CYGNUS_PCIE
tristate "Broadcom Cygnus PCIe PHY driver"
depends on OF && (ARCH_BCM_CYGNUS || COMPILE_TEST)
select GENERIC_PHY
+ depends on HAS_IOMEM
default ARCH_BCM_CYGNUS
help
Enable this to support the Broadcom Cygnus PCIe PHY.
diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
index 1131cf7..bb5bd1b 100644
--- a/drivers/power/reset/Kconfig
+++ b/drivers/power/reset/Kconfig
@@ -41,7 +41,7 @@ config POWER_RESET_AXXIA
config POWER_RESET_BRCMSTB
bool "Broadcom STB reset driver"
depends on ARM || MIPS || COMPILE_TEST
- depends on MFD_SYSCON
+ depends on MFD_SYSCON && HAS_IOMEM
default ARCH_BRCMSTB
help
This driver provides restart support for Broadcom STB boards.
@@ -148,6 +148,7 @@ config POWER_RESET_KEYSTONE
config POWER_RESET_SYSCON
bool "Generic SYSCON regmap reset driver"
depends on OF
+ depends on HAS_IOMEM
select MFD_SYSCON
help
Reboot support for generic SYSCON mapped register reset.
@@ -155,6 +156,7 @@ config POWER_RESET_SYSCON
config POWER_RESET_SYSCON_POWEROFF
bool "Generic SYSCON regmap poweroff driver"
depends on OF
+ depends on HAS_IOMEM
select MFD_SYSCON
help
Poweroff support for generic SYSCON mapped register poweroff.
diff --git a/drivers/staging/comedi/Kconfig b/drivers/staging/comedi/Kconfig
index e7255f8..e1ba4aa 100644
--- a/drivers/staging/comedi/Kconfig
+++ b/drivers/staging/comedi/Kconfig
@@ -67,6 +67,7 @@ config COMEDI_TEST
config COMEDI_PARPORT
tristate "Parallel port support"
+ depends on HAS_IOPORT
---help---
Enable support for the standard parallel port.
A cheap and easy way to get a few more digital I/O lines. Steal
@@ -87,6 +88,7 @@ config COMEDI_SERIAL2002
config COMEDI_SSV_DNP
tristate "SSV Embedded Systems DIL/Net-PC support"
depends on X86_32 || COMPILE_TEST
+ depends on HAS_IOPORT
---help---
Enable support for SSV Embedded Systems DIL/Net-PC
@@ -97,6 +99,7 @@ endif # COMEDI_MISC_DRIVERS
menuconfig COMEDI_ISA_DRIVERS
bool "Comedi ISA and PC/104 drivers"
+ depends on HAS_IOPORT
---help---
Enable comedi ISA and PC/104 drivers to be built
@@ -1110,7 +1113,7 @@ endif # COMEDI_PCI_DRIVERS
menuconfig COMEDI_PCMCIA_DRIVERS
tristate "Comedi PCMCIA drivers"
- depends on PCMCIA
+ depends on PCMCIA && HAS_IOPORT
---help---
Enable support for comedi PCMCIA drivers.
@@ -1262,6 +1265,7 @@ config COMEDI_8255
config COMEDI_8255_SA
tristate "Standalone 8255 support"
select COMEDI_8255
+ depends on HAS_IOPORT
---help---
Enable support for 8255 digital I/O as a standalone driver.
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig
index 8cc4ac6..31ae027 100644
--- a/drivers/thermal/Kconfig
+++ b/drivers/thermal/Kconfig
@@ -178,6 +178,7 @@ config THERMAL_EMULATION
config HISI_THERMAL
tristate "Hisilicon thermal driver"
depends on (ARCH_HISI && CPU_THERMAL && OF) || COMPILE_TEST
+ depends on HAS_IOMEM
help
Enable this to plug hisilicon's thermal sensor driver into the Linux
thermal framework. cpufreq is used as the cooling device to throttle
@@ -198,6 +199,7 @@ config SPEAR_THERMAL
bool "SPEAr thermal sensor driver"
depends on PLAT_SPEAR || COMPILE_TEST
depends on OF
+ depends on HAS_IOMEM
help
Enable this to plug the SPEAr thermal sensor driver into the Linux
thermal framework.
@@ -206,6 +208,7 @@ config ROCKCHIP_THERMAL
tristate "Rockchip thermal driver"
depends on ARCH_ROCKCHIP || COMPILE_TEST
depends on RESET_CONTROLLER
+ depends on HAS_IOMEM
help
Rockchip thermal driver provides support for Temperature sensor
ADC (TS-ADC) found on Rockchip SoCs. It supports one critical
@@ -216,6 +219,7 @@ config RCAR_THERMAL
tristate "Renesas R-Car thermal driver"
depends on ARCH_SHMOBILE || COMPILE_TEST
depends on HAS_IOMEM
+ depends on HAS_IOMEM
help
Enable this to plug the R-Car thermal sensor driver into the Linux
thermal framework.
@@ -223,6 +227,7 @@ config RCAR_THERMAL
config KIRKWOOD_THERMAL
tristate "Temperature sensor on Marvell Kirkwood SoCs"
depends on MACH_KIRKWOOD || COMPILE_TEST
+ depends on HAS_IOMEM
depends on OF
help
Support for the Kirkwood thermal sensor driver into the Linux thermal
@@ -231,6 +236,7 @@ config KIRKWOOD_THERMAL
config DOVE_THERMAL
tristate "Temperature sensor on Marvell Dove SoCs"
depends on ARCH_DOVE || MACH_DOVE || COMPILE_TEST
+ depends on HAS_IOMEM
depends on OF
help
Support for the Dove thermal sensor driver in the Linux thermal
@@ -249,6 +255,7 @@ config DB8500_THERMAL
config ARMADA_THERMAL
tristate "Armada 370/XP thermal management"
depends on ARCH_MVEBU || COMPILE_TEST
+ depends on HAS_IOMEM
depends on OF
help
Enable this option if you want to have support for thermal management
@@ -366,12 +373,12 @@ config INTEL_PCH_THERMAL
programmable trip points and other information.
menu "Texas Instruments thermal drivers"
-depends on ARCH_HAS_BANDGAP || COMPILE_TEST
+depends on ARCH_HAS_BANDGAP || (COMPILE_TEST && HAS_IOMEM)
source "drivers/thermal/ti-soc-thermal/Kconfig"
endmenu
menu "Samsung thermal drivers"
-depends on ARCH_EXYNOS || COMPILE_TEST
+depends on ARCH_EXYNOS || (COMPILE_TEST && HAS_IOMEM)
source "drivers/thermal/samsung/Kconfig"
endmenu
diff --git a/include/linux/irq.h b/include/linux/irq.h
index 3c1c967..a5d0f12 100644
--- a/include/linux/irq.h
+++ b/include/linux/irq.h
@@ -916,6 +916,7 @@ static inline void irq_gc_lock(struct irq_chip_generic *gc) { }
static inline void irq_gc_unlock(struct irq_chip_generic *gc) { }
#endif
+#ifdef CONFIG_HAS_IOMEM
static inline void irq_reg_writel(struct irq_chip_generic *gc,
u32 val, int reg_offset)
{
@@ -933,5 +934,6 @@ static inline u32 irq_reg_readl(struct irq_chip_generic *gc,
else
return readl(gc->reg_base + reg_offset);
}
+#endif
#endif /* _LINUX_IRQ_H */
diff --git a/include/linux/mtd/cfi.h b/include/linux/mtd/cfi.h
index 9b57a9b..d5db153 100644
--- a/include/linux/mtd/cfi.h
+++ b/include/linux/mtd/cfi.h
@@ -310,6 +310,7 @@ uint32_t cfi_send_gen_cmd(u_char cmd, uint32_t cmd_addr, uint32_t base,
struct map_info *map, struct cfi_private *cfi,
int type, map_word *prev_val);
+#ifdef CONFIG_HAS_IOMEM
static inline uint8_t cfi_read_query(struct map_info *map, uint32_t addr)
{
map_word val = map_read(map, addr);
@@ -341,6 +342,7 @@ static inline uint16_t cfi_read_query16(struct map_info *map, uint32_t addr)
return cfi32_to_cpu(map, val.x[0]);
}
}
+#endif
void cfi_udelay(int us);
diff --git a/include/linux/mtd/map.h b/include/linux/mtd/map.h
index 58f3ba7..07c0d497 100644
--- a/include/linux/mtd/map.h
+++ b/include/linux/mtd/map.h
@@ -410,6 +410,7 @@ static inline map_word map_word_ff(struct map_info *map)
return r;
}
+#ifdef CONFIG_HAS_IOMEM
static inline map_word inline_map_read(struct map_info *map, unsigned long ofs)
{
map_word r;
@@ -463,6 +464,7 @@ static inline void inline_map_copy_to(struct map_info *map, unsigned long to, co
{
memcpy_toio(map->virt + to, from, len);
}
+#endif
#ifdef CONFIG_MTD_COMPLEX_MAPPINGS
#define map_read(map, ofs) (map)->read(map, ofs)
diff --git a/kernel/resource.c b/kernel/resource.c
index 09c0597..efd5c9e 100644
--- a/kernel/resource.c
+++ b/kernel/resource.c
@@ -29,7 +29,9 @@
struct resource ioport_resource = {
.name = "PCI IO",
.start = 0,
+#ifdef CONFIG_HAS_IOPORT
.end = IO_SPACE_LIMIT,
+#endif
.flags = IORESOURCE_IO,
};
EXPORT_SYMBOL(ioport_resource);
diff --git a/lib/Kconfig b/lib/Kconfig
index 133ebc0..38ff36d 100644
--- a/lib/Kconfig
+++ b/lib/Kconfig
@@ -382,9 +382,14 @@ config HAS_IOMEM
select GENERIC_IO
default y
+config HAS_IOPORT
+ bool
+ depends on HAS_IOMEM && !NO_IOPORT
+ default y
+
config HAS_IOPORT_MAP
bool
- depends on HAS_IOMEM && !NO_IOPORT_MAP
+ depends on HAS_IOMEM && HAS_IOPORT && !NO_IOPORT_MAP
default y
config HAS_DMA
diff --git a/mm/bootmem.c b/mm/bootmem.c
index 91e32bc..3471237 100644
--- a/mm/bootmem.c
+++ b/mm/bootmem.c
@@ -99,7 +99,7 @@ static unsigned long __init init_bootmem_core(bootmem_data_t *bdata,
unsigned long mapsize;
mminit_validate_memmodel_limits(&start, &end);
- bdata->node_bootmem_map = phys_to_virt(PFN_PHYS(mapstart));
+ bdata->node_bootmem_map = __va(PFN_PHYS(mapstart));
bdata->node_min_pfn = start;
bdata->node_low_pfn = end;
link_bootmem(bdata);
@@ -585,7 +585,7 @@ find_block:
PFN_UP(end_off), BOOTMEM_EXCLUSIVE))
BUG();
- region = phys_to_virt(PFN_PHYS(bdata->node_min_pfn) +
+ region = __va(PFN_PHYS(bdata->node_min_pfn) +
start_off);
memset(region, 0, size);
/*
On Thursday 03 March 2016 17:03:28 Krzysztof Kozlowski wrote:
> index c77f214c9466..7fbf96bff280 100644
> --- a/drivers/dma/Kconfig
> +++ b/drivers/dma/Kconfig
> @@ -290,6 +290,7 @@ config LPC18XX_DMAMUX
> bool "NXP LPC18xx/43xx DMA MUX for PL080"
> depends on ARCH_LPC18XX || COMPILE_TEST
> depends on OF && AMBA_PL08X
> + depends on HAS_IOMEM # For MFD_SYSCON
> select MFD_SYSCON
> help
>
AMBA_PL08X implies HAS_IOMEM, so this is not needed explicitly
Arnd
On Thursday 03 March 2016 17:03:29 Krzysztof Kozlowski wrote:
> diff --git a/drivers/hwspinlock/Kconfig b/drivers/hwspinlock/Kconfig
> index 73a401662853..5ab2d51dc147 100644
> --- a/drivers/hwspinlock/Kconfig
> +++ b/drivers/hwspinlock/Kconfig
> @@ -21,6 +21,7 @@ config HWSPINLOCK_OMAP
> config HWSPINLOCK_QCOM
> tristate "Qualcomm Hardware Spinlock device"
> depends on ARCH_QCOM
> + depends on HAS_IOMEM # For MFD_SYSCON
> select HWSPINLOCK
> select MFD_SYSCON
> help
>
This is only needed if we add "|| COMPILE_TEST", right now the driver
is limited to ARCH_QCOM.
Arnd
On Thursday 03 March 2016 17:03:30 Krzysztof Kozlowski wrote:
> config ST_IRQCHIP
> bool
> select REGMAP
> + depends on HAS_IOMEM # For MFD_SYSCON
> select MFD_SYSCON
> help
> Enables SysCfg Controlled IRQs on STi based platforms.
>
Not user visible.
Arnd
On Thursday 03 March 2016 17:03:31 Krzysztof Kozlowski wrote:
> --- a/drivers/phy/Kconfig
> +++ b/drivers/phy/Kconfig
> @@ -225,6 +225,7 @@ config PHY_MT65XX_USB3
> config PHY_HI6220_USB
> tristate "hi6220 USB PHY support"
> depends on (ARCH_HISI && ARM64) || COMPILE_TEST
> + depends on HAS_IOMEM # For MFD_SYSCON
> select GENERIC_PHY
> select MFD_SYSCON
> help
> --
> 2.5.0
>
This is indeed required, and seems to be what caused the problem
you saw in the first place.
Arnd
On Thursday 03 March 2016 17:03:27 Krzysztof Kozlowski wrote:
>
> diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
> index c346be650892..5927944b46e0 100644
> --- a/drivers/clocksource/Kconfig
> +++ b/drivers/clocksource/Kconfig
> @@ -239,6 +239,7 @@ config ATMEL_PIT
>
> config ATMEL_ST
> bool
> + depends on HAS_IOMEM # For MFD_SYSCON
> select CLKSRC_OF
> select MFD_SYSCON
>
looking at this again, there is no need for the dependency here,
as it is not a user-selectable symbol.
Arnd
On Thursday 03 March 2016 17:03:34 Krzysztof Kozlowski wrote:
> index 0da40e2e4280..5c530b6b125d 100644
> --- a/drivers/rtc/Kconfig
> +++ b/drivers/rtc/Kconfig
> @@ -1302,6 +1302,7 @@ config RTC_DRV_AT91RM9200
> config RTC_DRV_AT91SAM9
> tristate "AT91SAM9 RTT as RTC"
> depends on ARCH_AT91 || COMPILE_TEST
> + depends on HAS_IOMEM # For MFD_SYSCON
> select MFD_SYSCON
> help
> Some AT91SAM9 SoCs provide an RTT (Real Time Timer) block which
>
This is technically correct, but the entire RTC menu is hidden
inside of 'depends on !UML && !S390', so we won't ever get there
on any configuration that does not use HAS_IOMEM.
If we did, all other RTC drivers would also fail.
Arnd
On Thursday 03 March 2016 17:03:35 Krzysztof Kozlowski wrote:
> diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
> index 201f5c296a95..e5931e434fa2 100644
> --- a/drivers/media/platform/Kconfig
> +++ b/drivers/media/platform/Kconfig
> @@ -79,6 +79,7 @@ config VIDEO_OMAP3
> depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3
> depends on HAS_DMA && OF
> depends on OMAP_IOMMU
> + depends on HAS_IOMEM # For MFD_SYSCON
> select ARM_DMA_USE_IOMMU
> select VIDEOBUF2_DMA_CONTIG
This is only built for OMAP3, so we won't get here without HAS_IOMEM
> select MFD_SYSCON
> diff --git a/drivers/media/platform/exynos4-is/Kconfig b/drivers/media/platform/exynos4-is/Kconfig
> index 57d42c6172c5..c4317b99d257 100644
> --- a/drivers/media/platform/exynos4-is/Kconfig
> +++ b/drivers/media/platform/exynos4-is/Kconfig
> @@ -17,6 +17,7 @@ config VIDEO_S5P_FIMC
> tristate "S5P/EXYNOS4 FIMC/CAMIF camera interface driver"
> depends on I2C
> depends on HAS_DMA
> + depends on HAS_IOMEM # For MFD_SYSCON
> select VIDEOBUF2_DMA_CONTIG
> select V4L2_MEM2MEM_DEV
This is guarded by HAS_DMA, which implies HAS_IOMEM afaik.
Arnd
On Thursday 03 March 2016 17:03:36 Krzysztof Kozlowski wrote:
> The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
> direct dependencies.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>
> ---
> drivers/net/ethernet/hisilicon/Kconfig | 1 +
> drivers/net/ethernet/stmicro/stmmac/Kconfig | 6 ++++++
> drivers/net/ethernet/ti/Kconfig | 1 +
> 3 files changed, 8 insertions(+)
>
> diff --git a/drivers/net/ethernet/hisilicon/Kconfig b/drivers/net/ethernet/hisilicon/Kconfig
> index 74beb1867230..6a9c91781bf9 100644
> --- a/drivers/net/ethernet/hisilicon/Kconfig
> +++ b/drivers/net/ethernet/hisilicon/Kconfig
> @@ -26,6 +26,7 @@ config HIX5HD2_GMAC
> config HIP04_ETH
> tristate "HISILICON P04 Ethernet support"
> select MARVELL_PHY
> + depends on HAS_IOMEM # For MFD_SYSCON
> select MFD_SYSCON
> select HNS_MDIO
> ---help---
Geert added a HAS_DMA dependency in linux-next, which takes
care of this, although it's still technically correct as well.
> diff --git a/drivers/net/ethernet/stmicro/stmmac/Kconfig b/drivers/net/ethernet/stmicro/stmmac/Kconfig
> index cec147d1d34f..d6902bf6e90f 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/Kconfig
> +++ b/drivers/net/ethernet/stmicro/stmmac/Kconfig
> @@ -16,6 +16,7 @@ if STMMAC_ETH
> config STMMAC_PLATFORM
> tristate "STMMAC Platform bus support"
> depends on STMMAC_ETH
> + depends on HAS_IOMEM # For MFD_SYSCON
> select MFD_SYSCON
> default y
> ---help---
NET_VENDOR_STMICRO depends on HAS_IOMEM, so we are good here for the
entire directory.
> diff --git a/drivers/net/ethernet/ti/Kconfig b/drivers/net/ethernet/ti/Kconfig
> index e7f0b7d95b65..ec56cebe929d 100644
> --- a/drivers/net/ethernet/ti/Kconfig
> +++ b/drivers/net/ethernet/ti/Kconfig
> @@ -62,6 +62,7 @@ config TI_CPSW_ALE
> config TI_CPSW
> tristate "TI CPSW Switch Support"
> depends on ARCH_DAVINCI || ARCH_OMAP2PLUS
> + depends on HAS_IOMEM # For MFD_SYSCON
> select TI_DAVINCI_CPDMA
> select TI_DAVINCI_MDIO
> select TI_CPSW_PHY_SEL
>
This again is platform specific, so the chagnge is not needed.
Arnd
On Thursday 03 March 2016 17:03:37 Krzysztof Kozlowski wrote:
> diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
> index 0a6408a39c66..0f34846ae80d 100644
> --- a/drivers/power/reset/Kconfig
> +++ b/drivers/power/reset/Kconfig
> @@ -141,6 +141,7 @@ config POWER_RESET_XGENE
> config POWER_RESET_KEYSTONE
> bool "Keystone reset driver"
> depends on ARCH_KEYSTONE
> + depends on HAS_IOMEM # For MFD_SYSCON
> select MFD_SYSCON
> help
> Reboot support for the KEYSTONE SoCs.
>
This is platform specific, but we should probably add || COMPILE_TEST
along with the HAS_IOMEM dependency.
Arnd
On Thursday 03 March 2016 17:03:40 Krzysztof Kozlowski wrote:
> index 8c20ebbc049c..f759a778d606 100644
> --- a/drivers/usb/host/Kconfig
> +++ b/drivers/usb/host/Kconfig
> @@ -45,6 +45,7 @@ config USB_XHCI_PLATFORM
>
> config USB_XHCI_MTK
> tristate "xHCI support for Mediatek MT65xx"
> + depends on HAS_IOMEM # For MFD_SYSCON
> select MFD_SYSCON
> depends on ARCH_MEDIATEK || COMPILE_TEST
> ---help---
>
This already has the dependency, as it depends on XHCD_PLATFORM
which depends on HAS_IOMEM.
Arnd
2016-03-03 19:53 GMT+09:00 Arnd Bergmann <[email protected]>:
> On Thursday 03 March 2016 17:03:30 Krzysztof Kozlowski wrote:
>> config ST_IRQCHIP
>> bool
>> select REGMAP
>> + depends on HAS_IOMEM # For MFD_SYSCON
>> select MFD_SYSCON
>> help
>> Enables SysCfg Controlled IRQs on STi based platforms.
>>
>
> Not user visible.
Hmmm... you are right (here and in other patches) but why am I getting
all these errors:
warning: (ST_IRQCHIP && HIP04_ETH && STMMAC_PLATFORM && DWMAC_IPQ806X
&& DWMAC_LPC18XX && DWMAC_ROCKCHIP && DWMAC_SOCFPGA && DWMAC_STI &&
TI_CPSW && PINCTRL_ROCKCHIP && PINCTRL_DOVE && POWER_RESET_KEYSTONE &&
S3C2410_WATCHDOG && VIDEO_OMAP3 && VIDEO_S5P_FIMC && USB_XHCI_MTK &&
RTC_DRV_AT91SAM9 && LPC18XX_DMAMUX && VIDEO_OMAP4 && HWSPINLOCK_QCOM
&& ATMEL_ST && QCOM_GSBI && PHY_HI6220_USB) selects MFD_SYSCON which
has unmet direct dependencies (HAS_IOMEM)
?
(ARCH=um, allyesconfig)
Adding depends here (and in other places) really helps... but it
should not have any impact...
Thanks for comments,
Krzysztof
2016-03-03 19:50 GMT+09:00 Arnd Bergmann <[email protected]>:
> On Thursday 03 March 2016 17:03:41 Krzysztof Kozlowski wrote:
>> Since commit c89c0114955a ("mfd: syscon: Set regmap max_register in
>> of_syscon_register") the syscon uses ioremap so it fails on COMPILE_TEST
>> without HAS_IOMEM:
>>
>> drivers/mfd/syscon.c: In function ‘of_syscon_register’:
>> drivers/mfd/syscon.c:67:9: error: implicit declaration of function ‘ioremap’ [-Werror=implicit-function-declaration]
>> base = ioremap(res.start, resource_size(&res));
>> ^
>> drivers/mfd/syscon.c:67:7: warning: assignment makes pointer from integer without a cast [-Wint-conversion]
>> base = ioremap(res.start, resource_size(&res));
>> ^
>> drivers/mfd/syscon.c:109:2: error: implicit declaration of function ‘iounmap’ [-Werror=implicit-function-declaration]
>> iounmap(base);
>>
>> When selecting MFD_SYSCON, depend on HAS_IOMEM to avoid unmet direct
>> dependencies.
>>
>> Reported-by: kbuild test robot <[email protected]>
>> Fixes: c89c0114955a ("mfd: syscon: Set regmap max_register in of_syscon_register")
>> Signed-off-by: Krzysztof Kozlowski <[email protected]>
>> ---
>
> Thanks for looking into this, the patches all look right to me, but
> I fear we are forever playing catch-up here, as the number of syscon users
> is only growing, and it's not obvious to the average driver developer
> why they have to select this symbol.
Actually I screwed something because entire MFD menuconfig (including
MFD_SYSCON) is already guarded by if HAS_IOMEM.
I was fixing the problem from the end (the build error) and then hit
these unmet direct dependencies (mentioned this in other mail).
I think this patch 15/15 is not needed.
>
> Interestingly, when I try to build an allmodconfig kernel for UML,
> it seems to reject any driver calling ioremap/iounmap but not
> the wrapper functions around that (of_iomap, devm_ioremap,
> devm_ioremap_resource, ...)
The declaration of devm-like functions is always there. However it
should fail during linking stage (see my other patches like for
thermal, nvram etc. this is still in progress because I did not manage
to build allyesconfig on UML yet).
> or the actual accessors that make no
> sense without ioremap (readl, writel, inb, outb, iowrite32, ...).
>
> I've played with this a bit, and arrived at the patch below, is this
> something we want as well?
>
> Arnd
>
>> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
>> index aa21dc55eb15..2e5b1e525a1d 100644
>> --- a/drivers/mfd/Kconfig
>> +++ b/drivers/mfd/Kconfig
>> @@ -1034,6 +1034,7 @@ config MFD_SUN6I_PRCM
>>
>> config MFD_SYSCON
>> bool "System Controller Register R/W Based on Regmap"
>> + depends on HAS_IOMEM
>> select REGMAP_MMIO
>> help
>> Select this option to enable accessing system control registers
>>
>
>
> arch/um/include/asm/io.h | 1 +
> drivers/char/Kconfig | 3 +++
> drivers/char/mem.c | 16 ++++++++++++++++
> drivers/clocksource/Kconfig | 3 +++
> drivers/fmc/Kconfig | 1 +
> drivers/fpga/Kconfig | 1 +
> drivers/hwtracing/intel_th/Kconfig | 1 +
> drivers/mfd/Kconfig | 1 +
> drivers/misc/altera-stapl/Kconfig | 2 +-
> drivers/mtd/chips/Kconfig | 4 ++++
> drivers/mtd/lpddr/Kconfig | 1 +
> drivers/mtd/maps/Kconfig | 3 ++-
> drivers/mtd/nand/Kconfig | 2 +-
> drivers/mtd/spi-nor/Kconfig | 1 +
> drivers/net/can/Kconfig | 1 +
> drivers/net/hamradio/Kconfig | 9 ++++++---
> drivers/nvmem/Kconfig | 1 +
> drivers/phy/Kconfig | 9 +++++++--
> drivers/power/reset/Kconfig | 4 +++-
> drivers/staging/comedi/Kconfig | 6 +++++-
> drivers/thermal/Kconfig | 11 +++++++++--
For some of these I already started fixing:
https://lkml.org/lkml/2016/3/3/147
http://comments.gmane.org/gmane.linux.kernel/2167664
> include/linux/irq.h | 2 ++
> include/linux/mtd/cfi.h | 2 ++
> include/linux/mtd/map.h | 2 ++
> kernel/resource.c | 2 ++
> lib/Kconfig | 7 ++++++-
> mm/bootmem.c | 4 ++--
> 27 files changed, 85 insertions(+), 15 deletions(-)
>
> diff --git a/arch/um/include/asm/io.h b/arch/um/include/asm/io.h
> new file mode 100644
> index 0000000..618ff13
> --- /dev/null
> +++ b/arch/um/include/asm/io.h
> @@ -0,0 +1 @@
> +/* no IOPORT or IOMEM suport */
> diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig
> index a043107..f6dc17a 100644
> --- a/drivers/char/Kconfig
> +++ b/drivers/char/Kconfig
> @@ -8,6 +8,7 @@ source "drivers/tty/Kconfig"
>
> config DEVMEM
> bool "/dev/mem virtual device support"
> + depends on HAS_IOMEM
> default y
> help
> Say Y here if you want to support the /dev/mem device.
> @@ -17,6 +18,7 @@ config DEVMEM
>
> config DEVKMEM
> bool "/dev/kmem virtual device support"
> + depends on HAS_IOMEM
> default y
> help
> Say Y here if you want to support the /dev/kmem device. The
> @@ -94,6 +96,7 @@ config BFIN_OTP_WRITE_ENABLE
> config PRINTER
> tristate "Parallel printer support"
> depends on PARPORT
> + depends on HAS_IOPORT
> ---help---
> If you intend to attach a printer to the parallel port of your Linux
> box (as opposed to using a serial printer; if the connector at the
> diff --git a/drivers/char/mem.c b/drivers/char/mem.c
> index 4f6f94c..eedd129 100644
> --- a/drivers/char/mem.c
> +++ b/drivers/char/mem.c
> @@ -91,6 +91,7 @@ void __weak unxlate_dev_mem_ptr(phys_addr_t phys, void *addr)
> }
> #endif
>
> +#ifdef CONFIG_DEVMEM
> /*
> * This funcion reads the *physical* memory. The f_pos points directly to the
> * memory location.
> @@ -219,6 +220,7 @@ static ssize_t write_mem(struct file *file, const char __user *buf,
> *ppos += written;
> return written;
> }
> +#endif
>
> int __weak phys_mem_access_prot_allowed(struct file *file,
> unsigned long pfn, unsigned long size, pgprot_t *vma_prot)
> @@ -312,6 +314,7 @@ static inline int private_mapping_ok(struct vm_area_struct *vma)
> }
> #endif
>
> +#ifdef CONFIG_DEVMEM
> static const struct vm_operations_struct mmap_mem_ops = {
> #ifdef CONFIG_HAVE_IOREMAP_PROT
> .access = generic_access_phys
> @@ -351,7 +354,9 @@ static int mmap_mem(struct file *file, struct vm_area_struct *vma)
> }
> return 0;
> }
> +#endif
>
> +#ifdef CONFIG_DEVKMEM
> static int mmap_kmem(struct file *file, struct vm_area_struct *vma)
> {
> unsigned long pfn;
> @@ -552,7 +557,9 @@ static ssize_t write_kmem(struct file *file, const char __user *buf,
> *ppos = p;
> return virtr + wrote ? : err;
> }
> +#endif
>
> +#ifdef CONFIG_DEVPORT
> static ssize_t read_port(struct file *file, char __user *buf,
> size_t count, loff_t *ppos)
> {
> @@ -594,6 +601,7 @@ static ssize_t write_port(struct file *file, const char __user *buf,
> *ppos = i;
> return tmp-buf;
> }
> +#endif
>
> static ssize_t read_null(struct file *file, char __user *buf,
> size_t count, loff_t *ppos)
> @@ -710,10 +718,12 @@ static loff_t memory_lseek(struct file *file, loff_t offset, int orig)
> return ret;
> }
>
> +#ifdef CONFIG_DEVPORT
> static int open_port(struct inode *inode, struct file *filp)
> {
> return capable(CAP_SYS_RAWIO) ? 0 : -EPERM;
> }
> +#endif
>
> #define zero_lseek null_lseek
> #define full_lseek null_lseek
> @@ -722,6 +732,7 @@ static int open_port(struct inode *inode, struct file *filp)
> #define open_mem open_port
> #define open_kmem open_mem
>
> +#ifdef CONFIG_DEVMEM
> static const struct file_operations __maybe_unused mem_fops = {
> .llseek = memory_lseek,
> .read = read_mem,
> @@ -733,7 +744,9 @@ static const struct file_operations __maybe_unused mem_fops = {
> .mmap_capabilities = memory_mmap_capabilities,
> #endif
> };
> +#endif
>
> +#ifdef CONFIG_DEVKMEM
> static const struct file_operations __maybe_unused kmem_fops = {
> .llseek = memory_lseek,
> .read = read_kmem,
> @@ -745,6 +758,7 @@ static const struct file_operations __maybe_unused kmem_fops = {
> .mmap_capabilities = memory_mmap_capabilities,
> #endif
> };
> +#endif
>
> static const struct file_operations null_fops = {
> .llseek = null_lseek,
> @@ -755,12 +769,14 @@ static const struct file_operations null_fops = {
> .splice_write = splice_write_null,
> };
>
> +#ifdef CONFIG_DEVPORT
> static const struct file_operations __maybe_unused port_fops = {
> .llseek = memory_lseek,
> .read = read_port,
> .write = write_port,
> .open = open_port,
> };
> +#endif
>
> static const struct file_operations zero_fops = {
> .llseek = zero_lseek,
> diff --git a/drivers/clocksource/Kconfig b/drivers/clocksource/Kconfig
> index 33db740..6b58974 100644
> --- a/drivers/clocksource/Kconfig
> +++ b/drivers/clocksource/Kconfig
> @@ -38,6 +38,7 @@ config DIGICOLOR_TIMER
> config DW_APB_TIMER
> bool "DW APB timer driver" if COMPILE_TEST
> depends on GENERIC_CLOCKEVENTS
> + depends on HAS_IOMEM
> help
> Enables the support for the dw_apb timer.
>
> @@ -64,6 +65,7 @@ config ARMADA_370_XP_TIMER
> config MESON6_TIMER
> bool "Meson6 timer driver" if COMPILE_TEST
> depends on GENERIC_CLOCKEVENTS
> + depends on HAS_IOMEM
> select CLKSRC_MMIO
> help
> Enables the support for the Meson6 timer driver.
> @@ -114,6 +116,7 @@ config CADENCE_TTC_TIMER
> config ASM9260_TIMER
> bool "ASM9260 timer driver" if COMPILE_TEST
> depends on GENERIC_CLOCKEVENTS
> + depends on HAS_IOMEM
> select CLKSRC_MMIO
> select CLKSRC_OF
> help
> diff --git a/drivers/fmc/Kconfig b/drivers/fmc/Kconfig
> index 3a75f42..adf1391 100644
> --- a/drivers/fmc/Kconfig
> +++ b/drivers/fmc/Kconfig
> @@ -4,6 +4,7 @@
>
> menuconfig FMC
> tristate "FMC support"
> + depends on HAS_IOMEM
> help
>
> FMC (FPGA Mezzanine Carrier) is a mechanical and electrical
> diff --git a/drivers/fpga/Kconfig b/drivers/fpga/Kconfig
> index c9b9fdf..36c54af 100644
> --- a/drivers/fpga/Kconfig
> +++ b/drivers/fpga/Kconfig
> @@ -21,6 +21,7 @@ config FPGA_MGR_SOCFPGA
>
> config FPGA_MGR_ZYNQ_FPGA
> tristate "Xilinx Zynq FPGA"
> + depends on HAS_IOMEM
> help
> FPGA manager driver support for Xilinx Zynq FPGAs.
>
> diff --git a/drivers/hwtracing/intel_th/Kconfig b/drivers/hwtracing/intel_th/Kconfig
> index b7a9073..467dae9 100644
> --- a/drivers/hwtracing/intel_th/Kconfig
> +++ b/drivers/hwtracing/intel_th/Kconfig
> @@ -1,5 +1,6 @@
> config INTEL_TH
> tristate "Intel(R) Trace Hub controller"
> + depends on HAS_IOMEM
> help
> Intel(R) Trace Hub (TH) is a set of hardware blocks (subdevices) that
> produce, switch and output trace data from multiple hardware and
> diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig
> index 9ca66de..6ff6246 100644
> --- a/drivers/mfd/Kconfig
> +++ b/drivers/mfd/Kconfig
> @@ -999,6 +999,7 @@ config MFD_SUN6I_PRCM
>
> config MFD_SYSCON
> bool "System Controller Register R/W Based on Regmap"
> + depends on HAS_IOMEM
This shouldn't be needed. There is if HAS_IOMEM at beginning.
Best regards,
Krzysztof
On Thu, Mar 3, 2016 at 11:55 AM, Arnd Bergmann <[email protected]> wrote:
> On Thursday 03 March 2016 17:03:34 Krzysztof Kozlowski wrote:
>> index 0da40e2e4280..5c530b6b125d 100644
>> --- a/drivers/rtc/Kconfig
>> +++ b/drivers/rtc/Kconfig
>> @@ -1302,6 +1302,7 @@ config RTC_DRV_AT91RM9200
>> config RTC_DRV_AT91SAM9
>> tristate "AT91SAM9 RTT as RTC"
>> depends on ARCH_AT91 || COMPILE_TEST
>> + depends on HAS_IOMEM # For MFD_SYSCON
>> select MFD_SYSCON
>> help
>> Some AT91SAM9 SoCs provide an RTT (Real Time Timer) block which
>>
>
> This is technically correct, but the entire RTC menu is hidden
> inside of 'depends on !UML && !S390', so we won't ever get there
> on any configuration that does not use HAS_IOMEM.
>
> If we did, all other RTC drivers would also fail.
So UML has no RTC. Should/can it use RTC_DRV_GENERIC?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
On Thu, Mar 3, 2016 at 11:57 AM, Arnd Bergmann <[email protected]> wrote:
>> --- a/drivers/media/platform/exynos4-is/Kconfig
>> +++ b/drivers/media/platform/exynos4-is/Kconfig
>> @@ -17,6 +17,7 @@ config VIDEO_S5P_FIMC
>> tristate "S5P/EXYNOS4 FIMC/CAMIF camera interface driver"
>> depends on I2C
>> depends on HAS_DMA
>> + depends on HAS_IOMEM # For MFD_SYSCON
>> select VIDEOBUF2_DMA_CONTIG
>> select V4L2_MEM2MEM_DEV
>
> This is guarded by HAS_DMA, which implies HAS_IOMEM afaik.
No systems around with HV-based DMA?
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
On Thursday 03 March 2016 21:00:57 Krzysztof Kozlowski wrote:
> >
> > Not user visible.
>
> Hmmm... you are right (here and in other patches) but why am I getting
> all these errors:
> warning: (ST_IRQCHIP && HIP04_ETH && STMMAC_PLATFORM && DWMAC_IPQ806X
> && DWMAC_LPC18XX && DWMAC_ROCKCHIP && DWMAC_SOCFPGA && DWMAC_STI &&
> TI_CPSW && PINCTRL_ROCKCHIP && PINCTRL_DOVE && POWER_RESET_KEYSTONE &&
> S3C2410_WATCHDOG && VIDEO_OMAP3 && VIDEO_S5P_FIMC && USB_XHCI_MTK &&
> RTC_DRV_AT91SAM9 && LPC18XX_DMAMUX && VIDEO_OMAP4 && HWSPINLOCK_QCOM
> && ATMEL_ST && QCOM_GSBI && PHY_HI6220_USB) selects MFD_SYSCON which
> has unmet direct dependencies (HAS_IOMEM)
> ?
> (ARCH=um, allyesconfig)
The problem is that Kconfig will just print any option that
selects the one that has a missing dependency, but doesn't
show which of those are actually enabled.
> Adding depends here (and in other places) really helps... but it
> should not have any impact...
I think patch 5 by itself would have been sufficient.
Arnd
2016-03-03 21:28 GMT+09:00 Arnd Bergmann <[email protected]>:
> On Thursday 03 March 2016 21:00:57 Krzysztof Kozlowski wrote:
>> >
>> > Not user visible.
>>
>> Hmmm... you are right (here and in other patches) but why am I getting
>> all these errors:
>> warning: (ST_IRQCHIP && HIP04_ETH && STMMAC_PLATFORM && DWMAC_IPQ806X
>> && DWMAC_LPC18XX && DWMAC_ROCKCHIP && DWMAC_SOCFPGA && DWMAC_STI &&
>> TI_CPSW && PINCTRL_ROCKCHIP && PINCTRL_DOVE && POWER_RESET_KEYSTONE &&
>> S3C2410_WATCHDOG && VIDEO_OMAP3 && VIDEO_S5P_FIMC && USB_XHCI_MTK &&
>> RTC_DRV_AT91SAM9 && LPC18XX_DMAMUX && VIDEO_OMAP4 && HWSPINLOCK_QCOM
>> && ATMEL_ST && QCOM_GSBI && PHY_HI6220_USB) selects MFD_SYSCON which
>> has unmet direct dependencies (HAS_IOMEM)
>> ?
>> (ARCH=um, allyesconfig)
>
> The problem is that Kconfig will just print any option that
> selects the one that has a missing dependency, but doesn't
> show which of those are actually enabled.
Indeed... but apparently putting direct HAS_IOMEM dependency on these
symbols silences the Kconfig warning.
>> Adding depends here (and in other places) really helps... but it
>> should not have any impact...
>
> I think patch 5 by itself would have been sufficient.
Thanks for analysis. Since all patches are independent (and IMHO the
last one is not needed really) so I won't resend the patchset. Instead
let maintainer pick what is meaningful.
Best regards,
Krzysztof
Hi,
On Thu, Mar 03, 2016 at 12:00:14PM +0100, Arnd Bergmann wrote:
> On Thursday 03 March 2016 17:03:37 Krzysztof Kozlowski wrote:
> > diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
> > index 0a6408a39c66..0f34846ae80d 100644
> > --- a/drivers/power/reset/Kconfig
> > +++ b/drivers/power/reset/Kconfig
> > @@ -141,6 +141,7 @@ config POWER_RESET_XGENE
> > config POWER_RESET_KEYSTONE
> > bool "Keystone reset driver"
> > depends on ARCH_KEYSTONE
> > + depends on HAS_IOMEM # For MFD_SYSCON
> > select MFD_SYSCON
> > help
> > Reboot support for the KEYSTONE SoCs.
> >
>
> This is platform specific, but we should probably add || COMPILE_TEST
> along with the HAS_IOMEM dependency.
Sounds sensible. Will you guys send an updated patch?
-- Sebastian
2016-03-03 21:33 GMT+09:00 Sebastian Reichel <[email protected]>:
> Hi,
>
> On Thu, Mar 03, 2016 at 12:00:14PM +0100, Arnd Bergmann wrote:
>> On Thursday 03 March 2016 17:03:37 Krzysztof Kozlowski wrote:
>> > diff --git a/drivers/power/reset/Kconfig b/drivers/power/reset/Kconfig
>> > index 0a6408a39c66..0f34846ae80d 100644
>> > --- a/drivers/power/reset/Kconfig
>> > +++ b/drivers/power/reset/Kconfig
>> > @@ -141,6 +141,7 @@ config POWER_RESET_XGENE
>> > config POWER_RESET_KEYSTONE
>> > bool "Keystone reset driver"
>> > depends on ARCH_KEYSTONE
>> > + depends on HAS_IOMEM # For MFD_SYSCON
>> > select MFD_SYSCON
>> > help
>> > Reboot support for the KEYSTONE SoCs.
>> >
>>
>> This is platform specific, but we should probably add || COMPILE_TEST
>> along with the HAS_IOMEM dependency.
>
> Sounds sensible. Will you guys send an updated patch?
>
Sure, I'll make some compile tests and send a v2.
Best regards,
Krzysztof
2016-03-03 19:57 GMT+09:00 Arnd Bergmann <[email protected]>:
> On Thursday 03 March 2016 17:03:35 Krzysztof Kozlowski wrote:
>> diff --git a/drivers/media/platform/Kconfig b/drivers/media/platform/Kconfig
>> index 201f5c296a95..e5931e434fa2 100644
>> --- a/drivers/media/platform/Kconfig
>> +++ b/drivers/media/platform/Kconfig
>> @@ -79,6 +79,7 @@ config VIDEO_OMAP3
>> depends on VIDEO_V4L2 && I2C && VIDEO_V4L2_SUBDEV_API && ARCH_OMAP3
>> depends on HAS_DMA && OF
>> depends on OMAP_IOMMU
>> + depends on HAS_IOMEM # For MFD_SYSCON
>> select ARM_DMA_USE_IOMMU
>> select VIDEOBUF2_DMA_CONTIG
>
> This is only built for OMAP3, so we won't get here without HAS_IOMEM
Indeed.
>
>> select MFD_SYSCON
>> diff --git a/drivers/media/platform/exynos4-is/Kconfig b/drivers/media/platform/exynos4-is/Kconfig
>> index 57d42c6172c5..c4317b99d257 100644
>> --- a/drivers/media/platform/exynos4-is/Kconfig
>> +++ b/drivers/media/platform/exynos4-is/Kconfig
>> @@ -17,6 +17,7 @@ config VIDEO_S5P_FIMC
>> tristate "S5P/EXYNOS4 FIMC/CAMIF camera interface driver"
>> depends on I2C
>> depends on HAS_DMA
>> + depends on HAS_IOMEM # For MFD_SYSCON
>> select VIDEOBUF2_DMA_CONTIG
>> select V4L2_MEM2MEM_DEV
>
> This is guarded by HAS_DMA, which implies HAS_IOMEM afaik.
Looking at Kconfigs - no, it is not implied (or am I missing
something)... and sometimes dependency on HAS_IOMEM is next to
HAS_DMA.
BR,
Krzysztof
2016-03-03 17:03 GMT+09:00 Krzysztof Kozlowski <[email protected]>:
> The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
> direct dependencies.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>
> ---
> drivers/staging/media/omap4iss/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/staging/media/omap4iss/Kconfig b/drivers/staging/media/omap4iss/Kconfig
> index 46183464ee79..7dea072172aa 100644
> --- a/drivers/staging/media/omap4iss/Kconfig
> +++ b/drivers/staging/media/omap4iss/Kconfig
> @@ -2,6 +2,7 @@ config VIDEO_OMAP4
> tristate "OMAP 4 Camera support"
> depends on VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API && I2C && ARCH_OMAP4
> depends on HAS_DMA
> + depends on HAS_IOMEM # For MFD_SYSCON
> select MFD_SYSCON
> select VIDEOBUF2_DMA_CONTIG
> ---help---
False alarm, no need for the patch (this depends on ARCH_OMAP4).
Best regards,
Krzysztof
2016-03-03 17:03 GMT+09:00 Krzysztof Kozlowski <[email protected]>:
> The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
> direct dependencies.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>
> ---
> drivers/soc/qcom/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/soc/qcom/Kconfig b/drivers/soc/qcom/Kconfig
> index 461b387d03cc..24de48134c15 100644
> --- a/drivers/soc/qcom/Kconfig
> +++ b/drivers/soc/qcom/Kconfig
> @@ -4,6 +4,7 @@
> config QCOM_GSBI
> tristate "QCOM General Serial Bus Interface"
> depends on ARCH_QCOM
> + depends on HAS_IOMEM # For MFD_SYSCON
> select MFD_SYSCON
False alarm, no need for the patch (this depends on ARCH_QCOM).
Best regards,
Krzysztof
2016-03-03 17:03 GMT+09:00 Krzysztof Kozlowski <[email protected]>:
> The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
> direct dependencies.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>
> ---
> drivers/pinctrl/mvebu/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/pinctrl/mvebu/Kconfig b/drivers/pinctrl/mvebu/Kconfig
> index 170602407c0d..13685923729c 100644
> --- a/drivers/pinctrl/mvebu/Kconfig
> +++ b/drivers/pinctrl/mvebu/Kconfig
> @@ -7,6 +7,7 @@ config PINCTRL_MVEBU
>
> config PINCTRL_DOVE
> bool
> + depends on HAS_IOMEM # For MFD_SYSCON
> select PINCTRL_MVEBU
> select MFD_SYSCON
False alarm, no need for the patch (non-selectable symbol)
Best regards,
Krzysztof
2016-03-03 17:03 GMT+09:00 Krzysztof Kozlowski <[email protected]>:
> The MFD_SYSCON depends on HAS_IOMEM so when selecting it avoid unmet
> direct dependencies.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>
> ---
> drivers/pinctrl/Kconfig | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
> index fb8200b8e8ec..dc7ab58d4d74 100644
> --- a/drivers/pinctrl/Kconfig
> +++ b/drivers/pinctrl/Kconfig
> @@ -131,6 +131,7 @@ config PINCTRL_MESON
>
> config PINCTRL_ROCKCHIP
> bool
> + depends on HAS_IOMEM # For MFD_SYSCON
> select PINMUX
False alarm, no need for the patch (non-selectable symbol)
Best regards,
Krzysztof
On Thursday 03 March 2016 13:27:59 Geert Uytterhoeven wrote:
> On Thu, Mar 3, 2016 at 11:55 AM, Arnd Bergmann <[email protected]> wrote:
> > On Thursday 03 March 2016 17:03:34 Krzysztof Kozlowski wrote:
> >> index 0da40e2e4280..5c530b6b125d 100644
> >> --- a/drivers/rtc/Kconfig
> >> +++ b/drivers/rtc/Kconfig
> >> @@ -1302,6 +1302,7 @@ config RTC_DRV_AT91RM9200
> >> config RTC_DRV_AT91SAM9
> >> tristate "AT91SAM9 RTT as RTC"
> >> depends on ARCH_AT91 || COMPILE_TEST
> >> + depends on HAS_IOMEM # For MFD_SYSCON
> >> select MFD_SYSCON
> >> help
> >> Some AT91SAM9 SoCs provide an RTT (Real Time Timer) block which
> >>
> >
> > This is technically correct, but the entire RTC menu is hidden
> > inside of 'depends on !UML && !S390', so we won't ever get there
> > on any configuration that does not use HAS_IOMEM.
> >
> > If we did, all other RTC drivers would also fail.
>
> So UML has no RTC. Should/can it use RTC_DRV_GENERIC?
I think nothing should use that, even if it could ;-)
Funny enough, RTC_DRV_GENERIC would probably actually work if you
run UML as root and set iopl() to allow port access, but we don't
really want it to mess with the host RTC.
I don't know where UML gets it real time, but it doesn't actually
need much other than calling clock_gettime(CLOCK_REALTIME, ...)
to get the host time. Presumably it uses some variation of that.
Arnd
On Thursday 03 March 2016 21:40:23 Krzysztof Kozlowski wrote:
> >> select MFD_SYSCON
> >> diff --git a/drivers/media/platform/exynos4-is/Kconfig b/drivers/media/platform/exynos4-is/Kconfig
> >> index 57d42c6172c5..c4317b99d257 100644
> >> --- a/drivers/media/platform/exynos4-is/Kconfig
> >> +++ b/drivers/media/platform/exynos4-is/Kconfig
> >> @@ -17,6 +17,7 @@ config VIDEO_S5P_FIMC
> >> tristate "S5P/EXYNOS4 FIMC/CAMIF camera interface driver"
> >> depends on I2C
> >> depends on HAS_DMA
> >> + depends on HAS_IOMEM # For MFD_SYSCON
> >> select VIDEOBUF2_DMA_CONTIG
> >> select V4L2_MEM2MEM_DEV
> >
> > This is guarded by HAS_DMA, which implies HAS_IOMEM afaik.
>
> Looking at Kconfigs - no, it is not implied (or am I missing
> something)... and sometimes dependency on HAS_IOMEM is next to
> HAS_DMA.
>
>
Ah, you are right: UML has no DMA and no IOMEM, but s390 can
have IOMEM (if PCI is enabled) and always sets HAS_DMA.
In practice, I think the HAS_DMA symbol is not as well-defined
as it should be, it basically refers to the presence of the dma-mapping.h
API, and that only really makes sense when you also have IOMEM,
so there might be an implied dependency between the two, but it's
not enforced or actually true.
Arnd