Contribute
Register

ML: Native Ivy Bridge CPU and GPU Power Management

Status
Not open for further replies.
Trying to enable Ivy bridge CPU Power managment on my build to no avail so far ..

I generate the SSDT with PikerAlpha's script .. i5-3570K no overclock with a sysDef of iMac13,2

@Boot the firmware confirms that it found and injected SSDT.aml
but it still don't see X86PlatformPlugin in IOregistry

Any idea ?
 
Trying to enable Ivy bridge CPU Power managment on my build to no avail so far ..

I generate the SSDT with PikerAlpha's script .. i5-3570K no overclock with a sysDef of iMac13,2

@Boot the firmware confirms that it found and injected SSDT.aml
but it still don't see X86PlatformPlugin in IOregistry

Any idea ?

Download patchmatic: https://bitbucket.org/RehabMan/os-x-maciasl-patchmatic/downloads/RehabMan-patchmatic-2015-0107.zip
Extract the 'patchmatic' binary from the ZIP. Copy it to /usr/bin, such that you have the binary at /usr/bin/patchmatic.

In terminal,
Code:
if [ -d ~/Downloads/RehabMan ]; then rm -R ~/Downloads/RehabMan; fi
mkdir ~/Downloads/RehabMan
cd ~/Downloads/RehabMan
patchmatic -extract

Note: It is easier if you use copy/paste instead of typing the commands manually.

Post contents of Downloads/RehabMan directory (as ZIP).

Also, post ioreg: http://www.tonymacx86.com/audio/58368-guide-how-make-copy-ioreg.html. Please, use the IORegistryExplorer v2.1 attached to the post! DO NOT reply with an ioreg from any other version of IORegistryExplorer.app.
 
Output of PikerAlpha script

v15.6 Copyright (c) 2013-2015 by Pike R. Alpha-----------------------------------------------------------
Bugs > https://github.com/Piker-Alpha/ssdtPRGen.sh/issues <


gDataPath: /Users/ironman/Library/ssdtPRGen/Data
System information: Mac OS X 10.10.4 (14E46)
Brandstring 'Intel(R) Core(TM) i5-3570K CPU @ 3.40GHz'


Scope (_PR_) {220 bytes} with ACPI Processor declarations found in the DSDT (ACPI 1.0 compliant)
Generating ssdt.dsl for a 'iMac13,2' with board-id [Mac-FC02E91DDD3FA6A4]
Ivy Bridge Core i5-3570K processor [0x306A9] setup [0x0601]
With a maximum TDP of 77 Watt, as specified by Intel
Number logical CPU's: 4 (Core Frequency: 3400 MHz)
Number of Turbo States: 4 (3500-3800 MHz)
Number of P-States: 23 (1600-3800 MHz)
Injected C-States for CPU0 (C1,C3,C6)
Injected C-States for CPU1 (C1,C2,C3)
Warning: 'cpu-type' may be set improperly (0x0601 instead of 0x0701)


Intel ACPI Component Architecture
ASL Optimizing Compiler version 20140926-64 [Nov 6 2014]
Copyright (c) 2000 - 2014 Intel Corporation


ASL Input: /Users/ironman/Library/ssdtPRGen/ssdt.dsl - 261 lines, 8336 bytes, 48 keywords
AML Output: /Users/ironman/Library/ssdtPRGen/ssdt.aml - 1795 bytes, 16 named objects, 32 executable opcodes


Compilation complete. 0 Errors, 0 Warnings, 0 Remarks, 0 Optimizations

Patchmatic & IOReg Copy in the zip file


Firmware log shows:
01:542 00:000 Using AcpiGeneratorMask 0x04 00000100 Darwin
01:543 00:000 Remove SSDT r1 0x09AA 0x5F "PmRef " "Cpu0Ist " 0x00003000 "INTL" 0x20051117 - Success
01:543 00:000 Remove SSDT r1 0x0A92 0x06 "PmRef " "CpuPm " 0x00003000 "INTL" 0x20051117 - Success
01:543 00:000 Inject SSDT r1 0x0703 0xB0 "APPLE " "CpuPm " 0x00015600 "INTL" 0x20140926 "SSDT.aml" - Success

Thanks
 

Attachments

  • For_RehabMan.zip
    447 KB · Views: 248
Output of PikerAlpha script



Patchmatic & IOReg Copy in the zip file


Firmware log shows:


Thanks

You'll need to do the appropriate research to determine how Ozmosis deals with SSDTs.

I'm not familiar with it.

According to the bootlog, only SSDT.aml is being injected. SSDT-1.aml has your ssdtPRgen.sh output.

I don't see patchmatic output (no RehabMan directory).
 
The whole zip file is the Rehabman directory into which I copied output from IOReg..

SSDT.aml genrated from the script was copied where Ozmosis needs it ... I do not know if there is anything to do with the other files generated by the script .. I've looked at the script and if this be Clover would only copy SSDT.aml to the /Extra folder
 
The whole zip file is the Rehabman directory into which I copied output from IOReg..

SSDT.aml genrated from the script was copied where Ozmosis needs it ... I do not know if there is anything to do with the other files generated by the script .. I've looked at the script and if this be Clover would only copy SSDT.aml to the /Extra folder

The script content is in SSDT-1.aml. According to your bootlog, Ozmosis is not loading it. I don't know if you have an additional SSDT that is SSDT.aml (maybe an OEM SSDT?)?

That's between you and Ozmosis. I have no experience iwth Ozmosis and plans to look into it.

Your DSDT also has a bunch of stuff that duplicates SSDT-1.aml content.

Code:
     Scope (_PR)
    {
        Scope (CPU0)
        {
            Method (APSN, 0, NotSerialized)
            {
                Return (0x04)
            }

            Method (APLF, 0, NotSerialized)
            {
                Return (0x04)
            }

            Method (APSS, 0, NotSerialized)
            {
                Return (Package (0x23)
                {
                    Package (0x06)
                    {
                        0x1068, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x2A00, 
                        0x2A00
                    }, 

                    Package (0x06)
                    {
                        0x1004, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x2900, 
                        0x2900
                    }, 

                    Package (0x06)
                    {
                        0x0FA0, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x2800, 
                        0x2800
                    }, 

                    Package (0x06)
                    {
                        0x0F3C, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x2700, 
                        0x2700
                    }, 

                    Package (0x06)
                    {
                        0x0ED8, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x2600, 
                        0x2600
                    }, 

                    Package (0x06)
                    {
                        0x0E74, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x2500, 
                        0x2500
                    }, 

                    Package (0x06)
                    {
                        0x0E10, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x2400, 
                        0x2400
                    }, 

                    Package (0x06)
                    {
                        0x0DAC, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x2300, 
                        0x2300
                    }, 

                    Package (0x06)
                    {
                        0x0D48, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x2200, 
                        0x2200
                    }, 

                    Package (0x06)
                    {
                        0x0CE4, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x2100, 
                        0x2100
                    }, 

                    Package (0x06)
                    {
                        0x0C80, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x2000, 
                        0x2000
                    }, 

                    Package (0x06)
                    {
                        0x0C1C, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1F00, 
                        0x1F00
                    }, 

                    Package (0x06)
                    {
                        0x0BB8, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1E00, 
                        0x1E00
                    }, 

                    Package (0x06)
                    {
                        0x0B54, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1D00, 
                        0x1D00
                    }, 

                    Package (0x06)
                    {
                        0x0AF0, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1C00, 
                        0x1C00
                    }, 

                    Package (0x06)
                    {
                        0x0A8C, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1B00, 
                        0x1B00
                    }, 

                    Package (0x06)
                    {
                        0x0A28, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1A00, 
                        0x1A00
                    }, 

                    Package (0x06)
                    {
                        0x09C4, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1900, 
                        0x1900
                    }, 

                    Package (0x06)
                    {
                        0x0960, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1800, 
                        0x1800
                    }, 

                    Package (0x06)
                    {
                        0x08FC, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1700, 
                        0x1700
                    }, 

                    Package (0x06)
                    {
                        0x0898, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1600, 
                        0x1600
                    }, 

                    Package (0x06)
                    {
                        0x0834, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1500, 
                        0x1500
                    }, 

                    Package (0x06)
                    {
                        0x07D0, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1400, 
                        0x1400
                    }, 

                    Package (0x06)
                    {
                        0x076C, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1300, 
                        0x1300
                    }, 

                    Package (0x06)
                    {
                        0x0708, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1200, 
                        0x1200
                    }, 

                    Package (0x06)
                    {
                        0x06A4, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1100, 
                        0x1100
                    }, 

                    Package (0x06)
                    {
                        0x0640, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x1000, 
                        0x1000
                    }, 

                    Package (0x06)
                    {
                        0x05DC, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x0F00, 
                        0x0F00
                    }, 

                    Package (0x06)
                    {
                        0x0578, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x0E00, 
                        0x0E00
                    }, 

                    Package (0x06)
                    {
                        0x0514, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x0D00, 
                        0x0D00
                    }, 

                    Package (0x06)
                    {
                        0x04B0, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x0C00, 
                        0x0C00
                    }, 

                    Package (0x06)
                    {
                        0x044C, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x0B00, 
                        0x0B00
                    }, 

                    Package (0x06)
                    {
                        0x03E8, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x0A00, 
                        0x0A00
                    }, 

                    Package (0x06)
                    {
                        0x0384, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x0900, 
                        0x0900
                    }, 

                    Package (0x06)
                    {
                        0x0320, 
                        Zero, 
                        0x0A, 
                        0x0A, 
                        0x0800, 
                        0x0800
                    }
                })
            }

            Method (ACST, 0, NotSerialized)
            {
                Return (Package (0x06)
                {
                    One, 
                    0x04, 
                    Package (0x04)
                    {
                        ResourceTemplate ()
                        {
                            Register (FFixedHW, 
                                0x01,               // Bit Width
                                0x02,               // Bit Offset
                                0x0000000000000000, // Address
                                0x01,               // Access Size
                                )
                        }, 

                        One, 
                        0x03, 
                        0x03E8
                    }, 

                    Package (0x04)
                    {
                        ResourceTemplate ()
                        {
                            Register (FFixedHW, 
                                0x01,               // Bit Width
                                0x02,               // Bit Offset
                                0x0000000000000010, // Address
                                0x03,               // Access Size
                                )
                        }, 

                        0x03, 
                        0xCD, 
                        0x01F4
                    }, 

                    Package (0x04)
                    {
                        ResourceTemplate ()
                        {
                            Register (FFixedHW, 
                                0x01,               // Bit Width
                                0x02,               // Bit Offset
                                0x0000000000000020, // Address
                                0x03,               // Access Size
                                )
                        }, 

                        0x06, 
                        0xF5, 
                        0x015E
                    }, 

                    Package (0x04)
                    {
                        ResourceTemplate ()
                        {
                            Register (FFixedHW, 
                                0x01,               // Bit Width
                                0x02,               // Bit Offset
                                0x0000000000000030, // Address
                                0x03,               // Access Size
                                )
                        }, 

                        0x07, 
                        0xF5, 
                        0xC8
                    }
                })
            }
        }

        Scope (CPU1)
        {
            Method (APSS, 0, NotSerialized)
            {
                Return (^^CPU0.APSS ())
            }

            Method (ACST, 0, NotSerialized)
            {
                Return (^^CPU0.ACST ())
            }
        }

        Scope (CPU2)
        {
            Method (APSS, 0, NotSerialized)
            {
                Return (^^CPU0.APSS ())
            }

            Method (ACST, 0, NotSerialized)
            {
                Return (^^CPU0.ACST ())
            }
        }

        Scope (CPU3)
        {
            Method (APSS, 0, NotSerialized)
            {
                Return (^^CPU0.APSS ())
            }

            Method (ACST, 0, NotSerialized)
            {
                Return (^^CPU0.ACST ())
            }
        }

        Scope (CPU4)
        {
            Method (APSS, 0, NotSerialized)
            {
                Return (^^CPU0.APSS ())
            }

            Method (ACST, 0, NotSerialized)
            {
                Return (^^CPU0.ACST ())
            }
        }

        Scope (CPU5)
        {
            Method (APSS, 0, NotSerialized)
            {
                Return (^^CPU0.APSS ())
            }

            Method (ACST, 0, NotSerialized)
            {
                Return (^^CPU0.ACST ())
            }
        }

        Scope (CPU6)
        {
            Method (APSS, 0, NotSerialized)
            {
                Return (^^CPU0.APSS ())
            }

            Method (ACST, 0, NotSerialized)
            {
                Return (^^CPU0.ACST ())
            }
        }

        Scope (CPU7)
        {
            Method (APSS, 0, NotSerialized)
            {
                Return (^^CPU0.APSS ())
            }

            Method (ACST, 0, NotSerialized)
            {
                Return (^^CPU0.ACST ())
            }
        }
    }

This poses a problem for the content in SSDT-1.aml as the entire SSDT will likely be ignored by OS X.

A good way to detect that there are serious issues with the ACPI config is to attempt disassembly:
Code:
Speedy-OSX:For_RehabMan RehabMan$ iasl -da -dl *.aml

Intel ACPI Component Architecture
ASL+ Optimizing Compiler version 20150410-64
Copyright (c) 2000 - 2015 Intel Corporation

Reading ACPI table from file   DSDT.aml - Length 00029987 (0x007523)
ACPI: DSDT 0x0000000000000000 007523 (v02 ALASKA A M I    00000012 INTL 20140724)
Acpi table [DSDT] successfully installed and loaded
Reading ACPI table from file   SSDT.aml - Length 00000877 (0x00036D)
...
Reading ACPI table from file SSDT-1.aml - Length 00001795 (0x000703)
...
[B]ACPI Error: [APSN] Namespace lookup failure, AE_ALREADY_EXISTS (20150410/dswload-451)[/B]
ACPI Exception: AE_ALREADY_EXISTS, During name lookup/catalog (20150410/psobject-305)

If you can't disassemble the injected files as a group (iasl -da), then you're likely to have issues with OS X as well.
 
This is becoming interesting ...

I placed a file called SSDT.aml in /Efi/Oz/Acpi/Load. Oz finds it and injects it but when we extract it with patchmatic it comes out as SSDT-1.aml ...

From what i have seen so far , OZ doesn't care what the file is named as long as it end with .aml.

If i would remove my own SSDT, reboot and run patchmatic -extract I guess we would get whatever is provided by the firmware, right ?
 
This is becoming interesting ...

I placed a file called SSDT.aml in /Efi/Oz/Acpi/Load. Oz finds it and injects it but when we extract it with patchmatic it comes out as SSDT-1.aml ...

Your system is obviously loading an OEM SSDT, which becomes SSDT.aml "in front of" SSDT-1.aml.

If i would remove my own SSDT, reboot and run patchmatic -extract I guess we would get whatever is provided by the firmware, right ?

As I already detailed for you, your problem is in the DSDT you or Ozmosis is providing. No possibility to make the generated SSDT work with that DSDT.
 
I am not providing a DSDT so whatever is there comes from the firmware...

I will do some more research/digging (actually research where i can research this some more) on how Oz works ...

Thanks for your time it is very appreciated
 
Status
Not open for further replies.
Back
Top