今天早上通過 x86/urgent 發送的用於集成到 Linux 6.3 以及向後移植到穩定內核系列的消息禁用了 AMD Zen 1 和 Zen 2 處理器的 XSAVES 指令,以解決去年公開的 AMD 處理器錯誤。
去年 7 月,AMD 發布了關於 XSAVES 指令使用可能無法將 XMM 寄存器保存到提供的狀態保存區域的錯誤 1386。受影響的 Zen 1/Zen 2 處理器可能會發現它們的 XMM 寄存器值有效地回滾到同一進程的先前值。 AMD 正在通過提供最新 AMD CPU 微代碼的系統 BIOS 更新解決老化的 Zen 1 和 Zen 2 處理器的這個問題。
但由於這不會影響 Zen 3 和更新的處理器,因此並非所有系統/主板供應商都推出了具有更新微碼的更正固件,或者沒有以其他方式運行足夠新的固件用於獲取更新的 AMD CPU 微碼二進製文件的 Linux 發行版。因此,最近有一些關於此 %xmm 寄存器值的 Linux 錯誤報告,由於舊微代碼版本上的 AMD Zen 1/Zen 2 系統,偶爾會恢復為早期值。
在 Linux 之前作為今天 x86/urgent pull request 的唯一補丁發送6.3-rc2 是一個補丁,用於禁用 AMD Zen 1 和 Zen 2(系列 17h)處理器的 XSAVES 指令,從而也解決了這個已知的錯誤。一旦補丁在接下來的幾個小時內登陸主線 Linux 6.3 Git,它將開始向後移植到穩定的 Linux 內核系列。
在這些舊的 AMD CPU 上禁用 XSAVES 指令就可以了。該指令用於保存處理器擴展狀態,對於受影響的處理器,它們沒有主管 XSAVE 狀態,因此它可以很好地回退到使用 XSAVEC 指令,這不受此錯誤的影響。
因此,隨著今晚的 Linux 6.3-rc2 版本的發布,這個針對 AMD Erratum 1386 的內核解決方法應該已經到位,然後在未來的日子里為之前的穩定內核版本提供幫助,以便在 2022 年中期之前使用 CPU 微碼的 AMD Zen 1/Zen 2 所有者.
更新:解決方法是合併。