On Thu, Oct 24, 2024 at 09:31:01AM +0530, Neeraj Upadhyay wrote: > Please let me know if I didn't understand your questions correctly. The performance > concerns here are w.r.t. these backing page allocations being part of a single > hugepage. > > Grouping of allocation together allows these pages to be part of the same 2M NPT > and RMP table entry, which can provide better performance compared to having > separate 4K entries for each backing page. For example, to send IPI to target CPUs, > ->send_IPI callback (executing on source CPU) in Secure AVIC driver writes to the > backing page of target CPU. Having these backing pages as part of the single > 2M entry could provide better caching of the translation and require single entry > in TLB at the source CPU. Lemme see if I understand you correctly: you want a single 2M page to contain *all* backing pages so that when the HV wants to send IPIs etc, the first vCPU will load the page translation into the TLB and the following ones will have it already? Versus having separate 4K pages which would mean that everytime a vCPU's backing page is needed, every vCPU would have to do a TLB walk and pull it in so that the mapping's there? Am I close? If so, what's the problem with loading that backing page each time you VMRUN the vCPU? IOW, how noticeable would that be? And what guarantees that the 2M page containing the backing pages would always remain in the TLB? Hmmm. -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette