Module Name: src
Committed By: jakllsch
Date: Mon Feb 17 19:01:04 UTC 2025
Modified Files:
src/sys/arch/i386/conf: LEGACY
src/sys/dev/ata: ata.c files.ata
Log Message:
Restore ATA DMA mode downgrade support everywhere; it's a necessary part
of any system supporting (parallel) ATA DMA. There is hardware out there,
including cobalt, macppc, and sparc64 where this functionality is
necessary to avoid non-functional disks, either in as-shipped hardware
configurations or with add-in cards, or perhaps just with compromised
IDE/PATA cables.
Should address:
PR 58767
PR 59023
PR 59078
If anyone really insists on not having this support they can now turn it
off themselves with `options ATA_NO_DOWNGRADE_MODE`
To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/i386/conf/LEGACY
cvs rdiff -u -r1.170 -r1.171 src/sys/dev/ata/ata.c
cvs rdiff -u -r1.32 -r1.33 src/sys/dev/ata/files.ata
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/i386/conf/LEGACY
diff -u src/sys/arch/i386/conf/LEGACY:1.4 src/sys/arch/i386/conf/LEGACY:1.5
--- src/sys/arch/i386/conf/LEGACY:1.4 Mon May 13 21:50:47 2024
+++ src/sys/arch/i386/conf/LEGACY Mon Feb 17 19:01:04 2025
@@ -1,4 +1,4 @@
-# $NetBSD: LEGACY,v 1.4 2024/05/13 21:50:47 nia Exp $
+# $NetBSD: LEGACY,v 1.5 2025/02/17 19:01:04 jakllsch Exp $
# LEGACY kernel -- includes vga@isa and pcdisplay@isa for pre-PCI
# systems, due to significant pain making them fail to attach when
@@ -10,9 +10,6 @@ vga0 at isa?
pcdisplay0 at isa? # CGA, MDA, EGA, HGA
wsdisplay* at pcdisplay? console ?
-# Enable DMA -> PIO downgrade after a certain number of DMA errors.
-options ATA_DOWNGRADE_MODE
-
# XXX we could turn off all sorts of other modern features in this
# configuration, but that is left for future work.
Index: src/sys/dev/ata/ata.c
diff -u src/sys/dev/ata/ata.c:1.170 src/sys/dev/ata/ata.c:1.171
--- src/sys/dev/ata/ata.c:1.170 Mon Feb 17 18:45:01 2025
+++ src/sys/dev/ata/ata.c Mon Feb 17 19:01:04 2025
@@ -1,4 +1,4 @@
-/* $NetBSD: ata.c,v 1.170 2025/02/17 18:45:01 jakllsch Exp $ */
+/* $NetBSD: ata.c,v 1.171 2025/02/17 19:01:04 jakllsch Exp $ */
/*
* Copyright (c) 1998, 2001 Manuel Bouyer. All rights reserved.
@@ -25,7 +25,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ata.c,v 1.170 2025/02/17 18:45:01 jakllsch Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ata.c,v 1.171 2025/02/17 19:01:04 jakllsch Exp $");
#include "opt_ata.h"
@@ -84,7 +84,7 @@ int atadebug_mask = ATADEBUG_MASK;
#define ATADEBUG_PRINT(args, level)
#endif
-#if defined(ATA_DOWNGRADE_MODE) && NATA_DMA
+#if !defined(ATA_NO_DOWNGRADE_MODE) && NATA_DMA
static int ata_downgrade_mode(struct ata_drive_datas *, int);
#endif
@@ -966,7 +966,7 @@ ata_dmaerr(struct ata_drive_datas *drvp,
*/
drvp->n_dmaerrs++;
if (drvp->n_dmaerrs >= NERRS_MAX && drvp->n_xfers <= NXFER) {
-#ifdef ATA_DOWNGRADE_MODE
+#if !defined(ATA_NO_DOWNGRADE_MODE)
ata_downgrade_mode(drvp, flags);
drvp->n_dmaerrs = NERRS_MAX-1;
#else
@@ -1769,7 +1769,7 @@ ata_print_modes(struct ata_channel *chp)
}
}
-#if defined(ATA_DOWNGRADE_MODE) && NATA_DMA
+#if !defined(ATA_NO_DOWNGRADE_MODE) && NATA_DMA
/*
* downgrade the transfer mode of a drive after an error. return 1 if
* downgrade was possible, 0 otherwise.
Index: src/sys/dev/ata/files.ata
diff -u src/sys/dev/ata/files.ata:1.32 src/sys/dev/ata/files.ata:1.33
--- src/sys/dev/ata/files.ata:1.32 Sun Sep 22 17:37:08 2024
+++ src/sys/dev/ata/files.ata Mon Feb 17 19:01:04 2025
@@ -1,4 +1,4 @@
-# $NetBSD: files.ata,v 1.32 2024/09/22 17:37:08 uwe Exp $
+# $NetBSD: files.ata,v 1.33 2025/02/17 19:01:04 jakllsch Exp $
#
# Config file and device description for machine-independent devices
# which attach to ATA busses. Included by ports that need it. Ports
@@ -14,7 +14,7 @@ file dev/ata/ata_wdc.c wd & atabus & wd
defflag opt_wd.h WD_SOFTBADSECT
defflag opt_wd.h WD_CHAOS_MONKEY
-defflag opt_ata.h ATA_DOWNGRADE_MODE
+defflag opt_ata.h ATA_NO_DOWNGRADE_MODE
defparam opt_ata.h ATADEBUG_WD_MASK
file dev/ata/ata.c (ata_hl | atapi) & atabus