pub struct UhPartition { /* private fields */ }
Expand description
Underhill partition.
Implementations§
Source§impl UhPartition
Immutable access to useful bits of Partition state.
impl UhPartition
Immutable access to useful bits of Partition state.
Sourcepub fn revoke_guest_vsm(&self) -> Result<(), RevokeGuestVsmError>
pub fn revoke_guest_vsm(&self) -> Result<(), RevokeGuestVsmError>
Revokes guest VSM.
Sourcepub fn reference_time(&self) -> u64
pub fn reference_time(&self) -> u64
Returns the current hypervisor reference time, in 100ns units.
Source§impl UhPartition
impl UhPartition
Sourcepub fn vtl0_guest_os_id(&self) -> Result<HvGuestOsId, Error>
pub fn vtl0_guest_os_id(&self) -> Result<HvGuestOsId, Error>
Gets the guest OS ID for VTL0.
Sourcepub fn register_host_io_port_fast_path(
&self,
range: RangeInclusive<u16>,
) -> HostIoPortFastPathHandle
pub fn register_host_io_port_fast_path( &self, range: RangeInclusive<u16>, ) -> HostIoPortFastPathHandle
Configures guest accesses to IO ports in range
to go directly to the
host.
When the return value is dropped, the ports will be unregistered.
Source§impl UhPartition
impl UhPartition
Sourcepub fn host_mmio_read(&self, addr: u64, data: &mut [u8])
pub fn host_mmio_read(&self, addr: u64, data: &mut [u8])
Forward a (virtual) MMIO read to the host for handling.
Sourcepub fn host_mmio_write(&self, addr: u64, data: &[u8])
pub fn host_mmio_write(&self, addr: u64, data: &[u8])
Forward a (virtual) MMIO write to the host for handling.
Trait Implementations§
Source§impl DeviceBuilder for UhPartition
impl DeviceBuilder for UhPartition
Source§impl Hv1 for UhPartition
impl Hv1 for UhPartition
type Error = Error
type Device = ApicSoftwareDevice
fn new_virtual_device( &self, ) -> Option<&dyn DeviceBuilder<Device = Self::Device, Error = Self::Error>>
Source§impl Partition for UhPartition
impl Partition for UhPartition
Source§fn supports_reset(&self) -> Option<&dyn ResetPartition<Error = Self::Error>>
fn supports_reset(&self) -> Option<&dyn ResetPartition<Error = Self::Error>>
Returns a trait object to reset the partition, if supported.
Source§fn caps(&self) -> &PartitionCapabilities
fn caps(&self) -> &PartitionCapabilities
Get the partition capabilities for this partition.
Source§fn request_msi(&self, vtl: Vtl, request: MsiRequest)
fn request_msi(&self, vtl: Vtl, request: MsiRequest)
Requests an MSI for the specified VTL. Read more
Source§fn request_yield(&self, _vp_index: VpIndex)
fn request_yield(&self, _vp_index: VpIndex)
Forces the run_vp call to yield to the scheduler (i.e. return
Poll::Pending).
Source§fn supports_initial_accept_pages(
&self,
) -> Option<&dyn AcceptInitialPages<Error = Self::Error>>
fn supports_initial_accept_pages( &self, ) -> Option<&dyn AcceptInitialPages<Error = Self::Error>>
Returns a trait object to accept pages on behalf of the guest during the
initial start import flow.
Source§fn supports_vtl_scrub(&self) -> Option<&dyn ScrubVtl<Error = Self::Error>>
fn supports_vtl_scrub(&self) -> Option<&dyn ScrubVtl<Error = Self::Error>>
Returns a trait object to reset VTL state, if supported.
Source§impl Synic for UhPartition
impl Synic for UhPartition
Source§fn post_message(
&self,
vtl: Vtl,
vp_index: VpIndex,
sint: u8,
typ: u32,
payload: &[u8],
)
fn post_message( &self, vtl: Vtl, vp_index: VpIndex, sint: u8, typ: u32, payload: &[u8], )
Posts a message to the guest.
Source§fn new_guest_event_port(&self) -> Box<dyn GuestEventPort>
fn new_guest_event_port(&self) -> Box<dyn GuestEventPort>
Creates a [
GuestEventPort
] for signaling VMBus channels in the guest.Source§fn prefer_os_events(&self) -> bool
fn prefer_os_events(&self) -> bool
Returns whether callers should pass an OS event when creating event
ports, as opposed to passing a function to call. Read more
Source§fn monitor_support(&self) -> Option<&dyn SynicMonitor>
fn monitor_support(&self) -> Option<&dyn SynicMonitor>
Returns an object for manipulating the monitor page, or None if monitor pages aren’t
supported.
Source§impl SynicMonitor for UhPartition
impl SynicMonitor for UhPartition
Source§impl VtlMemoryProtection for UhPartition
impl VtlMemoryProtection for UhPartition
Source§fn modify_vtl_page_setting(&self, pfn: u64, flags: HvMapGpaFlags) -> Result<()>
fn modify_vtl_page_setting(&self, pfn: u64, flags: HvMapGpaFlags) -> Result<()>
TODO CVM GUEST_VSM: GH954: Review alternatives to dynamically allocating from VTL2 RAM (e.g. reserve pages for this purpose), or constrain it for more safety. The concern is freeing a page but forgetting to reset permissions. See PagesAccessibleToLowerVtl for a sample wrapper.
Source§impl X86Partition for UhPartition
impl X86Partition for UhPartition
Source§fn ioapic_routing(&self) -> Arc<dyn IoApicRouting>
fn ioapic_routing(&self) -> Arc<dyn IoApicRouting>
Gets the IO-APIC routing control for VTL0.
Source§fn pulse_lint(&self, vp_index: VpIndex, vtl: Vtl, lint: u8)
fn pulse_lint(&self, vp_index: VpIndex, vtl: Vtl, lint: u8)
Pulses the specified APIC’s local interrupt line (0 or 1).
Auto Trait Implementations§
impl Freeze for UhPartition
impl !RefUnwindSafe for UhPartition
impl Send for UhPartition
impl Sync for UhPartition
impl Unpin for UhPartition
impl !UnwindSafe for UhPartition
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
Mutably borrows from an owned value. Read more
§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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Causes
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,
Formats each item in a sequence. Read more
§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>
§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,
Pipes by value. This is generally the method you want to use. Read more
§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,
Borrows
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,
Mutably borrows
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
Borrows
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
Mutably borrows
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
Borrows
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
Immutable access to the
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
Mutable access to the
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
Immutable access to the
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
Mutable access to the
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
Immutable access to the
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
Mutable access to the
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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.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
Calls
.tap_deref()
only in debug builds, and is erased in release
builds.