Re: [PATCH v3 6/8] mm: Selftests for exclusive device memory
From: Alistair Popple <apopple@nvidia.com>
Date: 2021-03-02 09:49:55
Also in:
dri-devel, linux-mm, lkml, nouveau
On Tuesday, 2 March 2021 10:14:56 AM AEDT Ralph Campbell wrote:
quoted
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 [off-list ref]; Ralph Campbell [off-list ref]; jglisse@redhat.com; Jason Gunthorpe [off-list ref]; hch@infradead.org; daniel@ffwll.ch; Alistair Popple [off-list ref] 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
Thanks Ralph. Will fix that.
Tested-by: Ralph Campbell <redacted> Reviewed-by: Ralph Campbell <redacted>quoted
+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.