linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Kamal Mostafa <kamal@canonical.com>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org,
	kernel-team@lists.ubuntu.com
Cc: Brian King <brking@linux.vnet.ibm.com>,
	James Smart <james.smart@emulex.com>,
	Christoph Hellwig <hch@lst.de>,
	Chris J Arges <chris.j.arges@canonical.com>,
	Kamal Mostafa <kamal@canonical.com>
Subject: [PATCH 3.13.y-ckt 04/56] lpfc: Add iotag memory barrier
Date: Wed,  8 Jul 2015 08:39:45 -0700	[thread overview]
Message-ID: <1436370037-25874-5-git-send-email-kamal@canonical.com> (raw)
In-Reply-To: <1436370037-25874-1-git-send-email-kamal@canonical.com>

3.13.11-ckt23 -stable review patch.  If anyone has any objections, please let me know.

------------------

From: James Smart <james.smart@emulex.com>

commit 27f344eb15dd0da80ebec80c7245e8c85043f841 upstream.

Add a memory barrier to ensure the valid bit is read before
any of the cqe payload is read. This fixes an issue seen
on Power where the cqe payload was getting loaded before
the valid bit. When this occurred, we saw an iotag out of
range error when a command completed, but since the iotag
looked invalid the command didn't get completed to scsi core.
Later we hit the command timeout, attempted to abort the command,
then waited for the aborted command to get returned. Since the
adapter already returned the command, we timeout waiting,
and end up escalating EEH all the way to host reset. This
patch fixes this issue.

Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
Signed-off-by: James Smart <james.smart@emulex.com>

 ---

 lpfc_sli.c |   21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)
Signed-off-by: Christoph Hellwig <hch@lst.de>
Cc: Chris J Arges <chris.j.arges@canonical.com>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
---
 drivers/scsi/lpfc/lpfc_sli.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/scsi/lpfc/lpfc_sli.c b/drivers/scsi/lpfc/lpfc_sli.c
index 8f580fd..ce21132 100644
--- a/drivers/scsi/lpfc/lpfc_sli.c
+++ b/drivers/scsi/lpfc/lpfc_sli.c
@@ -265,6 +265,16 @@ lpfc_sli4_eq_get(struct lpfc_queue *q)
 		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;
 }
 
@@ -370,6 +380,17 @@ lpfc_sli4_cq_get(struct lpfc_queue *q)
 
 	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;
 }
 
-- 
1.9.1


  parent reply	other threads:[~2015-07-08 15:57 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-08 15:39 [3.13.y-ckt stable] Linux 3.13.11-ckt23 stable review Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 01/56] [3.13-stable only] Revert "Drivers: hv: vmbus: Correcting truncation error for constant HV_CRASH_CTL_CRASH_NOTIFY" Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 02/56] [3.13-stable only] Revert "Drivers: hv: vmbus: Add support for VMBus panic notifier handler" Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 03/56] vfs: read file_handle only once in handle_to_path Kamal Mostafa
2015-07-08 15:39 ` Kamal Mostafa [this message]
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 05/56] pipe: iovec: Fix memory corruption when retrying atomic copy as non-atomic Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 06/56] kvm: x86: fix kvm_apic_has_events to check for NULL pointer Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 07/56] [3.13-stable only] Revert "ARM: net: delegate filter to kernel interpreter when imm_offset() return value can't fit into 12bits." Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 08/56] gpio: gpio-kempld: Fix get_direction return value Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 09/56] ARM: dts: imx27: only map 4 Kbyte for fec registers Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 10/56] ARM: 8356/1: mm: handle non-pmd-aligned end of RAM Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 11/56] x86/mce: Fix MCE severity messages Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 12/56] hwmon: (ntc_thermistor) Ensure iio channel is of type IIO_VOLTAGE Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 13/56] lguest: fix out-by-one error in address checking Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 14/56] fs, omfs: add NULL terminator in the end up the token list Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 15/56] d_walk() might skip too much Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 16/56] hwmon: (nct6775) Add missing sysfs attribute initialization Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 17/56] target/pscsi: Don't leak scsi_host if hba is VIRTUAL_HOST Kamal Mostafa
2015-07-08 15:39 ` [PATCH 3.13.y-ckt 18/56] fs/binfmt_elf.c:load_elf_binary(): return -EINVAL on zero-length mappings Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 19/56] iio: adis16400: Report pressure channel scale Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 20/56] iio: adis16400: Use != channel indices for the two voltage channels Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 21/56] iio: adis16400: Compute the scan mask from channel indices Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 22/56] iio: adis16400: Remove unused variable Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 23/56] iio: adis16400: Fix burst mode Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 24/56] USB: serial: ftdi_sio: Add support for a Motion Tracker Development Board Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 25/56] iio: adc: twl6030-gpadc: Fix modalias Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 26/56] serial: imx: Fix DMA handling for IDLE condition aborts Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 27/56] usb: dwc3: gadget: Fix incorrect DEPCMD and DGCMD status macros Kamal Mostafa
2015-07-10 19:51   ` Felipe Balbi
2015-07-13 19:30     ` Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 28/56] ALSA: usb-audio: Add mic volume fix quirk for Logitech Quickcam Fusion Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 29/56] n_tty: Fix auditing support for cannonical mode Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 30/56] drm/i915/hsw: Fix workaround for server AUX channel clock divisor Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 31/56] x86/asm/irq: Stop relying on magic JMP behavior for early_idt_handlers Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 32/56] lib: Fix strnlen_user() to not touch memory after specified maximum Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 33/56] Input: elantech - fix detection of touchpads where the revision matches a known rate Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 34/56] ALSA: hda/realtek - Add a fixup for another Acer Aspire 9420 Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 35/56] ALSA: usb-audio: add MAYA44 USB+ mixer control names Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 36/56] ALSA: usb-audio: fix missing input volume controls in MAYA44 USB(+) Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 37/56] USB: cp210x: add ID for HubZ dual ZigBee and Z-Wave dongle Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 38/56] Input: elantech - add new icbody type Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 39/56] MIPS: Fix enabling of DEBUG_STACKOVERFLOW Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 40/56] virtio_pci: Clear stale cpumask when setting irq affinity Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 41/56] pata_octeon_cf: fix broken build Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 42/56] Input: synaptics - add min/max quirk for Lenovo S540 Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 43/56] drm/i915: Fix DDC probe for passive adapters Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 44/56] cfg80211: wext: clear sinfo struct before calling driver Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 45/56] mm/memory_hotplug.c: set zone->wait_table to null after freeing it Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 46/56] ring-buffer-benchmark: Fix the wrong sched_priority of producer Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 47/56] drm/radeon: fix freeze for laptop with Turks/Thames GPU Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 48/56] block: fix ext_dev_lock lockdep report Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 49/56] bridge: disable softirqs around br_fdb_update to avoid lockup Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 50/56] bridge: fix multicast router rlist endless loop Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 51/56] ALSA: hda - adding a DAC/pin preference map for a HP Envy TS machine Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 52/56] drm/mgag200: Reject non-character-cell-aligned mode widths Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 53/56] crypto: caam - fix uninitialized state->buf_dma field Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 54/56] crypto: caam - improve initalization for context state saves Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 55/56] crypto: caam - fix RNG buffer cache alignment Kamal Mostafa
2015-07-08 15:40 ` [PATCH 3.13.y-ckt 56/56] [3-13-stable only] vm: Fix incomplete backport of VM_FAULT_SIGSEGV handling support Kamal Mostafa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1436370037-25874-5-git-send-email-kamal@canonical.com \
    --to=kamal@canonical.com \
    --cc=brking@linux.vnet.ibm.com \
    --cc=chris.j.arges@canonical.com \
    --cc=hch@lst.de \
    --cc=james.smart@emulex.com \
    --cc=kernel-team@lists.ubuntu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).