* Zachary Amsden (zach@vmware.com) wrote:> Allow compile time creation of a hole at the high end of linear address space. > This makes accomodating a hypervisor a much more tractable problem by giving > it ample playground to live in. Currently, the hole size is fixed at config > time; I have experimented with dynamically sized holes, and have a later > patch that developes this potential, but it becomes much more useful once > the exact negotiation of linear address space with the hypervisor is defined. > > The fixed compile time solution is sufficient for now.Xen moves __FIXADDR_TOP like this: #ifdef CONFIG_X86_PAE # define HYPERVISOR_VIRT_START (0xF5800000UL) #else # define HYPERVISOR_VIRT_START (0xFC000000UL) #endif and #define __FIXADDR_TOP (HYPERVISOR_VIRT_START - 2 * PAGE_SIZE) and also adds bits to fixmap. So this proposed mechanism isn't quite good enough. thanks, -chris
Zachary Amsden
2007-Apr-18 17:49 UTC
[PATCH 5/5] Create a hole in high linear address space
Allow compile time creation of a hole at the high end of linear address space. This makes accomodating a hypervisor a much more tractable problem by giving it ample playground to live in. Currently, the hole size is fixed at config time; I have experimented with dynamically sized holes, and have a later patch that developes this potential, but it becomes much more useful once the exact negotiation of linear address space with the hypervisor is defined. The fixed compile time solution is sufficient for now. Signed-off-by: Zachary Amsden <zach@vmware.com> Index: linux-2.6.13/arch/i386/Kconfig ==================================================================--- linux-2.6.13.orig/arch/i386/Kconfig 2005-08-24 09:30:49.000000000 -0700 +++ linux-2.6.13/arch/i386/Kconfig 2005-08-24 09:58:56.000000000 -0700 @@ -803,6 +803,14 @@ config ARCH_SELECT_MEMORY_MODEL def_bool y depends on ARCH_SPARSEMEM_ENABLE +config MEMORY_HOLE + int "Create hole at top of memory (0-512 MB)" + range 0 512 + default "0" + help + Useful for creating a hole in the top of memory when running + inside of a virtual machine monitor. + source "mm/Kconfig" config HAVE_ARCH_EARLY_PFN_TO_NID Index: linux-2.6.13/include/asm-i386/fixmap.h ==================================================================--- linux-2.6.13.orig/include/asm-i386/fixmap.h 2005-08-24 09:30:43.000000000 -0700 +++ linux-2.6.13/include/asm-i386/fixmap.h 2005-08-24 10:04:42.000000000 -0700 @@ -20,7 +20,7 @@ * Leave one empty page between vmalloc'ed areas and * the start of the fixmap. */ -#define __FIXADDR_TOP 0xfffff000 +#define __FIXADDR_TOP (0xfffff000-(CONFIG_MEMORY_HOLE << 20)) #ifndef __ASSEMBLY__ #include <linux/kernel.h>
Possibly Parallel Threads
- [PATCH 5/5] Create a hole in high linear address space
- [RFC, PATCH 7/24] i386 Vmi memory hole
- [RFC, PATCH 7/24] i386 Vmi memory hole
- [PATCH, experimental] i386 Allow the fixmap to be relocated at boot time
- [PATCH, experimental] i386 Allow the fixmap to be relocated at boot time