Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Sep 2017 18:50:36 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org
Subject:   svn commit: r323455 - in stable/11/sys/dev/ntb: . ntb_hw
Message-ID:  <201709111850.v8BIoagf075942@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Mon Sep 11 18:50:36 2017
New Revision: 323455
URL: https://svnweb.freebsd.org/changeset/base/323455

Log:
  MFC r323126: Make NTB drivers report more info via NewBus methods.

Modified:
  stable/11/sys/dev/ntb/ntb.c
  stable/11/sys/dev/ntb/ntb.h
  stable/11/sys/dev/ntb/ntb_hw/ntb_hw_intel.c
  stable/11/sys/dev/ntb/ntb_hw/ntb_hw_plx.c
  stable/11/sys/dev/ntb/ntb_transport.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/ntb/ntb.c
==============================================================================
--- stable/11/sys/dev/ntb/ntb.c	Mon Sep 11 18:50:09 2017	(r323454)
+++ stable/11/sys/dev/ntb/ntb.c	Mon Sep 11 18:50:36 2017	(r323455)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2016 Alexander Motin <mav@FreeBSD.org>
+ * Copyright (c) 2016-2017 Alexander Motin <mav@FreeBSD.org>
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -43,13 +43,15 @@ SYSCTL_NODE(_hw, OID_AUTO, ntb, CTLFLAG_RW, 0, "NTB sy
 
 struct ntb_child {
 	device_t	dev;
+	int		function;
 	int		enabled;
 	int		mwoff;
 	int		mwcnt;
 	int		spadoff;
 	int		spadcnt;
 	int		dboff;
-	int		dbmask;
+	int		dbcnt;
+	uint64_t	dbmask;
 	void		*ctx;
 	const struct ntb_ctx_ops *ctx_ops;
 	struct rmlock	ctx_lock;
@@ -98,11 +100,13 @@ ntb_register_device(device_t dev)
 		}
 
 		nc = malloc(sizeof(*nc), M_DEVBUF, M_WAITOK | M_ZERO);
+		nc->function = i;
 		nc->mwoff = mwu;
 		nc->mwcnt = mw;
 		nc->spadoff = spadu;
 		nc->spadcnt = spad;
 		nc->dboff = dbu;
+		nc->dbcnt = db;
 		nc->dbmask = (db == 0) ? 0 : (0xffffffffffffffff >> (64 - db));
 		rm_init(&nc->ctx_lock, "ntb ctx");
 		nc->dev = device_add_child(dev, name, -1);
@@ -160,6 +164,45 @@ ntb_unregister_device(device_t dev)
 		free(nc, M_DEVBUF);
 	}
 	return (error);
+}
+
+int
+ntb_child_location_str(device_t dev, device_t child, char *buf,
+    size_t buflen)
+{
+	struct ntb_child *nc = device_get_ivars(child);
+
+	snprintf(buf, buflen, "function=%d", nc->function);
+	return (0);
+}
+
+int
+ntb_print_child(device_t dev, device_t child)
+{
+	struct ntb_child *nc = device_get_ivars(child);
+	int retval;
+
+	retval = bus_print_child_header(dev, child);
+	if (nc->mwcnt > 0) {
+		printf(" mw %d", nc->mwoff);
+		if (nc->mwcnt > 1)
+			printf("-%d", nc->mwoff + nc->mwcnt - 1);
+	}
+	if (nc->spadcnt > 0) {
+		printf(" spad %d", nc->spadoff);
+		if (nc->spadcnt > 1)
+			printf("-%d", nc->spadoff + nc->spadcnt - 1);
+	}
+	if (nc->dbcnt > 0) {
+		printf(" db %d", nc->dboff);
+		if (nc->dbcnt > 1)
+			printf("-%d", nc->dboff + nc->dbcnt - 1);
+	}
+	retval += printf(" at function %d", nc->function);
+	retval += bus_print_child_domain(dev, child);
+	retval += bus_print_child_footer(dev, child);
+
+	return (retval);
 }
 
 void

Modified: stable/11/sys/dev/ntb/ntb.h
==============================================================================
--- stable/11/sys/dev/ntb/ntb.h	Mon Sep 11 18:50:09 2017	(r323454)
+++ stable/11/sys/dev/ntb/ntb.h	Mon Sep 11 18:50:36 2017	(r323455)
@@ -36,6 +36,9 @@ SYSCTL_DECL(_hw_ntb);
 
 int ntb_register_device(device_t ntb);
 int ntb_unregister_device(device_t ntb);
+int ntb_child_location_str(device_t dev, device_t child, char *buf,
+    size_t buflen);
+int ntb_print_child(device_t dev, device_t child);
 
 /*
  * ntb_link_event() - notify driver context of a change in link status

Modified: stable/11/sys/dev/ntb/ntb_hw/ntb_hw_intel.c
==============================================================================
--- stable/11/sys/dev/ntb/ntb_hw/ntb_hw_intel.c	Mon Sep 11 18:50:09 2017	(r323454)
+++ stable/11/sys/dev/ntb/ntb_hw/ntb_hw_intel.c	Mon Sep 11 18:50:36 2017	(r323455)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2016 Alexander Motin <mav@FreeBSD.org>
+ * Copyright (c) 2016-2017 Alexander Motin <mav@FreeBSD.org>
  * Copyright (C) 2013 Intel Corporation
  * Copyright (C) 2015 EMC Corporation
  * All rights reserved.
@@ -3085,6 +3085,9 @@ static device_method_t ntb_intel_methods[] = {
 	DEVMETHOD(device_probe,		intel_ntb_probe),
 	DEVMETHOD(device_attach,	intel_ntb_attach),
 	DEVMETHOD(device_detach,	intel_ntb_detach),
+	/* Bus interface */
+	DEVMETHOD(bus_child_location_str, ntb_child_location_str),
+	DEVMETHOD(bus_print_child,	ntb_print_child),
 	/* NTB interface */
 	DEVMETHOD(ntb_link_is_up,	intel_ntb_link_is_up),
 	DEVMETHOD(ntb_link_enable,	intel_ntb_link_enable),

Modified: stable/11/sys/dev/ntb/ntb_hw/ntb_hw_plx.c
==============================================================================
--- stable/11/sys/dev/ntb/ntb_hw/ntb_hw_plx.c	Mon Sep 11 18:50:09 2017	(r323454)
+++ stable/11/sys/dev/ntb/ntb_hw/ntb_hw_plx.c	Mon Sep 11 18:50:36 2017	(r323455)
@@ -914,6 +914,9 @@ static device_method_t ntb_plx_methods[] = {
 	DEVMETHOD(device_probe,		ntb_plx_probe),
 	DEVMETHOD(device_attach,	ntb_plx_attach),
 	DEVMETHOD(device_detach,	ntb_plx_detach),
+	/* Bus interface */
+	DEVMETHOD(bus_child_location_str, ntb_child_location_str),
+	DEVMETHOD(bus_print_child,	ntb_print_child),
 	/* NTB interface */
 	DEVMETHOD(ntb_link_is_up,	ntb_plx_link_is_up),
 	DEVMETHOD(ntb_link_enable,	ntb_plx_link_enable),

Modified: stable/11/sys/dev/ntb/ntb_transport.c
==============================================================================
--- stable/11/sys/dev/ntb/ntb_transport.c	Mon Sep 11 18:50:09 2017	(r323454)
+++ stable/11/sys/dev/ntb/ntb_transport.c	Mon Sep 11 18:50:36 2017	(r323455)
@@ -1,5 +1,5 @@
 /*-
- * Copyright (c) 2016 Alexander Motin <mav@FreeBSD.org>
+ * Copyright (c) 2016-2017 Alexander Motin <mav@FreeBSD.org>
  * Copyright (C) 2013 Intel Corporation
  * Copyright (C) 2015 EMC Corporation
  * All rights reserved.
@@ -188,6 +188,7 @@ struct ntb_transport_mw {
 
 struct ntb_transport_child {
 	device_t	dev;
+	int		consumer;
 	int		qpoff;
 	int		qpcnt;
 	struct ntb_transport_child *next;
@@ -343,9 +344,6 @@ ntb_transport_attach(device_t dev)
 	KASSERT(db_bitmap == (1 << db_count) - 1,
 	    ("Doorbells are not sequential (%jx).\n", db_bitmap));
 
-	device_printf(dev, "%d memory windows, %d scratchpads, "
-	    "%d doorbells\n", nt->mw_count, spad_count, db_count);
-
 	if (nt->mw_count == 0) {
 		device_printf(dev, "At least 1 memory window required.\n");
 		return (ENXIO);
@@ -409,6 +407,7 @@ ntb_transport_attach(device_t dev)
 		}
 
 		nc = malloc(sizeof(*nc), M_DEVBUF, M_WAITOK | M_ZERO);
+		nc->consumer = i;
 		nc->qpoff = qpu;
 		nc->qpcnt = qp;
 		nc->dev = device_add_child(dev, name, -1);
@@ -496,6 +495,35 @@ ntb_transport_detach(device_t dev)
 	return (0);
 }
 
+static int
+ntb_transport_print_child(device_t dev, device_t child)
+{
+	struct ntb_transport_child *nc = device_get_ivars(child);
+	int retval;
+
+	retval = bus_print_child_header(dev, child);
+	if (nc->qpcnt > 0) {
+		printf(" queue %d", nc->qpoff);
+		if (nc->qpcnt > 1)
+			printf("-%d", nc->qpoff + nc->qpcnt - 1);
+	}
+	retval += printf(" at consumer %d", nc->consumer);
+	retval += bus_print_child_domain(dev, child);
+	retval += bus_print_child_footer(dev, child);
+
+	return (retval);
+}
+
+static int
+ntb_transport_child_location_str(device_t dev, device_t child, char *buf,
+    size_t buflen)
+{
+	struct ntb_transport_child *nc = device_get_ivars(child);
+
+	snprintf(buf, buflen, "consumer=%d", nc->consumer);
+	return (0);
+}
+
 int
 ntb_transport_queue_count(device_t dev)
 {
@@ -1552,6 +1580,9 @@ static device_method_t ntb_transport_methods[] = {
 	DEVMETHOD(device_probe,     ntb_transport_probe),
 	DEVMETHOD(device_attach,    ntb_transport_attach),
 	DEVMETHOD(device_detach,    ntb_transport_detach),
+	/* Bus interface */
+	DEVMETHOD(bus_child_location_str, ntb_transport_child_location_str),
+	DEVMETHOD(bus_print_child,  ntb_transport_print_child),
 	DEVMETHOD_END
 };
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201709111850.v8BIoagf075942>