From nobody Sun Sep 13 20:48:52 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hjgP104xnz6sWtL for ; Sun, 13 Sep 2026 20:48:53 +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 "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hjgP06McVz4KQp for ; Sun, 13 Sep 2026 20:48:52 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789332532; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hm8FidTMTTdewdXw+G3HE+a6Zltd04P+oRVHAXFnFBI=; b=Yd8hVqGLEFe/vCj3eXBOdgDD0B7Pgl4pAxc7ZvrrG0WaepihgoH8D+1WowqHkxfPSWnvcy Y/VpLAZxyHVUT2URdPn+gMp9/hdYSq4pwld1LPNmdUePlYtpuKHOLBclSBt6jgXo2RAemK Wmnm8Eaxkd0bKLA/Bbn6K1/nfMdWesgW1T99KAtctjBv1OIAcLrv/ucluwv3aJI/Kv9mSI JIcH5RD61ghvecIRst+a8hE8eBdcvHVDHLsNsmxrbXrKezncTS1vROZ87otWwCMZXgB9em MBm4UR5FXbrf66amocCSI7Hk/sTy8UmE+PX70uv7UaFJe+ThlvoO2UMCc1hXsA== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1789332532; b=KIeFgCMkrOAkAdHeWfYi7nltwR23TV6WqKkcHhkz5rxKImu2x3cpSio7j904i38eYif6QL jepS0yGN8DRR/xjy+lnFcaWiO6RUjIwz/znI/cO+D9ub9nPglYAIxk6PwXkkAESltlbeji BGV/sG7DMQDaQ2u4FFNIZuMeJZVTK4SDiCFEKYAQCq1jItoqQMS9uyOMsdL6J5yWXJtOom xIMHIrCLSK4D/2Jaj4OxcB620IA3TyN92suPNZmmJ21MEuPtFFCCKNJEa8Xp0Ts64j5wQQ GNlbPH1wkhHrGxNkJ1GawKrAokl2THKHpr9iBlhshuZiESePOY9JN4cXFty5Bw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789332532; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=hm8FidTMTTdewdXw+G3HE+a6Zltd04P+oRVHAXFnFBI=; b=MyLyn+1/BvvPwiTXOaGu4VuJ7V6sb5sbwHX8tenvJ6H0SxHgYK4ingpcqJFxIbwoEhGeBJ tqIqi+mW0lSGlZVIrOE69oTP7DvlVZT7oA0tLcGX3xeFfCjMSOSqVQps0DH3HO3P7R/MhY /2RsZYdD7Op+teMw1dgGzECoISWobGWI57F/DUUF5lkIa6eAvY1r3H3EU4QX7Sew0qlIF2 yQsDpv6jj1gasmHr9csLsPViYF5zkazoxB/EFV9WqISqYBrHLAlFiStQTr8gp677yCROo1 EKfoA0s8fA0vmZi7SwNXgnzzFUd9YGsHiKw8r1yRTUwUtCV4MlHs07ichR5L7Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hjgP04rMSzyY3 for ; Sun, 13 Sep 2026 20:48:52 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 310a8 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sun, 13 Sep 2026 20:48:52 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Abdelkader Boudih Subject: git: 9a46a1439c46 - main - acpi_cpu: only report unmapped processor objects enabled in the MADT List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: seuros X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 9a46a1439c46045ecb33684d8fbdb1a841ccb425 Auto-Submitted: auto-generated Date: Sun, 13 Sep 2026 20:48:52 +0000 Message-Id: <6aa70c34.310a8.62c5471c@gitrepo.freebsd.org> The branch main has been updated by seuros: URL: https://cgit.FreeBSD.org/src/commit/?id=9a46a1439c46045ecb33684d8fbdb1a841ccb425 commit 9a46a1439c46045ecb33684d8fbdb1a841ccb425 Author: Abdelkader Boudih AuthorDate: 2026-09-13 20:48:26 +0000 Commit: Abdelkader Boudih CommitDate: 2026-09-13 20:48:26 +0000 acpi_cpu: only report unmapped processor objects enabled in the MADT Firmware expose a DSDT sized for the largest SKU of the platform, so a verbose boot prints an "ignored" line for every vacant processor slot. A vacant slot has no enabled MADT entry; a CPU that failed to come online does. Reviewed by: olce, adrian Differential Revision: https://reviews.freebsd.org/D59551 --- sys/dev/acpica/acpi_cpu.c | 65 ++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 62 insertions(+), 3 deletions(-) diff --git a/sys/dev/acpica/acpi_cpu.c b/sys/dev/acpica/acpi_cpu.c index 48f6a27c1e89..d3ac92f920ab 100644 --- a/sys/dev/acpica/acpi_cpu.c +++ b/sys/dev/acpica/acpi_cpu.c @@ -163,6 +163,8 @@ static int acpi_cpu_suspend(device_t dev); static int acpi_cpu_resume(device_t dev); static int acpi_pcpu_get_id(device_t dev, uint32_t acpi_id, u_int *cpu_id); +static void acpi_cpu_madt_handler(ACPI_SUBTABLE_HEADER *entry, void *arg); +static bool acpi_cpu_enabled_in_madt(uint32_t acpi_id); static struct resource_list *acpi_cpu_get_rlist(device_t dev, device_t child); static device_t acpi_cpu_add_child(device_t dev, u_int order, const char *name, int unit); @@ -284,9 +286,10 @@ acpi_cpu_probe(device_t dev) } } if (acpi_pcpu_get_id(dev, acpi_id, &cpu_id) != 0) { - if (bootverbose && (type != ACPI_TYPE_PROCESSOR || acpi_id != 255)) - printf("ACPI: Processor %s (ACPI ID %u) ignored\n", - acpi_name(acpi_get_handle(dev)), acpi_id); + if (bootverbose && (type != ACPI_TYPE_PROCESSOR || acpi_id != 255) && + acpi_cpu_enabled_in_madt(acpi_id)) + printf("ACPI: Processor %s (ACPI ID %u) enabled but not online, " + "ignored\n", acpi_name(handle), acpi_id); return (ENXIO); } @@ -584,6 +587,62 @@ acpi_pcpu_get_id(device_t dev, uint32_t acpi_id, u_int *cpu_id) return (ESRCH); } +struct acpi_cpu_madt_check { + uint32_t acpi_id; + bool enabled; +}; + +static void +acpi_cpu_madt_handler(ACPI_SUBTABLE_HEADER *entry, void *arg) +{ + struct acpi_cpu_madt_check *check = arg; + uint32_t id, flags; + + switch (entry->Type) { + case ACPI_MADT_TYPE_LOCAL_APIC: + id = ((ACPI_MADT_LOCAL_APIC *)entry)->ProcessorId; + flags = ((ACPI_MADT_LOCAL_APIC *)entry)->LapicFlags; + break; + case ACPI_MADT_TYPE_LOCAL_X2APIC: + id = ((ACPI_MADT_LOCAL_X2APIC *)entry)->Uid; + flags = ((ACPI_MADT_LOCAL_X2APIC *)entry)->LapicFlags; + break; + case ACPI_MADT_TYPE_GENERIC_INTERRUPT: + id = ((ACPI_MADT_GENERIC_INTERRUPT *)entry)->Uid; + flags = ((ACPI_MADT_GENERIC_INTERRUPT *)entry)->Flags; + break; + case ACPI_MADT_TYPE_RINTC: + id = ((ACPI_MADT_RINTC *)entry)->Uid; + flags = ((ACPI_MADT_RINTC *)entry)->Flags; + break; + default: + return; + } + if (id == check->acpi_id && (flags & ACPI_MADT_ENABLED) != 0) + check->enabled = true; +} + +static bool +acpi_cpu_enabled_in_madt(uint32_t acpi_id) +{ + static ACPI_TABLE_MADT *madt; + struct acpi_cpu_madt_check check = { + .acpi_id = acpi_id, + }; + ACPI_TABLE_HEADER *hdr; + + if (madt == NULL) { + if (ACPI_FAILURE(AcpiGetTable(ACPI_SIG_MADT, 1, &hdr))) + return (false); + madt = (ACPI_TABLE_MADT *)hdr; + /* Retain the table reference for subsequent processor probes. */ + } + + acpi_walk_subtables(madt + 1, + (char *)madt + madt->Header.Length, acpi_cpu_madt_handler, &check); + return (check.enabled); +} + static struct resource_list * acpi_cpu_get_rlist(device_t dev, device_t child) {