]> xenbits.xensource.com Git - people/aperard/xen-arm.git/commitdiff
arm: discard boot modules after building domain 0.
authorIan Campbell <ian.campbell@citrix.com>
Mon, 21 Jan 2013 12:40:30 +0000 (12:40 +0000)
committerIan Campbell <ian.campbell@citrix.com>
Mon, 21 Jan 2013 12:40:30 +0000 (12:40 +0000)
Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Tim Deegan <tim@xen.org>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
xen/arch/arm/domain_build.c
xen/arch/arm/setup.c
xen/include/asm-arm/setup.h

index 1e9776d597f2c999d141ae9c4c80095c426398c8..96c346416929c74b9fbd76ae32ff1ab5c1dff339 100644 (file)
@@ -10,6 +10,7 @@
 #include <xen/device_tree.h>
 #include <xen/libfdt/libfdt.h>
 #include <xen/guest_access.h>
+#include <asm/setup.h>
 
 #include <asm/gic.h>
 #include "kernel.h"
@@ -306,6 +307,8 @@ int construct_dom0(struct domain *d)
     dtb_load(&kinfo);
     kernel_load(&kinfo);
 
+    discard_initial_modules();
+
     clear_bit(_VPF_down, &v->pause_flags);
 
     memset(regs, 0, sizeof(*regs));
index e6cefeb4facd774607673f3c8df1c59856c6289a..e1ab7f642a1d69f6e6c41cf8b115b5bbd306954f 100644 (file)
@@ -68,6 +68,22 @@ static void __init processor_id(void)
            READ_CP32(ID_ISAR3), READ_CP32(ID_ISAR4), READ_CP32(ID_ISAR5));
 }
 
+void __init discard_initial_modules(void)
+{
+    struct dt_module_info *mi = &early_info.modules;
+    int i;
+
+    for ( i = 1; i <= mi->nr_mods; i++ )
+    {
+        paddr_t s = mi->module[i].start;
+        paddr_t e = s + PAGE_ALIGN(mi->module[i].size);
+
+        init_domheap_pages(s, e);
+    }
+
+    mi->nr_mods = 0;
+}
+
 /*
  * Returns the end address of the highest region in the range s..e
  * with required size and alignment that does not conflict with the
index 5c843341db80bd70c0eae87e43f414dc6c2d6346..2f91a2140eb65a0875035f17512ebc0a5875ad71 100644 (file)
@@ -11,6 +11,8 @@ void arch_get_xen_caps(xen_capabilities_info_t *info);
 
 int construct_dom0(struct domain *d);
 
+void discard_initial_modules(void);
+
 #endif
 /*
  * Local variables: