|
iPXE
|
#include "errno.h"#include "byteswap.h"#include "etherboot.h"#include "ipxe/io.h"#include "ipxe/iomap.h"#include "ipxe/pci.h"#include "ipxe/dma.h"#include "ipxe/reboot.h"#include "ipxe/virtio-pci.h"#include "ipxe/virtio-ring.h"Go to the source code of this file.
Macros | |
| #define | CFG_POS(vdev, field) |
| #define CFG_POS | ( | vdev, | |
| field ) |
Definition at line 106 of file virtio-pci.c.
Referenced by prep_pci_cfg_cap(), vpm_ioread16(), vpm_ioread32(), vpm_ioread8(), vpm_iowrite16(), vpm_iowrite32(), and vpm_iowrite8().
|
static |
Definition at line 25 of file virtio-pci.c.
References vring_virtqueue::dma, dma_alloc(), vring_virtqueue::empty_header, ENOMEM, vring_virtqueue::map, memset(), num, PAGE_MASK, vring_virtqueue::queue, vring_virtqueue::queue_size, u16, vring_virtqueue::vdata, and vring_size.
Referenced by vp_find_vq(), and vpm_find_vqs().
| void vp_free_vq | ( | struct vring_virtqueue * | vq | ) |
Definition at line 48 of file virtio-pci.c.
References dma_free(), vring_virtqueue::map, NULL, vring_virtqueue::queue, vring_virtqueue::queue_size, and vring_virtqueue::vdata.
Referenced by virtnet_free_virtqueues().
| int vp_find_vq | ( | unsigned int | ioaddr, |
| int | queue_index, | ||
| struct vring_virtqueue * | vq, | ||
| struct dma_device * | dma_dev, | ||
| size_t | header_size ) |
Definition at line 58 of file virtio-pci.c.
References DBG, vring::desc, dma(), vring_virtqueue::dma, inl, inw, ioaddr, vring_virtqueue::map, num, outl, outw, PAGE_SHIFT, vring_virtqueue::queue, vring_virtqueue::queue_index, rc, u16, VIRTIO_PCI_QUEUE_NUM, VIRTIO_PCI_QUEUE_PFN, VIRTIO_PCI_QUEUE_SEL, vp_alloc_vq(), vring_virtqueue::vring, and vring_init().
Referenced by virtnet_open_legacy().
|
static |
Definition at line 109 of file virtio-pci.c.
References virtio_pci_region::bar, virtio_pci_region::base, CFG_POS, length, offset, virtio_pci_modern_device::pci, pci_write_config_byte(), pci_write_config_dword(), and u32.
Referenced by vpm_ioread16(), vpm_ioread32(), vpm_ioread8(), vpm_iowrite16(), vpm_iowrite32(), and vpm_iowrite8().
| void vpm_iowrite8 | ( | struct virtio_pci_modern_device * | vdev, |
| struct virtio_pci_region * | region, | ||
| u8 | data, | ||
| size_t | offset ) |
Definition at line 119 of file virtio-pci.c.
References assert, virtio_pci_region::base, CFG_POS, data, virtio_pci_region::flags, offset, outb, virtio_pci_modern_device::pci, pci_write_config_byte(), prep_pci_cfg_cap(), u8, VIRTIO_PCI_REGION_MEMORY, VIRTIO_PCI_REGION_PCI_CONFIG, VIRTIO_PCI_REGION_PORT, VIRTIO_PCI_REGION_TYPE_MASK, and writeb.
Referenced by vpm_add_status(), and vpm_reset().
| void vpm_iowrite16 | ( | struct virtio_pci_modern_device * | vdev, |
| struct virtio_pci_region * | region, | ||
| u16 | data, | ||
| size_t | offset ) |
Definition at line 139 of file virtio-pci.c.
References assert, virtio_pci_region::base, CFG_POS, cpu_to_le16, data, virtio_pci_region::flags, offset, outw, virtio_pci_modern_device::pci, pci_write_config_word(), prep_pci_cfg_cap(), u16, VIRTIO_PCI_REGION_MEMORY, VIRTIO_PCI_REGION_PCI_CONFIG, VIRTIO_PCI_REGION_PORT, VIRTIO_PCI_REGION_TYPE_MASK, and writew.
Referenced by vpm_find_vqs(), and vpm_notify().
| void vpm_iowrite32 | ( | struct virtio_pci_modern_device * | vdev, |
| struct virtio_pci_region * | region, | ||
| u32 | data, | ||
| size_t | offset ) |
Definition at line 160 of file virtio-pci.c.
References assert, virtio_pci_region::base, CFG_POS, cpu_to_le32, data, virtio_pci_region::flags, offset, outl, virtio_pci_modern_device::pci, pci_write_config_dword(), prep_pci_cfg_cap(), u32, VIRTIO_PCI_REGION_MEMORY, VIRTIO_PCI_REGION_PCI_CONFIG, VIRTIO_PCI_REGION_PORT, VIRTIO_PCI_REGION_TYPE_MASK, and writel.
Referenced by vpm_get_features(), vpm_iowrite64(), and vpm_set_features().
| u8 vpm_ioread8 | ( | struct virtio_pci_modern_device * | vdev, |
| struct virtio_pci_region * | region, | ||
| size_t | offset ) |
Definition at line 181 of file virtio-pci.c.
References assert, virtio_pci_region::base, CFG_POS, data, virtio_pci_region::flags, inb, offset, virtio_pci_modern_device::pci, pci_read_config_byte(), prep_pci_cfg_cap(), readb, u8, VIRTIO_PCI_REGION_MEMORY, VIRTIO_PCI_REGION_PCI_CONFIG, VIRTIO_PCI_REGION_PORT, and VIRTIO_PCI_REGION_TYPE_MASK.
Referenced by vpm_add_status(), vpm_get(), vpm_get_isr(), vpm_get_status(), and vpm_reset().
| u16 vpm_ioread16 | ( | struct virtio_pci_modern_device * | vdev, |
| struct virtio_pci_region * | region, | ||
| size_t | offset ) |
Definition at line 204 of file virtio-pci.c.
References assert, virtio_pci_region::base, CFG_POS, data, virtio_pci_region::flags, inw, le16_to_cpu, offset, virtio_pci_modern_device::pci, pci_read_config_word(), prep_pci_cfg_cap(), readw, u16, VIRTIO_PCI_REGION_MEMORY, VIRTIO_PCI_REGION_PCI_CONFIG, VIRTIO_PCI_REGION_PORT, and VIRTIO_PCI_REGION_TYPE_MASK.
Referenced by vpm_find_vqs().
| u32 vpm_ioread32 | ( | struct virtio_pci_modern_device * | vdev, |
| struct virtio_pci_region * | region, | ||
| size_t | offset ) |
Definition at line 227 of file virtio-pci.c.
References assert, virtio_pci_region::base, CFG_POS, data, virtio_pci_region::flags, inl, le32_to_cpu, offset, virtio_pci_modern_device::pci, pci_read_config_dword(), prep_pci_cfg_cap(), readl, u32, VIRTIO_PCI_REGION_MEMORY, VIRTIO_PCI_REGION_PCI_CONFIG, VIRTIO_PCI_REGION_PORT, and VIRTIO_PCI_REGION_TYPE_MASK.
Referenced by vpm_get_features().
| int virtio_pci_find_capability | ( | struct pci_device * | pci, |
| uint8_t | cfg_type ) |
Definition at line 250 of file virtio-pci.c.
References offsetof, PCI_CAP_ID_VNDR, pci_find_capability(), pci_find_next_capability(), pci_read_config_byte(), and type.
Referenced by virtnet_probe_modern().
| int virtio_pci_map_capability | ( | struct pci_device * | pci, |
| int | cap, | ||
| size_t | minlen, | ||
| u32 | align, | ||
| u32 | start, | ||
| u32 | size, | ||
| struct virtio_pci_region * | region ) |
Definition at line 276 of file virtio-pci.c.
References virtio_pci_region::bar, base, virtio_pci_region::base, DBG, EINVAL, virtio_pci_region::flags, length, virtio_pci_region::length, NULL, offset, offsetof, pci_bar_size(), pci_bar_start(), PCI_BASE_ADDRESS, PCI_BASE_ADDRESS_SPACE_IO, pci_ioremap(), pci_read_config_byte(), pci_read_config_dword(), size, start, u32, u8, VIRTIO_PCI_REGION_MEMORY, VIRTIO_PCI_REGION_PCI_CONFIG, and VIRTIO_PCI_REGION_PORT.
Referenced by virtnet_probe_modern(), and vpm_find_vqs().
| void virtio_pci_unmap_capability | ( | struct virtio_pci_region * | region | ) |
Definition at line 346 of file virtio-pci.c.
References virtio_pci_region::base, virtio_pci_region::flags, iounmap(), VIRTIO_PCI_REGION_MEMORY, and VIRTIO_PCI_REGION_TYPE_MASK.
Referenced by virtnet_free_virtqueues(), virtnet_probe_modern(), and virtnet_remove().
| void vpm_notify | ( | struct virtio_pci_modern_device * | vdev, |
| struct vring_virtqueue * | vq ) |
Definition at line 354 of file virtio-pci.c.
References vring_virtqueue::notification, vring_virtqueue::queue_index, u16, and vpm_iowrite16().
Referenced by vring_kick().
| int vpm_find_vqs | ( | struct virtio_pci_modern_device * | vdev, |
| unsigned | nvqs, | ||
| struct vring_virtqueue * | vqs, | ||
| struct dma_device * | dma_dev, | ||
| size_t | header_size ) |
Definition at line 360 of file virtio-pci.c.
References vring::avail, virtio_pci_modern_device::common, COMMON_OFFSET, DBG, vring::desc, dma(), vring_virtqueue::dma, EINVAL, ENOENT, vring_virtqueue::map, MAX_QUEUE_NUM, vring_virtqueue::notification, virtio_pci_modern_device::notify_cap_pos, offsetof, virtio_pci_modern_device::pci, pci_read_config_dword(), vring_virtqueue::queue, vring_virtqueue::queue_index, vring_virtqueue::queue_size, size, u16, u32, vring::used, virtio_pci_map_capability(), vp_alloc_vq(), vpm_ioread16(), vpm_iowrite16(), vpm_iowrite64(), vring_virtqueue::vring, and vring_init().
Referenced by virtnet_open_modern().