stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: <gregkh@linuxfoundation.org>
To: sumit.semwal@linaro.org, alexander.levin@verizon.com,
	gregkh@linuxfoundation.org, krisman@linux.vnet.ibm.com,
	peter@hurleysoftware.com
Cc: <stable@vger.kernel.org>, <stable-commits@vger.kernel.org>
Subject: Patch "serial: 8250_pci: Detach low-level driver during PCI error recovery" has been added to the 4.4-stable tree
Date: Tue, 28 Mar 2017 14:13:29 +0200	[thread overview]
Message-ID: <149070320921433@kroah.com> (raw)
In-Reply-To: <1490458699-24484-20-git-send-email-sumit.semwal@linaro.org>


This is a note to let you know that I've just added the patch titled

    serial: 8250_pci: Detach low-level driver during PCI error recovery

to the 4.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     serial-8250_pci-detach-low-level-driver-during-pci-error-recovery.patch
and it can be found in the queue-4.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@vger.kernel.org> know about it.


>From foo@baz Tue Mar 28 13:59:27 CEST 2017
From: Sumit Semwal <sumit.semwal@linaro.org>
Date: Sat, 25 Mar 2017 21:48:19 +0530
Subject: serial: 8250_pci: Detach low-level driver during PCI error recovery
To: stable@vger.kernel.org
Cc: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Sasha Levin <alexander.levin@verizon.com>, Sumit Semwal <sumit.semwal@linaro.org>
Message-ID: <1490458699-24484-20-git-send-email-sumit.semwal@linaro.org>

From: Sumit Semwal <sumit.semwal@linaro.org>


From: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>

[ Upstream commit f209fa03fc9d131b3108c2e4936181eabab87416 ]

During a PCI error recovery, like the ones provoked by EEH in the ppc64
platform, all IO to the device must be blocked while the recovery is
completed.  Current 8250_pci implementation only suspends the port
instead of detaching it, which doesn't prevent incoming accesses like
TIOCMGET and TIOCMSET calls from reaching the device.  Those end up
racing with the EEH recovery, crashing it.  Similar races were also
observed when opening the device and when shutting it down during
recovery.

This patch implements a more robust IO blockage for the 8250_pci
recovery by unregistering the port at the beginning of the procedure and
re-adding it afterwards.  Since the port is detached from the uart
layer, we can be sure that no request will make through to the device
during recovery.  This is similar to the solution used by the JSM serial
driver.

I thank Peter Hurley <peter@hurleysoftware.com> for valuable input on
this one over one year ago.

Signed-off-by: Gabriel Krisman Bertazi <krisman@linux.vnet.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Sumit Semwal <sumit.semwal@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/tty/serial/8250/8250_pci.c |   23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

--- a/drivers/tty/serial/8250/8250_pci.c
+++ b/drivers/tty/serial/8250/8250_pci.c
@@ -57,6 +57,7 @@ struct serial_private {
 	unsigned int		nr;
 	void __iomem		*remapped_bar[PCI_NUM_BAR_RESOURCES];
 	struct pci_serial_quirk	*quirk;
+	const struct pciserial_board *board;
 	int			line[0];
 };
 
@@ -4058,6 +4059,7 @@ pciserial_init_ports(struct pci_dev *dev
 		}
 	}
 	priv->nr = i;
+	priv->board = board;
 	return priv;
 
 err_deinit:
@@ -4068,7 +4070,7 @@ err_out:
 }
 EXPORT_SYMBOL_GPL(pciserial_init_ports);
 
-void pciserial_remove_ports(struct serial_private *priv)
+void pciserial_detach_ports(struct serial_private *priv)
 {
 	struct pci_serial_quirk *quirk;
 	int i;
@@ -4088,7 +4090,11 @@ void pciserial_remove_ports(struct seria
 	quirk = find_quirk(priv->dev);
 	if (quirk->exit)
 		quirk->exit(priv->dev);
+}
 
+void pciserial_remove_ports(struct serial_private *priv)
+{
+	pciserial_detach_ports(priv);
 	kfree(priv);
 }
 EXPORT_SYMBOL_GPL(pciserial_remove_ports);
@@ -5819,7 +5825,7 @@ static pci_ers_result_t serial8250_io_er
 		return PCI_ERS_RESULT_DISCONNECT;
 
 	if (priv)
-		pciserial_suspend_ports(priv);
+		pciserial_detach_ports(priv);
 
 	pci_disable_device(dev);
 
@@ -5844,9 +5850,18 @@ static pci_ers_result_t serial8250_io_sl
 static void serial8250_io_resume(struct pci_dev *dev)
 {
 	struct serial_private *priv = pci_get_drvdata(dev);
+	const struct pciserial_board *board;
 
-	if (priv)
-		pciserial_resume_ports(priv);
+	if (!priv)
+		return;
+
+	board = priv->board;
+	kfree(priv);
+	priv = pciserial_init_ports(dev, board);
+
+	if (!IS_ERR(priv)) {
+		pci_set_drvdata(dev, priv);
+	}
 }
 
 static const struct pci_error_handlers serial8250_err_handler = {


Patches currently in stable-queue which might be from sumit.semwal@linaro.org are

queue-4.4/pci-add-comments-about-rom-bar-updating.patch
queue-4.4/acpi-blacklist-make-dell-latitude-3350-ethernet-work.patch
queue-4.4/s390-zcrypt-introduce-cex6-toleration.patch
queue-4.4/block-allow-write_same-commands-with-the-sg_io-ioctl.patch
queue-4.4/pci-do-any-vf-bar-updates-before-enabling-the-bars.patch
queue-4.4/x86-hyperv-handle-unknown-nmis-on-one-cpu-when-unknown_nmi_panic.patch
queue-4.4/serial-8250_pci-detach-low-level-driver-during-pci-error-recovery.patch
queue-4.4/xen-do-not-re-use-pirq-number-cached-in-pci-device-msi-msg-data.patch
queue-4.4/pci-separate-vf-bar-updates-from-standard-bar-updates.patch
queue-4.4/pci-ignore-bar-updates-on-virtual-functions.patch
queue-4.4/pci-update-bars-using-property-bits-appropriate-for-type.patch
queue-4.4/vfio-spapr-postpone-allocation-of-userspace-version-of-tce-table.patch
queue-4.4/pci-don-t-update-vf-bars-while-vf-memory-space-is-enabled.patch
queue-4.4/igb-workaround-for-igb-i210-firmware-issue.patch
queue-4.4/pci-remove-pci_resource_bar-and-pci_iov_resource_bar.patch
queue-4.4/pci-decouple-ioresource_rom_enable-and-pci_rom_address_enable.patch
queue-4.4/acpi-blacklist-add-_rev-quirks-for-dell-precision-5520-and-3520.patch
queue-4.4/igb-add-i211-to-i210-phy-workaround.patch
queue-4.4/uvcvideo-uvc_scan_fallback-for-webcams-with-broken-chain.patch

      reply	other threads:[~2017-03-28 12:14 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-25 16:18 [PATCH for-4.4 00/19] Stable commits from Ubuntu Yakkety 4.9-lts Sumit Semwal
2017-03-25 16:18 ` [PATCH for-4.4 01/19] xen: do not re-use pirq number cached in pci device msi msg data Sumit Semwal
2017-03-28 12:13   ` Patch "xen: do not re-use pirq number cached in pci device msi msg data" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 02/19] igb: Workaround for igb i210 firmware issue Sumit Semwal
2017-03-28 12:13   ` Patch "igb: Workaround for igb i210 firmware issue" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 03/19] igb: add i211 to i210 PHY workaround Sumit Semwal
2017-03-28 12:13   ` Patch "igb: add i211 to i210 PHY workaround" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 04/19] x86/hyperv: Handle unknown NMIs on one CPU when unknown_nmi_panic Sumit Semwal
2017-03-28 12:13   ` Patch "x86/hyperv: Handle unknown NMIs on one CPU when unknown_nmi_panic" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 05/19] PCI: Separate VF BAR updates from standard BAR updates Sumit Semwal
2017-03-28 12:13   ` Patch "PCI: Separate VF BAR updates from standard BAR updates" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 06/19] PCI: Remove pci_resource_bar() and pci_iov_resource_bar() Sumit Semwal
2017-03-28 12:13   ` Patch "PCI: Remove pci_resource_bar() and pci_iov_resource_bar()" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 07/19] PCI: Add comments about ROM BAR updating Sumit Semwal
2017-03-28 12:13   ` Patch "PCI: Add comments about ROM BAR updating" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 08/19] PCI: Decouple IORESOURCE_ROM_ENABLE and PCI_ROM_ADDRESS_ENABLE Sumit Semwal
2017-03-28 12:13   ` Patch "PCI: Decouple IORESOURCE_ROM_ENABLE and PCI_ROM_ADDRESS_ENABLE" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 09/19] PCI: Don't update VF BARs while VF memory space is enabled Sumit Semwal
2017-03-28 12:13   ` Patch "PCI: Don't update VF BARs while VF memory space is enabled" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 10/19] PCI: Update BARs using property bits appropriate for type Sumit Semwal
2017-03-28 12:13   ` Patch "PCI: Update BARs using property bits appropriate for type" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 11/19] PCI: Ignore BAR updates on virtual functions Sumit Semwal
2017-03-28 12:13   ` Patch "PCI: Ignore BAR updates on virtual functions" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 12/19] PCI: Do any VF BAR updates before enabling the BARs Sumit Semwal
2017-03-28 12:13   ` Patch "PCI: Do any VF BAR updates before enabling the BARs" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 13/19] vfio/spapr: Postpone allocation of userspace version of TCE table Sumit Semwal
2017-03-28 12:13   ` Patch "vfio/spapr: Postpone allocation of userspace version of TCE table" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 14/19] block: allow WRITE_SAME commands with the SG_IO ioctl Sumit Semwal
2017-03-28 12:12   ` Patch "block: allow WRITE_SAME commands with the SG_IO ioctl" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 15/19] s390/zcrypt: Introduce CEX6 toleration Sumit Semwal
2017-03-28 12:13   ` Patch "s390/zcrypt: Introduce CEX6 toleration" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 16/19] uvcvideo: uvc_scan_fallback() for webcams with broken chain Sumit Semwal
2017-03-28 12:13   ` Patch "uvcvideo: uvc_scan_fallback() for webcams with broken chain" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 17/19] ACPI / blacklist: add _REV quirks for Dell Precision 5520 and 3520 Sumit Semwal
2017-03-28 12:12   ` Patch "ACPI / blacklist: add _REV quirks for Dell Precision 5520 and 3520" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 18/19] ACPI / blacklist: Make Dell Latitude 3350 ethernet work Sumit Semwal
2017-03-28 12:12   ` Patch "ACPI / blacklist: Make Dell Latitude 3350 ethernet work" has been added to the 4.4-stable tree gregkh
2017-03-25 16:18 ` [PATCH for-4.4 19/19] serial: 8250_pci: Detach low-level driver during PCI error recovery Sumit Semwal
2017-03-28 12:13   ` gregkh [this message]

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=149070320921433@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=alexander.levin@verizon.com \
    --cc=krisman@linux.vnet.ibm.com \
    --cc=peter@hurleysoftware.com \
    --cc=stable-commits@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=sumit.semwal@linaro.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).