Hi!
I tried to run Fiasco-L4Linux on Xscale board. I'm using L4Linux-2.6.17 version.
First, I made a bootstap image (=bootstrap.raw) and loaded on Xscale and run it. But some server programs' ranges were overlapped, so I fixed some server programs' DEFAULT_RELOC_arm address, and then started working.
During the boot process, "Warning: Unable to open an initial console" is warned and halt. I checked on boot process after ram disk is loaded, dev file path lookup fails.. So as to mount dev file system again after loading ram disk, I added "devfs options" to fs/Kconfig. And then the warning message is not presented.
But after that, I got a new error message --------------------------------------------------------------------------------------------- Assertion failed: 'space() == current_space()' in /home/jowkju/project/Microkernel/Fiasco/Fiasco_Xscale/l4/kernel/fiasco/src/kern/thread- pagefault.cpp:82 at f0005400 ---------------------------------------------------------------------------------------------
This error may occur during the "init" program in ram disk execute. However, there may not be errors in init program because it works well in the 2.6.16 version. And maybe the problem occurs during the context switching between "init" program and other threads...
The following is the whole messages from boot starts. --------------------------------------------------------------------------------------------- Starting kernel...
Hello from Startup::stage2 Initialize page table Vmem_alloc::init() allocated zero page @0xf0400000[phys=0xa3800000] Vmem_alloc::TEST allocate zero-mapped page... [0xefc00000] done free zero-mapped page... done allocate zero-filled page... [0xefc01000] done free zero-filled page... done allocate no-zero-filled page... [0xefc02000] done free no-zero-filled page... done SERIAL ESC: allocated IRQ 22 for serial uart Not using serial hack in slow timer handler. Welcome to Fiasco(arm)! DD-L4(x0)/arm microkernel (C) 1998-2006 TU Dresden Rev: Fri Sep 15 09:49:11 2006 compiled with gcc 3.4.4 for XScale SIGMA0[2.0]: Hello World! SIGMA0: KIP is at: a0001000 SIGMA0 free region: : a0000000, a3ffffff SIGMA0 alloc region: : a0000000, a003ffff owner: 1 SIGMA0 alloc region: : a004c000, a005f7ff owner: 1 SIGMA0 alloc region: : a3800000, a3ffffff owner: 1
Roottask. Command line found: "roottask task modname "bmodfs" module module module module module"
66172kB ( 64MB) total RAM (reported by bootloader) 56652kB ( 56MB) received RAM from Sigma0 7868kB ( 8MB) reserved RAM for RMGR
Roottask: Parsing command line config. configured task 0x00 (bmodfs): vm_offs:0 irq:ffff lmcp:ffff allow_cli:0 mcp:ff prio:10 small:ff mods:5
Roottask: Loading 12 modules. #05: loading "names" from [a146c000-a14761a4] to [a0109000-a0110e20][a0111000-a011b000] entry at a0041060 via trampoline page code #06: loading "log" from [a1477000-a148730c] to [a0160000-a0167f18][a0168000-a01956d4] entry at a004205c via trampoline page code #07: loading "dm_phys -v" from [a1488000-a14a61a4] to [a01b0000-a01c4c78][a01c5000-a01ce000] entry at a0043064 via trampoline page code #08: loading "simple_ts -t 10" from [a14a7000-a14ba30c] to [a0290000-a029a1f0][a029b000-a02a35a0] entry at a0044068 via trampoline page code #09: loading "l4exec" from [a14bb000-a14f71a4] to [a01e0000-a0212348][a0213000-a022c000] entry at a0045060 via trampoline page code #0a: loading "bmodfs" from [a14f8000-a151d1a4] to [a0240000-a025b0a8][a025c000-a0273000] passing module libloader.s.so [ a151e000-a1547eec ] passing module shared_test [ a1548000-a1549700 ] passing module vmlinuz26.arm [ a154a000-a173c5b4 ] passing module rd1 [ a173d000-a1b3d000 ] passing module l4linux.cfg [ a1b3d000-a1b3d0b0 ] entry at a00460ec via trampoline page code #0b: loading "loader --fprov=BMODFS l4linux.cfg" from [a1b3e000-a1b721a4] to [a02c0000-a02eaff4][a02eb000-a0309000] entry at a004707c via trampoline page code
simplets| Configured for 10 tasks. DMphys | DMphys memory map: DMphys | phys. memory 0xa0000000-0xa4000000 (from L4 kernel info page) DMphys | using 0xa0000000-0xa4000000 DMphys | Memory area Pool PS Flags DMphys | 0xa0000000-0xa0068000 -- -- RESERVED DMphys | 0xa0068000-0xa00bb000 -- -- DENIED DMphys | 0xa00bb000-0xa00cf000 -- -- RESERVED DMphys | 0xa00cf000-0xa0109000 0 12 MAPPED DMphys | 0xa0109000-0xa011b000 -- -- DENIED DMphys | 0xa011b000-0xa0160000 0 12 MAPPED DMphys | 0xa0160000-0xa0196000 -- -- DENIED DMphys | 0xa0196000-0xa01b0000 0 12 MAPPED DMphys | 0xa01b0000-0xa01cd000 -- -- RESERVED DMphys | 0xa01cd000-0xa01e0000 0 12 MAPPED DMphys | 0xa01e0000-0xa022c000 -- -- DENIED DMphys | 0xa022c000-0xa0240000 0 12 MAPPED DMphys | 0xa0240000-0xa0273000 -- -- DENIED DMphys | 0xa0273000-0xa0290000 0 12 MAPPED DMphys | 0xa0290000-0xa02a4000 -- -- DENIED DMphys | 0xa02a4000-0xa02c0000 0 12 MAPPED DMphys | 0xa02c0000-0xa0309000 -- -- DENIED DMphys | 0xa0309000-0xa0400000 0 12 MAPPED DMphys | 0xa0400000-0xa1500000 0 20 MAPPED DMphys | 0xa1500000-0xa151e000 0 12 MAPPED DMphys | 0xa151e000-0xa1b3e000 -- -- DENIED DMphys | 0xa1b3e000-0xa1c00000 0 12 MAPPED DMphys | 0xa1c00000-0xa3800000 0 20 MAPPED DMphys | 0xa3800000-0xa4000000 -- -- DENIED DMphys | DMphys | DMphys memory pools: DMphys | pool 0 (Default memory pool): DMphys | size: 48960KB total, 48960KB free, 32KB reserved DMphys | 0xa00cf000-0xa0109000 ( 232KB, 0MB) DMphys | 0xa011b000-0xa0160000 ( 276KB, 0MB) DMphys | 0xa0196000-0xa01b0000 ( 104KB, 0MB) DMphys | 0xa01cd000-0xa01e0000 ( 76KB, 0MB) DMphys | 0xa022c000-0xa0240000 ( 80KB, 0MB) DMphys | 0xa0273000-0xa0290000 ( 116KB, 0MB) DMphys | 0xa02a4000-0xa02c0000 ( 112KB, 0MB) DMphys | 0xa0309000-0xa151e000 ( 18516KB, 18MB) DMphys | 0xa1b3e000-0xa3800000 ( 29448KB, 29MB) bmodfs | Passed the following modules: bmodfs | module "libloader.s.so" (168kB) bmodfs | module "shared_test" (6kB) bmodfs | module "vmlinuz26.arm" (1994kB) bmodfs | module "rd1" (4096kB) bmodfs | module "l4linux.cfg" (1kB) loader | sleeping for 1000 ms exec | vmlinuz26.arm: Loading exec | vmlinuz26.arm: Interpreter section found, contains "/usr/lib/ld.so.1" exec | vmlinuz26.arm: Has no symbols exec | vmlinuz26.arm: Has no lines exec | libloader.s.so: Loading exec | libloader.s.so: Has no symbols exec | libloader.s.so: Has no lines exec | libloader.s.so: Relocating to 00010000 exec | libloader.s.so: Linking exec | libloader.s.so: Symbol l4sys_fixup_abs_syscalls is weak and undefined exec | libloader.s.so: Symbol mmap_normal is weak and undefined exec | libloader.s.so: Symbol munmap_normal is weak and undefined exec | libloader.s.so: Relocating entry 00006400 => 00016400 exec | libloader.s.so: Setting section flag 0800 exec | vmlinuz26.arm: Setting section flag 0800 loader | vmlinuz26.arm: Starting l4env-style application loader | vmlinuz26.arm,#c: Starting at l4loader_init (00016440) exec | vmlinuz26.arm: Linking exec | vmlinuz26.arm: Relocating entry 00216000 => 00216000 loader | vmlinuz26.arm,#c: Continue at l4env_init (00016b60, libloader.s.so) l4lx | ======> L4Linux 2.6 starting... <======== l4lx | Linux version 2.6.17-l4 (jowkju@jowk) (gcc version 3.4.4) #44 Sat Oct l4lx : 14 12:21:10 KST 2006 l4lx | Binary name: vmlinuz26.arm l4lx | Kernel command line (9 args): root=1:0 mem=16M load_ramdisk=1 ramdisk l4lx : _size=4096 l4env_rd=rd1 console=ttyLv0 l4ser.vkey_irq=46 panicblink=0 l4lx : lang=us l4lx | Image: 00200000 - 00434000 [2256 KiB]. l4lx | Areas: Text: 00200000 - 0039c000 [1648kB] (a bit longer) l4lx | Data: 0039c000 - 003e2fb0 [283kB] l4lx | Initdata: 00200000 - 00215000 [84kB] l4lx | BSS: 003e8000 - 00434000 [304kB] l4lx | l4lx_thread_create: Created thread 0c.03 (tamer) l4lx | Using tamed mode. l4lx | l4lx_thread_create: Created thread 0c.04 (server) l4lx | main thread will be 0c.04 l4lx | l4env_register_pointer_section: addr = 00200000 size = 2310144 l4lx | sec-w-init: virt: 0x00200000 to 0x00433fff [2256 KiB] l4lx | Noncontiguous region for sec-w-init l4lx | sec-w-init: Number of physical regions: 4, 2310144 Bytes l4lx | l4env_linux_startup thread 4. l4lx | sec-w-init: 1: Phys: 0xa0309000 to 0xa04a1000, Size: 1671168 l4lx | sec-w-init: 2: Phys: 0xa011b000 to 0xa0160000, Size: 282624 l4lx | sec-w-init: 3: Phys: 0xa00cf000 to 0xa0109000, Size: 237568 l4lx | sec-w-init: 4: Phys: 0xa0273000 to 0xa0290000, Size: 118784 l4lx | main thread: received startup message. l4lx | Main thread running, waiting... l4lx | setup_l4env_memory: Forcing superpages for main memory l4lx | Main memory size: 16MB l4lx | Main memory: virt: 0x00500000 to 0x014fffff [16384 KiB] l4lx | Main memory: Number of physical regions: 1, 16777216 Bytes l4lx | Main memory: 1: Phys: 0xa2800000 to 0xa3800000, Size: 16777216 l4lx | Filling lower ptabs... l4lx | Done (650 entries). l4lx | l4env_rd_path: rd1 l4lx | Loading: rd1 l4lx | INITRD: Size of RAMdisk is 4096KiB l4lx | RAMdisk from 01500000 to 01900000 [4096KiB] l4lx | l4lx_thread_create: Created thread 0c.05 (IRQ CPU0) l4lx | l4lx_thread_create: Created thread 0c.06 (timer.i0) Linux version 2.6.17-l4 (jowkju@jowk) (gcc version 3.4.4) #44 Sat Oct 14 12:21:10 KST 2006 CPU: Fiasco [0001f000] revision 0 (ARMv4) cpu_sa1100_proc_init Machine: L4 Memory policy: ECC disabled, Data cache writeback CPU0: D write-through cache CPU0: cache: 512 bytes, associativity 1, 8 byte lines, 64 sets INITRD: 01500000 - 01900000 Built 1 zonelists Kernel command line: root=1:0 mem=16M load_ramdisk=1 ramdisk_size=4096 l4env_rd=rd1 console=ttyLv0 l4ser.vkey_irq=46 panicblink=0 lang=us l4lx_irq_init: l4lx_irq_max = 50 l4lx_irq_init: creating IRQ thread on cpu 0 irq_thread: Starting IRQ thread on CPU 0 PID hash table entries: 128 (order: 7, 512 bytes) l4lx_irq_timer_startup(0) timer_irq_thread: Starting timer IRQ thread. l4ser_init_ports Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) Memory: 5MB 16MB = 21MB total Memory: 16152KB available (1556K code, 608K data, 84K init) Mount-cache hash table entries: 512 ROOT FS, MOUNT TREE INITIALIZATION COMPLETED checking if image is initramfs...it isn't (bad gzip magic numbers); looks like an initrd INITRD: Freeing memory. NET: Registered protocol family 16 NET: Registered protocol family 2 l4lx | l4lx_thread_create: Created thread 0c.07 (Idler) IP route cache hash table entries: 256 (order: -2, 1024 bytes) TCP established hash table entries: 1024 (order: 0, 4096 bytes) TCP bind hash table entries: 512 (order: -1, 2048 bytes) TCP: Hash tables configured (established 1024 bind 512) TCP reno registered NetWinder Floating Point Emulator V0.97 (double precision) devfs: 2004-01-31 Richard Gooch (rgooch@atnf.csiro.au) devfs: devfs_debug: 0x0 devfs: boot_options: 0x1 io scheduler noop registered (default) L4 serial driver l4ser_init_ports ttyLv0 at MMIO 0x1 (irq = 46) is a L4 RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize nbd: registered device at major 43 ts: Compaq touchscreen protocol output TCP bic registered NET: Registered protocol family 1 NET: Registered protocol family 17 RAMDISK: ext2 filesystem found at block 0 RAMDISK: Loading 4096KiB [1 disk] into ram disk... done. VFS: Mounted root (ext2 filesystem) readonly. Mounted devfs on /dev execve for /sbin/init Allocated 0d.00
Assertion failed: 'space() == current_space()' in /home/jowkju/project/Microkernel/Fiasco/Fiasco_Xscale/l4/kernel/fiasco/src/kern/thread-pagefault.cpp:82 at f0005400
Return reboots, "k" enters L4 kernel debugger... BUG: soft lockup detected on CPU#0! ---------------------------------------------------------------------------------------------
How can I solve this problem??
One thing to notice is that there's no problem like the above in the previous version of l4linux. In the previous version, boot process works well.
Again, how can I solve this problem??
Thank you
On Sat Oct 14, 2006 at 12:37:08 +0900, WanKeun Jo wrote:
I tried to run Fiasco-L4Linux on Xscale board. I'm using L4Linux-2.6.17 version.
First, I made a bootstap image (=bootstrap.raw) and loaded on Xscale and run it. But some server programs' ranges were overlapped, so I fixed some server programs' DEFAULT_RELOC_arm address, and then started working.
Ok, fine.
During the boot process, "Warning: Unable to open an initial console" is warned and halt. I checked on boot process after ram disk is loaded, dev file path lookup fails.. So as to mount dev file system again after loading ram disk, I added "devfs options" to fs/Kconfig. And then the warning message is not presented.
You need to to have some files under /dev in your ramdisk, esp. console, then this message goes away. Enabling devfs is no option as it's gone in 2.6.18.
But after that, I got a new error message
Assertion failed: 'space() == current_space()' in /home/jowkju/project/Microkernel/Fiasco/Fiasco_Xscale/l4/kernel/fiasco/src/kern/thread- pagefault.cpp:82 at f0005400
This error may occur during the "init" program in ram disk execute. However, there may not be errors in init program because it works well in the 2.6.16 version. And maybe the problem occurs during the context switching between "init" program and other threads...
It's from Fiasco and has primarily nothing to do with L4Linux in the first place. There was a subtle bug recently which has been fixed in CVS for some time now. This bug triggers the above assertion. Go to src/kern/arm/ivt.S and check if swi_entry looks like this.
swi_entry: switch_to_kernel exceptionframe 4
If not, i.e. switch_to_kernel is missing, add it. It should make the assertion go away.
Adam
l4-hackers@os.inf.tu-dresden.de