diff options
author | Keir Fraser <keir@xen.org> | 2010-11-09 11:49:49 +0000 |
---|---|---|
committer | Keir Fraser <keir@xen.org> | 2010-11-09 11:49:49 +0000 |
commit | 5a771800114c437fb857b44b3ed74f60e87979c2 (patch) | |
tree | a9a1089b753cdfb65757b08c6406d1721d989ad3 /xen/xsm/xsm_core.c | |
parent | e04aea7477c379e904e7520bdfa2f42284427a97 (diff) | |
download | xen-5a771800114c437fb857b44b3ed74f60e87979c2.tar.gz xen-5a771800114c437fb857b44b3ed74f60e87979c2.tar.bz2 xen-5a771800114c437fb857b44b3ed74f60e87979c2.zip |
x86: do away with the boot time low-memory 1:1 mapping
By doing so, we're no longer restricted to be able to place all boot
loader modules into the low 1Gb/4Gb (32-/64-bit) of memory, nor is
there a dependency anymore on where the boot loader places the
modules.
We're also no longer restricted to copy the modules into a place below
4Gb, nor to put them all together into a single piece of memory.
Further it allows even the 32-bit Dom0 kernel to be loaded anywhere in
physical memory (except if it doesn't support PAE-above-4G).
Signed-off-by: Jan Beulich <jbeulich@novell.com>
Diffstat (limited to 'xen/xsm/xsm_core.c')
-rw-r--r-- | xen/xsm/xsm_core.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/xen/xsm/xsm_core.c b/xen/xsm/xsm_core.c index e55f25b5d9..b3d5a5b4f0 100644 --- a/xen/xsm/xsm_core.c +++ b/xen/xsm/xsm_core.c @@ -47,7 +47,7 @@ static void __init do_xsm_initcalls(void) } int __init xsm_init(unsigned int *initrdidx, const multiboot_info_t *mbi, - unsigned long initial_images_start) + void *(*bootstrap_map)(const module_t *)) { int ret = 0; @@ -55,9 +55,10 @@ int __init xsm_init(unsigned int *initrdidx, const multiboot_info_t *mbi, if ( XSM_MAGIC ) { - ret = xsm_policy_init(initrdidx, mbi, initial_images_start); + ret = xsm_policy_init(initrdidx, mbi, bootstrap_map); if ( ret ) { + bootstrap_map(NULL); printk("%s: Error initializing policy.\n", __FUNCTION__); return -EINVAL; } @@ -65,6 +66,7 @@ int __init xsm_init(unsigned int *initrdidx, const multiboot_info_t *mbi, if ( verify(&dummy_xsm_ops) ) { + bootstrap_map(NULL); printk("%s could not verify " "dummy_xsm_ops structure.\n", __FUNCTION__); return -EIO; @@ -72,6 +74,7 @@ int __init xsm_init(unsigned int *initrdidx, const multiboot_info_t *mbi, xsm_ops = &dummy_xsm_ops; do_xsm_initcalls(); + bootstrap_map(NULL); return 0; } |