powerpc/powernv/ioda: Handle failures correctly in pnv_pci_ioda_iommu_bypass_supported()
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Wed, 10 Apr 2019 06:48:00 +0000 (16:48 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Tue, 30 Apr 2019 13:23:24 +0000 (23:23 +1000)
When the return value type was changed from int to bool, few places
were left unchanged, this fixes them. We did not hit these failures as
the first one is not happening at all and the second one is little
more likely to happen if the user switches a 33..58bit DMA capable
device between the VFIO and vendor drivers and there are not so many
of these.

Fixes: 2d6ad41b2c21 ("powerpc/powernv: use the generic iommu bypass code")
Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/platforms/powernv/pci-ioda.c

index 3ead4c2..9a9076a 100644 (file)
@@ -1836,7 +1836,7 @@ static bool pnv_pci_ioda_iommu_bypass_supported(struct pci_dev *pdev,
        struct pnv_ioda_pe *pe;
 
        if (WARN_ON(!pdn || pdn->pe_number == IODA_INVALID_PE))
-               return -ENODEV;
+               return false;
 
        pe = &phb->ioda.pe_array[pdn->pe_number];
        if (pe->tce_bypass_enabled) {
@@ -1859,7 +1859,7 @@ static bool pnv_pci_ioda_iommu_bypass_supported(struct pci_dev *pdev,
                /* Configure the bypass mode */
                s64 rc = pnv_pci_ioda_dma_64bit_bypass(pe);
                if (rc)
-                       return rc;
+                       return false;
                /* 4GB offset bypasses 32-bit space */
                pdev->dev.archdata.dma_offset = (1ULL << 32);
                return true;