Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
楼主: syscl

[原创内容] 开启完整HWP(SpeedShift)电源管理特性     [复制链接]

Rank: 7Rank: 7Rank: 7

UID
4776985
帖子
2041
PB币
688
贡献
0
技术
0
活跃
1022
发表于 2017-4-7 16:37:09 |显示全部楼层
norman_lu 发表于 2017-4-4 14:45
是的,超频了,用intel power gadget看是正常变频,谢谢了。

大神又冒泡了。。

去年刚弄skylake的时候,你的帖子我是一遍又一遍啊

Rank: 2Rank: 2

UID
4687777
帖子
121
PB币
97
贡献
0
技术
0
活跃
113
发表于 2017-4-7 16:45:45 |显示全部楼层
督查大人真的是干货满满啊,马克一下

Vanilla.

UID
4568967
帖子
13838
PB币
42
贡献
0
技术
94
活跃
2731

十一周年

发表于 2017-4-7 20:31:01 |显示全部楼层
本帖最后由 口袋妖怪heart 于 2017-4-7 20:32 编辑
楼满花 发表于 2017-4-7 11:21
那怎样才能增加更多的P-States数量?

事实上我并不建议这么做,我宁愿要更完整的电源管理。
不过如果真的需要的话,可以考虑删掉 X86PlatfromPlugin 下的配置档案 (/System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/X86PlatformPlugin.kext/Contents/Resources/$boardID.plist),使之空载,这样就可以调用到 XCPM 相关的函数来自动获取 P-States 。或者也可以直接删除掉 plugin-type 属性从而使 X86PlatformPlugin 不载入,效果与前者一致。
但这样,就意味着你已经失去了完整的电源管理。另外,XCPM 的主要设计目的也并非更多的 P-States 。
头像被屏蔽

Rank: 2Rank: 2

UID
1536136
帖子
350
PB币
0
贡献
0
技术
1
活跃
270
发表于 2017-4-7 20:39:42 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 2Rank: 2

UID
911491
帖子
135
PB币
67
贡献
0
技术
1
活跃
214
发表于 2017-4-8 10:01:26 |显示全部楼层
口袋妖怪heart 发表于 2017-4-7 20:31
事实上我并不建议这么做,我宁愿要更完整的电源管理。
不过如果真的需要的话,可以考虑删掉 X86Platfrom ...

我是想在加载完整电源管理的基础上能多几个变频档位,看来鱼与熊掌不可兼得

Rank: 5Rank: 5Rank: 5

UID
4705561
帖子
1083
PB币
471
贡献
0
技术
10
活跃
510
发表于 2017-4-8 10:40:18 |显示全部楼层
学习了,谢谢分享
头像被屏蔽

UID
1851487
帖子
2508
PB币
0
贡献
0
技术
66
活跃
1952

7周年庆典勋章

发表于 2017-4-8 15:54:40 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 1

UID
3848212
帖子
112
PB币
1
贡献
0
技术
0
活跃
132
发表于 2017-4-8 19:05:09 |显示全部楼层
试试看能不能成功

Vanilla.

UID
4568967
帖子
13838
PB币
42
贡献
0
技术
94
活跃
2731

十一周年

发表于 2017-4-8 19:31:58 |显示全部楼层
楼满花 发表于 2017-4-8 10:01
我是想在加载完整电源管理的基础上能多几个变频档位,看来鱼与熊掌不可兼得

这样的话,我猜可能整个 FrequencyVectors 都要重写。另外,究竟是什么原因一定要更多的 变频档位 ?

Rank: 5Rank: 5Rank: 5

UID
4806575
帖子
547
PB币
209
贡献
0
技术
1
活跃
900
发表于 2017-4-8 20:19:24 |显示全部楼层
感觉我们后面的就是站在巨人的肩膀上。

Rank: 2Rank: 2

UID
911491
帖子
135
PB币
67
贡献
0
技术
1
活跃
214
发表于 2017-4-8 21:24:19 |显示全部楼层
口袋妖怪heart 发表于 2017-4-8 19:31
这样的话,我猜可能整个 FrequencyVectors 都要重写。另外,究竟是什么原因一定要更多的 变频档位 ?

大神,把系统升级到10.12.4,补丁都失效了,用你的脚本检查又显示hwp开启是怎么回事
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Vanilla.

UID
4568967
帖子
13838
PB币
42
贡献
0
技术
94
活跃
2731

十一周年

发表于 2017-4-8 22:39:22 |显示全部楼层
楼满花 发表于 2017-4-8 21:24
大神,把系统升级到10.12.4,补丁都失效了,用你的脚本检查又显示hwp开启是怎么回事

whoops... 错误了,我猜你不应该把这个脚本放在包含英文以外的路径下。(比如中文)

Rank: 2Rank: 2

UID
911491
帖子
135
PB币
67
贡献
0
技术
1
活跃
214
发表于 2017-4-9 01:19:47 |显示全部楼层
口袋妖怪heart 发表于 2017-4-8 22:39
whoops... 错误了,我猜你不应该把这个脚本放在包含英文以外的路径下。(比如中文)

这个脚本只是检测hwp有没开启吧,事实上在10.12.4下安装你这个kext后 x17platformplugin.kext X86PlatformPlugin.kext X86PlatformShim.kext都不能加载

Vanilla.

UID
4568967
帖子
13838
PB币
42
贡献
0
技术
94
活跃
2731

十一周年

发表于 2017-4-9 06:59:25 |显示全部楼层
楼满花 发表于 2017-4-9 01:19
这个脚本只是检测hwp有没开启吧,事实上在10.12.4下安装你这个kext后 x17platformplugin.kext X86Platfor ...

这看起来有点怪。
试试这个呢?(需事先删除现在的 X17PlatformPlugin.kext)



需配合 iMac17,1 (board-id Mac-DB15BD556843C820) 使用,对于其他型号,自行修改。

附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 5Rank: 5Rank: 5

UID
3200955
帖子
1143
PB币
2108
贡献
0
技术
0
活跃
866
发表于 2017-4-9 07:45:32 |显示全部楼层
操作后,变频只有1档或者2档,换回来了.

Rank: 5Rank: 5Rank: 5

UID
14853
帖子
673
PB币
1818
贡献
0
技术
68
活跃
187
发表于 2017-4-9 10:19:18 |显示全部楼层
口袋妖怪heart 发表于 2017-4-9 06:59
这看起来有点怪。
试试这个呢?(需事先删除现在的 X17PlatformPlugin.kext)

反馈一下。smbios设为Mac Pro 6,1  同时,使用x17pp替换为macbookpro 13,1的plist。

clover不需要做任何额外设置(即hwpenable不需要选“开启”),HWP就自动开启,x86正常加载,有8个变频档。

Vanilla.

UID
4568967
帖子
13838
PB币
42
贡献
0
技术
94
活跃
2731

十一周年

发表于 2017-4-9 10:57:29 |显示全部楼层
本帖最后由 口袋妖怪heart 于 2017-4-9 11:49 编辑
minfox 发表于 2017-4-9 10:19
反馈一下。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 时所做的事情:
  1. #define MSR_IA32_PM_ENABLE 0x770

  2. AsmWriteMsr64 (MSR_IA32_PM_ENABLE, 1);  // 执行对 MSR 0x770 写入, 即开启 HWP

  3. /* 至于 AsmWriteMsr64 这个函数, 我没有多看, 不过原理应该很明确, 就是执行 wrmsr (0F 32) 。 */
复制代码

Update 1: 以下是从逆向分析内核获取的相关资讯。
  1. _xcpm_hwp_enable:
  2. ffffff800041c8d0        pushq        %rbp
  3. ffffff800041c8d1        movq        %rsp, %rbp
  4. ffffff800041c8d4        movl        $0x1aa, %ecx        
  5. ffffff800041c8d9        rdmsr                        ; 读取 MSR_MISC_PWR_MGMT (0x1AA)
  6. ffffff800041c8db        movl        %edx, %edx
  7. ffffff800041c8dd        movl        %eax, %eax
  8. ffffff800041c8df        orq        $0x40, %rax
  9. ffffff800041c8e3        movl        $0x1aa, %ecx
  10. ffffff800041c8e8        wrmsr                        ; 写入 MSR_MISC_PWR_MGMT (0x1AA)
  11. ffffff800041c8ea        movl        $0x770, %ecx
  12. ffffff800041c8ef        movl        $0x1, %eax
  13. ffffff800041c8f4        xorl        %edx, %edx
  14. ffffff800041c8f6        wrmsr                        ; 写入 MSR_IA32_PM_ENABLE (0x770) (即开启 HWP)
  15. ffffff800041c8f8        popq        %rbp
  16. ffffff800041c8f9        retq
  17. ffffff800041c8fa        nopw        (%rax,%rax)
复制代码


所以其实 FrequencyVectors/kernel (需正确设定) 已经为我们做了同样的事,因而 HWPEnable 可能不是必要的。它更多地被用在无 HWP 支持的机型上我猜。(即 hwp = 0x0 || hwp = nullstr ,没有合适的 FrequencyVectors 传递 hwp = 1 的话,_xcpm_hwp_enable 就不会被调用,因而需要 Clover 帮忙写入 MSR 0x770 以开启 HWP 。

Rank: 2Rank: 2

UID
4812038
帖子
54
PB币
108
贡献
0
技术
0
活跃
42
发表于 2017-4-10 21:27:56 |显示全部楼层
请问你用来编辑plist的是什么工具?

Rank: 2Rank: 2

UID
1194600
帖子
287
PB币
188
贡献
0
技术
0
活跃
194
发表于 2017-4-11 13:12:17 |显示全部楼层
口袋妖怪heart 发表于 2017-4-2 21:29
X86 正常载入。
X17PlatformPlugin.kext 的作用是取代 X86PlatformPlugin.kext。

hi heart & syscl方便时可否帮忙看一下
我的机器是台式机i7 6700T
SMBios 用的是 Mac-B809C3757DA9BB8D iMac17,1 (vanilla mac是6700k 默认4.0可睿频到4.2,我的6700T默认2.8可睿频至3.6,架构完全一样)
目前,即便不做任何修改,仅有13档的变频(最低800,最高3600)。依照教程试了两次,最后都是无法开机,死在smbios那里,只能重新装系统才能开机,应该是syscl说的机型截断的画面是一样的。

所以有几个问题想请教,为节省你们的时间,我尽量写成是非问题,或给出最简单的选项:

1、我是否,应该把syscl示例的X86PlatformPluginInjector,中Mac-66E35819EE2D0D05机型plist替换成我使用的原装smbios?即Mac-B809C3757DA9BB8D,并修改Mac-B809C3757DA9BB8D文件中的相应频率参数?


2、因为Mac-B809C3757DA9BB8D机型频率参数最高为4.2Ghz,而我的U是3.6Ghz
     A.我是否需要删除或替换4200为我的6700T的最高频3600?
     B.只是在相应位置添加3600即可?

3、对于台式机U
      A.是否应该先尝试安装完X86PlatformPluginInjector,重启检查是否载入,如未载入,则替换X17PlatformPlugin.kext?
      B.直接使用X17PlatformPlugin.kext


4、是否,使用X17PlatformPlugin.kext 里面的机型plist也需要修改为自己使用机型的,即替换为Mac-B809C3757DA9BB8D,且改法与syscl的教程一致?

Rank: 2Rank: 2

UID
4806624
帖子
342
PB币
254
贡献
0
技术
0
活跃
487
发表于 2017-4-11 14:37:10 |显示全部楼层
试试看。。还好
回顶部
Copyright (C) 2005-2019 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件