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
实现
为此,我们将进行以下更改:
- 从
lib/zx/interrupt.h
中移除了 C++ 绑定。 - 从
core/interrupt/interrupt-test.cc
中移除了单元测试。 - 从
vdso/interrupt.fidl
中移除了系统调用。 - 移除了
InterruptDispatcher
和InterruptEventDispatcher
中的逻辑。 - 重新配置 GICv2 和 GICv3 以停用 EOI 模式,并启用一次性中断结束。
- 从 ARM64 Hypervisor 中移除了对物理中断的所有支持。
这些更改可以在少数 CL 中进行。
性能
此提案可能会对中断处理产生极小的影响,我们可以在单次操作中发出中断结束信号。这意味着,我们无需单独停用中断,只需降低优先级即可。
安全注意事项
此提案对安全性没有影响。可以说,移除此系统调用可能会提高安全性,因为它会移除原本不会受到严格审核的系统调用,从而缩小内核的攻击面。
隐私注意事项
此提案对隐私权没有影响。
测试
此提案要求我们从树中移除与 zx_interrupt_bind_vcpu
相关的所有测试,这些测试目前完全包含在内核单元测试中。
此外,我们应在单独的 CL 中进行 EOI 模式更改,以便在极少数情况下发生故障时,我们可以快速还原 CL。
文档
我们需要移除与 zx_interrupt_bind_vcpu
相关的文档。目前,这完全包含在系统调用定义中。
缺点、替代方案和未知情况
缺点之一是,如果我们日后需要设备透传,可能需要实现此方法或类似方法。不过,通常最好使用准虚拟化设备,并避免与设备透传相关的复杂性和维护费用。
在先技术和参考文档
不适用