Module Name: src Committed By: tsutsui Date: Sat Feb 17 17:41:43 UTC 2024
Modified Files: src/sys/arch/vax/vsa: ncr.c vsbus.c Log Message: Fix SCSI tranfer corruption on VAXstation 3100/m30 (KA420) on netboot. See my post on port-vax@ for details: https://mail-index.netbsd.org/port-vax/2024/02/16/msg004866.html and "go ahead!" from ragge@. Should be pulled up to netbsd-10 and -9. To generate a diff of this commit: cvs rdiff -u -r1.51 -r1.52 src/sys/arch/vax/vsa/ncr.c cvs rdiff -u -r1.68 -r1.69 src/sys/arch/vax/vsa/vsbus.c 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/vax/vsa/ncr.c diff -u src/sys/arch/vax/vsa/ncr.c:1.51 src/sys/arch/vax/vsa/ncr.c:1.52 --- src/sys/arch/vax/vsa/ncr.c:1.51 Wed Dec 20 15:34:46 2023 +++ src/sys/arch/vax/vsa/ncr.c Sat Feb 17 17:41:43 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: ncr.c,v 1.51 2023/12/20 15:34:46 thorpej Exp $ */ +/* $NetBSD: ncr.c,v 1.52 2024/02/17 17:41:43 tsutsui Exp $ */ /*- * Copyright (c) 1996 The NetBSD Foundation, Inc. @@ -42,7 +42,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ncr.c,v 1.51 2023/12/20 15:34:46 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ncr.c,v 1.52 2024/02/17 17:41:43 tsutsui Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -66,6 +66,7 @@ __KERNEL_RCSID(0, "$NetBSD: ncr.c,v 1.51 #include <machine/sid.h> #include <machine/scb.h> #include <machine/clock.h> +#include <machine/ka420.h> #include "ioconf.h" @@ -208,6 +209,16 @@ si_vsbus_attach(device_t parent, device_ else target = (clk_page[0xbc/2] >> tweak) & 7; + /* + * Explicitly enable upto 128KB "Big DMA" on KA420. + * (It looks KA420 firmware doesn't enable it on network boot) + */ +#define STC_MODE_OFF (KA420_STC_MODE - KA420_SCS_BASE) + if (vax_boardtype == VAX_BTYP_420) { + bus_space_write_1(ncr_sc->sc_regt, ncr_sc->sc_regh, + STC_MODE_OFF, 1); + } + aprint_normal("\n"); aprint_normal_dev(self, "NCR5380, SCSI ID %d\n", target); Index: src/sys/arch/vax/vsa/vsbus.c diff -u src/sys/arch/vax/vsa/vsbus.c:1.68 src/sys/arch/vax/vsa/vsbus.c:1.69 --- src/sys/arch/vax/vsa/vsbus.c:1.68 Mon Dec 12 18:22:32 2022 +++ src/sys/arch/vax/vsa/vsbus.c Sat Feb 17 17:41:43 2024 @@ -1,4 +1,4 @@ -/* $NetBSD: vsbus.c,v 1.68 2022/12/12 18:22:32 jakllsch Exp $ */ +/* $NetBSD: vsbus.c,v 1.69 2024/02/17 17:41:43 tsutsui Exp $ */ /* * Copyright (c) 1996, 1999 Ludd, University of Lule}, Sweden. * All rights reserved. @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: vsbus.c,v 1.68 2022/12/12 18:22:32 jakllsch Exp $"); +__KERNEL_RCSID(0, "$NetBSD: vsbus.c,v 1.69 2024/02/17 17:41:43 tsutsui Exp $"); #include "opt_cputype.h" @@ -146,7 +146,6 @@ vsbus_attach(device_t parent, device_t s } else { dbase = KA420_DMA_BASE; dsize = KA420_DMA_SIZE; - *(volatile char *)(sc->sc_vsregs + 0xe0) = 1; /* Big DMA */ } sc->sc_dmasize = dsize; sc->sc_dmaaddr = uvm_km_alloc(kernel_map, dsize, 0,