用于管理外部組件快速互連設備熱插拔的系統(tǒng)和方法
【專利摘要】提供了一種用于管理外部組件快速互連(PCIE)設備熱插拔的系統(tǒng)和方法。在根據本公開的一個實施方式中,該系統(tǒng)包括:用戶命令接口模塊、熱插拔管理模塊和熱插拔接口庫。用戶命令接口模塊被配置用于提供用戶輸入操作命令的接口。熱插拔管理模塊被配置用于響應于來自用戶的操作命令,借助于操作系統(tǒng)提供的接口、操作系統(tǒng)的內核和多個熱插拔分組服務模塊中的相應熱插拔分組服務模塊其中至少一個,來執(zhí)行操作命令。熱插拔接口庫被配置用于提供與熱插拔管理模塊進行交互的接口。通過本公開的實施方式,提供了一種用于PCIE設備熱插拔的新架構,其可以實現(xiàn)PCIE設備熱插拔操作的自動化,顯著地簡化用戶操作、提高操作效率和提升用戶體驗。
【專利說明】
用于管理外部組件快速互連設備熱插拔的系統(tǒng)和方法
技術領域
[0001] 本公開的實施方式涉及設備熱插拔的技術領域,并且更具體地涉及用于管理外部 組件快速互連(PCIE)設備熱插拔的系統(tǒng)、方法和計算機程序產品。
【背景技術】
[0002] 目前,對于硬件設備熱插拔的支持頗為流行。例如,在諸如個人電腦的各種電子設 備中大多都是支持熱插拔的硬件。熱插拔是指一種在不關閉系統(tǒng)、不切斷電源的情況下,對 系統(tǒng)中的硬件設備(諸如PCIE卡,像是網絡接口卡(NIC),主機總線適配器(HBA)等)進行 添加或刪除的技術。熱插拔是提高系統(tǒng)可用性和可維護性的關鍵技術之一。無論對于通用 服務器還是對于存儲設備而言,該熱插拔都是需要的。而且,維修服務團隊通常也期望設備 支持熱插拔功能,因為這可以方便現(xiàn)場服務,提高全面客戶體驗(TCE)。
[0003] PCIE是一種目前較新的總線和接口標準,而且已經在諸如個人電腦的電子設備上 被廣泛采用。PCIE設備熱插拔并非是本行業(yè)中的一項新技術。實際上,已經存在定義硬件 和PCIE總線協(xié)議級別的體系結構的行業(yè)標準。然而,至今尚不存在用于實現(xiàn)配置/取消配 置自動化的行業(yè)標準方法。
[0004] 從硬件角度來看,目前市場上許多PCIE卡已經完全可以支持熱插拔。而且在平臺 和固件的PCIE插槽也提供有用于為插槽加電或者斷電的操作系統(tǒng)(0S)軟件。然而,從軟件 角度來看,不同0S系統(tǒng)可以具有不同的解決方案,并不存在任何的標準方式來幫助用戶進 行熱插拔操作。例如,對于基于Linux的系統(tǒng),Linux標準0S內核僅僅提供了在PCIE總線 協(xié)議級別的配置/取消配置設備低級別的熱插拔驅動程序。因此,如果用戶想要對設備進 行配置/取消配置,用戶必須按照設備類型尋求不同的工具來配置/取消配置的設備。例 如,對于NIC設備的網絡設備,需要使用網際協(xié)議(IP)捆綁相關的工具,對于SAS HBA設備 需要使用存儲和多路徑工具,而對于光纖信道(FC)設備,則需要使用專用的FC工具。因此, 通常在對一個設備進行配置/取消配置時,需要采用多個命令和多個工具。此外,如果在配 置/取消配置故障發(fā)生,那么用戶可能需要手動找出設備使用信息,并試圖尋求解決方案。
[0005] 例如,當熱移除NIC卡時,該NIC卡可能當前已經配置有IP地址或IP綁定組,并 且因此已經配置有軟件協(xié)議棧和支持該NIC卡的應用。強行去除可能會導致軟件崩潰或者 甚至導致0S嚴重錯誤。還存在另一示例,例如,如果將串行連接CSCI接口(SAS)HBA卡連 接到包括多個磁盤殼,并且在磁盤上創(chuàng)建有卷/文件系統(tǒng)的磁盤簇(J0BD),則當我們要取 消對HBA卡的配置時,通常首先需要檢查系統(tǒng)中的多路徑配置。如果存在路徑冗余,則可能 想要對另一 HBA路徑進行故障切換;否則,可能想查看如何手動卸載該文件系統(tǒng)和卷。這些 工作必須由一個經驗豐富的系統(tǒng)管理員來手動完成,這需要非常費勁。
[0006] 因此,針對上述問題而言,一個具有挑戰(zhàn)性的問題在于:軟件10協(xié)議棧和應用程 序通常是非常復雜的。并不是簡單地找出軟件的依賴關系然后在運行時配置設備/取消設 備的配置。而另一個具有挑戰(zhàn)性的問題是:存在相當多的不同類型的PCIE設備中。例如, 對于網絡設備的軟件堆棧與那些SAS HBA設備的完全不同。因此,使用統(tǒng)一的軟件框架和 用戶界面來管理所有類型的PCIE設備的熱插拔活動也是異常困難。
[0007] 因此,在本領域存在一種對改進的設備熱插拔管理的方案的需求。
【發(fā)明內容】
[0008] 有鑒于此,本公開提供了一種新的用于PCIE設備熱插拔管理的技術方案,以克服 或者緩解如前所述的現(xiàn)有技術中存在的至少一部分缺陷。
[0009] 根據本公開的第一方面,提供了一種用于管理外部組件快速互連(PCIE)設備熱 插拔的系統(tǒng)。所述系統(tǒng)包括:用戶命令接口模塊,被配置用于提供供用戶輸入操作命令的接 口;熱插拔管理模塊,被配置用于響應于來自所述用戶的操作命令,借助于操作系統(tǒng)提供的 接口、所述操作系統(tǒng)的內核和多個熱插拔分組服務模塊中的相應熱插拔分組服務模塊其中 至少一個,來執(zhí)行所述操作命令;以及熱插拔接口庫,被配置用于提供與所述熱插拔管理模 塊進行交互的接口。
[0010] 在根據本公開的一個實施方式中,所述多個熱插拔分組服務模塊可以包括與設備 類型對應的熱插拔分組服務模塊和所有設備類型公用的平臺熱插拔分組服務模塊,其中所 述與設備類型對應的熱插拔分組服務模塊可以被配置為向相應的設備類型提供特定的熱 插拔相關服務,其中所述平臺熱插拔分組服務模塊可以被配置為向所有類型的設備提供所 需的基礎服務。
[0011] 在根據本公開的另一實施方式中,所述熱插拔管理模塊可以被配置為響應于所述 多個熱插拔分組服務模塊的訂閱請求而為其訂閱感興趣的設備類型,以及所述熱插拔管理 模塊可以被進一步配置為基于所述操作命令所針對的設備的類型和所述多個熱插拔分組 服務模塊的訂閱,來調用相應熱插拔分組服務模塊。
[0012] 在根據本公開的又一實施方式中,所述用戶經由所述用戶命令接口模塊輸入的操 作命令可以通過用戶命令服務模塊調用所述熱插拔接口庫提供的相應接口,而被發(fā)送給所 述熱插拔管理模塊。
[0013] 在根據本公開的再一實施方式中,所述熱插拔接口庫可以被配置為提供第一組應 用程序接口,所述第一組應用程序接口可以被配置用于所述用戶命令接口模塊與所述熱插 拔管理模塊之間的交互。
[0014] 在根據本公開的另一實施方式中,所述熱插拔接口庫被配置為提供第二組應用程 序接口,所述第二組應用程序接口被配置用于所述多個熱插拔分組服務模塊與所述熱插拔 管理模塊之間的交互。。
[0015] 在根據本公開的又一實施方式中,所述熱插拔管理模塊可以包括:客戶端管理模 塊,被配置用于管理所述熱插拔管理模塊與所述用戶命令接口模塊之間的交互;信道管理 模塊,被配置用于管理所述熱插拔管理模塊與所述多個熱插拔分組服務模塊之間的交互; 事件管理模塊,被配置用于監(jiān)聽來自所述操作系統(tǒng)的內核中的與PCIE設備熱插拔相關的 事件;以及中心控制模塊,被配置用于響應于來自所述客戶端管理模塊、所述信道管理模塊 和所述事件管理模塊的請求,調用所述操作系統(tǒng)提供的接口、所述操作系統(tǒng)的內核和相應 的熱插拔分組服務模塊其中至少一個,執(zhí)行相應操作。
[0016] 在根據本公開的再一實施方式中,所述操作系統(tǒng)是LINUX,以及其中所述熱插拔 管理模塊通過LINUX系統(tǒng)中的智能平臺管理接口庫提供的接口、外部組件互連庫提供的接 口、內核調用接口和內核事件,對PCIE設備執(zhí)行與熱插拔相關的操作。
[0017] 在根據本公開的另一實施方式中,所述熱插拔管理模塊與所述用戶命令接口模塊 和所述多個熱插拔分組服務模塊其中至少一個可以基于套接字接口進行交互。
[0018] 在根據本公開的再一實施方式中,所述操作命令可以包括:顯示命令、加電命令、 斷電命令、配置命令、取消配置命令其中一個或者多個。
[0019] 在根據本公開的又一實施方式中,所述PCIE設備熱插拔涉及以下狀態(tài):空狀態(tài), 指示插槽中沒有插入卡;未加電狀態(tài),指示插槽中插入有卡但尚未加電;已加電狀態(tài),指示 插槽中的卡已加電但尚未配置;已配置狀態(tài),指示插槽中的卡已被配置;以及維護狀態(tài),指 示插槽中的卡的配置操作或者取消配置操作失敗,其中在重新嘗試配置操作或取消配置操 作成功后,狀態(tài)將改變?yōu)樗鲆雅渲脿顟B(tài)或者所述已加電狀態(tài)。
[0020] 根據本公開的第二方面,還提供了用于管理外部組件快速互連(PCIE)熱插拔操 作的方法,包括:通過用戶命令接口模塊接收來自用戶的操作命令;響應于接收到所操作 命令,通過熱插拔接口庫提供的接口向熱插拔管理模塊傳送所述操作命令;響應于接收到 傳送來的所述操作命令,通過熱插拔管理模塊借助于操作系統(tǒng)提供的接口、所述操作系統(tǒng) 的內核和多個熱插拔分組服務模塊中的相應熱插拔分組服務模塊其中至少一個,來執(zhí)行所 述操作命令。
[0021] 根據本公開的第三方面,還提供了一種計算機程序產品,其上包括程序代碼,當所 述程序代碼在處理器上執(zhí)行時致使所述處理器中執(zhí)行根據本公開的第二方面的方法。
[0022] 在本公開的實施方式中,提供了一種用于PCIE設備熱插拔的新架構,該架構可以 實現(xiàn)PCIE設備熱插拔操作的自動化,即針對各種類型的PCIE設備提供了統(tǒng)一用戶接口來 自動在新添加設備時對其進行配置或在移除設備之前對其進行取消配置操作。根據本發(fā)明 的實施方式,可以顯著地簡化用戶操作、提高操作效率和提升用戶體驗。
【附圖說明】
[0023] 通過結合附圖并參考以下詳細說明,本公開各實施方式的特征、優(yōu)點及其他方面 將變得更加明顯,在附圖中:
[0024] 圖1示意性地示出了根據本公開的一個實施方式的示例性PCIE設備插拔系統(tǒng)框 架的方框圖;
[0025] 圖2示意性地示出了根據本公開的一個實施方式的示例性熱插拔管理系統(tǒng)的方 框圖;
[0026] 圖3示意性地示出了根據本公開的一個實施方式的示例性狀態(tài)機的圖示;
[0027] 圖4示意性地示出了根據本公開的一個實施方式的示例性熱添加操作的信號流 圖。
[0028] 圖5示意性地示出了根據本公開的一個實施方式的示例性熱移除操作的信號流 圖;
[0029] 圖6示意性地示出了根據本公開的一個實施方式的在出現(xiàn)錯誤情況下的示例性 熱移除操作的信號流圖;
[0030] 圖7示意性地示出了根據本公開的一個實施方式的示例性狀態(tài)示出操作的信號 流圖;
[0031] 圖8示出根據本公開的一個實施方式的用于管理PCIE設備熱插拔的方法的流程 圖。
【具體實施方式】
[0032] 在下文中,將參考附圖詳細描述本公開的各個示例性實施方式。應當注意,這些附 圖和描述涉及的僅僅是作為示例的優(yōu)選實施方式。應該指出的是,根據隨后描述,很容易設 想出此處公開的結構和方法的替換實施方式,并且可以在不脫離本公開要求保護的公開的 原理的情況下使用這些替代實施方式。
[0033] 應當理解,給出這些示例性實施方式僅僅是為了使本領域技術人員能夠更好地理 解進而實現(xiàn)本公開,而并非以任何方式限制本公開的范圍。此外,在附圖中,出于說明的目 的,將可選的步驟、模塊、單元等以虛線框示出。
[0034] 在此使用的術語"包括"、"包含"及類似術語應該被理解為是開放性的術語,即"包 括/包含但不限于"。術語"基于"是"至少部分地基于"。術語"一個實施例"表示"至少一 個實施例";術語"另一實施例"表示"至少一個另外的實施例"。其他術語的相關定義將在 下文描述中給出。
[0035] 在下文中,將參考附圖通過實施方式來來詳細描述根據本公開的實施方式的PCIE 設備熱插拔的管理方案。首先參考圖1,來描述根據本公開的一個實施方式的不例性設備插 拔系統(tǒng)框架。
[0036] 如圖1所示,該框架分為用戶級、內核級和硬件級。在用戶級,運行著用戶應用程 序和/或模塊。如圖1所示,熱插拔命令行接口(CLI)模塊101是提供給用戶以便用戶通 過輸入命令行來發(fā)出操作命令的接口。熱插拔CLI模塊將接收到的命令交給命令服務模 塊CMDS 102a,該命令服務模塊CMDS 102a接收到熱插拔操作命令后,將會通過熱插拔接口 庫110提供的應用程序編程接口(API)將操作命令發(fā)送給熱插拔管理模塊120。需要說明 的是,盡管此處示出了熱插拔CLI模塊和CMDS模塊,但是需要說明的是,所述熱插拔CLI模 塊本身也可以具有調用熱插拔接口庫的API的功能性。即,CMDS可以集成到熱插拔CLI模 塊中,而并非必然是兩個分離的模塊。此外,在架構設計期間,測試&調試工具l〇2b可以用 來作為用戶命令接口模塊以供用戶輸入操作命令。來自試&調試工具l〇2b的操作命令同 樣可以通過熱插拔接口庫110提供的應用程序編程接口(API)而被發(fā)送給熱插拔管理模塊 120〇
[0037] 此外,在用戶級還包括若干熱插拔分組(HG)服務模塊,例如平臺HG服務模塊 l〇3a、非易失性隨機訪問存儲器(NVRAM)HG服務模塊103b、存儲設備HG服務模塊103c、網 絡HG服務模塊103d和光纖信道(FC)服務模塊103e。在根據本公開的熱插拔服務架構 中,根據PCIE設備的類型將PCIE設備劃分成了若干分組,例如NVRAM HG、存儲設備HG、網 絡HG、FC HG,并針對每個HG設置了相應的服務模塊,各個服務模塊針對向相應類型的設備 提供特定的熱插拔相關服務。此外,還特別設置了一個平臺HG,該HG是為所有類型的PCIE 設備所公用的服務模塊,其向所有類型的設備提供所需的基礎服務,諸如,PCIE設備驅動程 序,PCIE協(xié)議棧,PCI協(xié)議層的異常檢測等。這些HG服務模塊103a-103e通過熱插拔接口 庫110來與熱插拔管理模塊120進行通信。因此,在各個服務模塊中包括均包括一個守護 進程,以用于調用熱插拔接口庫110提供的API與熱插拔管理模塊120進行通信。
[0038] 在本公開的實施方式中,熱插拔接口庫110被配置提供諸如各個HG服務模塊、命 令輸入接口模塊等外部模塊與熱插拔管理模塊120進行通信的應用編程接口(API)。經由 這些API,這些外部模塊可以與熱插拔管理模塊120進行交互。
[0039] 特別地,熱插拔接口庫110可以提供兩組API。第一組API被配置用于諸如熱插拔 CLI模塊101的用于接收用戶命令的外部模塊與熱插拔管理模塊120之間的交互。通過該 第一組API熱插拔CLI模塊101可以調用熱插拔管理模塊通過的相應服務,以便將用戶輸 入的操作命令告知熱插拔管理模塊120,以及以便熱插拔管理模塊120將操作命令執(zhí)行的 結果或者應答通知CLI模塊。第二組API主要供各個HG服務模塊使用,以便其與熱插拔管 理模塊120進行交互。例如,各個HG服務模塊可以通過該組API的相應API向熱插拔管理 模塊120訂閱其所感興趣的設備類型,并且熱插拔管理模塊120可以通過該組API中的相 應API向各個HG服務模塊發(fā)出相應的通知。這樣,在一個HG服務模塊所負責或者所關心 的類型的設備上發(fā)生熱插拔事件/執(zhí)行命令操作時,熱插拔管理模塊120可以通過該組接 口調用HG服務模塊執(zhí)行相應操作。
[0040] 特別地,對于第二組API,HG服務模塊將會在執(zhí)行庫初始化期間提供一組回調函 數(shù)。在出現(xiàn)相應的事件/請求時,熱插拔管理模塊120利用這些回調函數(shù)來命令相應的HG 服務模塊執(zhí)行相應動作。該回調函數(shù)可以設計成異步方式,以避免侵入現(xiàn)有的HG碼,這意 味著,由熱插拔接口庫110的提供的所有回調函數(shù)將會在一個專用線程而非主線程將被調 用。因此HG服務模塊在必要時需要關注并發(fā)操作。在HG服務模塊完成了他們對熱添加或 熱移除的相應工作后,也會通過第二組API發(fā)送相應的應答。
[0041] 熱插拔管理模塊120是該熱插拔系統(tǒng)架構的核心,其負責處理來自各個模塊的與 PCIE設備熱插拔相關的操作請求。在下文中將參考圖2對熱插拔管理模塊120進行詳細描 述,此處不再贅述。
[0042] 此外,在用戶層,還可以調用兩個庫中的接口。這兩個庫是智能平臺管理接口 (IPMI)庫(即"libipmi") 131和PCI協(xié)議庫132(即libpci),他們是LINUX操作系統(tǒng)本身 提供的庫。這兩個庫為熱插拔管理模塊120提供了對硬件設備進行操作以及對操作系統(tǒng)的 內核所提供的服務進行調用的接口。例如,通過IPMI庫131可以實現(xiàn)對PCIE設備的加電 /斷電,而利用PCI協(xié)議庫132可以實現(xiàn)諸如對PCI類型設備的掃描等操作。
[0043] 在該架構中,在內核級存在IPMI驅動模塊133,該IPMI驅動模塊133是用于實現(xiàn) 與底層的PCIE設備通信的程序。通過該驅動模塊,上層的模塊才能夠對PCIE設備進行各 種操作。IMPI接口庫131所提供的API可以調用該IPMI驅動程序133提供的服務,進而對 PCIE設備執(zhí)行例如加電或者斷電操作。
[0044] 此外,在還存在Net link模塊134和PCIE熱插拔(PCIEHP)內核模塊135。Net link 模塊134是LINUX系統(tǒng)中用于內核事件Uevent的事件接口。通過內核事件Uenvent可以 向上層模塊提供來自內核的事件或消息。例如,內核級操作的一些結果信息或者應答可以 經由事件接口 Net link模塊134以內核事件Uevent的形式來向熱插拔管理模塊進行反饋。
[0045] 此外,熱插拔管理模塊120通過諸如sysfs文件系統(tǒng)的內核調用接口來對調用操 作系統(tǒng)的內核來執(zhí)行相應操作。該文件系統(tǒng)sysfs是一個虛擬文件系統(tǒng),可以方便對系統(tǒng) 設備進行管理。然而,需要說明的是,也可以通過內核系統(tǒng)調用接口而非sysfs來對PCIEHP 內核模塊135進行調用。PCIEHP內核模塊135可以將sysfs發(fā)送給熱插拔管理模塊120, 進而通過熱插拔接口庫以及CMDS服務模塊將其中的信息呈現(xiàn)給用戶,例如用戶修改過的 sysfs文件可以通過熱插拔管理模塊120而被發(fā)送給PCIRHP內核模塊。在接收來自用戶 的sysfs文件時PCIEHP內核模塊135將會根據其中的信息執(zhí)行相應的操作。PCIEHP內核 模塊135是LINUX系統(tǒng)提供的標準模塊,在本公開的實施方式中,其主要用于獲知PCIE設 備相關信息以及執(zhí)行PCIE協(xié)議層的熱插拔相關操作。例如,可以通過檢查PCIE性能數(shù)據 結構中的插槽性能寄存器,來獲取硬件的熱插拔部件信息。這些寄存器可以反映PCIE設備 的類型,插槽是否支持熱插拔、設備是否支持不通知軟件的突然拔出操作。還可以獲知提示 燈、控制器等硬件元素是否存在等。在被熱插拔管理模塊120調用時,PCIEHP內核模塊135 還可以執(zhí)行PCIE配置/取消配置操作,諸如包括設備驅動程序的加載/卸載,PCI總線掃 描,PCI資源分配/取消分配等。
[0046] 在硬件層,是若干個PCIE插槽,諸如示出的PCIE 0至PCIE 11141-1至141-11。 在插槽中,可以插入各種類型的PCIE設備,諸如存儲設備,網絡設備、內存設備、光纖信道 連接卡等。不過,在一些應用,對于其中至少一些插槽,其可以插入的設備類型可能是有限 制的。
[0047] 接下來,將詳細介紹上述架構中在特別是用戶級的各個模塊的一些細節(jié)。參考圖 2,該圖2示出了根據本公開的一個實施方式的示例性PCIE設備熱插拔管理系統(tǒng)的方框圖。
[0048] 在根據本公開的一個實施方式中,熱插拔管理模塊120可以被設計成一個單線程 的事件驅動模塊。該模塊將偵聽系統(tǒng)中各個部件的事件。這些事件例如包括:用戶命令輸 入,例如來自CMDS或者任何調試&測試工具;來自各個HG服務模塊的注冊和取消注冊請求 以及熱插拔操作請求和應答;來自內核空間中的內核事件消息。受這些事件的驅動,熱插拔 管理模塊120將會執(zhí)行相應的動作。
[0049] 具體地,如圖2所示,熱插拔管理模塊120包括客戶端管理模塊121、信道管理模塊 122、事件管理模塊123和中心控制模塊124。客戶端管理模塊121負責管理所述熱插拔管 理模塊120與所述用戶命令接口模塊120a、測試&調試工具102b之間的交互。例如,客戶 端管理模塊121可以負責接收來自用戶的各種操作命令或請求并向其返回相應的應答或 者結果。信道管理模塊122用于管理所述熱插拔管理模塊與所述多個熱插拔分組服務模塊 之間的交互。例如,信道管理模塊122負責HG服務模塊的訂閱或者注冊,來自HG服務模塊 的操作應答,針對HG服務模塊的各種通知,檢測信道的完好狀態(tài)。事件管理模塊123監(jiān)聽 來自所述操作系統(tǒng)的內核中的與PCIE設備熱插拔相關的事件。具體地,監(jiān)聽net 1 ink接口 的來自PCIEHP內核模塊135的與PCIE設備熱插拔相關的內核事件,以便接收在來自內核 的信息、操作結果或者應答。由于事件管理模塊122可以用于監(jiān)聽來自內核空間netlink 消息,這樣,熱插拔管理模塊120可以從內核級獲知與PCIE設備相關的一些信息。中心控 制模塊124負責響應于來自所述客戶端管理模塊、所述信道管理模塊和所述事件管理模塊 的請求,調用所述操作系統(tǒng)提供的接口、所述操作系統(tǒng)的內核和相應的熱插拔分組服務模 塊其中至少一個,執(zhí)行相應操作。例如處理來自用戶的操作命令、來自各個HG服務模塊的 訂閱/注冊請求、取消訂閱/注冊請求、操作應答以及來自內核的事件信息等。
[0050] 緊接著將詳細描述熱插拔管理模塊120與其他模塊或部件的交互。
[0051] CMDS 102a或諸如測試&調試工具102b的其他模塊使用熱插拔接口庫提供110a 的API (第一組API)來向熱插拔管理模塊發(fā)送操作命令。熱插拔管理模塊120中的客戶端 管理模塊121將會接受該命令或者操作請求,然后調用由中心控制模塊124提供的服務來 處理該請求。熱插拔管理模塊120,更特別地是客戶端管理模塊121也會通過熱插拔接口 102a提供的相應的API向CMDS 102a或者諸如測試&調試工具102b返回操作結果或者應 答。
[0052] 各個HG服務模塊103a_103e同樣也使用熱插拔接口庫110b提供的API (第二組 接口)來訂閱其感興趣的設備類型的熱插拔事件,或者說向熱插拔管理模塊進行注冊。信 道服務模塊122負責管理HG服務模塊的訂閱和通知,同時負責信道健康狀態(tài)管理。通常一 旦在熱插拔管理模塊120和HG服務模塊之間的信道建立后,該信道將會用于傳送熱插拔請 求、應答、通知等。
[0053] 事件管理模塊122監(jiān)聽來自內核空間netlink消息,因此熱插拔管理模塊120可 以知道內核例如是否成功地執(zhí)行了對PCIe層的初始化和去初始化。
[0054] 熱插拔管理模塊120對PCIE設備的管理將會依賴于底層操作系統(tǒng)提供的功能性。 諸如Linux內核的操作系統(tǒng)內核通常支持根據PCIE標準規(guī)范的PCIE熱插拔。因此,操作 系統(tǒng)中的一些功能部件可以被用來支持PCIE熱插拔。對于Linux系統(tǒng),這些功能包括但不 限于:
[0055] -當熱添加時,配置PCIE設備。
[0056] *重新掃描PCIE總線以發(fā)現(xiàn)新的設備。如果熱添加的卡包括多個設備和橋,Linux 的熱插拔模塊將列舉所有設備和橋。
[0057] *向新設備分配PCI資源,包括分配MEM/I0地址,總線號、設備號和功能號(BDF) 等。
[0058] *加載對應設備驅動程序。
[0059] -當熱移除,取消對PCI設備的配置。
[0060] *卸載設備驅動程序。
[0061] *取消對PCI資源的分配。
[0062] DD0S熱插拔框架可以通過諸如sysfs的內核調用接口與Linux內核熱插拔模塊進 行交互。提供開啟Linux操作系統(tǒng)內核中的C0NFIG_H0TPLUG_PCI_PCIE配置,那么可以通 過 sysfs 提供 PCIE 設備的兩個屬性,即 /sys/bus/pci/devices〈bdf>/rescan 和 /sys/bus/ pci/device/〈bdf>/remove。因此,可以通過在sysfs中寫入字符(任意字符)來分別觸發(fā) PCIE重新掃描/移除過程。
[0063] 具體地,在根據本公開的實施方式中,熱插拔管理模塊120對PCIE設備的管理將 會基于底層操作系統(tǒng)提供的兩個庫。一個是libipmi,該庫提供用于執(zhí)行諸如對PCIE設備 進行加電、斷電、狀態(tài)檢查、設置LED等操作的API。另一個是libpci庫,該庫提供了用于執(zhí) 行在PCIE協(xié)議層相關的熱插拔操作的API,PCIE相關操作諸如是掃描PCIE設備,訪問PCIE 寄存器等。此外,熱插拔管理模塊120依賴于該sysfs來進行在內核內的PCIE配置/取消 配置操作,包括相應類型PCIE設備的驅動程序加載/卸載、PCI總線掃描,PCI資源分配/ 取消分配等。
[0064] 熱插拔管理模塊120與HG服務模塊103a_103e和用戶命令輸入接口模塊102a、測 試&調試工具102b之間通信可以使用任何類型的進程間通信(IPC)機制,但是優(yōu)選的是使 用套接字接口。這樣可以將其實現(xiàn)為單線程和事件驅動模型,響應時間例如可以是MAX(D1, D2,D3. . . DN)。通過使用套接字接口,熱插拔管理模塊120可以作為中心服務器,而諸如HG 服務模塊、用戶命令接口模塊l〇2a、測試&調試工具102b的外部模塊可以作為客戶端,從而 使得該模型得以簡化。不過,這樣需要考慮信息編碼和解碼,需要處理超時。而且熱插拔管 理模塊需要處理netlink套接字。通過使用套接字,我們可以采用I/O復用方法(選擇,輪 詢,增強輪詢),從以統(tǒng)一的方式實現(xiàn)系統(tǒng)。
[0065] 如上所述,熱插拔接口庫110a和110b提供至少兩組API,以用于與熱插拔管理模 塊進行通信。該熱插拔接口庫隱藏了底層處理(套接字相關操作)的細節(jié)。由于底層處理 對于用戶是透明的,這樣使用API的用戶就可以有更多的精力專注于業(yè)務邏輯。
[0066] 在根據本發(fā)明的實施方式中,可以為用戶提供多個命令/操作,這些操作例如包 括但不限于:顯示操作、加電操作、斷電操作、配置操作、取消配置操作和斷電操作。這些操 作中的每一個均可能造成用戶可見的PCIE設備狀態(tài)改變。因此,在對這下操作命令進行詳 細描述之前,將首先描述一下可以在根據本發(fā)明的實施方式中使用的狀態(tài)機。
[0067] 圖3示出了根據本發(fā)明的一個實施方式的一個狀態(tài)機。如圖3所示,對一個PCIE 熱插拔操作而言,其所涉及的狀態(tài)可以包括"空","未加電","已加電","已配置"和"維護" 共計五個狀態(tài)。
[0068] 在PCIE插槽中沒有任何PCIE設備時,狀態(tài)為"空",即指示插槽中沒有插入卡。如 果用戶將PCIE設備插入插槽(X01),則狀態(tài)從"空"轉變?yōu)?未加電",即指示插槽中插入有 卡但尚未加電。如果在"未加電"狀態(tài)用戶將PCIE設備從插槽中移除,則狀態(tài)從"未加電" 返回至"空";而如果加電操作被執(zhí)行,則狀態(tài)將從"未加電"進入"已加電",即指示插槽中 的卡已加電但尚未配置。而在"已加電"狀態(tài),如果執(zhí)行斷電操作,狀態(tài)則從"已加電"返回 到 "未加電"。相反,如果執(zhí)行配置操作,則在配置操作成功的情況下,狀態(tài)從"加電"直接進 入"已配置,"即指示插槽中的卡已被配置。而在配置操作未成功或部分成功(例如,對該 PCIE設備類型感興趣的HG服務模塊中僅部分執(zhí)行配置操作成功)的情況下,將進入"維護" 狀態(tài)。在"已配置"狀態(tài),如果執(zhí)行取消配置,在取消配置成功的情況下,狀態(tài)將會從"已配 置"直接返回到"已加電"。而在取消配置未成功的情況下,狀態(tài)機將會暫時位于"維護"狀 態(tài)。此外處"維護"狀態(tài)被定義以用于警告用戶操作尚未完全成功,即指示插槽中的卡的配 置操作或者取消配置操作失敗。在該狀態(tài)下,用戶可以重新嘗試操作。在重新嘗試的配置 操作的情況下,狀態(tài)將會從"維護"改變"已配置"狀態(tài)。而在用戶重新發(fā)起的取消配置操 作成功以后,狀態(tài)從"維護"返回至"已加電"。另一方面,需要注意的是,如果經歷了多個重 新操作嘗試,設備仍一直處于"維護"狀態(tài),則指示可能需要進行人工干預。
[0069] 需要說明的是,根據本發(fā)明的上述狀態(tài)機,可以包括更多或者更少的狀態(tài),諸如在 維護狀態(tài)可以根據各種設備的故障類型,設計更多的狀態(tài)。然而圖3示出的狀態(tài)機提供了 在用戶界面體驗和熱插拔操作的需求之間的一個很好的折衷。
[0070] 接下來,將具體描述根據本發(fā)明的一個實施方式的為用戶提供的操作命令。
[0071] 顯示操作
[0072] 顯示操作是用以獲取PCIE設備的目前狀態(tài)及其使用信息的操作。在本發(fā)明的實 施方式,可以通過一個"顯示"命令來實現(xiàn)該操作。通常在用戶運行其他熱插拔命令以改變 PCIE設備的狀態(tài)之前,通過行顯示命令可以要求熱插拔管理模塊來提供PCIE設備的相關 信息。這些信息,對于用戶操作是非常有利的,例如能夠幫助用戶來評估移除特定PCIE設 備的影響。
[0073] 對于顯示操作,用戶例如可以在諸如熱插拔CLI模塊101用戶命令輸入接口模塊 中輸入相應的命令行,諸如"show statuS〈Slot>。"用戶輸入的命令將會提供給CMDS模塊 102a,CMDS模塊102a接收到該命令后,為了獲得PCIE設備的信息,將會調用熱插拔接口庫 110中的相應API。熱插拔管理模塊接收到該顯示命令后,通過IPMI接口庫取回PCIE設備 的狀態(tài)(例如是處于"空"狀態(tài)還是"已配置"狀態(tài))。如果PCIE設備被加電且被配置,這 意味著該PCIE設備現(xiàn)在是具有功能性的,且已經記載了相應的驅動模塊,并且為其提供了 sysfs文件系統(tǒng)的入口。此時,熱插拔管理模塊120會檢查該PCIE設備的設備類型,并通過 已經建立的相應信道從相應的HG服務模塊獲取PCIE設備的使用信息。例如對于NIC卡, 將會詢問網絡HG服務模塊103d,而對于SAS HBA,將會詢問存儲設備HG服務模塊103c。
[0074] 各個HG服務模塊通常應當收集了相應類型的PCIE設備的使用信息,例如磁盤信 息,多路徑信息、驅動模塊信息以及PCIE設備的狀態(tài)信息(已完全被配置或部分配置)等。 這HG服務模塊可以獲得PCIE設備的使用信息,并將其通過API發(fā)送給熱插拔管理模塊 120。熱插拔管理模塊120在接收到PCIE設備的信息后,通過熱插拔接口庫110提供的API 將該信息提供給CMDS 102a。CMDS 102a然后將該信息提供給用戶。
[0075] 在下面出于說明的目的,在表1給出了在輸入顯示命令后的CLI界面的示例。
[0076] 表1顯示命令界面
[0078] 如表1所示,在命令"Co_and"部分示出了用戶輸入的顯示命令。而在結果 "Result"部分示出顯示命令執(zhí)行的結果。在顯示的信息中,可以包括各個插槽中的設備的 狀態(tài)、設備廠商、設備名、設備使用信息等。需要說明的是,示出的結果可以包括更多或者更 少的信息,而并不僅限于所述示出的示例。
[0079] 熱添加操作
[0080] 在根據本發(fā)明的實施方式中,PCIE熱添加操作可以通過兩種操作來完成:一個是 "加電"操作,另一個是"配置"操作。如果用戶直接輸入熱插拔配置命令而沒有首先對PCIE 設備加電,則熱插拔管理模塊120將會首先對PCIE設備加電,然后執(zhí)行配置。
[0081] 加電橾作
[0082] 在熱插拔管理模塊120在發(fā)現(xiàn)用戶發(fā)出了配置命令但是PCIE設備目前尚未加電 時,調用IPMI接口庫以便對相應的PCIE設備加電。IPMI接口庫將使用IPMI OEM命令對 PCIE設備加電。相應的HG服務模塊觀察到該加電過程,然后已建立的信道返回加電應答。 CMDS模塊在接收到加電應答后向用戶呈現(xiàn)加電信息。
[0083] 在下面的表2中,出于說明的目的給出了加電命令的示例性的CLI界面。
[0084] 表2加電命令界面
[0086] 如表2所示,在命令"Command"部分示出了加電命令。在結果"Result"部分示出 加電命令執(zhí)行的結果。如表2所示,在本公開的實施方式中,在加電失敗的情況下,可以提 供詳盡的信息。
[0087] 此外,用戶也可以單獨發(fā)布諸如"poweron〈slot>"的加電命令以便對相應的PCIE 設備進行加電。在熱插拔管理模塊120通過CMDS模塊102a接收到來自用戶的加電命令后, 會調用IPMI接口庫以便對相應的PCIE設備加電。
[0088] 配詈橾作
[0089] 在PCIE設備處于"已加電"狀態(tài)后。接著可以執(zhí)行配置操作以便完成熱添加操 作。特別地,用戶可以發(fā)出諸如"configimKslot〉"的配置命令,以便啟動配置過程。熱插 拔管理模塊120接收該配置命令并檢查PCIE設備的狀態(tài),如果PCIE設備處于"已加電"或 者"維護"狀態(tài),則其進行隨后的步驟;否則,將會首先對PCIE設備加電,然后再進入隨后的 步驟。熱插拔管理模塊120會請求Linux內核執(zhí)行PCIE重新掃描以便進行PCIE層配置和 加載驅設備動程序。
[0090] 在內核完成PCIE層的配置后和驅動程序加載后,將廣播網絡鏈路信息給對 NETLINK_KOBJECT_UEVENT感興趣的過程。熱插拔管理模塊120,更特別的是事件管理模塊 123,監(jiān)聽和過濾網絡鏈路信息,并確保接收到與該PCIE設備相關的消息。所以熱插拔管理 模塊120可以知道內核已經成功完成PCIE層的配置。在PCIE層成功配置之后,熱插拔管 理模塊120可以將借助于PCI協(xié)議庫從相應的寄存器中讀取該PCIE設備的信息。這樣可 以得知該PCIE設備的類型。然后熱插拔管理模塊120將向所述類型的PCIE設備提供服務 的或者對其感興趣的HG服務模塊發(fā)送配置請求。被請求的HG服務模塊響應于該請求開 始配置PCIE設備。例如,它可以為該PCIE設備分配資源,調整內部表,并配置為此設備配 置完整的堆棧。在HG服務模塊完成對PCIE設備配置后,它會發(fā)送相應的應答給熱插拔管 理模塊120。該熱插拔管理模塊120將通過熱插拔接口庫110提供的API將該應答發(fā)送給 CMDS,進而經由CMDS告知用戶已經完成添加。
[0091] 在下面的表3中,出于說明的目的給出了配置命令的示例性的CLI界面。
[0092] 表3配置命令界面
[0093]
[0094] 如表3所示,在命令"Command"部分示出了配置命令。在結果"Result"部分示出 配置命令執(zhí)行的結果。如表3所示,在本公開的實施方式中,在配置失敗的情況下,可以提 供詳盡的信息。
[0095] 熱移除操作
[0096] 在本發(fā)明的一個實施方式中,PCIE設備的熱移除操作可以通過取消配置命令和斷 電命令來執(zhí)行。
[0097] 用戶例如可以首先通過發(fā)布諸如"unconfigure"的取消配置命令來執(zhí)行熱移除過 程。熱插拔管理模塊120將對PCIE設備進行取消配置操作。出于說明的目的,在下面的描 述中給出了取消配置操作的示例。
[0098] 取消配詈命令:
[0099] 用戶首先通過CLI模塊發(fā)布諸如"UnC〇nfig Ure〈sl〇t>"的取消配置命令,以開始 熱移除過程。熱插拔管理模塊120接收該取消配置命令,然后檢查PCIE設備的狀態(tài)。只有 當PCIE設備是處于"已配置"或者"維護"狀態(tài)時,才執(zhí)行隨后的操作,否則,將利用"無效 狀態(tài)"應答來拒絕該要求。如果PCIE設備處于"已配置"或者"維護"狀態(tài),則熱插拔管理 模塊120將該取消配置請求發(fā)送給為該PCIE設備提供服務的HG服務模塊。HG服務模塊 接收到該取消配置請求,開始取消對PCIE設備的配置。HG服務模塊將釋放該PCIE設備的 資源,調整內部表和拆毀在相應設備上的所有軟件堆棧。在成功取消了對PCIE設備的配置 后,HG服務模塊發(fā)送應答給熱拔插管理模塊120,以告知已經成功取消該PCIE設備的配置。 熱插拔管理模塊120接著將開始從0S層移除該設備。插拔管理模塊會請求Linux內核執(zhí) 行PCIE層的去除,以便釋放PCIE層的資源。然后內核將移除PCIE樹和卸載針對該PCIE 設備的驅動程序。
[0100] 在內核完成PCIE移除后,將會把網絡鏈路信息廣播給對NETLINK_KOBJECT_ UEVENT感興趣的過程。熱插拔管理模塊120特別是事件管理模塊123監(jiān)聽并過濾網絡鏈路 信息,以確保接收到與該PCIE設備相關的消息。因此熱插拔管理模塊120可以知道內核已 經在PCIE層成功地刪除了 PCIE設備。在收到PCIE設備從內核中的成功刪除的確認后,熱 插拔管理模塊120將發(fā)送應答給CMDS102a,以便告訴用戶所請求的取消配置操作已經成功 執(zhí)行。
[0101] 表4取消配置命令界面
[0102]
[0103] 如表4所示,在命令"Command"部分示出了取消配置命令。在結果"Result"部分 示出了取消配置命令執(zhí)行的結果。而且在本公開的實施方式中,在取消配置失敗的情況下 可以提供詳盡信息。
[0104] 斷電命令:
[0105] 如果用戶直接發(fā)布了斷電命令,而并未首先取消PCIE設備的配置,則熱插拔管理 模塊120將會首先取消對PCIE設備的配置,然后執(zhí)行斷電。下面,將描述斷電操作的示例。
[0106] 用戶通過用戶命令接口模塊發(fā)布諸如"poweroff〈slot>"的關機命令,以命令將 PCIE設備斷電。熱插拔管理模塊120收到斷電命令后,將檢查PCIE設備是否狀態(tài)處于"已 配置"狀態(tài)。如果是,則如前所述執(zhí)行"取消配置"操作,在完成取消配置操作后,PCIE設備 將改變?yōu)?未配置"狀態(tài)。如果PCIE設備處于"未配置"狀態(tài),則熱插拔管理模塊120可以 調用底層操作系統(tǒng)提供的IPMI接口庫。IPMI接口庫將使用IPMI OEM命令對PCIE設備斷 電。HG服務模塊觀測到該斷電操作,則返回斷電應答給,以便告知用于該PCIE設備已經成 功斷電。
[0107] 表5取消配置命令界面
[0109] 如表5所示,在命令"Command"部分示出了斷電命令。在結果"Result"部分示出 了斷電命令執(zhí)行的結果。如表5所示,在本公開的實施方式中,在斷電失敗的情況下,可以 提供詳盡的信息。
[0110] 接下來,出于說明的目的,將描述熱插拔管理模塊120初始化時的操作。
[0111] 在根據本公開的實施方案中,熱插拔管理模塊120例如可以在DDR啟動時由"初始 化組件ini "來啟動。隨后,該初始化組件" ini "將會開始初始化它的資源并開始服務。
[0112] 首先,將會初始化并啟動熱插拔管理模塊120。該初始化操作具體包括初始化 IPMI庫"libipmi"以及從"libipmi"檢索PCIE設備信息。然后,初始化PCI協(xié)議庫,并找 到每個PCIE設備的BDF。每個PCIE設備可以包含若干端點,這意味著對于一個PCIE設備, 我們需要維護它的一組BDF。這例如可以通過掃描在PCIE設備的PCI樹從而得到所有葉 節(jié)點來實現(xiàn)。"Libpci"提供有用于獲得一個插槽編號的總線范圍的API。掃描將與該插槽 編號對應的總線范圍內進行。接著,對netlink管理模塊進行初始化。此操作目的是打開 連接套接字,以便監(jiān)聽UEVENT。然后,開始初始化并啟動信道管理模塊。這涉及到:啟動在 已知的地址的socket服務器(優(yōu)先UNIX HG套接字)。接著等待來自HG的注冊消息。然 后,初始化并啟動客戶端管理模塊。具體地,啟動在已知地址處的套接字服務器(優(yōu)選地是 UNIX域套接字)。在完成了整個的初始化過程,就可以等待CMDS或其他過程中的任何客戶 端的用戶命令。
[0113] 接下來,僅出于說明的目的,將會HG服務模塊的注冊或者訂閱操作進行詳細的描 述。
[0114] 在根據本發(fā)明的實施方式中,每種PCIE類型屬于一個特定的HG服務模塊(其可 能由若干模塊構成)并由其提供服務。例如對于SASHBA卡,其擁有者應該是存儲HG服務 模塊。如果用戶希望刪除一個SAS HBA,則存儲HG服務模塊應進行具體操作,包括但不限 于:釋放資源,關閉相應的文件,并拆掉在該設備頂部的軟件堆棧。如果HG服務模塊包含多 個守護進程,則可能是其中的一些來協(xié)調該操作。
[0115] 對于PCIE熱添加/移除,熱插拔管理模塊會在適當?shù)臅r間點調用相應的HG服務 模塊來執(zhí)行特定工作,以完成整個請求。為了實現(xiàn)這一目標,熱插拔管理模塊將維護至HG 服務模塊的信道,這些信道在注冊操作之后建立,然后由信道服務模塊來維護。
[0116] 此外,當HG觀測到某種類型的PCIE設備被刪除或添加時,它將會發(fā)出通知,并通 過熱插拔接口 110提供的API將自己注冊到熱拔插管理模塊120,或者像熱插拔管理模塊 120訂閱該類型的設備?;蛘吖芾矸障到y(tǒng)啟動時就訂閱該類型的設備。
[0117] 在注冊過程中,HG會聲明它是哪種類型的HG。然后,熱插管理模塊可以將這些類 型的PCIE設備與相應的信道相關聯(lián)。每個信道將通過唯一地確定的關鍵字來識別,該關鍵 字例如是一個字符串。這樣,可以方便熱插拔管理模塊來保持各信道的狀態(tài)。
[0118] 在這些HG服務模塊中,大部分HG服務模塊是基于設備類型來確定的,但是包括一 個通用類型服務模塊,即平臺服務模塊,其可以被任何關心系統(tǒng)中的PCIE變化的過程或進 程使用。在任何時間PCIE設備被刪除時,以該PCIE設備的類型被訂閱的HG服務模塊將是 最后一個得到通知的模塊,而當PCIE設備添加時,它將是第一個得到通知的模塊。
[0119] 實際上,任何HG服務模塊或過程均可將自己注冊到熱拔插管理模塊,所以熱插拔 操作開始時,如果PCIE設備的類型與信道注冊的類型相匹配,則相應的HG將會得到通知。 這實質上是一個子通知模式,唯一不同的是,有時HG服務模塊不僅需要接收該通知而且也 需要在被調用時執(zhí)行動作并返回應答。
[0120] 在下文中,出于說明的目的,將以SAS HBA PCIE設備為例,描述一個PCIE設備熱 添加、熱移除以及狀態(tài)顯示時的信號流。在下面的示例中,HG X服務模塊和存儲設備HG服 務模塊均對存儲類型的PCIE設備感興趣并因此注冊到熱插拔管理模塊上。因此在SAS HBA 熱添加、熱移除和顯示時,均會通知他們二者。
[0121] 首先如圖4所示,首先在S401,CMDS模塊102a接收來自熱插拔CLI模塊101的配 置命令。CMDS模塊102a在接收到該配置命令后,在S402首先將加電命令"poweron"命令 發(fā)送給熱插拔管理模塊120。熱插拔管理模塊120接收到該請求后,在S403通過IPMI接 口調用IPMI OEM命令請求基板管理控制器對PCIE設備執(zhí)行上電操作,與此同時,在S404、 S405、S406分別將上電事件"event_poweredon"消息分別發(fā)送給平臺熱插拔分組服務模塊 103a、存儲設備HG服務模塊103b和HG X服務模塊103x。在完成上電操作后,CMDS模塊 102a在S407將PCIE配置命令"C〇nfig_p Cie"發(fā)送給熱插拔管理模塊120,熱插拔管理模 塊120在S408通知操作系統(tǒng)執(zhí)行PCIE重新掃描,并加載設備驅動程序。操作系統(tǒng)在完成 操作后,在S409將通過net link接口將"uenvent"向熱插拔管理模塊120返回操作應答。 隨后,熱插拔管理模塊120在S410、S412和S413將熱插拔事件消息"e Vent_h〇tadd"發(fā)給 PCI服務模塊103a、存儲設備HG服務模塊103b和HG X服務模塊103x,以告知他們該熱添 加事件。PCI服務模塊103a、存儲設備HG服務模塊103b和HG X服務模塊分130x別在接 收到"event_hotadd"消息后執(zhí)行熱插拔相關的操作,并在S411、S414和S415向熱插拔管 理模塊120返回相應的操作應答。隨后,熱插拔管理模塊在S416向CMDS模塊102a返回配 置應答以告知配置完成。同時,在S418至S420向PCI服務模塊103a、存儲設備HG服務模 塊103b和HG X服務模塊103x發(fā)送已配置事件通知消息"event_configured,"以告知他 們已經完成配置。CMDS模塊102a在接收到配置應答后,將配置結果返回給用戶。
[0122] 圖5和圖6分別示出了熱移除過程和熱移除存在失敗時的流程圖。出于簡化的目 的,與圖4中的操作類似的操作此處不再贅述,而是著重描述其不同。具體地,與熱添加過 程相比,熱移除過程的主要變化在于以下兩點。第一個是在被調用的HG服務模塊執(zhí)行熱 移除操作之前,熱插拔管理模塊120將首先會在S503至S505調用平臺熱插拔分組服務模 塊103a、存儲設備HG服務模塊103b和HG X服務模塊分130x執(zhí)行熱移除預檢查。如果有 任何HG服務模塊返回了失敗消息,則熱插拔管理模塊將會中止操作,并返回錯誤消息給用 戶。該操作的目的是為了降低移除部分失敗的可能性(一些HG成功移除,而一些HG移除 失?。?,這是通過如圖所示的兩階段的確認來實現(xiàn)的。第二個是如果在取消配置期間存在任 何失敗,則熱插拔管理模塊120將會通過在S615至S617向PCI服務模塊103a、存儲設備 HG服務模塊103b和HG X服務模塊分130x發(fā)送配置消息而試圖退回到已配置狀態(tài)。其目 的是為了使得盡力保持系統(tǒng)能夠正常工作。
[0123] 圖7示出了用于PCIE設備信息顯示的信號流,其中以FC信道類型的PCIE設備為 例進行了示出。在圖7中,SCSITGT和HGX服務模塊均對FC卡類型的設備感興趣。因此, 當用戶想要列出關于FC開的消息時,會通知其二者。如圖7所示,CMDS模塊102a在步驟 S701接收來自用戶的顯示命令,此后,CMDS模塊102a在步驟S702將顯示PCIE設備的信息 命令'list_p Cie'消息發(fā)送給熱插拔管理模塊120。熱插拔管理模塊120然后在S703調 用IPMI OEM命令"getPCIE"以請求BMC獲得PCIE設備的狀態(tài),并向0S發(fā)送PCIE信息請 求。隨后熱插拔服務模塊120將顯示信息事件 event_list發(fā)送給對該PCIE設備類型感興 趣的FC HG服務模塊103e和HG X服務模塊103x。FC HG服務模塊103e和HG X服務模塊 103x在接收到event_list獲取相應的信息,將應答返回給熱插拔管理模塊102。最后,該 熱插拔管理模塊120將列表結果返回給CMDS模塊102b,而該CMDS模塊102a進一步將顯示 結果返回給用戶。
[0124] 接下來將會討論在根據本發(fā)明的實施方式中的錯誤與故障處理。出于說明的目 的,下面給出了一個故障情況示例。
[0125] ?故障情況1:
[0126] 故障:IPMI庫故障(最有可能是BMC掛起)。這將導致熱插拔管理模塊無法檢索 PCIE設備的物理狀態(tài)和使用這些信息。
[0127] 處理:由于從BMC獲取信息是任何操作的第一步,該操作的失敗將導致操作中止, 用戶將在CLI界面中看到詳細消息。
[0128] 用戶動作:可能需要通知支持人員。
[0129] ?故障情況2:
[0130] 故障:對于熱添加的情況下,在熱插拔管理模塊發(fā)出"重新掃描"命令后,它未能在 預定的時間間隔從內核接收到Uevent,這表示在內核級PCIE配置失敗。
[0131] 處理:熱插拔管理模塊將會啟動一個計時器,要求內核執(zhí)行重新掃描,如果超時, 則熱插拔管理模塊會將此視為致命錯誤并中止熱添加操作。并且在CLI界面中顯示詳細消 息。
[0132] 用戶動作:客戶可以重新嘗試該操作,如果仍不能成功,需要通知支持人員。
[0133] ?故障情況3:
[0134] 故障:對于熱添加的情況下,在內核中配置了 PCIE設備之后,還需HG服務模塊執(zhí) 行配置,HG服務模塊在用戶級配置PCIE失?。ㄋ鼤祷匾粋€應答以表明發(fā)生錯誤),或者 在預定的時間內未從HG接收到應答(或者HG服務模塊進程崩潰或IPC信道停止工作)。
[0135] 處理:每個對HG的請求操作將由定時器來防護,所以可檢測超時。如果超時發(fā)生, 則熱插拔管理模塊可以將檢查信道狀態(tài),如果信道已關閉,則返回錯誤給用戶并給出警告, 如果已通知多個HG服務模塊但只有部分HG服務模塊成功,則熱插拔管理模塊應該將該配 置操作視為失敗并返回詳細的錯誤信息給用戶。這種情況可能發(fā)送在如下場合,其中對于 一個組合卡,其中一部分可能是網卡和功能,而另一部分可能是FC,其中一個功能完成配置 但另一個卻不能正常工作。如果熱插拔管理模塊接收到來自HG服務模塊的錯誤響應,則與 前述的錯誤處理情況采用相同措施。
[0136] 用戶動作:客戶可以重新嘗試該操作,如果仍不能成功,則需要通知支持人員。
[0137] ?故障情況4:
[0138] 故障:在熱移除的情況下,在熱插拔管理模塊發(fā)布移除命令以進行熱移除時,沒有 在預定的時間間隔從內核接收到UEVENT,這表明在內核級發(fā)生PCIE層的設備移除失敗。
[0139] 處理:熱插拔管理模塊會在請求內核執(zhí)行移除之前啟動一個計時器,如果超時,則 熱插拔管理模塊會將此視為致命錯誤,并通過請求HG服務模塊執(zhí)行熱添加操作來嘗試退 回到取消配置操作。在所有的退回操作完成之后,無論是成功還是失敗,熱插拔管理模塊將 針對這個取消配置操作返回失敗消息,并將詳細信息提供給用戶。
[0140] 用戶動作:客戶可以重新嘗試該操作,如果仍不能成功,則需要通知支持人員。
[0141] ?故障情況5:
[0142] 故障:在熱移除的情況下,熱插拔管理模塊會在收到來自HG服務模塊的預檢查的 正面應答后,請求HG服務模塊執(zhí)行熱移除。HG服務模塊可能會在用戶級取消PCIE配置失 ?。ㄋ鼤祷貞鹨员砻靼l(fā)生錯誤),或者有熱插拔管理模塊可能在預定的時間內沒有收 到來自HG服務模塊的應答(要么HG管理模塊崩潰,要么IPC信道停止工作)。
[0143] 處理:每個針對HG的請求操作將由一個定時器保護,所以可以檢測超時的情況。 如果超時發(fā)生,那么熱插拔管理模塊將檢查信道狀態(tài),如果信道已關閉,則返回錯誤給用戶 并發(fā)出告警,如果通知多個HG服務模塊執(zhí)行操作,但只有部分HG服務模塊成功,則熱插拔 管理模塊通過發(fā)送熱添加請求而嘗試在其他HG上使該移除操作回退。在回退完成后,熱插 拔管理模塊返回針對該取消配置操作的失敗消息,并向用戶返回詳細信息。如果熱插拔管 理模塊收到來自HG服務的錯誤響應,使用與如上處理錯誤情況相同的策略。
[0144] 用戶動作:客戶可以重新嘗試操作,如果仍不能成功,他們需要通知支持人員。
[0145] ?故障情況6 :
[0146] 故障:在HG服務模塊注冊完成之前,客戶發(fā)布熱添加或刪除請求。
[0147] 處理:這種情況在熱插拔管理模塊啟動或熱插拔管理模塊重啟時可能發(fā)生。為了 處理這種情況,熱插拔管理模塊在接受任何CLI請求之前會刻意等待一段時間。該段時間 的時間量可以通過測試來確定。
[0148] 用戶動作:客戶可以重新嘗試操作。
[0149] ?故障情況7:
[0150] 故障:HG服務模塊崩潰并重新啟動。
[0151] 處理:當HG服務模塊在顯示/熱添加/熱移除操作期間崩潰時,熱插拔管理模塊 可以檢測到崩潰,將該崩潰當做是HG服務模塊的響應超時進行處理。當操作前HG服務模 塊已崩潰隨后操作請求到來時,熱插拔管理模塊將會以錯誤來拒絕該操作請求。
[0152] 當HG服務模塊重新啟動時,它將再次注冊。在此情況下熱插拔管理模塊將檢查HG 服務模塊的標識和類型,以便更新與此HG服務模塊相關的信道狀態(tài)。HG服務模塊的名稱加 上類型可以用于唯一地識別一個HG服務模塊。
[0153] 用戶動作:客戶可以重新嘗試操作。
[0154] ?故障情況8:
[0155] 故障:熱插拔管理模塊本身崩潰。
[0156] 處理:當熱插拔管理模塊崩潰時,會調用一個回調函數(shù),該回調函數(shù)是在庫初始化 期間由用戶提供的熱插拔接口庫中的API中的一個。這樣可以自動嘗試重新注冊其本身, 因而熱插拔管理模塊在崩潰時會自動重新啟動。
[0157] 用戶動作:客戶可以重新嘗試操作。
[0158] 此外,PCIE卡/插槽上通常安裝有用以示出狀態(tài)的LED燈。因此還可以對這些LED 進行管理。例如在熱插拔操作期間,插槽/PCIE設備的LED可以是打開/關閉的,同時可以 通過在命令行接口界面來顯示這些LED的狀態(tài)。在熱插拔操作期間,熱插拔管理模塊還可 以針對硬件錯誤發(fā)送警告信息。硬件錯誤例如是在插槽加電器件的電源故障錯誤,PCI配置 失敗等。同時對于異常和熱插拔操作,熱插拔管理模塊可以進行日志記錄。諸如,在HG服 務模塊和熱插拔管理模塊之間的連接不能正常工作或者被重新連接時,熱插拔操作成功或 者失敗時等,可以記錄相關日志。
[0159] 根據本公開的另一方面,還提供了一種用于管理PCIE設備熱插拔的方法,接下來 將參考圖8來進行描述。
[0160] 如圖8所示,首先在步驟S801,通過用戶命令接口模塊接收來自用戶的操作命令。 然后,在步驟S802,響應于接收到所操作命令,通過熱插拔接口庫提供的接口向熱插拔管理 模塊傳送所述操作命令。所述用戶可以經由所述用戶命令接口模塊輸入的操作命令通過 用戶命令服務模塊調用所述熱插拔接口庫提供的相應接口,而被發(fā)送給所述熱插拔管理模 塊。接著,在步驟S803,響應于接收到傳送來的所述操作命令,通過熱插拔管理模塊借助于 操作系統(tǒng)提供的接口、所述操作系統(tǒng)的內核和多個熱插拔分組服務模塊中的相應熱插拔分 組服務模塊其中至少一個,來執(zhí)行所述操作命令。
[0161] 在根據本公開的一個實施方式中,所述多個熱插拔分組服務模塊可以包括與設備 類型對應的熱插拔分組服務模塊和所有設備類型公用的平臺熱插拔分組服務模塊。所述 與設備類型對應的熱插拔分組服務模塊被配置為向相應類型的設備提供特定的熱插拔相 關服務,其中所述平臺熱插拔分組服務模塊被配置為向所有類型的設備提供所需的基礎服 務。
[0162] 在根據本發(fā)明的一個實施方式中,該方法可以進一步包括響應于所述多個熱插拔 分組服務模塊的訂閱請求,提供所述熱插拔管理模塊而為其訂閱感興趣的設備類型,并且 通過所述熱插拔管理模炔基于所述操作命令所針對的設備的類型和所述多個熱插拔分組 服務模塊的訂閱,來調用相應熱插拔分組服務模塊。
[0163] 在根據本發(fā)明的另一實施方式中,所述熱插拔接口庫可以被配置為提供第一組應 用程序接口,所述第一組應用程序接口被配置用于所述用戶命令接口模塊與所述熱插拔管 理模塊之間的交互。
[0164] 在根據本公開的再一實施方式中,所述熱插拔接口庫可以被配置為提供第二組應 用程序接口,所述第二組應用程序接口被配置用于所述多個熱插拔分組服務模塊與所述熱 插拔管理模塊之間的交互。
[0165] 在根據本公開的又一實施方式中,所述熱插拔管理模塊可以進一步包括客戶端管 理模塊、信道管理模塊、事件管理模塊和中心控制模塊。所述熱插拔管理模塊可以分別通過 客戶端管理模塊來管理與所述用戶命令接口模塊之間的交互,通過所述信道管理模塊管理 與所述多個熱插拔分組服務模塊之間的交互;通過所述事件管理模塊監(jiān)聽來自所述操作系 統(tǒng)的內核中的與PCIE設備熱插拔相關的事件,以及通過所述中心控制模塊來響應于來自 客戶端管理模塊、信道管理模塊和事件管理模塊的請求,調用所述操作系統(tǒng)提供的接口、所 述操作系統(tǒng)的內核和相應的熱插拔分組服務模塊其中至少一個,執(zhí)行相應操作。
[0166] 在根據本公開的一個實施方式中,所述操作系統(tǒng)是LINUX,以及其中所述熱插拔 管理模塊通過LINUX系統(tǒng)中的智能平臺管理接口庫提供的接口、外部組件互連庫提供的接 口、內核調用接口和內核事件對PCIE設備,執(zhí)行與熱插拔相關的操作。
[0167] 在根據本公開的另一實施方式中,所述熱插拔管理模塊與所述用戶命令接口模塊 和所述多個熱插拔分組服務模塊其中至少一個可以基于套接字接口進行交互。
[0168] 在根據本公開的再一實施方式中,其中所述操作命令可以包括顯示命令、加電命 令、斷電命令、配置命令、取消配置命令其中一個或者多個。
[0169] 在根據本公開的又一實施方式中,其中所述PCIE設備熱插拔可以涉及以下狀態(tài): 空狀態(tài),指示插槽中沒有插入卡;未加電狀態(tài),指示槽中插入有卡但尚未加電;已加電狀 態(tài),指示插槽中的卡已加電但尚未配置;已配置狀態(tài),指示插槽中的卡已被配置;以及維護 狀態(tài),指示插槽中的卡的配置操作或者取消配置操作失敗,其中在重新嘗試配置操作或取 消配置操作成功后,狀態(tài)將改變?yōu)樗鲆雅渲脿顟B(tài)或者所述已加電狀態(tài)。
[0170] 根據本公開的另一方面,本發(fā)明還可以通過一種計算機程序產品來實現(xiàn)。該計算 機程序其上包括程序代碼,所述程序代碼在被處理器上執(zhí)行時,致使所述處理器執(zhí)行根據 本公開所述的方法。
[0171] 本領域技術人員可以理解的是,盡管在上面的描述中結合Linux操作系統(tǒng)對本公 開的實施方式進行了介紹,然而需要說明的是,本發(fā)明也有可能基于其他操作系統(tǒng),例如像 是Linux、Windows等。而且,在上文中結合PCIE卡對PCIE進行了描述,然而,事實上本發(fā)明 完全可以應用于任何其他類型的PCIE設備。另外,還可以理解的是,根據此處的公開內容 和教導,本領域技術人員還可以設想到各種修改、變形、替換或等效而并不背離本公開的精 神和范圍。這些修改、變形、替換或等效均包括在僅由權利要求書限定的本公開的范圍內。
[0172] 需要注意的是,本公開可在軟件和/或軟件與硬件的組合體中被實施,例如,可采 用專用集成電路(ASIC)、通用目的計算機或任何其他類似硬件設備來實現(xiàn)。在一個實施例 中,本公開的軟件程序可以通過處理器執(zhí)行以實現(xiàn)上文所述步驟或功能。同樣地,本公開的 軟件程序(包括相關的數(shù)據結構)可以被存儲到計算機可讀記錄介質中,例如,RAM存儲器, 磁或光驅動器或軟磁盤及類似設備。另外,本公開的一些步驟或功能可采用硬件來實現(xiàn),例 如,作為與處理器配合從而執(zhí)行各個步驟或功能的電路。
[0173] 另外,本公開的一部分可被應用為計算機程序產品,例如計算機程序指令,當其被 計算機執(zhí)行時,通過該計算機的操作,可以調用或提供根據本公開的方法和/或技術方案。 而調用本公開的方法的程序指令,可能被存儲在固定的或可移動的記錄介質中,和/或通 過廣播或其他信號承載媒體中的數(shù)據流而被傳輸,和/或被存儲在根據所述程序指令運行 的計算機設備的工作存儲器中。在此,根據本公開的一個實施例包括一個裝置,該裝置包括 用于存儲計算機程序指令的存儲器和用于執(zhí)行程序指令的處理器,其中,當該計算機程序 指令被該處理器執(zhí)行時,觸發(fā)該裝置運行基于前述根據本公開的多個實施例的方法和/或 技術方案。
[0174] 對于本領域技術人員而言,顯然本公開不限于上述示范性實施例的細節(jié),而且在 不背離本公開的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本公開。因此,無論 從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本公開的范圍由所附權 利要求而不是上述說明限定,因此旨在將落在權利要求的等同要件的含義和范圍內的所有 變化涵括在本公開內。不應將權利要求中的任何附圖標記視為限制所涉及的權利要求。此 外,顯然"包括" 一詞不排除其他單元或步驟,單數(shù)不排除復數(shù)。裝置權利要求中陳述的多 個單元或裝置也可以由一個單元或裝置通過軟件或者硬件來實現(xiàn)。第一,第二等詞語用來 表示名稱,而并不表示任何特定的順序。
【主權項】
1. 一種用于管理外部組件快速互連(PCIE)設備熱插拔的系統(tǒng),所述系統(tǒng)包括: 用戶命令接口模塊,被配置用于提供供用戶輸入操作命令的接口; 熱插拔管理模塊,被配置用于響應于來自所述用戶的操作命令,借助于操作系統(tǒng)提供 的接口、所述操作系統(tǒng)的內核和多個熱插拔分組服務模塊中的相應熱插拔分組服務模塊其 中至少一個,來執(zhí)行所述操作命令;以及 熱插拔接口庫,被配置用于提供與所述熱插拔管理模塊進行交互的接口。2. 根據權利要求1所述的系統(tǒng),其中所述多個熱插拔分組服務模塊包括與設備類型對 應的熱插拔分組服務模塊和所有設備類型公用的平臺熱插拔分組服務模塊,其中所述與設 備類型對應的熱插拔分組服務模塊被配置為向相應類型的設備提供特定的熱插拔相關服 務,其中所述平臺熱插拔分組服務模塊 可以被配置為向所有類型的設備提供所需的基礎服務。3. 根據權利要求1或2所述的系統(tǒng),其中所述熱插拔管理模塊被配置為響應于所述多 個熱插拔分組服務模塊的訂閱請求而為其訂閱感興趣的設備類型,以及其中所述熱插拔管 理模塊被進一步配置為基于所述操作命令所針對的設備的類型和所述多個熱插拔分組服 務模塊的訂閱,來調用相應熱插拔分組服務模塊。4. 根據權利要求1所述的系統(tǒng),其中所述用戶經由所述用戶命令接口模塊輸入的操作 命令通過用戶命令服務模塊調用所述熱插拔接口庫提供的相應接口,而被發(fā)送給所述熱插 拔管理模塊。5. 根據權利要求1、2和4其中任一項所述的系統(tǒng),其中所述熱插拔接口庫被配置為提 供第一組應用程序接口,所述第一組應用程序接口被配置用于所述用戶命令接口模塊與所 述熱插拔管理模塊之間的交互。6. 根據權利要求1或2所述的系統(tǒng),其中所述熱插拔接口庫被配置為提供第二組應用 程序接口,所述第二組應用程序接口被配置用于所述多個熱插拔分組服務模塊與所述熱插 拔管理模塊之間的交互。7. 根據權利要求1或2所述的系統(tǒng),其中所述熱插拔管理模塊包括: 客戶端管理模塊,被配置用于管理所述熱插拔管理模塊與所述用戶命令接口模塊之間 的交互; 信道管理模塊,被配置用于管理所述熱插拔管理模塊與所述多個熱插拔分組服務模塊 之間的交互; 事件管理模塊,被配置用于監(jiān)聽來自所述操作系統(tǒng)的內核中的與PCIE設備熱插拔相 關的事件;以及 中心控制模塊,被配置用于響應于來自所述客戶端管理模塊、所述信道管理模塊和所 述事件管理模塊的請求,調用所述操作系統(tǒng)提供的接口、所述操作系統(tǒng)的內核和相應的熱 插拔分組服務模塊其中至少一個,執(zhí)行相應操作。8. 根據權利要求1或2所述的系統(tǒng),其中所述操作系統(tǒng)是LINUX,以及其中所述熱插拔 管理模塊通過LINUX系統(tǒng)中的智能平臺管理接口庫提供的接口、外部組件互連庫提供的接 口、內核調用接口和內核事件,對PCIE設備執(zhí)行與熱插拔相關的操作。9. 根據權利要求1或2所述的系統(tǒng),其中所述熱插拔管理模塊與所述用戶命令接口模 塊和所述多個熱插拔分組服務模塊其中至少一個基于套接字接口進行交互。10. 根據權利要求1或2所述的方法,其中所述操作命令包括:顯示命令、加電命令、斷 電命令、配置命令、取消配置命令其中一個或者多個。11. 根據權利要求1或2所述的方法,其中所述PCIE設備熱插拔涉及以下狀態(tài): 空狀態(tài),指示插槽中沒有插入卡; 未加電狀態(tài),指示插槽中插入有卡但尚未加電; 已加電狀態(tài),指示插槽中的卡已加電但尚未配置; 已配置狀態(tài),指示插槽中的卡已被配置;以及 維護狀態(tài),指示插槽中的卡的配置操作或者取消配置操作失敗,其中在重新嘗試配置 操作或取消配置操作成功后,狀態(tài)將改變?yōu)樗鲆雅渲脿顟B(tài)或者所述已加電狀態(tài)。12. -種用于管理外部組件快速互連(PCIE)熱插拔操作的方法,包括: 通過用戶命令接口模塊接收來自用戶的操作命令; 響應于接收到所操作命令,通過熱插拔接口庫提供的接口向熱插拔管理模塊傳送所述 操作命令; 響應于接收到傳送來的所述操作命令,通過熱插拔管理模塊借助于操作系統(tǒng)提供的接 口、所述操作系統(tǒng)的內核和多個熱插拔分組服務模塊中的相應熱插拔分組服務模塊其中至 少一個,來執(zhí)行所述操作命令。13. 根據權利要求12所述的方法,其中所述多個熱插拔分組服務模塊包括與設備類 型對應的熱插拔分組服務模塊和所有設備類型公用的平臺熱插拔分組服務模塊,其中所述 與設備類型對應的熱插拔分組服務模塊被配置為向相應類型的設備提供特定的熱插拔相 關服務,其中所述平臺熱插拔分組服務模塊被配置為向所有類型的設備提供所需的基礎服 務。14. 根據權利要求12或13所述的方法,進一步包括響應于所述多個熱插拔分組服務模 塊的訂閱請求,通過所述熱插拔管理模塊而為其訂閱感興趣的設備類型,以及 其中通過所述熱插拔管理模炔基于所述操作命令所針對的設備的類型和所述多個熱 插拔分組服務模塊的訂閱,來調用相應熱插拔分組服務模塊。15. 根據權利要求12所述的方法,其中所述用戶經由所述用戶命令接口模塊輸入的操 作命令通過用戶命令服務模塊調用所述熱插拔接口庫提供的相應接口,而被發(fā)送給所述熱 插拔管理模塊。16. 根據權利要求12、13和15其中任何一項所述的方法,其中所述熱插拔接口庫被配 置為提供第一組應用程序接口,所述第一組應用程序接口被配置用于所述用戶命令接口模 塊與所述熱插拔管理模塊之間的交互。17. 根據權利要求12或13所述的方法,其中所述熱插拔接口庫被配置為提供第二組應 用程序接口,所述第二組應用程序接口被配置用于所述多個熱插拔分組服務模塊與所述熱 插拔管理模塊之間的交互。18. 根據權利要求12或13所述的方法,其中所述熱插拔管理模塊進一步包括客戶端管 理模塊、信道管理模塊、事件管理模塊和中心控制模塊,所述熱插拔管理模塊分別通過客戶 端管理模塊來管理與所述用戶命令接口模塊之間的交互,通過所述信道管理模塊管理與所 述多個熱插拔分組服務模塊之間的交互;通過所述事件管理模塊監(jiān)聽來自所述操作系統(tǒng)的 內核中的與PCIE設備熱插拔相關的事件,以及通過所述中心控制模塊來響應于來自客戶 端管理模塊、信道管理模塊和事件管理模塊的請求,調用所述操作系統(tǒng)提供的接口、所述操 作系統(tǒng)的內核和相應的熱插拔分組服務模塊其中至少一個,執(zhí)行相應操作。19. 根據權利要求12或13所述的方法,其中所述操作系統(tǒng)是LINUX,以及其中所述熱 插拔管理模塊通過LINUX系統(tǒng)中的智能平臺管理接口庫提供的接口、外部組件互連庫提供 的接口、內核調用接口和內核事件對PCIE設備,執(zhí)行與熱插拔相關的操作。20. 根據權利要求12或13所述的方法,其中所述熱插拔管理模塊與所述用戶命令接口 模塊和所述多個熱插拔分組服務模塊其中至少一個基于套接字接口進行交互。21. 根據權利要求12所述的方法,其中所述操作命令包括:顯示命令、加電命令、斷電 命令、配置命令、取消配置命令其中一個或者多個。22. 根據權利要求12所述的方法,其中所述PCIE設備熱插拔涉及以下狀態(tài): 空狀態(tài),指示插槽中沒有插入卡; 未加電狀態(tài),指示插槽中插入有卡但尚未加電; 已加電狀態(tài),指示插槽中的卡已加電但尚未配置; 已配置狀態(tài),指示插槽中的卡已被配置;以及 維護狀態(tài),指示插槽中的卡的配置操作或者取消配置操作失敗,其中在重新嘗試配置 操作或取消配置操作成功后,狀態(tài)將改變?yōu)樗鲆雅渲脿顟B(tài)或者所述已加電狀態(tài)。23. -種計算機程序產品,其上包括程序代碼,所述程序代碼在被處理器上執(zhí)行時,致 使所述處理器執(zhí)行根據權利要求12至22中任一項所述的方法。
【文檔編號】G06F13/38GK105893293SQ201410813970
【公開日】2016年8月24日
【申請日】2014年12月18日
【發(fā)明人】鄒勇, 魏巍, 胡冰, 劉瑞芳, 李友兵
【申請人】伊姆西公司