CN116107697B - 一种不同操作***之间互相通信的方法及*** - Google Patents
一种不同操作***之间互相通信的方法及*** Download PDFInfo
- Publication number
- CN116107697B CN116107697B CN202310009903.5A CN202310009903A CN116107697B CN 116107697 B CN116107697 B CN 116107697B CN 202310009903 A CN202310009903 A CN 202310009903A CN 116107697 B CN116107697 B CN 116107697B
- Authority
- CN
- China
- Prior art keywords
- interrupt
- function configuration
- virtual
- vfi
- configuration register
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000004891 communication Methods 0.000 title claims abstract description 35
- 238000012545 processing Methods 0.000 claims abstract description 24
- 230000005540 biological transmission Effects 0.000 claims abstract description 7
- 230000000977 initiatory effect Effects 0.000 claims abstract description 5
- 230000008569 process Effects 0.000 claims description 5
- 230000001960 triggered effect Effects 0.000 claims description 5
- 230000006870 function Effects 0.000 description 124
- 230000003863 physical function Effects 0.000 description 41
- 238000012546 transfer Methods 0.000 description 18
- 238000013461 design Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000007547 defect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- 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
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Hardware Redundancy (AREA)
- Bus Control (AREA)
Abstract
本发明公开了一种不同操作***之间互相通信的方法及***。该方法包括主机操作***host将需要传递的信息写入虚拟机guesti对应的虚拟功能配置寄存器vfi,使vfi的pf‑to‑vf中断使能寄存器有效;中断处理模块使vfi的pf‑to‑vf中断只读状态位有效,然后记录下这个中断,等待发送;中断处理模块取得发送令牌后,发起虚拟功能序号为i的虚拟中断;中断路由模块收到虚拟中断后,根据中断信息,将中断投递至guesti;guesti进入中断服务程序后,读取vfi的pf‑to‑vf中断只读状态位,确定该中断源是host,读出传递的信息。本发明实施容易,占用较少的硬件资源,极大地提高了芯片的容错率。
Description
技术领域
本发明属于数据处理技术领域,更具体地,涉及一种不同操作***之间互相通信的方法及***,尤其涉及一种基于PCIe的不同操作***之间互相通信的方法及***。
背景技术
高速串行计算机扩展总线(Peripheral Component Interconnect express,PCIe)是一种高速串行计算机扩展总线标准,广泛用于搭建主机***处理器和各种外设的互连,一般被当作单一节点使用。而单根节点输入/输出虚拟化(single root I/Ovirtualization,SR-IOV)是由PCI-SIG组织定义的PCIe规范的扩展规范,可以在硬件层面分化出多个功能(function)节点,包括物理功能(physical function,pf)和虚拟功能(virtual function,vf),可以满足多虚拟机的使用场景。主机操作***(host operatingsystem,host os)和虚拟机(也称作客户操作***,guest operating system,guest os)均有属于自己的内存空间、中断、配置空间等资源,且相互之间深度隔离,不会因为应用程序漏洞对其它虚拟机造成安全威胁。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种不同操作***之间互相通信的方法及***,能作为重要的变通(workaround)机制,即作为芯片回片后某些功能的调试手段或备用策略,甚至用于挽救硬件缺陷导致的功能缺失。本发明实施较容易,占用较少的硬件资源,传输的信息有限,最大支持传输256字节信息,但能够为设计时考虑不周带来的功能漏洞提供更多的解决思路,极大地提高了芯片的容错率。
为实现上述目的,按照本发明的一个方面,提供了一种通信方法,包括:
主机操作***host将需要传递的信息写入虚拟机guesti对应的虚拟功能配置寄存器vfi,使虚拟功能配置寄存器vfi的pf-to-vf中断使能寄存器有效,等待触发中断;
中断处理模块检测到虚拟功能配置寄存器vfi的pf-to-vf中断使能寄存器有效后,使虚拟功能配置寄存器vfi的pf-to-vf中断只读状态位有效,然后记录下这个中断,等待发送;
中断处理模块取得发送令牌后,发起虚拟功能序号为i的虚拟中断;
中断路由模块收到虚拟中断后,根据中断信息,将中断投递至虚拟机guesti;
虚拟机guesti进入中断服务程序后,读取虚拟功能配置寄存器vfi的pf-to-vf中断只读状态位,确定该中断源是主机操作***host,读出传递的信息;
其中,i为虚拟机和虚拟功能配置寄存器的序号,i=0,1,2,…,n,一共有n+1个虚拟机以及n+1个虚拟功能配置寄存器。
在一些实施方式中,上述通信方法还包括:虚拟机guesti在读出传递的信息之后,使虚拟功能配置寄存器vfi的pf-to-vf中断使能寄存器失效;中断处理模块检测到虚拟功能配置寄存器vfi的pf-to-vf中断使能寄存器失效后,使虚拟功能配置寄存器vfi的pf-to-vf中断只读状态位失效。
在一些实施方式中,上述通信方法还包括:主机操作***host查询虚拟功能配置寄存器vfi的pf-to-vf中断只读状态位,确认该中断已经被虚拟机guesti处理完成。
在一些实施方式中,在主机操作***host配置虚拟机guesti的虚拟功能配置寄存器vfi的pf-to-vf中断使能寄存器之前,上述通信方法还包括:虚拟机guesti使虚拟功能配置寄存器vfi的pf-to-vf中断掩码寄存器失效。
在一些实施方式中,上述通信方法还包括:
虚拟机guesti将需要传递的信息写入其对应的虚拟功能配置寄存器vfi,使虚拟功能配置寄存器vfi中的vf-to-pf中断使能寄存器有效,等待触发中断;
中断处理模块检测到虚拟功能配置寄存器vfi的vf-to-pf中断使能寄存器有效后,使虚拟功能配置寄存器vfi的vf-to-pf中断只读状态位有效,以及使物理功能配置寄存器pf的vfi-to-pf中断只读状态位有效,然后记录下这个中断,等待发送;
中断处理模块取得发送令牌后,发起物理功能序号为0的物理中断;
主机端的中断路由模块收到物理中断后,根据中断信息,将中断投递至主机操作***host;
主机操作***host进入中断服务程序后,到其对应的物理功能配置寄存器pf中查询vf0-to-pf、vf1-to-pf、…、vfn-to-pf中断只读状态位;
在只有vfi-to-pf中断只读状态位有效时,主机操作***host进入虚拟功能配置寄存器vfi读取vf-to-pf中断只读状态位,再次确认中断已经发生,然后读出传递的信息。
在一些实施方式中,上述通信方法还包括:主机操作***host在读出传递的信息后,使虚拟功能配置寄存器vfi中的vf-to-pf中断使能寄存器失效;中断处理模块检测到虚拟功能配置寄存器vfi的vf-to-pf中断使能寄存器失效后,使虚拟功能配置寄存器vfi的vf-to-pf中断只读状态位失效,以及使物理功能配置寄存器pf的vfi-to-pf中断只读状态位失效。
在一些实施方式中,上述通信方法还包括:虚拟机guesti查询虚拟功能配置寄存器vfi的vf-to-pf中断只读状态位,确认该中断已经被主机操作***host处理完成。
在一些实施方式中,在虚拟机guesti配置虚拟功能配置寄存器vfi中的vf-to-pf中断使能寄存器之前,上述通信方法还包括:主机操作***host使物理功能配置寄存器pf的vfi-to-pf中断掩码寄存器失效。
在一些实施方式中,上述通信方法还包括:在存在多个有效的中断状态时,主机操作***host决定优先处理哪个有效的中断状态。
在一些实施方式中,上述通信方法还包括:主机操作***host决定优先处理虚拟机guestj触发的中断,进入虚拟功能配置寄存器vfj读取vf-to-pf中断只读状态位,再次确认中断已经发生,读出传递的信息,使虚拟功能配置寄存器vfj的vf-to-pf中断使能寄存器失效;其中,j为虚拟机和虚拟功能配置寄存器的序号,j=0,1,2,…,n且j≠i。
按照本发明的另一方面,提供了一种通信***,包括主机操作***host、n+1个虚拟机guest0至guestn、中断路由模块、中断处理模块、物理功能配置寄存器pf和多个虚拟功能配置寄存器vf;主机操作***host与n+1个虚拟机guest0至guestn通过上述方法进行通信。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:主机操作***具有独立的寄存器配置空间,即物理功能(pf)配置寄存器,各虚拟机也具有独立的寄存器配置空间,即与虚拟机一一对应的虚拟功能(vf)配置寄存器,主机操作***具有读写物理功能配置寄存器和虚拟功能配置寄存器的权限,虚拟机只能读写其对应的虚拟功能配置寄存器。主机操作***和虚拟机均能控制其对应的配置寄存器产生MSI(message signal interrupt)中断或者MSI-X中断到对应的目的机,并支持中断屏蔽/状态(mask/status)控制。本发明能够实现主机操作***和虚拟机之间的互相通信,实施较容易,占用较少的硬件资源,但可以为设计时考虑不周带来的功能漏洞提供更多的解决思路,极大地提高了芯片的容错率。
附图说明
图1是本发明实施例的不同操作***之间互相通信的***结构示意图;
图2是本发明实施例的主机操作***host向虚拟机guesti传递信息的流程示意图;
图3是本发明实施例的虚拟机guesti向主机操作***host传递信息的流程示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。正如本领域技术人员可以认识到的那样,在不脱离本申请的精神或范围的情况下,可通过各种不同方式修改所描述的实施例。因此,附图和描述被认为本质上是示例性的而非限制性的。
按照协议规范,每个pf下面可以绑定多个vf,pf拥有PCIe的所有功能,在***资源调配上权限较大,vf只具备部分轻量级功能,权限局限于自己的资源中,这个规则本身适用于软件绝大部分使用场景,但是在某些特殊场景,host和guest之间需要建立通信机制。比如某个硬件资源只能支持时分复用,而多个guest存在并发访问需求,这时所有guest将访问请求提交host,由host统一管理分配优先级,完成后将标志返还给对应guest;或者当某个guest想访问超越自己权限的硬件资源时,就需要委托host进行间接访问,这里面就涉及到host和guest之间的通信机制。因此,为了增加硬件***的鲁棒性,预留软件使用的灵活度,在芯片设计中,建立不同操作***之间互相通信的机制是必不可少的。
如图1所示,本发明实施例的不同操作***之间互相通信的***包括:设置在主机端(也称之为PCIe根组件(Root Complex,RC)端)的主机操作***host、多个虚拟机guest和中断路由模块,以及设置在显卡端(也称之为PCIe终点(End Point,EP)端)的中断处理模块、物理功能配置寄存器pf和多个虚拟功能配置寄存器vf。主机操作***host对应物理功能配置寄存器pf,多个虚拟机guest与多个虚拟功能配置寄存器vf一一对应。具体地,图1所示的结构中,主机端具有16个虚拟机,分别表示为guest0至guest15,对应地,显卡端具有16个虚拟功能配置寄存器,分别表示为vf0至vf15,guest0对应vf0,guest1对应vf1,依此类推,guest15对应vf15。主机操作***host具有读写物理功能配置寄存器pf和虚拟功能配置寄存器vf0至vf15的权限,虚拟机guest0至guest15只能读写其对应的虚拟功能配置寄存器vf0至vf15,即,虚拟机guest0只能读写其对应的虚拟功能配置寄存器vf0,虚拟机guest1只能读写其对应的虚拟功能配置寄存器vf1,依此类推,虚拟机guest15只能读写其对应的虚拟功能配置寄存器vf15。
一般地,主机操作***host拥有最大的权限,其能够通过PCIe访问显卡端的所有功能的配置寄存器,包含图中未示出的资源,虚拟机guest0至guest15只能访问对应的虚拟功能配置寄存器vf0至vf15以及给该虚拟机分配的部分资源。
以主机操作***host向虚拟机guest1传递信息为例,主机操作***host操作虚拟机guest1对应的虚拟功能配置寄存器vf1,产生一个指向虚拟机guest1的虚拟中断,虚拟机guest1收到中断后,通过访问其对应的虚拟功能配置寄存器vf1查询中断源,并取出传递的信息。
以虚拟机guest0向主机操作***host传递信息为例,虚拟机guest0操作其对应的虚拟功能配置寄存器vf0,产生一个指向主机操作***host的物理中断,主机操作***host收到中断后,通过访问其对应的物理功能配置寄存器pf查询中断源为虚拟机guest0,访问虚拟机guest0对应的虚拟功能配置寄存器vf0取出传递的信息。
中断处理模块用于将所有中断请求排队后封装成存储器写操作发送至中断路由模块;中断路由模块用于将收到的中断请求准确投递到对应的主机操作***host或者虚拟机guest。由于主机操作***host能够访问物理功能配置寄存器pf和所有虚拟功能配置寄存器vf,而虚拟机guest只能访问其对应的虚拟功能配置寄存器vf,将传递的信息和一些中断状态位存储在虚拟功能配置寄存器vf中,以方便虚拟机guest查询。例如,主机操作***host和虚拟机guest双向传递信息时,主机操作***host和虚拟机guest都会将传递的信息存放虚拟机对应的虚拟功能配置寄存器vf中,虚拟机向主机操作***host传递信息时,中断状态位除了存放在物理功能配置寄存器pf中,也会在虚拟机guest对应的虚拟功能配置寄存器vf中存放副本,虚拟机guest能够通过查询该中断状态位,确认主机操作***host已经处理完中断。
在开启SR-IOV的场景下,PCIe的功能配置寄存器包括pf以及与pf绑定的多个vf,一一对应于主机端的多个操作***,理论上,各操作***处于隔离状态,无法感知对方的存在。如前所述,在某些场景下,需要实现各操作***之间的通信(注意,各虚拟机guest之间的通信无意义),因此需要具备以下条件:
(1)每个操作***拥有自己独立的寄存器配置空间;其中,主机操作***host对应物理功能配置寄存器pf,虚拟机guest对应虚拟功能配置寄存器vf。
(2)主机操作***host有读写物理功能配置寄存器pf和各虚拟功能配置寄存器vf的权限,虚拟机guest只能读写自己对应的虚拟功能配置寄存器vf。
(3)主机操作***host和虚拟机guest均能够控制其对应的功能配置寄存器产生MSI中断或者MSI-X中断到对应的目的机,并支持中断屏蔽/状态(mask/status)控制。
本发明实施例的不同操作***之间互相通信的方法包括:主机操作***host向虚拟机guesti传递信息;以及虚拟机guesti向主机操作***host传递信息。
如图2所示,本发明实施例的主机操作***host向虚拟机guesti(i为虚拟机和虚拟功能配置寄存器的序号,i=0,1,2,…,n,一共有n+1个虚拟机以及n+1个虚拟功能配置寄存器)传递信息包括:
步骤S201:主机操作***host将需要传递的信息写入虚拟机guesti对应的虚拟功能配置寄存器vfi,将虚拟功能配置寄存器vfi的物理功能配置寄存器到虚拟功能配置寄存器(pf-to-vf)中断使能寄存器置位,等待触发中断;
步骤S203:中断处理模块检测到虚拟功能配置寄存器vfi的pf-to-vf中断使能寄存器有效后,将虚拟功能配置寄存器vfi的pf-to-vf中断只读状态位置1,然后记录下这个中断,等待发送;
步骤S205:中断处理模块取得发送令牌后,发起虚拟功能序号(virtual functionnumber)为i,即与guesti的序号对应的虚拟中断;
步骤S207:主机端的中断路由模块收到虚拟中断后,根据中断信息,将中断投递至虚拟机guesti。
步骤S209:虚拟机guesti进入中断服务程序后,读取虚拟功能配置寄存器vfi的pf-to-vf中断只读状态位,确定该中断源是主机操作***host,读出传递的信息,将虚拟功能配置寄存器vfi的pf-to-vf中断使能寄存器置0。
步骤S211:中断处理模块检测到虚拟功能配置寄存器vfi的pf-to-vf中断使能寄存器失效,将虚拟功能配置寄存器vfi的pf-to-vf中断只读状态位置0。
在一些实施方式中,在步骤S201之前,需要虚拟机guesti将虚拟功能配置寄存器vfi的pf-to-vf中断掩码寄存器置0。
在一些实施方式中,在步骤S211之后,还包括步骤S213:主机操作***host查询虚拟功能配置寄存器vfi的pf-to-vf中断只读状态位,确认该中断已经被虚拟机guesti处理完成,实现了信息传递的握手同步。
更进一步地,以主机操作***host向虚拟机guest1传递信息为例对上述方法进行详细说明。当主机操作***host需要传递信息给虚拟机guest1时,主机操作***host会主动到虚拟机guest1对应的(即绑定的)虚拟功能配置寄存器vf1填写传递的信息,然后将虚拟功能配置寄存器vf1中的物理功能配置寄存器到虚拟功能配置寄存器(pf-to-vf)中断使能寄存器置位,等待触发中断。中断处理模块检测到虚拟功能配置寄存器vf1的pf-to-vf中断使能寄存器有效后,会将虚拟功能配置寄存器vf1的pf-to-vf中断只读状态位置1,然后记录下这个中断,等待发送。中断处理模块取得发送令牌后,会向PCIe发起虚拟功能序号(virtual function number)为1的虚拟中断。这个虚拟中断到达主机端的中断路由模块后,中断路由模块会根据中断信息,将中断投递至虚拟机guest1。这样,虚拟机guest1进入中断服务程序后,首先读取其对应的虚拟功能配置寄存器vf1的pf-to-vf中断只读状态位,确定该中断源是主机操作***host,然后读出传递的信息,最后将虚拟功能配置寄存器vf1中的pf-to-vf中断使能寄存器置0。同时,中断处理模块检测到虚拟功能配置寄存器vf1的pf-to-vf中断使能寄存器失效后,会将虚拟功能配置寄存器vf1的pf-to-vf中断只读状态位置0。注意,在这笔中断传输之前,需要虚拟机guest1将虚拟功能配置寄存器vf1的pf-to-vf中断掩码寄存器置0,否则,主机操作***host无法触发中断。由于主机操作***host可以访问虚拟功能配置寄存器vf1,主机操作***host可以查询虚拟功能配置寄存器vf1的pf-to-vf中断只读状态位,闭环确认该中断已经被虚拟机guest1处理完成,实现了信息传递的握手同步。
如图3所示,本发明实施例的虚拟机guesti向主机操作***host传递信息包括:
步骤S301:虚拟机guesti将需要传递的信息写入其对应的虚拟功能配置寄存器vfi,将虚拟功能配置寄存器vfi中的虚拟功能到物理功能(vf-to-pf)中断使能寄存器置位,等待触发中断;
步骤S303:中断处理模块检测到虚拟功能配置寄存器vfi的vf-to-pf中断使能寄存器有效后,将虚拟功能配置寄存器vfi的vf-to-pf中断只读状态位置1,以及将物理功能配置寄存器pf的虚拟功能到物理功能(vfi-to-pf)中断只读状态位置1,然后记录下这个中断,等待发送;
步骤S305:中断处理模块取得发送令牌后,发起物理功能序号(physicalfunction number)为0,即本***只有一个物理功能;
步骤S307:主机端的中断路由模块收到物理中断后,根据中断信息,将中断投递至主机操作***host。
步骤S309:主机操作***host进入中断服务程序后,到其对应的物理功能配置寄存器pf中查询vf0-to-pf、vf1-to-pf、…、vfn-to-pf中断只读状态位。
步骤S311:在存在多个有效的中断状态时,主机操作***host自行决定优先处理哪个有效的中断状态。
因为所有虚拟机guest均可能同时向主机操作***host传递信息,物理功能配置寄存器pf会并行记录有效的vf-to-pf中断只读状态位,如果存在多个有效的中断状态,优先处理哪个取决于主机操作***host。
步骤S313:主机操作***host决定优先处理虚拟机guestj触发的中断,进入虚拟功能配置寄存器vfj读取vf-to-pf中断只读状态位,再次确认中断已经发生,然后读出传递的信息,最后将虚拟功能配置寄存器vfj中的vf-to-pf中断使能寄存器置0。其中,j为虚拟机和虚拟功能配置寄存器的序号,j=0,1,2,…,n,且j≠i。
步骤S315:在只有vfi-to-pf中断只读状态位有效时,主机操作***host会进入虚拟功能配置寄存器vfi读取vf-to-pf中断只读状态位,再次确认中断已经发生,然后读出传递的信息,最后将虚拟功能配置寄存器vfi中的vf-to-pf中断使能寄存器置0。
步骤S317:中断处理模块检测到虚拟功能配置寄存器vfi的vf-to-pf中断使能寄存器失效后,会将虚拟功能配置寄存器vfi的vf-to-pf中断只读状态位和物理功能配置寄存器pf的vfi-to-pf中断只读状态位置0。
在一些实施方式中,在步骤S301之前,需要主机操作***host将物理功能配置寄存器pf的vfi-to-pf中断掩码寄存器置0。
在一些实施方式中,在步骤S317之后,还包括步骤S319:虚拟机guesti查询虚拟功能配置寄存器vfi的vf-to-pf中断只读状态位,闭环确认该中断已经被主机操作***host处理完成,实现了信息传递的握手同步。
更进一步地,以虚拟机guest0向主机操作***host传递信息为例对上述方法进行详细说明。当虚拟机guest0需要传递信息给主机操作***host时,虚拟机guest0会主动到与自己绑定的虚拟功能配置寄存器vf0填写传递的信息,然后将虚拟功能配置寄存器vf0中的虚拟功能到物理功能(vf-to-pf)中断使能寄存器置位,等待触发中断。中断处理模块检测到虚拟功能配置寄存器vf0的vf-to-pf中断使能寄存器有效后,会将虚拟功能配置寄存器vf0的vf-to-pf中断只读状态位置1,同时也会将物理功能配置寄存器pf的虚拟功能到物理功能(vf0-to-pf)中断只读状态位置1,然后记录下这个中断,等待发送。中断处理模块取得发送令牌后,会向PCIe发起物理功能序号(physical function number)为0的物理中断。这个物理中断到达主机端的中断路由模块后,中断路由模块会根据中断信息,将中断投递至主机操作***host。这样,主机操作***host进入中断服务程序后,会去其对应的物理功能配置寄存器pf中查询vf0-to-pf、vf1-to-pf、…、vf15-to-pf中断只读状态位,因为所有虚拟机guest均可能同时向主机操作***host传递信息,物理功能配置寄存器pf会并行记录有效的vf-to-pf中断只读状态位,如果存在多个有效的中断状态,优先处理哪个取决于主机操作***host。假设这个例子只有虚拟机guest0向主机操作***host传递信息,即只有vf0-to-pf中断只读状态位有效,主机操作***host会进入虚拟功能配置寄存器vf0读取vf-to-pf中断只读状态位,再次确认中断已经发生,然后读出传递的信息,最后将虚拟功能配置寄存器vf0中的vf-to-pf中断使能寄存器置0。中断处理模块检测到虚拟功能配置寄存器vf0的vf-to-pf中断使能寄存器失效后,会将虚拟功能配置寄存器vf0的vf-to-pf中断只读状态位和物理功能配置寄存器pf的vf0-to-pf中断只读状态位置0。注意,在这笔中断传输之前,需要主机操作***host将物理功能配置寄存器pf的vf0-to-pf中断掩码寄存器置0,否则,虚拟机guest0无法触发中断。由于虚拟机guest0可以访问其对应的虚拟功能配置寄存器vf0,虚拟机guest0可以查询虚拟功能配置寄存器vf0的vf-to-pf中断只读状态位,闭环确认该中断已经被主机操作***host处理完成,实现了信息传递的握手同步。
需要注意,因为操作***之间是互相隔离的,任意时刻都可能存在多笔不同方向交叉的信息传递,这些中断并发产生,统一由中断处理模块按照设定的优先级依次排队发出。比如主机操作***host可能同时往所有的虚拟机guest传递信息,所有的虚拟机guest也可能同时都往主机操作***host传递信息。
对于主机操作***host绑定的物理功能配置寄存器pf,需要有以下元素:
vfi-to-pf中断掩码寄存器,这组寄存器由主机操作***host控制,能够屏蔽指定虚拟机guest的中断。
vfi-to-pf中断只读状态位,这组只读寄存器用于主机操作***host查询中断源来自于哪个虚拟机guest。
对于每个虚拟机guest绑定的虚拟功能配置寄存器vf,均需要有以下元素:
vf-to-pf中断使能寄存器,这个寄存器由虚拟机guest置1发起,由主机操作***host置0清除。
pf-to-vf中断使能寄存器,这个寄存器由主机操作***host置1发起,由虚拟机guest置0清除。
pf-to-vf中断掩码寄存器,这个寄存器由虚拟机guest控制,能够屏蔽主机操作***host的中断。
pf-to-vf中断只读状态位,虚拟机guest能够通过查询这个只读寄存器,确定中断源是主机操作***host,主机操作***host也能够通过查询这个只读寄存器,确定中断已经被虚拟机guest处理完成。
vf-to-pf中断只读状态位,主机操作***host能够通过查询这个只读寄存器,确认中断源确实是该guest,虚拟机guest也能够通过查询这个只读寄存器,确定该中断已经被主机操作***host处理完成。
vf-to-pf传递信息字段,用于存放虚拟机guest传递给主机操作***host的信息,由虚拟机guest填写。
pf-to-vf传递信息字段,用于存放主机操作***host传递给虚拟机guest的信息,由主机操作***host填写。
在本发明的实施例中,主机操作***具有独立的寄存器配置空间,即物理功能(pf)配置寄存器,各虚拟机也具有独立的寄存器配置空间,即与虚拟机一一对应的虚拟功能(vf)配置寄存器,主机操作***具有读写物理功能配置寄存器和虚拟功能配置寄存器的权限,虚拟机只能读写其对应的虚拟功能配置寄存器。主机操作***和虚拟机均能控制其对应的配置寄存器产生MSI(message signal interrupt)中断或者MSI-X中断到对应的目的机,并支持中断屏蔽/状态(mask/status)控制。本发明能够实现主机操作***和虚拟机之间的互相通信,实施较容易,占用较少的硬件资源,但可以为设计时考虑不周带来的功能漏洞提供更多的解决思路,极大地提高了芯片的容错率。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或多个(两个或两个以上)用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理器的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。上述实施例方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种通信方法,其特征在于,包括:
主机操作***host将需要传递的信息写入虚拟机guesti对应的虚拟功能配置寄存器vfi,使虚拟功能配置寄存器vfi的pf-to-vf中断使能寄存器有效,等待触发中断;
中断处理模块检测到虚拟功能配置寄存器vfi的pf-to-vf中断使能寄存器有效后,使虚拟功能配置寄存器vfi的pf-to-vf中断只读状态位有效,然后记录下这个中断,等待发送;
中断处理模块取得发送令牌后,发起虚拟功能序号为i的虚拟中断;
中断路由模块收到虚拟中断后,根据中断信息,将中断投递至虚拟机guesti;
虚拟机guesti进入中断服务程序后,读取虚拟功能配置寄存器vfi的pf-to-vf中断只读状态位,确定中断源是主机操作***host,读出传递的信息;
其中,i为虚拟机和虚拟功能配置寄存器的序号,i= 0,1,2,…,n,一共有n+1个虚拟机以及n+1个虚拟功能配置寄存器;
所述通信方法还包括:
虚拟机guesti将需要传递的信息写入其对应的虚拟功能配置寄存器vfi,使虚拟功能配置寄存器vfi中的vf-to-pf中断使能寄存器有效,等待触发中断;
中断处理模块检测到虚拟功能配置寄存器vfi的vf-to-pf中断使能寄存器有效后,使虚拟功能配置寄存器vfi的vf-to-pf中断只读状态位有效,以及使物理功能配置寄存器pf的vfi-to-pf中断只读状态位有效,然后记录下这个中断,等待发送;
中断处理模块取得发送令牌后,发起物理功能序号为0的物理中断;
主机端的中断路由模块收到物理中断后,根据中断信息,将中断投递至主机操作***host;
主机操作***host进入中断服务程序后,到其对应的物理功能配置寄存器pf中查询vf0-to-pf、vf1-to-pf、…、vfn-to-pf中断只读状态位;
在只有vfi-to-pf中断只读状态位有效时,主机操作***host进入虚拟功能配置寄存器vfi读取vf-to-pf中断只读状态位,再次确认中断已经发生,然后读出传递的信息。
2.如权利要求1所述的通信方法,其特征在于,还包括:虚拟机guesti在读出传递的信息之后,使虚拟功能配置寄存器vfi的pf-to-vf中断使能寄存器失效;中断处理模块检测到虚拟功能配置寄存器vfi的pf-to-vf中断使能寄存器失效后,使虚拟功能配置寄存器vfi的pf-to-vf中断只读状态位失效。
3.如权利要求2所述的通信方法,其特征在于,还包括:主机操作***host查询虚拟功能配置寄存器vfi的pf-to-vf中断只读状态位,确认该中断已经被虚拟机guesti处理完成。
4.如权利要求1所述的通信方法,其特征在于,在主机操作***host配置虚拟机guesti的虚拟功能配置寄存器vfi的pf-to-vf中断使能寄存器之前,所述方法还包括:虚拟机guesti使虚拟功能配置寄存器vfi的pf-to-vf中断掩码寄存器失效。
5.如权利要求1至4中任一项所述的通信方法,其特征在于,还包括:主机操作***host在读出传递的信息后,使虚拟功能配置寄存器vfi中的vf-to-pf中断使能寄存器失效;中断处理模块检测到虚拟功能配置寄存器vfi的vf-to-pf中断使能寄存器失效后,使虚拟功能配置寄存器vfi的vf-to-pf中断只读状态位失效,以及使物理功能配置寄存器pf的vfi-to-pf中断只读状态位失效。
6.如权利要求5所述的通信方法,其特征在于,还包括:虚拟机guesti查询虚拟功能配置寄存器vfi的vf-to-pf中断只读状态位,确认该中断已经被主机操作***host处理完成。
7.如权利要求1至4中任一项所述的通信方法,其特征在于,在虚拟机guesti配置虚拟功能配置寄存器vfi中的vf-to-pf中断使能寄存器之前,所述方法还包括:主机操作***host使物理功能配置寄存器pf的vfi-to-pf中断掩码寄存器失效。
8.如权利要求1至4中任一项所述的通信方法,其特征在于,还包括:在存在多个有效的中断状态时,主机操作***host决定优先处理哪个有效的中断状态。
9.如权利要求8所述的通信方法,其特征在于,还包括:主机操作***host决定优先处理虚拟机guestj触发的中断,进入虚拟功能配置寄存器vfj读取vf-to-pf中断只读状态位,再次确认中断已经发生,读出传递的信息,使虚拟功能配置寄存器vfj的vf-to-pf中断使能寄存器失效;其中,j为虚拟机和虚拟功能配置寄存器的序号,j= 0,1,2,…,n且j≠i。
10.一种通信***,其特征在于,包括主机操作***host、n+1个虚拟机guest0至guestn、中断路由模块、中断处理模块、物理功能配置寄存器pf和多个虚拟功能配置寄存器vf;所述主机操作***host与所述n+1个虚拟机guest0至guestn通过如权利要求1至9中任一项所述的方法进行通信。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310009903.5A CN116107697B (zh) | 2023-01-04 | 2023-01-04 | 一种不同操作***之间互相通信的方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310009903.5A CN116107697B (zh) | 2023-01-04 | 2023-01-04 | 一种不同操作***之间互相通信的方法及*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116107697A CN116107697A (zh) | 2023-05-12 |
CN116107697B true CN116107697B (zh) | 2023-10-31 |
Family
ID=86253711
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310009903.5A Active CN116107697B (zh) | 2023-01-04 | 2023-01-04 | 一种不同操作***之间互相通信的方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116107697B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116320469B (zh) * | 2023-05-16 | 2024-03-01 | 摩尔线程智能科技(北京)有限责任公司 | 一种虚拟化视频编解码***及方法、电子设备和存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559087A (zh) * | 2013-10-31 | 2014-02-05 | 华为技术有限公司 | 一种虚拟处理器之间的中断的实现方法、相关装置和*** |
CN103984591A (zh) * | 2014-05-15 | 2014-08-13 | 中国人民解放军国防科学技术大学 | 计算机虚拟化***的PCI设备INTx中断投递方法 |
CN109634721A (zh) * | 2018-12-17 | 2019-04-16 | 广东浪潮大数据研究有限公司 | 一种虚拟机与主机的启动通信方法及相关装置 |
CN110609730A (zh) * | 2018-06-14 | 2019-12-24 | 阿里巴巴集团控股有限公司 | 一种实现虚拟处理器间中断透传的方法及设备 |
CN111949371A (zh) * | 2020-08-14 | 2020-11-17 | 苏州浪潮智能科技有限公司 | 一种命令信息传输方法、***、装置及可读存储介质 |
CN112463307A (zh) * | 2020-12-11 | 2021-03-09 | 深信服科技股份有限公司 | 一种数据传输方法、装置、设备及可读存储介质 |
CN112905304A (zh) * | 2021-03-08 | 2021-06-04 | 深信服科技股份有限公司 | 一种虚拟机间通信方法、装置、物理主机及介质 |
CN114371907A (zh) * | 2020-10-15 | 2022-04-19 | 华为技术有限公司 | 一种芯片***、处理虚拟中断的方法及相应装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7853744B2 (en) * | 2007-05-23 | 2010-12-14 | Vmware, Inc. | Handling interrupts when virtual machines have direct access to a hardware device |
US8291135B2 (en) * | 2010-01-15 | 2012-10-16 | Vmware, Inc. | Guest/hypervisor interrupt coalescing for storage adapter virtual function in guest passthrough mode |
US11586567B2 (en) * | 2020-01-07 | 2023-02-21 | Vmware, Inc. | Techniques for virtualizing PF-VF mailbox communication in SR-IOV devices |
-
2023
- 2023-01-04 CN CN202310009903.5A patent/CN116107697B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103559087A (zh) * | 2013-10-31 | 2014-02-05 | 华为技术有限公司 | 一种虚拟处理器之间的中断的实现方法、相关装置和*** |
CN103984591A (zh) * | 2014-05-15 | 2014-08-13 | 中国人民解放军国防科学技术大学 | 计算机虚拟化***的PCI设备INTx中断投递方法 |
CN110609730A (zh) * | 2018-06-14 | 2019-12-24 | 阿里巴巴集团控股有限公司 | 一种实现虚拟处理器间中断透传的方法及设备 |
CN109634721A (zh) * | 2018-12-17 | 2019-04-16 | 广东浪潮大数据研究有限公司 | 一种虚拟机与主机的启动通信方法及相关装置 |
CN111949371A (zh) * | 2020-08-14 | 2020-11-17 | 苏州浪潮智能科技有限公司 | 一种命令信息传输方法、***、装置及可读存储介质 |
CN114371907A (zh) * | 2020-10-15 | 2022-04-19 | 华为技术有限公司 | 一种芯片***、处理虚拟中断的方法及相应装置 |
CN112463307A (zh) * | 2020-12-11 | 2021-03-09 | 深信服科技股份有限公司 | 一种数据传输方法、装置、设备及可读存储介质 |
CN112905304A (zh) * | 2021-03-08 | 2021-06-04 | 深信服科技股份有限公司 | 一种虚拟机间通信方法、装置、物理主机及介质 |
Non-Patent Citations (4)
Title |
---|
Vulnerability Analysis on Virtualized Environment using FPVA;Jayaraju, Lakshman等;《 2013 FOURTH INTERNATIONAL CONFERENCE ON COMPUTING, COMMUNICATIONS AND NETWORKING TECHNOLOGIES (ICCCNT)》;全文 * |
一种基于SR-IOV技术的虚拟环境安全隔离模型;刘明达;马龙宇;;信息网络安全(第09期);全文 * |
基于vDPA的虚拟网络转发性能优化技术的研究与实现;欧阳卓玥;《中国优秀硕士学位论文全文数据库(信息科技辑)》(第1期);全文 * |
基于核间寄存器的多核虚拟机***中虚拟机间通信研究;张峰;黄景;;长江大学学报(自然科学版)(第07期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116107697A (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10997093B2 (en) | NVME data processing method and NVME device | |
US7533197B2 (en) | System and method for remote direct memory access without page locking by the operating system | |
US20110087836A1 (en) | Storage unit and memory system | |
US9244877B2 (en) | Link layer virtualization in SATA controller | |
US20110167189A1 (en) | Storage apparatus and its data transfer method | |
US20140095769A1 (en) | Flash memory dual in-line memory module management | |
JP3807250B2 (ja) | クラスタシステム、コンピュータ及びプログラム | |
US20190243757A1 (en) | Systems and methods for input/output computing resource control | |
US11983136B2 (en) | PCIe device and operating method thereof | |
US11995019B2 (en) | PCIe device with changeable function types and operating method thereof | |
US11928070B2 (en) | PCIe device | |
EP2423826A2 (en) | Computer system, i/o device control method, and i/o drawer | |
US20110161644A1 (en) | Information processor | |
KR102568909B1 (ko) | PCIe 펑션 및 그 동작 방법 | |
CN116107697B (zh) | 一种不同操作***之间互相通信的方法及*** | |
US10545697B1 (en) | Reverse order request queueing by para-virtual device drivers | |
CN111290983A (zh) | Usb传输设备及传输方法 | |
JP2001282631A (ja) | 書き込みデータの破壊を制限する方法及びシステムとpciバス・システム | |
US20010007114A1 (en) | Control apparatus and control method | |
US20230318606A1 (en) | Interface device and method of operating the same | |
JPH10283302A (ja) | 複数のプロセッサに接続されたバスにデータを供給する方法およびシステム | |
US20230350824A1 (en) | Peripheral component interconnect express device and operating method thereof | |
KR20220132333A (ko) | PCIe 인터페이스 장치 및 그 동작 방법 | |
EP3255544A1 (en) | Interrupt controller | |
CN115396250A (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 |