qemu/tests/libqos/virtio-pci.h
<<
>>
Prefs
   1/*
   2 * libqos virtio PCI definitions
   3 *
   4 * Copyright (c) 2014 Marc MarĂ­
   5 *
   6 * This work is licensed under the terms of the GNU GPL, version 2 or later.
   7 * See the COPYING file in the top-level directory.
   8 */
   9
  10#ifndef LIBQOS_VIRTIO_PCI_H
  11#define LIBQOS_VIRTIO_PCI_H
  12
  13#include "libqos/virtio.h"
  14#include "libqos/pci.h"
  15
  16typedef struct QVirtioPCIDevice {
  17    QVirtioDevice vdev;
  18    QPCIDevice *pdev;
  19    QPCIBar bar;
  20    uint16_t config_msix_entry;
  21    uint64_t config_msix_addr;
  22    uint32_t config_msix_data;
  23} QVirtioPCIDevice;
  24
  25typedef struct QVirtQueuePCI {
  26    QVirtQueue vq;
  27    uint16_t msix_entry;
  28    uint64_t msix_addr;
  29    uint32_t msix_data;
  30} QVirtQueuePCI;
  31
  32extern const QVirtioBus qvirtio_pci;
  33
  34QVirtioPCIDevice *qvirtio_pci_device_find(QPCIBus *bus, uint16_t device_type);
  35QVirtioPCIDevice *qvirtio_pci_device_find_slot(QPCIBus *bus,
  36                                               uint16_t device_type, int slot);
  37void qvirtio_pci_device_free(QVirtioPCIDevice *dev);
  38
  39void qvirtio_pci_device_enable(QVirtioPCIDevice *d);
  40void qvirtio_pci_device_disable(QVirtioPCIDevice *d);
  41
  42void qvirtio_pci_set_msix_configuration_vector(QVirtioPCIDevice *d,
  43                                        QGuestAllocator *alloc, uint16_t entry);
  44void qvirtqueue_pci_msix_setup(QVirtioPCIDevice *d, QVirtQueuePCI *vqpci,
  45                                        QGuestAllocator *alloc, uint16_t entry);
  46#endif
  47