[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-stable] [PATCH for-1.7] vfio-pci: Fix multifunction=on
From: |
Bandan Das |
Subject: |
Re: [Qemu-stable] [PATCH for-1.7] vfio-pci: Fix multifunction=on |
Date: |
Wed, 13 Nov 2013 18:25:58 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
Alex Williamson <address@hidden> writes:
> When an assigned device is initialized it copies the device config
> space into the emulated config space. Unfortunately multifunction is
> setup prior to the device initfn and gets clobbered. We need to
> restore it just like pci-assign does.
>
> Signed-off-by: Alex Williamson <address@hidden>
> Cc: address@hidden
> ---
>
> Anthony, please apply directly or let me know if you'd prefer a pull
> request. Thanks
>
> hw/misc/vfio.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/hw/misc/vfio.c b/hw/misc/vfio.c
> index fe95e03..f7f8a19 100644
> --- a/hw/misc/vfio.c
> +++ b/hw/misc/vfio.c
> @@ -3568,6 +3568,13 @@ static int vfio_initfn(PCIDevice *pdev)
> vdev->emulated_config_bits[PCI_HEADER_TYPE] =
> PCI_HEADER_TYPE_MULTI_FUNCTION;
>
> + /* Restore or clear multifunction, this is always controlled by QEMU */
> + if (vdev->pdev.cap_present & QEMU_PCI_CAP_MULTIFUNCTION) {
> + vdev->pdev.config[PCI_HEADER_TYPE] |= PCI_HEADER_TYPE_MULTI_FUNCTION;
> + } else {
> + vdev->pdev.config[PCI_HEADER_TYPE] &=
> ~PCI_HEADER_TYPE_MULTI_FUNCTION;
> + }
> +
> /*
> * Clear host resource mapping info. If we choose not to register a
> * BAR, such as might be the case with the option ROM, we can get
Reviewed-by: Bandan Das <address@hidden>