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@1000/@0:9. It is currently located here: /pci@80000000/pci-ata@4/ata-2@500/cdrom@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@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@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
ok
0 > .properties
name "aliases"
screen "/pci@80000000/mac-io@3/escc/ch-b"
mac-io "/pci@80000000/mac-io@3"
via-cuda "/pci@80000000/mac-io@3/via-cuda"
adb-keyboard "/pci@80000000/mac-io@3/via-cuda/adb/keyboard"
adb-mouse "/pci@80000000/mac-io@3/via-cuda/adb/mouse"
rtc "/pci@80000000/mac-io@3/via-cuda/rtc"
nvram "/pci@80000000/mac-io@3/nvram"
ttya "/pci@80000000/mac-io@3/escc/ch-a"
scca "/pci@80000000/mac-io@3/escc/ch-a"
ttyb "/pci@80000000/mac-io@3/escc/ch-b"
sccb "/pci@80000000/mac-io@3/escc/ch-b"
ide0 "/pci@80000000/pci-ata@4/ata-2/cdrom"
cd "/pci@80000000/pci-ata@4/ata-2/cdrom"
cdrom "/pci@80000000/pci-ata@4/ata-2/cdrom"
keyboard "/pci@80000000/mac-io@3/via-cuda@16000/adb/keyboard@8"
ok
Somehow Mac OS resolves "ide1" into "/pci/mac-io/ide@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.
Alex
>
> 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);
>