1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
e500 -bios/-kernel broken with big images
This is tested using qemu 2.4.1, but it looks like the code qemu/hw/ppc/e500.c has not changed since. This looks like the source of the problem: http://git.qemu.org/?p=qemu.git;a=commitdiff;h=3812c71ffaa2cf733c3087792b859fef30b7545f
What works:
----------
Basic invocation qemu-system-ppc -machine ppce500 -monitor stdio -bios u-boot.e500 works, I get the uboot prompt and this:
(qemu) info roms
addr=0000000000f00000 size=0x044b8c mem=ram name="phdr #0: .../qemu/share/qemu/u-boot.e500"
addr=0000000000f81000 size=0x006b00 mem=ram name="phdr #1: .../qemu/share/qemu/u-boot.e500"
Passing u-boot.e500 image as kernel (-bios u-boot.e500 -kernel u-boot.e500) appears to work, $qemu_kernel_addr is filled in, though (as expected) uboot complains about the image format.
(qemu) info roms
addr=0000000000f00000 size=0x044b8c mem=ram name="phdr #0: .../qemu/share/qemu/u-boot.e500"
addr=0000000000f81000 size=0x006b00 mem=ram name="phdr #1: .../qemu/share/qemu/u-boot.e500"
addr=0000000002000000 size=0x054e8c mem=ram name=".../qemu/share/qemu/u-boot.e500
What doesn't work:
-----------------
However, once I try to load a big image (>=32 MiB), uboot doesn't even show anything:
qemu-system-ppc -machine ppce500 -monitor stdio -bios u-boot.e500 -kernel boot/vmlinux -m 1024
(qemu) info roms
addr=0000000000f00000 size=0x044b8c mem=ram name="phdr #0: .../qemu/share/qemu/u-boot.e500"
addr=0000000000f81000 size=0x006b00 mem=ram name="phdr #1: .../qemu/share/qemu/u-boot.e500"
addr=0000000002000000 size=0x27aeedc mem=ram name="boot/vmlinux"
...
(gdb) bt
#0 0x00f2efcc in ?? ()
#1 0x00f31554 in ?? ()
#2 0x00f03f4c in ?? ()
#3 0x00f04458 in ?? ()
#4 0x00f028dc in ?? ()
#5 0x00f01080 in ?? ()
The thing is, this used to work +- before the commit, where I'd just pass the image as -kernel option, and it booted.
If I do that now (w/o the -bios option, using the exact same image), the kernel gets loaded twice, only at different addresses (the cause is obvious from the commit), causing overlap error:
qemu-system-ppc -machine ppce500 -monitor stdio -kernel boot/vmlinux -m 1024
QEMU 2.4.1 monitor - type 'help' for more information
(qemu) rom: requested regions overlap (rom boot/vmlinux. free=0x00000000027492fc, addr=0x0000000002000000)
|