專利名稱:用于多硬件平臺的飛騰服務器的機器類型識別方法
技術領域:
本發明涉及飛騰服務器的虛擬化技術領域,具體涉及ー種用于多硬件平臺的飛騰服務器的機器類型識別方法。
背景技術:
飛騰服務器(FT服務器)是由中國人民解放軍國防科學技術大學研制的、基于FT1000處理器的服務器計算機平臺,其中FT1000處理器是國防科大研制、兼容spare指令集的通用64位處理器。目前的飛騰服務器包含多種硬件平臺類型,例如nanga平臺、meili平臺以及nc平臺等,Nanga平臺、meili平臺和nc平臺都是基于FT1000處理器的飛騰計算機,由于現有的硬件廠商和接ロ不同等原因,其外圍設備并不完全相同。各硬件平臺所使用的PCIe交換單元不完全相同(如nanga平臺PCIe交換單元采用PEX8664實現,meili平臺PCIe交換單元采用PEX8648實現,nc平臺PCIe交換單元采用PEX8632實現)、其外圍設備如實時時鐘(RTC)芯片和監控芯片等不相同。由于飛騰服務器各平臺的硬件配置不完全相同,不同的硬件配置所需的驅動軟件不一樣,因此導致在不同的飛騰服務器平臺上部署不同的操作系統,因此在將飛騰服務器進行虛擬化時,就會受到特定硬件平臺的約束,不能實現多種硬件平臺之間的相互兼容,給用戶帶來了不便,不利于飛騰服務器的應用推廣。
發明內容
本發明要解決的技術問題是提供一種兼容性好、使用方便、操作簡單的用于多硬件平臺的飛騰服務器的機器類型識別方法。為了解決上述技術問題,本發明采用的技術方案為
一種用于多硬件平臺的飛騰服務器的機器類型識別方法,其實施步驟如下
1)在計算機的擴展ROM中建立用于存儲硬件平臺類型信息的平臺信息字段地址,虛擬機監控器將所述平臺信息字段地址的讀寫接ロ函數進行封裝并提供給操作系統內核調用;
2)在操作系統啟動過程中,首先獲取操作系統接收的引導裝入程序命令并分析引導裝入程序命令中的硬件平臺參數,如果引導裝入程序命令中包含硬件平臺參數則將所述硬件平臺參數對應的硬件平臺類型信息通過所述平臺信息字段地址讀寫接ロ函數寫入所述擴展ROM中的平臺信息字段地址中;
3)通過所述平臺信息字段地址讀寫接ロ函數讀取所述硬件平臺字段地址中的硬件平臺類型信息,根據所述硬件平臺類型信息識別當前飛騰虛擬服務器的硬件平臺。作為本發明上述技術方案的進ー步改進
所述步驟I)中虛擬機監控器將所述平臺信息字段地址的讀寫接ロ函數進行封裝并提供給操作系統內核調用的詳細步驟如下 A)虛擬機監控器將平臺信息字段地址的讀寫接ロ函數封裝并提供給操作系統;B)操作系統將所述步驟A)中封裝好的讀寫接ロ函數進ー步封裝并提供給操作系統的內核子模塊;
C)操作系統的內核子模塊將所述步驟B)中封裝好的讀寫接ロ函數進ー步封裝得到所述平臺信息字段地址讀寫接ロ函數。所述虛擬機監控器將0xFFF(F00000到OxFFFlOOOOOO的地址范圍映射為計算機的擴展ROM地址,且所述平臺信息字段地址占用所述擴展ROM映射地址范圍的第17個字節 第20個字節。所述步驟2)的詳細步驟為
I )預設ー組硬件平臺參數數組,所述硬件平臺參數數組的每ー項包括字符類型的硬件平臺參數和對應的整數值;
II)在操作系統啟動過程中讀取引導裝入程序命令中的硬件平臺參數;
III)將讀取的硬件平臺參數與硬件平臺參數數組中字符類型的硬件平臺參數進行逐一比較,如果找到匹配的硬件平臺參數,則將匹配的硬件平臺參數對應的整數值通過所述平臺信息字段地址讀寫接ロ函數寫入所述擴展ROM中的平臺信息字段地址中。本發明具有下述優點
I、本發明在擴展ROM設置用于存儲硬件平臺類型信息的平臺信息字段地址,通過引導裝入程序命令帶入硬件平臺參數的形式來實現對平臺信息字段地址的配置或者修改,并在系統啟動過程中讀取擴展ROM中的值來判斷機器類型,實現了對多種硬件平臺飛騰服務器的機器類型識別的支持,可以在不同硬件平臺的飛騰虛擬服務器上部署同一套系統,具有兼容性好,使用方便、操作簡單的優點,有利于飛騰服務器的推廣。2、本發明在計算機的擴展ROM中建立用于存儲硬件平臺類型信息的平臺信息字段地址,虛擬機監控器將平臺信息字段地址的讀寫接ロ函數進行封裝并提供給操作系統內核調用,因此通過虛擬機監控器操作擴展ROM的物理地址,并提供了讀寫該地址的讀寫接ロ函數并由操作系統對其進行封裝再提供給其他子模塊使用,保證了虛擬機的安全性和健壯性。
圖I為本發明實施例的基本流程示意圖。圖2為本發明實施例的硬件框架結構示意圖。圖3為本發明實施例擴展ROM的地址空間分布示意圖。
具體實施例方式如圖I所示,本實施例用于多硬件平臺的飛騰服務器的機器類型識別方法的實施步驟如下
1)在計算機的擴展ROM(bootoom)中設置用于存儲硬件平臺類型信息的平臺信息字段地址(ft_type),虛擬機監控器(hypervisor)將平臺信息字段地址(ft_type)的讀寫接ロ函數進行封裝并提供給操作系統內核調用;
2)在操作系統啟動過程中,首先獲取操作系統接收的引導裝入程序(silo)命令井分析silo命令中的硬件平臺參數(ft_type參數),如果silo命令中包含硬件平臺參數則將硬件平臺參數對應的硬件平臺類型信息通過平臺信息字段地址讀寫接ロ函數寫入bootoom中的平臺信息字段地址中;
3)通過平臺信息字段地址讀寫接ロ函數讀取硬件平臺字段地址中的硬件平臺類型信息,根據所述硬件平臺類型信息識別當前飛騰虛擬服務器的硬件平臺。如圖2所示,bootrom存儲在flash存儲器中,flash存儲器具有可擦寫,并斷電保留數據的特點,本實施例能夠實現對ft_type參數的讀寫,Bootrom在啟動時被映射為飛騰服務器CPU物理地址空間內,不同的硬件平臺中飛騰服務器CPU分別與不同的PCIe交換単元相連,不同的硬件平臺中PCIe交換單元所連接的外圍設備、關機控制器也各不相同。飛騰虛擬服務器通過hypervisor管理系統物理資源并為操作系統提供系統服務,本實施例通過hypervisor直接控制讀寫平臺信息字段地址并提供接ロ函數給操作系統,能夠提高虛擬機的安全性和健壯性。
本實施例步驟I)中虛擬機監控器將平臺信息字段地址的讀寫接ロ函數進行封裝并提供給操作系統內核調用的詳細步驟如下
A)hypervisor將平臺信息字段地址的讀寫接ロ函數封裝并提供給操作系統;
B)操作系統將步驟A)中封裝好的讀寫接ロ函數進ー步封裝并提供給操作系統的內核子模塊。C)操作系統的內核子模塊將步驟B)中封裝好的讀寫接ロ函數進ー步封裝得到平臺信息字段地址讀寫接ロ函數。本實施例中,步驟A)中虛擬機監控器將平臺信息字段地址的讀寫接ロ函數封裝為 extern int sun4v_ilash_rw(unsigned long command,
unsigned long address, unsigned long size, unsigned long buffer)。步驟B)中操作系統進ー步將平臺信息字段地址的讀寫接ロ函數封裝為 u32 bootrom_read (mt reg);
int bootrom_write ui32 data, int regノ。步驟C)中內核子模塊進一步將平臺信息字段地址的讀寫接ロ函數封裝為bootrom_read 和 bootrom_write 函數
u32 bootrom_reaa_tt_type (,void);
int bootrom_write_tt_type(struct ft_bootrom 氺bootrom)。silo命令通過命令行的形式負責加載內核映像,并將控制權傳遞給內核映像,本實施例的操作系統內核可以接收到來自Silo命令行參數并對其進行解析,在系統第一次安裝或者需要修改硬件平臺類型信息時,則可以通過Silo命令傳遞ft_type參數,操作系統將ft_type參數對應的值寫入bootrom對應的地址空間。在實際的操作系統啟動過程中,對bootrom的操作分為兩種情況第一,系統接收到來自silo命令傳遞的ft_type參數;第ニ,系統沒有接收到來自silo命令傳遞的ft_type參數;對于第一種情況,在獲取機器類型的子模塊中,操作系統內核通過bootrom_write_ft_type將ft_type的值寫到bootrom中,然后內核通過bootrom_read_ft_type讀出ft_type的值,即得到硬件平臺類型信息的值, 該情況一般發生在第一次安裝系統或者需要更改硬件平臺類型信息時;對于第二種情況,在獲取機器類型子模塊中,操作系統內核通過bootrom_read_ft_type讀出ft_type的值,即得到硬件平臺類型信息的值。本實施例實現機器類型識別的功能,除了硬件基礎外,還要有軟件支持,特別是操作系統的軟件支持。Hypervisor將操作bootrom的物理地址,并提供給操作系統讀取該地址段的接ロ函數,操作系統將機器類型保存到該空間。如圖3所示,本實施例中虛擬機監控器將OxFFF(M)OOOO到OxFFFlOOOOOO的地址范圍映射為計算機的bootrom地址,且所述平臺信息字段地址占用bootrom映射地址范圍的第17個字節 第20個字節。Bootrom的映射地址范圍中,前6個字節留給MAC地址使用,然后保留10個字節,接下來的4個字節(第17個字節 第20個字節)即為平臺信息字段地址(ft_type),用來保存硬件平臺類型信息的值。因此,操作系統將硬件結構的bootrom用軟件結構struct ft_bootrom表ホ
struct tt_b°°trom { uint8_t mac[6]; uint8_t reserved_0[10]; uint32_t ft_type;uint8_t reserved_l[12];
し本實施例步驟2)的詳細步驟為
I)預設ー組硬件平臺參數數組,硬件平臺參數數組的每ー項包括字符類型的硬件平臺參數和對應的整數值;
II)在操作系統啟動過程中讀取silo命令中的硬件平臺參數;
III)將讀取的硬件平臺參數與硬件平臺參數數組中字符類型的硬件平臺參數進行逐一比較,如果找到匹配的硬件平臺參數,則將匹配的硬件平臺參數對應的整數值通過平臺信息字段地址讀寫接ロ函數寫入bootrom中的平臺信息字段地址中。本實施例中,硬件平臺參數數組(machine_ft)的結構如下 static char *machine_ft[] = {
[FT_UNKN0WN]"unknown",
[FT_NANGA2WAY]〃nanga2way",
[FT_NANGA1WAY]〃nangalway",
[FT_MEILI]"meili",
[FT_NC]"nc",
[FT_706ZJ]"zj_706",
[FT_32ZJ]"zj_32",
[FT_END]NULL
し其中,左側的[FT_UNKN0WN]、[FT_NANGA2WAY]、[FT_NANGA1WAY]、[FT_MEILI]、[FT_NC]、[FT_706ZJ]、[FT_32ZJ]、[FT_END]均對應為各個硬件平臺對應的整數值,其右側對應的字符串則為操作系統可接受silo命令中的硬件平臺參數。步驟3)中則根據讀取的硬件平臺類型信息來識別當前飛騰虛擬服務器的硬件平臺,如果讀取的硬件平臺類型信息為[FT_MEILI]對應的整數值,則當前飛騰虛擬服務器的硬件平臺為meili平臺,如果讀取的硬件平臺類型信息為[FT_NC]對應的整數值,則當前飛騰虛擬服務器的硬件平臺為nc平臺,以此類推。本實施例通過hypervisor操作bootrom的物理地址,并提供了讀寫該地址的接ロ函數,作系統對其進行封裝,再提供給其他內核子模塊使用,限制用戶空間對其訪問,保證其安全性和健壯性。本實施例通過silo命令傳遞參數的方式來修改bootrom中機器類型的值,并在系統啟動過程中讀取bootrom中的值來判斷機器類型,判斷方式簡單方便。例如meili平臺通過silo命令行傳參數ft_type=meili ;nc平臺通過silo命令行傳參數ft_type=nc ;內核將得到的字符串“meili”或者“nc”與對應的整型值相匹配,并將相應的整型值通過bootrom_write_ft_type寫入到bootrom對應的地址空間,從而保存了 ft_type的值。內核再讀取bootrom中ft_type的值,從而得到機器類型。本發明只需要在系統安裝 或者修改bootrom中機器類型的值時,傳遞命令行參數,修改bootrom中的值。實現了對多種硬件平臺飛騰服務器的機器類型識別的支持,可以在不同硬件平臺的飛騰服務器上部署同一套系統,具有兼容性好,使用方便、操作簡單的優點,有利于飛騰服務器的推廣。本實施例分別通過安裝有銀河麒麟飛騰版操作系統的基于nanga平臺(nangalway)、meili平臺、nc平臺三種硬件平臺的飛騰服務器進行驗證,驗證結果發現操作系統能夠有效識別不同的硬件平臺類型,并能夠根據識別出來的硬件平臺加載不同的驅動程序和控制程序,成功地實現了銀河麒麟飛騰版操作系統的正確啟動。以上所述僅是本發明的優選實施方式,本發明的保護范圍并不僅局限于上述實施例,凡屬于本發明思路下的技術方案均屬于本發明的保護范圍。應當指出,對于本技術領域的普通技術人員來說,在不脫離本發明原理前提下的若干改進和潤飾,這些改進和潤飾也應視為本發明的保護范圍。
權利要求
1.一種用于多硬件平臺的飛騰服務器的機器類型識別方法,其特征在于其實施步驟如下 1)在計算機的擴展ROM中建立用于存儲硬件平臺類型信息的平臺信息字段地址,虛擬機監控器將所述平臺信息字段地址的讀寫接口函數進行封裝并提供給操作系統內核調用; 2)在操作系統啟動過程中,首先獲取操作系統接收的引導裝入程序命令并分析引導裝入程序命令中的硬件平臺參數,如果引導裝入程序命令中包含硬件平臺參數則將所述硬件平臺參數對應的硬件平臺類型信息通過所述平臺信息字段地址讀寫接口函數寫入所述擴展ROM中的平臺信息字段地址中; 3)通過所述平臺信息字段地址讀寫接口函數讀取所述硬件平臺字段地址中的硬件平臺類型信息,根據所述硬件平臺類型信息識別當前飛騰虛擬服務器的硬件平臺。
2.根據權利要求I所述的用于多硬件平臺的飛騰服務器的機器類型識別方法,其特征在于,所述步驟I)中虛擬機監控器將所述平臺信息字段地址的讀寫接口函數進行封裝并提供給操作系統內核調用的詳細步驟如下 A)虛擬機監控器將平臺信息字段地址的讀寫接口函數封裝并提供給操作系統; B)操作系統將所述步驟A)中封裝好的讀寫接口函數進一步封裝并提供給操作系統的內核子模塊; C)操作系統的內核子模塊將所述步驟B)中封裝好的讀寫接口函數進一步封裝得到所述平臺信息字段地址讀寫接口函數。
3.根據權利要求I所述的用于多硬件平臺的飛騰服務器的機器類型識別方法,其特征在于所述虛擬機監控器將OxFFFiFOOOOO到OxFFFlOOOOOO的地址范圍映射為計算機的擴展ROM地址,且所述平臺信息字段地址占用所述擴展ROM映射地址范圍的第17個字節 第20個字節。
4.根據權利要求I或2或3所述的用于多硬件平臺的飛騰服務器的機器類型識別方法,其特征在于所述步驟2)的詳細步驟為 I )預設一組硬件平臺參數數組,所述硬件平臺參數數組的每一項包括字符類型的硬件平臺參數和對應的整數值; II)在操作系統啟動過程中讀取引導裝入程序命令中的硬件平臺參數; III)將讀取的硬件平臺參數與硬件平臺參數數組中字符類型的硬件平臺參數進行逐一 比較,如果找到匹配的硬件平臺參數,則將匹配的硬件平臺參數對應的整數值通過所述平臺信息字段地址讀寫接口函數寫入所述擴展ROM中的平臺信息字段地址中。
全文摘要
本發明公開了一種用于多硬件平臺的飛騰服務器的機器類型識別方法,其實施步驟如下1)在計算機的擴展ROM中建立平臺信息字段地址,虛擬機監控器將平臺信息字段地址的讀寫接口函數進行封裝并提供給操作系統內核調用;2)在操作系統啟動過程中,首先獲取操作系統接收的引導裝入程序命令并分析引導裝入程序命令的硬件平臺參數,如果包含硬件平臺參數則將硬件平臺參數對應的硬件平臺類型信息寫入擴展ROM中的平臺信息字段地址中;3)通過平臺信息字段地址讀寫接口函數讀取硬件平臺字段地址中的硬件平臺類型信息,根據硬件平臺類型信息識別飛騰虛擬服務器的硬件平臺。本發明具有兼容性好、使用方便、操作簡單的優點。
文檔編號G06F13/10GK102662883SQ201210095029
公開日2012年9月12日 申請日期2012年3月31日 優先權日2012年3月31日
發明者何易澤, 孔金珠, 張衛華, 董攀, 薛晉澤, 趙江濤, 趙自成, 邵立松 申請人:中國人民解放軍國防科學技術大學