Re: 4.7 regression: ACPI: No IRQ available for PCI Interrupt Link [LNKD]. Try pci=noacpi or acpi=off

From: Rafael J. Wysocki
Date: Fri Sep 30 2016 - 17:28:12 EST


On Fri, Sep 30, 2016 at 11:14 PM, Sinan Kaya <okaya@xxxxxxxxxxxxxx> wrote:
> On 9/30/2016 5:04 PM, Rafael J. Wysocki wrote:
>>> >
>>> > I hope it makes sense now. I tend to skip details sometimes. Feel free to
>>> > send more questions.
>> Thanks for the information!
>>
>> IIUC, basically, what you are proposing would be to restore the old
>> penalizing method for IRQs in the 0-255 range and use the new approach
>> for the rest, right?
>
> Correct.
>
>>
>> What's the drawback, if any?
>
> I don't see any drawback to be honest.

I'd go for it then, if Bjorn doesn't hate it.

> The reason why I got rid of these ISA
> API functions was to remove some of the x86ism from ACPI code. This was Bjorn's
> request to clean it up and we failed in two places so far.
>
> 1. acpi_irq_penalty_init
> 2. acpi_penalize_sci_irq
>
> and we ended up reverting both of these changes. The reverts are all because of the
> fact that these APIs are called asynchronously without any coordination with the
> PCI Link object or the interrupt controller driver about when it is a good time to be
> called.
>
> During this debug, I learnt that acpi_penalize_isa_irq gets called before even ACPI
> gets to initialize and relies on static IRQ array for keeping the penalties.

So maybe add some comments to that code to explain why things are
arranged the way they are. We may need/want to revisit it at one
point and such comments will be very useful then.

Thanks,
Rafael