NetBSD-Bugs archive

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

port-sparc/42516: floppy on SS20 with 150MHz HyperSPARC doesn't work



>Number:         42516
>Category:       port-sparc
>Synopsis:       floppy on SS20 with 150MHz HyperSPARC doesn't work
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    port-sparc-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Dec 24 15:15:00 +0000 2009
>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



Home | Main Index | Thread Index | Old Index