專利名稱:支持用于預(yù)啟動(dòng)和安全模式操作的安全可讀存儲(chǔ)區(qū)域的制作方法
支持用于預(yù)啟動(dòng)和安全模式操作的安全可讀存儲(chǔ)區(qū)域
背景技術(shù):
隨著計(jì)算機(jī)平臺(tái)日益復(fù)雜,包括基本輸入/輸出系統(tǒng)(BIOS)和BIOS與操作系統(tǒng)(OS)的通信例程的軟件正成為攻擊的目標(biāo)。這些攻擊能將高級(jí)配置與電源接口(ACPI)和統(tǒng)一可擴(kuò)展固件接口(UEFI)運(yùn)行時(shí)服務(wù)定為目標(biāo)。除了這些攻擊,BIOS系統(tǒng)管理模式(SMM)區(qū)域持續(xù)增長(zhǎng),但是BIOS所需的特征和隨后的存儲(chǔ)器占用(memory footprint)持續(xù)增長(zhǎng)。在許多情況下,該占用以比頂級(jí)存儲(chǔ)段(TSEG)-僅在SMM中可見且可訪問(wèn)的保留存儲(chǔ)區(qū)域更快的速度增長(zhǎng)。當(dāng)前保護(hù)存儲(chǔ)器不受攻擊的唯一辦法是保持在SMM中共享存儲(chǔ)器,并且OS執(zhí)行系統(tǒng)管理中斷(SMI)以使得能夠進(jìn)入SMM。BIOS將看見SMI源并在其內(nèi)部受保護(hù)存儲(chǔ)器(被稱為系統(tǒng)管理隨機(jī)存取存儲(chǔ)器(SMRAM)或TSEG)上執(zhí)行一些動(dòng)作。這具有若干體系結(jié)構(gòu)方案。首先,執(zhí)行SM具有開銷。在當(dāng)代平臺(tái)上,OS供應(yīng)商為處理單個(gè)SMI設(shè)置190微秒(μ s)的總時(shí)間預(yù)算。許多BIOS實(shí)施不能滿足該要求。因而,不可能在SMRAM中推送更多的特征和保護(hù)存儲(chǔ)器。第二,不是所有存儲(chǔ)在SMRAM內(nèi)的信息都需要保護(hù)不被讀取。有些臨界區(qū)需要保護(hù)不被讀取和寫入(RW),但是許多信息僅需要保護(hù)不被寫入或免受高速緩存攻擊。因此,當(dāng)前定義的TSEG被不適當(dāng)?shù)亟M織并且在體系結(jié)構(gòu)效率方面不可擴(kuò)展。另一保護(hù)方法是具有只讀、寫保護(hù)系統(tǒng)板閃速存儲(chǔ)器,但是該資源的大小受限,并且僅能通過(guò)重置或經(jīng)由基于SMM的代理保護(hù)進(jìn)行更新。
圖1為根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)地址映射。圖2為根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的框圖。圖3為根據(jù)本發(fā)明的實(shí)施例的方法的流程圖。圖4為根據(jù)本發(fā)明的另一實(shí)施例的方法的流程圖。圖5為根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的框圖。圖6為根據(jù)本發(fā)明的另一實(shí)施例的系統(tǒng)的框圖。
具體實(shí)施例方式實(shí)施例使得系統(tǒng)軟件(更具體地為BIOS)能夠劃分可見主存儲(chǔ)器的一部分并將其標(biāo)記為只讀(R0)。然后保護(hù)該存儲(chǔ)區(qū)域不被寫入或高速緩存,除非通過(guò)體系結(jié)構(gòu)測(cè)量的代理(例如,安全環(huán)境下執(zhí)行的BIOS)。雖然本發(fā)明的范圍并不局限于此,但是處理器的邏輯、存儲(chǔ)控制器和/或芯片組可以用于提供存儲(chǔ)器保護(hù)??捎蒓S執(zhí)行并讀取受保護(hù)的存儲(chǔ)器,而不考慮受保護(hù)的存儲(chǔ)器已經(jīng)被修改。通過(guò)避免SMM開銷或者由RO閃存設(shè)備的基于只讀存儲(chǔ)器(ROM)的執(zhí)行,實(shí)施例能夠保護(hù)各種信息(例如,OS通信路徑的臨界BIOS部件),而不影響平臺(tái)性能。一些實(shí)施例被描述用于BIOS和OS的通信,但是不損失通用性地,可以將其它實(shí)施應(yīng)用于虛擬機(jī)監(jiān)視器(VMM)和虛擬機(jī)或者OS和驅(qū)動(dòng)器的通信。另外,可以將該能力應(yīng)用于保護(hù)其它存儲(chǔ)器映射資源,其中考慮了完整性而未考慮機(jī)密性(即,能夠讀取任意代碼,但是僅有可信代理能夠修改代碼)。應(yīng)該注意的是,雖然在本文中以BIOS環(huán)境描述了特定實(shí)施例,但是除了 BIOS外在系統(tǒng)固件中還可以存在更普遍的實(shí)施。因此,實(shí)施例提供一部分系統(tǒng)存儲(chǔ)器作為只讀存儲(chǔ)器。在過(guò)去傳統(tǒng)的系統(tǒng)中,所謂的PC/AT系統(tǒng)具有位于地址映射的OxCOOOOp-OxFFFFF處的“ROM”,通過(guò)允許這些存儲(chǔ)單元由例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)的系統(tǒng)存儲(chǔ)器支持和使用芯片組內(nèi)或非內(nèi)核內(nèi)的存儲(chǔ)器屬性寄存器(MAR)或可編程屬性映射(PAM)來(lái)保護(hù)這些區(qū)域,PC/AT系統(tǒng)已經(jīng)仿真了芯片組支持。該硬件幫助用于PC/AT舊版本的“運(yùn)行時(shí)BIOS”。隨著SMB10S、ACPI和統(tǒng)一 EFI (UEFI)運(yùn)行時(shí)間的出現(xiàn),會(huì)存在來(lái)自平臺(tái)且享有芯片組/平臺(tái)中硬件資源保護(hù)的多列(swath)存儲(chǔ)內(nèi)容。對(duì)于這些更現(xiàn)代的固件數(shù)據(jù)表和代碼,可將例如原始設(shè)備制造商(OEM)SMM的安全執(zhí)行模式用作這些資源的基準(zhǔn)監(jiān)視器/防護(hù)裝置。因而可以將實(shí)施例用于提供健壯且安全的平臺(tái)體驗(yàn)。另外,對(duì)于沒有SMM或者具有SMM安全性考慮的系統(tǒng),該能力在制造商系統(tǒng)板固件初始運(yùn)行時(shí)在平臺(tái)重置時(shí)是可獲得的,其在運(yùn)行任何第三方內(nèi)容(例如,可選ROM、OS加載程序、OS運(yùn)行時(shí)間)之前被配置且鎖定。這是可應(yīng)用的,因?yàn)閁EFI運(yùn)行時(shí)間、SMB10S、ACPI的起源應(yīng)該是系統(tǒng)板制造商,且在運(yùn)輸給系統(tǒng)前在工廠內(nèi)提供。SMM軟件邏輯的另一實(shí)施例可以是在CPU封裝內(nèi)的集成服務(wù)處理器。例如,芯片上的系統(tǒng)可以具有與主CPU內(nèi)核集成的加密協(xié)同處理器。這種輔助處理單元典型地被稱為“非內(nèi)核”的部分,以將其與主計(jì)算內(nèi)核區(qū)分開來(lái)。該協(xié)同處理器能產(chǎn)生與基于BIOS的SMM相同的流程?,F(xiàn)在參照?qǐng)D1,其示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的包括只讀段區(qū)域(RSEG)的系統(tǒng)地址映射。在不同的實(shí)施例中,RSEG可以是高端存儲(chǔ)器和低端存儲(chǔ)器的多個(gè)區(qū)域。如圖1所示,提供了系統(tǒng)地址映射100。通常,映射100提供系統(tǒng)內(nèi)的所有可用存儲(chǔ)器的地址空間。在各個(gè)實(shí)施例中,系統(tǒng)地址映射可存在于芯片組、存儲(chǔ)控制器、處理器(例如,非內(nèi)核邏輯)中或其它位置處。通常,存儲(chǔ)映射可以包括提供存儲(chǔ)器的軟件視點(diǎn)的地址空間110。從圖1的實(shí)施例可看出,地址空間能被分割為兼容性區(qū)域112、低端存儲(chǔ)區(qū)域114和高端存儲(chǔ)區(qū)域116。在圖1的例子中,兼容性區(qū)域112可以為I兆字節(jié)(MB),低端存儲(chǔ)區(qū)域114擴(kuò)展為4千兆字節(jié)(GB),而高端存儲(chǔ)區(qū)域116擴(kuò)展為16太字節(jié)(TB),但是本發(fā)明的范圍并不局限于此。該地址空間映射到系統(tǒng)內(nèi)的實(shí)際物理存儲(chǔ)器,其可存在于各個(gè)位置處,包括設(shè)備上存在的DRAM和存儲(chǔ)器、存儲(chǔ)器映射的輸入/輸出(麗10)等??煽闯?,兼容性區(qū)域120可以包括磁盤操作系統(tǒng)(DOS)范圍122、視頻圖像適配器(VGA)存儲(chǔ)器124以及PAM區(qū)域126。接下來(lái),低端存儲(chǔ)區(qū)域114可以映射到系統(tǒng)存儲(chǔ)器的一部分,例如,DRAM低端存儲(chǔ)器131。接下來(lái),可以提供根據(jù)本發(fā)明的實(shí)施例的RSEG區(qū)域133。在不同的實(shí)現(xiàn)中,可將該區(qū)域的量配置為大約IMB (用于空間受限系統(tǒng),如芯片上的深入集成系統(tǒng))到128MB (用于大企業(yè)服務(wù)器)之間。在該區(qū)域之上,可存在麗10低端區(qū)域134。然后可存在對(duì)應(yīng)于SMRAM的TSEG區(qū)域135。然后可以存在各種存儲(chǔ)器口徑(aperture),其可以提供到其它存儲(chǔ)單元的指針。這種存儲(chǔ)器口徑可以包括10高級(jí)可編程中斷控制器(APIC) 口徑136、可信平臺(tái)模塊(TPM)口徑137、局部APIC 口徑138以及BIOS 口徑139,其可以指向包括BIOS映像的閃速存儲(chǔ)器。依此,高端存儲(chǔ)區(qū)域116可以映射到存儲(chǔ)區(qū)域140,存儲(chǔ)區(qū)域140包括系統(tǒng)DRAM高端存儲(chǔ)區(qū)域142、高端RSEG區(qū)域144,以及諸如麗IO高端區(qū)域口徑145、保留口徑147和權(quán)限控制及狀態(tài)寄存器(CSR)的各種存儲(chǔ)器口徑。雖然結(jié)合例如圖1的實(shí)施例示出了該特定實(shí)現(xiàn),但是應(yīng)理解本發(fā)明的范圍不局限于此。圖2為根據(jù)本發(fā)明的一個(gè)實(shí)施例的保護(hù)RSEG的實(shí)現(xiàn)的邏輯視圖。現(xiàn)在參照?qǐng)D2,系統(tǒng)200可以包括中央處理單元(CPU)內(nèi)核210,其可經(jīng)過(guò)非內(nèi)核邏輯205和高速緩存邏輯215耦合到高速緩存代理220 (其在一個(gè)實(shí)施例中可以是最后一級(jí)高速緩存(LLC))和存儲(chǔ)控制器230。應(yīng)注意的是,在各種實(shí)現(xiàn)中,所有這些部件可以集成在單個(gè)半導(dǎo)體模具中,例如包括集成存儲(chǔ)控制器的多核處理器。然而,本發(fā)明的范圍并不局限于此。此外還可以看出的,存儲(chǔ)控制器230耦合到系統(tǒng)存儲(chǔ)器240,而系統(tǒng)存儲(chǔ)器240在示出的實(shí)施例中可以為經(jīng)由多個(gè)雙列直插式內(nèi)存模塊(DIMM)實(shí)施的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器。如圖所示,至少某些DRAM可以包括RSEG區(qū)域245a和245b。關(guān)于內(nèi)核210,其能夠執(zhí)行RSEG區(qū)域,但是不能寫該范圍,除非正在執(zhí)行可信代理。在一定條件下,這可以通過(guò)將RSEG區(qū)域指定為可讀/可寫來(lái)實(shí)現(xiàn)。例如,BIOS SMM處理程序可以用于改變RSEG區(qū)域,但是其它實(shí)體不能。關(guān)于系統(tǒng)存儲(chǔ)器240,RSEG區(qū)域245因而能由BIOS配置為系統(tǒng)地址映射的節(jié)點(diǎn)部分劃分的范圍。如圖所示,所述區(qū)域可以通過(guò)物理或虛擬RAM設(shè)備的任意結(jié)合而擴(kuò)展。對(duì)于高速緩存代理220,其可以操作以防止對(duì)RSEG區(qū)域用于非SMM寫入訪問(wèn)的范圍進(jìn)行高速緩存。這樣,可以避免高速緩存攻擊。此外,在其它實(shí)施例中,除了防止對(duì)RSEG區(qū)域用于非SMM寫入操作的高速緩存之外,對(duì)于非SMM讀取可以發(fā)生類似的高速緩存防止。在一個(gè)實(shí)施例中,可以提供以下寄存器。雖然所述寄存器的位置可以變化(并且在某些實(shí)施例中可以存在多個(gè)例示),但在一個(gè)實(shí)例中,寄存器可以作為處理器的非內(nèi)核邏輯205的地址解碼器邏輯204的一部分存在。出于討論的目的,假設(shè)寄存器還可以存在于每個(gè)高速緩存代理中。自然,寄存器可以位于其它位置,例如高速緩存邏輯、芯片組邏輯等。這些寄存器限定了 DRAM中的RSEG的區(qū)域,例如在低端存儲(chǔ)器和高端存儲(chǔ)器中。具體地,這些寄存器包括控制寄存器以限定受保護(hù)區(qū)域的邊界。RSEGHI_BASE高端4G區(qū)域[63:20]中RSEG區(qū)域的開始(例如,IMB遞增,最高有效位(MSB)可以低于63)RSEGHI_LIMIT 高端區(qū)域中RSEG區(qū)域的結(jié)束RSEGL0_BASE低端4G區(qū)域[32:20]中RSEG區(qū)域的開始(IMB遞增)RSEGL0_LIMIT低端區(qū)域中RSEG區(qū)域的結(jié)束RSEG_CTRLSTS包含允許位和狀態(tài)位在各種實(shí)現(xiàn)中,該控制寄存器或者其它這種寄存器還可以包括在運(yùn)行第三方代碼前進(jìn)行設(shè)置的RSEG_L0CK_PERM鎖定位,從而例如上述寄存器的η元組的RSEG保護(hù)設(shè)定不能被隨后的包括SMM的任何代理所改變。應(yīng)該注意的是,如果已經(jīng)設(shè)置了 RSEG_L0CK_0NLY_SMM_ACCESSIBLE鎖定位,則該位可以忽略??梢栽谶\(yùn)行第三方代碼之前設(shè)置RSEG_L0CK_ONLY_SMM_ACCESSIBLE鎖定位,從而例如上述寄存器的η元組的RSEG保護(hù)設(shè)定能夠由除了 SMM之外的隨后任意代理改變。再次,如果已經(jīng)設(shè)置了 RSEG_L0CK_PERM,則該位可以忽略。這些寄存器在鎖定之前對(duì)早期系統(tǒng)板固件代碼是可用的,而在鎖定之后僅對(duì)SMM代碼可用。
在RSEG中待保護(hù)信息的一個(gè)例子是UEFI運(yùn)行時(shí)間服務(wù)。首先,在上電自檢(POST)期間,BIOS將會(huì)正常初始化存儲(chǔ)器。如在Platform Initialization Specification,Volumesl-5 (可從www.uef1.0rg處獲得)中限定的,BIOS實(shí)施例可以包括但不限于安全初始化(SEC)、預(yù)先EFI (PEI)以及執(zhí)行的驅(qū)動(dòng)執(zhí)行環(huán)境(DXE)階段。接下來(lái),BIOS將RSEG配置為存儲(chǔ)器中占據(jù)UEFI運(yùn)行時(shí)間服務(wù)的區(qū)域,并將所述服務(wù)加載到該區(qū)域中。之后,BIOS將鎖定該存儲(chǔ)器范圍,例如,通過(guò)構(gòu)建邊界和控制寄存器。這具有迫使高速緩存代理阻塞/停止對(duì)RSEG區(qū)域的高速緩存的效果。應(yīng)該注意的是,BIOS SMM能隨后執(zhí)行以改變RSEG區(qū)域的大小,例如,通過(guò)更新邊界寄存器。平臺(tái)制造商已經(jīng)規(guī)定了運(yùn)行到該點(diǎn)的所有的BIOS,因而所述BIOS是可信的。在構(gòu)建區(qū)域并設(shè)定適當(dāng)?shù)逆i定之后,BIOS啟動(dòng)操作系統(tǒng)并運(yùn)行其它第三方代碼,例如來(lái)自主總線適配器(HBA)的UEFI或者傳統(tǒng)的PC/AT BIOS選擇ROM。然后,由于UEFI運(yùn)行時(shí)間服務(wù)現(xiàn)在為RO且是不可變的,所以UEFI運(yùn)行時(shí)間服務(wù)的隨后使用被所有的平臺(tái)實(shí)體可信。在正常系統(tǒng)操作期間,當(dāng)發(fā)生RSEG違例時(shí),捕獲請(qǐng)求(例如,通過(guò)高速緩存邏輯)并且設(shè)置RSEG_L0CK_0NLY_SMM_ACCESSIBLE,在RSEG控制寄存器中設(shè)置狀態(tài)位,并且生成SML.當(dāng)執(zhí)行SMM代碼時(shí),清除狀態(tài)位并將用于捕獲請(qǐng)求的完成返回到內(nèi)核,這可以是例如CRAB_AB0RT的主設(shè)備中止的形式(例如,生成錯(cuò)誤數(shù)據(jù)并將其發(fā)送回請(qǐng)求者)。對(duì)于具有RSEG_L0CK_PERM設(shè)置的系統(tǒng),將忽略對(duì)由TSEG覆蓋的區(qū)域的試圖寫入。如果高速緩存邏輯接收非SMM寫入或用于所有權(quán)的非SMM請(qǐng)求(請(qǐng)求高速緩存尋求處于排他(E)狀態(tài)的數(shù)據(jù)),則將捕獲請(qǐng)求并用信號(hào)發(fā)送消息以生成SMI。所述請(qǐng)求將被持有,直到SMM代碼清除RSEG控制寄存器內(nèi)的RSEG狀態(tài)指示器,然后退出SMM,允許高速緩存邏輯生成到內(nèi)核的CRAB_AB0RT。在各個(gè)實(shí)施例中,高速緩存邏輯將允許對(duì)處于共享(S)狀態(tài)(S狀態(tài)防止對(duì)高速緩存進(jìn)行寫入)的高速緩存進(jìn)行非高速緩存讀取和讀取請(qǐng)求。因此,通過(guò)允許僅以S狀態(tài)高速緩存區(qū)域而允許代碼以全速運(yùn)行,但是仍防止寫入。應(yīng)該注意的是,可以允許SMM代碼高速緩存處于E狀態(tài)或修改(M)狀態(tài)的RSEG區(qū)域,但是此后在返回到正常執(zhí)行之前清除高速緩存。還應(yīng)注意的是,如果UMIT=〈BASE,或者如果沒有設(shè)置RSEG_CTRLSTS中的允許位,則上述寄存器沒有效果。為了提供全面保護(hù),可以允許SMM代碼改變這些寄存器的內(nèi)容(利用先前定義的機(jī)制)。為了增強(qiáng)性能,將來(lái)自輸入/輸出(10)設(shè)備的任何請(qǐng)求發(fā)送到高速緩存邏輯,此時(shí)所述邏輯能夠立即CRAB_AB0RT(由于來(lái)自10,所以沒有必要通過(guò)捕獲或用信號(hào)發(fā)送SMI來(lái)停止內(nèi)核)?,F(xiàn)在參考圖3,示出了根據(jù)本發(fā)明的實(shí)施例的方法的流程圖。更具體地,圖3示出了根據(jù)本發(fā)明的實(shí)施例的利用BIOS構(gòu)建RSEG區(qū)域的實(shí)現(xiàn)。如圖所示,方法300可以開始于經(jīng)由BIOS發(fā)生的系統(tǒng)的上電自檢(POST)操作(方框305)。在成功POST之后,BIOS可以配置系統(tǒng)的存儲(chǔ)器(方框310)。然后,控制進(jìn)行到方框320,在此處BIOS可以讀取芯片組容量以確認(rèn)是否將系統(tǒng)配置用于RSEG容量。也就是,可以將芯片組配置為提供包括一個(gè)或多個(gè)RSEG區(qū)域的地址空間(如圖1所示),如寄存器所指示的,例如,存在于指示該特殊配置的配置空間中。因此,根據(jù)本發(fā)明的實(shí)施例,BIOS可以分配和加載設(shè)備驅(qū)動(dòng)器以激活RSEG操作。仍參考圖3,如果在菱形330處確定RSEG不被芯片組所支持,則控制進(jìn)行到方框340處,在其中可以通過(guò)BIOS執(zhí)行進(jìn)一步的系統(tǒng)配置而無(wú)需RSEG支持。否則,控制進(jìn)行到方框350處,在其中BIOS可以配置一個(gè)或多個(gè)RSEG區(qū)域來(lái)保護(hù)相關(guān)數(shù)據(jù)。雖然本發(fā)明的范圍并不受限于此,但是這種受保護(hù)的數(shù)據(jù)可以包括UEFI運(yùn)行時(shí)間數(shù)據(jù)、UEFI運(yùn)行時(shí)間代碼、例如ACPI表的ACPI數(shù)據(jù)、SMBIOS表、批量許可信息(例如OS激活碼)、平臺(tái)標(biāo)識(shí)符和證書(例如,WWW, trustedco即utinRRroup.0rR所描述的,用于支持可信平臺(tái)模塊的系統(tǒng)板的平臺(tái)制造商證書等)。在這種配置之后,所述配置可以包括構(gòu)建各種寄存器,例如如上所述包括基址寄存器、界限寄存器以及控制寄存器,BIOS可以將控制移交給OS啟動(dòng)加載器并依此給OS(方框360)。然后在正常操作期間,BIOS和OS都可以訪問(wèn)RSEG區(qū)域(至少以讀取的方式),以使用其中存儲(chǔ)的數(shù)據(jù)/代碼(方框370)。應(yīng)該注意的是,在系統(tǒng)操作期間,BIOS可以基于期望的操作特性來(lái)重新配置RSEG區(qū)域。為了實(shí)現(xiàn)可以包括RSEG區(qū)域的遷移、擴(kuò)展、調(diào)整大小、覆寫等的這種重新配置,如上關(guān)于控制寄存器鎖定位描述的,BIOS可以在SMM模式下設(shè)置鎖定以能夠更新RSEG區(qū)域。雖然在圖3的實(shí)施例中示出了該特定實(shí)現(xiàn),但是應(yīng)該理解的是,本發(fā)明的范圍并不局限于此?,F(xiàn)在參照?qǐng)D4,示出根據(jù)本發(fā)明的另一實(shí)施例的方法的流程圖。如圖4所示,方法400可用于在系統(tǒng)操作期間處理RSEG區(qū)域的保護(hù)。如圖所示,可以用多種硬件(例如,包括高速緩存邏輯、芯片組邏輯等)實(shí)施方法400,方法400可以在接收用于RSEG區(qū)域的非SMM寫入請(qǐng)求時(shí)開始(方框410)。出于討論的目的,假設(shè)該請(qǐng)求是在與高速緩存(例如最后一級(jí)高速緩存)相關(guān)聯(lián)的邏輯中接收到的。因此,邏輯可以捕獲請(qǐng)求并設(shè)置狀態(tài)指示器,且用信號(hào)發(fā)送SMI (方框420)。例如,狀態(tài)指示器可以是RSEG控制寄存器,以指示非SMM實(shí)體已尋找對(duì)RSEG區(qū)域的寫入訪問(wèn)。應(yīng)注意的是,如此處使用的,術(shù)語(yǔ)“非SMM”意圖指的是系統(tǒng)管理模式之外的所有代碼,包括OS和其它第三方代碼,但是不包括BIOS代碼。仍參考圖4,可以響應(yīng)SMI信號(hào)而進(jìn)入SMM模式(方框430)。例如,可以執(zhí)行給定SMM事件處理程序(handler)。在該處理程序執(zhí)行期間,該處理程序可以讀取RSEG控制寄存器,并且重置RSEG控制寄存器的狀態(tài)指示器。也可以執(zhí)行其它的SMM選項(xiàng),例如但不限于閃存更新、電源管理、芯片組錯(cuò)誤解決方案(work-around)、錯(cuò)誤日志等。然后控制進(jìn)行到方框440,在此退出系統(tǒng)管理模式。因此,控制返回到正常系統(tǒng)操作,其中可以將中止完成返回到請(qǐng)求者(方框450)。例如,高速緩存邏輯可以生成并轉(zhuǎn)發(fā)作為完成消息的一部分的錯(cuò)誤數(shù)據(jù),例如諸如CRAB_abort完成消息的中止完成消息。雖然在圖4的實(shí)施例中示出了該特定實(shí)現(xiàn),但是應(yīng)理解的是,本發(fā)明的范圍并不局限于此。應(yīng)注意的是,即使是不在高速緩存代理中,也可以遵循圖3和圖4的操作。例如,如果存儲(chǔ)控制器(MC)能夠捕獲請(qǐng)求、用信號(hào)發(fā)送SMI以及隨后終止所捕獲的請(qǐng)求,則可以在MC中實(shí)施所述操作。通過(guò)在系統(tǒng)的各種實(shí)體間分派這些責(zé)任,可以實(shí)現(xiàn)其它實(shí)施例。因此,在各個(gè)實(shí)施例中,BIOS和OS能夠創(chuàng)建用于讀取和執(zhí)行操作的主存儲(chǔ)器的RO段。另外,可將RSEG區(qū)域覆寫或調(diào)整大小以用于可靠性-可用性-可服務(wù)性(RAS)操作,例如存儲(chǔ)器容量增加、存儲(chǔ)器移除等??梢杂迷S多不同的系統(tǒng)類型實(shí)現(xiàn)實(shí)施例。一些這種系統(tǒng)可以是基于個(gè)人計(jì)算機(jī)(PO的系統(tǒng),例如臺(tái)式、膝上、筆記本、上網(wǎng)本或各種類型服務(wù)器系統(tǒng)。但是,實(shí)施例可以在其它系統(tǒng)中實(shí)現(xiàn),例如包括所謂智能手機(jī)的蜂窩式電話、個(gè)人數(shù)字助理、移動(dòng)互聯(lián)網(wǎng)設(shè)備,或基于片上系統(tǒng)(SoC)的系統(tǒng)等。現(xiàn)在參考圖5,示出了根據(jù)本發(fā)明的實(shí)施例的系統(tǒng)的框圖。如圖5所示,多處理器系統(tǒng)600是點(diǎn)對(duì)點(diǎn)互連系統(tǒng),包括經(jīng)由點(diǎn)對(duì)點(diǎn)互連650稱合的第一處理器670和第二處理器680。如圖5所示,處理器670和680中的每個(gè)可以是多內(nèi)核處理器,包括第一處理器內(nèi)核和第二處理器內(nèi)核(即,處理器內(nèi)核674a和674b以及處理器內(nèi)核684a和684b),但是在處理器中潛在地可以存在許多更多內(nèi)核。根據(jù)本發(fā)明的實(shí)施例,這些內(nèi)核可以包括邏輯以處理對(duì)系統(tǒng)存儲(chǔ)器的只讀區(qū)域的訪問(wèn)許可。仍參照?qǐng)D5,第一處理器670還包括存儲(chǔ)控制器中心(MCH) 672以及點(diǎn)對(duì)點(diǎn)(P_P)接口 676和678。類似地,第二處理器680包括MCH682以及P-P接口 686和688。如圖5所示,MCH672和682將處理器耦合到各個(gè)存儲(chǔ)器,即存儲(chǔ)器632和存儲(chǔ)器634,其可以是系統(tǒng)存儲(chǔ)器(例如DRAM)本地附加到各個(gè)處理器上的一部分,并且可以包括一個(gè)或多個(gè)只讀區(qū)域,在該只讀區(qū)域中的各種系統(tǒng)數(shù)據(jù)能夠由內(nèi)核、存儲(chǔ)控制器和芯片組690的組合所存儲(chǔ)和保護(hù)。第一處理器670和第二處理器680可以經(jīng)由P-P接口 652和654分別耦合到芯片組690。如圖5所示,芯片組690包括P-P接口 694和698。此外,芯片組690包括接口 692,該接口 692通過(guò)P-P互連639將芯片組690耦合到高性能圖形引擎638。接著,芯片組690可以經(jīng)由接口 696耦合到第一總線616。如圖5所示,各種輸入/輸出(I/O)設(shè)備614連同總線橋618耦合到第一總線616,其中總線橋618率禹合第一總線616和第二總線620。在一個(gè)實(shí)施例中,各種設(shè)備可以稱合到第二總線620,包括例如:鍵盤/鼠標(biāo)622、通信設(shè)備626和諸如包括代碼630的磁盤驅(qū)動(dòng)或其它大容量存儲(chǔ)設(shè)備的數(shù)據(jù)儲(chǔ)存單元628。此外,音頻1/0624可以耦合到第二總線620。如上所述,實(shí)施例可以并入到包括例如蜂窩式電話的移動(dòng)設(shè)備的其它類型的系統(tǒng)中?,F(xiàn)在參照?qǐng)D6,示出了根據(jù)本發(fā)明的另一實(shí)施例的系統(tǒng)的框圖。如圖6所示,系統(tǒng)700可以是移動(dòng)設(shè)備并可以包括各種部件。如圖6的高層視圖所示,應(yīng)用處理器710(可以是設(shè)備的中央處理單元)與包括儲(chǔ)存器715的各種部件進(jìn)行通信。在各個(gè)實(shí)施例中,儲(chǔ)存器715可以包括程序儲(chǔ)存部和數(shù)據(jù)儲(chǔ)存部,并能根據(jù)本發(fā)明的實(shí)施例映射以提供安全儲(chǔ)存。應(yīng)用處理器710還可以耦合到輸入/輸出系統(tǒng)720,在各個(gè)實(shí)施例中,輸入/輸出系統(tǒng)720可以包括顯示器和一個(gè)或多個(gè)輸入設(shè)備(例如當(dāng)執(zhí)行時(shí)自身可以出現(xiàn)在顯示器上的觸摸鍵盤)。應(yīng)用處理器710還可以耦合到基帶處理器730,其約束例如用于輸出的語(yǔ)音和數(shù)據(jù)通信的信號(hào),以及約束呼入電話和其它信號(hào)。如圖所示,基帶處理器730耦合到收發(fā)器740,收發(fā)器740能激活接收和傳送能力。依此地,收發(fā)器740可以與天線750進(jìn)行通信,天線750可以是能夠經(jīng)由一個(gè)或多個(gè)通信協(xié)議傳送和接收語(yǔ)音和數(shù)據(jù)信號(hào)的任意類型的天線,所述通信協(xié)議例如是無(wú)線廣域網(wǎng)(例如,3G或4G網(wǎng)絡(luò))和/或無(wú)線局域網(wǎng)(例如,根據(jù)電氣和電子工程師協(xié)會(huì)802.11標(biāo)準(zhǔn)的BLUETOOTH 或所謂的W1-FI 網(wǎng)絡(luò))。如圖所示,系統(tǒng)700還可以包括具有可充電電池的可充電電源725以使得在移動(dòng)環(huán)境下進(jìn)行操作。雖然以圖6的實(shí)施例示出了該特定實(shí)現(xiàn),但是本發(fā)明的范圍并不局限于此。可以用代碼實(shí)現(xiàn)實(shí)施例并將實(shí)施例存儲(chǔ)在儲(chǔ)存介質(zhì)上,所述儲(chǔ)存介質(zhì)上存儲(chǔ)有能用于對(duì)系統(tǒng)編程序以執(zhí)行指令的指令。儲(chǔ)存介質(zhì)可以包括但不限于任何類型的非瞬態(tài)儲(chǔ)存介質(zhì),例如磁盤,包括軟盤、光盤、固態(tài)驅(qū)動(dòng)(SSD)、光盤只讀存儲(chǔ)器(CD-ROM)、可重寫光盤(CD-Rff)和磁光盤;半導(dǎo)體設(shè)備,例如只讀存儲(chǔ)器(ROM)、諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)的隨機(jī)存取存儲(chǔ)器(RAM)、可擦除可編程只讀存儲(chǔ)器(EPR0M)、閃存、電可擦除可編程只讀存儲(chǔ)器(EEPR0M)、磁卡或光卡,或者適用于存儲(chǔ)電子指令的任意其它類型的介質(zhì)。雖然已經(jīng)結(jié)合有限數(shù)量的實(shí)施例描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員將會(huì)意識(shí)到各種修改和變型。期望的是所附權(quán)利要求覆蓋落入本發(fā)明的真實(shí)精神和范圍內(nèi)的所有這種修改和變型。
權(quán)利要求
1.一種方法,包括: 確定系統(tǒng)的系統(tǒng)地址映射是否包括用于系統(tǒng)存儲(chǔ)器的只讀區(qū)域的支持; 如果包括,則配置所述只讀區(qū)域并在所述只讀區(qū)域內(nèi)存儲(chǔ)受保護(hù)的系統(tǒng)數(shù)據(jù),所述受保護(hù)的系統(tǒng)數(shù)據(jù)的至少一部分在系統(tǒng)管理模式(SMM)和非SMM下可讀取,而僅在SMM下可寫入;以及 在執(zhí)行所述非SMM下代碼期間,訪問(wèn)在所述只讀區(qū)域內(nèi)的所述受保護(hù)的系統(tǒng)數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,還包括在系統(tǒng)操作期間使用基本輸入/輸出系統(tǒng)(BIOS)重新配置所述只讀區(qū)域。
3.根據(jù)權(quán)利要求1所述的方法,還包括將高級(jí)配置與電源接口(ACPI)數(shù)據(jù)作為所述受保護(hù)的系統(tǒng)數(shù)據(jù)的至少一部分存儲(chǔ)在所述只讀區(qū)域中。
4.根據(jù)權(quán)利要求1所述的方法,還包括在執(zhí)行非SMM代碼期間從所述系統(tǒng)的外圍設(shè)備接收對(duì)所述只讀區(qū)域中存儲(chǔ)單元的寫入請(qǐng)求,并且響應(yīng)于所述寫入請(qǐng)求而直接從高速緩存代理向所述外圍設(shè)備發(fā)送包括錯(cuò)誤數(shù)據(jù)的完成消息。
5.根據(jù)權(quán)利要求1所述的方法,還包括在執(zhí)行非SMM代碼期間從所述系統(tǒng)的外圍設(shè)備接收對(duì)所述只讀區(qū)域中存儲(chǔ)單元的寫入請(qǐng)求,并且響應(yīng)于所述寫入請(qǐng)求而用信號(hào)發(fā)送系統(tǒng)管理中斷。
6.根據(jù)權(quán)利要求5所述的方法,還包括進(jìn)入所述SMM并在所述SMM下處理所述寫入請(qǐng)求。
7.根據(jù)權(quán)利要求6所述的方法,還包括向所述外圍設(shè)備返回中止完成,其中所述中止完成包括錯(cuò)誤數(shù)據(jù)。
8.一種系統(tǒng),包括: 執(zhí)行指令的處理器; 耦合到所述處理器的芯片組,所述芯片組包括對(duì)應(yīng)于所述系統(tǒng)的地址空間的系統(tǒng)地址映射,所述系統(tǒng)地址映射將邏輯地址與物理地址相關(guān)聯(lián),其中所述系統(tǒng)地址映射包括邏輯地址到系統(tǒng)存儲(chǔ)器的至少一個(gè)只讀區(qū)域的映射,所述只讀區(qū)域在不可信模式下可讀取,而僅在可信模式下可寫入;以及 耦合到所述處理器的系統(tǒng)存儲(chǔ)器,其中所述系統(tǒng)存儲(chǔ)器包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)0
9.根據(jù)權(quán)利要求8所述的系統(tǒng),還包括耦合到所述系統(tǒng)存儲(chǔ)器的高速緩存代理,其中所述高速緩存代理存儲(chǔ)響應(yīng)于讀取請(qǐng)求來(lái)自所述只讀區(qū)域的信息。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),還包括耦合到所述高速緩存代理的邏輯,以確定是否允許將來(lái)自所述只讀區(qū)域的所述信息存儲(chǔ)到所述高速緩存代理。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述邏輯使得能夠響應(yīng)于所述讀取請(qǐng)求而進(jìn)行到所述高速緩存代理的存儲(chǔ),并且防止響應(yīng)于在所述不可信模式下發(fā)起的寫入請(qǐng)求而將第二信息存儲(chǔ)到所述只讀區(qū)域。
12.根據(jù)權(quán)利要求10所述的系統(tǒng),其中,所述邏輯捕獲在所述不可信模式下發(fā)生的對(duì)所述只讀區(qū)域的寫入請(qǐng)求。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其中,所述邏輯生成系統(tǒng)管理請(qǐng)求,以使得系統(tǒng)管理模式(SMM)處理程序響應(yīng)于所述寫入請(qǐng)求而執(zhí)行。
14.根據(jù)權(quán)利要求13所述的系統(tǒng),其中,所述邏輯將中止完成返回到所述寫入請(qǐng)求的請(qǐng)求者。
15.根據(jù)權(quán)利要求8所述的系統(tǒng),還包括一組寄存器,所述一組寄存器包括第一對(duì)寄存器和控制寄存器,所述第一對(duì)寄存器存儲(chǔ)關(guān)于所述系統(tǒng)存儲(chǔ)器內(nèi)所述只讀區(qū)域的存儲(chǔ)單元的信息,所述控制寄存器存儲(chǔ)識(shí)別是否配置所述只讀區(qū)域的允許指示器和指示未允許的代理試圖訪問(wèn)所述只讀區(qū)域的狀態(tài)指示器。
16.根據(jù)權(quán)利要求15所述的系統(tǒng),其中所述未允許的代理包括尋求對(duì)所述只讀區(qū)域的寫入訪問(wèn)的非系統(tǒng)管理模式(SMM)代碼。
17.—種包括包含指令的機(jī)器可訪問(wèn)儲(chǔ)存介質(zhì)的物品,當(dāng)執(zhí)行所述指令時(shí)使得系統(tǒng)用于: 確定系統(tǒng)存儲(chǔ)器是否包括由系統(tǒng)固件配置的只讀區(qū)域; 如果包括,則在可信模式下存儲(chǔ)由所述系統(tǒng)固件寫入的受保護(hù)的系統(tǒng)數(shù)據(jù);以及 在執(zhí)行不可信模式下代碼期間,訪問(wèn)在所述只讀區(qū)域內(nèi)的所述受保護(hù)的系統(tǒng)數(shù)據(jù)。
18.根據(jù)權(quán)利要求17所述的物品,還包括指令以在執(zhí)行不可信代碼期間從所述系統(tǒng)的外圍設(shè)備接收對(duì)所述只讀區(qū)域中存儲(chǔ)單元的寫入請(qǐng)求,并且響應(yīng)于所述寫入請(qǐng)求而用信號(hào)發(fā)送中斷以使得能夠進(jìn)入所述可信模式。
19.根據(jù)權(quán)利要求18所述的物品,還包括指令以將中止完成返回到所述外圍設(shè)備,其中所述中止完成包括錯(cuò)誤數(shù)據(jù)。
20.根據(jù)權(quán)利要求17所述的物品,還包括指令以在所述不可信模式下將處于共享狀態(tài)的所述受保護(hù)的系統(tǒng)數(shù)據(jù)的至少第一部分高速緩存到所述系統(tǒng)的高速緩存存儲(chǔ)器中,并且在所述可信模式下將處于排 他狀態(tài)的所述受保護(hù)的系統(tǒng)數(shù)據(jù)的至少第二部分高速緩存到所述高速緩存存儲(chǔ)器中。
全文摘要
在一個(gè)實(shí)施例中,本發(fā)明包括一種方法,用于確定系統(tǒng)的地址映射是否包括對(duì)系統(tǒng)存儲(chǔ)器的只讀區(qū)域的支持;如果包括,則配置所述區(qū)域并在所述區(qū)域內(nèi)存儲(chǔ)受保護(hù)的數(shù)據(jù)。所述數(shù)據(jù)的至少一部分在可信模式和不可信模式下都可讀取,而在執(zhí)行不可信代碼期間能從只讀區(qū)域訪問(wèn)。描述并要求保護(hù)其它實(shí)施例。
文檔編號(hào)G06F13/14GK103154913SQ201180047970
公開日2013年6月12日 申請(qǐng)日期2011年7月20日 優(yōu)先權(quán)日2010年8月6日
發(fā)明者R·C·斯旺森, V·J·齊默, E·R·韋哈格, M·布魯蘇 申請(qǐng)人:英特爾公司