Re: [RFC PATCH v2 03/23] x86/tdx: Enhance tdh_phymem_page_wbinvd_hkid() to invalidate huge pages

From: Yan Zhao

Date: Wed Nov 12 2025 - 03:45:50 EST


On Tue, Nov 11, 2025 at 05:23:30PM +0800, Huang, Kai wrote:
> On Thu, 2025-08-07 at 17:42 +0800, Yan Zhao wrote:
> > -u64 tdh_phymem_page_wbinvd_hkid(u64 hkid, struct page *page)
> > +u64 tdh_phymem_page_wbinvd_hkid(u64 hkid, struct folio *folio,
> > + unsigned long start_idx, unsigned long npages)
> >  {
> > + struct page *start = folio_page(folio, start_idx);
> >   struct tdx_module_args args = {};
> > + u64 err;
> > +
> > + if (start_idx + npages > folio_nr_pages(folio))
> > + return TDX_OPERAND_INVALID;
> >  
> > - args.rcx = mk_keyed_paddr(hkid, page);
> > + for (unsigned long i = 0; i < npages; i++) {
> > + args.rcx = mk_keyed_paddr(hkid, nth_page(start, i));
> >  
>
> Just FYI: seems there's a series to remove nth_page() completely:
>
> https://lore.kernel.org/kvm/20250901150359.867252-1-david@xxxxxxxxxx/
Ah, thanks!
Then we can get rid of the "unsigned long i".

- for (unsigned long i = 0; i < npages; i++) {
- args.rcx = mk_keyed_paddr(hkid, nth_page(start, i));
+ while (npages--) {
+ args.rcx = mk_keyed_paddr(hkid, start++);