On Wed, 30 Mar 2022 at 08:04, Sean Christopherson <seanjc@xxxxxxxxxx> wrote: > > On Fri, Mar 25, 2022, Wanpeng Li wrote: > > From: Wanpeng Li <wanpengli@xxxxxxxxxxx> > > > > Let's get the information whether or not guests disable interruptions. > > This is missing critical information for _why_. It took me some staring to > understand that this allows querying IRQs from a _different_ vCPU, which needs > caching on VMX due to the need to do a VMREAD. Yes. > > > Signed-off-by: Wanpeng Li <wanpengli@xxxxxxxxxxx> > > --- > > arch/x86/include/asm/kvm_host.h | 1 + > > arch/x86/kvm/x86.c | 3 +++ > > 2 files changed, 4 insertions(+) > > > > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h > > index 50f011a7445a..8e05cbfa9827 100644 > > --- a/arch/x86/include/asm/kvm_host.h > > +++ b/arch/x86/include/asm/kvm_host.h > > @@ -861,6 +861,7 @@ struct kvm_vcpu_arch { > > bool preempt_count_enabled; > > struct gfn_to_hva_cache preempt_count_cache; > > } pv_pc; > > + bool irq_disabled; > > This is going to at best be confusing, and at worst lead to bugs The flag is > valid if and only if the vCPU is not loaded. I don't have a clever answer, but > this needs to have some form of guard to (a) clarify when it's valid and (b) actively > prevent misuse. How about renaming it to last_guest_irq_disabled and comments as /* Guest irq disabled state, valid iff the vCPU is not loaded */ Wanpeng