From nobody Sat Dec 07 00:17:20 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 4Y4pbh6rqYz5g8Kj; Sat, 07 Dec 2024 00:17:20 +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 "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Y4pbh67D0z4MTt; Sat, 7 Dec 2024 00:17:20 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1733530640; 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=OX13dMkKCefiAiMYnmNDOUNzjnF7kEnLcpNdJwReus0=; b=B8t4NbBEX/0duWE3swI/JFuWXaQwHFIVWyfsF7PenujrtM1KqgwyeRd+AU8AFkojsjQa+a qqi61CQdFcAbIFZX9WLh+dfO2Ut0jKLoQhLREniPT/CCdcdjhFMlXYsbR1wVsv7o8p1OIf Yxh9WNrACzUj/lYNqlde4G4bkh5tquFAK/Zzw7o+f4KjUiEn/Xb0H6MFVMNxxpV74AwweU g9+CKt6GqkgdQ+Lq3fswp+8GCovTjclFGr8DFLm0PKgVhi9tvFpoJn0jS0FzZEBY9Ly79T cC2GFyii/FJAIMnhlk11OLtS1rc0IacsSLsISFHgKgGy8PgUd4Ma5oMqIP5T2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1733530640; 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=OX13dMkKCefiAiMYnmNDOUNzjnF7kEnLcpNdJwReus0=; b=XH3QTwSc7ee93vejqiQof56JotWczW/MKexsJYmrJ3kx+oruuV9ViEJrv2JxpTlafyLf0z LqVA8mGKPi6eUjoxhhmnrYgHIgtZ11ClCrlb0ZYWdzM4P5wbbn+TbkFu65DuF7CySXTe3v Qr7LkO4YKx5vAi660oli8ApOhKRmtl50DryhgxZ0xnZ+EdkbhpBMJfoG7dfJq0ELMq0T2r ESkQC1yScHGUTPAY8IQ1aUKi5Nyw2nfvkhYLzC8S38QX2oH+8E9dh/Xxxvilfu3W8g+OKt fotL841Ivil8+yZ1RXyXuoxyLTeWS/KQ81nsMEyY73u91tB3FifwLVIHeWFG8w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1733530640; a=rsa-sha256; cv=none; b=qLGBYJvpvnnc2ORpGxh55j8UMHo8gum3gtR17ALsrNB3lbPrMKVKHUUeyZu4nsLbKF4OZV ohynvp2vaap7qbaKOgAZH3QiUPMXt2I/XW7sBUTglo803r40UhwFLlQHm4/cEEk022Azrx yOpR2uQk9/V9eIiJyr3RcAqsK+UOySoK+JxAXfi9aIV5VXG2Ar37lVFCQP0WiscXiTIFob Vz15zzH3WGjouHuVxdtryAGC9FzYoYNrKdqZ5+xc5usB2sKleRLHrN8I/8fiL2fv4LOsAD AQ0RO5h2Sg9wXyR/Q0W4OPItbSqpAn28O/tDa+7k+j2NC7E9fx546+Vel4zKJQ== 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 4Y4pbh5Xgbz10N0; Sat, 7 Dec 2024 00:17:20 +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 4B70HKD5076552; Sat, 7 Dec 2024 00:17:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 4B70HKPP076549; Sat, 7 Dec 2024 00:17:20 GMT (envelope-from git) Date: Sat, 7 Dec 2024 00:17:20 GMT Message-Id: <202412070017.4B70HKPP076549@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: 3c59c4453f0e - stable/14 - ACPI: Treat all 20-element _BIX entires as revision 0 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: 3c59c4453f0efbb606da9bf6a879f53ae980a645 Auto-Submitted: auto-generated The branch stable/14 has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=3c59c4453f0efbb606da9bf6a879f53ae980a645 commit 3c59c4453f0efbb606da9bf6a879f53ae980a645 Author: Bartosz Fabianowski AuthorDate: 2024-10-02 18:21:28 +0000 Commit: Warner Losh CommitDate: 2024-12-07 00:11:27 +0000 ACPI: Treat all 20-element _BIX entires as revision 0 Some Fujitsu Lifebooks return an invalid _BIX object. The first element of _BIX is a revision number, which indicates what elements will follow: * ACPI 4.0 defined _BIX revision 0 with 20 elements. * ACPI 6.0 introduced _BIX revision 1 with 21 elements. The problem is that the offending Lifebooks have the a non-zero _BIX revision, but provide 20 fields only. The ACPICA parser chokes on this [1], but that seems to be inconsequential. More importantly, our own battery info handling code also verifies that for revision > 0, there are at least 21 fields - and refuses to process the invalid _BIX. One workaround would be to introduce special case / quirk handling for Fujitsu Lifebooks. A better one is to relax the requirements check: If there are only 20 elements, treat the _BIX as revision 0, no matter what revision number was provided by the device. Linux doesn't run into this problem by the way because it only supports the 20 fields defined in the ACPI 4.0 spec [3]. It never looks at the revision number or the 21st field added in ACPI 6.0. [1] https://cgit.freebsd.org/src/tree/sys/contrib/dev/acpica/components/namespace/nsprepkg.c#n815 [2] https://cgit.freebsd.org/src/tree/sys/dev/acpica/acpi_cmbat.c#n371 [3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/acpi/battery.c#n418 PR: 252030 Reviewed by: imp MFC After: 2 weeks (cherry picked from commit cd8c3af747cc300c8257c315c7576644e2bb86ff) --- sys/dev/acpica/acpi_cmbat.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/sys/dev/acpica/acpi_cmbat.c b/sys/dev/acpica/acpi_cmbat.c index 8c08868456d7..e85967aed9c9 100644 --- a/sys/dev/acpica/acpi_cmbat.c +++ b/sys/dev/acpica/acpi_cmbat.c @@ -398,8 +398,17 @@ acpi_cmbat_get_bix(void *arg) sc->bix.rev != ACPI_BIX_REV_1) ACPI_BIX_REV_MISMATCH_ERR(sc->bix.rev, ACPI_BIX_REV_1); } else if (ACPI_PKG_VALID_EQ(res, 20)) {/* ACPI 4.0 _BIX */ - if (sc->bix.rev != ACPI_BIX_REV_0) - ACPI_BIX_REV_MISMATCH_ERR(sc->bix.rev, ACPI_BIX_REV_0); + /* + * Some models claim to be rev.1, but have a _BIX with only 20 + * members. Be lenient and treat this as a valid rev.0 _BIX. + */ + if (sc->bix.rev != ACPI_BIX_REV_0) { + ACPI_VPRINT(dev, acpi_device_get_parent_softc(dev), + "_BIX containing too few objects for revision %u. " + "Treating as revision %u instead.\n", + sc->bix.rev, ACPI_BIX_REV_0); + sc->bix.rev = ACPI_BIX_REV_0; + } } else if (ACPI_PKG_VALID(res, 22)) { /* _BIX with 22 or more members. */ if (ACPI_BIX_REV_MIN_CHECK(sc->bix.rev, ACPI_BIX_REV_1 + 1)) {