[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH] vfio-pci: Enable PCIe extended config space
From: |
Michael S. Tsirkin |
Subject: |
Re: [Qemu-devel] [PATCH] vfio-pci: Enable PCIe extended config space |
Date: |
Mon, 28 Jan 2013 19:23:16 +0200 |
On Wed, Jan 23, 2013 at 05:46:13PM -0700, Alex Williamson wrote:
> We don't know pre-init time whether the device we're exposing is PCIe
> or legacy PCI. We could ask for it to be specified via a device
> option, but that seems like too much to ask of the user. Instead we
> can assume everything will be PCIe, which makes PCI-core allocate
> enough config space. Removing the flag during init leaves the space
> allocated, but allows legacy PCI devices to report the real device
> config space size to rest of Qemu.
>
> Signed-off-by: Alex Williamson <address@hidden>
It's a bit of a hack but I don't have a better idea.
Acked-by: Michael S. Tsirkin <address@hidden>
> ---
> hw/vfio_pci.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/hw/vfio_pci.c b/hw/vfio_pci.c
> index c51ae67..66537b7 100644
> --- a/hw/vfio_pci.c
> +++ b/hw/vfio_pci.c
> @@ -1899,6 +1899,9 @@ static int vfio_get_device(VFIOGroup *group, const char
> *name, VFIODevice *vdev)
> (unsigned long)reg_info.flags);
>
> vdev->config_size = reg_info.size;
> + if (vdev->config_size == PCI_CONFIG_SPACE_SIZE) {
> + vdev->pdev.cap_present &= ~QEMU_PCI_CAP_EXPRESS;
> + }
> vdev->config_offset = reg_info.offset;
>
> error:
> @@ -2121,6 +2124,7 @@ static void vfio_pci_dev_class_init(ObjectClass *klass,
> void *data)
> pdc->exit = vfio_exitfn;
> pdc->config_read = vfio_pci_read_config;
> pdc->config_write = vfio_pci_write_config;
> + pdc->is_express = 1; /* We might be */
> }
>
> static const TypeInfo vfio_pci_dev_info = {
>