vfio-pci/nvlink2: Allow fallback to ibm,mmio-atsd[0]
authorSam Bobroff <sbobroff@linux.ibm.com>
Tue, 31 Mar 2020 04:12:46 +0000 (15:12 +1100)
committerAlex Williamson <alex.williamson@redhat.com>
Wed, 1 Apr 2020 19:50:46 +0000 (13:50 -0600)
Older versions of skiboot only provide a single value in the device
tree property "ibm,mmio-atsd", even when multiple Address Translation
Shoot Down (ATSD) registers are present. This prevents NVLink2 devices
(other than the first) from being used with vfio-pci because vfio-pci
expects to be able to assign a dedicated ATSD register to each NVLink2
device.

However, ATSD registers can be shared among devices. This change
allows vfio-pci to fall back to sharing the register at index 0 if
necessary.

Fixes: 7f92891778df ("vfio_pci: Add NVIDIA GV100GL [Tesla V100 SXM2] subdriver")
Signed-off-by: Sam Bobroff <sbobroff@linux.ibm.com>
Reviewed-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/pci/vfio_pci_nvlink2.c

index df4d960..ed20d73 100644 (file)
@@ -422,8 +422,14 @@ int vfio_pci_ibm_npu2_init(struct vfio_pci_device *vdev)
 
        if (of_property_read_u64_index(hose->dn, "ibm,mmio-atsd", nvlink_index,
                        &mmio_atsd)) {
-               dev_warn(&vdev->pdev->dev, "No available ATSD found\n");
-               mmio_atsd = 0;
+               if (of_property_read_u64_index(hose->dn, "ibm,mmio-atsd", 0,
+                               &mmio_atsd)) {
+                       dev_warn(&vdev->pdev->dev, "No available ATSD found\n");
+                       mmio_atsd = 0;
+               } else {
+                       dev_warn(&vdev->pdev->dev,
+                                "Using fallback ibm,mmio-atsd[0] for ATSD.\n");
+               }
        }
 
        if (of_property_read_u64(npu_node, "ibm,device-tgt-addr", &tgt)) {