• Lorenzo Pieralisi's avatar
    irqchip/gic-v3: Enable non-coherent redistributors/ITSes DT probing · 3a0fff0f
    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 and related IWB/OWB/ISH barriers
    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.
    
    So far, the GIC driver on probe executes a write to "probe" for
    the redistributors and ITSes registers shareability bitfields
    by writing a value (ie InnerShareable - the shareability domain the
    CPUs are in) and check it back to detect whether the value sticks or
    not; this hinges on a GIC programming model behaviour that predates the
    current specifications, that just define shareability bits as writeable
    but do not guarantee that writing certain shareability values
    enable the expected behaviour for the redistributors/ITSes
    memory interconnect ports.
    
    To enable non-coherent GIC designs, introduce the "dma-noncoherent"
    device tree property to allow firmware to describe redistributors and
    ITSes as non-coherent observers on the memory interconnect and use the
    property to force the shareability attributes to be programmed into the
    redistributors and ITSes registers through the GIC quirks mechanism.
    Signed-off-by: default avatarLorenzo Pieralisi <lpieralisi@kernel.org>
    Cc: Robin Murphy <robin.murphy@arm.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Marc Zyngier <maz@kernel.org>
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20231006125929.48591-3-lpieralisi@kernel.org
    3a0fff0f
irq-gic-v3.c 66 KB