RFC-0185:移除「zx_rup_bind_vcpu」

RFC-0185:移除「zx_中斷_bind_vcpu」
狀態已接受
區域
  • 虛擬化技術
說明

移除不再需要的 `zx_Break_bind_vcpu` syscall。

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

摘要

移除不再需要的 zx_interrupt_bind_vcpu 系統呼叫。我們不再希望支援它做為建構用途的用途。移除此系統呼叫之後,即可簡化核心中的邏輯,並移除管理程序中的中斷訪客控制權。

提振精神

我們最初推出了 zx_interrupt_bind_vcpu,以便將實體中斷與 vCPU 繫結在一起,讓主機能夠將中斷和中斷情形分成兩部分:優先順序降低和停用。主機會繼續發出優先順序降低,但訪客之後可以發出中斷行為解除的信號。

目標是允許訪客控制虛擬裝置以外的實體裝置幹擾情形。不過,我們不再需要此架構,而移除系統呼叫和支援基礎架構有助於簡化程式碼並減少後續維護工作。

我們已從使用者空間程式碼移除所有使用這個 syscall 的機制,僅供核心單元測試使用。

相關人員

講師:

  • 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 中移除 syscall。
  4. 移除 InterruptDispatcherInterruptEventDispatcher 中的邏輯。
  5. 重新設定 GICv2 和 GICv3 以停用 EOI-模式,並啟用一次性中斷服務。
  6. 移除 ARM64 管理程序的所有實體中斷支援功能。

可以在幾個 CL 中進行變更。

效能

本提案對中斷處理的影響非常輕微,我們可以在單次擷取作業中發出中斷點。這表示我們不必停用中斷,與捨棄優先順序。

安全性考量

本提案不會對安全性造成任何影響。當然,移除這個系統呼叫可能會提升安全性,因為移除未經審查的系統呼叫會減少核心的受攻擊面。

隱私權注意事項

本提案不會影響隱私權。

測試

這個提案會要求我們從樹狀結構中移除所有與 zx_interrupt_bind_vcpu 相關的測試,而目前該測試已完全包含在核心單元測試中。

此外,我們應在單獨的 CL 中變更 EOI 模式,以便在不太可能發生中斷情形的情況下快速還原 CL。

說明文件

我們需要移除與 zx_interrupt_bind_vcpu 相關的文件。目前這個做法完全包含在 Syscall 定義中。

缺點、替代方案和未知

缺點之一是當我們日後需要裝置傳遞時,就可能必須實作這個項目或類似的實作程序。但是,一般而言是更偏好使用虛擬化裝置,並避免裝置傳遞相關的複雜性和維護成本。

先前的圖片和參考資料