From nobody Tue Apr 16 02:34:39 2024 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 4VJSmb4XXLz5Hb3p; Tue, 16 Apr 2024 02:34:39 +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 4VJSmb3Bhbz4HRS; Tue, 16 Apr 2024 02:34:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1713234879; 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=5JO6XmnnvJKg0UiapjFDpn8IR2JpYowwQLDU8c4VqtQ=; b=ltf00h1pN+kFRFat/dX+CQQk+puMvRleE9p/zs/zPBVlrzL5YRLZexvWG5tuM6qjSRXL3c DR97FkoJR7dkzE36RH3TYRUkmuSKrdy7WYSno7std+iRErTgGNDwCemIRGm7Q/8TRxsznP //0py3MOoU2oyjnHVq8IN1CMNvBekqt5yJzynCu8ofaI2LjJS0yJvEHbUlyOsPoGi5qigv VMkYWrhyMZkT7gyb/zxYqUw4JTG/GuKMc6bd+F4pzXeWjPKlvy6RIRIbJ352dNdgv+IavY WxQcRt4eUgfKCHgMI+6iqDpFZpTg7PyzvxutEA8YJfgzNX+Ulnk1z3acEX36Dg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1713234879; a=rsa-sha256; cv=none; b=sEepDOcQHE0xbv1OpKqGTszjd5it6a5zT7zdZ2iCVIPMpFAw/mV1WHdByOGyoubzpZxrqF J8A7Z1eVtQN1GlACftUgTL45YkfK9A8b/ezwxfzcyLkll2mlcwDhMc0/Lns0Elp8hVHMGc ASn5GCsMDkRkESTZXyKQPAAgLqG/RhSCsMDZm97Tsq++S9Y812wFomWurh5GvH51czKPvb b3EDQanMqxqZFtA0gJW3zHJXqRk4R12bpUHInAReD3h9MyltVND12syKmkgxgDypFy2sZg zz5H8gDyDdmN2YRwzR+2CgEVRG4nwhQKfZG4U0PKPYycqejKE9ogwNud8Ry+/w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1713234879; 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=5JO6XmnnvJKg0UiapjFDpn8IR2JpYowwQLDU8c4VqtQ=; b=CxWd9/G7qd2Xu8rVrZv7e5FaEl8/Z+42yQ8ij8TjHMcX1HUmV6EuAPy54utL1PkE310m0J LHBzgvp8GXrtH37KCT4S0xteZyGbmLmFPE/cwgmD9DxSu1MK4vEd/gNyFdLHDBDqshZSts g9woKdwNNRHhcpvyXvSb5FoZdW11qjitZLtOQS0rEIMM6hCINoQ8tsL82ahp8jYeZIPpCf MBBzSNE5sVuDkK+WkMU9X2w4T0Oq2JKU272Z8e021px3jQPN/Hj8wgVZPVPZuDB70JaFad 77MoucSmpFBdjKUk95KPvL5tJngSHhckoROV1yZ+pIVmCP17vcd1TDk6/bH2sg== 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 4VJSmb2pSjzPZb; Tue, 16 Apr 2024 02:34:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.17.1/8.17.1) with ESMTP id 43G2YdJs037397; Tue, 16 Apr 2024 02:34:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.17.1/8.17.1/Submit) id 43G2YdwH037394; Tue, 16 Apr 2024 02:34:39 GMT (envelope-from git) Date: Tue, 16 Apr 2024 02:34:39 GMT Message-Id: <202404160234.43G2YdwH037394@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: 16c09de80135 - stable/14 - loader: improve lua ACPI detection and handling 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/stable/14 X-Git-Reftype: branch X-Git-Commit: 16c09de801353a3e88addd9c43966fc8e01b2822 Auto-Submitted: auto-generated The branch stable/14 has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=16c09de801353a3e88addd9c43966fc8e01b2822 commit 16c09de801353a3e88addd9c43966fc8e01b2822 Author: R. Christian McDonald AuthorDate: 2023-11-20 17:13:08 +0000 Commit: Warner Losh CommitDate: 2024-04-16 02:32:04 +0000 loader: improve lua ACPI detection and handling This is a follow-up patch to https://reviews.freebsd.org/D42459 that modifies the loader lua to use the correct loader variables for determining ACPI availability. This also fixes a bug where ACPI can be inadvertently disabled when setting System Defaults at the loader menu. Reviewed by: imp, kevans Approved by: kp Sponsored by: Rubicon Communications, LLC ("Netgate") Differential Revision: https://reviews.freebsd.org/D42483 (cherry picked from commit e0f3dc82727f236b0bea495d8a4d6e6dc630854d) --- stand/lua/core.lua | 39 +++++++++++++++------------------------ stand/lua/core.lua.8 | 22 +++++++++------------- stand/lua/menu.lua | 2 +- 3 files changed, 25 insertions(+), 38 deletions(-) diff --git a/stand/lua/core.lua b/stand/lua/core.lua index 747f8c1f0fcf..3bbdca3de01e 100644 --- a/stand/lua/core.lua +++ b/stand/lua/core.lua @@ -32,6 +32,7 @@ local hook = require("hook") local core = {} +local default_acpi = false local default_safe_mode = false local default_single_user = false local default_verbose = false @@ -46,20 +47,14 @@ local function composeLoaderCmd(cmd_name, argstr) end local function recordDefaults() - -- On i386, hint.acpi.0.rsdp will be set before we're loaded. On !i386, - -- it will generally be set upon execution of the kernel. Because of - -- this, we can't (or don't really want to) detect/disable ACPI on !i386 - -- reliably. Just set it enabled if we detect it and leave well enough - -- alone if we don't. - local boot_acpi = core.isSystem386() and core.getACPIPresent(false) local boot_single = loader.getenv("boot_single") or "no" local boot_verbose = loader.getenv("boot_verbose") or "no" + + default_acpi = core.getACPI() default_single_user = boot_single:lower() ~= "no" default_verbose = boot_verbose:lower() ~= "no" - if boot_acpi then - core.setACPI(true) - end + core.setACPI(default_acpi) core.setSingleUser(default_single_user) core.setVerbose(default_verbose) end @@ -137,18 +132,18 @@ function core.setSingleUser(single_user) core.su = single_user end -function core.getACPIPresent(checking_system_defaults) - local c = loader.getenv("hint.acpi.0.rsdp") +function core.hasACPI() + return loader.getenv("acpi.rsdp") ~= nil +end - if c ~= nil then - if checking_system_defaults then - return true - end - -- Otherwise, respect disabled if it's set - c = loader.getenv("hint.acpi.0.disabled") - return c == nil or tonumber(c) ~= 1 +function core.getACPI() + if not core.hasACPI() then + return false end - return false + + -- Otherwise, respect disabled if it's set + local c = loader.getenv("hint.acpi.0.disabled") + return c == nil or tonumber(c) ~= 1 end function core.setACPI(acpi) @@ -378,7 +373,7 @@ function core.loadEntropy() end function core.setDefaults() - core.setACPI(core.getACPIPresent(true)) + core.setACPI(default_acpi) core.setSafeMode(default_safe_mode) core.setSingleUser(default_single_user) core.setVerbose(default_verbose) @@ -470,10 +465,6 @@ function core.isSerialBoot() return false end -function core.isSystem386() - return loader.machine_arch == "i386" -end - -- Is the menu skipped in the environment in which we've booted? function core.isMenuSkipped() return string.lower(loader.getenv("beastie_disable") or "") == "yes" diff --git a/stand/lua/core.lua.8 b/stand/lua/core.lua.8 index e1752475f942..cb52ae9f1b30 100644 --- a/stand/lua/core.lua.8 +++ b/stand/lua/core.lua.8 @@ -90,7 +90,7 @@ constants. .Ss Exported functions The following functions are exported from .Nm : -.Bl -tag -width core.getACPIPresent -offset indent +.Bl -tag -width core.setSingleUser -offset indent .It Fn core.setVerbose verbose Sets or unsets .Ev boot_verbose . @@ -103,15 +103,14 @@ Sets or unsets If .Fa singleUser is omitted, toggle the current single user setting. -.It Fn core.getACPIPresent checkingSystemDefaults -Check whether ACPI is present. -This will only be accurate for i386-compatible loaders, including non-UEFI -loaders on amd64 systems. -If -.Fa checkingSystemDefaults -is true, ignore the current value of -.Ev hint.acpi.0.disabled . -Otherwise, return true only if ACPI is both present and not disabled. +.It Fn core.getACPI +Return true if ACPI is both present and not explicitly disabled by +.Ev hints.acpi.0.disabled . +.It Fn core.hasACPI +Checks whether ACPI support is present. +This requires the loader to probe the system and set +.Ev acpi.rsdp +early before starting the interpreter. .It Fn core.setACPI acpi Sets or unsets .Ev acpi_load , @@ -209,9 +208,6 @@ This checks .Ev boot_serial , and .Ev boot_multicons . -.It Fn core.isSystem386 -Returns true if this bootloader was compiled as an i386 binary. -This generally applies to i386 loaders as well as non-UEFI loaders on amd64. .It Fn core.deepCopyTable tbl Recursively deep copies .Fa tbl diff --git a/stand/lua/menu.lua b/stand/lua/menu.lua index 7da03ad9e673..4a948acf8241 100644 --- a/stand/lua/menu.lua +++ b/stand/lua/menu.lua @@ -176,7 +176,7 @@ menu.boot_options = { -- acpi { entry_type = core.MENU_ENTRY, - visible = core.isSystem386, + visible = core.hasACPI, name = function() return OnOff(color.highlight("A") .. "CPI :", core.acpi)