Messages in this thread | | | Subject | Re: [PATCH v2 3/7] kvm/arm64: rework guest entry logic | From | Nicolas Saenz Julienne <> | Date | Fri, 21 Jan 2022 18:37:07 +0100 |
| |
On Wed, 2022-01-19 at 10:58 +0000, Mark Rutland wrote: > In kvm_arch_vcpu_ioctl_run() we enter an RCU extended quiescent state > (EQS) by calling guest_enter_irqoff(), and unmasked IRQs prior to > exiting the EQS by calling guest_exit(). As the IRQ entry code will not > wake RCU in this case, we may run the core IRQ code and IRQ handler > without RCU watching, leading to various potential problems. > > Additionally, we do not inform lockdep or tracing that interrupts will > be enabled during guest execution, which caan lead to misleading traces > and warnings that interrupts have been enabled for overly-long periods. > > This patch fixes these issues by using the new timing and context > entry/exit helpers to ensure that interrupts are handled during guest > vtime but with RCU watching, with a sequence: > > guest_timing_enter_irqoff(); > > guest_state_enter_irqoff(); > < run the vcpu > > guest_state_exit_irqoff(); > > < take any pending IRQs > > > guest_timing_exit_irqoff(); > > Since instrumentation may make use of RCU, we must also ensure that no > instrumented code is run during the EQS. I've split out the critical > section into a new kvm_arm_enter_exit_vcpu() helper which is marked > noinstr. > > Fixes: 1b3d546daf85ed2b ("arm/arm64: KVM: Properly account for guest CPU time") > Reported-by: Nicolas Saenz Julienne <nsaenzju@redhat.com> > Signed-off-by: Mark Rutland <mark.rutland@arm.com> > Reviewed-by: Marc Zyngier <maz@kernel.org> > Cc: Alexandru Elisei <alexandru.elisei@arm.com> > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Frederic Weisbecker <frederic@kernel.org> > Cc: James Morse <james.morse@arm.com> > Cc: Paolo Bonzini <pbonzini@redhat.com> > Cc: Paul E. McKenney <paulmck@kernel.org> > Cc: Suzuki K Poulose <suzuki.poulose@arm.com> > Cc: Will Deacon <will@kernel.org> > ---
Reviewed-by: Nicolas Saenz Julienne <nsaenzju@redhat.com>
Thanks,
-- Nicolás Sáenz
| |