git: 8cf4fe39e8ec - main - acpi/apm: Store the ACPI softc in si_drv1
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
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");
}