CN101989240B - 用于设备资源分配和再平衡的系统和方法 - Google Patents
用于设备资源分配和再平衡的系统和方法 Download PDFInfo
- Publication number
- CN101989240B CN101989240B CN201010229823.3A CN201010229823A CN101989240B CN 101989240 B CN101989240 B CN 101989240B CN 201010229823 A CN201010229823 A CN 201010229823A CN 101989240 B CN101989240 B CN 101989240B
- Authority
- CN
- China
- Prior art keywords
- node
- device node
- hot
- resource
- group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
在至少一个实施例中,提供了用于从计算机内的多个板上设备节点向热插拔设备节点提供资源的装置。该装置包括资源管理器,其被配置为通过总线系统从所述热插拔设备节点接收指示一组所希望的资源的资源请求。该资源管理器还被配置为在父设备和定位在该父设备节点之上的至少一个上层设备节点中探查该组所希望的资源。该资源管理器还被配置为通过总线系统提供来自父设备节点和所述至少一个上层设备节点中的一个或多个节点的该组所希望的资源,以便传输到所述热插拔设备节点,从而使得所述热插拔设备节点能够以预期方式操作。
Description
技术领域
本发明的一个或多个实施例一般地涉及用于为热插拔设备分配资源,或用于为已有设备执行资源再平衡,以便支持热插拔设备所需的资源的系统和方法。
背景技术
对于操作地耦合到计算机系统内的PCI总线的外围组件互连(PCI)或PCIexpress(或PCIe)设备,如果这些设备未被分配适当资源,这些设备可能不能工作。所述资源可包括输入/输出(I/O)地址、存储器地址、总线号等。当计算机加电时,基本输入/输出系统(BIOS)可以给所有板上(或已有)设备分配资源,并且为新插入的设备(或热插拔设备)保留有限量的资源。
在某些情况下,如果当计算机系统运行时设备被热插入,则该系统探查该热插拔设备所需的资源要求,从而系统可以为热插拔设备从已有设备分配识别出的资源。有时,已有设备可能没有足够的可用资源可被分配给该热插拔设备。在这种情况下,该热插拔设备可能不能以用户所希望的方式操作。
在基于Solaris的计算机系统中,BIOS(或OpenBootprogram(OBP))探查或编程已经耦合到系统的设备,并且当系统加电时给这些设备分配资源。之后,操作系统(OS)引导代码一个接一个地读取这些设备的配置空间,并且收集所分配的资源的信息,然后计算各种可用资源。基于收集和计算的信息,设置描述每个设备的各种资源的属性。在建立了每个设备的属性之后,资源管理器产生全局链表,从而可用资源可由新插入的或热插拔设备识别。然而,当设备被热插入到系统内,并且在该设备的直接父节点处没有可用于这种设备的足够资源时,常规的资源管理器可能无法进行资源分配。另外,不能更新已经向热插拔设备分配或给予了资源的每个已有设备的属性,以反映这些资源现在已被分配给了该热插拔设备。
发明内容
在至少一个实施例中,提供了一种用于从计算机内的多个板上设备节点向热插拔设备节点提供资源的装置。该装置包括资源管理器,其被配置为通过总线系统从热插拔设备节点接收指示一组所希望的资源的资源请求。该资源管理器还被配置为在一个父设备和定位在该父设备节点之上的至少一个上层设备节点中探查该组所希望的资源。该资源管理器还被配置为通过总线系统从所述父设备节点和所述至少一个上层设备节点中的一个或多个节点提供该组所希望的资源,以便传输到所述热插拔设备节点,从而使得所述热插拔设备节点能够以预期方式操作。
附图说明
在所附的权利要求书中详细指出了本发明的实施例。然而,通过结合附图参考下面的详细描述,将会更加明了并且将会最好地理解各种实施例的其它特征,其中:
图1示出了根据本发明的一个实施例的用于分配和再平衡资源的系统;
图2示出了根据本发明的一个实施例的用于为热插拔设备分配资源的方法;
图3示出了根据本发明的一个实施例的用于再平衡来自一个或多个设备的资源,以便将这些资源分配给热插拔设备的方法;以及
图4示出了可由资源管理器建立标记列表的方式的例子。
具体实施方式
此处公开了本发明的详细实施例。然而,应当理解,公开的实施例仅是本发明的示例,本发明可被以各种以及替代形式表达。这些图不必是成比例的,某些特征可被扩大或被最小化,以便示出特定组件的细节。因此,此处公开的特定结构和功能细节不能被解释为限制,而仅是权利要求的代表性基础,和/或用于教导本领域技术人员以便不同地采用本发明的代表性基础。
图1示出了根据本发明的一个实施例的用于分配和再平衡计算机13内的资源的系统10。系统10包括资源管理器12和设备树14。在一个例子中,资源管理器12可以包括,但不限于,任意数目的微处理器、ASIC、IC、存储器设备以及计算机13内的彼此联系以便执行此处描述的各种功能的软件代码。在另一个例子中,资源管理器12可以包括计算机程序产品,该计算机程序产品包括计算机可读介质以及编码在其上的计算机程序逻辑,当被在计算机13内执行时,所述计算机程序逻辑执行此处描述的各种功能。
设备树14包括根节点16和多个设备节点18。每个设备节点18被一般地定义为计算机13内的可操作地耦合到一个或多个基于硬件的设备的至少一个插槽(未示出)。如图1所示,设备节点18可被划分在不同行中。例如,行1包括设备节点(1-1)-(1-5);行2包括设备节点(2-1)-(2-7);行3包括设备节点(3-1)-(3-10);并且行4包括设备节点(4-1)-(4-10)。出于描述的目的,树14中的节点18可以彼此建立家族关系。例如,设备节点(1-1)可被定义为设备节点(2-1)-(2-3)的父亲,设备节点(3-5)的祖父,以及设备节点(4-4)-(4-5)的曾祖父。下面将更详细地描述设备节点相对于彼此的关系关联。
根节点16和设备节点18通过总线系统20可操作地彼此耦合。总线系统20使得能够在计算机13内的中央处理单元(CPU)(未示出)和设备节点18的设备之间进行通信。在一个例子中,总线系统20可被实现为外围组件互连(PCI)总线或PCI的其它适合的变体,诸如但不限于PCIe和PCIX。
在一个例子中,设备节点18的插槽可以接收一般安装在计算机主板上的各种IC(或其它平面设备)。在另一个例子中,设备节点18的插槽可被实现为用于接收各种扩展卡的插座。在这些情况下,IC和扩展卡被一般地定义为设备。设备节点18的设备可以包括桥接器(或交换机)或端点设备(诸如,但不限于,网卡、存储设备、或通用串行总线(USB)适配器等)。PCI控制器(未示出)与PCI总线20一起工作,以便使得能够在设备节点18的设备和CPU之间进行通信和/或数据交换。已知PCI总线20可被可操作地耦合到计算机系统内的非基于PCI的总线。这种非基于PCI的总线和其相应适配器可被定义为具有其各设备节点18的叶子设备。叶子设备的例子可以包括,但不限于,USB总线适配器、工业标准体系结构(ISA)总线适配器、Cardbus适配器和ExpressCard适配器。
一般地,当计算机13加电时,BIOS/OBP为设备节点18的所有板上设备分配资源。然而,当一个设备被热插入(例如,热插拔设备19)特定插槽(例如,热插拔设备节点)时,可能没有足够的可用资源可被提供给该热插拔设备19。可能必须从父节点或其它上层设备节点找到这些资源,从而这些资源可被提供给热插拔设备19。热插拔设备19被一般地定义为在BIOS/OBP已经为板上设备节点分配资源之后插入插槽的设备。
资源管理器12与设备树14协作以便找到可用资源,并且将这些资源提供给热插拔设备19。在资源管理器12不能定位热插拔设备19所需资源的情况下,资源管理器12执行再平衡操作,以便为热插拔设备19获得所需的资源。可被分配或提供给热插拔设备19的各种资源可以包括,但不限于,可用总线号、I/O地址、存储器地址和/或可预取存储器地址。
图2示出了根据本发明的一个实施例的用于给热插拔设备19分配资源的方法50。在操作52,资源管理器12接收来自热插拔设备19的资源要求。一般地,每个设备包括指示该特定设备使用的资源类型的属性。如上所述,热插拔设备19可能需要资源,以便以期望的方式操作。这种资源可以包括,但不限于,各种可用总线号、I/O地址、存储器地址、和/或可预取存储器地址。在一个例子中,基于桥接器/交换机的设备可能需要一个连续的总线范围。叶子设备节点也可能请求I/O地址、存储器地址、和/或可预取存储器地址。
一旦热插拔设备19被插入插槽,操作系统(例如,通常为设备驱动程序)检测热插拔设备19的存在。资源管理器12从热插拔设备19接收所希望的资源要求。资源管理器12探查该热插拔设备的父节点的可用资源,以便定位热插拔设备19所需的资源。在一个例子中,在热插拔设备19需要特定一组地址的情况下,资源管理器12可以基于通过热插拔设备19的属性读取的或从热插拔设备19的属性接收的对齐、基地址、长度或其它适合的信息,计算这些地址,或确定这些地址的可用性。
下面的例子描述资源管理器12计算热插拔设备19所需要的特定一组地址的方式。如果热插拔设备19需要长度为0x2000字节的存储器空间,则资源管理器12识别出该资源要求的对齐是0x2000字节的对齐。然后,资源管理器12检查包含热插拔设备19的节点的直接父节点内的可用存储器地址。如果资源管理器12确定存在一个可用存储器范围(例如,从0x123000开始到0x127999的存储器地址),则资源管理器12为热插拔设备19分配从基地址0x124000到0x125999的地址。由于基地址0x124000是所请求的长度0x2000的整数倍,满足对齐要求。
由PCI配置器探查和编程每个热插拔设备19。PCI配置器被一般地定义为操作系统内的使得能够与资源管理器12或计算机13内的其它适合接口通信的逻辑。PCI配置器被配置成探查和编程这些设备。
在操作54,资源管理器12确定是否可以获得来自热插拔设备19的所需资源要求,而不进行再平衡。例如,资源管理器12检查直接在该热插拔设备节点之上的设备节点,以便确定是否存在足够的资源,以便满足热插拔设备19的资源要求。如果存在可从父节点获得的足够资源,则方法50进入操作56。如果父节点中没有足够的可用资源,则方法50进入方法100,以便执行再平衡操作。下面将结合图3更详细地描述再平衡操作。
在操作56,资源管理器12更新父节点的设备的属性,以便反映作为向热插拔设备19提供资源的结果而可能发生的任意分配改变。类似地,资源管理器12更新热插拔设备19的属性,以便反映当热插拔设备19接收到所希望的资源时将发生的分配改变。
在操作58,资源管理器12将资源信息(例如,基地址和长度)返回给PCI配置器(或调用器)。
在操作60,PCI配置器对包含在热插拔设备19内的设备寄存器编程,以便向其分配新接收到的资源。
下面示出了从热插拔设备19的PCI配置器对资源管理器12的资源请求的例子:
typedefstructpcrlm_res_req{
enumtype;/TO/MEM/PMEM/Busnum*/
uint_tliags;/*Gcncralflags*/
uint64_tlen;/*Rcqucstcdallocationlength*/
uint64_taddr;/*Specificbaseaddressrequested*/
uint64_tboundbase/*Baseaddressoftheareafor*/
/*theallocatedresourcetobe*/
/*restrictedto.*/
uint64_tboundlen/*Lengthofthearea,starting*/
/*fromra_boundbase,forthe*/
/*allocatedresourcetobe*/
/*rcstrictcdto.*/
uint64_talign_mask/*Alignmentmaskusedfor*/
/*allocatedbaseaddress*/
struc_pcirm_res_req*next;
}pcirm_res_req_t
下面直接示出向热插拔设备的PCI配置器返回分配的资源的来
自资源管理器12的请求的例子:
typedefstructpeirm_res{
enumtype;
uint64_tbase;
unit64_tlen;
stuctpcirm_res*next;
}pcirm_res_t.
图3示出了根据本发明的一个实施例的用于再平衡资源的方法100。在操作102,资源管理器12遍历可是包含热插拔设备19的节点18的祖父节点或更远节点的节点14。热插拔设备19的这种祖父或更远节点被一般地定义为上层节点。一般地,资源管理器12可以识别出哪些资源将被修改或从父设备节点和/或上层设备节点内的设备中移动,以便获得热插拔设备19的资源要求。例如,再平衡操作可以识别出,可以为父节点和上层节点中的已有设备修改总线范围,或可以从父节点和上层节点内的设备移动I/O和存储器地址,以便满足该热插拔设备的资源要求。
在操作104,资源管理器12产生一个链表,以便记录或跟踪关于设备树10内的设备(包括板上设备和/或热插拔设备19)之间的资源的预期移动(或资源重分配)的细节。例如,该链表可以包含详细说明可以为设备树10内受影响的设备修改总线范围的方式,或跟踪各种设备节点18的以前分配的I/O地址和/或存储器地址的预期重新分配的信息。
在操作106,资源管理器12与PCI配置器通信,从而每个设备挂起其操作。PCI配置器对父节点和上层节点的受影响的设备内的各种寄存器编程,以便反映可以响应在操作102识别出的资源的修改或移动而发生的资源分配。
在操作107,PCI配置器在重新编程之后重新激活被挂起的设备的操作。
在操作108,PCI配置器更新每个受影响的(或受冲击的)设备(包括热插拔设备19)的属性,以便同步到在操作106确立的新资源。
在操作110,资源管理器12将资源信息(例如,基地址和长度)返回(或提供)给PCI配置器。
在操作112,PCI配置器对热插拔设备19内包含的设备寄存器编程,以便将从父节点和上层节点(如果适用,包括来自父节点)的设备新接收的资源分配给它。
参考图1,下面紧接着阐述由资源管理器12执行的分配和再平衡操作的例子。热插拔设备19可被插入插槽,以便形成定位在设备节点(3-5)和设备节点(4-4)和(4-5)之间的热插拔设备节点22。资源管理器12探查设备节点(3-5),以便确定是否存在足够的可用资源以支持热插拔设备22所需的资源。例如假设资源管理器12不能在设备节点(3-5)中找到用于热插拔设备节点22的足够资源,资源管理器12确定将要执行再平衡操作。
资源管理器12遍历热插拔设备节点22之上的设备节点18(例如,节点(1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4-4)),以便定位热插拔设备19所希望的资源。资源管理器12确定可以从热插拔设备节点22之上的设备节点获得足够资源,以便分配给热插拔设备节点22。由于可从父节点和上层设备节点(1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4-4)移动或分配资源,定位在这些设备节点内的设备必须被编程,以便反映资源分配的改变。资源管理器12建立用于需要被重新编程的设备节点(1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4-4)的链表,以便反映来自这些设备节点的资源将对热插拔设备节点22可用。在对设备节点(1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4-4)的资源分配改变进行编程之前,资源管理器12挂起设备节点(1-1)之下的所有设备的操作,包括设备节点(1-1)内的设备在内。一般地,由于节点(1-1)之下的每个儿子或孙子都可能受到重新编程的影响,所以节点(1-1)之下的整个子树被挂起。
PCI配置器按照列表对设备节点(1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4-4)重新编程,以便反映从父节点和上层设备节点到热插拔设备节点22的资源再分配。在节点(1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4-4)的设备已被重新编程之后,资源管理器12继续节点(1-1)之下的所有设备节点的操作,包括节点(1-1)本身,并且与PCI配置器通信,以便以从节点(1-1)之下的设备节点提供的资源对热插拔设备19的寄存器重新编程。如图1所示,热插拔设备节点22可以包括设备节点(4-11)、(5-1)、(6-1)和(6-2)。在一个例子中,设备节点(4-11)和(5-1)可以对应于各种交换机,可能是对PCI总线22的扩展,并且设备节点(6-1)和(6-2)可以各自包含端点设备。
对于需要被重新编程的每个设备节点,资源中可能存在多于一个部分需要被移动。为资源中将被移动的部分定义下列数据结构:
typedefstructpcirm_rbl_map{
enumtype;/*Thetypeofresourcetobemoved*/
intreg_num;/*TheBAR#tobereprogrammed*/
uint64_tbase;/*Thebaseoftheresourcetobemoved.*/
uint64_tlength;/*Thelengthoftheresourcetobemoved.*/
uint64_tnew_base;/*Theresource’stargetbaseaftermoved.*/
uint64_tnew_length/*Theresource’stargetlengthaftermoved.*/
pcirm_rbl_map_t*next;/*Nextresourcetobemoved.*/
}pcirm_rbl_map_t
继续参考上面为了从节点(1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4-4)向热插拔设备节点22移动资源而提供的例子,图4示出了可以建立链表以指示如何从这些节点中的一个节点(例如,节点(1-1))移动总线号、I/O地址和存储器地址的方式。如图4所示的链表指示,对于节点(1-1),从3到8的总线号将被改变,并且0x100-0x120的I/O地址将改变为0x300-0x320,并且这需要对节点(1-1)的第二个基地址寄存器(BAR)重新编程。在进行了重新编程之后,更多资源可对节点(1-1)的儿子可用。然后,节点(2-1)将被根据关联于它的链表更新,并且依此类推。最后所有受影响的节点都将被重新编程。此时,在作为热插拔设备19的父节点的节点(3-5)处,更多资源将可用。即,将使得足够的资源可用于热插拔设备19以使其按照预期工作。
资源管理器12一般在遍历热插拔设备节点22的上层节点时建立再平衡映射,以跟踪作为设备节点(1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4-4)向热插拔设备节点22提供资源的结果,可能需要资源分配改变的设备节点(例如,上面例子中提及的设备节点(1-1)、(2-1)、(2-2)、(2-3)、(3-5)和(4-4))。
为了支持再平衡映射,如下面例子示出的,可以给dev_info_t结构增加指针:
/*
*Nullifthisdevicenodeisnotinthere-balancemap
*Pointtothenextdevicenodetobere-programmed
*Pointtoitsclfifthisisthelastdeviceinthere-balancemap
*/
dev_info_t*pcirm_next_rebl;
上述指针链接设备节点(1-1)、(2-1)、(2-3)、(3-5)和(4-4),并且作为标志指示设备节点是否在再平衡映射内。如果指针为NULL,则这种状态指示该设备节点可能不需要为了再平衡而被重新编程。
为了支持上述的表1,如下面例子示出的,可以给dev_info_t结构增加另一个指针:
/*
*re-balancemapofthisdevicenode.Itisalinkcdlistforallthe
*resourcestothisdevicenodetobemoved.
*/
pcirm_rbl_map_t*rbl_map;
一般地,上文公开了如果设备节点不在再平衡映射中,则在再平衡操作期间,没有来自该特定设备节点的资源必须被移动。
虽然已经说明和描述了本发明的实施例,这些实施例不旨在示出并且描述本发明的所有可能形式。而是,本说明书中使用的措辞是描述性措辞而不是限制,并且应当理解,可以做出各种改变而不脱离本发明的精神和范围。
根据本发明的一个方面,公开了一种用于从计算机内的多个板上设备节点向热插拔设备节点提供资源的装置,该装置包括:资源管理器,所述资源管理器可操作地耦合到包括所述多个板上设备节点和所述热插拔设备节点的设备树,所述资源管理器被配置为:通过总线系统从所述热插拔设备节点接收指示一组所希望的资源的资源请求;探查直接位于所述热插拔设备节点之上的父设备节点,以便确定该父设备节点是否能够向所述热插拔设备节点提供该组所希望的资源;如果该父节点不能向所述热插拔设备节点提供该组所希望的资源,则在父设备和位于该父设备节点之上的至少一个上层设备节点中探查该组所希望的资源;和通过总线系统从所述父设备节点和所述至少一个上层设备节点中的一个或多个节点提供该组所希望的资源,以便传输到所述热插拔设备节点,从而使得所述热插拔设备节点能够以预期方式工作。
根据本发明的另一个方面,公开了一种用于从计算机内的多个板上设备节点向热插拔设备节点提供资源的装置,该装置包括:资源管理器,所述资源管理器可操作地耦合到包括所述多个板上设备节点和所述热插拔设备节点的设备树,所述资源管理器被配置为:通过外围组件互连(PCI)总线系统接收来自所述热插拔设备节点的指示一组所希望的资源的资源请求;在父设备节点和位于所述父设备节点之上的至少一个上层设备节点中探查该组所希望的资源;和通过PCI总线系统提供来自父设备节点和所述至少一个上层设备节点中的一个或多个节点的该组所希望的资源,以传输到所述热插拔设备节点,以使得所述热插拔设备节点能够以预期方式操作。
根据本发明的另一个方面,公开了一种用于从计算机内的多个板上设备节点向热插拔设备节点提供资源的方法,所述计算机具有包括所述多个板上设备节点和所述热插拔设备节点的设备树,所述方法包括:通过外围组件互连总线系统接收来自所述热插拔设备节点的指示一组所希望的资源的资源请求;在父设备节点和位于所述父设备节点之上的至少一个上层设备节点中探查该组所希望的资源;和通过外围组件互连总线系统提供来自父设备节点和所述至少一个上层设备节点中的一个或多个节点的该组所希望的资源,以传输到所述热插拔设备节点,以使得所述热插拔设备节点能够以预期方式操作。
优选地,所述板上设备节点和所述热插拔设备节点中的每个包括基于外围组件互连的设备,并且其中由所述父级别节点和所述至少一个上层设备节点中的所述一个或多个节点提供给所述热插拔设备节点的该组所希望的资源包括输入/输出地址、存储器地址和总线号。
Claims (16)
1.一种用于从计算机内的多个板上设备节点向热插拔设备节点提供资源的装置,所述计算机具有包括所述多个板上设备节点和所述热插拔设备节点的设备树,所述装置包括:
用于通过总线系统从所述热插拔设备节点接收指示一组所希望的资源的资源请求的装置;
用于探查直接位于所述热插拔设备节点之上的父设备节点,以便确定该父设备节点是否能够向所述热插拔设备节点提供该组所希望的资源的装置;
用于如果该父设备节点不能向所述热插拔设备节点提供该组所希望的资源,则在父设备节点和位于该父设备节点之上的至少一个上层设备节点中探查该组所希望的资源的装置;
用于在发送来自所述父设备节点和所述至少一个上层设备节点中的一个或多个节点的该组所希望的资源之前产生链表以跟踪来自所述父设备节点和所述至少一个上层设备节点中的所述一个或多个节点的该组所希望的资源的预期移动的装置;
用于与调用器通信以在发送来自所述父设备节点和所述至少一个上层设备节点中的所述一个或多个节点的该组所希望的资源之前挂起所述父设备节点和所述至少一个上层设备节点的操作的装置;
用于利用所述调用器访问所述链表以对所述父设备节点和所述至少一个上层设备节点中的所述一个或多个设备节点重新编程以反映该组所希望的资源将可用于所述热插拔设备节点的装置;和
用于通过总线系统从所述父设备节点和所述至少一个上层设备节点中的所述一个或多个节点提供该组所希望的资源,以便传输到所述热插拔设备节点,从而使得所述热插拔设备节点能够以预期方式工作的装置。
2.如权利要求1所述的装置,其中所述板上设备节点和所述热插拔设备节点中的每个包括基于外围组件互连的设备。
3.如权利要求1所述的装置,其中所述总线系统是基于外围组件互连的总线系统。
4.如权利要求1所述的装置,其中所述热插拔设备节点被定义为在计算机内的基本输入/输出系统为所述多个板上设备节点分配资源之后,被检测到处于计算机内的设备节点。
5.如权利要求1所述的装置,进一步包括用于更新所述父设备节点、所述至少一个上层设备节点中的所述一个或多个设备节点、以及所述热插拔设备节点的属性,以反映该组所希望的资源将可用于所述热插拔设备节点的装置。
6.如权利要求1所述的装置,其中所述调用器是外围组件互连配置器。
7.如权利要求1所述的装置,其中由所述父设备节点和所述至少一个上层设备节点中的所述一个或多个节点提供给所述热插拔设备节点的该组所希望的资源包括输入/输出地址、存储器地址和总线号。
8.一种用于从计算机内的多个板上设备节点向热插拔设备节点提供资源的方法,所述计算机具有包括所述多个板上设备节点和所述热插拔设备节点的设备树,该方法包括:
通过所述计算机中的总线系统从所述热插拔设备节点接收指示一组所希望的资源的资源请求;
探查直接位于所述热插拔设备节点之上的父设备节点,以便确定该父设备节点是否能够向所述热插拔设备节点提供该组所希望的资源;
如果该父设备节点不能向所述热插拔设备节点提供该组所希望的资源,则在父设备节点和位于该父设备节点之上的至少一个上层设备节点中探查该组所希望的资源;
在发送来自所述父设备节点和所述至少一个上层设备节点中的一个或多个节点的该组所希望的资源之前,产生链表以跟踪来自所述父设备节点和所述至少一个上层设备节点中的所述一个或多个节点的该组所希望的资源的预期移动;
与调用器通信以在发送来自所述父设备节点和所述至少一个上层设备节点中的所述一个或多个节点的该组所希望的资源之前,挂起所述父设备节点和所述至少一个上层设备节点的操作;
利用所述调用器访问所述链表,以对所述父设备节点和所述至少一个上层设备节点中的所述一个或多个设备节点重新编程,以反映该组所希望的资源将可用于所述热插拔设备节点;和
通过该总线系统从所述父设备节点和所述至少一个上层设备节点中的所述一个或多个节点发送该组所希望的资源到所述热插拔设备节点,从而使得所述热插拔设备节点能够以预期方式工作。
9.如权利要求8所述的方法,其中所述热插拔设备节点被定义为在计算机内的基本输入/输出系统为所述多个板上设备节点分配资源之后,被检测到处于计算机内的设备节点。
10.如权利要求8所述的方法,还包括在对所述父设备节点和所述至少一个上层设备节点中的所述一个或多个设备节点重新编程之后,重新激活所述父设备节点和所述至少一个上层设备节点的操作。
11.如权利要求10所述的方法,还包括更新所述父设备节点、所述至少一个上层设备节点中的所述一个或多个设备节点、以及所述热插拔设备节点的属性,以便反映该组所希望的资源将可用于所述热插拔设备节点。
12.如权利要求8所述的方法,其中从所述父设备节点和所述至少一个上层设备节点中的所述一个或多个节点发送该组所希望的资源还包括发送来自所述父设备节点和所述至少一个上层设备节点中的所述一个或多个节点的输入/输出地址、存储器地址和总线号。
13.一种用于从计算机内的多个板上设备节点向热插拔设备节点提供资源的装置,所述计算机具有包括所述多个板上设备节点和所述热插拔设备节点的设备树,所述装置包括:
用于通过外围组件互连总线系统接收来自所述热插拔设备节点的指示一组所希望的资源的资源请求的装置;
用于在父设备节点和位于所述父设备节点之上的至少一个上层设备节点中探查该组所希望的资源的装置;
用于在发送来自所述父设备节点和所述至少一个上层设备节点中的一个或多个节点的该组所希望的资源之前产生链表以跟踪来自所述父设备节点和所述至少一个上层设备节点中的所述一个或多个节点的该组所希望的资源的预期移动的装置;
用于与调用器通信来在从所述至少一个上层设备节点中的所述一个或多个节点和所述父设备节点发送所述一组所希望的资源之前,挂起所述父设备节点和所述至少一个上层设备节点的操作的装置;
用于利用所述调用器访问所述链表以对所述父设备节点和所述至少一个上层设备节点中的所述一个或多个设备节点重新编程以反映该组所希望的资源将可用于所述热插拔设备节点的装置;和
用于通过外围组件互连总线系统提供来自父设备节点和所述至少一个上层设备节点中的一个或多个节点的该组所希望的资源,以传输到所述热插拔设备节点,以使得所述热插拔设备节点能够以预期方式操作的装置。
14.如权利要求13所述的装置,其中所述板上设备节点和所述热插拔设备节点中的每个包括基于外围组件互连的设备,并且其中由所述父设备节点和所述至少一个上层设备节点中的所述一个或多个节点提供给所述热插拔设备节点的该组所希望的资源包括输入/输出地址、存储器地址和总线号。
15.一种用于从计算机内的多个板上设备节点向热插拔设备节点提供资源的方法,所述计算机具有包括所述多个板上设备节点和所述热插拔设备节点的设备树,所述方法包括:
通过外围组件互连总线系统接收来自所述热插拔设备节点的指示一组所希望的资源的资源请求;
在父设备节点和位于所述父设备节点之上的至少一个上层设备节点中探查该组所希望的资源;
在发送来自所述父设备节点和所述至少一个上层设备节点中的一个或多个节点的该组所希望的资源之前,产生链表以跟踪来自所述父设备节点和所述至少一个上层设备节点中的所述一个或多个节点的该组所希望的资源的预期移动;
与调用器通信来在从所述至少一个上层设备节点中的所述一个或多个节点和所述父设备节点发送所述一组所希望的资源之前,挂起所述父设备节点和所述至少一个上层设备节点的操作;
利用所述调用器访问所述链表,以对所述父设备节点和所述至少一个上层设备节点中的所述一个或多个设备节点重新编程,以反映该组所希望的资源将可用于所述热插拔设备节点;和
通过外围组件互连总线系统提供来自父设备节点和所述至少一个上层设备节点中的所述一个或多个节点的该组所希望的资源,以传输到所述热插拔设备节点,以使得所述热插拔设备节点能够以预期方式操作。
16.如权利要求15所述的方法,其中所述板上设备节点和所述热插拔设备节点中的每个包括基于外围组件互连的设备,并且其中由所述父设备节点和所述至少一个上层设备节点中的所述一个或多个节点提供给所述热插拔设备节点的该组所希望的资源包括输入/输出地址、存储器地址和总线号。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/501,817 | 2009-07-13 | ||
US12/501,817 US8032682B2 (en) | 2009-07-13 | 2009-07-13 | System and method for device resource allocation and re-balance |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101989240A CN101989240A (zh) | 2011-03-23 |
CN101989240B true CN101989240B (zh) | 2016-01-27 |
Family
ID=42799821
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010229823.3A Active CN101989240B (zh) | 2009-07-13 | 2010-07-13 | 用于设备资源分配和再平衡的系统和方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8032682B2 (zh) |
EP (1) | EP2278486B1 (zh) |
CN (1) | CN101989240B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8806502B2 (en) | 2010-09-15 | 2014-08-12 | Qualcomm Incorporated | Batching resource requests in a portable computing device |
US9152523B2 (en) | 2010-09-15 | 2015-10-06 | Qualcomm Incorporated | Batching and forking resource requests in a portable computing device |
US8615755B2 (en) | 2010-09-15 | 2013-12-24 | Qualcomm Incorporated | System and method for managing resources of a portable computing device |
US9098521B2 (en) | 2010-09-15 | 2015-08-04 | Qualcomm Incorporated | System and method for managing resources and threshsold events of a multicore portable computing device |
US8631414B2 (en) | 2010-09-15 | 2014-01-14 | Qualcomm Incorporated | Distributed resource management in a portable computing device |
US8621481B2 (en) | 2011-06-13 | 2013-12-31 | Oracle International Corporation | Apparatus and method for performing a rebalance of resources for one or more devices at boot time |
WO2012119406A1 (zh) * | 2011-08-22 | 2012-09-13 | 华为技术有限公司 | 枚举输入输出设备的方法和设备 |
US20130166672A1 (en) * | 2011-12-22 | 2013-06-27 | International Business Machines Corporation | Physically Remote Shared Computer Memory |
CN102662724B (zh) * | 2012-03-15 | 2015-06-03 | 华为技术有限公司 | 设备初始化的方法、装置及系统 |
US9274839B2 (en) * | 2012-09-27 | 2016-03-01 | Intel Corporation | Techniques for dynamic physical memory partitioning |
CN103714035B (zh) * | 2013-12-31 | 2015-07-08 | 北京控制工程研究所 | 一种用于集成环境的多层软件总线结构 |
US10961286B2 (en) * | 2014-08-15 | 2021-03-30 | Cornell University | Nucleic acids, vectors, host cells, and methods for recombinantly producing water-soluble membrane proteins |
CN106250060A (zh) * | 2016-08-03 | 2016-12-21 | 浪潮(北京)电子信息产业有限公司 | PCIe设备的热插入方法和装置、热拔出方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101158927A (zh) * | 2007-10-25 | 2008-04-09 | 中国科学院计算技术研究所 | 一种内存共享的系统和装置及方法 |
CN101387993A (zh) * | 2007-09-14 | 2009-03-18 | 凹凸科技(中国)有限公司 | 对计算机系统中的设备进行动态资源配置的方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6421755B1 (en) * | 1999-05-26 | 2002-07-16 | Dell Usa, L.P. | System resource assignment for a hot inserted device |
WO2001044935A1 (en) | 1999-12-15 | 2001-06-21 | Sun Microsystems, Inc. | Computer system with an improved device and driver framework |
JP2002288104A (ja) * | 2001-03-28 | 2002-10-04 | Nec Corp | コンピュータシステム、そのリソース割り当て方法及びプログラム |
US6963947B2 (en) * | 2001-05-08 | 2005-11-08 | Tao Logic Systems Llc | Driver supporting bridge method and apparatus |
US7500094B2 (en) * | 2005-10-18 | 2009-03-03 | American Megatrends, Inc. | BIOS identification, initialization and management |
US20070233928A1 (en) * | 2006-03-31 | 2007-10-04 | Robert Gough | Mechanism and apparatus for dynamically providing required resources for a hot-added PCI express endpoint or hierarchy |
-
2009
- 2009-07-13 US US12/501,817 patent/US8032682B2/en active Active
-
2010
- 2010-07-09 EP EP10169164.0A patent/EP2278486B1/en active Active
- 2010-07-13 CN CN201010229823.3A patent/CN101989240B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101387993A (zh) * | 2007-09-14 | 2009-03-18 | 凹凸科技(中国)有限公司 | 对计算机系统中的设备进行动态资源配置的方法及系统 |
CN101158927A (zh) * | 2007-10-25 | 2008-04-09 | 中国科学院计算技术研究所 | 一种内存共享的系统和装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
US20110010478A1 (en) | 2011-01-13 |
EP2278486B1 (en) | 2015-03-25 |
CN101989240A (zh) | 2011-03-23 |
US8032682B2 (en) | 2011-10-04 |
EP2278486A1 (en) | 2011-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101989240B (zh) | 用于设备资源分配和再平衡的系统和方法 | |
CN101981554B (zh) | 用于将pcie sr-iov功能转换成表现为传统功能的系统和方法 | |
JP5320140B2 (ja) | 計算機システム、割込み中継回路及び割込み中継方法 | |
US9423958B2 (en) | System and method for managing expansion read-only memory and management host thereof | |
US8621481B2 (en) | Apparatus and method for performing a rebalance of resources for one or more devices at boot time | |
CN101779196B (zh) | Pci设备的i/o空间请求抑制方法 | |
CN101387993B (zh) | 对计算机系统中的设备进行动态资源配置的方法及系统 | |
TWI439869B (zh) | 調整連結速度的方法及其電腦系統 | |
CN112698871A (zh) | 在多cpu设备中使用option-rom的网络适配器配置 | |
US6963947B2 (en) | Driver supporting bridge method and apparatus | |
GB2357600A (en) | Hardware dependent software installation | |
CN113064610A (zh) | 一种更新bios的方法、装置及介质 | |
CN101189577B (zh) | 通过自动改变索引来访问配置寄存器的方法和装置 | |
CN110119625A (zh) | 一种可信计算方法 | |
US20070260672A1 (en) | A post/bios solution for providing input and output capacity on demand | |
US6636916B1 (en) | Assigning PCI device interrupts in a computer system | |
CN113760810A (zh) | 一种信息处理方法、信息处理装置、设备和存储介质 | |
CN102073510A (zh) | 高密度服务器 | |
CN102375794B (zh) | 调整连接速度的方法及其电脑系统 | |
CN113568858B (zh) | 设备管理方法、装置及存储介质 | |
US20230318606A1 (en) | Interface device and method of operating the same | |
CN118034917A (zh) | 一种PCIe资源分配方法、装置、电子设备及存储介质 | |
CN118012819A (zh) | 服务器系统、服务器配置方法、设备及介质 | |
CN116401191A (zh) | 计算设备和pcie通道分配方法 | |
CN117135055A (zh) | 带宽资源的控制方法及装置、存储介质及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |