Forum Discussion
Altera_Forum
Honored Contributor
20 years agokernel init problem
Hi
We have developed our own board with an Altera Stratix II and NIOS II Standard CPU. We download the kernel (2.6.16.11) to the SDRAM (32MB) using nios2-download, and nios2-terminal gives us the following output: uClinux/Nios II Altera Nios II support © 2004 Microtronix Datacom Ltd. KERNEL -> TEXT=0x04000000-0x04173da8 DATA=0x04173da8-0x04182000 BSS=0x042520a0-0 x042520cf KERNEL -> MEM=0x4253000-0x6000000 STACK=0x6000000-0x6000000 No Command line passed Done setup_arch Built 1 zonelists Kernel command line: trap_init reached init_IRQ done PID hash table entries: 256 (order: 8, 4096 bytes) oom-killer: gfp_mask=0xd0, order=0 Stack from 04181e74:<0> <0> 00000000<0> 04037d8c<0> 00000000<0> 00000042<0> 041765b0<0> 041765b0<0> 00000000<0> 00000000<0> <0> 000000d0<0> 04173db0<0> 00000000<0> 0403937c<0> 00000000<0> deadbeef<0> deadbeef<0> 04181f04<0> <0> deadbeef<0> 00000000<0> 00000000<0> 000000d0<0> 00000000<0> 04181f24<0> 040393e0<0> 04159b38<0> <0> 00000000<0> 04159b38<0> 0406faec<0> 0424713e<0> deadbeef<0> deadbeef<0> 00000000<0> 04159b38<0> <0> 00000000<0> 04159b30<0> 040706a0<0> 04181f40<0> 00000000<0> deadbeef<0> deadbeef<0> deadbeef<0> <0> ffffffff<0> 00000000<0> deadbeef<0> 04000654<0> 00000000<0> 00000001<0> 00000000<0> 00000001<0> Call Trace:<0> <0> [<04005728>]<0> [<04004c0c>]<0> [<04005740>]<0> [<04000110>]<0> Mem-info: DMA per-cpu: cpu 0 hot: high 6, batch 1 used:0 cpu 0 cold: high 2, batch 1 used:0 DMA32 per-cpu: empty Normal per-cpu: empty HighMem per-cpu: empty Free pages: 0kB (0kB HighMem) Active:0 inactive:0 dirty:0 writeback:0 unstable:0 free:0 slab:0 mapped:0 pagetables:0 DMA free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:32768kB pages_scanned:0 all_unreclaimable? no lowmem_reserve[]: 0 0 0 0 DMA32 free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no lowmem_reserve[]: 0 0 0 0 Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no lowmem_reserve[]: 0 0 0 0 HighMem free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no lowmem_reserve[]: 0 0 0 0 DMA: 0*4kB 0*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 0kB DMA32: empty Normal: empty HighMem: empty 0 pages of RAM 0 free pages 0 reserved pages 0 pages shared 0 pages swap cached Kernel panic - not syncing: Out of memory and no killable processes... We have found out that this has something to do with the call to local_irq_enable() in init/main.c (around line 500). If we comment out this line, the execution continues and stops after the "Memory available: " line. Reported memory on this line is correct. We have a Altera Stratix II with Nios II evaluation board, and the kernel runs fine on this board. We have successfully run memory tests using the memtest example included in the Nios II 6.0 examples. Our board also have an SMC91111 ethernet controller. Anyone has any ideas on how to solve this problem? Regards Hein Gustavsen12 Replies
- Altera_Forum
Honored Contributor
Hi Hippo,
I followed as you suggested and I am getting some strange results. I am using now "kernel.config" file given in download with buildroot package. Only change I made is Prints enable at nios-uart and jtag-uart is disable. But still I am facing same issue. Strange thing is when I add 2-3 printk statements, for changing size of the kernel, it boots fine. Both conditions boot prints are pasted below. Some other observation I have made.... I added some device support for changing kernel size and same issue I have face with big vmlinux (elf executable) size also (17 MB, 16 MB, 15MB), just removing or adding a dummy printk make kernel boot perfectly fine. Added support: network, mtd, jffs2, ext2, ext3, kernel hacking. (all with in hw design) Kernel with same size with different support enable or disabled gives different crashing results or boot prefectly fine. For certain build if work fine it "always" works fine, never get crashed. If certain build crash it always crashes. For testing I am using Altera given hardware design with changed memeory map path: \altera\kits\nios2_51\examples\verilog\niosII_stratixII_2s60_ES\full_featured In future I have to add support for other devices, I can't relly on adding printk fix. I need a proper solution or either why its happening. I put prints in initramfs.c and ramfs is in safe region. Also large memory >1MB allocation in kernel config is enable. Current kernel size is coming ~7 MB. I tested SDRAM also and its passing all tests. Any Idea what is going wrong. CRASHING PRINTS <div class='quotetop'>QUOTE </div> --- Quote Start --- uClinux/Nios II Altera Nios II support © 2004 Microtronix Datacom Ltd. KERNEL -> TEXT=0x01000000-0x010adf1c DATA=0x010adf1c-0x010b8000 BSS=0x01117f20-0 x01117f34 KERNEL -> MEM=0x1118000-0x2000000 STACK=0x2000000-0x2000000 No Command line passed Done setup_arch Built 1 zonelists Kernel command line: PID hash table entries: 128 (order: 7, 2048 bytes) Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) Memory available: 15072k/16384k RAM, 0k/0k ROM (695k kernel code, 424k data) Mount-cache hash table entries: 512 (order: 0, 4096 bytes) initramfs_START =0x10c1b20 initramfs_END =0x110d320 initramfs_size=0x4b800 Linux NoNET1.0 for Linux 2.6 NIOS serial driver version 0.0 ttyS0 (irq = 4) is a builtin NIOS UART io scheduler noop registered io scheduler deadline registered Freeing unused kernel memory: 340k freed (0x10b8000 - 0x110c000) oom-killer: gfp_mask=0xd0 DMA per-cpu: cpu 0 hot: low 2, high 6, batch 1 cpu 0 cold: low 0, high 2, batch 1 Normal per-cpu: empty HighMem per-cpu: empty Free pages: 13588kB (0kB HighMem) Active:62 inactive:251 dirty:0 writeback:0 unstable:0 free:3397 slab:120 mapped: 0 pagetables:0 DMA free:13588kB min:512kB low:640kB high:768kB active:248kB inactive:1004kB pre sent:16384kB pages_scanned:2097664 all_unreclaimable? yes lowmem_reserve[]: 0 0 0 Normal free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pag es_scanned:0 all_unreclaimable? no lowmem_reserve[]: 0 0 0 HighMem free:0kB min:128kB low:160kB high:192kB active:0kB inactive:0kB present: 0kB pages_scanned:0 all_unreclaimable? no lowmem_reserve[]: 0 0 0 DMA: 79*4kB 1*8kB 1*16kB 0*32kB 1*64kB 2097664*128kB 1*256kB 1*512kB 0*1024kB 0* 2048kB 3*4096kB = 268514452kB Normal: empty HighMem: empty oom-killer: gfp_mask=0xd0 DMA per-cpu: cpu 0 hot: low 2, high 6, batch 1 cpu 0 cold: low 0, high 2, batch 1 Normal per-cpu: empty HighMem per-cpu: empty[/b] --- Quote End --- PASSING PRINTS <div class='quotetop'>QUOTE </div> --- Quote Start --- uClinux/Nios II Altera Nios II support © 2004 Microtronix Datacom Ltd. KERNEL -> TEXT=0x01000000-0x010adf88 DATA=0x010adf88-0x010b8000 BSS=0x01117f40-0 x01117f54 KERNEL -> MEM=0x1118000-0x2000000 STACK=0x2000000-0x2000000 No Command line passed Done setup_arch Built 1 zonelists Kernel command line: PID hash table entries: 128 (order: 7, 2048 bytes) bfr local_irq_enable Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) aft local_irq_enable Memory available: 15072k/16384k RAM, 0k/0k ROM (695k kernel code, 423k data) Mount-cache hash table entries: 512 (order: 0, 4096 bytes) initramfs_START =0x10c1b40 initramfs_END =0x110d340 initramfs_size=0x4b800 Linux NoNET1.0 for Linux 2.6 NIOS serial driver version 0.0 ttyS0 (irq = 4) is a builtin NIOS UART io scheduler noop registered io scheduler deadline registered Freeing unused kernel memory: 340k freed (0x10b8000 - 0x110c000) main.c: aft free_initmem init started: BusyBox v1.2.0-pre0 (2006.04.26-14:48+0000) multi-call binary BusyBox v1.2.0-pre0 (2006.04.26-14:48+0000) Built-in shell (msh) Enter 'help' for a list of built-in commands. # # # # # # # [/b] --- Quote End --- - Altera_Forum
Honored Contributor
it is really strange.
how do you run the kernel? do you use nios2-download? Or, is cache flushed properly in the boot loader? if it crashes, will it fail at the same place? check the kernel link script, and the link map output. check the required align of different sections. check if there are (junk) dos2unix in the make scripts. I did find problems in cpu_idle loop of arch/nios2nommu/kernel/process.c for new kernels. I follow those codes of SH / MIPS to fix the problem.