On Mon, Nov 20, 2023 at 06:54:07PM +0800, Binbin Wu <binbin.wu@xxxxxxxxxxxxxxx> wrote: > > > On 11/7/2023 11:00 PM, isaku.yamahata@xxxxxxxxx wrote: > > From: Xiaoyao Li <xiaoyao.li@xxxxxxxxx> > > > > For TDX, EPT violation can happen when TDG.MEM.PAGE.ACCEPT. > > And TDG.MEM.PAGE.ACCEPT contains the desired accept page level of TD guest. > > > > 1. KVM can map it with 4KB page while TD guest wants to accept 2MB page. > > > > TD geust will get TDX_PAGE_SIZE_MISMATCH and it should try to accept > s/geust/guest > > > 4KB size. > > > > 2. KVM can map it with 2MB page while TD guest wants to accept 4KB page. > > > > KVM needs to honor it because > > a) there is no way to tell guest KVM maps it as 2MB size. And > > b) guest accepts it in 4KB size since guest knows some other 4KB page > > in the same 2MB range will be used as shared page. > > > > For case 2, it need to pass desired page level to MMU's > > page_fault_handler. Use bit 29:31 of kvm PF error code for this purpose. > > The level info is needed not only for case 2, KVM also needs the info so > that > it can map a 2MB page when TD guest wants to accept a 2MB page. "MMU's page_fault_handler" = KVM MMU page fault handler, isn't it? I'll replace it with KVM MMU page fault handler for clarity. -- Isaku Yamahata <isaku.yamahata@xxxxxxxxxxxxxxx>