Created attachment 296691 [details] first 13 seconds of dmesg Device: Lenovo IdeaPad S340-15APITouch Using latest UEFI firmware (AMCN29WW(V1.12)) Distro: Arch Linux (both latest 5.12.2 and LTS kernels) It seems that the ideapad_acpi platform driver is not fully working on this laptop. The following (possibly relevant) errors are visible in dmesg on boot: ` ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.GPP2.BCM5], AE_NOT_FOUND (20210105/dswload2-162) ... ideapad_acpi VPC2004:00: DYTC interface is not available ` There are more ACPI-related messages. The full output from the boot can be seen in the attachment. Result: The platform_profile interface is not available at all (i.e., the file at /sys/firmware/acpi/platform_profile does not exist). The conservation_mode interface is available but cannot be used. Attempting to run `sudo bash -c "echo 1 > /sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode"` results in `echo: write error: Input/output error` The mode of 0 can be read from this file with `cat`, however. To troubleshoot, I have tried updating the UEFI firmware, adding the ideapad_laptop module to initramfs, and using LTS kernel. The problem persists in these cases. I can provide more information if needed.
That message is not necessarily a bug. That interface is not available on all devices. Can you check if the VPC2004 ACPI device has a method named "DYTC"? > The conservation_mode interface is available but cannot be used. Sorry, that's on me. There is a glaring typo in the driver, I'll send a patch to fix it shortly.
Thanks a lot. > Can you check if the VPC2004 ACPI device has a method named "DYTC"? If I'm understanding correctly, you're saying to check the disassembled ACPI tables, right? The disassembled dsdt.dsl does appear to contain a DYTC method: Device (VPC0) { Name (_HID, "VPC2004") // _HID: Hardware ID Name (_UID, Zero) // _UID: Unique ID Name (_VPC, Zero) Name (VPCD, Zero) Method (_STA, 0, NotSerialized) // _STA: Status { Return (0x0F) } Method (DYTC, 1, Serialized) { ITSV = Zero ITSM = Zero Local0 = Zero Local1 = (Arg0 & 0x01FF) Local2 = (Arg0 & 0xFFFFFE00) Switch (Local1) { Case (Zero) .... I'll attach the full file, in case it is needed.
Created attachment 296693 [details] ACPI: Dissassembly of dsdt.dat via iasl
> If I'm understanding correctly, you're saying to check the disassembled ACPI > tables, right? Yes, exactly. From this part: Method (DYTC, 1, Serialized) { ITSV = Zero ITSM = Zero Local0 = Zero Local1 = (Arg0 & 0x01FF) Local2 = (Arg0 & 0xFFFFFE00) Switch (Local1) { Case (Zero) { If (!Local2) { Local0 |= One Local0 |= 0x0100 Local0 |= Zero Local0 |= 0x40000000 } Else { Local0 |= Zero Local0 |= 0x04 } } it **seems to me** that only DYTC v4 is supported on that model - although I'm not sure. The ideapad_acpi driver will only expose the platform_profile functionality if it finds DYTC v5 or newer. The code was adapted from the thinkpad_acpi driver, and the platform_profile support was contributed to that driver by Lenovo employee Mark Pearson. I cannot remember the exact reason why earlier versions are not supported, you could possibly write to the PDx86 mailing list (platform-driver-x86 at vger.kernel.org) and CC him if you want to know more; or search back on lore.kernel.org.
Okay, that makes sense. Thank you so much!
Sorry for bothering, but I noticed than in kernel 5.16.5 there's a new message: [ 8.069951] ideapad_acpi VPC2004:00: DYTC_VERSION is less than 4 or is not allowed: 4 [ 8.069953] ideapad_acpi VPC2004:00: DYTC interface is not available