X86 Open로그인

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

Original Link

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

정보 제공해주신 @아이뱅크님, @D'Artagnan 님 감사합니다.

 

첨부 파일
SSDT-1.aml.zip

 

1) DSDT.aml의 GFX포트를 참조해서
2) SSDT-1.aml에서 인젝션 시키는 방식입니다
3) SSDT-1.aml에서 인젝션이 안되면
4) 클로버 부트로더의 ACPI / Drop SSDT table을 선택한 다음 SSDT-1.aml에 선언된
테이블 이름을 입력해주면 됩니다

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

 

* 주의 *

가) 가장 중요한 점은 최소한 Error 수정을 끝낸 DSDT.aml을 첨부 했을 때 빛을 발휘 합니다!
나) 커스텀 맥을 재부팅하고 부트로더 GUI에서 F4를 누르고 5초 정도 기다려 주세요
다) EFI/Clover/ACPI/origin 폴더에 다량의 aml이 추출됩니다
라) 그 중 OEM으로 추출된 DSDT.aml을 바탕화면으로 복사합니다
마) SSDT-1.aml은 첨부 파일을 참고해서 수정 하도록 합니다
바) 완성된 SSDT-1.aml은 EFI/Clover/ACPI/patched에 넣어 줍니다
사) 완성된 Config.plist는 EFI/Clover/에 넣어 줍니다


이 방법은 4포트가 장착된 그래픽 카드에서 유효합니다.

하지만 패치 이후에는
- 최초 설치 모드에서 nv_disable=1등의 옵션없이 설치 가능합니다.
- 리커버리 모드 진입시 기존 nv_disable=1옵션 없이 진입 가능합니다.

 

A. GPU 로케이션 확인

IOResistryExplorer을 실행하고 display로 검색합니다.
여기에서 중요한건 바로 NPE1 또는 2 또는 3@2로 된 키워드 하단의 IOPP에 속해있는 키워드가
Display@0으로 되어 있다면 그것은 SSDT-1.aml에 그래픽 카드 관련된 문구가 없다는 것입니다.
설령 있다손쳐도  출력 포트에 대응하지 않은 코딩이 되어있을 수 있습니다
IOReg-FindDisplay.jpg
위 스샷에서 AppleACPIPCI는 장치 이름이 아닙니다.
IOPP는 슬롯의 PCI  브릿지  역할을 하는 것이지 추가 장비를 나타내는것이 아닙니다.

우선 NPE3@2라고 표시된 곳에서 여러분의 시스템에선 어떤 문구가 나오는지 보시고 잘 메모해두세요
HP Z420 / Z620 에선 NPE2@2라고 나옵니다. 
 

 

B. DSDT에서 GPU 함수 이름 확인

MaciASL-FindDevice.jpg
바탕화면에 복사해둔 DSDT.aml을 MaciASL로 불러와서 B) 항목에서 메모한 키워드를 검색합니다.
위 스샷은 토니맥에 올라온 스샷입니다만, Z420, Z620의 DSDT에선  NPE2로 나옵니다.
하지만  DSDT.aml을 열어보면 NPE2에 종속된 SLT2이 GPU정보를 로드하는 것을 확인할 수 있습니다.

그래서 그 곳의 정보를 보면 Name (_ADR, Zero)로 표기 됨으로 인해, GPU정보가 네이티브로 구동되지 않는 것을
확인할 수 있습니다. 따라서 아래의 SSDT-1.aml을 그대로 복사하셔서 현재 사용중인 SSDT-1.aml에 넣으시면
Nvidia  GTX 660 / 670 / 760 / 770은 그대로 진행될겁니다.

 

 

C. SSDT-1.aml 수정

 HP Z420 / Z620 유저분 중 Kepler / Maxwell 아키텍처를 사용하는 분을 위한 패치입니다

FF0F842D
/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20100331
 *
 * Disassembly of iASLlsbxUV.aml, Sat Oct  8 12:41:53 2016
 *
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x00000206 (518)
 *     Revision         0x01
 *     Checksum         0x4B
 *     OEM ID           "APPLE "
 *     OEM Table ID     "Devicein"
 *     OEM Revision     0x00015601 (87553)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20100331 (537920305)
 */
DefinitionBlock ("iASLlsbxUV.aml", "SSDT", 1, "APPLE ", "Devicein", 0x00015601)
{
    External (\_SB_.PCI0, DeviceObj)
    External (\_SB_.PCI0.NPE2, DeviceObj)
    External (\_SB_.PCI0.NPE2.SLT2, DeviceObj)

    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)
    {
        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)
    {
        Name (_STA, Zero)
    }

    Scope (\_SB.PCI0.NPE2)
    {
        Device (GFX1)
        {
            Name (_ADR, Zero)
            Name (_SUN, 0x05)
            Method (_DSM, 4, NotSerialized)
            {
                If (LEqual (Arg2, Zero))
                {
                    Return (Buffer (One)
                    {
                        0x03
                    })
                }

                Return (Package (0x0A)
                {
                    "@0,connector-type", 
                    Buffer (0x04)
                    {
                        0x00, 0x04, 0x00, 0x00    /* DP */
                    }, 

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

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

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

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

        Device (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"
                    }
                })
            }
        }
    }
}



위 코드를 SSDT-1.aml에 그대로 저장하고 컴파일 하신다음,
EFI/Clover/ACPI/patched/에 저장 하시고 리부팅 하시면 됩니다.
 

D. 동작 확인

Screen Shot 2016-01-27 at 8.16.17 PM.png
올바르게 되었다면 GFX1@0으로 표시되는게 정상입니다.
물론 HP Z420과 Z620에서 GTX760은 GFX1@0으로 표시되지만
제 경우처럼 nv_disable=1을 추가해야만 리커버리 / 클린 설치 모드 진입이 가능 했던 것을
SSDT-1.aml의 String을 Devicein이라 만들고 Config.plist에서 Drop해서 부팅시마다 로딩 시킵니다

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

스샷 상단 우측 두 번 째 Devicein이 Config.plst의 SSDT Drop table에서 로딩할 String입니다.

 

아무쪼록 다시 한 번 재부팅 한 다음, Recovery mode를  npci=0x3000 부트 플래그를 주고 진입해보세요.
정상적이라면 nv_disable=1을 지정했던 옵션을 더이상 필요하지 않은 장점이 있습니다.
장치 관리자에서 보면 HDMI 사운드가 설치도 되어 있고 말이죠? 심지어 VoodooHDA같은 패치 안해도 그래픽카드의 오디오가 설치됩니다.  다만 HP Z420, Z620의 경우 Voodoo Slice를 설치 해주시면 됩니다.

 

토니맥 주소를 처음에 보았지만, 오전에 뉴해킨님의 소스를 토대로 Z420/Z620에 GPU인젝트 글타래를 남겨 봅니다.
 

good poor

니포님 / Mactopia님 / D'Artagnan님 /
3명이 이글을 호평하셨습니다. 0명이 불평하셨습니다.

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

zisqo 님의 Devices

See the Unseen

★ 글쓴이에게 고마우시면 커피한잔 후원(클릭) ★ 추천 정보가 입력되지 않았습니다.
  • 방금 수정해서  테스트 해보았는데 역시나 안됩니다.

    test.zip

    지금 사용하는 것은 말씀하신 자동 hdmi가 됩니다.

    내장 그래픽옵션을 주든 없애든

    디저블 시키고 하든 안하든 관계가 없습니다.

    누군가 만들어놓은 것을 GFX0을 GFX1으로 바꾸어서 적용했는데 문제없이 되었습니다.

     

  • Profile
    2016/10/08
    0 0

    토니맥의 내용을 번안하다가 결국은 뉴해킨님의 소스 기반에서 토니맥의 Kepler / Maxwell 아키텍쳐의 Buffer Address만 추가 했더니 잘 동작합니다.

  • Profile
    2016/10/08
    1 0
    zisqo : 토니맥의 내용을 번안하다가 결국은 뉴해킨님의 소스 ... 에 달린 대댓글입니다.

    nvidia 그래픽카드 사용자분들에게는 유용한 정보 정보입니다.

    얼마전 amd 그래픽카드에 시도해보려고 찾아봤던 내용입니다만 적용은 안되더군요

    접근하기 쉽게 번역해주신 것 만으로도 다른 분들에게 많은 도움이 될거라 생각됩니다.

    고생하셨습니다.

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