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

From: Dave Hansen
Date: Fri Jan 28 2022 - 13:00:34 EST


Please fix up that subject. We don't tend to use ":" to separate
things. Second, the prefix isn't a filename. It's really a subsystem.
Take a look at:

git log arch/x86/pci/irq.c

for some other examples.

On 1/28/22 09:37, Brent Spillner wrote:
> 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.

Shockingly enough, that parameter is in the documentation:

Documentation/admin-guide/kernel-parameters.txt

and double-shockingly, it's even called out as X86-32-only:

biosirq [X86-32] Use PCI BIOS calls to get the interrupt

Given that, do we really need to refer to the line numbers of the
implementation which will probably be stale by the time this is merged
anyway?

> 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

Any chance you could make that, um, a bit more readable? It's OK to add
brackets to the else{} for readability even if they're not *strictly*
necessary.

It might also be nice to use

if (IS_ENABLED(CONFIG_FOO))
...

rather than the #ifdefs.

I'd also be perfectly OK having two different strings rather than
relying on string concatenation and the #ifdefs.

Is the "or enabling ACPI" message really necessary?