Skip to main content

GuestPolicy

Struct GuestPolicy 

Source
#[repr(C)]
pub struct GuestPolicy(pub u32);
Expand description

The firmware associates each guest with a guest policy that the guest owner provides. The firmware restricts what actions the hypervisor can take on the guest according to the guest policy. The policy also indicates the minimum firmware version to for the guest.

The guest owner provides the guest policy to the firmware during launch. The firmware then binds the policy to the guest. The policy cannot be changed throughout the lifetime of the guest. The policy is also migrated with the guest and enforced by the destination platform firmware.

| Bit(s) | Name | Description > |––––|––––––––|———————————————————————————————> | 0 | NODBG | Debugging of the guest is disallowed when set > | 1 | NOKS | Sharing keys with other guests is disallowed when set > | 2 | ES | CSV2 is required when set > | 3 | NOSEND | Sending the guest to another platform is disallowed when set > | 4 | DOMAIN | The guest must not be transmitted to another platform that is not in the domain when set. > | 5 | CSV | The guest must not be transmitted to another platform that is not CSV capable when set. > | 6 | CSV3 | The guest must not be transmitted to another platform that is not CSV3 capable when set. > | 7 | ASID_REUSE | Sharing asids with other guests owned by same user is allowed when set > | 11:8 | HSK_VERSION | The guest must not be transmitted to another platform with a lower HSK version. > | 15:12 | CEK_VERSION | The guest must not be transmitted to another platform with a lower CEK version. > | 23:16 | API_MAJOR | The guest must not be transmitted to another platform with a lower platform version. > | 31:24 | API_MINOR | The guest must not be transmitted to another platform with a lower platform version. >

Tuple Fields§

§0: u32

Implementations§

Source§

impl GuestPolicy

Source

pub fn nodbg(&self) -> u32

Source

pub fn noks(&self) -> u32

Source

pub fn es(&self) -> u32

Source

pub fn nosend(&self) -> u32

Source

pub fn domain(&self) -> u32

Source

pub fn csv(&self) -> u32

Source

pub fn csv3(&self) -> u32

Source

pub fn asid_reuse(&self) -> u32

Source

pub fn hsk_version(&self) -> u32

Source

pub fn cek_version(&self) -> u32

Source

pub fn api_major(&self) -> u32

Source

pub fn api_minor(&self) -> u32

Source§

impl GuestPolicy

Source

pub fn xor(&self, anonce: &u32) -> Self

Trait Implementations§

Source§

impl<T> BitRange<T> for GuestPolicy
where u32: BitRange<T>,

Source§

fn bit_range(&self, msb: usize, lsb: usize) -> T

Get a range of bits.
Source§

fn set_bit_range(&mut self, msb: usize, lsb: usize, value: T)

Set a range of bits.
Source§

impl Clone for GuestPolicy

Source§

fn clone(&self) -> GuestPolicy

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for GuestPolicy

Source§

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

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

impl Default for GuestPolicy

Source§

fn default() -> GuestPolicy

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for GuestPolicy

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for GuestPolicy

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · 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 Serialize for GuestPolicy

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for GuestPolicy

Source§

impl Eq for GuestPolicy

Source§

impl StructuralPartialEq for GuestPolicy

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> Bit for T
where T: BitRange<u8>,

Source§

fn bit(&self, bit: usize) -> bool

Get a single bit.
Source§

fn set_bit(&mut self, bit: usize, value: bool)

Set a single bit.
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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,