Struct SnpHardwareContext

Source
pub struct SnpHardwareContext {
    accept_lower_1mb: bool,
    page_number: Option<u64>,
    vmsa: SevVmsa,
}
Expand description

A hardware SNP VP context, that is imported as a VMSA.

Fields§

§accept_lower_1mb: bool

If an assembly stub to accept the lower 1mb should be imported as page data.

§page_number: Option<u64>

The page number to import this vp context at.

§vmsa: SevVmsa

The VMSA for this VP.

Implementations§

Source§

impl SnpHardwareContext

Source

pub fn new( vtl: Vtl, enlightened_uefi: bool, shared_gpa_boundary: u64, injection_type: InjectionType, ) -> Self

Create a new SNP VP context builder.

enlightened_uefi specifies if UEFI is enlightened. This will result in VpContextBuilder::finalize generating additional trampoline code for UEFI running without a paravisor, along with setting different fields in the SEV_FEATURES register.

injection_type specifies the injection type for the highest enabled VMPL.

Only the highest VTL will have a VMSA generated, with lower VTLs being imported with the VBS format as page data.

Trait Implementations§

Source§

impl Debug for SnpHardwareContext

Source§

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

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

impl VpContextBuilder for SnpHardwareContext

Source§

type Register = X86Register

The register type which is different on different architectures.
Source§

fn import_vp_register(&mut self, register: X86Register)

Import a register to the BSP at the given vtl.
Source§

fn set_vp_context_memory(&mut self, page_base: u64)

Define the base of the GPA range to be used for architecture-specific VP context data.
Source§

fn finalize(&mut self, state: &mut Vec<VpContextState>)

Finalize all VP context data. Returns architecture specific data that should be either imported into guest memory space or added directly to the IGVM file.

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> Same for T

Source§

type Output = T

Should always be Self
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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more