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
實作
為實現這項功能,我們會進行下列變更:
- 從
lib/zx/interrupt.h
中移除 C++ 繫結。 - 從
core/interrupt/interrupt-test.cc
中移除單元測試。 - 從
vdso/interrupt.fidl
中移除系統呼叫。 - 移除
InterruptDispatcher
和InterruptEventDispatcher
中的邏輯。 - 重新設定 GICv2 和 GICv3,停用 EOI 模式,並啟用一次性中斷結束。
- 從 ARM64 虛擬機器移除對實體中斷的所有支援。
這些變更可以在少數 CL 中進行。
成效
這項提案對中斷處理作業的影響可能非常輕微,因為我們可以在單次作業中發出中斷結束信號。也就是說,我們不必將中斷事件停用,也不必將其降級。
安全性考量
這項提案不會影響安全性。可以說,移除這個系統呼叫可能會提升安全性,因為這麼做可移除未經仔細審查的系統呼叫,進而減少核心的攻擊途徑。
隱私權注意事項
這項提案不會影響隱私權。
測試
這項提案要求我們從樹狀結構中移除與 zx_interrupt_bind_vcpu
相關的所有測試,這些測試目前完全包含在核心單元測試中。
此外,我們應在單獨的 CL 中進行 EOI 模式變更,這樣在發生不太可能的損壞情況時,我們就能快速還原 CL。
說明文件
我們需要移除與 zx_interrupt_bind_vcpu
相關的說明文件。目前,這項資訊完全包含在系統呼叫定義中。
缺點、替代方案和未知事項
一個缺點是,如果日後需要裝置轉送功能,我們可能就必須實作這項功能或類似功能。不過,通常建議使用準虛擬化裝置,避免裝置轉送作業帶來的複雜性和維護成本。
既有技術與參考資料
無