Here is my elegant workaround to the problem: ``` [Unit] Description=Fixes many issues with the 2022 LG Grams running linux and sets charging limit to 80 # save this script to /etc/systemd/system/lg-gram.service # then run: # sudo systemctl daemon-reload # sudo systemctl enable lg-gram.service # sudo systemctl start lg-gram.service # more documentation: https://www.reddit.com/r/LGgram/comments/150p3rg/critical_bug_affecting_the_2022_lineup_on_linux/ [Service] Type=oneshot # Unmask GPE interrupts to resolve the issue of high temperatures and fan noise even on idle when the laptop is charging through USB-C/TB: ExecStart=/bin/bash -c "echo 'unmask' > /sys/firmware/acpi/interrupts/gpe6E" # sets charging limit to 80 to increase battery longevity: ExecStart=/bin/bash -c "echo 80 > /sys/class/power_supply/CMB0/charge_control_end_threshold" # Disable "Silent mode": ExecStart=/bin/bash -c "echo 1 > /sys/devices/platform/lg-laptop/fan_mode" # Unload the int3403 temp sensor library from the kernel to fix ACPI flood issue: # ExecStart=/bin/sh -c "rmmod int3403_thermal" # Disable turbo boost (trade single threaded performance for lower heat output and maybe battery life) # ExecStart=/bin/sh -c 'echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo' # ExecStop=/bin/sh -c 'echo 0 > /sys/devices/system/cpu/intel_pstate/no_turbo' # Fix for thermal throttle issue that on some distros can put the CPU running on low wattages: # ExecStart=/bin/bash -c "systemctl disable --now thermald" RemainAfterExit=yes [Install] WantedBy=multi-user.target ``` -- The issue seems to be caused by: ```some miscommunication between Linux thinking it can probe for thermal info on a device which did not register a handler to do so``` Source - https://www.reddit.com/r/linuxhardware/comments/x97m6l/fedora_lg_gram_16_2022_12th_gen_alder_lake/ (added to the original post) I'm happy to confirm that the kernel parameter acpi_mask_gpe=0x6E seems to fix the issue of fans blasting and high temperatures even on idle! An observed drawback from this solution is that is breaks the functionality of the screen brighness buttons: it still works, but you can hold it, and it also has a big delay in applying each setting - This doesn't bother me as I already use some scripts with a custom keyboard shortcut to set the brighness of all my displays at once. Another solution is unmasking the GPE interrupts not through a kernel parameter, but after boot with: echo unmask > /sys/firmware/acpi/interrupts/gpe6E - This way the brightness button issues don't manifest. Furthermore, setting the kernel parameter acpi_mask_gpe=0x6E, it could be affecting idle power draws if the values returned by GPE are used to put cpus into idle states. Thankfully the issue only happens when the laptops are charging, so it wouldn't kill battery life. From the kernel documentation I could find: acpi_mask_gpe= [HW,ACPI]Due to the existence of _Lxx/_Exx, some GPEs triggeredby unsupported hardware/firmware features can result inGPE floodings that cannot be automatically disabled bythe GPE dispatcher.This facility can be used to prevent such uncontrolledGPE floodings.Format: or So the documentation is aligned with the observations of the fix/workaround. -- Furthermore, there is another possible fix: journalctl seems to output many ACPI errors, probably due to the miscommunication between Linux thinking it can probe for thermal info on a device which did not register a handler to do so. The ACPI issue is a flood caused by the int3403 temp sensor library, which can be unloaded from the kernel without any other visible system effect sudo rmmod int3403_thermal is how it's unloaded A permanent fix seems to be patching the int3403 library to add something like if (sensorNotPresent) then skip or unregister until next launch -- There seems to be yet another issue related to this: power usage goes way up to around 10W at idle (instead of like 3W) and there's a kernel thread with high load (visible in powertop) related to the i915 graphics driver The solution seems to be: echo 1 > /sys/kernel/debug/dri/1/i915_hpd_short_storm_ctl That should be run on every boot to stop another interrupt flooding from happening, but this solution: it might break multi-stream transport on DisplayPort - the short storm detection is enabled by default unless multi-stream transport is supported -- Another finding: The laptop is by default running on "Silent mode" which can be disabled by: echo 1 > /sys/devices/platform/lg-laptop/fan_mode -- The laptop indeed seems to have no BIOS updates. -- Another issue seems to be that on some distros the laptop might thermal throttle to very low wattages, and the fix is: systemctl disable --now thermald