return NULL;
 
        q->hba_index = idx;
+
+       /*
+        * insert barrier for instruction interlock : data from the hardware
+        * must have the valid bit checked before it can be copied and acted
+        * upon. Given what was seen in lpfc_sli4_cq_get() of speculative
+        * instructions allowing action on content before valid bit checked,
+        * add barrier here as well. May not be needed as "content" is a
+        * single 32-bit entity here (vs multi word structure for cq's).
+        */
+       mb();
        return eqe;
 }
 
 
        cqe = q->qe[q->hba_index].cqe;
        q->hba_index = idx;
+
+       /*
+        * insert barrier for instruction interlock : data from the hardware
+        * must have the valid bit checked before it can be copied and acted
+        * upon. Speculative instructions were allowing a bcopy at the start
+        * of lpfc_sli4_fp_handle_wcqe(), which is called immediately
+        * after our return, to copy data before the valid bit check above
+        * was done. As such, some of the copied data was stale. The barrier
+        * ensures the check is before any data is copied.
+        */
+       mb();
        return cqe;
 }