Massive overhaul(hopefully helps new users a bti)

This commit is contained in:
Mykola Grymalyuk
2020-05-30 23:54:37 -06:00
parent 1f776dfb8c
commit 0c2d4b492d
60 changed files with 945 additions and 706 deletions

View File

@@ -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
![](/images/Universal/plug-md/processor.png)
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:
![](/images/Universal/plug-md/processor-2.png)
If we then search for instances of `CP00` we find that it's ACPI path is `SB.SCK0.CP00`:
![](/images/Universal/plug-md/cp00.png)
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)
{
...
}
```
![](/images/Universal/plug-md/plug-bios.png)
![](/images/Universal/plug-md/plug-x299.png)
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)