On 10/30/24 12:00, Rick Edgecombe wrote: > +u64 tdh_vp_flush(u64 tdvpr) > +{ > + struct tdx_module_args args = { > + .rcx = tdvpr, > + }; > + > + return seamcall(TDH_VP_FLUSH, &args); > +} > +EXPORT_SYMBOL_GPL(tdh_vp_flush); This also just isn't looking right. The 'tdvpr' is a _thing_. It has a type and it came back from some _other_ bit of the same type. So, in the worst case, this could be: struct tdvpr { u64 tdvpr_paddr; }; u64 tdh_vp_flush(struct tdvpr *tdpr) { ... But just passing around physical addresses and then having this things stick it right in to seamcall() doesn't seem like the best we can do.