Re: [PATCH 5/7] vfio: Use new interfaces for MSI/MSI-X enablement

From: Alex Williamson
Date: Tue Jan 07 2014 - 13:34:28 EST


On Tue, 2014-01-07 at 19:05 +0100, Alexander Gordeev wrote:
> This update also fixes a bug when deprecated pci_enable_msix()
> and pci_enable_msi_block() functions return a positive return
> value which indicats the number of interrupts that could have
> been allocated rather than a successful allocation. The driver
> misinterpreted this value and assumed MSI-X/MSIs are enabled,
> although in fact it were not.

No, the driver interpreted it correctly, which is why anything other
than zero is handled as an error. This patch looks incorrect if the new
interfaces follow the same return convention. Thanks,

Alex

> Signed-off-by: Alexander Gordeev <agordeev@xxxxxxxxxx>
> ---
> drivers/vfio/pci/vfio_pci_intrs.c | 8 ++++----
> 1 files changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/vfio/pci/vfio_pci_intrs.c b/drivers/vfio/pci/vfio_pci_intrs.c
> index 641bc87..66d1746 100644
> --- a/drivers/vfio/pci/vfio_pci_intrs.c
> +++ b/drivers/vfio/pci/vfio_pci_intrs.c
> @@ -482,15 +482,15 @@ static int vfio_msi_enable(struct vfio_pci_device *vdev, int nvec, bool msix)
> for (i = 0; i < nvec; i++)
> vdev->msix[i].entry = i;
>
> - ret = pci_enable_msix(pdev, vdev->msix, nvec);
> - if (ret) {
> + ret = pci_enable_msix_range(pdev, vdev->msix, nvec, nvec);
> + if (ret < 0) {
> kfree(vdev->msix);
> kfree(vdev->ctx);
> return ret;
> }
> } else {
> - ret = pci_enable_msi_block(pdev, nvec);
> - if (ret) {
> + ret = pci_enable_msi_range(pdev, nvec, nvec);
> + if (ret < 0) {
> kfree(vdev->ctx);
> return ret;
> }



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/