- 积分
- 10673
- 最后登录
- 2024-6-1
- 精华
- 0
- 阅读权限
- 220
- 主题
- 596
- UID
- 4568967
- 帖子
- 14232
- PB币
- 2272
- 威望
- 830
- 贡献
- 0
- 技术
- 94
- 活跃
- 3075
- UID
- 4568967
- 帖子
- 14232
- PB币
- 2272
- 贡献
- 0
- 技术
- 94
- 活跃
- 3075
|
本帖最后由 口袋妖怪heart 于 2017-4-9 11:49 编辑
minfox 发表于 2017-4-9 10:19 ![](https://www.pcbeta.com/static/image/common/back.gif)
反馈一下。smbios设为Mac Pro 6,1 同时,使用x17pp替换为macbookpro 13,1的plist。
clover不需要做任 ...
理论上来说 HWPEnable 应该已经不再需要。
HWPEnable 的作用是对 MSR 0x770 进行写入。但 MBP13,1 的 FrequencyVectors 已经包含了 hwp = 0x1; // wrmsr (0x770) 也就是和 HWPEnable 做同样的事情。
我看了一下 Clover r3879 的更新日志,HWPEnable 这个 boolean 在被赋值为 true 时所做的事情:
- #define MSR_IA32_PM_ENABLE 0x770
- AsmWriteMsr64 (MSR_IA32_PM_ENABLE, 1); // 执行对 MSR 0x770 写入, 即开启 HWP
- /* 至于 AsmWriteMsr64 这个函数, 我没有多看, 不过原理应该很明确, 就是执行 wrmsr (0F 32) 。 */
复制代码
Update 1: 以下是从逆向分析内核获取的相关资讯。- _xcpm_hwp_enable:
- ffffff800041c8d0 pushq %rbp
- ffffff800041c8d1 movq %rsp, %rbp
- ffffff800041c8d4 movl $0x1aa, %ecx
- ffffff800041c8d9 rdmsr ; 读取 MSR_MISC_PWR_MGMT (0x1AA)
- ffffff800041c8db movl %edx, %edx
- ffffff800041c8dd movl %eax, %eax
- ffffff800041c8df orq $0x40, %rax
- ffffff800041c8e3 movl $0x1aa, %ecx
- ffffff800041c8e8 wrmsr ; 写入 MSR_MISC_PWR_MGMT (0x1AA)
- ffffff800041c8ea movl $0x770, %ecx
- ffffff800041c8ef movl $0x1, %eax
- ffffff800041c8f4 xorl %edx, %edx
- ffffff800041c8f6 wrmsr ; 写入 MSR_IA32_PM_ENABLE (0x770) (即开启 HWP)
- ffffff800041c8f8 popq %rbp
- ffffff800041c8f9 retq
- ffffff800041c8fa nopw (%rax,%rax)
复制代码
所以其实 FrequencyVectors/kernel (需正确设定) 已经为我们做了同样的事,因而 HWPEnable 可能不是必要的。它更多地被用在无 HWP 支持的机型上我猜。(即 hwp = 0x0 || hwp = nullstr ,没有合适的 FrequencyVectors 传递 hwp = 1 的话,_xcpm_hwp_enable 就不会被调用,因而需要 Clover 帮忙写入 MSR 0x770 以开启 HWP 。
|
|