Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/sparc64/dev Be a bit more elaborate with UE DMA err...



details:   https://anonhg.NetBSD.org/src/rev/08a0933c411e
branches:  trunk
changeset: 514977:08a0933c411e
user:      eeh <eeh%NetBSD.org@localhost>
date:      Sat Sep 15 07:10:04 2001 +0000

description:
Be a bit more elaborate with UE DMA errors.

diffstat:

 sys/arch/sparc64/dev/psycho.c    |  14 +++++++++-----
 sys/arch/sparc64/dev/psychoreg.h |   5 ++++-
 2 files changed, 13 insertions(+), 6 deletions(-)

diffs (51 lines):

diff -r e89d0a5a1e93 -r 08a0933c411e sys/arch/sparc64/dev/psycho.c
--- a/sys/arch/sparc64/dev/psycho.c     Sat Sep 15 06:55:50 2001 +0000
+++ b/sys/arch/sparc64/dev/psycho.c     Sat Sep 15 07:10:04 2001 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: psycho.c,v 1.35 2001/09/10 16:17:06 eeh Exp $  */
+/*     $NetBSD: psycho.c,v 1.36 2001/09/15 07:10:04 eeh Exp $  */
 
 /*
  * Copyright (c) 1999, 2000 Matthew R. Green
@@ -585,14 +585,18 @@
 {
        struct psycho_softc *sc = (struct psycho_softc *)arg;
        struct psychoreg *regs = sc->sc_regs;
+       long long afsr = regs->psy_ue_afsr;
+       long long afar = regs->psy_ue_afar;
+       char bits[128];
 
        /*
         * It's uncorrectable.  Dump the regs and panic.
         */
-
-       panic("%s: uncorrectable DMA error AFAR %llx AFSR %llx\n",
-               sc->sc_dev.dv_xname, 
-               (long long)regs->psy_ue_afar, (long long)regs->psy_ue_afsr);
+       panic("%s: uncorrectable DMA error AFAR %llx pa %llx AFSR %llx:\n%s",
+               sc->sc_dev.dv_xname, afar, 
+               (long long)iommu_extract(sc->sc_is, (vaddr_t)afar), afsr,
+               bitmask_snprintf(afsr, PSYCHO_UE_AFSR_BITS,
+                       bits, sizeof(bits)));
        return (1);
 }
 static int 
diff -r e89d0a5a1e93 -r 08a0933c411e sys/arch/sparc64/dev/psychoreg.h
--- a/sys/arch/sparc64/dev/psychoreg.h  Sat Sep 15 06:55:50 2001 +0000
+++ b/sys/arch/sparc64/dev/psychoreg.h  Sat Sep 15 07:10:04 2001 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: psychoreg.h,v 1.8 2001/09/10 16:17:06 eeh Exp $ */
+/*     $NetBSD: psychoreg.h,v 1.9 2001/09/15 07:10:05 eeh Exp $ */
 
 /*
  * Copyright (c) 1998, 1999 Eduardo E. Horvath
@@ -69,6 +69,9 @@
        u_int64_t       psy_ecccr;              /* ECC control register */              /* 1fe.0000.0020 */
        u_int64_t       reserved;                                                       /* 1fe.0000.0028 */
        u_int64_t       psy_ue_afsr;            /* Uncorrectable Error AFSR */          /* 1fe.0000.0030 */
+#define        PSYCHO_UE_AFSR_BITS     "\177\020"                              \
+       "b\27BLK\0b\070P_DTE\0b\071S_DTE\0b\072S_DWR\0b\073S_DRD\0b"    \
+       "\075P_DWR\0b\076P_DRD\0\0"
        u_int64_t       psy_ue_afar;            /* Uncorrectable Error AFAR */          /* 1fe.0000.0038 */
        u_int64_t       psy_ce_afsr;            /* Correctable Error AFSR */            /* 1fe.0000.0040 */
        u_int64_t       psy_ce_afar;            /* Correctable Error AFAR */            /* 1fe.0000.0048 */



Home | Main Index | Thread Index | Old Index