drivers/pci/controller/pci-ixp4xx.c | 6 ++++++ 1 file changed, 6 insertions(+)
From: Bjorn Helgaas <bhelgaas@google.com>
hook_fault_code() is an ARM32-specific API. Guard it and related code with
CONFIG_ARM #ifdefs so the driver can be compile tested on other
architectures.
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
drivers/pci/controller/pci-ixp4xx.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/pci/controller/pci-ixp4xx.c b/drivers/pci/controller/pci-ixp4xx.c
index acb85e0d5675..9fd401838bad 100644
--- a/drivers/pci/controller/pci-ixp4xx.c
+++ b/drivers/pci/controller/pci-ixp4xx.c
@@ -214,6 +214,7 @@ static u32 ixp4xx_crp_byte_lane_enable_bits(u32 n, int size)
return 0xffffffff;
}
+#ifdef CONFIG_ARM
static int ixp4xx_crp_read_config(struct ixp4xx_pci *p, int where, int size,
u32 *value)
{
@@ -251,6 +252,7 @@ static int ixp4xx_crp_read_config(struct ixp4xx_pci *p, int where, int size,
return PCIBIOS_SUCCESSFUL;
}
+#endif
static int ixp4xx_crp_write_config(struct ixp4xx_pci *p, int where, int size,
u32 value)
@@ -470,6 +472,7 @@ static int ixp4xx_pci_parse_map_dma_ranges(struct ixp4xx_pci *p)
return 0;
}
+#ifdef CONFIG_ARM
/* Only used to get context for abort handling */
static struct ixp4xx_pci *ixp4xx_pci_abort_singleton;
@@ -509,6 +512,7 @@ static int ixp4xx_pci_abort_handler(unsigned long addr, unsigned int fsr,
return 0;
}
+#endif
static int __init ixp4xx_pci_probe(struct platform_device *pdev)
{
@@ -555,10 +559,12 @@ static int __init ixp4xx_pci_probe(struct platform_device *pdev)
dev_info(dev, "controller is in %s mode\n",
p->host_mode ? "host" : "option");
+#ifdef CONFIG_ARM
/* Hook in our fault handler for PCI errors */
ixp4xx_pci_abort_singleton = p;
hook_fault_code(16+6, ixp4xx_pci_abort_handler, SIGBUS, 0,
"imprecise external abort");
+#endif
ret = ixp4xx_pci_parse_map_ranges(p);
if (ret)
--
2.43.0
On Thu, Sep 25, 2025 at 10:27 PM Bjorn Helgaas <helgaas@kernel.org> wrote: > From: Bjorn Helgaas <bhelgaas@google.com> > > hook_fault_code() is an ARM32-specific API. Guard it and related code with > CONFIG_ARM #ifdefs so the driver can be compile tested on other > architectures. > > Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> It looks OK to me Acked-by: Linus Walleij <linus.walleij@linar.org> I see some other ARM32 drivers use it too, but we surely do not have a arch-agnostic way of handling bus errors so perhaps it need to be like this. I think Russell created the fault hooks originally so CC:ing him in. Yours, Linus Walleij
On Tue, Sep 30, 2025 at 08:59:36PM +0200, Linus Walleij wrote: > On Thu, Sep 25, 2025 at 10:27 PM Bjorn Helgaas <helgaas@kernel.org> wrote: > > > From: Bjorn Helgaas <bhelgaas@google.com> > > > > hook_fault_code() is an ARM32-specific API. Guard it and related code with > > CONFIG_ARM #ifdefs so the driver can be compile tested on other > > architectures. > > > > Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> > > It looks OK to me > Acked-by: Linus Walleij <linus.walleij@linar.org> > > I see some other ARM32 drivers use it too, but we surely do > not have a arch-agnostic way of handling bus errors so perhaps it > need to be like this. > > I think Russell created the fault hooks originally so CC:ing him > in. I wonder what the point of compile testing if it needs code to be #ifdef'd out. Wouldn't it be better to add something like: #ifndef CONFIG_ARM static inline void hook_fault_code(int n, int (*fn)(unsigned long, unsigned int, struct pt_regs *), int sig, int code, const char *name) { } #endif maybe to a local header that pci-imx6, pci-keystone, pcie-rcar-host and pci-ixp4xx can all share? -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
© 2016 - 2025 Red Hat, Inc.