Editing InsydeBIOS AMD iGPU clocktable

I want to overclock the iGPU on my laptop through editing the ATOMBIOS. So I extracted the BIOS using insyde-tools and was able to successfully extract it. I extracted the UEFI GOP module (https://drive.google.com/file/d/1qqkZ0mq…iew?usp=sharing) using UEFITOOL-NG. Deleted everything before “55 AA 28 E9 F3 01” in it so AtomDis could read it. But the decompiled AtomBios showed that the clock tables were missing compared to the ATOMBIOS extracted from VFCT/VGA BIOS. Which means that I can’t edit them since they are added by something else

VFCT ATOMBIOS decompiled (has proper clock table) https://pastebin.com/QSSyWpaX
GOP ATOMBIOS decompiled (missing clock table) https://pastebin.com/Yk7QGWzf

More than just the clock table is missing (diff the two decompiled files) which are being added during boot by something else. I need to find whats doing it and edit the clocks stored in it to overclock the GPU but I don’t know what is doing it.

BIOS dump from insyde-tools: https://pastebin.com/Yk7QGWzf

Currently the only possible overclock method looks like porting coreboot (open source bios) to this laptop and using a modified extracted legacy vga bios rom file.

The same GOP seems to be used for multiple GPUs (looking at strings inside it and googling BR43615). I searched the GOP for the clock frequencies but couldn’t find them in it. Its most likely the clock table configuration is stored in the GOP somehow.

So I made a UEFI program to modify the VFCT table with an overclocked ATOMBIOS. It works on Linux (shows that its using new frequency in kernel log) but Windows is still using the old frequency. Anyone know if Windows is caching the ATOMBIOS or something for it to not use the new one ?

Remove device in device manager, reboot and let it reinstall. If the new freq is really pushed into there, then it will be reflected on windows reinstall of the device.

@Lost_N_BIOS Did that but it still maxes at 660.2mhz (I know stock speed is 655mhz but HWInfo always has said 660.2mhz so its not caused by overclock). But AMD Overdrive shows 722mhz (my frequency in ATOMBIOS) as Target Speed (not set by me).

In the ATOMBIOS I changed all occurrences of 65455 (FF AA) to 72222 (yes I did the correct endianness and length) so there shouldnt be any 65455 limits left. Maybe there’s some sort of limiter in PowerPlayInfo (couldn’t check because AtomDis is too old for my GPU Radeon 7640G) which is doing this or there’s a driver or hardware limit. Setting 722mhz in Overdrive doesn’t work and just locks it at highest frequency like Overdrive on laptop APUs always did.

Confirmed that Windows actually uses the new clocks by downclocking to 555mhz. Overdrive still lets me go to 655mhz though so maybe the 655mhz limit is in hardware or drivers ? Or theres some option in the ATOMBIOS I need to change

EDIT: It does seem to overclock by 1MHZ from 654.55 to 655.55. 65555 also happens to be the largest number possible with 2 bytes. Maybe someone with experience modding ATOMBIOS will know how get passed this limit.

ATOMBIOS from VFCT (using Google Drive because attachment gives error): https://drive.google.com/file/d/1E80eSrK…iew?usp=sharing

Looks like on Linux too its limited to 655.55mhz. Running benchmarks shows the same performance as stock (theres no way to see frequency on Linux afaik)

After looking at the source code for radeon driver on Linux it appears that the clock limit is being enforced the SMU or hardware. If anyone would know how to bypass the SMU limit reply to this post.