Contribute
Register

MacPro 2019

Status
Not open for further replies.
Attached SSDT-AMD6950-V1-6.aml includes both device-id and compatible.
Thanks for that. Will test it on Friday maybe (when I get a remote access to the machine).
Strange, but this is how the spoofing inside the DSDT worked before:
Code:
/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20200925 (64-bit version)
 * Copyright (c) 2000 - 2020 Intel Corporation
 *
 * Disassembling to symbolic ASL+ operators
 *
 * Disassembly of iASL54e3Q6.aml, Wed Jun  1 14:43:16 2022
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x00000128 (296)
 *     Revision         0x02
 *     Checksum         0x84
 *     OEM ID           "Apple"
 *     OEM Table ID     "AMD6950"
 *     OEM Revision     0x00000000 (0)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20200925 (538970405)
 */
DefinitionBlock ("", "SSDT", 2, "Apple", "AMD6950", 0x00000000)
{
    External (_SB_.PC03, DeviceObj)
    External (_SB_.PC03.BR3A, DeviceObj)
    External (DTGP, MethodObj)    // 5 Arguments

    Scope (\_SB.PC03)
    {
        Device (BR3A)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Name (_SUN, 0x03)  // _SUN: Slot User Number
            Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
            {
                Return (Package (0x02)
                {
                    0x09,
                    0x04
                })
            }

            Device (GFX1)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                {
                    If (!Arg2)
                    {
                        Return (Buffer (One)
                        {
                             0x03                                             // .
                        })
                    }

                    Return (Package (0x12)
                    {
                        "device-id",
                        Buffer (0x04)
                        {
                             0xBF, 0x73, 0x00, 0x00                           // .s..
                        },

                        "compatible",
                        Buffer (0x24)
                        {
                            /* 0000 */  0x70, 0x63, 0x69, 0x31, 0x30, 0x30, 0x32, 0x2C,  // pci1002,
                            /* 0008 */  0x37, 0x33, 0x62, 0x66, 0x00, 0x70, 0x63, 0x69,  // 73bf.pci
                            /* 0010 */  0x63, 0x6C, 0x61, 0x73, 0x73, 0x2C, 0x30, 0x33,  // class,03
                            /* 0018 */  0x30, 0x30, 0x30, 0x30, 0x00, 0x47, 0x46, 0x58,  // 0000.GFX
                            /* 0020 */  0x31, 0x00, 0x00, 0x00                           // 1...
                        },

                        "model",
                        "AMD RX 6950XT"
                    })
                }

                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If (_OSI ("Darwin"))
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (Zero)
                    }
                }
            }
        }
    }
}
Also this is how the card attaches in Windows:
Code:
ACPI(_SB_)#ACPI(PC03)#ACPI(BR3A)#PCI(0000)#PCI(0000)#PCI(0000)
 
Last edited:
Attached SSDT-AMD6950-V1-6.aml includes both device-id and compatible.
I have a little progress:
I removed the device-id and now have this:
1654262975495.png


1654263008528.png

1654263327422.png

Still cannot load the kext though.

Code:
DefinitionBlock ("", "SSDT", 2, "Apple", "AMD6950", 0x00000000)
{
    External (_SB_.PC03, DeviceObj)
    External (_SB_.PC03.BR3A, DeviceObj)
    External (_SB_.PC03.BR3A.US00.DS00, DeviceObj)
    External (DTGP, MethodObj)    // 5 Arguments

    Scope (\_SB.PC03.BR3A.US00.DS00)
    {
        Device (GFX1)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
            {
                Local0 = Package (0x04)
                    {
                        "compatible",
                        Buffer (0x24)
                        {
                            /* 0000 */  0x70, 0x63, 0x69, 0x31, 0x30, 0x30, 0x32, 0x2C,  // pci1002,
                            /* 0008 */  0x37, 0x33, 0x62, 0x66, 0x00, 0x70, 0x63, 0x69,  // 73bf.pci
                            /* 0010 */  0x63, 0x6C, 0x61, 0x73, 0x73, 0x2C, 0x30, 0x33,  // class,03
                            /* 0018 */  0x30, 0x30, 0x30, 0x30, 0x00, 0x47, 0x46, 0x58,  // 0000.GFX
                            /* 0020 */  0x31, 0x00, 0x00, 0x00                           // 1...
                        },

                        "model",
                        "AMD RX 6950XT"
                    }
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }
        }
    }
}
 

Attachments

  • Mac Pro 6950.zip
    2.1 MB · Views: 70
Last edited:
I can inject anything but the device-id. As soon as device-id is injected OC crashes. What gives?
 
@CaseySJ I just realized I was booting all the time deleting the original SSDT-5 table. Attached is the Ioregistry with the SSDT-5 loaded and device-id missing from the SSDT.
1654271822979.png
 

Attachments

  • MacPro Backup03062022.ioreg.zip
    1.9 MB · Views: 48
@CaseySJ I just realized I was booting all the time deleting the original SSDT-5 table. Attached is the Ioregistry with the SSDT-5 loaded and device-id missing from the SSDT.
device-id needs to be injected otherwise the SSDT won't accomplish anything! If the system crashes when we spoof the device ID then it's necessary to find a solution or workaround for this problem.

Because the DSDT of your real Mac compiles properly in MaciASL, it is okay to make changes directly to the DSDT and load the modified version instead of the original version. It will be necessary to drop the original DSDT from ACPI --> Delete and attach the new DSDT from ACPI --> Add.

Have you already tried modifying the DSDT and injecting it?
 
Not Yet. Not sure how to do it correctly.
In a previous post you quoted a modified section of the DSDT. That is the right approach. We just need to copy Device (GFX1) into the PC03.BR3A.US00.DS00 section of the DSDT. Something like this:
Screen Shot 2022-06-03 at 10.00.02 AM.png

NOTE:
  • This modified DSDT should only be used if the AMD 6950XT is installed. Otherwise this DSDT is invalid.
 

Attachments

  • DSDT-MOD.aml
    52.6 KB · Views: 45
In a previous post you quoted a modified section of the DSDT. That is the right approach.
Yes, but again the injection works fine if no device-id is spoofed. I wish I could capture a panic log that I can share with Acidanthera team to see why OC is crashing. I will tests it, but at this point it is probably better to collect somehow a detailed debug/panic log.
 
Yes, but again the injection works fine if no device-id is spoofed. I wish I could capture a panic log that I can share with Acidanthera team to see why OC is crashing. I will tests it, but at this point it is probably better to collect somehow a detailed debug/panic log.
Do you know if anyone with a real Mac Pro such as yours has been able to spoof their AMD GPU device ID? Perhaps someone on MacRumors website or eGPU.io website?
 
Do you know if anyone with a real Mac Pro such as yours has been able to spoof their AMD GPU device ID? Perhaps someone on MacRumors website or eGPU.io website?
I think I found the problem:
 
Status
Not open for further replies.
Back
Top