Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 21 Jan 2021 01:14:07 GMT
From:      Jessica Clarke <jrtc27@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 633218ee4615 - main - virtio: Reduce boilerplate for device driver module definitions
Message-ID:  <202101210114.10L1E7dV039495@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by jrtc27:

URL: https://cgit.FreeBSD.org/src/commit/?id=633218ee4615854702fea05ba6e17c2a1876bb6b

commit 633218ee4615854702fea05ba6e17c2a1876bb6b
Author:     Jessica Clarke <jrtc27@FreeBSD.org>
AuthorDate: 2021-01-21 01:07:23 +0000
Commit:     Jessica Clarke <jrtc27@FreeBSD.org>
CommitDate: 2021-01-21 01:07:23 +0000

    virtio: Reduce boilerplate for device driver module definitions
    
    Rather than have every device register itself for both virtio_pci and
    virtio_mmio, provide a VIRTIO_DRIVER_MODULE wrapper to declare both,
    merge VIRTIO_SIMPLE_PNPTABLE with VIRTIO_SIMPLE_PNPINFO and make the
    latter register for both buses. This also has the benefit of abstracting
    away the available transports and their names.
    
    Reviewed by:    bryanv
    Differential Revision:  https://reviews.freebsd.org/D28073
---
 sys/dev/virtio/balloon/virtio_balloon.c |  8 ++------
 sys/dev/virtio/block/virtio_blk.c       |  8 ++------
 sys/dev/virtio/console/virtio_console.c |  8 ++------
 sys/dev/virtio/network/if_vtnet.c       |  8 ++------
 sys/dev/virtio/random/virtio_random.c   |  8 ++------
 sys/dev/virtio/scsi/virtio_scsi.c       |  8 ++------
 sys/dev/virtio/virtio.h                 | 13 +++++++++----
 7 files changed, 21 insertions(+), 40 deletions(-)

diff --git a/sys/dev/virtio/balloon/virtio_balloon.c b/sys/dev/virtio/balloon/virtio_balloon.c
index 848dd4e9a7f5..3e2d967dd9af 100644
--- a/sys/dev/virtio/balloon/virtio_balloon.c
+++ b/sys/dev/virtio/balloon/virtio_balloon.c
@@ -158,17 +158,13 @@ static driver_t vtballoon_driver = {
 };
 static devclass_t vtballoon_devclass;
 
-DRIVER_MODULE(virtio_balloon, virtio_mmio, vtballoon_driver,
-    vtballoon_devclass, 0, 0);
-DRIVER_MODULE(virtio_balloon, virtio_pci, vtballoon_driver,
+VIRTIO_DRIVER_MODULE(virtio_balloon, vtballoon_driver,
     vtballoon_devclass, 0, 0);
 MODULE_VERSION(virtio_balloon, 1);
 MODULE_DEPEND(virtio_balloon, virtio, 1, 1, 1);
 
-VIRTIO_SIMPLE_PNPTABLE(virtio_balloon, VIRTIO_ID_BALLOON,
+VIRTIO_SIMPLE_PNPINFO(virtio_balloon, VIRTIO_ID_BALLOON,
     "VirtIO Balloon Adapter");
-VIRTIO_SIMPLE_PNPINFO(virtio_mmio, virtio_balloon);
-VIRTIO_SIMPLE_PNPINFO(virtio_pci, virtio_balloon);
 
 static int
 vtballoon_probe(device_t dev)
diff --git a/sys/dev/virtio/block/virtio_blk.c b/sys/dev/virtio/block/virtio_blk.c
index 6056771e3735..50642fb0b009 100644
--- a/sys/dev/virtio/block/virtio_blk.c
+++ b/sys/dev/virtio/block/virtio_blk.c
@@ -267,16 +267,12 @@ static driver_t vtblk_driver = {
 };
 static devclass_t vtblk_devclass;
 
-DRIVER_MODULE(virtio_blk, virtio_mmio, vtblk_driver, vtblk_devclass,
-    vtblk_modevent, 0);
-DRIVER_MODULE(virtio_blk, virtio_pci, vtblk_driver, vtblk_devclass,
+VIRTIO_DRIVER_MODULE(virtio_blk, vtblk_driver, vtblk_devclass,
     vtblk_modevent, 0);
 MODULE_VERSION(virtio_blk, 1);
 MODULE_DEPEND(virtio_blk, virtio, 1, 1, 1);
 
-VIRTIO_SIMPLE_PNPTABLE(virtio_blk, VIRTIO_ID_BLOCK, "VirtIO Block Adapter");
-VIRTIO_SIMPLE_PNPINFO(virtio_mmio, virtio_blk);
-VIRTIO_SIMPLE_PNPINFO(virtio_pci, virtio_blk);
+VIRTIO_SIMPLE_PNPINFO(virtio_blk, VIRTIO_ID_BLOCK, "VirtIO Block Adapter");
 
 static int
 vtblk_modevent(module_t mod, int type, void *unused)
diff --git a/sys/dev/virtio/console/virtio_console.c b/sys/dev/virtio/console/virtio_console.c
index 315eb59716b4..b65935303b21 100644
--- a/sys/dev/virtio/console/virtio_console.c
+++ b/sys/dev/virtio/console/virtio_console.c
@@ -263,17 +263,13 @@ static driver_t vtcon_driver = {
 };
 static devclass_t vtcon_devclass;
 
-DRIVER_MODULE(virtio_console, virtio_mmio, vtcon_driver, vtcon_devclass,
-    vtcon_modevent, 0);
-DRIVER_MODULE(virtio_console, virtio_pci, vtcon_driver, vtcon_devclass,
+VIRTIO_DRIVER_MODULE(virtio_console, vtcon_driver, vtcon_devclass,
     vtcon_modevent, 0);
 MODULE_VERSION(virtio_console, 1);
 MODULE_DEPEND(virtio_console, virtio, 1, 1, 1);
 
-VIRTIO_SIMPLE_PNPTABLE(virtio_console, VIRTIO_ID_CONSOLE,
+VIRTIO_SIMPLE_PNPINFO(virtio_console, VIRTIO_ID_CONSOLE,
     "VirtIO Console Adapter");
-VIRTIO_SIMPLE_PNPINFO(virtio_mmio, virtio_console);
-VIRTIO_SIMPLE_PNPINFO(virtio_pci, virtio_console);
 
 static int
 vtcon_modevent(module_t mod, int type, void *unused)
diff --git a/sys/dev/virtio/network/if_vtnet.c b/sys/dev/virtio/network/if_vtnet.c
index 8d0770f5ac2d..e64b7de113c8 100644
--- a/sys/dev/virtio/network/if_vtnet.c
+++ b/sys/dev/virtio/network/if_vtnet.c
@@ -362,9 +362,7 @@ static driver_t vtnet_driver = {
 };
 static devclass_t vtnet_devclass;
 
-DRIVER_MODULE(vtnet, virtio_mmio, vtnet_driver, vtnet_devclass,
-    vtnet_modevent, 0);
-DRIVER_MODULE(vtnet, virtio_pci, vtnet_driver, vtnet_devclass,
+VIRTIO_DRIVER_MODULE(vtnet, vtnet_driver, vtnet_devclass,
     vtnet_modevent, 0);
 MODULE_VERSION(vtnet, 1);
 MODULE_DEPEND(vtnet, virtio, 1, 1, 1);
@@ -372,9 +370,7 @@ MODULE_DEPEND(vtnet, virtio, 1, 1, 1);
 MODULE_DEPEND(vtnet, netmap, 1, 1, 1);
 #endif
 
-VIRTIO_SIMPLE_PNPTABLE(vtnet, VIRTIO_ID_NETWORK, "VirtIO Networking Adapter");
-VIRTIO_SIMPLE_PNPINFO(virtio_mmio, vtnet);
-VIRTIO_SIMPLE_PNPINFO(virtio_pci, vtnet);
+VIRTIO_SIMPLE_PNPINFO(vtnet, VIRTIO_ID_NETWORK, "VirtIO Networking Adapter");
 
 static int
 vtnet_modevent(module_t mod, int type, void *unused)
diff --git a/sys/dev/virtio/random/virtio_random.c b/sys/dev/virtio/random/virtio_random.c
index ee3a24bb5513..a8553ecab287 100644
--- a/sys/dev/virtio/random/virtio_random.c
+++ b/sys/dev/virtio/random/virtio_random.c
@@ -97,18 +97,14 @@ static driver_t vtrnd_driver = {
 };
 static devclass_t vtrnd_devclass;
 
-DRIVER_MODULE(virtio_random, virtio_mmio, vtrnd_driver, vtrnd_devclass,
-    vtrnd_modevent, 0);
-DRIVER_MODULE(virtio_random, virtio_pci, vtrnd_driver, vtrnd_devclass,
+VIRTIO_DRIVER_MODULE(virtio_random, vtrnd_driver, vtrnd_devclass,
     vtrnd_modevent, 0);
 MODULE_VERSION(virtio_random, 1);
 MODULE_DEPEND(virtio_random, virtio, 1, 1, 1);
 MODULE_DEPEND(virtio_random, random_device, 1, 1, 1);
 
-VIRTIO_SIMPLE_PNPTABLE(virtio_random, VIRTIO_ID_ENTROPY,
+VIRTIO_SIMPLE_PNPINFO(virtio_random, VIRTIO_ID_ENTROPY,
     "VirtIO Entropy Adapter");
-VIRTIO_SIMPLE_PNPINFO(virtio_mmio, virtio_random);
-VIRTIO_SIMPLE_PNPINFO(virtio_pci, virtio_random);
 
 static int
 vtrnd_modevent(module_t mod, int type, void *unused)
diff --git a/sys/dev/virtio/scsi/virtio_scsi.c b/sys/dev/virtio/scsi/virtio_scsi.c
index 737b6d0a7a42..51d9e5f532f7 100644
--- a/sys/dev/virtio/scsi/virtio_scsi.c
+++ b/sys/dev/virtio/scsi/virtio_scsi.c
@@ -239,17 +239,13 @@ static driver_t vtscsi_driver = {
 };
 static devclass_t vtscsi_devclass;
 
-DRIVER_MODULE(virtio_scsi, virtio_mmio, vtscsi_driver, vtscsi_devclass,
-    vtscsi_modevent, 0);
-DRIVER_MODULE(virtio_scsi, virtio_pci, vtscsi_driver, vtscsi_devclass,
+VIRTIO_DRIVER_MODULE(virtio_scsi, vtscsi_driver, vtscsi_devclass,
     vtscsi_modevent, 0);
 MODULE_VERSION(virtio_scsi, 1);
 MODULE_DEPEND(virtio_scsi, virtio, 1, 1, 1);
 MODULE_DEPEND(virtio_scsi, cam, 1, 1, 1);
 
-VIRTIO_SIMPLE_PNPTABLE(virtio_scsi, VIRTIO_ID_SCSI, "VirtIO SCSI Adapter");
-VIRTIO_SIMPLE_PNPINFO(virtio_mmio, virtio_scsi);
-VIRTIO_SIMPLE_PNPINFO(virtio_pci, virtio_scsi);
+VIRTIO_SIMPLE_PNPINFO(virtio_scsi, VIRTIO_ID_SCSI, "VirtIO SCSI Adapter");
 
 static int
 vtscsi_modevent(module_t mod, int type, void *unused)
diff --git a/sys/dev/virtio/virtio.h b/sys/dev/virtio/virtio.h
index ccac57a5ad96..b22327351b43 100644
--- a/sys/dev/virtio/virtio.h
+++ b/sys/dev/virtio/virtio.h
@@ -66,17 +66,22 @@ struct virtio_feature_desc {
 	const char	*vfd_str;
 };
 
+#define VIRTIO_DRIVER_MODULE(name, driver, devclass, evh, arg)		\
+	DRIVER_MODULE(name, virtio_mmio, driver, devclass, evh, arg);	\
+	DRIVER_MODULE(name, virtio_pci, driver, devclass, evh, arg)
+
 struct virtio_pnp_match {
 	uint32_t	 device_type;
 	const char	*description;
 };
-#define VIRTIO_SIMPLE_PNPTABLE(driver, devtype, desc)			\
+#define VIRTIO_SIMPLE_PNPINFO(driver, devtype, desc)			\
 	static const struct virtio_pnp_match driver ## _match = {	\
 		.device_type = devtype,					\
 		.description = desc,					\
-	}
-#define VIRTIO_SIMPLE_PNPINFO(bus, driver)				\
-	MODULE_PNP_INFO("U32:device_type;D:#", bus, driver,		\
+	};								\
+	MODULE_PNP_INFO("U32:device_type;D:#", virtio_mmio, driver,	\
+	    &driver ## _match, 1);					\
+	MODULE_PNP_INFO("U32:device_type;D:#", virtio_pci, driver,	\
 	    &driver ## _match, 1)
 #define VIRTIO_SIMPLE_PROBE(dev, driver)				\
 	(virtio_simple_probe(dev, &driver ## _match))



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