diff options
author | Marc Zyngier <maz@kernel.org> | 2019-11-08 12:27:29 +0100 |
---|---|---|
committer | Marc Zyngier <maz@kernel.org> | 2019-11-08 12:27:29 +0100 |
commit | cd7056ae34af0e9424da97bbc7d2b38246ba8a2c (patch) | |
tree | eefb53f37554ebacf3a91a512839b6b6afbe75f4 /virt/kvm/arm/arm.c | |
parent | Merge remote-tracking branch 'kvmarm/kvm-arm64/stolen-time' into kvmarm-maste... (diff) | |
parent | KVM: arm64: Opportunistically turn off WFI trapping when using direct LPI inj... (diff) | |
download | linux-cd7056ae34af0e9424da97bbc7d2b38246ba8a2c.tar.xz linux-cd7056ae34af0e9424da97bbc7d2b38246ba8a2c.zip |
Merge remote-tracking branch 'kvmarm/misc-5.5' into kvmarm/next
Diffstat (limited to 'virt/kvm/arm/arm.c')
-rw-r--r-- | virt/kvm/arm/arm.c | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/virt/kvm/arm/arm.c b/virt/kvm/arm/arm.c index c11d6613f4ee..12e0280291ce 100644 --- a/virt/kvm/arm/arm.c +++ b/virt/kvm/arm/arm.c @@ -348,20 +348,24 @@ void kvm_arch_vcpu_blocking(struct kvm_vcpu *vcpu) /* * If we're about to block (most likely because we've just hit a * WFI), we need to sync back the state of the GIC CPU interface - * so that we have the lastest PMR and group enables. This ensures + * so that we have the latest PMR and group enables. This ensures * that kvm_arch_vcpu_runnable has up-to-date data to decide * whether we have pending interrupts. + * + * For the same reason, we want to tell GICv4 that we need + * doorbells to be signalled, should an interrupt become pending. */ preempt_disable(); kvm_vgic_vmcr_sync(vcpu); + vgic_v4_put(vcpu, true); preempt_enable(); - - kvm_vgic_v4_enable_doorbell(vcpu); } void kvm_arch_vcpu_unblocking(struct kvm_vcpu *vcpu) { - kvm_vgic_v4_disable_doorbell(vcpu); + preempt_disable(); + vgic_v4_load(vcpu); + preempt_enable(); } int kvm_arch_vcpu_init(struct kvm_vcpu *vcpu) @@ -412,9 +416,9 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) kvm_make_request(KVM_REQ_RECORD_STEAL, vcpu); if (single_task_running()) - vcpu_clear_wfe_traps(vcpu); + vcpu_clear_wfx_traps(vcpu); else - vcpu_set_wfe_traps(vcpu); + vcpu_set_wfx_traps(vcpu); vcpu_ptrauth_setup_lazy(vcpu); } |