mirror of
https://github.com/AskDavis/Getting-Started-With-ACPI.git
synced 2026-01-01 05:05:57 -08:00
Massive overhaul(hopefully helps new users a bti)
This commit is contained in:
@@ -1,52 +1,19 @@
|
||||
# Fixing Power Management
|
||||
# Fixing Power Management (SSDT-PLUG)
|
||||
|
||||
## Easy Way
|
||||
* [What this SSDT does](#what-this-ssdt-does)
|
||||
* [Methods to make this SSDT](#methods-to-make-this-ssdt)
|
||||
|
||||
With CPU Power Management, it's a simple as taking [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) provided by Acidanthera and compiling it yourself. You can find a prebuilt of the file here: [SSDT-PLUG-DRTNIA.aml](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/compiled/SSDT-PLUG-DRTNIA.aml)
|
||||
## What this SSDT does
|
||||
|
||||
* Note: This file has a bit of extra bloat as it includes checks for all common CPU names, if you wish to clean this up, either remove unused names or follow the guide below.
|
||||
The purpose of SSDT-PLUG is to allow the kernel's XCPM(XNU's CPU Power Management) to manage our CPU's power management. It's pretty self explanatory why you'd want this.
|
||||
|
||||
## Long Way(For those who want to learn)
|
||||
**Note**: SSDT-PLUG is only compatible with Intel's Haswell and newer CPUs, Sandy Bridge and Ivy Bridge will need to follow the [ssdtPRgen method](https://dortania.github.io/OpenCore-Desktop-Guide/post-install/pm.html)(in post-install) while AMD users should not use this(unless attempting to attach AGPM which is outside the scope of Dortania's guides)
|
||||
|
||||
CPU naming is fairly easy to figure out as well, open your decompiled DSDT and search for `Processor`. This should give you a result like this:
|
||||
## Methods to make this SSDT
|
||||
|
||||

|
||||
For SSDT-PLUG, there are 3 methods you can choose from:
|
||||
|
||||
As we can see, the first processor in our list is `PR00`. This is what we'll be applying the `plugin-type=1` property too. Now grab [SSDT-PLUG](https://github.com/dortania/Getting-Started-With-ACPI/blob/master/extra-files/decompiled/SSDT-PLUG.dsl.zip) and replace the default `CPU0` with our `PR00`. There's a couple things to note:
|
||||
|
||||
* There's 2 mentions of CPU0 to change
|
||||
* The `PR` path may need to be changed, in our example we can see that our `PR00` has `SB` in front.
|
||||
|
||||
So in our final example, we'd have `_SB_.PR00` and `\_SB.PR00`
|
||||
|
||||
* **Note**: If you're having issues, see the [SSDT-PLUG](https://github.com/acidanthera/OpenCorePkg/blob/master/Docs/AcpiSamples/SSDT-PLUG.dsl) provided by Acidanthera for example on what other ACPI paths may look like.
|
||||
|
||||
There are also some edge cases with `Processor`, specifically on HEDT series like X79, X99 and X299. This edge case is that the ACPI path is much longer and not so obvious:
|
||||
|
||||

|
||||
|
||||
If we then search for instances of `CP00` we find that it's ACPI path is `SB.SCK0.CP00`:
|
||||
|
||||

|
||||
|
||||
So for this X299 board, we'd change `\_PR.CPU0` with `\_SB.SCK0.CP00` and `External (_PR_.CPU0, ProcessorObj)` with `External (_SB_.SCK0.CP00, ProcessorObj)`
|
||||
|
||||
```text
|
||||
External (_PR_.CPU0, ProcessorObj) <- Rename this
|
||||
|
||||
Scope (\_PR.CPU0) <- Rename this
|
||||
{
|
||||
Method (DTGP, 5, NotSerialized)
|
||||
{
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
For those having issues, you can also check `Device Manager -> CPU -> BIOS device Name`
|
||||
|
||||
**Note**: X299 may report CP10 or higher for the CPU, when this happens use CP00 instead. This issue is due to weird numeration on Windows' side
|
||||
|
||||
## [Now you're ready to compile the SSDT!](/Manual/compile.md)
|
||||
* [Prebuilt](/Universal/plug-methods/prebuilt.md)
|
||||
* [SSDTTime](/Universal/plug-methods/ssdttime.md)
|
||||
* Note this method does not support **servers** or **HEDT systems**
|
||||
* [Manual](/Universal/plug-methods/manual.md)
|
||||
|
||||
Reference in New Issue
Block a user