Hi,
I ran into an issue with using ACPI with the 16.03 release of UEFI for Juno.
The ACPI tables, do not specify the triggering (LEVEL or EDGE) and polarity (HIGH or LOW) for legacy PCI interrupts.
The PCI legacy interrupt routing is communicated to the kernel via the PCI Routing Table (_PRT) described in Section 6.2.13 of the ACPI spec. In the absence of interrupt type specification, the kernel defaults to the PCI defined values (triggering = LEVEL and polarity = LOW) for the legacy interrupts. (Aside: Juno devicetree already provides the correct interrupt type to the kernel.)
On Juno r2, the GIC doesn't support interrupts with polarity = LOW. This in general seems to be true for all GICv2 based systems. This leads to errors in the kernel log when booting.
On Juno r2, booting with ACPI, I get the following errors in the bootlog -
[ 1.353696] genirq: Setting trigger mode 8 for irq 9 failed (gic_set_type+0x0/0x5c) [ 1.478286] genirq: Setting trigger mode 8 for irq 17 failed (gic_set_type+0x0/0x5c) [ 1.563723] genirq: Setting trigger mode 8 for irq 18 failed (gic_set_type+0x0/0x5c)
In order to supply the interrupt type to the kernel, the firmware needs to use a Linked resource type when specifying the interrupts in _PRT.
I am reporting the issue here in case anybody else runs into at and wonders what's going on.
Thanks, Punit