Skip to content

Instantly share code, notes, and snippets.

@johncoffee715
Created July 15, 2026 05:55
Show Gist options
  • Select an option

  • Save johncoffee715/0f48bff6de99898738866fa6e759e8fb to your computer and use it in GitHub Desktop.

Select an option

Save johncoffee715/0f48bff6de99898738866fa6e759e8fb to your computer and use it in GitHub Desktop.

MI50 / Radeon Pro VII — Gaming Profile with Undervolt

Forked from evilJazz/MI50_32GB_VBIOS
This variant focuses on gaming stability on a watercooled MI50 / Radeon Pro VII (Vega 20, gfx906).

Hardware context

  • GPU: AMD Instinct MI50 16 GB (1002:66a1, VBIOS 113-D1640700-100)
  • Cooling: custom waterblock (Bykski A-MI50-X)
  • Driver: amdgpu + Mesa RADV (Proton/umu-run)

Thermal reality check

With a waterblock, average die and VRAM temps stay low, but junction (hotspot) can still spike due to heat density inside the Vega 20 die:

Sensor Typical under load
GPU edge / VRAM < 60 °C
Junction (hotspot) ~100–105 °C

The stock SoftwareShutdownTemp is 113 °C. Hitting it cuts Vcore and freezes the game. Lowering voltage helps the junction more than lowering the average die temperature.

Root cause of high hotspot delta

The MI50 ships from factory with a dry graphite pad as TIM. Combined with Vega 20 die warpage (the center balloons under heat), the thermal interface degrades over time causing edge/junction deltas of 45-55°C.

Fix: Replace with PTM7950 phase-change pad (5-15°C drop in junction temp). Also ensure proper waterblock mounting pressure — the stock X-bracket is essential for uniform contact.

Recommended gaming profile

Parameter Stock Gaming profile
SCLK max 1700 MHz 2000 MHz
MCLK max 1000 MHz 1200 MHz
Power cap ~225 W 300–320 W
TDC Gfx 280 A
Undervolt -50 mV

Required tools

Install UPP (Uplift Power Play):

sudo pip install --break-system-packages upp

Single‑shot runtime application

# 1. Dump current PowerPlay table
sudo upp --pp-file=/sys/class/drm/card0/device/pp_table dump

# 2. Create a working copy
cp /sys/class/drm/card0/device/pp_table pp_table_work.bin

# 3. Apply the gaming profile
sudo upp --pp-file=pp_table_work.bin set \
  /smcPPTable/FreqTableGfx/8=2000 \
  /smcPPTable/FreqTableUclk/2=1200 \
  /smcPPTable/FreqTableUclk/3=1200 \
  /PowerSavingClockTable/PowerSavingClockMax/0=2000 \
  /PowerSavingClockTable/PowerSavingClockMax/5=1200 \
  /smcPPTable/DcModeMaxFreq/0=2000 \
  /smcPPTable/DcModeMaxFreq/5=1200 \
  /smcPPTable/GfxclkDsMaxFreq=2000 \
  /smcPPTable/MaxVoltageGfx=4450 \
  /SmallPowerLimit1=300 \
  /SmallPowerLimit2=300 \
  /BoostPowerLimit=300 \
  /smcPPTable/SocketPowerLimitAc0=300 \
  /smcPPTable/SocketPowerLimitDc=300 \
  /smcPPTable/TdcLimitGfx=280

# 4. Write the modified table to the card
sudo cp pp_table_work.bin /sys/class/drm/card0/device/pp_table

# 5. Verify
sudo upp --pp-file=/sys/class/drm/card0/device/pp_table dump | grep -E "PowerLimit|FreqTableGfx|FreqTableUclk|MaxVoltage"

Persist across reboots (systemd)

Create /etc/systemd/system/mi50-gpu-setup.service:

[Unit]
Description=MI50 GPU PowerPlay table patching
After=multi-user.target

[Service]
Type=oneshot
ExecStart=/usr/bin/cp /home/USER/mi50-oc/pp_table_work.bin /sys/class/drm/card0/device/pp_table
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

Then:

sudo systemctl daemon-reload
sudo systemctl enable --now mi50-gpu-setup.service

Performance notes

  • 2000 MHz / 1200 MHz is the sweet spot — gives 95% of max perf with manageable thermals
  • 2100 MHz is possible but junction hits 105°C quickly and triggers throttling
  • The undervolt (-50mV = MaxVoltageGfx=4450) is the single most impactful setting for hotspot temps
  • Power limit above 320W shows negligible gains — the card power-limits before temp-limiting at this voltage

UPP config file

Save as upp_gaming.conf:

/smcPPTable/FreqTableGfx/8=2000
/smcPPTable/FreqTableUclk/2=1200
/smcPPTable/FreqTableUclk/3=1200
/PowerSavingClockTable/PowerSavingClockMax/0=2000
/PowerSavingClockTable/PowerSavingClockMax/5=1200
/smcPPTable/DcModeMaxFreq/0=2000
/smcPPTable/DcModeMaxFreq/5=1200
/smcPPTable/GfxclkDsMaxFreq=2000
/smcPPTable/MaxVoltageGfx=4450
/SmallPowerLimit1=300
/SmallPowerLimit2=300
/BoostPowerLimit=300
/smcPPTable/SocketPowerLimitAc0=300
/smcPPTable/SocketPowerLimitDc=300
/smcPPTable/TdcLimitGfx=280

Apply from file:

sudo upp --pp-file=pp_table_work.bin set --from-file=upp_gaming.conf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment