raw_cpuid

Struct SvmFeatures

source
pub struct SvmFeatures { /* private fields */ }
Expand description

Information about the SVM features that the processory supports (LEAF=0x8000_000A).

§Note

If SVM is not supported (ExtendedProcessorFeatureIdentifiers::has_svm is false), this leaf is reserved (crate::CpuId will return None in this case).

§Platforms

✅ AMD ❌ Intel

Implementations§

source§

impl SvmFeatures

source

pub fn revision(&self) -> u8

SVM revision number.

source

pub fn supported_asids(&self) -> u32

Number of available address space identifiers (ASID).

source

pub fn has_nested_paging(&self) -> bool

Nested paging supported if set.

source

pub fn has_lbr_virtualization(&self) -> bool

Indicates support for LBR Virtualization.

source

pub fn has_svm_lock(&self) -> bool

Indicates support for SVM-Lock if set.

source

pub fn has_nrip(&self) -> bool

Indicates support for NRIP save on #VMEXIT if set.

source

pub fn has_tsc_rate_msr(&self) -> bool

Indicates support for MSR TSC ratio (MSR 0xC000_0104) if set.

source

pub fn has_vmcb_clean_bits(&self) -> bool

Indicates support for VMCB clean bits if set.

source

pub fn has_flush_by_asid(&self) -> bool

Indicates that TLB flush events, including CR3 writes and CR4.PGE toggles, flush only the current ASID’s TLB entries.

Also indicates support for the extended VMCB TLB_Control.

source

pub fn has_decode_assists(&self) -> bool

Indicates support for the decode assists if set.

source

pub fn has_pause_filter(&self) -> bool

Indicates support for the pause intercept filter if set.

source

pub fn has_pause_filter_threshold(&self) -> bool

Indicates support for the PAUSE filter cycle count threshold if set.

source

pub fn has_avic(&self) -> bool

Support for the AMD advanced virtual interrupt controller if set.

source

pub fn has_vmsave_virtualization(&self) -> bool

VMSAVE and VMLOAD virtualization supported if set.

source

pub fn has_gif(&self) -> bool

GIF – virtualized global interrupt flag if set.

source

pub fn has_gmet(&self) -> bool

Guest Mode Execution Trap supported if set.

source

pub fn has_sss_check(&self) -> bool

SVM supervisor shadow stack restrictions if set.

source

pub fn has_spec_ctrl(&self) -> bool

SPEC_CTRL virtualization supported if set.

source

pub fn has_host_mce_override(&self) -> bool

When host CR4.MCE=1 and guest CR4.MCE=0, machine check exceptions (#MC) in a guest do not cause shutdown and are always intercepted if set.

source

pub fn has_tlb_ctrl(&self) -> bool

Support for INVLPGB/TLBSYNC hypervisor enable in VMCB and TLBSYNC intercept if set.

Trait Implementations§

source§

impl Debug for SvmFeatures

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for SvmFeatures

source§

fn eq(&self, other: &SvmFeatures) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Eq for SvmFeatures

source§

impl StructuralPartialEq for SvmFeatures

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.