• Marc Zyngier's avatar
    irqchip/gic-v3: Use SGIs without active state if offered · 0b04758b
    Marc Zyngier authored
    To allow the direct injection of SGIs into a guest, the GICv4.1
    architecture has to sacrifice the Active state so that SGIs look
    a lot like LPIs (they are injected by the same mechanism).
    
    In order not to break existing software, the architecture gives
    offers guests OSs the choice: SGIs with or without an active
    state. It is the hypervisors duty to honor the guest's choice.
    
    For this, the architecture offers a discovery bit indicating whether
    the GIC supports GICv4.1 SGIs (GICD_TYPER2.nASSGIcap), and another
    bit indicating whether the guest wants Active-less SGIs or not
    (controlled by GICD_CTLR.nASSGIreq).
    
    A hypervisor not supporting GICv4.1 SGIs would leave nASSGIcap
    clear, and a guest not knowing about GICv4.1 SGIs (or definitely
    wanting an Active state) would leave nASSGIreq clear (both being
    thankfully backward compatible with older revisions of the GIC).
    
    Since Linux is perfectly happy without an active state on SGIs,
    inform the hypervisor that we'll use that if offered.
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Reviewed-by: default avatarZenghui Yu <yuzenghui@huawei.com>
    Link: https://lore.kernel.org/r/20200304203330.4967-2-maz@kernel.org
    0b04758b
irq-gic-v3.c 51.9 KB