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 <alex.william...@redhat.com>

It's a bit of a hack but I don't have a better idea.
Acked-by: Michael S. Tsirkin <m...@redhat.com>


> ---
>  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 = {
> 
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to