Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F131865312
D17708.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
D17708.id.diff
View Options
Index: head/sys/dev/nvme/nvme.c
===================================================================
--- head/sys/dev/nvme/nvme.c
+++ head/sys/dev/nvme/nvme.c
@@ -106,6 +106,7 @@
{ 0x05401c5f, 0, 0, "Memblaze Pblaze4", QUIRK_DELAY_B4_CHK_RDY },
{ 0xa821144d, 0, 0, "Samsung PM1725", QUIRK_DELAY_B4_CHK_RDY },
{ 0xa822144d, 0, 0, "Samsung PM1725a", QUIRK_DELAY_B4_CHK_RDY },
+ { 0x01161179, 0, 0, "Toshiba XG5", QUIRK_DISABLE_TIMEOUT },
{ 0x00000000, 0, 0, NULL }
};
@@ -276,6 +277,25 @@
if (status != 0) {
nvme_ctrlr_destruct(ctrlr, dev);
return (status);
+ }
+
+ /*
+ * Some drives do not implement the completion timeout feature
+ * correctly. There's a WAR from the manufacturer to just disable it.
+ * The driver wouldn't respond correctly to a timeout anyway.
+ */
+ if (ep->quirks & QUIRK_DISABLE_TIMEOUT) {
+ int ptr;
+ uint16_t devctl2;
+
+ status = pci_find_cap(dev, PCIY_EXPRESS, &ptr);
+ if (status) {
+ device_printf(dev, "Can't locate PCIe capability?");
+ return (status);
+ }
+ devctl2 = pci_read_config(dev, ptr + PCIER_DEVICE_CTL2, sizeof(devctl2));
+ devctl2 |= PCIEM_CTL2_COMP_TIMO_DISABLE;
+ pci_write_config(dev, ptr + PCIER_DEVICE_CTL2, devctl2, sizeof(devctl2));
}
/*
Index: head/sys/dev/nvme/nvme_private.h
===================================================================
--- head/sys/dev/nvme/nvme_private.h
+++ head/sys/dev/nvme/nvme_private.h
@@ -247,7 +247,8 @@
uint32_t ready_timeout_in_ms;
uint32_t quirks;
-#define QUIRK_DELAY_B4_CHK_RDY 1 /* Can't touch MMIO on disable */
+#define QUIRK_DELAY_B4_CHK_RDY 1 /* Can't touch MMIO on disable */
+#define QUIRK_DISABLE_TIMEOUT 2 /* Disable broken completion timeout feature */
bus_space_tag_t bus_tag;
bus_space_handle_t bus_handle;
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Oct 12, 7:37 PM (5 h, 21 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23575506
Default Alt Text
D17708.id.diff (1 KB)
Attached To
Mode
D17708: Put a workaround in for command timeout malfunctioning
Attached
Detach File
Event Timeline
Log In to Comment