Hi,
On Fri Apr 25, 2008 at 20:28:46 +0400, Igor V. Ruzanov wrote:
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 | 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.
L4Linux is not allowed to do port accesses (except it is explicitely allowed).
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
The best approach should be to also start the 'rtc' server, and in L4Linux enable the rtc server and disable the native RTC drivers. Also you might want to use the configuration in arch/l4/configs/x86-native_defconfig as a basis which should have all this setup up.
Adam