Source-Changes-HG archive

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

[src/trunk]: src/sys/arch/xen put xenbus dmat into xenbus_device so it's avai...



details:   https://anonhg.NetBSD.org/src/rev/58fdf4895d7f
branches:  trunk
changeset: 930658:58fdf4895d7f
user:      jdolecek <jdolecek%NetBSD.org@localhost>
date:      Sat Apr 11 11:01:12 2020 +0000

description:
put xenbus dmat into xenbus_device so it's available also for backend
devices which don't use autoconfig, remove from attach args

diffstat:

 sys/arch/xen/include/xenbus.h       |   4 ++--
 sys/arch/xen/xen/if_xennet_xenbus.c |  32 +++++++++++++++++---------------
 sys/arch/xen/xenbus/xenbus_probe.c  |   6 +++---
 3 files changed, 22 insertions(+), 20 deletions(-)

diffs (180 lines):

diff -r 1fdd0aae637e -r 58fdf4895d7f sys/arch/xen/include/xenbus.h
--- a/sys/arch/xen/include/xenbus.h     Sat Apr 11 09:15:23 2020 +0000
+++ b/sys/arch/xen/include/xenbus.h     Sat Apr 11 11:01:12 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: xenbus.h,v 1.23 2020/04/10 14:54:34 jdolecek Exp $ */
+/* $NetBSD: xenbus.h,v 1.24 2020/04/11 11:01:12 jdolecek Exp $ */
 /******************************************************************************
  * xenbus.h
  *
@@ -52,7 +52,6 @@
        const char              *xa_type;
        int                     xa_id;
        struct xenbus_device    *xa_xbusd;
-       bus_dma_tag_t           xa_dmat;
 };
 
 /* Register callback to watch this node. */
@@ -100,6 +99,7 @@
        /* for xenbus internal use */
        struct xenbus_watch xbusd_otherend_watch;
        size_t xbusd_sz;                /* size of allocated structure */
+       bus_dma_tag_t xbusd_dmat;
        const char xbusd_path[1]; /* our path */
 };
 
diff -r 1fdd0aae637e -r 58fdf4895d7f sys/arch/xen/xen/if_xennet_xenbus.c
--- a/sys/arch/xen/xen/if_xennet_xenbus.c       Sat Apr 11 09:15:23 2020 +0000
+++ b/sys/arch/xen/xen/if_xennet_xenbus.c       Sat Apr 11 11:01:12 2020 +0000
@@ -1,4 +1,4 @@
-/*      $NetBSD: if_xennet_xenbus.c,v 1.111 2020/04/10 19:08:10 jdolecek Exp $      */
+/*      $NetBSD: if_xennet_xenbus.c,v 1.112 2020/04/11 11:01:12 jdolecek Exp $      */
 
 /*
  * Copyright (c) 2006 Manuel Bouyer.
@@ -81,7 +81,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_xennet_xenbus.c,v 1.111 2020/04/10 19:08:10 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_xennet_xenbus.c,v 1.112 2020/04/11 11:01:12 jdolecek Exp $");
 
 #include "opt_xen.h"
 #include "opt_nfs_boot.h"
@@ -169,7 +169,6 @@
        struct ethercom sc_ethercom;
        uint8_t sc_enaddr[ETHER_ADDR_LEN];
        struct xenbus_device *sc_xbusd;
-       bus_dma_tag_t sc_dmat;
 
        netif_tx_front_ring_t sc_tx_ring;
        netif_rx_front_ring_t sc_rx_ring;
@@ -264,7 +263,6 @@
 
        sc->sc_xbusd = xa->xa_xbusd;
        sc->sc_xbusd->xbusd_otherend_changed = xennet_backend_changed;
-       sc->sc_dmat = xa->xa_dmat;
 
        /* xenbus ensure 2 devices can't be probed at the same time */
        if (if_xennetrxbuf_cache_inited == 0) {
@@ -280,8 +278,8 @@
                struct xennet_txreq *txreq = &sc->sc_txreqs[i];
        
                txreq->txreq_id = i;
-               if (bus_dmamap_create(sc->sc_dmat, PAGE_SIZE, 1, PAGE_SIZE,
-                   PAGE_SIZE, BUS_DMA_WAITOK | BUS_DMA_ALLOCNOW,
+               if (bus_dmamap_create(sc->sc_xbusd->xbusd_dmat, PAGE_SIZE, 1,
+                   PAGE_SIZE, PAGE_SIZE, BUS_DMA_WAITOK | BUS_DMA_ALLOCNOW,
                    &txreq->txreq_dmamap) != 0)
                        break;
 
@@ -294,8 +292,8 @@
        for (i = 0; i < NET_RX_RING_SIZE; i++) {
                struct xennet_rxreq *rxreq = &sc->sc_rxreqs[i];
                rxreq->rxreq_id = i;
-               if (bus_dmamap_create(sc->sc_dmat, PAGE_SIZE, 1, PAGE_SIZE,
-                   PAGE_SIZE, BUS_DMA_WAITOK | BUS_DMA_ALLOCNOW,
+               if (bus_dmamap_create(sc->sc_xbusd->xbusd_dmat, PAGE_SIZE, 1,
+                   PAGE_SIZE, PAGE_SIZE, BUS_DMA_WAITOK | BUS_DMA_ALLOCNOW,
                    &rxreq->rxreq_dmamap) != 0)
                        break;
                rxreq->rxreq_gntref = GRANT_INVALID_REF;
@@ -725,7 +723,8 @@
 
                /* Set M_EXT_CLUSTER so that load_mbuf uses m_ext.ext_paddr */
                m->m_flags |= M_EXT_CLUSTER;
-               if (__predict_false(bus_dmamap_load_mbuf(sc->sc_dmat,
+               if (__predict_false(bus_dmamap_load_mbuf(
+                   sc->sc_xbusd->xbusd_dmat,
                    req->rxreq_dmamap, m, BUS_DMA_NOWAIT) != 0)) {
                        printf("%s: rx mbuf load failed", ifp->if_xname);
                        m->m_flags &= ~M_EXT_CLUSTER;
@@ -867,7 +866,7 @@
                else
                        if_statinc(ifp, if_opackets);
                xengnt_revoke_access(req->txreq_gntref);
-               bus_dmamap_unload(sc->sc_dmat, req->txreq_dmamap);
+               bus_dmamap_unload(sc->sc_xbusd->xbusd_dmat, req->txreq_dmamap);
                m_freem(req->txreq_m);
                req->txreq_m = NULL;
                SLIST_INSERT_HEAD(&sc->sc_txreq_head, req, txreq_next);
@@ -927,7 +926,7 @@
                req->rxreq_m = NULL;
 
                m->m_len = m->m_pkthdr.len = rx->status;
-               bus_dmamap_sync(sc->sc_dmat, req->rxreq_dmamap, 0,
+               bus_dmamap_sync(sc->sc_xbusd->xbusd_dmat, req->rxreq_dmamap, 0,
                     m->m_pkthdr.len, BUS_DMASYNC_PREREAD);
 
                MCLAIM(m, &sc->sc_ethercom.ec_rx_mowner);
@@ -998,7 +997,8 @@
                }
 
                /* Try to load the mbuf as-is, if that fails allocate new */
-               if (__predict_false(bus_dmamap_load_mbuf(sc->sc_dmat,
+               if (__predict_false(bus_dmamap_load_mbuf(
+                   sc->sc_xbusd->xbusd_dmat,
                    req->txreq_dmamap, m, BUS_DMA_NOWAIT) != 0)) {
                        struct mbuf *new_m;
 
@@ -1026,7 +1026,8 @@
                        m_freem(m);
                        m = new_m;
 
-                       if (__predict_false(bus_dmamap_load_mbuf(sc->sc_dmat,
+                       if (__predict_false(bus_dmamap_load_mbuf(
+                           sc->sc_xbusd->xbusd_dmat,
                            req->txreq_dmamap, m, BUS_DMA_NOWAIT) != 0)) {
                                printf("%s: cannot load new mbuf\n",
                                       device_xname(sc->sc_dev));
@@ -1043,13 +1044,14 @@
                    sc->sc_xbusd->xbusd_otherend_id,
                    trunc_page(ma),
                    GNTMAP_readonly, &req->txreq_gntref) != 0)) {
-                       bus_dmamap_unload(sc->sc_dmat, req->txreq_dmamap);
+                       bus_dmamap_unload(sc->sc_xbusd->xbusd_dmat,
+                           req->txreq_dmamap);
                        m_freem(m);
                        break;
                }
 
                /* We are now committed to transmit the packet */
-               bus_dmamap_sync(sc->sc_dmat, req->txreq_dmamap, 0,
+               bus_dmamap_sync(sc->sc_xbusd->xbusd_dmat, req->txreq_dmamap, 0,
                     m->m_pkthdr.len, BUS_DMASYNC_POSTWRITE);
                MCLAIM(m, &sc->sc_ethercom.ec_tx_mowner);
 
diff -r 1fdd0aae637e -r 58fdf4895d7f sys/arch/xen/xenbus/xenbus_probe.c
--- a/sys/arch/xen/xenbus/xenbus_probe.c        Sat Apr 11 09:15:23 2020 +0000
+++ b/sys/arch/xen/xenbus/xenbus_probe.c        Sat Apr 11 11:01:12 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: xenbus_probe.c,v 1.48 2020/04/10 14:54:33 jdolecek Exp $ */
+/* $NetBSD: xenbus_probe.c,v 1.49 2020/04/11 11:01:12 jdolecek Exp $ */
 /******************************************************************************
  * Talks to Xen Store to figure out what devices we have.
  *
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xenbus_probe.c,v 1.48 2020/04/10 14:54:33 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xenbus_probe.c,v 1.49 2020/04/11 11:01:12 jdolecek Exp $");
 
 #if 0
 #define DPRINTK(fmt, args...) \
@@ -387,6 +387,7 @@
                msize = sizeof(*xbusd) + strlen(path) + strlen(dir[i]) + 2;
                xbusd = kmem_zalloc(msize, KM_SLEEP);
                xbusd->xbusd_sz = msize;
+               xbusd->xbusd_dmat = xenbus_dmat;
 
                snprintf(__UNCONST(xbusd->xbusd_path),
                    msize - sizeof(*xbusd) + 1, "%s/%s", path, dir[i]);
@@ -427,7 +428,6 @@
                        }
                } else {
                        xbusd->xbusd_type = XENBUS_FRONTEND_DEVICE;
-                       xa.xa_dmat = xenbus_dmat;
                        xa.xa_xbusd = xbusd;
                        xa.xa_type = type;
                        xa.xa_id = strtoul(dir[i], &ep, 0);



Home | Main Index | Thread Index | Old Index