From nobody Fri Dec 9 05:02:29 2022 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 4NSzR95rmbz4jV3M; Fri, 9 Dec 2022 05:02:29 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4NSzR95CZwz4PCq; Fri, 9 Dec 2022 05:02:29 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1670562149; 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=LDsEZZkpV3KaOxO9Ho/vwpGCVju/SfodA53b3eRfrHg=; b=Q6v6SCYBVcV2xsXNCd6urWMHC/kKSn3QbaJ4Jq0Iy3KojZG2UQLfoAy2Eb1Bk+eFuWZ6wo Kf5d6O75hYmtqUUGOCnSpG9/pVVaK5xoiPAEffWP38afFL5KhxEo+gBcnvCb2mONU0WQR7 pJD25Dr5IeYww/2f6JOEdccUVQJS+dQ3zfG+jmH7qKb6pzYTaA4OefR/sOvXYiNRf/T6Bm BkxSTotdkyA7AwTRtdsM5NI2yGTnUn2cYLtwq5COTQN9bn/A/X2Di/G40dAckFlvJxn9Vw +c9KE4XVDeGRTYhKpoAz93Tg+xis9/+aGNUnN5Y8wdubp232AOw8Pf/ctSUZow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1670562149; 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=LDsEZZkpV3KaOxO9Ho/vwpGCVju/SfodA53b3eRfrHg=; b=w7QyWRrnw94/U8E2cOeBg/n9r0hLgibIXGkA+0Q3uM3234712qkWfaoDn2OVXHipjWkdHl RjeSER8t0/uXALAXjJaSs9lcozeFa8ltcId31svQEK2pBDybLnc1AzVJYbcf0yw4ocdrHz qs5VrMCfSHm2dY8Uy17pQtXxUTm2H5g9GuordVQVl2FvCpzqLe5OT7k+JSt5H8xTRt2AVo bPb+la4tZO7pN+7XGLCn6QvamJ5GCyRIH/ScpfIabvmaGU5NCRlt7UlGz/V1+HqtZX3IWq 9XSHtMozKTPM63/jvaDxA/fHwdwA1yTE8S4xHM3/Rxn+90/62YOkQgdBvvEdlg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1670562149; a=rsa-sha256; cv=none; b=rCzlHa1bR3968PKLr5yWcQljOltWNt/Zf3VLOmjC/GLAuCa8FJdv8Kp5Jd0AwybLRQr9NJ GaGrZ8cowoTfu7gTfim45dtLTuAHFNjRmrNEbRTj6RxZ4rw+IzHBolxMRZlVE24sAg8Rax NOp1LZRhsz42PGxm1+fQKgVXhooEq43mzLFHZwO1TPUSBjPJqh2ZM1W8byGbjsQeKWrseg b2bFH/ljsM2YdvftRvJxHhs9Jz34r6YQZIgR2sWWql043crE9xsU5wIf8Ou3ZUQPWRg7zr TN8RP0ax+J0Voc7WAXrqP0h1oL/4ihNgewErWiQTcpgjrbOF9jwG/UbHRp9WmQ== 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 4NSzR94HL2zP0r; Fri, 9 Dec 2022 05:02:29 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 2B952ThC073333; Fri, 9 Dec 2022 05:02:29 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 2B952T12073332; Fri, 9 Dec 2022 05:02:29 GMT (envelope-from git) Date: Fri, 9 Dec 2022 05:02:29 GMT Message-Id: <202212090502.2B952T12073332@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: 1066a70e149a - main - kboot: Need to find the ACPI tables 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: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: 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: 1066a70e149abb383c49a4587de21eebf9b7e1d5 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=1066a70e149abb383c49a4587de21eebf9b7e1d5 commit 1066a70e149abb383c49a4587de21eebf9b7e1d5 Author: Warner Losh AuthorDate: 2022-12-09 04:56:06 +0000 Commit: Warner Losh CommitDate: 2022-12-09 04:57:31 +0000 kboot: Need to find the ACPI tables We need to pass the ACPI tables to the laucnhed kernel (at least for x86 and aarch64). Find it using the Linux standard way. Sponsored by: Netflix --- stand/kboot/kboot.h | 3 +++ stand/kboot/main.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/stand/kboot/kboot.h b/stand/kboot/kboot.h index e3d169ee5ac0..72be7299995b 100644 --- a/stand/kboot/kboot.h +++ b/stand/kboot/kboot.h @@ -9,6 +9,9 @@ #define DEVT_HOSTDISK 1234 +bool has_acpi(void); +vm_offset_t acpi_rsdp(void); + void do_init(void); extern const char *hostfs_root; diff --git a/stand/kboot/main.c b/stand/kboot/main.c index 2bbe14d79253..88657d908b34 100644 --- a/stand/kboot/main.c +++ b/stand/kboot/main.c @@ -102,6 +102,50 @@ parse_args(int argc, const char **argv) return (howto); } +static vm_offset_t rsdp; + +static vm_offset_t +kboot_rsdp_from_efi(void) +{ + char buffer[512 + 1]; + char *walker, *ep; + + if (!file2str("/sys/firmware/efi/systab", buffer, sizeof(buffer))) + return (0); /* Not an EFI system */ + ep = buffer + strlen(buffer); + walker = buffer; + while (walker < ep) { + if (strncmp("ACPI20=", walker, 7) == 0) + return((vm_offset_t)strtoull(walker + 7, NULL, 0)); + if (strncmp("ACPI=", walker, 5) == 0) + return((vm_offset_t)strtoull(walker + 5, NULL, 0)); + walker += strcspn(walker, "\n"); + } + return (0); +} + +static void +find_acpi() +{ + rsdp = kboot_rsdp_from_efi(); +#if 0 /* maybe for amd64 */ + if (rsdp == 0) + rsdp = find_rsdp_arch(); +#endif +} + +vm_offset_t +acpi_rsdp() +{ + return (rsdp); +} + +bool +has_acpi() +{ + return rsdp != 0; +} + int main(int argc, const char **argv) { @@ -146,6 +190,11 @@ main(int argc, const char **argv) setenv("LINES", "24", 1); setenv("usefdt", "1", 1); + /* + * Find acpi, if it exists + */ + find_acpi(); + interact(); /* doesn't return */ return (0);