[OpenBIOS] [Qemu-ppc] Changing CD-ROM path

Alexander Graf agraf at suse.de
Sat Jun 22 20:05:14 CEST 2013

On 22.06.2013, at 19:53, Programmingkid wrote:

> On Jun 22, 2013, at 1:27 PM, Alexander Graf wrote:
>> On 22.06.2013, at 18:50, Programmingkid wrote:
>>> Mac OS 10.2 requires the boot CD-ROM to be located here: /pci/mac-io/ide at 1000/@0:9. It is currently located here:  /pci at 80000000/pci-ata at 4/ata-2 at 500/cdrom at 0. How would I go about changing the CD-ROM to this location? I'm looking for a specific file or files to make this change.
>> This is an OF path, which is up to OpenBIOS to construct.
>> What makes you think that Mac OS searches at that exact location?
>> Alex
> XNU (Mac OS X's kernel) prints this line to the screen: 
> From path: “ide1/@0:9,\mach_kernel”, Waiting on <dict ID=”0”><key>IOPathMatch</key><string ID=”1”>IODeviceTree:/pci/mac-io/ide at 1000/@0:9</string></dict>
> The key IOPathMatch means the location of the cdrom has to be at a certain location. In this case it is /pci/mac-io/ide at 1000/@0:9.

Yes, but I don't see where Mac OS X has this hardcoded. It gets passed in somehow.

What machine type is this? g3beige? On there, I don't see an ide1 alias anywhere:

0 > dev /aliases  ok
0 > ls
0 > .properties
name                      "aliases"
screen                    "/pci at 80000000/mac-io at 3/escc/ch-b"
mac-io                    "/pci at 80000000/mac-io at 3"
via-cuda                  "/pci at 80000000/mac-io at 3/via-cuda"
adb-keyboard              "/pci at 80000000/mac-io at 3/via-cuda/adb/keyboard"
adb-mouse                 "/pci at 80000000/mac-io at 3/via-cuda/adb/mouse"
rtc                       "/pci at 80000000/mac-io at 3/via-cuda/rtc"
nvram                     "/pci at 80000000/mac-io at 3/nvram"
ttya                      "/pci at 80000000/mac-io at 3/escc/ch-a"
scca                      "/pci at 80000000/mac-io at 3/escc/ch-a"
ttyb                      "/pci at 80000000/mac-io at 3/escc/ch-b"
sccb                      "/pci at 80000000/mac-io at 3/escc/ch-b"
ide0                      "/pci at 80000000/pci-ata at 4/ata-2/cdrom"
cd                        "/pci at 80000000/pci-ata at 4/ata-2/cdrom"
cdrom                     "/pci at 80000000/pci-ata at 4/ata-2/cdrom"
keyboard                  "/pci at 80000000/mac-io at 3/via-cuda at 16000/adb/keyboard at 8"

Somehow Mac OS resolves "ide1" into "/pci/mac-io/ide at 1000". That's the part where the logic fails.

Please don't drop the CCs. There's a good reason I added Mark and the OpenBIOS list. This issue is very likely completely QEMU unrelated.


> You say OpenBIOS construct's this path. In the file mac_oldworld.c, around line 280, it looks like it sets the location. Here is the code:
>     macio = pci_create(pci_bus, -1, TYPE_OLDWORLD_MACIO);
>     dev = DEVICE(macio);
>     qdev_connect_gpio_out(dev, 0, pic[0x12]); /* CUDA */
>     qdev_connect_gpio_out(dev, 1, pic[0x0D]); /* IDE */
>     qdev_connect_gpio_out(dev, 2, pic[0x02]); /* IDE DMA */
>     macio_init(macio, pic_mem, escc_bar);
>     /* First IDE channel is a MAC IDE on the MacIO bus */
>     macio_ide = MACIO_IDE(object_resolve_path_component(OBJECT(macio),
>                                                         "ide"));
>     macio_ide_init_drives(macio_ide, hd);
>     /* Second IDE channel is a CMD646 on the PCI bus */
>     hd[0] = hd[MAX_IDE_DEVS];
>     hd[1] = hd[MAX_IDE_DEVS + 1];
>     hd[3] = hd[2] = NULL;
>     pci_cmd646_ide_init(pci_bus, hd, 0);

More information about the OpenBIOS mailing list