System Model: Framework Laptop 16 (AMD Ryzen™ 7040 Series)
BIOS Version: 4.04 (stable)
CPU: AMD Ryzen 7 7840HS
GPU Module: AMD Radeon RX 7700S
OS: Fedora Linux 44
Kernels tested (both reproduce):
• 7.1.3-cachyos1.fc44.x86_64
• 7.0.14-201.fc44.x86_64
Describe the bug
On BIOS 4.04, the RX 7700S power cap is completely locked — power1_cap, power1_cap_max, power1_cap_min, and power1_cap_default are all identical at 100W, with zero range:
power1_cap: 100000000
power1_cap_max: 100000000
power1_cap_min: 100000000
power1_cap_default: 100000000
Any attempt to write a value other than exactly 100W fails:
$ echo 120000000 | sudo tee /sys/class/hwmon/hwmon9/power1_cap
sh: echo: write error: Invalid argument
This was working on a previous BIOS version — setting the power cap up to 120W (AMD's rated max for this GPU) was possible via LACT. The regression appeared after a BIOS update.
Root Cause (Diagnosed)
After investigation, the root cause is that PP_OD_FEATURE_PPT_BIT is not set in the VBIOS power play table, meaning the amdgpu driver sees no power OD range and exposes a zero-width [100W, 100W] cap.
Evidence:
- No OD/PPT entries exist in debugfs for the dGPU:
$ sudo find /sys/kernel/debug/dri/0000:03:00.0/ | grep -i "od\|overdrive\|ppt"
# only returns: odm_combine_segments (display pipeline, unrelated)
- pp_od_clk_voltage shows clock OD but no OD_POWER section:
OD_SCLK:
0: 800Mhz
1: 2700Mhz
OD_RANGE:
SCLK: 800Mhz 2700Mhz
# no OD_PPT / OD_POWER entries
- The upstream kernel fix for work_items/5227 (drm/amd/pm: fix smu13 power limit default/cap calculation, commit 1eaf26db) calculates max = SocketPowerLimitAc × (100 + od_percent_upper) / 100. Without PP_OD_FEATURE_PPT_BIT, od_percent_upper = 0 and max = 100W regardless of kernel version.
Expected Behavior
power1_cap_max should be 120000000 (120W), matching AMD's rated TGP range for the RX 7700S. The VBIOS PP table should have PP_OD_FEATURE_PPT_BIT set with od_percent_upper = 20 (giving the 20% headroom = 120W), as it apparently was in earlier BIOS versions.
Steps to Reproduce
- Boot Framework 16 with RX 7700S module on BIOS 4.04
- Run on any recent Linux kernel (tested 7.0.14 Fedora stable and 7.1.3 CachyOS)
- Ensure amdgpu.ppfeaturemask=0xffffffff is set
- Check: for f in power1_cap power1_cap_max power1_cap_min power1_cap_default; do echo "$f: $(cat /sys/class/hwmon/hwmon10/$f)"; done
- All four values will be 100000000
Additional Context
• Reproducible on two different kernel versions
• ppfeaturemask=0xffffffff is confirmed active: cat /sys/module/amdgpu/parameters/ppfeaturemask → 0xffffffff
• The amdgpu SMU feature mask is 0x0001a33dfbffffff — OD features appear present in the SMU but the PP table doesn't expose power OD
• LACT daemon logs confirm the driver is clamping any non-100W value: Power cap 110W was outside of [100W, 100W], clamped to 100W
• This is distinct from issue #27 (power delivery under load) — this is specifically the PP table not exposing the power OD range at all
System Model: Framework Laptop 16 (AMD Ryzen™ 7040 Series)
BIOS Version: 4.04 (stable)
CPU: AMD Ryzen 7 7840HS
GPU Module: AMD Radeon RX 7700S
OS: Fedora Linux 44
Kernels tested (both reproduce):
• 7.1.3-cachyos1.fc44.x86_64
• 7.0.14-201.fc44.x86_64
Describe the bug
On BIOS 4.04, the RX 7700S power cap is completely locked — power1_cap, power1_cap_max, power1_cap_min, and power1_cap_default are all identical at 100W, with zero range:
Any attempt to write a value other than exactly 100W fails:
This was working on a previous BIOS version — setting the power cap up to 120W (AMD's rated max for this GPU) was possible via LACT. The regression appeared after a BIOS update.
Root Cause (Diagnosed)
After investigation, the root cause is that PP_OD_FEATURE_PPT_BIT is not set in the VBIOS power play table, meaning the amdgpu driver sees no power OD range and exposes a zero-width [100W, 100W] cap.
Evidence:
Expected Behavior
power1_cap_max should be 120000000 (120W), matching AMD's rated TGP range for the RX 7700S. The VBIOS PP table should have PP_OD_FEATURE_PPT_BIT set with od_percent_upper = 20 (giving the 20% headroom = 120W), as it apparently was in earlier BIOS versions.
Steps to Reproduce
Additional Context
• Reproducible on two different kernel versions
• ppfeaturemask=0xffffffff is confirmed active: cat /sys/module/amdgpu/parameters/ppfeaturemask → 0xffffffff
• The amdgpu SMU feature mask is 0x0001a33dfbffffff — OD features appear present in the SMU but the PP table doesn't expose power OD
• LACT daemon logs confirm the driver is clamping any non-100W value: Power cap 110W was outside of [100W, 100W], clamped to 100W
• This is distinct from issue #27 (power delivery under load) — this is specifically the PP table not exposing the power OD range at all