History

virtio: Implement get_shm_region for PCI transport

On PCI the shm regions are found using capability entries; find a region by searching for the capability.

Sebastien Boeuf committed 6 years ago

Commit 0dd4ff91 parent 5bfe37c2 files · +105 −1Browse files

Showing the changes to include/uapi (1 of 2 files). Show all

Unified · Split

include/uapi/linux/virtio_pci.h+10−1
@@ -113,6 +113,8 @@ · 112 unmodified lines
113#define VIRTIO_PCI_CAP_DEVICE_CFG 4113#define VIRTIO_PCI_CAP_DEVICE_CFG 4
114/* PCI configuration access */114/* PCI configuration access */
115#define VIRTIO_PCI_CAP_PCI_CFG 5115#define VIRTIO_PCI_CAP_PCI_CFG 5
116/* Additional shared memory capability */
117#define VIRTIO_PCI_CAP_SHARED_MEMORY_CFG 8
116 118
117/* This is the PCI capability header: */119/* This is the PCI capability header: */
118struct virtio_pci_cap {120struct virtio_pci_cap {
@@ -121,11 +123,18 @@ struct virtio_pci_cap { · 2 unmodified lines
121 __u8 cap_len; /* Generic PCI field: capability length */123 __u8 cap_len; /* Generic PCI field: capability length */
122 __u8 cfg_type; /* Identifies the structure. */124 __u8 cfg_type; /* Identifies the structure. */
123 __u8 bar; /* Where to find it. */125 __u8 bar; /* Where to find it. */
124 __u8 padding[3]; /* Pad to full dword. */126 __u8 id; /* Multiple capabilities of the same type */
127 __u8 padding[2]; /* Pad to full dword. */
125 __le32 offset; /* Offset within bar. */128 __le32 offset; /* Offset within bar. */
126 __le32 length; /* Length of the structure, in bytes. */129 __le32 length; /* Length of the structure, in bytes. */
127};130};
128 131
132struct virtio_pci_cap64 {
133 struct virtio_pci_cap cap;
134 __le32 offset_hi; /* Most sig 32 bits of offset */
135 __le32 length_hi; /* Most sig 32 bits of length */
136};
137
129struct virtio_pci_notify_cap {138struct virtio_pci_notify_cap {
130 struct virtio_pci_cap cap;139 struct virtio_pci_cap cap;
131 __le32 notify_off_multiplier; /* Multiplier for queue_notify_off. */140 __le32 notify_off_multiplier; /* Multiplier for queue_notify_off. */