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)相关推荐

  1. GICv3软件overview手册之GICv4对虚拟LPI的直接注入(2)

    1. vPE和vINTID的映射 EventID-DeviceID的合并被映射到vPE和vINTID.当EventID和DeviceID相同时使用VMAPI命令: VMAPI <DeviceID ...

  2. GICv3软件overview手册之介绍

    本文档提供了GICv3特性的软件overview,并且描述GICV3中断控制器的操作.它也只是如何在裸机环境下配置GICV3中断控制器的简介. 本文档是ARM通用中断控制器架构手册V3.0和V4.0的 ...

  3. GICv3软件overview手册之虚拟化

    ARMv8-A 可选择支持虚拟化.GICv3也支持虚拟化.GICv3对虚拟化的支持包括: (1)CPU接口寄存器的硬件虚拟化: (2)虚拟化中断: (3)维护中断: NOTE: GIC架构不提供虚拟化 ...

  4. GICv3软件overview手册之GICv3基本功能(4)

    GICv3架构支持ARM trustZone技术.每个INTID都赋予给一个group和安全设置.GICv3支持三种合并,如表中所示: 中断类型 使用例子 Secure Group 0 EL3的中断( ...

  5. GICv3软件overview手册之GICv3基本功能(1)

    本章描述与GICV3架构兼容的中断控制的基本操作.它也会描述不同的编程接口. 1. 中断类型 GICV3定义了如下中断类型: (1)SPI共享外设中断 这是一种全局外设中断,可路由到某个PE,或一组P ...

  6. GICv3软件overview手册之发送和接受SGI

    SGI中断为软件产生中断,软件可以通过写中断控制器的寄存器触发该中断. 1. 产生SGI 在CPU接口中可以通过写SGI寄存器来产生一个SGI中断. 下图为SGI寄存器的基本格式: (1)控制SGI ...

  7. GICv3软件overview手册之GICv3基本功能(5)

    GICv3中断控制器的寄存器接口分为三组: (1)Distributor接口: (2)edistributor接口: (3)CPU接口: Distributor(GICD_*) Distributor ...

  8. GICv3软件overview手册之中断处理(2)

    1. 执行优先级&抢占 PMR设置中断发给某个PE的最小优先级.GICv3架构存在执行优先级的概念.当PE应答一个中断时,它的执行优先级变成中断的.当PE写EOI寄存器时执行优先级返回之前的值 ...

  9. GICv3软件overview手册之GICv3基本功能(2)

    中断控制器对每个SPI/PPI/SGI中断源维护了一个状态机.状态机包含以下四种状态: (1)Inactive:中断源当前没有触发: (2)Pending:中断源被触发,但还未被PE应答: (3)Ac ...

最新文章

  1. python uwsgi_python Web开发你要理解的WSGI uwsgi详解
  2. matlab腐蚀膨胀代码_(三十二)形态学----膨胀和腐蚀
  3. 当超级智能崛起时……
  4. CTFshow 反序列化 web270
  5. php如何实现省市,PHP简单实现正则匹配省市区的方法
  6. boost::safe_numerics::automatic相关的测试程序
  7. mysql enum和set_mysql enum和set字段类型的使用
  8. 帝国CMS后台getshell
  9. 编译原理:用lex/flex做词法分析
  10. torch各个版本镜像_如何解决在cuda上安装torch后torch.cuda.is_available()返回False
  11. 基于docker搭建单机版ELK日志采集系统
  12. 北京邮电大学计算机考研经验分享
  13. android波纹动画,Android实现水波纹特效
  14. 【matlab 基础篇 02】基础知识一键扫盲,看完即可无障碍编程(超详细+图文并茂)
  15. 服务器光纤信号灯,光纤收发器的六个指示灯都代表什么?
  16. hp服务器通过ilo5安装系统,HPE ProLiant Gen10 通过iLO 5(v1.15) web界面多种方式更新服务器固件,包含升级系统恢复集方法...
  17. IIS的配置和网站发布
  18. QGIS二次开发 数据编辑功能等
  19. html隐藏visibility,CSS Visibility(可见性)
  20. 都是我的错,错不该拒绝HR的心意

热门文章

  1. 使用FTPClient封装FtpUtil
  2. pandas——描述性统计方法和时间类型
  3. 读书笔记01_《程序员思维修炼》
  4. 编解码学习笔记(七) 微软Windows Media系列
  5. Quora如何在快速开发中保持高品质代码
  6. 基于SSM的住院病人监测预警信息管理系统毕业设计源码021054
  7. 【C++】三大易混概念之覆盖
  8. 一笔画问题中用奇点判断是否可以一笔完成
  9. 计算机毕业设计之java+ssm企业员工考勤系统
  10. Mac 删除分区与合并分区