CN113312295A - 使用控制器的系统重置 - Google Patents

使用控制器的系统重置 Download PDF

Info

Publication number
CN113312295A
CN113312295A CN202110207372.1A CN202110207372A CN113312295A CN 113312295 A CN113312295 A CN 113312295A CN 202110207372 A CN202110207372 A CN 202110207372A CN 113312295 A CN113312295 A CN 113312295A
Authority
CN
China
Prior art keywords
reset
register
controller
address
hypervisor
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.)
Granted
Application number
CN202110207372.1A
Other languages
English (en)
Other versions
CN113312295B (zh
Inventor
罗伯特·C·埃利奥特
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN113312295A publication Critical patent/CN113312295A/zh
Application granted granted Critical
Publication of CN113312295B publication Critical patent/CN113312295B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4204Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45575Starting, stopping, suspending or resuming virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0026PCI express

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本公开涉及使用控制器的系统重置。在一些示例中,存储介质存储与重置端口有关的信息,该重置端口与多个虚拟机(VM)中的相应VM相关联。控制器基于该信息检测与多个VM中的第一VM相关联的第一重置端口的激活。响应于检测,控制器向与控制器分离的管理程序提供对第一重置端口的激活的指示,该指示使得管理程序重置第一VM。

Description

使用控制器的系统重置
背景技术
计算机系统包括诸如处理器、存储器、永久性存储装置、网络接口控制器等的各种电子组件。包括软件程序和/或固件程序的机器可读指令可以在处理器上被执行。用户、程序或电子组件可以使得计算机系统重置。
附图说明
参考以下附图描述本公开的一些实施方式。
图1A是根据一些示例的系统的框图。
图1B是根据一些示例的平台控制器的框图。
图2A-2B是根据一些示例的存储器地址空间的框图。
图3是根据进一步示例的系统的框图。
图4是根据一些示例的存储机器可读指令的存储介质的框图。
图5是根据一些示例的过程的流程图。
在整个附图中,相同的附图标记表示相似但是不一定相同的元件。附图不一定是按比例绘制的,并且一些部分的大小可以被放大以更清楚地图示出所示出的示例。另外,附图提供了与描述一致的示例和/或实施方式;但是,描述不限于附图中提供的示例和/或实施方式。
具体实施方式
在本公开中,除非上下文另外明确指出,否则使用术语“一”、“一个”或“该”也意图包括复数形式。另外,术语“包括”、“包括于”、“包含”、“包含于”、“具有”或“含有”在本公开中使用时,指示所陈述的元件的存在,但是不排除其他元件的存在或添加。
计算机系统的示例可以包括以下各项中的任一项:桌面型计算机、笔记本计算机、平板计算机、服务器计算机、智能电话、可穿戴设备(例如,智能手表、智能眼镜、头戴式设备等)、游戏装置、物联网(IoT)设备、打印系统、存储装置、通信节点等。
计算机系统的重置可以由用户、程序或电子组件触发。例如,用户可以激活键盘的指定按键的组合来触发重置。可替代地,用户可以激活计算机系统的图形用户界面(GUI)中的控制元件来触发重置。程序(不管是在计算机系统中还是在计算机系统外执行)可以发布使得计算机系统重置的命令或其他指示。电子组件(不管是在计算机系统中还是在计算机系统外)可以发出使得计算机系统重置的信号或其他指示。
计算机系统的“重置”可以指代重新启动计算机系统(先使计算机系统断电,随后使计算机系统上电)、重新引导计算机系统(保持计算机系统处于上电状态,但是先关断计算机系统的操作系统(OS),随后引导该OS)或者以其他方式使得计算机系统清除计算机系统中的程序(包括OS、应用程序等)的状态信息并在状态信息已经被清除的情况下启动程序。
在一些示例中,可以通过激活计算机系统的重置端口来触发计算机系统的重置。该重置端口的激活可以通过向指定的重置端口地址(例如,输入/输出(I/O)地址空间中的地址64h)写入指定值(例如,FEh,其中“h”表示十六进制)来完成。重置端口地址64h可以是寄存器(“重置寄存器”)在I/O地址空间中的地址。
在一些示例中,重置端口可以是键盘控制器的部分,从而响应于向重置端口地址写入指定值(例如,将FEh写入地址64h),键盘控制器执行计算机系统的重置。
一些计算机系统可以实现虚拟化,其中,可以在计算机系统中执行多个虚拟机(VM)(这些VM也被认为由计算机系统托管)。VM可以共享计算机系统的物理资源(例如,处理器、存储器、永久性存储装置、网络接口控制器等)。“虚拟机”或“VM”可以指代计算机系统的分区,在该分区中可以运行机器可读指令(例如,客户OS、应用程序等),同时,该机器可读指令与另一VM中执行的机器可读指令是隔离开的。在一些示例中,容器也可以被认为是VM。
实现虚拟化的计算机系统还可以包括管理程序,该管理程序也被称为虚拟机监视器(VMM)。管理程序(其包括机器可读指令)可以创建在计算机系统中运行的VM,并且管理程序可以管理VM的执行和VM对计算机系统物理资源的共享。管理程序可以模拟计算机系统的物理资源,使得VM可以访问所模拟的物理资源,并且管理程序可以提供VM之间的隔离。
VM中执行的程序或者与VM交互的用户可以触发VM的重置。由于托管VM的计算机系统可以包括多个VM,所以经由VM触发的重置应该仅重置该VM而不重置计算机系统。重置计算机系统将使得由计算机系统托管的其他VM以及计算机系统的其他功能和服务在重置期间变得不可用。
在一些示例中,管理程序可以模拟键盘控制器,或更具体地模拟键盘控制器的重置端口。当给定VM激活键盘控制器的重置端口(例如,通过向重置端口地址写入指定值)时,所模拟的键盘控制器(由管理程序模拟)执行给定VM的重置。但是,所模拟的键盘控制器消耗了计算机系统的包括处理器资源在内的物理资源。响应于每个VM对重置端口地址的写入,所模拟的键盘控制器(由管理程序模拟)检查被写入重置端口地址的值是否与指定值(例如,FEh)匹配。在包括大量VM的计算机系统中,所模拟的键盘控制器可消耗处理器的周期,这可能使计算机系统的其他操作变慢。作为另一示例,感染了恶意软件的VM或发生故障的VM可能将指定值(例如,FEh)以外的值大量地写入重置端口地址,这在键盘控制器模拟由管理程序执行以处理这些写入的情况下,可能导致计算机系统变慢。
根据本公开的一些实施方式,代替使用管理程序模拟键盘控制器重置端口来处理由VM进行的重置端口激活,重置端口模拟可以被卸载到与管理程序分离的平台控制器。“平台控制器”可以指代执行计算机系统中的指定任务的控制器。在一些示例中,平台控制器是诸如外围组件互连(PCI)总线的总线上的总线设备。在更具体的示例中,PCI总线可以是高速PCI(PCIe)总线。在其他示例中,平台控制器可以是连接到系统中的其他类型的总线的总线设备。“总线”指代通过其多个设备可以彼此通信的通信链路。
平台控制器与系统的主处理器分离,其中,主处理器可以执行系统的各种机器可读指令,例如,VM、操作系统、应用程序、固件(例如,引导代码、硬件初始化代码等)等。可以指定平台控制器执行系统的指定任务(包括模拟重置端口及其他任务(例如,功率管理任务、热管理任务、系统监控任务等))。在一些示例中,平台控制器可以是耦接到主处理器的分离的片上系统。在更具体的示例中,平台控制器可以由智能网络接口控制器(NIC)组成,或者可以是基板管理控制器(BMC)的一部分。平台控制器可以具有其自己的处理电路(该处理电路与执行计算机系统的OS和/或其他程序代码的主处理器分离)并且可以运行其自己的固件。BMC是可以使用传感器监控计算机系统的物理状态,并且可以通过独立的带外连接与管理系统通信的专用服务处理器。
BMC还可以通过输入/输出控制器(IOCTL)接口驱动器、表征性状态转移(REST)应用程序接口(API)或者有助于BMC和应用之间的通信的一些其他系统软件代理与在OS级执行的应用通信。BMC可以具有对位于计算机系统中的硬件组件的硬件级访问。BMC可以能够直接修改硬件组件。BMC可以独立于BMC位于其中的计算机系统的OS操作。BMC可以位于要被监控的计算机系统的母板或主电路板上。BMC安装在所管理的计算机系统的母板上或者以其他方式连接或附接到所管理的计算机系统的事实不会阻止BMC被认为与执行OS的处理资源分离。BMC具有管理计算机系统的组件的管理能力。BMC的管理能力的示例可以包括以下各项中的任一项或它们的一些组合:功率控制、热监控和控制、风扇控制、系统健康监控、计算机系统的远程访问、计算机系统的远程重新引导、系统设置、OS图像部署和恢复、系统安全等。
在一些示例中,BMC可以为计算机系统提供所谓的“熄灯(lights-out)”功能。熄灯功能可以允许诸如系统管理员的用户即使在计算机系统上未安装OS或者在计算机系统上OS不工作的情况下也可以在计算机系统上执行管理操作。另外,在一些示例中,BMC可以利用辅助电源(例如,电池电源或辅助电源轨)运行;作为结果,不必使计算机系统上电来允许BMC执行其操作。由BMC提供的服务可以被认为是“带外”服务,因为OS可以不运行并且在一些情况下计算机系统可以被断电或者未正常工作(例如,计算机系统已经历故障或硬件失败)。
BMC可以包括诸如网络接口的通信接口和/或串行接口,其中,管理员或其他实体可以使用该通信接口和/或串行接口远程地与BMC通信。“带外”服务可以由BMC经由专用的管理信道(例如,通信接口)提供,并且不管计算机系统是否处于上电状态都可用。在一些示例中,BMC是平台控制器的示例。
平台控制器提供分离的物理处理器(与系统的主处理器分离),在该物理处理器中可以以安全的方式提供键盘模拟。例如,当恶意软件感染系统并在主处理器上执行时,平台控制器被保护免受可能影响主处理器的操作的攻击。
将重置端口模拟卸载到平台控制器减少管理程序执行VM的重置的处理器资源消耗开销。在一些示例中,PCI存储器的一部分被分配用于包括与相应的VM相关联的寄存器组,其中,每个寄存器组包括当以指定值写入时使得相对应的VM重置的重置寄存器。对包含重置寄存器的PCI存储器部分的写入可以被键盘控制器检测到。
图1A是系统100的框图。系统100可以包括一个或多个计算机系统。
系统100包括n个VM(图1中示出的VM 1至VM n),其中,n≥1。VM可以由用户或其他实体根据需要启动。系统100可以以零个VM启动,并且在被请求时启动附加的一个或多个VM。每个VM包括相应的客户OS。VM 1包括客户OS 102-1,并且VM n包括客户OS 102-n。客户OS的示例包括LINUX OS、WINDOWS OS和/或其他类型的OS。不同的客户OS 102-1至102-n可以是相同类型的或不同类型的OS。每个VM还可以包括在该VM中执行的相应的一个或多个应用程序。例如,VM 1包括应用程序104-1,并且VM n包括应用程序104-n。注意,在创建VM前,没有客户OS 102-i(i=1至n)且没有应用程序104-i。
系统100还包括管理程序106,该管理程序创建VM、管理VM的执行、模拟VM可访问的系统100的物理资源、提供VM之间的隔离并且执行其他虚拟化任务。
根据本公开的一些实施方式,代替使用管理程序106来模拟键盘控制器重置端口,重置端口模拟可以被卸载到系统100的平台控制器108。在一些示例中,平台控制器108是系统100的总线110上的总线设备。例如,总线110可以是PCIe总线。在其他示例中,总线110可以是不同类型的总线或其他类型的通信结构。
可以使用任何类型的硬件处理电路(包括例如微控制器、可编程集成电路设备(例如,专用集成电路或ASIC设备)、可编程门阵列、微处理器或任何其他类型的硬件处理电路)来实现平台控制器108。
在一些示例中,平台控制器108与系统100的一个或多个处理器112分离且不同。处理器可以包括微处理器、多核微处理器的核、微控制器、可编程集成电路、可编程门阵列、数字信号处理器或其他硬件处理电路。
处理器112直接或通过另一设备(例如,桥设备)耦接到总线110。处理器112执行系统100的机器可读指令,系统100包括管理程序106、VM、主机OS(如果有的话)以及其他程序(包括软件程序和/或固件程序)。
处理器112可以耦接到系统存储器113,系统存储器113可以包括一个或多个存储器设备以存储数据和机器可读指令。存储器设备可以包括诸如动态随机存取存储器或DRAM设备、静态随机存取存储器或SRAM设备等的易失性存储器。可替代地,存储器设备可以包括非易失性存储器设备。尽管未示出,但是系统存储器113可以包括存储器控制器,或者可替代地,存储器控制器连接到一个或多个存储器设备,以控制对该一个或多个储器设备中的数据的访问。
包括网络接口控制器(NIC)130和永久性存储装置132的其他设备也可以连接到总线110。NIC 130能够通过网络进行通信,使得包括VM的系统100的组件能够通过NIC130通过网络与其他实体通信。在一些示例中,物理键盘控制器也可以连接到总线110。
永久性存储装置132可以存储即使从系统100或永久性存储装置132移除电源也持续存在的数据。可以使用一个或多个非易失性存储设备来实现永久性存储装置132。非易失性存储设备可以包括闪存设备、基于盘的存储设备等。
在根据图1A的示例中,可以使用由平台控制器108提供的PCI功能114-1至114-n来执行重置端口模拟。管理程序106可以向每个VM分配一个或多个PCI功能。PCI功能114-1至114-n包含相应的虚拟键盘控制器(vKBC)128-1至128-n。代替实现物理键盘控制器,PCI功能114-1至114-n中包含的vKBC 128-1至128-n由平台控制器108提供。
图1B示出了根据一些示例的平台控制器108的进一步细节。在其他示例中,平台控制器108可以具有其他实施方式。在一些示例中,图1A的PCI功能114-1至114-n被实现为根据由PCI特殊兴趣组(SIG)所定义的PCIe单根I/O虚拟化(SR-IOV)的虚拟功能(VF)150-1至150-n,其中,PCI特殊兴趣组是定义与PCIe有关的标准(包括SR-IOV规范)的团体。每个VF150-i包含相对应的vKBC 128-i。在图1B的示例中,VF 150-1被分配给VM 1,VF 150-n被分配给VM n等。每个VF可以支持用于PCIe层级内的I/O相关功能(例如,重置端口写入)的唯一且单独的数据路径。vKBC 128-1模拟用于VM 1的重置端口,并且vKBC 128-n模拟用于VM n的重置端口。
在其他示例中,图1A的PCI功能114-1至114-n可以被实现为其他类型的功能。
SR-IOV允许PCIe设备(例如,由图1B的平台控制器108实现的键盘控制器)将其自身向主机(例如,系统100)呈现为多个不同的虚拟设备。出于在虚拟环境中共享PCIe设备的资源的目的,PCIe设备(例如,平台控制器108)实现被划分为多个VF(例如,图1B中示出的150-1至150-n)的PCIe物理功能(PF)152。
PF 152提供对于VF的创建和分配的控制。PF 152包含SR-IOV能力结构,并且管理SR-IOV功能。PF 152可以像图1的系统100中的任何其他PCIe设备一样被发现、管理和操控。
VF 150-1至150-n共享平台控制器的下层硬件和到PCI总线110的PCIe接口。
图1B的平台控制器108进一步包括处理器154和存储器156。图1B的处理器154将执行平台控制器108的指令,以执行平台控制器108的任务。
根据本公开的一些实施方式,SR-IOV使得由VM进行的重置端口激活能够避开管理程序106中的模拟层。根据SR-IOV的VF是轻量化的,从而可以在平台控制器108中实现大量VF。例如,如果系统100包括大量VM,则可以在平台控制器108上实现相对应的大量VF,以执行对于相应的VM的重置端口模拟。
具有SR-IOV功能的设备(例如,平台控制器108)可以被(例如,系统100中的管理程序106或其他实体)配置为在PCI存储器或I/O空间中表现为多个VF,其中,每个VF具有其自身的PCI配置空间。PCI存储器或I/O空间可以指代系统100中的存储器或I/O空间的一部分,系统100包括可以被系统100中的实体(例如,VM或任何其他实体)用来与相对应的PCI设备(例如,VF 150-1至150-n中的任一VF)进行交互的结构(例如,寄存器)。
在一些示例中,为了执行键盘控制器重置端口模拟,每个VF 150-1至150-n具有表示键盘控制器的类代码。根据PCIe,类代码是功能的配置空间报头中识别该功能的功能性的三字节字段。例如,类代码可以包括基类子字段(例如,长度为一个字节)、子类子字段(例如,长度为一个字节)以及程序接口子字段(例如,长度为一个字节)。基类子字段广泛地对VF提供的功能性的类型进行分类。子类子字段更具体地对VF提供的功能性的类型进行识别。编程接口子字段识别VF的特定寄存器级接口(如果有的话),从而使得独立于设备的软件(例如,VM)可以与VF交互。例如,分配给VF的类代码值09h/00h/00h指示VF对应于键盘控制器。在其他示例中,其他类代码值可以表示键盘控制器。
在一些示例中,VM i(i=1至n)可以基于基类子字段和子类子字段二者识别出VF150-i(i=1至n)正在提供键盘控制器的功能性。编程接口子字段可以识别与VM i可以与之交互(例如,将指定值写入重置寄存器116-i,以使得VM i重置)的每个相对应的VF 150-i相关联的重置寄存器(图2A中示出为116-i(i=1至n))。多个VF 150-1至150-n表现为相对应的VM可以用来重置VM的多个重置端口。每个重置寄存器116-i是相对应的vKBC 128-i的部分。相对应的vKBC 128-i中的重置寄存器116-i被映射到存储器地址空间118,并且更具体地被映射到存储器地址空间118中的PCI存储器。可以利用系统100中的多个存储设备(包括图1A的系统存储器113、平台控制器108中的寄存器等)来实现存储器地址空间118。重置寄存器116-1至116-n包括作为存储器地址空间118的部分的存储器映射寄存器。
在可替代示例中,诸如在功能114-1至114-n是PF的示例中,重置寄存器116-1至116-n可以是I/O地址空间的部分。
在存储器空间中实现重置寄存器116-1至116-n可以比在I/O空间中实现重置寄存器(例如,在没有使用SR-IOV的实施方式中)更高效,因为重置寄存器的I/O空间访问可能使处理器112的操作变慢。
存储器地址空间118的存储器地址可以被映射到存储器控制器和/或PCIe控制器。存储器控制器连接到一个存储器设备(或可替代的连接到多个存储器设备)。存储器设备可以包括易失性存储器设备(例如,动态随机存取存储器或DRAM设备、静态随机存取存储器或SRAM设备等)。可替代地,存储器设备可以包括非易失性存储器设备(例如,闪存设备等)。PCIe控制器连接到PCIe设备。PCIe设备可以支持存储器访问,但是它们不能真正访问诸如DRAM或SRAM的存储器设备。代替地,PCIe设备可以访问作为存储器地址空间118的部分的存储器映射寄存器。
在一些示例中,用于每个重置寄存器116-i的PCI存储器空间的起始地址(或基址)基于PCI基址寄存器(BAR)120中包含的处于PCI配置空间中的存储器地址。PCI如图1B所示,BAR 120被包括在PF 152中。PCI定义可以被用来保持用于PCI设备或功能的各种存储器地址的多个BAR。
包含相应的重置寄存器116-1至116-n的PCI存储器空间的重置寄存器基址160-1至160-n是基于BAR 120中包含的存储器地址得出的。管理程序106将存储器地址写入BAR120。BAR 120中包含的存储器地址定义要跨VF 150-1至150-n平均划分的PCI存储器空间的组块。所定义的PCI存储器空间的组块具有大小BARSIZE。每个VF被分配以PCI存储器空间的大小为BARSIZE/n的部分。包含重置寄存器116-i的PCI存储器的重置寄存器基址160-i是基于VF 150-i的VF数结合BAR 120来计算的。
位于VM中的键盘控制器设备驱动器(或其他程序)能够访问相对应的VF的PCI存储器空间。如图1A所示,多个键盘控制器设备驱动器122-1至122-n被包括在相应的客户OS102-1至102-n中。
在一些示例中,VM i中的客户OS 102-i可以包括允许VM i中的键盘控制器设备驱动器122-i访问VF 150-i的PCI存储器空间的应用程序接口(API)。
在平台控制器108的PF 152中使能SR-IOV后,VF实例150-i可用于处理器112上运行的配置软件进行的枚举,并且可以被总线、设备和功能访问。然后,配置软件(在一些示例中为管理程序106)可以从那些PF 152所支持的VF实例中配置期望数目的VF实例150-i,并且可以相应地分配资源(即,通过对BAR 120进行编程为VF实例150-i分配存储器空间118的一部分)。一旦完成,重置寄存器116-i即可以被处理器112寻址。
客户OS 102-i中的键盘控制器设备驱动器122-i能够查询管理程序106,以获取被键盘控制器设备驱动器122-i访问的相对应的重置寄存器基址160-i。这允许客户OS 102-i中的键盘控制器设备驱动器122-i对重置寄存器116-i进行写入。
每个vKBC 128-i可以包括重置寄存器写入检测逻辑,以检测VM i对重置寄存器116-i的写入。对重置寄存器116-i的重置寄存器写入被定向到相应的vKBC 128-i的。响应于重置寄存器写入,vKBC 128-i确定是否已将指定值写入重置寄存器116-i。例如,vKBC128-i中的重置寄存器写入检测逻辑可以将写入重置寄存器116-i的值与指定值进行比较;如果写入值与指定值匹配,则重置端口的激活已经发生。
如果vKBC 128-i中的重置寄存器写入检测逻辑检测到对重置寄存器116-i写入指定值,则vKBC 128-i可以向平台控制器108中的处理器154(图1B)发送中断的信号,例如,使用相应的重置指示124-i。重置指示124-i可以包括信号、中断、命令或任何其他重置的指示。重置指示124-i可以包括识别重置指示124-i与哪个VF 150-i相关联的信息。
响应于重置指示124-i,处理器154上运行的机器可读指令(例如,固件)可以将重置指示124-i重定向到管理程序106。在其他示例中,vKBC 128-i包含将重置指示124-i重定向到管理程序的硬件。
重定向的重置指示124-i(或基于重置指示124-i的信息)可以被管理程序106接收。响应于重定向的重置指示124-i,管理程序106使得相应VM i重置。
在其他示例中,代替在平台控制器中提供VF以用于模拟重置端口,根据本公开的进一步实施方式,如图2B所示的高级配置与电源接口(ACPI)表210被用来存储重置寄存器有关的信息。在一些示例中,ACPI表210是固定ACPI描述表(FADT)。FADT包括与寄存器有关的各种配置细节。ACPI表210是包含在系统存储器113中的存储器地址空间118的部分。
根据本公开的一些实施方式,ACPI表210包含与相应的VM 1至n相关联的多个部分212-1至212-n。ACPI表部分212-1包括重置寄存器地址字段1和重置值1,并且ACPI表部分212-n包括重置寄存器地址字段n和重置值n。相对应的ACPI表部分212-i中的每个重置寄存器地址字段i(i=1至n)包含存储器位置的地址,该存储器位置包含用于相对应VM i的重置寄存器214-i。例如,重置寄存器地址字段1包含针对VM 1的重置寄存器214-1的存储器地址,并且重置寄存器地址字段n包含针对VM n的重置寄存器的存储器地址。重置寄存器214-1至214-n类似于图2A的重置寄存器116-1至116-n,并且可以分别包括vKBC 128-1至128-n的寄存器,如图1A所示。重置寄存器214-1至214-n包括作为存储器地址空间118的部分的存储器映射寄存器(识别为区域216)。
相对应的ACPI表部分212-i中的每个重置值i(i=1至n)包含这样的重置值:如果将该重置值写入相对应的重置寄存器214-i(ACPI表部分212-i中的重置寄存器地址字段i指向该重置寄存器),则该重置值是要重置相应VM i的指示。
在其他示例中,ACPI表部分212-1至212-n不包括重置值,而包括用于指示重置相对应的VM的预定义重置值(例如,FEh或其他值)。
区域216的起始地址可以由例如,BAR(未示出)中包含的地址来指示。
在一些示例中,重置寄存器214-1至214-n的地址可以由管理程序106(图1A)分配。管理程序106可以将重置寄存器地址写入ACPI表部分212-1至212-n的相对应的重置寄存器地址字段。
管理程序106还可以分配被写入相对应的ACPI表部分212-1至212-n的重置值。
在其他示例中,重置寄存器214-1至214-n的地址和重置值可以由其他实体(例如,主机OS或基础输入/输出系统(BIOS))分配。
响应于重置寄存器214-i(i=1至n)的写入,vKBC 128-i(图1A)中的重置寄存器写入检测逻辑可以确定写入重置寄存器214-i的值是否与指定重置值(例如,ACPI表部分210-i中的重置值或预定义值)匹配。
如果写入重置寄存器214-i的值与指定重置值匹配,则vKBC 128-i中的重置寄存器写入检测逻辑可以生成重置指示124-i(类似于图1B的重置指示124-i),该重置指示124-i被平台控制器108重定向到管理程序106以使得相对应的VM i重置。
在以上讨论的任何实施方式中,如果写入重置寄存器的值与指定重置值不匹配,则平台控制器108不向管理程序106发出重置指示,以使得管理程序106不被重置活动中断。因此,向重置寄存器发出许多写入的被感染或行为错误的VM在重置寄存器写入不是一个或多个指定重置值中的指定重置值的情况下,将不会使得管理程序106的活动中断。
图3是根据进一步示例的系统300的框图。系统300包括存储介质302(例如,图1A的系统存储器113或其他设备存储器),以存储和与相应VM相关联的重置端口有关的重置端口信息304。重置端口可以包括键盘控制器重置端口。
在图1B的示例中,重置端口信息304包括重置寄存器116-1至116-n的地址,该地址可以从BAR 120得出或者可以存储在其他位置中。
在图2B的示例中,重置端口信息304包括ACPI表部分212-1至212-n中的信息,该信息包含重置寄存器地址。
系统300进一步包括控制器306(例如,图1A的平台控制器108),以执行各种任务。
控制器306的任务包括基于重置端口信息304,检测与第一VM相关联的第一重置端口的激活的重置端口激活检测任务308。
控制器306的任务包括响应于对第一重置端口的激活的检测,向与控制器306分离的管理程序314(例如,图1A中的106)提供对第一重置端口的激活的指示312的重置指示提供任务310,其中,该指示将使得管理程序314在管理程序314不模拟键盘控制器的情况下重置第一VM。
在一些示例中,对第一重置端口的激活的检测包括检测对与第一重置端口相关联的指定地址的写入(例如,对重置寄存器的写入)。
在一些示例中,重置端口信息304包括将重置寄存器映射到用于相应VM的不同存储器地址位置的PCI寄存器信息(例如,图1B的BAR 120或图2B的ACPI表部分212-1至212-n)。
在一些示例中,重置寄存器与分配给相应VM的相应PCI VF相关联,其中,PCI VF由控制器306提供。
在一些示例中,重置寄存器是I/O空间重置寄存器。在其他示例中,重置寄存器是存储器空间重置寄存器。
图4是存储在执行时使得控制器执行指定任务的机器可读指令的非暂态机器可读或计算机可读存储介质400的框图。
机器可读指令包括访问和与相应VM相关联的重置寄存器有关的信息的重置寄存器信息访问指令402。
机器可读指令进一步包括基于该信息,检测与第一VM相关联的第一重置寄存器的写入的重置寄存器写入检测指令404。
机器可读指令进一步包括确定是否将指定重置值写入第一重置寄存器的重置值确定指令406。
机器可读指令进一步包括响应于确定将指定重置值写入第一重置寄存器,向与控制器分离的管理程序提供重置指示的重置指示提供指令408,其中,重置指示使得管理程序重置第一VM。
图5是根据一些示例的过程500的流程图。过程500包括由控制器(例如,图1中的108、图2中的208、图3中的306)检测(在502处)多个键盘控制器重置端口中的第一键盘控制器重置端口的激活,其中,检测基于识别与相应VM相关联的多个键盘控制器重置端口的地址的信息。
响应于检测,过程500包括由控制器向与控制器分离的管理程序提供(在504处)对第一键盘控制器重置端口的激活的指示,该指示包括指示第一VM的信息。
过程500包括由管理程序响应于指示重置(在506处)第一VM。
图4的存储介质400可以包括以下各项中的任一项或一些组合:诸如动态或静态随机存取存储器(DRAM或SRAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和闪存的半导体存储器设备;诸如固定、柔性和可移动盘的磁盘;包括磁带的其他磁介质;诸如压缩盘(CD)或数字视频盘(DVD)的光学介质;或者其他类型的存储设备。注意,以上讨论的指令可以提供在一个计算机可读或机器可读存储介质上,或者可替代地可以提供在分布在可能具有多个节点的大型系统中的多个计算机可读或机器可读存储介质上。这种一个或多个计算机可读或机器可读存储介质被认为是产品(或制品)的一部分。产品或制品可以指代任何制造的单个组件或多个组件。一个或多个存储介质可以位于运行机器可读指令的机器中,或者位于远程站点,可以通过网络从该远程站点下载机器可读指令以用于执行。
在前面的描述中,阐述了很多细节以提供对本文所公开的主题的理解。但是,可以在没有这些细节中的某些细节的情况下实践这些实施方式。其他实施方式可以包括以上讨论的细节的修改和变形。旨在所附权利要求覆盖这些修改和变形。

Claims (20)

1.一种系统,包括:
存储介质,所述存储介质用于存储与重置端口有关的信息,所述重置端口与多个虚拟机(VM)中的相应VM相关联;以及
控制器,所述控制器用于:
基于所述信息,检测与所述多个VM中的第一VM相关联的第一重置端口的激活,并且
响应于检测,向与所述控制器分离的管理程序提供对所述第一重置端口的所述激活的指示,所述指示使得所述管理程序重置所述第一VM。
2.如权利要求1所述的系统,其中,检测所述第一重置端口的所述激活包括检测对与所述第一重置端口相关联的指定地址的写入。
3.如权利要求2所述的系统,其中,所述指定地址是重置寄存器的地址,并且其中,所述信息与用于所述相应VM的不同的地址位置处的重置寄存器有关。
4.如权利要求3所述的系统,其中,所述信息将从寄存器信息导出,并且将所述重置寄存器映射到用于所述相应VM的不同的存储器地址位置。
5.如权利要求4所述的系统,其中,所述重置寄存器与分配给所述相应VM的相应虚拟功能(VF)相关联。
6.如权利要求4所述的系统,其中,所述信息进一步包括高级配置与电源接口(ACPI)表,所述ACPI表包括与所述相应VM相关联的多个重置寄存器地址字段,所述多个重置寄存器地址字段中的每个相应的重置寄存器地址字段包含所述不同的存储器地址位置中的相对应的存储器地址位置的地址。
7.如权利要求6所述的系统,其中,所述ACPI表进一步包括将被写入所述重置寄存器以执行所述相应VM的重置的重置值。
8.如权利要求6所述的系统,其中,所述ACPI表是固定ACPI描述表(FADT)。
9.如权利要求3所述的系统,其中,所述重置寄存器是输入/输出(I/O)空间重置寄存器。
10.如权利要求3所述的系统,其中,所述重置寄存器是存储器空间重置寄存器。
11.如权利要求1所述的系统,其中,所述重置端口是键盘控制器重置端口,并且所述第一重置端口是所述键盘控制器重置端口之一。
12.如权利要求11所述的系统,其中,所述控制器用于提供所述指示,以使得所述管理程序重置所述系统而无需所述管理程序模拟键盘控制器。
13.如权利要求1所述的系统,进一步包括总线,所述控制器包括连接到所述总线的总线设备。
14.一种非暂态机器可读存储介质,包括指令,所述指令在被执行时使得控制器执行以下操作:
访问与重置寄存器有关的信息,所述重置寄存器与多个虚拟机(VM)中的相应VM相关联;
基于所述信息,检测对与所述多个VM中的第一VM相关联的第一重置寄存器的写入;
确定是否将指定重置值写入所述第一重置寄存器;以及
响应于确定将所述指定重置值写入所述第一重置寄存器,向与所述控制器分离的管理程序提供重置指示,所述重置指示使得所述管理程序重置所述第一VM。
15.如权利要求14所述的非暂态机器可读存储介质,其中,所述信息包括寄存器,所述寄存器包含导出所述重置寄存器的地址的地址。
16.如权利要求15所述的非暂态机器可读存储介质,其中,所述寄存器是基址寄存器。
17.如权利要求14所述的非暂态机器可读存储介质,其中,所述信息包括存储器中的多个段中的所述重置寄存器的地址。
18.如权利要求17所述的非暂态机器可读存储介质,其中,所述信息进一步包括高级配置与电源接口(ACPI)表,所述ACPI表包括与所述相应VM相关联的多个重置寄存器地址字段,所述多个重置寄存器地址字段中的每个相应的重置寄存器地址字段包含包括所述重置寄存器中的相应重置寄存器的相对应的存储器地址位置的地址。
19.一种方法,包括:
由控制器检测多个键盘控制器重置端口中的第一键盘控制器重置端口的激活,其中,检测基于识别与多个虚拟机(VM)中的相应VM相关联的所述多个键盘控制器重置端口的地址的信息;
响应于所述检测,由所述控制器向与所述控制器分离的管理程序提供对所述第一键盘控制器重置端口的所述激活的指示,所述指示包括指示所述第一VM的信息;以及
由所述管理程序响应于所述指示,重置所述第一VM。
20.如权利要求19所述的方法,其中,所述信息包括:
外围组件互连(PCI)寄存器,所述PCI寄存器包含将用于导出所述多个键盘控制器重置端口的地址的地址,其中,所述多个键盘控制器重置端口与由所述控制器提供的相应的PCI虚拟功能相关联;或者
高级配置与电源接口(ACPI)表,所述ACPI表包括与所述相应VM相关联的多个地址字段,所述多个地址字段中的每个相应的地址字段包含相对应的存储器地址位置的地址,所述相对应的存储器地址位置包括与所述多个键盘控制器重置端口中的相应键盘控制器重置端口相关联的相应寄存器。
CN202110207372.1A 2020-02-27 2021-02-24 计算机系统、机器可读存储介质和重置计算机系统的方法 Active CN113312295B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/803,304 US11640312B2 (en) 2020-02-27 2020-02-27 System reset using a controller
US16/803,304 2020-02-27

Publications (2)

Publication Number Publication Date
CN113312295A true CN113312295A (zh) 2021-08-27
CN113312295B CN113312295B (zh) 2024-04-16

Family

ID=77370543

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110207372.1A Active CN113312295B (zh) 2020-02-27 2021-02-24 计算机系统、机器可读存储介质和重置计算机系统的方法

Country Status (2)

Country Link
US (1) US11640312B2 (zh)
CN (1) CN113312295B (zh)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU6603398A (en) * 1997-03-14 1998-10-12 Cardsoft, Inc. Method and apparatus for controlling communications
US20100125723A1 (en) * 2008-11-19 2010-05-20 Barnes Cooper Method and system to enable fast platform restart
US20120011505A1 (en) * 2010-07-06 2012-01-12 Fujitsu Limited Computer system and recording medium
US20120284712A1 (en) * 2011-05-04 2012-11-08 Chitti Nimmagadda Systems and methods for sr-iov pass-thru via an intermediary device
US20140068607A1 (en) * 2012-09-05 2014-03-06 Michael Tsirkin Managing safe removal of a passthrough device in a virtualization system
US20140372788A1 (en) * 2013-06-18 2014-12-18 Vmware, Inc. Hypervisor remedial action for a virtual machine in response to an error message from the virtual machine
US20150160960A1 (en) * 2013-12-06 2015-06-11 Vmware, Inc. Method and subsystem for data exchange between a guest operating system and a virtualization layer
US20160124751A1 (en) * 2014-03-19 2016-05-05 Intel Corporation Access isolation for multi-operating system devices
US20160283425A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Additional secured execution environment with sr-iov and xhci-iov
US20170139721A1 (en) * 2015-11-18 2017-05-18 Oracle International Corporation Implementation of reset functions in an soc virtualized device

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8074262B2 (en) 2005-05-13 2011-12-06 Intel Corporation Method and apparatus for migrating virtual trusted platform modules
US8239667B2 (en) 2008-11-13 2012-08-07 Intel Corporation Switching between multiple operating systems (OSes) using sleep state management and sequestered re-baseable memory
US8645605B2 (en) 2010-12-28 2014-02-04 Plx Technology, Inc. Sharing multiple virtual functions to a host using a pseudo physical function
US8892802B2 (en) 2012-01-01 2014-11-18 International Business Machines Corporation Enhancing interrupt handling in a virtual environment
US8954965B2 (en) 2012-08-03 2015-02-10 Microsoft Corporation Trusted execution environment virtual machine cloning
US9400674B2 (en) 2014-12-11 2016-07-26 Amazon Technologies, Inc. Managing virtual machine instances utilizing a virtual offload device
US9667414B1 (en) 2015-03-30 2017-05-30 Amazon Technologies, Inc. Validating using an offload device security component
US10318311B2 (en) 2016-06-30 2019-06-11 Amazon Technologies, Inc. Memory allocation techniques at partially-offloaded virtualization managers

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU6603398A (en) * 1997-03-14 1998-10-12 Cardsoft, Inc. Method and apparatus for controlling communications
US20100125723A1 (en) * 2008-11-19 2010-05-20 Barnes Cooper Method and system to enable fast platform restart
US20120011505A1 (en) * 2010-07-06 2012-01-12 Fujitsu Limited Computer system and recording medium
US20120284712A1 (en) * 2011-05-04 2012-11-08 Chitti Nimmagadda Systems and methods for sr-iov pass-thru via an intermediary device
US20140068607A1 (en) * 2012-09-05 2014-03-06 Michael Tsirkin Managing safe removal of a passthrough device in a virtualization system
US20140372788A1 (en) * 2013-06-18 2014-12-18 Vmware, Inc. Hypervisor remedial action for a virtual machine in response to an error message from the virtual machine
US20150160960A1 (en) * 2013-12-06 2015-06-11 Vmware, Inc. Method and subsystem for data exchange between a guest operating system and a virtualization layer
US20160124751A1 (en) * 2014-03-19 2016-05-05 Intel Corporation Access isolation for multi-operating system devices
US20160283425A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Additional secured execution environment with sr-iov and xhci-iov
US20170139721A1 (en) * 2015-11-18 2017-05-18 Oracle International Corporation Implementation of reset functions in an soc virtualized device

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
ANDRE RICHTER等: "Performance Isolation Exposure in Virtualized Platforms with PCI Passthrough I/O Sharing", Retrieved from the Internet <URL:https://mediatum.ub.tum.de/doc/1187609/972322.pdf> *
INTEL等: "advanced configuration and power interface specification", Retrieved from the Internet <URL:advanced configuration and power interface specification> *
YAOZU DONG等: "High performance network virtualization with SR-IOV", JOURNAL OF PARALLEL AND DISTRIBUTED COMPUTING, vol. 72, no. 11 *

Also Published As

Publication number Publication date
US20210271501A1 (en) 2021-09-02
US11640312B2 (en) 2023-05-02
CN113312295B (zh) 2024-04-16

Similar Documents

Publication Publication Date Title
CN109154888B (zh) 配备协调器的超融合系统
US8595723B2 (en) Method and apparatus for configuring a hypervisor during a downtime state
US8775781B2 (en) Intelligent boot device selection and recovery
US8522236B2 (en) Method and system for establishing a robust virtualized environment
KR101823888B1 (ko) 신뢰 컴퓨팅을 위한 다중노드 허브
US10592434B2 (en) Hypervisor-enforced self encrypting memory in computing fabric
US20090125901A1 (en) Providing virtualization of a server management controller
CN113312140B (zh) 用于虚拟可信平台模块的系统、存储介质和方法
US9417886B2 (en) System and method for dynamically changing system behavior by modifying boot configuration data and registry entries
WO2020063432A1 (zh) 一种升级虚拟化模拟器的方法和装置
CN113312141B (zh) 用于卸载串行端口模拟的计算机系统、存储介质和方法
US11144326B2 (en) System and method of initiating multiple adaptors in parallel
US11625338B1 (en) Extending supervisory services into trusted cloud operator domains
US11714756B2 (en) Information handling systems and methods to improve the security and performance of a shared cache memory contained within a multi-core host processor
CN113312295B (zh) 计算机系统、机器可读存储介质和重置计算机系统的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant