[hyper mode] Update gen_internal_conf to support ms buffer
This commit is contained in:
parent
7c3e246d4d
commit
bec8aa1c38
@ -1,4 +1,5 @@
|
|||||||
SGX_MODE ?= HW
|
SGX_MODE ?= HW
|
||||||
|
MS_BUFFER ?= 0
|
||||||
BUILD_DIR := build
|
BUILD_DIR := build
|
||||||
|
|
||||||
.PHONY: all format format-check clean
|
.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
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[features]
|
||||||
|
default = []
|
||||||
|
ms_buffer = []
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
clap = "2.33"
|
clap = "2.33"
|
||||||
serde = "1.0"
|
serde = "1.0"
|
||||||
@ -14,4 +18,4 @@ serde_derive = "1.0"
|
|||||||
log = "0.4"
|
log = "0.4"
|
||||||
env_logger = "0.7"
|
env_logger = "0.7"
|
||||||
serde-xml-rs = "0.4"
|
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
|
RUST_OUT_DIR := $(BUILD_DIR)/bin
|
||||||
TARGET_BINARY := $(RUST_OUT_DIR)/gen_internal_conf
|
TARGET_BINARY := $(RUST_OUT_DIR)/gen_internal_conf
|
||||||
|
|
||||||
|
CONF_FEATURES :=
|
||||||
|
ifeq ($(MS_BUFFER), 1)
|
||||||
|
CONF_FEATURES += ms_buffer
|
||||||
|
endif
|
||||||
|
|
||||||
.PHONY: all clean
|
.PHONY: all clean
|
||||||
|
|
||||||
all: $(SRC_FILES)
|
all: $(SRC_FILES)
|
||||||
ifeq ($(OCCLUM_RELEASE_BUILD), 1)
|
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"
|
@echo "CARGO (release) => gen_internal_conf"
|
||||||
else
|
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"
|
@echo "CARGO (debug) => gen_internal_conf"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -154,8 +154,28 @@ fn main() {
|
|||||||
);
|
);
|
||||||
return;
|
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
|
// Generate the enclave configuration
|
||||||
let sgx_enclave_configuration = EnclaveConfiguration {
|
let sgx_enclave_configuration = EnclaveConfiguration {
|
||||||
@ -177,6 +197,8 @@ fn main() {
|
|||||||
ReservedMemMinSize: user_space_size.unwrap() as u64,
|
ReservedMemMinSize: user_space_size.unwrap() as u64,
|
||||||
ReservedMemInitSize: user_space_size.unwrap() as u64,
|
ReservedMemInitSize: user_space_size.unwrap() as u64,
|
||||||
ReservedMemExecutable: 1,
|
ReservedMemExecutable: 1,
|
||||||
|
#[cfg(feature = "ms_buffer")]
|
||||||
|
MarshalBufferSize: marshal_buffer_size as u64,
|
||||||
EnableKSS: kss_tuple.0,
|
EnableKSS: kss_tuple.0,
|
||||||
ISVEXTPRODID_H: kss_tuple.1,
|
ISVEXTPRODID_H: kss_tuple.1,
|
||||||
ISVEXTPRODID_L: kss_tuple.2,
|
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)
|
// Return a tuple (EnableKSS, ISVEXTPRODID_H, ISVEXTPRODID_L, ISVFAMILYID_H, ISVFAMILYID_L)
|
||||||
fn parse_kss_conf(occlum_config: &OcclumConfiguration
|
fn parse_kss_conf(occlum_config: &OcclumConfiguration) -> (u32, u64, u64, u64, u64) {
|
||||||
) -> (u32, u64, u64, u64, u64)
|
|
||||||
{
|
|
||||||
match occlum_config.metadata.enable_kss {
|
match occlum_config.metadata.enable_kss {
|
||||||
true => {
|
true => {
|
||||||
let ext_prod_id = get_u64_id_high_and_low(&occlum_config.metadata.ext_prod_id);
|
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);
|
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)
|
(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_heap_size: String,
|
||||||
kernel_space_stack_size: String,
|
kernel_space_stack_size: String,
|
||||||
user_space_size: String,
|
user_space_size: String,
|
||||||
|
#[cfg(feature = "ms_buffer")]
|
||||||
|
marshal_buffer_size: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
|
#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
|
||||||
@ -419,7 +441,7 @@ struct OcclumProcess {
|
|||||||
#[derive(Debug, PartialEq, Deserialize)]
|
#[derive(Debug, PartialEq, Deserialize)]
|
||||||
struct OcclumMetaID {
|
struct OcclumMetaID {
|
||||||
high: String,
|
high: String,
|
||||||
low: String
|
low: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, PartialEq, Deserialize)]
|
#[derive(Debug, PartialEq, Deserialize)]
|
||||||
@ -429,7 +451,7 @@ struct OcclumMetadata {
|
|||||||
debuggable: bool,
|
debuggable: bool,
|
||||||
enable_kss: bool,
|
enable_kss: bool,
|
||||||
family_id: OcclumMetaID,
|
family_id: OcclumMetaID,
|
||||||
ext_prod_id: OcclumMetaID
|
ext_prod_id: OcclumMetaID,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
|
||||||
@ -483,6 +505,8 @@ struct EnclaveConfiguration {
|
|||||||
ReservedMemMinSize: u64,
|
ReservedMemMinSize: u64,
|
||||||
ReservedMemInitSize: u64,
|
ReservedMemInitSize: u64,
|
||||||
ReservedMemExecutable: u32,
|
ReservedMemExecutable: u32,
|
||||||
|
#[cfg(feature = "ms_buffer")]
|
||||||
|
MarshalBufferSize: u64,
|
||||||
EnableKSS: u32,
|
EnableKSS: u32,
|
||||||
ISVEXTPRODID_H: u64,
|
ISVEXTPRODID_H: u64,
|
||||||
ISVEXTPRODID_L: u64,
|
ISVEXTPRODID_L: u64,
|
||||||
|
Loading…
Reference in New Issue
Block a user