[PATCH] riscv: kvm: move preempt_disable() call in kvm_arch_vcpu_ioctl_run

Anup Patel anup at brainfault.org
Mon Jul 4 02:13:08 PDT 2022


On Fri, Jul 1, 2022 at 3:19 PM Nikolay Borisov <nborisov at suse.com> wrote:
>
> 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 at suse.com>

Looks good to me.

I have queued it for 5.20

Thanks,
Anup

> ---
>  arch/riscv/kvm/vcpu.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/arch/riscv/kvm/vcpu.c b/arch/riscv/kvm/vcpu.c
> index 7f4ad5e4373a..0c527b2c3c63 100644
> --- a/arch/riscv/kvm/vcpu.c
> +++ b/arch/riscv/kvm/vcpu.c
> @@ -888,8 +888,6 @@ int kvm_arch_vcpu_ioctl_run(struct kvm_vcpu *vcpu)
>
>                 kvm_riscv_check_vcpu_requests(vcpu);
>
> -               preempt_disable();
> -
>                 local_irq_disable();
>
>                 /*
> @@ -926,7 +924,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;
>                 }
> @@ -960,6 +957,7 @@ 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
> --
> 2.25.1
>



More information about the kvm-riscv mailing list