From nobody Tue Jan 24 22:14:05 2023 X-Original-To: dev-commits-src-branches@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 4P1h8G2YdBz3bgmd; Tue, 24 Jan 2023 22:14:06 +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 4P1h8F6rg2z3Kf9; Tue, 24 Jan 2023 22:14:05 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674598446; 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=WsITNTXRDJJ4H783TCyrI+VNjTpk+oPjdHqldvi7n6E=; b=hBE6IKOvQuMvEYRXYnbtxaHNSRehlSFLguPaq/AXw3J593O0Y94eirj5CDMDBaft/Lg96E BPxuXIbzRYO6TOuL6qkcW0STH8ZmyJhBInJ/X+KugFpoAeufKWW8ZLl/OkijNPHOCxyH0q HE13Y+tMVX/uJcVsvHFpZgrjQ08jByp3Pz+8vAoGUrAhaJj6hIs10RWWtXe22RqxdznmyP QxKMytwaRKkXcy2PzV40M9GFaSPZViBLzH+IlhonRnGPfEUcYR7rpLKy5vFhLcyKtR77kj HX1rpQ8CId3MfXZ7uYlaqhFvP+D4gGA2CFam3lgJsxwYwwb5sPVR9YBpNT6u5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674598446; 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=WsITNTXRDJJ4H783TCyrI+VNjTpk+oPjdHqldvi7n6E=; b=nGPHft0sJ35Ls8zARUBSudacHwrv8oahStTRHHfc0XQpoyx4qEvjo8qPkOflxw63QTv1cW 48rlrDBT9GA8WiAKaoux78lDcNiftuC5z4teWDhySGdW/GUnW2MjPjpsyIfsIAqS7r1LnE l/HhdBdB6lh01clqjs5EjpbDSC8/aSO8VHjSpgnPtsvPhS6r9amHNUSRp4QuNTK04c18mt Xv/5ktOWqzmRTb7W9fvs7rRQ/tqOkmhewMOZmysvz9bgCnwOSKUcFRzLT7rCiNQ/td2tSc BlvCIsU3UcZcAEWX7ItlRz1nM37TtaWF+m5HjnsuCj7h8qn6ILTj10bg+T21nA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1674598446; a=rsa-sha256; cv=none; b=FsUId8lrV9cSW8uh9jh8mKG3sSAipSB5uryjhURxHol+pwxUSFnkt/euMenu+Hj2t2HY2G dIVvXpjeFhrbDM5D4geinJArJIqe49hjLA5JRXJg+8ttJWgvCV+AITyLPcfshyPFgbUCRU Skpf2Rl/D0Z0cOkbJQox+MHVKYekPkJ8ONDDLORmGJNjoIzFIp1YvnQH39T7FUIGV7RaWw tx6wZUE9BF2CgQLmFfn7LX3LfI+cBBqpo/bn/GS/iuyNI5Iw1VRamcW0XSgwk7FsC0cefC QQrD76sEns8Z/pFfz8djcR/QC0sc3dMKb2ZseLR6/8R2xi/zqnlp8yU+Da3gCg== 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 4P1h8F5SkfzQW3; Tue, 24 Jan 2023 22:14:05 +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 30OME5Cw089335; Tue, 24 Jan 2023 22:14:05 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30OME5bp089334; Tue, 24 Jan 2023 22:14:05 GMT (envelope-from git) Date: Tue, 24 Jan 2023 22:14:05 GMT Message-Id: <202301242214.30OME5bp089334@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Warner Losh Subject: git: 5cf716225179 - stable/13 - kboot: Need to find the ACPI tables List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@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/stable/13 X-Git-Reftype: branch X-Git-Commit: 5cf7162251797587e031b38f220770d9ba631b19 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=5cf7162251797587e031b38f220770d9ba631b19 commit 5cf7162251797587e031b38f220770d9ba631b19 Author: Warner Losh AuthorDate: 2022-12-09 04:56:06 +0000 Commit: Warner Losh CommitDate: 2023-01-24 21:49:44 +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 (cherry picked from commit 1066a70e149abb383c49a4587de21eebf9b7e1d5) --- 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);