Power Management for Sandy Bridge and Ivy Bridge Laptops

Power Management should be one of the first things implemented when trying to install OS X on a laptop. Because of heat/noise and battery life issues, using NullCPUPowerManagement is not a realistic option on a laptop. This guide will start assuming you are running Multibeast for the first time and wish to implement power management on a laptop with a Sandy Bridge or Ivy Bridge CPU.

Make sure you download and use the latest version of Multibeast. Most laptops have locked CPU MSRs so you need a patched AppleIntelCPUPowerManagement.kext to avoid a KP upon boot. In fact, you just watch for updates to the system that might replace this kext and be sure to replace it with a patched version before rebooting following the update. Some laptops can flash a patched BIOS to avoid this problem, but I do not recommend it. Why risk bricking your laptop with a patched BIOS when a simple software change can accomplish the same thing.

You should be aware of what kind of CPU you have. A Sandy Bridge CPU will be Core iX-2xxx[U|M|QM]. An Ivy Bridge CPU will be a Core iX-3xxx[U|M|QM]. Know what the exact CPU is in your laptop and provide it in your profile. Just saying "I have a laptop with an i5" is not helpful.

First run of Multibeast (make sure you are using the latest version) select the following options:

- UserDSDT or DSDT-Free Installation
- Drivers & Bootloaders -> Drivers -> System -> Patched AppleIntelCPUPowerManagement
(be sure to select the version appropriate for the version of OS X you have installed)
- Customization -> System Definitions -> MacBookPro8,1

Note: If you have a laptop subject to "Local APIC panic" (HP consumer laptops, for example), you should install the KernelPatcher module from Chameleon to /Extra/modules.

That should give you Sandy Bridge CPU power management (without TurboBoost), plus a bootloader and a starter /Extra folder. You can reboot and test booting directly from your HDD at this point.

If you have an Ivy Bridge CPU, you should obtain/create an appropriate System Definition (/Extra/smbios.plist) for your laptop. If your CPU ends in 'U', you should probably use MacBookAir5,2. If your CPU ends in 'M' use the ProBook Installer to create a custom MacBookPro9,1 or MacBookPro9,2. To create a MacBookAir5,2 smbios.plist, use Chameleon Wizard.

Next step is to install a custom SSDT using the ProBook Installer. Download the latest ProBook Installer and select only the SSDT option. Click continue to install it.

Note: Much of the content in the ProBook Installer is specific to the ProBook. But not the SSDT generator. It can be used on any computer with a Sandy/Ivy/Haswell CPU, even desktops.

Note: You must boot with the appropriate smbios.plist (see above) before generating the SSDT.

Now that you have a custom SSDT, you should make a few changes to /Extra/org.chameleon.Boot.plist:

- set GenerateCStates=No
- set GeneratePStates=No
- add DropSSDT=Yes

You can use Chameleon Wizard to edit these options if you're not familiar with XML plists.

After installing the custom SSDT and System Definition, you should reboot and test it. You can test using DPCIManager (1.5) by using the PStates monitor. In addition, for Ivy Bridge CPUs, you should run IORegistryExplorer and verify that X86PlatformPlugin is loading under the CPU0 node.

More information on Ivy Bridge PM is available here: ML: Native Ivy Bridge CPU and GPU Power Management

Here is a quick Ivy/Sandy Bridge Power Management checklist:

- patched AppleIntelCPUPowerManagement installed
- SSDT installed to /Extra/ssdt.aml for your CPU (easiest to use ProBook Installer)
- appropriate System Definition (smbios.plist) for your CPU
- DropSSDT=Yes, GeneratePStates=No, GenerateCStates=No
- no rollbacks of AppleACPIPlatform.kext
- no NullCPUPowerManagement.kext (usually implies patched AppleIntelCPUPowerManagement)
- Processor objects declared in Scope (_SB) in DSDT (pretty rare not to have them in OEM DSDT)

Note: For Sandy Bridge PM, it is possible to run a rollback of AppleACPIPlatform.kext but it is discouraged. Watch out for battery manager packages that include a rolled back AppleACPIPlatform.kext.

Note: Running stock AppleACPIPlatform.kext means any DSDT methods that manipulate EC (EmbeddedControl) registers larger than 8-bits will not work and will cause the method to fail. These methods must be patched. Access to such registers is common in DSDT battery methods. Some patches are provided at my laptop DSDT patch repository at: https://github.com/RehabMan/Laptop-DSDT-Patch

Post a Comment