Unhandled page fault (in __unknown_pf)
Igor V. Ruzanov
igorr at canmos.ru
Fri Apr 25 18:28:46 CEST 2008
Hello!
There is a problem when vmlinuz-2.6.24-l4 (kernel image compiled in
l4linux source tree) boots under l4env with Fiasco u-kernel (last screen
page is shown below):
l4lx | Got 2048kB of ISA DMA memory
l4lx | ISA DMA memory: virt: 0x00800000 to 0x009fffff [2048 KiB]
l4lx | ISA DMA memory: Number of physocal regions: 1, 2097152 Bytes
l4lx | ISA DMA memory: 1: Phys: 0x0043b000 to 0x0063b000, Size: 2097152
l4lx | Main memory: virt: 0x00c00000 to 0x10bfffff [262144 KiB]
l4lx | Main memory: Number of physical regions: 1, 26843556 Bytes
l4lx | Main memory: 1: Phys: 0x07000000 to 0x17000000, Size: 268435456
l4lx | Filling lower tabs...
l4lx | Done (1722 entries).
l4lx | l4env_register_pointer_section: addr = 00660000 size = 667648
l4lx | end: virt: 0x00660000 to 0x00702fff [652 KiB]
l4lx | Noncontiguous region for end
l4lx | end: Number of physical regions: 2, 667548 Bytes
l4lx | end: 1: Phys: 0x01251000 to 0x01287000, Size: 221184
l4lx | end: 2: Phys: 0x00ba9000 to 0x00c16000, Size: 446464
l4lx | l4env_rd_path: initrd-2.6.24-l4.img
l4lx | Loading: initrd-2.6.24-l4.img
l4lx | INITRD: Size of RAMdisk is 3516 KiB
l4lx | RAMdisk from 10c00000 to 10f6f200 [3516 KiB]
l4lx | L4RM: [PF] read at 0xf0070000, ip 004098d8, src D.02
l4lx | [D.0] l4rm/lib/src/pagefault.c:81:__unknown_pf():
l4lx | unhandled page fault
--PANIC, 'g' for exit----------------------------------------------- IP: a00b53a6
[l4lx.rm] (d.00) jdb:
[...]
OBJDUMP of vmlinux shows the following listing (cutted fragment):
004098a1 <rtc_cmos_read>:
rtc_cmos_read():
/usr/src/kernels/2.6-24-l4/arch/l4/kernel/arch-i386/time.c:93
4098a1: 56 push %esi
4098a2: 53 push %ebx
4098a3: 83 ec 04 sub $0x4,%esp
4098a6: 8a 5c 24 10 mov 0x10(%esp),%bl
/usr/src/kernels/2.6-24-l4/build/include/asm-l4/l4-arch/asm/irqflags.h:68
4098aa: e8 4a 87 ff ff call 401ff9
<l4x_global_save_flags>
4098af: 89 c6 mov %eax,%esi
/usr/src/kernels/2.6-24-l4/build/include/asm-l4/l4-arch/asm/irqflags.h:78
4098b1: e8 4c 88 ff ff call 402102 <l4x_global_cli>
/usr/src/kernels/2.6-24-l4/build/include/asm-l4/x86-arch/asm/mc146818rtc_32.h:45
4098b6: 0f b6 d3 movzbl %bl,%edx
4098b9: 89 d1 mov %edx,%ecx
4098bb: 80 cd 01 or $0x1,%ch
/usr/src/kernels/2.6-24-l4/build/include/asm-l4/x86-arch/asm/mc146818rtc_32.h:47
4098be: a1 98 23 67 00 mov 0x672398,%eax
4098c3: 85 c0 test %eax,%eax
4098c5: 74 04 je 4098cb <rtc_cmos_read+0x2a>
/usr/src/kernels/2.6-24-l4/build/include/asm-l4/l4-arch/asm/processor.h:487
4098c7: f3 90 pause
4098c9: eb f3 jmp 4098be <rtc_cmos_read+0x1d>
/usr/src/kernels/2.6-24-l4/build/include/asm-l4/x86-arch/asm/cmpxchg_32.h:137
4098cb: 0f b1 0d 98 23 67 00 cmpxchg %ecx,0x672398
/usr/src/kernels/2.6-24-l4/build/include/asm-l4/x86-arch/asm/mc146818rtc_32.h:51
4098d2: 85 c0 test %eax,%eax
4098d4: 75 e8 jne 4098be <rtc_cmos_read+0x1d>
/usr/src/kernels/2.6-24-l4/build/include/asm-l4/l4-arch/asm/io.h:359
4098d6: 88 d0 mov %dl,%al
(***) 4098d8: e6 70 out %al,$0x70
/usr/src/kernels/2.6-24-l4/build/include/asm-l4/l4-arch/asm/io.h:273
4098da: e6 80 out %al,$0x80
[...]
We can see that the instruction at (***) causes the fault of executing. I
have no idea why it makes the problem. I've compared same part of object
code of usual kernel (2.6.24.5 that working in 'real' environment) - there
was the same semantics of the function rtc_cmos_read().
Below i provide grub.list section about loading l4linux module:
title Red Hat Enterprise Linux Server (2.6.24-l4, very EXPERIMENTAL)
root (hd0,0)
kernel /boot/l4/linux/bin/bootstrap
modaddr 0x06000000
module /boot/l4/linux/bin/fiasco -nokdb -serial_esc
module /boot/l4/linux/bin/sigma0
module /boot/l4/linux/bin/roottask task modname "bmodfs" attached 5 modules
module /boot/l4/linux/bin/names
module /boot/l4/linux/bin/log
module /boot/l4/linux/bin/dm_phys --isa=0x00800000
module /boot/l4/linux/bin/simple_ts -t 300
module /boot/l4/linux/bin/l4io --noirq
module /boot/l4/linux/bin/con
module /boot/l4/linux/bin/bmodfs
module /boot/l4/linux/cfg/l4linux26.cfg
module /boot/l4/linux/bin/libloader.s.so
module /boot/l4/linux/bin/libld-l4.s.so
module /boot/vmlinuz-2.6.24-l4
module /boot/initrd-2.6.24-l4.img
module /boot/l4/linux/bin/loader --fprov=BMODFS l4linux26.cfg
[...]
All the stuff was compiled under RHEL5 with kernel-2.6.24-5 (SMP). Version
of gcc compiler is 4.1.1 20070105 (Red Hat 4.1.1-52) [gcc -v] with POSIX
thread model.
My hardware is:
- mainboard is DG33TL;
- CPU Intel Pentium Dual-Core;
- RAM 2048Mb
I tried to load l4linux-module in cores-multiplexed enabled (for SMP) and
cores-multiplexed disabled CPU modes, that i was tuning them on/off in
BIOS setup.
Any help is very welcomed!
More information about the l4-hackers
mailing list