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);