aboutsummaryrefslogtreecommitdiff
path: root/arch/riscv/kvm/vcpu.c
diff options
context:
space:
mode:
authorGravatar Nikolay Borisov <nborisov@suse.com> 2022-07-29 17:14:34 +0530
committerGravatar Anup Patel <anup@brainfault.org> 2022-07-29 17:14:34 +0530
commitfe283e5fa1edc59f37265c91dc79bf119a5ccc79 (patch)
treedef954797f752f38b73801d11963b807aa11a282 /arch/riscv/kvm/vcpu.c
parentRISC-V: KVM: Make kvm_riscv_guest_timer_init a void function (diff)
downloadlinux-fe283e5fa1edc59f37265c91dc79bf119a5ccc79.tar.gz
linux-fe283e5fa1edc59f37265c91dc79bf119a5ccc79.tar.bz2
linux-fe283e5fa1edc59f37265c91dc79bf119a5ccc79.zip
RISC-V: KVM: move preempt_disable() call in kvm_arch_vcpu_ioctl_run
local_irq_disable provides stronger guarantees than preempt_disable so calling the latter is redundant when interrupts are disabled. Instead, explicitly disable preemption right before interrupts are enabled/disabled to ensure that the time accounted in guest_timing_exit_irqoff includes time taken by the guest or interrupts. Signed-off-by: Nikolay Borisov <nborisov@suse.com> Signed-off-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'arch/riscv/kvm/vcpu.c')
-rw-r--r--arch/riscv/kvm/vcpu.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/arch/riscv/kvm/vcpu.c b/arch/riscv/kvm/vcpu.c
index 5d42c50aedcb..a3c051cb070c 100644
--- a/arch/riscv/kvm/vcpu.c
+++ b/arch/riscv/kvm/vcpu.c
@@ -936,8 +936,6 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
kvm_riscv_check_vcpu_requests(vcpu);
- preempt_disable();
-
local_irq_disable();
/*
@@ -974,7 +972,6 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
kvm_request_pending(vcpu)) {
vcpu->mode = OUTSIDE_GUEST_MODE;
local_irq_enable();
- preempt_enable();
kvm_vcpu_srcu_read_lock(vcpu);
continue;
}
@@ -1008,6 +1005,8 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
/* Syncup interrupts state with HW */
kvm_riscv_vcpu_sync_interrupts(vcpu);
+ preempt_disable();
+
/*
* We must ensure that any pending interrupts are taken before
* we exit guest timing so that timer ticks are accounted as