On Tue, Jan 12, 2021 at 09:01:43AM -0800, Sean Christopherson wrote: > 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 > Yes, I used the default max option, but looks like guest max physical address is forgotten somehow in this case. Anyway, I dropped a patch to QEMU community to enable it. > > 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.