summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/pv/xen.c78
-rw-r--r--sys/dev/pv/xenstore.c18
-rw-r--r--sys/dev/pv/xenvar.h4
3 files changed, 27 insertions, 73 deletions
diff --git a/sys/dev/pv/xen.c b/sys/dev/pv/xen.c
index 51b47eed52f..747d21a6828 100644
--- a/sys/dev/pv/xen.c
+++ b/sys/dev/pv/xen.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: xen.c,v 1.27 2016/01/15 14:27:08 mikeb Exp $ */
+/* $OpenBSD: xen.c,v 1.28 2016/01/15 18:20:41 mikeb Exp $ */
/*
* Copyright (c) 2015 Mike Belopuhov
@@ -39,7 +39,6 @@
struct xen_softc *xen_sc;
int xen_init_hypercall(struct xen_softc *);
-int xen_getversion(struct xen_softc *);
int xen_getfeatures(struct xen_softc *);
int xen_init_info_page(struct xen_softc *);
int xen_init_cbvec(struct xen_softc *);
@@ -119,16 +118,12 @@ xen_attach(struct device *parent, struct device *self, void *aux)
sc->sc_base = hv->hv_base;
- printf("\n");
-
if (xen_init_hypercall(sc))
return;
/* Wire it up to the global */
xen_sc = sc;
- if (xen_getversion(sc))
- return;
if (xen_getfeatures(sc))
return;
@@ -199,23 +194,18 @@ xen_init_hypercall(struct xen_softc *sc)
/* We don't support more than one hypercall page */
if (regs[0] != 1) {
- printf("%s: requested %d hypercall pages\n",
- sc->sc_dev.dv_xname, regs[0]);
+ printf(": requested %d hypercall pages\n", regs[0]);
return (-1);
}
sc->sc_hc = &xen_hypercall_page;
if (!pmap_extract(pmap_kernel(), (vaddr_t)sc->sc_hc, &pa)) {
- printf("%s: hypercall page PA extraction failed\n",
- sc->sc_dev.dv_xname);
+ printf(": hypercall page PA extraction failed\n");
return (-1);
}
wrmsr(regs[1], pa);
- DPRINTF("%s: hypercall page at va %p pa %#lx\n", sc->sc_dev.dv_xname,
- sc->sc_hc, pa);
-
return (0);
}
@@ -360,44 +350,23 @@ xen_hypercallv(struct xen_softc *sc, int op, int argc, ulong *argv)
}
int
-xen_getversion(struct xen_softc *sc)
-{
- char buf[16];
- int version;
- ulong argv[2] = { XENVER_extraversion, (ulong)&buf[0] };
- int argc = 2;
-
- memset(buf, 0, sizeof(buf));
- if ((version = xen_hypercall(sc, XC_VERSION, 1, XENVER_version)) < 0) {
- printf("%s: failed to fetch version\n", sc->sc_dev.dv_xname);
- return (-1);
- }
- if (xen_hypercallv(sc, XC_VERSION, argc, argv) < 0) {
- printf("%s: failed to fetch extended version\n",
- sc->sc_dev.dv_xname);
- return (-1);
- }
- printf("%s: version %d.%d%s\n", sc->sc_dev.dv_xname,
- version >> 16, version & 0xffff, buf);
- return (0);
-}
-
-int
xen_getfeatures(struct xen_softc *sc)
{
struct xen_feature_info xfi;
- ulong argv[2] = { XENVER_get_features, (ulong)&xfi };
- int argc = 2;
memset(&xfi, 0, sizeof(xfi));
- if (xen_hypercallv(sc, XC_VERSION, argc, argv) < 0) {
- printf("%s: failed to fetch features\n", sc->sc_dev.dv_xname);
+ if (xen_hypercall(sc, XC_VERSION, 2, XENVER_get_features, &xfi) < 0) {
+ printf(": failed to fetch features\n");
return (-1);
}
sc->sc_features = xfi.submap;
- printf("%s: features %b\n", sc->sc_dev.dv_xname, sc->sc_features,
+#ifdef XEN_DEBUG
+ printf(": features %b", sc->sc_features,
"\20\014DOM0\013PIRQ\012PVCLOCK\011CBVEC\010GNTFLAGS\007HMA"
"\006PTUPD\005PAE4G\004SUPERVISOR\003AUTOPMAP\002WDT\001WPT");
+#else
+ printf(": features %#x", sc->sc_features);
+#endif
return (0);
}
@@ -454,13 +423,11 @@ xen_init_info_page(struct xen_softc *sc)
sc->sc_ipg = malloc(PAGE_SIZE, M_DEVBUF, M_NOWAIT | M_ZERO);
if (sc->sc_ipg == NULL) {
- printf("%s: failed to allocate shared info page\n",
- sc->sc_dev.dv_xname);
+ printf(": failed to allocate shared info page\n");
return (-1);
}
if (!pmap_extract(pmap_kernel(), (vaddr_t)sc->sc_ipg, &pa)) {
- printf("%s: shared info page PA extraction failed\n",
- sc->sc_dev.dv_xname);
+ printf(": shared info page PA extraction failed\n");
free(sc->sc_ipg, M_DEVBUF, PAGE_SIZE);
return (-1);
}
@@ -469,13 +436,10 @@ xen_init_info_page(struct xen_softc *sc)
xatp.space = XENMAPSPACE_shared_info;
xatp.gpfn = atop(pa);
if (xen_hypercall(sc, XC_MEMORY, 2, XENMEM_add_to_physmap, &xatp)) {
- printf("%s: failed to register shared info page\n",
- sc->sc_dev.dv_xname);
+ printf(": failed to register shared info page\n");
free(sc->sc_ipg, M_DEVBUF, PAGE_SIZE);
return (-1);
}
- DPRINTF("%s: shared info page at va %p pa %#lx\n", sc->sc_dev.dv_xname,
- sc->sc_ipg, pa);
return (0);
}
@@ -494,8 +458,7 @@ xen_init_cbvec(struct xen_softc *sc)
/* Will retry with the xspd(4) PCI interrupt */
return (ENOENT);
}
- DPRINTF("%s: registered callback IDT vector %d\n",
- sc->sc_dev.dv_xname, LAPIC_XEN_VECTOR);
+ DPRINTF(", idtvec %d", LAPIC_XEN_VECTOR);
sc->sc_flags |= XSF_CBVEC;
@@ -781,13 +744,12 @@ xen_init_grant_tables(struct xen_softc *sc)
gqs.dom = DOMID_SELF;
if (xen_hypercall(sc, XC_GNTTAB, 3, GNTTABOP_query_size, &gqs, 1)) {
- printf("%s: failed the query for grant table pages\n",
- sc->sc_dev.dv_xname);
+ printf(": failed the query for grant table pages\n");
return (-1);
}
if (gqs.nr_frames == 0 || gqs.nr_frames > gqs.max_nr_frames) {
- printf("%s: invalid number of grant table pages: %u/%u\n",
- sc->sc_dev.dv_xname, gqs.nr_frames, gqs.max_nr_frames);
+ printf(": invalid number of grant table pages: %u/%u\n",
+ gqs.nr_frames, gqs.max_nr_frames);
return (-1);
}
@@ -796,8 +758,7 @@ xen_init_grant_tables(struct xen_softc *sc)
if (xen_hypercall(sc, XC_GNTTAB, 3, GNTTABOP_set_version, &gsv, 1) ||
xen_hypercall(sc, XC_GNTTAB, 3, GNTTABOP_get_version, &ggv, 1) ||
ggv.version != 1) {
- printf("%s: failed to set grant tables API version\n",
- sc->sc_dev.dv_xname);
+ printf(": failed to set grant tables API version\n");
return (-1);
}
@@ -807,8 +768,7 @@ xen_init_grant_tables(struct xen_softc *sc)
if (xen_grant_table_grow(sc) == NULL)
break;
- DPRINTF("%s: grant table frames allocated %u/%u\n",
- sc->sc_dev.dv_xname, sc->sc_gntcnt, gqs.max_nr_frames);
+ printf(", %u grant table frames", sc->sc_gntcnt);
xen_bus_dma_init(sc);
diff --git a/sys/dev/pv/xenstore.c b/sys/dev/pv/xenstore.c
index 9b844398026..48548d47e4a 100644
--- a/sys/dev/pv/xenstore.c
+++ b/sys/dev/pv/xenstore.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: xenstore.c,v 1.17 2016/01/12 12:12:05 mikeb Exp $ */
+/* $OpenBSD: xenstore.c,v 1.18 2016/01/15 18:20:41 mikeb Exp $ */
/*
* Copyright (c) 2015 Mike Belopuhov
@@ -177,8 +177,7 @@ xs_attach(struct xen_softc *sc)
int i;
if ((xs = malloc(sizeof(*xs), M_DEVBUF, M_NOWAIT | M_ZERO)) == NULL) {
- printf("%s: failed to allocate xenstore softc\n",
- sc->sc_dev.dv_xname);
+ printf(": failed to allocate xenstore softc\n");
return (-1);
}
sc->sc_xs = xs;
@@ -188,12 +187,13 @@ xs_attach(struct xen_softc *sc)
memset(&xhv, 0, sizeof(xhv));
xhv.domid = DOMID_SELF;
xhv.index = HVM_PARAM_STORE_EVTCHN;
- if (xen_hypercall(sc, XC_HVM, 2, HVMOP_get_param, &xhv))
+ if (xen_hypercall(sc, XC_HVM, 2, HVMOP_get_param, &xhv)) {
+ printf(": failed to obtain a xenstore event channel\n");
goto fail_1;
+ }
xs->xs_port = xhv.value;
- DPRINTF("%s: xenstore event channel %d\n", sc->sc_dev.dv_xname,
- xs->xs_port);
+ printf(", event channel %d\n", xs->xs_port);
/* Fetch a frame number (PA) of a shared xenstore page */
memset(&xhv, 0, sizeof(xhv));
@@ -211,15 +211,9 @@ xs_attach(struct xen_softc *sc)
pmap_kenter_pa((vaddr_t)xs->xs_ring, pa, PROT_READ | PROT_WRITE);
pmap_update(pmap_kernel());
- DPRINTF("%s: xenstore ring at va %p pa %#lx\n", sc->sc_dev.dv_xname,
- xs->xs_ring, pa & ~PMAP_NOCACHE);
-
if (xen_intr_establish(xs->xs_port, &xs->xs_ih, xs_intr, xs, "xs0"))
goto fail_2;
- DPRINTF("%s: xenstore interrupt established for port %d\n",
- sc->sc_dev.dv_xname, xs->xs_ih);
-
xs->xs_wchan = "xswrite";
xs->xs_rchan = "xsread";
diff --git a/sys/dev/pv/xenvar.h b/sys/dev/pv/xenvar.h
index ef599b6e159..d72d930e175 100644
--- a/sys/dev/pv/xenvar.h
+++ b/sys/dev/pv/xenvar.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: xenvar.h,v 1.20 2016/01/15 14:27:08 mikeb Exp $ */
+/* $OpenBSD: xenvar.h,v 1.21 2016/01/15 18:20:41 mikeb Exp $ */
/*
* Copyright (c) 2015 Mike Belopuhov
@@ -19,7 +19,7 @@
#ifndef _XENVAR_H_
#define _XENVAR_H_
-#define XEN_DEBUG
+/* #define XEN_DEBUG */
#ifdef XEN_DEBUG
#define DPRINTF(x...) printf(x)