Struct UhPartition

Source
pub struct UhPartition { /* private fields */ }
Expand description

Underhill partition.

Implementations§

Source§

impl UhPartition

Immutable access to useful bits of Partition state.

Source

pub fn revoke_guest_vsm(&self) -> Result<(), RevokeGuestVsmError>

Revokes guest VSM.

Source

pub fn reference_time(&self) -> u64

Returns the current hypervisor reference time, in 100ns units.

Source§

impl UhPartition

Source

pub fn vtl0_guest_os_id(&self) -> Result<HvGuestOsId, Error>

Gets the guest OS ID for VTL0.

Source

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

pub fn set_pm_timer_assist(&self, port: Option<u16>) -> Result<(), HvError>

Enables or disables the PM timer assist.

Trait Implementations§

Source§

impl DeviceBuilder for UhPartition

Source§

fn build(&self, vtl: Vtl, device_id: u64) -> Result<Self::Device, Self::Error>

Source§

impl Hv1 for UhPartition

Source§

type Error = Error

Source§

type Device = ApicSoftwareDevice

Source§

fn reference_time_source(&self) -> Option<ReferenceTimeSource>

Source§

fn new_virtual_device( &self, ) -> Option<&dyn DeviceBuilder<Device = Self::Device, Error = Self::Error>>

Source§

impl Inspect for UhPartition

Source§

fn inspect(&self, req: Request<'_>)

Inspects the object.
Source§

impl Partition for UhPartition

Source§

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

Get the partition capabilities for this partition.
Source§

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)

Forces the run_vp call to yield to the scheduler (i.e. return Poll::Pending).
§

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.
§

fn supports_vtl_scrub(&self) -> Option<&dyn ScrubVtl<Error = Self::Error>>

Returns a trait object to reset VTL state, if supported.
§

fn doorbell_registration( self: &Arc<Self>, minimum_vtl: Vtl, ) -> Option<Arc<dyn DoorbellRegistration>>

Returns an interface for registering MMIO doorbells for this partition. Read more
§

fn msi_interrupt_target( self: &Arc<Self>, vtl: Vtl, ) -> Option<Arc<dyn MsiInterruptTarget>>

Returns an MSI interrupt target for this partition, which can be used to create MSI interrupts. Read more
Source§

impl Synic for UhPartition

Source§

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, vtl: Vtl, vp: u32, sint: u8, flag: u16, ) -> Box<dyn GuestEventPort>

Creates a [GuestEventPort] for signaling VMBus channels in the guest.
Source§

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>

Returns an object for manipulating the monitor page, or None if monitor pages aren’t supported.
§

fn new_host_event_port( &self, connection_id: u32, minimum_vtl: Vtl, event: &Event, ) -> Result<Option<Box<dyn Sync + Send>>, Error>

Adds a fast path to signal event when the guest signals connection_id from VTL >= minimum_vtl. Read more
Source§

impl SynicMonitor for UhPartition

Source§

fn set_monitor_page(&self, vtl: Vtl, gpa: Option<u64>) -> Result<()>

Sets the GPA of the monitor page currently in use.
Source§

fn register_monitor( &self, monitor_id: MonitorId, connection_id: u32, ) -> Box<dyn Sync + Send>

Registers a monitored interrupt. The returned struct will unregister the ID when dropped. Read more
Source§

fn allocate_monitor_page(&self, vtl: Vtl) -> Result<Option<u64>>

Allocates a monitor page and sets it as the monitor page currently in use. If allocating monitor pages is not supported, returns Ok(None). Read more
Source§

impl X86Partition for UhPartition

Source§

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)

Pulses the specified APIC’s local interrupt line (0 or 1).

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
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

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,

Causes self to use its Display implementation when Debug-formatted.
§

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,

Causes self to use its LowerHex implementation when Debug-formatted.
§

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,

Causes self to use its Pointer implementation when Debug-formatted.
§

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,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. 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.

§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where 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) -> R
where 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) -> R
where 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
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

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

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

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
where Self: BorrowMut<B>, B: ?Sized,

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
where Self: AsRef<R>, R: ?Sized,

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
where Self: AsMut<R>, R: ?Sized,

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
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. 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.
§

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