[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug-hurd] oskit 20000901 boots, however, crashes on kernel page fault
From: |
Neal H Walfield |
Subject: |
[Bug-hurd] oskit 20000901 boots, however, crashes on kernel page fault |
Date: |
Tue, 19 Sep 2000 10:34:13 -0500 |
User-agent: |
Mutt/1.2i |
Hi,
As suggested by Mark and Marcus, I added the function osenv_intr_save_disable
to oskit/osenv_synch.c. This was all that was required to get the kernel to
compile.
It now boots and crashes in oskit-20000901/linux/dev/init.c, line 129 due to
a kernel page fault. Here is a snipit of the code:
124 /*
125 * Initialize drive info.
126 */
127 if (osenv_mem_map_phys(0, PAGE_SIZE, &kaddr, 0))
128 panic("%s:%d: unable to map phys memory", __FILE__, __LINE__);
129 x = *((unsigned *)(kaddr + 0x104));
130 addr = ((x >> 12) & 0xFFFF0) + (x & 0xFFFF);
131 if (osenv_mem_map_phys(trunc_page(addr), PAGE_SIZE, (void **)&x, 0))
132 panic("%s:%d: unable to map phys memory", __FILE__, __LINE__);
Thus, it appears to be crashing when it dereferences kaddr + 0x104.
Having done a bit of snooping, I know that kernel_virtual_start == 0xc0000000
and the page fault linear address that it crashes on is 0xc000104. Therefore,
this should be valid from pmap_bootstrap mappings(?) called from
oskit/x86/main.c
I have diffed the init.c from 20000202 with the one from 20000901 and the only
difference is the addition of line 86:
linux_softintr_init();
This appears to be `ok' as it looks like it is functionality removed from
oskit_linux_init() (called on line 85) and placed into its own function.
Any ideas?
Thanks,
-Neal
--
Neal H Walfield
University of Massachusetts at Lowell
neal@walfield.org or nwalfiel@cs.uml.edu
- [Bug-hurd] oskit 20000901 boots, however, crashes on kernel page fault,
Neal H Walfield <=