cpu/intel/model_206ax: Allow to configure VR settings
commit62535b66e64ff72229645931a7f5a08147095fc7
authorPatrick Rudolph <patrick.rudolph@9elements.com>
Sat, 30 Mar 2024 18:06:20 +0000 (30 19:06 +0100)
committerFelix Held <felix-coreboot@felixheld.de>
Mon, 22 Apr 2024 15:31:15 +0000 (22 15:31 +0000)
tree75476a4aac60c71f9149ee783084d6cc73d71e1a
parent2d89c7821744de70e5bddd3a1659dd43c4be5d4e
cpu/intel/model_206ax: Allow to configure VR settings

Allow to set board specific CPU voltage regulator settings.

The VR12 compatible voltage regulator for the CPU can be configured
by two MSRs. Currently a default value is applied, which mimics the
Intel reference code and is what the BWG suggest. However most board
vendors fill in the actual VR parameters to support OC or ULV board
variants.

When the mainboard design is too different from the Intel reference
design, not updating the VR settings might result in:
- unstable system behaviour
- limited turbo performance
- excessive battery drain
- no over-clocking capability

This patch adds support to set the board specific current limit for
Icc and Igfx.
It also allows to adjust PSI1, PSI2 and PSI3, which are powerstates
used by the VR, that consume less energy when the system is idle.

Test on Lenovo X220 with full CPU load after 1 minute, compared to
previous code with default settings:
- Limiting PP0 max current below Iccmax results in less CPU performance.
  RAPL readings show that less power is drawn over time.
- Limiting PP0 max current to Iccmax results in equal CPU performance.
  RAPL readings show that the same power is drawn over time.
- Setting the PP0 max current to a value >> Iccmax results in equal CPU
  performance. RAPL readings show that the same power is drawn over
  time.
- Updating the MSR at runtime has no effect.

Change-Id: I59edab47fc4fbe0240e1dd7d25647f7549b4def2
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/81597
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
src/cpu/intel/model_206ax/chip.h
src/cpu/intel/model_206ax/model_206ax_init.c
src/mainboard/lenovo/x220/devicetree.cb