From: Alistair Popple apopple@nvidia.com Sent: Thursday, February 25, 2021 11:19 PM To: linux-mm@kvack.org; nouveau@lists.freedesktop.org; bskeggs@redhat.com; akpm@linux-foundation.org Cc: linux-doc@vger.kernel.org; linux-kernel@vger.kernel.org; dri- devel@lists.freedesktop.org; John Hubbard jhubbard@nvidia.com; Ralph Campbell rcampbell@nvidia.com; jglisse@redhat.com; Jason Gunthorpe jgg@nvidia.com; hch@infradead.org; daniel@ffwll.ch; Alistair Popple apopple@nvidia.com Subject: [PATCH v3 6/8] mm: Selftests for exclusive device memory
Adds some selftests for exclusive device memory.
Signed-off-by: Alistair Popple apopple@nvidia.com
One minor nit below, but you can add Tested-by: Ralph Campbell rcampbell@nvidia.com Reviewed-by: Ralph Campbell rcampbell@nvidia.com
+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.