From nobody Sun Sep 13 20:48:52 2026 X-Original-To: dev-commits-src-all@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 4hjgP62nzLz6sWjD for ; Sun, 13 Sep 2026 20:48:58 +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 4hjgP60Qjhz4KbX for ; Sun, 13 Sep 2026 20:48:58 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789332538; 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=PCQup7/pzflsF5Fg4UsWq3EjHI1KTNkrbnLeDO2YHoT8Y09b8CFIfn7famrOGPhEYqdq7B Kbfxcp/KCL1ILfaXOsI0Xrcxaq+rHXGE1NoMLFM0vXBHM7+Fc5e5QrZZ7IZrTVhsp0RFq9 vmMEdkh1tbolsJk/rTzyy1s4PUcs9DWI7oozv8lmNxNcYL76NWTk2deMgqP8eh5ZMzPs23 Jzb2smpApBT4Ni6E2TenlugmVxkHP1PiA0G1ms5qSUjzxc4QM0Y6KL8fEWU772yfAeVtpf WVpu5+41AK97yGmEJHf0bTTqaaUJ44k5572UUcS+e9A3pW4dGtwBPHRG9eRjDg== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1789332538; b=xwaxOkxn0tM79H67Xd1oGwe/1//tRBQEKloo8uBmM9ziucynCoRHWzfhm/DAvp18utXMwm uNbCOenXaEuYDKIMQly8sCPYH0JWWYJOUKFFmKxk9rZ5cKr3RMUvSru1Q2IrExx/9SO76l Z01OmZwTWxsdqMozsAVXdN3vhP6VRZaH94Si0oQALNBAHn5INPQRxxZYmErhkNaI4Nxd0K 0GS70ird16u6bcnOSmYApqIuWViMpViNBegPooERreiiZ6+9rPAsmSH8d+7KegJt5tScS8 K63wWooCo6/HL5HCfkZZgW7eAaCXVe2QJYEggUQM/sWA7UwIIP2R06JMz2vMZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789332538; 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=JyDutaBYRMNf/MMUKU8hSMyxJseK1T7Pq6eXijOovoe0RJ9tWVr2ASdIMnfrWZbUVUNjyt GheQKxv2qx16AoJaU6CMX8OJZIWLkuQs5fRoXxxRPRrUqTW8u/24Chw+3EECn7f5XGLPkR +vqqyDdlXhgntV1jAvnq2vMMSTzrPDMVZ/YppWtef/YS1XdtooF9zicPgXJiLdZqjS4lyS slylHFNoEa7/yps06XTPavBcSkkIfLFS1C3Uzw8O7KLSvycfmMTHGQMgcbhod4W5A9A52x inmC3AU+17Y2kULHzoZaH0eCaN4dz7bBMhzpnbb3bKEYxYGRgqfUHNch5C+iOA== 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 4hjgP55vyWzy6p for ; Sun, 13 Sep 2026 20:48:57 +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 all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@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) {