Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma
[linux-2.6-microblaze.git] / drivers / infiniband / hw / hfi1 / pcie.c
index bf601c7..4d4371b 100644 (file)
@@ -178,6 +178,14 @@ int hfi1_pcie_ddinit(struct hfi1_devdata *dd, struct pci_dev *pdev)
                return -ENOMEM;
        }
        dd_dev_info(dd, "UC base1: %p for %x\n", dd->kregbase1, RCV_ARRAY);
+
+       /* verify that reads actually work, save revision for reset check */
+       dd->revision = readq(dd->kregbase1 + CCE_REVISION);
+       if (dd->revision == ~(u64)0) {
+               dd_dev_err(dd, "Cannot read chip CSRs\n");
+               goto nomem;
+       }
+
        dd->chip_rcv_array_count = readq(dd->kregbase1 + RCV_ARRAY_CNT);
        dd_dev_info(dd, "RcvArray count: %u\n", dd->chip_rcv_array_count);
        dd->base2_start  = RCV_ARRAY + dd->chip_rcv_array_count * 8;