# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Node ID e343f1850be0229a6cd5dbcbc71a421f4ecc8906
# Parent 73ef90055339056c6f84aa6da24b61ae748c6302
[MINIOS] Move initialisation of events (masking event channels)
earlier during the boot process. Otherwise 64bit guests would
sometimes crash.
Signed-off-by: Grzegorz Milos <gm281@xxxxxxxxx>
---
extras/mini-os/include/x86/os.h | 2 ++
extras/mini-os/kernel.c | 6 +++---
extras/mini-os/mm.c | 7 ++-----
3 files changed, 7 insertions(+), 8 deletions(-)
diff -r 73ef90055339 -r e343f1850be0 extras/mini-os/include/x86/os.h
--- a/extras/mini-os/include/x86/os.h Thu Nov 16 18:29:06 2006 +0000
+++ b/extras/mini-os/include/x86/os.h Fri Nov 17 09:16:27 2006 +0000
@@ -18,6 +18,8 @@
#ifndef __ASSEMBLY__
#include <types.h>
#include <hypervisor.h>
+
+#define USED __attribute__ ((used))
extern void do_exit(void);
#define BUG do_exit
diff -r 73ef90055339 -r e343f1850be0 extras/mini-os/kernel.c
--- a/extras/mini-os/kernel.c Thu Nov 16 18:29:06 2006 +0000
+++ b/extras/mini-os/kernel.c Fri Nov 17 09:16:27 2006 +0000
@@ -116,6 +116,9 @@ void start_kernel(start_info_t *si)
printk(" cmd_line: %s\n",
si->cmd_line ? (const char *)si->cmd_line : "NULL");
+ /* Set up events. */
+ init_events();
+
arch_print_info();
setup_xen_features();
@@ -123,9 +126,6 @@ void start_kernel(start_info_t *si)
/* Init memory management. */
init_mm();
- /* Set up events. */
- init_events();
-
/* Init time and timers. */
init_time();
diff -r 73ef90055339 -r e343f1850be0 extras/mini-os/mm.c
--- a/extras/mini-os/mm.c Thu Nov 16 18:29:06 2006 +0000
+++ b/extras/mini-os/mm.c Fri Nov 17 09:16:27 2006 +0000
@@ -148,7 +148,7 @@ static chunk_head_t free_tail[FREELIST_
* Prints allocation[0/1] for @nr_pages, starting at @start
* address (virtual).
*/
-static void print_allocation(void *start, int nr_pages)
+USED static void print_allocation(void *start, int nr_pages)
{
unsigned long pfn_start = virt_to_pfn(start);
int count;
@@ -163,7 +163,7 @@ static void print_allocation(void *start
* Prints chunks (making them with letters) for @nr_pages starting
* at @start (virtual).
*/
-static void print_chunks(void *start, int nr_pages)
+USED static void print_chunks(void *start, int nr_pages)
{
char chunks[1001], current='A';
int order, count;
@@ -408,7 +408,6 @@ void new_pt_frame(unsigned long *pt_pfn,
do_exit();
break;
}
-
/* Update the entry */
#if defined(__x86_64__)
tab = pte_to_virt(tab[l4_table_offset(pt_page)]);
@@ -446,7 +445,6 @@ void new_pt_frame(unsigned long *pt_pfn,
printk("ERROR: mmu_update failed\n");
do_exit();
}
-
*pt_pfn += 1;
}
@@ -581,7 +579,6 @@ void build_pagetable(unsigned long *star
}
start_address += PAGE_SIZE;
}
-
*start_pfn = pt_pfn;
}
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|