掌桥专利:专业的专利平台
掌桥专利
首页

中断处理方法、中断管理器、电子设备、计算机可读介质

文献发布时间:2023-06-19 10:57:17


中断处理方法、中断管理器、电子设备、计算机可读介质

技术领域

本公开涉及通信技术领域,特别涉及一种中断处理方法、一种中断处理方法、一种IPI中断管理器、一种电子设备、一种计算机可读介质。

背景技术

虚拟化支持一个物理主机运行多个逻辑主机(虚拟机),从而可以获得安全隔离和高利用率等特性。虚拟机可以有多个虚拟中央处理器(vCPU),以提供更好的运行性能。为了支持多个vCPU间的同步,操作系统需要虚拟化提供处理器间中断(IPI,Inter-ProcessorInterrupts)机制。IPI机制允许一个vCPU向多个vCPU发送中断,一般可执行地址转换缓存器(TLB,Translation Lookaside Buffer)刷新、跨CPU函数调用等操作,是操作系统重要的运行机制。

但是,IPI虚拟化的运行效率较低。

发明内容

本公开实施例提供一种中断处理方法、一种中断处理方法、一种IPI中断管理器、一种电子设备、一种计算机可读介质。

第一方面,本公开实施例提供一种中断处理方法,包括:

当IPI请求信息区写入处理器间中断IPI请求信息时,根据所述IPI请求信息生成预定中断请求,所述IPI请求信息携带至少一个目标虚拟中央处理器vCPU的标识,其中,当前IPI中断管理器的存储空间包括至少一个所述IPI请求信息区,所述IPI请求信息区对应有虚拟机,所述IPI请求信息区通过内存映射输入输出MMIO映射到对应的虚拟机;

将所述预定中断请求发送到中断控制器,以使所述中断控制器将所述预定中断请求发送到各个所述目标vCPU。

第二方面,本公开实施例提供一种中断处理方法,包括:

当vCPU发起IPI请求时,将IPI请求信息写入发起IPI请求的vCPU所属虚拟机对应的IPI中断管理器的存储空间中的IPI请求信息区,所述IPI请求信息携带至少一个目标vCPU的标识,其中,所述IPI中断管理器的存储空间包括至少一个所述IPI请求信息区,所述IPI请求信息区的物理地址通过MMIO映射到对应的虚拟机;

当目标vCPU接收到预定中断请求时,调用IPI处理操作处理所述预定中断请求。

第三方面,本公开实施例提供一种IPI中断管理器,包括:

一个或多个处理器;

存储装置,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本公开实施例第一方面提供的中断处理方法。

第四方面,本公开实施例提供一种电子设备,包括:

一个或多个处理器;

存储装置,其上存储有一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本公开实施例第一方面提供的中断处理方法、和/或第二方面提供的中断处理方法;

一个或多个I/O接口,连接在所述处理器与存储器之间,配置为实现所述处理器与存储器的信息交互。

第五方面,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本公开实施例第一方面提供的中断处理方法、和/或第二方面提供的中断处理方法。

本公开实施例中,将IPI中断管理器的存储空间中的IPI请求信息区通过内存映射输入输出MMIO映射到对应的虚拟机,当vCPU发送IPI中断时,vCPU能够直接将IPI中断请求信息写入对应的IPI请求信息区,而无需退出Guest状态;所述IPI中断管理器将IPI中断转换为能够直接注入到目标vCPU而无需使目标vCPU退出Guest状态的预定中断,基于CPU提供的硬件中断虚拟化功能,可以实现IPI中断直接注入目标vCPU,而目标vCPU无需退出Guest状态。因此,本公开实施例中在vCPU发送IPI中断请求信息和将IPI中断注入目标vCPU的过程中,虚拟机都无需退出Guest状态,降低了虚拟化退出造成的性能损耗,提升了虚拟化运行效率。

附图说明

图1为现有IPI虚拟化示意图;

图2为本公开实施例中一种中断处理方法的流程图;

图3为本公开实施例中一种IPI虚拟化示意图;

图4为本公开实施例中另一种中断处理方法中部分步骤的流程图;

图5为本公开实施例中又一种中断处理方法中部分步骤的流程图;

图6为本公开实施例中再一种中断处理方法中部分步骤的流程图;

图7为本公开实施例中再一种中断处理方法中部分步骤的流程图;

图8为本公开实施例中再一种中断处理方法中部分步骤的流程图;

图9为本公开实施例中一种中断处理方法的流程图;

图10为本公开实施例中另一种中断处理方法中部分步骤的流程图;

图11为本公开实施例中又一种中断处理方法中部分步骤的流程图;

图12为本公开实施例中再一种中断处理方法中部分步骤的流程图;

图13为本公开实施例中再一种中断处理方法中部分步骤的流程图;

图14为本公开实施例中再一种中断处理方法中部分步骤的流程图;

图15为本公开实施例中再一种中断处理方法中部分步骤的流程图

图16为本公开实施例中一种IPI中断管理器的存储空间的示意图;

图17为本公开实施例中一种IPI虚拟化示意图;

图18为本公开实施例中一种IPI中断管理器的组成框图;

图19为本公开实施例中一种电子设备的组成框图;

图20为本公开实施例中一种计算机可读介质的组成框图。

具体实施方式

为使本领域的技术人员更好地理解本公开的技术方案,下面结合附图对本公开提供的中断处理方法、中断处理方法、IPI中断管理器、电子设备、计算机可读介质进行详细描述。

在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本公开透彻和完整,并将使本领域技术人员充分理解本公开的范围。

在不冲突的情况下,本公开各实施例及实施例中的各特征可相互组合。

如本文所使用的,术语“和/或”包括一个或多个相关列举条目的任何和所有组合。

本文所使用的术语仅用于描述特定实施例,且不意欲限制本公开。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加一个或多个其它特征、整体、步骤、操作、元件、组件和/或其群组。

除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本公开的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。

图1为现有IPI虚拟化的示意图。如图1所示,当vCPU发送IPI中断时,可以直接操作中断控制器;也可以通过VP方式,通知虚拟机管理器(VMM,Virtual Machine Manager),再由VMM检查IPI中断的目标vCPU,并一一发送IPI中断。经本公开的发明人研究发现,上述发送IPI中断的方式都将使得虚拟机(VM,Virtual Machine)退出Guest模式,切换到主机Host模式。

在另一种现有IPI虚拟化技术中,当vCPU发送IPI中断时,一次性将虚拟机的多次IPI中断信息通知主机Host。经本公开的发明人研究发现,在此现有IPI虚拟化技术中,虽然减少了VM的退出Guest状态的次数,但在通知过程中,还是有至少一次Guest状态退出。

本公开的发明人认为,虚拟机退出时需要进行大量的状态保存和切换工作,再次进入虚拟化状态还需要恢复保存的状态,因此,现有IPI虚拟化技术性能损耗较大。

有鉴于此,第一方面,参照图2,本公开实施例提供一种中断处理方法,包括:

在步骤S110中,当IPI请求信息区写入处理器间中断IPI请求信息时,根据所述IPI请求信息生成预定中断请求,所述IPI请求信息携带至少一个目标虚拟中央处理器vCPU的标识,其中,当前IPI中断管理器的存储空间包括至少一个所述IPI请求信息区,所述IPI请求信息区对应有虚拟机,所述IPI请求信息区通过内存映射输入输出MMIO映射到对应的虚拟机;

在步骤S120中,将所述预定中断请求发送到中断控制器,以使所述中断控制器将所述预定中断请求发送到各个所述目标vCPU。

如图3所示,本公开实施例提供一种IPI中断管理器,所述IPI中断管理器的存储空间划分为多个IPI请求信息区,每个IPI请求信息区对应一个虚拟机,用于存储虚拟机的vCPU发送的IPI中断请求信息。IPI中断管理器通过监控虚拟机向对应的IPI请求信息区的写操作,触发IPI处理动作。

在本公开实施例中,通过内存映射IO(MMIO,Memory-mapped I/O)将IPI请求信息区映射到对应的虚拟机中。需要说明的是,MMIO是外设部件互连标准(PCI,PeripheralComponent Interconnect)规范的一部分,I/O设备被放置在内存空间而不是I/O空间,完成MMIO映射后,CPU可以使用访问内存的指令访问I/O设备。在本公开实施例中,将IPI请求信息区的物理地址通过MMIO映射到对应的虚拟机,完成IPI请求信息区与对应的虚拟机的MMIO映射,虚拟机的vCPU可以使用CPU访问内存的指令将IPI中断请求信息写入对应的IPI请求信息区。因此,在IPI中断的通知过程中,虚拟机不需要退出Guest状态。

需要说明的是,在本公开实施例中,所述IPI中断管理器可以基于硬件实现,也可以基于软件实现。本公开实施例不做特殊限定。

在步骤S110中,根据写入IPI请求信息区的IPI请求信息生成的预定中断请求满足能够直接注入到目标vCPU而无需使目标vCPU退出Guest状态。作为一种可选的实施方式,所述预定中断为外部中断,例如,消息信号中断(MSI,Message Signaled Interrupts)。

在本公开实施例中,基于CPU提供的硬件中断虚拟化功能,可以实现IPI中断直接注入目标vCPU,而目标vCPU无需退出Guest状态。例如,在X86架构上,基于VT-D(Virtualization Technology for Direct I/O)机制实现外部中断直接由虚拟机处理;在ARM架构上,基于vGSI机制实现外部中断直接由虚拟机处理。因此,在本公开实施例中,通过将IPI中断请求转换为能够直接注入到目标vCPU而无需使目标vCPU退出Guest状态的预定中断请求,实现将IPI中断注入目标vCPU时虚拟机无需退出Guest状态。

本公开实施例提供的中断处理方法中,提供了一种IPI中断管理器,IPI中断管理器的存储空间中的IPI请求信息区通过内存映射输入输出MMIO映射到对应的虚拟机,当vCPU发送IPI中断时,vCPU能够直接将IPI中断请求信息写入对应的IPI请求信息区,而无需退出Guest状态;所述IPI中断管理器将IPI中断转换为能够直接注入到目标vCPU而无需使目标vCPU退出Guest状态的预定中断,基于CPU提供的硬件中断虚拟化功能,可以实现IPI中断直接注入目标vCPU,而目标vCPU无需退出Guest状态。因此,本公开实施例中在vCPU发送IPI中断请求信息和将IPI中断注入目标vCPU的过程中,虚拟机都无需退出Guest状态,降低了虚拟化退出造成的性能损耗,提升了虚拟化运行效率。

作为一种可选的实施方式,在X86架构上,基于VT-D机制将MSI中断注入目标vCPU,从而使虚拟机无需退出Guest状态就可以响应中断。

在X86架构上,中断控制器为高级可编程中断控制器(APIC,AdvancedProgrammable Interrupt Controller),包括IO-APIC和Local-APIC两部分。其中,IO-APIC为系统唯一,用于管理外部MSI中断到Local-APIC的转发;每个CPU有一个Local-APIC,用于管理从IO-APIC路由的MSI中断到对应CPU的发送,同时也管理IPI中断的发送。在中断虚拟化场景中,IO-APIC支持重映射方式(reMapping),在IO-APIC中管理中断重映射表,所述中断重映射表中包括多个物理中央处理器pCPU的中断重映射表项。如果识别到设备发送的MSI中断为重映射方式、且为发布类型中断(Posted-Interrupt)时,根据该MSI中断中携带的信息查找中断重映射表中对应的中断重映射表项,确定该MSI中断对应的通知向量(Notify Vector),然后将中断发送到Local-APIC中。如果对应的目标vCPU已被调度,则Local-APIC会直接发送中断到目标vCPU上,如果对应的目标vCPU未调度,则会通知VMM处理。

作为一种可选的实施方式,步骤S110中将IPI中断转换为MSI中断,且所述MSI中断的类型为重映射(Remapping)方式的发布类型中断(Posted Interrupt),从而实现将IPI中断注入目标vCPU时虚拟机无需退出Guest状态。

相应地,参照图4,在一些实施例中,步骤S110包括:

在步骤S111中,根据所述IPI请求信息生成作为所述预定中断请求的消息信号中断MSI请求,所述MSI请求的类型为重映射方式的发布类型中断Posted-Interrupt。

需要说明的是,在本公开实施例中,在IPI中断管理器的配置空间中有MSI配置寄存器,通过设置该MSI设置寄存器的内容,可以将IPI中断管理器中生成的MSI的类型配置为重映射方式的发布类型中断。

作为一种可选的实施方式,在本公开实施例中,由VMM为所述IPI中断管理器配置Posted-Interrupt属性。即,通过向IPI中断管理器的MSI配置寄存器中写入配置内容,为IPI中断管理器配置Posted-Interrupt属性,从而使得IPI中断管理器中生成的MSI的类型为重映射方式的发布类型中断。

在本公开实施例中,由VMM为每个pCPU分配一个中断重映射表项(IRTE,InterruptRemap Table Entry),即IO-APIC管理的中断重映射表中的pCPU的中断重映射表项。在本公开实施例中,IPI中断管理器的存储空间还包括pCPU信息区,所述pCPU信息区中存储pCPUID和pCPU对应的IRTE索引。在通过步骤S111生成MSI请求信息时,根据目标vCPU对应的IRTE索引和待发送IPI vector,生成所述MSI请求,并将MSI请求发送到IO-APIC,以使得IO-APIC通过查找中断重映射表,将中断发送到对应的Local-APIC,并进一步注入已被调度的目标vCPU。

在本公开实施例中,IPI中断管理器的存储空间包括多个vCPU调度信息区,所述多个vCPU调度信息区与多个vCPU一一对应,所述vCPU调度信息区存储调度对应vCPU的pCPU的标识。在IPI中断请求信息区写入IPI中断请求信息后,根据目标vCPU的标识,从目标vCPU对应的vCPU调度信息区读取调度所述目标vCPU的pCPU的标识。

相应地,参照图5,在一些实施例中,所述IPI请求信息携带中断号vector,步骤S111包括:

在步骤S111a中,读取所述目标vCPU对应的vCPU调度信息区中存储的目标pCPU的标识,所述目标pCPU为调度所述目标vCPU的pCPU,其中,当前IPI中断管理器的存储空间包括多个vCPU调度信息区,所述多个vCPU调度信息区与多个vCPU一一对应,所述vCPU调度信息区存储调度对应vCPU的pCPU的标识;

在步骤S111b中,根据所述目标pCPU的标识从pCPU信息区读取所述目标pCPU对应的中断重映射表项索引,其中,当前IPI中断管理器的存储空间中的pCPU信息区存储多个pCPU标识与中断重映射表项索引的对应关系;

在步骤S111c中,根据各个目标pCPU对应的中断重映射表项索引和所述IPI请求信息携带的vector生成所述MSI请求。

在本公开实施例中,当目标vCPU被调度时,IPI中断管理器生成预定中断请求,并通过中断控制器直接将预定中断发送到目标vCPU;当目标vCPU未被调度时,IPI中断管理器则通知VMM处理IPI请求。

相应地,参照图6,在一些实施例中,当IPI请求信息区写入处理器间中断IPI请求信息时,在步骤S110之前,所述中断处理方法还包括:

在步骤S130中,根据所述目标vCPU的标识确定所述目标vCPU的调度状态;

当所述目标vCPU被调度时,执行步骤S110。

在本公开实施例的IPI中断管理器的存储空间中,还包括用于存储待发送IPI请求vCPU集的待发送IPI请求vCPU集数据区、和用于存储待发送IPI请求vCPU所属VM集的待发送IPI请求VM集数据区。待发送IPI请求vCPU集是指发起IPI请求的vCPU的集合,待发送IPI请求vCPU所属VM集是指发起IPI请求的vCPU所属VM的集合。

当需要通知VMM处理IPI请求时,IPI中断管理器将有IPI请求待发送的vCPU的标识信息写入待发送IPI请求vCPU集数据区,将有IPI请求待发送的vCPU所属虚拟机的标识信息写入待发送IPI请求VM集数据区,并发送VMM通知中断,所述VMM通知中断能够唤醒VMM处理IPI请求。

相应地,参照图6,当所述目标vCPU未被调度时,所述中断处理方法包括:

在步骤S141中,将发起IPI请求的vCPU的标识信息写入当前IPI中断管理器的存储空间中的待发送IPI请求vCPU集数据区;

在步骤S142中,将发起IPI请求的vCPU所属虚拟机的标识信息写入当前IPI中断管理器的存储空间中的待发送IPI请求VM集数据区;

在步骤S143中,根据预设虚拟机管理器VMM通知中断的vector发送VMM通知中断。

需要说明的是,发起IPI请求的vCPU即将IPI请求信息写入IPI请求信息区的vCPU。

需要说明的是,在本公开实施例中,通过将vCPU和pCPU绑定等方式,使得vCPU大部分情况下能被调度,从而确保大部分情况下实现在IPI请求的通知过程中虚拟机无需退出Guest状态。

在本公开实施例中,所述待发送IPI请求vCPU集数据区的比特位与vCPU一一对应,所述待发送IPI请求vCPU集数据区的比特位置位表示对应的vCPU有待发送的IPI请求;所述待发送IPI请求VM集数据区的比特位与虚拟机一一对应,所述待发送IPI请求VM集数据区的比特位置位表示对应的虚拟机中的vCPU有待发送的IPI请求。

相应地,参照图7,在一些实施例中,步骤S141包括:

在步骤S141a中,以发起IPI请求的vCPU的标识为偏移,设置所述待发送IPI请求vCPU集数据区的对应比特位;

步骤S142包括:

在步骤S142a中,根据发起IPI请求的vCPU所属虚拟机的标识设置所述待发送IPI请求VM集数据区的对应比特位。

在本公开实施例中,VMM在初始化时会获取IPI中断管理器的存储空间的物理首地址,并在创建虚拟机时向IPI中断管理器申请IPI请求信息区。IPI中断管理器为虚拟机分配IPI请求信息区,并返回分配的IPI请求信息区的索引号,通过该索引号和VMM在初始化时获取的IPI中断管理器的存储空间的物理首地址,即可确定虚拟机对应的IPI请求信息区的地址。

相应地,参照图8,在一些实施例中,所述中断处理方法还包括:

在步骤S151中,响应于申请IPI请求信息区的消息,为目标虚拟机分配IPI请求信息区;

在步骤S152中,返回分配给所述目标虚拟机的IPI请求信息区的索引号。

第二方面,参照图9,本公开实施例提供一种中断处理方法,包括:

在步骤S210中,当vCPU发起IPI请求时,将IPI请求信息写入所述vCPU所属虚拟机对应的IPI中断管理器的存储空间中的IPI请求信息区,所述IPI请求信息携带至少一个目标vCPU的标识,其中,所述IPI中断管理器的存储空间包括至少一个所述IPI请求信息区,所述IPI请求信息区的物理地址通过MMIO映射到对应的虚拟机;

在步骤S220中,当目标vCPU接收到预定中断请求时,调用IPI处理操作处理所述预定中断请求。

需要说明的是,步骤S210是主机Host在任意一个虚拟机发起IPI请求时执行的,步骤S220是主机Host在任意一个虚拟机接收到预定中断请求时执行的。

本公开实施例提供一种IPI中断管理器,所述IPI中断管理器的存储空间划分为多个IPI请求信息区,每个IPI请求信息区对应一个虚拟机,用于存储虚拟机的vCPU发送的IPI中断请求信息。IPI中断管理器通过监控虚拟机向对应的IPI请求信息区的写操作,触发IPI处理动作。

在本公开实施例中,通过内存映射IO(MMIO,Memory-mapped I/O)将IPI请求信息区映射到对应的虚拟机中。完成MMIO映射后,CPU可以使用访问内存的指令访问I/O设备。在本公开实施例中,将IPI请求信息区的物理地址通过MMIO映射到对应的虚拟机,完成IPI请求信息区与对应的虚拟机的MMIO映射,虚拟机的vCPU可以使用CPU访问内存的指令将IPI中断请求信息写入对应的IPI请求信息区。因此,在IPI中断的通知过程中,虚拟机不需要退出Guest状态。

需要说明的是,步骤S220中所述的预定中断请求满足能够直接注入到目标vCPU而无需使目标vCPU退出Guest状态。作为一种可选的实施方式,所述预定中断请求MSI请求,所述MSI请求的类型为重映射方式的发布类型中断Posted-Interrupt。

在本公开实施例中,将vCPU接收到的预定中断请求当做IPI中断进行处理,即在步骤S220中,当接收到预定中断请求时,调用IPI处理操作处理所述预定中断请求。

需要说明的是,目标vCPU接收到的预定中断请求,是基于CPU提供的硬件中断虚拟化功能,直接注入到目标vCPU的,目标vCPU无需退出Guest状态。因此,在本公开实施例中,当前vCPU在接收IPI中断时,也无需退出Guest状态。

本公开实施例提供的中断处理方法中,提供了一种IPI中断管理器,IPI中断管理器的存储空间中的IPI请求信息区通过内存映射输入输出MMIO映射到对应的虚拟机,当vCPU发送IPI中断时,vCPU能够直接将IPI中断请求信息写入对应的IPI请求信息区,而无需退出Guest状态;所述IPI中断管理器将IPI中断转换为能够直接注入到目标vCPU而无需使目标vCPU退出Guest状态的预定中断,基于CPU提供的硬件中断虚拟化功能,可以实现IPI中断直接注入目标vCPU,目标vCPU在接收IPI中断时也无需退出Guest状态。因此,本公开实施例中在vCPU发送IPI中断请求信息和将IPI中断注入目标vCPU的过程中,虚拟机都无需退出Guest状态,降低了虚拟化退出造成的性能损耗,提升了虚拟化运行效率。

在本公开实施例中,对应于虚拟机的多个vCPU,将IPI中断管理器的存储空间中的IPI请求信息区进一步划分,得到与vCPU一一对应的多个IPI请求信息内存块。当vCPU发送IPI请求时,将IPI请求信息写入对应的IPI请求信息内存块中。

相应地,参照图10,在一些实施例中,步骤S210包括:

在步骤S211中,将IPI请求信息写入发起IPI请求的vCPU对应的IPI请求信息内存块,其中,每一个虚拟机对应的所述IPI请求信息区包括多个所述IPI请求信息内存块,所述IPI请求信息内存块与虚拟机中的vCPU一一对应。

在本公开实施例中,由VMM创建虚拟机。在创建虚拟机时,VMM会向IPI中断管理器申请待创建虚拟机对应的IPI请求信息区,并在创建虚拟机后,完成虚拟机与对应的IPI请求信息区的MMIO映射。其中,IPI中断管理器为虚拟机分配IPI请求信息区,并返回分配的IPI请求信息区的索引号,通过该索引号和VMM在初始化时获取的IPI中断管理器的存储空间的物理首地址,即可确定虚拟机对应的IPI请求信息区的物理地址。作为一种可选的实施方式,将该索引号作为待创建的虚拟机的标识。

相应地,参照图11,在一些实施例中,在步骤S210之前,所述中断处理方法还包括:

在步骤S230中,向所述IPI中断管理器发送申请IPI请求信息区的消息;

在步骤S240中,创建目标虚拟机,所述目标虚拟机的标识为所述IPI中断管理器返回的分配给所述目标虚拟机的IPI请求信息区的索引号;

在步骤S250中,通过MMIO将分配给所述目标虚拟机的IPI请求信息区映射到所述目标虚拟机。

作为一种可选的实施方式,本公开实施例中的IPI中断管理器以PCI设备存在。在本公开实施例中,对应于以IPI设备存在的IPI中断管理器,创建虚拟PCI设备,该虚拟PCI设备的基地址寄存器中存放分配给虚拟机的IPI请求信息区的物理首地址作为基地址。虚拟机通过与该虚拟PCI设备进行通信将IPI请求信息写入IPI中断管理器中的IPI请求信息区。

相应地,参照图12,在一些实施例中,步骤S250包括:

在步骤S251中,根据接收到的分配给所述目标虚拟机的IPI请求信息区的索引号和所述IPI中断管理器的存储空间物理首地址,确定分配给所述目标虚拟机的IPI请求信息区的物理地址;

在步骤S252中,创建虚拟PCI设备,所述虚拟PCI设备的基地址寄存器BAR存放分配给所述目标虚拟机的IPI请求信息区的物理首地址;

在步骤S253中,创建虚拟PCI设备驱动。

在本公开实施例中,IPI中断管理器将IPI中断转换为MSI中断,且所述MSI中断的类型为重映射方式的发布类型中断,从而实现将IPI中断注入目标vCPU时虚拟机无需退出Guest状态。需要说明的是,在本公开实施例中,在IPI中断管理器的配置空间中有MSI配置寄存器,通过设置该MSI配置寄存器的内容,可以将IPI中断管理器中生成的MSI的类型配置为重映射方式的发布类型中断。

作为一种可选的实施方式,在本公开实施例中,由VMM为所述IPI中断管理器配置Posted-Interrupt属性。即,通过向IPI中断管理器的MSI配置寄存器中写入配置内容,为IPI中断管理器配置Posted-Interrupt属性,从而使得IPI中断管理器中生成的MSI的类型为重映射方式的发布类型中断。

在本公开实施例中,由VMM为每个pCPU分配一个中断重映射表项(IRTE,InterruptRemap Table Entry),即IO-APIC管理的中断重映射表中的pCPU的中断重映射表项。在本公开实施例中,IPI中断管理器的存储空间还包括pCPU信息区,所述pCPU信息区中存储pCPUID和pCPU对应的IRTE索引。

相应地,参照图13,在一些实施例中,在步骤S210之前,所述中断处理方法还包括:

在步骤S260中,为各个物理中央处理器pCPU分配中断重映射表项IRTE;

在步骤S270中,为所述IPI中断管理器配置Posted Interrupt属性;

在步骤S280中,将pCPU的标识和所述pCPU对应的IRTE索引写入所述IPI中断管理器的存储空间中的pCPU信息区。

在本公开实施例中,IPI中断管理器的存储空间包括多个vCPU调度信息区,所述多个vCPU调度信息区与多个vCPU一一对应,所述vCPU调度信息区存储调度对应vCPU的pCPU的标识。在本公开实施例中,由VMM将vCPU的调度信息写入对应的vCPU调度信息区。

相应地,参照图14,在一些实施例中,所述中断处理方法还包括:

在步骤S290中,当调度vCPU时,将调度所述vCPU的pCPU的标识写入被调度的vCPU对应的vCPU调度信息区,其中,所述IPI中断管理器的存储空间包括多个vCPU调度信息区,所述多个vCPU调度信息区与多个vCPU一一对应。

需要说明的是,在本公开实施例中,vCPU调度信息区被映射入主机Host内存,从而可以被VMM直接访问。

在本公开实施例中,当目标vCPU被调度时,IPI中断管理器生成预定中断请求,并通过中断控制器直接将预定中断发送到目标vCPU;当目标vCPU未被调度时,IPI中断管理器则通知VMM处理IPI请求。

在本公开实施例的IPI中断管理器的存储空间中,还包括用于存储待发送IPI请求vCPU集的待发送IPI请求vCPU集数据区、和用于存储待发送IPI请求vCPU所属VM集的待发送IPI请求VM集数据区。待发送IPI请求vCPU集是指发起IPI请求的vCPU的集合,待发送IPI请求vCPU所属VM集是指发起IPI请求的vCPU所属虚拟机的集合。

当需要通知VMM处理IPI请求时,IPI中断管理器将有IPI请求待发送的vCPU的标识信息写入待发送IPI请求vCPU集数据区,将有IPI请求待发送的vCPU所属虚拟机的标识信息写入待发送IPI请求VM集数据区,并发送VMM通知中断,所述VMM通知中断能够唤醒VMM处理IPI请求。VMM通过读取待发送IPI请求VM集数据区确定有IPI请求待发送的vCPU所属虚拟机,并通过读取待发送IPI请求vCPU集数据区确定有IPI请求待发送的vCPU。然后从有IPI请求待发送的vCPU对应的IPI请求信息区读取相应的IPI请求信息,并完成IPI中断发送。

相应地,参照图15,在一些实施例中,所述中断处理方法还包括:

在步骤S310中,响应于所述IPI中断管理器发送的VMM通知中断,读取所述IPI中断管理器的存储空间中的待发送IPI请求VM集数据区,确定待发送IPI请求的vCPU所属虚拟机的标识;

在步骤S320中,读取所述IPI中断管理器的存储空间中的待发送IPI请求vCPU集数据区,确定待发送IPI请求的vCPU的标识;

在步骤S330中,根据待发送IPI请求的vCPU所属虚拟机的标识和待发送IPI请求的vCPU的标识,读取待发送IPI请求的vCPU对应的IPI请求信息内存块,获取IPI请求信息;

在步骤S340中,根据获取的IPI请求信息发送IPI请求。

在本公开实施例中,所述待发送IPI请求vCPU集数据区的比特位与vCPU一一对应,所述待发送IPI请求vCPU集数据区的比特位置位表示对应的vCPU有待发送的IPI请求;所述待发送IPI请求VM集数据区的比特位与VM一一对应,所述待发送IPI请求VM集数据区的比特位置位表示对应的VM中的vCPU有待发送的IPI请求。相应地,VMM通过读取待发送IPI请求VM集数据区的比特位确定有IPI请求待发送的vCPU所属虚拟机,通过读取待发送IPI请求vCPU集数据区的比特位,确定有IPI请求待发送的vCPU。

相应地,在本公开实施例中,VMM完成IPI中断发送后,还包括:

将所述待发送IPI请求VM集数据区中的比特位还原为初始状态;

将所述待发送IPI请求vCPU集数据区中的比特位还原为初始状态。

为了使本领域技术人员能够更清楚地理解本公开实施例提供的技术方案,下面通过具体的实施例,对本公开实施例提供的技术方案进行详细说明:

实施例一

图16为本公开实施例中所述IPI中断管理器的存储空间的示意图。

如图16所示,在IPI中断管理器的存储空间中,不同虚拟机分别具有独立的IPI中断信息存储空间,每个IPI中断信息存储空间包括:

IPI中断请求信息区,为4K页面对齐。每个IPI中断请求信息区划分为多个IPI请求信息内存块,多个IPI请求信息内存块与VM中的各个vCPU一一对应。在本实施例一中,每个IPI请求信息内存块为32bit,其中包括16bit的IPI目标vCPU信息和16bit的IPI中断vector号。IPI中断请求信息区通过MMIO映射到对应的VM中,可被vCPU直接写入;

vCPU状态信息区,包括vCPU调度信息区和待发送IPI请求vCPU集数据区,vCPU调度信息区存储vCPU和pCPU的对应关系;待发送IPI请求vCPU集数据区存储等待发送IPI的vCPUID。vCPU状态信息区被映射入Host内存,可以被VMM直接访问;

pCPU信息数据区,包括pCPU ID和分配的对应Posted Interrupt的IRTE的索引idx;

VMM通知中断vector数据区,用于存储VMM通知中断的中断号;

待发送IPI请求VM集数据区,以bit方式表示有IPI信息待发送的vCPU所属VM。

在本实施例一中,pCPU信息数据区、VMM通知中断vector数据区、待发送IPI请求VM集数据区只能被主机VMM访问。

实施例二

本实施例二提供主机VMM的初始化流程。

VMM初始化时,读取PCI控制信息,获取IPI中断管理器的存储空间物理首地址,并完成MMIO映射;

VMM分配设置VMM通知中断,IPI中断管理器可以通过发送VMM通知中断唤醒VMM;

VMM设置Posted Interrupt中断,其设置方法为:

遍历所有的pCPU;

为每个pCPU分配一个IRTE,并设置为Posted Interrupt的属性,设置其投递目标pCPU;

将该pCPU ID和对应的IRTE索引写入IPI中断管理器的pCPU信息区中。

实施例三

本实施例三提供VM的创建流程。

VMM接收到虚拟机创建命令后,从IPI中断管理器申请一个新的虚拟机IPI请求信息区;

VMM创建VM,并创建IPI虚拟PCI设备,该虚拟PCI设备的BAR地址空间设置为新分配的IPI请求信息区地址。

虚拟机在启动时,创建IPI驱动,从虚拟PCI设备中获取到该虚拟机对应的IPI请求信息区地址,并完成MMIO映射,该映射实际映射到对应的IPI请求信息区。后续,IPI驱动可以直接通过虚拟地址空间GVA进行写入,以完成IPI中断请求。由于每个VM只能映射各自对应的IPI请求信息区,因此不同的VM的IPI请求不会影响到其它的VM,支持了安全隔离特性。

实施例四

参照图17,当VMM调度VM的vCPU运行时,进行如下操作:

根据VM ID和vCPU ID,定位到对应的vCPU调度信息区;

将vCPU将调度运行的pCPU ID写入对应的vCPU调度信息区;

当vCPU调出时,在对应的vCPU调度信息区写入值-1。

实施例五

参照图17,本实施例五提供IPI中断发送和处理流程。

vCPU调用IPI驱动发送IPI中断,IPI驱动获取vCPU ID,并确定对应vCPU的IPI请求信息区,将IPI的目的vCPU和IPI vector写入该IPI请求信息区;

IPI请求信息区的写入操作触发IPI中断管理器,IPI中断管理器分析写入IPI请求信息区的IPI请求信息,确定IPI中断的目标vCPU集合,并检查vCPU状态信息区,确定目标vCPU的调度状态;

如果所有目标vCPU都处于调度状态,将按照目标vCPU对应的pCPU信息,获取posted int.的IRTE idx与待发送的IPI vector,组装成中断请求信息,并向中断控制器发送预定中断请求,该中断请求已经设置为Remapping的Posted Interrupt,会直接发送到对应的目标pCPU中,完成中断发送;

如果存在未调度的vCPU,IPI中断管理器以对应vCPU ID为偏移设置待发送IPI请求vCPU集数据区的对应bit位,并使用VM ID设置待发送IPI请求VM集数据区的对应bit位,并根据设置的VMM通知中断vector,发送VMM通知中断;VMM会读取待发送IPI请求VM集数据区,获取对应的VM ID,再读取对应VM的待发送IPI请求vCPU集数据区,对于其中的bit位,读取vCPU对应的IPI请求信息区,获取IPI请求信息,再一一完成IPI中断发送。

第三方面,参照图18,本公开实施例提供一种IPI中断管理器,其包括:

一个或多个处理器101;

存储器102,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本公开实施例第一方面提供的中断处理方法;

一个或多个I/O接口103,连接在处理器与存储器之间,配置为实现处理器与存储器的信息交互。

其中,处理器101为具有数据处理能力的器件,其包括但不限于中央处理器(CPU)等;存储器102为具有数据存储能力的器件,其包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH);I/O接口(读写接口)103连接在处理器101与存储器102间,能实现处理器101与存储器102的信息交互,其包括但不限于数据总线(Bus)等。

在一些实施例中,处理器101、存储器102和I/O接口103通过总线104相互连接,进而与计算设备的其它组件连接。

上文已经对本公开实施例第一方面提供的中断处理方法进行了详细描述,此处不再赘述。

第四方面,参照图19,本公开实施例提供一种电子设备,其包括:

一个或多个处理器201;

存储器202,其上存储有一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现本公开实施例第一方面提供的中断处理方法、和/或第二方面提供的中断处理方法;

一个或多个I/O接口203,连接在处理器与存储器之间,配置为实现处理器与存储器的信息交互。

其中,处理器201为具有数据处理能力的器件,其包括但不限于中央处理器(CPU)等;存储器202为具有数据存储能力的器件,其包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH);I/O接口(读写接口)203连接在处理器201与存储器202间,能实现处理器201与存储器202的信息交互,其包括但不限于数据总线(Bus)等。

在一些实施例中,处理器201、存储器202和I/O接口203通过总线204相互连接,进而与计算设备的其它组件连接。

上文已经对本公开实施例第一方面提供的中断处理方法、第二方面提供的中断处理方法进行了详细的描述,此处不再赘述。

第五方面,参照图20,本公开实施例提供一种计算机可读介质,其上存储有计算机程序,程序被处理器执行时实现本公开实施例第一方面提供的中断处理方法、和/或第二方面提供的中断处理方法。

上文已经对本公开实施例第一方面提供的中断处理方法、第二方面提供的中断处理方法进行了详细的描述,此处不再赘述。

本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其它的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其它传输机制之类的调制数据信号中的其它数据,并且可包括任何信息递送介质。

本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其它实施例相结合描述的特征、特性和/或元件组合使用。本领域技术人员将理解,在不脱离由所附的权利要求阐明的本公开的范围的情况下,可进行各种形式和细节上的改变。

相关技术
  • 中断处理方法、中断管理器、电子设备、计算机可读介质
  • 链路中断的处理方法、中继节点及计算机可读存储介质
技术分类

06120112740979