On Thu, Jul 24, 2014 at 08:31:00PM +0200, Marc Marí wrote:
> +static uint32_t qvirtio_pci_get_features(QVirtioDevice *d)
> +{
> + QVirtioPCIDevice *dev = (QVirtioPCIDevice *)d;
> + return qpci_io_readl(dev->pdev, dev->addr + QVIRTIO_DEVICE_FEATURES);
> +}
Unused? If it's unused, then it's untested.
> +
> +static uint8_t qvirtio_pci_get_status(QVirtioDevice *d)
> +{
> + QVirtioPCIDevice *dev = (QVirtioPCIDevice *)d;
> + return qpci_io_readb(dev->pdev, dev->addr + QVIRTIO_DEVICE_STATUS);
> +}
Unused?
> +
> +static void qvirtio_pci_set_status(QVirtioDevice *d, uint8_t val)
> +{
> + QVirtioPCIDevice *dev = (QVirtioPCIDevice *)d;
> + qpci_io_writeb(dev->pdev, dev->addr + QVIRTIO_DEVICE_STATUS, val);
Unused?
> @@ -73,3 +97,11 @@ QVirtioPCIDevice *qvirtio_pci_device_find(QPCIBus *bus,
> uint16_t device_type)
>
> return dev;
> }
> +
> +void qvirtio_pci_enable_device(QVirtioPCIDevice *d)
> +{
> + qpci_device_enable(d->pdev);
> + d->addr = qpci_iomap(d->pdev, 0);
> + g_assert(d->addr != NULL);
> +}
Where is qpci_iounmap() called to clean up?
> @@ -67,6 +69,18 @@ static void pci_basic(void)
> g_assert_cmphex(dev->vdev.device_type, ==, QVIRTIO_BLK_DEVICE_ID);
> g_assert_cmphex(dev->pdev->devfn, ==, ((PCI_SLOT << 3) | PCI_FN));
>
> + qvirtio_pci_enable_device(dev);
> + qvirtio_reset(&qvirtio_pci, &dev->vdev);
> + qvirtio_set_acknowledge(&qvirtio_pci, &dev->vdev);
> + qvirtio_set_driver(&qvirtio_pci, &dev->vdev);
> +
> + /* MSI-X is not enabled */
> + addr = dev->addr + QVIRTIO_DEVICE_SPECIFIC_NO_MSIX;
> +
> + capacity = qpci_io_readl(dev->pdev, addr) |
> + qpci_io_readl(dev->pdev, addr+4);
> + g_assert_cmpint(capacity, ==, TEST_IMAGE_SIZE/512);
Please add a qvirtio_config_read() function instead of directly
accessing the virtio configuration space via PCI.
Stefan
pgpJkubtbLrqG.pgp
Description: PGP signature
