Release the check for maximum leaf in cpuid exception

This commit is contained in:
LI Qing 2021-03-16 11:18:48 +08:00 committed by Zongmin.Gu
parent bcb3396622
commit d1edb0e218

@ -6,9 +6,7 @@ use std::rsgx_cpuidex;
pub const CPUID_OPCODE: u16 = 0xA20F;
const CPUID_MIN_BASIC_LEAF: u32 = 0;
const CPUID_MAX_BASIC_LEAF: u32 = 0x1F;
const CPUID_MIN_EXTEND_LEAF: u32 = 0x8000_0000;
const CPUID_MAX_EXTEND_LEAF: u32 = 0x8000_0008;
const CPUID_MAX_SUBLEAF: u32 = u32::max_value();
#[repr(C)]
@ -146,23 +144,11 @@ impl CpuIdCache {
impl CpuId {
pub fn new() -> CpuId {
let max_basic_leaf = match rsgx_cpuidex(CPUID_MIN_BASIC_LEAF as i32, 0) {
Ok(sgx_cpuinfo) => {
if is_valid_cpuid_basic_leaf(sgx_cpuinfo[0] as u32) {
sgx_cpuinfo[0] as u32
} else {
panic!("invalid basic cpuid_level")
}
}
Ok(sgx_cpuinfo) => sgx_cpuinfo[0] as u32,
_ => panic!("failed to call sgx_cpuidex"),
};
let max_extend_leaf = match rsgx_cpuidex(CPUID_MIN_EXTEND_LEAF as i32, 0) {
Ok(sgx_cpuinfo) => {
if is_valid_cpuid_extend_leaf(sgx_cpuinfo[0] as u32) {
sgx_cpuinfo[0] as u32
} else {
panic!("invalid extend cpuid_xlevel")
}
}
Ok(sgx_cpuinfo) => sgx_cpuinfo[0] as u32,
_ => panic!("failed to call sgx_cpuidex"),
};
let cpuid = CpuId {
@ -227,14 +213,6 @@ lazy_static! {
static ref CPUID: CpuId = CpuId::new();
}
fn is_valid_cpuid_basic_leaf(leaf: u32) -> bool {
(CPUID_MIN_BASIC_LEAF..=CPUID_MAX_BASIC_LEAF).contains(&leaf)
}
fn is_valid_cpuid_extend_leaf(leaf: u32) -> bool {
(CPUID_MIN_EXTEND_LEAF..=CPUID_MAX_EXTEND_LEAF).contains(&leaf)
}
fn is_cpuid_leaf_has_subleaves(leaf: u32) -> bool {
const CPUID_LEAF_WITH_SUBLEAF: [u32; 11] =
[0x4, 0x7, 0xB, 0xD, 0xF, 0x10, 0x12, 0x14, 0x17, 0x18, 0x1F];