From owner-dev-commits-src-branches@freebsd.org Mon Oct 4 01:14:28 2021 Return-Path: Delivered-To: dev-commits-src-branches@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 A7CB16734B6; Mon, 4 Oct 2021 01:14:28 +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 4HN2n04Ny4z4t6n; Mon, 4 Oct 2021 01:14:28 +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 774C810996; Mon, 4 Oct 2021 01:14:28 +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 1941ESVv007642; Mon, 4 Oct 2021 01:14:28 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 1941ESCS007641; Mon, 4 Oct 2021 01:14:28 GMT (envelope-from git) Date: Mon, 4 Oct 2021 01:14:28 GMT Message-Id: <202110040114.1941ESCS007641@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Alexander Motin Subject: git: b7fde5e82bd5 - stable/13 - ioat(4): Remove Giant from ioat_test enable/disable. MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: mav X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: b7fde5e82bd54242d4f8c1801ab6487711e7532b Auto-Submitted: auto-generated X-BeenThere: dev-commits-src-branches@freebsd.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Commits to the stable branches of the FreeBSD src repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 04 Oct 2021 01:14:28 -0000 The branch stable/13 has been updated by mav: URL: https://cgit.FreeBSD.org/src/commit/?id=b7fde5e82bd54242d4f8c1801ab6487711e7532b commit b7fde5e82bd54242d4f8c1801ab6487711e7532b Author: Alexander Motin AuthorDate: 2021-09-04 19:53:28 +0000 Commit: Alexander Motin CommitDate: 2021-10-04 01:14:25 +0000 ioat(4): Remove Giant from ioat_test enable/disable. MFC after: 1 month (cherry picked from commit 71bf3900b7827643830dfd9aa1db81bc2926eadb) --- sys/dev/ioat/ioat.c | 25 +++++++++++++++++++++++-- sys/dev/ioat/ioat_test.c | 26 ++++++++++++-------------- 2 files changed, 35 insertions(+), 16 deletions(-) diff --git a/sys/dev/ioat/ioat.c b/sys/dev/ioat/ioat.c index 45a6c273822d..2badfedb7488 100644 --- a/sys/dev/ioat/ioat.c +++ b/sys/dev/ioat/ioat.c @@ -70,6 +70,7 @@ __FBSDID("$FreeBSD$"); #define BUS_SPACE_MAXADDR_46BIT MIN(BUS_SPACE_MAXADDR, 0x3FFFFFFFFFFFULL) #endif +static int ioat_modevent(module_t mod, int type, void *data); static int ioat_probe(device_t device); static int ioat_attach(device_t device); static int ioat_detach(device_t device); @@ -147,7 +148,7 @@ static driver_t ioat_pci_driver = { }; static devclass_t ioat_devclass; -DRIVER_MODULE(ioat, pci, ioat_pci_driver, ioat_devclass, 0, 0); +DRIVER_MODULE(ioat, pci, ioat_pci_driver, ioat_devclass, ioat_modevent, NULL); MODULE_VERSION(ioat, 1); /* @@ -248,6 +249,27 @@ MODULE_PNP_INFO("W32:vendor/device;D:#", pci, ioat, pci_ids, /* * OS <-> Driver linkage functions */ +static int +ioat_modevent(module_t mod __unused, int type, void *data __unused) +{ + switch(type) { + case MOD_LOAD: + break; + + case MOD_UNLOAD: + ioat_test_detach(); + break; + + case MOD_SHUTDOWN: + break; + + default: + return (EOPNOTSUPP); + } + + return (0); +} + static int ioat_probe(device_t device) { @@ -362,7 +384,6 @@ ioat_detach(device_t device) ioat_channel_index--; mtx_unlock(&ioat_list_mtx); - ioat_test_detach(); taskqueue_drain(taskqueue_thread, &ioat->reset_task); mtx_lock(&ioat->submit_lock); diff --git a/sys/dev/ioat/ioat_test.c b/sys/dev/ioat/ioat_test.c index 0bd6a3377bea..3a42ba5fb54c 100644 --- a/sys/dev/ioat/ioat_test.c +++ b/sys/dev/ioat/ioat_test.c @@ -550,17 +550,21 @@ static struct cdevsw ioat_cdevsw = { static int enable_ioat_test(bool enable) { - - mtx_assert(&Giant, MA_OWNED); + struct make_dev_args devargs; + int error = 0; if (enable && g_ioat_cdev == NULL) { - g_ioat_cdev = make_dev(&ioat_cdevsw, 0, UID_ROOT, GID_WHEEL, - 0600, "ioat_test"); + make_dev_args_init(&devargs); + devargs.mda_devsw = &ioat_cdevsw; + devargs.mda_uid = UID_ROOT; + devargs.mda_gid = GID_WHEEL; + devargs.mda_mode = 0600; + error = make_dev_s(&devargs, &g_ioat_cdev, "ioat_test"); } else if (!enable && g_ioat_cdev != NULL) { destroy_dev(g_ioat_cdev); g_ioat_cdev = NULL; } - return (0); + return (error); } static int @@ -573,11 +577,10 @@ sysctl_enable_ioat_test(SYSCTL_HANDLER_ARGS) if (error != 0 || req->newptr == NULL) return (error); - enable_ioat_test(enabled); - return (0); + return (enable_ioat_test(enabled)); } SYSCTL_PROC(_hw_ioat, OID_AUTO, enable_ioat_test, - CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_NEEDGIANT, 0, 0, + CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, 0, 0, sysctl_enable_ioat_test, "I", "Non-zero: Enable the /dev/ioat_test device"); @@ -587,11 +590,8 @@ ioat_test_attach(void) char *val; val = kern_getenv("hw.ioat.enable_ioat_test"); - if (val != NULL && strcmp(val, "0") != 0) { - mtx_lock(&Giant); + if (val != NULL && strcmp(val, "0") != 0) enable_ioat_test(true); - mtx_unlock(&Giant); - } freeenv(val); } @@ -599,9 +599,7 @@ void ioat_test_detach(void) { - mtx_lock(&Giant); enable_ioat_test(false); - mtx_unlock(&Giant); } static void