From nobody Wed Oct 02 18:31:06 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 4XJk0B4Pl8z5XvBV; Wed, 02 Oct 2024 18:31: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 "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4XJk0B3HMTz4NfY; Wed, 2 Oct 2024 18:31:06 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1727893866; 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=gZN8YXEGdgqaL5uIiahrSoy2roet6ZH84yLHLNdkyls=; b=hYOdlRXoMa+ZZT3YxUHpCdSMm9YeFZVUF2/zKvO/x3pDN2FbWZUp0rWt0/IFWMCoL52KwX 7H1FwTCIrHXe9iUkg9ldpMI16t0gUfF0NIVueHHoYi084Lkdijbs++sLnOYkgPHbPhPtuz KhaDLejyW4PLMBh0sp2tNImwJnge0T3EZxGcE92SYvS/oxQMkSHXMf1RRIm47rSK0XOKrE 85Z6DE74hckVVGSi0u3eXZ/d4gub9mI2uy/uSl0PhrjHpITjZijEgavCW8FQ4Id7zbiRvh /vZabk/YvJe8EnLU8oK3/rLD2KMU1zajwsz7ts/GIMtYKk81OUqqJl88IJzpgg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1727893866; 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=gZN8YXEGdgqaL5uIiahrSoy2roet6ZH84yLHLNdkyls=; b=Vup1Pg91SNAlsbiBz0GqSBhDH0lmZvut05TDkqROrwYdMNZvlzyyvh9HaEjqsvP2OK3up8 QowOHLW3e4JmaJ64a+82DslZi++AQaokwZ8K+KMk53R0O/DKA5DiBpdkHCpbfnjnNfwv9o Zj5Y8Ak9OaCzjQEPAPIBYwKOT8NdPCpVmR/ZefZpS1OQlHchAo3SOCZ7lL+OivqOwec4I+ BKJkrFd1sFoc158npq5AK6cuLqMdSQY/sjuig+vGvLZyAeKsXTMxqtrh4T/NI26vZDsWc2 mpsZ7MJrPQCPpa6PFl48/IvkqjsQAWOevhHvFb5svJnMEjVxHOkeIUFxWZ78Pw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1727893866; a=rsa-sha256; cv=none; b=O86bFt+mkTECdfovgSu+i2aEdkoFplp+UwqNwN1EedFqhrSlZAKcW37inSaL4KuVsTIXIy lR5DcjrKJwZ+gMkCcEVFI6OtIK9e/Eei561vKk9p+V7DqVMFnV5/8/D3/T6NyKqhgIopvc tNrp9LmBPOquSUdx97HvnqiFY8GtAgf1QiZo/0Z7cjlM+8d/4fLoHmGuJEM3yFYlxGPvbK 3lPnDbdfQTFoYXVriVP3A89Woo91GEO0+pvzp9FIphHmFRMXomnqL3V51V8mqRsfJ3qbRQ XgjfeC3ONhf8YO51PSaMD6UnH3ZMj8VzZY54dodKNIDVIzubkzDNUJIP2XTknA== 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 4XJk0B2cdczHJT; Wed, 2 Oct 2024 18:31:06 +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 492IV6be018864; Wed, 2 Oct 2024 18:31:06 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 492IV6Nw018853; Wed, 2 Oct 2024 18:31:06 GMT (envelope-from git) Date: Wed, 2 Oct 2024 18:31:06 GMT Message-Id: <202410021831.492IV6Nw018853@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: cd8c3af747cc - main - 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/main X-Git-Reftype: branch X-Git-Commit: cd8c3af747cc300c8257c315c7576644e2bb86ff Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=cd8c3af747cc300c8257c315c7576644e2bb86ff commit cd8c3af747cc300c8257c315c7576644e2bb86ff Author: Bartosz Fabianowski AuthorDate: 2024-10-02 18:21:28 +0000 Commit: Warner Losh CommitDate: 2024-10-02 18:30:15 +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 --- 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 aeda34c3acff..35032244af19 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)) {