]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - drivers/infiniband/hw/qib/qib_init.c
IB/qib: Clear eager buffer memory for each new process
[net-next-2.6.git] / drivers / infiniband / hw / qib / qib_init.c
index c0139c07e97ea7267912b833961501b862223fe1..1d4db4b19d76e5518a9a4f219a6cd7279bc7902d 100644 (file)
@@ -1237,7 +1237,13 @@ static int __devinit qib_init_one(struct pci_dev *pdev,
         */
        switch (ent->device) {
        case PCI_DEVICE_ID_QLOGIC_IB_6120:
+#ifdef CONFIG_PCI_MSI
                dd = qib_init_iba6120_funcs(pdev, ent);
+#else
+               qib_early_err(&pdev->dev, "QLogic PCIE device 0x%x cannot "
+                     "work if CONFIG_PCI_MSI is not enabled\n",
+                     ent->device);
+#endif
                break;
 
        case PCI_DEVICE_ID_QLOGIC_IB_7220:
@@ -1466,6 +1472,9 @@ int qib_setup_eagerbufs(struct qib_ctxtdata *rcd)
                dma_addr_t pa = rcd->rcvegrbuf_phys[chunk];
                unsigned i;
 
+               /* clear for security and sanity on each use */
+               memset(rcd->rcvegrbuf[chunk], 0, size);
+
                for (i = 0; e < egrcnt && i < egrperchunk; e++, i++) {
                        dd->f_put_tid(dd, e + egroff +
                                          (u64 __iomem *)
@@ -1493,6 +1502,12 @@ bail:
        return -ENOMEM;
 }
 
+/*
+ * Note: Changes to this routine should be mirrored
+ * for the diagnostics routine qib_remap_ioaddr32().
+ * There is also related code for VL15 buffers in qib_init_7322_variables().
+ * The teardown code that unmaps is in qib_pcie_ddcleanup()
+ */
 int init_chip_wc_pat(struct qib_devdata *dd, u32 vl15buflen)
 {
        u64 __iomem *qib_kregbase = NULL;