Contribute
Register

MacPro 2019

Joined
May 10, 2012
Messages
134
Motherboard
Asus X299 PRO/SE
CPU
i9-10920X
Graphics
6900XT, W6600, W6800
Mac
  1. Mac Pro
Have you tried SSDT-AMD6950-V2.aml?
I tried it but I had constant panics as I posted before, so I ended up deleting the entire EFI folder and starting from scratch. Something messed up in the EFI folder after using CNTRL+Z (to undo an action there).
 
Last edited:

CaseySJ

Moderator
Joined
Nov 11, 2018
Messages
20,091
Motherboard
Asus ProArt Z690-Creator
CPU
i7-12700K
Graphics
RX 6800 XT
Mac
  1. MacBook Air
  2. MacBook Pro
  3. Mac Pro
Classic Mac
  1. Quadra
Mobile Phone
  1. iOS
The patch is still there as you can see from the config file.
This is good; it shows that the previous SSDT is on the right track and we can dismiss SSDT-AMD6950-V2.aml.

Please boot with this one again: SSDT-AMD6950-V1-4.aml.

If system boots up, does device-id get set to BF 73 (reverse by order) in IOReg?

After selecting
SSDT-AMD6950-V1-4.aml and rebooting, please run IORegistryExplorer and check this:
Screen Shot 2022-05-31 at 10.39.00 AM.png
 
Joined
May 10, 2012
Messages
134
Motherboard
Asus X299 PRO/SE
CPU
i9-10920X
Graphics
6900XT, W6600, W6800
Mac
  1. Mac Pro
This is good; it shows that the previous SSDT is on the right track and we can dismiss SSDT-AMD6950-V2.aml.

Please boot with this one again: SSDT-AMD6950-V1-4.aml.

If system boots up, does device-id get set to BF 73 (reverse by order) in IOReg?

After selecting
SSDT-AMD6950-V1-4.aml and rebooting, please run IORegistryExplorer and check this:
View attachment 548678
SSDT-AMD6950-V1-4.aml gave me panic with this EFI folder. I may try again:
Code:
 Scope (\_SB.PC03.BR3A)
    {
        Scope (US00)
        {
            Name (_STA, Zero)  // _STA: Status
        }

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

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

                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }

                   }
    }
}
Because I tested it with the previous EFI where the folder was not in good shape.
I also tried injecting device-id=BF730000 through device properties in
Code:
PciRoot(0x3)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)
with the current SSDT, but it also panicked.

If I want to inject "compatible" rather than device-id how should the SSDT look?
 

CaseySJ

Moderator
Joined
Nov 11, 2018
Messages
20,091
Motherboard
Asus ProArt Z690-Creator
CPU
i7-12700K
Graphics
RX 6800 XT
Mac
  1. MacBook Air
  2. MacBook Pro
  3. Mac Pro
Classic Mac
  1. Quadra
Mobile Phone
  1. iOS
SSDT-AMD6950-V1-4.aml gave me panic with this EFI folder. I may try again:
Code:
 Scope (\_SB.PC03.BR3A)
    {
        Scope (US00)
        {
            Name (_STA, Zero)  // _STA: Status
        }

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

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

                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }

                   }
    }
}
That is not SSDT-AMD6950-V1-4.aml. Below is what V1-4 looks like. Notice we have EGP2.EGP1.GFX1 below, but EGP1 is missing from the SSDT you quoted above.
Code:
DefinitionBlock ("", "SSDT", 2, "Apple", "AMD6950", 0x00000000)
{
    External (_SB_.PC03, DeviceObj)
    External (_SB_.PC03.BR3A, DeviceObj)
    External (_SB_.PC03.BR3A.US00, DeviceObj)

    Scope (\_SB.PC03.BR3A)
    {
        Scope (US00)
        {
            Name (_STA, Zero)  // _STA: Status
        }

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

                        Return (Package (0x02)
                        {
                            "device-id", 
                            Buffer (0x04)
                            {
                                 0xBF, 0x73, 0x00, 0x00                           // .s..
                            }
                        })
                    }
                }
            }
        }
    }
}
 
Joined
May 10, 2012
Messages
134
Motherboard
Asus X299 PRO/SE
CPU
i9-10920X
Graphics
6900XT, W6600, W6800
Mac
  1. Mac Pro
That is not SSDT-AMD6950-V1-4.aml.
I may have not been clear. The snippet I posted was from SSDT-AMD6950-V2.aml (without the audio injection), but I thought of testing it again. SSDT-AMD6950-V1-4.aml gave me panic.
This is what gave me panic:
Code:
DefinitionBlock ("", "SSDT", 2, "Apple", "AMD6950", 0x00000000)
{
    External (_SB_.PC03, DeviceObj)
    External (_SB_.PC03.BR3A, DeviceObj)
    External (_SB_.PC03.BR3A.US00, DeviceObj)

    Scope (\_SB.PC03.BR3A)
    {
        Scope (US00)
        {
            Name (_STA, Zero)  // _STA: Status
        }

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

                        Return (Package (0x02)
                        {
                            "device-id", 
                            Buffer (0x04)
                            {
                                 0xBF, 0x73, 0x00, 0x00                           // .s..
                            }
                        })
                    }
                }
            }
        }
    }
}
 
Joined
May 10, 2012
Messages
134
Motherboard
Asus X299 PRO/SE
CPU
i9-10920X
Graphics
6900XT, W6600, W6800
Mac
  1. Mac Pro
SSDT-AMD6950-V2.aml:



Code:
DefinitionBlock ("", "SSDT", 2, "Apple", "AMD6950", 0x00000000)
{
    External (_SB_.PC03, DeviceObj)
    External (_SB_.PC03.BR3A, DeviceObj)
    External (_SB_.PC03.BR3A.US00, DeviceObj)
    External (DTGP, MethodObj)    // 5 Arguments
Scope (\_SB.PC03.BR3A)
    {
        Scope (US00)
        {
            Name (_STA, Zero)  // _STA: Status
        }

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

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

                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }

        }
    }
}
Attached is the Ioregistry. No panic.


SSDT-AMD6950-V1-4.aml panics:
Code:
DefinitionBlock ("", "SSDT", 2, "Apple", "AMD6950", 0x00000000)

{
    External (_SB_.PC03, DeviceObj)
    External (_SB_.PC03.BR3A, DeviceObj)
    External (_SB_.PC03.BR3A.US00, DeviceObj)
    External (DTGP, MethodObj)    // 5 Arguments

    Scope (\_SB.PC03.BR3A)
    {
        Scope (US00)
        {
            Name (_STA, Zero)  // _STA: Status
        }

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

                        Return (Package (0x02)
                        {
                            "device-id",
                            Buffer (0x04)
                            {
                                 0xBF, 0x73, 0x00, 0x00                           // .s..
                            }
                        })
                    }
                 
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
                }
            }
        }
    }
}


This one panics too:
Code:
DefinitionBlock ("", "SSDT", 2, "Apple", "AMD6950", 0x00000000)
{
    External (_SB_.PC03, DeviceObj)
    External (_SB_.PC03.BR3A, DeviceObj)
    External (_SB_.PC03.BR3A.US00, DeviceObj)
   
    Scope (\_SB.PC03.BR3A)
    {
        Scope (US00)
        {
            Name (_STA, Zero)  // _STA: Status
        }

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

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

Attachments

  • SSDT-AMD6950-V2.zip
    1.9 MB · Views: 25
Last edited:
Joined
May 10, 2012
Messages
134
Motherboard
Asus X299 PRO/SE
CPU
i9-10920X
Graphics
6900XT, W6600, W6800
Mac
  1. Mac Pro
@CaseySJ As you can see the device-id is attached and does not panic with SSDT-AMD6950-V2.aml, but of course it is not attached properly:

1654095783354.png



1654088526359.png
 

Attachments

  • 1654087979625.png
    1654087979625.png
    614.4 KB · Views: 27
  • bootlog 4.txt
    242.4 KB · Views: 12
Last edited:
Joined
May 10, 2012
Messages
134
Motherboard
Asus X299 PRO/SE
CPU
i9-10920X
Graphics
6900XT, W6600, W6800
Mac
  1. Mac Pro
If system boots up, does device-id get set to BF 73 (reverse by order) in IOReg?
Here is a screenshot of 6900XT's IOreg in another machine:
1654095240754.png



device-id attaches the same way as above in SDT-AMD6950-V2.aml
 
Last edited:

CaseySJ

Moderator
Joined
Nov 11, 2018
Messages
20,091
Motherboard
Asus ProArt Z690-Creator
CPU
i7-12700K
Graphics
RX 6800 XT
Mac
  1. MacBook Air
  2. MacBook Pro
  3. Mac Pro
Classic Mac
  1. Quadra
Mobile Phone
  1. iOS
Here is a screenshot of 6900XT's IOreg in another machine:

device-id attaches the same way as above in SDT-AMD6950-V2.aml
After re-reviewing IOReg files from today and earlier I can conclude that SSDT-AMD6950-V2.aml is incorrect. We can disregard that version.

Instead, please try the attached SSDT-AMD6950-V1-5.aml. If the system continues to panic, it might mean that we cannot spoof a 6950 to 6900.

Two other factors to consider:
  • Consider disabling SecureBootModel (from OpenCore Configurator --> Misc --> Security)
  • Consider disabling SIP (System Integrity Protection). On a real Mac we should do this:
    • Boot into Recovery
    • Open Terminal window
    • Type csrutil disable
    • To re-enable it, we type csrutil enable
 

Attachments

  • SSDT-AMD6950-V1-5.aml
    187 bytes · Views: 18
Joined
May 10, 2012
Messages
134
Motherboard
Asus X299 PRO/SE
CPU
i9-10920X
Graphics
6900XT, W6600, W6800
Mac
  1. Mac Pro
Tried this SSDT:
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 iASLF7XW0s.aml, Wed Jun  1 12:42:05 2022
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x00000150 (336)
 *     Revision         0x02
 *     Checksum         0xE3
 *     OEM ID           "Slav"
 *     OEM Table ID     "BRG0"
 *     OEM Revision     0x00000000 (0)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20200925 (538970405)
 */
DefinitionBlock ("", "SSDT", 2, "Slav", "BRG0", 0x00000000)
{
    External (_SB_.PC03.BR3A, DeviceObj)
    External (_SB_.PC03.BR3A.US00, DeviceObj)
    External (DTGP, MethodObj)    // 5 Arguments

    Scope (\_SB.PC03.BR3A)
    {
        Device (EGP2)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Device (EGP1)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Device (GFX0)
                {
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (_OSI ("Darwin"))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }

                    

                    Name (_ADR, Zero)  // _ADR: Address
                }

                Device (HDAU)
                {
                    Name (_ADR, One)  // _ADR: Address
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (_OSI ("Darwin"))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If (_OSI ("Darwin"))
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (Zero)
                    }
                }
            }
        }
    }

    Scope (\_SB.PC03.BR3A.US00)
    {
        Method (_STA, 0, NotSerialized)  // _STA: Status
        {
            If (_OSI ("Darwin"))
            {
                Return (Zero)
            }
            Else
            {
                Return (0x0F)
            }
        }
    }
}
And it attaches

Tried this

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 iASLF7XW0s.aml, Wed Jun  1 12:42:05 2022
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x00000150 (336)
 *     Revision         0x02
 *     Checksum         0xE3
 *     OEM ID           "Slav"
 *     OEM Table ID     "BRG0"
 *     OEM Revision     0x00000000 (0)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20200925 (538970405)
 */
DefinitionBlock ("", "SSDT", 2, "Slav", "BRG0", 0x00000000)
{
    External (_SB_.PC03.BR3A, DeviceObj)
    External (_SB_.PC03.BR3A.US00, DeviceObj)
    External (DTGP, MethodObj)    // 5 Arguments

    Scope (\_SB.PC03.BR3A)
    {
        Device (EGP2)
        {
            Name (_ADR, Zero)  // _ADR: Address
            Device (EGP1)
            {
                Name (_ADR, Zero)  // _ADR: Address
                Device (GFX0)
                {
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (_OSI ("Darwin"))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }

                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        Local0 = Package (0x02)
                            {
                                "device-id",
                                Buffer (0x04)
                                {
                                     0xBF, 0x73, 0x00, 0x00                           // .s..
                                }
                            }
                        DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                        Return (Local0)
                    }

                    Name (_ADR, Zero)  // _ADR: Address
                }

                Device (HDAU)
                {
                    Name (_ADR, One)  // _ADR: Address
                    Method (_STA, 0, NotSerialized)  // _STA: Status
                    {
                        If (_OSI ("Darwin"))
                        {
                            Return (0x0F)
                        }
                        Else
                        {
                            Return (Zero)
                        }
                    }
                }

                Method (_STA, 0, NotSerialized)  // _STA: Status
                {
                    If (_OSI ("Darwin"))
                    {
                        Return (0x0F)
                    }
                    Else
                    {
                        Return (Zero)
                    }
                }
            }
        }
    }

    Scope (\_SB.PC03.BR3A.US00)
    {
        Method (_STA, 0, NotSerialized)  // _STA: Status
        {
            If (_OSI ("Darwin"))
            {
                Return (Zero)
            }
            Else
            {
                Return (0x0F)
            }
        }
    }
}
And it crashes
 
Top