專(zhuān)利名稱:用于設(shè)備資源分配和再平衡的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明的一個(gè)或多個(gè)實(shí)施例一般地涉及用于為熱插拔設(shè)備分配資源,或用于為已 有設(shè)備執(zhí)行資源再平衡,以便支持熱插拔設(shè)備所需的資源的系統(tǒng)和方法。
背景技術(shù):
對(duì)于操作地耦合到計(jì)算機(jī)系統(tǒng)內(nèi)的PCI總線的外圍組件互連(PCI)或PCI express (或PCIe)設(shè)備,如果這些設(shè)備未被分配適當(dāng)資源,這些設(shè)備可能不能工作。所述資 源可包括輸入/輸出(I/O)地址、存儲(chǔ)器地址、總線號(hào)等。當(dāng)計(jì)算機(jī)加電時(shí),基本輸入/輸 出系統(tǒng)(BIOS)可以給所有板上(或已有)設(shè)備分配資源,并且為新插入的設(shè)備(或熱插拔 設(shè)備)保留有限量的資源。在某些情況下,如果當(dāng)計(jì)算機(jī)系統(tǒng)運(yùn)行時(shí)設(shè)備被熱插入,則該系統(tǒng)探查該熱插拔 設(shè)備所需的資源要求,從而系統(tǒng)可以為熱插拔設(shè)備從已有設(shè)備分配識(shí)別出的資源。有時(shí),已 有設(shè)備可能沒(méi)有足夠的可用資源可被分配給該熱插拔設(shè)備。在這種情況下,該熱插拔設(shè)備 可能不能以用戶所希望的方式操作。在基于Solaris 的計(jì)算機(jī)系統(tǒng)中,BIOS(或Open Boot program(OBP))探查或 編程已經(jīng)耦合到系統(tǒng)的設(shè)備,并且當(dāng)系統(tǒng)加電時(shí)給這些設(shè)備分配資源。之后,操作系統(tǒng)(OS) 引導(dǎo)代碼一個(gè)接一個(gè)地讀取這些設(shè)備的配置空間,并且收集所分配的資源的信息,然后計(jì) 算各種可用資源?;谑占陀?jì)算的信息,設(shè)置描述每個(gè)設(shè)備的各種資源的屬性。在建立 了每個(gè)設(shè)備的屬性之后,資源管理器產(chǎn)生全局鏈表,從而可用資源可由新插入的或熱插拔 設(shè)備識(shí)別。然而,當(dāng)設(shè)備被熱插入到系統(tǒng)內(nèi),并且在該設(shè)備的直接父節(jié)點(diǎn)處沒(méi)有可用于這種 設(shè)備的足夠資源時(shí),常規(guī)的資源管理器可能無(wú)法進(jìn)行資源分配。另外,不能更新已經(jīng)向熱 插拔設(shè)備分配或給予了資源的每個(gè)已有設(shè)備的屬性,以反映這些資源現(xiàn)在已被分配給了該 熱插拔設(shè)備。
發(fā)明內(nèi)容
在至少一個(gè)實(shí)施例中,提供了一種用于從計(jì)算機(jī)內(nèi)的多個(gè)板上設(shè)備節(jié)點(diǎn)向熱插拔 設(shè)備節(jié)點(diǎn)提供資源的裝置。該裝置包括資源管理器,其被配置為通過(guò)總線系統(tǒng)從熱插拔設(shè) 備節(jié)點(diǎn)接收指示一組所希望的資源的資源請(qǐng)求。該資源管理器還被配置為在一個(gè)父設(shè)備和 定位在該父設(shè)備節(jié)點(diǎn)之上的至少一個(gè)上層設(shè)備節(jié)點(diǎn)中探查該組所希望的資源。該資源管理 器還被配置為通過(guò)總線系統(tǒng)從所述父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的一個(gè)或 多個(gè)節(jié)點(diǎn)提供該組所希望的資源,以便傳輸?shù)剿鰺岵灏卧O(shè)備節(jié)點(diǎn),從而使得所述熱插拔 設(shè)備節(jié)點(diǎn)能夠以預(yù)期方式操作。
在所附的權(quán)利要求書(shū)中詳細(xì)指出了本發(fā)明的實(shí)施例。然而,通過(guò)結(jié)合附圖參考下 面的詳細(xì)描述,將會(huì)更加明了并且將會(huì)最好地理解各種實(shí)施例的其它特征,其中
圖1示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于分配和再平衡資源的系統(tǒng);圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于為熱插拔設(shè)備分配資源的方法;圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于再平衡來(lái)自一個(gè)或多個(gè)設(shè)備的資源, 以便將這些資源分配給熱插拔設(shè)備的方法;以及圖4示出了可由資源管理器建立標(biāo)記列表的方式的例子。
具體實(shí)施例方式此處公開(kāi)了本發(fā)明的詳細(xì)實(shí)施例。然而,應(yīng)當(dāng)理解,公開(kāi)的實(shí)施例僅是本發(fā)明的 示例,本發(fā)明可被以各種以及替代形式表達(dá)。這些圖不必是成比例的,某些特征可被擴(kuò)大或 被最小化,以便示出特定組件的細(xì)節(jié)。因此,此處公開(kāi)的特定結(jié)構(gòu)和功能細(xì)節(jié)不能被解釋為 限制,而僅是權(quán)利要求的代表性基礎(chǔ),和/或用于教導(dǎo)本領(lǐng)域技術(shù)人員以便不同地采用本 發(fā)明的代表性基礎(chǔ)。圖1示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于分配和再平衡計(jì)算機(jī)13內(nèi)的資源的 系統(tǒng)10。系統(tǒng)10包括資源管理器12和設(shè)備樹(shù)14。在一個(gè)例子中,資源管理器12可以包 括,但不限于,任意數(shù)目的微處理器、ASIC、IC、存儲(chǔ)器設(shè)備以及計(jì)算機(jī)13內(nèi)的彼此聯(lián)系以 便執(zhí)行此處描述的各種功能的軟件代碼。在另一個(gè)例子中,資源管理器12可以包括計(jì)算機(jī) 程序產(chǎn)品,該計(jì)算機(jī)程序產(chǎn)品包括計(jì)算機(jī)可讀介質(zhì)以及編碼在其上的計(jì)算機(jī)程序邏輯,當(dāng) 被在計(jì)算機(jī)13內(nèi)執(zhí)行時(shí),所述計(jì)算機(jī)程序邏輯執(zhí)行此處描述的各種功能。設(shè)備樹(shù)14包括根節(jié)點(diǎn)16和多個(gè)設(shè)備節(jié)點(diǎn)18。每個(gè)設(shè)備節(jié)點(diǎn)18被一般地定義為 計(jì)算機(jī)13內(nèi)的可操作地耦合到一個(gè)或多個(gè)基于硬件的設(shè)備的至少一個(gè)插槽(未示出)。如 圖1所示,設(shè)備節(jié)點(diǎn)18可被劃分在不同行中。例如,行1包括設(shè)備節(jié)點(diǎn)(1-1)-(1_5);行 2包括設(shè)備節(jié)點(diǎn)(2-1)-(2-7);行3包括設(shè)備節(jié)點(diǎn)(3-1)-(3-10);并且行4包括設(shè)備節(jié)點(diǎn) (4-1)-(4-10)。出于描述的目的,樹(shù)14中的節(jié)點(diǎn)18可以彼此建立家族關(guān)系。例如,設(shè)備節(jié) 點(diǎn)(1-1)可被定義為設(shè)備節(jié)點(diǎn)(2-1)_(2-3)的父親,設(shè)備節(jié)點(diǎn)(3-5)的祖父,以及設(shè)備節(jié)點(diǎn) (4-4)-(4-5)的曾祖父。下面將更詳細(xì)地描述設(shè)備節(jié)點(diǎn)相對(duì)于彼此的關(guān)系關(guān)聯(lián)。根節(jié)點(diǎn)16和設(shè)備節(jié)點(diǎn)18通過(guò)總線系統(tǒng)20可操作地彼此耦合。總線系統(tǒng)20使得 能夠在計(jì)算機(jī)13內(nèi)的中央處理單元(CPU)(未示出)和設(shè)備節(jié)點(diǎn)18的設(shè)備之間進(jìn)行通信。 在一個(gè)例子中,總線系統(tǒng)20可被實(shí)現(xiàn)為外圍組件互連(PCI)總線或PCI的其它適合的變 體,諸如但不限于PCIe和PCIX。在一個(gè)例子中,設(shè)備節(jié)點(diǎn)18的插槽可以接收一般安裝在計(jì)算機(jī)主板上的各種 IC (或其它平面設(shè)備)。在另一個(gè)例子中,設(shè)備節(jié)點(diǎn)18的插槽可被實(shí)現(xiàn)為用于接收各種擴(kuò)展 卡的插座。在這些情況下,IC和擴(kuò)展卡被一般地定義為設(shè)備。設(shè)備節(jié)點(diǎn)18的設(shè)備可以包括 橋接器(或交換機(jī))或端點(diǎn)設(shè)備(諸如,但不限于,網(wǎng)卡、存儲(chǔ)設(shè)備、或通用串行總線(USB) 適配器等)。PCI控制器(未示出)與PCI總線20 —起工作,以便使得能夠在設(shè)備節(jié)點(diǎn)18 的設(shè)備和CPU之間進(jìn)行通信和/或數(shù)據(jù)交換。已知PCI總線20可被可操作地耦合到計(jì)算 機(jī)系統(tǒng)內(nèi)的非基于PCI的總線。這種非基于PCI的總線和其相應(yīng)適配器可被定義為具有其 各設(shè)備節(jié)點(diǎn)18的葉子設(shè)備。葉子設(shè)備的例子可以包括,但不限于,USB總線適配器、工業(yè)標(biāo) 準(zhǔn)體系結(jié)構(gòu)(ISA)總線適配器、Cardbus適配器和Express Card適配器。一般地,當(dāng)計(jì)算機(jī)13加電時(shí),BI0S/0BP為設(shè)備節(jié)點(diǎn)18的所有板上設(shè)備分配資源。然而,當(dāng)一個(gè)設(shè)備被熱插入(例如,熱插拔設(shè)備19)特定插槽(例如,熱插拔設(shè)備節(jié)點(diǎn))時(shí), 可能沒(méi)有足夠的可用資源可被提供給該熱插拔設(shè)備19??赡鼙仨殢母腹?jié)點(diǎn)或其它上層設(shè)備 節(jié)點(diǎn)找到這些資源,從而這些資源可被提供給熱插拔設(shè)備19。熱插拔設(shè)備19被一般地定義 為在BI0S/0BP已經(jīng)為板上設(shè)備節(jié)點(diǎn)分配資源之后插入插槽的設(shè)備。資源管理器12與設(shè)備樹(shù)14協(xié)作以便找到可用資源,并且將這些資源提供給熱插 拔設(shè)備19。在資源管理器12不能定位熱插拔設(shè)備19所需資源的情況下,資源管理器12執(zhí) 行再平衡操作,以便為熱插拔設(shè)備19獲得所需的資源??杀环峙浠蛱峁┙o熱插拔設(shè)備19 的各種資源可以包括,但不限于,可用總線號(hào)、I/O地址、存儲(chǔ)器地址和/或可預(yù)取存儲(chǔ)器地 址。圖2示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于給熱插拔設(shè)備19分配資源的方法50。 在操作52,資源管理器12接收來(lái)自熱插拔設(shè)備19的資源要求。一般地,每個(gè)設(shè)備包括指示 該特定設(shè)備使用的資源類(lèi)型的屬性。如上所述,熱插拔設(shè)備19可能需要資源,以便以期望 的方式操作。這種資源可以包括,但不限于,各種可用總線號(hào)、I/O地址、存儲(chǔ)器地址、和/ 或可預(yù)取存儲(chǔ)器地址。在一個(gè)例子中,基于橋接器/交換機(jī)的設(shè)備可能需要一個(gè)連續(xù)的總 線范圍。葉子設(shè)備節(jié)點(diǎn)也可能請(qǐng)求I/O地址、存儲(chǔ)器地址、和/或可預(yù)取存儲(chǔ)器地址。一旦熱插拔設(shè)備19被插入插槽,操作系統(tǒng)(例如,通常為設(shè)備驅(qū)動(dòng)程序)檢測(cè)熱 插拔設(shè)備19的存在。資源管理器12從熱插拔設(shè)備19接收所希望的資源要求。資源管理 器12探查該熱插拔設(shè)備的父節(jié)點(diǎn)的可用資源,以便定位熱插拔設(shè)備19所需的資源。在一 個(gè)例子中,在熱插拔設(shè)備19需要特定一組地址的情況下,資源管理器12可以基于通過(guò)熱插 拔設(shè)備19的屬性讀取的或從熱插拔設(shè)備19的屬性接收的對(duì)齊、基地址、長(zhǎng)度或其它適合的 信息,計(jì)算這些地址,或確定這些地址的可用性。下面的例子描述資源管理器12計(jì)算熱插拔設(shè)備19所需要的特定一組地址的方 式。如果熱插拔設(shè)備19需要長(zhǎng)度為0x2000字節(jié)的存儲(chǔ)器空間,則資源管理器12識(shí)別出該 資源要求的對(duì)齊是0x2000字節(jié)的對(duì)齊。然后,資源管理器12檢查包含熱插拔設(shè)備19的節(jié) 點(diǎn)的直接父節(jié)點(diǎn)內(nèi)的可用存儲(chǔ)器地址。如果資源管理器12確定存在一個(gè)可用存儲(chǔ)器范圍 (例如,從0x123000開(kāi)始到0x127999的存儲(chǔ)器地址),則資源管理器12為熱插拔設(shè)備19分 配從基地址0x124000到0x125999的地址。由于基地址0x124000是所請(qǐng)求的長(zhǎng)度0x2000 的整數(shù)倍,滿足對(duì)齊要求。由PCI配置器探查和編程每個(gè)熱插拔設(shè)備19。PCI配置器被一般地定義為操作系 統(tǒng)內(nèi)的使得能夠與資源管理器12或計(jì)算機(jī)13內(nèi)的其它適合接口通信的邏輯。PCI配置器 被配置成探查和編程這些設(shè)備。在操作54,資源管理器12確定是否可以獲得來(lái)自熱插拔設(shè)備19的所需資源要求, 而不進(jìn)行再平衡。例如,資源管理器12檢查直接在該熱插拔設(shè)備節(jié)點(diǎn)之上的設(shè)備節(jié)點(diǎn),以 便確定是否存在足夠的資源,以便滿足熱插拔設(shè)備19的資源要求。如果存在可從父節(jié)點(diǎn)獲 得的足夠資源,則方法50進(jìn)入操作56。如果父節(jié)點(diǎn)中沒(méi)有足夠的可用資源,則方法50進(jìn)入 方法100,以便執(zhí)行再平衡操作。下面將結(jié)合圖3更詳細(xì)地描述再平衡操作。在操作56,資源管理器12更新父節(jié)點(diǎn)的設(shè)備的屬性,以便反映作為向熱插拔設(shè)備 19提供資源的結(jié)果而可能發(fā)生的任意分配改變。類(lèi)似地,資源管理器12更新熱插拔設(shè)備 19的屬性,以便反映當(dāng)熱插拔設(shè)備19接收到所希望的資源時(shí)將發(fā)生的分配改變。
在操作58,資源管理器12將資源信息(例如,基地址和長(zhǎng)度)返回給PCI配置器(或調(diào)用器)。
在操作60,PCI配置器對(duì)包含在熱插拔設(shè)備19內(nèi)的設(shè)備寄存器編程,以便向其分配新接收到的資源。
下面示出了從熱插拔設(shè)備19的PCI配置器對(duì)資源管理器12的資源請(qǐng)求的例子
typedef struct perim_res—req{
enum type;/T。/MEM/PMEM/BuS num*/
uint—t flags;/*General flags */
uint64 t len/*Requcsted al location length*/
uint64 t addr;/*SpecifiC base address requested*/
uint64 t boundbuse/*Base address of the area for卻/
/*the al located resource to be*/
/*restricted to.
uint64一t boundlen/*Length of the area,starting卻/
/*from ra boundbase,for the卻{
/*al located resource to be*/
/*restricted to.卻/
uint64一t align_mask/*A1ignment mask used for卻/
/*al located base address*/
struc—pcirm_res—req*next;
}Deirm res req t
下面直接示出向熱插拔設(shè)備的PCI配置器返回分配的資源的來(lái)
自資源管理器12的請(qǐng)求的例子
typedef struct peirm_res{
enum type;
uint64 t base;
unit64 t len
stuct pcirm_res*next;
}DCirm res t.
圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于再平衡資源的方法100。在操作102,資源管理器12遍歷可是包含熱插拔設(shè)備19的節(jié)點(diǎn)18的祖父節(jié)點(diǎn)或更遠(yuǎn)節(jié)點(diǎn)的節(jié)點(diǎn)14。熱插拔設(shè)備19的這種祖父或更遠(yuǎn)節(jié)點(diǎn)被一般地定義為上層節(jié)點(diǎn)。一般地,資源管理器12可以識(shí)別出哪些資源將被修改或從父設(shè)備節(jié)點(diǎn)和/或上層設(shè)備節(jié)點(diǎn)內(nèi)的設(shè)備中移動(dòng),以便獲得熱插拔設(shè)備19的資源要求。例如,再平衡操作可以識(shí)別出,可以為父節(jié)點(diǎn)和上層節(jié)點(diǎn)中的已有設(shè)備修改總線范圍,或可以從父節(jié)點(diǎn)和上層節(jié)點(diǎn)內(nèi)的設(shè)備移動(dòng)i/o和存儲(chǔ)器地址,以便滿足該熱插拔設(shè)備的資源要求。
在操作104,資源管理器12產(chǎn)生一個(gè)鏈表,以便記錄或跟蹤關(guān)于設(shè)備樹(shù)lo內(nèi)的設(shè)備(包括板上設(shè)備和/或熱插拔設(shè)備19)之間的資源的預(yù)期移動(dòng)(或資源重分配)的細(xì)節(jié)。例如,該鏈表可以包含詳細(xì)說(shuō)明可以為設(shè)備樹(shù)10內(nèi)受影響的設(shè)備修改總線范圍的方式,或跟蹤各種設(shè)備節(jié)點(diǎn)18的以前分配的I/O地址和/或存儲(chǔ)器地址的預(yù)期重新分配的信息。在操作106,資源管理器12與PCI配置器通信,從而每個(gè)設(shè)備掛起其操作。PCI配 置器對(duì)父節(jié)點(diǎn)和上層節(jié)點(diǎn)的受影響的設(shè)備內(nèi)的各種寄存器編程,以便反映可以響應(yīng)在操作 102識(shí)別出的資源的修改或移動(dòng)而發(fā)生的資源分配。在操作107,PCI配置器在重新編程之后重新激活被掛起的設(shè)備的操作。在操作108,PCI配置器更新每個(gè)受影響的(或受沖擊的)設(shè)備(包括熱插拔設(shè)備 19)的屬性,以便同步到在操作106確立的新資源。在操作110,資源管理器12將資源信息(例如,基地址和長(zhǎng)度)返回(或提供)給 PCI配置器。在操作112,PCI配置器對(duì)熱插拔設(shè)備19內(nèi)包含的設(shè)備寄存器編程,以便將從父節(jié) 點(diǎn)和上層節(jié)點(diǎn)(如果適用,包括來(lái)自父節(jié)點(diǎn))的設(shè)備新接收的資源分配給它。參考圖1,下面緊接著闡述由資源管理器12執(zhí)行的分配和再平衡操作的例子。熱 插拔設(shè)備19可被插入插槽,以便形成定位在設(shè)備節(jié)點(diǎn)(3-5)和設(shè)備節(jié)點(diǎn)(4-4)和(4-5)之 間的熱插拔設(shè)備節(jié)點(diǎn)22。資源管理器12探查設(shè)備節(jié)點(diǎn)(3-5),以便確定是否存在足夠的可 用資源以支持熱插拔設(shè)備22所需的資源。例如假設(shè)資源管理器12不能在設(shè)備節(jié)點(diǎn)(3-5) 中找到用于熱插拔設(shè)備節(jié)點(diǎn)22的足夠資源,資源管理器12確定將要執(zhí)行再平衡操作。資源管理器12遍歷熱插拔設(shè)備節(jié)點(diǎn)22之上的設(shè)備節(jié)點(diǎn)18 (例如,節(jié)點(diǎn)(1_1)、 (2-1)、(2-2)、(2-3)、(3-5)和(4_4)),以便定位熱插拔設(shè)備19所希望的資源。資源管理器 12確定可以從熱插拔設(shè)備節(jié)點(diǎn)22之上的設(shè)備節(jié)點(diǎn)獲得足夠資源,以便分配給熱插拔設(shè)備 節(jié)點(diǎn)22。由于可從父節(jié)點(diǎn)和上層設(shè)備節(jié)點(diǎn)(1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4_4)移動(dòng) 或分配資源,定位在這些設(shè)備節(jié)點(diǎn)內(nèi)的設(shè)備必須被編程,以便反映資源分配的改變。資源管 理器12建立用于需要被重新編程的設(shè)備節(jié)點(diǎn)(1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4_4) 的鏈表,以便反映來(lái)自這些設(shè)備節(jié)點(diǎn)的資源將對(duì)熱插拔設(shè)備節(jié)點(diǎn)22可用。在對(duì)設(shè)備節(jié)點(diǎn) (1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4_4)的資源分配改變進(jìn)行編程之前,資源管理器12 掛起設(shè)備節(jié)點(diǎn)(1-1)之下的所有設(shè)備的操作,包括設(shè)備節(jié)點(diǎn)(1-1)內(nèi)的設(shè)備在內(nèi)。一般地, 由于節(jié)點(diǎn)(1-1)之下的每個(gè)兒子或?qū)O子都可能受到重新編程的影響,所以節(jié)點(diǎn)(1-1)之下 的整個(gè)子樹(shù)被掛起。PCI 配置器按照列表對(duì)設(shè)備節(jié)點(diǎn)(1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4-4)重 新編程,以便反映從父節(jié)點(diǎn)和上層設(shè)備節(jié)點(diǎn)到熱插拔設(shè)備節(jié)點(diǎn)22的資源再分配。在節(jié)點(diǎn) (1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4_4)的設(shè)備已被重新編程之后,資源管理器12繼 續(xù)節(jié)點(diǎn)(1-1)之下的所有設(shè)備節(jié)點(diǎn)的操作,包括節(jié)點(diǎn)(1-1)本身,并且與PCI配置器通信, 以便以從節(jié)點(diǎn)(1-1)之下的設(shè)備節(jié)點(diǎn)提供的資源對(duì)熱插拔設(shè)備19的寄存器重新編程。如 圖1所示,熱插拔設(shè)備節(jié)點(diǎn)22可以包括設(shè)備節(jié)點(diǎn)(4-11)、(5-1)、(6-1)和(6-2) 0在一個(gè) 例子中,設(shè)備節(jié)點(diǎn)(4-11)和(5-1)可以對(duì)應(yīng)于各種交換機(jī),可能是對(duì)PCI總線22的擴(kuò)展, 并且設(shè)備節(jié)點(diǎn)(6-1)和(6-2)可以各自包含端點(diǎn)設(shè)備。對(duì)于需要被重新編程的每個(gè)設(shè)備節(jié)點(diǎn),資源中可能存在多于一個(gè)部分需要被移 動(dòng)。為資源中將被移動(dòng)的部分定義下列數(shù)據(jù)結(jié)構(gòu)typedef struct pcirm—rbl—map{
enumtype;/*/he type of resource to be moved*/
intreg—num;/*/he BAR#to be reprogrammed*/
uint64 tbase/*/he base of the resource to bemoved.*/
uint64一tlength;/*/he length of the resource to bemoved.*/
uint64 tnew base;/*/he resource’S target base aftermoved.*/
uint64一tnew—length/*The resource’S target lengthafter moved.*{
pcirm rbl map t*next /*Next resource to be moved.*/
}DCirm rbl map t
繼續(xù)參考上面為了從節(jié)點(diǎn)(卜1)、(2一1)、(2—2)、(2—3)、(3—5)和(4—4)向熱插拔設(shè)備節(jié)點(diǎn)22移動(dòng)資源而提供的例子,圖4示出了可以建立鏈表以指示如何從這些節(jié)點(diǎn)中的一個(gè)節(jié)點(diǎn)(例如,節(jié)點(diǎn)(卜1))移動(dòng)總線號(hào)、z/0地址和存儲(chǔ)器地址的方式。如圖4所示的鏈表指示,對(duì)于節(jié)點(diǎn)(卜1),從3到8的總線號(hào)將被改變,并且Oxl00—0x120的z/0地址將改變?yōu)镺x300—0x320,并且這需要對(duì)節(jié)點(diǎn)(卜1)的第二個(gè)基地址寄存器(BAR)重新編程。在進(jìn)行了重新編程之后,更多資源可對(duì)節(jié)點(diǎn)(卜1)的兒子可用。然后, 節(jié)點(diǎn)(2一1)將被根據(jù)關(guān)聯(lián)于它的鏈表更新,并且依此類(lèi)推。最后所有受影響的節(jié)點(diǎn)都將被重新編程。此時(shí),在作為熱插拔設(shè)備19的父節(jié)點(diǎn)的節(jié)點(diǎn)(3—5)處,更多資源將可用。即,將使得足夠的資源可用于熱插拔設(shè)備19以使其按照預(yù)期工作。
資源管理器12一般在遍歷熱插拔設(shè)備節(jié)點(diǎn)22的上層節(jié)點(diǎn)時(shí)建立再平衡映射,以跟蹤作為設(shè)備節(jié)點(diǎn)(卜1)、(2一1)、(2—2)、(2—3)、(3—5)和(4—4)向熱插拔設(shè)備節(jié)點(diǎn)22提供資源的結(jié)果,可能需要資源分配改變的設(shè)備節(jié)點(diǎn)(例如,上面例子中提及的設(shè)備節(jié)點(diǎn)(1一1)、(2一1)、(2—2)、(2-3)、(3-5)矛口(4—4))。
為了支持再平衡映射,如下面例子示出的,可以給dev—info—t結(jié)構(gòu)增加指針
/*
*Null if thiS device node iS not in the re—balance map
*Point to the next device node to be re—programmed
*Point to itsclf if thiS iS the last device in the re—balance map
*/
dev info t,pc irm next reb l
上述指針鏈接設(shè)備節(jié)點(diǎn)(卜1)、(2一1)、(2—3)、(3—5)和(4—4),并且作為標(biāo)志指示設(shè)備節(jié)點(diǎn)是否在再平衡映射內(nèi)。如果指針為NULL,則這種狀態(tài)指示該設(shè)備節(jié)點(diǎn)可能不需要為了再平衡而被重新編程。
為了支持上述的表l,如下面例子示出的,可以給dev—info—t結(jié)構(gòu)增加另一個(gè)指針
/*
*re-balance map of this device node. It is a linked list for all the氺resources to this device node to be moved.*/pcirm_rbl_map_t*rbl_map ;一般地,上文公開(kāi)了如果設(shè)備節(jié)點(diǎn)不在再平衡映射中,則在再平衡操作期間,沒(méi) 有來(lái)自該特定設(shè)備節(jié)點(diǎn)的資源必須被移動(dòng)。雖然已經(jīng)說(shuō)明和描述了本發(fā)明的實(shí)施例,這些實(shí)施例不旨在示出并且描述本發(fā)明 的所有可能形式。而是,本說(shuō)明書(shū)中使用的措辭是描述性措辭而不是限制,并且應(yīng)當(dāng)理解, 可以做出各種改變而不脫離本發(fā)明的精神和范圍。根據(jù)本發(fā)明的一個(gè)方面,公開(kāi)了一種用于從計(jì)算機(jī)內(nèi)的多個(gè)板上設(shè)備節(jié)點(diǎn)向熱插 拔設(shè)備節(jié)點(diǎn)提供資源的裝置,該裝置包括資源管理器,所述資源管理器可操作地耦合到包 括所述多個(gè)板上設(shè)備節(jié)點(diǎn)和所述熱插拔設(shè)備節(jié)點(diǎn)的設(shè)備樹(shù),所述資源管理器被配置為通 過(guò)總線系統(tǒng)從所述熱插拔設(shè)備節(jié)點(diǎn)接收指示一組所希望的資源的資源請(qǐng)求;探查直接位于 所述熱插拔設(shè)備節(jié)點(diǎn)之上的父設(shè)備節(jié)點(diǎn),以便確定該父設(shè)備節(jié)點(diǎn)是否能夠向所述熱插拔設(shè) 備節(jié)點(diǎn)提供該組所希望的資源;如果該父節(jié)點(diǎn)不能向所述熱插拔設(shè)備節(jié)點(diǎn)提供該組所希望 的資源,則在父設(shè)備和位于該父設(shè)備節(jié)點(diǎn)之上的至少一個(gè)上層設(shè)備節(jié)點(diǎn)中探查該組所希望 的資源;和通過(guò)總線系統(tǒng)從所述父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的一個(gè)或多個(gè) 節(jié)點(diǎn)提供該組所希望的資源,以便傳輸?shù)剿鰺岵灏卧O(shè)備節(jié)點(diǎn),從而使得所述熱插拔設(shè)備 節(jié)點(diǎn)能夠以預(yù)期方式工作。根據(jù)本發(fā)明的另一個(gè)方面,公開(kāi)了一種用于從計(jì)算機(jī)內(nèi)的多個(gè)板上設(shè)備節(jié)點(diǎn)向熱 插拔設(shè)備節(jié)點(diǎn)提供資源的裝置,該裝置包括資源管理器,所述資源管理器可操作地耦合到 包括所述多個(gè)板上設(shè)備節(jié)點(diǎn)和所述熱插拔設(shè)備節(jié)點(diǎn)的設(shè)備樹(shù),所述資源管理器被配置為 通過(guò)外圍組件互連(PCI)總線系統(tǒng)接收來(lái)自所述熱插拔設(shè)備節(jié)點(diǎn)的指示一組所希望的資 源的資源請(qǐng)求;在父設(shè)備節(jié)點(diǎn)和位于所述父設(shè)備節(jié)點(diǎn)之上的至少一個(gè)上層設(shè)備節(jié)點(diǎn)中探查 該組所希望的資源;和通過(guò)PCI總線系統(tǒng)提供來(lái)自父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié) 點(diǎn)中的一個(gè)或多個(gè)節(jié)點(diǎn)的該組所希望的資源,以傳輸?shù)剿鰺岵灏卧O(shè)備節(jié)點(diǎn),以使得所述 熱插拔設(shè)備節(jié)點(diǎn)能夠以預(yù)期方式操作。根據(jù)本發(fā)明的另一個(gè)方面,公開(kāi)了一種用于從計(jì)算機(jī)內(nèi)的多個(gè)板上設(shè)備節(jié)點(diǎn)向 熱插拔設(shè)備節(jié)點(diǎn)提供資源的方法,所述計(jì)算機(jī)具有包括所述多個(gè)板上設(shè)備節(jié)點(diǎn)和所述熱插 拔設(shè)備節(jié)點(diǎn)的設(shè)備樹(shù),所述方法包括通過(guò)外圍組件互連總線系統(tǒng)接收來(lái)自所述熱插拔設(shè) 備節(jié)點(diǎn)的指示一組所希望的資源的資源請(qǐng)求;在父設(shè)備節(jié)點(diǎn)和位于所述父設(shè)備節(jié)點(diǎn)之上的 至少一個(gè)上層設(shè)備節(jié)點(diǎn)中探查該組所希望的資源;和通過(guò)外圍組件互連總線系統(tǒng)提供來(lái)自 父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的一個(gè)或多個(gè)節(jié)點(diǎn)的該組所希望的資源,以傳 輸?shù)剿鰺岵灏卧O(shè)備節(jié)點(diǎn),以使得所述熱插拔設(shè)備節(jié)點(diǎn)能夠以預(yù)期方式操作。優(yōu)選地,所述板上設(shè)備節(jié)點(diǎn)和所述熱插拔設(shè)備節(jié)點(diǎn)中的每個(gè)包括基于外圍組件互 連的設(shè)備,并且其中由所述父級(jí)別節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的所述一個(gè)或多個(gè) 節(jié)點(diǎn)提供給所述熱插拔設(shè)備節(jié)點(diǎn)的該組所希望的資源包括輸入/輸出地址、存儲(chǔ)器地址和 總線號(hào)。
權(quán)利要求
一種用于從計(jì)算機(jī)內(nèi)的多個(gè)板上設(shè)備節(jié)點(diǎn)向熱插拔設(shè)備節(jié)點(diǎn)提供資源的裝置,所述計(jì)算機(jī)具有包括所述多個(gè)板上設(shè)備節(jié)點(diǎn)和所述熱插拔設(shè)備節(jié)點(diǎn)的設(shè)備樹(shù),所述裝置包括用于通過(guò)總線系統(tǒng)從所述熱插拔設(shè)備節(jié)點(diǎn)接收指示一組所希望的資源的資源請(qǐng)求的裝置;用于探查直接位于所述熱插拔設(shè)備節(jié)點(diǎn)之上的父設(shè)備節(jié)點(diǎn),以便確定該父設(shè)備節(jié)點(diǎn)是否能夠向所述熱插拔設(shè)備節(jié)點(diǎn)提供該組所希望的資源的裝置;用于如果該父節(jié)點(diǎn)不能向所述熱插拔設(shè)備節(jié)點(diǎn)提供該組所希望的資源,則在父設(shè)備和位于該父設(shè)備節(jié)點(diǎn)之上的至少一個(gè)上層設(shè)備節(jié)點(diǎn)中探查該組所希望的資源的裝置;和用于通過(guò)總線系統(tǒng)從所述父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的一個(gè)或多個(gè)節(jié)點(diǎn)提供該組所希望的資源,以便傳輸?shù)剿鰺岵灏卧O(shè)備節(jié)點(diǎn),從而使得所述熱插拔設(shè)備節(jié)點(diǎn)能夠以預(yù)期方式工作的裝置。
2.如權(quán)利要求1所述的裝置,其中所述板上設(shè)備節(jié)點(diǎn)和所述熱插拔設(shè)備節(jié)點(diǎn)中的每個(gè) 包括基于外圍組件互連的設(shè)備。
3.如權(quán)利要求1所述的裝置,其中所述總線系統(tǒng)是基于外圍組件互連的總線系統(tǒng)。
4.如權(quán)利要求1所述的裝置,其中所述熱插拔設(shè)備節(jié)點(diǎn)被定義為在計(jì)算機(jī)內(nèi)的基本 輸入/輸出系統(tǒng)為所述多個(gè)板上設(shè)備節(jié)點(diǎn)分配資源之后,被檢測(cè)到處于計(jì)算機(jī)內(nèi)的設(shè)備節(jié) 點(diǎn)ο
5.如權(quán)利要求1所述的裝置,進(jìn)一步包括用于產(chǎn)生鏈表,以跟蹤來(lái)自所述父設(shè)備節(jié)點(diǎn) 和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的所述一個(gè)或多個(gè)節(jié)點(diǎn)的該組所希望的資源的預(yù)期移動(dòng) 的裝置。
6.如權(quán)利要求5所述的裝置,進(jìn)一步包括用于與調(diào)用器通信,以在所述熱插拔設(shè)備節(jié) 點(diǎn)接收該組所希望的資源之前,掛起所述父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)的操作 的裝置。
7.如權(quán)利要求6所述的裝置,其中所述調(diào)用器訪問(wèn)所述鏈表,以對(duì)所述父設(shè)備節(jié)點(diǎn)和 所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的所述一個(gè)或多個(gè)設(shè)備節(jié)點(diǎn)重新編程,以反映該組所希望的 資源將可用于所述熱插拔設(shè)備節(jié)點(diǎn)。
8.如權(quán)利要求7所述的裝置,進(jìn)一步包括用于更新所述父設(shè)備節(jié)點(diǎn)、所述至少一個(gè)上 層設(shè)備節(jié)點(diǎn)中的所述一個(gè)或多個(gè)設(shè)備節(jié)點(diǎn)、以及所述熱插拔設(shè)備節(jié)點(diǎn)的屬性,以反映該組 所希望的資源將可用于所述熱插拔設(shè)備節(jié)點(diǎn)的裝置。
9.如權(quán)利要求5所述的裝置,其中所述調(diào)用器是外圍組件互連配置器。
10.如權(quán)利要求1所述的裝置,其中由所述父級(jí)別節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn) 中的所述一個(gè)或多個(gè)節(jié)點(diǎn)提供給所述熱插拔設(shè)備節(jié)點(diǎn)的該組所希望的資源包括輸入/輸 出地址、存儲(chǔ)器地址和總線號(hào)。
11.一種用于從具有設(shè)備樹(shù)的計(jì)算機(jī)內(nèi)的多個(gè)板上設(shè)備節(jié)點(diǎn)向熱插拔設(shè)備節(jié)點(diǎn)提供資 源的方法,所述設(shè)備樹(shù)包括所述多個(gè)板上設(shè)備節(jié)點(diǎn)和所述熱插拔設(shè)備節(jié)點(diǎn),該方法包括通過(guò)所述計(jì)算機(jī)中的總線系統(tǒng)從所述熱插拔設(shè)備節(jié)點(diǎn)接收指示一組所希望的資源的 資源請(qǐng)求;探查直接位于所述熱插拔設(shè)備節(jié)點(diǎn)之上的父設(shè)備節(jié)點(diǎn),以便確定該父設(shè)備節(jié)點(diǎn)是否能 夠向所述熱插拔設(shè)備節(jié)點(diǎn)提供該組所希望的資源;如果該父節(jié)點(diǎn)不能向所述熱插拔設(shè)備節(jié)點(diǎn)提供該組所希望的資源,則在父設(shè)備和位于 該父設(shè)備節(jié)點(diǎn)之上的至少一個(gè)上層設(shè)備節(jié)點(diǎn)中探查該組所希望的資源;和通過(guò)該總線系統(tǒng)從所述父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的一個(gè)或多個(gè)節(jié) 點(diǎn)提供該組所希望的資源到所述熱插拔設(shè)備節(jié)點(diǎn),從而使得所述熱插拔設(shè)備節(jié)點(diǎn)能夠以預(yù) 期方式工作。
12.如權(quán)利要求11所述的方法,其中所述熱插拔設(shè)備節(jié)點(diǎn)被定義為在計(jì)算機(jī)內(nèi)的基本 輸入/輸出系統(tǒng)為所述多個(gè)板上設(shè)備節(jié)點(diǎn)分配資源之后,被檢測(cè)到處于計(jì)算機(jī)內(nèi)的設(shè)備節(jié)點(diǎn)。
13.如權(quán)利要求11所述的方法,還包括在發(fā)送來(lái)自所述父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上 層設(shè)備節(jié)點(diǎn)中的所述一個(gè)或多個(gè)節(jié)點(diǎn)的該組所希望的資源之前,產(chǎn)生鏈表以跟蹤來(lái)自所述 父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的所述一個(gè)或多個(gè)節(jié)點(diǎn)的該組所希望的資源 的預(yù)期移動(dòng)。
14.如權(quán)利要求13所述的方法,還包括與調(diào)用器通信,以在發(fā)送來(lái)自所述父設(shè)備節(jié)點(diǎn) 和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的所述一個(gè)或多個(gè)節(jié)點(diǎn)的該組所希望的資源之前,掛起所 述父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)的操作。
15.如權(quán)利要求14所述的方法,還包括利用所述調(diào)用器訪問(wèn)所述鏈表,以對(duì)所述父設(shè) 備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的所述一個(gè)或多個(gè)設(shè)備節(jié)點(diǎn)重新編程,以反映該組 所希望的資源將可用于所述熱插拔設(shè)備節(jié)點(diǎn)。
16.如權(quán)利要求14所述的方法,還包括在對(duì)所述父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備 節(jié)點(diǎn)中的所述一個(gè)或多個(gè)設(shè)備節(jié)點(diǎn)重新編程之后,重新激活所述父設(shè)備節(jié)點(diǎn)和所述至少一 個(gè)上層設(shè)備節(jié)點(diǎn)的操作。
17.如權(quán)利要求16所述的方法,還包括更新所述父設(shè)備節(jié)點(diǎn)、所述至少一個(gè)上層設(shè)備 節(jié)點(diǎn)中的所述一個(gè)或多個(gè)設(shè)備節(jié)點(diǎn)、以及所述熱插拔設(shè)備節(jié)點(diǎn)的屬性,以便反映該組所希 望的資源將可用于所述熱插拔設(shè)備節(jié)點(diǎn)。
18.如權(quán)利要求11所述的方法,其中從所述父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié) 點(diǎn)中的所述一個(gè)或多個(gè)節(jié)點(diǎn)發(fā)送該組所希望的資源還包括發(fā)送來(lái)自所述父設(shè)備節(jié)點(diǎn)和所 述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的所述一個(gè)或多個(gè)節(jié)點(diǎn)的輸入/輸出地址、存儲(chǔ)器地址和總線 號(hào)。
19.一種用于從計(jì)算機(jī)內(nèi)的多個(gè)板上設(shè)備節(jié)點(diǎn)向熱插拔設(shè)備節(jié)點(diǎn)提供資源的裝置,所 述計(jì)算機(jī)具有包括所述多個(gè)板上設(shè)備節(jié)點(diǎn)和所述熱插拔設(shè)備節(jié)點(diǎn)的設(shè)備樹(shù),所述裝置包 括用于通過(guò)外圍組件互連總線系統(tǒng)接收來(lái)自所述熱插拔設(shè)備節(jié)點(diǎn)的指示一組所希望的 資源的資源請(qǐng)求的裝置;用于在父設(shè)備節(jié)點(diǎn)和位于所述父設(shè)備節(jié)點(diǎn)之上的至少一個(gè)上層設(shè)備節(jié)點(diǎn)中探查該組 所希望的資源的裝置;和用于通過(guò)外圍組件互連總線系統(tǒng)提供來(lái)自父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn) 中的一個(gè)或多個(gè)節(jié)點(diǎn)的該組所希望的資源,以傳輸?shù)剿鰺岵灏卧O(shè)備節(jié)點(diǎn),以使得所述熱 插拔設(shè)備節(jié)點(diǎn)能夠以預(yù)期方式操作的裝置。
20.如權(quán)利要求19所述的裝置,其中所述板上設(shè)備節(jié)點(diǎn)和所述熱插拔設(shè)備節(jié)點(diǎn)中的每個(gè)包括基于外圍組件互連的設(shè)備,并且其中由所述父級(jí)別節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的所述一個(gè)或多個(gè)節(jié)點(diǎn)提供給所述熱插拔設(shè)備節(jié)點(diǎn)的該組所希望的資源包括輸入/ 輸出地址、存儲(chǔ)器地址和總線號(hào)。
21.一種用于從計(jì)算機(jī)內(nèi)的多個(gè)板上設(shè)備節(jié)點(diǎn)向熱插拔設(shè)備節(jié)點(diǎn)提供資源的方法,所 述計(jì)算機(jī)具有包括所述多個(gè)板上設(shè)備節(jié)點(diǎn)和所述熱插拔設(shè)備節(jié)點(diǎn)的設(shè)備樹(shù),所述方法包 括通過(guò)外圍組件互連總線系統(tǒng)接收來(lái)自所述熱插拔設(shè)備節(jié)點(diǎn)的指示一組所希望的資源 的資源請(qǐng)求;在父設(shè)備節(jié)點(diǎn)和位于所述父設(shè)備節(jié)點(diǎn)之上的至少一個(gè)上層設(shè)備節(jié)點(diǎn)中探查該組所希 望的資源;和通過(guò)外圍組件互連總線系統(tǒng)提供來(lái)自父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的 一個(gè)或多個(gè)節(jié)點(diǎn)的該組所希望的資源,以傳輸?shù)剿鰺岵灏卧O(shè)備節(jié)點(diǎn),以使得所述熱插拔 設(shè)備節(jié)點(diǎn)能夠以預(yù)期方式操作。
22.如權(quán)利要求21所述的方法,其中所述板上設(shè)備節(jié)點(diǎn)和所述熱插拔設(shè)備節(jié)點(diǎn)中的 每個(gè)包括基于外圍組件互連的設(shè)備,并且其中由所述父級(jí)別節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備 節(jié)點(diǎn)中的所述一個(gè)或多個(gè)節(jié)點(diǎn)提供給所述熱插拔設(shè)備節(jié)點(diǎn)的該組所希望的資源包括輸入/ 輸出地址、存儲(chǔ)器地址和總線號(hào)。
全文摘要
在至少一個(gè)實(shí)施例中,提供了用于從計(jì)算機(jī)內(nèi)的多個(gè)板上設(shè)備節(jié)點(diǎn)向熱插拔設(shè)備節(jié)點(diǎn)提供資源的裝置。該裝置包括資源管理器,其被配置為通過(guò)總線系統(tǒng)從所述熱插拔設(shè)備節(jié)點(diǎn)接收指示一組所希望的資源的資源請(qǐng)求。該資源管理器還被配置為在父設(shè)備和定位在該父設(shè)備節(jié)點(diǎn)之上的至少一個(gè)上層設(shè)備節(jié)點(diǎn)中探查該組所希望的資源。該資源管理器還被配置為通過(guò)總線系統(tǒng)提供來(lái)自父設(shè)備節(jié)點(diǎn)和所述至少一個(gè)上層設(shè)備節(jié)點(diǎn)中的一個(gè)或多個(gè)節(jié)點(diǎn)的該組所希望的資源,以便傳輸?shù)剿鰺岵灏卧O(shè)備節(jié)點(diǎn),從而使得所述熱插拔設(shè)備節(jié)點(diǎn)能夠以預(yù)期方式操作。
文檔編號(hào)G06F13/10GK101989240SQ20101022982
公開(kāi)日2011年3月23日 申請(qǐng)日期2010年7月13日 優(yōu)先權(quán)日2009年7月13日
發(fā)明者G·塔提, W·W·肖, 鄒勇 申請(qǐng)人:甲骨文美國(guó)公司