| 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 Hypervisor 移除所有實體中斷支援。
這些變更可以在少數 CL 中完成。
效能
這項提案對中斷處理的影響可能非常小,我們可以在單次作業中發出中斷結束訊號。也就是說,我們不必另外停用中斷,只要降低優先順序即可。
安全性考量
這項提案不會影響安全性。可以說,移除這個系統呼叫可能會提升安全性,因為這樣一來,系統呼叫就不會受到審查,進而縮小核心的攻擊面。
隱私權注意事項
這項提案不會影響隱私權。
測試
這項提案要求我們從樹狀結構中移除所有與
zx_interrupt_bind_vcpu 相關的測試,目前這些測試完全包含在核心單元測試中。
此外,我們應在另一個 CL 中變更為 EOI 模式,這樣萬一發生中斷,我們就能快速還原 CL。
說明文件
我們必須移除與 zx_interrupt_bind_vcpu 相關的說明文件。目前這項作業完全包含在系統呼叫定義中。
缺點、替代方案和未知事項
缺點是如果日後需要裝置直通,我們可能必須實作這項功能或類似功能。不過,最好還是偏好使用半虛擬化裝置,避免與裝置直通相關的複雜性和維護成本。
既有技術和參考資料
不適用