git: 8cf4fe39e8ec - main - acpi/apm: Store the ACPI softc in si_drv1

From: John Baldwin <jhb_at_FreeBSD.org>
Date: Wed, 30 Sep 2026 16:27:39 UTC
The branch main has been updated by jhb:

URL: https://cgit.FreeBSD.org/src/commit/?id=8cf4fe39e8ec301e582b63099252b4adab740c60

commit 8cf4fe39e8ec301e582b63099252b4adab740c60
Author:     John Baldwin <jhb@FreeBSD.org>
AuthorDate: 2026-09-30 16:21:34 +0000
Commit:     John Baldwin <jhb@FreeBSD.org>
CommitDate: 2026-09-30 16:21:34 +0000

    acpi/apm: Store the ACPI softc in si_drv1
    
    This avoids looking it up via a slower path in apmopen.
    
    Reviewed by:    imp
    Differential Revision:  https://reviews.freebsd.org/D59940
---
 sys/x86/acpica/acpi_apm.c | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/sys/x86/acpica/acpi_apm.c b/sys/x86/acpica/acpi_apm.c
index b314f5e5e705..e1addc46c38c 100644
--- a/sys/x86/acpica/acpi_apm.c
+++ b/sys/x86/acpica/acpi_apm.c
@@ -252,10 +252,9 @@ apmdtor(void *data)
 static int
 apmopen(struct cdev *dev, int flag, int fmt, struct thread *td)
 {
-	struct	acpi_softc *acpi_sc;
+	struct	acpi_softc *acpi_sc = dev->si_drv1;
 	struct 	apm_clone_data *clone;
 
-	acpi_sc = devclass_get_softc(devclass_find("acpi"), 0);
 	clone = apm_create_clone(dev, acpi_sc);
 	devfs_set_cdevpriv(clone, apmdtor);
 
@@ -271,14 +270,13 @@ apmioctl(struct cdev *dev, u_long cmd, caddr_t addr, int flag, struct thread *td
 {
 	int	error;
 	struct	apm_clone_data *clone;
-	struct	acpi_softc *acpi_sc;
+	struct	acpi_softc *acpi_sc = dev->si_drv1;
 	struct	apm_info info;
 	struct 	apm_event_info *ev_info;
 	apm_info_old_t aiop;
 
 	error = 0;
 	devfs_get_cdevpriv((void **)&clone);
-	acpi_sc = clone->acpi_sc;
 
 	switch (cmd) {
 	case APMIO_SUSPEND:
@@ -436,11 +434,20 @@ apmreadfilt(struct knote *kn, long hint)
 void
 acpi_apm_init(struct acpi_softc *sc)
 {
+	struct make_dev_args args;
+	struct cdev *dev;
 
 	/* Create a clone for /dev/acpi also. */
 	STAILQ_INIT(&sc->apm_cdevs);
 	sc->acpi_clone = apm_create_clone(sc->acpi_dev_t, sc);
 
-	make_dev(&apm_cdevsw, 0, UID_ROOT, GID_OPERATOR, 0660, "apmctl");
-	make_dev(&apm_cdevsw, 0, UID_ROOT, GID_OPERATOR, 0664, "apm");
+	make_dev_args_init(&args);
+	args.mda_devsw = &apm_cdevsw;
+	args.mda_uid = UID_ROOT;
+	args.mda_gid = GID_OPERATOR;
+	args.mda_mode = 0664;
+	args.mda_si_drv1 = sc;
+	args.mda_flags = MAKEDEV_ETERNAL;
+	make_dev_s(&args, &dev, "apmctl");
+	make_dev_s(&args, &dev, "apm");
 }