首页> 中国专利> 适用于人工智能辅助的汽车应用的虚拟机存储器的安全访问

适用于人工智能辅助的汽车应用的虚拟机存储器的安全访问

摘要

在各种示例中,使用主机控制器的受信固件来保护虚拟化软件对虚拟机存储器的访问,以验证用于读取虚拟机存储器的一个或更多个命令和/或从虚拟机存储器读取的数据,以防止对虚拟机存储器中的数据的不当访问。如果验证失败,则固件可以避免读取数据和/或避免向虚拟化软件提供对数据的访问。数据可以包括来自虚拟机的请求命令,该请求命令是使用主机控制器来建立或修改到另一实体(诸如在虚拟化环境之内或之外的另一设备)的连接。虚拟化软件可以使用请求命令来辅助该连接。主机控制器可以针对连接提供可扩展的主机控制器接口(xHCI)或不同类型的接口。

著录项

  • 公开/公告号CN112740180A

    专利类型发明专利

  • 公开/公告日2021-04-30

    原文格式PDF

  • 申请/专利权人 辉达公司;

    申请/专利号CN201980061719.7

  • 申请日2019-08-02

  • 分类号G06F9/455(20060101);

  • 代理机构11336 北京市磐华律师事务所;

  • 代理人赵楠

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 10:46:31

说明书

背景技术

虚拟化允许多个虚拟机(VM)在单个主机系统中并发运行,该虚拟机通常用于托管操作系统实例(OSI)。由主机控制器呈现给所述主机系统的默认接口(没有接口的虚拟化)可以包括物理功能(PF)或主机控制器接口。主机控制器接口的示例包括用于通用串行总线(USB)、火线(FireWire)、蓝牙、以太网、外围组件互连(PCI)或其他类型通信的接口。例如,可扩展主机控制器接口(xHCI)可用于支持USB通信。主机控制器接口的虚拟化使多个虚拟功能(VF)可以共享一个PF。为了最大程度地减少硬件需求,VF呈现的物理接口通常仅包括相应PF呈现的物理接口的子集,并依靠虚拟化软件来模拟VF接口的某些部分以填补空白。

传统上,虚拟化软件可用于辅助虚拟机和使用VF的另一个实体之间的连接,诸如主机系统内的另一个实体(例如,另一个虚拟机)或主机系统外部的一个实体(例如,硬件设备)。例如,虚拟化软件可以使用VF协助虚拟机建立连接,或使用VF修改现有连接。为了辅助连接,虚拟化软件可以从虚拟机的存储器读取数据,所述数据指示虚拟机所请求的信息,诸如连接属性。在xHCI的示例中,所述数据可以是命令传输请求块(TRB)数据,所述TRB数据用于请求新连接设备的设备属性。这带来了安全风险,因为如果虚拟化软件受到威胁,恶意行为者就有可能通过主机控制器接口读取分配给任何虚拟机的存储器。例如,虚拟化软件的映射虚拟机存储器的一个组件可以操纵该映射以访问存储器中的未授权位置。

发明内容

本公开部分地涉及通过虚拟化软件来保护对虚拟机存储器的访问,以辅助虚拟机与使用VF的另一实体之间的连接。与传统方法不同,主机控制器的受信固件可以验证一个或更多个命令,以读取虚拟机的存储器和/或从虚拟机存储器读取的数据,以防止对虚拟机存储器中的数据进行不当访问。如果验证失败,则固件可以避免读取数据和/或不向虚拟化软件提供对数据的访问。因此,如果虚拟化软件受到损害,则可以防止恶意参与者任意访问虚拟机存储器。

为了读取数据,虚拟化软件的一个或更多个虚拟机管理器(VMM)可以向主机控制器的受信固件发送读取命令,所述读取命令指示要读取的存储器位置以便访问数据。主机控制器固件可以验证读取命令和/或从虚拟机存储器读取的数据。例如,主机控制器固件可以确认读取命令与相应的虚拟机的命令环的门铃事件相匹配,在接收到读取的命令之前确认其已将门铃事件发送给虚拟机管理器,和/或检查由该命令指定的存储器大小是否有效。作为进一步的示例,主机控制器固件可以读取数据并确认数据具有适当的格式和/或包括适当的信息或参数。如果命令和/或数据未通过验证(例如,确定为无效),则主机控制器可以避免提供虚拟机管理器来访问数据。

附图说明

下面参考附图详细描述用于虚拟机存储器安全访问的本系统和方法,其中:

图1是根据本公开一些实施例的用于验证虚拟化软件对存储器中数据的访问的操作环境的示例图;

图2是根据本公开一些实施例的用于验证虚拟化软件对存储器中数据的访问过程的示例流程图;

图3是根据本公开一些实施例的用于响应来自虚拟化软件的读取命令而验证从虚拟机存储器读取的数据的方法的示例流程图;

图4是根据本公开一些实施例的用于验证来自虚拟化软件的命令以读取虚拟机存储器的方法的示例流程图;

图5是根据本公开一些实施例的用于虚拟化软件使用主机控制器固件从虚拟机存储器中读取数据的方法的示例流程图;以及

图6是根据本公开一些实施例的适合于验证虚拟化软件对存储器中数据的访问的示例计算环境的框图。

具体实施方式

本文公开了一个系统和方法,所述系统和方法与使用主机控制器的受信固件来验证一个或更多个命令相关,所述命令是读取虚拟机存储器(例如,专用于或分配给虚拟机的系统存储器)和/或从虚拟机存储器读取数据的命令,以防止对系统存储器中数据进行不当访问。作为结果,如果虚拟化软件遭到破坏,则可以防止恶意参与者随意访问虚拟机存储器。

在各个实施例中,虚拟化软件和VF的一个或更多个虚拟机管理器(VMM)可用于辅助虚拟机与另一实体(例如,外部虚拟机、外部设备)之间的连接,诸如主机系统内的另一实体(例如另一虚拟机),或主机系统外部的实体。虚拟机管理器可以包括或可以不包括主机系统的虚拟机超级监督器(hypervisor)。为了辅助所述连接,所述虚拟机可以从虚拟机管理器接收有关实体的通知。例如,用户可以将USB设备连接到xHCI控制器,并且xHCI控制器可以将新设备通知给虚拟机管理器,进而通知适当的虚拟机。响应于所述通知,虚拟机可以提供针对虚拟机管理器的命令,其作为数据存储在底层系统的存储器中或针对虚拟机所指定的设备中。为了读取数据,虚拟机管理器可以向主机控制器的受信固件发送读取命令,所述读取命令指示要读取的存储器位置,以便访问数据。

在本公开的一些方面,主机控制器固件可以验证读取命令。例如,主机控制器固件可以确认读取的命令与对应于虚拟机的命令环的门铃事件相匹配。作为另一个示例,主机控制器固件可以在接收到命令之前确认其向虚拟机管理器发送了门铃事件(例如,指示虚拟机管理器帮助处理虚拟机命令环中的命令)。作为另一个示例,主机控制器固件可以检查由命令指定的存储器大小是否有效(例如,TRB可以是16字节,并且更大或更小的大小可以指示无效命令)。如果所述命令未通过验证,则主机控制器固件可以避免读取存储位置和/或向(一个或更多个)虚拟机管理器提供对从存储位置读取的数据的访问权限。

在本公开的进一步方面中,除了或代替验证所述命令的主机控制器固件外,所述主机控制器固件还可验证从存储器位置读取的数据。例如,主机控制器固件可以读取数据并确认数据格式正确和/或包含适当的信息或参数。这可以包括检查请求类型字段是否具有有效值、一个或更多个保留字段是否具有期望值、槽位号标识符(ID)是否在预定范围内、和/或数据是否在预定格式中。在xHCI接口的示例中,这可以包括检查TRB类型字段是否在有效范围内、一个或更多个保留字段是否等于零、槽位号标识符是否在预定范围内,和/或数据是否为TRB格式。如果读取的数据未通过验证,则主机控制器固件可避免向(一个或更多个)虚拟机管理器提供对从存储器位置读取的数据的访问权限。

在任何示例中,如果命令和/或数据未通过验证(例如,确定为无效),则固件可以将指示命令失败的命令完成事件(例如,CCode=0)提供给(一个或更多个)虚拟机管理器。如果所述命令和/或数据被验证,则主机控制器固件可以为(一个或更多个)虚拟机管理器提供对数据的访问,诸如通过将数据复制到虚拟机管理器存储器。此外,主机控制器固件可以向(一个或更多个)虚拟机管理器提供指示命令成功的命令完成事件(例如,CCode=1)。这可以向虚拟机管理器指示它可以从虚拟机管理器存储器中读取数据。

现在参考图1,图1是根据本公开的一些实施例的用于验证虚拟化软件对存储器中的数据的访问的操作环境100的示例图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以一起省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在存储器中的指令而实现。

操作环境100可以尤其包括(一个或更多个)主机系统102和(一个或更多个)外部设备130。例如,可以使用图6的一个或更多个计算设备600来实现操作环境100。主机系统102可以包括虚拟机管理器104、主机控制器固件/硬件106(也称为“主机控制器106”或“主机控制器固件106”)、虚拟机108、虚拟机110、虚拟机114、虚拟机116和存储器118。所述虚拟机管理器104可以包括虚拟机管理器存储器134、接口管理器136、通信处理器138和存储器映射器140。主机控制器固件106可以包括验证器142、通信处理器144和接口管理器146。所述存储器118可以包括虚拟机存储器120、虚拟机存储器122、虚拟机存储器124和虚拟机存储器126。

(一个或更多个)主机系统102可以被配置为托管一个或更多个虚拟化环境。可以通过虚拟化软件来管理所述虚拟化环境,虚拟化软件的一个示例可以包括一个或更多个虚拟机管理器104。(一个或更多个)虚拟机管理器104可以包括或可以不包括主机系统102的虚拟机超级监督器。所述虚拟机超级监督器可以创建并运行任意数量的虚拟机,诸如所述虚拟机108、110、114或116(例如,访客虚拟机)和/或(一个或更多个)虚拟环境的虚拟化服务(例如,虚拟机管理器104)。

除其他潜在功能之外,虚拟机管理器104可以被配置为使用VF经由主机控制器106辅助(例如,使用符合xHCI的服务器)虚拟机(诸如虚拟机108)中的任何一个与另一实体之间的连接。其他实体的示例包括主机系统102内的实体(例如,虚拟机116)或主机系统外部的实体(例如,外部设备130)。虚拟机管理器104的接口管理器136可以被配置为管理发往和来自虚拟机104的通信。所述虚拟机管理器104的接口管理器138可以被配置为生成通信(诸如读取命令以读取虚拟机存储器)和/或处理接收到的通信(诸如门铃事件或来自虚拟机的虚拟机管理器存储器134中的请求命令)。虚拟机管理器104的存储器映射器140可以被配置为将与VF或虚拟机相对应的数据映射到存储器118(例如,用于虚拟机108的虚拟机存储器120)中的对应存储器地址,以用于从虚拟机的存储器读取数据的读取命令。

除其他潜在功能外,所述主机控制器106可以被配置为提供虚拟机和其他实体之间连接的接口,以及验证从虚拟机管理器104读取的命令和/或从虚拟机存储器读取的数据。例如,主机控制器106的接口管理器146可以被配置为管理去往和来自主机控制器106的通信。主机控制器106的通信处理器144可以被配置为处理接收到的通信,诸如来自虚拟机的门铃事件、来自虚拟机管理器104的读取命令,和/或基于读取命令从虚拟机存储器读取的数据,所述读取命令诸如来自虚拟机的请求命令。主机控制器106的通信处理器144还可以被配置为生成通信,诸如用于虚拟机管理器104的门铃事件。如本文所述,由通信处理器144执行的处理中的至少一些可以使用主机控制器106的验证器142来验证读取命令和/或从虚拟机的虚拟机存储器读取的数据。一旦被验证,主机控制器106的接口管理器146可以将数据提供给虚拟机管理器存储器134,以用于建立和/或修改虚拟机与另一实体之间的连接。接口管理器146然后可以直接与虚拟机和另一个实体通信以托管连接,而不需要使用虚拟机管理器104(例如,用于与数据传输有关的工作)。

主机系统102可以在一个或更多个集成电路(IC)上实现,所述集成电路可以包括但不限于一个或更多个片上系统(SoC)和/或图形处理单元(GPU)。主机系统102通常可用于虚拟机使用主机控制器接口与另一实体通信的任何应用中。在一些示例中,主机系统102可以形成嵌入式系统的至少一部分,诸如电子控制单元(ECU)。主机系统102可以被结合到例如非自动车辆、半自动车辆(例如,在一个或多个高级驾驶员辅助系统(ADAS)中)、机器人、仓库车辆、越野车辆、飞行船、船和/或其他车辆类型中。例如,所述主机系统102可以使用虚拟机108、110、114或116来确定和/或传达(例如,使用主机控制器106)对一个或多个设备的加速器,制动和/或功能的控制。这可用于ADAS、机器人技术(例如,机器人的路径规划)、航空系统(例如,无人机或其他飞行器的路径规划)、划船系统(例如,船只或其他水上船只的路径规划),和/或其他技术。

主机系统102的虚拟机108、110、114和116中的每一个可以是虚拟计算设备。虚拟机108、110、114和116中的每一个可以在存储器118中具有独立的能力和操作地址空间。例如,虚拟机108、110、114和116可以具有各自的地址空间,所述各自的地址空间与虚拟机存储器120、虚拟机存储器122、虚拟机存储器124和虚拟机存储器126分别对应。存储器118可以指代一个或更多个物理存储器设备,并且虚拟机超级监督器和/或虚拟机管理器104可以负责支持虚拟机108、110、114和116共享(一个或更多个)物理设备的能力,同时实施不同的地址空间。在一些示例中,每个虚拟机位于虚拟机超级监督器和/或虚拟机管理器104支持的不同分区上。

虚拟机108、110、114或116中的一个或更多个可以经由主机控制器106接收并提供与外围设备(例如,外部设备130)和组件的通信。外部设备130的示例包括能够通过主机控制器接口与虚拟机通信的任意设备,诸如,ECU、USB驱动器、相机、智能手机、虚拟机、膝上型计算机、个人计算机、网络设备、外围设备、客户端设备等。每个虚拟机可以包括诸如访客OS的OSI,所述OSI的示例包括Linux、Android、GENIVI、QNX等的部署。作为用于自动驾驶实现的特定示例,一个所述访客OS可以控制车载信息娱乐(IVI)系统、另一个车辆集群、另一个平视显示器(HUD)系统以及另一个ADAS和/或自动驾驶系统。可以通过主机控制器106提供的接口来提供用于实现此功能的任意数量的通信。

在各种示例中,虚拟机108、110、114和116中的每一个可以具有命令环,虚拟机可以向其提供任意数量的命令。每个虚拟机可以在存储器118中的虚拟机存储器(例如,地址空间)中提供命令。例如,虚拟机108可以向指派给虚拟机108的虚拟机存储器120提供命令。这种命令的示例包括请求命令,虚拟机可以使用所述请求命令来请求有关连接和/或设备(例如,外部设备130)的能力的信息,以便建立和/或修改与另一个设备(例如,外部设备130)或另一个虚拟机或逻辑设备或组件的连接。所述虚拟机管理器104和/或虚拟机超级监督器可以使用请求命令来修改和/或建立连接。作为示例,如果外部设备130是数码相机,则请求命令可以指示所述数码相机支持的格式或传输。

请求命令可以具有不同的格式和/或可以包含不同类型的信息,这取决于由主机控制器106实现的控制器接口和/或其他连接标准。例如,在控制器接口基于xHCI的情况下,所述命令可以包括TRB数据。所述TRB数据可以是在存储器中构造的数据结构形式,并且表示诸如TRB类型字段、一个或更多个保留字段以及槽位号标识符之类的信息。可以使用槽位号标识符为每个VF(和虚拟机)指派一个插槽。所述插槽可以具有一个插槽上下文地址,所述一个插槽上下文地址包括插槽上下文数据结构,所述数据结构包含与整个设备有关或影响设备所有端点的信息。所述虚拟机管理器104可以在插槽上下文中读取PF中的该插槽上下文地址和程序。

为了增强安全性,虚拟机管理器104和/或虚拟机超级监督器可能不具备直接读取虚拟机存储器以进行命令环处理的能力。例如,如果虚拟化软件遭到破坏,则虚拟机管理器104能够从存储器118中和/或特定虚拟机的存储器中的任意位置进行读取。相反,为了从虚拟机读取所述请求命令,虚拟机管理器104的接口管理器136可以向主机控制器106提供读取命令,并且主机控制器106的接口管理器146可以接收读取命令,并且作为响应,使用一个或更多个控制器直接存储器访问(DMA)以从虚拟机存储器中读取数据。主机控制器106的接口管理器146可以进一步向虚拟机管理器104提供对数据的访问,诸如通过将数据提供(例如写入)到虚拟机管理器存储器134,可以由虚拟机管理器104的接口管理器136读取所述数据。随后,所述虚拟机管理器104使用通信处理器138来处理所述命令并辅助所述连接。所述虚拟机管理器存储器134被显示为在虚拟机管理器104内,但是也可以在虚拟机管理器104外部。此外,虚拟机管理器存储器134可以被包括在存储器118和/或主机系统102的各种其他组件中。虚拟机管理器存储器134通常可指虚拟机管理器104的接口管理器136可访问的存储器位置。

虚拟机管理器104可以被配置为向虚拟机108、110、114和116中的每一个至少提供一些虚拟化服务。该虚拟化服务可以包括虚拟机管理器104捕获虚拟机108、110、114和116中的每一个的能力和操作寄存器空间。在一些实施例中,虚拟机管理器104被配置为执行虚拟机108、110、114和116的根端口级虚拟化,其中所有设备都可以连接到一个根端口,并且可以在其中指派给一个访客操作系统。所述虚拟机管理器104还可以管理每一个虚拟机108、110、114和116中的物理功能和命令环。在一些实施例中,每当VF试图访问主机控制器106的能力和操作寄存器空间时,所述虚拟机管理器104可以经由接口管理器136得到通知。虚拟机管理器104的PF命令和事件环可以配置为使用通信处理器138来处理VF命令,并使用接口管理器136从主机控制器106接收事件TRB。虚拟机管理器104的接口管理器136还可以接收与主机控制器106相关联的所有端口的填充中断,接口管理器136随后可以以虚拟机间通信(IVC)消息的形式转发给相应的虚拟机。

主机控制器固件106可以是主机系统102的受信实体,当由主机系统102通过系统的信任链进行加载时,所述可信实体将被签名和认证。主机控制器固件106可以支持多种主机控制器接口中的任何一种,诸如那些用于通用串行总线(USB)、火线(FireWire)、蓝牙、以太网、外围组件互连(PCI)、近场通信(NFC)、车辆对一切(V2X)、车到车(Car2Car)、蜂窝、无线保真(WiFi)或其他类型的通信。

所述主机控制器固件106可以确定访问存储器118中的内容、如何安全地进行所述访问、以及如何将结果提供给主机系统102的其他组件。为此,响应于所读取的命令,主机控制器106可以使用验证器142来验证从虚拟机管理器104读取的命令和/或从存储器118读取的数据,以便调节对数据的访问。为了验证来自虚拟机的读取命令,验证器142可以确认读取命令与对应的虚拟机的命令环的门铃事件相匹配。例如,当虚拟机108将请求命令写入虚拟机存储器120时,其可以提供门铃事件,所述门铃事件由主机控制器固件106的接口管理器146接收。如果没有从虚拟机108接收到这种门铃事件,但是主机控制器固件106的接口管理器146已接收到读取命令,该读取命令请求主机控制器固件106从虚拟机存储器120中读取,则验证器142可以确定所述读取命令无效。

作为另一示例,所述验证器142可以在接收到读取命令之前确认主机控制器106的接口管理器146向虚拟机管理器104发送了门铃事件。例如,在一些实施例中,响应于从虚拟机108接收到门铃事件,主机控制器固件106的接口管理器146可以向虚拟机管理器104提供相应的门铃事件。向虚拟机管理器104的所述门铃事件可以向虚拟机管理器104指示使用存储器映射器140确定虚拟机108的存储器地址,并将所述读取命令中的存储器地址或一个或多个存储器位置的其他指示符提供给主机控制器106。如果主机控制器106的接口管理器146没有将这种门铃事件提供给虚拟机管理器104,但是接收到读取命令,所述读取命令请求主机控制器固件106从虚拟机存储器120读取,则验证器142可以确定读取命令无效。

在任何示例中,主机控制器106的验证器142可以使用读取命令中的信息来确定读取命令是否有效。例如,读取命令可以包括槽位号标识符、VF ID、要读取的存储器地址或要读取的存储器大小中的一个或更多个。在一些示例中,如果所述VF ID与在门铃事件中由虚拟机108提供给主机控制器固件106的VF的ID不匹配,则主机控制器106的验证器142可以确定读取命令无效。同样在一些示例中,如果所述槽位号标识符与在门铃事件中由虚拟机108提供给主机控制器固件106的插槽的ID不匹配,则主机控制器106的验证器142可以确定读取命令无效。

作为另一个示例,主机控制器106的验证器142可以基于由读取命令指定的存储器大小来验证读取命令。这可以包括确定存储器大小在预定范围内和/或具有预定大小(其可以基于其他因素而变化)。例如,TRB可以是16个字节,更大或更小的大小可以指示无效命令。因此,如果所述验证器142确定存储器大小不等于16字节,则验证器142可以确定读取命令无效。如果验证器142未验证通过读取命令,则主机控制器固件106可以避免使用接口管理器146来读取由读取命令指示的存储器位置和/或不向虚拟机管理器104提供对从存储器位置读取数据的访问权。

除了或代替主机控制器106的验证器142验证读取命令之外,所述验证器142还可以验证从读取命令指示的存储位置读取的数据。例如,验证器142可以读取数据并确认数据具有适当的格式和/或包括适当的信息或参数。这可以包括验证器142检查请求类型字段是否具有有效值、一个或更多个保留字段是否具有期望值、槽位号标识符是否在预定范围内和/或数据是否处于预定格式。期望值和/或预定范围可以具有静态值或者可以动态生成。此外,可以由主机控制器固件106预先确定或定义,诸如编码到主机控制器固件106。例如,任何值都在运行时由主机控制器固件106进行硬编码或通过代码计算,和/或由主机控制器固件106预定。在xHCI接口的示例中,这可以包括检查TRB类型字段是否在有效范围内、一个或更多个保留字段是否等于零、槽位号标识符是否在预定范围内,和/或数据是否为TRB格式。如果验证器142未验证通过数据(例如,确定数据无效),则主机控制器固件106的接口管理器146可以避免向虚拟机管理器104提供对从存储器位置读取数据的访问。

现在参考图2,图2描绘了根据本公开一些实施例的过程200的示例的流程图,所述过程200用于验证虚拟化软件对存储器中的数据的访问。举例来说,使用图1的虚拟机108和虚拟机存储器120示出了示例过程200。然而,可以类似地针对虚拟机和虚拟机存储器形成过程200,诸如图1的所述虚拟机110、114或虚拟机116以及所述虚拟机存储器122、124或126。来自图1的组件具体布置和组成不旨在受到图2的限制,并且可以在一些实施例中变化。尽管用方框和箭头描绘了所述过程200,但这并不旨在将过程200的所有实施例限制于特定顺序或特定操作。

在所述过程200的框202处,虚拟机管理器104的接口管理器136可以向虚拟机108发送与连接有关事件的通知。例如,所述通知可以向虚拟机108指示:逻辑或物理设备/实体(例如,外部设备130)已连接到端口(例如,根端口),和/或所述设备/实体正在请求与虚拟机108建立新的或修改的连接。例如,在过程200之前,虚拟机管理器104可以选择性地通过VF检测与连接有关的事件(例如,基于来自实体和/或外围设备的请求)。在一些实施例中,这可以包括虚拟机管理器104的接口管理器136,所述接口管理器136接收与虚拟机108相关联的端口填充中断。所述虚拟机管理器104的接口管理器136随后可以在框202处以虚拟机间通信(IVC)消息的形式将包括对应信息(例如,中断信息)的通知转发给虚拟机108。

基于在框202处接收到通知,在框204A处,所述虚拟机108可以将请求命令写入虚拟机存储器120。例如,虚拟机108可以将请求命令写入虚拟机108的命令环。所述请求命令可以基于所述通知,并且可以包括例如对连接和/或设备属性(例如,对于所连接的设备)的请求。尽管描述了请求命令,但是所述请求命令可以对应于任意数量的命令(例如,多个请求命令)。

同样基于在框202处接收到通知,在框204B处,虚拟机108将存储在框204A的命令通知给主机控制器固件106。例如,在框204A之后、期间或之前,所述虚拟机108可以向主机控制器固件106发送门铃事件,以使主机控制器固件106的门铃振铃。主机控制器固件106的接口管理器146可以接收所述通知,并且在框206处可以基于在框204B处接收到通知,而将请求发送到虚拟机管理器104。在一些示例中,这包括将门铃事件转发到虚拟机管理器104。在一些示例中,通信处理器144记录与来自虚拟机108的通知有关的信息,验证器142可以使用所述信息来验证从虚拟机管理器104接收的读取请求。例如,这可以包括从虚拟机108和/或任何虚拟机接收的多个通知、基于从虚拟机108和/或任何虚拟机接收的通知发送到虚拟机管理器104的多个请求,和/或虚拟机108的虚拟机ID(例如VF ID)。

所述请求(例如,转发的门铃事件)可以由虚拟机管理器104的接口管理器136接收,并向虚拟机管理器104指示以帮助处理虚拟机存储器120中的(一个或更多个)请求命令(例如,以帮助在虚拟机108的命令环中处理一个或更多个命令)。所述虚拟机管理器104的通信处理器144可以处理来自框206的请求,并使用存储器映射器140将请求映射到一个或更多个存储器位置。通信处理器144可以使用一个或更多个存储器位置来生成读取命令,并且虚拟机管理器104的接口管理器136可以在框208处将所述读取命令提供给主机控制器106。如本文所讨论的,所述读取命令可以指示主机控制器固件106读取的一个或更多个存储位置,诸如使用存储器118中的存储器地址和用于读取的存储器大小。所述读取命令进一步可以包括虚拟机108的槽位号标识符或VF ID。

主机控制器固件106的接口管理器146可以从虚拟机管理器104接收(一个或更多个)所述读取命令,并且通信处理器144可以使用(一个或更多个)读取命令中的信息来读取(一个或更多个)所述请求命令(例如在框210A处的命令TRB数据),所述请求命令在框210A处由虚拟机108在框204A处存储到虚拟机存储器120中。例如,通信处理器144可以使用槽位号标识符或VF ID来确定虚拟机108的唯一流ID。主机控制器固件106的接口管理器146可以使用流ID、存储器地址和存储器大小,从虚拟机存储器120读取数据。在主机系统102中,流ID可以由虚拟机超级监督器在另一个硬件寄存器中单独编程,并且用于将不同的流ID指派给不同的VF/虚拟机的存储器访问安全性。

在210A之前、期间和/或之后,通信处理器144可以使用验证器142来验证验证来自208的读取命令和/或在210A读取的数据中的一个或多个。例如,在一些实施例中,如果验证器142确定读取命令无效,则可以不执行210A。在其他示例中,即使发现读取命令无效,验证器142仍然可以在210A处读取数据。另外,验证器142可以分析或不分析数据,以确定数据是否有效。在一些示例中,如果可能的话,验证器142将始终在不进行验证的情况下读取数据,然后对数据执行验证。

在210A读取数据之后,主机控制器固件106的接口管理器146可以将数据和/或由数据表示的信息提供给虚拟机管理器104。在所示的示例中,接口管理器146可以通过在210B将信息(例如,命令TRB数据)存储在虚拟机管理器存储器134中来实现。另外,在212处,主机控制器固件106的接口管理器146可以向虚拟机管理器104提供(一个或更多个)通知。所述(一个或更多个)通知可以向虚拟机管理器104指示:来自210B的信息位于虚拟机管理器存储器134中,验证器142发现来自208的读取命令有效,和/或验证器142发现来自210A的读取数据有效。例如,所述通知可以被称为命令完成事件。在实施例中,命令完成事件可以包括CCode=1,其指示成功验证数据和/或读取命令。如果验证器142发现数据和/或读取命令无效,则命令完成事件(例如,CCode)可以指示发现数据和/或读取命令中的一个或多个是无效的。例如,命令完成事件可以包括CCode=0,其指示验证数据和/或读取命令失败。此外,如果发现数据和/或读取命令中的一个或多个无效,则在210B处,所述信息可能尚未存储到虚拟机管理器存储器134。

虚拟机管理器104的接口管理器136可以从主机控制器固件106接收来自212的通知,并且基于所述通知,从虚拟机管理器存储器134读取信息。例如,通信处理器144可以确定来自208的读取命令成功(例如,通过在命令完成事件中识别CCode=1),并且基于所述确定,在214处读取信息。如果所述读取命令失败,则虚拟机管理器104可以不尝试读取信息,并且可以选择性地执行一些其他动作。例如,虚拟机管理器104可以将有关故障通知给虚拟机108。在框214处,虚拟机管理器104成功地从虚拟机108接收到关于请求命令信息的情况下,通信处理器138可以处理所述信息,并将结果(例如,所请求的信息)发送给虚拟机108(例如,在命令完成事件TRB中)。随后,可以基于结果建立和/或修改到设备/实体的连接。

现在参考图3-5,本文所述的方法300、400和500的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由执行存储在存储器中的指令的处理器来实现。所述方法300、400和500也可以具体化为存储在计算机存储介质上的计算机可用指令。仅举几个非限制性的例子,所述方法300、400和500可以由独立应用程序、服务或托管服务(独立地或者与另一个托管服务结合地)或者另一个产品的插件提供。另外,通过示例的方式,关于主机系统102(图1)描述了方法300、400和500。然而,此外或者可替代地,这些方法300、400和500可以由任意一种系统或者任意系统组合——包括但不限于本文描述的那些系统执行。此外,方法300、400或500可以对应于或可以不对应于图2的过程200。

现在参考图3,图3描绘了根据本公开一些实施例的用于响应来自虚拟化软件的读取命令而验证从虚拟机存储器读取数据方法的示例流程图。在框B302处,方法300包括接收指示虚拟机的存储器地址的命令。例如,图1的主机控制器固件106的接口管理器146可以从虚拟机管理器104接收命令(例如,读取命令)。所述命令可以指示虚拟机108的存储器地址。

在框B304处,方法300包括从所述存储器地址读取数据。例如,主机控制器固件106的接口管理器146可以基于所述命令的接收从虚拟机存储器120中的存储器地址读取数据。

在框B306处,方法300包括验证从所述存储器地址读取的所述数据。例如,主机控制器固件106的验证器142可以验证从存储器地址读取的数据。

在框B308处,方法300包括向虚拟机管理器提供对所读取数据的访问。例如,主机控制器固件106的接口管理器146可以基于验证(例如,经由虚拟机管理器存储器134)向虚拟机管理器104提供对从存储器地址读取数据的访问。

在框B310处,方法300包括发送命令完成事件。例如,主机控制器固件106的接口管理器146可以将命令完成事件发送到虚拟机管理器104,以指示从存储器地址读取的数据被验证。

如果在框B306处的数据没有被验证,则可以至少不执行框B308。此外,在一些实施例中,如果在框B306处的数据没有被验证,则在框B310处的命令完成事件可以指的数据没有被验证(例如,发现无效)。

参考图4,图4是根据本公开一些实施例的用于验证来自虚拟化软件的命令以读取虚拟机存储器方法400的示例流程图。在一些示例中,方法400可并入方法300中。在其他示例中,方法400和方法300可以彼此独立。

在框B402处,方法400包括接收指示虚拟机存储器地址的命令。例如,图1的主机控制器固件106的接口管理器146可以从虚拟机管理器104接收命令(例如,读取命令)。所述命令可以指示虚拟机108的存储器地址。

在框B404处,方法400可以包括验证所述命令。例如,通信处理器144可以使用验证器142来验证从虚拟机管理器104接收的命令。

在框B406处,方法400包括从所述存储器地址读取数据。例如,主机控制器固件106的接口管理器146可以基于命令的接收,从虚拟机存储器120中的存储器地址读取数据。在一些实施例中,可以基于验证器142验证命令来从存储器地址读取数据。在其他示例中,无论命令是否被确定为有效,都可以读取数据。

在框B408处,方法400包括向虚拟机管理器提供对所读取的数据的访问。例如,主机控制器固件106的接口管理器146可以基于验证(例如,经由虚拟机管理器存储器134)向虚拟机管理器104提供对从存储器地址读取数据的访问。

在框B410处,方法400包括发送命令完成事件。例如,主机控制器固件106的接口管理器146可以将命令完成事件发送到虚拟机管理器104,以指示从存储器地址读取的数据被验证。

如果在框B404中未验证命令,则可以至少不执行框B408。另外,在一些实施例中,如果在框B404处数据没有被验证,则在框B410处的命令完成事件可以指示命令未被验证(例如,发现无效)和/或可以不执行框B406。此外,在某些情况下,可以在框B404之前执行框B406。

参考图5,图5示出了根据本公开一些实施例的用于虚拟化软件使用主机控制器固件从虚拟机存储器中读取数据方法500的示例流程图。在一些示例中,方法500可并入方法300或方法400中的一个或更多个中。例如,从虚拟机管理器的角度来看,方法500可以对应于方法300和/或方法400。在其他示例中,方法500和方法300或方法400可以彼此独立。

在框B502处,方法500包括发送指示虚拟机存储器地址的命令。例如,图1的虚拟机管理器104的接口管理器136可以向主机控制器固件106发送命令(例如,读取命令)。所述命令可以指示虚拟机108的存储器地址。在一些实施例中,框B502可以如本文所述,基于虚拟机管理器104的接口管理器136从主机控制器106接收门铃事件。

在框B504处,方法500包括接收命令完成事件,所述命令完成事件指示对从存储器地址、命令或两者读取的数据的进行验证。例如,虚拟机管理器104的接口管理器136可以从主机控制器固件106接收命令完成事件。命令完成事件可以指示(例如,经由本文所描述的CCode)由主机控制器固件106进行的对命令的验证、基于命令的从存储器地址读取的数据的验证或两者。

在框B506处,方法500包括读取从所述存储器地址读取的所述数据。例如,虚拟机管理器104的接口管理器136可以读取从存储器地址读取的数据。

图6为适合用于实现本公开一些实施例的示例计算环境的框图,所述示例计算环境是验证虚拟化软件对存储器中数据访问的环境。计算设备600可以包括直接或间接耦合以下设备的总线602:存储器604、一个或更多个中央处理单元(CPU)606、一个或更多个图形处理单元(GPU)608、通信接口610、输入/输出(I/O)端口612、输入/输出组件614、电源1616,以及一个或更多个呈现组件1618(例如一个或更多个显示器)。

尽管图6的各个框被示为经由具有线路的总线602连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件618可以被认为是I/O组件614(例如如果显示器为触摸屏)。作为另一个示例,一个或更多个CPU 606和/或一个或更多个GPU 608可以包括存储器(例如,存储器604可以表示除了一个或更多个GPU 608、一个或更多个CPU 606和/或其他组件的存储器以外的存储设备)。换言之,图6的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图6的计算设备的范围内。

总线602可以表示一条或更多条总线,例如地址总线、数据总线、控制总线或者其组合。总线602可以包括一种或更多种总线类型,例如行业标准架构(ISA)总线、扩展行业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、外围组件互连快速(PCIe)总线,和/或另一种类型的总线。

存储器604可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质可以是可以由计算设备600访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。

计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序应用和/或其他数据类型之类的信息的任何方法或技术实现。例如,存储器604可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或者其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备600访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。

通信介质可以在诸如载波之类的调制数据信号或其他传输机制中体现计算机可读指令、数据结构、程序应用和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,通信介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包含在计算机可读介质的范围内。

一个或更多个CPU 606可以被配置为执行计算机可读指令以便控制计算设备600的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。一个或更多个CPU606中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。一个或更多个CPU 606可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备600的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备600的类型,处理器可以是使用精简指令集计算(RISC)实现的ARM处理器或者使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备600还可以包括一个或更多个CPU 606。

一个或更多个GPU 608可以由计算设备600用来渲染图形(例如3D图形)。一个或更多个GPU 608可以包括能够同时处理数百或数千个软件线程的数百或数千个核。一个或更多个GPU 608可以响应于渲染命令(例如经由主机接口接收的来自一个或更多个CPU 606的渲染命令)而生成用于输出图像的像素数据。一个或更多个GPU 608可以包括诸如显示存储器之类的用于存储像素数据的图形存储器。显示存储器可以作为存储器604的部分而被包括。一个或更多个GPU 608可以包括(例如经由链路)并行操作的两个或更多GPU。当组合在一起时,每个GPU 608可以生成用于输出图像的不同部分或者用于不同输出图像的像素数据(例如,第一GPU用于第一图像,第二GPU用于第二图像)。每个GPU可以包括它自己的存储器,或者可以与其他GPU共享存储器。

在其中计算设备600不包括一个或更多个GPU 608的示例中,一个或更多个CPU606可以用来渲染图形和/或过程数据。

通信接口610可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备600能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口610可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如通过以太网通信)、低功率广域网(例如LoRaWAN、SigFox等等)和/或互联网。

I/O端口612可以使得计算设备600能够逻辑地耦合到包括I/O组件614、一个或更多个呈现组件618和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备600中。说明性I/O组件614包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。I/O组件614可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(NUI)。在一些实例中,输入可以传输至适当的网络元件以便进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备600的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备600可以包括诸如立体照相机系统之类的深度照相机、红外照相机系统、RGB照相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备600可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(IMU)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备600用来渲染沉浸式增强现实或者虚拟现实。

电源616可以包括硬接线电源、电池电源或者其组合。电源616可以向计算设备600供电以使得计算设备600的组件能够操作。

一个或更多个呈现组件618可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。一个或更多个呈现组件618可以接收来自其他组件(例如一个或更多个GPU 608、一个或更多个CPU 606等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。

本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序应用之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序应用指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。

如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素A、元素B和/或元素C”可以包括仅仅元素A,仅仅元素B,仅仅元素C,元素A和元素B,元素A和元素C,元素B和元素C,或者元素A、B和C。此外,“元素A或元素B中的至少一个”可以包括元素A中的至少一个,元素B中的至少一个,或者元素A中的至少一个和元素B中的至少一个。

这里详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。而是,本发明人已经设想到,要求保护的主题也可以以其他的方式体现,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“框”在本文中可以用来隐含采用的方法的不同元素,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号