From owner-dev-commits-src-all@freebsd.org Thu Jan 21 01:14:07 2021 Return-Path: Delivered-To: dev-commits-src-all@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id CFFC24DFF37; Thu, 21 Jan 2021 01:14:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4DLktl5K7Nz4Z9h; Thu, 21 Jan 2021 01:14:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 9FF7C230E6; Thu, 21 Jan 2021 01:14:07 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 10L1E74E039496; Thu, 21 Jan 2021 01:14:07 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 10L1E7dV039495; Thu, 21 Jan 2021 01:14:07 GMT (envelope-from git) Date: Thu, 21 Jan 2021 01:14:07 GMT Message-Id: <202101210114.10L1E7dV039495@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Jessica Clarke Subject: git: 633218ee4615 - main - virtio: Reduce boilerplate for device driver module definitions MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: jrtc27 X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 633218ee4615854702fea05ba6e17c2a1876bb6b Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-all@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commit messages for all branches of the src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Jan 2021 01:14:07 -0000 The branch main has been updated by jrtc27: URL: https://cgit.FreeBSD.org/src/commit/?id=633218ee4615854702fea05ba6e17c2a1876bb6b commit 633218ee4615854702fea05ba6e17c2a1876bb6b Author: Jessica Clarke AuthorDate: 2021-01-21 01:07:23 +0000 Commit: Jessica Clarke 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))