Thread (32 messages) 32 messages, 5 authors, 2021-03-04

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.


Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help