Release the check for maximum leaf in cpuid exception
This commit is contained in:
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];
|
||||
|
Loading…
Reference in New Issue
Block a user