CN117555832A - 虚拟机直通PCIe设备的DMA中断配置方法、设备、产品和介质 - Google Patents
虚拟机直通PCIe设备的DMA中断配置方法、设备、产品和介质 Download PDFInfo
- Publication number
- CN117555832A CN117555832A CN202311438221.2A CN202311438221A CN117555832A CN 117555832 A CN117555832 A CN 117555832A CN 202311438221 A CN202311438221 A CN 202311438221A CN 117555832 A CN117555832 A CN 117555832A
- Authority
- CN
- China
- Prior art keywords
- pcie device
- physical
- virtual
- function
- dma interrupt
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 39
- 230000006870 function Effects 0.000 claims description 127
- 238000004891 communication Methods 0.000 claims description 21
- 238000005516 engineering process Methods 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012986 modification Methods 0.000 abstract description 5
- 230000004048 modification Effects 0.000 abstract description 5
- 230000003863 physical function Effects 0.000 description 78
- 230000005540 biological transmission Effects 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 5
- 230000002457 bidirectional effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 101100004179 Schizophyllum commune BAR2 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Bus Control (AREA)
Abstract
本发明公开了虚拟机直通PCIe设备的DMA中断配置方法、设备、产品和介质。本发明以PCIe设备卡上设计的可共享给物理功能和虚拟功能多个物理寄存器组为基础,实现虚拟功能通过物理功能获取物理机为虚拟功能申请的DMA中断配置,然后将DMA中断配置配置给虚拟机中虚拟功能的DMA中断配置寄存器,从而能够正确使用DMA的功能。本发明不用在虚拟机中用软件模拟IOMMU,能够避免因软件模拟IOMMU而额外申请资源以及操作时进行大量的地址重映射,从而能够有效提高虚拟功能在虚拟机中的运行性能。本发明能够同时适用于常见的虚拟技术,不用再做任何修改就能同时支持Intel和AMD的平台,具有较好的通用性。
Description
技术领域
本发明属于计算机虚拟化技术领域。特别地,涉及一种虚拟机直通PCIe(Peripheral Component Interconnect Express,一种高速串行通信互联标准)设备的DMA(Direct Memory Access,直接内存访问)中断配置方法、设备、电子产品和计算机可读存储介质。
背景技术
云计算的发展加剧了虚拟化技术的发展。为提高设备资源利用率、降低成本、简化管理,计算机服务器应用领域发展出了设备虚拟化这一技术。设备虚拟化特指对计算机硬件中的设备进行虚拟化,可以将一台物理设备模拟出多个虚拟设备,每个虚拟设备都能够作为独立设备支持单独的操作系统。此外,为提高虚拟机或容器与虚拟设备交互时的性能,模拟出的虚拟设备能够将自身的物理地址直通到虚拟机,这种直接访问设备的方式可以提供更好的IO性能。
目前直通设备在虚拟机中为实现PCIe下的DMA中断,使用的方案是开启vIOMMU,vIOMMU是通过在虚拟机中用软件模拟物理机IOMMU的DMA和中断重映射功能。但是,以软件实现的vIOMMU在一般应用场景中是不被默认开启的,而且开启后其性能开销高,并且延迟不能满足高实时性应用的要求,应用场景受到限制。
发明内容
本发明的目的在于解决虚拟设备直通到虚拟机存在软件模拟性能开销高,延迟不能满足高实时性要求的问题,以解决上述背景技术中存在的问题。
为实现上述目的,第一方面,本发明提供了一种虚拟机直通PCIe设备的DMA中断配置方法,包括:
虚拟功能请求DMA中断配置的步骤,该步骤中,安装于某虚拟机的VF驱动进行DMA中断配置时,该虚拟机通过VF驱动来驱动其对应的PCIe设备虚拟功能作为发送设备,将DMA中断配置请求写入该PCIe设备虚拟功能对应的物理寄存器组;而且,该虚拟机通过VF驱动来驱动其对应的PCIe设备虚拟功能作为请求方,请求PCIe设备物理功能提供PCIe设备物理功能从物理机获取的DMA中断配置;
物理功能获取DMA中断配置的步骤;该步骤中,PCIe设备物理功能读取对应于所述请求方的物理寄存器组得到DMA中断配置请求,根据该DMA中断配置请求从物理机读取所请求的DMA中断配置,并将该DMA中断配置写入对应于所述请求方的物理寄存器组中;
虚拟功能获取DMA中断配置的步骤;该步骤中,在物理功能获取DMA中断配置期间,PCIe设备虚拟功能通过轮询方式查询其对应的物理寄存器组,若DMA中断配置已完成写入,则读取写入的DMA中断配置并写入PCIe设备虚拟功能的DMA中断配置寄存器;
其中,PCIe设备支持I/O设备虚拟化并设置有一个或多个物理寄存器组,物理寄存器组与PCIe设备虚拟功能一一对应,每个PCIe设备虚拟功能仅能读写其对应的物理寄存器组,PCIe设备物理功能读写所有物理寄存器组,所述物理机安装有PCIe设备物理功能的PF驱动,并且基于PCIe设备物理功能创建了一个或多个PCIe设备虚拟功能;一个或多个虚拟机运行于所述物理机上,虚拟机借助VFIO将对应于该虚拟机的PCIe设备虚拟功能直通于该虚拟机,并安装对应于所述PCIe设备虚拟功能的VF驱动。
本发明一些实施例中,所述虚拟功能请求DMA中断配置的步骤中,虚拟机通过VF驱动来驱动其对应的PCIe设备虚拟功能作为请求方,基于PCIe的设备中断,请求PCIe设备物理功能提供PCIe设备物理功能从物理机获取的DMA中断配置基于PCIe设备的中断请求PCIe设备物理功能提供PCIe设备物理功能从物理机获取的DMA中断配置。
本发明一些实施例中,所述PCIe设备还包括处理器、中断寄存器、中断控制器;虚拟机通过VF驱动来驱动其对应的PCIe设备虚拟功能作为请求方,写PCIe设备中对应于所述请求方的中断寄存器,从而PCIe设备中的中断控制器将中断转发给PCIe设备中的处理器,由PCIe设备中的处理器处理该中断,即由PCIe设备中物理功能处理该中断即PCIe设备的处理器将中断转发给PCIe设备中的物理功能处理该中断,PCIe设备中物理功能通过安装于物理机的PF驱动从物理机读取所请求的DMA中断配置。
本发明一些实施例中,DMA中断配置请求采用数据帧的方式,数据帧至少包括通信类型、数据长度、完成标志和数据内容,其中,通信类型用于表示该数据帧的通信类型,数据长度表示该数据帧数据内容部分的长度,完成标志在完成DMA中断配置写入该数据帧数据内容部分后被置为表示完成的值,数据内容用于存储DMA中断配置。
本发明一些实施例中,虚拟功能请求DMA中断配置的步骤中,PCIe设备物理功能将DMA中断配置请求以数据帧的方式写入该PCIe设备虚拟功能对应的物理寄存器组,其中,通信类型写入表示DMA中断配置请求的数值,数据长度写入表述数据内容部分长度的数值,数据内容和完成标志为空值;
物理功能获取DMA中断配置的步骤中,PCIe设备物理功能将DMA中断配置写入所述数据帧的数据内容部分后,将所述数据帧的完成标志置为表示完成的值;
虚拟功能获取DMA中断配置的步骤中,PCIe设备虚拟功能通过轮询方式查询存储于其对应的物理寄存器组中的数据帧中的完成标志,若完成标志等于表示完成的值,则将写入的DMA中断配置写入PCIe设备虚拟功能的DMA中断配置寄存器。
本发明一些实施例中,所述DMA中断配置是虚拟机所驱动的PCIe设备虚拟功能的MSIX信息,包括MSIX目的地址和MSIX中断向量数据。
本发明一些实施例中,所述PCIe设备是支持SR-IOV技术的PCIe设备。
第二方面,本发明提供了一种PCIe设备,其中,
所述PCIe设备支持I/O虚拟化并设置有一个或多个物理寄存器组;
物理寄存器组与PCIe设备虚拟功能一一对应,每个PCIe设备虚拟功能仅能读写其对应的物理寄存器组,PCIe设备物理功能读写所有物理寄存器组。
第三方面,本发明提供了一种电子产品,包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行所述的虚拟机直通PCIe设备的DMA中断配置方法。
第四方面,本发明提供了一种计算机可读存储介质,存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述的虚拟机直通PCIe设备的DMA中断配置方法。
本发明的有益效果如下:
本发明以PCIe设备卡上设计的可共享给物理功能和虚拟功能多个物理寄存器组为基础,实现虚拟功能通过物理功能获取物理机为虚拟功能申请的DMA中断配置,然后将DMA中断配置配置给虚拟机中虚拟功能的DMA中断配置寄存器,从而能够正确使用DMA的功能。
本发明不用在虚拟机中用软件模拟IOMMU,能够避免因软件模拟IOMMU而额外申请资源以及操作时进行大量的地址重映射,从而能够有效提高虚拟功能在虚拟机中的运行性能。
本发明能够同时适用于不同的通用虚拟技术,不用再做任何修改就能同时支持Intel和AMD的平台,具有较好的通用性。
附图说明
图1为本发明于一实施例中的PCIe设备的组成示意图。
图2为本发明于一实施例中的应用环境示意图。
图3为本发明于一实施例中的虚拟机直通PCIe设备的DMA中断配置方法的流程图。
图4为本发明于一实施例中的电子产品的组成原理图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
技术术语解释:
IOMMU(I/O Memory Management Unit)是一种硬件设备,位于计算机系统的主板芯片组中,用于管理计算机的输入输出操作和内存访问。它的主要作用是在计算机系统中提供虚拟内存隔离和安全性。
vIOMMU(virtual IOMMU)是一种软件模拟方案,提供在虚拟机中能够模拟实现物理机中IOMMU同样的功能。
HDMA(Hyper Direct Memory Access)是Synopsys公司PCIe controller中采用的一种DMA数据传输技术,无需CPU直接控制传输,并能够支持最多64通道的同时读和写操作,极大的提高了数据在外设和存储器之间或存储器和外设之间的传输效率。HDMA作为Synopsys的IP,要求使用者必须在使用时配置HDMA的中断配置寄存器,配置寄存器内容包括32位的高位MSIX目的地址,32位低位MSIX目的地址,32位MSIX中断向量数据。
SR-IOV(Single Root I/O Virtualization):SR-IOV技术是由PCI-SIG组织定义的PCIe规范的扩展规范,使运行在单个根上的多个虚拟机能够共享PCIe硬件资源。相对应的,还有MR-IOV技术。
PF(Physical Function)和VF(Virtual Function):PF(物理功能)和VF(虚拟功能)是SR-IOV的重要组成,PF具有标准PCIe功能,能够关联多个VF,被关联的VF共享一个PF的硬件资源。每个VF之间是独立的,能够绑定到不同的虚拟机中。该技术的主要目的在于实现单个物理PCIe设备支撑多虚拟机的应用场景。
MSIX(Message Signaled Interrupt eXtended):MSIX是MSI的扩展,两者都是通过PCI/PCIe的存储器写事务的方式直接向CPU发送中断,提高了PCI/PCIe设备的中读请求效率。
RC(Root Complex):RC是将CPU和主存储器连接到PCIe线路结构的设备,能代表CPU启动PCIe事务并访问主存储器,能接收PCIe访问主存储器事务,能将事务从一个端口路由到另一个端口。
VFIO(Virtual Function I/O):VFIO是Linux内核提供的一个用户态驱动框架,可以安全的把设备I/O、中断、DMA等暴露到用户空间从而用户态进程可以直接使用VFIO驱动访问硬件。
VT-D(Intel Virtualization Technology for Directed I/O):VT-D是Intel为I/O设备提出的虚拟化技术方案,它的主要实现是在硬件上引入重定向单元,能够对DMA和中断进行重定向,从而辅助VMM(Virtual Machine Monitor)实现I/O设备的虚拟化。
QEMU-KVM:KVM(Kernel-based Virtual Machine)是一种TYPE1Hypervisor(裸金属类型)虚拟化技术;QEMU(Quick Emulator)一款开源的、采用了动态二进制翻译技术的TYPE2 Hypervisor(寄居式类型)虚拟化软件;QEMU-KVM是专门针对KVM的QEMU分支。
为实现虚拟机直通PCIe设备时的开销降低和延迟缩短,本发明于一实施例中的一种PCIe设备,支持I/O设备虚拟化(例如,支持SR-IOV技术)并设置有一个或多个物理寄存器组,物理寄存器组与PCIe设备虚拟功能一一对应,每个PCIe设备虚拟功能仅能读写其对应的物理寄存器组,PCIe设备物理功能读写所有物理寄存器组。
具体地,本发明在一些实施例中,如图1所示,PCIe设备的物理功能通过SR-IOV技术虚拟化出虚拟功能,虚拟功能VF n与寄存器组n对应(n=1,2,……),物理功能PF能访问PCIe设备上所有物理寄存器。虚拟功能与物理功能通信时采用对应的物理寄存器组共享数据,物理机能够将所述PCIe设备的物理寄存器组的地址空间映射到PCIe域地址空间。此外,PCIe设备包括处理器、中断寄存器、中断控制器,即,PCIe设备可以是一个完整的SoC,中断寄存器是通过PCIe设备上的中断控制器管理的,中断控制器会将中断触发的信息通过写PCIe controller寄存器的方式转发给PCIe,再由PCIe的RC通知到物理机的CPU。其中,PCIecontroller是PCIe的一个IP,位于PCIe设备上。
本发明于一实施例中的应用环境如图2所示,PCIe设备安装于物理机的PCIe总线上并连接到PCIe RC,PCIe协议中RC提供地址转换功能(IATU),建立物理寄存器组的PCIe域地址空间与物理机CPU域地址空间之间的映射关系,这样物理机CPU才能访问该物理寄存器组。物理机安装有PCIe设备物理功能的PF驱动,并且基于PCIe设备物理功能创建了一个或多个PCIe设备虚拟功能;一个或多个虚拟机运行于所述物理机上,虚拟机借助VFIO将对应于该虚拟机的PCIe设备虚拟功能直通于该虚拟机,并安装对应于所述PCIe设备虚拟功能的VF驱动。PCIe设备物理功能的PF驱动是在物理机开机或插上设备卡时,物理机系统扫描到有设备插入,然后物理机就会绑定对应的PF驱动并执行。PCIe设备物理功能创建PCIe设备虚拟功能必须是在PF驱动已经安装的情况下才能正常创建。
具体的,PCIe设备物理功能是物理机上具备完整功能的实际设备。PCIe设备虚拟功能是基于物理设备创建的一个轻量级的设备,物理机通过向PCIe设备物理功能执行指令来创建一个PCIe设备虚拟功能,例如指令echo x>/sys/bus/pci/device/$BDF/sriov_numvfs,x对应需要创建的虚拟功能数量。本发明一些实施例中,物理机创建PCIe设备虚拟功能时,物理机操作系统会自动匹配并绑定执行当前物理机上PCIe设备物理功能的驱动。PCIe驱动的probe依据是匹配设备的vendor、device与驱动的vendor、device号来决定,物理功能(PF)与虚拟功能(VF)的驱动是同一份的原因,是因为将物理功能与虚拟功能的vendor与device号都加到了驱动里。因此物理机也是能驱动虚拟功能的,并且在驱动中物理机同样会给虚拟功能分配MSIX地址。
在物理功能没有创建虚拟功能的前提下,物理功能可以设置为直通到虚拟机的一个正常设备使用。如果物理功能创建了虚拟功能,物理功能那就不能直通到虚拟机,二者就没有了关系。虚拟功能与虚拟机之间的关系是通过将虚拟功能直通到虚拟机中使用来建立的,此时必须先在物理机上将虚拟功能与物理机上的驱动解绑,并将虚拟功能绑定到VFIO中,然后借助VFIO提供的接口将虚拟功能直通到虚拟机中,此时虚拟机中重新安装一份虚拟功能的驱动,从而虚拟功能就能在虚拟机中作为一个设备正常驱动。
本发明一些具体实施例中,DMA数据传输技术采用Synopsys的HDMA。HDMA作为PCIe提供的IP,它对应的配置寄存器是只有一份,是在PCIe controller中,用于存储获取到的MSIX信息,MSIX信息包括MSIX目的地址和MSIX中断向量。但是,为了让每个虚拟功能都能使用HDMA,PCIe为实现虚拟化给出了解决方案,HDMA将唯一的那份硬件地址在PCIe地址域映射出了多个不同的地址,这样每个虚拟功能都能分配一个HDMA对应的配置寄存器地址使用。本发明一些实施例中,MSIX信息是存放在PCIe设备的BAR0上的,这里描述的HDMA配置寄存器地址是PCIe域的地址,使用时是通过RC的IATU将这个地址映射到PCIe设备的BAR2(物理机CPU域地址)上的虚拟机在为虚拟功能安装VF驱动时,或者VF驱动执行中,或者在写入HDMA中断配置寄存器之前,没有HDMA对应的配置寄存器地址,会为HDMA申请中断,此时虚拟机申请中断的动作会同步到物理机的操作系统(例如Linux)内核中,物理机同时也会为虚拟功能申请中断,物理机申请中断时会申请MSIX目的地址和MSIX中断向量数据,并会将这些DMA中断配置写入到PCIe维护的地址中,虚拟功能对应的BAR空间中为HDMA申请中断时,虚拟机会生成DMA中断配置,同时虚拟机通过KVM和VFIO的接口也会在物理机上申请DMA中断配置。当虚拟功能使用虚拟机内生成的DMA中断配置配置给HDMA时,会出现地址错误。在AMD平台可以通过在虚拟机创建时开启vIOMMU的方式解决这个问题,但Intel平台使用此方式却无法解决。
本发明是虚拟机不用开启vIOMMU的一种解决方案,不仅能减少AMD平台开启vIOMMU的性能开销,还能同时让Intel平台的问题得到解决。
基于上述PCIe设备和应用环境,本发明于一实施例中的虚拟机直通PCIe设备的DMA中断配置方法,如图3所示,包括:
S100,虚拟功能请求DMA中断配置的步骤,该步骤中,对安装于某虚拟机的VF驱动进行DMA中断配置时,该虚拟机通过VF驱动来驱动其对应的PCIe设备虚拟功能作为发送设备,将DMA中断配置请求写入该PCIe设备虚拟功能对应的物理寄存器组;而且,该虚拟机通过VF驱动来驱动其对应的PCIe设备虚拟功能作为请求方,请求PCIe设备物理功能提供PCIe设备物理功能从物理机获取的DMA中断配置。
S200,物理功能获取DMA中断配置的步骤;该步骤中,PCIe设备物理功能读取对应于所述请求方的物理寄存器组得到DMA中断配置请求,根据该DMA中断配置请求从物理机读取所请求的DMA中断配置,并将该DMA中断配置写入对应于所述请求方的物理寄存器组中。
S300,虚拟功能获取DMA中断配置的步骤;该步骤中,在物理功能获取DMA中断配置期间,PCIe设备虚拟功能通过轮询方式查询其对应的物理寄存器组,若DMA中断配置已完成写入,则读取写入的DMA中断配置并写入PCIe设备虚拟功能的DMA中断配置寄存器。
本发明一些实施例中,所述虚拟功能请求DMA中断配置的步骤中,虚拟机通过VF驱动来驱动其对应的PCIe设备虚拟功能作为请求方,基于PCIe的设备中断,获取PCIe设备物理功能从物理机获取的DMA中断配置。
本发明一些实施例中所述方法应用于如图1所示的PCIe设备,具体的,虚拟机通过VF驱动来驱动其对应的PCIe设备虚拟功能作为请求方,写PCIe设备中对应于所述请求方的中断寄存器,从而PCIe设备中的中断控制器将中断转发给PCIe设备中的处理器,由PCIe设备中的处理器处理该中断,即PCIe设备的处理器将中断转发给PCIe设备中的物理功能处理该中断。,PCIe设备中物理功能通过安装于物理机的PF驱动的中断处理方法从物理机读取所请求的DMA中断配置。
PCIe设备中的处理器专门负责处理中断以及监视设备卡运行状态,具体的,该处理器通过逻辑判断产生的中断是来自物理功能还是虚拟功能,进而转发给物理功能还是虚拟功能,PCIe设备中的处理器通过向其PCIe controller寄存器写入值触发中断到物理机,PCIe controller寄存器的不同位会触发不同的中断到物理机的处理器,因此,PCIe设备中的处理器通过向其PCIe controller寄存器写入特定值触发中断从物理机读取所请求的DMA中断配置。在PCIe Controller触发中断到物理机处理器时,中断的处理是通过物理功能的PF驱动中的代码实现的。
本发明一些实施例中,DMA中断配置请求采用数据帧的方式,数据帧至少包括通信类型、数据长度、完成标志和数据内容,其中,通信类型表示该数据帧的通信类型,即PCIe虚拟功能和PCIe物理功能共享物理寄存器进行数据传输的类型,包括单向模式和双向模式,数据长度表示该数据帧数据内容部分的长度,完成标志在完成DMA中断配置写入该数据帧数据内容部分后被置为表示完成的值,数据内容用于存储DMA中断配置。
虚拟功能请求DMA中断配置的步骤中,PCIe设备物理功能将DMA中断配置请求以数据帧的方式写入该PCIe设备虚拟功能对应的物理寄存器组,其中,通信类型写入表示DMA中断配置请求的数值(双向模式),数据长度写入表述数据内容部分长度的数值,数据内容和完成标志为空值。
物理功能获取DMA中断配置的步骤中,PCIe设备物理功能通过逻辑判断是哪个PCIe设备虚拟功能发起的中断请求,然后读取对应物理寄存器组中DMA中断配置请求数据帧,解析通信类型与数据长度,根据通信类型获知PCIe设备虚拟功能想请求获取DMA中断配置,根据数据长度得知存放数据的空间有多大。接下来PCIe设备物理功能会根据对应于所述请求方的PCIe维护的地址,拷贝物理机为PCIe设备虚拟功能申请的DMA中断配置到数据帧内的数据内容中,完成后将所述数据帧的完成标志置为表示完成的值。
虚拟功能获取DMA中断配置的步骤中,PCIe设备虚拟功能通过轮询方式查询存储于其对应的物理寄存器组中的数据帧中的完成标志,若完成标志等于表示完成的值,则读取对应的物理寄存器中的DMA中断配置并写入PCIe设备虚拟功能的DMA中断配置寄存器,即虚拟机中的DMA中断配置寄存器。在正确配置DMA中断配置寄存器(例如本发明实施例中的HDMA中断配置寄存器),虚拟机就能正常使用DMA进行数据传输。
VF驱动需要配置HDMA时虚拟机才会发起请求获取DMA中断配置,因此下一步就是将DMA中断配置写入配置寄存器,因此,必须虚拟机等待PCIe设备虚拟功能获取到需要的数据。而PCIe设备虚拟功能发起请求是通过中断的方式,能够保证实时性,因此采用的轮询等待的方式。
虚拟机中PCIe设备虚拟功能的HDMA中断生成方式是向获取的MSIX目的地址写入数据,写入数据是PCIe的存储器写事务,会经过PCIe的事务层生成数据包(事务层为PCIe协议内的,都是执行在物理机上),数据包在PCIe的RC进行地址转换后将数据写入CPU中断控制器然后发起中断申请。中断首先会经过操作系统内核提供的VFIO先处理,然后触发信号到虚拟机监视器(hypervisor,或者VMM),在虚拟机监视器中将中断信号最终注入到虚拟机,虚拟机则能开始进行中断处理。
本发明采用在PCIe设备卡上设置的物理寄存器组并将地址空间映射到PCIe域地址空间,用于实现虚拟功能与物理功能之间的数据通信。虚拟功能的中断配置请求采用双向传输模式,内容设计有通信类型、数据长度,完成标志和数据内容。请求设备(PCIe设备虚拟功能)发起请求并等待完成,目的设备(PCIe设备物理功能)能够根据请求获取待请求的信息,然后目的设备将需求的数据以及完成信号写入物理寄存器组并通知请求设备数据写入成功,请求设备得到成功信号之后再读取寄存器组就能得到需要的数据。
本发明在VF驱动中为直通到虚拟机中的PCIe设备虚拟功能提供接口,PCIe设备虚拟功能利用接口的通信功能与PCIe设备物理功能进行通信。本发明使得PCIe设备虚拟功能能够从PCIe设备物理功能获取的MSIX地址与MSIX地址中断向量数据,从而正确配置HDMA的中断寄存器。
作为替代开启虚拟机中vIOMMU的方案,本发明在基于QEMU-KVM运行的虚拟机中得以验证,通过验证本发明更适合解决虚拟设备直通虚拟机后进行DMA中断配置。本发明不用在虚拟机中模拟IOMMU,从而避免为模拟IOMMU进行额外资源申请以及操作时进行大量的地址重映射,能够有效提升虚拟功能在虚拟机中的运行性能。
本发明能够同时适用于Intel的VT-D和AMD的IOMMU虚拟技术,不用再做任何修改就能同时支持Intel和AMD的平台,具有较好的通用性。
本发明于一实施例中提供了一种电子产品,如图4所示,所述电子设备包括至少一个处理器,以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行上述虚拟机直通PCIe设备的DMA中断配置方法。
其中,存储器和处理器采用总线方式连接,总线可以包括任意数量的互联的总线和桥,总线将一个或多个处理器和存储器的各种电路连接在一起。总线还可以通过接口将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路连接在一起,这些都是本领域所公知的。接口在总线和收发机之间提供接口,例如通信接口、用户接口。收发机可以是一个元件,也可以是多个元件,比如多个接收器和发送器,提供用于在传输介质上与各种其他装置通信的单元。经处理器处理的数据通过天线在无线介质上进行传输,进一步,天线还接收数据并将数据传送给处理器。
处理器负责管理总线和通常的处理,还可以提供各种功能,包括定时,外围接口,电压调节、电源管理以及其他控制功能。而存储器可以被用于存储处理器在执行操作时所使用的数据。
本发明于一实施例中提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述虚拟机直通PCIe设备的DMA中断配置方法实施例。
本领域技术人员通过上述说明可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括但不限于U盘、移动硬盘、磁性存储器、光学存储器等各种可以存储程序代码的介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置或方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,模块/单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或单元可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块/单元可以是或者也可以不是物理上分开的,作为模块/单元显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块/单元来实现本申请实施例的目的。例如,在本申请各个实施例中的各功能模块/单元可以集成在一个处理模块中,也可以是各个模块/单元单独物理存在,也可以两个或两个以上模块/单元集成在一个模块/单元中。
本领域普通技术人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
上述各个附图对应的流程或结构的描述各有侧重,某个流程或结构中没有详述的部分,可以参见其他流程或结构的相关描述。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。
Claims (10)
1.一种虚拟机直通PCIe设备的DMA中断配置方法,包括:
虚拟功能请求DMA中断配置的步骤,该步骤中,安装于某虚拟机的VF驱动进行DMA中断配置时,该虚拟机通过VF驱动来驱动其对应的PCIe设备虚拟功能作为发送设备,将DMA中断配置请求写入该PCIe设备虚拟功能对应的物理寄存器组;而且,该虚拟机通过VF驱动来驱动其对应的PCIe设备虚拟功能作为请求方,请求PCIe设备物理功能提供PCIe设备物理功能从物理机获取的DMA中断配置;
物理功能获取DMA中断配置的步骤;该步骤中,PCIe设备物理功能读取对应于所述请求方的物理寄存器组得到DMA中断配置请求,根据该DMA中断配置请求从物理机读取所请求的DMA中断配置,并将该DMA中断配置写入对应于所述请求方的物理寄存器组中;
虚拟功能获取DMA中断配置的步骤;该步骤中,在物理功能获取DMA中断配置期间,PCIe设备虚拟功能通过轮询方式查询其对应的物理寄存器组,若DMA中断配置已完成写入,则读取写入的DMA中断配置并写入PCIe设备虚拟功能的DMA中断配置寄存器;
其中,PCIe设备支持I/O设备虚拟化并设置有一个或多个物理寄存器组,物理寄存器组与PCIe设备虚拟功能一一对应,每个PCIe设备虚拟功能仅能读写其对应的物理寄存器组,PCIe设备物理功能读写所有物理寄存器组,所述物理机安装有PCIe设备物理功能的PF驱动,并且基于PCIe设备物理功能创建了一个或多个PCIe设备虚拟功能;一个或多个虚拟机运行于所述物理机上,虚拟机借助VFIO将对应于该虚拟机的PCIe设备虚拟功能直通于该虚拟机,并安装对应于所述PCIe设备虚拟功能的VF驱动。
2.如权利要求1所述的虚拟机直通PCIe设备的DMA中断配置方法,其中,所述虚拟功能请求DMA中断配置的步骤中,虚拟机通过VF驱动来驱动其对应的PCIe设备虚拟功能作为请求方,基于PCIe的设备中断,请求PCIe设备物理功能提供PCIe设备物理功能从物理机获取的DMA中断配置。
3.如权利要求2所述的虚拟机直通PCIe设备的DMA中断配置方法,其中,
所述PCIe设备还包括处理器、中断寄存器、中断控制器;
虚拟机通过VF驱动来驱动其对应的PCIe设备虚拟功能作为请求方,写PCIe设备中对应于所述请求方的中断寄存器,从而PCIe设备中的中断控制器将中断转发给PCIe设备中的处理器,由PCIe设备中的处理器处理该中断,即PCIe设备的处理器将中断转发给PCIe设备中的物理功能处理该中断,PCIe设备中物理功能通过安装于物理机的PF驱动从物理机读取所请求的DMA中断配置。
4.如权利要求1所述的虚拟机直通PCIe设备的DMA中断配置方法,其中,DMA中断配置请求采用数据帧的方式,数据帧至少包括通信类型、数据长度、完成标志和数据内容,其中,通信类型用于表示该数据帧的通信类型,数据长度表示该数据帧数据内容部分的长度,完成标志在完成DMA中断配置写入该数据帧数据内容部分后被置为表示完成的值,数据内容用于存储DMA中断配置。
5.如权利要求4所述的虚拟机直通PCIe设备的DMA中断配置方法,其中,
虚拟功能请求DMA中断配置的步骤中,PCIe设备物理功能将DMA中断配置请求以数据帧的方式写入该PCIe设备虚拟功能对应的物理寄存器组,其中,通信类型写入表示DMA中断配置请求的数值,数据长度写入表述数据内容部分长度的数值,数据内容和完成标志为空值;
物理功能获取DMA中断配置的步骤中,PCIe设备物理功能将DMA中断配置写入所述数据帧的数据内容部分后,将所述数据帧的完成标志置为表示完成的值;
虚拟功能获取DMA中断配置的步骤中,PCIe设备虚拟功能通过轮询方式查询存储于其对应的物理寄存器组中的数据帧中的完成标志,若完成标志等于表示完成的值,则将写入的DMA中断配置写入PCIe设备虚拟功能的DMA中断配置寄存器。
6.如权利要求1-5任一项所述的虚拟机直通PCIe设备的DMA中断配置方法,其中,
所述DMA中断配置是虚拟机所驱动的PCIe设备虚拟功能的MSIX信息,包括MSIX目的地址和MSIX中断向量数据。
7.如权利要求1-5任一项的虚拟机直通PCIe设备的DMA中断配置方法,其中,
所述PCIe设备是支持SR-IOV技术的PCIe设备。
8.一种PCIe设备,其中,
所述PCIe设备支持I/O虚拟化并设置有一个或多个物理寄存器组;
物理寄存器组与PCIe设备虚拟功能一一对应,每个PCIe设备虚拟功能仅能读写其对应的物理寄存器组,PCIe设备物理功能读写所有物理寄存器组。
9.一种电子产品,包括:
至少一个处理器;以及,与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有能被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任一项所述的虚拟机直通PCIe设备的DMA中断配置方法。
10.一种计算机可读存储介质,存储有计算机程序,其中,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的虚拟机直通PCIe设备的DMA中断配置方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311438221.2A CN117555832A (zh) | 2023-10-31 | 2023-10-31 | 虚拟机直通PCIe设备的DMA中断配置方法、设备、产品和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311438221.2A CN117555832A (zh) | 2023-10-31 | 2023-10-31 | 虚拟机直通PCIe设备的DMA中断配置方法、设备、产品和介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117555832A true CN117555832A (zh) | 2024-02-13 |
Family
ID=89813766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311438221.2A Pending CN117555832A (zh) | 2023-10-31 | 2023-10-31 | 虚拟机直通PCIe设备的DMA中断配置方法、设备、产品和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117555832A (zh) |
-
2023
- 2023-10-31 CN CN202311438221.2A patent/CN117555832A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2532708C2 (ru) | Способ и устройство для осуществления операции ввода/вывода в среде виртуализации | |
EP3204862B1 (en) | Emulated endpoint configuration | |
US8387043B2 (en) | USB port shared control method in a plurality of virtual machines | |
CN103282881B (zh) | 通过虚拟化直接共享智能设备 | |
US4792896A (en) | Storage controller emulator providing transparent resource sharing in a computer system | |
US9875208B2 (en) | Method to use PCIe device resources by using unmodified PCIe device drivers on CPUs in a PCIe fabric with commodity PCI switches | |
US7814496B2 (en) | Method and system for replicating schedules with regard to a host controller for virtualization | |
KR101035832B1 (ko) | 집적 종단점 장치와, 집적 pci 익스프레스 종단점 장치및 pci 익스프레스 통신 시스템 | |
US8856781B2 (en) | Method and apparatus for supporting assignment of devices of virtual machines | |
CN102650976B (zh) | 一种支持单根io虚拟化用户级接口控制装置及其方法 | |
US10846254B2 (en) | Management controller including virtual USB host controller | |
US9875131B2 (en) | Virtual PCI device based hypervisor bypass using a bridge virtual machine | |
JP2023545818A (ja) | チップ・システム、仮想割り込み処理方法および対応する装置 | |
WO2022001808A1 (zh) | 一种系统以及中断处理方法 | |
KR20130131812A (ko) | 가상화 장치 | |
KR950008229B1 (ko) | 퍼스널 컴퓨터 시스템 | |
US20220335109A1 (en) | On-demand paging support for confidential computing | |
US11392512B2 (en) | USB method and apparatus in a virtualization environment with multi-VM | |
CN117555832A (zh) | 虚拟机直通PCIe设备的DMA中断配置方法、设备、产品和介质 | |
US20220050795A1 (en) | Data processing method, apparatus, and device | |
CN112559120B (zh) | 定制化pcie总线io虚拟化支撑方法 | |
Zhang et al. | NVMe-over-RPMsg: A virtual storage device model applied to heterogeneous multi-core SoCs | |
US8713569B2 (en) | Dynamic association and disassociation of threads to device functions based on requestor identification | |
CN111857943B (zh) | 数据处理的方法、装置与设备 | |
KR102532099B1 (ko) | 가상 머신을 지원하는 스토리지 가상화 장치, 이의 동작 방법, 및 이를 포함하는 시스템의 동작 방법 |
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 |