[OpenBIOS] [PATCHv8 00/16] boot order specification

Gleb Natapov gleb at redhat.com
Sat Dec 11 17:06:17 CET 2010


On Sat, Dec 11, 2010 at 03:13:35PM +0000, Blue Swirl wrote:
> On Wed, Dec 8, 2010 at 11:34 AM, Gleb Natapov <gleb at redhat.com> wrote:
> > Forget to save a couple of buffers before sending version 7 :(
> >
> > Anthony, Blue can this be applied now?
> 
> I made some more tests, this time with PPC. I modified OpenBIOS to
> print out the boot device list:
> 
> $ qemu-system-ppc -drive if=none,id=hda,file=/dev/null -device
> ide-drive,drive=hda,bootindex=1 -drive if=none,id=cd,file=/dev/null
> -device ide-drive,drive=cd,bootindex=0 -nographic -prom-env
> 'auto-boot?=false' -L .
> qemu-system-ppc: pci_add_option_rom: failed to find romfile "vgabios-stdvga.bin"
> Could not open option rom 'pxe-ne2k_pci.bin': No such file or directory
> 
> >> =============================================================
> >> OpenBIOS 1.0 [Nov 28 2010 19:37]
> >> Configuration device id QEMU version 1 machine id 2
> >> CPUs: 1
> >> Memory: 128M
> >> UUID: 00000000-0000-0000-0000-000000000000
> >> CPU type PowerPC,750
> >> bootindex /grackle at fec00000/ide at 3/drive at 1/disk at 1
> >> /grackle at fec00000/ide at 3/drive at 1/disk at 0
> Welcome to OpenBIOS v1.0 built on Nov 28 2010 19:37
> 
> 0 > show-devs
> 7be6324 /
> 7be6440 /aliases
> 7be64e4 /openprom (BootROM)
> 7bebfa0 /openprom/client-services
> 7be668c /options
> 7be6704 /chosen
> 7be67e8 /builtin
> 7be688c /builtin/console
> 7bebcac /packages
> 7becda8 /packages/cmdline
> 7becee8 /packages/disk-label
> 7bedb58 /packages/terminal-emulator
> 7bee548 /packages/deblocker
> 7bee89c /packages/hfsplus-files
> 7beeb3c /packages/hfs-files
> 7beedd8 /packages/ext2-files
> 7bef010 /packages/iso9660-files
> 7bef248 /packages/grubfs-files
> 7bef480 /packages/mac-parts
> 7bef6b8 /packages/pc-parts
> 7bef8ec /packages/xcoff-loader
> 7bef9b8 /packages/elf-loader
> 7befa80 /packages/bootinfo-loader
> 7bed958 /cpus
> 7bf2fe8 /cpus/PowerPC,750 at 0 (cpu)
> 7beda58 /memory at 0 (memory)
> 7befb4c /pci at 80000000 (pci)
> 7beff64 /pci at 80000000/QEMU,VGA at 1 (display)
> 7bf0438 /pci at 80000000/NE2000 at 2 (network)
> 7bf0814 /pci at 80000000/pci-ata at 3 (pci-ide)
> 7bf0c50 /pci at 80000000/pci-ata at 3/ata-1 at 500 (ata)
> 7bf0dd0 /pci at 80000000/pci-ata at 3/ata-2 at 600 (ata)
> 7bf0f50 /pci at 80000000/pci-ata at 3/ata-2 at 600/disk at 1 (block)
> 7bf131c /pci at 80000000/pci-ata at 3/ata-2 at 600/disk at 0 (block)
> 7bf1674 /pci at 80000000/mac-io at 4 (mac-io)
> 7bf1b54 /pci at 80000000/mac-io at 4/via-cuda at 16000 (via-cuda)
> 7bf1d70 /pci at 80000000/mac-io at 4/via-cuda at 16000/adb (adb)
> 7bf1ed8 /pci at 80000000/mac-io at 4/via-cuda at 16000/adb/keyboard at 8 (keyboard)
> 7bf2080 /pci at 80000000/mac-io at 4/via-cuda at 16000/adb/mouse at 9 (mouse)
> 7bf220c /pci at 80000000/mac-io at 4/via-cuda at 16000/rtc (rtc)
> 7bf23f4 /pci at 80000000/mac-io at 4/nvram at 60000 (nvram)
> 7bf2614 /pci at 80000000/mac-io at 4/escc at 13000 (escc)
> 7bf271c /pci at 80000000/mac-io at 4/escc at 13000/ch-a at 13020 (serial)
> 7bf29b4 /pci at 80000000/mac-io at 4/escc at 13000/ch-b at 13000 (serial)
> 7bf2c20 /pci at 80000000/mac-io at 4/ata-3 at 20000 (ata)
>  ok
> 
> /grackle at fec00000/ide at 3/drive at 1/disk at 1 does not match
> /pci at 80000000/pci-ata at 3/ata-2 at 600/disk at 1.
> 
hw/ppc_oldworld.c has:
pci_bus = pci_grackle_init(0xfec00000, pic);
i.e it registers pci controller at MMIO address 0xfec00000. 0x80000000
is isa mmio base. Why OpenBIOS uses 80000000 as address of pci
controller? May be on real HW all memory access above 0x80000000 is
redirected to pci controller and it emulates isa? Then we should fix
qemu to do the same.

> I wonder where '@80000000' comes from. A dump of original g3beige
> device tree is here:
> http://penguinppc.org/historical/dev-trees-html/g3_beige_300.html
> 
> But actually the tree generated by OpenBIOS looks more like g3bw one:
> http://penguinppc.org/historical/dev-trees-html/g3bw_400.html
> 
> How can we get the names to be more compatible? At least
> s/grackle/pci/ is easy to do in QEMU, but which instance (QEMU or
> OpenBIOS) should handle pci-ata vs ide change?
http://playground.sun.com/pub/p1275/bindings/pci/pci2_1.pdf has table on
page 10 that defines how pci class code should be translated into OF
name. This is what my patch is using. pci-ata does not look spec
compliant (or is there more up-to-date spec?)

>                                                 What should we do with
> ata-2 at 600 vs drive at 1?
There is no available IDE OF binding spec, so I when with the way
OpenBIOS reports ata on qemu-x86. I have no idea what 600 in ata-2 at 600
may mean, but looking at g3_beige_300.html there is no such node there
and looking at any other device tree in http://penguinppc.org/historical/dev-trees-html/
I haven't found one that use this kind of addressing for pci-ata. 
http://penguinppc.org/historical/dev-trees-html/g3bw_400.html for
instance has pci at 80000000/pci-bridge at d/pci-ata at 1/ata-4. ata-2 at 600 kind of
addressing is used by devices on mac-io bus which I do not think we
emulate in qemu. So it looks like OpneBIOS is wrong here.

--
			Gleb.



More information about the OpenBIOS mailing list