Jump to content
30960 posts in this topic

Recommended Posts

Anyone have a working SSDT method to inject Skylake LPC so that AppleLPC.kext will load?

 

I have this:

/*
 * Intel ACPI Component Architecture
 * AML/ASL+ Disassembler version 20171110 (64-bit version)(RM)
 * Copyright (c) 2000 - 2017 Intel Corporation
 * 
 * Disassembling to non-symbolic legacy ASL operators
 *
 * Disassembly of iASL0Z6ufm.aml, Sun Dec 10 16:06:08 2017
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x000000B7 (183)
 *     Revision         0x01
 *     Checksum         0xE9
 *     OEM ID           "mfc88"
 *     OEM Table ID     "LPCB"
 *     OEM Revision     0x00000000 (0)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20171110 (538382608)
 */
DefinitionBlock ("", "SSDT", 1, "mfc88", "LPCB", 0x00000000)
{
    External (_SB_.PCI0.LPCB, DeviceObj)    // (from opcode)

    Method (_SB.PCI0.LPCB._DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
    {
        If (LNot (Arg2))
        {
            Return (Buffer (One)
            {
                 0x03                                           
            })
        }

        Return (Package (0x06)
        {
            "device-id", 
            Buffer (0x17)
            {
                "0xC1, 0x9C, 0x00, 0x00"
            }, 

            "compatible", 
            Buffer (0x0D)
            {
                "pci8086,9cc1"
            }, 

            "name", 
            Buffer (0x0D)
            {
                "pci8086,9cc1"
            }
        })
    }
}

But its not working.

 

mk1lJ23.png

How about "resolve by ignoring these messages" like all the other messages in console log that seem like they may be a problem but don't cause any harm.

Or find a kernel patch to make OSKext::createExcludeListFromBooterData stop looking for KextExcludeList in /chosen/memory-map.

This messages known from 10.5

09/12/17 19:14:54,000 kernel[0]: "name" not a kext
09/12/17 19:14:54,000 kernel[0]: "FailedCLUT" not a kext
09/12/17 19:14:54,000 kernel[0]: "FailedImage" not a kext
and never was an obstacle for OSX.

 

They are related to Clover because it injected kexts not officail way.

 

To be completely honest stuff like that does not bother me either, but since I explored the issue and found an obvious (though surely low-pri/cosmetic) bug I feel responsible to report. Patching OSKext::createExcludeListFromBooterData (in fact the whole call could be replaced with a ret) is of course an option, but is more like "make the messages disappear" way rather than implement the functionality XNU expects. In either case, if anybody wants to write a fix, he at least is now aware what is wrong.
  • Like 8

did you patched dvmt 64mb over?

 

EDIT1.

i'm suspecting your system

4gb ram

no patched dvmt 64 over. your system has 32mb

 

is it right?

 

also if you use 16160000, gpu vram size will show 1024mb, is it right?

 

EDIT2.

upload screenshot about your gpu info after click "about mac" on left top

 

 

Yes 1024M with 161e0000 but 1536M with 16260006.

 

I just want to know Clover GUI screen resolution change.

 

 

从我的 iPhone 发送,使用 Tapatalk

Yes 1024M with 161e0000 but 1536M with 16260006.

 

I just want to know Clover GUI screen resolution change.

 

 

从我的 iPhone 发送,使用 Tapatalk

I will back 0x16260006. You have to manually add 161e0000. 161e0000 default 1024.

 

Most of broadwell models has 1536MB VRAM. Also its benefits more than 1024MB.

 

16260006 was proved by many user. I'm researched frambuffer more yesterday with website.

 

It does not matter. We provide manual value that user want. Clover just support best value to use macOS and boot without fail

 

나의 LG-F800S 의 Tapatalk에서 보냄

Anyone have a working SSDT method to inject Skylake LPC so that AppleLPC.kext will load?

 

I have this:

/* * Intel ACPI Component Architecture * AML/ASL+ Disassembler version 20171110 (64-bit version)(RM) * Copyright (c) 2000 - 2017 Intel Corporation *  * Disassembling to non-symbolic legacy ASL operators * * Disassembly of iASL0Z6ufm.aml, Sun Dec 10 16:06:08 2017 * * Original Table Header: *     Signature        "SSDT" *     Length           0x000000B7 (183) *     Revision         0x01 *     Checksum         0xE9 *     OEM ID           "mfc88" *     OEM Table ID     "LPCB" *     OEM Revision     0x00000000 (0) *     Compiler ID      "INTL" *     Compiler Version 0x20171110 (538382608) */DefinitionBlock ("", "SSDT", 1, "mfc88", "LPCB", 0x00000000){    External (_SB_.PCI0.LPCB, DeviceObj)    // (from opcode)    Method (_SB.PCI0.LPCB._DSM, 4, NotSerialized)  // _DSM: Device-Specific Method    {        If (LNot (Arg2))        {            Return (Buffer (One)            {                 0x03                                                       })        }        Return (Package (0x06)        {            "device-id",             Buffer (0x17)            {                "0xC1, 0x9C, 0x00, 0x00"            },             "compatible",             Buffer (0x0D)            {                "pci8086,9cc1"            },             "name",             Buffer (0x0D)            {                "pci8086,9cc1"            }        })    }}
But its not working.

 

mk1lJ23.png

no need AppleLPC loaded on skylake+. I checked it. I just added EFICheckDisabler.kext to disable eficheck.

 

9cc1 is broadwell lpc id.

 

나의 LG-F800S 의 Tapatalk에서 보냄

  • Like 3

I will back 0x16260006. You have to manually add 161e0000. 161e0000 default 1024.

 

Most of broadwell models has 1536MB VRAM. Also its benefits more than 1024MB.

 

16260006 was proved by many user. I'm researched frambuffer more yesterday with website.

 

It does not matter. We provide manual value that user want. Clover just support best value to use macOS and boot without fail

 

나의 LG-F800S 의 Tapatalk에서 보냄

no need AppleLPC loaded on skylake+. I checked it. I just added EFICheckDisabler.kext to disable eficheck.

 

9cc1 is broadwell lpc id.

 

나의 LG-F800S 의 Tapatalk에서 보냄

OK,Very thanks to your help.

 

 

从我的 iPhone 发送,使用 Tapatalk

  1. You keep repeating the word "expect" without stating in your analysis what OSKext::createExcludeListFromBooterData does if it doesn't find one.  If it works without one, this is a feature request, not a bug - one which isn't a high priority because there's another mechanism to get the kernel to accept unsigned kexts which is to disable SIP.
  2. You don't state in your analysis whether the 2nd KextExcludeList has to be digitally signed by Apple like the one in /S/L/E (when SIP is enabled of course...).  If it does, there's nothing that can be injected other than the same one as in /S/L/E - which makes it a useless feature.
  3. There's nothing preventing a user from putting a KextExcludeList in \EFI\CLOVER\kexts\Other today.
  4. It is not Clover's fault that one component written by Apple (OSKext) is issuing frivolous error messages about data inserted by another component written by Apple (boot.efi).

To be completely honest stuff like that does not bother me either, but since I explored the issue and found an obvious (though surely low-pri/cosmetic) bug I feel responsible to report. Patching OSKext::createExcludeListFromBooterData (in fact the whole call could be replaced with a ret) is of course an option, but is more like "make the messages disappear" way rather than implement the functionality XNU expects. In either case, if anybody wants to write a fix, he at least is now aware what is wrong.

 

  1. You keep repeating the word "expect" without stating in your analysis what OSKext::createExcludeListFromBooterData does if it doesn't find one.  If it works without one, this is a feature request, not a bug - one which isn't a high priority because there's another mechanism to get the kernel to accept unsigned kexts which is to disable SIP.
  2. You don't state in your analysis whether the 2nd KextExcludeList has to be digitally signed by Apple like the one in /S/L/E (when SIP is enabled of course...).  If it does, there's nothing that can be injected other than the same one as in /S/L/E - which makes it a useless feature.
  3. There's nothing preventing a user from putting a KextExcludeList in \EFI\CLOVER\kexts\Other today.
  4. It is not Clover's fault that one component written by Apple (OSKext) is issuing frivolous error messages about data inserted by another component written by Apple (boot.efi).

 

As for #4, is not it a kind of MITM (man in the middle) attack? Clover modifies "expected" order?

As I understand, the problem (unexpected feature?) not in injection itself, but in the order of injection.

What is "injection itself"? Kexts from Clover folder appears before kernelcache, it is order of injection.

This is what memory-map looks like in VMware guest.  No Clover involvement.  The words "FailedCLUT" or "FailedImage" do not appear in a grep of 'log show'.

I don't know that the five injected drivers are or if they contain a KextExcludeList.

 

PS: SIP is disabled.

Update: Same result with SIP enabled, so whatever VMware does, these messages are not emitted in the kernel log.

post-446538-0-39953300-1512990084_thumb.jpeg

Edited by Zenith432

This is what memory-map looks like in VMware guest. No Clover involvement. The words "FailedCLUT" or "FailedImage" do not appear in a grep of 'log show'.

I don't know that the five injected drivers are or if they contain a KextExcludeList.

 

PS: SIP is disabled.

VMWare does not inject "booter kexts".

Sigh, in this case I will have to explain some XNU internals.

 

1. You keep repeating the word "expect" without stating in your analysis what OSKext::createExcludeListFromBooterData does if it doesn't find one. If it works without one, this is a feature request, not a bug - one which isn't a high priority because there's another mechanism to get the kernel to accept unsigned kexts which is to disable SIP.

2. You don't state in your analysis whether the 2nd KextExcludeList has to be digitally signed by Apple like the one in /S/L/E (when SIP is enabled of course...). If it does, there's nothing that can be injected other than the same one as in /S/L/E - which makes it a useless feature.

3. There's nothing preventing a user from putting a KextExcludeList in \EFI\CLOVER\kexts\Other today.

4. It is not Clover's fault that one component written by Apple (OSKext) is issuing frivolous error messages about data inserted by another component written by Apple (boot.efi).

1. It is not like XNU source code is closed, you could have just opened libkern/c++/OSKext.cpp. To save your time I could repeat that currently(!) it only warns about extra variables not starting with a correct prefix (not being kexts).

 

2. There is no signature concept for all booter kexts in the first place, so the words digitally signed are meaningless in XNU context.

This is obvious, if you realise that you need a trusted storage for kext signature verification, which unlike iOS you do not have on macOS.

Another thing is that KextExclude list is obviously replaced from prelinked one if it exists there, and the exclusion list in booter kexts is only relevant for booter kexts.

I consider this to be the way Apple expects one to enable/disable booter-injected extensions (I suppose instead of what Clover does now).

 

3. There actually is, I discovered that the current Clover kext injection implementation does not properly inject Info.plists, for some reason OSKextExcludeList will not be present in a kext injected by Clover effectively making XNU to panic.

 

4. I agree that it is a complicated edge-case question, I'd say the warnings are reasonably strange, since the iteration order should not be guaranteed and the other non-kext keys definitely should be there. Which kind of makes the issue itself radar-worthy.

  • Like 1

So when I boot Clover, OS 10.13.2

No kext injection

SIP disabled

chosen/memory-map contains 3 entries

name/FailedCLUT/FailedImage

I get the 3 messages in log show kernel: "FailedCLUT" not a kext, etc...

 

In VMWare - no such messages even with 5 Driver- entries and SIP enabled.

 

Is it Clover's fault even if the messages show up without injection?

OsxAptioFixDrv-64.efi broken in Clover 4334 or an older version was packaged instead of the modified one from a while back does anyone have a working Clover PKG with a working AptioFixv1 driver?

OsxAptioFixDrv-64.efi broken in Clover 4334 or an older version was packaged instead of the modified one from a while back does anyone have a working Clover PKG with a working AptioFixv1 driver?

 

https://sourceforge.net/projects/cloverefiboot/files/Installer/

today, i found SetIntelMaxBacklight bug.

always get black screen after check it. both sandy and skylake.

i will fix it with exact backlight level according to framebuffer.

 

Actually for my sandy, HD3000 injection is broken. I have to turn it off but then I don't get acceleration.

https://sourceforge.net/projects/cloverefiboot/files/Installer/

 

 

Actually for my sandy, HD3000 injection is broken. I have to turn it off but then I don't get acceleration.

What is your hd3000 device id?

I tested my sandy laptop. And desktop tested by user.

 

 

나의 LG-F800S 의 Tapatalk에서 보냄

It's 8086-0112. It used to work without any settings.

 

EDIT: It's an i5-2500K.

Can you tell me for success info?

Device id and snb-platform-id from ioreg

 

I'm gathering information. Some intel cpu platform have done. But still lack info.

 

Thanks in advance.

 

나의 LG-F800S 의 Tapatalk에서 보냄

 

EDIT1

long time ago, i checked i5 2500k's hd3000 with ricoc90

here

http://www.insanelymac.com/forum/topic/325283-desktop-intel-hd-3000-graphics/?p=2464439

×
×
  • Create New...