From nobody Sun Sep 14 04:53:49 2025 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 4cPbR12YM2z67KY6; Sun, 14 Sep 2025 04:53:49 +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 "R12" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4cPbR11YWTz3SCj; Sun, 14 Sep 2025 04:53:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1757825629; 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=O5GzJmquRM/9yQv76Aa09a6AR+PjVl+qRYuNH4V5cMw=; b=XV9UntEQSKcCbTkrtflY5A+WbId21RM5rLqWyf/GVgQNphUJsMDOS/ZCVfKSCbGvPnxnHV 4JKJnFbM8bIbPANN73lzANPmXU9UnJbAeratNC2AlfHOeh0muSDL+xHsGe1B1KjCbsA1an RN3/O69O1Y97g0qPTYCpbt+ez4YeRCuYTUvPA5FLn/QA5eWlFs1hklSmxHa25YI5vQtOxU dbQiKg1/t7LkF3K8O/8QoHTHAQvSmV/Ld35O6VIX+M/ANqzKcSMHPQnUDeQAJtOVOZXhUz kk/tkJ2KL31ZRmkhl3laaWABljwtf/blst9BRMRwfxy44SzYYmf6XlBXrWkEmA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1757825629; 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=O5GzJmquRM/9yQv76Aa09a6AR+PjVl+qRYuNH4V5cMw=; b=V+iR5vGhoj1x4UJH94J/T+lu8AOkXjiU8Mg968M9v4uqMrREDymKx0XVrZed7mdBQlzyDH Pvc7WtR/4XsJZuQTaDiEWrtlZ9ZcHMPpJo1vPwc3tU++/MA546np0+u5FNC4e0QJH1cSmL 4OCUus9LMYNlydeTjaQCX8uAorDx5V9MjA5nA8rN/sM5c1UeS5IthYqjERcgoZ1SZyZDKg +BA6pYwwGEyKPe6NhEH63RmUWEBBelPYiAiRX5fg8Q5oK6ITqLXSQWFVR4vbwsAWvio7cc KHrqU2IJEmvVU8WWFxmFd+o34b6YFVco2spq69uhmybBMDp4bfHeA2+O3rNu6g== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1757825629; a=rsa-sha256; cv=none; b=aesgb/4IL++KLDxuem2DGqmHaT1xyaNBwhGg3RzSeZ6X5AYY1jMwQawec9KgoftvEv10cD dcucRezs2+DRSa1U3Mz3OFbnkYEqo4rqKlkIOwhk+nt9NdP6pgl/NVIQ/PvW27YcXigm9A RAVbcXa4nzJMDdvhQO7k/yxEMWQNvdGl+ktPlz+l6QXUuzISo3WC+j55ecRi6LmZP5/vua DpA6W1WHQOKpFIe6G10Z4ZptIVbdBQT6XMDVULgpFrnvGj5P9WD5L7oAmDV8Gd3f2hmFJI I5jl16XZJxfz6HkBs/TyB8BmtEEhN4hXUJL85dc6ed4GLtJy8R1AkNhsU+XQvA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4cPbR1135Gz1959; Sun, 14 Sep 2025 04:53:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 58E4rnAb036345; Sun, 14 Sep 2025 04:53:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 58E4rnbN036342; Sun, 14 Sep 2025 04:53:49 GMT (envelope-from git) Date: Sun, 14 Sep 2025 04:53:49 GMT Message-Id: <202509140453.58E4rnbN036342@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: c8b87aa10d68 - main - loader: Move ACPI RSDP detection 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 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: c8b87aa10d684111ec4f82b31a262850a28e5eb2 Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=c8b87aa10d684111ec4f82b31a262850a28e5eb2 commit c8b87aa10d684111ec4f82b31a262850a28e5eb2 Author: kpowkitty AuthorDate: 2025-08-31 22:30:27 +0000 Commit: Warner Losh CommitDate: 2025-09-14 02:24:19 +0000 loader: Move ACPI RSDP detection Reviewed by: imp Pull Request: https://github.com/freebsd/freebsd-src/pull/1843 --- stand/efi/acpica/acpi_detect.c | 69 ++++++++++++++++++++++++++++++++++ stand/efi/acpica/include/acpi_detect.h | 41 ++++++++++++++++++++ stand/efi/loader/Makefile | 4 ++ stand/efi/loader/main.c | 42 +-------------------- 4 files changed, 116 insertions(+), 40 deletions(-) diff --git a/stand/efi/acpica/acpi_detect.c b/stand/efi/acpica/acpi_detect.c new file mode 100644 index 000000000000..1f15a882ff9d --- /dev/null +++ b/stand/efi/acpica/acpi_detect.c @@ -0,0 +1,69 @@ +/*- + * Copyright (c) 2014 Ed Maste + * Copyright (c) 2025 Kayla Powell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +#include +#include +#include "acpi_detect.h" + +/* For ACPI rsdp discovery. */ +EFI_GUID acpi = ACPI_TABLE_GUID; +EFI_GUID acpi20 = ACPI_20_TABLE_GUID; +ACPI_TABLE_RSDP *rsdp; + +void +acpi_detect(void) +{ + char buf[24]; + int revision; + + feature_enable(FEATURE_EARLY_ACPI); + if ((rsdp = efi_get_table(&acpi20)) == NULL) + if ((rsdp = efi_get_table(&acpi)) == NULL) + return; + + sprintf(buf, "0x%016"PRIxPTR, (uintptr_t)rsdp); + setenv("acpi.rsdp", buf, 1); + revision = rsdp->Revision; + if (revision == 0) + revision = 1; + sprintf(buf, "%d", revision); + setenv("acpi.revision", buf, 1); + strncpy(buf, rsdp->OemId, sizeof(rsdp->OemId)); + buf[sizeof(rsdp->OemId)] = '\0'; + setenv("acpi.oem", buf, 1); + sprintf(buf, "0x%016x", rsdp->RsdtPhysicalAddress); + setenv("acpi.rsdt", buf, 1); + if (revision >= 2) { + /* XXX extended checksum? */ + sprintf(buf, "0x%016llx", + (unsigned long long)rsdp->XsdtPhysicalAddress); + setenv("acpi.xsdt", buf, 1); + sprintf(buf, "%d", rsdp->Length); + setenv("acpi.xsdt_length", buf, 1); + } +} diff --git a/stand/efi/acpica/include/acpi_detect.h b/stand/efi/acpica/include/acpi_detect.h new file mode 100644 index 000000000000..246e790be9fb --- /dev/null +++ b/stand/efi/acpica/include/acpi_detect.h @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2025 Kayla Powell + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef ACPI_DETECT_H +#define ACPI_DETECT_H + +#include +#include + +struct ACPI_TABLE_RSDP; // forward declaration + +extern EFI_GUID acpi; +extern EFI_GUID acpi20; +extern ACPI_TABLE_RSDP *rsdp; + +void acpi_detect(void); + +#endif diff --git a/stand/efi/loader/Makefile b/stand/efi/loader/Makefile index b30c563d4331..b4520b957b74 100644 --- a/stand/efi/loader/Makefile +++ b/stand/efi/loader/Makefile @@ -30,6 +30,10 @@ SRCS= autoload.c \ gfx_fb.c \ 8x16.c +SRCS+= acpi_detect.c +.PATH: ${EFISRC}/acpica +CFLAGS+= -I${EFISRC}/acpica/include + CFLAGS+= -I${.CURDIR}/../loader .if ${MK_LOADER_ZFS} != "no" CFLAGS+= -I${ZFSSRC} diff --git a/stand/efi/loader/main.c b/stand/efi/loader/main.c index 304b2e48272c..2e51f15f0b5f 100644 --- a/stand/efi/loader/main.c +++ b/stand/efi/loader/main.c @@ -69,6 +69,8 @@ #include "actypes.h" #include "actbl.h" +#include + #include "loader_efi.h" struct arch_switch archsw = { /* MI/MD interface boundary */ @@ -83,8 +85,6 @@ struct arch_switch archsw = { /* MI/MD interface boundary */ .arch_zfs_probe = efi_zfs_probe, }; -EFI_GUID acpi = ACPI_TABLE_GUID; -EFI_GUID acpi20 = ACPI_20_TABLE_GUID; EFI_GUID devid = DEVICE_PATH_PROTOCOL; EFI_GUID imgid = LOADED_IMAGE_PROTOCOL; EFI_GUID mps = MPS_TABLE_GUID; @@ -120,11 +120,6 @@ UINT16 boot_current; */ EFI_LOADED_IMAGE *boot_img; -/* - * RSDP base table. - */ -ACPI_TABLE_RSDP *rsdp; - static bool has_keyboard(void) { @@ -1129,39 +1124,6 @@ ptov(uintptr_t x) return ((caddr_t)x); } -static void -acpi_detect(void) -{ - char buf[24]; - int revision; - - feature_enable(FEATURE_EARLY_ACPI); - if ((rsdp = efi_get_table(&acpi20)) == NULL) - if ((rsdp = efi_get_table(&acpi)) == NULL) - return; - - sprintf(buf, "0x%016"PRIxPTR, (uintptr_t)rsdp); - setenv("acpi.rsdp", buf, 1); - revision = rsdp->Revision; - if (revision == 0) - revision = 1; - sprintf(buf, "%d", revision); - setenv("acpi.revision", buf, 1); - strncpy(buf, rsdp->OemId, sizeof(rsdp->OemId)); - buf[sizeof(rsdp->OemId)] = '\0'; - setenv("acpi.oem", buf, 1); - sprintf(buf, "0x%016x", rsdp->RsdtPhysicalAddress); - setenv("acpi.rsdt", buf, 1); - if (revision >= 2) { - /* XXX extended checksum? */ - sprintf(buf, "0x%016llx", - (unsigned long long)rsdp->XsdtPhysicalAddress); - setenv("acpi.xsdt", buf, 1); - sprintf(buf, "%d", rsdp->Length); - setenv("acpi.xsdt_length", buf, 1); - } -} - static void efi_smbios_detect(void) {