summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/sparc64/dev/cbus.c49
-rw-r--r--sys/arch/sparc64/dev/cbusvar.h7
-rw-r--r--sys/arch/sparc64/dev/vcctty.c33
-rw-r--r--sys/arch/sparc64/dev/vdsk.c22
-rw-r--r--sys/arch/sparc64/dev/vdsp.c27
-rw-r--r--sys/arch/sparc64/dev/vldcp.c42
-rw-r--r--sys/arch/sparc64/dev/vnet.c27
7 files changed, 91 insertions, 116 deletions
diff --git a/sys/arch/sparc64/dev/cbus.c b/sys/arch/sparc64/dev/cbus.c
index a5e8fe28ae8..5ae55eb735b 100644
--- a/sys/arch/sparc64/dev/cbus.c
+++ b/sys/arch/sparc64/dev/cbus.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: cbus.c,v 1.13 2014/11/24 12:47:14 kettenis Exp $ */
+/* $OpenBSD: cbus.c,v 1.14 2015/01/25 21:42:13 kettenis Exp $ */
/*
* Copyright (c) 2008 Mark Kettenis
*
@@ -28,14 +28,13 @@
#include <sparc64/dev/cbusvar.h>
#include <sparc64/dev/vbusvar.h>
-#define CBUS_HANDLE(x) ((x) & ~0xff)
-#define CBUS_INO(x) ((x) & 0xff)
-
struct cbus_softc {
struct device sc_dv;
bus_space_tag_t sc_bustag;
bus_dma_tag_t sc_dmatag;
+ uint64_t sc_devhandle;
+
/* Machine description. */
int sc_idx;
};
@@ -77,10 +76,15 @@ cbus_attach(struct device *parent, struct device *self, void *aux)
struct cbus_softc *sc = (struct cbus_softc *)self;
struct vbus_attach_args *va = aux;
int node;
+ int reg;
sc->sc_bustag = cbus_alloc_bus_tag(sc, va->va_bustag);
sc->sc_dmatag = va->va_dmatag;
+ if (OF_getprop(va->va_node, "reg", &reg, sizeof(reg)) != sizeof(reg))
+ return;
+ sc->sc_devhandle = reg;
+
printf("\n");
sc->sc_idx = mdesc_find(va->va_name, va->va_reg[0]);
@@ -120,24 +124,10 @@ cbus_print(void *aux, const char *name)
}
int
-cbus_intr_map(int node, int ino, uint64_t *sysino)
-{
- int parent;
- int reg;
-
- parent = OF_parent(node);
- if (OF_getprop(parent, "reg", &reg, sizeof(reg)) != sizeof(reg))
- return (-1);
-
- *sysino = CBUS_HANDLE(reg) | CBUS_INO(ino);
- return (0);
-}
-
-int
-cbus_intr_setstate(uint64_t sysino, uint64_t state)
+cbus_intr_setstate(bus_space_tag_t t, uint64_t devino, uint64_t state)
{
- uint64_t devhandle = CBUS_HANDLE(sysino);
- uint64_t devino = CBUS_INO(sysino);
+ struct cbus_softc *sc = t->cookie;
+ uint64_t devhandle = sc->sc_devhandle;
int err;
err = hv_vintr_setstate(devhandle, devino, state);
@@ -148,10 +138,10 @@ cbus_intr_setstate(uint64_t sysino, uint64_t state)
}
int
-cbus_intr_setenabled(uint64_t sysino, uint64_t enabled)
+cbus_intr_setenabled(bus_space_tag_t t, uint64_t devino, uint64_t enabled)
{
- uint64_t devhandle = CBUS_HANDLE(sysino);
- uint64_t devino = CBUS_INO(sysino);
+ struct cbus_softc *sc = t->cookie;
+ uint64_t devhandle = sc->sc_devhandle;
int err;
err = hv_vintr_setenabled(devhandle, devino, enabled);
@@ -165,8 +155,9 @@ void *
cbus_intr_establish(bus_space_tag_t t, bus_space_tag_t t0, int ihandle,
int level, int flags, int (*handler)(void *), void *arg, const char *what)
{
- uint64_t devhandle = CBUS_HANDLE(ihandle);
- uint64_t devino = CBUS_INO(ihandle);
+ struct cbus_softc *sc = t0->cookie;
+ uint64_t devhandle = sc->sc_devhandle;
+ uint64_t devino = ihandle;
struct intrhand *ih;
int err;
@@ -216,8 +207,10 @@ cbus_intr_establish(bus_space_tag_t t, bus_space_tag_t t0, int ihandle,
void
cbus_intr_ack(struct intrhand *ih)
{
- uint64_t devhandle = CBUS_HANDLE(ih->ih_number);
- uint64_t devino = CBUS_INO(ih->ih_number);
+ bus_space_tag_t t = ih->ih_bus;
+ struct cbus_softc *sc = t->cookie;
+ uint64_t devhandle = sc->sc_devhandle;
+ uint64_t devino = ih->ih_number;
hv_vintr_setstate(devhandle, devino, INTR_IDLE);
}
diff --git a/sys/arch/sparc64/dev/cbusvar.h b/sys/arch/sparc64/dev/cbusvar.h
index 67f84ac8d09..02d5682b0b3 100644
--- a/sys/arch/sparc64/dev/cbusvar.h
+++ b/sys/arch/sparc64/dev/cbusvar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: cbusvar.h,v 1.4 2009/12/14 16:06:35 kettenis Exp $ */
+/* $OpenBSD: cbusvar.h,v 1.5 2015/01/25 21:42:13 kettenis Exp $ */
/*
* Copyright (c) 2008 Mark Kettenis
*
@@ -35,8 +35,7 @@ struct cbus_attach_args {
};
int cbus_print(void *, const char *);
-int cbus_intr_map(int, int, uint64_t *);
-int cbus_intr_setstate(uint64_t, uint64_t);
-int cbus_intr_setenabled(uint64_t, uint64_t);
+int cbus_intr_setstate(bus_space_tag_t, uint64_t, uint64_t);
+int cbus_intr_setenabled(bus_space_tag_t, uint64_t, uint64_t);
#endif
diff --git a/sys/arch/sparc64/dev/vcctty.c b/sys/arch/sparc64/dev/vcctty.c
index 4409c8f8433..b2102f370ed 100644
--- a/sys/arch/sparc64/dev/vcctty.c
+++ b/sys/arch/sparc64/dev/vcctty.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vcctty.c,v 1.11 2014/05/10 11:49:31 kettenis Exp $ */
+/* $OpenBSD: vcctty.c,v 1.12 2015/01/25 21:42:13 kettenis Exp $ */
/*
* Copyright (c) 2009 Mark Kettenis
*
@@ -58,10 +58,10 @@ struct vcctty_softc {
bus_space_tag_t sc_bustag;
bus_dma_tag_t sc_dmatag;
+ uint64_t sc_tx_ino;
+ uint64_t sc_rx_ino;
void *sc_tx_ih;
void *sc_rx_ih;
- uint64_t sc_tx_sysino;
- uint64_t sc_rx_sysino;
struct ldc_conn sc_lc;
@@ -105,13 +105,10 @@ vcctty_attach(struct device *parent, struct device *self, void *aux)
sc->sc_bustag = ca->ca_bustag;
sc->sc_dmatag = ca->ca_dmatag;
+ sc->sc_tx_ino = ca->ca_tx_ino;
+ sc->sc_rx_ino = ca->ca_rx_ino;
- if (cbus_intr_map(ca->ca_node, ca->ca_tx_ino, &sc->sc_tx_sysino) ||
- cbus_intr_map(ca->ca_node, ca->ca_rx_ino, &sc->sc_rx_sysino)) {
- printf(": can't map interrupt\n");
- return;
- }
- printf(": ivec 0x%llx, 0x%llx", sc->sc_tx_sysino, sc->sc_rx_sysino);
+ printf(": ivec 0x%llx, 0x%llx", sc->sc_tx_ino, sc->sc_rx_ino);
/*
* Un-configure queues before registering interrupt handlers,
@@ -120,9 +117,9 @@ vcctty_attach(struct device *parent, struct device *self, void *aux)
hv_ldc_tx_qconf(ca->ca_id, 0, 0);
hv_ldc_rx_qconf(ca->ca_id, 0, 0);
- sc->sc_tx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_tx_sysino,
+ sc->sc_tx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_tx_ino,
IPL_TTY, 0, vcctty_tx_intr, sc, sc->sc_dv.dv_xname);
- sc->sc_rx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_rx_sysino,
+ sc->sc_rx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_rx_ino,
IPL_TTY, 0, vcctty_rx_intr, sc, sc->sc_dv.dv_xname);
if (sc->sc_tx_ih == NULL || sc->sc_rx_ih == NULL) {
printf(", can't establish interrupt\n");
@@ -155,8 +152,8 @@ vcctty_attach(struct device *parent, struct device *self, void *aux)
if (err != H_EOK)
printf("%s: hv_ldc_rx_qconf %d\n", __func__, err);
- cbus_intr_setenabled(sc->sc_tx_sysino, INTR_ENABLED);
- cbus_intr_setenabled(sc->sc_rx_sysino, INTR_ENABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_tx_ino, INTR_ENABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_rx_ino, INTR_ENABLED);
printf(" domain \"%s\"\n", ca->ca_name);
return;
@@ -499,14 +496,10 @@ int
vccttyhwiflow(struct tty *tp, int stop)
{
struct vcctty_softc *sc = vcctty_cd.cd_devs[minor(tp->t_dev)];
+ uint64_t state = stop ? INTR_DISABLED : INTR_ENABLED;
- if (stop) {
- cbus_intr_setenabled(sc->sc_tx_sysino, INTR_DISABLED);
- cbus_intr_setenabled(sc->sc_rx_sysino, INTR_DISABLED);
- } else {
- cbus_intr_setenabled(sc->sc_tx_sysino, INTR_ENABLED);
- cbus_intr_setenabled(sc->sc_rx_sysino, INTR_ENABLED);
- }
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_tx_ino, state);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_rx_ino, state);
return (1);
}
diff --git a/sys/arch/sparc64/dev/vdsk.c b/sys/arch/sparc64/dev/vdsk.c
index acff2f3d5fa..f07d5635f23 100644
--- a/sys/arch/sparc64/dev/vdsk.c
+++ b/sys/arch/sparc64/dev/vdsk.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vdsk.c,v 1.45 2014/09/21 14:52:37 kettenis Exp $ */
+/* $OpenBSD: vdsk.c,v 1.46 2015/01/25 21:42:13 kettenis Exp $ */
/*
* Copyright (c) 2009, 2011 Mark Kettenis
*
@@ -233,19 +233,13 @@ vdsk_attach(struct device *parent, struct device *self, void *aux)
struct cbus_attach_args *ca = aux;
struct scsibus_attach_args saa;
struct ldc_conn *lc;
- uint64_t sysino[2];
int err, s;
int timeout;
sc->sc_bustag = ca->ca_bustag;
sc->sc_dmatag = ca->ca_dmatag;
- if (cbus_intr_map(ca->ca_node, ca->ca_tx_ino, &sysino[0]) ||
- cbus_intr_map(ca->ca_node, ca->ca_rx_ino, &sysino[1])) {
- printf(": can't map interrupt\n");
- return;
- }
- printf(": ivec 0x%llx, 0x%llx", sysino[0], sysino[1]);
+ printf(": ivec 0x%llx, 0x%llx", ca->ca_tx_ino, ca->ca_rx_ino);
/*
* Un-configure queues before registering interrupt handlers,
@@ -254,10 +248,10 @@ vdsk_attach(struct device *parent, struct device *self, void *aux)
hv_ldc_tx_qconf(ca->ca_id, 0, 0);
hv_ldc_rx_qconf(ca->ca_id, 0, 0);
- sc->sc_tx_ih = bus_intr_establish(ca->ca_bustag, sysino[0], IPL_BIO,
- 0, vdsk_tx_intr, sc, sc->sc_dv.dv_xname);
- sc->sc_rx_ih = bus_intr_establish(ca->ca_bustag, sysino[1], IPL_BIO,
- 0, vdsk_rx_intr, sc, sc->sc_dv.dv_xname);
+ sc->sc_tx_ih = bus_intr_establish(ca->ca_bustag, ca->ca_tx_ino,
+ IPL_BIO, 0, vdsk_tx_intr, sc, sc->sc_dv.dv_xname);
+ sc->sc_rx_ih = bus_intr_establish(ca->ca_bustag, ca->ca_rx_ino,
+ IPL_BIO, 0, vdsk_rx_intr, sc, sc->sc_dv.dv_xname);
if (sc->sc_tx_ih == NULL || sc->sc_rx_ih == NULL) {
printf(", can't establish interrupt\n");
return;
@@ -323,8 +317,8 @@ vdsk_attach(struct device *parent, struct device *self, void *aux)
if (err != H_EOK)
printf("hv_ldc_rx_qconf %d\n", err);
- cbus_intr_setenabled(sysino[0], INTR_ENABLED);
- cbus_intr_setenabled(sysino[1], INTR_ENABLED);
+ cbus_intr_setenabled(sc->sc_bustag, ca->ca_tx_ino, INTR_ENABLED);
+ cbus_intr_setenabled(sc->sc_bustag, ca->ca_rx_ino, INTR_ENABLED);
ldc_send_vers(lc);
diff --git a/sys/arch/sparc64/dev/vdsp.c b/sys/arch/sparc64/dev/vdsp.c
index 6e7eae16228..b3e09de8f19 100644
--- a/sys/arch/sparc64/dev/vdsp.c
+++ b/sys/arch/sparc64/dev/vdsp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vdsp.c,v 1.35 2015/01/23 12:41:23 dlg Exp $ */
+/* $OpenBSD: vdsp.c,v 1.36 2015/01/25 21:42:13 kettenis Exp $ */
/*
* Copyright (c) 2009, 2011, 2014 Mark Kettenis
*
@@ -201,8 +201,8 @@ struct vdsp_softc {
bus_space_tag_t sc_bustag;
bus_dma_tag_t sc_dmatag;
- uint64_t sc_tx_sysino;
- uint64_t sc_rx_sysino;
+ uint64_t sc_tx_ino;
+ uint64_t sc_rx_ino;
void *sc_tx_ih;
void *sc_rx_ih;
@@ -334,13 +334,10 @@ vdsp_attach(struct device *parent, struct device *self, void *aux)
sc->sc_idx = ca->ca_idx;
sc->sc_bustag = ca->ca_bustag;
sc->sc_dmatag = ca->ca_dmatag;
+ sc->sc_tx_ino = ca->ca_tx_ino;
+ sc->sc_rx_ino = ca->ca_rx_ino;
- if (cbus_intr_map(ca->ca_node, ca->ca_tx_ino, &sc->sc_tx_sysino) ||
- cbus_intr_map(ca->ca_node, ca->ca_rx_ino, &sc->sc_rx_sysino)) {
- printf(": can't map interrupt\n");
- return;
- }
- printf(": ivec 0x%llx, 0x%llx", sc->sc_tx_sysino, sc->sc_rx_sysino);
+ printf(": ivec 0x%llx, 0x%llx", sc->sc_tx_ino, sc->sc_rx_ino);
mtx_init(&sc->sc_desc_mtx, IPL_BIO);
@@ -351,10 +348,10 @@ vdsp_attach(struct device *parent, struct device *self, void *aux)
hv_ldc_tx_qconf(ca->ca_id, 0, 0);
hv_ldc_rx_qconf(ca->ca_id, 0, 0);
- sc->sc_tx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_tx_sysino,
+ sc->sc_tx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_tx_ino,
IPL_BIO, BUS_INTR_ESTABLISH_MPSAFE, vdsp_tx_intr, sc,
sc->sc_dv.dv_xname);
- sc->sc_rx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_rx_sysino,
+ sc->sc_rx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_rx_ino,
IPL_BIO, BUS_INTR_ESTABLISH_MPSAFE, vdsp_rx_intr, sc,
sc->sc_dv.dv_xname);
if (sc->sc_tx_ih == NULL || sc->sc_rx_ih == NULL) {
@@ -1722,8 +1719,8 @@ vdspopen(dev_t dev, int flag, int mode, struct proc *p)
if (err != H_EOK)
printf("%s: hv_ldc_rx_qconf %d\n", __func__, err);
- cbus_intr_setenabled(sc->sc_tx_sysino, INTR_ENABLED);
- cbus_intr_setenabled(sc->sc_rx_sysino, INTR_ENABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_tx_ino, INTR_ENABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_rx_ino, INTR_ENABLED);
return (0);
}
@@ -1740,8 +1737,8 @@ vdspclose(dev_t dev, int flag, int mode, struct proc *p)
if (sc == NULL)
return (ENXIO);
- cbus_intr_setenabled(sc->sc_tx_sysino, INTR_DISABLED);
- cbus_intr_setenabled(sc->sc_rx_sysino, INTR_DISABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_tx_ino, INTR_DISABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_rx_ino, INTR_DISABLED);
hv_ldc_tx_qconf(sc->sc_lc.lc_id, 0, 0);
hv_ldc_rx_qconf(sc->sc_lc.lc_id, 0, 0);
diff --git a/sys/arch/sparc64/dev/vldcp.c b/sys/arch/sparc64/dev/vldcp.c
index 9de4aac57af..ef63a813dcc 100644
--- a/sys/arch/sparc64/dev/vldcp.c
+++ b/sys/arch/sparc64/dev/vldcp.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vldcp.c,v 1.9 2014/07/12 18:44:43 tedu Exp $ */
+/* $OpenBSD: vldcp.c,v 1.10 2015/01/25 21:42:13 kettenis Exp $ */
/*
* Copyright (c) 2009, 2012 Mark Kettenis
*
@@ -57,10 +57,10 @@ struct vldcp_softc {
bus_space_tag_t sc_bustag;
bus_dma_tag_t sc_dmatag;
+ uint64_t sc_tx_ino;
+ uint64_t sc_rx_ino;
void *sc_tx_ih;
void *sc_rx_ih;
- uint64_t sc_tx_sysino;
- uint64_t sc_rx_sysino;
struct ldc_conn sc_lc;
@@ -133,13 +133,10 @@ vldcp_attach(struct device *parent, struct device *self, void *aux)
sc->sc_bustag = ca->ca_bustag;
sc->sc_dmatag = ca->ca_dmatag;
+ sc->sc_tx_ino = ca->ca_tx_ino;
+ sc->sc_rx_ino = ca->ca_rx_ino;
- if (cbus_intr_map(ca->ca_node, ca->ca_tx_ino, &sc->sc_tx_sysino) ||
- cbus_intr_map(ca->ca_node, ca->ca_rx_ino, &sc->sc_rx_sysino)) {
- printf(": can't map interrupt\n");
- return;
- }
- printf(": ivec 0x%llx, 0x%llx", sc->sc_tx_sysino, sc->sc_rx_sysino);
+ printf(": ivec 0x%llx, 0x%llx", sc->sc_tx_ino, sc->sc_rx_ino);
/*
* Un-configure queues before registering interrupt handlers,
@@ -148,9 +145,9 @@ vldcp_attach(struct device *parent, struct device *self, void *aux)
hv_ldc_tx_qconf(ca->ca_id, 0, 0);
hv_ldc_rx_qconf(ca->ca_id, 0, 0);
- sc->sc_tx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_tx_sysino,
+ sc->sc_tx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_tx_ino,
IPL_TTY, 0, vldcp_tx_intr, sc, sc->sc_dv.dv_xname);
- sc->sc_rx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_rx_sysino,
+ sc->sc_rx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_rx_ino,
IPL_TTY, 0, vldcp_rx_intr, sc, sc->sc_dv.dv_xname);
if (sc->sc_tx_ih == NULL || sc->sc_rx_ih == NULL) {
printf(", can't establish interrupt\n");
@@ -227,7 +224,7 @@ vldcp_tx_intr(void *arg)
lc->lc_tx_state = tx_state;
}
- cbus_intr_setenabled(sc->sc_tx_sysino, INTR_DISABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_tx_ino, INTR_DISABLED);
selwakeup(&sc->sc_wsel);
wakeup(lc->lc_txq);
return (1);
@@ -260,7 +257,8 @@ vldcp_rx_intr(void *arg)
break;
}
lc->lc_rx_state = rx_state;
- cbus_intr_setenabled(sc->sc_rx_sysino, INTR_DISABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_rx_ino,
+ INTR_DISABLED);
selwakeup(&sc->sc_rsel);
wakeup(lc->lc_rxq);
return (1);
@@ -269,7 +267,7 @@ vldcp_rx_intr(void *arg)
if (rx_head == rx_tail)
return (0);
- cbus_intr_setenabled(sc->sc_rx_sysino, INTR_DISABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_rx_ino, INTR_DISABLED);
selwakeup(&sc->sc_rsel);
wakeup(lc->lc_rxq);
return (1);
@@ -333,8 +331,8 @@ vldcpclose(dev_t dev, int flag, int mode, struct proc *p)
if (sc == NULL)
return (ENXIO);
- cbus_intr_setenabled(sc->sc_tx_sysino, INTR_DISABLED);
- cbus_intr_setenabled(sc->sc_rx_sysino, INTR_DISABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_tx_ino, INTR_DISABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_rx_ino, INTR_DISABLED);
hv_ldc_tx_qconf(sc->sc_lc.lc_id, 0, 0);
hv_ldc_rx_qconf(sc->sc_lc.lc_id, 0, 0);
@@ -381,7 +379,8 @@ retry:
DPRINTF(("rx head %llx, rx tail %llx\n", rx_head, rx_tail));
if (rx_head == rx_tail) {
- cbus_intr_setenabled(sc->sc_rx_sysino, INTR_ENABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_rx_ino,
+ INTR_ENABLED);
ret = tsleep(lc->lc_rxq, PWAIT | PCATCH, "hvrd", 0);
if (ret) {
splx(s);
@@ -446,7 +445,8 @@ retry:
next_tx_tail &= ((lc->lc_txq->lq_nentries * 64) - 1);
if (tx_head == next_tx_tail) {
- cbus_intr_setenabled(sc->sc_tx_sysino, INTR_ENABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_tx_ino,
+ INTR_ENABLED);
ret = tsleep(lc->lc_txq, PWAIT | PCATCH, "hvwr", 0);
if (ret) {
splx(s);
@@ -585,11 +585,13 @@ vldcppoll(dev_t dev, int events, struct proc *p)
}
if (revents == 0) {
if (events & (POLLIN | POLLRDNORM)) {
- cbus_intr_setenabled(sc->sc_rx_sysino, INTR_ENABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_rx_ino,
+ INTR_ENABLED);
selrecord(p, &sc->sc_rsel);
}
if (events & (POLLOUT | POLLWRNORM)) {
- cbus_intr_setenabled(sc->sc_tx_sysino, INTR_ENABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_tx_ino,
+ INTR_ENABLED);
selrecord(p, &sc->sc_wsel);
}
}
diff --git a/sys/arch/sparc64/dev/vnet.c b/sys/arch/sparc64/dev/vnet.c
index d95c401f495..7ae79612187 100644
--- a/sys/arch/sparc64/dev/vnet.c
+++ b/sys/arch/sparc64/dev/vnet.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: vnet.c,v 1.36 2014/12/22 02:26:54 tedu Exp $ */
+/* $OpenBSD: vnet.c,v 1.37 2015/01/25 21:42:13 kettenis Exp $ */
/*
* Copyright (c) 2009 Mark Kettenis
*
@@ -133,8 +133,8 @@ struct vnet_softc {
bus_space_tag_t sc_bustag;
bus_dma_tag_t sc_dmatag;
- uint64_t sc_tx_sysino;
- uint64_t sc_rx_sysino;
+ uint64_t sc_tx_ino;
+ uint64_t sc_rx_ino;
void *sc_tx_ih;
void *sc_rx_ih;
@@ -253,13 +253,10 @@ vnet_attach(struct device *parent, struct device *self, void *aux)
sc->sc_bustag = ca->ca_bustag;
sc->sc_dmatag = ca->ca_dmatag;
+ sc->sc_tx_ino = ca->ca_tx_ino;
+ sc->sc_rx_ino = ca->ca_rx_ino;
- if (cbus_intr_map(ca->ca_node, ca->ca_tx_ino, &sc->sc_tx_sysino) ||
- cbus_intr_map(ca->ca_node, ca->ca_rx_ino, &sc->sc_rx_sysino)) {
- printf(": can't map interrupt\n");
- return;
- }
- printf(": ivec 0x%llx, 0x%llx", sc->sc_tx_sysino, sc->sc_rx_sysino);
+ printf(": ivec 0x%llx, 0x%llx", sc->sc_tx_ino, sc->sc_rx_ino);
/*
* Un-configure queues before registering interrupt handlers,
@@ -268,9 +265,9 @@ vnet_attach(struct device *parent, struct device *self, void *aux)
hv_ldc_tx_qconf(ca->ca_id, 0, 0);
hv_ldc_rx_qconf(ca->ca_id, 0, 0);
- sc->sc_tx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_tx_sysino,
+ sc->sc_tx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_tx_ino,
IPL_NET, 0, vnet_tx_intr, sc, sc->sc_dv.dv_xname);
- sc->sc_rx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_rx_sysino,
+ sc->sc_rx_ih = bus_intr_establish(ca->ca_bustag, sc->sc_rx_ino,
IPL_NET, 0, vnet_rx_intr, sc, sc->sc_dv.dv_xname);
if (sc->sc_tx_ih == NULL || sc->sc_rx_ih == NULL) {
printf(", can't establish interrupt\n");
@@ -1383,8 +1380,8 @@ vnet_init(struct ifnet *ifp)
if (err != H_EOK)
printf("hv_ldc_rx_qconf %d\n", err);
- cbus_intr_setenabled(sc->sc_tx_sysino, INTR_ENABLED);
- cbus_intr_setenabled(sc->sc_rx_sysino, INTR_ENABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_tx_ino, INTR_ENABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_rx_ino, INTR_ENABLED);
ldc_send_vers(lc);
@@ -1401,8 +1398,8 @@ vnet_stop(struct ifnet *ifp)
ifp->if_flags &= ~(IFF_RUNNING | IFF_OACTIVE);
ifp->if_timer = 0;
- cbus_intr_setenabled(sc->sc_tx_sysino, INTR_DISABLED);
- cbus_intr_setenabled(sc->sc_rx_sysino, INTR_DISABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_tx_ino, INTR_DISABLED);
+ cbus_intr_setenabled(sc->sc_bustag, sc->sc_rx_ino, INTR_DISABLED);
hv_ldc_tx_qconf(lc->lc_id, 0, 0);
hv_ldc_rx_qconf(lc->lc_id, 0, 0);