[hyper mode] Update gen_internal_conf to support ms buffer

This commit is contained in:
LI Qing 2022-01-26 15:13:16 +08:00 committed by Zongmin.Gu
parent 7c3e246d4d
commit bec8aa1c38
4 changed files with 45 additions and 11 deletions

@ -1,4 +1,5 @@
SGX_MODE ?= HW
MS_BUFFER ?= 0
BUILD_DIR := build
.PHONY: all format format-check clean

@ -6,6 +6,10 @@ edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[features]
default = []
ms_buffer = []
[dependencies]
clap = "2.33"
serde = "1.0"
@ -14,4 +18,4 @@ serde_derive = "1.0"
log = "0.4"
env_logger = "0.7"
serde-xml-rs = "0.4"
regex = "1"
regex = "1"

@ -5,14 +5,19 @@ RUST_TARGET_DIR := $(BUILD_DIR)/internal/tools/genconf/cargo-target
RUST_OUT_DIR := $(BUILD_DIR)/bin
TARGET_BINARY := $(RUST_OUT_DIR)/gen_internal_conf
CONF_FEATURES :=
ifeq ($(MS_BUFFER), 1)
CONF_FEATURES += ms_buffer
endif
.PHONY: all clean
all: $(SRC_FILES)
ifeq ($(OCCLUM_RELEASE_BUILD), 1)
@RUSTC_BOOTSTRAP=1 cargo build --release --target-dir=$(RUST_TARGET_DIR) -Z unstable-options --out-dir=$(RUST_OUT_DIR)
@RUSTC_BOOTSTRAP=1 cargo build --release --target-dir=$(RUST_TARGET_DIR) -Z unstable-options --out-dir=$(RUST_OUT_DIR) --features "$(CONF_FEATURES)"
@echo "CARGO (release) => gen_internal_conf"
else
@RUSTC_BOOTSTRAP=1 cargo build --target-dir=$(RUST_TARGET_DIR) -Z unstable-options --out-dir=$(RUST_OUT_DIR)
@RUSTC_BOOTSTRAP=1 cargo build --target-dir=$(RUST_TARGET_DIR) -Z unstable-options --out-dir=$(RUST_OUT_DIR) --features "$(CONF_FEATURES)"
@echo "CARGO (debug) => gen_internal_conf"
endif

@ -154,8 +154,28 @@ fn main() {
);
return;
}
#[cfg(feature = "ms_buffer")]
let marshal_buffer_size = if occlum_config.resource_limits.marshal_buffer_size.is_some() {
let marshal_buffer_size = parse_memory_size(
occlum_config
.resource_limits
.marshal_buffer_size
.as_ref()
.unwrap(),
);
if marshal_buffer_size.is_err() {
println!(
"The marshal_buffer_size \"{}\" is not correct.",
occlum_config.resource_limits.marshal_buffer_size.unwrap()
);
return;
}
marshal_buffer_size.unwrap()
} else {
0x10_0000
};
let kss_tuple = parse_kss_conf(&occlum_config);
let kss_tuple = parse_kss_conf(&occlum_config);
// Generate the enclave configuration
let sgx_enclave_configuration = EnclaveConfiguration {
@ -177,6 +197,8 @@ fn main() {
ReservedMemMinSize: user_space_size.unwrap() as u64,
ReservedMemInitSize: user_space_size.unwrap() as u64,
ReservedMemExecutable: 1,
#[cfg(feature = "ms_buffer")]
MarshalBufferSize: marshal_buffer_size as u64,
EnableKSS: kss_tuple.0,
ISVEXTPRODID_H: kss_tuple.1,
ISVEXTPRODID_L: kss_tuple.2,
@ -303,17 +325,15 @@ fn get_u64_id_high_and_low(id: &OcclumMetaID) -> (u64, u64) {
}
// Return a tuple (EnableKSS, ISVEXTPRODID_H, ISVEXTPRODID_L, ISVFAMILYID_H, ISVFAMILYID_L)
fn parse_kss_conf(occlum_config: &OcclumConfiguration
) -> (u32, u64, u64, u64, u64)
{
fn parse_kss_conf(occlum_config: &OcclumConfiguration) -> (u32, u64, u64, u64, u64) {
match occlum_config.metadata.enable_kss {
true => {
let ext_prod_id = get_u64_id_high_and_low(&occlum_config.metadata.ext_prod_id);
let family_id = get_u64_id_high_and_low(&occlum_config.metadata.family_id);
(1, ext_prod_id.0, ext_prod_id.1, family_id.0, family_id.1)
},
false => (0, 0, 0, 0, 0)
}
false => (0, 0, 0, 0, 0),
}
}
@ -407,6 +427,8 @@ struct OcclumResourceLimits {
kernel_space_heap_size: String,
kernel_space_stack_size: String,
user_space_size: String,
#[cfg(feature = "ms_buffer")]
marshal_buffer_size: Option<String>,
}
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
@ -419,7 +441,7 @@ struct OcclumProcess {
#[derive(Debug, PartialEq, Deserialize)]
struct OcclumMetaID {
high: String,
low: String
low: String,
}
#[derive(Debug, PartialEq, Deserialize)]
@ -429,7 +451,7 @@ struct OcclumMetadata {
debuggable: bool,
enable_kss: bool,
family_id: OcclumMetaID,
ext_prod_id: OcclumMetaID
ext_prod_id: OcclumMetaID,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
@ -483,6 +505,8 @@ struct EnclaveConfiguration {
ReservedMemMinSize: u64,
ReservedMemInitSize: u64,
ReservedMemExecutable: u32,
#[cfg(feature = "ms_buffer")]
MarshalBufferSize: u64,
EnableKSS: u32,
ISVEXTPRODID_H: u64,
ISVEXTPRODID_L: u64,