C state introduction
先说说Cx State 在BIOS 端是怎么跟CPU 还有ASL code 甚至是SetupMent串在一起的。
首先,一般BIOS 会在SetupMenu 中建立一些Item来控制Cx state的Enable/Disable, 这部分会因为各家BIOS 在SetupMenu
上的做法不同而有所不同,但是你只要知道一个东西,就是一定会有一个地方储存好SetupMenu上选项内的设定值。
接着,在PPM的相关 Reference code那边(一般都是intel的CPU 的PPM reference code)会去参考SetupMenu内的设定值
来配置CPU内部的MSR寄存器,至于他是如何得到SetupMenu的设定值又会因为不同的BIOS而有所不同,像是EFI就可能透过
Policy 来得到,所以要有人把SetupMenu的值放进去Policy内,这样子Reference code 才能参考SetupMenu的选项来配置MSR!
当这边在在配置MSR时,他会一边修改ACPI Table,例如你相关闭C2/C3,大家都知道去ACPI Table 把值改成> 100 或 >1001
就可以了。所以这边的reference code 会参考你的SetupMenu的设定值来决定要不要修改ACPI Table 内那个值返回给os的值 。
其他的部分有牵扯到ASL Code的部分我可能就不明说了,请大家search CFGD这个值,看看他在哪里被放着,然后ASL code
为什么要判断他,追个一遍就清楚了。