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!
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
l4-hackers@os.inf.tu-dresden.de