linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 0/3] PCI: NVMe reset quirks
@ 2018-07-24 16:14 Alex Williamson
  2018-07-24 16:14 ` [PATCH v3 1/3] PCI: Export pcie_has_flr() Alex Williamson
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Alex Williamson @ 2018-07-24 16:14 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-kernel, linux-nvme

v3: Separate quirks, only for the afflicted devices

v2: Add bug link, use Samsung vendor ID, add spec references

Fix two different NVMe device reset issues with device specific
quirks.  The Samsung controller in patch 2 sometimes doesn't like
being reset while enabled, so disable the NVMe controller prior to
FLR.  This quirk is generic to all NVMe class devices, though I've
dropped the additional delay some devices require between disabling
and checking ready status.  This can be added later should any of
those devices need this quirk.  The Intel controller quirk is now
just a simple delay after FLR, which clearly any device needing
similar behavior can also use.  Thanks,

Alex

---

Alex Williamson (3):
      PCI: Export pcie_has_flr()
      PCI: Samsung SM961/PM961 NVMe disable before FLR quirk
      PCI: Intel DC P3700 NVMe delay after FLR quirk


 drivers/pci/pci.c    |    3 +
 drivers/pci/quirks.c |  105 ++++++++++++++++++++++++++++++++++++++++++++++++++
 include/linux/pci.h  |    1 
 3 files changed, 108 insertions(+), 1 deletion(-)

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v3 1/3] PCI: Export pcie_has_flr()
  2018-07-24 16:14 [PATCH v3 0/3] PCI: NVMe reset quirks Alex Williamson
@ 2018-07-24 16:14 ` Alex Williamson
  2018-07-24 16:14 ` [PATCH v3 2/3] PCI: Samsung SM961/PM961 NVMe disable before FLR quirk Alex Williamson
  2018-07-24 16:14 ` [PATCH v3 3/3] PCI: Intel DC P3700 NVMe delay after " Alex Williamson
  2 siblings, 0 replies; 8+ messages in thread
From: Alex Williamson @ 2018-07-24 16:14 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-kernel, linux-nvme

pcie_flr() suggests pcie_has_flr() to ensure that PCIe FLR support is
present prior to calling.  pcie_flr() is exported while pcie_has_flr()
is not.  Resolve this.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
---
 drivers/pci/pci.c   |    3 ++-
 include/linux/pci.h |    1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 2bec76c9d9a7..52fe2d72a99c 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -4071,7 +4071,7 @@ static int pci_dev_wait(struct pci_dev *dev, char *reset_type, int timeout)
  * Returns true if the device advertises support for PCIe function level
  * resets.
  */
-static bool pcie_has_flr(struct pci_dev *dev)
+bool pcie_has_flr(struct pci_dev *dev)
 {
 	u32 cap;
 
@@ -4081,6 +4081,7 @@ static bool pcie_has_flr(struct pci_dev *dev)
 	pcie_capability_read_dword(dev, PCI_EXP_DEVCAP, &cap);
 	return cap & PCI_EXP_DEVCAP_FLR;
 }
+EXPORT_SYMBOL_GPL(pcie_has_flr);
 
 /**
  * pcie_flr - initiate a PCIe function level reset
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 04c7ea6ed67b..bbe030d7814f 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1092,6 +1092,7 @@ u32 pcie_bandwidth_available(struct pci_dev *dev, struct pci_dev **limiting_dev,
 			     enum pci_bus_speed *speed,
 			     enum pcie_link_width *width);
 void pcie_print_link_status(struct pci_dev *dev);
+bool pcie_has_flr(struct pci_dev *dev);
 int pcie_flr(struct pci_dev *dev);
 int __pci_reset_function_locked(struct pci_dev *dev);
 int pci_reset_function(struct pci_dev *dev);


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 2/3] PCI: Samsung SM961/PM961 NVMe disable before FLR quirk
  2018-07-24 16:14 [PATCH v3 0/3] PCI: NVMe reset quirks Alex Williamson
  2018-07-24 16:14 ` [PATCH v3 1/3] PCI: Export pcie_has_flr() Alex Williamson
@ 2018-07-24 16:14 ` Alex Williamson
  2018-07-24 19:53   ` Minwoo Im
  2018-07-24 16:14 ` [PATCH v3 3/3] PCI: Intel DC P3700 NVMe delay after " Alex Williamson
  2 siblings, 1 reply; 8+ messages in thread
From: Alex Williamson @ 2018-07-24 16:14 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-kernel, linux-nvme

The Samsung SM961/PM961 (960 EVO) sometimes fails to return from FLR
with the PCI config space reading back as -1.  A reproducible instance
of this behavior is resolved by clearing the enable bit in the NVMe
configuration register and waiting for the ready status to clear
(disabling the NVMe controller) prior to FLR.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
---
 drivers/pci/quirks.c |   83 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 83 insertions(+)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index e72c8742aafa..3899cdd2514b 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -28,6 +28,7 @@
 #include <linux/platform_data/x86/apple.h>
 #include <linux/pm_runtime.h>
 #include <linux/switchtec.h>
+#include <linux/nvme.h>
 #include <asm/dma.h>	/* isa_dma_bridge_buggy */
 #include "pci.h"
 
@@ -3669,6 +3670,87 @@ static int reset_chelsio_generic_dev(struct pci_dev *dev, int probe)
 #define PCI_DEVICE_ID_INTEL_IVB_M_VGA      0x0156
 #define PCI_DEVICE_ID_INTEL_IVB_M2_VGA     0x0166
 
+/*
+ * The Samsung SM961/PM961 controller can sometimes enter a fatal state after
+ * FLR where config space reads from the device return -1.  We seem to be
+ * able to avoid this condition if we disable the NVMe controller prior to
+ * FLR.  This quirk is generic for any NVMe class device requiring similar
+ * assistance to quiesce the device prior to FLR.
+ *
+ * NVMe specification: https://nvmexpress.org/resources/specifications/
+ * Revision 1.0e:
+ *    Chapter 2: Required and optional PCI config registers
+ *    Chapter 3: NVMe control registers
+ *    Chapter 7.3: Reset behavior
+ */
+static int nvme_disable_and_flr(struct pci_dev *dev, int probe)
+{
+	void __iomem *bar;
+	u16 cmd;
+	u32 cfg;
+
+	if (dev->class != PCI_CLASS_STORAGE_EXPRESS ||
+	    !pcie_has_flr(dev) || !pci_resource_start(dev, 0))
+		return -ENOTTY;
+
+	if (probe)
+		return 0;
+
+	bar = pci_iomap(dev, 0, NVME_REG_CC + sizeof(cfg));
+	if (!bar)
+		return -ENOTTY;
+
+	pci_read_config_word(dev, PCI_COMMAND, &cmd);
+	pci_write_config_word(dev, PCI_COMMAND, cmd | PCI_COMMAND_MEMORY);
+
+	cfg = readl(bar + NVME_REG_CC);
+
+	/* Disable controller if enabled */
+	if (cfg & NVME_CC_ENABLE) {
+		u64 cap = readq(bar + NVME_REG_CAP);
+		unsigned long timeout;
+
+		/*
+		 * Per nvme_disable_ctrl() skip shutdown notification as it
+		 * could complete commands to the admin queue.  We only intend
+		 * to quiesce the device before reset.
+		 */
+		cfg &= ~(NVME_CC_SHN_MASK | NVME_CC_ENABLE);
+
+		writel(cfg, bar + NVME_REG_CC);
+
+		/*
+		 * Some controllers require an additional delay here, see
+		 * NVME_QUIRK_DELAY_BEFORE_CHK_RDY.  None of those are yet
+		 * supported by this quirk.
+		 */
+
+		/* Cap register provides max timeout in 500ms increments */
+		timeout = ((NVME_CAP_TIMEOUT(cap) + 1) * HZ / 2) + jiffies;
+
+		for (;;) {
+			u32 status = readl(bar + NVME_REG_CSTS);
+
+			/* Ready status becomes zero on disable complete */
+			if (!(status & NVME_CSTS_RDY))
+				break;
+
+			msleep(100);
+
+			if (time_after(jiffies, timeout)) {
+				pci_warn(dev, "Timeout waiting for NVMe ready status to clear after disable\n");
+				break;
+			}
+		}
+	}
+
+	pci_iounmap(dev, bar);
+
+	pcie_flr(dev);
+
+	return 0;
+}
+
 static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
 	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82599_SFP_VF,
 		 reset_intel_82599_sfp_virtfn },
@@ -3676,6 +3758,7 @@ static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
 		reset_ivb_igd },
 	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IVB_M2_VGA,
 		reset_ivb_igd },
+	{ PCI_VENDOR_ID_SAMSUNG, 0xa804, nvme_disable_and_flr },
 	{ PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
 		reset_chelsio_generic_dev },
 	{ 0 }


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v3 3/3] PCI: Intel DC P3700 NVMe delay after FLR quirk
  2018-07-24 16:14 [PATCH v3 0/3] PCI: NVMe reset quirks Alex Williamson
  2018-07-24 16:14 ` [PATCH v3 1/3] PCI: Export pcie_has_flr() Alex Williamson
  2018-07-24 16:14 ` [PATCH v3 2/3] PCI: Samsung SM961/PM961 NVMe disable before FLR quirk Alex Williamson
@ 2018-07-24 16:14 ` Alex Williamson
  2018-07-24 16:18   ` Alex Williamson
  2 siblings, 1 reply; 8+ messages in thread
From: Alex Williamson @ 2018-07-24 16:14 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-kernel, linux-nvme

Add a device specific reset for Intel DC P3700 NVMe device which
exhibits a timeout failure in drivers waiting for the ready status to
update after NVMe enable if the driver interacts with the device too
quickly after FLR.  As this has been observed in device assignment
scenarios, resolve this with a device specific reset quirk to add an
additional, heuristically determined, delay after the FLR completes.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
---
 drivers/pci/quirks.c |   22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 3899cdd2514b..08fafd804588 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -3751,6 +3751,27 @@ static int nvme_disable_and_flr(struct pci_dev *dev, int probe)
 	return 0;
 }
 
+/*
+ * Intel DC P3700 NVMe controller will timeout waiting for ready status
+ * to change after NVMe enable if the driver starts interacting with the
+ * device too quickly after FLR.  A 250ms delay after FLR has heuristically
+ * proven to produce reliably working results for device assignment cases.
+ */
+static int delay_250ms_after_flr(struct pci_dev *dev, int probe)
+{
+	if (!pcie_has_flr(dev))
+		return -ENOTTY;
+
+	if (probe)
+		return 0;
+
+	pcie_flr(dev);
+
+	msleep(250);
+
+	return 0;
+}
+
 static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
 	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82599_SFP_VF,
 		 reset_intel_82599_sfp_virtfn },
@@ -3759,6 +3780,7 @@ static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
 	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IVB_M2_VGA,
 		reset_ivb_igd },
 	{ PCI_VENDOR_ID_SAMSUNG, 0xa804, nvme_disable_and_flr },
+	{ PCI_VENDOR_ID_INTEL, 0x0953, delay_250ms_after_flr },
 	{ PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
 		reset_chelsio_generic_dev },
 	{ 0 }


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 3/3] PCI: Intel DC P3700 NVMe delay after FLR quirk
  2018-07-24 16:14 ` [PATCH v3 3/3] PCI: Intel DC P3700 NVMe delay after " Alex Williamson
@ 2018-07-24 16:18   ` Alex Williamson
  2018-08-09 19:35     ` Bjorn Helgaas
  0 siblings, 1 reply; 8+ messages in thread
From: Alex Williamson @ 2018-07-24 16:18 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-kernel, linux-nvme

On Tue, 24 Jul 2018 10:14:46 -0600
Alex Williamson <alex.williamson@redhat.com> wrote:

> Add a device specific reset for Intel DC P3700 NVMe device which
> exhibits a timeout failure in drivers waiting for the ready status to
> update after NVMe enable if the driver interacts with the device too
> quickly after FLR.  As this has been observed in device assignment
> scenarios, resolve this with a device specific reset quirk to add an
> additional, heuristically determined, delay after the FLR completes.
> 
> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> ---
>  drivers/pci/quirks.c |   22 ++++++++++++++++++++++
>  1 file changed, 22 insertions(+)

I forgot to link the bz in this one, if this somehow becomes the final
version, please add:

Link: https://bugzilla.redhat.com/show_bug.cgi?id=159265

Thanks,
Alex
 
> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
> index 3899cdd2514b..08fafd804588 100644
> --- a/drivers/pci/quirks.c
> +++ b/drivers/pci/quirks.c
> @@ -3751,6 +3751,27 @@ static int nvme_disable_and_flr(struct pci_dev *dev, int probe)
>  	return 0;
>  }
>  
> +/*
> + * Intel DC P3700 NVMe controller will timeout waiting for ready status
> + * to change after NVMe enable if the driver starts interacting with the
> + * device too quickly after FLR.  A 250ms delay after FLR has heuristically
> + * proven to produce reliably working results for device assignment cases.
> + */
> +static int delay_250ms_after_flr(struct pci_dev *dev, int probe)
> +{
> +	if (!pcie_has_flr(dev))
> +		return -ENOTTY;
> +
> +	if (probe)
> +		return 0;
> +
> +	pcie_flr(dev);
> +
> +	msleep(250);
> +
> +	return 0;
> +}
> +
>  static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
>  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82599_SFP_VF,
>  		 reset_intel_82599_sfp_virtfn },
> @@ -3759,6 +3780,7 @@ static const struct pci_dev_reset_methods pci_dev_reset_methods[] = {
>  	{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_IVB_M2_VGA,
>  		reset_ivb_igd },
>  	{ PCI_VENDOR_ID_SAMSUNG, 0xa804, nvme_disable_and_flr },
> +	{ PCI_VENDOR_ID_INTEL, 0x0953, delay_250ms_after_flr },
>  	{ PCI_VENDOR_ID_CHELSIO, PCI_ANY_ID,
>  		reset_chelsio_generic_dev },
>  	{ 0 }
> 


_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 2/3] PCI: Samsung SM961/PM961 NVMe disable before FLR quirk
  2018-07-24 16:14 ` [PATCH v3 2/3] PCI: Samsung SM961/PM961 NVMe disable before FLR quirk Alex Williamson
@ 2018-07-24 19:53   ` Minwoo Im
  2018-07-24 20:09     ` Alex Williamson
  0 siblings, 1 reply; 8+ messages in thread
From: Minwoo Im @ 2018-07-24 19:53 UTC (permalink / raw)
  To: Alex Williamson, linux-pci; +Cc: linux-kernel, linux-nvme

SGkgQWxleCwKCk9uIFR1ZSwgMjAxOC0wNy0yNCBhdCAxMDoxNCAtMDYwMCwgQWxleCBXaWxsaWFt
c29uIHdyb3RlOgo+IFRoZSBTYW1zdW5nIFNNOTYxL1BNOTYxICg5NjAgRVZPKSBzb21ldGltZXMg
ZmFpbHMgdG8gcmV0dXJuIGZyb20gRkxSCj4gd2l0aCB0aGUgUENJIGNvbmZpZyBzcGFjZSByZWFk
aW5nIGJhY2sgYXMgLTEuwqDCoEEgcmVwcm9kdWNpYmxlIGluc3RhbmNlCj4gb2YgdGhpcyBiZWhh
dmlvciBpcyByZXNvbHZlZCBieSBjbGVhcmluZyB0aGUgZW5hYmxlIGJpdCBpbiB0aGUgTlZNZQo+
IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgYW5kIHdhaXRpbmcgZm9yIHRoZSByZWFkeSBzdGF0dXMg
dG8gY2xlYXIKPiAoZGlzYWJsaW5nIHRoZSBOVk1lIGNvbnRyb2xsZXIpIHByaW9yIHRvIEZMUi4K
PiAKPiBTaWduZWQtb2ZmLWJ5OiBBbGV4IFdpbGxpYW1zb24gPGFsZXgud2lsbGlhbXNvbkByZWRo
YXQuY29tPgo+IC0tLQo+IMKgZHJpdmVycy9wY2kvcXVpcmtzLmMgfMKgwqDCoDgzCj4gKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiDCoDEgZmlsZSBj
aGFuZ2VkLCA4MyBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3F1
aXJrcy5jIGIvZHJpdmVycy9wY2kvcXVpcmtzLmMKPiBpbmRleCBlNzJjODc0MmFhZmEuLjM4OTlj
ZGQyNTE0YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL3BjaS9xdWlya3MuYwo+ICsrKyBiL2RyaXZl
cnMvcGNpL3F1aXJrcy5jCj4gQEAgLTI4LDYgKzI4LDcgQEAKPiDCoCNpbmNsdWRlIDxsaW51eC9w
bGF0Zm9ybV9kYXRhL3g4Ni9hcHBsZS5oPgo+IMKgI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUu
aD4KPiDCoCNpbmNsdWRlIDxsaW51eC9zd2l0Y2h0ZWMuaD4KPiArI2luY2x1ZGUgPGxpbnV4L252
bWUuaD4KPiDCoCNpbmNsdWRlIDxhc20vZG1hLmg+CS8qIGlzYV9kbWFfYnJpZGdlX2J1Z2d5ICov
Cj4gwqAjaW5jbHVkZSAicGNpLmgiCj4gwqAKPiBAQCAtMzY2OSw2ICszNjcwLDg3IEBAIHN0YXRp
YyBpbnQgcmVzZXRfY2hlbHNpb19nZW5lcmljX2RldihzdHJ1Y3QgcGNpX2Rldgo+ICpkZXYsIGlu
dCBwcm9iZSkKPiDCoCNkZWZpbmUgUENJX0RFVklDRV9JRF9JTlRFTF9JVkJfTV9WR0HCoMKgwqDC
oMKgwqAweDAxNTYKPiDCoCNkZWZpbmUgUENJX0RFVklDRV9JRF9JTlRFTF9JVkJfTTJfVkdBwqDC
oMKgwqDCoDB4MDE2Ngo+IMKgCj4gKy8qCj4gKyAqIFRoZSBTYW1zdW5nIFNNOTYxL1BNOTYxIGNv
bnRyb2xsZXIgY2FuIHNvbWV0aW1lcyBlbnRlciBhIGZhdGFsIHN0YXRlIGFmdGVyCj4gKyAqIEZM
UiB3aGVyZSBjb25maWcgc3BhY2UgcmVhZHMgZnJvbSB0aGUgZGV2aWNlIHJldHVybiAtMS7CoMKg
V2Ugc2VlbSB0byBiZQo+ICsgKiBhYmxlIHRvIGF2b2lkIHRoaXMgY29uZGl0aW9uIGlmIHdlIGRp
c2FibGUgdGhlIE5WTWUgY29udHJvbGxlciBwcmlvciB0bwo+ICsgKiBGTFIuwqDCoFRoaXMgcXVp
cmsgaXMgZ2VuZXJpYyBmb3IgYW55IE5WTWUgY2xhc3MgZGV2aWNlIHJlcXVpcmluZyBzaW1pbGFy
Cj4gKyAqIGFzc2lzdGFuY2UgdG8gcXVpZXNjZSB0aGUgZGV2aWNlIHByaW9yIHRvIEZMUi4KPiAr
ICoKPiArICogTlZNZSBzcGVjaWZpY2F0aW9uOiBodHRwczovL252bWV4cHJlc3Mub3JnL3Jlc291
cmNlcy9zcGVjaWZpY2F0aW9ucy8KPiArICogUmV2aXNpb24gMS4wZToKCkl0IHNlZW1zIHRvbyBv
bGQgdmVyc2lvbiBvZiBOVk1lIHNwZWNpZmljYXRpb24uIMKgRG8geW91IGhhdmUgYW55IHNwZWNp
YWwgcmVhc29uCnRvIGNvbW1lbnQgdGhlIHNwZWNpZmllZCAxLjAgdmVyc2lvbiBpbnN0ZWFkIG9m
IDEuMyBvciBzb21ldGhpbmcgbmV3ZXI/Cgo+ICsgKsKgwqDCoMKgQ2hhcHRlciAyOiBSZXF1aXJl
ZCBhbmQgb3B0aW9uYWwgUENJIGNvbmZpZyByZWdpc3RlcnMKPiArICrCoMKgwqDCoENoYXB0ZXIg
MzogTlZNZSBjb250cm9sIHJlZ2lzdGVycwo+ICsgKsKgwqDCoMKgQ2hhcHRlciA3LjM6IFJlc2V0
IGJlaGF2aW9yCj4gKyAqLwo+ICtzdGF0aWMgaW50IG52bWVfZGlzYWJsZV9hbmRfZmxyKHN0cnVj
dCBwY2lfZGV2ICpkZXYsIGludCBwcm9iZSkKClRoZSBuYW1lIG9mIHRoaXMgZnVuY3Rpb24gc2Vl
bXMgYWJsZSB0byBiZSBzdGFydGVkIHdpdGggJ3Jlc2V0XycgcHJlZml4IGp1c3QKbGlrZSBvdGhl
ciBxdWlya3MgZm9yIHJlc2V0LgpXaGF0IGFib3V0IHJlc2V0X3NhbXN1bmdfcG05NjEgb3Igc29t
ZXRoaW5nPwoKPiArewo+ICsJdm9pZCBfX2lvbWVtICpiYXI7Cj4gKwl1MTYgY21kOwo+ICsJdTMy
IGNmZzsKPiArCj4gKwlpZiAoZGV2LT5jbGFzcyAhPSBQQ0lfQ0xBU1NfU1RPUkFHRV9FWFBSRVNT
IHx8Cj4gKwnCoMKgwqDCoCFwY2llX2hhc19mbHIoZGV2KSB8fCAhcGNpX3Jlc291cmNlX3N0YXJ0
KGRldiwgMCkpCj4gKwkJcmV0dXJuIC1FTk9UVFk7Cj4gKwo+ICsJaWYgKHByb2JlKQo+ICsJCXJl
dHVybiAwOwo+ICsKPiArCWJhciA9IHBjaV9pb21hcChkZXYsIDAsIE5WTUVfUkVHX0NDICsgc2l6
ZW9mKGNmZykpOwo+ICsJaWYgKCFiYXIpCj4gKwkJcmV0dXJuIC1FTk9UVFk7Cj4gKwo+ICsJcGNp
X3JlYWRfY29uZmlnX3dvcmQoZGV2LCBQQ0lfQ09NTUFORCwgJmNtZCk7Cj4gKwlwY2lfd3JpdGVf
Y29uZmlnX3dvcmQoZGV2LCBQQ0lfQ09NTUFORCwgY21kIHwgUENJX0NPTU1BTkRfTUVNT1JZKTsK
PiArCj4gKwljZmcgPSByZWFkbChiYXIgKyBOVk1FX1JFR19DQyk7Cj4gKwo+ICsJLyogRGlzYWJs
ZSBjb250cm9sbGVyIGlmIGVuYWJsZWQgKi8KPiArCWlmIChjZmcgJiBOVk1FX0NDX0VOQUJMRSkg
ewo+ICsJCXU2NCBjYXAgPSByZWFkcShiYXIgKyBOVk1FX1JFR19DQVApOwo+ICsJCXVuc2lnbmVk
IGxvbmcgdGltZW91dDsKPiArCj4gKwkJLyoKPiArCQnCoCogUGVyIG52bWVfZGlzYWJsZV9jdHJs
KCkgc2tpcCBzaHV0ZG93biBub3RpZmljYXRpb24gYXMgaXQKPiArCQnCoCogY291bGQgY29tcGxl
dGUgY29tbWFuZHMgdG8gdGhlIGFkbWluIHF1ZXVlLsKgwqBXZSBvbmx5Cj4gaW50ZW5kCj4gKwkJ
wqAqIHRvIHF1aWVzY2UgdGhlIGRldmljZSBiZWZvcmUgcmVzZXQuCj4gKwkJwqAqLwo+ICsJCWNm
ZyAmPSB+KE5WTUVfQ0NfU0hOX01BU0sgfCBOVk1FX0NDX0VOQUJMRSk7Cj4gKwo+ICsJCXdyaXRl
bChjZmcsIGJhciArIE5WTUVfUkVHX0NDKTsKPiArCj4gKwkJLyoKPiArCQnCoCogU29tZSBjb250
cm9sbGVycyByZXF1aXJlIGFuIGFkZGl0aW9uYWwgZGVsYXkgaGVyZSwgc2VlCj4gKwkJwqAqIE5W
TUVfUVVJUktfREVMQVlfQkVGT1JFX0NIS19SRFkuwqDCoE5vbmUgb2YgdGhvc2UgYXJlIHlldAo+
ICsJCcKgKiBzdXBwb3J0ZWQgYnkgdGhpcyBxdWlyay4KPiArCQnCoCovCj4gKwo+ICsJCS8qIENh
cCByZWdpc3RlciBwcm92aWRlcyBtYXggdGltZW91dCBpbiA1MDBtcyBpbmNyZW1lbnRzICovCj4g
KwkJdGltZW91dCA9ICgoTlZNRV9DQVBfVElNRU9VVChjYXApICsgMSkgKiBIWiAvIDIpICsgamlm
ZmllczsKPiArCj4gKwkJZm9yICg7Oykgewo+ICsJCQl1MzIgc3RhdHVzID0gcmVhZGwoYmFyICsg
TlZNRV9SRUdfQ1NUUyk7Cj4gKwo+ICsJCQkvKiBSZWFkeSBzdGF0dXMgYmVjb21lcyB6ZXJvIG9u
IGRpc2FibGUgY29tcGxldGUgKi8KPiArCQkJaWYgKCEoc3RhdHVzICYgTlZNRV9DU1RTX1JEWSkp
Cj4gKwkJCQlicmVhazsKPiArCj4gKwkJCW1zbGVlcCgxMDApOwo+ICsKPiArCQkJaWYgKHRpbWVf
YWZ0ZXIoamlmZmllcywgdGltZW91dCkpIHsKPiArCQkJCXBjaV93YXJuKGRldiwgIlRpbWVvdXQg
d2FpdGluZyBmb3IgTlZNZSByZWFkeQo+IHN0YXR1cyB0byBjbGVhciBhZnRlciBkaXNhYmxlXG4i
KTsKPiArCQkJCWJyZWFrOwo+ICsJCQl9Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXBjaV9pb3VubWFw
KGRldiwgYmFyKTsKPiArCj4gKwlwY2llX2ZscihkZXYpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9
Cj4gKwo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2X3Jlc2V0X21ldGhvZHMgcGNpX2Rl
dl9yZXNldF9tZXRob2RzW10gPSB7Cj4gwqAJeyBQQ0lfVkVORE9SX0lEX0lOVEVMLCBQQ0lfREVW
SUNFX0lEX0lOVEVMXzgyNTk5X1NGUF9WRiwKPiDCoAkJwqByZXNldF9pbnRlbF84MjU5OV9zZnBf
dmlydGZuIH0sCj4gQEAgLTM2NzYsNiArMzc1OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNp
X2Rldl9yZXNldF9tZXRob2RzCj4gcGNpX2Rldl9yZXNldF9tZXRob2RzW10gPSB7Cj4gwqAJCXJl
c2V0X2l2Yl9pZ2QgfSwKPiDCoAl7IFBDSV9WRU5ET1JfSURfSU5URUwsIFBDSV9ERVZJQ0VfSURf
SU5URUxfSVZCX00yX1ZHQSwKPiDCoAkJcmVzZXRfaXZiX2lnZCB9LAo+ICsJeyBQQ0lfVkVORE9S
X0lEX1NBTVNVTkcsIDB4YTgwNCwgbnZtZV9kaXNhYmxlX2FuZF9mbHIgfSwKCldoeSBkb24ndCB3
ZSBqdXN0IGRlZmluZSBhIG1hY3JvIGp1c3QgbGlrZSBvdGhlciBERVZJQ0VfSURzLiAoZS5nLgpQ
Q0lFX0RFVklDRV9JRF9JTlRFTF84MjU5OV9TRlBfVkYpLgoKI2RlZmluZSBQQ0lfREVWSUNFX0lE
X1NBTVNVTkdfUE05NjEgwqAweGE4MDQKCj4gwqAJeyBQQ0lfVkVORE9SX0lEX0NIRUxTSU8sIFBD
SV9BTllfSUQsCj4gwqAJCXJlc2V0X2NoZWxzaW9fZ2VuZXJpY19kZXYgfSwKPiDCoAl7IDAgfQo+
IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g
TGludXgtbnZtZSBtYWlsaW5nIGxpc3QKPiBMaW51eC1udm1lQGxpc3RzLmluZnJhZGVhZC5vcmcK
PiBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW52bWUK
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LW52
bWUgbWFpbGluZyBsaXN0CkxpbnV4LW52bWVAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlz
dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LW52bWUK

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 2/3] PCI: Samsung SM961/PM961 NVMe disable before FLR quirk
  2018-07-24 19:53   ` Minwoo Im
@ 2018-07-24 20:09     ` Alex Williamson
  0 siblings, 0 replies; 8+ messages in thread
From: Alex Williamson @ 2018-07-24 20:09 UTC (permalink / raw)
  To: Minwoo Im; +Cc: linux-pci, linux-kernel, linux-nvme

T24gV2VkLCAyNSBKdWwgMjAxOCAwNDo1MzoxOCArMDkwMApNaW53b28gSW0gPG1pbndvby5pbS5k
ZXZAZ21haWwuY29tPiB3cm90ZToKCj4gSGkgQWxleCwKPiAKPiBPbiBUdWUsIDIwMTgtMDctMjQg
YXQgMTA6MTQgLTA2MDAsIEFsZXggV2lsbGlhbXNvbiB3cm90ZToKPiA+IFRoZSBTYW1zdW5nIFNN
OTYxL1BNOTYxICg5NjAgRVZPKSBzb21ldGltZXMgZmFpbHMgdG8gcmV0dXJuIGZyb20gRkxSCj4g
PiB3aXRoIHRoZSBQQ0kgY29uZmlnIHNwYWNlIHJlYWRpbmcgYmFjayBhcyAtMS7CoMKgQSByZXBy
b2R1Y2libGUgaW5zdGFuY2UKPiA+IG9mIHRoaXMgYmVoYXZpb3IgaXMgcmVzb2x2ZWQgYnkgY2xl
YXJpbmcgdGhlIGVuYWJsZSBiaXQgaW4gdGhlIE5WTWUKPiA+IGNvbmZpZ3VyYXRpb24gcmVnaXN0
ZXIgYW5kIHdhaXRpbmcgZm9yIHRoZSByZWFkeSBzdGF0dXMgdG8gY2xlYXIKPiA+IChkaXNhYmxp
bmcgdGhlIE5WTWUgY29udHJvbGxlcikgcHJpb3IgdG8gRkxSLgo+ID4gCj4gPiBTaWduZWQtb2Zm
LWJ5OiBBbGV4IFdpbGxpYW1zb24gPGFsZXgud2lsbGlhbXNvbkByZWRoYXQuY29tPgo+ID4gLS0t
Cj4gPiDCoGRyaXZlcnMvcGNpL3F1aXJrcy5jIHzCoMKgwqA4Mwo+ID4gKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiA+IMKgMSBmaWxlIGNoYW5nZWQs
IDgzIGluc2VydGlvbnMoKykKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL3F1aXJr
cy5jIGIvZHJpdmVycy9wY2kvcXVpcmtzLmMKPiA+IGluZGV4IGU3MmM4NzQyYWFmYS4uMzg5OWNk
ZDI1MTRiIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9wY2kvcXVpcmtzLmMKPiA+ICsrKyBiL2Ry
aXZlcnMvcGNpL3F1aXJrcy5jCj4gPiBAQCAtMjgsNiArMjgsNyBAQAo+ID4gwqAjaW5jbHVkZSA8
bGludXgvcGxhdGZvcm1fZGF0YS94ODYvYXBwbGUuaD4KPiA+IMKgI2luY2x1ZGUgPGxpbnV4L3Bt
X3J1bnRpbWUuaD4KPiA+IMKgI2luY2x1ZGUgPGxpbnV4L3N3aXRjaHRlYy5oPgo+ID4gKyNpbmNs
dWRlIDxsaW51eC9udm1lLmg+Cj4gPiDCoCNpbmNsdWRlIDxhc20vZG1hLmg+CS8qIGlzYV9kbWFf
YnJpZGdlX2J1Z2d5ICovCj4gPiDCoCNpbmNsdWRlICJwY2kuaCIKPiA+IMKgCj4gPiBAQCAtMzY2
OSw2ICszNjcwLDg3IEBAIHN0YXRpYyBpbnQgcmVzZXRfY2hlbHNpb19nZW5lcmljX2RldihzdHJ1
Y3QgcGNpX2Rldgo+ID4gKmRldiwgaW50IHByb2JlKQo+ID4gwqAjZGVmaW5lIFBDSV9ERVZJQ0Vf
SURfSU5URUxfSVZCX01fVkdBwqDCoMKgwqDCoMKgMHgwMTU2Cj4gPiDCoCNkZWZpbmUgUENJX0RF
VklDRV9JRF9JTlRFTF9JVkJfTTJfVkdBwqDCoMKgwqDCoDB4MDE2Ngo+ID4gwqAKPiA+ICsvKgo+
ID4gKyAqIFRoZSBTYW1zdW5nIFNNOTYxL1BNOTYxIGNvbnRyb2xsZXIgY2FuIHNvbWV0aW1lcyBl
bnRlciBhIGZhdGFsIHN0YXRlIGFmdGVyCj4gPiArICogRkxSIHdoZXJlIGNvbmZpZyBzcGFjZSBy
ZWFkcyBmcm9tIHRoZSBkZXZpY2UgcmV0dXJuIC0xLsKgwqBXZSBzZWVtIHRvIGJlCj4gPiArICog
YWJsZSB0byBhdm9pZCB0aGlzIGNvbmRpdGlvbiBpZiB3ZSBkaXNhYmxlIHRoZSBOVk1lIGNvbnRy
b2xsZXIgcHJpb3IgdG8KPiA+ICsgKiBGTFIuwqDCoFRoaXMgcXVpcmsgaXMgZ2VuZXJpYyBmb3Ig
YW55IE5WTWUgY2xhc3MgZGV2aWNlIHJlcXVpcmluZyBzaW1pbGFyCj4gPiArICogYXNzaXN0YW5j
ZSB0byBxdWllc2NlIHRoZSBkZXZpY2UgcHJpb3IgdG8gRkxSLgo+ID4gKyAqCj4gPiArICogTlZN
ZSBzcGVjaWZpY2F0aW9uOiBodHRwczovL252bWV4cHJlc3Mub3JnL3Jlc291cmNlcy9zcGVjaWZp
Y2F0aW9ucy8KPiA+ICsgKiBSZXZpc2lvbiAxLjBlOiAgCj4gCj4gSXQgc2VlbXMgdG9vIG9sZCB2
ZXJzaW9uIG9mIE5WTWUgc3BlY2lmaWNhdGlvbi4gwqBEbyB5b3UgaGF2ZSBhbnkgc3BlY2lhbCBy
ZWFzb24KPiB0byBjb21tZW50IHRoZSBzcGVjaWZpZWQgMS4wIHZlcnNpb24gaW5zdGVhZCBvZiAx
LjMgb3Igc29tZXRoaW5nIG5ld2VyPwoKSSB3YW50ZWQgdG8gc2hvdyB0aGF0IEknbSB1c2luZyBO
Vk1lIGZlYXR1cmVzIHRoYXQgaGF2ZSBiZWVuIGF2YWlsYWJsZQpzaW5jZSB0aGUgaW5pdGlhbCBy
ZWxlYXNlIGFuZCB0aGVyZSdzIG5vIHJlYXNvbiB0byBjaGVjayB0aGUgdmVyc2lvbgpmaWVsZCBm
b3IgdGhlaXIgc3VwcG9ydC4KCj4gPiArICrCoMKgwqDCoENoYXB0ZXIgMjogUmVxdWlyZWQgYW5k
IG9wdGlvbmFsIFBDSSBjb25maWcgcmVnaXN0ZXJzCj4gPiArICrCoMKgwqDCoENoYXB0ZXIgMzog
TlZNZSBjb250cm9sIHJlZ2lzdGVycwo+ID4gKyAqwqDCoMKgwqBDaGFwdGVyIDcuMzogUmVzZXQg
YmVoYXZpb3IKPiA+ICsgKi8KPiA+ICtzdGF0aWMgaW50IG52bWVfZGlzYWJsZV9hbmRfZmxyKHN0
cnVjdCBwY2lfZGV2ICpkZXYsIGludCBwcm9iZSkgIAo+IAo+IFRoZSBuYW1lIG9mIHRoaXMgZnVu
Y3Rpb24gc2VlbXMgYWJsZSB0byBiZSBzdGFydGVkIHdpdGggJ3Jlc2V0XycgcHJlZml4IGp1c3QK
PiBsaWtlIG90aGVyIHF1aXJrcyBmb3IgcmVzZXQuCj4gV2hhdCBhYm91dCByZXNldF9zYW1zdW5n
X3BtOTYxIG9yIHNvbWV0aGluZz8KCkknbSBmaW5lIHdpdGggYW55IGdlbmVyaWMgcHJlZml4LCBi
dXQgSSdtIG5vdCBmaW5lIHdpdGggb2JmdXNjYXRpbmcgdGhlCnB1cnBvc2Ugb2YgdGhlIGZ1bmN0
aW9uIGJlaGluZCBhIHZlbmRvci9kZXZpY2Ugc3BlY2lmaWMgbmFtZS4gIElmCnNvbWVvbmUgZWxz
ZSBjb21lcyBhbG9uZyBuZWVkaW5nIHRoaXMgc2FtZSBmdW5jdGlvbmFsaXR5LCB0aGV5J2xsCnBy
b2JhYmx5IGJlIHJlbHVjdGFudCB0byBldmVuIGxvb2sgYXQgd2hhdCBhICJyZXNldF9zYW1zdW5n
X3NtOTYxIgpmdW5jdGlvbiBkb2VzLiAgSWYgdGhleSBkbywgdGhleSBtaWdodCBzdGlsbCBiZSBy
ZWx1Y3RhbnQgdG8gcmV1c2UKc29tZXRoaW5nIHNvIG9idmlvdXNseSBtYWRlIGZvciBhIHNwZWNp
ZmljIGRldmljZS4gIEkgdGhvdWdodCB0aGlzIHdhcwpwcmV0dHkgZGVzY3JpcHRpdmUgb2Ygd2hh
dCBpdCdzIGRvaW5nLiAgUHJlZml4aW5nIHdpdGggJ3Jlc2V0XycgaXMgYQp0YWQgcmVkdW5kYW50
LgoKPiA+ICt7Cj4gPiArCXZvaWQgX19pb21lbSAqYmFyOwo+ID4gKwl1MTYgY21kOwo+ID4gKwl1
MzIgY2ZnOwo+ID4gKwo+ID4gKwlpZiAoZGV2LT5jbGFzcyAhPSBQQ0lfQ0xBU1NfU1RPUkFHRV9F
WFBSRVNTIHx8Cj4gPiArCcKgwqDCoMKgIXBjaWVfaGFzX2ZscihkZXYpIHx8ICFwY2lfcmVzb3Vy
Y2Vfc3RhcnQoZGV2LCAwKSkKPiA+ICsJCXJldHVybiAtRU5PVFRZOwo+ID4gKwo+ID4gKwlpZiAo
cHJvYmUpCj4gPiArCQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJYmFyID0gcGNpX2lvbWFwKGRldiwg
MCwgTlZNRV9SRUdfQ0MgKyBzaXplb2YoY2ZnKSk7Cj4gPiArCWlmICghYmFyKQo+ID4gKwkJcmV0
dXJuIC1FTk9UVFk7Cj4gPiArCj4gPiArCXBjaV9yZWFkX2NvbmZpZ193b3JkKGRldiwgUENJX0NP
TU1BTkQsICZjbWQpOwo+ID4gKwlwY2lfd3JpdGVfY29uZmlnX3dvcmQoZGV2LCBQQ0lfQ09NTUFO
RCwgY21kIHwgUENJX0NPTU1BTkRfTUVNT1JZKTsKPiA+ICsKPiA+ICsJY2ZnID0gcmVhZGwoYmFy
ICsgTlZNRV9SRUdfQ0MpOwo+ID4gKwo+ID4gKwkvKiBEaXNhYmxlIGNvbnRyb2xsZXIgaWYgZW5h
YmxlZCAqLwo+ID4gKwlpZiAoY2ZnICYgTlZNRV9DQ19FTkFCTEUpIHsKPiA+ICsJCXU2NCBjYXAg
PSByZWFkcShiYXIgKyBOVk1FX1JFR19DQVApOwo+ID4gKwkJdW5zaWduZWQgbG9uZyB0aW1lb3V0
Owo+ID4gKwo+ID4gKwkJLyoKPiA+ICsJCcKgKiBQZXIgbnZtZV9kaXNhYmxlX2N0cmwoKSBza2lw
IHNodXRkb3duIG5vdGlmaWNhdGlvbiBhcyBpdAo+ID4gKwkJwqAqIGNvdWxkIGNvbXBsZXRlIGNv
bW1hbmRzIHRvIHRoZSBhZG1pbiBxdWV1ZS7CoMKgV2Ugb25seQo+ID4gaW50ZW5kCj4gPiArCQnC
oCogdG8gcXVpZXNjZSB0aGUgZGV2aWNlIGJlZm9yZSByZXNldC4KPiA+ICsJCcKgKi8KPiA+ICsJ
CWNmZyAmPSB+KE5WTUVfQ0NfU0hOX01BU0sgfCBOVk1FX0NDX0VOQUJMRSk7Cj4gPiArCj4gPiAr
CQl3cml0ZWwoY2ZnLCBiYXIgKyBOVk1FX1JFR19DQyk7Cj4gPiArCj4gPiArCQkvKgo+ID4gKwkJ
wqAqIFNvbWUgY29udHJvbGxlcnMgcmVxdWlyZSBhbiBhZGRpdGlvbmFsIGRlbGF5IGhlcmUsIHNl
ZQo+ID4gKwkJwqAqIE5WTUVfUVVJUktfREVMQVlfQkVGT1JFX0NIS19SRFkuwqDCoE5vbmUgb2Yg
dGhvc2UgYXJlIHlldAo+ID4gKwkJwqAqIHN1cHBvcnRlZCBieSB0aGlzIHF1aXJrLgo+ID4gKwkJ
wqAqLwo+ID4gKwo+ID4gKwkJLyogQ2FwIHJlZ2lzdGVyIHByb3ZpZGVzIG1heCB0aW1lb3V0IGlu
IDUwMG1zIGluY3JlbWVudHMgKi8KPiA+ICsJCXRpbWVvdXQgPSAoKE5WTUVfQ0FQX1RJTUVPVVQo
Y2FwKSArIDEpICogSFogLyAyKSArIGppZmZpZXM7Cj4gPiArCj4gPiArCQlmb3IgKDs7KSB7Cj4g
PiArCQkJdTMyIHN0YXR1cyA9IHJlYWRsKGJhciArIE5WTUVfUkVHX0NTVFMpOwo+ID4gKwo+ID4g
KwkJCS8qIFJlYWR5IHN0YXR1cyBiZWNvbWVzIHplcm8gb24gZGlzYWJsZSBjb21wbGV0ZSAqLwo+
ID4gKwkJCWlmICghKHN0YXR1cyAmIE5WTUVfQ1NUU19SRFkpKQo+ID4gKwkJCQlicmVhazsKPiA+
ICsKPiA+ICsJCQltc2xlZXAoMTAwKTsKPiA+ICsKPiA+ICsJCQlpZiAodGltZV9hZnRlcihqaWZm
aWVzLCB0aW1lb3V0KSkgewo+ID4gKwkJCQlwY2lfd2FybihkZXYsICJUaW1lb3V0IHdhaXRpbmcg
Zm9yIE5WTWUgcmVhZHkKPiA+IHN0YXR1cyB0byBjbGVhciBhZnRlciBkaXNhYmxlXG4iKTsKPiA+
ICsJCQkJYnJlYWs7Cj4gPiArCQkJfQo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCj4gPiArCXBjaV9p
b3VubWFwKGRldiwgYmFyKTsKPiA+ICsKPiA+ICsJcGNpZV9mbHIoZGV2KTsKPiA+ICsKPiA+ICsJ
cmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gwqBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZf
cmVzZXRfbWV0aG9kcyBwY2lfZGV2X3Jlc2V0X21ldGhvZHNbXSA9IHsKPiA+IMKgCXsgUENJX1ZF
TkRPUl9JRF9JTlRFTCwgUENJX0RFVklDRV9JRF9JTlRFTF84MjU5OV9TRlBfVkYsCj4gPiDCoAkJ
wqByZXNldF9pbnRlbF84MjU5OV9zZnBfdmlydGZuIH0sCj4gPiBAQCAtMzY3Niw2ICszNzU4LDcg
QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2X3Jlc2V0X21ldGhvZHMKPiA+IHBjaV9kZXZf
cmVzZXRfbWV0aG9kc1tdID0gewo+ID4gwqAJCXJlc2V0X2l2Yl9pZ2QgfSwKPiA+IMKgCXsgUENJ
X1ZFTkRPUl9JRF9JTlRFTCwgUENJX0RFVklDRV9JRF9JTlRFTF9JVkJfTTJfVkdBLAo+ID4gwqAJ
CXJlc2V0X2l2Yl9pZ2QgfSwKPiA+ICsJeyBQQ0lfVkVORE9SX0lEX1NBTVNVTkcsIDB4YTgwNCwg
bnZtZV9kaXNhYmxlX2FuZF9mbHIgfSwgIAo+IAo+IFdoeSBkb24ndCB3ZSBqdXN0IGRlZmluZSBh
IG1hY3JvIGp1c3QgbGlrZSBvdGhlciBERVZJQ0VfSURzLiAoZS5nLgo+IFBDSUVfREVWSUNFX0lE
X0lOVEVMXzgyNTk5X1NGUF9WRikuCj4gCj4gI2RlZmluZSBQQ0lfREVWSUNFX0lEX1NBTVNVTkdf
UE05NjEgwqAweGE4MDQKCmluY2x1ZGUvbGludXgvcGNpX2lkcy5oIgovKgogKiAgICAgIFBDSSBD
bGFzcywgVmVuZG9yIGFuZCBEZXZpY2UgSURzCiAqCiAqICAgICAgUGxlYXNlIGtlZXAgc29ydGVk
LgogKgogKiAgICAgIERvIG5vdCBhZGQgbmV3IGVudHJpZXMgdG8gdGhpcyBmaWxlIHVubGVzcyB0
aGUgZGVmaW5pdGlvbnMKICogICAgICBhcmUgc2hhcmVkIGJldHdlZW4gbXVsdGlwbGUgZHJpdmVy
cy4KICovCgpUaG9zZSBvdGhlciBkZXZpY2VzIGFyZSByZWxhdGl2ZWx5IG9sZCwgdGhleSB3ZXJl
IHByb2JhYmx5ICNkZWZpbmUnZApiZWZvcmUgd2Ugc3RhcnRlZCB0aGUgcG9saWN5IGluIHRoZSBo
ZWFkZXIuICBUaGFua3MsCgpBbGV4Cgo+ID4gwqAJeyBQQ0lfVkVORE9SX0lEX0NIRUxTSU8sIFBD
SV9BTllfSUQsCj4gPiDCoAkJcmVzZXRfY2hlbHNpb19nZW5lcmljX2RldiB9LAo+ID4gwqAJeyAw
IH0KPiA+IAo+ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwo+ID4gTGludXgtbnZtZSBtYWlsaW5nIGxpc3QKPiA+IExpbnV4LW52bWVAbGlzdHMu
aW5mcmFkZWFkLm9yZwo+ID4gaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0
aW5mby9saW51eC1udm1lICAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwpMaW51eC1udm1lIG1haWxpbmcgbGlzdApMaW51eC1udm1lQGxpc3RzLmluZnJh
ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51
eC1udm1lCg==

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v3 3/3] PCI: Intel DC P3700 NVMe delay after FLR quirk
  2018-07-24 16:18   ` Alex Williamson
@ 2018-08-09 19:35     ` Bjorn Helgaas
  0 siblings, 0 replies; 8+ messages in thread
From: Bjorn Helgaas @ 2018-08-09 19:35 UTC (permalink / raw)
  To: Alex Williamson; +Cc: linux-pci, linux-kernel, linux-nvme

On Tue, Jul 24, 2018 at 10:18:48AM -0600, Alex Williamson wrote:
> On Tue, 24 Jul 2018 10:14:46 -0600
> Alex Williamson <alex.williamson@redhat.com> wrote:
> 
> > Add a device specific reset for Intel DC P3700 NVMe device which
> > exhibits a timeout failure in drivers waiting for the ready status to
> > update after NVMe enable if the driver interacts with the device too
> > quickly after FLR.  As this has been observed in device assignment
> > scenarios, resolve this with a device specific reset quirk to add an
> > additional, heuristically determined, delay after the FLR completes.
> > 
> > Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> > ---
> >  drivers/pci/quirks.c |   22 ++++++++++++++++++++++
> >  1 file changed, 22 insertions(+)
> 
> I forgot to link the bz in this one, if this somehow becomes the final
> version, please add:
> 
> Link: https://bugzilla.redhat.com/show_bug.cgi?id=159265

Corrected link to: https://bugzilla.redhat.com/show_bug.cgi?id=1592654

_______________________________________________
Linux-nvme mailing list
Linux-nvme@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-nvme

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-08-09 19:35 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-24 16:14 [PATCH v3 0/3] PCI: NVMe reset quirks Alex Williamson
2018-07-24 16:14 ` [PATCH v3 1/3] PCI: Export pcie_has_flr() Alex Williamson
2018-07-24 16:14 ` [PATCH v3 2/3] PCI: Samsung SM961/PM961 NVMe disable before FLR quirk Alex Williamson
2018-07-24 19:53   ` Minwoo Im
2018-07-24 20:09     ` Alex Williamson
2018-07-24 16:14 ` [PATCH v3 3/3] PCI: Intel DC P3700 NVMe delay after " Alex Williamson
2018-07-24 16:18   ` Alex Williamson
2018-08-09 19:35     ` Bjorn Helgaas

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).