On Tuesday, 2 March 2021 10:14:56 AM AEDT Ralph Campbell wrote: > > From: Alistair Popple <[email protected]> > > Sent: Thursday, February 25, 2021 11:19 PM > > To: [email protected]; [email protected]; > > [email protected]; [email protected] > > Cc: [email protected]; [email protected]; dri- > > [email protected]; John Hubbard <[email protected]>; Ralph > > Campbell <[email protected]>; [email protected]; Jason Gunthorpe > > <[email protected]>; [email protected]; [email protected]; Alistair Popple > > <[email protected]> > > Subject: [PATCH v3 6/8] mm: Selftests for exclusive device memory > > > > Adds some selftests for exclusive device memory. > > > > Signed-off-by: Alistair Popple <[email protected]> > > One minor nit below, but you can add
Thanks Ralph. Will fix that. > Tested-by: Ralph Campbell <[email protected]> > Reviewed-by: Ralph Campbell <[email protected]> > > > +static int dmirror_exclusive(struct dmirror *dmirror, > > + struct hmm_dmirror_cmd *cmd) > > +{ > > + unsigned long start, end, addr; > > + unsigned long size = cmd->npages << PAGE_SHIFT; > > + struct mm_struct *mm = dmirror->notifier.mm; > > + struct page *pages[64]; > > + struct dmirror_bounce bounce; > > + unsigned long next; > > + int ret; > > + > > + start = cmd->addr; > > + end = start + size; > > + if (end < start) > > + return -EINVAL; > > + > > + /* Since the mm is for the mirrored process, get a reference first. */ > > + if (!mmget_not_zero(mm)) > > + return -EINVAL; > > + > > + mmap_read_lock(mm); > > + for (addr = start; addr < end; addr = next) { > > + int i, mapped; > > + > > + if (end < addr + (64 << PAGE_SHIFT)) > > + next = end; > > + else > > + next = addr + (64 << PAGE_SHIFT); > > I suggest using ARRAY_SIZE(pages) instead of '64' to make the meaning clear. > >

