• Lorenzo Pieralisi's avatar
    irqchip/gic-v3: Enable non-coherent redistributors/ITSes ACPI probing · ababa16f
    Lorenzo Pieralisi authored
    The GIC architecture specification defines a set of registers for
    redistributors and ITSes that control the sharebility and cacheability
    attributes of redistributors/ITSes initiator ports on the interconnect
    (GICR_[V]PROPBASER, GICR_[V]PENDBASER, GITS_BASER<n>).
    
    Architecturally the GIC provides a means to drive shareability and
    cacheability attributes signals but it is not mandatory for designs to
    wire up the corresponding interconnect signals that control the
    cacheability/shareability of transactions.
    
    Redistributors and ITSes interconnect ports can be connected to
    non-coherent interconnects that are not able to manage the
    shareability/cacheability attributes; this implicitly makes the
    redistributors and ITSes non-coherent observers.
    
    To enable non-coherent GIC designs on ACPI based systems, parse the MADT
    GICC/GICR/ITS subtables non-coherent flags to determine whether the
    respective components are non-coherent observers and force the
    shareability attributes to be programmed into the redistributors and
    ITSes registers.
    
    An ACPI global function (acpi_get_madt_revision()) is added to retrieve
    the MADT revision, in that it is essential to check the MADT revision
    before checking for flags that were added with MADT revision 7 so that
    if the kernel is booted with an ACPI MADT table with revision < 7 it
    skips parsing the newly added flags (that should be zeroed reserved
    values for MADT versions < 7 but they could turn out to be buggy and
    should be ignored).
    Signed-off-by: default avatarLorenzo Pieralisi <lpieralisi@kernel.org>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Reviewed-by: default avatarRobin Murphy <robin.murphy@arm.com>
    Acked-by: default avatarMarc Zyngier <maz@kernel.org>
    Cc: "Rafael J. Wysocki" <rafael@kernel.org>
    Link: https://lore.kernel.org/r/20240606094238.757649-2-lpieralisi@kernel.org
    ababa16f
processor_core.c 11 KB