• Eric Auger's avatar
    KVM: arm/arm64: Document KVM_DEV_ARM_ITS_CTRL_RESET · ae204f80
    Eric Auger authored
    At the moment, the in-kernel emulated ITS is not properly reset.
    On guest restart/reset some registers keep their old values and
    internal structures like device, ITE, and collection lists are not
    freed.
    
    This may lead to various bugs. Among them, we can have incorrect state
    backup or failure when saving the ITS state at early guest boot stage.
    
    This patch documents a new attribute, KVM_DEV_ARM_ITS_CTRL_RESET in
    the KVM_DEV_ARM_VGIC_GRP_CTRL group.
    
    Upon this action, we can reset registers and especially those
    pointing to tables previously allocated by the guest and free
    the internal data structures storing the list of devices, collections
    and lpis.
    
    The usual approach for device reset of having userspace write
    the reset values of the registers to the kernel via the register
    read/write APIs doesn't work for the ITS because it has some
    internal state (caches) which is not exposed as registers,
    and there is no register interface for "drop cached data without
    writing it back to RAM". So we need a KVM API which mimics the
    hardware's reset line, to provide the equivalent behaviour to
    a "pull the power cord out of the back of the machine" reset.
    Reviewed-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    Reviewed-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Signed-off-by: default avatarEric Auger <eric.auger@redhat.com>
    Reported-by: default avatarwanghaibin <wanghaibin.wang@huawei.com>
    Signed-off-by: default avatarChristoffer Dall <christoffer.dall@linaro.org>
    ae204f80
arm-vgic-its.txt 6.68 KB