X86 Open로그인

추천하기 twitter 로그인 facebook 로그인 google 로그인 카카오 로그인 네이버 로그인
8

Original Link
@아이뱅크 님께서 링크를 남겨주신 게시물을 따라.. 야밤에 토니맥을 마실 갔다가- 잠도 안오고 해서 한 번 간략하게나마 정리를 해볼까 합니다. 정보 제공해주신 @아이뱅크님, @D'Artagnan 님 감사합니다.

---------------------------------------------------------------------------------------------

애플 OEM ACPI 테이블을 보면 아래의 이름으로 GPU 함수 이름이 정리되어 있습니다.

iMac13/14/15/17: Discrete GPU = "GFX0" (@0). Integrated GPU = "IGPU" (@2 or 0x00020000)
MacPro3,1/5,1: Discrete GPU#1 = "PSX1" (@0).
MacPro6,1: Discrete GPU#1 = "GFX1" (@0). Discrete GPU#2 = "GFX2" (@0).

iMac13/14/15/17의 외장 GPU는 GFX0으로 할당되고 내장 그래픽은 IGPU로 할당 됩니다.
MacPro3,1/5,1은 외장 GPU가
PSX1으로 할당 됩니다.
MacPro6,1은 외장 GPU1번이
GFX1 외장 GPU2번이  GFX2로 할당되게 되는데요.


커스텀 맥을 사용할 때 빈번하게 발생하는 블랙 아웃은 할당되는 함수에서 GPU 포트가 할당되어 있지 않기 때문입니다.
그래서 설치후 블랙 아웃이 발생하게 된다고 Tonymac에 글을 남긴 shilohh의 표현이 그렇습니다.
(근데 토니맥에 글을 정말 복잡하게 써놓긴 했어요;; ㅎㅎ)


* 주의 *

가) 최소한 Error 수정을 끝낸 DSDT.aml을 첨부 했을 때 빛을 발휘 합니다!
나) DSDT의 GPU 네이밍이 GFX0 / GFX1등으로 되어 있지 않다면 SSDT에 인젝션을 권장 합니다

어쩔수 없이 맥에서 DSDT를 추출할 경우 아래의 과정을 거쳐 주세요
1) 최초 부팅 시 클로버 부트로더 GUI에서 F4를 누르고 5초 정도 기다려 주세요
2) EFI/Clover/ACPI/origin 폴더에 다량의 aml이 추출됩니다
3) 그 중 OEM으로 추출된 DSDT.aml을 바탕화면으로 복사합니다
4) 만약 SSDT.aml과 SSDT-1이 있다면 SSDT-2를 새로 만들어서 GPU 인젝션을 하시면 됩니다
5) 완성된 SSDT-1.aml은 EFI/Clover/ACPI/patched에 넣어 줍니다
6) DSDT.aml은  EFI/Clover/ACPI/patched에 넣어 줍니다
 

SSDT GPU Injection workflow

우선  IORegistryExplorer에서 여러분의 그래픽 카드의 디바이스 이름이 어떻게 되어 있는지 확인하면, DSDT에서 그래픽 장착 슬롯에 대한 디바이스 이름을 손쉽게 확인할 수 있습니다.

IOResistryExplorer path                   /    SSDT Scope Variations

PCI0@0 > PEG0@1 > PEGP@0         /     (\_SB.PCI0.PEG0.PEGP)
PCI0@0 > BR3A@3 > H000@0       /     (_SB.PCI0.BR3A.H000)
PCI0@0 > BR3A@3 > D077@0        /     (_SB.PCI0.BR3A.D077)
PCI0@0 > BR2A@2 > H000@0       /     (_SB.PCI0.BR2A.H000)
PCI0@0 > BR2A@2 > D075@0        /     (_SB.PCI0.BR3A.D075)

IOResistryExplorer에서 검색한 GPU 디바이스 이름을 DSDT.aml에서 찾았을 때
"Name (_ADR, Zero)" 또는 "Name (_ADR, 0x00)"으로 보일 때 해당 DSDT는 잘못되었다고 보셔야 하고 윈도우에서 추출하셔서 다시 시도하시기 바랍니다.

 

가장 많은 케이스가될 PEG0.PEGP에 대한 수정 방법 입니다.


DSDT.aml / PEG0.PEGP 

    External (PEGP, DeviceObj)
    External (\_SB_.PCI0.PEG0, DeviceObj)
.
.
    Scope (\_SB_.PCI0.PEG0)
    {
           Scope (PEGP)
          {
                  Name (_STA, Zero)
          }
          Device (GFX1)

a) 위 코드를 SSDT-1.aml의 Device (_SB.PCI0.NPE3.GFX1) 코드 위에 붙여 넣습니다. b)의 과정을 보시면 더 잘 이해 되실 겁니다.

/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20100331
 *
 * Disassembly of iASLTzPejO.aml, Sun Oct  9 01:14:02 2016
 *
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x0000015F (351)
 *     Revision         0x01
 *     Checksum         0x26
 *     OEM ID           "shiloh"
 *     OEM Table ID     "GFX1"
 *     OEM Revision     0x00001000 (4096)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20100331 (537920305)
 */
DefinitionBlock ("iASLTzPejO.aml", "SSDT", 1, "shiloh", "GFX1", 0x00001000)
{
    External (PEGP, DeviceObj)  /* DSDT.aml에 포함된 GPU 정보 코드 */
    External (\_SB_.PCI0.PEG0, DeviceObj)  /* Zero Address 코드 */
 
    Scope (\_SB.PCI0.PEG0) /* Zero Address 를 패치 합니다 */
    {
        Scope (PEGP)  /*  DSDT.aml의 PEGP 주소를 비워냅니다 */
        {
            Name (_STA, Zero)
        }

        Device (GFX1)  /* SMbios는 맥프로6,1이기에 GFX1으로 GPU정보를 로드 합니다 */
        {
            Name (_ADR, Zero)
            Name (_SUN, One)
            Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x03
                    })
                }

                Return (Package (0x0E)
                {
                    "@0,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 

                    "@1,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 

                    "@2,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 

                    "@3,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 

                    "@4,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 

                    "@5,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 

                    "hda-gfx", 
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                })
            }
        }

        Device (HDAU)   /* Scope 구문안에 있으므로 HDAU를 패치할 패스를 기재 안합니다 */ 
        {
            Name (_ADR, One)
            Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x03
                    })
                }

                Return (Package (0x02)
                {
                    "hda-gfx", 
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                })
            }
        }
    }
}

b) 위 코드는 DSDT.aml에 GPU와 관련된 정보가 없을 때 SSDT-1에서 GPU정보를 참고하라는 의미입니다.
* DSDT에 이미  GPU 정보가 있는 것도 있습니다만, 포트 정보가 인식되냐 안되냐의 문제보다 GPU Device 이름이 SMBIOS 버전에 맞는 GPU 정보가 나오는지가 관건입니다.
* 무작정 DSDT의 디바이스 이름 한 두개  변경 한다고 인젝션이 되지 않습니다. (에러로 인한 DSDT 수정외에는 추가 SSDT등을 통해서 편집하는게 유지 보수 면에서는 간편하다고 할 수 있습니다)
 

 

NPE2.SLT2 : HP Z420 / Z620의 C602, X79 칩셋
* 제가 사용중인 실사용 코드이며 HP Z420용입니다. 타 시스템의 칩셋은 이 것과 다를 수 있습니다.

우선 DSDT.aml 스샷을 보겠습니다.

스크린샷 2016-10-09 오전 2.42.07.png
DSDT상에서 NPE2/SLT2에 그래픽 카드를 설치한 것은 IORegistryExplorer에서 확인한 내용이지만 정작 C602 칩셋의 경우, GPU 관련 정보를 넣으면 여전히 블랙아웃이 생기므로 SSDT에 GPU정보를 인젝션하거나 EFI String으로 블랙 아웃을 회피할 수 있겠습니다. 바로 아래 링크를 누르시면 참고해 보실 수 있습니다

.

클로버 Device Properties를 이용한 EFI String

 


/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20100331
 *
 * Disassembly of iASL87J1f0.aml, Sat Oct  8 23:32:20 2016
 *
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x0000021F (543)
 *     Revision         0x01
 *     Checksum         0x63
 *     OEM ID           "APPLE "
 *     OEM Table ID     "Devicein"
 *     OEM Revision     0x00015601 (87553)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20100331 (537920305)
 */
DefinitionBlock ("iASL87J1f0.aml", "SSDT", 1, "APPLE ", "Devicein", 0x00015601)
/* 저는 SSDT drop table을 GFX1으로 안하고 Devicein으로 Config.plist에서 로드합니다 */
{
    External (\_SB_.PCI0, DeviceObj)    /* \_SB.PCI0의 전체를 참고 합니다 */
    External (\_SB_.PCI0.NPE2, DeviceObj)   /* \_SB_,PCI0.NPE2를 참고 합니다 */
    External (\_SB_.PCI0.NPE2.SLT2, DeviceObj) /* \_SB_,PCI0.NPE2.SLT2를 참고 합니다 */

    Method (XOSI, 1, NotSerialized)
    {
        Name (WINV, Package (0x06)
        {
            "Windows", 
            "Windows 2001", 
            "Windows 2001 SP2", 
            "Windows 2006", 
            "Windows 2006 SP1", 
            "Windows 2009"
        })
        Return (LNotEqual (Match (WINV, MEQ, Arg0, MTR, Zero, Zero), 
            Ones))
    }

    Scope (\_SB.PCI0)  /* HDEF 관련 패치입니다만 GPU 정보는 아닙니다 */
    {
        Device (HDEF)
        {
            Name (_ADR, 0x001B0000)
            Name (_PRW, Package (0x02)
            {
                0x08, 
                0x04
            })
            Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x03
                    })
                }

                Return (Package (0x02)
                {
                    "hda-gfx", 
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                })
            }
        }
    }

    Scope (\_SB.PCI0.NPE2.SLT2)  /* SLT2 코드의 제로 어드레스를 비워 냅니다 */
    {
        Name (_STA, Zero)
    }

    Scope (\_SB.PCI0.NPE2)  /* NPE2 코드에 GFX1으로 GPU정보를 로드합니다  */
    {
        Device (GFX1) /* 저도 MacPro6,1로 사용중이라 GPU이름을  GFX1으로 합니다 */
        {
            Name (_ADR, Zero)
            Name (_SUN, 0x05)
            Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x03
                    })
                }

                Return (Package (0x0C)
                {
                    "@0,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x04, 0x00, 0x00
                    }, 

                    "@1,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 

                    "@2,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x02, 0x00, 0x00
                    }, 

                    "@3,AAPL,boot-display", 
                    Buffer (Zero) {}, 
                    "@3,connector-type", 
                    Buffer (0x04)
                    {
                        0x04, 0x00, 0x00, 0x00
                    }, 

                    "hda-gfx", 
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                })
            }
        }

        Device (HDAU)  /* Scope 구문안에 있으므로 HDAU를 패치할 패스를 기재 안합니다  */
        {
            Name (_ADR, One)
            Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x03
                    })
                }

                Return (Package (0x02)
                {
                    "hda-gfx", 
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                })
            }
        }
    }
}


 

멀티 GPU

GPU가 장착된 슬롯 번호는 DSDT의 _SUN 함수의 주소를 확인하시면 됩니다

_SUN, One : 1번 슬롯
_SUN, 0x02 :  2번 슬롯
_SUN, 0x03 :  3번 슬롯
_SUN, 0x04 :  4번 슬롯
_SUN, 0x05 :  5번 슬롯... 등등..

 

일반 데스크탑 메인보드라면 CPU에서 가까운 곳이 One에 해당하고 서버 보드들은 CPU에서 먼 곳이 One입니다만, 꼭 _SUN 함수가 중요하진 않습니다. 그 이유중 하나가 EFI String을 할 경우 간혹 _SUN함수로 인해 슬롯 정보가 제대로 인식을 하지 않는 경우가 있기 때문입니다. 

만약 멀티플 GPU를 설정하려면 아래처럼 진행 하시면 됩니다.

가) 첫 번째 GPU는 SSDT-1.aml이며 onboard-1입니다. SSDT Table은  Device1
나) 두 번째 GPU는 SSDT-2.aml이며 onboard-2입니다. SSDT Table은  Device2

이렇게 해주시면 되는데 SSDT Table은 여러분이 인식하기 편한 것으로 하시고, Config.plist에서는 모두 Table Drop되어야 합니다.

 

 

동작 확인
만약 IOResistryExplorer에서 Display 키워드를 입력하고 3차경로가 여러분의 SMBIOS에 맞는 GFX1@0또는 GFX0@0 표시 된다면  이미 블랙 아웃없이 부팅이 되었다는 뜻이겠죠? AGPDFix가 필요 없어지는 시점인 것입니다. 아래 스샷이 정상적으로 동작하는 예제입니다

스크린샷 2016-10-08 오후 9.05.08.png

 

 HP Z420, 620, 820 시리즈 유저는 Recovery mode 진입시  npci=0x3000 부트 플래그를 주고, AsusAICPUPM만 활성화 시킨다음 진입해보세요. 매번 nv_disable=1을 지정했던 옵션을 더이상 하지 않아도 되는 장점이 있습니다. 

 

 

good poor

니포 soullees D'Artagnan SangbumKim cHickEn 아이뱅크 Siri Mactopia님
8명이 이글을 호평하셨습니다. 0명이 불평하셨습니다.

★ 글쓴이에게 고마우시면 커피한잔 후원(클릭) ★ 추천 정보가 입력되지 않았습니다.
twitter 공유 facebook 공유 googleplus 공유 카카오스토리 공유 네이버라인으로 공유

글쓴이의 서명이 비어 있습니다.

★ 글쓴이에게 고마우시면 커피한잔 후원(클릭) ★ 추천 정보가 입력되지 않았습니다.
  • Profile
    2016/10/08 *.157.41.234
    0 0

    너무 좋은 자료 올려주네요

    이것 저것 설명 들으니

    이제 전체적으로 흐름을 이해하겠습니다.

    한가지 아쉬운 것은

    토니맥 방식으로 해결해야 더 전진이 있을 것 같은데

    나중에 그래픽 카드를 구입하면 적용하기에도 편할 것 같구요...

     

     

  • Profile
    2016/10/09 *.117.156.22
    0 0
    아이뱅크 : 너무 좋은 자료 올려주네요 이것 저것 설명 들으니 ... 에 달린 대댓글입니다.

    @아이뱅크 님 덕분에 이번에 공부 많이 하게 됩니다! 감사 합니다!
    토니맥의 방식을 잘 살펴보면 Display@0으로 뜨면 그건 DSDT.aml에서 시스템 버스가 선언된 것으로 나오더라고요.
    그리고 Zero Address의 경우가 DSDT.aml에서 함수 선언은 됐어도 주소가 정해지지 않아서
    일단은 SSDT-1.aml에 시스템 버스를 선언한 다음 GFX1에 대한 정보를 기입해주는 방식으로 이해가 되더라고요! ^^

  • Profile
    2016/10/08 *.157.41.234
    0 0

    제 메인보드는

    이것은 곧
    0x00020000 / 0x00010000 /0x00010001 / 0x00010002 / ........

    이런식이네요

  • Profile
    2016/10/09 *.117.156.22
    0 0
    아이뱅크 : 제 메인보드는 이것은 곧 0x00020000 / 0x00010000 /... 에 달린 대댓글입니다.

    주소가 뜨는걸 보면 Zero Address 형식이 아니군요!! ^^

    그러면 DSDT.aml에서 그래픽카드의 시스템 버스가 있으니 SSDT-1.aml에서 곧장 디바이스 이름만 바꾸시면 될 것 같습니다.
    새벽에 주셨던 피드백 데이터에선 아이뱅크님은 저와 다르게 NPE2가 아니라 PEG0으로 떴더라도

    PEG0을 곧장 SSDT-1.aml에 적용하시면 동작하는데 이상이 없을거에요! ^^ 

     
    ps)

     GPU 함수의 주소가 있냐 없냐로 판단하시면 더쉬워질 듯 합니다!

  • Profile
    2016/10/09 *.157.41.234
    0 0

     Device (_SB.PCI0.PEG0.GFX1)

     

      Device (_SB.PCI0.PEG0.HDAU)

     

    이런식으로 하면 된다는 의미이시죠

     

    그러나 부팅에 성공하지 못했습니다.

  • Profile
    2016/10/09 *.117.156.22
    0 0
    아이뱅크 :  Device (_SB.PCI0.PEG0.GFX1)     Device (_SB.PC... 에 달린 대댓글입니다.

    IOResistryExplorer에서 Display로 검색했을 때 나온 화면 스샷과 SMBIOS 그리고,
    SSDT-1.aml하고 DSDT.aml / Congif.plst파일을 첨부 부탁 드려도 될까요?

     

    왜 잘 안되고 있는지 제 시스템 말고 다른 시스템도 한 번 봐야 하니까요! ^^"
     

  • zisqo : IOResistryExplorer에서 Display로 검색했을 때 나온 ... 에 달린 대댓글입니다.

    네 첨부합니다.

    zzz.zip

    test 2.zip

    스크린샷 2016-10-09 오전 1.37.42.png

     

  • 아이뱅크 : 네 첨부합니다. zzz.zip test 2.zip   에 달린 대댓글입니다.

    스크린샷 2016-10-09 오전 1.26.14.png
    아이뱅크님의  DSDT에서는 GPU가 DSDT.aml에 PEGP로 포함되어 있는데요
    그 값은 Zero Address입니다.  PEG0과는 다른 주소의 성격을 가지고 있죠? ^^

    SSDT-1.aml에서는 그 값을 초기화 시켜 버리고.. SSDT-1.aml의 Device (GFX)의 값으로 치환하라는 의미입니다.

    아이뱅크님의 케이스처럼 DSDT.aml에  GPU정보가 추출되어있는 경우는 토니맥의 예제에는 없었는데요. 본문에 추가토록 하겠습니다!

    - 따라서 아이뱅크님께서 쓰고 계신 형태를 쓰시면 되겠습니다!
     

    /*
     * Intel ACPI Component Architecture
     * AML Disassembler version 20100331
     *
     * Disassembly of iASLXdtRCA.aml, Sun Oct  9 01:27:16 2016
     *
     *
     * Original Table Header:
     *     Signature        "SSDT"
     *     Length           0x00000128 (296)
     *     Revision         0x01
     *     Checksum         0x47
     *     OEM ID           "shiloh"
     *     OEM Table ID     "GFX1"
     *     OEM Revision     0x00001000 (4096)
     *     Compiler ID      "INTL"
     *     Compiler Version 0x20140926 (538183974)
     */
    DefinitionBlock ("iASLXdtRCA.aml", "SSDT", 1, "shiloh", "GFX1", 0x00001000)
    {
        External (PEGP, DeviceObj)  /* DSDT.aml에서 PEGP를 참고 하라고 합니다 */
        External (\_SB_.PCI0.PEG0, DeviceObj) /* _SB_.PCI0.PEG0의 시스템 버스를 참고 하라고 합니다 */
    
        Scope (\_SB.PCI0.PEG0) /* 시스템 버스의 구문을 참고하도록 만들어 줍니다 */
        {
            Scope (PEGP)  /* DSDT.aml의 PEGP를 0의 주소로 만들어 기 DSDT.aml의 PEGP를 생략합니다 */
            {
                Name (_STA, Zero)
            }
        
        Device (GFX1) /* _SB_PCI0.PEG0의  GPU 포트 번호를 지정해 줍니다 */
        {
            Name (_ADR, Zero)
            Name (_SUN, One)
            Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x03
                    })
                }
    
                Return (Package (0x0A)
                {
                    "@0,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 
    
                    "@1,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 
    
                    "@2,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 
    
                    "@3,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x08, 0x00, 0x00
                    }, 
                     "@5,connector-type", 
                     Buffer (0x04)
                    {
                         0x00, 0x08, 0x00, 0x00
                     }, 
    
                    "hda-gfx", 
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                })
            }
        }
    
        Device (_SB.PCI0.PEG0.HDAU)
        {
            Name (_ADR, One)
            Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x03
                    })
                }
    
                Return (Package (0x02)
                {
                    "hda-gfx", 
                    Buffer (0x0A)
                    {
                        "onboard-1"
                    }
                })
            }
        }
        }
    }
    
    

     

     

  • Profile
    2016/10/09 *.117.156.22
    0 0

    @아이뱅크님 의 케이스에 대해서 본문에 적용 하였습니다. 바로 위에 달은 제 댓글에 설명이 있는데요.

    아이뱅크님의 DSDT.aml은  GPU 정보 관련해서 잘 추출이 되어있는 편인데요, 해당 Name (_ADR, Zero)입니다.

    PEG0이 검색되었고, 그 하단에 PEGP가 있습니다만 PEG0은 주소가 있고, PEGP는 주소가 없습니다.
    따라서 DSDT.aml에 GPU정보가 있어도 이건 블라인드 되는거라고 보시면 되겠고요.

    SSDT-1.aml에서  GFX1으로 쓰는 이유는 현재 사용중이신 맥프로6,1의 GPU는 GFX1 / GFX2 이런 식이에요 : )


    엄연히 따져보면 Zero Address 부분으로 들어가게되서 Non-Display@0 형태라고 보면 되겠죠?
    그런데 이런형태의 메인보드 예제는 토니맥에도 없군요 ㅠㅠ

    그나마 아이뱅크님이 자료를 주셔서 어떻게 적용하는지 원리는 그렇게 어려운게 아니다보니,
    왜 잘 돌아가고 있었고 왜 토니맥에서 제시한게 적용 안되셨던건지 이해가 갈만합니다.

     

    ps) 만약 PEGP가 IOResistry에서 검색된 키워드라면 Non-Display@0에 해당합니다. 
    다만 SSDT-1.aml의 코딩 스타일이 다른점에 대해선  Non-Display@0에서 반영 시켰습니다 
     

  • Profile
    2016/10/09 *.157.41.234
    0 0

    아직은 정확한 이유는 모르지만

    길이 익숙해지기 시작합니다.

    정말 감사합니다.

     

    프로그램을 전문적으로 배워본적이 없어서

    아직도 그 많은 자료 중 이렇게 저에게 맞는 자료를 찾았는지 신기할 정도 입니다.

    그 자료를 저는 그곳에 바꿀 생각을 했는지 우연치고는 정말 운이 좋았는가 봅니다.

     

    이제 설명을 해주니 대충은 느낌으로 알 것은 같습니다.

    엔비디아 다른 제품도 제 시스템에서는 바꿀 수는 있겠습니다.

     

    PEG0이 검색되었고, 그 하단에 PEGP가 있습니다만 PEG0은 주소가 있고, PEGP는 주소가 없습니다.
    따라서 DSDT.aml에 GPU정보가 있어도 이건 블라인드 되는거라고 보시면 되겠고요.

    이 부분을 좀더 편집하려면 ssdt에서 주소를 주어야 됩니까?

    이 부분이 약간 궁금하기는 합니다.

     

    ps) 만약 PEGP가 IOResistry에서 검색된 키워드라면 Non-Display@0에 해당합니다. 
    다만 SSDT-1.aml의 코딩 스타일이 다른점에 대해선  Non-Display@0에서 반영 시켰습니다
     
     

    이 부분은 여러번 다시 읽어봅니다.(이해가 안되어서)

    새로 글을 배운다는 느낌입니다.

     

     

     

  • Profile
    2016/10/09 *.117.156.22
    0 0
    아이뱅크 : 아직은 정확한 이유는 모르지만 길이 익숙해지기 시... 에 달린 대댓글입니다.

    방금 다시 정리를 싹해서 본문에 적용했습니다. ^^

    (이런 유형으로는 뉴해킨님께서 오래전에 사용하시던 방법으로 Z420 설치 방법에 포함된 SSDT-1.aml이라서 이번 기회에 저도 조금 더 많이 배우게 되었습니다)

     

    아무튼 첫 번째 질문에 대해 답변 드리겠습니다.

    - DSDT.aml을 열고 PEG0을 검색하면 두 번 째쯤에 나올거에요. 그걸 좌측의 트리 모양을 패스로 표기 해보면 아래와 같습니다.
    : DSDT/_SB.PCI0.PEG0 그렇죠? ^^

    - 그러면  PEG0만 있으면 좋겠지만 PEG0의 구문에 PEGP가 있습니다.
    - 이걸 패스로 표현하면 
    DSDT/_SB.PCI0.PEG0.PEGP 입니다. PEGP는 독립적이질 못하고 PEG0에 종속되어 있는데, 거기에다가 주소가 없습니다
    : 바로 Name (_ADR, Zero)라는 점이죠.


    이런 형태를 Non-Display@0이라고 표현하면 조금 더 쉬울 것 같습니다.

    토니맥에서는  MacPro6,1이라면 3차 경로에서  GFX1@0이 나와야 하는데 4차 경로까지 있는 경우, PEGP@0이라고 표시되니 이것은 Native GPU라고 인식할 수 없기 때문일 것입니다.

    즉,

    _SB.PCI0.PEG0.GFX1@0 이 나와야 하는데

    _SB.PCI0.PEG0.PEGP@0 이런 유형이 나오면 안되기에, SSDT-1.aml 에서 DSDT.aml에 넣을 값을 참조 하게 되는거죠.
    (DSDT.aml은 디바이스 선언을 하고, SSDT-1.aml에서는 디바이스를 참고 하죠. SSDT.aml은 CPU 정보를 참고 하고요 ^^)

    결과적으로 SSDT-1.aml의 패치를 통해

    _SB.PCI0.PEG0.PEGP@0를
    _SB.PCI0.PEG0.GFX1@0 로 바꿔주는 겁니다.

     

    마지막 글타래는 IOResistryExplorer의 스샷이 안와서 제가 어떤 키워드로 DSDT.aml에서 검색하신건지 여쭤 보려고 질문을 남겼는데요..

    PEGP가 주소가 있는 상태의 것이었다면 혼동이 올수 있는 자료였기 때문이었어요. 근데 막상 DSDT.aml을 열어보니 PEGP는 PEG0에 종속된 하위 디바이스 더라구요.. 마지막 문단은 제가 뺐어야 했는데 정신없이 본문도 정리하다보니 미처 수정 못해서 더 어려운 난제를 드린것 같습니다 ㅠㅠ

  • 정말 정말 감사합니다.

    스크린샷 2016-10-09 오전 3.16.17.png

     

    스크린샷 2016-10-09 오전 3.17.55.png

     

  • Profile
    2016/10/09 *.117.156.22
    0 0

    @아이뱅크 님의 IORE 스샷에서는 현재 PEG0@1/GFX1 으로 잘 잡혀 있네요!~
    이 말은 곧~ 패치가 잘 됐다는 말임과 동시에 _SB.PCI0.PEG0.GFX1@0으로 디바이스 주소가 설정됐다는 것이죠?  :)

    만약 패치가 없었다면, _SB.PCI0.PEG0.PEGP@0 이렇게 나올것 같습니다.

    그리고 본문에 적혀 있는건데요. SMBIOS에 따라서 SSDT-1.aml의 GFX1은 아래의 값으로 치환 됩니다.


    iMac13/14/15/17: Discrete GPU = "GFX0" (@0). Integrated GPU = "IGPU" (@2 or 0x00020000)
    MacPro3,1/5,1: Discrete GPU#1 = "PSX1" (@0).
    MacPro6,1: Discrete GPU#1 = "GFX1" (@0). Discrete GPU#2 = "GFX2" (@0).

     

    많은 공부거리를 주셔서 감사합니다!!

  • Profile
    2016/10/09 *.157.41.234
    0 0

    한가지 더 질문을 하자면

    DefinitionBlock ("iASLKdLAMo.aml", "SSDT", 1, "shiloh", "GFX1", 0x00001000)
    {

        External (_SB_.PCI0.PEG0, DeviceObj)
        External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
        External (PEGP, DeviceObj)

        Scope (\_SB.PCI0.PEG0)
        {
            Scope (PEGP)
            {
                Name (_STA, Zero)  // _STA: Status
            }

     

     External (PEGP, DeviceObj) 이 부분은 굳이 할 필요가 없다는 것이죠...

    이 의미는 무엇입니까?

  • Profile
    2016/10/09 *.117.156.22
    0 0
    아이뱅크 : 한가지 더 질문을 하자면 DefinitionBlock ("iASLKdL... 에 달린 대댓글입니다.

    DefinitionBlock ("iASLKdLAMo.aml", "SSDT", 1, "shiloh", "GFX1", 0x00001000)
    {

        External (_SB_.PCI0.PEG0, DeviceObj)
        External (_SB_.PCI0.PEG0.PEGP, DeviceObj)
        External (PEGP, DeviceObj)

        Scope (\_SB.PCI0.PEG0)     
        {
            Scope (PEGP)
            {
                Name (_STA, Zero)  // _STA: Status
            }

    ------------------------------------------------------------------------------

    DSDT.aml에서 PEGP를 불러오면 그 경로가 \_SB.PCI0.PEG0입니다. 그 주소를 절대경로 형식으로 불러오게 한거죠 : )

    그리고 불러온 주소를 비워내고 PEGP자리에  GFX1을 넣으라는 의미입니다.
     

        Scope (\_SB.PCI0.PEG0)  구문은 보다 정확하게 상대 경로를 넣은 것입니다.

     

    그 다음

            Scope (PEGP)
            {
                Name (_STA, Zero)
            }

     

    이 뜻은 Scope (\_SB.PCI0.PEG0)에 종속되는  Scope (PEGP)를 0으로 현재 상태를 비워 놓는다는 의미이며

            Device (GFX1)
            {
                Name (_ADR, Zero)
                Name (_SUN, One)
                Method (_DSM, 4, NotSerialized)
                {

    이제부터   Scope (\_SB.PCI0.PEG0)의 비워진 Scope PEGP에 Device GFX1을 채워 넣으라는 뜻입니다.        

     

    질문해주신  External (PEGP, DeviceObj)은     External (\_SB.PCI0.PEGP, DeviceObj)가 상대경로입니다 ^^
    이 구문이 없으면 Scope(PEGP)의 값은 DSDT.aml에 참고 해주지 않는 것으로 알고 있습니다.
    따라서 GFX1까지 모두 안들어 갈거고요. : )


    그래서 처음 본문에 있던  패치가 아이뱅크님께 적용이 안됐던 것 처럼 말입니다~!

  • Profile
    2016/10/09 *.157.41.234
    0 0

    감사합니다. 자꾸 알아가니 조금씩 보이기 시작하네요

                    Return (Package (0x0E)
                    {
                        "@0,connector-type", 
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                           /* .... */
                        }, 

                        "@1,connector-type", 
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                           /* .... */
                        }, 

                        "@2,connector-type", 
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                           /* .... */
                        }, 

                        "@3,connector-type", 
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                           /* .... */
                        }, 

                        "@4,connector-type", 
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                           /* .... */
                        }, 

                        "@5,connector-type", 
                        Buffer (0x04)
                        {
                             0x00, 0x08, 0x00, 0x00                           /* .... */
                        }, 

                        "hda-gfx", 
                        Buffer (0x0A)
                        {
                            "onboard-1"
                        }
                    })
                }
            }

     

    제 캐플러660입니다.

    이것은 제대로 된 것입니까?

    @0  ~ @5

     

      "@4,connector-type", 
                        Buffer (0x04)
                        {
                           

     0x00, 0x08, 0x00, 0x00                           /* .... */
                        }, 

    예시글에는 이부분이 없고

    케플러 이부분과 다릅니까?

     

    Return (Package (0x0C)
                    {
                        "@0,connector-type", 
                        Buffer (0x04)
                        {
                            0x00, 0x04, 0x00, 0x00
                        }, 
    
                        "@1,connector-type", 
                        Buffer (0x04)
                        {
                            0x00, 0x08, 0x00, 0x00
                        }, 
    
                        "@2,connector-type", 
                        Buffer (0x04)
                        {
                            0x00, 0x02, 0x00, 0x00
                        }, 
    
                        "@3,AAPL,boot-display", 
                        Buffer (Zero) {}, 
                        "@3,connector-type", 
                        Buffer (0x04)
                        {
                            0x04, 0x00, 0x00, 0x00
                        }, 
    
                        "hda-gfx", 
                        Buffer (0x0A)
                        {
                            "onboard-1"
                        }
                    })
                }
            }
    

     

     

    760이라 들었는데

    @0 ~@3더 적은지..

  • Profile
    2016/10/09 *.117.156.22
    0 0
    아이뱅크 : 감사합니다. 자꾸 알아가니 조금씩 보이기 시작하네요 ... 에 달린 대댓글입니다.

    포트만 인식한다면야 큰 차이는 없죠.
    뉴해킨님께서 포트 번호 바꾸는 주소를 알려 주셨는데 막상 바꿔봐도;; ㅠㅠ 제 손이 흙손인지라, ^^ 막상 부팅 해보면 우선 순위가 DVI 보다는  HDMI가 Primary로 잡힙니다. (분명 DVI-DL을 우선으로 살려놨는데도 말이죠 ㅠㅠ)

    큰 핵심은 _SB.PCI0.PEG0.GFX1@0이 로드 되느냐.. 아니면 _SB.PCI.PEG0.PEGP@0이 로드 되느냐에 따라서
    nv_disable=1 없이 들어가지느냐.... 그로인해서 AppleGraphicsDevicePolicy.kext/Info.plist의  ConfigMap의 함수로 Config 1또는 2가 할당되도 제대로 부팅할 수 있게 네이티브 GPU로 인식하느냐 입니다.

     

    _SB.PCI0.PEG0.GFX1@0이 로드되면 네이티브로 인식
    그러나

    _SB.PCI.PEG0.PEGP@0으로 로드되면 메모리 어드레스가 텅텅 비어서 블랙아웃~ 그런것 같습니다 ^^

     

     

    ps) @0~ @03은 4개의 포트입니다 제 760도 포트가 4개이기도 하고요 : )

     

  • Profile
    2016/10/09 *.157.41.234
    0 0
    zisqo : 포트만 인식한다면야 큰 차이는 없죠. 뉴해킨님께서 포... 에 달린 대댓글입니다.

    감사합니다.

    밤 늦게 까지 고생하셨습니다.

    이제야 답답한 마음을 약간 열어놓은 기분입니다.

  • Profile
    2016/10/09 *.117.156.22
    1 0
    아이뱅크 : 감사합니다. 밤 늦게 까지 고생하셨습니다. 이제야... 에 달린 대댓글입니다.

    저야말로 감사합니다. 아이뱅크님 덕분에 공부를 많이 하게 되었어요~ ^^

    이제 남은건 이걸 시도하다가 안되시는 분들의 데이터를 보고서 케이스 바이 케이스를 쌓아봐야 하는다는거죠! : )

    주말 잘 보내시구요 종종 뵙게습니다 많이 가르쳐 주세요 ㅠㅠ

  • Profile
    2016/10/09 *.118.151.165
    0 0
    zisqo : 포트만 인식한다면야 큰 차이는 없죠. 뉴해킨님께서 포... 에 달린 대댓글입니다.

    SB.PCI.PEG0.PEGP@0으로 로드되면 메모리 어드레스가 텅텅 비어서 블랙아웃~ 그런것 같습니다 ^^

     

    >> 이게 AGDP 켁스트가 로드되어 GFX1이 아닌 그래픽 디바이스는 블랙 아웃 되는 게 아닌가요?

    사실 ssdt-1에다 그래픽 정보를 넣도록 작업하시는 것으로 보았는데, dsdt파일을 사용중이라면 PEGP를 GFX1으로 바꾸고 DSM 메서드에 그래픽 카드 정보를 제대로 넣어주면 끝나는 것으로 압니다. dsdt를 쓰지 않는 경우에 ssdt로 그래픽카드 정보를 넣어주는 방식으로 접근하신 것같아 보이거든요. 손쉽게 클로버 dsdt 패치에 change PEGP to GFX1만 해 줘도 AGDP fix는 해결되지 않을까요?

  • @아이뱅크 님 잠들기전에 DSDT.aml을 봤는데요 에러와 리마크가 있어서 점검 해봤습니다. (DSDT  에디터에선 Error가 있다고 처음에 나오고 MaciASL에선 Error가 없다고 나오는 신기함이란 참;;; 그래서 DSDT 에디터를 믿고 교정 해봤습니다. ㅠㅠ)

     

    스크린샷 2016-10-09 오전 5.09.49.png

    0 error, 0 warning, 0 Remark, 282 optimizations 입니다...  하하하핫.
    ssdtPRGen은 20.4 버전을 썼고요 스피드스텝을 DSDT에 넣었지만 혹시라도 오동작을 하면

    1) 잠자기를 하고나서 깨어나면 모니터가 안깨어나는 경우가 있습니다. 그럴때는
    2) ssdtPRGen으로 나온 정보를 KsJ님의 스피드스텝을 DSDT에 넣는 강의 참고 하시면 됩니다
    3) DSDT에서 _PR 구문을 빼도 SpeedStep을 잡는데는 별 무리 없습니다

    제 DSDT에는 _PR 구문이 아예 없는데 촘촘하게 P-states 을 SSDT.aml을 통해서 잡았거든요~ : )
    즐거운 주말 되세요~!

    DSDT.aml.zip

     

  • 밤새 뜻밖의 행운입니다. 

    먼저 확인해보기 위해 기존 것을 해본 것을 올리고 다음에 다운받고 

    바이오스에서 시피드스텝을 켜놓고

    아무것도 하지 클로버 옵션이나 dsdt에는 아무것도 넣지 않았습니다.

    잠깐 보았는데 제기종은 6700k이고 기본이 4000 맥스가 4200인데....

    실제 테스트 확인해보아야겠습니다.

    스크린샷 2016-10-09 오전 10.23.01.png

     

    스크린샷 2016-10-09 오전 10.24.31.png

     

    위의 것은 기존 것입니다.

     

    바뀐 것은 나중에.....

  • Profile
    2016/10/09 *.33.165.39
    0 0
    @아이뱅크 님 만약 스피드스텝에서 배수가 촘촘히 안나오면 lfm / turobo / tdp를 알려 주시면 좀 더 디테일하게 잡을수 있죠 ㅎㅎ  모델명 알려주세요 ^^
  • zisqo : @아이뱅크 님 만약 스피드스텝에서 배수가 촘촘히 안나... 에 달린 대댓글입니다.

    스크린샷 2016-10-09 오전 11.21.41.png

     

    i7 6700k 입니다. 

    lfm 800

    turbo 4200

    tdp 95w  ...이것 생각이 잘안나서 인터넷 검색 91w가 맞는가봅니다.

    스크린샷 2016-10-09 오전 11.08.03.png

     

     

  • 추가 테스트 결과입니다.

    스크린샷 2016-10-09 오전 10.58.31.png

     

    스크린샷 2016-10-09 오전 11.11.35.png

     

    스크린샷 2016-10-09 오전 10.56.19.png

     

  • 정보가 틀려서

    제대로는 찍히는데 소음이 더 있는 것 같고

    아무것도 넣지 않는 것과 느낌상 차이가 없습니다.

    스크린샷 2016-10-09 오후 12.46.39.png

     

  • Profile
    2016/10/09 *.117.156.22
    0 0

    방금 외근 마치고 돌아왔습니다. ^^

    스피드스텝을 넣어드렸던 이유가 다른게 아니고요 DSDT에서 PR구분의 Return함수가 스피드스텝을 넣는 곳이라서 그렇게 했습니다. ^^
    Remark가 7개가 나왔는데 _PR에서 리턴할 함수가 없었다는거죠. 그래서 넣었던건데요. 스피드스텝이 퍼포먼스보다는 절전과 관련된 것이고
    더 나아가 잠자기(정확히는 깨어나기죠 ㅎㅎ)와 관련이 되어 있기도 합니다.
    물론 잠자기에서 깨어나기가 되긴 되더래도 전원 버튼으로 껐다 켜야만 회복하는 단계라면 
    대부분이 Hibernatemode=3을 넣었을 때 그렇고요 이 방식보다는 얕은 잠자기 모드인  Hibernatemode=0이 나은것 같더라고요.
    아무튼 DSDT.aml에서 _PR 구분을 다 없애 버려도 SSDT.aml에서 스피드스텝이 선언 되어있으면 괜찮습니다.
     

     

    위 스샷에서는 lfm이 800인데 8이 안나오는거로 봐서는 P-state의 800 부분이 연결이 안된것 같습니다. 

     

    ssdtPRGen으로 잡혀있는 값을 KsJ님의 방식  으로 DSDT에 넣어 주시면 되는데요.

    DSDT의 _PR.Processor 하단의 Method 구문부터 SSDT의 Method 구문과 교체하시면 되는데요,
    _DSM 구문 이전까지 교체 하시면 스피드스텝 구문이 추가 완료 됩니다.

     

  • Profile
    2016/10/09 *.157.41.234
    0 0
    zisqo : 방금 외근 마치고 돌아왔습니다. ^^ 스피드스텝을 넣어... 에 달린 대댓글입니다.

    ssdt에는 스피드 스텝을 넣지않고 바이오스 스피드스텝을 키고 사용하니 정상적으로 적용되고 잠자기 문제는 없습니다.

    아무튼 관심가져주셔서 감사합니다.

    세컨드 pc는 ksj님 방식 따라 하면서 방금 말씀하신 방식데로 해놓았구요...

  • Profile
    2016/10/09 *.180.7.210
    0 0
    아이뱅크 : ssdt에는 스피드 스텝을 넣지않고 바이오스 스피드스텝... 에 달린 대댓글입니다.

    주말이라 열심히 삽푸고 계시는 군요 ㅎㅎ

    본문 부터 댓글까지 꼼꼼히 읽어보는데 어디서 끼어들어야 할지 난감해 계속 눈팅중입니다.

  • Profile
    2016/10/09 *.157.41.234
    0 0
    Siri : 주말이라 열심히 삽푸고 계시는 군요 ㅎㅎ 본문 부터... 에 달린 대댓글입니다.

    발 이미 들어왔으니 몸도 들어오시죠...

  • Profile
    2016/10/09 *.117.156.22
    0 0

    @아이뱅크 님~ 잘되신다니까 다행입니다! ^^
    @siri 님의 그래픽 카드는 Nvidia이신가요? 

    그러면 IOResitryExplorer에서 Display로 검색한 스샷과

    DSDT.aml  /  그래픽 카드 종류 이렇게 주시면 한 번 테스트 해볼 수 있습니다. (첨부 파일로 한 번 올려주세요~ ㅎㅎ)

  • Profile
    2016/10/09 *.180.7.210
    0 0
    zisqo : @아이뱅크 님~ 잘되신다니까 다행입니다! ^^ @siri 님... 에 달린 대댓글입니다.

    불행이도 제 그래픽 카드는 amd 입니다. ㅎㅎ

    일이 좀 생겨서 저녁에 글 남겨 놓겠습니다.

     

  • Profile
    2016/10/09 *.180.7.210
    0 0
    zisqo : @아이뱅크 님~ 잘되신다니까 다행입니다! ^^ @siri 님... 에 달린 대댓글입니다.

    이제 좀 여유가 생기네요

    @zisqo 님은 시간이 되시는지요?

  • 우선 제가 사용하는 시스템은

    6700k

    z170x-ud5 th (아이뱅크님과 같은 보드 입니다.)

    sapphire rx480 2장

    입니다.

     

    기본적으로 올려주신 설명이 너무 잘되어 있어서 나름대로 ssdt 를 만들어서 보았습니다.IORegistry.png

    IORegistry 에서 gfx1, gfx2 로 잡는데 까지는 스스로 해보았습니다.

    사용한 ssdt-1, ssdt-2 는 첨부하였습니다.

     

    여기서 문제점이 이렇게 IORegistry에서 잡힌 상태에서 시스템에 관하여를 열어보면 

    스크린샷 2016-10-09 오후 7.56.40.png

    두번째 그래픽카드의 슬롯이 Ethernet 으로 나옵니다.

    그리고 또 한가지 안되는 부분이 ssdt-1 에 그래픽카드의 정보를 넣으면 hdmi 를 이용한 출력이 잡혀야 사운드 환경설정 설정에서 장치가 출력되지 않습니다.

    제가 사용하는 그래픽 카드가 amd rx480 이라 정보가 많이 부족할거라 생각됩니다.

    제가  ssdt를 만들때 참고한 코드는 아래와 같습니다.

    Device (GFX0)

    {

    Name (_ADR, Zero)

    Name (_SUN, One)

    Method (_DSM, 4, NotSerialized)

    {

    Store (Package (0x12)

    {

    "AAPL,slot-name",

    "Slot-1",

    "name",

    "AMD Graphics Controller",

    "model",

    Buffer (0x12)

    {

    "AMD Radeon RX480"

    },

     

    "device-id",

    Buffer (0x04)

    {

    0xFF, 0x67, 0x00, 0x00

    },

     

    "@0,name",

    Buffer (0x0D)

    {

    "ATY,Dayman"

    },

     

    "@1,name",

    Buffer (0x0D)

    {

    "ATY,Dayman"

    },

     

    "@2,name",

    Buffer (0x0D)

    {

    "ATY,Dayman"

    },

     

    "@3,name",

    Buffer (0x0D)

    {

    "ATY,Dayman"

    },

     

    "hda-gfx",

    Buffer (0x0A)

    {

    "onboard-1"

    }

    }, Local0)

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

    Return (Local0)

    }

    }

     

    출처는 : http://www.insanelymac.com/forum/topic/312582-amd-polaris-ids-on-1012-sierra/page-1?hl=%20polaris 입니다.

    시간나실때 한번 훑어봐 주시면 고맙겠습니다.

     

     

  • Profile
    2016/10/10 *.118.151.165
    0 0
    Siri : 우선 제가 사용하는 시스템은 6700k z170x-ud5 th ... 에 달린 대댓글입니다.

    클로버 config에서 그래픽 인젝트 부분은 어떻게 하셨나요? ssdt-1,2에 적용한 framebuffer가 반영되지 않고 있는 게 클로버 인젝트 영향으로 보입니다. 

     

    요즘 그래픽 인식 및 설정은 클로버 부트로더의 인젝트 항목에 의존하는 경향이라 dsdt의 그래픽 정보 _DSM 패치와 조합하는 경우 우선 순위에서 클로버가 먼저이고, dsdt 패치 정보가 후순위입니다.  클로버 인젝트가 공통 일반적인 사항을 반영해 주지만, 특이사항이 있는 경우는 클로버보단 dsdt나 ssdt를 통해 커스터마이징된 패치(프레임버퍼, 커넥터 타입, 포트 정보 등)를 해 주는 게 낫습니다.

     

    기회되면 클로버 ati 인젝트 해제하고, ssdt-1,2를 적용했을 때랑 인젝트했을 때 IOReg를 통해 그래픽 상세 인식정보를 비교해 보시길. 

  • Profile
    2016/10/09 *.117.156.22
    0 0

    @siri  님 늦은 답변 드려서 죄송합니다~ 

     

    현재 사용중이신 DSDT.aml / SSDT-1.aml / SSDT-2.aml 을 보내 주시겠어요? ^^ 아이메세지 보냈습니다!! : )

  • Profile
    2016/10/09 *.180.7.210
    0 0
    zisqo : @siri  님 늦은 답변 드려서 죄송합니다~    현재 ... 에 달린 대댓글입니다.

    아이메시지가 편하지 않을까요? 

    comed78@gmail.com 입니다.

  • 오..이런게 있었군요.. 업데이트시  nv_disable=1 주고 업뎃하고 없애고 했던 작업이 필요없어지나보네요..

    dsdt에 패치를 이렇게 했었는데..

    1.PNG

    dsdt를 제보드에 맞게 작업을 해두었었는데 맥프로 6,1 블랙아웃 현상으로 패치해도 안되고 해서 14,2로 사용중이거든요...

    이게 문제가 되는거 같은데 말씀하신 것처럼 패치를 할려면 제 dsdt에 있는 위 그림에 있는 패치를 삭제 하고 ssdt에다가 집어 넣으면 되는건지요?

    nifo.zip  제 dsdt 첨부해봅니다

  • 니포 : 오..이런게 있었군요.. 업데이트시  nv_disable=1 주고... 에 달린 대댓글입니다.

    @니포 님~ 현재 14,2로 사용중이시라면  GFX1이 아니라 GFX0으로 작업 하시면 됩니다. ^^

     

     만약 SLI/CF를 쓰고있는 환경이 아니라면 작업하신대로 한 번 써보세요~ SLI/CF를 해놓은거라면 onboart-1 / 2이렇게 별도로 2개의 SSDT-1/2.aml이 필요합니다.

    또한 Config.plist에서 ssdt drop table을 GFX1으로 만들어주면 됩니다 (SLI/CF라면 GFX1/2이렇게 테이블을 만들기도 해야겠죠? : )

     

    아카이브.zip

  • zisqo : @니포 님~ 현재 14,2로 사용중이시라면  GFX1이 아니라... 에 달린 대댓글입니다.

    답변 감사드립니다. 몇가지 궁금한게 있습니다..

    저는 맥프로6,1 블랙아웃 현상으로 패치해도 같은 현상이라 14,2로 설정한 상태입니다. 블랙아웃 문제가 없다면 6,1로 넘어갈생각이기 때문에 GFX1로 설정을 해봐야겠네요..

    그러면 제가 만들어둔 dsdt에 엔비디아 패치는 지워서 원상태로 만들고 IORegistryExplroer로 제 PC가 Non인지 확인한후 패치하면 된다는 말씀이신지요?

    그리고 Config에서 ssdt drop table GFX1이라고 하셨는데.. 아래와 같은게 맞는지 궁금합니다.. 도움 감사드립니다!

    1.PNG

     

  • Profile
    2016/10/18 *.117.156.22
    0 0
    @니포 님 non 형식으로 수정 하시면 되고요 ^^ dsdt의 내용은 안지우셔도 됩니다 ^^ 현재 블랙아웃없이 gtx760으로 잘 쓰고 있습니다 :)
  • Profile
    2016/10/18 *.247.149.70
    0 0

    제 시스템 사양은 Z97deluxe 보드에 e3-1231v3 내장 GPU 없는 모델이고 GTX960 사용중입니다.

    제 보드에 사용하는 제품들을 입력하고 확인하기 위해 열심히 dsdt로 삽질을 했던 기억이 있습니다.

    제가 이해하기로는 _SB/PCI0/PEG0 이 PCI슬롯 첫번째 PEG1이 두번째 PEG2가 세번째라고 IORegistryExplroer에서 확인했고 적용까지 해두었습니다.

    그런데 뭔가 네이티브하게 안된다는 느낌은 받긴 받았었는데 zisqo님 패치하신걸 보니 제대로 하시는거 같아서 적용해 볼려고 합니다.

    그런데 ssdt-1에 패치하는것과 dsdt에 패치해둔것과 무슨 차이가 있는지 궁금합니다..

  • Profile
    2016/10/18 *.117.156.22
    0 0
    니포 : 제 시스템 사양은 Z97deluxe 보드에 e3-1231v3 내장 GP... 에 달린 대댓글입니다.

    DSDT에서 제공하는 하드웨어 정보는 우선 GPU를 로딩하기 위한 어드레스가 있습니다.

    이를테면 (0x00020000) 이렇게요. 하지만 문제는 동작하는 트리 구조라고 할 수 있습니다.

    리얼 맥에선  iMac이 GFX0으로 외장 GPU를 지원하고 MacPro는 GFX1으로 인식을 해야 하는데
    DSDT에서는 슬롯 이름이 이와는 다르게 되어있으므로 SSDT-1에서  DSDT의 슬롯이름을 리얼맥과 같게 해준다는데 의미가 있습니다.

     

    그리고 GTX960이 웹드라이버를 사용하신게 아니었다면 네이티브로 인식 시키는것은 SSDT GPU injection을 통해서 하실 수 있습니다.

     

  • Profile
    2016/10/18 *.247.149.70
    0 0
    zisqo : DSDT에서 제공하는 하드웨어 정보는 우선 GPU를 로딩하... 에 달린 대댓글입니다.

    슬롯이름을 인식시키는데 SSDT-1이 필요하다는 것이죠?! 그렇군요..

    gtx960은 웹드라이버 사용하고 있습니다. 일단 집에가서 해봐야겠네요. 다른것들도 싹 해봐야겠습니다

  • Profile
    2016/10/18 *.117.156.22
    0 0
    니포 : 슬롯이름을 인식시키는데 SSDT-1이 필요하다는 것이죠?... 에 달린 대댓글입니다.

    웹 드라이버를 쓰더래도 GFX1으로 인식 가능할겁니다. ^^ 다만 Nvidia WEB Drivers만 Config.plist에서 활성화 되어야겠죠? ^^

     

     SSDT-1에서 슬롯 정보를 한 번 더 디테일하게 재 정의 해주는 것 뿐입니다 ^^"

  • Profile
    2016/10/18 *.246.68.11
    0 0
    zisqo : DSDT에서 제공하는 하드웨어 정보는 우선 GPU를 로딩하... 에 달린 대댓글입니다.

    제가 알기론 dsdt에다 ssdt-1 내용을 적용해도 되어야 합니다. 지금껏 접근하신 사항은 dsdt 파일없이 클로버 컨피그 설정만으로 부팅하는 경우에 dsdt의 그래픽 카드 정보를 ssdt-1 파일로 override시키는 걸루 압니다. 즉, 다른 이유에서 dsdt 파일을 패치해서 사용중이하면 굳이 ssdt-1 없이 dsdt에다 적용해도 충분합니다. 

  • Profile
    2016/10/18 *.117.156.22
    0 0
    HackBook : 제가 알기론 dsdt에다 ssdt-1 내용을 적용해도 되어야 ... 에 달린 대댓글입니다.

    안녕하세요 핵북님.  SSDT-1에 Overrides를 하지 않으면 DSDT에서 시스템 버스의 디바이스를 변경하면 안되겠죠. : )
    그래서 DSDT는 최소화 수정을 하고 사이드킥으로 SSDT-1이제 추가 인젝션을 가합니다.
     

  • zisqo : 안녕하세요 핵북님.  SSDT-1에 Overrides를 하지 않으... 에 달린 대댓글입니다.

    제가 예전에 dsdt 수정하면서 이해가 안되는게 슬롯 PCI Slot 부분이 맘대로 안된다는 거였습니다. 올리신것들 보니 정리하면 제대로 나올듯 하군요..

    스크린샷 2016-10-18 오후 6.57.14.png

     

  • Profile
    2016/10/18 *.117.156.22
    0 0
    니포 : 제가 예전에 dsdt 수정하면서 이해가 안되는게 슬롯 PC... 에 달린 대댓글입니다.

    @니포 님 해당 코스메틱은 https://www.x86.co.kr/tip/1342705 에 올려놓았습니다. ^^

  • Profile
    2016/10/18 *.118.151.165
    0 0
    zisqo : 안녕하세요 핵북님.  SSDT-1에 Overrides를 하지 않으... 에 달린 대댓글입니다.

    dsdt에다 디바이스명 변경, 페이크 디바이스 아이디 적용등을 해 보셨는지요? 블투, 무선랜 정보 인젝트 하신 글도 봤지만, dsdt에다 ARPT 디바이스명으로 적용하고 _DSM 메서드로 하드웨어 정보 정의해 주면 ssdt가 필요없습니다. 제 노트북/데탑 모두 dsdt에다 리얼맥의 IOReg 참조해서 디바이스명 바꿔서 잘 쓰고 있거든요. 

     

    일례로 dsdt의 ehci/xhci 디바이스명도 오리지널 추출 dsdt 수정해서 리얼맥에 맞춰 줄수 있죠. 이 경우 포트제한에 걸리니깐, EH01 등으로 리얼맥에서 쓰지 않는 디바이스명으로 바꾸고 usbinjectall 켁스트로 사용합니다. 반대의 경우라 봅니다. 

     

    죄송하지만, dsdt, ssdt GPU injection 파일을 합쳐서 한번 테스트해 봐주시죠. 이때 IOReg 파일로 확인하면 확실해 질 듯. 아니면 파일들 올려주시면 제가 테스트용으로 만들어 보죠. 

  • Profile
    2016/10/18 *.124.55.165
    0 0
    HackBook : 제가 알기론 dsdt에다 ssdt-1 내용을 적용해도 되어야 ... 에 달린 대댓글입니다.

    아하 그렇군요 그러면 ssdt 추가 없이 dsdt에 pegp를 gfx1로 바꾸면 간단하게 끝나는건가요?!

  • Profile
    2016/10/18 *.118.151.165
    0 0
    니포 : 아하 그렇군요 그러면 ssdt 추가 없이 dsdt에 pegp를 g... 에 달린 대댓글입니다.

    디바이스명만 바꾸는 건 비추. 거기에다 _DSM 메서드 이용해 포트, 프레임버퍼, 디바이스 아이디등 그래픽 카드 정보를 제대로 인젝트시켜 주는 게 중요하다고 봅니다. 

    예를 들어

    NAME (_SUN, one)이라고 해두고 _DSM 메서드에서 PCI slot 0이라고 정의하면 맞는 걸까요? 둘 다 PCI 슬롯의 넘버를 정의한 건데 다르다면 뭐가 우선일지 확인해 보세요. 그리고, 클로버에서 그래픽 인젝트 하고 _DSM에다 rom-version 항목을 다르게 적용해 보셔두 알 수 있습니다. 클로버의 인젝트 정보가 우선. 

  • Profile
    2016/10/19 *.247.149.70
    0 0
    HackBook : 디바이스명만 바꾸는 건 비추. 거기에다 _DSM 메서드 ... 에 달린 대댓글입니다.

    그렇군요..잘 모르니 아렵네요 ㅠㅠ

  • Profile
    2016/10/19 *.247.149.70
    0 0
    저는 아이뱅크님이랑 비슷해서 아이뱅크님과 똑같이 해봤는데 적용이 안되더라구요. 혹시 아래 이게 뭘 뜻하는지 궁금합니다..
    
    DefinitionBlock ("iASL87J1f0.aml", "SSDT", 1, "APPLE ", "Devicein", 0x00015601)

    저도 SSDT String을 Devicein으로 줬는데, 그 뒤에 있는 0x00015601 값은 상관없는건가요? 궁금합니당..

    적용할려고 하니 뭐가 잘안되네요..

  • Profile
    2016/10/19 *.246.68.11
    0 0
    니포 : 저는 아이뱅크님이랑 비슷해서 아이뱅크님과 똑같이 ... 에 달린 대댓글입니다.

    @니포님 혹 웹드라이버 사용중이신지, 아이뱅크님이랑 차이나는 게 이것때문일 수도. 아무튼, IOReg 파일이랑 dsdt 파일 올려봐 주세요. 

    그리고 smbios 항목에서 맥프로6,1의 보드-아이디 변경 여부도 아려주세요. 

  • HackBook : @니포님 혹 웹드라이버 사용중이신지, 아이뱅크님이랑 ... 에 달린 대댓글입니다.

    넵 웹드라이버 설치 중이구요 맥프로 6,1 하다가 화면이 안나와서 imac14,2 쓰고있습니다. gfx0 으로 변경 후 적용했는데 안되더라구요.

    dsdt는 DSDT.aml.zip

    IOReg 파일은 http://asinifo.synology.me:88/fbsharing/cygEqW3s

    제가 시도해봤던 SSDT-1 파일은 SSDT-1.aml.zip

    일단 성공하면 맥프로로 옮길까 생각중입니다.

  • 니포 : 넵 웹드라이버 설치 중이구요 맥프로 6,1 하다가 화면... 에 달린 대댓글입니다.

    DSDT patch 정보.zip

    @니포님, 패치 정보를 작성하여 보내드립니다.

    유의할 점은 smbios를 iMac14,2로 쓰는 경우 위에서 언급되었듯 디바이스명이 GFX0 이어야 하구요.

    MacPro6,1의 경우엔 GFX1로 바꿔주어야 합니다.

    DSDT상 PEGP 디바이스명이 중복되어 사용중인데,

    혼란을 피하기 위해서 _SB.PCI0,PEG0.PEGP -> _SB.PCI0.PEG0.GFX0 (MacPro6,1 적용시 GFX1)

    _SB.PCI0,PEG1.PEGP -> _SB.PCI0.PEG1.RAID

    _SB.PCI0,PEG2.PEGP -> _SB.PCI0.PEG2.PEGP (그대로) 표기해서 적용해 보시길...

    작업한 DSDT 예시본도 함께 첨부합니다. DSDT.aml.zip

     

     

     

     

                        

  • Profile
    2016/10/20 *.247.149.70
    0 0
    HackBook : DSDT patch 정보.zip @니포님, 패치 정보를 작성하여... 에 달린 대댓글입니다.

    바쁜시간 내어주셔서..이렇게 알려주시니 정말 감사합니다!!

    PCI 슬롯 3개가 PEG0, PEG1, PEG2로 하나씩 할당되어 있군요. 아래 PEGP는 중복되어도 상관없는줄 알았습니다.

    ssdt로 설정 안하고 dsdt로 이렇게 수정도 가능하군요..ㅎㅎ

    제가 실수로 dsdt를 예전꺼로 올렸네요..작업이 덜된걸루요.. 일단 dsdt 패치 정보를 토대로 해보겠습니다. 감사합니다!!

  • HackBook : DSDT patch 정보.zip @니포님, 패치 정보를 작성하여... 에 달린 대댓글입니다.

    집에와서 테스트 해보니 부팅이 안되네요..테스트 해보고 있습니다.. 혹시 GFX0이 두개가 있어서 그런걸까요?

    DSDT.aml.zip

     

    추가) 테스트 해보니 PEGP를 GFX0이라던지 RAID로 변경만 하면 부팅이 안되네요. PEG0.PEGP로 변경하지 않고 PEG1.RAID로만 변경해도 부팅이 안되네요...

    어려운세계네요.

  • Profile
    2016/10/20 *.7.55.10
    0 0
    니포 : 집에와서 테스트 해보니 부팅이 안되네요..테스트 해보... 에 달린 대댓글입니다.

    그러면 @zisqo님 팁처럼 ssdt-1에다 PEG1.PEGP만 RAID로 rename 적용해 보시죠. 이게 된다면 PEG0.GFX0도 적용해 보시구요.

  • Profile
    2016/10/21 *.247.149.70
    0 0
    HackBook : 그러면 @zisqo님 팁처럼 ssdt-1에다 PEG1.PEGP만 RAID... 에 달린 대댓글입니다.

    신경써주셔서 감사합니다! 테스트 해보겠습니다

  • Profile
    2016/10/22 *.136.238.159
    0 0

    DefinitionBlock ("iASLXdtRCA.aml", "SSDT", 1, "shiloh", "GFX1", 0x00001000)
     { 
    External (PEGP, DeviceObj)  /* DSDT.aml에서 PEGP를 참고 하라고 합니다 */
    External (\_SB_.PCI0.PEG0, DeviceObj) /* _SB_.PCI0.PEG0의 시스템 버스를 참고 하라고 합니다 */ 
    Scope (\_SB.PCI0.PEG0) /* 시스템 버스의 구문을 참고하도록 만들어 줍니다 */
     { 
    Scope (PEGP)  /* DSDT.aml의 PEGP를 0의 주소로 만들어 기 DSDT.aml의 PEGP를 생략합니다 */ 

    Name (_STA, Zero) } Device (GFX1) /* _SB_PCI0.PEG0의 GPU 포트 번호를 지정해 줍니다 */


    설명을 잘 적어 주셧는데 제가 부족한점이 많고 이해가 되지않아 질문 드립니다...

    여기서 잘 이해가 안되는게 PEGP 참고하라는고 External을 인용하는데 제 메인보드의 dsdt는
    PCI0.PEG0.PEGP
    PCI0.PEG1.PEGP
    PCI0.PEG2.PEGP 이렇게 3개가 있습니다.

    IOE를 참고해 보면 PEG0.PEGP에 GTX960 이 적용되어있고
    PEG1.PEGP에 레이드 카드가 적용되어있습니다.
    PEGP모두는 제로 어드레스이지만 바로 상위에 있는 PEG0과 PEG1은 각각 0x00010000와 0x00010001 이라고 주소가 지정되어 있습니다.
    그러면 이때 위에 적어주신 
    External (PEGP, DeviceObj)  /* DSDT.aml에서 PEGP를 참고 하라고 합니다 */
    이것을 입력하면 어디있는게 참고가 되는갓인가요?
    저같은 경우는 External (PEG0.PEGP, DeviceObj) 이라고 적어주어야 하는지 궁금합니다..
    어렵네요...ㅠㅠ

  • 저도 어쩌다보니 성공했네요스크린샷 2016-10-23 오전 11.42.40.png

     

    스크린샷 2016-10-23 오전 11.49.09.png

     

일반로그인 twitter 로그인 facebook 로그인 google 로그인 카카오 로그인 네이버 로그인
서버에 요청 중입니다. 잠시만 기다려 주십시오...