Skip to content

[Laptop 13 Pro] Core Ultra Series 3: EC power table sets PL4 = 80 W in all modes, clamping the Arc B390 at 1900 MHz #263

Description

@bpavlo

System Model or SKU

Framework Laptop 13 (Intel® Core™ Ultra Series 3)

BIOS Version

3.02

DIY Edition Information

Memory: Micron CT32G75C2LP5X 32GB
Storage: Crucial T710 1TB

Port/Peripheral Information

Peripheral vendor and name:

  1. [Fill in device / expansion card]
  2. [Fill in device / expansion card]
  3. [Fill in device / expansion card]
  4. [Fill in device / expansion card]

Standalone Operation

Mainboard only, Standalone mode enabled

Describe the Bug

The Arc B390 never exceeds ~1900 MHz under GPU load although the driver reports rp0_freq = 2500 MHz.
The only throttle reason the SoC raises is PL4; measured package power is 15–30 W and PL1, PL2,
thermal and PROCHOT are never active. The cause is the EC power table for this board, which writes
PL4 = 80 W over PECI in every power state.

EC console (ectool console) after PD negotiation:

PL1:35, PL2:47, PL4:75, PSYSPL2:75 updated success    # 79 W supply, no battery
PL1:35, PL2:56, PL4:80, PSYSPL2:89 updated success    # 96 W Apple adapter, no battery

These match zephyr/program/framework/sakura/src/cpu_power.c (branch fwk-sakura-20260429,
commit 853d767b "fwk: sakura: Add power limit setting"):

/* DC mode Battery only */     pl1_watt = 35; pl4_watt = 80;
/* Standalone mode AC only */  pl2_watt = MAX(40, MIN(60, active_power*60/100));
                               pl4_watt = MIN(80, active_power*95/100);
/* AC DC mode */               pl1_watt = 35; pl2_watt = 60; pl4_watt = 80;

GPU behaviour under a 60 s Vulkan load (vkmark 1920x1080), 1 Hz samples of
/sys/class/drm/card0/device/tile0/gt0/freq0/ plus RAPL package energy:

supply EC PL4 GPU act_freq package power throttle/reasons
79 W 75 W 1750–1850 MHz 11–16 W pl4 (60/60 samples)
96 W 80 W 1850–1900 MHz, peak 2050 13–17 W pl4 (59/60 samples)

Intel enforces PL4 preemptively (datasheet 15.1.1.1: "the PL4 power limiting algorithms will
preemptively limit frequency to prevent spikes above PL4"), i.e. as a frequency ceiling derived from
worst-case power, which is why the clamp holds at 15 W of real draw. A 16-thread CPU load in the same
session reaches 36–40 W at 96 °C, so PL1/PL2 and cooling behave as configured; PL4 is the only limit
that is mis-sized for this SoC.

Comparison with the Core Ultra Series 1 table (marigold/src/cpu_power.c, same branch):

power state Series 1 (marigold) PL4 Series 3 (sakura) PL4
battery only 80 80
adapter only, no battery 0.95 × adapter (95 on 100 W) min(80, 0.95 × adapter)
adapter ≥ 55 W, battery ≥ 30 % 120 80
adapter ≥ 55 W, battery < 30 % min(0.9 × adapter + 80, 120) 80

Steps To Reproduce

  1. Connect the 100 W (or any ≥ 60 W) USB-C supply, with or without battery.
  2. sudo ectool console | grep PL1 → shows PL4:80 (or PL4:75 on a ~80 W supply).
  3. Start any GPU load (vkmark, or a game) and run
    watch -n1 cat /sys/class/drm/card0/device/tile0/gt0/freq0/act_freq /sys/class/drm/card0/device/tile0/gt0/freq0/throttle/reasons
  4. Observe act_freq ≤ ~1900 and reasons = pl4, while sudo turbostat (or RAPL energy_uj)
    shows package power far below 80 W.

Expected Behavior

PL4 sized to what the source can deliver, as on Series 1: ~95 W on a 100 W contract without battery,
and 120 W with adapter + charged battery, so the B390 can reach its rated frequency. A BIOS toggle
would also be much appreciated.

Screenshots

report-20260910-201810.log
report-20260910-203004.log

Operating System

NixOS 26.11

Linux Kernel Version

7.2.3

Additional Context

No response

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Laptop 13Framework Laptop 13 (any generation)

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions