AMD fTPM BUG导致卡顿的问题
问题描述
TPM(Trusted Platform Module,可信赖平台模块)是用于保证安全启动的硬件模块,现在主流的CPU平台都已经支持TPM,但是实现方式不尽相同。
AMD提供了firmware TPM,也就是这次出问题的fTPM实现,和discrete TPM,两种实现方式。前者不需要外置的TPM芯片,也就是集成在CPU中。这样带来的一个问题是,TPM中记录的秘钥信息等内容需要外置到SPIROM中,通过SPI来通信。而AMD的AM4 CPU,会在通过SPI通信的时候,hang住一小段时间,大概在1s左右,完全无响应。
现象就是在Windows下打游戏的时候或者做任何事情时,一天会有那么几次随机卡住1s,完全动动不了。
解决方案
明白了原理,解决的方案就比较明确了:
更新BIOS
AMD声称在AMD AGESA 1207及更新的BIOS中解决了问题。那么需要查看主板的官网,看主板BIOS是否对应到了AMD AGESA 1207及更新的版本。我的主板是华硕B550-PLUS,BIOS更新网址是 https://www.asus.com/motherboards-components/motherboards/all-series/tuf-gaming-b550-plus/helpdesk_bios/?model2Name=TUF-GAMING-B550-PLUS 。
通过dmidecode
检查BIOS版本发现当前主板更新到了3002的BIOS版本,对应了AGESA的1208版本。
但是根据最近网络上的反馈,似乎并没有完全解决这个问题。
切换为dTPM
dTPM因为是用的主板板载独立TPM芯片,所以不会有CPU进行SPI通信的环节,可以从根源上解决这个问题。
需要在BIOS页面中找到 AMD fTPM configuration ,然后切换为Discrete TPM。
这样会导致已经启用TPM的操作系统无法引导,需要注意先清除操作系统对TPM的依赖,比如关闭Bitlocker。
禁用TPM
如果系统完全不依赖于TPM,那还是关了为好。
我的AMD CPU主机是用来运行PVE做Server的,完全不需要TPM,可以通过BIOS直接关掉。
不过我暂时没有遇到卡住的问题,这台服务器Archimedes已经运行了22天18个小时了,等到下一次拆机维护的时候再修改BIOS配置。