Contribute
Register

[Success] AMD RX6000 Series working in macOS

"PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0) try that. If IOReg shows GFX1 for the 6900XTthen yes try that.

Here's a good version of IOReg. Post a screenshot of the card please.
I assume you mean a screenshot of IORegistryExplorer, so I attached that... should I have 3 pci-bridge nests in my SSDT? Also, should the first one be BRG1?
 

Attachments

  • Screen Shot 2021-10-24 at 9.30.32 PM.png
    Screen Shot 2021-10-24 at 9.30.32 PM.png
    1.1 MB · Views: 132
I assume you mean a screenshot of IORegistryExplorer, so I attached that... should I have 3 pci-bridge nests in my SSDT? Also, should the first one be BRG1?
Open Hackintool PCIe tab and find the path PCIRoot(????????)

Screen Shot 2021-10-24 at 6.58.46 PM.png
 
Open Hackintool PCIe tab and find the path PCIRoot(????????)

View attachment 531863
Oh, I think provided that before: PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)

Here's the IOReg Path again too:

IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG2@1,2/IOPP/UPSB@0/IOPP/DSB1@1/IOPP/UPS0@0/IOPP/pci-bridge@1/IOPP/pci-bridge@0/IOPP/pci-bridge@0/IOPP/display@0

I also attached the .txt from Hackintool of the PCIe tab as well as a screenshot of it.
 

Attachments

  • pcidevices.txt
    13.1 KB · Views: 45
  • Screen Shot 2021-10-24 at 10.05.25 PM.png
    Screen Shot 2021-10-24 at 10.05.25 PM.png
    1.9 MB · Views: 67
Oh, I think provided that before: PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)

Here's the IOReg Path again too:

IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG2@1,2/IOPP/UPSB@0/IOPP/DSB1@1/IOPP/UPS0@0/IOPP/pci-bridge@1/IOPP/pci-bridge@0/IOPP/pci-bridge@0/IOPP/display@0

I also attached the .txt from Hackintool of the PCIe tab as well as a screenshot of it.
Look at these, Does the 5500 list as GFX0?
 

Attachments

  • SSDT-GFX0.aml
    100 bytes · Views: 80
  • SSDT-DGPU.aml
    100 bytes · Views: 62
  • pcidevices.plist
    9.5 KB · Views: 61
Look at these, Does the 5500 list as GFX0?
The Radeon 5500M lists as GFX0 in the I/O Registry... I noticed that the 6900 XT listed two device-ids: <af 73 00 00> & <bf 73 00 00> in the I/O Registry. I found why: I typed "device_id" into the config.plist when it should've been "device-id" for DeviceProperties. I fixed that & tested it, but it still didn't work. I checked the I/O Registry and there's only 1 device-id now, but unfortunately, it's <af 73 00 00>.
 
Hi @surgeinc

It looks like your path should be:

PCI0.PEG1.PEGP.BRG0.GFX0

I think you have to make that change. You can check if the SSDT correctly specifies the path by using IORegistryExplorer, then search for "GFX0"
@tedyun I really appreciate finding this one. Saved the day!
 
The Radeon 5500M lists as GFX0 in the I/O Registry... I noticed that the 6900 XT listed two device-ids: <af 73 00 00> & <bf 73 00 00> in the I/O Registry. I found why: I typed "device_id" into the config.plist when it should've been "device-id" for DeviceProperties. I fixed that & tested it, but it still didn't work. I checked the I/O Registry and there's only 1 device-id now, but unfortunately, it's <af 73 00 00>.

Holy crap! I didn’t even notice that I had a “-“ vs a “_” !!! You solved my mystery of two device-id’s!!!

I made the same change as you, then disabled the FakePCIID kexts. Works as it should. Thanks, Mr. Eagle Eyes!
 
The Radeon 5500M lists as GFX0 in the I/O Registry... I noticed that the 6900 XT listed two device-ids: <af 73 00 00> & <bf 73 00 00> in the I/O Registry. I found why: I typed "device_id" into the config.plist when it should've been "device-id" for DeviceProperties. I fixed that & tested it, but it still didn't work. I checked the I/O Registry and there's only 1 device-id now, but unfortunately, it's <af 73 00 00>.

Hi @WrathOfThePast

This is kind of what I think you need to do to make an SSDT, although I really have no idea if this will work.

This is based on the ACPI path you specified earlier:

/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG2@1,2/IOPP/UPSB@0/IOPP/DSB1@1/IOPP/UPS0@0/IOPP/pci-bridge@1/IOPP/pci-bridge@0/IOPP/pci-bridge@0/IOPP/display@0

I typed this out to name your pci-bridges, and I gave them random names "BRA0" "BRB0". Then I named your device "GFX1" since you're saying your existing Radeon 5500M is "GFX0"

Also, reading through your posts, you have an actual Mac? I'm not sure I would be mucking around with that.

Anyway, this SSDT doesn't compile, and it seems to be stuck on

DefinitionBlock ("", "SSDT", 2, "ACDT", "BRA0", "BRB0", "BRG0", 0x00000000)

I'm not sure what is wrong. But the idea is there.

Code:
/*
 * This table provides an example of creating a missing ACPI device
 * to ensure early DeviceProperty application. In this example
 * a GPU device is created for a platform having an extra PCI
 * bridge in the path - PCI0.PEG2.UPSB.DSB1.UPS0.BRA0.BRB0.BRG0.GFX1:
 * PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)
 * Such tables are particularly relevant for macOS 11.0 and newer.
 */

DefinitionBlock ("", "SSDT", 2, "ACDT", "BRA0", "BRB0", "BRG0", 0x00000000)
{
    External (_SB_.PCI0.PEG2.UPSB.DSB1.UPS0, DeviceObj)

    Scope (\_SB.PCI0.PEG2.UPSB.DSB1.UPS0)
    {
        /*
         * This is a PCI bridge device present on PEGP.
         * Normally seen as pci-bridge in I/O Registry.
         */
        Device (BRA0)
        {
            Name (_ADR, Zero)

            /*
             * This is an actual GPU device present on the bridge.
             * Normally seen as display in I/O Registry.
             */
            Device (BRB0)
            {
                Name (_ADR, Zero)  // _ADR: Address
                
                Device (BRG0)
                {
                    Name (_ADR, Zero)
                    
                    Device (GFX1)
                    {
                         Name (_ADR, Zero)
                    }
                }
            }
        }
    }
 }
 
Hi @WrathOfThePast

This is kind of what I think you need to do to make an SSDT, although I really have no idea if this will work.

This is based on the ACPI path you specified earlier:

/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/PEG2@1,2/IOPP/UPSB@0/IOPP/DSB1@1/IOPP/UPS0@0/IOPP/pci-bridge@1/IOPP/pci-bridge@0/IOPP/pci-bridge@0/IOPP/display@0

I typed this out to name your pci-bridges, and I gave them random names "BRA0" "BRB0". Then I named your device "GFX1" since you're saying your existing Radeon 5500M is "GFX0"

Also, reading through your posts, you have an actual Mac? I'm not sure I would be mucking around with that.

Anyway, this SSDT doesn't compile, and it seems to be stuck on

DefinitionBlock ("", "SSDT", 2, "ACDT", "BRA0", "BRB0", "BRG0", 0x00000000)

I'm not sure what is wrong. But the idea is there.

Code:
/*
 * This table provides an example of creating a missing ACPI device
 * to ensure early DeviceProperty application. In this example
 * a GPU device is created for a platform having an extra PCI
 * bridge in the path - PCI0.PEG2.UPSB.DSB1.UPS0.BRA0.BRB0.BRG0.GFX1:
 * PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)
 * Such tables are particularly relevant for macOS 11.0 and newer.
 */

DefinitionBlock ("", "SSDT", 2, "ACDT", "BRA0", "BRB0", "BRG0", 0x00000000)
{
    External (_SB_.PCI0.PEG2.UPSB.DSB1.UPS0, DeviceObj)

    Scope (\_SB.PCI0.PEG2.UPSB.DSB1.UPS0)
    {
        /*
         * This is a PCI bridge device present on PEGP.
         * Normally seen as pci-bridge in I/O Registry.
         */
        Device (BRA0)
        {
            Name (_ADR, Zero)

            /*
             * This is an actual GPU device present on the bridge.
             * Normally seen as display in I/O Registry.
             */
            Device (BRB0)
            {
                Name (_ADR, Zero)  // _ADR: Address
               
                Device (BRG0)
                {
                    Name (_ADR, Zero)
                   
                    Device (GFX1)
                    {
                         Name (_ADR, Zero)
                    }
                }
            }
        }
    }
 }
I found the official documentation on ACPI... you're right the error is in the DefinitionBlock... you can't separate BRA0, BRB0, & BRG0 with commas as that field is a table id... in essence, you're saying the revision id=BRB0. Furthermore, deleting the commas is also invalid syntax even if group with "<>." This is because there can only be one entry for the table id.

Here's what the DefinitionBlock should be according my understanding:
Code:
DefinitionBlock ("", "SSDT", 2, "ACDT", "BRA0", 0x00000000)

I am on genuine Mac which gave me an idea if this doesn't work:

I found the kext drivers Apple made for the 6800, 6800 XT, & 6900 XT and within each those I found a config.plist where they specified the applicable device-ids... I could simply add "0x73AF1200" to those each of those... however, those are in read-only System folder, so I'd have to indefinitely disable SIP & do some shenanigans which would break macOS update... on the plus side this would allow me to use Secure Boot and Fire Vault again.

macOS Monterey released today, so I'm installing it on my old MacBook Pro first to see if they added it before I do it myself.
 
I found the official documentation on ACPI... you're right the error is in the DefinitionBlock... you can't separate BRA0, BRB0, & BRG0 with commas as that field is a table id... in essence, you're saying the revision id=BRB0. Furthermore, deleting the commas is also invalid syntax even if group with "<>." This is because there can only be one entry for the table id.

Here's what the DefinitionBlock should be according my understanding:
Code:
DefinitionBlock ("", "SSDT", 2, "ACDT", "BRA0", 0x00000000)

I am on genuine Mac which gave me an idea if this doesn't work:

I found the kext drivers Apple made for the 6800, 6800 XT, & 6900 XT and within each those I found a config.plist where they specified the applicable device-ids... I could simply add "0x73AF1200" to those each of those... however, those are in read-only System folder, so I'd have to indefinitely disable SIP & do some shenanigans which would break macOS update... on the plus side this would allow me to use Secure Boot and Fire Vault again.

macOS Monterey released today, so I'm installing it on my old MacBook Pro first to see if they added it before I do it myself.
Update: macOS 12.0.1 Monterey did not add support.
 
Back
Top