On Tuesday, 2 March 2021 10:14:56 AM AEDT Ralph Campbell wrote: > > From: Alistair Popple <apopple@xxxxxxxxxx> > > Sent: Thursday, February 25, 2021 11:19 PM > > To: linux-mm@xxxxxxxxx; nouveau@xxxxxxxxxxxxxxxxxxxxx; > > bskeggs@xxxxxxxxxx; akpm@xxxxxxxxxxxxxxxxxxxx > > Cc: linux-doc@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; dri- > > devel@xxxxxxxxxxxxxxxxxxxxx; John Hubbard <jhubbard@xxxxxxxxxx>; Ralph > > Campbell <rcampbell@xxxxxxxxxx>; jglisse@xxxxxxxxxx; Jason Gunthorpe > > <jgg@xxxxxxxxxx>; hch@xxxxxxxxxxxxx; daniel@xxxxxxxx; Alistair Popple > > <apopple@xxxxxxxxxx> > > Subject: [PATCH v3 6/8] mm: Selftests for exclusive device memory > > > > Adds some selftests for exclusive device memory. > > > > Signed-off-by: Alistair Popple <apopple@xxxxxxxxxx> > > One minor nit below, but you can add Thanks Ralph. Will fix that. > Tested-by: Ralph Campbell <rcampbell@xxxxxxxxxx> > Reviewed-by: Ralph Campbell <rcampbell@xxxxxxxxxx> > > > +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. > >