mcexec_transfer_image(): map exact size of remote memory (instead of forcing PAGE_SIZE)
Change-Id: Ic66770af6cdb15b7a2e18a08cbcd1736e5558bdf
This commit is contained in:
committed by
Masamichi Takagi
parent
1cea75dd51
commit
3d71c6a8eb
@@ -270,16 +270,17 @@ int mcexec_transfer_image(ihk_os_t os, struct remote_transfer *__user upt)
|
|||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_MIC
|
||||||
if (pt.size > PAGE_SIZE) {
|
if (pt.size > PAGE_SIZE) {
|
||||||
printk("mcexec_transfer_image(): ERROR: size exceeds PAGE_SIZE\n");
|
printk("mcexec_transfer_image(): ERROR: size exceeds PAGE_SIZE\n");
|
||||||
return -EFAULT;
|
return -EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
phys = ihk_device_map_memory(ihk_os_to_dev(os), pt.rphys, PAGE_SIZE);
|
phys = ihk_device_map_memory(ihk_os_to_dev(os), pt.rphys, PAGE_SIZE);
|
||||||
#ifdef CONFIG_MIC
|
|
||||||
rpm = ioremap_wc(phys, PAGE_SIZE);
|
rpm = ioremap_wc(phys, PAGE_SIZE);
|
||||||
#else
|
#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
|
#endif
|
||||||
|
|
||||||
if (!rpm) {
|
if (!rpm) {
|
||||||
@@ -304,10 +305,11 @@ int mcexec_transfer_image(ihk_os_t os, struct remote_transfer *__user upt)
|
|||||||
|
|
||||||
#ifdef CONFIG_MIC
|
#ifdef CONFIG_MIC
|
||||||
iounmap(rpm);
|
iounmap(rpm);
|
||||||
#else
|
|
||||||
ihk_device_unmap_virtual(ihk_os_to_dev(os), rpm, PAGE_SIZE);
|
|
||||||
#endif
|
|
||||||
ihk_device_unmap_memory(ihk_os_to_dev(os), phys, PAGE_SIZE);
|
ihk_device_unmap_memory(ihk_os_to_dev(os), phys, PAGE_SIZE);
|
||||||
|
#else
|
||||||
|
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
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user