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

RFC-0185:移除“zx_increment_bind_vcpu”
状态已接受
领域
  • 虚拟化
说明

移除不再需要的系统调用“zx_increment_bind_vcpu”。

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

总结

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

设计初衷

我们最初引入了 zx_interrupt_bind_vcpu,以允许我们将物理中断绑定到 VCPU,以便主机将中断拆分和中断结束分为两部分:优先级下降和停用。主机会继续发出优先级下降消息,但客户机随后可以发出中断停用信号。

其目标是允许客户机除了控制虚拟设备外,还可以控制实体设备的物理中断。不过,我们不再需要此功能,并且移除系统调用和支持基础架构可让我们简化代码并减少持续维护。

我们已从用户空间代码中移除对该系统调用的所有使用,仅剩的是在内核单元测试中。

利益相关方

教员

  • leannogasawara@google.com

审核者

  • 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 相关的文档。目前,这完全包含在系统调用定义中。

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

一个缺点是,如果未来我们需要设备直通式,可能必须实现此功能或类似方法。不过,通常最好选择半虚拟化设备,并避免与设备直通相关的复杂性和维护成本。

早期技术和参考资料

不适用