[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v2 28/40] xen/mpu: map boot module section in MPU system
In MPU system, we could not afford mapping a new MPU memory region with each new guest boot module, it will exhaust limited MPU memory regions very quickly. So we introduce `mpu,boot-module-section` for users to statically configure one big memory section or very few memory sections for all guests' boot mudules. Users shall make sure that any guest boot module defined in Device Tree is within the section, including kernel module(BOOTMOD_KERNEL), device tree passthrough module(BOOTMOD_GUEST_DTB), and ramdisk module(BOOTMOD_RAMDISK). Signed-off-by: Penny Zheng <penny.zheng@xxxxxxx> Signed-off-by: Wei Chen <wei.chen@xxxxxxx> --- xen/arch/arm/include/asm/setup.h | 1 + xen/arch/arm/mm_mpu.c | 2 +- xen/arch/arm/setup_mpu.c | 7 +++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/xen/arch/arm/include/asm/setup.h b/xen/arch/arm/include/asm/setup.h index b7a2225c25..61f24b5848 100644 --- a/xen/arch/arm/include/asm/setup.h +++ b/xen/arch/arm/include/asm/setup.h @@ -195,6 +195,7 @@ struct init_info enum mpu_section_info { MSINFO_GUEST, MSINFO_DEVICE, + MSINFO_BOOTMODULE, MSINFO_MAX }; diff --git a/xen/arch/arm/mm_mpu.c b/xen/arch/arm/mm_mpu.c index 1566ba60af..ea64aa38e4 100644 --- a/xen/arch/arm/mm_mpu.c +++ b/xen/arch/arm/mm_mpu.c @@ -74,6 +74,7 @@ struct page_info *frame_table; static const unsigned int mpu_section_mattr[MSINFO_MAX] = { REGION_HYPERVISOR_SWITCH, REGION_HYPERVISOR_NOCACHE, + REGION_HYPERVISOR_BOOT, }; /* Write a MPU protection region */ @@ -686,7 +687,6 @@ void __init setup_static_mappings(void) #endif map_mpu_memory_section_on_boot(i, mpu_section_mattr[i]); } - /* TODO: boot-module section, etc */ } /* Map a frame table to cover physical addresses ps through pe */ diff --git a/xen/arch/arm/setup_mpu.c b/xen/arch/arm/setup_mpu.c index ec05542f68..160934bf86 100644 --- a/xen/arch/arm/setup_mpu.c +++ b/xen/arch/arm/setup_mpu.c @@ -30,6 +30,7 @@ const char *mpu_section_info_str[MSINFO_MAX] = { "mpu,guest-memory-section", "mpu,device-memory-section", + "mpu,boot-module-section", }; /* @@ -52,6 +53,12 @@ struct mpuinfo __initdata mpuinfo; * "mpu,device-memory-section": this section draws the device memory layout * with the least number of memory regions for all devices in system that will * be used in Xen, like `UART`, `GIC`, etc. + * + * "mpu,boot-module-section": this property uses one big memory section or + * very few memory sections to describe all guests' boot mudules. Users shall + * make sure that any guest boot module defined in Device Tree is within + * the section, including kernel module(BOOTMOD_KERNEL), device tree + * passthrough module(BOOTMOD_GUEST_DTB), and ramdisk module(BOOTMOD_RAMDISK). */ static int __init process_mpu_memory_section(const void *fdt, int node, const char *name, void *data, -- 2.25.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |