AMD 15h mobile CPU forced to max boost state

multi is locked as well as bunch of other stuff. there are 3 boost states, 3.2, 3.5 and 3.8Ghz
under load, it stays at 3.5Ghz and in idle is bouncing back and forth between 3.5 and 3.8Ghz
how to force it to stay always at 3.8Ghz ?

i’ve heard before this isn’t possible, which i find hard to believe.
before the OS loads, in GRUB menu, MSR register reads tell me it’s is operating at 3.8Ghz all the time at
Pboost0 voltage of 1.425V
multimeter confirms this, indeed there is 1.42V without oscillations

any thoughts?

i think you should provide your hardware details (and BIOS version).

for example, ASUS bios:
CPU Core Ratio [Sync All Cores]
Intel(R) SpeedStep™ [Disabled]
Intel(R) Speed Shift Technology [Disabled]
Turbo Mode [Enabled]

and if you want to disable idle within Windows OS (not recommended because power consumption):
:: Processor idle disable

powercfg /setacvalueindex scheme_current 54533251-82be-4824-96c1-47b60b740d00 5d76a2ca-e8c0-402f-a133-2158492d58ad 1

powercfg -attributes 54533251-82be-4824-96c1-47b60b740d00 5d76a2ca-e8c0-402f-a133-2158492d58ad -ATTRIB_HIDE

correct

Dell Inspiron 5576
CPU FX9830P
BIOS v1.0.7
CPB - Auto (enabled)
PowerNow - disabled

Processor idle disable tried before, doesn’t help

also VRM config is pretty much the same as in schematic (maybe few amps lower)

Untitled

sorry , im not familiar with AMD options. i attached an export of your Dell’s setup options (IFR Extractor) and i see some performance related options. maybe all of the options are already visible. try disabling c-states, too.

i think mobile/laptop platforms don’t provide the same boost state options as a desktop. takecare
inspiron_5576_1.0.7.zip (3.5 MB)

the zip is basically the output of:
Inspiron_5576_1.0.7.EXE /writeromfile
and then IFR Extractor on the setup module.

setup was unlocked years ago by Lost’n’Bios and all that settings tried already
as i said, during GRUB menu, cores remain at full speed. jerking starts once the OS is loaded, regardless of being it windows or linux
maybe it is PPT/STAPM thing, if so would be good to know how that algorithm determines power exceeds set limits
also, looking for a way to stress the CPU from within GRUB, just to see if it will downclock and if not how much power it will take from wall

starting windows with 1 or 2 CPU cores there is no downclocking - they both work at 3.8GHz
is there something like c-state boost limit on mobile CPUs as well or the problem is something else?

it appears as long as total APU power is below 35W two cores will boost to 3.8 and if it exceeds 35W all cores will downclock to 3.5 regardless of total APU power reaching 40W. power readings are from uprof

Untitled

first thing, laptop schematic document is wrong
CPU PEAK (EDC) current is incorrect, they tried to scale it based on OCP current, with ISL62771 controller OCP is always 1.25x of the EDC value

thus the EDC was 56A, provided by 2 phases with 24A/27A Isat inductors. there is no way these can provide full load current as the phases are 180degree

shifted. they can only use second phase for very short period of time which is requirement for EDC - 1.5x of the TDC for 1ms

based on uprof numbers it seems for all cores to operate at 3.8GHz load needs at least 32A
replaced the inductors with 31A/60A Isat components. there is no difference, at least not yet, power consumption measured from wall is identical to the
consumption before replacement. no more confusion about this part at least, saturation current (Isat) is what a single phase can provide at all time as long
as mosfet can support it, which is rated 84A and well beyond inductor Isat

i’ve seen posts on OC net about APU/CPU prior Excavator uses hardcoded power management and Excavator designs use SVI2 voltage interface, which allows power

telemetry but the telemetry isn’t used so it would mean everything is hardcoded in BIOS. hardware undervolt wouldn’t help in this case unless system does get
actual values from VRM (not used, but is still wired on board)

there is also cTDP feature (25W-45W) and even though all the registers mentioned in BKDG have values of zero there might be just default one of 35W
that caps the CPU (so not entire APU, as i could load APU slightly above 50W based on uprof readings)
one CU is taking about 17W (16, 16.5, 17 there is no rule) at 3.5GHz and both CU fall within 35W in that case
similarly, one CU at 3.8GHz takes about 22-24W, and for both CU to operate at this clock it probably needed to enable cTDP and set it to 45W

there is this field in vbios

typedef struct _ATOM_TDP_CONFIG_BITS
{
#if ATOM_BIG_ENDIAN
  ULONG   uReserved:2;
  ULONG   uTDP_Value:14;  // Original TDP value in tens of milli watts
  ULONG   uCTDP_Value:14; // Override value in tens of milli watts
  ULONG   uCTDP_Enable:2; // = (uCTDP_Value > uTDP_Value? 2: (uCTDP_Value < uTDP_Value))
#else
  ULONG   uCTDP_Enable:2; // = (uCTDP_Value > uTDP_Value? 2: (uCTDP_Value < uTDP_Value))
  ULONG   uCTDP_Value:14; // Override value in tens of milli watts
  ULONG   uTDP_Value:14;  // Original TDP value in tens of milli watts
  ULONG   uReserved:2;
#endif
}ATOM_TDP_CONFIG_BITS;

B0 36 AC 0D

which i didn’t look close enough at previously so it looked like values were 14000 and 3500
while in fact both are 3500. just to rule it out i tried patch with 3 different values to take into account
all possible combinations of uCTDP_Enable
B0 36 94 51
B0 36 94 D1
B0 36 94 91

it doesn’t change anything as the values are provided by sbios into vbios just as informative

looks like the entire feature is set as a platform config variable, CPU just reads it and adjust internal settings based on the value. probably there is no register in CPU to set it via PCI register

performance of the two cores in the photo

looks like some sort of power issue

when C6 is disabled in BIOS highest performance state is disabled as per Processor-Systemboard Current Delivery Compatibility Check

this part looks wrong to me

ProcIddMax = MSRC001_00[6B:64][IddValue] current * 1/10^MSRC001_00[6B:64][IddDiv] * (D18F5x84[CmpCap]+1)

D18F5x84[CmpCap]+1 will be 4 and multiplied by 15.1A ends up in 60A

but the CPU doesn’t consume 15A per core, it takes 15A per compute unit (2 cores)

maybe it is not a problem and it only needs cTDP to 45W but one way or another there is a workaround

changing D18F4x16C APM TDP Control register bits CstateBoost to 0 forces all cores to P0 state
power from wall increased from 58W to 65W when stressing CPU on all cores

then i used BAR-edit trick which is usually found on youtube tutorials and after loading CPU with cpuburner (2 threads) tried to write 0 to bits 8,9,10

this locked it fully to P0 state and no more downclocking. power from wall increased to 75W

to avoid any possible stability issues some components were replaced

PL19 and PL20 changed to SRP8540A-R22M
PR298 changed to 1Kohm_1%
PC9134 change to 0.1U_10V
PC9135 change to 0.01U_16V

update: win10 loads the CPU even harder, total APU power is 55-58W, around 25W per CU
everything is a bit faster, most noticable on starting up browser with multiple tabs

Disable PSS Support in bios, If you don’t have that option you can use umaf to see hidden bios

nothing useful with umaf. PSS (don’t exist in menu) only related when powernow is enabled, correct? need to keep powernow disabled otherwise the CPU throtles down when dGPU is loaded