HV: trusty: refine secure_world_control

Define Bitmap flag to indicate secure world's state:
    supported: 0(not supported), 1(supported)
    active:    0(inactive), 1(active)

Refine secure_world_memory:
    base_gpa_in_sos: base_gpa from SOS's view
    base_gpa_in_uos: base_gpa from UOS's view, this is the original base_gpa
                     allocated by bootloader.
    Recording above GPA is for usage of trusty EPT destroy and re-create.
    There is an assumption: the secure world's memory address is contiguous
    in both SOS and physical side.

Signed-off-by: Qi Yadong <yadong.qi@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Qi Yadong
2018-05-25 09:30:37 +08:00
committed by lijinxia
parent ff96453993
commit b5b769f45a
9 changed files with 37 additions and 28 deletions

View File

@@ -167,8 +167,8 @@ struct vm_description {
uint16_t *vm_pcpu_ids;
unsigned char GUID[16]; /* GUID of the vm will be created */
uint16_t vm_hw_num_cores; /* Number of virtual cores */
/* Whether secure world is enabled for current VM. */
bool sworld_enabled;
/* Whether secure world is supported for current VM. */
bool sworld_supported;
#ifdef CONFIG_PARTITION_MODE
uint8_t vm_id;
struct mptable_info *mptable;

View File

@@ -92,7 +92,9 @@ struct trusty_key_info {
struct secure_world_memory {
/* The secure world base address of GPA in SOS */
uint64_t base_gpa;
uint64_t base_gpa_in_sos;
/* The original secure world base address allocated by bootloader */
uint64_t base_gpa_in_uos;
/* The secure world base address of HPA */
uint64_t base_hpa;
/* Secure world runtime memory size */
@@ -100,8 +102,14 @@ struct secure_world_memory {
};
struct secure_world_control {
/* Whether secure world is enabled for current VM */
bool sworld_enabled;
/* Flag indicates Secure World's state */
struct {
/* secure world supporting: 0(unsupported), 1(supported) */
uint64_t supported : 1;
/* secure world running status: 0(inactive), 1(active) */
uint64_t active : 1;
uint64_t reserved : 62;
} flag;
/* Secure world memory structure */
struct secure_world_memory sworld_memory;
};