Struct SvmFeatures
pub struct SvmFeatures { /* private fields */ }
dep_raw_cpuid
only.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§
§impl SvmFeatures
impl SvmFeatures
pub fn supported_asids(&self) -> u32 ⓘ
pub fn supported_asids(&self) -> u32 ⓘ
Number of available address space identifiers (ASID).
pub fn has_nested_paging(&self) -> bool
pub fn has_nested_paging(&self) -> bool
Nested paging supported if set.
pub fn has_lbr_virtualization(&self) -> bool
pub fn has_lbr_virtualization(&self) -> bool
Indicates support for LBR Virtualization.
pub fn has_svm_lock(&self) -> bool
pub fn has_svm_lock(&self) -> bool
Indicates support for SVM-Lock if set.
pub fn has_tsc_rate_msr(&self) -> bool
pub fn has_tsc_rate_msr(&self) -> bool
Indicates support for MSR TSC ratio (MSR 0xC000_0104
) if set.
pub fn has_vmcb_clean_bits(&self) -> bool
pub fn has_vmcb_clean_bits(&self) -> bool
Indicates support for VMCB clean bits if set.
pub fn has_flush_by_asid(&self) -> bool
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.
pub fn has_decode_assists(&self) -> bool
pub fn has_decode_assists(&self) -> bool
Indicates support for the decode assists if set.
pub fn has_pause_filter(&self) -> bool
pub fn has_pause_filter(&self) -> bool
Indicates support for the pause intercept filter if set.
pub fn has_pause_filter_threshold(&self) -> bool
pub fn has_pause_filter_threshold(&self) -> bool
Indicates support for the PAUSE filter cycle count threshold if set.
pub fn has_vmsave_virtualization(&self) -> bool
pub fn has_vmsave_virtualization(&self) -> bool
VMSAVE and VMLOAD virtualization supported if set.
pub fn has_sss_check(&self) -> bool
pub fn has_sss_check(&self) -> bool
SVM supervisor shadow stack restrictions if set.
pub fn has_spec_ctrl(&self) -> bool
pub fn has_spec_ctrl(&self) -> bool
SPEC_CTRL virtualization supported if set.
pub fn has_host_mce_override(&self) -> bool
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.
pub fn has_tlb_ctrl(&self) -> bool
pub fn has_tlb_ctrl(&self) -> bool
Support for INVLPGB/TLBSYNC hypervisor enable in VMCB and TLBSYNC intercept if set.
Trait Implementations§
§impl Debug for SvmFeatures
impl Debug for SvmFeatures
§impl PartialEq for SvmFeatures
impl PartialEq for SvmFeatures
impl Eq for SvmFeatures
impl StructuralPartialEq for SvmFeatures
Auto Trait Implementations§
impl Freeze for SvmFeatures
impl RefUnwindSafe for SvmFeatures
impl Send for SvmFeatures
impl Sync for SvmFeatures
impl Unpin for SvmFeatures
impl UnwindSafe for SvmFeatures
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> ByteSized for T
impl<T> ByteSized for T
Source§const BYTE_ALIGN: usize = _
const BYTE_ALIGN: usize = _
Source§fn byte_align(&self) -> usize ⓘ
fn byte_align(&self) -> usize ⓘ
Source§fn ptr_size_ratio(&self) -> [usize; 2]
fn ptr_size_ratio(&self) -> [usize; 2]
Source§impl<T, R> Chain<R> for Twhere
T: ?Sized,
impl<T, R> Chain<R> for Twhere
T: ?Sized,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.Source§impl<T> ExtAny for T
impl<T> ExtAny for T
Source§fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
fn as_any_mut(&mut self) -> &mut dyn Anywhere
Self: Sized,
Source§impl<T> ExtMem for Twhere
T: ?Sized,
impl<T> ExtMem for Twhere
T: ?Sized,
Source§const NEEDS_DROP: bool = _
const NEEDS_DROP: bool = _
Source§fn mem_align_of_val(&self) -> usize ⓘ
fn mem_align_of_val(&self) -> usize ⓘ
Source§fn mem_size_of_val(&self) -> usize ⓘ
fn mem_size_of_val(&self) -> usize ⓘ
Source§fn mem_needs_drop(&self) -> bool
fn mem_needs_drop(&self) -> bool
true
if dropping values of this type matters. Read moreSource§fn mem_forget(self)where
Self: Sized,
fn mem_forget(self)where
Self: Sized,
self
without running its destructor. Read moreSource§fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
fn mem_replace(&mut self, other: Self) -> Selfwhere
Self: Sized,
Source§unsafe fn mem_zeroed<T>() -> T
unsafe fn mem_zeroed<T>() -> T
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe fn mem_transmute_copy<Src, Dst>(src: &Src) -> Dst
unsafe_layout
only.T
represented by the all-zero byte-pattern. Read moreSource§fn mem_as_bytes(&self) -> &[u8] ⓘ
fn mem_as_bytes(&self) -> &[u8] ⓘ
unsafe_slice
only.§impl<S> FromSample<S> for S
impl<S> FromSample<S> for S
fn from_sample_(s: S) -> S
Source§impl<T> Hook for T
impl<T> Hook for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
impl<F, T> IntoSample<T> for Fwhere
T: FromSample<F>,
fn into_sample(self) -> T
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError> ⓘ
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out
indicating that a T
is niched.