RFC-0185:移除「zx_rup_bind_vcpu」

RFC-0185:移除 `zx_interrupt_bind_vcpu`
狀態已接受
區域
  • 虛擬化
說明

移除不再需要的 `zx_interrupt_bind_vcpu` 系統呼叫。

問題
Gerrit 變更
作者
審查人員
提交日期 (年-月-日)2022-08-19
審查日期 (年-月-日)2022-08-19

摘要

移除不再需要的 zx_interrupt_bind_vcpu 系統呼叫。我們不再支援該用途。移除這個系統呼叫後,我們就能簡化核心內的邏輯,並移除對管理程序中中斷客體控制項的支援。

提振精神

我們最初推出 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 相關的說明文件。目前這項作業完全包含在系統呼叫定義中。

缺點、替代方案和未知事項

缺點是如果日後需要裝置直通,我們可能必須實作這項功能或類似功能。不過,最好還是偏好使用半虛擬化裝置,避免與裝置直通相關的複雜性和維護成本。

既有技術和參考資料

不適用