• Zenghui Yu's avatar
    irqchip/gic-v3-its: Use the exact ITSList for VMOVP · 84243125
    Zenghui Yu authored
    On a system without Single VMOVP support (say GITS_TYPER.VMOVP == 0),
    we will map vPEs only on ITSs that will actually control interrupts
    for the given VM.  And when moving a vPE, the VMOVP command will be
    issued only for those ITSs.
    
    But when issuing VMOVPs we seemed fail to present the exact ITSList
    to ITSs who are actually included in the synchronization operation.
    The its_list_map we're currently using includes all ITSs in the system,
    even though some of them don't have the corresponding vPE mapping at all.
    
    Introduce get_its_list() to get the per-VM its_list_map, to indicate
    which ITSs have vPE mappings for the given VM, and use this map as
    the expected ITSList when building VMOVP. This is hopefully a performance
    gain not to do some synchronization with those unsuspecting ITSs.
    And initialize the whole command descriptor to zero at beginning, since
    the seq_num and its_list should be RES0 when GITS_TYPER.VMOVP == 1.
    Signed-off-by: default avatarZenghui Yu <yuzenghui@huawei.com>
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/1571802386-2680-1-git-send-email-yuzenghui@huawei.com
    84243125
irq-gic-v3-its.c 98.1 KB