GICv3软件overview手册之GICv4对虚拟LPI的直接注入(1)
GICv4增加对虚拟LPI(vLPI)中断的直接注入。该特性允许软件对ITS如何将物理event(EventID和DeviceID的合并)映射到虚拟中断。若中断的目标vPE正在运行,虚拟中断可以直接发送,而不需要先进入hypervisor。这减少了虚拟中断相关的频繁切换。
1. Redistributor, vLPI状态和配置
(1)GICR_VPROPBASER
该寄存器设置虚拟LPI配置表的地址。由于物理LPI配置表,虚拟LPI配置表记录vLPI的配置。vLPI的配置在相同的VM中对所有的vPE来说是全局的。ARM期望一个VM中所有vPE使用相同的虚拟配置表。
(2)GICR_VPENDBASER
该寄存器设置虚拟LPI pending表(VPT)的地址。由于物理LPI pending表,VPT记录了vLPI的pending表。每个vPE存在自己私有的VPT。
1.1 被调度的vPE
单个物理PE可能被多个vPE掌控,可在多个vPE上进行hypervisor的上下文切换。当前正在运行的vPE表示正在scheduled。当GICR_VPENDBASER被设置指向它的VPT时,vPE被认为是scheduled。
被调度的vPE的虚拟中断可以被直接注入。若目标vPE没有被调度,虚拟中断在VPT中被记录为pending状态。
当在多个vPE间进行上下文切换时,hypervisor必须更新Redistributor寄存器。这意味着该Redistributor必须:
(1)清除GICR_VPENDBASER.Valid
清除这个Valid位会通知Redistributor上下文切换在发生。Redistributor将从虚拟CPU接口中推出所有pending虚拟中断,保证内存中的VPT是正确的。
(2)轮询GICR_VPENDBASER.Dirty知道为0
这个Dirty位报告Redistributor完成更新VPT。新vPE不能被调度,直到该位读为0。
(3)更新GICR_VPROPBASER
若在相同VM的不同vPE中切换时,这一步没有必要。
(4)更新GICR_VPENDBASER,在过程中设置Valid=1
设置Valid位为1会通知Redistributor新的vPE现在有效,该vPE的有效中断可以直接发送给虚拟CPU接口。
VPT的头1KB是由实现定义的。ARM期望实现能够使用该空间来记录一些信息,这些信息时在上下文切换时解析VPT更快。当一个vPE被调度,Redistributor必须被通知是否这个区域包含有效数据。软件指明是否空间有效或不适用GICR_VPENDBASER.IDAI:
(1)GICR_VPENDBASER.IDAI=1(invalid)
这个保留的域无效时,Redistributor必须解析整个VPT。下列情况,IDAI位必须被设置:
- vPE被移到连接到不同GIC实现的Redistributor;
- 因为VPT已分配,vPE第一次被设置为scheduled,在分配时整个表不是被0填充;
(2)GICR_VPENDBASER.IDAI=0(valid)
这个保留域有效时,Redistributor可以使用存储的值。ARM期望这是最常见的情况。下列情况时IDAI位被清除:
- vPE在上次已调度的相同的Redistributor上进行调度;
- vPE调度在不同的Redistributor上,但连接到相同的GIC上;
- 从VPT被分配开始,vPE在第一次被调度,在分配整个VPT被0填充(表示没有pending中断)
NOTE: 限制为在分配时,包含0的VPT在第一次被调度时不在全部包含0。若vPE的ITS映射存在,虚拟中断可能在创建和第一次residency时被设置为pending。
2. GICv4的ITS操作
GICv4对ITS增加一些新的命令,和增加表的类型。这允许软件:
(1)对某个vPE将EventID-DeviceID映射到vINTID上。
- 一个doorbell中断可以选择性的被指定。若vPE没有被调度,中断产生时,pINTID被产生。
(2)将vPE映射到物理Redistributor。
当外设写寄存器GITS_TRANSLATATER:
(1)ITS使用DeviceID来在Device Table中选择合适的条目。该条目表明使用的中断转换表。
(2)ITS使用EventID从中断转换表中选择合适的条目。这会返回:
- pINTID和Collection ID
- vINTID和vPE ID,以及选择性的pINTID作为door-bell中断
(3)ITS使用vPE ID在vPE表中选择要求的条目,vPE表返回目标Redistributor和vPE的VPT的地址。
(4)ITS将vINTID, door-bell中断和VPT地址发送给目标Redistributor。
(5)Redistributor获取ITS的VPT地址(GICR_VPENDBASER)
- 若VPT地址和当前GICR_VPENDBASER匹配时,vPE被调度,vINTID被发送给虚拟CPU接口;
- 若VPT地址和当前GICR_VPENDBASER不匹配时,vPE没有被调度。vINTID被设置为pending。如果提供了door-bell中断,pINTID发送给物理CPU接口。
GICv3软件overview手册之GICv4对虚拟LPI的直接注入(1)相关推荐
- GICv3软件overview手册之GICv4对虚拟LPI的直接注入(2)
1. vPE和vINTID的映射 EventID-DeviceID的合并被映射到vPE和vINTID.当EventID和DeviceID相同时使用VMAPI命令: VMAPI <DeviceID ...
- GICv3软件overview手册之介绍
本文档提供了GICv3特性的软件overview,并且描述GICV3中断控制器的操作.它也只是如何在裸机环境下配置GICV3中断控制器的简介. 本文档是ARM通用中断控制器架构手册V3.0和V4.0的 ...
- GICv3软件overview手册之虚拟化
ARMv8-A 可选择支持虚拟化.GICv3也支持虚拟化.GICv3对虚拟化的支持包括: (1)CPU接口寄存器的硬件虚拟化: (2)虚拟化中断: (3)维护中断: NOTE: GIC架构不提供虚拟化 ...
- GICv3软件overview手册之GICv3基本功能(4)
GICv3架构支持ARM trustZone技术.每个INTID都赋予给一个group和安全设置.GICv3支持三种合并,如表中所示: 中断类型 使用例子 Secure Group 0 EL3的中断( ...
- GICv3软件overview手册之GICv3基本功能(1)
本章描述与GICV3架构兼容的中断控制的基本操作.它也会描述不同的编程接口. 1. 中断类型 GICV3定义了如下中断类型: (1)SPI共享外设中断 这是一种全局外设中断,可路由到某个PE,或一组P ...
- GICv3软件overview手册之发送和接受SGI
SGI中断为软件产生中断,软件可以通过写中断控制器的寄存器触发该中断. 1. 产生SGI 在CPU接口中可以通过写SGI寄存器来产生一个SGI中断. 下图为SGI寄存器的基本格式: (1)控制SGI ...
- GICv3软件overview手册之GICv3基本功能(5)
GICv3中断控制器的寄存器接口分为三组: (1)Distributor接口: (2)edistributor接口: (3)CPU接口: Distributor(GICD_*) Distributor ...
- GICv3软件overview手册之中断处理(2)
1. 执行优先级&抢占 PMR设置中断发给某个PE的最小优先级.GICv3架构存在执行优先级的概念.当PE应答一个中断时,它的执行优先级变成中断的.当PE写EOI寄存器时执行优先级返回之前的值 ...
- GICv3软件overview手册之GICv3基本功能(2)
中断控制器对每个SPI/PPI/SGI中断源维护了一个状态机.状态机包含以下四种状态: (1)Inactive:中断源当前没有触发: (2)Pending:中断源被触发,但还未被PE应答: (3)Ac ...
最新文章
- python uwsgi_python Web开发你要理解的WSGI uwsgi详解
- matlab腐蚀膨胀代码_(三十二)形态学----膨胀和腐蚀
- 当超级智能崛起时……
- CTFshow 反序列化 web270
- php如何实现省市,PHP简单实现正则匹配省市区的方法
- boost::safe_numerics::automatic相关的测试程序
- mysql enum和set_mysql enum和set字段类型的使用
- 帝国CMS后台getshell
- 编译原理:用lex/flex做词法分析
- torch各个版本镜像_如何解决在cuda上安装torch后torch.cuda.is_available()返回False
- 基于docker搭建单机版ELK日志采集系统
- 北京邮电大学计算机考研经验分享
- android波纹动画,Android实现水波纹特效
- 【matlab 基础篇 02】基础知识一键扫盲,看完即可无障碍编程(超详细+图文并茂)
- 服务器光纤信号灯,光纤收发器的六个指示灯都代表什么?
- hp服务器通过ilo5安装系统,HPE ProLiant Gen10 通过iLO 5(v1.15) web界面多种方式更新服务器固件,包含升级系统恢复集方法...
- IIS的配置和网站发布
- QGIS二次开发 数据编辑功能等
- html隐藏visibility,CSS Visibility(可见性)
- 都是我的错,错不该拒绝HR的心意