From 3d71c6a8eba05886c3dc88e7442fcf230d7b03eb Mon Sep 17 00:00:00 2001 From: Balazs Gerofi Date: Wed, 3 Feb 2021 10:24:36 +0900 Subject: [PATCH] mcexec_transfer_image(): map exact size of remote memory (instead of forcing PAGE_SIZE) Change-Id: Ic66770af6cdb15b7a2e18a08cbcd1736e5558bdf --- executer/kernel/mcctrl/control.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/executer/kernel/mcctrl/control.c b/executer/kernel/mcctrl/control.c index c2ea5095..c147d62d 100644 --- a/executer/kernel/mcctrl/control.c +++ b/executer/kernel/mcctrl/control.c @@ -270,16 +270,17 @@ int mcexec_transfer_image(ihk_os_t os, struct remote_transfer *__user upt) return -EFAULT; } +#ifdef CONFIG_MIC if (pt.size > PAGE_SIZE) { printk("mcexec_transfer_image(): ERROR: size exceeds PAGE_SIZE\n"); return -EFAULT; } - + phys = ihk_device_map_memory(ihk_os_to_dev(os), pt.rphys, PAGE_SIZE); -#ifdef CONFIG_MIC rpm = ioremap_wc(phys, PAGE_SIZE); #else - rpm = ihk_device_map_virtual(ihk_os_to_dev(os), phys, PAGE_SIZE, NULL, 0); + phys = ihk_device_map_memory(ihk_os_to_dev(os), pt.rphys, pt.size); + rpm = ihk_device_map_virtual(ihk_os_to_dev(os), phys, pt.size, NULL, 0); #endif if (!rpm) { @@ -304,10 +305,11 @@ int mcexec_transfer_image(ihk_os_t os, struct remote_transfer *__user upt) #ifdef CONFIG_MIC iounmap(rpm); + ihk_device_unmap_memory(ihk_os_to_dev(os), phys, PAGE_SIZE); #else - ihk_device_unmap_virtual(ihk_os_to_dev(os), rpm, PAGE_SIZE); + ihk_device_unmap_virtual(ihk_os_to_dev(os), rpm, pt.size); + ihk_device_unmap_memory(ihk_os_to_dev(os), phys, pt.size); #endif - ihk_device_unmap_memory(ihk_os_to_dev(os), phys, PAGE_SIZE); return ret;