All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] arm: wrong Relocation and not cleared BSS
@ 2010-10-30 13:08 Alexander Holler
  2010-10-30 13:36 ` Albert ARIBAUD
  2010-10-31  7:43 ` Heiko Schocher
  0 siblings, 2 replies; 39+ messages in thread
From: Alexander Holler @ 2010-10-30 13:08 UTC (permalink / raw)
  To: u-boot

Hello,

to give the topic a better meaning and to summarize what I think is 
currently happening along with some "pictures" for a better understanding:

We are starting with code (c) and data (d) somewhere in the memory:

----------
|cd      |
----------

The relocation in start.S should achieve this:

----------
|      cd|
----------

That means code and data should be moved upwards. What
currently is happening is the following:

----------
| d    c |
----------

The code is moved upwards, but that code still uses the data at d.
This results another problem: Some parts in the code are assuming that d 
is cleared (set to zero in start.S). But what start.S does it to clear
the new location (z in the picture below).

----------
| d    cz|
----------

Because the code (c) still uses the data (bss) in d and not in z, some 
hard to find errors might occur because the used data isn't set to zero 
as required.

I have almost no knowledge about how gcc and the binutils are handling 
relocation, therfore I can't help much further here. What I think is 
part of the problem, is that -fPIC was removed. Using -pie in LDFLAGS 
might be used to get relocatable code, but the data will not be 
relocated. And I would wonder if that is possible without instructing 
the compiler to build stuff for relocation (-fPIC).


I hope that brings some light into the problem.

Regards,

Alexander

^ permalink raw reply	[flat|nested] 39+ messages in thread
* [U-Boot] Bad page state in process 'swapper'
@ 2010-11-03  1:00 sywang
  2010-11-03  5:56 ` Albert ARIBAUD
  0 siblings, 1 reply; 39+ messages in thread
From: sywang @ 2010-11-03  1:00 UTC (permalink / raw)
  To: u-boot

Hi, 

I found that vmalloc is not able to allocate the memory.  What parameters
from u-boot are not right? 

Thanks!
Shuyou 

-----Original Message-----
From: sywang [mailto:sywang at dongniannetworks.com] 
Sent: 2010?11?2? 16:13
To: 'Albert ARIBAUD'
Cc: 'u-boot at lists.denx.de'
Subject: RE: Bad page state in process 'swapper' 

Albert, 

Thanks for your reply.  My log is shown below.  What you say is right.  The
error information is from Linux.  I guess that what parameters passed to
Linux by u-boot may be not right.  However, I don't know how to identify? 

TFTP from server 192.168.5.101; our IP address is 192.168.5.22
Filename 'mips.ari'.
Load address: 0x9f00000
Loading: #############################################
done
Bytes transferred = 2917360 (2c83f0 hex)

Image is not signed; verifying checksum... passed
do_tftpboot, Linux image has been verified: pass
do_tftpboot, going to do_bootoctlinux 
octeon_phy_mem_block_free addr: 0x100000, size: 0x8000000
ELF file is 64 bit
block alloc called: req_size: 0x2b25e0, min_addr: 0xa00000, max_addr: 0x0,
align: 0x0
Allocated memory for ELF segment: addr: 0xa00000, size 0x2b25e0
block alloc called: req_size: 0xd0, min_addr: 0xcb25e0, max_addr: 0x0,
align: 0x0
Allocated memory for ELF segment: addr: 0xcb25e0, size 0xd0
Loading .text @ 0x80a00000 (0x2b25b8 bytes)
Clearing .bss @ 0x80cb25c0 (0x20 bytes)
Loading .data @ 0x80cb25e0 (0x30 bytes)
Loading .MIPS.options @ 0x80cb2610 (0xa0 bytes)
naddr 2
addr vec 0, 0x2b25e0 @ 0xa00000
addr vec 1, 0xd0 @ 0xcb25e0
## Loading OS kernel with entry point: 0x80a00000 ...
block alloc called: req_size: 0x77, min_addr: 0x0, max_addr: 0x7fffffff,
align: 0x0
block alloc called: req_size: 0x190, min_addr: 0x0, max_addr: 0x7fffffff,
align: 0x0
block alloc called: req_size: 0x98, min_addr: 0x0, max_addr: 0x7fffffff,
align: 0x0
board type is: 11, CN3010_EVB_HS5
stack expected: 0x0, actual: 0x0
heap_base expected: 0x0, actual: 0x0
heap_top expected: 0x0, actual: 0x0
Entry point (virt): 0x80a00000
Address of start app: 0xffffffff80096d90
Bootloader: Done loading app on coremask: 0x1
octeon_phy_mem_block_free addr: 0x9f00000, size: 0x6000000
octeon_phy_mem_block_free addr: 0x8100000, size: 0x3200
octeon_phy_mem_block_free addr: 0x8103200, size: 0x20000
octeon_phy_mem_block_free addr: 0x8123200, size: 0x32000
do_bootoctlinux, going to start_cores 
Bringing coremask: 0x1 out of reset!
Address of start app: 0xffffffff80070914
block alloc called: req_size: 0x330, min_addr: 0x0, max_addr: 0x40000000,
align: 0x0
Bootloader: Starting app at cycle: 0
Welcome to start_cores. (octeon_boot.c:1547)
start_cores, going to BOOT_VECTOR_BASE app_start_func_addr 80096d90
==== start_linux ====
printf_boot_init_vector stack_addr:0x80062f58 code_addr: 0x80070568
k0_val:0x8003ff44 flags:0x0 boot_info_addr:0x800c2440 pad:0x0 pad2:0x0
printf_boot_info_block entry_point:0x80a00000 boot_desc_addr: 0x100080
stack_top:0x0 exception_base:0x1000 cvmx_desc_addr:0x0 flags:0x0 
Welcome to start_linux. (cmd_octeon_linux.c:596)
Uncompressing..
Welcome to start_kernel. (init/main.c:458)

XXXX Networks
XXXXOS Version  (build 0000 / label #wangsy at -ENG.0000) 
Built by wangsy at localhost on 2010-11-02 at 15:09:36 CST (gcc version 3.4.5
Cavium Networks Version: 1.4.0, build 58)
Welcome to start_kernel. (init/main.c:472)
prom_init(arch/mips/cavium-octeon/setup.c:783) arcs_cmdline:
console=ttyS0,9600
prom_init(arch/mips/cavium-octeon/setup.c:790) para[0]: bootoctlinux
prom_init(arch/mips/cavium-octeon/setup.c:790) para[1]: 9f00200
prom_init(arch/mips/cavium-octeon/setup.c:790) para[2]: bootver=
1.1.4.0/wangsy at -ENG.0000
CVMSEG size: 2 cache lines (256 bytes)
Setting flash physical map for 4MB flash at 0x1f800000
Determined physical RAM map:
Welcome to start_kernel. (init/main.c:474)
Kernel command line: console=ttyS0,9600 rdinit=/sbin/init
Welcome to start_kernel. (init/main.c:505)
Primary instruction cache 32kB, virtually tagged, 4 way, 64 sets, linesize
128 bytes.
Primary data cache 16kB, 64-way, 2 sets, linesize 128 bytes.
Welcome to start_kernel. (init/main.c:518)
Using 500.000 MHz high precision timer. cycles_per_jiffy=1000000
Welcome to start_kernel. (init/main.c:532)
Memory: 57344k/65536k available (1918k kernel code, 8144k reserved, 561k
data, 2172k init, 0k highmem)
Calibrating delay using timer specific routine.. 1000.32 BogoMIPS
(lpj=1000323)
available.
Checking for the multiply/shift bug... no.
Checking for the daddi bug... no.
Checking for the daddiu bug... no.
Welcome to start_kernel. (init/main.c:616)
Welcome to rest_init. (init/main.c:396)
Welcome to schedule. (kernel/sched.c:2889)
Welcome to schedule. (kernel/sched.c:3065)
detected lzma initramfs
initramfs: LZMA lc=3,lp=0,pb=2,dictSize=8388608,origSize=12677632
Bad page state in process 'swapper'
page:a8000000007b3418 flags:0x0000000000000000 mapping:0000000000000000
mapcount:-16711680 count:0
Trying to fix it up, but a reboot is needed
Backtrace:
Unwound Call Trace:
[<ffffffff80211dc8>] dump_stack+0x8/0x48
[<ffffffff80265c98>] bad_page+0x78/0xb0
[<ffffffff80266988>] get_page_from_freelist+0x230/0x488
[<ffffffff80266c44>] __alloc_pages+0x64/0x348
[<ffffffff8027b4ac>] __vmalloc_area_node+0x10c/0x230
[<ffffffff804741cc>] populate_rootfs+0x974/0xae0
[<ffffffff802007e4>] init+0x84/0x530
[<ffffffff8020db58>] kernel_thread_helper+0x10/0x18

Thanks!
Shuyou

-----Original Message-----
From: Albert ARIBAUD [mailto:albert.aribaud at free.fr] 
Sent: 2010?11?2? 15:44
To: sywang
Cc: u-boot at lists.denx.de
Subject: Re: Bad page state in process 'swapper'

Le 02/11/2010 08:37, sywang a ?crit :
>
> While U-boot loads the Linux image, I have the following error.   Do you
> have any suggestions on this?
>
>
> detected lzma initramfs
> initramfs: LZMA lc=3,lp=0,pb=2,dictSize=8388608,origSize=12677632
> Bad page state in process 'swapper'
> page:a8000000007b3418 flags:0x0000000000000000 mapping:0000000000000000
> mapcount:-16711680 count:0
> Trying to fix it up, but a reboot is needed
> Backtrace:
> Unwound Call Trace:
> [<ffffffff80211dc8>] dump_stack+0x8/0x48
> [<ffffffff80265c98>] bad_page+0x78/0xb0
> [<ffffffff80266988>] get_page_from_freelist+0x230/0x488
> [<ffffffff80266c44>] __alloc_pages+0x64/0x348
> [<ffffffff8027b4ac>] __vmalloc_area_node+0x10c/0x230
> [<ffffffff804741cc>] populate_rootfs+0x974/0xae0
> [<ffffffff802007e4>] init+0x84/0x530
> [<ffffffff8020db58>] kernel_thread_helper+0x10/0x18
>
>
> Thanks!
> Shuyou

Hi Shuyou,

This is not 'while u-boot loads Linux', this is 'while Linux boots after 
it was loaded by u-boot', because these messages are from Linux.

I'd say these messages typically occur when the image (kernel+ramfs) is 
corrupted. What does u-boot display before jumping to the Linux kernel?

Amicalement,
-- 
Albert.

^ permalink raw reply	[flat|nested] 39+ messages in thread

end of thread, other threads:[~2010-11-03  5:56 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-10-30 13:08 [U-Boot] arm: wrong Relocation and not cleared BSS Alexander Holler
2010-10-30 13:36 ` Albert ARIBAUD
2010-10-30 13:45   ` Alexander Holler
2010-10-30 13:57     ` Albert ARIBAUD
2010-10-30 14:07       ` Alexander Holler
2010-10-30 14:39       ` Wolfgang Denk
2010-10-30 16:01         ` Albert ARIBAUD
2010-10-30 16:10           ` Wolfgang Denk
2010-10-30 14:37     ` Wolfgang Denk
2010-10-30 14:36   ` Wolfgang Denk
2010-10-31 10:59     ` Alexander Holler
2010-10-31 11:58       ` Wolfgang Denk
2010-10-31 12:21         ` Albert ARIBAUD
2010-10-31 16:18         ` Alexander Holler
2010-10-30 15:00   ` Wolfgang Denk
2010-10-30 17:21     ` Albert ARIBAUD
2010-10-30 18:01       ` Wolfgang Denk
2010-10-31  7:44     ` Heiko Schocher
2010-10-30 15:15   ` Darius Augulis
2010-10-30 16:44     ` Albert ARIBAUD
2010-10-30 20:03     ` Alexander Holler
2010-10-30 20:51       ` Alexander Holler
2010-10-31  7:47         ` Heiko Schocher
2010-11-02  5:39           ` V, Aneesh
2010-11-02  5:58             ` V, Aneesh
2010-11-02  6:32               ` Albert ARIBAUD
2010-11-02  7:18                 ` V, Aneesh
2010-11-02  7:37                   ` [U-Boot] Bad page state in process 'swapper' sywang
2010-11-02  7:44                     ` Albert ARIBAUD
2010-11-02  8:13                       ` sywang
2010-11-02  8:44                         ` Wolfgang Denk
2010-11-02  8:40                     ` Wolfgang Denk
2010-11-03  2:29                       ` sywang
2010-11-02  7:41                   ` [U-Boot] arm: wrong Relocation and not cleared BSS Albert ARIBAUD
2010-11-02  8:53                     ` V, Aneesh
2010-11-02  9:04                       ` Albert ARIBAUD
2010-10-31  7:43 ` Heiko Schocher
2010-11-03  1:00 [U-Boot] Bad page state in process 'swapper' sywang
2010-11-03  5:56 ` Albert ARIBAUD

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.