pub struct PciExpressCapability { /* private fields */ }Expand description
Configurable PCI Express capability.
Implementations§
Source§impl PciExpressCapability
impl PciExpressCapability
Sourcepub fn new(
typ: DevicePortType,
flr_handler: Option<Arc<dyn FlrHandler>>,
) -> Self
pub fn new( typ: DevicePortType, flr_handler: Option<Arc<dyn FlrHandler>>, ) -> Self
Creates a new PCI Express capability with FLR support.
§Arguments
typ- The spec-defined device or port type.flr_handler- Optional handler to be called when FLR is initiated. This emulator will report that FLR is supported if flr_handler = Some(_)
Sourcepub fn with_hotplug_support(self, slot_number: u32) -> Self
pub fn with_hotplug_support(self, slot_number: u32) -> Self
Enable hotplug support for this PCIe capability. This configures the appropriate registers to support hotpluggable devices. Panics if called on device types other than RootPort or DownstreamSwitchPort.
§Arguments
slot_number- The physical slot number to assign to this hotplug-capable port
Sourcepub fn with_tlp_prefixing_supported(
self,
max_prefixes: MaxEndEndTlpPrefixes,
) -> Self
pub fn with_tlp_prefixing_supported( self, max_prefixes: MaxEndEndTlpPrefixes, ) -> Self
Enable TLP prefixing support for this PCIe capability.
This configures the appropriate registers to indicate that the function supports end-to-end TLP prefixes. We do not currently implement TLP prefixing in endpoint DMA APIs but this still may be required for ports upstream of passthrough devices that support TLP prefixing (ex. for guest controlled PASID with a virtual IOMMU).
Sourcepub fn set_presence_detect_state(&self, present: bool)
pub fn set_presence_detect_state(&self, present: bool)
Set the physical presence state used to derive slot and link status.
§Arguments
present- true if a device is present in the slot, false if the slot is empty
Sourcepub fn set_hotplug_changed_bits(&self)
pub fn set_hotplug_changed_bits(&self)
Set the RW1C changed bits in Slot Status to signal a hotplug event. Call this only for runtime hotplug events, not build-time device attachment.
Sourcepub fn set_hotplug_state(&self, present: bool)
pub fn set_hotplug_state(&self, present: bool)
Atomically update presence detect state, link active state, and changed bits for a hotplug event.
Sourcepub fn hot_plug_interrupt_enabled(&self) -> bool
pub fn hot_plug_interrupt_enabled(&self) -> bool
Returns whether the hot plug interrupt is enabled in Slot Control.
Sourcepub fn ari_forwarding_enable(&self) -> bool
pub fn ari_forwarding_enable(&self) -> bool
Returns whether ARI Forwarding is enabled in Device Control 2.
When set on a downstream-facing port, the port no longer enforces the requirement that the Device Number be 0 when turning a Type 1 configuration request into a Type 0 request, allowing the full 8-bit ARI function number to reach the connected device. See PCIe Base Spec 7.0 §6.13.
Sourcepub fn slot_capabilities(&self) -> &SlotCapabilities
pub fn slot_capabilities(&self) -> &SlotCapabilities
Returns a reference to the slot capabilities register.