hello,
I'm trying to run an os named toppers (japanese) as guest on xen.
I'm currently using xen 2.0.7 unstable from november. I'm using the
libraries of mini-os which I kind of included in toppers.
I have a bug I can't solve when booting after starting domain and
initializing some things and I would appreciate some help ^^
the domain crashes before executing any code of toppers. it crashes during
initilizing memory management with the function init_mm() from mm.c of
mini-os.
here is the prints I have from the boot :
xenbr0: port 2(vif2.0) entering learning state
xenbr0: topology change detected, propagating
xenbr0: port 2(vif2.0) entering forwarding state
Bootstrapping...
Copying the start_info struct to a globally-accessible area OK
Grabbing the shared_info pointer OK
Setting up event and failsafe callback OK
Initializing traps OK
Enabling event delivery OK
Toppers Real-Time OS on Xen !
start_info: 00128000
nr_pages: 8192 shared_inf: 00bdd000
pt_base: 0012b000 mod_start: 0x0
mod_len: 0
flags: 0x0
cmd_line: root=/dev/sda1 ro 4
Initializing memory managementMM: Init
_etext: 0010dbbd
_edata: 001111e8
stack start: 0011d8c0
_end: 0011ff1c
start_pfn: 40130
max_pfn: 2000
start_pfn=262448, first pfn_to_map 1024, max_pfn=8192Max_mach_ptd
0xc20ERROR: Not even a single emp ty, mapped page
Page fault at linear address 00000000
FIXME: proper register dump (with the stack dump)
GPF 0011b6e0, error_code=0
after some loops the domains stops and prints this :
GPF 0010eb60, errFIXME: proper register dump (with the stack dump)
GPF 0010ea4c, errFIXME: proper register dump (with the stack dump)
GPF 0010e938RSTUVWXYZFIXME: proper register dump (with th\uffffFIXME: proper
register dump (with th\uffff 4[\uffff \uffff\uffff \uffff\uffff \uffff\uffff
\uffff\uffff \uffff\uffff \uffff\uffff \uffff\uffff \uffff\uffff
\uffff\uffff \uffff\uffff \uffff\uffff \uffff\uffff \uffff\uffff
\uffff\uffff \uffff\uffff \uffff \uffff\uffff\uffff \uffff\uffff\uffff
\uffff \uffff\uffff \uffff\uffff\uffff \uffff\uffff\uffff \uffff\uffff\uffff
\uffff\uffff\uffff \uffff\uffff\uffff \uffff\uffff\uffff \uffff\uffff\uffff
\uffff\uffff\uffff \uffff\uffff\uffff \uffff\uffff\uffff \uffff\uffff\uffff
\uffff\uffff\uffff \uffff\uffff\uffff \uffff \uffff\uffff \uffff\uffff\uffff
\uffff\uffff\uffff \uffff\uffff\uffff \uffff\uffff\uffff \uffff\uffff\uffff
\uffff\uffff\uffff \uffff\uffff\uffff \uffff\uffff\uffff \uffff \uffff
\uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff
\uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff
\uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff
\uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff
\uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff
\uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff
\uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff \uffff(XEN)
Domain 2 (vcpu#0) crashed on cpu#0:
(XEN) CPU: 0
(XEN) EIP: e019:[<0010218a>]
(XEN) EFLAGS: 00010246 CONTEXT: guest
(XEN) eax: 000000a9 ebx: 02dde90b ecx: 0011940a edx: 00000000
(XEN) esi: 00128216 edi: 0000e021 ebp: 0010220b esp: 0010000b
(XEN) cr0: 80050033 cr3: 05503000
(XEN) ds: e021 es: e021 fs: e021 gs: e021 ss: e021 cs: e019
(XEN) Guest stack trace from esp=0010000b:
(XEN) 00000002 0010218a 0001e019 00010006 00000002 0010218a 0001e019
00010046
(XEN) 00000002 0010218a 0001e019 00010046 00000002 0010218a 0001e019
00010046
(XEN) 00000002 0010218a 0001e019 00010046 00000002 0010218a 0001e019
00010046
(XEN) 00000002 0010218a 0001e019 00010046 00000002 0010218a 0001e019
00010046
(XEN) 00000002 0010218a 0001e019 00010002 00000002 0010218a 0001e019
00010086
(XEN) 00000002 0010218a 0001e019 00010006 00000002 0010218a 0001e019
00010046
(XEN) 00000002 0010218a 0001e019 00010002 00000002 0010218a 0001e019
00010046
(XEN) 00000002 0010218a 0001e019 00010046 00000002 0010218a 0001e019
00010046
(XEN) 00000002 0010218a 0001e019 00010086 00000002 0010218a 0001e019
00010082
(XEN) 00000002 0010218a 0001e019 00010002 00000002 0010218a 0001e019
00010046
(XEN) 00000002 0010218a 0001e019 00010086 00000002 0010218a 0001e019
00010082
(XEN) 00000002 0010218a 0001e019 00010002 00000002 0010218a 0001e019
00010046
(XEN) 00000002 0010218a 0001e019 00010002 00000002 0010218a 0001e019
00010082
(XEN) 00000002 0010218a 0001e019 00010006 00000002 0010218a 0001e019
00010046
(XEN) 00000002 0010218a 0001e019 00010086 00000002 0010218a 0001e019
00010006
(XEN) 00000002 0010218a 0001e019 00010002 00000002 0010218a 0001e019
00010046
(XEN) 00000002 0010218a 0001e019 00010086 00000002 0010218a 0001e019
00010082
(XEN) 00000002 0010218a 0001e019 00010002 00000002 0010218a 0001e019
00010046
(XEN) 00000002 0010218a 0001e019 00010002 00000002 0010218a 0001e019
00010046
(XEN) 00000002 0010218a 0001e019 00010046 00000002 0010218a 0001e019
00010046
device vif2.0 left promiscuous mode
xenbr0: port 2(vif2.0) entering disabled state
xenbr0: port 2(vif2.0) entering disabled state
this error seems to occurs cause pt_frame is superior or equal to
pfn_to_page when building page table in the mm.c file of mini-os library
/* Should not happen - no empty, mapped pages */
if(pt_frame >= pfn_to_map)
{
printk("ERROR: Not even a single empty, mapped page\n");
*(int*)0=0;
}
here is a piece of the code of the startup.c :
kernel_start(start_info_t *si)
{
/*
* ¥¿¡Œ¥²¥Ã¥È°Íž€ÎœéŽü²œ
*/
static char buf[]="Bootstrapping...\n";
(void)HYPERVISOR_console_io(CONSOLEIO_write, strlen(buf), buf);
printk("Copying the start_info struct to a globally-accessible
area");
/* Copy the start_info struct to a globally-accessible area. */
memcpy(&start_info, si, sizeof(*si));
printk(" OK\nGrabbing the shared_info pointer");
/* Grab the shared_info pointer and put it in a safe place. */
HYPERVISOR_shared_info = map_shared_info(start_info.shared_info);
printk(" OK\nSetting up event and failsafe callback");
/* Set up event and failsafe callback addresses. */
#ifdef __i386__
HYPERVISOR_set_callbacks(
__KERNEL_CS, (unsigned long)hypervisor_callback,
__KERNEL_CS, (unsigned long)failsafe_callback);
#else
HYPERVISOR_set_callbacks(
(unsigned long)hypervisor_callback,
(unsigned long)failsafe_callback, 0);
#endif
printk(" OK\nInitializing traps");
xen_init_traps();
printk(" OK\nEnabling event delivery");
/* ENABLE EVENT DELIVERY. This is disabled at start of day. */
__sti();
printk(" OK\n");
printk("Toppers Real-Time OS on Xen !\n");
printk("start_info: %p\n", si);
printk(" nr_pages: %lu", si->nr_pages);
printk(" shared_inf: %08lx\n", si->shared_info);
printk(" pt_base: %p", (void *)si->pt_base);
printk(" mod_start: 0x%lx\n", si->mod_start);
printk(" mod_len: %lu\n", si->mod_len);
printk(" flags: 0x%x\n", (unsigned int)si->flags);
printk(" cmd_line: %s\n",
si->cmd_line ? (const char *)si->cmd_line : "NULL");
/* init memory management */
printk("Initializing memory management");
init_mm();
/* here starts toppers*/
printk(" OK\nStarting Toppers\n");
cpu_initialize();
sys_initialize();
I would appreciate some help. thank you in advance.
--
Claverie nicolas
Real-time and embedded systems lab
tsukuba university
japan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel