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 虛擬機器移除對實體中斷的所有支援。

這些變更可以在少數 CL 中進行。

成效

這項提案對中斷處理作業的影響可能非常輕微,因為我們可以在單次作業中發出中斷結束信號。也就是說,我們不必將中斷事件停用,也不必將其降級。

安全性考量

這項提案不會影響安全性。可以說,移除這個系統呼叫可能會提升安全性,因為這麼做可移除未經仔細審查的系統呼叫,進而減少核心的攻擊途徑。

隱私權注意事項

這項提案不會影響隱私權。

測試

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

此外,我們應在單獨的 CL 中進行 EOI 模式變更,這樣在發生不太可能的損壞情況時,我們就能快速還原 CL。

說明文件

我們需要移除與 zx_interrupt_bind_vcpu 相關的說明文件。目前,這項資訊完全包含在系統呼叫定義中。

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

一個缺點是,如果日後需要裝置轉送功能,我們可能就必須實作這項功能或類似功能。不過,通常建議使用準虛擬化裝置,避免裝置轉送作業帶來的複雜性和維護成本。

既有技術與參考資料