linux-acpi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Hans de Goede <hdegoede@redhat.com>
To: Mika Westerberg <mika.westerberg@linux.intel.com>,
	Mario Limonciello <mario.limonciello@outlook.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>,
	"Rafael J . Wysocki" <rjw@rjwysocki.net>,
	linux-acpi <linux-acpi@vger.kernel.org>
Subject: Re: Some SSDT tables are not loading with kernel >= 5.12
Date: Tue, 8 Jun 2021 11:50:15 +0200	[thread overview]
Message-ID: <0f733402-ae3b-b4e7-13c4-e6161f9c7e81@redhat.com> (raw)
In-Reply-To: <209a230c-a7a6-7a8e-0515-97fb534d7401@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 5602 bytes --]

Hi,

On 6/7/21 9:18 PM, Hans de Goede wrote:
> Hi,
> 
> On 6/7/21 6:08 PM, Mika Westerberg wrote:
>> Hi,
>>
>> Tried now on ADL-P and TGL systems and the _OSC still works properly.
>>
>> Thanks Hans for fixing!
>>
>> Feel free to add my Tested-by.
> 
> Thank you for testing, unfortunately so far from the comments here:
> 
> https://bugzilla.kernel.org/show_bug.cgi?id=213023
> 
> it seems that my patch does not help resolve the issues caused
> by commit 719e1f561afb ("ACPI: Execute platform _OSC also with query
> bit clear"), where as reverting that commit does resolve them :|
> 
> Does anyone have any other ideas how to fix this ?

The reporter who has done the bisect has commented out the new/second
_OSC call and that fixes things for them. So I've written a new fix
(attached), note just as before this is untested ATM.

Mika, if you can test this one (it replaces the previous one)
on machines with native USB4 support to check those don't regress then
that would be great.

I've asked the various reporters from the 2 bugzilla's for this to also
test this new patch. I'll let you know how that goes.

Regards,

Hans




>> On Mon, Jun 07, 2021 at 01:01:59PM +0000, Mario Limonciello wrote:
>>>    Mika,
>>>
>>>    Can you have a try and make sure this modification still works properly
>>>    on the series in the hardware we originally did it for?
>>>      __________________________________________________________________
>>>
>>>    From: Rafael J. Wysocki <rafael@kernel.org>
>>>    Sent: Monday, June 7, 2021 6:13:21 AM
>>>    To: Hans de Goede <hdegoede@redhat.com>
>>>    Cc: Rafael J . Wysocki <rjw@rjwysocki.net>; Mario Limonciello
>>>    <mario.limonciello@outlook.com>; linux-acpi
>>>    <linux-acpi@vger.kernel.org>
>>>    Subject: Re: Some SSDT tables are not loading with kernel >= 5.12
>>>
>>>    On Mon, Jun 7, 2021 at 12:05 PM Hans de Goede <hdegoede@redhat.com>
>>>    wrote:
>>>    >
>>>    > HI,
>>>    >
>>>    > On 6/7/21 11:43 AM, Hans de Goede wrote:
>>>    > > Hi,
>>>    > >
>>>    > > On 6/3/21 7:26 PM, Hans de Goede wrote:
>>>    > >> Hi Rafael,
>>>    > >>
>>>    > >> I've been helping some users with trying to get to the bottom of
>>>    some
>>>    > >> new ACPI errors with kernel 5.12, see:
>>>    > >>
>>>    > >> [1]https://bugzilla.kernel.org/show_bug.cgi?id=213023
>>>    > >>
>>>    > >> After looking at dmesg output; and after editing the dmesg output
>>>    > >> a bit so that I could do diff -u on it, the following stands out:
>>>    > >>
>>>    > >> --- dmesg_5.10.38-1-lts      2021-06-03 16:29:41.372922210 +0200
>>>    > >> +++ dmesg_linux-5.12.5-arch1-1       2021-06-03 16:30:01.013031634
>>>    +0200
>>>    > >> @@ -92,7 +92,7 @@
>>>    > >>  ACPI: IRQ9 used by override.
>>>    > >>  Using ACPI (MADT) for SMP configuration information
>>>    > >>  ACPI: HPET id: 0x8086a201 base: 0xfed00000
>>>    > >> -ACPI: Core revision 20200925
>>>    > >> +ACPI: Core revision 20210105
>>>    > >>  PM: Registering ACPI NVS region [mem 0x7156c000-0x7156cfff] (4096
>>>    bytes)
>>>    > >>  PM: Registering ACPI NVS region [mem 0x8a88f000-0x8af7efff]
>>>    (7274496 bytes)
>>>    > >>  ACPI FADT declares the system doesn't support PCIe ASPM, so
>>>    disable it
>>>    > >> @@ -113,10 +113,6 @@
>>>    > >>  ACPI: Dynamic OEM Table Load:
>>>    > >>  ACPI: SSDT 0xFFFF... 0003FF (v02 PmRef  Cpu0Cst  00003001 INTL
>>>    20160527)
>>>    > >>  ACPI: Dynamic OEM Table Load:
>>>    > >> -ACPI: SSDT 0xFFFF... 0000BA (v02 PmRef  Cpu0Hwp  00003000 INTL
>>>    20160527)
>>>    > >> -ACPI: Dynamic OEM Table Load:
>>>    > >> -ACPI: SSDT 0xFFFF... 000628 (v02 PmRef  HwpLvt   00003000 INTL
>>>    20160527)
>>>    > >> -ACPI: Dynamic OEM Table Load:
>>>    > >>  ACPI: SSDT 0xFFFF... 000D14 (v02 PmRef  ApIst    00003000 INTL
>>>    20160527)
>>>    > >>  ACPI: Dynamic OEM Table Load:
>>>    > >>  ACPI: SSDT 0xFFFF... 000317 (v02 PmRef  ApHwp    00003000 INTL
>>>    20160527)
>>>    > >>
>>>    > >> Note how for some reason the kernel is no longer loading the
>>>    Cpu0Hwp and
>>>    > >> HwpLvt SSDT-s ?
>>>    > >>
>>>    > >> Do you have any ideas what might be causing this ?
>>>    > >
>>>    > > Good news, a very similar bug is being tracked here:
>>>    > >
>>>    > > [2]https://bugzilla.redhat.com/show_bug.cgi?id=1963717
>>>    > >
>>>    > > And one of the reporters there has done a git bisect and has found
>>>    the commit which is causing the problem for them:
>>>    > >
>>>    > > """
>>>    > > git-bisect points to 719e1f561afbe020ed175825a9bd25ed62ed1697 :
>>>    > > "ACPI: Execute platform _OSC also with query bit clear".
>>>    > >
>>>    > > Tested 5.12.9 kernel with the commit reverted, and confirmed that
>>>    the error
>>>    > > messages are gone. (I had to revert
>>>    > > 5a6a2c0f0f43676df27632d657a3f18b151a7ef8 for dependency too.)
>>>    > >
>>>    > > It also brings back the /sys/devices/system/cpu/cpu0/acpi_cppc
>>>    which is absent
>>>    > > in the stable 5.12.x
>>>    > >
>>>    > > Hope this helps
>>>    > > """
>>>    >
>>>    > I've taken a quick look at commit 719e1f561afb ("ACPI: Execute
>>>    platform _OSC also with query bit clear") and I think I may have found
>>>    the problem.
>>>    >
>>>    > I've attached a patch which I think may fix this (and I've asked the
>>>    reporters of the bugs to test this).
>>>    Thank you, the patch looks reasonable to me.
>>>    It looks like commit 719e1f561afb went a bit too far.
>>>
>>> References
>>>
>>>    1. https://bugzilla.kernel.org/show_bug.cgi?id=213023
>>>    2. https://bugzilla.redhat.com/show_bug.cgi?id=1963717
>>

[-- Attachment #2: 0001-ACPI-Only-run-_OSC-without-the-query-flag-on-machine.patch --]
[-- Type: text/x-patch, Size: 3740 bytes --]

From b758a6c48d418a89f8d2bc08c5daa778b162b5b3 Mon Sep 17 00:00:00 2001
From: Hans de Goede <hdegoede@redhat.com>
Date: Mon, 7 Jun 2021 11:55:57 +0200
Subject: [PATCH] ACPI: Only run _OSC without the query flag on machines with
 native USB4 support

Commit 719e1f561afb ("ACPI: Execute platform _OSC also with query bit
clear") makes acpi_bus_osc_negotiate_platform_control() not only query
the platforms capabilities but it also commits the result back to the
firmware to report which capabilities are supported by the OS back to the
firmware.

This reporting back of the OS supported capabilities is necessary for
USB4 support, but it is causing problems on some other devices, causing
some SSDTs to no longer load on these devices.

Make the reporting back of the capabilities (the _OSC call with the
query flag cleared) conditional on the queried capabilities including
native USB4 support, skipping it when there is no native USB4 support
to fix the regressions caused by doing this on some machines without
native USB4 support.

BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=213023
BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1963717
Fixes: 719e1f561afb ("ACPI: Execute platform _OSC also with query bit clear")
Cc: Mario Limonciello <mario.limonciello@outlook.com>
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
---
 drivers/acpi/bus.c | 41 +++++++++++++++++++----------------------
 1 file changed, 19 insertions(+), 22 deletions(-)

diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index be7da23fad76..9a56a6f653cc 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -286,7 +286,7 @@ EXPORT_SYMBOL_GPL(osc_sb_native_usb4_support_confirmed);
 static u8 sb_uuid_str[] = "0811B06E-4A27-44F9-8D60-3CBBC22E7B48";
 static void acpi_bus_osc_negotiate_platform_control(void)
 {
-	u32 capbuf[2], *capbuf_ret;
+	u32 capbuf[2], caps = 0;
 	struct acpi_osc_context context = {
 		.uuid_str = sb_uuid_str,
 		.rev = 1,
@@ -330,34 +330,31 @@ static void acpi_bus_osc_negotiate_platform_control(void)
 	if (ACPI_FAILURE(acpi_run_osc(handle, &context)))
 		return;
 
-	capbuf_ret = context.ret.pointer;
-	if (context.ret.length <= OSC_SUPPORT_DWORD) {
-		kfree(context.ret.pointer);
-		return;
+	if (context.ret.length > OSC_SUPPORT_DWORD) {
+		u32 *capbuf_ret = context.ret.pointer;
+
+		caps = capbuf_ret[OSC_SUPPORT_DWORD];
 	}
+	kfree(context.ret.pointer);
+
+	osc_sb_apei_support_acked = caps & OSC_SB_APEI_SUPPORT;
+	osc_pc_lpi_support_confirmed = caps & OSC_SB_PCLPI_SUPPORT;
+	osc_sb_native_usb4_support_confirmed = caps & OSC_SB_NATIVE_USB4_SUPPORT;
 
 	/*
-	 * Now run _OSC again with query flag clear and with the caps
-	 * supported by both the OS and the platform.
+	 * On machines with native USB4 support, run _OSC again with the query
+	 * flag cleared and with the caps supported by both the OS and the
+	 * platform to let the firmware know we support native USB4.
 	 */
-	capbuf[OSC_QUERY_DWORD] = 0;
-	capbuf[OSC_SUPPORT_DWORD] = capbuf_ret[OSC_SUPPORT_DWORD];
-	kfree(context.ret.pointer);
+	if (osc_sb_native_usb4_support_confirmed) {
+		capbuf[OSC_QUERY_DWORD] = 0;
+		capbuf[OSC_SUPPORT_DWORD] = caps;
 
-	if (ACPI_FAILURE(acpi_run_osc(handle, &context)))
-		return;
+		if (ACPI_FAILURE(acpi_run_osc(handle, &context)))
+			return;
 
-	capbuf_ret = context.ret.pointer;
-	if (context.ret.length > OSC_SUPPORT_DWORD) {
-		osc_sb_apei_support_acked =
-			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_APEI_SUPPORT;
-		osc_pc_lpi_support_confirmed =
-			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_PCLPI_SUPPORT;
-		osc_sb_native_usb4_support_confirmed =
-			capbuf_ret[OSC_SUPPORT_DWORD] & OSC_SB_NATIVE_USB4_SUPPORT;
+		kfree(context.ret.pointer);
 	}
-
-	kfree(context.ret.pointer);
 }
 
 /*
-- 
2.31.1


  reply	other threads:[~2021-06-08  9:50 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-03 17:26 Some SSDT tables are not loading with kernel >= 5.12 Hans de Goede
2021-06-07  9:43 ` Hans de Goede
2021-06-07 10:05   ` Hans de Goede
2021-06-07 11:13     ` Rafael J. Wysocki
     [not found]       ` <FR1PR80MB5051E91269FD36681BB357A7E1389@FR1PR80MB5051.lamprd80.prod.outlook.com>
2021-06-07 16:08         ` Mika Westerberg
2021-06-07 19:18           ` Hans de Goede
2021-06-08  9:50             ` Hans de Goede [this message]
2021-06-08 11:44               ` Mika Westerberg
2021-06-08 13:01                 ` Mika Westerberg
2021-06-08 13:24                 ` Hans de Goede
2021-06-08 15:03                   ` Mika Westerberg
2021-06-08 16:38                     ` [PATCH] ACPI: Pass the same capabilities to the _OSC regardless of the query flag Mika Westerberg
2021-06-08 17:10                       ` Hans de Goede
2021-06-09  7:58                         ` Hans de Goede
2021-06-09  9:24                           ` Mika Westerberg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0f733402-ae3b-b4e7-13c4-e6161f9c7e81@redhat.com \
    --to=hdegoede@redhat.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=mario.limonciello@outlook.com \
    --cc=mika.westerberg@linux.intel.com \
    --cc=rafael@kernel.org \
    --cc=rjw@rjwysocki.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).