PCI: controller: thunder: fix compile testing
PATCH 1/2 PCI: controller: thunder: fix compile testing
From: Arnd Bergmann <[email protected]>
Compile-testing these drivers is currently broken. Enabling it causes a couple of build failures though:
drivers/pci/controller/pci-thunder-ecam.c:119:30: error: shift count >= width of type [-Werror,-Wshift-count-overflow] drivers/pci/controller/pci-thunder-pem.c:54:2: error: implicit declaration of function 'writeq' [-Werror,-Wimplicit-function-declaration] drivers/pci/controller/pci-thunder-pem.c:392:8: error: implicit declaration of function 'acpi_get_rc_resources' [-Werror,-Wimplicit-function-declaration]
Fix them with the obvious one-line changes.
--- drivers/pci/controller/pci-thunder-ecam.c | 2 +- drivers/pci/controller/pci-thunder-pem.c | 13 +++++++------ drivers/pci/pci.h | 6 ++++++ 3 files changed, 14 insertions(+), 7 deletions(-)
drivers/pci/controller/pci-thunder-ecam.c +1 -1
@@ -116,7 +116,7 @@ static int thunder_ecam_p2_config_read(struct pci_bus *bus, unsigned int devfn,* the config space access window. Since we are working with * the high-order 32 bits, shift everything down by 32 bits. */ - node_bits = (cfg->res.start >>32 ) & (1 <<12 ); + node_bits =upper_32_bits (cfg->res.start) & (1 <<12 ); v |= node_bits;set_val (v, where, size, val);
drivers/pci/controller/pci-thunder-pem.c +7 -6
@@ -12,6 +12,7 @@#include <linux/pci-acpi.h> #include <linux/pci-ecam.h> #include <linux/platform_device.h> +#include <linux/io-64-nonatomic-lo-hi.h> #include "../pci.h" #if defined(CONFIG_PCI_HOST_THUNDER_PEM ) || (defined(CONFIG_ACPI ) && defined(CONFIG_PCI_QUIRKS ))
@@ -324,9 +325,9 @@ static int thunder_pem_init(struct device *dev, struct pci_config_window *cfg,* structure here for the BAR. */ bar4_start = res_pem->start +0xf00000 ; - pem_pci->ea_entry[0 ] = (u32 )bar4_start |2 ; - pem_pci->ea_entry[1 ] = (u32)(res_pem->end - bar4_start) & ~3u ; - pem_pci->ea_entry[2 ] = (u32)(bar4_start >>32 ); + pem_pci->ea_entry[0 ] =lower_32_bits (bar4_start) |2 ; + pem_pci->ea_entry[1 ] =lower_32_bits (res_pem->end - bar4_start) & ~3u ; + pem_pci->ea_entry[2 ] =upper_32_bits (bar4_start); cfg->priv = pem_pci;return 0 ;
@@ -334,9 +335,9 @@ static int thunder_pem_init(struct device *dev, struct pci_config_window *cfg,#if defined(CONFIG_ACPI ) && defined(CONFIG_PCI_QUIRKS ) -#define PEM_RES_BASE 0x87e0c0000000UL -#define PEM_NODE_MASK GENMASK(45, 44) -#define PEM_INDX_MASK GENMASK(26, 24) +#define PEM_RES_BASE 0x87e0c0000000ULL +#define PEM_NODE_MASK GENMASK_ULL(45, 44) +#define PEM_INDX_MASK GENMASK_ULL(26, 24)#define PEM_MIN_DOM_IN_NODE 4#define PEM_MAX_DOM_IN_NODE 10
drivers/pci/pci.h +6 -0
@@ -625,6 +625,12 @@ static inline int pci_dev_specific_reset(struct pci_dev *dev, int probe)#if defined(CONFIG_PCI_QUIRKS ) && defined(CONFIG_ARM64 )int acpi_get_rc_resources (struct device *dev,const char *hid,u16 segment,struct resource *res); +#else +static inline int acpi_get_rc_resources (struct device *dev,const char *hid, +u16 segment,struct resource *res) +{ +return -ENODEV ; +}#endif int pci_rebar_get_current_size (struct pci_dev *pdev,int bar);
Signature · 1 line
2.29.2
PATCH 2/2 PCI: controller: avoid building empty drivers
From: Arnd Bergmann <[email protected]>
There are harmless warnings when compile testing the kernel with CONFIG_TRIM_UNUSED_KSYMS:
drivers/pci/controller/dwc/pcie-al.o: no symbols drivers/pci/controller/pci-thunder-ecam.o: no symbols drivers/pci/controller/pci-thunder-pem.o: no symbols
The problem here is that the host drivers get built even when the configuration symbols are all disabled, as they pretend to not be drivers but are silently enabled because of the promise that ACPI based systems need no drivers.
Add back the normal symbols to have these drivers built, and change the logic to otherwise only build them when both CONFIG_PCI_QUIRKS and CONFIG_ACPI are enabled.
As a side-effect, this enables compile-testing the drivers on other architectures, which in turn needs the acpi_get_rc_resources() function to be defined.
--- drivers/pci/controller/Makefile | 7 ++++++- drivers/pci/controller/dwc/Makefile | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-)
drivers/pci/controller/Makefile +6 -1
@@ -11,10 +11,13 @@ obj-$(CONFIG_PCIE_RCAR_HOST) += pcie-rcar.o pcie-rcar-host.o obj-$(CONFIG_PCIE_RCAR_EP) += pcie-rcar.o pcie-rcar-ep.o obj-$(CONFIG_PCI_HOST_COMMON) += pci-host-common.o obj-$(CONFIG_PCI_HOST_GENERIC) += pci-host-generic.o +obj-$(CONFIG_PCI_HOST_THUNDER_ECAM) += pci-thunder-ecam.o +obj-$(CONFIG_PCI_HOST_THUNDER_PEM) += pci-thunder-pem.o obj-$(CONFIG_PCIE_XILINX) += pcie-xilinx.o obj-$(CONFIG_PCIE_XILINX_NWL) += pcie-xilinx-nwl.o obj-$(CONFIG_PCIE_XILINX_CPM) += pcie-xilinx-cpm.o obj-$(CONFIG_PCI_V3_SEMI) += pci-v3-semi.o +obj-$(CONFIG_PCI_XGENE) += pci-xgene.o obj-$(CONFIG_PCI_XGENE_MSI) += pci-xgene-msi.o obj-$(CONFIG_PCI_VERSATILE) += pci-versatile.o obj-$(CONFIG_PCIE_IPROC) += pcie-iproc.o
@@ -47,8 +50,10 @@ obj-y += mobiveil/ # ARM64 and use internal ifdefs to only build the pieces we need # depending on whether ACPI, the DT driver, or both are enabled. -ifdef CONFIG_PCI +ifdef CONFIG_ACPI +ifdef CONFIG_PCI_QUIRKS obj-$(CONFIG_ARM64) += pci-thunder-ecam.o obj-$(CONFIG_ARM64) += pci-thunder-pem.o obj-$(CONFIG_ARM64) += pci-xgene.o endif +endif
drivers/pci/controller/dwc/Makefile +6 -1
@@ -31,7 +31,12 @@ obj-$(CONFIG_PCIE_UNIPHIER_EP) += pcie-uniphier-ep.o # ARM64 and use internal ifdefs to only build the pieces we need # depending on whether ACPI, the DT driver, or both are enabled. -ifdef CONFIG_PCI +obj-$(CONFIG_PCIE_AL) += pcie-al.o +obj-$(CONFIG_PCI_HISI) += pcie-hisi.o + +ifdef CONFIG_ACPI +ifdef CONFIG_PCI_QUIRKS obj-$(CONFIG_ARM64) += pcie-al.o obj-$(CONFIG_ARM64) += pcie-hisi.o endif +endif
Signature · 1 line
2.29.2
Re: [PATCH 2/2] PCI: controller: avoid building empty drivers
Quoted 48 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
There are harmless warnings when compile testing the kernel with
CONFIG_TRIM_UNUSED_KSYMS:
drivers/pci/controller/dwc/pcie-al.o: no symbolsdrivers/pci/controller/pci-thunder-ecam.o: no symbolsdrivers/pci/controller/pci-thunder-pem.o: no symbolsThe problem here is that the host drivers get built even when the configuration symbols are all disabled, as they pretend to not be drivers but are silently enabled because of the promise that ACPI based systems need no drivers.
Add back the normal symbols to have these drivers built, and change the logic to otherwise only build them when both
CONFIG_PCI_QUIRKSandCONFIG_ACPIare enabled.As a side-effect, this enables compile-testing the drivers on other architectures, which in turn needs the
acpi_get_rc_resources()function to be defined.Signed-off-by Arnd Bergmann <[email protected]>--- drivers/pci/controller/Makefile | 7 ++++++- drivers/pci/controller/dwc/Makefile | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-)drivers/pci/controller/Makefile +3
-0@@ -11,10 +11,13 @@ obj-$(CONFIG_PCIE_RCAR_HOST) += pcie-rcar.o pcie-rcar-host.o obj-$(CONFIG_PCIE_RCAR_EP) += pcie-rcar.o pcie-rcar-ep.o obj-$(CONFIG_PCI_HOST_COMMON) += pci-host-common.o obj-$(CONFIG_PCI_HOST_GENERIC) += pci-host-generic.o +obj-$(CONFIG_PCI_HOST_THUNDER_ECAM) += pci-thunder-ecam.o +obj-$(CONFIG_PCI_HOST_THUNDER_PEM) += pci-thunder-pem.o obj-$(CONFIG_PCIE_XILINX) += pcie-xilinx.o obj-$(CONFIG_PCIE_XILINX_NWL) += pcie-xilinx-nwl.o obj-$(CONFIG_PCIE_XILINX_CPM) += pcie-xilinx-cpm.o obj-$(CONFIG_PCI_V3_SEMI) += pci-v3-semi.o +obj-$(CONFIG_PCI_XGENE) += pci-xgene.o obj-$(CONFIG_PCI_XGENE_MSI) += pci-xgene-msi.o obj-$(CONFIG_PCI_VERSATILE) += pci-versatile.o obj-$(CONFIG_PCIE_IPROC) += pcie-iproc.o@@ -47,8 +50,10 @@ obj-y += mobiveil/ # ARM64 and use internal ifdefs to only build the pieces we need
drivers/pci/controller/Makefile obj-y += mobiveil/ · line 59
Quoted 10 lines
drivers/pci/controller/Makefile +3
-1# depending on whether ACPI, the DT driver, or both are enabled. -ifdef CONFIG_PCI +ifdef CONFIG_ACPI +ifdef CONFIG_PCI_QUIRKS obj-$(CONFIG_ARM64) += pci-thunder-ecam.o obj-$(CONFIG_ARM64) += pci-thunder-pem.o obj-$(CONFIG_ARM64) += pci-xgene.o endif +endif
A possible double inclusion isn't really nice here, but it should work that way.
Also, the menu entry for the driver is in fact only for the OF case, as it is always included for ACPI even if the option is disabled (and thus the choice is useless). But this is unrelated to this patch.
Anyway:
Quoted 21 lines
drivers/pci/controller/dwc/Makefile +6
-1@@ -31,7 +31,12 @@ obj-$(CONFIG_PCIE_UNIPHIER_EP) += pcie-uniphier-ep.o # ARM64 and use internal ifdefs to only build the pieces we need # depending on whether ACPI, the DT driver, or both are enabled. -ifdef CONFIG_PCI +obj-$(CONFIG_PCIE_AL) += pcie-al.o +obj-$(CONFIG_PCI_HISI) += pcie-hisi.o + +ifdef CONFIG_ACPI +ifdef CONFIG_PCI_QUIRKS obj-$(CONFIG_ARM64) += pcie-al.o obj-$(CONFIG_ARM64) += pcie-hisi.o endif +endifSignature · 1 line
2.29.2
Re: [PATCH 2/2] PCI: controller: avoid building empty drivers
Quoted 8 lines · Robert Richter
On 25.02.21 15:37:10, Arnd Bergmann wrote:
A possible double inclusion isn't really nice here, but it should work that way.
Also, the menu entry for the driver is in fact only for the OF case, as it is always included for ACPI even if the option is disabled (and thus the choice is useless). But this is unrelated to this patch.
Yes, I considered doing this using Kconfig syntax by adding another symbol for each affected driver and selecting those, but the Makefile hack seemed easier here.
Quoted 1 line
Reviewed-by Robert Richter <[email protected]>
Thanks,
Arnd
Quoted 10 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
Compile-testing these drivers is currently broken. Enabling it causes a couple of build failures though:
drivers/pci/controller/pci-thunder-ecam.c:119:30: error: shift count >= width of type [-Werror,-Wshift-count-overflow]drivers/pci/controller/pci-thunder-pem.c:54:2: error: implicit declaration of function 'writeq' [-Werror,-Wimplicit-function-declaration]drivers/pci/controller/pci-thunder-pem.c:392:8: error: implicit declaration of function 'acpi_get_rc_resources' [-Werror,-Wimplicit-function-declaration]Fix them with the obvious one-line changes.
Looks good to me.
Quoted 77 lines
Signed-off-by Arnd Bergmann <[email protected]>--- drivers/pci/controller/pci-thunder-ecam.c | 2 +- drivers/pci/controller/pci-thunder-pem.c | 13 +++++++------ drivers/pci/pci.h | 6 ++++++ 3 files changed, 14 insertions(+), 7 deletions(-)drivers/pci/controller/pci-thunder-ecam.c +1
-1@@ -116,7 +116,7 @@ static int thunder_ecam_p2_config_read(struct pci_bus *bus, unsigned int devfn,* the config space access window. Since we are working with * the high-order 32 bits, shift everything down by 32 bits. */ - node_bits = (cfg->res.start >>32 ) & (1 <<12 ); + node_bits =upper_32_bits (cfg->res.start) & (1 <<12 ); v |= node_bits;set_val (v, where, size, val);drivers/pci/controller/pci-thunder-pem.c +7
-6@@ -12,6 +12,7 @@#include <linux/pci-acpi.h> #include <linux/pci-ecam.h> #include <linux/platform_device.h> +#include <linux/io-64-nonatomic-lo-hi.h> #include "../pci.h" #if defined(CONFIG_PCI_HOST_THUNDER_PEM ) || (defined(CONFIG_ACPI ) && defined(CONFIG_PCI_QUIRKS ))@@ -324,9 +325,9 @@ static int thunder_pem_init(struct device *dev, struct pci_config_window *cfg,* structure here for the BAR. */ bar4_start = res_pem->start +0xf00000 ; - pem_pci->ea_entry[0 ] = (u32 )bar4_start |2 ; - pem_pci->ea_entry[1 ] = (u32)(res_pem->end - bar4_start) & ~3u ; - pem_pci->ea_entry[2 ] = (u32)(bar4_start >>32 ); + pem_pci->ea_entry[0 ] =lower_32_bits (bar4_start) |2 ; + pem_pci->ea_entry[1 ] =lower_32_bits (res_pem->end - bar4_start) & ~3u ; + pem_pci->ea_entry[2 ] =upper_32_bits (bar4_start); cfg->priv = pem_pci;return 0 ;@@ -334,9 +335,9 @@ static int thunder_pem_init(struct device *dev, struct pci_config_window *cfg,#if defined(CONFIG_ACPI ) && defined(CONFIG_PCI_QUIRKS ) -#define PEM_RES_BASE 0x87e0c0000000UL -#define PEM_NODE_MASK GENMASK(45, 44) -#define PEM_INDX_MASK GENMASK(26, 24) +#define PEM_RES_BASE 0x87e0c0000000ULL +#define PEM_NODE_MASK GENMASK_ULL(45, 44) +#define PEM_INDX_MASK GENMASK_ULL(26, 24)#define PEM_MIN_DOM_IN_NODE 4#define PEM_MAX_DOM_IN_NODE 10drivers/pci/pci.h +6
-0@@ -625,6 +625,12 @@ static inline int pci_dev_specific_reset(struct pci_dev *dev, int probe)#if defined(CONFIG_PCI_QUIRKS ) && defined(CONFIG_ARM64 )int acpi_get_rc_resources (struct device *dev,const char *hid,u16 segment,struct resource *res); +#else +static inline int acpi_get_rc_resources (struct device *dev,const char *hid, +u16 segment,struct resource *res) +{ +return -ENODEV ; +}#endif int pci_rebar_get_current_size (struct pci_dev *pdev,int bar);
Signature · 7 lines
Sathyanarayanan Kuppuswamy Linux Kernel Developer _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Quoted 6 lines · Sathyanarayanan
Quoted 5 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
Compile-testing these drivers is currently broken. Enabling it causes a couple of build failures though:
Quoted 6 lines
Quoted 5 lines
drivers/pci/controller/pci-thunder-ecam.c:119:30: error: shift count >= width of type [-Werror,-Wshift-count-overflow]drivers/pci/controller/pci-thunder-pem.c:54:2: error: implicit declaration of function 'writeq' [-Werror,-Wimplicit-function-declaration]drivers/pci/controller/pci-thunder-pem.c:392:8: error: implicit declaration of function 'acpi_get_rc_resources' [-Werror,-Wimplicit-function-declaration]Fix them with the obvious one-line changes.
Looks good to me.
Thanks for looking this over! I'd like to acknowledge your review, but I need an explicit Reviewed-by or similar. I don't want to put words in your mouth by converting "Looks good to me" to "Reviewed-by".
Kuppuswamy, Sathyanarayanan
Reviewed-byQuoted 3 lines · Bjorn Helgaas
Thanks for looking this over! I'd like to acknowledge your review, but I need an explicit Reviewed-by or similar. I don't want to put words in your mouth by converting "Looks good to me" to "Reviewed-by".
will do so in future reviews.
Signature · 7 lines
Sathyanarayanan Kuppuswamy Linux Kernel Developer _______________________________________________ linux-arm-kernel mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Quoted 5 lines · Arnd Bergmann
From: Arnd Bergmann <[email protected]>
Compile-testing these drivers is currently broken. Enabling it causes a couple of build failures though:
Quoted 7 lines
drivers/pci/controller/pci-thunder-ecam.c:119:30: error: shift count >= width of type [-Werror,-Wshift-count-overflow]drivers/pci/controller/pci-thunder-pem.c:54:2: error: implicit declaration of function 'writeq' [-Werror,-Wimplicit-function-declaration]drivers/pci/controller/pci-thunder-pem.c:392:8: error: implicit declaration of function 'acpi_get_rc_resources' [-Werror,-Wimplicit-function-declaration]Fix them with the obvious one-line changes.
Signed-off-by Arnd Bergmann <[email protected]>
Quoted 5 lines
--- drivers/pci/controller/pci-thunder-ecam.c | 2 +- drivers/pci/controller/pci-thunder-pem.c | 13 +++++++------ drivers/pci/pci.h | 6 ++++++ 3 files changed, 14 insertions(+), 7 deletions(-)