Troubleshooting PM Sleep Fixes - RevoGirl/RevoBoot GitHub Wiki

Troubleshooting Power Management and Sleep Fixes

1.) Why does it stop at the line: "TSC Deadline Timer supported and enabled"?

This simply means that RevoBoot failed to inject the processor declaration blocks, or that something else isn't working for you.

2.) What are processor declaration blocks?

  • Processor declaration blocks define the logical cores for the OS and are required for ACPI. Here's an example of how they look (in DSL):

Processor (CPU0, 0x01, 0x00000410, 0x06) {}
Processor (CPU1, 0x02, 0x00000410, 0x06) {}
Processor (CPU2, 0x03, 0x00000410, 0x06) {}
Processor (CPU3, 0x04, 0x00000410, 0x06) {}
Processor (CPU4, 0x05, 0x00000410, 0x06) {}
Processor (CPU5, 0x06, 0x00000410, 0x06) {}
Processor (CPU6, 0x07, 0x00000410, 0x06) {}
Processor (CPU7, 0x08, 0x00000410, 0x06) {}

You can check how many you have in: /var/log/kernel.log Here's an example taken from a four core setup, with hyper threading – giving us eight logical cores – from a Intel i7-2600:

AppleACPICPU: ProcessorId=1 LocalApicId=0 Enabled
AppleACPICPU: ProcessorId=2 LocalApicId=2 Enabled
AppleACPICPU: ProcessorId=3 LocalApicId=4 Enabled
AppleACPICPU: ProcessorId=4 LocalApicId=6 Enabled
AppleACPICPU: ProcessorId=5 LocalApicId=1 Enabled
AppleACPICPU: ProcessorId=6 LocalApicId=3 Enabled
AppleACPICPU: ProcessorId=7 LocalApicId=5 Enabled
AppleACPICPU: ProcessorId=8 LocalApicId=7 Enabled

The Intel i5-2500 will output only four lines, but not seeing any of them, or not all of them is a problem.

3.) What do I have to do to get this fixed?

  • Do not use a static/load a patched DSDT with processor declaration blocks in it. Set AUTOMATIC_SSDT_PR_CREATION to 0 to disable the creation and injection of SSDT_PR altogether, or use 1 or 7. Here's a short explanation of the values to be used:

Use 0 to disable the feature.
Use 1 to inject a custom SSDT with auto-generated P-States.
Use 3 to also inject the processor declaration blocks.
Use 7 to also inject device SBUS (required for Power Management).

4.) The factory ACPI table uses P00n instead of the injected CPUn so can I change this?

  • Yes you can. The question is however why you want / need to make this change. Normally there is no need for this as the processor declarations are not part of the DSDT but one of the factory SSDT's that will get dropped by RevoBoot automatically. But when you want to make this change, for whatever reason, then all you have to do is to search for this line in ACPI/ssdt_pr_generator.h

#define _CPU_LABEL_REPLACEMENT 0x43, 0x50, 0x55, 0x30 // CPU0

And change that into this:

#define _CPU_LABEL_REPLACEMENT 0x50, 0x30, 0x30, 0x30 // P000