[PATCH] arch:x86:pci:irq.c: Improve log message when IRQ cannot be identified

From: Brent Spillner
Date: Fri Jan 28 2022 - 12:37:21 EST


The existing code always suggests trying the pci=biosirq kernel
parameter, but this option is only recognized when CONFIG_PCI_BIOS is
set, which in turn depends on CONFIG_X86_32, so it is never appropriate
on x86_64.

The new version tries to form a more useful message when pci=biosirq is
not available, including by suggesting different acpi= options if
appropriate (probably the most common cause of failed IRQ discovery).

See arch/x86/pci/common.c:535 for the interpretation of pci=biosirq, and
arch/x86/Kconfig:2633 for the dependencies of CONFIG_PCI_BIOS.

Signed-off-by: Brent Spillner <spillner@xxxxxxx>
---
arch/x86/pci/irq.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)

diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
index 97b63e35e152..bc4aaaa74832 100644
--- a/arch/x86/pci/irq.c
+++ b/arch/x86/pci/irq.c
@@ -1522,7 +1522,21 @@ static int pirq_enable_irq(struct pci_dev *dev)
} else if (pci_probe & PCI_BIOS_IRQ_SCAN)
msg = "";
else
+#ifdef CONFIG_PCI_BIOS
msg = "; please try using pci=biosirq";
+#else
+ /* pci=biosirq is not a valid option */
+#ifdef CONFIG_ACPI
+ if (acpi_noirq)
+ msg = "; consider removing acpi=noirq";
+ else
+#endif
+ msg = "; recommend verifying UEFI/BIOS IRQ options"
+#ifndef CONFIG_ACPI
+ " or enabling ACPI"
+#endif
+ ;
+#endif

/*
* With IDE legacy devices the IRQ lookup failure is not
--
2.34.1