On Tue, Jan 12, 2021, Yang Weijiang wrote: > On Mon, Jan 11, 2021 at 02:25:59PM -0800, Sean Christopherson wrote: > > On Sun, Jan 10, 2021, Yang Weijiang wrote: > > > When the application is tested on a machine with 52bit-physical-address, the > > > synthesized 52bit GPA triggers EPT(4-Level) fast_page_fault infinitely. > > > > That doesn't sound right, KVM should use 5-level EPT if guest maxpa > 48. > > Hmm, unless the CPU doesn't support 5-level EPT, but I didn't think such CPUs > > (maxpa=52 w/o 5-level EPT) existed? Ah, but it would be possible with nested > > VMX, and initial KVM 5-level support didn't allow nested 5-level EPT. Any > > chance you're running this test in a VM with 5-level EPT disabled, but maxpa=52? > > > Hi, Sean, > Thanks for the reply! > I use default settings of the unit-test + 5.2.0 QEMU + 5.10 kernel, in The default settings are supposed to set guest.MAXPA = host.MAXPA. At least, I assume that's the purpose of '-cpu max'. Maybe your copy of kvm-unit-tests' x86/unittests.cfg is stale? [access] file = access.flat arch = x86_64 extra_params = -cpu max timeout = 180 > this case, QEMU uses cpu->phys_bits==40, so the guest's PA=40bit and > LA=57bit, hence 5-level EPT is not enabled. My physical machine is PA=52 > and LA=57 as can checked from cpuid: > cpuid -1r -l 0x80000008 -s 0 > CPU: > 0x80000008 0x00: eax=0x00003934 ... > There're two other ways to w/a this issue: 1) change the QEMU params to > to extra_params = -cpu host,host-phys-bits, so guest's PA=52 and LA=57, > this will enable 5-level EPT, meanwhile, it escapes the problematic GPA > by adding AC_*_BIT51_MASK in invalid_mask. > > 2) add allow_smaller_maxphyaddr=1 to kvm-intel module. Setting allow_smaller_maxphyaddr=1 is the correct answer.