[PATCH] KVM: arm/arm64: Simplify active_change_prepare and plug race

Andrew Jones drjones at redhat.com
Wed May 10 04:01:46 PDT 2017


On Wed, May 10, 2017 at 12:01:18PM +0200, Christoffer Dall wrote:
> We don't need to stop a specific VCPU when changing the active state,
> because private IRQs can only be modified by a running VCPU for the
> VCPU itself and it is therefore already stopped.
> 
> However, it is also possible for two VCPUs to be modifying the active
> state of SPIs at the same time, which can cause the thread being stuck
> in the loop that checks other VCPU threads for a potentially very long
> time, or to modify the active state of a running VCPU.  Fix this by
> serializing all accesses to setting and clearing the active state of
> interrupts using the KVM mutex.
> 
> Reported-by: Andrew Jones <drjones at redhat.com>
> Signed-off-by: Christoffer Dall <cdall at linaro.org>
> ---
>  arch/arm/include/asm/kvm_host.h   |  2 --
>  arch/arm64/include/asm/kvm_host.h |  2 --
>  virt/kvm/arm/arm.c                | 20 ++++----------------
>  virt/kvm/arm/vgic/vgic-mmio.c     | 18 ++++++++++--------
>  virt/kvm/arm/vgic/vgic.c          | 11 ++++++-----
>  5 files changed, 20 insertions(+), 33 deletions(-)
>
 
Reviewed-by: Andrew Jones <drjones at redhat.com>



More information about the linux-arm-kernel mailing list