Jump to content
xpamamadeus

Ozmosis

6,205 posts in this topic

Recommended Posts

Any ideas? Who could help my with that

 

Sent from my Nexus 4 using Tapatalk

Share this post


Link to post
Share on other sites
Advertisement

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.

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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.

Share this post


Link to post
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)

Share this post


Link to post
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..

Share this post


Link to post
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!

Share this post


Link to post
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"

Share this post


Link to post
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>

 

Share this post


Link to post
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>

Share this post


Link to post
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?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
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.

Share this post


Link to post
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.

Share this post


Link to post
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

Share this post


Link to post
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?

Share this post


Link to post
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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By dgsga
      Can I propose a new subforum be created for the new OpenCorePkg OpenCore front end being created by vit9696 and others, it is a fantastic piece of work:
      https://github.com/acidanthera/OpenCorePkg
      Even at version 0.1 it runs my Mojave 10.14.4 setup very nearly flawlessly. It consists of a 10KB bootstrap BootX64.efi and a 200KB OpenCore.efi OS loader. All configuration is done using a very well documented config.plist 
       
       
    • By cvad
      View File Bootdisk Utility
      Make bootable USB Flash Disk for MAC OS X with Latest Clover bootloader revision fast and easy by one click! under OS Windows.
      Special utility from cvad & russian MAC community for new hackintosh users.
       
      Enjoy...
       
      For more information and complete instructions please see this topic.
       
       
       
       
      Feel free to "Rate File"
      Submitter cvad Submitted 04/28/2013 Category Bootloaders  
    • By ErmaC
      Slice is glad to present a new EFI bootloader.

      CLOVER
      Now version 2 rEFIt based.


      It is open source based on different projects: Chameleon, rEFIt, XNU, VirtualBox. The main is EDK2 latest revision.
      I also want to thank all who help Slice with the development. Credits and copyrights remain in the sources.
      https://sourceforge.net/projects/cloverefiboot/?source=directory
      There is a WIKI 
      http://clover-wiki.zetam.org/
      Main features:


      If you have a question please provide outputs from DarwinDumper (formed from Trauma tool). Thanks Trauma!
      Continued by blackosx and STLVNUB.
      Post#2 CloverGrower - create Clover by yourself Post#3 Downloads Post#4 Installation of the bootloader Post#5 How to do UEFI boot Post#6 How to use - common words Post#7 Calculator for Automatic DSDT fix Post#8 Instructions for GraphicsInjector Post#9 ATIConnector patching Post#10 Any kexts patching with some Samples Post#11 CustomEDID Post#12 Hiding unnecessary menu entries Post#13 Instruction for DSDT corrections to do DeviceInjection works Post#14 Development Post#15 Themes Post#16 About kexts injection Post#17 Instructions for P- and C-states generator Post#18 Patching DSDT to get Sleep working Post#19 CPU settings and geekbench Post#20 ACPI tables loading Post#21 DSDTmini Post#22 Custom SMBios Post#23 F.A.Q. Post#24 iCloudFix Post#25 Using mouse. Post#26 How to make orange icons to be metallic Post#27 How to make software RAID (by Magnifico) Post#28 How to modify InstallESD.dmg (by shiecldk) Post#29 Config.plist settings Post#30 Using extra kexts and skipping kernelcache Post#31 Choosing EFI drivers Post#32 Configuration files Post#33 Automatic config.plist creating Post#34 Custom DSDT patches Post#35 How to do sleep/wake working with UEFI BOOT Post#36 DeviceID substitution (FakeID) Post#37 Using Custom OS Icons Post#38 Hibernation Post#39 Floating regions Post#41 Property List Editor Post#42 Blocking Bad Kext Post#43 AAPL,slot-name Post#44 FakeCPUID for unsupported CPU Post#45 Multiple Boot Options - to write into UEFI BIOS boot menu Post#46 How to install Windows UEFI Post#47 How to speedup Clover boot Post#48 Info.plist patching Post#49 Arbitrary device injection Post#50 Non-Standard Legacy Boot Files Post#51 Reboot to Windows UEFI from Mac OSX Post#52 Deprecated Features Post#53 Using UDK2018 Post#54 Device Properties Post#55 Scalable themes Post#56 How to search Clover mistakes (bisection) -----------------
       
      Slice:
      I edited all posts in the thread to correspond to actual Clover revision.
      Please install Clover at least 2652 and use new instructions.
    • By Slice
      OK, 4988 released.
      Now, @vector sigma, what have we do to update translations?
×