Re: [PATCH v13 10/24] gunyah: vm_mgr: Add/remove user memory regions
From: Alex Elder <hidden>
Date: 2023-06-05 19:49:18
Also in:
linux-arm-msm, linux-devicetree, linux-doc, lkml
On 5/9/23 3:47 PM, Elliot Berman wrote:
When launching a virtual machine, Gunyah userspace allocates memory for the guest and informs Gunyah about these memory regions through SET_USER_MEMORY_REGION ioctl. Co-developed-by: Prakruthi Deepak Heragu <redacted> Signed-off-by: Prakruthi Deepak Heragu <redacted> Signed-off-by: Elliot Berman <redacted>
Two minor comments below. In any case: Reviewed-by: Alex Elder <redacted>
quoted hunk
--- drivers/virt/gunyah/Makefile | 2 +- drivers/virt/gunyah/vm_mgr.c | 59 +++++++- drivers/virt/gunyah/vm_mgr.h | 26 ++++ drivers/virt/gunyah/vm_mgr_mm.c | 236 ++++++++++++++++++++++++++++++++ include/uapi/linux/gunyah.h | 37 +++++ 5 files changed, 356 insertions(+), 4 deletions(-) create mode 100644 drivers/virt/gunyah/vm_mgr_mm.cdiff --git a/drivers/virt/gunyah/Makefile b/drivers/virt/gunyah/Makefile index e47e25895299..bacf78b8fa33 100644 --- a/drivers/virt/gunyah/Makefile +++ b/drivers/virt/gunyah/Makefile@@ -1,4 +1,4 @@ # SPDX-License-Identifier: GPL-2.0 -gunyah-y += rsc_mgr.o rsc_mgr_rpc.o vm_mgr.o +gunyah-y += rsc_mgr.o rsc_mgr_rpc.o vm_mgr.o vm_mgr_mm.o obj-$(CONFIG_GUNYAH) += gunyah.odiff --git a/drivers/virt/gunyah/vm_mgr.c b/drivers/virt/gunyah/vm_mgr.c index a43401cb34f7..297427952b8c 100644 --- a/drivers/virt/gunyah/vm_mgr.c +++ b/drivers/virt/gunyah/vm_mgr.c@@ -15,6 +15,8 @@ #include "vm_mgr.h" +static void gh_vm_free(struct work_struct *work); +
You could just define gh_vm_free() here rather than declaring and defining it later.
static __must_check struct gh_vm *gh_vm_alloc(struct gh_rm *rm)
{
struct gh_vm *ghvm;. . .
quoted hunk
diff --git a/drivers/virt/gunyah/vm_mgr_mm.c b/drivers/virt/gunyah/vm_mgr_mm.c new file mode 100644 index 000000000000..91109bbf36b3 --- /dev/null +++ b/drivers/virt/gunyah/vm_mgr_mm.c@@ -0,0 +1,236 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#define pr_fmt(fmt) "gh_vm_mgr: " fmt + +#include <linux/gunyah_rsc_mgr.h> +#include <linux/mm.h> + +#include <uapi/linux/gunyah.h> + +#include "vm_mgr.h" + +static bool pages_are_mergeable(struct page *a, struct page *b) +{ + if (page_to_pfn(a) + 1 != page_to_pfn(b)) + return false; + if (!zone_device_pages_have_same_pgmap(a, b)) + return false; + return true;
Maybe just: return zone_device_pages_have_same_pgmap(a, b);
+}
+
+static bool gh_vm_mem_overlap(struct gh_vm_mem *a, u64 addr, u64 size)
+{
+ u64 a_end = a->guest_phys_addr + (a->npages << PAGE_SHIFT);
+ u64 end = addr + size;
+
+ return a->guest_phys_addr < end && addr < a_end;
+}
+. . . _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel