optee堆Virtualization(hypervisor)的支持
生活随笔
收集整理的這篇文章主要介紹了
optee堆Virtualization(hypervisor)的支持
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、一些概念的介紹
optee提供虛擬化的支持, 可以在多個VMs上的optee os上跑TAs. 一個VM不能影響到另外一個VM;
啟用虛擬化支持之后,optee將依賴hypervisor,因為只有hypervisor才知道當前使用哪個VM的optee.
hypervisor負責創建和銷毀VMs,而且在大多數場景下, hypervisor會開機two-state MMU,所有VMs看到的不是真實的物理地址,二十IPA(intermediate physical addresses)。
也就說optee只能完成VA到IPA的轉換,而IPA到PA的轉換需要到hypervisor中完成.
因此,hypervisor應該包含一個了解OP-TEE協議內部內容并能夠進行轉換的組件。我們將該組件稱為"TEE mediator",目前只有XEN hypervisor擁有optee的TEE mediator。
打開CFG_VIRTUALIZATION后,optee將支持虛擬化,當然了這時需要有一個兼容的hypervisor組件,optee才能正常工作;
CFG_VIRT_GUEST_COUNT決定當前支持VMS的最大個數,安全內存就這么一點點,支持的VMs越多,那么每個guest os的可用內存就會越少
2、optee適配hypervisor需要做哪些事情
- 創建optee VMs時,hypervisor需要調用OPTEE_SMC_VM_CREATED smc通知optee,其中a1參數是該guest os的VM ID
- 當optee VMs銷毀時,hypervisor要發送OPTEE_SMC_VM_DESTROYED smc到optee中,確保沒有正在運行的線程.
- 每一次到optee中的smc,都會跟上a7參數. 如果是hypervisor調用optee,該參數是HYP_CLNT_ID; 如果是optee返回hypervisor,該參數是VMs ID
- Hypervisor應該為所有SMCs執行IPA<->PA地址轉換。這包括a1-a6寄存器和內存中的命令緩沖區中的兩個參數
- Hypervisor應該鎖定VM與OP-TEE共享的內存頁。這意味著,hypervisor應該確保固定的頁面將駐留在原始PA上,只要它與OP-TEE共享。而且它應該仍然屬于共享它的VM。例如,hypervisor不應該交換此頁面、將所有權轉移到另一個VM、從VM地址空間取消映射等等。
- hypervisor應該正確地處理OP-TEE協議,因此對于任何VM來說,它看起來都應該是直接使用OP-TEE的。
總結
以上是生活随笔為你收集整理的optee堆Virtualization(hypervisor)的支持的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: optee内核中栈的介绍(一)
- 下一篇: [crypto]-02-非对称加解密RS