SpeedStep and TurboBoost witout ACPICA
Posted: Thu Feb 11, 2016 2:37 pm
I've been reading through the Intel and ACPI manuals trying to figure out how to support power management for Intel processors. From what I've gathered, this is done by setting the value of IA32_PERF_CTL with a value that contains the desired frequency and voltage, but the allowed values for this register are model-specific. It seems most systems implement something like ACPICA to read the legal p-state values out of the ACPI _PSS object. Perhaps this is a ridiculous question, but is it possible to get these model-specific p-states without using ACPICA?
I'd rather not implement a full AML parser, so if I could dig though the SSDTs, either searching for the _PSS object, or jumping to a known offset, that would be greatly preferred. Trouble is, I've looked through the contents of the SSDT's using acpidump on Linux and couldn't find anything around what I assume (incorrectly?) is the _PSS object that actually gives voltage or frequency information. On my machine, the only thing that differs between the _PSS sections of the various SSDT tables appears to be an identifier, so even if I did "manually" parse the SSDTs, I'm not sure what useful info I would get.
Alternatively, is there a real-mode BIOS interface that might get me these p-states, bypassing ACPI entirely? Or some other solution?
It seems I must be missing something, but I'm not sure what. Any help would be much appreciated.
I was happy to see HWP (Intel Vol.3B section 14.4), and implemented support for that, but it's still quite new, and I don't currently have any CPUs to test it with, so I'm back to trying to figure out SpeedStep.
I'd rather not implement a full AML parser, so if I could dig though the SSDTs, either searching for the _PSS object, or jumping to a known offset, that would be greatly preferred. Trouble is, I've looked through the contents of the SSDT's using acpidump on Linux and couldn't find anything around what I assume (incorrectly?) is the _PSS object that actually gives voltage or frequency information. On my machine, the only thing that differs between the _PSS sections of the various SSDT tables appears to be an identifier, so even if I did "manually" parse the SSDTs, I'm not sure what useful info I would get.
Alternatively, is there a real-mode BIOS interface that might get me these p-states, bypassing ACPI entirely? Or some other solution?
It seems I must be missing something, but I'm not sure what. Any help would be much appreciated.
I was happy to see HWP (Intel Vol.3B section 14.4), and implemented support for that, but it's still quite new, and I don't currently have any CPUs to test it with, so I'm back to trying to figure out SpeedStep.