当hgatp.MODE=BARE时,HS level sstatus.MXR在两阶段寻呼中起什么作用?

问题描述 投票:0回答:1

注意:以下报价所用的文档版本为 20211203,日期为 2023 年 10 月 2 日。

RISCV特权规范第9.5节中有以下声明:

The vsstatus field MXR, which makes execute-only pages readable, only overrides VS-stage page protection. Setting MXR at VS-level does not override guest-physical page protections. Setting MXR at HS-level, however, overrides both VS-stage and G-stage execute-only permissions.

如果以下情况为真:

  • 机器正在VS模式下运行
  • HS 级别 MXR = 1
  • VS 水平 MXR = 0
  • VSATP.模式!=裸
  • HGATP.模式=裸

当 HGATP 模式为裸时,HS 级别 MXR 是否仍然覆盖 VS 级别执行页面为可读?

谢谢你。

如果严格遵循规范,则 HS 级别 MXR 确实会使“仅执行”页面独立于 hgatp.mode 可读。看起来很奇怪的是 hgatp.MODE=BARE(这似乎是当 V=1 时禁用两阶段分页的唯一方法)将允许 VS 阶段执行权限被覆盖。

paging riscv hypervisor
1个回答
0
投票

HS 级别 MXR 是否仍会覆盖 VS 级别执行页面 HGATP 模式为裸时可读吗?

不,不会。由于平移阶段已禁用,因此 G 阶段平移将忽略

sstatus.MXR
。规格说:

当基于页面的虚拟内存未生效时,MXR 不起作用。

另外,根据规范部分:虚拟地址转换过程,我们可以看到,当核心遍历表并匹配权限时,在转换的最后阶段使用 MXR。规格说:

发现一片叶子PTE。给定当前特权模式以及 mstatus 寄存器的 SUM 和 MXR 字段的值,确定 pte.r、pte.w、pte.x 和 pte.u 位是否允许请求的内存访问。如果不是,则停止并引发与原始访问类型相对应的页面错误异常。

由于 BARE 模式,给定核心将简单地忽略 G 阶段翻译,因此

sstatus.MXR
也将被忽略,只有 VS 阶段翻译和
vsstatus.MXR
才会生效。

© www.soinside.com 2019 - 2024. All rights reserved.