HomeFreeBSD

acpica: rework INTRNG interrupts

Description

acpica: rework INTRNG interrupts

On arm64 (where INTRNG is enabled), the interrupts have to be mapped
with ACPI_BUS_MAP_INTR() before adding them as resources to devices.

The earlier code did the mapping before calling acpi_set_resource(),
which bypassed code that checked for PCI link interrupts.

To fix this, move the call to map interrupts into acpi_set_resource()
and that requires additional work to lookup interrupt properties.
The changes here are to:

  • extend acpi_lookup_irq_handler() to lookup an irq in the ACPI resources
  • create a helper function acpi_map_intr() which uses the updated acpi_lookup_irq_handler() to look up an irq, and then map it with ACPI_BUS_MAP_INTR()
  • use acpi_map_intr() in acpi_pcib_route_interrupt() to map pci link interrupts.

With these changes, we can drop the ifdefs in acpi_resource.c, and
we can also drop the call for mapping interrupts in generic_timer.c

Reviewed by: andrew
Differential Revision: https://reviews.freebsd.org/D17790

Details

Provenance
jchandraAuthored on
Reviewer
andrew
Differential Revision
D17790: acpica: rework INTRNG interrupt mapping
Parents
rS340597: pci_host_generic*: basic implementation of bus range
Branches
Unknown
Tags
Unknown