用于在软件驱动器与基板管理控制器之间通信的系统、方法和计算机程序与流程

文档序号:13890364阅读:345来源:国知局

本发明涉及系统数据通信,更具体地涉及使能系统组件之间的高效通信。



背景技术:

一些基于软件的驱动器可能期望向更高级别的系统管理软件报告系统管理信息以及执行它们的预期任务。可以使用基于带内os的方法来实现该信息(诸如状态和警报)的报告。然而,至少出于效率和安全性原因,非常期望使用带外(oob)方法来完成这些系统管理操作。



技术实现要素:

根据一个实施例,被实施在有形计算机可读介质上的计算机程序包括用于获取基板管理控制器(bmc)访问细节的计算机代码,用于利用bmc访问细节在软件驱动器和bmc之间建立通信机制的计算机代码,以及用于利用通信机制在软件驱动器和bmc之间发送请求的计算机代码。

根据另一实施例的方法包括获取基板管理控制器(bmc)访问细节,利用bmc访问细节在软件驱动器和bmc之间建立通信机制,以及利用通信机制在软件驱动器和bmc之间发送请求。

根据另一实施例的系统包括处理器,用于获取基板管理控制器(bmc)访问细节,利用bmc访问细节在软件驱动器和bmc之间建立通信机制,以及在软件驱动器和bmc之间传递请求,包括将通信协议内容放置在由bmc和软件驱动器共享的存储器映射输入/输出(mmio)窗口区域中,中断bmc或软件驱动器,以及使用来自由bmc和软件驱动器共享的mmio窗口区域的通信协议内容在软件驱动器和bmc之间传递消息。

附图说明

图1示出了根据一个可能的实施例的网络架构。

图2示出了根据一个实施例的示例性系统。

图3示出了根据一个实施例的用于在软件驱动器和基板管理控制器之间通信的方法。

图4示出了根据一个实施例的使能软件驱动器和基板管理控制器之间的通信的示例性系统。

具体实施方式

以下描述出于说明本发明的一般原理的目的而进行,并不意味着限制本文所要求保护的发明构思。此外,本文描述的特定特征可以与各种可能的组合和排列中的每一种中的其它描述的特征结合使用。

除非本文另有具体定义,否则所有术语将被给予其最广泛的可能解释,包括本说明书所暗示的含义以及本领域技术人员所理解的和/或在词典、论文等中所定义的含义。

还必须注意的是,如在说明书和所附权利要求中所使用的,除非另有指明,单数形式“一”、“一个”和“该”包括复数个指示物。

图1示出了根据一个可能的实施例的网络架构100。如图所示,提供至少一个网络102。在本网络架构100的上下文中,网络102可以采取任何形式,包括但不限于电信网络、局域网(lan)、无线网络、诸如因特网的广域网(wan)、对等网络、有线网络等。虽然仅示出了一个网络,但是应当理解,可以提供两个或更多个相似或不同的网络102。

耦合到网络102的是多个设备。例如,为了通信目的,服务器计算机104和终端用户计算机106可以耦合到网络102。这样的终端用户计算机106可以包括台式计算机、膝上型计算机和/或任何其他类型的逻辑。然而,各种其他设备可以耦合到网络102,包括个人数字助理(pda)设备108、移动电话设备110、电视机112等。

图2示出了根据一个实施例的示例性系统200。作为选项,系统200可以在图1的网络架构100的设备中的任何设备的上下文中实现。当然,系统200可以在任何期望的环境中实现。

如图所示,提供了系统200,其包括连接到通信总线202的至少一个中央处理器201。系统200还包括主存储器204[例如,随机存取存储器(ram)等]。系统200还包括图形处理器206和显示器208。

系统200还可以包括辅助存储设备210。辅助存储设备210包括例如硬盘驱动器和/或可拆卸存储驱动,代表软盘驱动器、磁带驱动、紧凑盘驱动等。可拆卸存储驱动以公知的方式从可拆卸存储单元读取和/或向可拆卸存储单元写入。

就此而言,计算机程序或计算机控制逻辑算法可以被存储在主存储器204、辅助存储设备210和/或任何其他存储器中。这样的计算机程序在被执行时使得系统200能够执行各种功能(例如,将在下面被阐述)。存储器204、存储设备210、易失性或非易失性存储设备和/或任何其它类型的存储设备是非瞬态计算机可读介质的可能示例。

图3示出了根据一个实施例的用于在软件驱动器和基板管理控制器之间通信的方法300。作为选项,方法300可以在图1-2和图4的细节的上下文中被执行。然而,方法300当然可以在任何期望的环境中被执行。此外,上述定义同样应用于下面的描述。

如操作302所示,基板管理控制器(bmc)访问细节被获取。在一个实施例中,bmc访问细节可以由软件驱动器获取。例如,软件驱动器可以包括向相关联的系统的一个或多个元件提供软件接口的计算机程序。在另一示例中,软件驱动器可以使得能够访问计算设备的一个或多个元件。

另外,在一个实施例中,软件驱动器可以不直接附接到系统内的其自己的硬件元件。在另一实施例中,软件驱动器可以包括伪硬件驱动器。例如,软件驱动器可以向bmc报告系统管理信息、库存信息、状态、警报等中的一项或多项,bmc然后可以由远程高级别软件访问。在另一示例中,软件驱动器可以经由与bmc通信从远程高级别软件接收信息(例如,诸如硬件配置等的配置信息)。

此外,在一个实施例中,bmc可以包括系统内的辅助控制器。例如,bmc可以包括与系统内的中央处理单元(cpu)分离的辅助控制器。在另一示例中,bmc可以包括监视硬件设备(例如,系统等)的物理状态的专用服务处理器。在又一示例中,bmc可以利用硬件内的一个或多个传感器(例如,温度传感器、电压读数等)。

此外,在一个实施例中,bmc访问细节可以在系统初始化期间由统一的可扩展固件接口(uefi)获取。在另一实施例中,uefi可以将bmc访问细节写入原始设备制造商(oem)高级配置和功率接口(acpi)表。例如,oemacpi表可以在系统初始化期间但在操作系统(os)引导之前由uefi创建。在另一实施例中,bmc访问细节可以包括多个访问信息。例如,bmc访问细节可以包括pci-irq(pirq)中断信息、存储器映射输入/输出(mmio)窗口细节、bmc硬件设备信息等中的一项或多项。

而且,在一个实施例中,软件驱动器可以从oemacpi表获取bmc访问细节。例如,当软件驱动器被加载时,软件驱动器可以从oemacpi表获取bmc访问详细信息。

另外,如操作304所示,利用bmc访问细节,软件驱动器和bmc之间的通信机制被建立。在一个实施例中,建立通信机制可以包括由软件驱动器利用bmc访问细节来使能与bmc的通信。例如,利用bmc访问细节,软件驱动器可以获取对bmc的mmio窗口的访问,使得mmio窗口可以由bmc和软件驱动器两者共享。在另一示例中,利用bmc访问细节,软件驱动器可以钩住系统内的pirq中断(例如,在系统的现场可编程门阵列(fpga)内等),使得pirq中断可以被用于向软件驱动器通知来自bmc的请求。

此外,在一个实施例中,通信机制可以包括软件驱动器与bmc通信的手段以及bmc与软件驱动器通信的手段。在另一实施例中,bmc访问细节可以描述软件驱动器和bmc之间的通信路径。以这种方式,软件驱动器可以利用bmc访问细节来向os描述bmc,使得软件驱动器能够要求bmc的所有权并正确加载。

此外,如操作306所示,利用通信机制,在软件驱动器和bmc之间发送请求。在一个实施例中,请求可以包括系统管理请求。在另一实施例中,请求可以由bmc发起。例如,bmc可以将通信协议内容放置在与软件驱动器共享的mmio窗口区域中。在另一示例中,bmc可以通过触发适当的pirq来中断软件驱动器。在另一示例中,bmc可以使用来自共享的mmio窗口区域的通信协议内容将请求和响应数据传递到软件驱动器。

而且,在一个实施例中,请求可以由软件驱动器发起。例如,软件驱动器可以将通信协议内容放置在与bmc共享的mmio窗口区域中。在另一示例中,软件驱动器可以利用门铃位来中断bmc。在又一示例中,软件驱动器可以使用来自共享的mmio窗口区域的通信协议内容将请求和响应数据传递到bmc。

以这种方式,软件驱动器可以直接与bmc进行通信。这可以消除对bmc的设备驱动器的需要。远程系统管理软件可以与bmc通信oob以间接与软件驱动器交互。此外,由于没有与主机操作系统的系统管理软件交互,因此较少的管理实用程序开发可以是必要的。此外,也可以避免与主机操作系统交互相关的安全风险。

现在将根据用户的期望阐述关于各种可选架构和使用的更多说明性的信息,其中前述方法可以被实现或可以不被实现。应该强调指出,以下信息出于说明的目的而被阐述,并且不应被解释为以任何方式限制。任何以下特征可以可选地与所描述的其它特征合并或不排除所描述的其它特征。

图4示出了根据一个实施例的使能软件驱动器402和基板管理控制器(bmc)404之间的通信的示例性系统400。如图4所示,系统400包括统一的可扩展固件接口(uefi)406以及操作系统(os)高级配置和功率接口(acpi)表408,其包括原始设备制造商(oem)高级配置和功率接口(acpi)表410。

在一个实施例中,在系统400的初始化期间,并且在引导os之前,uefi406可以获得对bmc404的访问细节。在一个实施例中,对bmc404的访问细节可以包括与bmc404通信所必要的信息。表1示出了根据一个实施例的示例性访问细节。当然,应当注意,表1所示的访问细节仅出于说明的目的而被阐述,并且因此不应被解释为以任何方式限制。

表1

·使用pirq

这可以指示当发起系统的管理任务时,哪个可共享的pirq(a,b,c或d)将被bmc触发以中断软件驱动器402。该pirq可以由软件驱动器402钩住。bmc404可以具有pirq416能力,其可以由现场可编程门阵列(fpga)412提供。

·mmio窗口细节

这可以示出用于软件驱动器402和bmc404之间的信息传递的mmio窗口414的mmio地址范围。这可以包括由软件驱动器402从主机存储器地址空间或由bmc404从bmc存储器地址空间可访问的双端口存储器窗口。其还将指示哪一位将被用作门铃位418以针对发起系统管理任务的软件驱动器402中断bmc404。另外,可以基于要在软件驱动器402和bmc404之间使用的通信协议来描述更细粒度的窗口子字段(例如信号量位、输入字段、返回数据字段等)。

·bmc硬件设备信息

这可以用于描述包含mmio窗口414的bmc404功能的pci功能细节(例如,地址,pciid等)。这可能是需要的,以便软件驱动器402要求mmio窗口402和pirq416的所有权。

另外,在一个实施例中,uefi406可以然后将bmc404访问细节写入oemacpi表410。在另一实施例中,软件驱动器402可以然后被加载并且可以从oemacpi表410获取bmc404访问细节。在又一实施例中,软件驱动器402然后可以获取对mmio窗口414的访问并且可以使用从oemacpi表410获取的bmc404访问细节钩住pirq416。

以这种方式,在软件驱动器402初始化期间,软件驱动器402可以获知软件驱动器402和bmc404之间的通信路径的细节。可以使用异步中断而不是轮询方法来提高性能。软件驱动器402可以访问包含必要通信信息的oemacpi表410。在os引导之前的系统初始化期间,该表可以由uefi406创建。uefi406可以与bmc404交互以获取用以填充表的必要信息。

此外,在一个实施例中,bmc404可以发起与软件驱动器402的通信。例如,bmc404可以根据建立的通信协议(例如,bmc404访问细节中详细描述的通信协议等)建立mmio窗口414。例如,bmc404可以使用在oemacpi表410中列出的mmio窗口414细节。bmc404还可以将通信协议内容(例如,系统管理请求等)放置在共享的mmio窗口414中。

此外,在另一示例中,bmc404可以请求在fpga412处断言pirq416。例如,bmc404可以使用在oemacpi表410中列出的pirq416信息。此外,fpga412可以包括使用硬件描述语言配置的集成电路。在又一示例中,fpga412然后可以断言pirq416以便中断软件驱动器402(例如,经由软件驱动器402处的irq钩子420等)。在又一示例中,软件驱动器402然后可以访问共享的mmio窗口414以获取通信协议内容(例如,系统管理请求等)。

以这种方式,软件驱动器402可以从bmc404接收通信中断,因为软件驱动器402可以钩住oemacpi表410中指示的pirq416。bmc404可以在将通信协议内容放置在共享的mmio窗口414中之后触发pirq416。然后使用mmio窗口414的预定义通信协议可以被用来传递实际请求和响应数据。

而且,在一个实施例中,可以利用所建立的通信协议来执行bmc404与软件驱动器402之间的进一步交互。在另一实施例中,软件驱动器402可以包括跨多个盘实现软件控制的独立磁盘冗余阵列(raid)的raid驱动器。然后,bmc404请求可以包括用以获取当前raid配置、卷容量等的请求。在另一实施例中,bmc404可以向os应用告警由bmc404监视的环境事件。例如,bmc404可以向软件驱动器402发送环境警报状况,然后一个或多个os应用程序可以经由软件驱动器402访问该警报状况(例如,作为订阅服务的一部分等)。

另外,在一个实施例中,软件驱动器402可以发起与bmc404的通信。例如,软件驱动器402可以根据所建立的通信协议(例如,在bmc404访问细节中详细描述的通信协议等)来建立mmio窗口414。例如,软件驱动器402可以使用在oemacpi表410中列出的获取的mmio窗口414细节。软件驱动器402还可以将通信协议内容(例如,系统管理请求等)放置在共享的mmio窗口414中。

此外,在另一示例中,软件驱动器402可以设置mmio窗口414的门铃位418。该更新的门铃位418可能在其环境中对bmc404造成中断。在又一示例中,bmc404然后可以访问mmio窗口414以获得通信协议内容(例如,系统管理请求等)。

以这种方式,软件驱动器402可以在共享的mmio窗口414中建立必要的数据,并且然后可以设置门铃位418以在其环境中中断bmc404。然后,bmc404可以使用共享的mmio窗口414的预定义的通信协议来处理该请求并返回任何响应数据。

而且,在一个实施例中,bmc404与软件驱动器402之间的进一步交互可以利用建立的通信协议来执行。例如,bmc404还可以在mmio窗口414中使用通信协议来处理请求并返回任何响应数据。在另一实施例中,如果软件驱动器402包括raid驱动器,则软件驱动器402可以向bmc404发送警报(例如,配置更新等)。

以这种方式,通过使用带外(oob)方法,远程系统的管理实用程序可以识别状态和警报,而不需要带内与os接口。此外,可以需要较少的开发,因为与支持每个主机os的不同交互相反,只需要与bmc404的oob交互。此外,在不需要bmc404设备驱动器的情况下,可以提供用于软件驱动器402与bmc404交互的机制。

显然,上述系统和/或方法的各种特征可以以任何方式组合,从以上呈现的描述创建多种组合。

尽管上面已经描述了各种实施例,但是应当理解,它们仅仅已经通过示例而非限制性的方式被呈现。因此,优选实施例的宽度和范围不应受到任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1