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