Struct virt::x86::X86PartitionCapabilities
source · pub struct X86PartitionCapabilities {Show 16 fields
pub vendor: Vendor,
pub hv1: bool,
pub hv1_reference_tsc_page: bool,
pub xsave: XsaveCapabilities,
pub x2apic: bool,
pub x2apic_enabled: bool,
pub reset_rdx: u64,
pub cet: bool,
pub cet_ss: bool,
pub sgx: bool,
pub tsc_aux: bool,
pub vtom: Option<u64>,
pub can_freeze_time: bool,
pub xsaves_state_bv_broken: bool,
pub dr6_tsx_broken: bool,
pub nxe_forced_on: bool,
}
Expand description
Partition capabilities, used to determine which state is active on a partition and what the reset state should be.
Fields§
§vendor: Vendor
The processor vendor.
hv1: bool
The MS hypervisor is available.
hv1_reference_tsc_page: bool
The reference TSC page is available.
xsave: XsaveCapabilities
Xsave information.
x2apic: bool
X2apic is supported.
x2apic_enabled: bool
X2apic is enabled at boot.
reset_rdx: u64
The initial value for rdx.
cet: bool
CET is supported.
cet_ss: bool
CET-SS is supported.
sgx: bool
SGX is enabled.
tsc_aux: bool
TSC_AUX is supported
vtom: Option<u64>
The address of the virtual top of memory, for encrypted VMs.
This is computed from the Hyper-V isolation leaf. It is guaranteed to be a power of 2, if present.
can_freeze_time: bool
The hypervisor can freeze time across state manipulation.
xsaves_state_bv_broken: bool
The hypervisor has a broken implementation querying xsave state, where supervisor states are not correctly set in xstate_bv.
dr6_tsx_broken: bool
The hypervisor has a broken implementation setting dr6, where bit 16 is forced on even if the processor supports TSX.
nxe_forced_on: bool
EFER.NXE is forced on. This is set for TDX 1.5 partitions, which require this.
Implementations§
source§impl X86PartitionCapabilities
impl X86PartitionCapabilities
pub fn from_cpuid( processor_topology: &ProcessorTopology<X86Topology>, f: &mut dyn FnMut(u32, u32) -> [u32; 4], ) -> Self
Trait Implementations§
source§impl Debug for X86PartitionCapabilities
impl Debug for X86PartitionCapabilities
source§impl Inspect for X86PartitionCapabilities
impl Inspect for X86PartitionCapabilities
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for Activity
impl StateElement<X86PartitionCapabilities, X86VpInfo> for Activity
source§fn is_present(_caps: &X86PartitionCapabilities) -> bool
fn is_present(_caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for Apic
impl StateElement<X86PartitionCapabilities, X86VpInfo> for Apic
source§fn is_present(_caps: &X86PartitionCapabilities) -> bool
fn is_present(_caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(caps: &X86PartitionCapabilities, vp_info: &X86VpInfo) -> Self
fn at_reset(caps: &X86PartitionCapabilities, vp_info: &X86VpInfo) -> Self
source§fn can_compare(caps: &X86PartitionCapabilities) -> bool
fn can_compare(caps: &X86PartitionCapabilities) -> bool
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for CacheControl
impl StateElement<X86PartitionCapabilities, X86VpInfo> for CacheControl
source§fn is_present(_caps: &X86PartitionCapabilities) -> bool
fn is_present(_caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for Cet
impl StateElement<X86PartitionCapabilities, X86VpInfo> for Cet
source§fn is_present(caps: &X86PartitionCapabilities) -> bool
fn is_present(caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for CetSs
impl StateElement<X86PartitionCapabilities, X86VpInfo> for CetSs
source§fn is_present(caps: &X86PartitionCapabilities) -> bool
fn is_present(caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for DebugRegisters
impl StateElement<X86PartitionCapabilities, X86VpInfo> for DebugRegisters
source§fn is_present(_caps: &X86PartitionCapabilities) -> bool
fn is_present(_caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§fn can_compare(caps: &X86PartitionCapabilities) -> bool
fn can_compare(caps: &X86PartitionCapabilities) -> bool
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for HypercallMsrs
impl StateElement<X86PartitionCapabilities, X86VpInfo> for HypercallMsrs
source§fn is_present(caps: &X86PartitionCapabilities) -> bool
fn is_present(caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for ReferenceTime
impl StateElement<X86PartitionCapabilities, X86VpInfo> for ReferenceTime
source§fn is_present(caps: &X86PartitionCapabilities) -> bool
fn is_present(caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§fn can_compare(caps: &X86PartitionCapabilities) -> bool
fn can_compare(caps: &X86PartitionCapabilities) -> bool
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for ReferenceTscPage
impl StateElement<X86PartitionCapabilities, X86VpInfo> for ReferenceTscPage
source§fn is_present(caps: &X86PartitionCapabilities) -> bool
fn is_present(caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for Registers
impl StateElement<X86PartitionCapabilities, X86VpInfo> for Registers
source§fn is_present(_caps: &X86PartitionCapabilities) -> bool
fn is_present(_caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for SynicEventFlagsPage
impl StateElement<X86PartitionCapabilities, X86VpInfo> for SynicEventFlagsPage
source§fn is_present(caps: &X86PartitionCapabilities) -> bool
fn is_present(caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for SynicMessagePage
impl StateElement<X86PartitionCapabilities, X86VpInfo> for SynicMessagePage
source§fn is_present(caps: &X86PartitionCapabilities) -> bool
fn is_present(caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for SynicMessageQueues
impl StateElement<X86PartitionCapabilities, X86VpInfo> for SynicMessageQueues
source§fn is_present(caps: &X86PartitionCapabilities) -> bool
fn is_present(caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for SynicTimers
impl StateElement<X86PartitionCapabilities, X86VpInfo> for SynicTimers
source§fn is_present(caps: &X86PartitionCapabilities) -> bool
fn is_present(caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§fn can_compare(_caps: &X86PartitionCapabilities) -> bool
fn can_compare(_caps: &X86PartitionCapabilities) -> bool
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for SyntheticMsrs
impl StateElement<X86PartitionCapabilities, X86VpInfo> for SyntheticMsrs
source§fn is_present(caps: &X86PartitionCapabilities) -> bool
fn is_present(caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for Tsc
impl StateElement<X86PartitionCapabilities, X86VpInfo> for Tsc
source§fn is_present(_caps: &X86PartitionCapabilities) -> bool
fn is_present(_caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§fn can_compare(caps: &X86PartitionCapabilities) -> bool
fn can_compare(caps: &X86PartitionCapabilities) -> bool
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for TscAux
impl StateElement<X86PartitionCapabilities, X86VpInfo> for TscAux
source§fn is_present(caps: &X86PartitionCapabilities) -> bool
fn is_present(caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for VirtualMsrs
impl StateElement<X86PartitionCapabilities, X86VpInfo> for VirtualMsrs
source§fn is_present(_caps: &X86PartitionCapabilities) -> bool
fn is_present(_caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for Xcr0
impl StateElement<X86PartitionCapabilities, X86VpInfo> for Xcr0
source§fn is_present(caps: &X86PartitionCapabilities) -> bool
fn is_present(caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for Xsave
impl StateElement<X86PartitionCapabilities, X86VpInfo> for Xsave
source§fn is_present(_caps: &X86PartitionCapabilities) -> bool
fn is_present(_caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
source§impl StateElement<X86PartitionCapabilities, X86VpInfo> for Xss
impl StateElement<X86PartitionCapabilities, X86VpInfo> for Xss
source§fn is_present(caps: &X86PartitionCapabilities) -> bool
fn is_present(caps: &X86PartitionCapabilities) -> bool
source§fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
fn at_reset(_caps: &X86PartitionCapabilities, _vp_info: &X86VpInfo) -> Self
Auto Trait Implementations§
impl Freeze for X86PartitionCapabilities
impl RefUnwindSafe for X86PartitionCapabilities
impl Send for X86PartitionCapabilities
impl Sync for X86PartitionCapabilities
impl Unpin for X86PartitionCapabilities
impl UnwindSafe for X86PartitionCapabilities
Blanket Implementations§
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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.