Yes, it booted to video just fine, I didn't test further, but I will later. No reason to believe it won't work fully.
The 7800GT worked when connected to my B&W G4. I used a 64 bit 33MHz slot to connect the Netstor NA255A which had the 7800GT and some Thunderbolt add-in cards installed. I kept the 9200 in the 32 bit 66 MHz slot.
I used a
nvramrc
patch for Open Firmware 3.1.1 to enable all the slots of the Netstor (since Apple Open Firmware only supports device numbers 0x00 - 0x0F from PCI bridges instead of 0x00 - 0x1F).
UPDATE: The patches are in the attached "pci-pci-config patch.4th" file.
The patch for New World Macs is much simpler than for Old World Macs (below) since the fcode images are already in RAM (because New World Macs decompress parts of ROM into RAM). Open Firmware 3.1.1 decompresses to 0x00200000 and its PCI Bridge device class fcode driver begins at 0x002413C8.
Search for "version for Open Firmware 3.1.1" in "pci-pci-config patch.4th".
For Open Firmware 1.0.5, the version 1 of the patch moves a page of ROM to RAM and patches that.
Search for "version 1 for Open Firmware 1.0.5".
The preferred patch is "version 3 for Open Firmware 1.0.5"
I booted into Mac OS X 10.4.11 and did some OpenMark benchmarks (see attached). A Quad G5 has score 9331 for 1920x1080 while the B&W G4 has a score of 7372 and the Radeon 9200 is 1179.
The PCI tab in System Information.app seems to show only 20 PCI devices. Most of them were PCI bridges (from the PCI-PCIe bridge, the Thunderbolt add-in cards, and the Netstor's PCIe-PCIe bridge). I think later versions of System Information.app hide PCI bridges. All the devices are visible in ioreg and IORegistryExplorer.app.
Here's what device-tree looks like in the Power Mac 8600 (replaced the 7800GT with an NVMe so that
probe-all
will complete successfully)
Code:
/bandit@F2000000
/gc@10
/pci106b,1@B
/pci-bridge@D \ 12D8:E111 StarTech PCI to PCIe bridge
/pci-bridge@0 \ 10B5:8747 upstream for Netstor
/pci-bridge@8 \ 10B5:8747 downstream for Netstor
/pci-bridge@0 \ 8086:15ea upstream for Titan Ridge
/pci-bridge@0 \ 8086:15ea downstream for Titan Ridge NHI
/pci2222,1111@0 \ 8086:15eb JHL7540 Thunderbolt 3 NHI [Titan Ridge 4C 2018]
/pci-bridge@1 \ 8086:15ea downstream for thunderbolt port
/pci-bridge@2 \ 8086:15ea downstream for Titan Ridge USB
/pci2222,1111@0 \ 8086:15EC JHL7540 Thunderbolt 3 USB Controller [Titan Ridge 4C 2018]
/pci-bridge@4 \ 8086:15ea downstream for thunderbolt port
/pci-bridge@9 \ 10B5:8747 downstream for Netstor
/pci-bridge@0 \ 8086:1136 upstream for Maple Ridge
/pci-bridge@0 \ 8086:1136 downstream for Maple Ridge NHI
/pci8086,0@0 \ 8086:1137 Thunderbolt 4 NHI [Maple Ridge 4C 2020]
/pci-bridge@1 \ 8086:1136 downstream for Maple Ridge Thunderbolt port
/pci-bridge@2 \ 8086:1136 downstream for Maple Ridge USB
/pci8086,1138@0 \ Thunderbolt 4 USB Controller [Maple Ridge 4C 2020]
/pci-bridge@3 \ 8086:1136 downstream for Maple Ridge Thunderbolt port
/pci-bridge@10 \ 10B5:8747 downstream for Netstor
/pci1987,5016@0 \ E16 PCIe4 NVMe Controller
/pci-bridge@11 \ 10B5:8747 downstream for Netstor
\ hidden Alpine Ridge needs extra code to unhide it
I ordered a new Keyspan USA-28X USB to 8pin Mini DIN adapter, never was able to get my old one to work.
You don't need to install the Keyspan USB driver if you use Serial.app. Serial.app includes text pacing options so that you can paste lots of text without the destination loosing some bytes. The text pacing also works with telnet which is what you would use to access Open Firmware of New World Macs that don't have serial.
My LSI PCI-E SATA/SAS adapter seems to work just fine in this bridge, even the FCODE seems compatible with the Beige G3.
Yeah, I don't know why some PCIe devices like the 7800GT aren't reliable when accessed from Old World Macs.
I think I need a version prior to 5.127 as they removed the erase EEPROM feature.
What's the difference between erase and writing a blank firmware?
You can take my fcode file and delete everything after the Nvidia soft straps stuff (except
fcode-end
and
pci-end
), then use
toke
to create a rom and flash that? You can add a
device-name
. Add some logging. Whatever you like with 128K of ROM space to play with. Use a different name to make sure Nvidia driver doesn't match to it (though it might match by device ID and vendor ID but I don't think it matters since it will be missing all the other required properties).
I don't think there should be a problem with the device showing up. I've been testing the 7800GT with a debugging fcode image that logs lots of stuff so I know it gets detected and its ROM gets loaded and executed. It fails during setup which involves reading/writing to some registers in BAR 0 (≈49000 of these but it only completes some of them). Maybe it's a timing issue, but the 33 MHz slot in my B&W G3 where the setup succeeds is the same speed as the slot in my PM8600 where the setup fails. Maybe I should try adding additional delays to the fcode?