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 - convert to DPRINTF() style debug mess...



details:   https://anonhg.NetBSD.org/src/rev/ff36aa970862
branches:  trunk
changeset: 485211:ff36aa970862
user:      mrg <mrg%NetBSD.org@localhost>
date:      Sat Apr 22 12:36:29 2000 +0000

description:
- convert to DPRINTF() style debug messages.
- kill dead code.
- use the sbus dv_xname to construct a dvma map map, to pass to
  extent_alloc(), to help support multiple sbusses

diffstat:

 sys/arch/sparc64/dev/sbus.c |  156 ++++++++++++++++---------------------------
 1 files changed, 59 insertions(+), 97 deletions(-)

diffs (truncated from 316 to 300 lines):

diff -r b90421e56eed -r ff36aa970862 sys/arch/sparc64/dev/sbus.c
--- a/sys/arch/sparc64/dev/sbus.c       Sat Apr 22 12:03:33 2000 +0000
+++ b/sys/arch/sparc64/dev/sbus.c       Sat Apr 22 12:36:29 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: sbus.c,v 1.26 2000/04/10 13:34:18 pk Exp $ */
+/*     $NetBSD: sbus.c,v 1.27 2000/04/22 12:36:29 mrg Exp $ */
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -132,7 +132,10 @@
 #ifdef DEBUG
 #define SDB_DVMA       0x1
 #define SDB_INTR       0x2
-int sbusdebug = 0;
+int sbus_debug = 0;
+#define DPRINTF(l, s)   do { if (sbus_debug & l) printf s; } while (0)
+#else
+#define DPRINTF(l, s)
 #endif
 
 void sbusreset __P((int));
@@ -266,6 +269,7 @@
 {
        struct sbus_softc *sc = (struct sbus_softc *)self;
        struct mainbus_attach_args *ma = aux;
+       char *name;
        int node = ma->ma_node;
 
        int node0, error;
@@ -312,8 +316,13 @@
        sc->sc_is.is_iommu = &sc->sc_sysio->sys_iommu;
        sc->sc_is.is_sb = &sc->sc_sysio->sys_strbuf;
 
-       /* XXX should have instance number */
-       iommu_init("SBus dvma", &sc->sc_is, 0);
+       /* give us a nice name.. */
+       name = (char *)malloc(32, M_DEVBUF, M_NOWAIT);
+       if (name == 0)
+               panic("couldn't malloc iommu name");
+       snprintf(name, 32, "%s dvma", sc->sc_dev.dv_xname);
+
+       iommu_init(name, &sc->sc_is, 0);
 
        /*
         * Loop through ROM children, fixing any relative addresses
@@ -405,7 +414,7 @@
        if (sa->sa_promvaddrs)
                free((void *)sa->sa_promvaddrs, M_DEVBUF);
 
-       bzero(sa, sizeof(struct sbus_attach_args));/*DEBUG*/
+       bzero(sa, sizeof(struct sbus_attach_args)); /*DEBUG*/
 }
 
 
@@ -432,11 +441,10 @@
                /* We've found the connection to the parent bus */
                paddr = sc->sc_range[i].poffset + offset;
                paddr |= ((bus_addr_t)sc->sc_range[i].pspace<<32);
-#ifdef DEBUG
-               if (sbusdebug & SDB_DVMA)
-                       printf("\n_sbus_bus_map: mapping paddr slot %lx offset %lx poffset %lx paddr %lx\n",
-                              (long)slot, (long)offset, (long)sc->sc_range[i].poffset, (long)paddr);
-#endif
+               DPRINTF(SDB_DVMA,
+("\n_sbus_bus_map: mapping paddr slot %lx offset %lx poffset %lx paddr %lx\n",
+                   (long)slot, (long)offset, (long)sc->sc_range[i].poffset,
+                   (long)paddr));
                return (bus_space_map2(sc->sc_bustag, 0, paddr,
                                        size, flags, vaddr, hp));
        }
@@ -634,13 +642,9 @@
                /* Decode and remove IPL */
                ipl = INTLEV(vec);
                vec = INTVEC(vec);
-#ifdef DEBUG
-               if (sbusdebug & SDB_INTR) {
-                       printf("\nsbus: intr[%ld]%lx: %lx\n", (long)ipl, (long)vec, 
-                              intrlev[vec]);
-                       printf("Hunting for IRQ...\n");
-               }
-#endif
+               DPRINTF(SDB_INTR,
+                   ("\nsbus: intr[%ld]%lx: %lx\nHunting for IRQ...\n",
+                   (long)ipl, (long)vec, intrlev[vec]));
                if ((vec & INTMAP_OBIO) == 0) {
                        /* We're in an SBUS slot */
                        /* Register the map and clear intr registers */
@@ -650,7 +654,7 @@
                        ih->ih_map = &(&sc->sc_sysio->sbus_slot0_int)[slot];
                        ih->ih_clr = &sc->sc_sysio->sbus0_clr_int[vec];
 #ifdef DEBUG
-                       if (sbusdebug & SDB_INTR) {
+                       if (sbus_debug & SDB_INTR) {
                                int64_t intrmap = *ih->ih_map;
                                
                                printf("Found SBUS %lx IRQ as %llx in slot %d\n", 
@@ -675,11 +679,9 @@
                            INTVEC(intrmap = intrptr[i]) != INTVEC(vec); i++)
                                ;
                        if (INTVEC(intrmap) == INTVEC(vec)) {
-#ifdef DEBUG
-                               if (sbusdebug & SDB_INTR)
-                                       printf("Found OBIO %lx IRQ as %lx in slot %d\n", 
-                                              vec, (long)intrmap, i);
-#endif
+                               DPRINTF(SDB_INTR,
+                                   ("Found OBIO %lx IRQ as %lx in slot %d\n", 
+                                   vec, (long)intrmap, i));
                                /* Register the map and clear intr registers */
                                ih->ih_map = &intrptr[i];
                                intrptr = (int64_t *)&sc->sc_sysio->scsi_clr_int;
@@ -687,11 +689,12 @@
                                /* Enable the interrupt */
                                intrmap |= INTMAP_V;
                                bus_space_write_8(sc->sc_bustag, ih->ih_map, 0, (u_long)intrmap);
-                       } else panic("IRQ not found!");
+                       } else
+                               panic("IRQ not found!");
                }
        }
 #ifdef DEBUG
-       if (sbusdebug & SDB_INTR) { long i; for (i=0; i<400000000; i++); }
+       if (sbus_debug & SDB_INTR) { long i; for (i = 0; i < 400000000; i++); }
 #endif
 
        ih->ih_fun = handler;
@@ -816,7 +819,7 @@
 #ifdef DEBUG
        if (dvmaddr == (bus_addr_t)-1)  
        { 
-               printf("sbus_dmamap_load(): dvmamap_alloc(%d, %x) failed!\n", sgsize, flags);
+               printf("sbus_dmamap_load(): extent_alloc(%d, %x) failed!\n", sgsize, flags);
 #ifdef DDB
                Debugger();
 #endif
@@ -856,11 +859,9 @@
                if (buflen < sgsize)
                        sgsize = buflen;
 
-#ifdef DEBUG
-               if (sbusdebug & SDB_DVMA)
-                       printf("sbus_dmamap_load: map %p loading va %lx at pa %lx\n",
-                              map, (long)dvmaddr, (long)(curaddr & ~(NBPG-1)));
-#endif
+               DPRINTF(SDB_DVMA,
+                   ("sbus_dmamap_load: map %p loading va %lx at pa %lx\n",
+                   map, (long)dvmaddr, (long)(curaddr & ~(NBPG-1))));
                iommu_enter(&sc->sc_is, trunc_page(dvmaddr), trunc_page(curaddr), flags);
                        
                dvmaddr += PAGE_SIZE;
@@ -887,11 +888,9 @@
        addr = trunc_page(map->dm_segs[0].ds_addr);
        len = map->dm_segs[0].ds_len;
 
-#ifdef DEBUG
-       if (sbusdebug & SDB_DVMA)
-               printf("sbus_dmamap_unload: map %p removing va %lx size %lx\n",
-                      map, (long)addr, (long)len);
-#endif
+       DPRINTF(SDB_DVMA,
+           ("sbus_dmamap_unload: map %p removing va %lx size %lx\n",
+           map, (long)addr, (long)len));
        iommu_remove(&sc->sc_is, addr, len);
        dvmaddr = (map->dm_segs[0].ds_addr & ~PGOFSET);
        sgsize = map->dm_segs[0].ds_len;
@@ -926,42 +925,24 @@
          * too unweildy.
         */
 
-       if (ops&BUS_DMASYNC_PREREAD) {
-#ifdef DEBUG
-               if (sbusdebug & SDB_DVMA)
-                       printf("sbus_dmamap_sync: syncing va %p len %lu BUS_DMASYNC_PREREAD\n",                
-                              (long)va, (u_long)len);
-#endif
+       if (ops & BUS_DMASYNC_PREREAD) {
+               DPRINTF(SDB_DVMA,
+           ("sbus_dmamap_sync: syncing va %p len %lu BUS_DMASYNC_PREREAD\n",          
+                   (long)va, (u_long)len));
 
                /* Nothing to do */;
        }
-       if (ops&BUS_DMASYNC_POSTREAD) {
+       if (ops & BUS_DMASYNC_POSTREAD) {
                /*
                 * We should sync the IOMMU streaming caches here first.
                 */
-#ifdef DEBUG
-               if (sbusdebug & SDB_DVMA)
-                       printf("sbus_dmamap_sync: syncing va %p len %lu BUS_DMASYNC_POSTREAD\n",               
-                              (long)va, (u_long)len);
-#endif
+               DPRINTF(SDB_DVMA,
+           ("sbus_dmamap_sync: syncing va %p len %lu BUS_DMASYNC_POSTREAD\n",         
+                   (long)va, (u_long)len));
                while (len > 0) {
-                       
-                       /*
-                        * Streaming buffer flushes:
-                        * 
-                        *   1 Tell strbuf to flush by storing va to strbuf_pgflush
-                        * If we're not on a cache line boundary (64-bits):
-                        *   2 Store 0 in flag
-                        *   3 Store pointer to flag in flushsync
-                        *   4 wait till flushsync becomes 0x1
-                        *
-                        * If it takes more than .5 sec, something went wrong.
-                        */
-#ifdef DEBUG
-                       if (sbusdebug & SDB_DVMA)
-                               printf("sbus_dmamap_sync: flushing va %p, %lu bytes left\n",           
-                                      (long)va, (u_long)len);
-#endif
+                       DPRINTF(SDB_DVMA,
+                   ("sbus_dmamap_sync: flushing va %p, %lu bytes left\n",             
+                           (long)va, (u_long)len));
                        bus_space_write_8(sc->sc_bustag, &sc->sc_is.is_sb->strbuf_pgflush, 0, va);
                        if (len <= NBPG) {
                                iommu_flush(&sc->sc_is);
@@ -971,20 +952,16 @@
                        va += NBPG;
                }
        }
-       if (ops&BUS_DMASYNC_PREWRITE) {
-#ifdef DEBUG
-               if (sbusdebug & SDB_DVMA)
-                       printf("sbus_dmamap_sync: syncing va %p len %lu BUS_DMASYNC_PREWRITE\n",               
-                              (long)va, (u_long)len);
-#endif
+       if (ops & BUS_DMASYNC_PREWRITE) {
+               DPRINTF(SDB_DVMA,
+           ("sbus_dmamap_sync: syncing va %p len %lu BUS_DMASYNC_PREWRITE\n",         
+                              (long)va, (u_long)len));
                /* Nothing to do */;
        }
-       if (ops&BUS_DMASYNC_POSTWRITE) {
-#ifdef DEBUG
-               if (sbusdebug & SDB_DVMA)
-                       printf("sbus_dmamap_sync: syncing va %p len %lu BUS_DMASYNC_POSTWRITE\n",
-                              (long)va, (u_long)len);
-#endif
+       if (ops & BUS_DMASYNC_POSTWRITE) {
+               DPRINTF(SDB_DVMA,
+           ("sbus_dmamap_sync: syncing va %p len %lu BUS_DMASYNC_POSTWRITE\n",
+                   (long)va, (u_long)len));
                /* Nothing to do */;
        }
        bus_dmamap_sync(t->_parent, map, offset, len, ops);
@@ -1019,7 +996,6 @@
         * Allocate a DVMA mapping for our new memory.
         */
        for (n = 0; n < *rsegs; n++) {
-#if 1
                s = splhigh();
                if (extent_alloc(sc->sc_is.is_dvmamap, segs[0].ds_len, alignment,
                                 boundary, EX_NOWAIT, &dvmaddr)) {
@@ -1029,14 +1005,6 @@
                        return (ENOMEM);
                }
                splx(s);
-#else
-               dvmaddr = dvmamap_alloc(segs[0].ds_len, flags);
-               if (dvmaddr == (bus_addr_t)-1) {
-                       /* Free what we got and exit */
-                       bus_dmamem_free(t->_parent, segs, nsegs);
-                       return (ENOMEM);
-               }
-#endif
                segs[n].ds_addr = dvmaddr;
                size = segs[n].ds_len;
                mlist = segs[n]._ds_mlist;
@@ -1044,11 +1012,10 @@
                /* Map memory into DVMA space */
                for (m = mlist->tqh_first; m != NULL; m = m->pageq.tqe_next) {
                        curaddr = VM_PAGE_TO_PHYS(m);
-#ifdef DEBUG
-                       if (sbusdebug & SDB_DVMA)
-                               printf("sbus_dmamem_alloc: map %p loading va %lx at pa %lx\n",
-                                      (long)m, (long)dvmaddr, (long)(curaddr & ~(NBPG-1)));
-#endif
+                               DPRINTF(SDB_DVMA,
+                   ("sbus_dmamem_alloc: map %p loading va %lx at pa %lx\n",
+                                   (long)m, (long)dvmaddr,
+                                   (long)(curaddr & ~(NBPG-1))));
                        iommu_enter(&sc->sc_is, dvmaddr, curaddr, flags);
                        dvmaddr += PAGE_SIZE;
                }
@@ -1068,19 +1035,15 @@
        struct sbus_softc *sc = (struct sbus_softc *)t->_cookie;
 
 
-       for (n=0; n<nsegs; n++) {
+       for (n = 0; n < nsegs; n++) {
                addr = segs[n].ds_addr;
                len = segs[n].ds_len;
                iommu_remove(&sc->sc_is, addr, len);
-#if 1
                s = splhigh();
                error = extent_free(sc->sc_is.is_dvmamap, addr, len, EX_NOWAIT);
                splx(s);



Home | Main Index | Thread Index | Old Index