diff --git a/doc/developer-guides/images/ept-hierarchy.png b/doc/developer-guides/images/ept-hierarchy.png new file mode 100644 index 000000000..333c8e3ab Binary files /dev/null and b/doc/developer-guides/images/ept-hierarchy.png differ diff --git a/doc/developer-guides/images/trusty-arch.png b/doc/developer-guides/images/trusty-arch.png new file mode 100644 index 000000000..5ba2b998b Binary files /dev/null and b/doc/developer-guides/images/trusty-arch.png differ diff --git a/doc/developer-guides/trusty.rst b/doc/developer-guides/trusty.rst index f8dbb6db5..cd060b02b 100644 --- a/doc/developer-guides/trusty.rst +++ b/doc/developer-guides/trusty.rst @@ -25,26 +25,9 @@ there's a desire to keep things small and lightweight. LK has been chosen as the Trusty Architecture ******************* -Trusty Architectural diagram:: - - +---------------------------+ - |VMn | - | ...... | - +------------+ +---------------------------+ | - |VM0 | |VM1 | | - | | | +--------+ +--------+ | | - | | | | | | | | | - | SOS | | | Normal | | Secure | | | - | | | | World | | World | |-+ - | | | | | | | | - | | | +--------+ +--------+ | - +------------+ +---------------------------+ - +-------------------------------------------+ - | ACRN Hypervisor | - +-------------------------------------------+ - +-------------------------------------------+ - | HW | - +-------------------------------------------+ +.. figure:: images/trusty-arch.png + :align: center + :name: Trusty Architectural diagram .. note:: Trusty OS is running in Secure World in the architecture drawing above. @@ -118,39 +101,9 @@ modify Normal World's EPT during runtime such as increasing memory, changing att etc. If such behavior happened, only PD and PT for Normal World need to be updated. -:: - - ABSTRACT EPT hierarchy for 2 Worlds: - ==================================================================== ================================================== - : Normal World : : Secure World : - : PML4 : : PML4 : - : +--------+ : : +--------+ : - : | | : : | | : - : | | : : PD | | : - : | | : : +-------+ | | : - : | | : : | | | | : - : | 0-512G |--+ : : | | +--| 0-512G | : - :EPTP -->+--------+ | : : | | | +--------+<-- EPTP : - : | PDPT : : | | PDPT | : - : | +--------+ : : | | +--------+ | : - : | | >=511G |---> Not present : : +-------+<--| >=511G | | : - : | |________| : : |________| | : - : | | | : : | | | : - : | | <511G |->+<----------------------------:--------:--------------| <511G | | : - : | | | | : : | | | : - : +-->+--------+ | PD PT : : +--------+<-+ : - : | ... ... : ================================================== - : | +-------+ +-------+ : - : | +-------+| +-------+| : - : | | || | || : - : | | || | || : - : | | PDE |--+ | || : - : | | || | | || : - : | | |+ | | |+ : - : +-->+-------+ +-->+-------+ : - : : - ==================================================================== - +.. figure:: images/ept-hierarchy.png + :align: center + :name: EPT hierarchy API === diff --git a/hypervisor/include/common/hypercall.h b/hypervisor/include/common/hypercall.h index 3a57fcc8c..789cd6212 100644 --- a/hypervisor/include/common/hypercall.h +++ b/hypervisor/include/common/hypercall.h @@ -334,11 +334,12 @@ int64_t hcall_get_cpu_pm_state(struct vm *vm, uint64_t cmd, uint64_t param); /** * @brief Switch vCPU state between Normal/Secure World. * - * * Hypervisor uses the Secure Monitor Code (SMC) instruction to do - * the world switch - * * The hypervisor needs to save current world vCPU contexts, and load - * the next world vCPU contexts - * * Updates ``rdi``, ``rsi``, ``rdx``, ``rbx`` to next world vCPU contexts + * * The hypervisor uses this hypercall to do the world switch + * * The hypervisor needs to: + * * save current world vCPU contexts, and load the next world + * vCPU contexts + * * update ``rdi``, ``rsi``, ``rdx``, ``rbx`` to next world + * vCPU contexts * * @param vcpu Pointer to VCPU data structure *