Hi Julien, > -----Original Message----- > From: Xen-devel <xen-devel-boun...@lists.xenproject.org> On Behalf Of Julien > Grall > Sent: 2022年2月27日 3:30 > To: xen-devel@lists.xenproject.org > Cc: Julien Grall <jgr...@amazon.com>; Stefano Stabellini > <sstabell...@kernel.org>; Bertrand Marquis <bertrand.marq...@arm.com>; > Volodymyr Babchuk <volodymyr_babc...@epam.com> > Subject: Re: [PATCH v3 05/19] xen/arm: mm: Add support for the contiguous bit > > Hi, > > On 21/02/2022 10:22, Julien Grall wrote: > > @@ -1333,21 +1386,34 @@ static int xen_pt_update(unsigned long virt, > > while ( left ) > > { > > unsigned int order, level; > > + unsigned int nr_contig; > > + unsigned int new_flags; > > > > level = xen_pt_mapping_level(vfn, mfn, left, flags); > > order = XEN_PT_LEVEL_ORDER(level); > > > > ASSERT(left >= BIT(order, UL)); > > > > - rc = xen_pt_update_entry(root, pfn_to_paddr(vfn), mfn, level, > > flags); > > - if ( rc ) > > - break; > > + /* > > + * Check if we can set the contiguous mapping and update the > > + * flags accordingly. > > + */ > > + nr_contig = xen_pt_check_contig(vfn, mfn, level, left, flags); > > + new_flags = flags | ((nr_contig > 1) ? _PAGE_CONTIG : 0); > > > > - vfn += 1U << order; > > - if ( !mfn_eq(mfn, INVALID_MFN) ) > > - mfn = mfn_add(mfn, 1U << order); > > + for ( ; nr_contig > 0; nr_contig-- ) > > + { > > + rc = xen_pt_update_entry(root, pfn_to_paddr(vfn), mfn, level, > > + new_flags); > > + if ( rc ) > > + break; > > > > - left -= (1U << order); > > + vfn += 1U << order; > > + if ( !mfn_eq(mfn, INVALID_MFN) ) > > + mfn = mfn_add(mfn, 1U << order); > > + > > + left -= (1U << order); > > + } > > I forgot to add: > > if ( rc ) > break; > > Without it, the outer loop will never exit in case of an error. > > Cheers, > > -- > Julien Grall
Yep, I am happy with that. Reviewed-by: Hongda Deng <hongda.d...@arm.com> Cheers, --- Hongda