补上我这边更详细的资讯:
配置: T420s(4171A18), Mountain Lion 10.8.5(12F45) Legacy BIOS, MBR, Chameleon v2.2svn r2263 启动
发生情况: 使用 Safari 在浏览网页,用 cmd+left click 把连结开在新分页,当要点这个新分页时就发生画面 Freeze
Context: 开机后 20 mins 发生 已开启程式:Opera Developer, FirefoxNightly, iTunnes, 文字编辑, PlistEdit Pro, Safari
Usage case: [AM][ThickPad LCD HD+][~2 hours] -> NP [PM][ThickPad LCD HD+][20 mins] -> Freeze [Night][ThickPad LCD HD+ + VGA external Monitor][3-4 hours] -> NP
诚如 dvx大 所言,这个 Freeze 情况还真没规律,昨天上午开机近两小时都没遇到,下午只用了 20 分钟就出现 = =,晚上改接 VGA 成双荧幕,用了 3-4 小时又没出现;看起来用双荧幕好像不较容易发生 Freeze(打这篇回覆的此时,也是用双屏,没出现问题)
Console Error Message: - 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:15.000 kernel[0]: IOVendorGLContext::ReportGPURestart
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:15.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:16.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0xd = GR: SW Notify Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x1f = Fifo: MMU Error
- 下午4:27:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x20 = PBDMA Error
- 下午4:27:37.000 kernel[0]: NVDA(OpenGL): Channel timeout!
- 下午4:27:37.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x20 = PBDMA Error
- 下午4:27:37.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x20 = PBDMA Error
- 下午4:27:57.000 kernel[0]: NVDA(OpenGL): Channel timeout!
- 下午4:27:57.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x20 = PBDMA Error
- 下午4:28:17.000 kernel[0]: NVDA(OpenGL): Channel timeout!
- 下午4:28:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x20 = PBDMA Error
- 下午4:28:37.000 kernel[0]: NVDA(OpenGL): Channel timeout!
- 下午4:28:57.000 kernel[0]: NVDA(OpenGL): Channel timeout!
- 下午4:28:57.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x20 = PBDMA Error
- 下午4:28:57.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x20 = PBDMA Error
- 下午4:29:17.000 kernel[0]: NVDA(OpenGL): Channel timeout!
- 下午4:29:37.000 kernel[0]: NVDA(OpenGL): Channel timeout!
- 下午4:29:57.000 kernel[0]: NVDA(OpenGL): Channel timeout!
- 下午4:29:57.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x20 = PBDMA Error
- 下午4:30:17.000 kernel[0]: NVDA(OpenGL): Channel timeout!
- 下午4:30:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x20 = PBDMA Error
- 下午4:30:17.000 kernel[0]: NVDA(OpenGL): Channel exception! exception type = 0x20 = PBDMA Error
复制代码
依照 Console 的 Error message 来看是 NVS 4200M 发生 Channel Exception, 造成的原因与解决方案可能要请大家一起研究下,我补充几个自己的发现&观点,看看能不能对这个谜题有所帮助:
1. 单屏时,GPU 的频率基本上都是维持在 270 MHz, 除非是跑什么吃显卡的软体(e.g., OpenGL Extensions Viewer[用来测显卡的 benchmark]),才会升到 737 MHz;但若用双屏,GPU 就一直是 737 MHz(一开机就是),没看过它降到 270 MHz
2. Safari 的 Top Sites 记得还蛮吃 GPU 的,曾经把 ML 装在虚拟机里,开 Safari 时 Top Sites 不是严重 lag,就是几近花屏
3. 目前我的 T420s 并没去搞 AGPM
据此在下简单推测自己的这个 case 出错原因: 单屏下,基本上 NVS 4200M GPU 就是用 270 MHz(自动降频?) 来跑,然而 Safari 作为浏览器,270 MHz 本该可轻松胜任,但开新分页(无论是否为空白分页)时,Safari 都会预跑 Top Sites,但 Top Sites 需 GPU 全速运转才能负荷,但是 GPU 频率切换不及,就发生 Channel Exception、画面 Freeze(可以看成 Top Site 引起的突波让 GPU 措手不及,比喻不当请谅解)
槽点1:那你开 OpenGL Extensions Viewer 怎么没当? 狡辩:OpenGL Extensions Viewer 测试时会从简单的 model 往复杂的依序测试,这期间的压力是稳定增加,足够给 GPU 处理与对应增压
解决方案思维(仅供脑力激荡,没根据的)
1. 调整 AGPM,让它可以对 NVS 4200M 做最佳化,减低发生 GPU 发生 Channel Exception 的机率
1-1. 换回旧版的 AGPM(话说这个情况是 10.8.5 才有的吧?!)
1-2. 比对新旧版 AGPM 间的差异后,再行修改
2. 搞 EDID(这个好像是A卡比较会用到的功夫,自己手边完全没A卡的产品,也不知怎么弄,得研究,只听过一些荧幕显示方面的问题可透过其解决)
大概就这样,楼下开放指正&吐槽, 除此之外,希望能激荡出正解!
|