Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 08 Jan 2026 10:45:19 +0000
From:      Aymeric Wibo <obiwac@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: c0df8f6f0e6a - main - acpi: Make taskqueue only run on BSP
Message-ID:  <695f8abf.30bec.62a9009@gitrepo.freebsd.org>

index | next in thread | raw e-mail

The branch main has been updated by obiwac:

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

commit c0df8f6f0e6a5f77ec9140e8075d09c55fe4c3c7
Author:     Aymeric Wibo <obiwac@FreeBSD.org>
AuthorDate: 2025-12-29 20:01:50 +0000
Commit:     Aymeric Wibo <obiwac@FreeBSD.org>
CommitDate: 2026-01-08 10:35:54 +0000

    acpi: Make taskqueue only run on BSP
    
    This is needed because when we add the suspend-to-idle loop, we only
    want to break the BSP out of idle to process the taskqueue while keeping
    all the others idled.
    
    Currently assuming BSP to be CPU0, which may not always be the case on
    non-x86.
    
    Reviewed by:    kib
    Approved by:    kib
    Sponsored by:   The FreeBSD Foundation
    Differential Revision:  https://reviews.freebsd.org/D54406
---
 sys/dev/acpica/Osd/OsdSchedule.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/sys/dev/acpica/Osd/OsdSchedule.c b/sys/dev/acpica/Osd/OsdSchedule.c
index f0464709e8ad..0c5eadb87687 100644
--- a/sys/dev/acpica/Osd/OsdSchedule.c
+++ b/sys/dev/acpica/Osd/OsdSchedule.c
@@ -35,6 +35,7 @@
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/bus.h>
+#include <sys/cpuset.h>
 #include <sys/kernel.h>
 #include <sys/kthread.h>
 #include <sys/malloc.h>
@@ -109,10 +110,13 @@ static void
 acpi_taskq_init(void *arg)
 {
     int i;
+    /* XXX Currently assuming BSP is CPU0. */
+    cpuset_t just_bsp = CPUSET_T_INITIALIZER(0x1);
 
     acpi_taskq = taskqueue_create_fast("acpi_task", M_NOWAIT,
 	&taskqueue_thread_enqueue, &acpi_taskq);
-    taskqueue_start_threads(&acpi_taskq, acpi_max_threads, PWAIT, "acpi_task");
+    taskqueue_start_threads_cpuset(&acpi_taskq, acpi_max_threads, PWAIT,
+	&just_bsp, "acpi_task");
     if (acpi_task_count > 0) {
 	if (bootverbose)
 	    printf("AcpiOsExecute: enqueue %d pending tasks\n",


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?695f8abf.30bec.62a9009>