On Fri, Jul 15, 2022, Yu Zhang wrote: > Although currently vmx_pf_exception_test can succeed, its > success is actually because we are using identical mappings > in the page tables and EB.PF is not set by L1. In practice, > the #PFs shall be expected by L1, if it is using shadowing > for L2. I'm a bit lost. Is there an actual failure somewhere? AFAICT, this passes when run as L1 or L2, with or without EPT enabled. > So just set up the EPT, and clear the EB.PT, then L1 has the > right to claim a failure if a #PF is encountered. > > Signed-off-by: Yu Zhang <yu.c.zhang@xxxxxxxxxxxxxxx> > --- > x86/vmx_tests.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/x86/vmx_tests.c b/x86/vmx_tests.c > index 4d581e7..cc90611 100644 > --- a/x86/vmx_tests.c > +++ b/x86/vmx_tests.c > @@ -10639,6 +10639,17 @@ static void __vmx_pf_exception_test(invalidate_tlb_t inv_fn, void *data) > > static void vmx_pf_exception_test(void) > { > + u32 eb; > + > + if (setup_ept(false)) { > + printf("EPT not supported.\n"); > + return; > + } > + > + eb = vmcs_read(EXC_BITMAP); > + eb &= ~(1 << PF_VECTOR); > + vmcs_write(EXC_BITMAP, eb); > + > __vmx_pf_exception_test(NULL, NULL); > } > > -- > 2.25.1 >