本發(fā)明涉及服務(wù)器領(lǐng)域,尤其涉及一種bios與bmc之間內(nèi)存共享的交互方法及裝置。
背景技術(shù):
1、隨著服務(wù)器行業(yè)的高速發(fā)展,針對(duì)服務(wù)器bios和bmc的需求也與日俱增,需求的增加勢(shì)必會(huì)導(dǎo)致bios開(kāi)機(jī)時(shí)長(zhǎng)的增加,同樣使得bmc響應(yīng)時(shí)長(zhǎng)的增加,傳統(tǒng)的redfish(redfish是一種現(xiàn)代化、開(kāi)放標(biāo)準(zhǔn)的restful?api,用于管理和監(jiān)控?cái)?shù)據(jù)中心中的硬件設(shè)備,如服務(wù)器、存儲(chǔ)和網(wǎng)絡(luò)設(shè)備)規(guī)范能帶來(lái)不錯(cuò)的需求擴(kuò)展,但是其傳輸方式引起了bios的幾個(gè)缺點(diǎn):配置usb?driver,usb?lan等所需時(shí)長(zhǎng)較久;采用網(wǎng)絡(luò)傳輸,以包形式發(fā)送,與內(nèi)存相比傳輸較慢,且容易引起封包過(guò)大導(dǎo)致宕機(jī);bmc?虛擬的usb設(shè)備,容易產(chǎn)生宕機(jī)風(fēng)險(xiǎn)。使用過(guò)程中中斷等問(wèn)題引起宕機(jī)。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明提供bios與bmc之間內(nèi)存共享的交互方法及裝置,旨在至少解決現(xiàn)有技術(shù)中存在的技術(shù)問(wèn)題之一。
2、本發(fā)明的技術(shù)方案為bios與bmc之間內(nèi)存共享的交互方法,用于在服務(wù)器內(nèi)基板管理控制器bmc與基本輸入輸出系統(tǒng)bios之間的通信,所述的bios與bmc之間內(nèi)存共享的交互方法包括以下步驟:
3、s100、基于預(yù)設(shè)的共享內(nèi)存,第一次燒錄或更新基板管理控制器bmc固件后,服務(wù)器接上電源,基板管理控制器bmc執(zhí)行內(nèi)部代碼指令,讀取共享內(nèi)存中上行域(host->bmc)的上行標(biāo)志位信息;
4、s200、第一次燒錄或更新基本輸入輸出系統(tǒng)bios固件后,服務(wù)器第一次開(kāi)機(jī)時(shí),基本輸入輸出系統(tǒng)bios執(zhí)行硬件初始化的代碼,讀取共享內(nèi)存中下行域(bmc->host)的下行標(biāo)志位信息;
5、s300、獲取服務(wù)器的配置信息并寫(xiě)入共享內(nèi)存中,寫(xiě)入完成后將共享內(nèi)存的首地址標(biāo)志位flag置位為1;
6、s400、基板管理控制器bmc檢測(cè)到開(kāi)機(jī)完成后,完成第一次開(kāi)機(jī)的共享內(nèi)存數(shù)據(jù)交互,遍歷檢測(cè)上行域(host->bmc)?的所有標(biāo)志位flag,若存在標(biāo)志位flag為1的項(xiàng),讀取該標(biāo)志位flag對(duì)應(yīng)的上行數(shù)據(jù)區(qū)的數(shù)據(jù);
7、s500、若基本輸入輸出系統(tǒng)bios不是第一次開(kāi)機(jī),讀取共享內(nèi)存中下行域(bmc->host)的下行標(biāo)志位flag,若存在下行標(biāo)志位flag為1,基本輸入輸出系統(tǒng)bios讀取并處理該下行標(biāo)志位flag對(duì)應(yīng)下行數(shù)據(jù)區(qū)的數(shù)據(jù),將結(jié)果反饋至基板管理控制器bmc。
8、進(jìn)一步,所述步驟s100和步驟s200中,
9、所有的上行標(biāo)志位信息和所有的下行標(biāo)志位信息的初始值均為0。
10、進(jìn)一步,所述步驟s300還包括:將獲取服務(wù)器的配置信息轉(zhuǎn)化為json數(shù)據(jù)格式。
11、進(jìn)一步,所述共享內(nèi)存用于基板管理控制器bmc通過(guò)host?to?bmc機(jī)制與主機(jī)的基本輸入輸出系統(tǒng)bios進(jìn)行通信聯(lián)絡(luò),所述共享內(nèi)存包括用于存儲(chǔ)主機(jī)host到基板管理控制器bmc通信的上行域(host->bmc)和用于存儲(chǔ)基板管理控制器bmc到主機(jī)host通信的下行域(bmc->host)。
12、進(jìn)一步,所述共享內(nèi)存包括物理地址依次連續(xù)的上行標(biāo)志位區(qū)域、下行標(biāo)志位區(qū)域、上行數(shù)據(jù)存儲(chǔ)區(qū)域和下行數(shù)據(jù)存儲(chǔ)區(qū)域;
13、所述上行域包括所述上行標(biāo)志位區(qū)域和所述上行數(shù)據(jù)存儲(chǔ)區(qū)域,所述下行域包括下行標(biāo)志位區(qū)域和下行數(shù)據(jù)存儲(chǔ)區(qū)域。
14、進(jìn)一步,所述上行標(biāo)志位區(qū)域包括多個(gè)上行標(biāo)志位,第一個(gè)上行標(biāo)志位的存儲(chǔ)地址為基地址,后續(xù)上行標(biāo)志位的物理地址為所述基地址加偏置字節(jié);
15、所述下行標(biāo)志位區(qū)域包括多個(gè)下行標(biāo)志位,第一個(gè)下行標(biāo)志位的存儲(chǔ)地址為所述上行標(biāo)志位區(qū)域的最后一個(gè)上行標(biāo)志位的物理地址的下一個(gè)物理地址,后續(xù)下行標(biāo)志位的物理地址為所述第一個(gè)下行標(biāo)志位的存儲(chǔ)地址加偏置字節(jié)。
16、進(jìn)一步,所述上行數(shù)據(jù)存儲(chǔ)區(qū)域包括多個(gè)上行數(shù)據(jù)區(qū),每個(gè)上行數(shù)據(jù)區(qū)分別與相應(yīng)的上行標(biāo)志位相對(duì)應(yīng),每個(gè)上行數(shù)據(jù)區(qū)均包括上行數(shù)據(jù)起始地址和上行數(shù)據(jù)大小,所述上行數(shù)據(jù)起始地址用于標(biāo)識(shí)該上行數(shù)據(jù)的物理起始位置,所述上行數(shù)據(jù)大小用于標(biāo)識(shí)該上行數(shù)據(jù)的占位大小;
17、所述下行數(shù)據(jù)存儲(chǔ)區(qū)域包括多個(gè)下行數(shù)據(jù)區(qū),每個(gè)下行數(shù)據(jù)區(qū)分別與相應(yīng)的下行標(biāo)志位相對(duì)應(yīng),每個(gè)下行數(shù)據(jù)區(qū)均包括下行數(shù)據(jù)起始地址和下行數(shù)據(jù)大小,所述下行數(shù)據(jù)起始地址用于標(biāo)識(shí)該下行數(shù)據(jù)的物理起始位置,所述下行數(shù)據(jù)大小用于標(biāo)識(shí)該下行數(shù)據(jù)的占位大小。
18、進(jìn)一步,所述基地址通過(guò)以下方式獲取:
19、首先,采用uefi標(biāo)準(zhǔn)函數(shù)locatehandlebuffer,定位所有efi標(biāo)準(zhǔn)的pci協(xié)議接口gefipciioprotocolguid;
20、然后,遍歷句柄handles,采用uefi標(biāo)準(zhǔn)函數(shù)pci.read讀取設(shè)備的vendorid和deviceid(vendorid和deviceid是?pci規(guī)范定義的配置空間字段里面存儲(chǔ)著該設(shè)備的基本信息:vendorid?代表是廠商id,如0x8086代表intel,devcieid代表該廠商的某個(gè)設(shè)備),找到pcie(pci-express,peripheral?component?interconnect?express,是一種高速串行計(jì)算機(jī)擴(kuò)展總線標(biāo)準(zhǔn))設(shè)備(h2b)對(duì)應(yīng)的vendorid和deviceid即可;
21、最后,通過(guò)pci.read讀取pcie設(shè)備(h2b)的0x10處的bar值,所述bar值即為共享內(nèi)存地址的基地址,將基地址通過(guò)protocol(在?uefi?中,protocol?是一種定義特定功能或服務(wù)的數(shù)據(jù)結(jié)構(gòu),每個(gè)?protocol?都有一個(gè)全局唯一標(biāo)識(shí)符(guid),用于唯一標(biāo)識(shí)該protocol,protocol?可以包含數(shù)據(jù)、函數(shù)指針或其他任何類(lèi)型的信息)的形式存儲(chǔ)傳遞,方便在不同基本輸入輸出系統(tǒng)bios的啟動(dòng)階段使用基地址。
22、進(jìn)一步,本發(fā)明還提出一種bios與bmc之間內(nèi)存共享的交互裝置,所述的bios與bmc之間內(nèi)存共享的交互裝置用于實(shí)現(xiàn)所述的bios與bmc之間內(nèi)存共享的交互方法,所述bios與bmc之間內(nèi)存共享的交互裝置設(shè)置在服務(wù)器的主板上,所述的bios與bmc之間內(nèi)存共享的交互裝置至少包括:
23、基板管理控制器bmc,所述基板管理控制器bmc與服務(wù)器主板上的中央處理器cpu和內(nèi)存ddr連接;
24、基本輸入輸出系統(tǒng)bios,所述基本輸入輸出系統(tǒng)bios與基板管理控制器bmc和服務(wù)器主板上的中央處理器cpu連接。
25、本發(fā)明的有益效果是:
26、所述的bios與bmc之間內(nèi)存共享的交互方法及裝置能優(yōu)化bios開(kāi)機(jī)時(shí)長(zhǎng)、減少宕機(jī)風(fēng)險(xiǎn),增加穩(wěn)定性、地址規(guī)劃清晰,采用標(biāo)志位形式,減少不必要的運(yùn)行時(shí)間。
1.一種bios與bmc之間內(nèi)存共享的交互方法,用于在服務(wù)器內(nèi)基板管理控制器bmc與基本輸入輸出系統(tǒng)bios之間的通信,其特征在于,所述的bios與bmc之間內(nèi)存共享的交互方法包括以下步驟:
2.根據(jù)權(quán)利要求1所述的bios與bmc之間內(nèi)存共享的交互方法,其特征在于,所述步驟s100和步驟s200中,
3.根據(jù)權(quán)利要求1所述的bios與bmc之間內(nèi)存共享的交互方法,其特征在于,所述步驟s300還包括:將獲取服務(wù)器的配置信息轉(zhuǎn)化為json數(shù)據(jù)格式。
4.根據(jù)權(quán)利要求1所述的bios與bmc之間內(nèi)存共享的交互方法,其特征在于,
5.根據(jù)權(quán)利要求4所述的bios與bmc之間內(nèi)存共享的交互方法,其特征在于,
6.根據(jù)權(quán)利要求5所述的bios與bmc之間內(nèi)存共享的交互方法,其特征在于,
7.根據(jù)權(quán)利要求5所述的bios與bmc之間內(nèi)存共享的交互方法,其特征在于,
8.根據(jù)權(quán)利要求6所述的bios與bmc之間內(nèi)存共享的交互方法,其特征在于,
9.一種bios與bmc之間內(nèi)存共享的交互裝置,其特征在于,所述的bios與bmc之間內(nèi)存共享的交互裝置用于實(shí)現(xiàn)如權(quán)利要求1至8任一所述的bios與bmc之間內(nèi)存共享的交互方法,所述bios與bmc之間內(nèi)存共享的交互裝置設(shè)置在服務(wù)器的主板上,所述的bios與bmc之間內(nèi)存共享的交互裝置至少包括: