Jump to content

Ozmosis


xpamamadeus
6,231 posts in this topic

Recommended Posts

You can flash the ffs, but plist must be in one of your EFI folder. Patcher will start to looking its config from self dir / 1st founded ESP (like previously release). PatcherLog.txt will automatically created. I suggest to play safe first by bcfg the driver instead of flashing it. Please reload your current KernextPatcher (if any, due the MemLog problem mentioned above) to work with this AcpiPatcher. >>>

Hi

flashed the new patchers and now the logs are fine

thanks again, really appreciate your work.

Link to comment
Share on other sites

same. DSDT has bad header

 

For which MoBo are you trying to?

Dsdt2Bios is not needed for the X99 Board, you can extract DSDT directly for the first Freeform Modules at the bottom of the freeform list inside ROM as: extract Body .aml

 

Keep in mind that Ozmosis will not work for your X99 board exept by chance

Link to comment
Share on other sites

For which MoBo are you trying to?

Dsdt2Bios is not needed for the X99 Board, you can extract DSDT directly for the first Freeform Modules at the bottom of the freeform list inside ROM as: extract Body .aml

 

Keep in mind that Ozmosis will not work for your X99 board exept by chance

 

exactly, its x99. and I am unable to find that freeform list... exept by chance sounds not impossible

Link to comment
Share on other sites

exactly, its x99. and I am unable to find that freeform list... exept by chance sounds not impossible

AmiBoardInfo search with UEFITool.

post-608882-0-01536400-1508101590_thumb.png

 

later extrach PE32 body like a bin. Use drag and drop bin file on DSDT2bios and u have DSDT-Original.aml

Link to comment
Share on other sites

No not, since x99, x100 series Board, they are only in FreeForm modules. Here's how:

 

post-334538-0-86198000-1508102903_thumb.png

 

Select that raw as in the png above, and choose Extract Body then all files and name it xxxx.aml

 

Or here's the extracted one from the 3.20 ROM: DSDT.aml.zip, you can try Ozmosis at your own risk, the ROM is not protected, just add the Ozmosis stuffs.

Link to comment
Share on other sites

No not, since x99, x100 series Board, they are only in FreeForm modules. Here's how:

 

attachicon.gifDSDT.png

 

Select that raw as in the png above, and choose Extract Body then all files and name it xxxx.aml

 

Or here's the extracted one from the 3.20 ROM: attachicon.gifDSDT.aml.zip, you can try Ozmosis at your own risk, the ROM is not protected, just add the Ozmosis stuffs.

Ok, thanks. I will take some time for this to try)

Link to comment
Share on other sites

In kext (and also acpi patcher) are now trying to read known options (stored in apple boot-args if any) such as "-KernextPatcherOff" / "-AcpiPatcherOff" before looking for user config plist as a first attempt to speed up process. Inspired by vit9696's project. Thanks..

  • Like 3
Link to comment
Share on other sites

Thank you for your awesome work cecekpawon! Haven't been able to test your ACPIPatcher yet but I'm definitely going to!
 
Where can we find all possible boot-args for AcpiPatcher? KernextPatcher boot-args can be found on your GitHub (-KernextPatcherDbg, -KernextPatcherLog and -KernextPatcherOff), are the boot-args available for the AcpiPatcher equal with just a change from "Kernext" to "Acpi"? Is there, or is there going to be a Github Page for the new Patcher?

 

Btw, I love the options in AcpiPatcher.plist like FixHeader, DropTables or GenerateCPUStates!

Link to comment
Share on other sites

 Yes, just change "Kernext" to "Acpi" LOL. Sure I will share on Github soon :)

#define ACPIPATCHER_PLIST                        L"\\EFI\\AcpiPatcher.plist"
#define DEBUG_LOG                                L"\\EFI\\AcpiPatcherLog.txt"

#define ARG_DEBUG                                "-AcpiPatcherDbg"
#define ARG_DEBUG_LOG                            "-AcpiPatcherLog"
#define ARG_OFF                                  "-AcpiPatcherOff"
Link to comment
Share on other sites

Hi people! Need some help from a profis like you.

 

I built an Ozmosis from the last Version in this Topic, specs like MacPro6,1 Motherboard Ga-x79-up4 processor intel i7 4820 and the system is Mac OS 10.12.6. (other SSD with Windows 10)

 

Everything is working best except 3 things:

 

1. I can't boot into Windows or Mac (separate 2 SSD Drives) without F12. With it everything works perfect, but if I only switch my PC on and add a Windows or Mac as a primary drive in bios, after Bios loading a have a black screen with 2 violet rectangles and nothing happens.

What I did:

- Trying to reboot with ESC - nothing changed

- Trying to reboot with Home to see Oz GUI - Black Screen

- Trying to edit Defaults.plist I removed UserInterface and TimeOut parameters - nothing changed

- Trying to edit nvram parameters with 

sudo nvram 1F8E0C02-58A9-4E34-AE22-2B63745FA101:UserInterface=%00 
sudo nvram 1F8E0C02-58A9-4E34-AE22-2B63745FA101:TimeOut=0
but nothing changed.
So I have 2 perfect working Systems, but can't normally boot, must do F12 every time and this sucks. Can you help me?
 
2. The second problem is the Shut down. Maybe this is the following of the first problem I don't know, but if I shut down a pc completely it only reboots. In Windows or in Mac it does the same, reboot and go on. I can only power off a pc with long pressing power key on this 2 rectangles screen, if I do it in system, it will be restarted again.
- I checked all bios parameters Wake on Lan is Disabled and so on, but it doesn't help.
Can you help here? The Yosemithe installation worked fine without this 2 problems on the same pc and configuration.
 
3. In Mac OS I have Nvidia GTX 770 card with official drivers successfully installed. The only problem is if I connect a tv to the Hdmi and a Monitor to DVI, everything works well untill I switch off the TV. With connected switched off TV the DVI monitor begins to blink without any periodic. It can be normal for 5 minutes then blink, or it can blink 10 times in a minute. If I switch on the TV (no matters if the channel represents the Mac output or not, only power on matters) everything is fine. If I plug off the cable from HDMI everything is fine too. But together I must have the TV always on and it make me seek. The same problem was under Yosemithe too.
Can you help here too?
 
Thank you all, you are great!
 
Ozmosis Infos:
In my bios (Version F8g) I deleted FilSystem and added:
- Ozmosis
- OzmosisHorizontalTheme
- Extf
- HermitShellX64
- FakeSMC
- Ozmosis Defaults
- VoodooTSCSync
- NullCPUPowerManagement
- PartitionDXE
- HfsPlus
- EnhancedFat
- USBFix
 
The DefaultsPlist looks like:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Defaults:1F8E0C02-58A9-4E34-AE22-2B63745FA101</key>
<dict>
<key>AAPL,ig-platform-id</key>
<integer>3735928495</integer>
<key>AAPL,snb_platform_id</key>
<integer>3735928495</integer>
<key>AcpiLoaderMode</key>
<integer>69</integer>
<key>AtiFramebuffer</key>
<false/>
<key>BootEntryTemplate</key>
<string>$label $guid</string>
<key>DarwinDiskTemplate</key>
<string>$label $platform.$major.$minor $build</string>
<key>DarwinRecoveryDiskTemplate</key>
<string>$label $platform.$major.$minor $build</string>
<key>DisableAtiInjection</key>
<true/>
<key>DisableBootEntriesFilter</key>
<true/>
<key>DisableIntelInjection</key>
<true/>
<key>DisableNvidiaInjection</key>
<true/>
<key>SkipSmbusSpdScan</key>
<true/>
</dict>
<key>Defaults:4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
<dict>
<key>BaseBoardAssetTag</key>
<string>Base Board Asset Tag#</string>
<key>BaseBoardSerial</key>
<string>F5K4252014MFNN11M</string>
<key>BiosDate</key>
<string>08/08/17</string>
<key>BiosVersion</key>
<string>MP61.88Z.0120.B00.1708080652</string>
<key>BoardVersion</key>
<string>Proto1</string>
<key>ChassisAssetTag</key>
<string>MacPro-Aluminum</string>
<key>EnclosureType</key>
<integer>13</integer>
<key>FirmwareFeatures</key>
<integer>0xe80fe136</integer>
<key>FirmwareFeaturesMask</key>
<integer>0xff1fff3f</integer>
<key>FirmwareRevision</key>
<integer>0x0001000A</integer>
<key>FirmwareVendor</key>
<string>Apple</string>
<key>HardwareAddress</key>
<string>74:d4:35:15:b0:ee</string>
<key>HardwareSignature</key>
<string>89236111-2331-5432-B04C-74D43515B0EE</string>
<key>Manufacturer</key>
<string>Apple Inc.</string>
<key>ProcessorSerial</key>
<string>CK0020DZE1D</string>
<key>ProductFamily</key>
<string>MacPro</string>
<key>ProductId</key>
<string>Mac-F60DEB81FF30ACF6</string>
<key>ProductName</key>
<string>MacPro6,1</string>
<key>SystemSKU</key>
<string>System SKU#</string>
<key>SystemSerial</key>
<string>My serial</string>
<key>SystemVersion</key>
<string>1.0</string>
</dict>
<key>Defaults:7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<dict>
<key>boot-args</key>
<string>nvda_drv=1 npci=0x2000</string>
<key>csr-active-config</key>
<data>
dwAAAA==
</data>
</dict>
<key>Timestamp</key>
<integer>5</integer>
<key>Version</key>
<string>1.0.1</string>
</dict>
</plist>

 

Link to comment
Share on other sites

 

Why you use this in Defaults.plist and no need NullCPUPowerManagement

<key>AAPL,ig-platform-id</key>
<integer>3735928495</integer>
<key>AAPL,snb_platform_id</key>
<integer>3735928495</integer>

 

It was in Defaults.plist as an example there. Is it wrong? What must I put in for MacPro6,1?

And what are these parameters for? What are they doing?

 

Without NullCPU it don't work, kernelpanic unknown CPU.

NullCPU is not a problem, what can I do to fix other?

Link to comment
Share on other sites

Remove NulCPUPowerManagement, VoodooTSCSync, generat a FakeSMC and all it's Sensors as ffs, Make Working SSDT for CPUPm, and for Devices, or an DSDT, use this OzmosisDefults:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com...yList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Defaults:1F8E0C02-58A9-4E34-AE22-2B63745FA101</key>
<dict>

<key>AcpiLoaderMode</key>
<integer>69</integer>
<key>BootEntryTemplate</key>
<string>$label $guid</string>
<key>DarwinDiskTemplate</key>
<string>$label $platform.$major.$minor $build</string>
<key>DarwinRecoveryDiskTemplate</key>
<string>$label $platform.$major.$minor $build</string>
<key>DisableAtiInjection</key>
<true/>
<key>DisableBootEntriesFilter</key>
<true/>
<key>DisableIntelInjection</key>
<true/>
<key>DisableNvidiaInjection</key>
<false/>
</dict>
<key>Defaults:4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
<dict>
<key>BaseBoardAssetTag</key>
<string>Base Board Asset Tag#</string>
<key>BaseBoardSerial</key>
<string>F5K4252014MFNN11M</string>
<key>BiosDate</key>
<string>08/08/17</string>
<key>BiosVersion</key>
<string>MP61.88Z.0120.B00.1708080652</string>
<key>BoardVersion</key>
<string>Proto1</string>
<key>ChassisAssetTag</key>
<string>MacPro-Aluminum</string>
<key>EnclosureType</key>
<integer>13</integer>
<key>FirmwareFeatures</key>
<integer>0xe80fe136</integer>
<key>FirmwareFeaturesMask</key>
<integer>0xff1fff3f</integer>
<key>FirmwareRevision</key>
<integer>0x0001000A</integer>
<key>FirmwareVendor</key>
<string>Apple</string>
<key>HardwareAddress</key>
<string>74:d4:35:15:b0:ee</string>
<key>HardwareSignature</key>
<string>89236111-2331-5432-B04C-74D43515B0EE</string>
<key>Manufacturer</key>
<string>Apple Inc.</string>
<key>ProcessorSerial</key>
<string>CK0020DZE1D</string>
<key>ProductFamily</key>
<string>MacPro</string>
<key>ProductId</key>
<string>Mac-F60DEB81FF30ACF6</string>
<key>ProductName</key>
<string>MacPro6,1</string>
<key>SystemSKU</key>
<string>System SKU#</string>
<key>SystemSerial</key>
<string>My serial</string>
<key>SystemVersion</key>
<string>1.0</string>
</dict>
<key>Defaults:7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<dict>
<key>boot-args</key>
<string>nvda_drv=1 npci=0x2000</string>
<key>csr-active-config</key>
<data>
dwAAAA==
</data>
</dict>
<key>Timestamp</key>
<integer>5</integer>
<key>Version</key>
<string>1.0.1</string>
</dict>
</plist> 

Download this Injector kext @ the post #4724 ,add it to the BIOS.

Link to comment
Share on other sites

Remove NulCPUPowerManagement, VoodooTSCSync, generat a FakeSMC and all it's Sensors as ffs, Make Working SSDT for CPUPm, and for Devices, or an DSDT, use this OzmosisDefults:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com...yList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Defaults:1F8E0C02-58A9-4E34-AE22-2B63745FA101</key>
<dict>

<key>AcpiLoaderMode</key>
<integer>69</integer>
<key>BootEntryTemplate</key>
<string>$label $guid</string>
<key>DarwinDiskTemplate</key>
<string>$label $platform.$major.$minor $build</string>
<key>DarwinRecoveryDiskTemplate</key>
<string>$label $platform.$major.$minor $build</string>
<key>DisableAtiInjection</key>
<true/>
<key>DisableBootEntriesFilter</key>
<true/>
<key>DisableIntelInjection</key>
<true/>
<key>DisableNvidiaInjection</key>
<false/>
</dict>
<key>Defaults:4D1FDA02-38C7-4A6A-9CC6-4BCCA8B30102</key>
<dict>
<key>BaseBoardAssetTag</key>
<string>Base Board Asset Tag#</string>
<key>BaseBoardSerial</key>
<string>F5K4252014MFNN11M</string>
<key>BiosDate</key>
<string>08/08/17</string>
<key>BiosVersion</key>
<string>MP61.88Z.0120.B00.1708080652</string>
<key>BoardVersion</key>
<string>Proto1</string>
<key>ChassisAssetTag</key>
<string>MacPro-Aluminum</string>
<key>EnclosureType</key>
<integer>13</integer>
<key>FirmwareFeatures</key>
<integer>0xe80fe136</integer>
<key>FirmwareFeaturesMask</key>
<integer>0xff1fff3f</integer>
<key>FirmwareRevision</key>
<integer>0x0001000A</integer>
<key>FirmwareVendor</key>
<string>Apple</string>
<key>HardwareAddress</key>
<string>74:d4:35:15:b0:ee</string>
<key>HardwareSignature</key>
<string>89236111-2331-5432-B04C-74D43515B0EE</string>
<key>Manufacturer</key>
<string>Apple Inc.</string>
<key>ProcessorSerial</key>
<string>CK0020DZE1D</string>
<key>ProductFamily</key>
<string>MacPro</string>
<key>ProductId</key>
<string>Mac-F60DEB81FF30ACF6</string>
<key>ProductName</key>
<string>MacPro6,1</string>
<key>SystemSKU</key>
<string>System SKU#</string>
<key>SystemSerial</key>
<string>My serial</string>
<key>SystemVersion</key>
<string>1.0</string>
</dict>
<key>Defaults:7C436110-AB2A-4BBB-A880-FE41995C9F82</key>
<dict>
<key>boot-args</key>
<string>nvda_drv=1 npci=0x2000</string>
<key>csr-active-config</key>
<data>
dwAAAA==
</data>
</dict>
<key>Timestamp</key>
<integer>5</integer>
<key>Version</key>
<string>1.0.1</string>
</dict>
</plist> 

Download this Injector kext @ the post #4724 ,add it to the BIOS.

How can I integrate SSDT in DSDT? I have no possibility to load SSDT with ozmosis

without NullCpu and without AAPL.

btw which your GPU? maybe problem in GPU.

yes and use sudo nvram 1F8E0C02-58A9-4E34-AE22-2B63745FA101:SkipSmbusSpdScan=%01

I will try but can it help my boot problems? I think not, kexts have nothing to do with F12 boot.

 

My GPU is GTX770 4GB

 

How can I disable AAPL from nvram? I don't want to use nvram reset because of platform-uuid.

Link to comment
Share on other sites

Your SSDT for PowerManagement should be in Efi/Oz/Acpi/Load/ folder with other SSDT for Injecting _DSM or DSDT patched. Or in DSDT file Add a Scope (PR), copy paste there your SSDT.

I don't use this anymore, but instead I use a simple way like Apple did, on everyboard I have and it work, here's an example of my Z97M-DS3H CPUSsdt:

/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20131218-64 [Jan  8 2014]
 * Copyright (c) 2000 - 2013 Intel Corporation
 * 
 * Disassembly of iASLZQFCAH.aml, Thu Oct 19 15:23:08 2017
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x00000C09 (3081)
 *     Revision         0x01
 *     Checksum         0x08
 *     OEM ID           "CpuRef"
 *     OEM Table ID     "CpuSsdt"
 *     OEM Revision     0x00003000 (12288)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20131218 (538120728)
 */
DefinitionBlock ("iASLZQFCAH.aml", "SSDT", 1, "CpuRef", "CpuSsdt", 0x00003000)
{

    External (_PR_.CPU0, ProcessorObj)
    External (_PR_.CPU0._PPC, IntObj)
    External (_PR_.CPU1, ProcessorObj)
    External (_PR_.CPU2, ProcessorObj)
    External (_PR_.CPU3, ProcessorObj)
    External (_PR_.CPU4, ProcessorObj)
    External (_PR_.CPU5, ProcessorObj)
    External (_PR_.CPU6, ProcessorObj)
    External (_PR_.CPU7, ProcessorObj)
    External (OSDW, MethodObj)    // 0 Arguments

    Scope (\)
    {
        Name (SSDT, Package (0x0C)
        {
            "CPU0IST ", 
            0xA8C1E598, 
            0x00000539, 
            "APIST   ", 
            0xABBA2618, 
            0x000005AA, 
            "CPU0CST ", 
            0xABBA2C18, 
            0x000003D3, 
            "APCST   ", 
            0xABBA1D98, 
            0x00000119
        })
        Name (\PDC0, 0x80000000)
        Name (\PDC1, 0x80000000)
        Name (\PDC2, 0x80000000)
        Name (\PDC3, 0x80000000)
        Name (\PDC4, 0x80000000)
        Name (\PDC5, 0x80000000)
        Name (\PDC6, 0x80000000)
        Name (\PDC7, 0x80000000)
        Name (\SDTL, Zero)
    }

    Scope (\_PR)
    {
        OperationRegion (PNVS, SystemMemory, 0xABD9FF18, 0x0053)
        Field (PNVS, AnyAcc, Lock, Preserve)
        {
            PGRV,   8, 
            CFGD,   32, 
            Offset (0x06), 
            ACRT,   8, 
            APSV,   8, 
            AAC0,   8, 
            CPID,   32, 
            CPPC,   8, 
            CCTP,   8, 
            CLVL,   8, 
            CBMI,   8, 
            PL10,   16, 
            PL20,   16, 
            PLW0,   8, 
            CTC0,   8, 
            TAR0,   8, 
            PPC0,   8, 
            PL11,   16, 
            PL21,   16, 
            PLW1,   8, 
            CTC1,   8, 
            TAR1,   8, 
            PPC1,   8, 
            PL12,   16, 
            PL22,   16, 
            PLW2,   8, 
            CTC2,   8, 
            TAR2,   8, 
            PPC2,   8, 
            C3MW,   8, 
            C6MW,   8, 
            C7MW,   8, 
            CDMW,   8, 
            C3LT,   16, 
            C6LT,   16, 
            C7LT,   16, 
            CDLT,   16, 
            CDLV,   16, 
            CDPW,   16, 
            MPMF,   8, 
            DTSE,   8, 
            DTS1,   8, 
            DTS2,   8, 
            DTSF,   8, 
            PDTS,   8, 
            PKGA,   8, 
            DTS3,   8, 
            DTS4,   8, 
            BGMA,   64, 
            BGMS,   8, 
            BGIA,   16, 
            BGIL,   16, 
            DSIA,   16, 
            DSIL,   8, 
            DSAE,   8
        }

        OperationRegion (IO_D, SystemIO, \_PR.DSIA, \_PR.DSIL)
        Field (IO_D, ByteAcc, NoLock, Preserve)
        {
            TRPD,   8
        }

        OperationRegion (IO_P, SystemIO, \_PR.BGIA, \_PR.BGIL)
        Field (IO_P, ByteAcc, NoLock, Preserve)
        {
            TRPF,   8
        }
    }

    Scope (\_PR.CPU0)
    {
        Name (HI0, Zero)
        Name (HC0, Zero)
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            If (CondRefOf (\_PR.CPU0._PPC))
            {
                Store (CPPC, \_PR.CPU0._PPC)
            }

            Store (CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (CPDC, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, REVS)
            CreateDWordField (Arg0, 0x04, SIZE)
            Store (SizeOf (Arg0), Local0)
            Store (Subtract (Local0, 0x08), Local1)
            CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP)
            Name (STS0, Buffer (0x04)
            {
                 0x00, 0x00, 0x00, 0x00
            })
            Concatenate (STS0, TEMP, Local2)
            Return (COSC (Buffer (0x10)
                {
                    /* 0000 */   0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47,
                    /* 0008 */   0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
                }, REVS, SIZE, Local2))
        }

        Method (COSC, 4, NotSerialized)
        {
            CreateDWordField (Arg3, Zero, STS0)
            CreateDWordField (Arg3, 0x04, CAP0)
            CreateDWordField (Arg0, Zero, IID0)
            CreateDWordField (Arg0, 0x04, IID1)
            CreateDWordField (Arg0, 0x08, IID2)
            CreateDWordField (Arg0, 0x0C, IID3)
            Name (UID0, Buffer (0x10)
            {
                /* 0000 */   0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47,
                /* 0008 */   0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
            })
            CreateDWordField (UID0, Zero, EID0)
            CreateDWordField (UID0, 0x04, EID1)
            CreateDWordField (UID0, 0x08, EID2)
            CreateDWordField (UID0, 0x0C, EID3)
            If (LNot (LAnd (LAnd (LEqual (IID0, EID0), LEqual (IID1, EID1)), 
                LAnd (LEqual (IID2, EID2), LEqual (IID3, EID3)))))
            {
                Store (0x06, STS0)
                Return (Arg3)
            }

            If (LNotEqual (Arg1, One))
            {
                Store (0x0A, STS0)
                Return (Arg3)
            }

            Return (Arg3)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS0)
            CreateDWordField (Arg0, 0x04, CAP0)
            If (LOr (LEqual (STS0, 0x06), LEqual (STS0, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS0, One))
            {
                And (CAP0, 0x0BFF, CAP0)
                Return (Zero)
            }

            Or (And (PDC0, 0x7FFFFFFF), CAP0, PDC0)
            If (And (CFGD, 0x7A))
            {
                If (LAnd (LAnd (And (CFGD, 0x0200), And (PDC0, 0x18
                    )), LNot (And (SDTL, 0x02))))
                {
                    Or (SDTL, 0x02, SDTL)
                    OperationRegion (CST0, SystemMemory, DerefOf (Index (SSDT, 0x07)), DerefOf (Index (SSDT, 0x08
                        )))
                    Load (CST0, HC0)
                }
            }

            Return (Zero)
        }

        Method (DTGP, 5, NotSerialized)
        {
            If (LEqual (Arg0, Buffer (0x10)
                    {
                        /* 0000 */   0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
                        /* 0008 */   0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                    }))
            {
                If (LEqual (Arg1, One))
                {
                    If (LEqual (Arg2, Zero))
                    {
                        Store (Buffer (One)
                            {
                                 0x03
                            }, Arg4)
                        Return (One)
                    }

                    If (LEqual (Arg2, One))
                    {
                        Return (One)
                    }
                }
            }

            Store (Buffer (One)
                {
                     0x00
                }, Arg4)
            Return (Zero)
        }

        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If (OSDW ())
            {
                Store ("Writing plugin-type to registry!", Debug)
                Store (Package (0x02)
                    {
                        "plugin-type", 
                        One
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }

            Return (Zero)
        }
    }

    Scope (\_PR.CPU1)
    {
        Name (HI1, Zero)
        Name (HC1, Zero)
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS1)
            CreateDWordField (Arg0, 0x04, CAP1)
            If (LOr (LEqual (STS1, 0x06), LEqual (STS1, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS1, One))
            {
                And (CAP1, 0x0BFF, CAP1)
                Return (Zero)
            }

            Or (And (PDC1, 0x7FFFFFFF), CAP1, PDC1)
            If (LEqual (And (PDC1, 0x09), 0x09))
            {
                APPT ()
            }

            If (And (PDC1, 0x18))
            {
                APCT ()
            }

            Store (PDC1, PDC0)
            Return (Zero)
        }

        Method (APCT, 0, NotSerialized)
        {
            If (LAnd (And (CFGD, 0x7A), LNot (And (SDTL, 0x20
                ))))
            {
                Or (SDTL, 0x20, SDTL)
                OperationRegion (CST1, SystemMemory, DerefOf (Index (SSDT, 0x0A)), DerefOf (Index (SSDT, 0x0B
                    )))
                Load (CST1, HC1)
            }
        }

        Method (APPT, 0, NotSerialized)
        {
            If (LAnd (And (CFGD, One), LNot (And (SDTL, 0x10
                ))))
            {
                Or (SDTL, 0x10, SDTL)
                OperationRegion (IST1, SystemMemory, DerefOf (Index (SSDT, 0x04)), DerefOf (Index (SSDT, 0x05
                    )))
                Load (IST1, HI1)
            }
        }
    }

    Scope (\_PR.CPU2)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS2)
            CreateDWordField (Arg0, 0x04, CAP2)
            If (LOr (LEqual (STS2, 0x06), LEqual (STS2, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS2, One))
            {
                And (CAP2, 0x0BFF, CAP2)
                Return (Zero)
            }

            Or (And (PDC2, 0x7FFFFFFF), CAP2, PDC2)
            If (LEqual (And (PDC2, 0x09), 0x09))
            {
                \_PR.CPU1.APPT ()
            }

            If (And (PDC2, 0x18))
            {
                \_PR.CPU1.APCT ()
            }

            Store (PDC2, PDC0)
            Return (Zero)
        }
    }

    Scope (\_PR.CPU3)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS3)
            CreateDWordField (Arg0, 0x04, CAP3)
            If (LOr (LEqual (STS3, 0x06), LEqual (STS3, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS3, One))
            {
                And (CAP3, 0x0BFF, CAP3)
                Return (Zero)
            }

            Or (And (PDC3, 0x7FFFFFFF), CAP3, PDC3)
            If (LEqual (And (PDC3, 0x09), 0x09))
            {
                \_PR.CPU1.APPT ()
            }

            If (And (PDC3, 0x18))
            {
                \_PR.CPU1.APCT ()
            }

            Store (PDC3, PDC0)
            Return (Zero)
        }
    }

    Scope (\_PR.CPU4)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS4)
            CreateDWordField (Arg0, 0x04, CAP4)
            If (LOr (LEqual (STS4, 0x06), LEqual (STS4, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS4, One))
            {
                And (CAP4, 0x0BFF, CAP4)
                Return (Zero)
            }

            Or (And (PDC4, 0x7FFFFFFF), CAP4, PDC4)
            If (LEqual (And (PDC4, 0x09), 0x09))
            {
                \_PR.CPU1.APPT ()
            }

            If (And (PDC4, 0x18))
            {
                \_PR.CPU1.APCT ()
            }

            Store (PDC4, PDC0)
            Return (Zero)
        }
    }

    Scope (\_PR.CPU5)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS5)
            CreateDWordField (Arg0, 0x04, CAP5)
            If (LOr (LEqual (STS5, 0x06), LEqual (STS5, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS5, One))
            {
                And (CAP5, 0x0BFF, CAP5)
                Return (Zero)
            }

            Or (And (PDC5, 0x7FFFFFFF), CAP5, PDC5)
            If (LEqual (And (PDC5, 0x09), 0x09))
            {
                \_PR.CPU1.APPT ()
            }

            If (And (PDC5, 0x18))
            {
                \_PR.CPU1.APCT ()
            }

            Store (PDC5, PDC0)
            Return (Zero)
        }
    }

    Scope (\_PR.CPU6)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS6)
            CreateDWordField (Arg0, 0x04, CAP6)
            If (LOr (LEqual (STS6, 0x06), LEqual (STS6, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS6, One))
            {
                And (CAP6, 0x0BFF, CAP6)
                Return (Zero)
            }

            Or (And (PDC6, 0x7FFFFFFF), CAP6, PDC6)
            If (LEqual (And (PDC6, 0x09), 0x09))
            {
                \_PR.CPU1.APPT ()
            }

            If (And (PDC6, 0x18))
            {
                \_PR.CPU1.APCT ()
            }

            Store (PDC6, PDC0)
            Return (Zero)
        }
    }

    Scope (\_PR.CPU7)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS7)
            CreateDWordField (Arg0, 0x04, CAP7)
            If (LOr (LEqual (STS7, 0x06), LEqual (STS7, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS7, One))
            {
                And (CAP7, 0x0BFF, CAP7)
                Return (Zero)
            }

            Or (And (PDC7, 0x7FFFFFFF), CAP7, PDC7)
            If (LEqual (And (PDC7, 0x09), 0x09))
            {
                \_PR.CPU1.APPT ()
            }

            If (And (PDC7, 0x18))
            {
                \_PR.CPU1.APCT ()
            }

            Store (PDC7, PDC0)
            Return (Zero)
        }
    }
}
 

I simply add DTGP and Plugin _DSM method into the Scope CPU0, and I get FullPowerManagement:

Method (DTGP, 5, NotSerialized)
        {
            If (LEqual (Arg0, Buffer (0x10)
                    {
                        /* 0000 */   0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
                        /* 0008 */   0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                    }))
            {
                If (LEqual (Arg1, One))
                {
                    If (LEqual (Arg2, Zero))
                    {
                        Store (Buffer (One)
                            {
                                 0x03
                            }, Arg4)
                        Return (One)
                    }

                    If (LEqual (Arg2, One))
                    {
                        Return (One)
                    }
                }
            }

            Store (Buffer (One)
                {
                     0x00
                }, Arg4)
            Return (Zero)
        }

        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If (OSDW ())
            {
                Store ("Writing plugin-type to registry!", Debug)
                Store (Package (0x02)
                    {
                        "plugin-type", 
                        One
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }

            Return (Zero)
        } 

This is what I use for everyboard I have!

 

Follow the first post assuming that it's a FredWst screenshots, and extract your CPUPm ssd from ROM, general it's DSL with IASL and inject DTGP and add this plugin _DSM to the Scope CPU0 without OSDW, save it as SSDT-1.aml and it's done.

 

The OzmosisDefaults I posted is yours I just removed unused things!

Edited by ammoune78
Link to comment
Share on other sites

Your SSDT for PowerManagement should be in Efi/Oz/Acpi/Load/ folder with other SSDT for Injecting _DSM or DSDT patched. Or in DSDT file Add a Scope (PR), copy paste there your SSDT.

I don't use this anymore, but instead I use a simple way like Apple did, on everyboard I have and it work, here's an example of my Z97M-DS3H CPUSsdt:

/*
 * Intel ACPI Component Architecture
 * AML Disassembler version 20131218-64 [Jan  8 2014]
 * Copyright (c) 2000 - 2013 Intel Corporation
 * 
 * Disassembly of iASLZQFCAH.aml, Thu Oct 19 15:23:08 2017
 *
 * Original Table Header:
 *     Signature        "SSDT"
 *     Length           0x00000C09 (3081)
 *     Revision         0x01
 *     Checksum         0x08
 *     OEM ID           "CpuRef"
 *     OEM Table ID     "CpuSsdt"
 *     OEM Revision     0x00003000 (12288)
 *     Compiler ID      "INTL"
 *     Compiler Version 0x20131218 (538120728)
 */
DefinitionBlock ("iASLZQFCAH.aml", "SSDT", 1, "CpuRef", "CpuSsdt", 0x00003000)
{

    External (_PR_.CPU0, ProcessorObj)
    External (_PR_.CPU0._PPC, IntObj)
    External (_PR_.CPU1, ProcessorObj)
    External (_PR_.CPU2, ProcessorObj)
    External (_PR_.CPU3, ProcessorObj)
    External (_PR_.CPU4, ProcessorObj)
    External (_PR_.CPU5, ProcessorObj)
    External (_PR_.CPU6, ProcessorObj)
    External (_PR_.CPU7, ProcessorObj)
    External (OSDW, MethodObj)    // 0 Arguments

    Scope (\)
    {
        Name (SSDT, Package (0x0C)
        {
            "CPU0IST ", 
            0xA8C1E598, 
            0x00000539, 
            "APIST   ", 
            0xABBA2618, 
            0x000005AA, 
            "CPU0CST ", 
            0xABBA2C18, 
            0x000003D3, 
            "APCST   ", 
            0xABBA1D98, 
            0x00000119
        })
        Name (\PDC0, 0x80000000)
        Name (\PDC1, 0x80000000)
        Name (\PDC2, 0x80000000)
        Name (\PDC3, 0x80000000)
        Name (\PDC4, 0x80000000)
        Name (\PDC5, 0x80000000)
        Name (\PDC6, 0x80000000)
        Name (\PDC7, 0x80000000)
        Name (\SDTL, Zero)
    }

    Scope (\_PR)
    {
        OperationRegion (PNVS, SystemMemory, 0xABD9FF18, 0x0053)
        Field (PNVS, AnyAcc, Lock, Preserve)
        {
            PGRV,   8, 
            CFGD,   32, 
            Offset (0x06), 
            ACRT,   8, 
            APSV,   8, 
            AAC0,   8, 
            CPID,   32, 
            CPPC,   8, 
            CCTP,   8, 
            CLVL,   8, 
            CBMI,   8, 
            PL10,   16, 
            PL20,   16, 
            PLW0,   8, 
            CTC0,   8, 
            TAR0,   8, 
            PPC0,   8, 
            PL11,   16, 
            PL21,   16, 
            PLW1,   8, 
            CTC1,   8, 
            TAR1,   8, 
            PPC1,   8, 
            PL12,   16, 
            PL22,   16, 
            PLW2,   8, 
            CTC2,   8, 
            TAR2,   8, 
            PPC2,   8, 
            C3MW,   8, 
            C6MW,   8, 
            C7MW,   8, 
            CDMW,   8, 
            C3LT,   16, 
            C6LT,   16, 
            C7LT,   16, 
            CDLT,   16, 
            CDLV,   16, 
            CDPW,   16, 
            MPMF,   8, 
            DTSE,   8, 
            DTS1,   8, 
            DTS2,   8, 
            DTSF,   8, 
            PDTS,   8, 
            PKGA,   8, 
            DTS3,   8, 
            DTS4,   8, 
            BGMA,   64, 
            BGMS,   8, 
            BGIA,   16, 
            BGIL,   16, 
            DSIA,   16, 
            DSIL,   8, 
            DSAE,   8
        }

        OperationRegion (IO_D, SystemIO, \_PR.DSIA, \_PR.DSIL)
        Field (IO_D, ByteAcc, NoLock, Preserve)
        {
            TRPD,   8
        }

        OperationRegion (IO_P, SystemIO, \_PR.BGIA, \_PR.BGIL)
        Field (IO_P, ByteAcc, NoLock, Preserve)
        {
            TRPF,   8
        }
    }

    Scope (\_PR.CPU0)
    {
        Name (HI0, Zero)
        Name (HC0, Zero)
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            If (CondRefOf (\_PR.CPU0._PPC))
            {
                Store (CPPC, \_PR.CPU0._PPC)
            }

            Store (CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (CPDC, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, REVS)
            CreateDWordField (Arg0, 0x04, SIZE)
            Store (SizeOf (Arg0), Local0)
            Store (Subtract (Local0, 0x08), Local1)
            CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP)
            Name (STS0, Buffer (0x04)
            {
                 0x00, 0x00, 0x00, 0x00
            })
            Concatenate (STS0, TEMP, Local2)
            Return (COSC (Buffer (0x10)
                {
                    /* 0000 */   0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47,
                    /* 0008 */   0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
                }, REVS, SIZE, Local2))
        }

        Method (COSC, 4, NotSerialized)
        {
            CreateDWordField (Arg3, Zero, STS0)
            CreateDWordField (Arg3, 0x04, CAP0)
            CreateDWordField (Arg0, Zero, IID0)
            CreateDWordField (Arg0, 0x04, IID1)
            CreateDWordField (Arg0, 0x08, IID2)
            CreateDWordField (Arg0, 0x0C, IID3)
            Name (UID0, Buffer (0x10)
            {
                /* 0000 */   0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47,
                /* 0008 */   0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53
            })
            CreateDWordField (UID0, Zero, EID0)
            CreateDWordField (UID0, 0x04, EID1)
            CreateDWordField (UID0, 0x08, EID2)
            CreateDWordField (UID0, 0x0C, EID3)
            If (LNot (LAnd (LAnd (LEqual (IID0, EID0), LEqual (IID1, EID1)), 
                LAnd (LEqual (IID2, EID2), LEqual (IID3, EID3)))))
            {
                Store (0x06, STS0)
                Return (Arg3)
            }

            If (LNotEqual (Arg1, One))
            {
                Store (0x0A, STS0)
                Return (Arg3)
            }

            Return (Arg3)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS0)
            CreateDWordField (Arg0, 0x04, CAP0)
            If (LOr (LEqual (STS0, 0x06), LEqual (STS0, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS0, One))
            {
                And (CAP0, 0x0BFF, CAP0)
                Return (Zero)
            }

            Or (And (PDC0, 0x7FFFFFFF), CAP0, PDC0)
            If (And (CFGD, 0x7A))
            {
                If (LAnd (LAnd (And (CFGD, 0x0200), And (PDC0, 0x18
                    )), LNot (And (SDTL, 0x02))))
                {
                    Or (SDTL, 0x02, SDTL)
                    OperationRegion (CST0, SystemMemory, DerefOf (Index (SSDT, 0x07)), DerefOf (Index (SSDT, 0x08
                        )))
                    Load (CST0, HC0)
                }
            }

            Return (Zero)
        }

        Method (DTGP, 5, NotSerialized)
        {
            If (LEqual (Arg0, Buffer (0x10)
                    {
                        /* 0000 */   0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
                        /* 0008 */   0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                    }))
            {
                If (LEqual (Arg1, One))
                {
                    If (LEqual (Arg2, Zero))
                    {
                        Store (Buffer (One)
                            {
                                 0x03
                            }, Arg4)
                        Return (One)
                    }

                    If (LEqual (Arg2, One))
                    {
                        Return (One)
                    }
                }
            }

            Store (Buffer (One)
                {
                     0x00
                }, Arg4)
            Return (Zero)
        }

        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If (OSDW ())
            {
                Store ("Writing plugin-type to registry!", Debug)
                Store (Package (0x02)
                    {
                        "plugin-type", 
                        One
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }

            Return (Zero)
        }
    }

    Scope (\_PR.CPU1)
    {
        Name (HI1, Zero)
        Name (HC1, Zero)
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS1)
            CreateDWordField (Arg0, 0x04, CAP1)
            If (LOr (LEqual (STS1, 0x06), LEqual (STS1, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS1, One))
            {
                And (CAP1, 0x0BFF, CAP1)
                Return (Zero)
            }

            Or (And (PDC1, 0x7FFFFFFF), CAP1, PDC1)
            If (LEqual (And (PDC1, 0x09), 0x09))
            {
                APPT ()
            }

            If (And (PDC1, 0x18))
            {
                APCT ()
            }

            Store (PDC1, PDC0)
            Return (Zero)
        }

        Method (APCT, 0, NotSerialized)
        {
            If (LAnd (And (CFGD, 0x7A), LNot (And (SDTL, 0x20
                ))))
            {
                Or (SDTL, 0x20, SDTL)
                OperationRegion (CST1, SystemMemory, DerefOf (Index (SSDT, 0x0A)), DerefOf (Index (SSDT, 0x0B
                    )))
                Load (CST1, HC1)
            }
        }

        Method (APPT, 0, NotSerialized)
        {
            If (LAnd (And (CFGD, One), LNot (And (SDTL, 0x10
                ))))
            {
                Or (SDTL, 0x10, SDTL)
                OperationRegion (IST1, SystemMemory, DerefOf (Index (SSDT, 0x04)), DerefOf (Index (SSDT, 0x05
                    )))
                Load (IST1, HI1)
            }
        }
    }

    Scope (\_PR.CPU2)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS2)
            CreateDWordField (Arg0, 0x04, CAP2)
            If (LOr (LEqual (STS2, 0x06), LEqual (STS2, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS2, One))
            {
                And (CAP2, 0x0BFF, CAP2)
                Return (Zero)
            }

            Or (And (PDC2, 0x7FFFFFFF), CAP2, PDC2)
            If (LEqual (And (PDC2, 0x09), 0x09))
            {
                \_PR.CPU1.APPT ()
            }

            If (And (PDC2, 0x18))
            {
                \_PR.CPU1.APCT ()
            }

            Store (PDC2, PDC0)
            Return (Zero)
        }
    }

    Scope (\_PR.CPU3)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS3)
            CreateDWordField (Arg0, 0x04, CAP3)
            If (LOr (LEqual (STS3, 0x06), LEqual (STS3, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS3, One))
            {
                And (CAP3, 0x0BFF, CAP3)
                Return (Zero)
            }

            Or (And (PDC3, 0x7FFFFFFF), CAP3, PDC3)
            If (LEqual (And (PDC3, 0x09), 0x09))
            {
                \_PR.CPU1.APPT ()
            }

            If (And (PDC3, 0x18))
            {
                \_PR.CPU1.APCT ()
            }

            Store (PDC3, PDC0)
            Return (Zero)
        }
    }

    Scope (\_PR.CPU4)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS4)
            CreateDWordField (Arg0, 0x04, CAP4)
            If (LOr (LEqual (STS4, 0x06), LEqual (STS4, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS4, One))
            {
                And (CAP4, 0x0BFF, CAP4)
                Return (Zero)
            }

            Or (And (PDC4, 0x7FFFFFFF), CAP4, PDC4)
            If (LEqual (And (PDC4, 0x09), 0x09))
            {
                \_PR.CPU1.APPT ()
            }

            If (And (PDC4, 0x18))
            {
                \_PR.CPU1.APCT ()
            }

            Store (PDC4, PDC0)
            Return (Zero)
        }
    }

    Scope (\_PR.CPU5)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS5)
            CreateDWordField (Arg0, 0x04, CAP5)
            If (LOr (LEqual (STS5, 0x06), LEqual (STS5, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS5, One))
            {
                And (CAP5, 0x0BFF, CAP5)
                Return (Zero)
            }

            Or (And (PDC5, 0x7FFFFFFF), CAP5, PDC5)
            If (LEqual (And (PDC5, 0x09), 0x09))
            {
                \_PR.CPU1.APPT ()
            }

            If (And (PDC5, 0x18))
            {
                \_PR.CPU1.APCT ()
            }

            Store (PDC5, PDC0)
            Return (Zero)
        }
    }

    Scope (\_PR.CPU6)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS6)
            CreateDWordField (Arg0, 0x04, CAP6)
            If (LOr (LEqual (STS6, 0x06), LEqual (STS6, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS6, One))
            {
                And (CAP6, 0x0BFF, CAP6)
                Return (Zero)
            }

            Or (And (PDC6, 0x7FFFFFFF), CAP6, PDC6)
            If (LEqual (And (PDC6, 0x09), 0x09))
            {
                \_PR.CPU1.APPT ()
            }

            If (And (PDC6, 0x18))
            {
                \_PR.CPU1.APCT ()
            }

            Store (PDC6, PDC0)
            Return (Zero)
        }
    }

    Scope (\_PR.CPU7)
    {
        Method (_PDC, 1, NotSerialized)  // _PDC: Processor Driver Capabilities
        {
            Store (\_PR.CPU0.CPDC (Arg0), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (_OSC, 4, NotSerialized)  // _OSC: Operating System Capabilities
        {
            Store (\_PR.CPU0.COSC (Arg0, Arg1, Arg2, Arg3), Local0)
            GCAP (Local0)
            Return (Local0)
        }

        Method (GCAP, 1, NotSerialized)
        {
            CreateDWordField (Arg0, Zero, STS7)
            CreateDWordField (Arg0, 0x04, CAP7)
            If (LOr (LEqual (STS7, 0x06), LEqual (STS7, 0x0A)))
            {
                Return (Zero)
            }

            If (And (STS7, One))
            {
                And (CAP7, 0x0BFF, CAP7)
                Return (Zero)
            }

            Or (And (PDC7, 0x7FFFFFFF), CAP7, PDC7)
            If (LEqual (And (PDC7, 0x09), 0x09))
            {
                \_PR.CPU1.APPT ()
            }

            If (And (PDC7, 0x18))
            {
                \_PR.CPU1.APCT ()
            }

            Store (PDC7, PDC0)
            Return (Zero)
        }
    }
}
 

I simply add DTGP and Plugin _DSM method into the Scope CPU0, and I get FullPowerManagement:

Method (DTGP, 5, NotSerialized)
        {
            If (LEqual (Arg0, Buffer (0x10)
                    {
                        /* 0000 */   0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
                        /* 0008 */   0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
                    }))
            {
                If (LEqual (Arg1, One))
                {
                    If (LEqual (Arg2, Zero))
                    {
                        Store (Buffer (One)
                            {
                                 0x03
                            }, Arg4)
                        Return (One)
                    }

                    If (LEqual (Arg2, One))
                    {
                        Return (One)
                    }
                }
            }

            Store (Buffer (One)
                {
                     0x00
                }, Arg4)
            Return (Zero)
        }

        Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
        {
            If (OSDW ())
            {
                Store ("Writing plugin-type to registry!", Debug)
                Store (Package (0x02)
                    {
                        "plugin-type", 
                        One
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }

            Return (Zero)
        } 

This is what I use for everyboard I have!

 

Follow the first post assuming that it's a FredWst screenshots, and extract your CPUPm ssd from ROM, general it's DSL with IASL and inject DTGP and add this plugin _DSM to the Scope CPU0 without OSDW, save it as SSDT-1.aml and it's done.

 

The OzmosisDefaults I posted is yours I just removed unused things!

Thanks, a did the same in the past but there was a problem a couldn't save dsdt because of unrecognized and not existing external devices or hardware names which doesn't exist in dsdt. Can you help me if I send you the dsdt and ssdts which I need? Can you pack it in dsdt for me?

Link to comment
Share on other sites

No, i mean, you can use SSDT for injecting devices with _DSM for each one, or directly do the patch's on the DSDT!

No problem, i'll do it once at home!

 

 

Sent from my iPhone using Tapatalk

Link to comment
Share on other sites

×
×
  • Create New...