mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-12-22 13:45:20 +00:00
iommu: Add topology structures
The virtio-iommu device defines a new virtio feature allowing the topology to be discovered fully through virtio configuration. By topology, it means describing the devices attached to the virtual IOMMU. This is currently managed through ACPI with IORT and VIOT table, but this is another way of describing it. Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
This commit is contained in:
parent
db42caef42
commit
0c73ff8129
@ -65,6 +65,10 @@ const VIRTIO_IOMMU_F_MAP_UNMAP: u32 = 2;
|
||||
#[allow(unused)]
|
||||
const VIRTIO_IOMMU_F_BYPASS: u32 = 3;
|
||||
const VIRTIO_IOMMU_F_PROBE: u32 = 4;
|
||||
#[allow(unused)]
|
||||
const VIRTIO_IOMMU_F_MMIO: u32 = 5;
|
||||
#[allow(unused)]
|
||||
const VIRTIO_IOMMU_F_TOPOLOGY: u32 = 6;
|
||||
|
||||
// Support 2MiB and 4KiB page sizes.
|
||||
const VIRTIO_IOMMU_PAGE_SIZE_MASK: u64 = (2 << 20) | (4 << 10);
|
||||
@ -109,6 +113,34 @@ struct VirtioIommuConfig {
|
||||
|
||||
unsafe impl ByteValued for VirtioIommuConfig {}
|
||||
|
||||
#[allow(unused)]
|
||||
const VIRTIO_IOMMU_TOPO_PCI_RANGE: u32 = 1;
|
||||
#[allow(unused)]
|
||||
const VIRTIO_IOMMU_TOPO_ENDPOINT: u32 = 2;
|
||||
|
||||
#[derive(Copy, Clone, Debug, Default)]
|
||||
#[repr(packed)]
|
||||
struct VirtioIommuTopoPciRange {
|
||||
type_: u16,
|
||||
hierarchy: u16,
|
||||
requester_start: u16,
|
||||
requester_end: u16,
|
||||
endpoint_start: u32,
|
||||
}
|
||||
|
||||
unsafe impl ByteValued for VirtioIommuTopoPciRange {}
|
||||
|
||||
#[derive(Copy, Clone, Debug, Default)]
|
||||
#[repr(packed)]
|
||||
struct VirtioIommuTopoEndpoint {
|
||||
type_: u16,
|
||||
reserved: u16,
|
||||
endpoint: u32,
|
||||
address: u64,
|
||||
}
|
||||
|
||||
unsafe impl ByteValued for VirtioIommuTopoEndpoint {}
|
||||
|
||||
/// Virtio IOMMU request type
|
||||
const VIRTIO_IOMMU_T_ATTACH: u8 = 1;
|
||||
const VIRTIO_IOMMU_T_DETACH: u8 = 2;
|
||||
|
Loading…
Reference in New Issue
Block a user