Bug 204391

Summary: Overdrive on AMDGPU does not allow clocks above official clocks.
Product: Drivers Reporter: Haxk20 (haxk612)
Component: Video(DRI - non Intel)Assignee: drivers_video-dri
Status: RESOLVED WILL_NOT_FIX    
Severity: normal    
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 5.3rc1 Subsystem:
Regression: No Bisected commit-id:
Attachments: dmesg with Overdrive enabled.

Description Haxk20 2019-07-31 10:41:02 UTC
Created attachment 284063 [details]
dmesg with Overdrive enabled.

As the title of the bug says overdrive has a range that it operates in and thats good to not allow users to overclock the card to its death but there is a bug when overdrive is enabled it does not allow clocks for core or memory to be outside official clocks.
I have RX560X with 1275 Mhz on Core and 1450Mhz on Memory and when i enable overdrive i can increase voltage suplied to core or memory but im not allowed to set any clock above the official clocks.
If we try to do so it returns invalid argument as the file expected the clock to be in range.
[  914.519919] amdgpu: [powerplay] OD engine clock is out of range [214 - 1275] MHz
[ 1096.096840] amdgpu: [powerplay] OD memory clock is out of range [300 - 1450] MHz

I know for sure that this is not an GPU BIOS issue as in Windows we can indeed overclock the GPU way above the official clocks with some nice FPS boost in all games so the overclock there works.

But whats weird is also that if we disable Overdrive im allowed to overclock Core frequency but im not able to overclock memory frequency.

I think as im looking at the dmesg that it may have to do something with this:
[  383.163783] amdgpu: [powerplay] pp_dpm_get_sclk_od was not implemented.
[  383.163858] amdgpu: [powerplay] pp_dpm_get_mclk_od was not implemented.
And indeed when trying to look into that file it does not exist anywhere. Only file that exists that is close to it is pp_dpm_mclk/sclk.
Comment 1 Haxk20 2019-07-31 10:41:56 UTC
I forgot to add that this is an issue even before 5.3
Comment 2 Haxk20 2019-08-02 19:08:28 UTC
Can somebody look at this please ? I know this isnt experience breaking but when the driver has support for overclocking then it should at least work.
Comment 3 Haxk20 2019-08-03 18:47:56 UTC
Also to add to this pp_sclk_od is exposed even tho overdrive isnt enabled and indeed im allowed to overclock the GPU core and i indeed see the Core running at that frequency.
But i mean Core overclocking is nice and all but without memory OC its useless.
Comment 4 Haxk20 2019-08-03 23:21:21 UTC
After looking at OverDrive code it looks like this is PP table issue of my GPU VBIOS as it doesnt have OD range and so it cant find it thus only underclocking is allowed. Hardcoding the range in the kernel is surely a huge hack but indeed works and im able to overclock the card.
It would be useful to have an kernel argument that we can pass trough GRUB that would just disable this check as some laptops dont have this table.