Module Name: src
Committed By: jdolecek
Date: Sat Apr 11 11:01:12 UTC 2020
Modified Files:
src/sys/arch/xen/include: xenbus.h
src/sys/arch/xen/xen: if_xennet_xenbus.c
src/sys/arch/xen/xenbus: xenbus_probe.c
Log Message:
put xenbus dmat into xenbus_device so it's available also for backend
devices which don't use autoconfig, remove from attach args
To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/xen/include/xenbus.h
cvs rdiff -u -r1.111 -r1.112 src/sys/arch/xen/xen/if_xennet_xenbus.c
cvs rdiff -u -r1.48 -r1.49 src/sys/arch/xen/xenbus/xenbus_probe.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/xen/include/xenbus.h
diff -u src/sys/arch/xen/include/xenbus.h:1.23 src/sys/arch/xen/include/xenbus.h:1.24
--- src/sys/arch/xen/include/xenbus.h:1.23 Fri Apr 10 14:54:34 2020
+++ src/sys/arch/xen/include/xenbus.h Sat Apr 11 11:01:12 2020
@@ -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 @@ struct xenbusdev_attach_args {
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 @@ struct xenbus_device {
/* 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 */
};
Index: src/sys/arch/xen/xen/if_xennet_xenbus.c
diff -u src/sys/arch/xen/xen/if_xennet_xenbus.c:1.111 src/sys/arch/xen/xen/if_xennet_xenbus.c:1.112
--- src/sys/arch/xen/xen/if_xennet_xenbus.c:1.111 Fri Apr 10 19:08:10 2020
+++ src/sys/arch/xen/xen/if_xennet_xenbus.c Sat Apr 11 11:01:12 2020
@@ -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 xennet_xenbus_softc {
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 @@ xennet_xenbus_attach(device_t parent, de
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 @@ xennet_xenbus_attach(device_t parent, de
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 @@ xennet_xenbus_attach(device_t parent, de
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 @@ xennet_alloc_rx_buffer(struct xennet_xen
/* 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 @@ again:
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 @@ again:
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 @@ xennet_start(struct ifnet *ifp)
}
/* 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 @@ xennet_start(struct ifnet *ifp)
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 @@ xennet_start(struct ifnet *ifp)
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);
Index: src/sys/arch/xen/xenbus/xenbus_probe.c
diff -u src/sys/arch/xen/xenbus/xenbus_probe.c:1.48 src/sys/arch/xen/xenbus/xenbus_probe.c:1.49
--- src/sys/arch/xen/xenbus/xenbus_probe.c:1.48 Fri Apr 10 14:54:33 2020
+++ src/sys/arch/xen/xenbus/xenbus_probe.c Sat Apr 11 11:01:12 2020
@@ -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 @@ xenbus_probe_device_type(const char *pat
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 @@ xenbus_probe_device_type(const char *pat
}
} 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);