Linux內(nèi)核補(bǔ)丁AMD旁路轉(zhuǎn)換緩沖(TLB)錯誤 |
發(fā)布時間: 2012/8/11 9:43:40 |
關(guān)于AMD的旁路轉(zhuǎn)換緩沖(TLB)錯誤及其對四核皓龍芯片的影響上周已經(jīng)有了很多報道,據(jù)國外媒體報道,AMD在為64位Red Hat企業(yè)版Linux即Upgrade 4準(zhǔn)備一個內(nèi)核補(bǔ)丁程序。和AMD的BIOS(基本輸入輸出系統(tǒng))修復(fù)和微代碼更新不同,據(jù)悉這些處理過程降低了10-20%的性能,據(jù)說Linux補(bǔ)丁程序?qū)π阅艿膿p耗低于1%。然而,我們也了解到,用戶為了獲得該補(bǔ)丁程序必須簽署一份保密協(xié)議。
情況被證實之后,AMD在x86-64.org郵件列表上公布了該補(bǔ)丁程序的源代碼。然而,這些代碼以現(xiàn)狀為基準(zhǔn),不再進(jìn)行修改,同時再次警告,提示它不完全適用于主流系統(tǒng): 由于此補(bǔ)丁程序具有強(qiáng)大的入侵特性,而且受到影響的用戶數(shù)非常少(如果你的部分系統(tǒng)受到影響,就會了解這一點),我們不推薦在常規(guī)的Linux系統(tǒng)上使 用此補(bǔ)丁程序。此補(bǔ)丁不是為主流用戶而準(zhǔn)備的,也不是用于銷售的Linux產(chǎn)品!此補(bǔ)丁只接受過最小限度的功能性測試。每位用戶在使用前必須對其進(jìn)行評 估,以確保其能符合必要的質(zhì)量標(biāo)準(zhǔn)。 在同一郵件列表上的一篇以前發(fā)表的文章中,AMD的員工Elsie Wahlig也提出警告,該補(bǔ)丁程序"不推薦應(yīng)用于上游產(chǎn)品"。Wahlig提到,該補(bǔ)丁程序是由AMD的操作系統(tǒng)研究中心小組為Linux 2.6.23.8而開發(fā)的,并提供了一份詳細(xì)的錯誤描述: 對錯誤298的描述如下:"處理器操作可能不是原子性的,在二級緩存中改變頁面轉(zhuǎn)換表項目中從0b到1b地址的被訪問過的或臟字節(jié)。在一個細(xì)小的時間間隔 內(nèi),在修改過的復(fù)制數(shù)據(jù)返回二級緩存之前,其他緩存操作可能引起失效的頁面轉(zhuǎn)換表項目被安裝在三級緩存中。另外,如果在該時間間隔期間檢測到該緩存行,處 理器不會對該被訪問過的或臟字節(jié),以及可能發(fā)生錯誤的數(shù)據(jù)進(jìn)行無關(guān)的緩存操作。系統(tǒng)可能會通過一次機(jī)器檢測事件,報告發(fā)生了一次三級緩存協(xié)議錯誤。在這種 情況下,MC4狀態(tài)寄存器(MSR 0000_0410)的內(nèi)容將會是B2000000_000B0C0F或BA000000_000B0C0F。MC4地址寄存器(MSR 0000_0412)的內(nèi)容將會是26h。" Wahlig對Linux補(bǔ)丁程序的工作過程作了描述,該補(bǔ)丁程序也繞過了BIOS工作區(qū)并仿真"被訪問過的和臟字節(jié)",以阻止錯誤數(shù)據(jù)建立文件頭: 內(nèi)核補(bǔ)丁解決方案取決于二級緩存遷出問題的根本原因。只有當(dāng)TLB需要在一個頁表項目中設(shè)置一個A或D位時,問題才暴露。如果TLB永遠(yuǎn)不需要設(shè)置一個A 或D位,錯誤則不會出現(xiàn)。通過使用當(dāng)前的可寫位對A和D位進(jìn)行仿真,補(bǔ)丁程序?qū)⒋_保經(jīng)常對實際的A和D位進(jìn)行預(yù)設(shè)。當(dāng)首次訪問一個未對仿真A位進(jìn)行設(shè)置的 頁面時,并且當(dāng)首次寫訪問一個未對仿真D位進(jìn)行設(shè)置的可寫頁面時,通過對一個錯誤頁面進(jìn)行強(qiáng)制而完成該處理。仿真A和D位存儲在位寄存器中,操作系統(tǒng)通常 可以在頁表項目中取得它。 AMD以比最初預(yù)期更為委婉的說法,停止發(fā)行該補(bǔ)丁程序,但公司并沒有給所有Linux用戶發(fā)放"通行證",用來避免BIOS修復(fù)程序帶來的性能損失。 本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |