NetBSD Problem Report #42516

From tsutsui@ceres.dti.ne.jp  Thu Dec 24 15:13:16 2009
Return-Path: <tsutsui@ceres.dti.ne.jp>
Received: from mail.netbsd.org (mail.netbsd.org [204.152.190.11])
	by www.NetBSD.org (Postfix) with ESMTP id B5CE263B844
	for <gnats-bugs@gnats.NetBSD.org>; Thu, 24 Dec 2009 15:13:16 +0000 (UTC)
Message-Id: <200912241513.nBOFDDgw009628@mirage.ceres.dti.ne.jp>
Date: Fri, 25 Dec 2009 00:13:13 +0900 (JST)
From: tsutsui@ceres.dti.ne.jp
Reply-To: tsutsui@ceres.dti.ne.jp
To: gnats-bugs@gnats.NetBSD.org
Cc: tsutsui@ceres.dti.ne.jp
Subject: floppy on SS20 with 150MHz HyperSPARC doesn't work
X-Send-Pr-Version: 3.95

>Number:         42516
>Category:       port-sparc
>Synopsis:       floppy on SS20 with 150MHz HyperSPARC doesn't work
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    tsutsui
>State:          closed
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 24 15:15:00 +0000 2009
>Closed-Date:    Thu Jan 28 13:57:43 +0000 2010
>Last-Modified:  Thu Jan 28 13:57:43 +0000 2010
>Originator:     Izumi Tsutsui
>Release:        NetBSD 5.99.22
>Organization:
>Environment:
System: NetBSD/sparc
Architecture: sparc
Machine: sparc
On these two SS20s:
>> mainbus0 (root): PFU,S-4/20A: hostid 72xxxxxx
>> cpu0 at mainbus0: RT620/625 @ 150 MHz, on-chip FPU

>> mainbus0 (root): SUNW,SPARCstation-20: hostid 72xxxxxx
>> cpu0 at mainbus0: mid 8: RT620/625 @ 150 MHz, on-chip FPU

>Description:
Reading floppies on the above machines causes data overrun errors:

---
fd0a: hard error reading fsbn 0
fd0: controller status: state 17 (st0 70<abnrml,seek_cmplt,drv_chck> cyl 0)
---

More verbose FD_DEBUG says:

---
fdstrategy: b_blkno 0 b_bcount 512 blkno 0 cylin 0
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 2)
blkno 0 nblks 1 nstat 7 tc 0
fdc: 9 -> threshold
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdc: 10 -> threshold
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdc: 11 -> threshold
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdc: 12 -> threshold
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdc: 13 -> threshold
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdc: 14 -> threshold
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdc: 15 -> threshold
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdcstate: doio: read drive 0 track 0 head 0 sec 0 nblks 1
fd0: read failed: state 7 (st0 0x40<abnrml> st1 0x10<data_overrun> st2 0x0 cyl 0 head 0 sec 1)
blkno 0 nblks 1 nstat 7 tc 512
fdc reset
fd0: recalibrate failed: state 17 (st0 0x70<abnrml,seek_cmplt,drv_chck> cyl 0)
fd0a: hard error reading fsbn 0
fd0: controller status: state 17 (st0 0x70<abnrml,seek_cmplt,drv_chck> cyl 0)
---


>How-To-Repeat:
Try to read floppy on 150MHz HyperSPARC SS20 machines.

>Fix:
The following patch seems to fix the problem.

Note Solaris has a patch for 150MHz HyperSPARC:
http://sunsolve.sun.com/search/document.do?assetkey=1-21-107389-01-1
"SunOS 5.6: fd floppy won't work after upgrading to 150MHZ hyperSPARC"
but I don't know if it's the same problem with this PR.

Index: sparc/auxreg.h
===================================================================
RCS file: /cvsroot/src/sys/arch/sparc/sparc/auxreg.h,v
retrieving revision 1.12
diff -u -r1.12 auxreg.h
--- sparc/auxreg.h	16 Nov 2005 03:00:23 -0000	1.12
+++ sparc/auxreg.h	20 Dec 2009 03:26:26 -0000
@@ -105,6 +105,9 @@
 	if (CPU_ISSUN4M) {						\
 		/* AUXIO4M_FTC bit is auto-clear */			\
 		*AUXIO4M_REG = auxio_regval | AUXIO4M_FTC;		\
+		/* XXX we need to clear it on hyperSPARC SS20 */	\
+		DELAY(10);						\
+		*AUXIO4M_REG = auxio_regval;				\
 	} else {							\
 		auxio_regval |= AUXIO4C_FTC;				\
 		*AUXIO4C_REG = auxio_regval;				\

---
Izumi Tsutsui

>Release-Note:

>Audit-Trail:

Responsible-Changed-From-To: port-sparc-maintainer->tsutsui
Responsible-Changed-By: tsutsui@NetBSD.org
Responsible-Changed-When: Sat, 02 Jan 2010 18:16:29 +0900
Responsible-Changed-Why:
I'll handle this myself since no port-sparc maintainer.


State-Changed-From-To: open->analyzed
State-Changed-By: tsutsui@NetBSD.org
State-Changed-When: Sat, 02 Jan 2010 18:16:29 +0900
State-Changed-Why:
I have a patch, but needs confirmation on non hyperSPARC machines.


From: Izumi Tsutsui <tsutsui@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/42516 CVS commit: src/sys/arch/sparc/sparc
Date: Wed, 13 Jan 2010 12:43:06 +0000

 Module Name:	src
 Committed By:	tsutsui
 Date:		Wed Jan 13 12:43:06 UTC 2010

 Modified Files:
 	src/sys/arch/sparc/sparc: auxreg.h

 Log Message:
 Explicitly clear AUXIO4M_FTC bit in FTC_FLIP macro used on
 pseudo-dma for floppy, as well as AUXIO4C_FTC bit for sun4c.
 A comment in the macro says AUXIO4M_FTC bit is auto-clear,
 but my two SS20s (including compatible) with 150MHz hyperSPARCs
 get data_overrun without it, and no bad side effect on SS5
 (works with and without this change).

 Closes PR port-sparc/42516, which is the last one of a bunch of
 floppy issue on NetBSD/sparc since NetBSD 2.0 days. See
 http://mail-index.NetBSD.org/port-sparc/2009/12/20/msg000484.html
 for details.


 To generate a diff of this commit:
 cvs rdiff -u -r1.12 -r1.13 src/sys/arch/sparc/sparc/auxreg.h

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: analyzed->pending-pullups
State-Changed-By: tsutsui@NetBSD.org
State-Changed-When: Wed, 13 Jan 2010 22:33:59 +0900
State-Changed-Why:
Fix committed, and should be pulled up to netbsd-4 and netbsd-5.


From: Manuel Bouyer <bouyer@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/42516 CVS commit: [netbsd-5] src
Date: Sat, 23 Jan 2010 17:47:37 +0000

 Module Name:	src
 Committed By:	bouyer
 Date:		Sat Jan 23 17:47:37 UTC 2010

 Modified Files:
 	src/distrib/sparc/miniroot [netbsd-5]: Makefile.inc
 	src/distrib/sparc/ramdisk [netbsd-5]: dot.profile
 	src/sys/arch/sparc/dev [netbsd-5]: audioamd.c fd.c
 	src/sys/arch/sparc/sparc [netbsd-5]: auxreg.h
 	src/sys/arch/sparc/stand/common [netbsd-5]: promdev.c

 Log Message:
 Pull up following revision(s) (requested by tsutsui in ticket #1251):
 	sys/arch/sparc/sparc/auxreg.h: revision 1.13
 	distrib/sparc/ramdisk/dot.profile: revision 1.20
 	sys/arch/sparc/dev/audioamd.c: revision 1.25
 	sys/arch/sparc/dev/fd.c: revision 1.147
 	sys/arch/sparc/stand/common/promdev.c: revision 1.23
 	distrib/sparc/miniroot/Makefile.inc: revision 1.16
 Build miniroot binaries for sparc with -Os to shrink instfs.tgz
 for the second boot floppy which use miniroot objects.
 This is workaround for PR install/42146, and ok'ed by mrg@.
 Don't try to read disklabel to check FS_RAID on floppy boot since
 reopening floppy could cause Data Access Exception later.
 Fixes PR port-sparc/42186, ok'ed by mrg@.
 Disable "fast trap" handlers which invoke software interrupts
 in sparc/amd7930intr.s and sparc/bsd_fdintr.s until they are
 rewritten to adapt new MI softint(9) API.
 No particular comments on PR port-sparc/42192, but
 this fixes timeout problem on floppy access on my SPARCstation 1+.
 XXX: floppy support on sun4m seems to have another problem (data overrun).
 Use /dev/fd0a rather than /dev/rfd0a to read instfs.tgz image from floppy.
 It looks newer (appearred after 1.6) gzip tries to read less than DEV_BSIZE
 (to check header?) so we can't use raw device directly.
 (note sparc bootfs ramdisk doesn't have dd(1))
 Workaround for PR port-sparc/42193, and would also fix PR install/28734.
 Explicitly clear AUXIO4M_FTC bit in FTC_FLIP macro used on
 pseudo-dma for floppy, as well as AUXIO4C_FTC bit for sun4c.
 A comment in the macro says AUXIO4M_FTC bit is auto-clear,
 but my two SS20s (including compatible) with 150MHz hyperSPARCs
 get data_overrun without it, and no bad side effect on SS5
 (works with and without this change).
 Closes PR port-sparc/42516, which is the last one of a bunch of
 floppy issue on NetBSD/sparc since NetBSD 2.0 days. See
 http://mail-index.NetBSD.org/port-sparc/2009/12/20/msg000484.html
 for details.


 To generate a diff of this commit:
 cvs rdiff -u -r1.12 -r1.12.34.1 src/distrib/sparc/miniroot/Makefile.inc
 cvs rdiff -u -r1.19 -r1.19.4.1 src/distrib/sparc/ramdisk/dot.profile
 cvs rdiff -u -r1.23 -r1.23.28.1 src/sys/arch/sparc/dev/audioamd.c
 cvs rdiff -u -r1.141 -r1.141.6.1 src/sys/arch/sparc/dev/fd.c
 cvs rdiff -u -r1.12 -r1.12.88.1 src/sys/arch/sparc/sparc/auxreg.h
 cvs rdiff -u -r1.21 -r1.21.14.1 src/sys/arch/sparc/stand/common/promdev.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

From: Manuel Bouyer <bouyer@netbsd.org>
To: gnats-bugs@gnats.NetBSD.org
Cc: 
Subject: PR/42516 CVS commit: [netbsd-4] src
Date: Wed, 27 Jan 2010 20:59:47 +0000

 Module Name:	src
 Committed By:	bouyer
 Date:		Wed Jan 27 20:59:46 UTC 2010

 Modified Files:
 	src/distrib/sparc/ramdisk [netbsd-4]: dot.profile
 	src/sys/arch/sparc/sparc [netbsd-4]: auxreg.h
 	src/sys/arch/sparc/stand/common [netbsd-4]: promdev.c

 Log Message:
 Pull up following revision(s) (requested by tsutsui in ticket #1379):
 	sys/arch/sparc/sparc/auxreg.h: revision 1.13
 	distrib/sparc/ramdisk/dot.profile: revision 1.20
 	sys/arch/sparc/stand/common/promdev.c: revision 1.23
 Don't try to read disklabel to check FS_RAID on floppy boot since
 reopening floppy could cause Data Access Exception later.
 Fixes PR port-sparc/42186, ok'ed by mrg@.
 Use /dev/fd0a rather than /dev/rfd0a to read instfs.tgz image from floppy.
 It looks newer (appearred after 1.6) gzip tries to read less than DEV_BSIZE
 (to check header?) so we can't use raw device directly.
 (note sparc bootfs ramdisk doesn't have dd(1))
 Workaround for PR port-sparc/42193, and would also fix PR install/28734.
 Explicitly clear AUXIO4M_FTC bit in FTC_FLIP macro used on
 pseudo-dma for floppy, as well as AUXIO4C_FTC bit for sun4c.
 A comment in the macro says AUXIO4M_FTC bit is auto-clear,
 but my two SS20s (including compatible) with 150MHz hyperSPARCs
 get data_overrun without it, and no bad side effect on SS5
 (works with and without this change).
 Closes PR port-sparc/42516, which is the last one of a bunch of
 floppy issue on NetBSD/sparc since NetBSD 2.0 days. See
 http://mail-index.NetBSD.org/port-sparc/2009/12/20/msg000484.html
 for details.


 To generate a diff of this commit:
 cvs rdiff -u -r1.18 -r1.18.16.1 src/distrib/sparc/ramdisk/dot.profile
 cvs rdiff -u -r1.12 -r1.12.24.1 src/sys/arch/sparc/sparc/auxreg.h
 cvs rdiff -u -r1.20.8.1 -r1.20.8.2 src/sys/arch/sparc/stand/common/promdev.c

 Please note that diffs are not public domain; they are subject to the
 copyright notices on the relevant files.

State-Changed-From-To: pending-pullups->closed
State-Changed-By: tsutsui@NetBSD.org
State-Changed-When: Thu, 28 Jan 2010 22:57:43 +0900
State-Changed-Why:
Pulled up to netbsd-4 and netbsd-5.


>Unformatted:

NetBSD Home
NetBSD PR Database Search

(Contact us) $NetBSD: query-full-pr,v 1.39 2013/11/01 18:47:49 spz Exp $
$NetBSD: gnats_config.sh,v 1.8 2006/05/07 09:23:38 tsutsui Exp $
Copyright © 1994-2007 The NetBSD Foundation, Inc. ALL RIGHTS RESERVED.