CN113111025B - Pci设备映射方法、装置、设备及存储介质 - Google Patents

Pci设备映射方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113111025B
CN113111025B CN202110649232.XA CN202110649232A CN113111025B CN 113111025 B CN113111025 B CN 113111025B CN 202110649232 A CN202110649232 A CN 202110649232A CN 113111025 B CN113111025 B CN 113111025B
Authority
CN
China
Prior art keywords
target host
virtual machine
hardware identifier
pci
resource
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
Application number
CN202110649232.XA
Other languages
English (en)
Other versions
CN113111025A (zh
Inventor
张勇
游仁均
冯杰
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.)
Shenzhen Clerware Technology Co ltd
Original Assignee
Shenzhen Clerware Technology Co ltd
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 Shenzhen Clerware Technology Co ltd filed Critical Shenzhen Clerware Technology Co ltd
Priority to CN202110649232.XA priority Critical patent/CN113111025B/zh
Publication of CN113111025A publication Critical patent/CN113111025A/zh
Application granted granted Critical
Publication of CN113111025B publication Critical patent/CN113111025B/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
    • G06F13/4221Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI 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
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • 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

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

本发明公开了一种PCI设备映射方法、装置、设备及存储介质。该方法包括:与目标主机进行通信,扫描目标主机上连接的PCI设备,获取对应的目标主机硬件标识和目标主机分配资源并存储至预设存储区域,在获取到虚拟机启动指令时,基于虚拟化引擎扫描预设存储区域,将待映射设备映射至虚拟机,以使虚拟机分配虚拟机硬件标识以及虚拟机分配资源,根据目标主机硬件标识、虚拟机硬件标识、目标主机分配资源及虚拟机分配资源构建标识及资源映射表,根据映射表把虚拟机对映射设备的操作转换成目标主机对物理设备的操作。实现了在当前主机的虚拟机上对目标主机上连接的PCI设备的虚拟挂接,解决了当前主机的虚拟机无法访问其他主机PCI设备的问题。

Description

PCI设备映射方法、装置、设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种PCI设备映射方法、装置、设备及存储介质。
背景技术
现在的虚拟化技术,通过vt-d、vfio等技术,可以将host机(主机)的PCI(Peripheral Component Interconnection,周边元件扩展接口)设备直接透传guest机(虚拟机)排他使用,以获得更好的性能,而对于其他host机上的pci设备,则无法进行透传。如果要使用其他host机上的pci设备、以及挂接在pci桥上的usb设备、PS/2接口设备以及ISA设备等设备,只能通过层层虚拟化的方式实现,实现复杂,工作量大。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种PCI设备映射方法、装置、设备及存储介质,旨在解决当前主机上的虚拟机无法访问其他主机PCI设备的技术问题。
为实现上述目的,本发明提供了一种PCI设备映射方法,所述方法包括以下步骤:
与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;
获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域;
在获取到虚拟机启动指令时,基于虚拟化引擎扫描所述预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将所述待映射设备映射至所述虚拟机中,以使虚拟机对所述待映射设备分配虚拟机硬件标识以及虚拟机分配资源;
基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及所述虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。
可选地,所述基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及所述虚拟机分配资源构建资源映射表之后,所述方法还包括:
通过所述虚拟机加载操作系统,以使所述操作系统自动加载所述待映射设备对应的驱动程序,通过所述驱动程序对所述目标主机上连接的PCI设备进行配置;
通过所述驱动程序与配置好的PCI设备进行交互。
可选地,所述通过所述驱动程序与配置好的PCI设备进行交互之后,所述方法还包括:
基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的目标指令,确定所述目标指令触发的第一资源信息;
根据所述虚拟机分配资源确定所述第一资源信息对应的第一虚拟机硬件标识;
根据所述标识映射表确定所述第一虚拟机硬件标识对应的第一目标主机硬件标识;
根据所述资源映射表确定所述第一资源信息对应的第一目标主机分配资源;
通知所述目标主机根据所述第一目标主机硬件标识以及所述第一目标主机分配资源向对应的第一PCI设备发送所述目标指令。
可选地,所述通知所述目标主机根据所述第一目标主机硬件标识以及所述第一目标主机分配资源向对应的第一PCI设备发送所述目标指令之后,所述方法还包括:
基于所述虚拟化引擎接收所述目标主机的事件信息,所述事件信息包含所述第一PCI设备在所述目标主机上触发的第二资源信息;
根据所述目标主机分配资源确定所述第二资源信息对应的第二目标主机硬件标识;
根据所述标识映射表确定所述第二目标主机硬件标识对应的第二虚拟机硬件标识;
根据所述资源映射表确定所述第二资源信息对应的第二虚拟机分配资源;
根据所述第二虚拟机硬件标识触发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述第一PCI设备反馈的所述事件信息。
可选地,所述根据所述第二虚拟机硬件标识触发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述第一PCI设备反馈的所述事件信息之后,所述方法还包括:
基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的查看事件内容指令,确定所述查看事件内容指令触发的第三资源信息;
根据所述虚拟机分配资源确定所述第三资源信息对应的第三虚拟机硬件标识;
根据所述标识映射表确定所述第三虚拟机硬件标识对应的第三目标主机硬件标识;
根据所述资源映射表确定所述第三资源信息对应的第三目标主机分配资源;
通知所述目标主机根据所述第三目标主机硬件标识以及所述第三目标主机分配资源读取所述查看事件内容指令对应的结果数据;
接收所述目标主机反馈的所述结果数据,并将所述结果数据反馈至所述虚拟机上运行的驱动程序。
可选地,所述接收所述目标主机反馈的所述结果数据,并将所述结果数据反馈至所述虚拟机上运行的驱动程序之后,所述方法还包括:
基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的获取数据指令,确定所述获取数据指令触发的第四资源信息,其中,所述虚拟机上运行的驱动程序对所述结果数据进行分析,得到分析结果,在所述分析结果为存在待读取数据时,发送获取数据指令;
根据所述虚拟机分配资源确定所述第四资源信息对应的第四虚拟机硬件标识;
根据所述标识映射表确定所述第四虚拟机硬件标识对应的第四目标主机硬件标识;
根据所述资源映射表确定所述第四资源信息对应的第四目标主机分配资源;
通知所述目标主机根据所述第四目标主机硬件标识以及所述第四目标主机分配资源读取相应的数据;
接收所述目标主机反馈的所述数据,并将所述数据反馈至所述虚拟机上运行的驱动程序。
可选地,所述获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域,包括:
获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源;
获取删除指令,根据所述删除指令删除当前PCI设备对应的当前硬件标识以及当前主机分配资源信息,将剩余的目标主机硬件标识以及目标主机分配资源存储至预设存储区域。
此外,为实现上述目的,本发明还提出一种PCI设备映射装置,所述PCI设备映射装置包括:
扫描模块,用于与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;
获取模块,用于获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域;
映射模块,用于在获取到虚拟机启动指令时,基于虚拟化引擎扫描所述预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将所述待映射设备映射至所述虚拟机中,以使虚拟机对所述待映射设备分配虚拟机硬件标识以及虚拟机分配资源;
所述映射模块,还用于基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及所述虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。
此外,为实现上述目的,本发明还提出一种PCI设备映射设备,所述PCI设备映射设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的PCI设备映射程序,所述PCI设备映射程序配置为实现如上文所述的PCI设备映射方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有PCI设备映射程序,所述PCI设备映射程序被处理器执行时实现如上文所述的PCI设备映射方法的步骤。
本发明通过与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;获取PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域;在获取到虚拟机启动指令时,基于虚拟化引擎扫描预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将待映射设备映射至虚拟机中,以使虚拟机对待映射设备分配虚拟机硬件标识以及虚拟机分配资源;基于虚拟化引擎根据待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据标识映射表、目标主机分配资源以及虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。通过上述方式,通过网络在当前主机的虚拟机上对目标主机上连接的PCI设备进行映射,构建目标主机硬件标识以及虚拟机硬件标识对应的标识映射表,构建目标主机分配资源以及虚拟机分配资源对应的资源映射表,基于虚拟化引擎根据标识映射表和资源映射表将虚拟机对映射PCI设备的操作转换成目标主机对物理PCI设备的操作。实现了在当前主机的虚拟机上对目标主机上连接的PCI设备的虚拟挂接,解决了当前主机上的虚拟机无法访问其他主机PCI设备的问题。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的PCI设备映射设备的结构示意图;
图2为本发明PCI设备映射方法第一实施例的流程示意图;
图3为本发明PCI设备映射方法一实施例的PCI设备映射结构示意图;
图4为本发明PCI设备映射方法第二实施例的流程示意图;
图5为本发明PCI设备映射装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的PCI设备映射设备结构示意图。
如图1所示,该PCI设备映射设备可以包括:处理器1001,例如中央处理器(CentralProcessing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,Wi-Fi)接口)。存储器1005可以是高速的随机存取存储器(RandomAccess Memory,RAM)存储器,也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对PCI设备映射设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及PCI设备映射程序。
在图1所示的PCI设备映射设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明PCI设备映射设备中的处理器1001、存储器1005可以设置在PCI设备映射设备中,所述PCI设备映射设备通过处理器1001调用存储器1005中存储的PCI设备映射程序,并执行本发明实施例提供的PCI设备映射方法。
本发明实施例提供了一种PCI设备映射方法,参照图2,图2为本发明一种PCI设备映射方法第一实施例的流程示意图。
本实施例中,所述PCI设备映射方法包括以下步骤:
步骤S10:与目标主机进行通信,以扫描目标主机上连接的若干PCI设备。
可以理解的是,本实施例的执行主体为PCI设备映射设备,所述PCI设备映射设备可以是与当前主机以及目标主机连接的设备,也可以为安装有PCI设备映射程序的当前主机,本实施例对此不加以限制。本实施例以当前主机为例进行说明。
需要说明的是,当前主机是指运行虚拟机的计算机,目标主机是指将PCI设备映射出去的计算机,例如,把计算机A的PCI设备映射给计算机B的虚拟机,那么计算机A就是目标主机,计算机B就是当前主机。
应当理解的是,PCI:全称是Peripheral Component Interconnect,是一种计算机连接外围设备的总线。在实施例中PCI总线是一个统称,包括PCI、PCI-X以及PCI-E总线,本实施例的PCI设备包括PCI设备、PCI-X设备以及PCI-E设备。
需要说明的是,现有的X86体系计算机的外围设备基本都是连接在PCI总线或者子总线上,形成一个树形结构,计算机上的程序通过IO端口、MMIO、BIOS中断服务以及硬件中断和总线上的设备进行交互,程序与设备交互可以做到枚举设备、配置设备、往设备写数据以及从设备读数据。在具体实现中计算机程序会通过“配置地址寄存器”(CONFIG_ADDRESS,即IO端口0xCF8)和“配置数据寄存器”(CONFIG_DATA,即IO端口0xCFC)来枚举PCI设备,查询PCI设备的资源配置,以及修改PCI设备的资源配置。资源配置信息即本实施例的主机分配资源信息中包含了该设备需要用到的IO端口号、MMIO的内存地址以及硬件中断信息。另外,计算机程序还可以通过ECAM机制(本质上就是读写MMIO)去枚举PCI设备,查询PCI设备的资源配置,以及修改PCI设备的资源配置。
应当理解的是,IO端口(I/O端口)是计算机总线上外围设备的地址集合,计算机程序通过IO端口跟外围的设备进行通信。BIOS中断服务程序是计算机软件、硬件之间的一个编程接口,计算机程序可以通过这些编程接口跟外围设备进行通信。BIOS中断服务本质上就是对IO端口读写操作的封装,计算机程序可以通过对端口的读写实现BIOS中断服务调用的功能。MMIO全称是Memory-mapped I/O,即内存映射I/O(或者内存映射IO),可以把PCI设备的一部分存储区域、寄存器映射到CPU的内存地址空间,CPU可以像访问普通内存一样去访问PCI设备的存储区域、寄存器。ECAM:全称是Enhanced Configuration AccessMechanism,是访问PCI-E设备配置空间一种机制,通过MMIO把PCI-E设备的配置空间映射到CPU的内存地址空间,计算机程序可以像访问普通内存一样去访问PCI-E的配置空间。
需要说明的是,本实施例通过与目标主机进行通信,通知目标主机扫描PCI总线上的所有PCI设备,得到每个PCI设备的总线号、设备号、功能号等信息,以实现扫描目标主机上连接的若干PCI设备。
步骤S20:获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域。
可以理解的是,目标主机硬件标识为目标主机连接的PCI设备的“总线号:设备号:功能号”,目标主机通过目标主机硬件标识操作对应的外围设备,主机分配资源信息为目标主机访问PCI设备时需要用到的IO端口号、MMIO的内存地址以及硬件中断信息,目标主机通过计算机程序查询PCI设备的主机分配资源信息,将主机分配资源信息反馈给当前主机。
需要说明的是,计算机开机的时候,主板上的固件程序(如BIOS以及UEFI固件)会扫描计算机上的外围PCI设备,分配资源(如IO端口、MMIO、硬件中断资源等),生成ACPI表、SMBIOS表、ECAM配置空间表……。在本实施例中,通过与目标主机通信,扫描目标主机上的PCI设备,获取所有PCI设备的IO端口、MMIO以及硬件中断等资源信息,存储至预设存储区域。
具体地,所述步骤S20,包括:获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源;获取删除指令,根据所述删除指令删除当前PCI设备对应的当前硬件标识以及当前主机分配资源信息,将剩余的目标主机硬件标识以及目标主机分配资源存储至预设存储区域。
应当理解的是,对于某些不能映射的设备,需要从扫描结果中剔除,例如目标主机上有2个网卡,其中一个用于设备映射的网络通信,那么这个网卡需要剔除掉,不能映射给虚拟机使用。因此,本实施例在接收到删除指令时,对PCI设备对应的信息进行删除,避免将不能映射的设备映射给虚拟机使用。
步骤S30:在获取到虚拟机启动指令时,基于虚拟化引擎扫描所述预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将所述待映射设备映射至所述虚拟机中,以使虚拟机对所述待映射设备分配虚拟机硬件标识以及虚拟机分配资源。
需要说明的是,虚拟机启动的时候,基于虚拟化引擎执行虚拟固件程序,虚拟固件程序(即虚拟BIOS以及虚拟UEFI)也会执行类似BIOS以及UEFI固件的行为。虚拟固件程序扫描出来的PCI设备包括两部分:在虚拟机上虚拟的PCI设备、目标主机映射过来的设备(也就是步骤S10中目标主机的扫描结果)。另外,虚拟固件程序生成的ACPI表、SMBIOS表、ECAM配置空间表……也携带有映射PCI设备信息。
需要说明的是,虚拟机固件程序对映射的设备进行资源配置,虚拟机分配资源包括虚拟机固件程序分配的IO端口、MMIO以及硬件中断等资源信息。
步骤S40:基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及所述虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。
可以理解的是,在执行完虚拟固件程序之后,基于虚拟化引擎根据所有待映射设备的目标主机硬件标识以及虚拟机硬件标识生成标识映射表,如表1所示,表1为映射标识示意表,映射标识表中包含了所有映射PCI设备在目标主机端的硬件标识和在虚拟机端的硬件标识,其中,每一行代表一个映射设备,硬件标识的表示方法为:“总线号:设备号.功能号”(16进制)。以2号映射设备为例进行说明,将目标主机端0号总线2号插槽上的PCI设备映射到了虚拟机的0号总线a号插槽上,功能号维持不变。
表1:
序号 目标主机硬件标识 虚拟机硬件标识
1 00:01.0 00:02.0
2 00:02.0 00:a0.0
3 0f:01.0 0e:01.0
…… …… ……
需要说明的是,目标主机给连接的PCI设备所分配的目标主机分配资源以表格形式进行说明,例如,目标主机给2号映射设备分配的目标主机分配资源如表2所示,表2为目标主机分配资源示意表(包含2个MMIO资源)。
表2:
资源类型 分配资源
IO端口 0x5060-0x507F
MMIO1 0xB25000-0xB25FFF
MMIO2 0xC25000-0xC25FFF
中断信号 0xFFFFFFDD
可以理解的是,虚拟机给映射设备所分配的虚拟机分配资源以表格形式进行说明,例如,虚拟机给2号映射设备分配的虚拟机分配资源如表3所示,表3为虚拟机分配资源示意表(包含2个MMIO资源)。
表3:
资源类型 分配资源
IO端口 0x4060-0x407F
MMIO1 0xA25000-0xA25FFF
MMIO2 0xE25000-0xE25FFF
中断信号 0xFFFFFFAA
应当理解的是,基于虚拟化引擎根据映射标识表以及目标主机分配资源、虚拟机分配资源,为每一个待映射设备生成资源映射表,如表4所示,表4为2号映射设备对应的资源映射表。
表4:
资源类型 目标主机分配资源 虚拟机分配资源
IO端口 0x5060-0x507F 0x4060-0x407F
MMIO1 0xB25000-0xB25FFF 0xA25000-0xA25FFF
MMIO2 0xC25000-0xC25FFF 0xE25000-0xE25FFF
中断信号 0xFFFFFFDD 0xFFFFFFAA
需要说明的是,在基于虚拟化引擎生成所有映射设备的资源映射表后,将CPU执行权交给虚拟机的引导程序,以加载操作系统。在操作系统启动之后,自动加载PCI设备的驱动程序,基于驱动程序通过读写IO端口、MMIO与设备交互,例如初始化和配置PCI设备,让PCI设备执行某些操作等。当虚拟机上运行的设备驱动程序读写IO端口、MMIO这些资源时,读写行为会被虚拟化引擎捕获,基于虚拟化引擎根据虚拟机分配资源确定该资源对应的虚拟机硬件标识,根据标识映射表确定对应的目标主机硬件标识,根据资源映射表确定对应的目标主机分配资源,根据目标主机分配资源以及目标主机硬件标识对相应的资源执行读写操作,实现操作重定向。例如,虚拟机的驱动程序对0x4060到0x407F这个范围的IO端口执行写入操作,通知设备发送数据,这个写入操作以及写入的内容(假设是“abcdefg”)被虚拟化引擎捕获,基于虚拟化引擎根据虚拟机资源分配得知该资源是属于2号映射设备的,该映射设备的虚拟机硬件标识是“00:a0.0”,通过资源映射表可知目标主机端对应的IO端口范围是0x5060到0x507F。接下来,基于虚拟化引擎通过网络通知目标主机对0x5060到0x507F这个范围的端口执行相应的写入操作(写入的数据也是“abcdefg”),实现写操作的重定向,通过这种方式,虚拟机可以通过目标主机的PCI设备发送数据。
参照图3,图3为本发明PCI设备映射方法一实施例的PCI设备映射结构示意图;通过虚拟PCI-PCI桥将目标主机的PCI设备映射到虚拟机根总线上,虚拟机在与目标主机连接的PCI设备交互时,对IO端口的读写、MMIO的读写、BIOS中断服务的调用、硬件中断的触发等操作依据映射表进行重定向,将虚拟机访问PCI设备对应的BIOS中断服务号转换成主机访问PCI设备对应的端口号以进行读写。通过把其他主机的PCI设备映射给当前主机上的虚拟机,以达到虚拟机使用其他主机PCI设备(包括挂接在PCI桥上的其他总线的设备)的目的。
本实施例通过与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;获取PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域;在获取到虚拟机启动指令时,基于虚拟化引擎扫描预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将待映射设备映射至虚拟机中,以使虚拟机对待映射设备分配虚拟机硬件标识以及虚拟机分配资源;基于虚拟化引擎根据待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据标识映射表、目标主机分配资源以及虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。通过上述方式,通过网络在当前主机的虚拟机上对目标主机上连接的PCI设备进行映射,构建目标主机硬件标识以及虚拟机硬件标识对应的标识映射表,构建目标主机分配资源以及虚拟机分配资源对应的资源映射表,基于虚拟化引擎根据标识映射表和资源映射表将虚拟机对映射PCI设备的操作转换成目标主机对物理PCI设备的操作。实现了在当前主机的虚拟机上对目标主机上连接的PCI设备的虚拟挂接,解决了当前主机上的虚拟机无法访问其他主机PCI设备的问题。
参考图4,图4为本发明一种PCI设备映射方法第二实施例的流程示意图。
基于上述第一实施例,本实施例PCI设备映射方法的所述步骤S40之后,所述方法还包括:
步骤S401:通过所述虚拟机加载操作系统,以使所述操作系统自动加载所述待映射设备对应的驱动程序,通过所述驱动程序对所述目标主机上连接的PCI设备进行配置。
可以理解的是,操作系统启动之后会自动加载PCI设备对应的驱动程序,虚拟机上运行的驱动程序通过IO端口以及MMIO的读写操作,对PCI设备进行配置。配置完毕之后,虚拟机上运行的驱动程序通过读写IO端口以及读写MMIO通知PCI设备去执行特定操作,如通知网卡去发送数据包;发送完毕之后网卡会通过硬件中断告知驱动程序发送完毕,驱动程序在硬件中断的回调函数中去读取IO端口以及MMIO的状态,获得数据包的发送结果,如发送成功或者失败。
需要说明的是,本实施例虚拟机的操作系统启动后,加载虚拟PCI设备对应的驱动程序,驱动程序通过读写IO端口以及读写MMIO以实现配置,在驱动程序读写IO端口以及读写MMIO时,虚拟化引擎根据映射表转化为目标主机上的读写IO端口以及读写MMIO操作,从而实现对目标主机对应PCI设备进行配置。
步骤S402:通过所述驱动程序与配置好的PCI设备进行交互。
进一步地,所述步骤S402之后,所述方法还包括:
步骤S403:基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的目标指令,确定所述目标指令触发的第一资源信息。
可以理解的是,第一资源信息为虚拟机与第一虚拟PCI设备交互时响应目标指令的IO端口以及MMIO等资源信息。第一资源信息、第二资源信息、第三资源信息以及第四资源信息用于互相区分,同理地,第一虚拟机硬件标识、第二虚拟机硬件标识、第三虚拟机硬件标识以及第四虚拟机硬件标识用于互相区分,第一虚拟机分配资源、第二虚拟机分配资源、第三虚拟机分配资源以及第四虚拟机分配资源用于互相区分。
步骤S404:根据所述虚拟机分配资源确定所述第一资源信息对应的第一虚拟机硬件标识。
步骤S405:根据所述标识映射表确定所述第一虚拟机硬件标识对应的第一目标主机硬件标识。
步骤S406:根据所述资源映射表确定所述第一资源信息对应的第一目标主机分配资源。
步骤S407:通知所述目标主机根据所述第一目标主机硬件标识以及所述第一目标主机分配资源向对应的第一PCI设备发送所述目标指令。
需要说明的是,当虚拟机上运行的设备驱动程序读写第一资源信息对应的端口时,虚拟化引擎根据映射表转换成在目标主机对第一目标主机分配资源对应的端口进行读写操作。在具体实现中,当虚拟机上运行的设备驱动程序读写IO端口、MMIO等资源时,读写行为被虚拟化引擎捕获,基于虚拟化引擎根据资源分配表确定该资源对应的虚拟机硬件标识,根据标识映射表确定对应的目标主机硬件标识以及根据资源映射表确定对应的目标主机分配资源信息,根据目标主机分配资源以及目标主机硬件标识对相应的资源执行读写操作,实现操作重定向。
应当理解的是,虚拟机上运行的设备驱动程序通过第一资源信息向目标主机上运行的PCI设备发送目标指令,当虚拟化引擎捕获到目标指令以及第一资源信息(IO端口、MMIO等端口信息)时,根据资源映射表将第一资源信息转换成目标主机访问PCI设备对应的第一目标主机分配资源,根据标识映射表将第一资源信息对应的第一虚拟机硬件标识转换成目标主机与PCI设备连接的第一目标主机硬件标识,通知目标主机根据第一目标主机硬件标识寻址,以确定第一PCI设备,根据第一目标主机分配资源发送目标指令给第一PCI设备。
以2号映射设备发送数据为例进行说明:虚拟机的驱动程序对0x4060到0x407F这个范围的IO端口执行写入操作,通知设备发送数据,这个写入操作以及写入的内容(假设是“abcdefg”)被虚拟化引擎捕获,基于虚拟化引擎根据虚拟机资源分配得知该资源是属于2号映射设备的,该映射设备的虚拟机硬件标识是“00:a0.0”,通过资源映射表可知目标主机端对应的IO端口范围是0x5060到0x507F。接下来,基于虚拟化引擎通过网络通知目标主机对0x5060到0x507F这个范围的端口执行相应的写入操作(写入的数据也是“abcdefg”),实现写操作的重定向,通过这种方式,虚拟机可以通过目标主机的PCI设备发送数据。
在一实施例中,所述步骤S407之后,所述方法还包括:基于所述虚拟化引擎接收所述目标主机的事件信息,所述事件信息包含所述第一PCI设备在所述目标主机上触发的第二资源信息;根据所述目标主机分配资源确定所述第二资源信息对应的第二目标主机硬件标识;根据所述标识映射表确定所述第二目标主机硬件标识对应的第二虚拟机硬件标识;根据所述资源映射表确定所述第二资源信息对应的第二虚拟机分配资源;根据所述第二虚拟机硬件标识触发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述第一PCI设备反馈的所述事件信息。
需要说明的是,以PCI网卡为例进行说明,虚拟机的网卡驱动程序可以通过读写IO端口、MMIO通知目标主机的网卡发送数据;如果目标主机的网卡收到了数据,PCI网卡可以通过中断信号通知虚拟机的网卡驱动程序来读取,具体过程为,目标主机的网卡收到数据包之后,通过中断通知目标主机,目标主机通过网络将中断信息告知虚拟化引擎,由虚拟化引擎在虚拟PCI总线上触发相应的中断,以通知虚拟机驱动程序虚拟网卡设备收到了数据,当虚拟机驱动程序从虚拟网卡读取数据的时候,虚拟化引擎会捕获读操作,通知目标主机把物理网卡收到的数据传输过来,然后虚拟化引擎再把数据返回给虚拟机驱动程序。
具体地,所述根据所述第二虚拟机硬件标识触发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述第一PCI设备反馈的所述事件信息之后,所述方法还包括:基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的查看事件内容指令,确定所述查看事件内容指令触发的第三资源信息;根据所述虚拟机分配资源确定所述第三资源信息对应的第三虚拟机硬件标识;根据所述标识映射表确定所述第三虚拟机硬件标识对应的第三目标主机硬件标识;根据所述资源映射表确定所述第三资源信息对应的第三目标主机分配资源;通知所述目标主机根据所述第三目标主机硬件标识以及所述第三目标主机分配资源读取所述查看事件内容指令对应的结果数据;接收所述目标主机反馈的所述结果数据,并将所述结果数据反馈至所述虚拟机上运行的驱动程序。
以2号映射设备接收数据为例进行说明:当目标主机的“00:02.0”这个PCI设备(2号映射设备对应的PCI设备端)收到数据时,在目标主机的PCI总线上触发一个信号为0xFFFFFFDD的硬件中断,目标主机的操作系统收到这个信号时,通过网络通知虚拟化引擎:目标主机PCI总线上有设备触发了0xFFFFFFDD中断信号。基于虚拟化引擎根据目标主机分配资源确定该信号属于2号映射设备的,根据资源映射表确定该硬件中断对应的虚拟机端中断信号为0xFFFFFFAA,在虚拟的PCI总线上触发一个信号为0xFFFFFFAA的硬件中断,以通知运行于虚拟机上的驱动程序该设备发生了某个事件。驱动程序通过读IO端口(0x4060-0x407F)、MMIO(0xA25000-0xA25FFF、0xE25000-0xE25FFF)等资源获知事件的具体内容,这些读取操作被虚拟化引擎捕获,基于虚拟化引擎通知目标主机读取相应的IO端口(0x5060-0x507F)、MMIO(0xB25000-0xB25FFF、0xC25000-0xC25FFF)等资源,把读取到的结果返回给虚拟化引擎,虚拟化引擎将读取到的结果返回给虚拟机上运行的驱动程序。
进一步地,所述接收所述目标主机反馈的所述结果数据,并将所述结果数据反馈至所述虚拟机上运行的驱动程序之后,所述方法还包括:基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的获取数据指令,确定所述获取数据指令触发的第四资源信息,其中,所述虚拟机上运行的驱动程序对所述结果数据进行分析,得到分析结果,在所述分析结果为存在待读取数据时,发送获取数据指令;根据所述虚拟机分配资源确定所述第四资源信息对应的第四虚拟机硬件标识;根据所述标识映射表确定所述第四虚拟机硬件标识对应的第四目标主机硬件标识;根据所述资源映射表确定所述第四资源信息对应的第四目标主机分配资源;通知所述目标主机根据所述第四目标主机硬件标识以及所述第四目标主机分配资源读取相应的数据;接收所述目标主机反馈的所述数据,并将所述数据反馈至所述虚拟机上运行的驱动程序。
在具体实现中,驱动程序分析虚拟机反馈的结果数据,在确定设备有数据可以读取时,发送获取数据指令,此时,驱动程序通过读取操作(例如,2号映射设备对应的读取MMIO(0xA25000-0xA25FFF、0xE25000-0xE25FFF)操作)获取数据,该读取操作被虚拟机引擎捕获,基于虚拟机引擎将该读取操作重定向为目标主机相应的读取操作(例如,目标主机读取MMIO(0xB25000-0xB25FFF、0xC25000-0xC25FFF)),以获取设备收到的数据,虚拟机引擎获取目标主机反馈的数据,将读数据返回给虚拟机上运行的驱动程序。
本实施例通过虚拟机加载操作系统,以使操作系统自动加载待映射设备对应的驱动程序,通过驱动程序对目标主机上连接的PCI设备进行配置;通过驱动程序与配置好的PCI设备进行交互;基于虚拟化引擎获取虚拟机上运行的驱动程序发送的目标指令,确定目标指令触发的第一资源信息;根据虚拟机分配资源确定第一资源信息对应的第一虚拟机硬件标识;根据标识映射表确定第一虚拟机硬件标识对应的第一目标主机硬件标识;根据资源映射表确定第一资源信息对应的第一目标主机分配资源;通知目标主机根据第一目标主机硬件标识以及第一目标主机分配资源向对应的第一PCI设备发送目标指令。通过上述方式,虚拟机上运行的驱动程序与PCI设备交互时触发对应的资源信息,基于虚拟化引擎将资源信息重定向为目标主机与目标主机连接的PCI设备交互时触发的主机分配资源,从而实现将目标主机的PCI设备映射给当前主机上运行的虚拟机,方便虚拟机对目标主机的PCI设备以及子设备进行使用,解决了当前主机上的虚拟机无法访问其他主机PCI设备的问题。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有PCI设备映射程序,所述PCI设备映射程序被处理器执行时实现如上文所述的PCI设备映射方法的步骤。
参照图5,图5为本发明PCI设备映射装置第一实施例的结构框图。
如图5所示,本发明实施例提出的PCI设备映射装置包括:
扫描模块10,用于与目标主机进行通信,以扫描目标主机上连接的若干PCI设备。
获取模块20,用于获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域。
映射模块30,用于在获取到虚拟机启动指令时,基于虚拟化引擎扫描所述预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将所述待映射设备映射至所述虚拟机中,以使虚拟机对所述待映射设备分配虚拟机硬件标识以及虚拟机分配资源。
所述映射模块40,还用于基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及所述虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
本实施例通过与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;获取PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域;在获取到虚拟机启动指令时,基于虚拟化引擎扫描预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将待映射设备映射至虚拟机中,以使虚拟机对待映射设备分配虚拟机硬件标识以及虚拟机分配资源;基于虚拟化引擎根据待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据标识映射表、目标主机分配资源以及虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。通过上述方式,通过网络在当前主机的虚拟机上对目标主机上连接的PCI设备进行映射,构建目标主机硬件标识以及虚拟机硬件标识对应的标识映射表,构建目标主机分配资源以及虚拟机分配资源对应的资源映射表,基于虚拟化引擎根据标识映射表和资源映射表将虚拟机对映射PCI设备的操作转换成目标主机对物理PCI设备的操作。实现了在当前主机的虚拟机上对目标主机上连接的PCI设备的虚拟挂接,解决了当前主机上的虚拟机无法访问其他主机PCI设备的问题。
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的PCI设备映射方法,此处不再赘述。
在一实施例中,所述PCI设备映射装置还包括交互模块;
所述交互模块,用于通过所述虚拟机加载操作系统,以使所述操作系统自动加载所述待映射设备对应的驱动程序,通过所述驱动程序对所述目标主机上连接的PCI设备进行配置,通过所述驱动程序与配置好的PCI设备进行交互。
在一实施例中,所述交互模块,还用于基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的目标指令,确定所述目标指令触发的第一资源信息,根据所述虚拟机分配资源确定所述第一资源信息对应的第一虚拟机硬件标识,根据所述标识映射表确定所述第一虚拟机硬件标识对应的第一目标主机硬件标识,根据所述资源映射表确定所述第一资源信息对应的第一目标主机分配资源,通知所述目标主机根据所述第一目标主机硬件标识以及所述第一目标主机分配资源向对应的第一PCI设备发送所述目标指令。
在一实施例中,所述交互模块,还用于基于所述虚拟化引擎接收所述目标主机的事件信息,所述事件信息包含所述第一PCI设备在所述目标主机上触发的第二资源信息,根据所述目标主机分配资源确定所述第二资源信息对应的第二目标主机硬件标识,根据所述标识映射表确定所述第二目标主机硬件标识对应的第二虚拟机硬件标识,根据所述资源映射表确定所述第二资源信息对应的第二虚拟机分配资源,根据所述第二虚拟机硬件标识触发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述第一PCI设备反馈的所述事件信息。
在一实施例中,所述交互模块,还用于基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的查看事件内容指令,确定所述查看事件内容指令触发的第三资源信息,根据所述虚拟机分配资源确定所述第三资源信息对应的第三虚拟机硬件标识,根据所述标识映射表确定所述第三虚拟机硬件标识对应的第三目标主机硬件标识,根据所述资源映射表确定所述第三资源信息对应的第三目标主机分配资源,通知所述目标主机根据所述第三目标主机硬件标识以及所述第三目标主机分配资源读取所述查看事件内容指令对应的结果数据,接收所述目标主机反馈的所述结果数据,并将所述结果数据反馈至所述虚拟机上运行的驱动程序。
在一实施例中,所述交互模块,还用于基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的获取数据指令,确定所述获取数据指令触发的第四资源信息,其中,所述虚拟机上运行的驱动程序对所述结果数据进行分析,得到分析结果,在所述分析结果为存在待读取数据时,发送获取数据指令,根据所述虚拟机分配资源确定所述第四资源信息对应的第四虚拟机硬件标识,根据所述标识映射表确定所述第四虚拟机硬件标识对应的第四目标主机硬件标识,根据所述资源映射表确定所述第四资源信息对应的第四目标主机分配资源,通知所述目标主机根据所述第四目标主机硬件标识以及所述第四目标主机分配资源读取相应的数据,接收所述目标主机反馈的所述数据,并将所述数据反馈至所述虚拟机上运行的驱动程序。
在一实施例中,所述获取模块20,还用于获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,获取删除指令,根据所述删除指令删除当前PCI设备对应的当前硬件标识以及当前主机分配资源信息,将剩余的目标主机硬件标识以及目标主机分配资源存储至预设存储区域。
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种PCI设备映射方法,其特征在于,所述PCI设备映射方法包括:
当前主机与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;
获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域;
在获取到虚拟机启动指令时,基于虚拟化引擎扫描所述预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将所述待映射设备映射至虚拟机中,以使虚拟机对所述待映射设备分配虚拟机硬件标识以及虚拟机分配资源,其中,所述虚拟机的宿主机为所述当前主机;
基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及所述虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。
2.如权利要求1所述的PCI设备映射方法,其特征在于,所述基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及所述虚拟机分配资源构建资源映射表之后,所述方法还包括:
通过所述虚拟机加载操作系统,以使所述操作系统自动加载所述待映射设备对应的驱动程序,通过所述驱动程序对所述目标主机上连接的PCI设备进行配置;
通过所述驱动程序与配置好的PCI设备进行交互。
3.如权利要求2所述的PCI设备映射方法,其特征在于,所述通过所述驱动程序与配置好的PCI设备进行交互之后,所述方法还包括:
基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的目标指令,确定所述目标指令触发的第一资源信息;
根据所述虚拟机分配资源确定所述第一资源信息对应的第一虚拟机硬件标识;
根据所述标识映射表确定所述第一虚拟机硬件标识对应的第一目标主机硬件标识;
根据所述资源映射表确定所述第一资源信息对应的第一目标主机分配资源;
通知所述目标主机根据所述第一目标主机硬件标识以及所述第一目标主机分配资源向对应的第一PCI设备发送所述目标指令。
4.如权利要求3所述的PCI设备映射方法,其特征在于,所述通知所述目标主机根据所述第一目标主机硬件标识以及所述第一目标主机分配资源向对应的第一PCI设备发送所述目标指令之后,所述方法还包括:
基于所述虚拟化引擎接收所述目标主机的事件信息,所述事件信息包含所述第一PCI设备在所述目标主机上触发的第二资源信息;
根据所述目标主机分配资源确定所述第二资源信息对应的第二目标主机硬件标识;
根据所述标识映射表确定所述第二目标主机硬件标识对应的第二虚拟机硬件标识;
根据所述资源映射表确定所述第二资源信息对应的第二虚拟机分配资源;
根据所述第二虚拟机硬件标识触发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述第一PCI设备反馈的所述事件信息。
5.如权利要求4所述的PCI设备映射方法,其特征在于,所述根据所述第二虚拟机硬件标识触发所述第二虚拟机分配资源,以使所述虚拟机上运行的驱动程序获取所述第一PCI设备反馈的所述事件信息之后,所述方法还包括:
基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的查看事件内容指令,确定所述查看事件内容指令触发的第三资源信息;
根据所述虚拟机分配资源确定所述第三资源信息对应的第三虚拟机硬件标识;
根据所述标识映射表确定所述第三虚拟机硬件标识对应的第三目标主机硬件标识;
根据所述资源映射表确定所述第三资源信息对应的第三目标主机分配资源;
通知所述目标主机根据所述第三目标主机硬件标识以及所述第三目标主机分配资源读取所述查看事件内容指令对应的结果数据;
接收所述目标主机反馈的所述结果数据,并将所述结果数据反馈至所述虚拟机上运行的驱动程序。
6.如权利要求5所述的PCI设备映射方法,其特征在于,所述接收所述目标主机反馈的所述结果数据,并将所述结果数据反馈至所述虚拟机上运行的驱动程序之后,所述方法还包括:
基于所述虚拟化引擎获取所述虚拟机上运行的驱动程序发送的获取数据指令,确定所述获取数据指令触发的第四资源信息,其中,所述虚拟机上运行的驱动程序对所述结果数据进行分析,得到分析结果,在所述分析结果为存在待读取数据时,发送获取数据指令;
根据所述虚拟机分配资源确定所述第四资源信息对应的第四虚拟机硬件标识;
根据所述标识映射表确定所述第四虚拟机硬件标识对应的第四目标主机硬件标识;
根据所述资源映射表确定所述第四资源信息对应的第四目标主机分配资源;
通知所述目标主机根据所述第四目标主机硬件标识以及所述第四目标主机分配资源读取相应的数据;
接收所述目标主机反馈的所述数据,并将所述数据反馈至所述虚拟机上运行的驱动程序。
7.如权利要求1-6中任一项所述的PCI设备映射方法,其特征在于,所述获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域,包括:
获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源;
获取删除指令,根据所述删除指令删除当前PCI设备对应的当前硬件标识以及当前主机分配资源信息,将剩余的目标主机硬件标识以及目标主机分配资源存储至预设存储区域。
8.一种PCI设备映射装置,其特征在于,所述PCI设备映射装置包括:
扫描模块,用于与目标主机进行通信,以扫描目标主机上连接的若干PCI设备;
获取模块,用于获取所述PCI设备对应的目标主机硬件标识以及目标主机分配资源,并将获取到的目标主机硬件标识以及目标主机分配资源存储至预设存储区域;
映射模块,用于在获取到虚拟机启动指令时,基于虚拟化引擎扫描所述预设存储区域,确定待映射设备对应的目标主机硬件标识以及目标主机分配资源,将所述待映射设备映射至虚拟机中,以使虚拟机对所述待映射设备分配虚拟机硬件标识以及虚拟机分配资源,其中,所述虚拟机的宿主机为当前主机;
所述映射模块,还用于基于所述虚拟化引擎根据所述待映射设备对应的目标主机硬件标识以及虚拟机硬件标识构建标识映射表,根据所述标识映射表、所述目标主机分配资源以及所述虚拟机分配资源构建资源映射表,以实现在虚拟机上对目标主机上连接的PCI设备进行映射。
9.一种PCI设备映射设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的PCI设备映射程序,所述PCI设备映射程序配置为实现如权利要求1至7中任一项所述的PCI设备映射方法。
10.一种存储介质,其特征在于,所述存储介质上存储有PCI设备映射程序,所述PCI设备映射程序被处理器执行时实现如权利要求1至7中任一项所述的PCI设备映射方法。
CN202110649232.XA 2021-06-10 2021-06-10 Pci设备映射方法、装置、设备及存储介质 Active CN113111025B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110649232.XA CN113111025B (zh) 2021-06-10 2021-06-10 Pci设备映射方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110649232.XA CN113111025B (zh) 2021-06-10 2021-06-10 Pci设备映射方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113111025A CN113111025A (zh) 2021-07-13
CN113111025B true CN113111025B (zh) 2021-09-24

Family

ID=76723431

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110649232.XA Active CN113111025B (zh) 2021-06-10 2021-06-10 Pci设备映射方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113111025B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114185607B (zh) * 2022-02-14 2022-06-14 苏州浪潮智能科技有限公司 Arm服务器中pci设备的启动控制方法、装置及设备
CN117725014B (zh) * 2024-02-04 2024-05-28 珠海星云智联科技有限公司 Dpu场景下的pcie设备属性修改方法及相关装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101059761A (zh) * 2006-04-20 2007-10-24 联想(北京)有限公司 一种虚拟机系统及其硬件设备访问方法
CN103870311A (zh) * 2012-12-10 2014-06-18 华为技术有限公司 通过半虚拟化驱动访问硬件的方法、后端驱动及前端驱动

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102193816B (zh) * 2010-03-12 2014-01-08 中国长城计算机深圳股份有限公司 一种设备分配方法及系统
CN102707991B (zh) * 2012-05-17 2016-03-30 中国科学院计算技术研究所 多根i/o虚拟化共享方法和系统
CN102819447B (zh) * 2012-05-29 2015-06-03 中国科学院计算技术研究所 一种用于多根共享系统的直接i/o虚拟化方法和装置
US9146762B2 (en) * 2012-08-23 2015-09-29 Citrix Systems, Inc. Specialized virtual machine to virtualize hardware resource for guest virtual machines
TW201423422A (zh) * 2012-12-07 2014-06-16 Hon Hai Prec Ind Co Ltd 具有PCIe介面的裝置共享系統及方法
CN103873489A (zh) * 2012-12-10 2014-06-18 鸿富锦精密工业(深圳)有限公司 具有PCIe接口的装置共享系统及方法
CN105159742A (zh) * 2015-07-06 2015-12-16 北京星网锐捷网络技术有限公司 一种虚拟机pci设备透传方法和系统
CN105320628B (zh) * 2015-11-06 2018-11-06 中国科学院计算技术研究所 使能单根i/o设备多根共享的适配装置、系统及方法
KR101765723B1 (ko) * 2016-05-09 2017-08-08 한국과학기술정보연구원 과립형 gpu 자원 스케줄러와 gpu 인지형 스케줄러 간의 상호작용 장치 및 방법
CN110647375A (zh) * 2019-09-23 2020-01-03 天津卓朗科技发展有限公司 云桌面的图像渲染方法、装置和云服务器
CN110688128A (zh) * 2019-09-25 2020-01-14 苏州浪潮智能科技有限公司 一种提高超融合存储可靠性的部署方法和装置
CN110727502A (zh) * 2019-10-17 2020-01-24 上海思询信息科技有限公司 一种基于平云台的gpu组件扩展应用方法及系统
CN111611078A (zh) * 2020-05-22 2020-09-01 山东汇贸电子口岸有限公司 一种基于OpenStack架构的GPU云服务器实现方法
CN111857961A (zh) * 2020-07-28 2020-10-30 山东超越数控电子股份有限公司 一种显卡透传方法、虚拟桌面管理系统及计算机设备
CN112667347A (zh) * 2020-09-24 2021-04-16 紫光云技术有限公司 一种公有云场景下gpu透传给云主机使用的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101059761A (zh) * 2006-04-20 2007-10-24 联想(北京)有限公司 一种虚拟机系统及其硬件设备访问方法
CN103870311A (zh) * 2012-12-10 2014-06-18 华为技术有限公司 通过半虚拟化驱动访问硬件的方法、后端驱动及前端驱动

Also Published As

Publication number Publication date
CN113111025A (zh) 2021-07-13

Similar Documents

Publication Publication Date Title
CN107783913B (zh) 一种应用于计算机的资源访问方法和计算机
CN113111025B (zh) Pci设备映射方法、装置、设备及存储介质
US9081612B2 (en) Virtual machine control method and virtual machine
CN101091161B (zh) 用于协作访客固件的设备和方法
CN103645945A (zh) 一种虚拟网卡的自动探测及驱动加载方法
CN113835644B (zh) 整机迁移方法、装置、设备及存储介质
US5758124A (en) Computer emulator
US20180196772A1 (en) Uma-Aware Root Bus Selection
US20170147370A1 (en) Pci slot hot-addition deferral for multi-function devices
US7574696B2 (en) Multiprocessor application interface requiring no utilization of a multiprocessor operating system
US20190377612A1 (en) VCPU Thread Scheduling Method and Apparatus
CN114398172A (zh) 资源配置方法、装置、电子设备及计算机可读存储介质
CN113849272A (zh) 在虚拟机中添加gpu资源的方法及装置
CN116028455A (zh) 一种数据处理方法、装置、存储介质及电子设备
US20150127916A1 (en) Dynamic memory allocation
US9766918B2 (en) Virtual system device identification using GPU to host bridge mapping
US20190179788A1 (en) Hot plugging of virtual bridges in a virtual pci system
US9128741B2 (en) System, method, and computer program product for conditionally preventing use of hardware virtualization
US9558364B2 (en) Computing machine, access management method, and access management program
CN111666036B (zh) 一种迁移数据的方法、装置及系统
CN104182352A (zh) 用于访问4gb以上物理内存地址空间的方法及装置
CN115878327A (zh) 总线预留方法、装置、服务器、电子设备和存储介质
CN107688479B (zh) Android系统网络集群及其搭建的方法、Android系统网络集群数据处理的方法和系统
JP2016173741A (ja) 情報処理装置、情報処理方法、及び、プログラム
US20130238884A1 (en) Computer-readable recording medium storing memory dump program, information processing apparatus, and memory dump method

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