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

Blue Swirl blauwirbel at gmail.com
Sat Dec 11 18:19:01 CET 2010


On Sat, Dec 11, 2010 at 4:06 PM, Gleb Natapov <gleb at redhat.com> wrote:
> 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?)

There could be a FCode Program which sets the name.

>>                                                 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.

We have PMAC IDE, but this device is CMD646, so mac-io bus addressing
rules should not be used.

In this tree there are two disks connected to CMD646, named
/pci at 80000000/pci-bridge at d/pci-ata at 1/ata-4/disk and
/pci at 80000000/pci-bridge at d/pci-ata at 1/ata-4/disk at 1:
http://penguinppc.org/historical/dev-trees-html/g4_pci_350.html



More information about the OpenBIOS mailing list