[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] RE: [PATCH v3 1/3] x86/vmx: implement VMExit based guest Bus Lock detection
> From: Roger Pau Monné <roger.pau@xxxxxxxxxx> > Sent: Monday, July 4, 2022 6:07 PM > > On Mon, Jul 04, 2022 at 11:27:37AM +0200, Jan Beulich wrote: > > On 01.07.2022 15:16, Roger Pau Monne wrote: > > > --- a/xen/arch/x86/hvm/vmx/vmx.c > > > +++ b/xen/arch/x86/hvm/vmx/vmx.c > > > @@ -4065,6 +4065,11 @@ void vmx_vmexit_handler(struct > cpu_user_regs *regs) > > > > > > if ( unlikely(exit_reason & VMX_EXIT_REASONS_FAILED_VMENTRY) ) > > > return vmx_failed_vmentry(exit_reason, regs); > > > + if ( unlikely(exit_reason & VMX_EXIT_REASONS_BUS_LOCK) ) > > > + { > > > + perfc_incr(buslock); > > > + exit_reason &= ~VMX_EXIT_REASONS_BUS_LOCK; > > > + } > > > > To cover for the flag bit, don't you also need to mask it off in > > nvmx_idtv_handling()? Or (didn't go into detail with checking whether > > there aren't any counter indications) pass the exit reason there from > > vmx_vmexit_handler(), instead of re-reading it from the VMCS? > > This seem to be an existing issue with nvmx_idtv_handling(), as it > should use just the low 16bits to check against the VM Exit reason > codes. > > I can send a pre-patch to fix it, could pass exit reason from > vmx_vmexit_handler(), but I would still need to cast to uint16_t for > comparing against exit reason codes, as there's a jump into the 'out' > label before VMX_EXIT_REASONS_BUS_LOCK is masked out. or just masking out the bit in an earlier place which then also covers nvmx_n2_vmexit_handler() below? There are a few other goto's and return's before the point where that bit is currently masked out. Having bus lock counted even in those failure paths is also not a bad thing imho... > > I think there's a similar issue with nvmx_n2_vmexit_handler() that > doesn't cast the value to uint16_t and is called before > VMX_EXIT_REASONS_BUS_LOCK is removed from exit reason. >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |