pub struct IntelVtdDevice { /* private fields */ }Expand description
Intel VT-d IOMMU emulator device.
A pure MMIO platform device (no PCI config space) discovered via the ACPI DMAR table. Implements the VT-d register file for IOMMU control, DMA translation, interrupt remapping, invalidation queue, and fault recording.
Implementations§
Source§impl IntelVtdDevice
impl IntelVtdDevice
Sourcepub fn new(
guest_memory: GuestMemory,
config: IntelVtdConfig,
signal_msi: Arc<dyn SignalMsi>,
) -> (Self, Arc<VtdSharedState>)
pub fn new( guest_memory: GuestMemory, config: IntelVtdConfig, signal_msi: Arc<dyn SignalMsi>, ) -> (Self, Arc<VtdSharedState>)
Create a new Intel VT-d IOMMU device.
guest_memory is used for reading root/context/page tables and IRT.
signal_msi is the partition’s MSI delivery handle — used for the
IOMMU’s own fault event and invalidation completion interrupts.
Returns the shared IOMMU state for creating per-device wrappers.
Trait Implementations§
Source§impl ChangeDeviceState for IntelVtdDevice
impl ChangeDeviceState for IntelVtdDevice
Source§impl ChipsetDevice for IntelVtdDevice
impl ChipsetDevice for IntelVtdDevice
Source§fn supports_mmio(&mut self) -> Option<&mut dyn MmioIntercept>
fn supports_mmio(&mut self) -> Option<&mut dyn MmioIntercept>
Optionally returns a trait object to send MMIO port intercepts to.
§fn supports_pio(&mut self) -> Option<&mut (dyn PortIoIntercept + 'static)>
fn supports_pio(&mut self) -> Option<&mut (dyn PortIoIntercept + 'static)>
Optionally returns a trait object to send IO port intercepts to.
§fn supports_pci(&mut self) -> Option<&mut (dyn PciConfigSpace + 'static)>
fn supports_pci(&mut self) -> Option<&mut (dyn PciConfigSpace + 'static)>
Optionally returns a trait object to send PCI config space accesses to.
§fn supports_poll_device(&mut self) -> Option<&mut dyn PollDevice>
fn supports_poll_device(&mut self) -> Option<&mut dyn PollDevice>
Optionally returns a trait object to send poll requests to.
§fn supports_line_interrupt_target(
&mut self,
) -> Option<&mut dyn LineInterruptTarget>
fn supports_line_interrupt_target( &mut self, ) -> Option<&mut dyn LineInterruptTarget>
Optionally returns a trait object to send interrupt line changes to.
§fn supports_handle_eoi(&mut self) -> Option<&mut dyn HandleEoi>
fn supports_handle_eoi(&mut self) -> Option<&mut dyn HandleEoi>
Optionally returns a trait object to send EOI requests to.
§fn supports_acknowledge_pic_interrupt(
&mut self,
) -> Option<&mut dyn AcknowledgePicInterrupt>
fn supports_acknowledge_pic_interrupt( &mut self, ) -> Option<&mut dyn AcknowledgePicInterrupt>
Optionally returns a trait object with which to acknowledge PIC
interrupts.
§fn supports_tdisp_host(&mut self) -> Option<&mut dyn TdispHostDeviceTarget>
fn supports_tdisp_host(&mut self) -> Option<&mut dyn TdispHostDeviceTarget>
Optionally returns a trait object which advertises that the
ChipsetDevice can respond to tdisp requests as a physical device (not
relayed) in the host (openvmm).
§fn supports_tdisp_relay(&mut self) -> Option<&mut dyn TdispRelayedDeviceTarget>
fn supports_tdisp_relay(&mut self) -> Option<&mut dyn TdispRelayedDeviceTarget>
Optionally returns a trait object which advertises that the
ChipsetDevice is paravirtualizing a device’s TDISP interface in the
guest. This should only be implemented within a guest as part of a
virtual bus (VPCI, EPCI).
Source§impl InspectMut for IntelVtdDevice
impl InspectMut for IntelVtdDevice
Source§fn inspect_mut(&mut self, req: Request<'_>)
fn inspect_mut(&mut self, req: Request<'_>)
Inspects the object.
Source§impl MmioIntercept for IntelVtdDevice
impl MmioIntercept for IntelVtdDevice
Source§fn mmio_read(&mut self, addr: u64, data: &mut [u8]) -> IoResult
fn mmio_read(&mut self, addr: u64, data: &mut [u8]) -> IoResult
Dispatch an MMIO read to the device with the given address.
Source§fn mmio_write(&mut self, addr: u64, data: &[u8]) -> IoResult
fn mmio_write(&mut self, addr: u64, data: &[u8]) -> IoResult
Dispatch an MMIO write to the device with the given address.
Source§fn get_static_regions(&mut self) -> &[(&str, RangeInclusive<u64>)]
fn get_static_regions(&mut self) -> &[(&str, RangeInclusive<u64>)]
Report a set of static static mmio regions (region_name, gpa_range) that
cannot be remapped at runtime and are always registered. Read more
Source§impl SaveRestore for IntelVtdDevice
impl SaveRestore for IntelVtdDevice
Auto Trait Implementations§
impl Freeze for IntelVtdDevice
impl !RefUnwindSafe for IntelVtdDevice
impl Send for IntelVtdDevice
impl Sync for IntelVtdDevice
impl Unpin for IntelVtdDevice
impl UnsafeUnpin for IntelVtdDevice
impl !UnwindSafe for IntelVtdDevice
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