This embeds klist head in struct acpi_softc so that explicit malloc is
not needed. The head is initialized as part of acpi_softc allocation.

OK?

Index: dev/acpi/acpi.c
===================================================================
RCS file: src/sys/dev/acpi/acpi.c,v
retrieving revision 1.410
diff -u -p -r1.410 acpi.c
--- dev/acpi/acpi.c     8 Feb 2022 17:25:12 -0000       1.410
+++ dev/acpi/acpi.c     9 Feb 2022 15:12:22 -0000
@@ -1016,16 +1016,6 @@ acpi_attach_common(struct acpi_softc *sc
        SIMPLEQ_INIT(&sc->sc_pwrresdevs);
 #endif /* NACPIPWRRES > 0 */
 
-
-#ifndef SMALL_KERNEL
-       sc->sc_note = malloc(sizeof(struct klist), M_DEVBUF, M_NOWAIT | M_ZERO);
-       if (sc->sc_note == NULL) {
-               printf(": can't allocate memory\n");
-               acpi_unmap(&handle);
-               return;
-       }
-#endif /* SMALL_KERNEL */
-
        if (acpi_loadtables(sc, rsdp)) {
                printf(": can't load tables\n");
                acpi_unmap(&handle);
@@ -3467,7 +3457,7 @@ acpi_record_event(struct acpi_softc *sc,
                return (1);
 
        acpi_evindex++;
-       KNOTE(sc->sc_note, APM_EVENT_COMPOSE(type, acpi_evindex));
+       KNOTE(&sc->sc_note, APM_EVENT_COMPOSE(type, acpi_evindex));
        return (0);
 }
 
@@ -3478,7 +3468,7 @@ acpi_filtdetach(struct knote *kn)
        int s;
 
        s = splbio();
-       klist_remove_locked(sc->sc_note, kn);
+       klist_remove_locked(&sc->sc_note, kn);
        splx(s);
 }
 
@@ -3512,7 +3502,7 @@ acpikqfilter(dev_t dev, struct knote *kn
        kn->kn_hook = sc;
 
        s = splbio();
-       klist_insert_locked(sc->sc_note, kn);
+       klist_insert_locked(&sc->sc_note, kn);
        splx(s);
 
        return (0);
Index: dev/acpi/acpivar.h
===================================================================
RCS file: src/sys/dev/acpi/acpivar.h,v
retrieving revision 1.118
diff -u -p -r1.118 acpivar.h
--- dev/acpi/acpivar.h  8 Feb 2022 17:25:12 -0000       1.118
+++ dev/acpi/acpivar.h  9 Feb 2022 15:12:22 -0000
@@ -23,6 +23,7 @@
 
 #ifndef _ACPI_WAKECODE
 
+#include <sys/event.h>
 #include <sys/timeout.h>
 #include <sys/rwlock.h>
 
@@ -45,7 +46,6 @@ extern int acpi_debug;
 extern int acpi_hasprocfvs;
 extern int acpi_haspci;
 
-struct klist;
 struct acpiec_softc;
 struct acpipwrres_softc;
 
@@ -239,7 +239,7 @@ struct acpi_softc {
         */
        struct acpi_facs        *sc_facs;       /* Shared with firmware! */
 
-       struct klist            *sc_note;
+       struct klist            sc_note;
        struct acpi_reg_map     sc_pmregs[ACPIREG_MAXREG];
        bus_space_handle_t      sc_ioh_pm1a_evt;
 

Reply via email to