On Fri, 2023-08-11 at 14:48 -0700, Dexuan Cui wrote: > When a TDX guest runs on Hyper-V, the hv_netvsc driver's > netvsc_init_buf() > allocates buffers using vzalloc(), and needs to share the buffers > with the > host OS by calling set_memory_decrypted(), which is not working for > vmalloc() yet. Add the support by handling the pages one by one. > > Co-developed-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx> > Reviewed-by: Michael Kelley <mikelley@xxxxxxxxxxxxx> > Reviewed-by: Kuppuswamy Sathyanarayanan > <sathyanarayanan.kuppuswamy@xxxxxxxxxxxxxxx> > Signed-off-by: Dexuan Cui <decui@xxxxxxxxxxxxx> > --- > arch/x86/coco/tdx/tdx.c | 36 ++++++++++++++++++++++++++++++------ > 1 file changed, 30 insertions(+), 6 deletions(-) Reviewed-by: Rick Edgecombe <rick.p.edgecombe@xxxxxxxxx> Only small comment, it is possible to have huge vmalloc's now, which would mean this would do 512 TDVMCALL_MAP_GPA calls instead of 1 when encountering a huge vmalloc mapping. If this used lookup_address() directly instead of slow_virt_to_phys(), it could catch this case. I don't think there are any cases of huge vmallocs today that would get passed into set_memory_en/decrypted(), so would only be future proofing.