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

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



Hello Mike and everyone who is interested,

let us share some more details to look if we can identify a pattern:
- I use the image.srec as source for the kernel and fsrom, I expect that most of us use image.bin or image.ub
- networking is disabled in "menuconfig"
- initially the board had 128Mbyte SDRAM (not DDR) configured, which is quite al lot when compared to the evaluation boards mostly used. I have brought this down to 32Mbyte in Kconfig. The difference that I could notice was that the downsized memory version was able to reach the "Memory: 29378k/32768k available" and "Calibrating delay loop.." messages while backtracing. So it seems that there is some multi processing is going on. - This SDRAM<>DDR difference is quite intriguing. As far as I can remember is the Memec board a DDR board, the SZ130 is a SDRAM board as far as I could find out on the web. My Gemini board is also SDRAM. Could it be something in the configuration info of the IP?? - I have applied the peripheral test functions as provided by Xilinx. They run successfully. Unfortunately the do not test the serial interface interrupt. I expect that the timer and interrupt controller are running correctly. See the previous statement. - Xilinx tests the memory in a simple way. They try if they can do char, short and long accesses. I have extended this test and it seems to run succesfully on 128Mbyte of SDRAM

I don't quite understand the relation between printk() and early_printk(). At what point has printk() to take over the role of early_printk(). And what is happening when you apply the "keep" option in init_early_printk() on a correct running system. Is the info displayed twice?

Mike, is this something which you can try on the Memec board?

Best regards, Cor Venner

----- Original Message ----- From: "Mike Thompson" <mike@xxxxxxxxxx>
To: <microblaze-uclinux@xxxxxxxxxxxxxx>
Sent: Saturday, November 10, 2007 12:18 AM
Subject: 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/



___________________________
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/