On 10/30/24 12:00, Rick Edgecombe wrote: > +u64 tdh_mng_create(u64 tdr, u64 hkid) > +{ > + struct tdx_module_args args = { > + .rcx = tdr, > + .rdx = hkid, > + }; > + clflush_cache_range(__va(tdr), PAGE_SIZE); > + return seamcall(TDH_MNG_CREATE, &args); > +} > +EXPORT_SYMBOL_GPL(tdh_mng_create); I'd _prefer_ that this explain why the clflush is there. The other goofy thing here is why it's getting a physical address passed in. It's my old 32-bit paranoia kicking in, but everything that has a valid virtual address _also_ has a valid physical address. The inverse is not true, though. So I like to keep things as pointers as long as possible.