mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-10-04 04:25:45 +00:00
pci: vfio: Increase visibility of VfioCommon API
This allows the code to be used from a different module in the same crate for vfio-user support. Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
parent
f5353c5b08
commit
ec1f7189da
@ -88,13 +88,13 @@ enum InterruptUpdateAction {
|
|||||||
DisableMsix,
|
DisableMsix,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct VfioIntx {
|
pub(crate) struct VfioIntx {
|
||||||
interrupt_source_group: Arc<dyn InterruptSourceGroup>,
|
interrupt_source_group: Arc<dyn InterruptSourceGroup>,
|
||||||
enabled: bool,
|
enabled: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct VfioMsi {
|
pub(crate) struct VfioMsi {
|
||||||
cfg: MsiConfig,
|
pub(crate) cfg: MsiConfig,
|
||||||
cap_offset: u32,
|
cap_offset: u32,
|
||||||
interrupt_source_group: Arc<dyn InterruptSourceGroup>,
|
interrupt_source_group: Arc<dyn InterruptSourceGroup>,
|
||||||
}
|
}
|
||||||
@ -119,8 +119,8 @@ impl VfioMsi {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct VfioMsix {
|
pub(crate) struct VfioMsix {
|
||||||
bar: MsixConfig,
|
pub(crate) bar: MsixConfig,
|
||||||
cap: MsixCap,
|
cap: MsixCap,
|
||||||
cap_offset: u32,
|
cap_offset: u32,
|
||||||
interrupt_source_group: Arc<dyn InterruptSourceGroup>,
|
interrupt_source_group: Arc<dyn InterruptSourceGroup>,
|
||||||
@ -157,10 +157,10 @@ impl VfioMsix {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct Interrupt {
|
pub(crate) struct Interrupt {
|
||||||
intx: Option<VfioIntx>,
|
pub(crate) intx: Option<VfioIntx>,
|
||||||
msi: Option<VfioMsi>,
|
pub(crate) msi: Option<VfioMsi>,
|
||||||
msix: Option<VfioMsix>,
|
pub(crate) msix: Option<VfioMsix>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Interrupt {
|
impl Interrupt {
|
||||||
@ -225,7 +225,7 @@ impl Interrupt {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn intx_in_use(&self) -> bool {
|
pub(crate) fn intx_in_use(&self) -> bool {
|
||||||
if let Some(intx) = &self.intx {
|
if let Some(intx) = &self.intx {
|
||||||
return intx.enabled;
|
return intx.enabled;
|
||||||
}
|
}
|
||||||
@ -238,14 +238,14 @@ impl Interrupt {
|
|||||||
pub struct MmioRegion {
|
pub struct MmioRegion {
|
||||||
pub start: GuestAddress,
|
pub start: GuestAddress,
|
||||||
pub length: GuestUsize,
|
pub length: GuestUsize,
|
||||||
type_: PciBarRegionType,
|
pub(crate) type_: PciBarRegionType,
|
||||||
index: u32,
|
pub(crate) index: u32,
|
||||||
mem_slot: Option<u32>,
|
pub(crate) mem_slot: Option<u32>,
|
||||||
host_addr: Option<u64>,
|
pub(crate) host_addr: Option<u64>,
|
||||||
mmap_size: Option<usize>,
|
pub(crate) mmap_size: Option<usize>,
|
||||||
}
|
}
|
||||||
|
|
||||||
trait VfioPciConfig {
|
pub(crate) trait VfioPciConfig {
|
||||||
fn read_config_byte(&self, offset: u32) -> u8 {
|
fn read_config_byte(&self, offset: u32) -> u8 {
|
||||||
let mut data: [u8; 1] = [0];
|
let mut data: [u8; 1] = [0];
|
||||||
self.read_config(offset, &mut data);
|
self.read_config(offset, &mut data);
|
||||||
@ -300,14 +300,14 @@ impl VfioPciConfig for VfioPciDeviceConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct VfioCommon {
|
pub(crate) struct VfioCommon {
|
||||||
configuration: PciConfiguration,
|
pub(crate) configuration: PciConfiguration,
|
||||||
mmio_regions: Vec<MmioRegion>,
|
pub(crate) mmio_regions: Vec<MmioRegion>,
|
||||||
interrupt: Interrupt,
|
pub(crate) interrupt: Interrupt,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl VfioCommon {
|
impl VfioCommon {
|
||||||
fn allocate_bars(
|
pub(crate) fn allocate_bars(
|
||||||
&mut self,
|
&mut self,
|
||||||
allocator: &mut SystemAllocator,
|
allocator: &mut SystemAllocator,
|
||||||
vfio_pci_config: &dyn VfioPciConfig,
|
vfio_pci_config: &dyn VfioPciConfig,
|
||||||
@ -472,7 +472,7 @@ impl VfioCommon {
|
|||||||
Ok(ranges)
|
Ok(ranges)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn free_bars(
|
pub(crate) fn free_bars(
|
||||||
&mut self,
|
&mut self,
|
||||||
allocator: &mut SystemAllocator,
|
allocator: &mut SystemAllocator,
|
||||||
) -> std::result::Result<(), PciDeviceError> {
|
) -> std::result::Result<(), PciDeviceError> {
|
||||||
@ -495,7 +495,7 @@ impl VfioCommon {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_msix_capabilities(
|
pub(crate) fn parse_msix_capabilities(
|
||||||
&mut self,
|
&mut self,
|
||||||
cap: u8,
|
cap: u8,
|
||||||
interrupt_manager: &Arc<dyn InterruptManager<GroupConfig = MsiIrqGroupConfig>>,
|
interrupt_manager: &Arc<dyn InterruptManager<GroupConfig = MsiIrqGroupConfig>>,
|
||||||
@ -530,7 +530,7 @@ impl VfioCommon {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_msi_capabilities(
|
pub(crate) fn parse_msi_capabilities(
|
||||||
&mut self,
|
&mut self,
|
||||||
cap: u8,
|
cap: u8,
|
||||||
interrupt_manager: &Arc<dyn InterruptManager<GroupConfig = MsiIrqGroupConfig>>,
|
interrupt_manager: &Arc<dyn InterruptManager<GroupConfig = MsiIrqGroupConfig>>,
|
||||||
|
Loading…
Reference in New Issue
Block a user