Yeah, kernel mods are also in play. Sometimes f up even i915 or hybrids, or leaves the videocard alive. If under windows these are not valid errors, that means it is driver issue that connected to a blob. The question is that what part of the system stays on powered mode. Let’s hope, that not something new that hasn’t been developed under linux. Under linux should be logged that if some part of the system doesn’t power off properly, or wake up state “already there”. PS: if your device is heavily depends on a bunch of win software blobs, better to use linux in virtual mode, instead of linux hacks.
Update: changing the kernel didn’t help, it’s still noticeably hot. And I still don’t know exactly what the problem is, it’s infuriating, what should I do to find the source of the problem?
Thermal imaging camera on the exposed motherboard. Determine which aspect or area of the chipset is consuming power.
This sounds like a bad power supply. Did you try using a known good power supply?
There’s no issue on windows tho.
More likely on the CPU side i think.
The problem is that the nvidia gpu does not shut down completely… as my friend said it seems to be caused by the leaky acpi table so thanks to a i assume?
From: https://www.techpowerup.com/gpu-specs/geforce-rtx-4060-mobile.c3946:
GeForce RTX 4060 Mobile is connected to the rest of the system using a PCI-Express 4.0 x16 interface.
This brings ASPM into the picture.
https://dlcdnets.asus.com/pub/ASUS/mb/13MANUAL/PRIME_PROART_TUF_GAMING_INTEL_700_Series_BIOS_EM_WEB_EN.pdf?model=TUF%20GAMING%20Z790-PLUS%20WIFI might provide some clues.
Having the exact same issue. Asus TUF A15 FA507NV, Ryzen 5 7535HS, RTX 4060. Using Nvidia RPM Fusion drivers. Haven’t found anything on the net except this post here.
Before anything bad happens - burned down laptops/mobo or such, I suggest two things. One is the exact MOBO data from the users, that includes kernel, acpi, aspm, and hw data, and BIOS version. Then launch a full investigation.
Troubleshooting Linux Shutdown Hang with Nvidia Mobile GPU and ASPM issues
Problem:
You have a laptop with a mobile Nvidia RTX 4060. When you shut down Linux, something doesn’t fully power off — likely the GPU or a motherboard subsystem stays awake or hangs in a semi-sleep state.
You suspect that ASPM (Active State Power Management) isn’t behaving correctly at shutdown.
Goal:
Find out which part of the ASPM system or PCIe device is causing the hang or failing to power down properly.
Investigation Steps
- Check ASPM Status for All Devices
Use:
sudo lspci -vvv | grep -i aspm -A 10
This lists the PCIe devices and their ASPM capabilities (L0s, L1, etc.).
Look specifically for your Nvidia GPU.
- Check Shutdown Logs
The system might log warnings during shutdown. To see the previous boot’s logs:
sudo journalctl -b -1 -e
Look for keywords:
PCIe
ASPM
nvidia
timeout
failed
- Search for PCIe Errors
dmesg | grep -i pcie
This finds PCIe bus link errors or ASPM-related issues.
- Check Nvidia Driver State (if using proprietary driver)
dmesg | grep -i nvidia
or check:
cat /var/log/Xorg.0.log
Errors related to GPU shutdown might show up here.
Potential Causes
- Your GPU might be running in Discrete Mode (dGPU) and unable to fully suspend.
- ASPM might be disabled by the kernel (via boot params like
pcie_aspm=off
). - ASPM might be disabled in BIOS/UEFI.
How to Pinpoint Which ASPM Part Is Failing
- Install and run powertop:
sudo apt install powertop # (Debian/Ubuntu)
sudo powertop
This tool shows which components are stuck in higher power states.
- Directly check a device’s ASPM state:
cat /sys/bus/pci/devices/0000:01:00.0/link_state
(Replace 01:00.0
with your Nvidia GPU’s ID from lspci
.)
Force Enable ASPM if Needed
If ASPM is supported but disabled, you can force it at boot time:
Edit /etc/default/grub
:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pcie_aspm=force"
Then update GRUB:
sudo update-grub
and reboot.
This forces ASPM even if the BIOS doesn’t advertise it correctly.
Script to List ASPM Status for All PCIe Devices
I made a quick script that lists all PCIe devices and highlights ASPM settings to easily find any misbehaving devices.
Here’s the script:
#!/bin/bash
echo "Scanning PCIe devices for ASPM support and status..."
echo ""
for device in /sys/bus/pci/devices/*; do
if [ -f "$device/link_state" ]; then
id=$(basename "$device")
vendor=$(cat "$device/vendor")
device_name=$(lspci -s $id)
link_state=$(cat "$device/link_state")
echo "$device_name"
echo " ASPM State: $link_state"
echo ""
fi
done
echo "Done."
Download the Script
I’ve packed it for you: Download aspm_check.sh
Command to make it executable:
chmod +x aspm_check.sh
./aspm_check.sh
``