> From: Jason Gunthorpe <jgg@xxxxxxxxxx> > Sent: Thursday, November 17, 2022 5:01 AM > +static void batch_skip_carry(struct pfn_batch *batch, unsigned int skip_pfns) > +{ > + if (!batch->total_pfns) > + return; > + skip_pfns = min(batch->total_pfns, skip_pfns); > + batch->pfns[0] += skip_pfns; > + batch->npfns[0] -= skip_pfns; > + batch->total_pfns -= skip_pfns; > +} You forgot to add the assertion which you replied to v4: @@ -239,6 +239,8 @@ static void batch_skip_carry(struct pfn_batch *batch, unsigned int skip_pfns) { if (!batch->total_pfns) return; + if (IS_ENABLED(CONFIG_IOMMUFD_TEST)) + WARN_ON(batch->total_pfns != batch->npfns[0]); skip_pfns = min(batch->total_pfns, skip_pfns); otherwise looks good to me: Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>