Module Name:    src
Committed By:   maxv
Date:           Mon Aug 13 15:48:21 UTC 2018

Modified Files:
        src/sys/arch/xen/xen: xpci_xenbus.c

Log Message:
Clarify, remove dead code, and add XXXSMP; really this static variable
looks like a great bug.


To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/sys/arch/xen/xen/xpci_xenbus.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/xen/xpci_xenbus.c
diff -u src/sys/arch/xen/xen/xpci_xenbus.c:1.16 src/sys/arch/xen/xen/xpci_xenbus.c:1.17
--- src/sys/arch/xen/xen/xpci_xenbus.c:1.16	Sun Jun 24 20:28:58 2018
+++ src/sys/arch/xen/xen/xpci_xenbus.c	Mon Aug 13 15:48:21 2018
@@ -1,4 +1,4 @@
-/*      $NetBSD: xpci_xenbus.c,v 1.16 2018/06/24 20:28:58 jdolecek Exp $      */
+/*      $NetBSD: xpci_xenbus.c,v 1.17 2018/08/13 15:48:21 maxv Exp $      */
 
 /*
  * Copyright (c) 2009 Manuel Bouyer.
@@ -22,15 +22,13 @@
  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: xpci_xenbus.c,v 1.16 2018/06/24 20:28:58 jdolecek Exp $");
+__KERNEL_RCSID(0, "$NetBSD: xpci_xenbus.c,v 1.17 2018/08/13 15:48:21 maxv Exp $");
 
 #include "opt_xen.h"
 
-
 #include <sys/types.h>
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -123,7 +121,7 @@ xpci_xenbus_match(device_t parent, cfdat
 		return 0;
 
 	if (match->cf_loc[XENBUSCF_ID] != XENBUSCF_ID_DEFAULT &&
-	   match->cf_loc[XENBUSCF_ID] != xa->xa_id)
+	    match->cf_loc[XENBUSCF_ID] != xa->xa_id)
 		return 0;
 
 	return 1;
@@ -134,12 +132,6 @@ xpci_xenbus_attach(device_t parent, devi
 {
 	struct xpci_xenbus_softc *sc = device_private(self);
 	struct xenbusdev_attach_args *xa = aux;
-#ifdef XBD_DEBUG
-	char **dir, *val;
-	int dir_n = 0;
-	char id_str[20];
-	int err;
-#endif
 
 	if (xpci_sc != NULL) {
 		aprint_error("Xen PCI frontend already attached\n");
@@ -271,9 +263,9 @@ xpci_backend_changed(void *arg, XenbusSt
 		break;
 	case XenbusStateConnected:
 		/*
-		* note that xpci_backend_changed() can only be called by
-		* the xenbus thread.
-		*/
+		 * note that xpci_backend_changed() can only be called by
+		 * the xenbus thread.
+		 */
 
 		if (sc->sc_backend_status == XPCI_STATE_CONNECTED)
 			/* already connected */
@@ -318,8 +310,10 @@ xpci_connect(struct xpci_xenbus_softc *s
 		aprint_error_dev(sc->sc_dev, "can't read root_num: %d\n", err);
 		return;
 	}
+
 	aprint_verbose_dev(sc->sc_dev, "%lu bus%s\n", num_roots,
 	    (num_roots > 1) ? "ses" : "");
+
 	for (i = 0; i < num_roots; i++) {
 		snprintf(node, sizeof(node), "root-%d", i);
 		xenbus_read(NULL, sc->sc_xbusd->xbusd_otherend, node,
@@ -344,6 +338,7 @@ xpci_connect(struct xpci_xenbus_softc *s
 		}
 		free(string, M_DEVBUF);
 	}
+
 	xenbus_switch_state(sc->sc_xbusd, NULL, XenbusStateConnected);
 }
 
@@ -360,7 +355,7 @@ xpci_attach_pcibus(int domain, int busn)
 	pba.pba_dmat64 = &pci_bus_dma64_tag;
 #else
 	pba.pba_dmat64 = NULL;
-#endif /* _LP64 */
+#endif
 	pba.pba_flags = PCI_FLAGS_MEM_OKAY | PCI_FLAGS_IO_OKAY |
 	    PCI_FLAGS_MRL_OKAY | PCI_FLAGS_MRM_OKAY | PCI_FLAGS_MWI_OKAY;
 	pba.pba_bridgetag = NULL;
@@ -379,7 +374,7 @@ pci_attach_hook(device_t parent, device_
 int
 pci_bus_maxdevs(pci_chipset_tag_t pc, int busno)
 {
-	return (32);
+	return 32;
 }
 
 pcitag_t
@@ -409,29 +404,30 @@ pci_decompose_tag(pci_chipset_tag_t pc, 
 static void
 xpci_do_op(struct xen_pci_op *op)
 {
-
 	struct xen_pci_op *active_op = &xpci_sc->sc_shared->op;
-	static 	__cpu_simple_lock_t pci_conf_lock = __SIMPLELOCK_UNLOCKED;
+	static __cpu_simple_lock_t pci_conf_lock = __SIMPLELOCK_UNLOCKED;
 	int s;
 
 	s = splhigh();
 	__cpu_simple_lock(&pci_conf_lock);
+
 	memcpy(active_op, op, sizeof(struct xen_pci_op));
 	x86_sfence();
 	xen_atomic_set_bit(&xpci_sc->sc_shared->flags, _XEN_PCIF_active);
 	hypervisor_notify_via_evtchn(xpci_sc->sc_evtchn);
 	while (xen_atomic_test_bit(&xpci_sc->sc_shared->flags,
-	   _XEN_PCIF_active)) {
+	    _XEN_PCIF_active)) {
 		hypervisor_clear_event(xpci_sc->sc_evtchn);
 		/* HYPERVISOR_yield(); */
 	}
 	memcpy(op, active_op, sizeof(struct xen_pci_op));
+
 	__cpu_simple_unlock(&pci_conf_lock);
 	splx(s);
 }
 
 static int
-xpci_conf_read( pci_chipset_tag_t pc, pcitag_t tag, int reg, int size,
+xpci_conf_read(pci_chipset_tag_t pc, pcitag_t tag, int reg, int size,
     pcireg_t *value)
 {
 	int bus, dev, func;
@@ -439,51 +435,29 @@ xpci_conf_read( pci_chipset_tag_t pc, pc
 		.cmd    = XEN_PCI_OP_conf_read,
 		.domain = 0, /* XXX */
 	};
+
 	pci_decompose_tag(pc, tag, &bus, &dev, &func);
 	DPRINTF(("pci_conf_read %d:%d:%d reg 0x%x", bus, dev, func, reg));
+
 	op.bus = bus;
 	op.devfn = (dev << 3) | func;
 	op.offset = reg;
-	op.size   = size;
+	op.size = size;
 	xpci_do_op(&op);
+
 	*value = op.value;
 	DPRINTF((" val 0x%x err %d\n", *value, op.err));
+
 	return op.err;
 }
 
 pcireg_t
-pci_conf_read( pci_chipset_tag_t pc, pcitag_t tag, int reg)
+pci_conf_read(pci_chipset_tag_t pc, pcitag_t tag, int reg)
 {
-	static pcireg_t value, v;
-	/*
-	 * deal with linux stupidity: linux backend doesn't allow
-	 * 4-byte read on some registers :(
-	 */
-	switch(reg) {
-#if 0
-	case 0x0004:
-		xpci_conf_read(pc, tag, reg, 2, &v);
-		value = v;
-		xpci_conf_read(pc, tag, reg + 2, 2, &v);
-		value |= v << 16;
-		return value;
-	case 0x003c:
-	case 0x000c:
-		value = xpci_conf_read(pc, tag, reg, 1, &v);
-		value = v;
-		xpci_conf_read(pc, tag, reg + 1, 1, &v);
-		value |= v << 8;
-		xpci_conf_read(pc, tag, reg + 2, 1, &v);
-		value |= v << 16;
-		xpci_conf_read(pc, tag, reg + 3, 1, &v);
-		value |= v << 24;
-		return value;
-#endif
-	default:
-		xpci_conf_read(pc, tag, reg, 4, &v);
-		value = v;
-		return value;
-	}
+	static pcireg_t v; /* XXXSMP: why static? */
+
+	xpci_conf_read(pc, tag, reg, 4, &v);
+	return v;
 }
 
 static int
@@ -495,39 +469,26 @@ xpci_conf_write(pci_chipset_tag_t pc, pc
 		.cmd    = XEN_PCI_OP_conf_write,
 		.domain = 0, /* XXX */
 	};
+
 	pci_decompose_tag(pc, tag, &bus, &dev, &func);
 	DPRINTF(("pci_conf_write %d:%d:%d reg 0x%x val 0x%x", bus, dev, func, reg, data));
+
 	op.bus = bus;
 	op.devfn = (dev << 3) | func;
 	op.offset = reg;
-	op.size   = size;
+	op.size = size;
 	op.value = data;
 	xpci_do_op(&op);
+
 	DPRINTF((" err %d\n", op.err));
+
 	return op.err;
 }
 
 void
 pci_conf_write(pci_chipset_tag_t pc, pcitag_t tag, int reg, pcireg_t data)
 {
-	/* as for read we have to work around linux limitations */
-	switch (reg) {
-#if 0
-	case 0x0004:
-		xpci_conf_write(pc, tag, reg    , 2, data & 0xffff);
-		xpci_conf_write(pc, tag, reg + 2, 2, (data >> 16) & 0xffff);
-		return;
-	case 0x003c:
-	case 0x000c:
-		xpci_conf_write(pc, tag, reg    , 1, data & 0xff);
-		xpci_conf_write(pc, tag, reg + 1, 1, (data >> 8) & 0xff);
-		xpci_conf_write(pc, tag, reg + 2, 1, (data >> 16) & 0xff);
-		xpci_conf_write(pc, tag, reg + 3, 1, (data >> 24) & 0xff);
-		return;
-#endif
-	default:
-		xpci_conf_write(pc, tag, reg, 4, data);
-	}
+	xpci_conf_write(pc, tag, reg, 4, data);
 }
 
 int

Reply via email to