[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [microblaze-uclinux] Bad page state in process 'swapper'



Cor,

We have found the exact problems you describe in our attempt to port the Petalinux 2.6 kernel to Suzaku SZ130 hardware based on the Spartan 3E 1200 FPGA. Unfortunately, I haven't yet had the time to diagnose the problem deeper. I already found the problem you describe with early_printk() and the fact that printk() doesn't get initialize to take over operation of console output. My solution was to call setup_early_printk("keep") after the .bss section is cleared just as you described.

Last night I attempted to port the Petalinux 2.6 kernel to the Memec 3S1500MB FPGA dev board and it booted without the issues encountered on the Suzaku hardware or on your hardware.

The kernel config files between both the Suzaku and Memec board are nearly identical except for obvious differences such as ERAM size, ERAM start address and some peripheral differences. I'm hoping that a further study of the configuration files might yield some clues as to why one piece of hardware works for me and why another fails.

I find it puzzling the initialization of the console for printk() doesn't work and I think it may be a clue why things further down in the boot process fail as well. Perhaps the interrupt controller or something is failing.

If you do find a solution to the issue, please post a follow up. I'll do the same. Hopefully one of us, or someone else, will find the right magic configuration setting that makes this issue go away.

Mike Thompson

Cor Venner wrote:
Hello everybody,

While struggling to get my Microblaze board running with Petalinux, I ran into the following: - first I encountered the problem when I downloaded the image.srec that the fsrom is at the wrong location. I have described this in the thread "Inconsitency between image.srec and image.bin". This caused that the fsrom area was not relocated for the .bss section. - next I noticed that early_printk stops when the .bss section is cleared. This is due to a variable used by early_printk() that resides in the .bss section. I found out that early_printk() is called before that setup_early_printk() is called, which sets the varialble "early_console_initialized" in the .bss section. So I have added setup_early_printk() after the clearing of the .bss section in machine_early_init(). I have passed the "keep" option with setup_early_printk(). After this I got the boot output as appended below. This listing ends up with a "bad page state" in the "swapper".

Has anyone a clue on this?

Remark that there is a "keeping early console" notice in the listing. This is due to the "keep" option as mentioned before. If I don't pass this option, the output stalls at that vary position. So it seems that printk() is not continueing the job of early_printk().

Any help is welcome.

Best regards, Cor Venner


Found romfs @ 0x480dd000 (0x000e1000)
#### klimit 480ee000 ####
Moving 0x000e1000 bytes from 0x480dd000 to 0x480ed23c
New klimit: 0x481cf000
#### keep on printing ####
#### leaving 'machine_early_int' ####
Linux version 2.6.20-uc0 (cv@linux) (gcc version 3.4.1 ( PetaLinux 0.20 Build -r
c1 050607 )) #6 Fri Nov 9 20:58:25 CET 2007
setup_cpuinfo: initialising
setup_cpuinfo: No PVR support in CPU.  Using static compile-time info
set_cpuinfo_static: Using static CPU info.
setup_memory: max_mapnr: 0x49fff
setup_memory: min_low_pfn: 0x48000
setup_memory: max_low_pfn: 0x2000
On node 0 totalpages: 8192
 DMA zone: 64 pages used for memmap
 DMA zone: 0 pages reserved
 DMA zone: 8128 pages, LIFO batch:0
 Normal zone: 0 pages used for memmap
Built 1 zonelists.  Total pages: 8128
Kernel command line:
OPB INTC #0 at 0x41200000
PID hash table entries: 128 (order: 7, 512 bytes)
keeping early console
Dentry cache hash table entries: 4096 (order: 2, 0384 bytes)
Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
Bad page state in process 'swapper'
page:481d4420 flags:0x00000000 mapping:00000000 mapcount:-262144 count:0
Trying to fix it up, but a reboot is needed
Backtrace:

Stack:
 480cbeac 480096f8 00000000 480d5b34 00000000 4802a9a4 480bb624 480c4434
 481d4420 00000008 00000000 00000000 fffc0000 00000000 481d4420 4802b138
 00000000 00000220 80000000 00001fff 00048200 00000001 481d4420 00000000
Call Trace: [<480096f8>] [<480d5b34>] [<4802a9a4>] [<4802b138>] [<480d5d4c>] [<4 80d6a88>] [<480d58f0>] [<480d7ab0>] [<480d5ae0>] [<48000000>] [<48000000>] [<480 00000>] [<48000000>] [<480d3090>] [<480cc710>] [<480cc6f8>] [<480cc71c>] [<48000
c30>]
Bad page state in process 'swapper'
page:481d44a0 flags:0x00000000 mapping:00000000 mapcount:-262144 count:0
Trying to fix it up, but a reboot is needed
Backtrace:
___________________________
microblaze-uclinux mailing list
microblaze-uclinux@xxxxxxxxxxxxxx
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/



___________________________
microblaze-uclinux mailing list
microblaze-uclinux@xxxxxxxxxxxxxx
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/