Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src Revert kern/54790 and kern/54855 NCQ fix that penalised all ...



details:   https://anonhg.NetBSD.org/src/rev/4d47f1fae28c
branches:  trunk
changeset: 467247:4d47f1fae28c
user:      simonb <simonb%NetBSD.org@localhost>
date:      Sat Jan 18 11:22:49 2020 +0000

description:
Revert kern/54790 and kern/54855 NCQ fix that penalised all Samsung
EVO 860 drives.

ok jdolecek@

diffstat:

 share/man/man4/wd.4 |  18 +-----------------
 sys/dev/ata/wd.c    |  26 ++++++++++++--------------
 2 files changed, 13 insertions(+), 31 deletions(-)

diffs (101 lines):

diff -r e3c9b64a15cd -r 4d47f1fae28c share/man/man4/wd.4
--- a/share/man/man4/wd.4       Sat Jan 18 07:54:26 2020 +0000
+++ b/share/man/man4/wd.4       Sat Jan 18 11:22:49 2020 +0000
@@ -1,4 +1,4 @@
-.\"    $NetBSD: wd.4,v 1.23 2020/01/14 09:30:34 wiz Exp $
+.\"    $NetBSD: wd.4,v 1.24 2020/01/18 11:22:49 simonb Exp $
 .\"
 .\"
 .\" Copyright (c) 1994 James A. Jegers
@@ -85,22 +85,6 @@
 .El
 .Sh NOTES
 Certain
-.Tn Samsung
-.Tn 860 EVO
-SSD drives have firmware bug which causes interface CRC errors when NCQ
-ATA commands are used.
-For this reason NCQ is disabled for these drives by default.
-Affected drives include, but are not limited to:
-.Pp
-.Bl -tag -width Ds -offset indent -compact
-.It Samsung SSD 860 EVO 500GB
-.It Samsung SSD 860 EVO 1TB
-.El
-.Pp
-It is recommended to not use the EVO SSD drives, and replace them
-with other models.
-.Pp
-Certain
 .Tn Seagate
 .Tn Barracuda
 drives sold around 2003 have a known firmware bug leading to corrupted
diff -r e3c9b64a15cd -r 4d47f1fae28c sys/dev/ata/wd.c
--- a/sys/dev/ata/wd.c  Sat Jan 18 07:54:26 2020 +0000
+++ b/sys/dev/ata/wd.c  Sat Jan 18 11:22:49 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: wd.c,v 1.455 2020/01/14 21:08:06 jdolecek Exp $ */
+/*     $NetBSD: wd.c,v 1.456 2020/01/18 11:22:49 simonb Exp $ */
 
 /*
  * Copyright (c) 1998, 2001 Manuel Bouyer.  All rights reserved.
@@ -54,7 +54,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wd.c,v 1.455 2020/01/14 21:08:06 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wd.c,v 1.456 2020/01/18 11:22:49 simonb Exp $");
 
 #include "opt_ata.h"
 #include "opt_wd.h"
@@ -231,9 +231,8 @@
 #endif
 
 #define        WD_QUIRK_SPLIT_MOD15_WRITE      0x0001  /* must split certain writes */
-#define        WD_QUIRK_BAD_NCQ                0x0002  /* drive NCQ support broken */
 
-#define        WD_QUIRK_FMT "\20\1SPLIT_MOD15_WRITE\2BAD_NCQ"
+#define        WD_QUIRK_FMT "\20\1SPLIT_MOD15_WRITE\2FORCE_LBA48"
 
 /*
  * Quirk table for IDE drives.  Put more-specific matches first, since
@@ -260,11 +259,14 @@
         * Seagate Barracuda Serial ATA V family.
         *
         */
-       { "ST3120023AS", WD_QUIRK_SPLIT_MOD15_WRITE },
-       { "ST380023AS", WD_QUIRK_SPLIT_MOD15_WRITE },
-       { "ST360015AS", WD_QUIRK_SPLIT_MOD15_WRITE },
-       { "Samsung SSD 860 EVO *", WD_QUIRK_BAD_NCQ },
-       { NULL, 0 }
+       { "ST3120023AS",
+         WD_QUIRK_SPLIT_MOD15_WRITE },
+       { "ST380023AS",
+         WD_QUIRK_SPLIT_MOD15_WRITE },
+       { "ST360015AS",
+         WD_QUIRK_SPLIT_MOD15_WRITE },
+       { NULL,
+         0 }
 };
 
 static const struct wd_quirk *
@@ -373,10 +375,6 @@
                if (wd->sc_quirks & WD_QUIRK_SPLIT_MOD15_WRITE) {
                        aprint_error_dev(self, "drive corrupts write transfers with certain controllers, consider replacing\n");
                }
-
-               if (wd->sc_quirks & WD_QUIRK_BAD_NCQ) {
-                       aprint_error_dev(self, "drive NCQ support broken, NCQ disabled, consider replacing\n");
-               }
        }
 
        if ((wd->sc_params.atap_multi & 0xff) > 1) {
@@ -2183,7 +2181,7 @@
                return;
        }
 
-       wd->drv_ncq = ((wd->sc_quirks & WD_QUIRK_BAD_NCQ) == 0) ? true : false;
+       wd->drv_ncq = true;
        if ((error = sysctl_createv(&wd->nodelog, 0, NULL, NULL,
                                CTLFLAG_READWRITE, CTLTYPE_BOOL, "use_ncq",
                                SYSCTL_DESCR("use NCQ if supported"),



Home | Main Index | Thread Index | Old Index