RFC-0185:移除“zx_中断_bind_vcpu”

RFC-0185:移除 `zx_interrupt_bind_vcpu`
状态已接受
区域
  • 虚拟化
说明

移除了不再需要的 `zx_interrupt_bind_vcpu` 系统调用。

问题
Gerrit 更改
作者
审核人
提交日期(年-月-日)2022-08-19
审核日期(年-月-日)2022-08-19

摘要

移除了不再需要的 zx_interrupt_bind_vcpu 系统调用。我们不再支持其所针对的用例。移除此系统调用后,我们可以简化内核中的逻辑,并移除对 Hypervisor 中对中断的客户机控制的支持。

设计初衷

我们最初引入 zx_interrupt_bind_vcpu 是为了将物理中断绑定到 VCPU,以便主机将中断分为两个部分:优先级下降和停用。主机会继续发出优先级下降信号,但此时,客户端可以发出中断停用信号。

目标是允许客户机控制实体设备(以及虚拟设备)的物理中断。不过,我们不再需要这样做,移除系统调用和支持基础架构后,我们可以简化代码并减少持续维护。

我们已从用户空间代码中移除对此系统调用的所有使用,仅在内核单元测试中保留了此类使用。

利益相关方

教员

  • leannogasawara@google.com

Reviewers:

  • maniscalco@google.com
  • tjdetwiler@google.com
  • travisg@google.com
  • zarvox@google.com

实现

为此,我们将进行以下更改:

  1. lib/zx/interrupt.h 中移除了 C++ 绑定。
  2. core/interrupt/interrupt-test.cc 中移除了单元测试。
  3. vdso/interrupt.fidl 中移除了系统调用。
  4. 移除了 InterruptDispatcherInterruptEventDispatcher 中的逻辑。
  5. 重新配置 GICv2 和 GICv3 以停用 EOI 模式,并启用一次性中断结束。
  6. 从 ARM64 Hypervisor 中移除了对物理中断的所有支持。

这些更改可以在少数 CL 中进行。

性能

此提案可能会对中断处理产生极小的影响,我们可以在单次操作中发出中断结束信号。这意味着,我们无需单独停用中断,只需降低优先级即可。

安全注意事项

此提案对安全性没有影响。可以说,移除此系统调用可能会提高安全性,因为它会移除原本不会受到严格审核的系统调用,从而缩小内核的攻击面。

隐私注意事项

此提案对隐私权没有影响。

测试

此提案要求我们从树中移除与 zx_interrupt_bind_vcpu 相关的所有测试,这些测试目前完全包含在内核单元测试中。

此外,我们应在单独的 CL 中进行 EOI 模式更改,以便在极少数情况下发生故障时,我们可以快速还原 CL。

文档

我们需要移除与 zx_interrupt_bind_vcpu 相关的文档。目前,这完全包含在系统调用定义中。

缺点、替代方案和未知情况

缺点之一是,如果我们日后需要设备透传,可能需要实现此方法或类似方法。不过,通常最好使用准虚拟化设备,并避免与设备透传相关的复杂性和维护费用。

在先技术和参考文档

不适用