CN113312141A - 用于虚拟机的虚拟串行端口 - Google Patents

用于虚拟机的虚拟串行端口 Download PDF

Info

Publication number
CN113312141A
CN113312141A CN202110216286.7A CN202110216286A CN113312141A CN 113312141 A CN113312141 A CN 113312141A CN 202110216286 A CN202110216286 A CN 202110216286A CN 113312141 A CN113312141 A CN 113312141A
Authority
CN
China
Prior art keywords
serial port
virtual
virtual serial
controller
vms
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
CN202110216286.7A
Other languages
English (en)
Other versions
CN113312141B (zh
Inventor
罗伯特·C·埃利奥特
T·F·爱默生
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 CN113312141A publication Critical patent/CN113312141A/zh
Application granted granted Critical
Publication of CN113312141B publication Critical patent/CN113312141B/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/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
    • 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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • 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
    • G06F9/30101Special purpose registers
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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/45579I/O management, e.g. providing access to device drivers or storage
    • 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/45583Memory management, e.g. access or allocation
    • 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/45595Network integration; Enabling network access in virtual machine instances
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Systems (AREA)

Abstract

本公开涉及用于虚拟机的虚拟串行端口。在一些示例中,存储介质存储指示虚拟串行端口的地址位置的信息,其中,虚拟串行端口与相应的虚拟机(VM)相关联。与管理程序分离的控制器基于该信息检测与多个VM中的第一VM相关联的第一虚拟串行端口的访问,并且通过第一虚拟串行端口在第一VM和另一实体之间传送数据。

Description

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

Claims (20)

1.一种系统,包括:
存储介质,所述存储介质用于存储指示虚拟串行端口的地址位置的信息,其中,所述虚拟串行端口与多个虚拟机(VM)中的相应的VM相关联;
管理程序;以及
与所述管理程序分离的控制器,所述控制器用于:
基于所述信息,检测与所述多个VM中的第一VM相关联的第一虚拟串行端口的访问,以及
通过所述第一虚拟串行端口在所述第一VM和另一实体之间传送数据。
2.如权利要求1所述的系统,其中,检测所述第一虚拟串行端口的访问包括检测对与所述第一虚拟串行端口相关联的寄存器的写入。
3.如权利要求2所述的系统,其中,所述信息指示所述虚拟串行端口的相应的寄存器组的地址位置。
4.如权利要求3所述的系统,其中,所述相应的寄存器组在输入/输出(I/O)地址空间中。
5.如权利要求3所述的系统,其中,所述相应的寄存器组在存储器地址空间中。
6.如权利要求1所述的系统,其中,所述信息包括基址寄存器,所述基址寄存器包含用于得出所述虚拟串行端口的地址的存储器地址。
7.如权利要求1所述的系统,其中,所述信息包括高级配置与电源接口(ACPI)信息。
8.如权利要求1所述的系统,其中,所述虚拟串行端口与分配给所述相应的VM的相应虚拟功能(VF)相关联,所述VF实现在所述控制器上。
9.如权利要求8所述的系统,其中,所述VF对应于控制所述虚拟串行端口的通信的虚拟串行端口控制器。
10.如权利要求9所述的系统,其中,所述VF能够被配置给与不同大小的先进先出(FIFO)缓存器相关联的不同类型的虚拟串行端口控制器。
11.如权利要求8所述的系统,其中,所述管理程序将相应的VF分配给相应的VM。
12.如权利要求1所述的系统,其中,所述管理程序将多个虚拟串行端口与所述多个VM中的给定VM相关联。
13.如权利要求1所述的系统,其中,所述信息基于来自所述多个VM中的VM的客户机操作系统的内核命令行的输入。
14.如权利要求1所述的系统,进一步包括总线,所述控制器包括连接到所述总线的总线设备。
15.一种非暂态机器可读存储介质,包括在执行时促使控制器执行以下操作的指令:
访问指示虚拟串行端口的寄存器组的地址位置的信息,其中,所述虚拟串行端口与多个虚拟机(VM)中的相应的VM相关联;
基于所述信息检测与所述多个VM中的第一VM相关联的虚拟串行端口的寄存器组中的寄存器的写入;以及
响应于所述检测,通过与所述第一VM相关联的虚拟串行端口在所述第一VM和另一实体之间传送数据,而不由管理程序执行串行端口模拟。
16.如权利要求15所述的非暂态机器可读存储介质,其中,所述信息包括基址寄存器(BAR)中的存储器地址,所述BAR中的存储器地址能够用来得出所述寄存器组的地址。
17.如权利要求15所述的非暂态机器可读存储介质,其中,所述寄存器组与所述控制器提供的相应的虚拟功能(VF)相关联。
18.如权利要求17所述的非暂态机器可读存储介质,其中,所述VF中的每个VF具有对于串行端口控制器的基类/子类/程序接口设置。
19.一种方法,包括:
存储指示虚拟串行端口的地址位置的信息,其中,所述虚拟串行端口与多个虚拟机(VM)中的相应的VM相关联;
由连接到总线的控制器基于所述信息检测与所述多个VM中的第一VM相关联的第一虚拟串行端口的访问;以及
由所述控制器通过所述第一虚拟串行端口在所述第一VM和另一实体之间传送数据。
20.如权利要求19所述的方法,其中,所述信息指示所述虚拟串行端口的相应的寄存器组的地址。
CN202110216286.7A 2020-02-27 2021-02-26 用于卸载串行端口模拟的计算机系统、存储介质和方法 Active CN113312141B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/803,293 2020-02-27
US16/803,293 US11442767B2 (en) 2020-02-27 2020-02-27 Virtual serial ports for virtual machines

Publications (2)

Publication Number Publication Date
CN113312141A true CN113312141A (zh) 2021-08-27
CN113312141B CN113312141B (zh) 2023-09-22

Family

ID=77271433

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110216286.7A Active CN113312141B (zh) 2020-02-27 2021-02-26 用于卸载串行端口模拟的计算机系统、存储介质和方法

Country Status (3)

Country Link
US (1) US11442767B2 (zh)
CN (1) CN113312141B (zh)
DE (1) DE102021101709A1 (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11256648B1 (en) * 2020-09-29 2022-02-22 Xilinx, Inc. Virtual hot plug system and method for PCIe devices
US11762671B2 (en) * 2021-11-08 2023-09-19 Smashcut, Inc. Virtualization-based collaborative activity framework with predictive preloading of virtual machines
US20230342469A1 (en) * 2022-04-26 2023-10-26 Dell Products L.P. Clustered virtual trusted platform module domain services with a redirector/router service system
US12019466B2 (en) 2022-04-26 2024-06-25 Hewlett Packard Enterprise Development Lp Virtual precision time protocol clock devices for virtual nodes

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100306763A1 (en) * 2009-05-27 2010-12-02 Dell Products L.P. Virtual Serial Concentrator for Virtual Machine Out-of-Band Management
CN102486741A (zh) * 2010-12-02 2012-06-06 鸿富锦精密工业(深圳)有限公司 串口共用系统及方法
US20160232019A1 (en) * 2015-02-09 2016-08-11 Broadcom Corporation Network Interface Controller with Integrated Network Flow Processing
US20160283425A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Additional secured execution environment with sr-iov and xhci-iov
US20170177909A1 (en) * 2015-12-17 2017-06-22 Nitin Sarangdhar Method and apparatus for protecting a pci device controller from masquerade attacks by malware
CN108491347A (zh) * 2018-04-02 2018-09-04 联想(北京)有限公司 通信方法和电子设备

Family Cites Families (16)

* 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
US20090125901A1 (en) * 2007-11-13 2009-05-14 Swanson Robert C Providing virtualization of a server management controller
WO2010021630A2 (en) * 2008-08-22 2010-02-25 Hewlett-Packard Development Company, L.P. Server virtualized using virtualization platform
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
US8719817B2 (en) * 2010-03-25 2014-05-06 Vmware, Inc. Virtualization intermediary/virtual machine guest operating system collaborative SCSI path management
US8645605B2 (en) 2010-12-28 2014-02-04 Plx Technology, Inc. Sharing multiple virtual functions to a host using a pseudo physical function
WO2012151392A1 (en) 2011-05-04 2012-11-08 Citrix Systems, Inc. Systems and methods for sr-iov pass-thru via an intermediary device
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
TWI588751B (zh) * 2013-05-31 2017-06-21 聯想企業解決方案(新加坡)有限公司 透過基板管理控制器管理虛擬機器的電腦主機與方法
US9208015B2 (en) 2013-06-18 2015-12-08 Vmware, Inc. Hypervisor remedial action for a virtual machine in response to an error message from the virtual machine
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
US10419239B2 (en) * 2016-12-20 2019-09-17 Dell Products, Lp Switch dependent teaming for high availability of virtual network functions
US10235326B1 (en) * 2017-09-05 2019-03-19 Juniper Networks, Inc. Universal asynchronous receiver/transmitter (UART) data pass-through for virtualized environments

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100306763A1 (en) * 2009-05-27 2010-12-02 Dell Products L.P. Virtual Serial Concentrator for Virtual Machine Out-of-Band Management
CN102486741A (zh) * 2010-12-02 2012-06-06 鸿富锦精密工业(深圳)有限公司 串口共用系统及方法
US20160232019A1 (en) * 2015-02-09 2016-08-11 Broadcom Corporation Network Interface Controller with Integrated Network Flow Processing
US20160283425A1 (en) * 2015-03-27 2016-09-29 Intel Corporation Additional secured execution environment with sr-iov and xhci-iov
US20170177909A1 (en) * 2015-12-17 2017-06-22 Nitin Sarangdhar Method and apparatus for protecting a pci device controller from masquerade attacks by malware
CN108491347A (zh) * 2018-04-02 2018-09-04 联想(北京)有限公司 通信方法和电子设备

Also Published As

Publication number Publication date
US20210271500A1 (en) 2021-09-02
US11442767B2 (en) 2022-09-13
DE102021101709A1 (de) 2021-09-02
CN113312141B (zh) 2023-09-22

Similar Documents

Publication Publication Date Title
CN110063051B (zh) 用于重新配置服务器的系统和方法以及服务器
CN113312141B (zh) 用于卸载串行端口模拟的计算机系统、存储介质和方法
US8418166B2 (en) Transparent update of adapter firmware for self-virtualizing input/output device
US8595723B2 (en) Method and apparatus for configuring a hypervisor during a downtime state
EP3992790B1 (en) Information processing method, physical machine and pcie device
AU2009357325B2 (en) Method and apparatus for handling an I/O operation in a virtualization environment
US9781117B2 (en) Multinode hubs for trusted computing
CN113312140B (zh) 用于虚拟可信平台模块的系统、存储介质和方法
CN105264506B (zh) 向内存映射配置分配处理器
CN107430570B (zh) 具有SR-IOV和xHCI-IOV的附加安全执行环境
WO2011047906A1 (en) Assigning a portion of physical computing resources to a logical partition
CN110968392B (zh) 一种升级虚拟化模拟器的方法和装置
US11922072B2 (en) System supporting virtualization of SR-IOV capable devices
US11144326B2 (en) System and method of initiating multiple adaptors in parallel
CN116069584B (zh) 将监控服务扩展到可信云运营商域中
US20230325222A1 (en) Lifecycle and recovery for virtualized dpu management operating systems
CN113312295B (zh) 计算机系统、机器可读存储介质和重置计算机系统的方法
CN114327741A (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