Radeon VII Overclocking & Undervolting

Gurdi

Kokü-Junkie (m/w)
seven-jpg.1031616


So liebe Veagner. Die Seven ist draußen und ab gehts ans Overclocking und Undervolting. Der OC Bug wurde mit Treiber 19.2.2 behoben und der Wattman übernimmt nun die Einstellungen.
Es ist hilfreich nach erfolgter Konfiguration einen Neustart zu machen, das hilft der Software beim korrekten Auslesen und ergibt bessere und stabilere Werte. Zum testen reicht natürlich erstmal on the fly.


Das aktuellste Bios inkl. ATI Flash:
ATI Flash Anhang anzeigen 1034392
Bios 06 Anhang anzeigen 1034393

Zum Einstieg dann hier die Stockwerte der Karte mit Referenzkühler ohne Modifikation:
Seven Temps.png Seven 1080p Ex..jpg Seven Time Ex..png Seven Ultra.jpg Seven Time.jpg Seven Extrem.png Seven 4k.jpg Seven Strike.png

Referenzkarte:
Die Radeon VII läuft mit undervolting in Bereichen von 180-220 Watt. Die Karte ist dabei sehr sparsam für die Leistung. Das ganze habe ich an der 12V Schiene gemessen, inkl PCI Express!Lediglich die 3,3V kann ich nicht erfassen das sind aber meist so um die 3 Watt, irrelevant. 12V2 ist die Seven, AmperxSpannung also beispielsweise 15A x12=180Watt. Das ganze dann +20Watt wegen meiner Systemspezifischen Grundlage.
Power Jurassic.jpg Power UV2.jpg Power RE2.jpg Power UV3.jpg Power UV.jpg Power UV 1.jpg

Einen Undervoltbuild mit der Referenz habe ich kurz verwendet.Settings seht Ihr im Screen.Mit den Einstellungen ist Karte auf einem vernünftigen Leistungs und Lautstärkeniveau. Man kann den Lüfter bis auf 1900 Umdrehungen absenken je nach Setting, ab da ist er quasi unhörbar. Das ist aber mit leichten Einbußen verbunden und wird in 4K nativ nur schwer machbar sein für die meisten. Eine Junction bis 105 Grad ist kein Thema, müsst Ihr mal schauen was eure Karte jeweils so macht. Generell sind Temperaturen unter 95 Grad Junction zu empfehlen, da die Karte darüber rapide an Stabilität verliert.
Anpeilen kann man Spannunsgwerte mit Stock Takt zwischen 920mv-980mv. Mein Setting lief Game und Burnstabil mit 962mv. Mit besseren Temps sind auch niedrigere Spannungen möglich.
Die Karte skaliert den Verbrauch mit der Temperatur, je heißér die Karte, desto höher der Verbrauch. Das ganze bewegt sich in einem Radius von etwa 5-15Watt.
Junction ref, UV + FR.png
Das PowerLimit beträgt aktuell etwa 250Watt ohne Modifikation, das Powerlimit ist meiner Meinung nach ausreichend mit den zusätzlichen 20% die im Wattman möglich sind. Das sind dann 300Watt ASICPower.
Die begrenzt bei etwa 1140mv-1160mv bereits euer Overclocking, meist eher Partiell.Powerviren sind schneller betroffen. Darüber dauerhaft, je nach Anwendung und Last. Diese Leistungsaufnahme bekommt man mit dem Referenzkühler nicht wirklich dauerhaft gekühlt.Man sollte also tunlichst Spannungen unterhalb von 1,1Volt anlegen, besser jedoch eher im Bereich 1020-1060. Die Junction brauch etwa 5-10Min zum Aufheizen, ab dann erreicht diese Ihre "Kerntemperatur". Diese gilt es weg zu kühlen. Je nach Gehäuse kann sich die Karte auch noch weiter aufwärmen.

Wer das ganze noch ausführlicher möchte mit professionellen Messungen findet hier professionelles Futter, inkl. Morpheus und Ghettomod umbau sowie eine vielzahl modifizierter PPT-Files für extremes OC.:
RTG Radeon Tweaker Group – AMD Radeon VII Mods, Tweaks, Untervolten und UEbertakten leicht gemacht | igorsLAB – Tom's Hardware Deutschland

Wer sich an die Timings vom HBM trauen möchte, kann sich mit diesem Tool austoben:
GitHub - Eliovp/amdmemorytweak: Read and modify memory timings on the fly

Zum OC einige erste Tips:
1. Das abflachen der Kurve wie in diesem Beispiel hat sich als nicht produktiv erwiesen, dies kann im Browser, bei Teillast oder im Idle zu Abstürzen führen
Stable Setting.png

2. Unterschätzt den HBM nicht, der lässt sich zwar flott auf 1,2Ghz ziehen, aber wirklich stabil ist der erst wenn er auch wirklich gut gefüllt mit diesen Werten läuft! Sucht euch einen Speicherfresser zum testen.
Wolfenstein und RE2 sind gute Tests in 4K. Auch Divison 2 eignet sich ganz gut. Mit PPT sind auch höhere Werte drin. Der HBM macht sich wie bei der V10 bemerkbar wenn er instabil ist entweder druch Artefakte(meist zu hohe Temperatur, Takt wäre generell möglich) oder aber durch abruptes schließen der Anwendung(Takt ist schlicht zu hoch, wenig zu machen) Die Spannung des Speichers kann auch bei der VII nicht verändert werden.

3.Der entscheidende Wert ist wie bei Vega 10 der HotSpot, nun Junction Temp genannt. Diese erlaubt Werte bis maximal 118 Grad ehe die Karte abschaltet, ab 115 wird diese massiv gedrosselt. Generell hängt die Taktbarkeit des Chips allein an der Junctiontemp, die GPU Temp kann man quasi ignorieren.Normal sind Spreads bis etwa 40 Grad bei hoher Leistungsaufnahme. Bei geringer Leistungsaufnahme sind rund 30 Grad Spread normal. Wer mehr hat, hat die Kühlung nicht korrekt montiert.

4. Das OC testet Ihr auf die schnelle am besten im Firestrike mit dem ersten Benchtest. Dieser erzeugt extreme Last, lasst den im Loop im Fenster laufen und zwar in der Auflösung die Ihr auch normalerweise nutzt. Also WQHD FS Extrem, 4k FS Ultra. Das ist gleichzeitig dann Burn und Stabi.Test. Erst wenn der mal zumindest 15min läuft mit eurem Setting, ohne Ruckler und Artefakte, könnt Ihr das Setting Gamestable machen. der 8k Superposition taugt auch gut als erster Test.
Weitere gute Games zum testen sind Resident Evil 2, vor allem die Zwischensequenzen sind sehr fordernd, Games mit Untiy Engine wie Subnautica oder Sudden Strike sowie Frostbite (SWBF, BF5)
Diese Szene kann ich euch als Stabilitätstest nahe legen, was hier durch alle Sequenzen läuft sollte in allen Lagen stabil sein.
YouTube
5. Takt ist nicht gleich Takt bei der Seven. Die volle Leistung liegt wie bei der V10 erst an wenn die Settings neu geladen wurden mit einem Reboot! Auch könnt Ihr der AMD eigenen Taktanzeige nicht wirklich trauen. Ein angezeigter hoher Takt resultiert nicht automatisch in konstant höherer Performance. Der Abitrator ist auch viel zu schnell für das langsame Auslesetool vom Overdrive. Mittlerweile lesen sowohl der AB, als auch GPUZ und HWInfo weitere Daten aus. Aktuell empfiehlt sich eine Kombi aus HWIinfo und GPUZ. Stellt die Refreshrate der Sensoren zum austesten so gering wie möglich (GPUZ als Beispiel 0,1sec).
6. Die Wattangaben des OSD sind aktuell ziemlich wankend. Woran das liegt weiß ich nicht, im Grunde zeigt das OSD aber valide Werte an wenn dieser nicht gerade wild hin und her springt sondern sich konstant verhält könnt Ihr der Angabe durchaus trauen. Ob der Wert der ASIC oder der Bordpower entspricht ist nicht ganz klar.
7. Das Monitoring über das Wattman Menü(nichts OSD) scheint Stabilitätsprobleme zu verursachen. Benutzt entweder den Afterburner mit aktiverter GPU² Temp(Junction) oder HWInfo. HWInfo ist aktuell das einzigste Tool was die richtige GPU Spannung ausliest, alle anderen Tools zeigen lediglich die eingestellte Spannungsstufe an. Der Wert wird in HW Info fälschlicherweise als Speicherspannung ausgelesen.
8. Wenn Ihr ein Setting habt, stellt dieses ein und speichert ein Profil. Macht daraufhin einen Kaltstart, checkt die Werte und ladet diese bei Bedarf wieder neu rein. Der Wattman verstellt nach dem ersten ändern die Einstellungen gerne nach einem Neustart und zieht mutwillig die Spannungskurve einfach hoch. Nach zwei Kaltstarts passiert dies nicht mehr.
9. Ein Boostbuild ist derzeit nicht wirklich möglich, die Karte reagiert etwas forsch aufn Limitierungen des PowerLimits. Generell sollte man dies eher vermeiden.

Hier mal von mir gemessen Werte der Leistungsaufnahme bei verschiedenen Spannungen. Das ist Bordpower an den Schienen gemessen:
1100mv: 350Watt Powervirus und 300Watt normale Last.
1040mv: 300Watt Powervirus und 260Watt normale Last.
950mv: 240Watt Powervirus und 205Watt normale Last.

Die Werte sind mit völlig offenen Powerlimit gemessen, bei begrenztem PL sind diese niedriger. Ebenfalls spielt die Auflösunf und die Last der Engine natürlich eine Rolle. Die Powerviruswerte sind dabei Maximalwerte.
Für WQHD könnt Ihr etwa 20Watt abziehen von diesen Werten.
Zu bedenken dabei ist das meine Karte recht kühl läuft, je kühler die Karte, desto weniger nimmt diese auf. Gut zu sehen an diesem Screen hier gemessen an einem Standbild. (Beachtet V2 Power und die GPU Temp)
Screenshot (669).png

Für Freunde ordentlichen Overclockings hier meine High OC Werte. Gebencht mit rund 2,1Ghz Core und 1236 HBM
High OC Benchmarks
High OC 4k Opt.png High OC Time Ex.png High OC 1080p Ex.png High OC Strike.png High OC FS Ultra.png High OC Time .png High OC FS Extrem.png
 

Anhänge

  • Seven.jpg
    Seven.jpg
    686,6 KB · Aufrufe: 4.133
Zuletzt bearbeitet:
VII Balancedbuild

Setting:
Core: 1965/1099
Speicher: 1200 Timing 2
Power Limit:+20%
Realer Takt: ~1900Mhz (1870-1930)
Temperaturen TJunction: 79-85 normal, 89 Peak.
Treiber:19.2.2
Leistungssteigerung: 6-13%
Balanced Setting.png

Benchrun:
VII Balanced Time Ex..png VII Balanced Time.png VII Balanced Strike.png VII Balanced FS Extrem.png VII Balanced FS Ultra.png VII Balanced 1080p Ex..jpg VII Balanced 4k.jpg

Power und Temps:
Temps ACO UHD.png Balanced Temps normale Last.png Balanced Temps, RE2 Burn.png Power Balanced WQHD.jpg Power FS Ultra Balanced.jpg

Game Benchmarks:
Dirt 4 WQHD & UHD PCGH.png SE4 PCGH WQHD & UHD.png Prey PCGH WQHD & UHD.png Wolfenstein UHD PCGH.png RE2 PCGH WQHD & UHD L-Shape.png SWBF2 PCGH WQHD % UHD.png RE2 PCGH WQHD & UHD.png ACP PCGH Riding Phobos UHD.png 2019.02.24-01.35.jpg ACO Ultra UHD.jpg
Borderlands QHD.jpg Gears5 UHD.png

Vergleichswerte:
http://www.pcgameshardware.de/Radeon-VII-Grafikkarte-268194/Tests/Benchmark-Review-1274185/2/
http://www.pcgameshardware.de/Radeo...5K-Compute-Tessellation-Undervolting-1274222/
http://www.pcgameshardware.de/Assas...assins-Creed-Odyssey-Benchmarks-1266222/2/#a3

Hinweise:
-Bei ACO muss man beachten dass es schon einige Patches gab und die Radeonperformance generell deutlich gestiegen ist. Wie es sich bei den Geforce verhält weiß ich nicht.
-Dirt 4 lässt sich nicht mit OCat messen, die min Fps. entsprechen nicht den P99 von PCGH. Die P99 dürften marginal höher(also besser!) liegen als die min Fps.
 
Zuletzt bearbeitet:
VII Beastbuild

Umbau mit Morpheus 2. Verwendet wurde die originale Baseplate und Backplate. Die VRMS haben alle zusätzliche Kühlkörper erhalten. Zwei NF A12x25 kühlen das ganze zusammen mit einem kleinen 80er Lüfter der angestaute Luft abzieht am Gehäuse. Das ganze ist noch garniert mit einem selbstgebauten Interposerkühler.

Generell kann man den M2 verbauen, er passt und kühlt auch adäquat. Jedoch ist die Montage eher was für geübte, aufgrund der damit verbundenen Tücken verzichte ich auf eine Anleitung und empfehle darauf auf den Morpheus in der VII Edition zu warten, dieser ist bereits angekündigt von Raijintek.

Beast1.jpg Beast2.jpg Beast3.jpg
Setting:
Core: 2029/1098
Speicher: 1200 Timing Auto
Power Limit:+50% (PPT Mod)
Realer Takt: ~1990Mhz (1970-2015)
Temperaturen TJunction: ~95 Grad Heavy Load
Treiber:19.3.1
Leistungssteigerung: 14-20%

Benchrun:
Strike Beast.jpg FS Extrem Beast.jpg FS Ultra Beast.jpg Time Ex The Beast.jpg Time Beast.jpg 1080p Ex Beast.jpg 4k Opt Beast.jpg

Power & Temps:
Beast Temps heavy Load.jpg Beast Temps, normal Load.jpg

Game Benchmarks:
TWW2 Ultra UHD Beast.jpg ACO UHD Beast.jpg SOTR UHD BEAST.jpg Strange PPT.jpg Divison 2 UHD Ultra.jpg Divison 2 QHD Ultra.jpg F1 2029 QHD.png F1 2019 UHD.png Forza QHD, HBCC Ultra.png Borderlands QHD.jpg Gears5 UHD.png

Hinweise
-TWW2 Ultra Preset
-SOTTR manuelles Max Out
-Strange Brigade manuelles Max Out
-F1 2019 Monaco, Wolkenlos, MaxOut ohne Fidelity, Kamera Verfolger Weit.
-Forza Ultra Preset mit HBCC
-Ohne Kennzeichnung stets ohne HDR.
 
Zuletzt bearbeitet:
Reserviere nicht so viel, sondern hau raus :D
Bin sehr gespannt, da eine Radeon VII endlich für mich eine Aufrüstoption, nach meiner Zwischenlösung mit der 580, ist.
Gruß T.
 
Ich hab hier mal den ersten Versuch zur SoftPowerPlay. Ob die Table so akzeptiert wird muss erst getestet werden, da es deutliche Veränderungen gab.

Anhang anzeigen MorePowerVegaVII.zip

Den ersten Teil habe ich schon mal entschlüsselt. Der 2. ist etwas mehr Arbeit, sollte aber kein Problem darstellen. Kompliziert wirds erst, wenn der neue PPTable_t Datentyp innerhalb der Table Ärger macht.
Code:
typedef struct _ATOM_VEGA20_POWERPLAYTABLE
{
    struct atom_common_table_header sHeader;
    {
C2 06        USHORT usStructureSize;
0B        UCHAR  ucTableFormatRevision;   /*Change it when the Parser is not backward compatible */
00        UCHAR  ucTableContentRevision;  /*Change it only when the table needs to change but the firmware */
                                                   /*Image can't be updated, while Driver needs to carry the new table! */
    } ATOM_COMMON_TABLE_HEADER;
      
02      UCHAR  ucTableRevision;
C2 06     USHORT usTableSize;
34 08 00 00      ULONG  ulGoldenPPID;
A4 35 00 00      ULONG  ulGoldenRevision;
7C 00      USHORT usFormatID;

09 00 00 00      ULONG  ulPlatformCaps;

1A      UCHAR  ucThermalControllerType;

FA 00 (250W)     USHORT usSmallPowerLimit1;
FA 00 (250W)     USHORT usSmallPowerLimit2;
FA 00 (250W)     USHORT usBoostPowerLimit;
00 00      USHORT usODTurboPowerLimit;
00 00      USHORT usODPowerSavePowerLimit;
76 00 (118°C)     USHORT usSoftwareShutdownTemp;

      ATOM_VEGA20_POWER_SAVING_CLOCK_RECORD PowerSavingClockTable;    //PowerSavingClock Mode Clock Min/Max array
    typedef struct _ATOM_VEGA20_POWER_SAVING_CLOCK_RECORD
    {
01        UCHAR ucTableRevision;
0B 00 00 00        ULONG PowerSavingClockCount;                // Count of PowerSavingClock Mode
        ULONG PowerSavingClockMax  [16];              // PowerSavingClock Mode Clock Maximum array In MHz
09 07 00 00
6E 04 00 00
CC 03 00 00
CC 03 00 00
CC 03 00 00
E8 03 00 00
C9 04 00 00
6E 04 00 00
6E 04 00 00
34 04 00 00
2A 03 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00        
        ULONG PowerSavingClockMin  [16];              // PowerSavingClock Mode Clock Minimum array In MHz
BC 02 00 00
66 01 00 00
36 01 00 00
36 01 00 00
36 01 00 00
5E 01 00 00
26 02 00 00
66 01 00 00
66 01 00 00
93 00 00 00
0E 01 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
    } ATOM_VEGA20_POWER_SAVING_CLOCK_RECORD;
            
      ATOM_VEGA20_OVERDRIVE8_RECORD OverDrive8Table;       //OverDrive8 Feature capabilities and Settings Range (Max and Min)
    typedef struct _ATOM_VEGA20_OVERDRIVE8_RECORD
    {
01        UCHAR ucODTableRevision;
0E 00 00 00        ULONG ODFeatureCount;
        UCHAR ODFeatureCapabilities [32];   //OD feature support flags
01
01
01
01
01
01
01
01
01
00
01
01
01
01
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00    
1D 00 00 00        ULONG ODSettingCount;
        ULONG ODSettingsMax [32];           //Upper Limit for each OD Setting
98 08 00 00 
98 08 00 00 
98 08 00 00 
C2 04 00 00 
98 08 00 00 
C2 04 00 00 
98 08 00 00 
C2 04 00 00 
B0 04 00 00 
14 00 00 00 
0A 0F 00 00 
0A 0F 00 00 
5F 00 00 00 
6E 00 00 00 
02 00 00 00 
00 00 00 00 
01 00 00 00 
01 00 00 00 
01 00 00 00 
5F 00 00 00 
64 00 00 00 
5F 00 00 00 
64 00 00 00 
5F 00 00 00 
64 00 00 00 
5F 00 00 00 
64 00 00 00 
5F 00 00 00 
64 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00
        ULONG ODSettingsMin [32];           //Lower Limit for each OD Setting
28 03 00 00 
28 03 00 00 
28 03 00 00 
E2 02 00 00 
28 03 00 00 
E2 02 00 00 
28 03 00 00 
E2 02 00 00 
5E 01 00 00 
14 00 00 00 
C2 01 00 00 
C2 01 00 00 
19 00 00 00 
32 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
19 00 00 00 
14 00 00 00 
19 00 00 00 
14 00 00 00 
19 00 00 00 
14 00 00 00 
19 00 00 00 
14 00 00 00 
19 00 00 00 
14 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00
    } ATOM_VEGA20_OVERDRIVE8_RECORD;
      
      USHORT usReserve[5];
00 00
00 00
00 00
00 00
00 00

      PPTable_t smcPPTable;
03 00 00 00 FF EF F4 39 00 00 00 00 FA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FA 00 00 00 32 00 00 00 4A 01 00 00 64 00 6E 00 5E 00 73 00 73 00 FF FF FF FF FF FF 00 00 00 00 00 00 00 00 01 00 73 00 00 00 00 00 00 00 00 00 86 0B 22 0B 0B 13 43 12 26 00 00 00 01 01 09 00 00 00 00 00 00 00 00 00 5B B1 BF 3E EC 51 F8 BE 65 19 52 3F 00 01 08 00 64 3B 9F 3F 16 DE A5 BD 00 00 00 00 00 00 00 00 00 00 00 00 00 01 08 00 35 5E 9A 3F 8F 36 2E 3E 00 00 00 00 00 00 00 00 00 00 00 00 00 01 08 00 69 6F B0 3F 48 33 16 3D 00 00 00 00 00 00 00 00 00 00 00 00 00 01 08 00 E5 61 A1 3F 12 F7 58 BD 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 B5 15 83 3F C2 DD 19 3E 00 00 00 00 00 00 00 00 00 00 00 00 00 01 08 00 86 38 86 3F 0E BE 30 3E 00 00 00 00 00 00 00 00 00 00 00 00 00 01 08 00 83 C0 5A 3F 4D A1 F3 3D 00 00 00 00 00 00 00 00 00 00 00 00 02 01 08 00 00 00 00 00 00 00 00 00 A4 70 8D 3F E4 14 85 BF D5 E7 32 3F 02 01 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 D5 E7 32 3F 01 01 08 00 00 00 80 3F 00 00 00 00 D1 91 FC 3E 1F 85 2B BF 32 77 75 3F BC 02 28 03 6E 04 5C 05 0A 06 93 06 D5 06 ED 06 09 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 66 01 E6 01 6B 02 F4 02 52 03 CC 03 6E 04 6E 04 36 01 90 01 0C 02 6B 02 A8 02 F4 02 52 03 CC 03 36 01 90 01 0C 02 6B 02 A8 02 F4 02 52 03 CC 03 36 01 0C 02 37 02 6B 02 A8 02 F4 02 52 03 CC 03 5E 01 20 03 E8 03 E8 03 26 02 62 02 B2 02 F8 02 66 03 C0 03 38 04 C9 04 66 01 C6 01 37 02 A8 02 F4 02 52 03 CC 03 6E 04 66 01 C6 01 37 02 A8 02 F4 02 52 03 CC 03 6E 04 93 00 F2 00 58 01 E4 01 15 02 AA 03 13 04 34 04 0E 01 1C 02 2A 03 00 00 00 00 00 00 00 00 00 00 09 07 6E 04 CC 03 CC 03 CC 03 E8 03 6E 04 6E 04 34 04 2A 03 C9 04 00 00 C8 00 2C 01 60 09 F0 0A 28 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 07 01 00 00 00 00 00 00 02 06 06 50 00 34 01 00 00 00 00 00 00 00 00 00 00 00 00 90 01 90 01 90 01 90 01 90 01 90 01 90 01 14 00 54 0B 54 0B 0A 0F 5F 00 00 00 00 02 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 50 8D 97 3C 0A D7 A3 3B 00 00 00 00 EA B2 98 3C 87 A2 40 3D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A0 00 01 00 00 00 00 00 00 00 A0 00 00 00 08 10 02 10 1A 04 4C 04 E8 03 E8 03 E8 03 E8 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 86 0B 22 0B 54 0B 00 00 90 01 90 01 38 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      
} ATOM_Vega20_POWERPLAYTABLE;

enum ATOM_VEGA20_ODFEATURE_ID {
  ATOM_VEGA20_ODFEATURE_GFXCLK_LIMITS = 0,
  ATOM_VEGA20_ODFEATURE_GFXCLK_CURVE,
  ATOM_VEGA20_ODFEATURE_UCLK_MAX,
  ATOM_VEGA20_ODFEATURE_POWER_LIMIT,
  ATOM_VEGA20_ODFEATURE_FAN_ACOUSTIC_LIMIT,    //FanMaximumRpm
  ATOM_VEGA20_ODFEATURE_FAN_SPEED_MIN,         //FanMinimumPwm
  ATOM_VEGA20_ODFEATURE_TEMPERATURE_FAN,       //FanTargetTemperature
  ATOM_VEGA20_ODFEATURE_TEMPERATURE_SYSTEM,    //MaxOpTemp
  ATOM_VEGA20_ODFEATURE_MEMORY_TIMING_TUNE,
  ATOM_VEGA20_ODFEATURE_FAN_ZERO_RPM_CONTROL,
  ATOM_VEGA20_ODFEATURE_COUNT,
};

enum ATOM_VEGA20_ODSETTING_ID {
  ATOM_VEGA20_ODSETTING_GFXCLKFMAX = 0,
  ATOM_VEGA20_ODSETTING_GFXCLKFMIN,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEFREQ_P1,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEVOLTAGEOFFSET_P1,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEFREQ_P2,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEVOLTAGEOFFSET_P2,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEFREQ_P3,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEVOLTAGEOFFSET_P3,
  ATOM_VEGA20_ODSETTING_UCLKFMAX,
  ATOM_VEGA20_ODSETTING_POWERPERCENTAGE,
  ATOM_VEGA20_ODSETTING_FANRPMMIN,
  ATOM_VEGA20_ODSETTING_FANRPMACOUSTICLIMIT,
  ATOM_VEGA20_ODSETTING_FANTARGETTEMPERATURE,
  ATOM_VEGA20_ODSETTING_OPERATINGTEMPMAX,
  ATOM_VEGA20_ODSETTING_COUNT,
};
typedef enum ATOM_VEGA20_ODSETTING_ID ATOM_VEGA20_ODSETTING_ID;

enum ATOM_VEGA20_PPCLOCK_ID {
  ATOM_VEGA20_PPCLOCK_GFXCLK = 0,
  ATOM_VEGA20_PPCLOCK_VCLK,
  ATOM_VEGA20_PPCLOCK_DCLK,
  ATOM_VEGA20_PPCLOCK_ECLK,
  ATOM_VEGA20_PPCLOCK_SOCCLK,
  ATOM_VEGA20_PPCLOCK_UCLK,
  ATOM_VEGA20_PPCLOCK_FCLK,
  ATOM_VEGA20_PPCLOCK_DCEFCLK,
  ATOM_VEGA20_PPCLOCK_DISPCLK,
  ATOM_VEGA20_PPCLOCK_PIXCLK,
  ATOM_VEGA20_PPCLOCK_PHYCLK,
  ATOM_VEGA20_PPCLOCK_COUNT,
};
typedef enum ATOM_VEGA20_PPCLOCK_ID ATOM_VEGA20_PPCLOCK_ID;
 
Zuletzt bearbeitet:
Ich hab hier mal den ersten Versuch zur SoftPowerPlay. Ob die Table so akzeptiert wird muss erst getestet werden, da es deutliche Veränderungen gab.

Anhang anzeigen 1031965

!!! Vorsicht, Testversion !!!
Soll heißen, möglicherweise bootet das System mit dieser Version der SoftPowerPlayTable nicht, da es dann nicht mehr mit einer 1:1 Kopie der Daten aus dem BIOS getan ist.

Den ersten Teil habe ich schonmal entschlüsselt. Der 2. ist etwas mehr Arbeit, sollte aber kein Problem darstellen. Kompliziert wirds erst, wenn der neue PPTable_t Datentyp innerhalb der Table Ärger macht.
Code:
typedef struct _ATOM_VEGA20_POWERPLAYTABLE
{
    struct atom_common_table_header sHeader;
    {
C2 06        USHORT usStructureSize;
0B        UCHAR  ucTableFormatRevision;   /*Change it when the Parser is not backward compatible */
00        UCHAR  ucTableContentRevision;  /*Change it only when the table needs to change but the firmware */
                                                   /*Image can't be updated, while Driver needs to carry the new table! */
    } ATOM_COMMON_TABLE_HEADER;
      
02      UCHAR  ucTableRevision;
C2 06     USHORT usTableSize;
34 08 00 00      ULONG  ulGoldenPPID;
A4 35 00 00      ULONG  ulGoldenRevision;
7C 00      USHORT usFormatID;

09 00 00 00      ULONG  ulPlatformCaps;

1A      UCHAR  ucThermalControllerType;

FA 00 (250W)     USHORT usSmallPowerLimit1;
FA 00 (250W)     USHORT usSmallPowerLimit2;
FA 00 (250W)     USHORT usBoostPowerLimit;
00 00      USHORT usODTurboPowerLimit;
00 00      USHORT usODPowerSavePowerLimit;
76 00 (118°C)     USHORT usSoftwareShutdownTemp;

      ATOM_VEGA20_POWER_SAVING_CLOCK_RECORD PowerSavingClockTable;    //PowerSavingClock Mode Clock Min/Max array
    typedef struct _ATOM_VEGA20_POWER_SAVING_CLOCK_RECORD
    {
01        UCHAR ucTableRevision;
0B 00 00 00        ULONG PowerSavingClockCount;                // Count of PowerSavingClock Mode
        ULONG PowerSavingClockMax  [16];              // PowerSavingClock Mode Clock Maximum array In MHz
09 07 00 00
6E 04 00 00
CC 03 00 00
CC 03 00 00
CC 03 00 00
E8 03 00 00
C9 04 00 00
6E 04 00 00
6E 04 00 00
34 04 00 00
2A 03 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00        
        ULONG PowerSavingClockMin  [16];              // PowerSavingClock Mode Clock Minimum array In MHz
BC 02 00 00
66 01 00 00
36 01 00 00
36 01 00 00
36 01 00 00
5E 01 00 00
26 02 00 00
66 01 00 00
66 01 00 00
93 00 00 00
0E 01 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
    } ATOM_VEGA20_POWER_SAVING_CLOCK_RECORD;
            
      ATOM_VEGA20_OVERDRIVE8_RECORD OverDrive8Table;       //OverDrive8 Feature capabilities and Settings Range (Max and Min)
    typedef struct _ATOM_VEGA20_OVERDRIVE8_RECORD
    {
01        UCHAR ucODTableRevision;
0E 00 00 00        ULONG ODFeatureCount;
        UCHAR ODFeatureCapabilities [32];   //OD feature support flags
01
01
01
01
01
01
01
01
01
00
01
01
01
01
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00    
1D 00 00 00        ULONG ODSettingCount;
        ULONG ODSettingsMax [32];           //Upper Limit for each OD Setting
98 08 00 00 
98 08 00 00 
98 08 00 00 
C2 04 00 00 
98 08 00 00 
C2 04 00 00 
98 08 00 00 
C2 04 00 00 
B0 04 00 00 
14 00 00 00 
0A 0F 00 00 
0A 0F 00 00 
5F 00 00 00 
6E 00 00 00 
02 00 00 00 
00 00 00 00 
01 00 00 00 
01 00 00 00 
01 00 00 00 
5F 00 00 00 
64 00 00 00 
5F 00 00 00 
64 00 00 00 
5F 00 00 00 
64 00 00 00 
5F 00 00 00 
64 00 00 00 
5F 00 00 00 
64 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00
        ULONG ODSettingsMin [32];           //Lower Limit for each OD Setting
28 03 00 00 
28 03 00 00 
28 03 00 00 
E2 02 00 00 
28 03 00 00 
E2 02 00 00 
28 03 00 00 
E2 02 00 00 
5E 01 00 00 
14 00 00 00 
C2 01 00 00 
C2 01 00 00 
19 00 00 00 
32 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
19 00 00 00 
14 00 00 00 
19 00 00 00 
14 00 00 00 
19 00 00 00 
14 00 00 00 
19 00 00 00 
14 00 00 00 
19 00 00 00 
14 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00
    } ATOM_VEGA20_OVERDRIVE8_RECORD;
      
      USHORT usReserve[5];
00 00
00 00
00 00
00 00
00 00

      PPTable_t smcPPTable;
03 00 00 00 FF EF F4 39 00 00 00 00 FA 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 FA 00 00 00 32 00 00 00 4A 01 00 00 64 00 6E 00 5E 00 73 00 73 00 FF FF FF FF FF FF 00 00 00 00 00 00 00 00 01 00 73 00 00 00 00 00 00 00 00 00 86 0B 22 0B 0B 13 43 12 26 00 00 00 01 01 09 00 00 00 00 00 00 00 00 00 5B B1 BF 3E EC 51 F8 BE 65 19 52 3F 00 01 08 00 64 3B 9F 3F 16 DE A5 BD 00 00 00 00 00 00 00 00 00 00 00 00 00 01 08 00 35 5E 9A 3F 8F 36 2E 3E 00 00 00 00 00 00 00 00 00 00 00 00 00 01 08 00 69 6F B0 3F 48 33 16 3D 00 00 00 00 00 00 00 00 00 00 00 00 00 01 08 00 E5 61 A1 3F 12 F7 58 BD 00 00 00 00 00 00 00 00 00 00 00 00 00 01 03 00 B5 15 83 3F C2 DD 19 3E 00 00 00 00 00 00 00 00 00 00 00 00 00 01 08 00 86 38 86 3F 0E BE 30 3E 00 00 00 00 00 00 00 00 00 00 00 00 00 01 08 00 83 C0 5A 3F 4D A1 F3 3D 00 00 00 00 00 00 00 00 00 00 00 00 02 01 08 00 00 00 00 00 00 00 00 00 A4 70 8D 3F E4 14 85 BF D5 E7 32 3F 02 01 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 D5 E7 32 3F 01 01 08 00 00 00 80 3F 00 00 00 00 D1 91 FC 3E 1F 85 2B BF 32 77 75 3F BC 02 28 03 6E 04 5C 05 0A 06 93 06 D5 06 ED 06 09 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 66 01 E6 01 6B 02 F4 02 52 03 CC 03 6E 04 6E 04 36 01 90 01 0C 02 6B 02 A8 02 F4 02 52 03 CC 03 36 01 90 01 0C 02 6B 02 A8 02 F4 02 52 03 CC 03 36 01 0C 02 37 02 6B 02 A8 02 F4 02 52 03 CC 03 5E 01 20 03 E8 03 E8 03 26 02 62 02 B2 02 F8 02 66 03 C0 03 38 04 C9 04 66 01 C6 01 37 02 A8 02 F4 02 52 03 CC 03 6E 04 66 01 C6 01 37 02 A8 02 F4 02 52 03 CC 03 6E 04 93 00 F2 00 58 01 E4 01 15 02 AA 03 13 04 34 04 0E 01 1C 02 2A 03 00 00 00 00 00 00 00 00 00 00 09 07 6E 04 CC 03 CC 03 CC 03 E8 03 6E 04 6E 04 34 04 2A 03 C9 04 00 00 C8 00 2C 01 60 09 F0 0A 28 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 07 01 00 00 00 00 00 00 02 06 06 50 00 34 01 00 00 00 00 00 00 00 00 00 00 00 00 90 01 90 01 90 01 90 01 90 01 90 01 90 01 14 00 54 0B 54 0B 0A 0F 5F 00 00 00 00 02 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 50 8D 97 3C 0A D7 A3 3B 00 00 00 00 EA B2 98 3C 87 A2 40 3D 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 A0 00 01 00 00 00 00 00 00 00 A0 00 00 00 08 10 02 10 1A 04 4C 04 E8 03 E8 03 E8 03 E8 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 86 0B 22 0B 54 0B 00 00 90 01 90 01 38 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
      
} ATOM_Vega20_POWERPLAYTABLE;

enum ATOM_VEGA20_ODFEATURE_ID {
  ATOM_VEGA20_ODFEATURE_GFXCLK_LIMITS = 0,
  ATOM_VEGA20_ODFEATURE_GFXCLK_CURVE,
  ATOM_VEGA20_ODFEATURE_UCLK_MAX,
  ATOM_VEGA20_ODFEATURE_POWER_LIMIT,
  ATOM_VEGA20_ODFEATURE_FAN_ACOUSTIC_LIMIT,    //FanMaximumRpm
  ATOM_VEGA20_ODFEATURE_FAN_SPEED_MIN,         //FanMinimumPwm
  ATOM_VEGA20_ODFEATURE_TEMPERATURE_FAN,       //FanTargetTemperature
  ATOM_VEGA20_ODFEATURE_TEMPERATURE_SYSTEM,    //MaxOpTemp
  ATOM_VEGA20_ODFEATURE_MEMORY_TIMING_TUNE,
  ATOM_VEGA20_ODFEATURE_FAN_ZERO_RPM_CONTROL,
  ATOM_VEGA20_ODFEATURE_COUNT,
};

enum ATOM_VEGA20_ODSETTING_ID {
  ATOM_VEGA20_ODSETTING_GFXCLKFMAX = 0,
  ATOM_VEGA20_ODSETTING_GFXCLKFMIN,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEFREQ_P1,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEVOLTAGEOFFSET_P1,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEFREQ_P2,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEVOLTAGEOFFSET_P2,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEFREQ_P3,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEVOLTAGEOFFSET_P3,
  ATOM_VEGA20_ODSETTING_UCLKFMAX,
  ATOM_VEGA20_ODSETTING_POWERPERCENTAGE,
  ATOM_VEGA20_ODSETTING_FANRPMMIN,
  ATOM_VEGA20_ODSETTING_FANRPMACOUSTICLIMIT,
  ATOM_VEGA20_ODSETTING_FANTARGETTEMPERATURE,
  ATOM_VEGA20_ODSETTING_OPERATINGTEMPMAX,
  ATOM_VEGA20_ODSETTING_COUNT,
};
typedef enum ATOM_VEGA20_ODSETTING_ID ATOM_VEGA20_ODSETTING_ID;

enum ATOM_VEGA20_PPCLOCK_ID {
  ATOM_VEGA20_PPCLOCK_GFXCLK = 0,
  ATOM_VEGA20_PPCLOCK_VCLK,
  ATOM_VEGA20_PPCLOCK_DCLK,
  ATOM_VEGA20_PPCLOCK_ECLK,
  ATOM_VEGA20_PPCLOCK_SOCCLK,
  ATOM_VEGA20_PPCLOCK_UCLK,
  ATOM_VEGA20_PPCLOCK_FCLK,
  ATOM_VEGA20_PPCLOCK_DCEFCLK,
  ATOM_VEGA20_PPCLOCK_DISPCLK,
  ATOM_VEGA20_PPCLOCK_PIXCLK,
  ATOM_VEGA20_PPCLOCK_PHYCLK,
  ATOM_VEGA20_PPCLOCK_COUNT,
};
typedef enum ATOM_VEGA20_PPCLOCK_ID ATOM_VEGA20_PPCLOCK_ID;

Teste und berichte.

Table läuft und bootet einwandfrei. Eine PL erhöhung ist jedoch noch nicht aktiv, hattest du schon was geändert?
Ich hab exakt 25Amper gemessen. Sind also die 20% Plus.
 
Zuletzt bearbeitet von einem Moderator:
Table läuft und bootet einwandfrei. Eine PL erhöhung ist jedoch noch nicht aktiv, hattest du schon was geändert?
Ich hab exakt 25Amper gemessen. Sind also die 20% Plus.

UFF! Ich muss also nicht über AMD schimpfen. Nur ein hübsches Rätsel, nix Unmögliches. :-)

..nope, das ist die Vanilla Version, völlig unverändert.

Um nur das Powerlimit zu erhöhen, reichts wohl auch die Wattzahlen zu erhöhen, evtl auch noch im 2. Teil, der PPTable_t; aber wir wollen ja vollen Zugriff auf Overdrive Funktionen wie Lüfter und Boost und so..
 
Zuletzt bearbeitet:
Sieht schon mal gut aus. Also ich bin aktuell hart Powerlimitiert ab spätesten 1160mv. Mehr PT würde schon was bringen fürs erste. Darüber begrenzt wahrscheinlich so oder so bei der Ref die Junction Temp.
 
Das Powerlimit sollte noch mit wenig Aufwand möglich sein, jedenfalls das absolute. Den Slider kann man auch wieder erhöhen, aber da brauchts noch Forschung. ;-)

Update:
Die Fan Table habe ich auch identifiziert:
Code:
00 00  (°C)  FanStopTemp
00 00  (°C)  FanStartTemp

90 01  (0x190 = 400)  FanGainEdge
90 01  (0x190 = 400)  FanGainHotspot
90 01  (0x190 = 400)  FanGainLiquid
90 01  (0x190 = 400)  FanGainVrGfx
90 01  (0x190 = 400)  FanGainVrSoc
90 01  (0x190 = 400)  FanGainPlx
90 01  (0x190 = 400)  FanGainHbm
14 00  (0x14 = 20%)  FanPwmMin
54 0B  (0xB54 = 2900RPM)  FanAcousticLimitRpm
54 0B  (0xB54 = 2900RPM)  FanThrottlingRpm
0A 0F  (0xF0A = 3850RPM)  FanMaximumRpm
5F 00  (0x5F = 95°C)  FanTargetTemperature
00 00    FanTargetGfxclk
00  (00=off, 01=on)     FanZeroRpmEnable
02       FanTachEdgePerRev

00 00  FuzzyFan_ErrorSetDelta;
00 00  FuzzyFan_ErrorRateSetDelta;
00 00  FuzzyFan_PwmSetDelta;
00 00  FuzzyFan_Reserved;
...
54 0B (0xB54 = 2900RPM)  MGpuFanBoostLimitRpm;
00 00  padding16_Fan;   

90 01 (0x190 = 400)  FanGainVrMem0;
90 01 (0x190 = 400)  FanGainVrMem1;
...
 
Zuletzt bearbeitet:
FanTable wäre super, irgendwie kommt der auf meine beiden F12 grade nicht klar.
Power Mod läuft :daumen:

Etwas über 360Watt gehen durch bei maximaler Spannung. Zumindest im ersten Test, da gibts sicher noch Anwendungen die mehr brennen.
 
Zuletzt bearbeitet:
Ich werde wohl den Flüssigmetall Mod machen. Was könnt ihr mir empfehlen? Außerdem welches Set kann man nehmen für die SpaWas? Also Alukühlblöcke und Klebepads.
 
Ich werde wohl den Flüssigmetall Mod machen. Was könnt ihr mir empfehlen? Außerdem welches Set kann man nehmen für die SpaWas? Also Alukühlblöcke und Klebepads.

Die SpaWas sind doch sowieso recht kühl. Warum willst du da noch was drauf machen?

Asrock hat ein BIOS für die VII Phantom released, in der sich eine neue Version von Atiflash (kann ich leider nicht einfach rausschneiden) befindet. Der zweite Teil ist die exakte Kopie des VII reference BIOS, also dasselbe legacy image, sub vendor AMD, alles gleich. Nur ist da ein UEFI/GOP image mit an Bord.

ASRock > Phantom Gaming X Radeon VII 16G

Anhang anzeigen 1032247

Hat das irgendwelche Auswirkungen mit dem UEFI/GOP Image?
 
Ja, man kann im UEFI Modus booten.. :-D

Zur Erklärung, in so einem BIOS, ob Nvidia oder AMD, gibts bei vorhandener UEFI Unterstützung genau 2 Images; ein Legacy Rom und ein UEFI/GOP. Das ist normal, der UEFI/GOP Teil ist noch komprimiert, aber das nur am Rande, und enthält alle Infos was UEFI betrifft. Das ist dann universell für eine Gruppe von GPUs, (bei AMD v1.xx alle Karten bis einschließlich Polaris, Vega v2.0.xx und v2.5 für VII, sollte evtl auch für Vega 56/64 funzen, keine Ahnung).
Die für uns interessanten Informationen (Taktraten, Spannngen, alles spezifische zur Karte oder bestimmten GPU) finden sich im ersten Image, dem Legacy Teil des BIOS.

Das ich im ersten BIOS kein GOP/UEFI gefunden habe war schon sehr außergewöhnlich. Den damit muss tatsächlich CSM im BIOS aktiviert sein, da die Karte sonst nicht im UEFI booten sollte, es sei denn man hätte das woanders hingepackt oder sowas. Jetzt schiebt man die Version mit UEFI hinterher, als ob man bei AMD mal wieder nicht rechtzeitig fertig geworden wäre. Deckt sich ja so mit dem Pressestimmen.

Also das BIOS kann jeder auf seine VII Ref packen, da es ja das Referenz BIOS mit UEFI ist. Also wirklich 1:1, nur eben vollständig.
 
Schau mal bitte ob du diesen Slider hier im Wattman irgendwie standardmäßig an die Außenkante bekommst so wie bei meiner Mausposition zu sehen. Der scheint mir der Grund zu sein warum kein OC übernommen wird derzeit. Es geht nur um den Max Slider, nicht um die Kurve selbst, die funktioniert. Wenn du das hinkriegst dürften alle overclocken können so wie es sein soll. Das wäre der Durchbruch.

Screenshot (259).png
 
Über den inhalt mach ich mir auch erst später Gedanken, im Moment versuche ich noch die restlichen Bytes alle zuzuordnen, das sind ja inzwischen nicht zu wenige. :-D

Dann sehn wir was wir alles Steuern können, auch über Overdrive. Wenn du mehr Takt willst, da muss man glaube ich auch erstmal studieren. Aber möglich ist es, wie gesagt nur ein kleineres Rätsel. Und ich mach bald Feierabend.. war ja dann wieder lang genug heute. ;-)
 
Über den inhalt mach ich mir auch erst später Gedanken, im Moment versuche ich noch die restlichen Bytes alle zuzuordnen, das sind ja inzwischen nicht zu wenige. :-D

Dann sehn wir was wir alles Steuern können, auch über Overdrive. Wenn du mehr Takt willst, da muss man glaube ich auch erstmal studieren. Aber möglich ist es, wie gesagt nur ein kleineres Rätsel. Und ich mach bald Feierabend.. war ja dann wieder lang genug heute. ;-)

Alles klar, im Grunde sollte man den finden können. Wie gesagt, dieser Max Balken ist die Quelle allen übels. Wenn du Ihn findest sag bescheid :)
 
Uff.. endlich fertig und alle Bytes zugeordnet. Nun müssen wir ja nur noch rausfinden was man damit anstellen kann.. :P

Code:
typedef struct _ATOM_VEGA20_POWERPLAYTABLE
{
    struct atom_common_table_header sHeader;
    {
C2 06        USHORT usStructureSize;
0B        UCHAR  ucTableFormatRevision;   /*Change it when the Parser is not backward compatible */
00        UCHAR  ucTableContentRevision;  /*Change it only when the table needs to change but the firmware */
                                                   /*Image can't be updated, while Driver needs to carry the new table! */
    } ATOM_COMMON_TABLE_HEADER;
      
02      UCHAR  ucTableRevision;
C2 06     USHORT usTableSize;
34 08 00 00      ULONG  ulGoldenPPID;
A4 35 00 00      ULONG  ulGoldenRevision;
7C 00      USHORT usFormatID;

09 00 00 00      ULONG  ulPlatformCaps;

1A      UCHAR  ucThermalControllerType;

FA 00 (250W)     USHORT usSmallPowerLimit1;
FA 00 (250W)     USHORT usSmallPowerLimit2;
FA 00 (250W)     USHORT usBoostPowerLimit;
00 00      USHORT usODTurboPowerLimit;
00 00      USHORT usODPowerSavePowerLimit;
76 00 (118°C)     USHORT usSoftwareShutdownTemp;

      ATOM_VEGA20_POWER_SAVING_CLOCK_RECORD PowerSavingClockTable;    //PowerSavingClock Mode Clock Min/Max array
    typedef struct _ATOM_VEGA20_POWER_SAVING_CLOCK_RECORD
    {
01        UCHAR ucTableRevision;
0B 00 00 00        ULONG PowerSavingClockCount;                // Count of PowerSavingClock Mode
        ULONG PowerSavingClockMax  [16];              // PowerSavingClock Mode Clock Maximum array In MHz
09 07 00 00
6E 04 00 00
CC 03 00 00
CC 03 00 00
CC 03 00 00
E8 03 00 00
C9 04 00 00
6E 04 00 00
6E 04 00 00
34 04 00 00
2A 03 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00        
        ULONG PowerSavingClockMin  [16];              // PowerSavingClock Mode Clock Minimum array In MHz
BC 02 00 00
66 01 00 00
36 01 00 00
36 01 00 00
36 01 00 00
5E 01 00 00
26 02 00 00
66 01 00 00
66 01 00 00
93 00 00 00
0E 01 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
00 00 00 00
    } ATOM_VEGA20_POWER_SAVING_CLOCK_RECORD;
            
      ATOM_VEGA20_OVERDRIVE8_RECORD OverDrive8Table;       //OverDrive8 Feature capabilities and Settings Range (Max and Min)
    typedef struct _ATOM_VEGA20_OVERDRIVE8_RECORD
    {
01        UCHAR ucODTableRevision;
0E 00 00 00        ULONG ODFeatureCount;
        UCHAR ODFeatureCapabilities [32];   //OD feature support flags
01
01
01
01
01
01
01
01
01
00
01
01
01
01
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00
00    
1D 00 00 00        ULONG ODSettingCount;
        ULONG ODSettingsMax [32];           //Upper Limit for each OD Setting
98 08 00 00 
98 08 00 00 
98 08 00 00 
C2 04 00 00 
98 08 00 00 
C2 04 00 00 
98 08 00 00 
C2 04 00 00 
B0 04 00 00 
14 00 00 00 
0A 0F 00 00 
0A 0F 00 00 
5F 00 00 00 
6E 00 00 00 
02 00 00 00 
00 00 00 00 
01 00 00 00 
01 00 00 00 
01 00 00 00 
5F 00 00 00 
64 00 00 00 
5F 00 00 00 
64 00 00 00 
5F 00 00 00 
64 00 00 00 
5F 00 00 00 
64 00 00 00 
5F 00 00 00 
64 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00
        ULONG ODSettingsMin [32];           //Lower Limit for each OD Setting
28 03 00 00 
28 03 00 00 
28 03 00 00 
E2 02 00 00 
28 03 00 00 
E2 02 00 00 
28 03 00 00 
E2 02 00 00 
5E 01 00 00 
14 00 00 00 
C2 01 00 00 
C2 01 00 00 
19 00 00 00 
32 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
19 00 00 00 
14 00 00 00 
19 00 00 00 
14 00 00 00 
19 00 00 00 
14 00 00 00 
19 00 00 00 
14 00 00 00 
19 00 00 00 
14 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00
    } ATOM_VEGA20_OVERDRIVE8_RECORD;
      
      USHORT usReserve[5];
00 00
00 00
00 00
00 00
00 00

      PPTable_t smcPPTable;
      
} ATOM_Vega20_POWERPLAYTABLE;

enum ATOM_VEGA20_ODFEATURE_ID {
  ATOM_VEGA20_ODFEATURE_GFXCLK_LIMITS = 0,
  ATOM_VEGA20_ODFEATURE_GFXCLK_CURVE,
  ATOM_VEGA20_ODFEATURE_UCLK_MAX,
  ATOM_VEGA20_ODFEATURE_POWER_LIMIT,
  ATOM_VEGA20_ODFEATURE_FAN_ACOUSTIC_LIMIT,    //FanMaximumRpm
  ATOM_VEGA20_ODFEATURE_FAN_SPEED_MIN,         //FanMinimumPwm
  ATOM_VEGA20_ODFEATURE_TEMPERATURE_FAN,       //FanTargetTemperature
  ATOM_VEGA20_ODFEATURE_TEMPERATURE_SYSTEM,    //MaxOpTemp
  ATOM_VEGA20_ODFEATURE_MEMORY_TIMING_TUNE,
  ATOM_VEGA20_ODFEATURE_FAN_ZERO_RPM_CONTROL,
  ATOM_VEGA20_ODFEATURE_COUNT,
};

enum ATOM_VEGA20_ODSETTING_ID {
  ATOM_VEGA20_ODSETTING_GFXCLKFMAX = 0,
  ATOM_VEGA20_ODSETTING_GFXCLKFMIN,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEFREQ_P1,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEVOLTAGEOFFSET_P1,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEFREQ_P2,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEVOLTAGEOFFSET_P2,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEFREQ_P3,
  ATOM_VEGA20_ODSETTING_VDDGFXCURVEVOLTAGEOFFSET_P3,
  ATOM_VEGA20_ODSETTING_UCLKFMAX,
  ATOM_VEGA20_ODSETTING_POWERPERCENTAGE,
  ATOM_VEGA20_ODSETTING_FANRPMMIN,
  ATOM_VEGA20_ODSETTING_FANRPMACOUSTICLIMIT,
  ATOM_VEGA20_ODSETTING_FANTARGETTEMPERATURE,
  ATOM_VEGA20_ODSETTING_OPERATINGTEMPMAX,
  ATOM_VEGA20_ODSETTING_COUNT,
};

enum ATOM_VEGA20_PPCLOCK_ID {
  ATOM_VEGA20_PPCLOCK_GFXCLK = 0,
  ATOM_VEGA20_PPCLOCK_VCLK,
  ATOM_VEGA20_PPCLOCK_DCLK,
  ATOM_VEGA20_PPCLOCK_ECLK,
  ATOM_VEGA20_PPCLOCK_SOCCLK,
  ATOM_VEGA20_PPCLOCK_UCLK,
  ATOM_VEGA20_PPCLOCK_FCLK,
  ATOM_VEGA20_PPCLOCK_DCEFCLK,
  ATOM_VEGA20_PPCLOCK_DISPCLK,
  ATOM_VEGA20_PPCLOCK_PIXCLK,
  ATOM_VEGA20_PPCLOCK_PHYCLK,
  ATOM_VEGA20_PPCLOCK_COUNT,
};

PPTable_t {      

03 00 00 00  uint32_t Version;

  uint32_t FeaturesToRun[2];
FF EF F4 39
00 00 00 00

FA 00  uint16_t SocketPowerLimitAc0;
00 00  uint16_t SocketPowerLimitAc0Tau;
00 00  uint16_t SocketPowerLimitAc1;
00 00  uint16_t SocketPowerLimitAc1Tau;
00 00  uint16_t SocketPowerLimitAc2;
00 00  uint16_t SocketPowerLimitAc2Tau;
00 00  uint16_t SocketPowerLimitAc3;
00 00  uint16_t SocketPowerLimitAc3Tau;
FA 00  uint16_t SocketPowerLimitDc;
00 00  uint16_t SocketPowerLimitDcTau;
32 00  uint16_t TdcLimitSoc;
00 00  uint16_t TdcLimitSocTau;
4A 01  uint16_t TdcLimitGfx;
00 00  uint16_t TdcLimitGfxTau;            

64 00  uint16_t TedgeLimit;
6E 00  uint16_t ThotspotLimit;
5E 00  uint16_t ThbmLimit;
73 00  uint16_t Tvr_gfxLimit;
73 00  uint16_t Tvr_memLimit;
FF FF  uint16_t Tliquid1Limit;
FF FF  uint16_t Tliquid2Limit;
FF FF  uint16_t TplxLimit;
00 00 00 00  uint32_t FitLimit;

00 00  uint16_t PpmPowerLimit;
00 00  uint16_t PpmTemperatureThreshold;

01  uint8_t  MemoryOnPackage;
00  uint8_t  padding8_limits;
73 00  uint16_t Tvr_SocLimit;

00 00  uint16_t  UlvVoltageOffsetSoc;
00 00  uint16_t  UlvVoltageOffsetGfx;

00  uint8_t  UlvSmnclkDid;
00  uint8_t  UlvMp1clkDid;
00  uint8_t  UlvGfxclkBypass;
00  uint8_t  Padding234;

86 0B  uint16_t     MinVoltageGfx;
22 0B  uint16_t     MinVoltageSoc;
0B 13  uint16_t     MaxVoltageGfx;
43 12  uint16_t     MaxVoltageSoc;

26 00  uint16_t     LoadLineResistanceGfx;
00 00  uint16_t     LoadLineResistanceSoc;

  DpmDescriptor_t DpmDescriptor[PPCLK_COUNT 11];
    typedef struct {
        uint8_t        VoltageMode;
        uint8_t        SnapToDiscrete;
        uint8_t        NumDiscreteLevels;
        uint8_t        padding;
        LinearInt_t    ConversionToAvfsClk;
        typedef struct {
            uint32_t m;
            uint32_t b;
        } LinearInt_t;
        QuadraticInt_t SsCurve;
        typedef struct {
            uint32_t a;
            uint32_t b;
            uint32_t c;
        } QuadraticInt_t;
    } DpmDescriptor_t;

    [PPCLK_GFXCLK]\n
01              .VoltageMode          = UCHAR
01              .SnapToDiscrete       = UCHAR
09              .NumDiscreteLevels    = UCHAR
00              .padding              = UCHAR
              .ConversionToAvfsClk{m = ULONG b = ULONG}
00 00 00 00              
00 00 00 00              
              .SsCurve            {a = ULONG b = ULONG c = ULONG}
5B B1 BF 3E
EC 51 F8 BE
65 19 52 3F              

    [PPCLK_VCLK]\n
00              .VoltageMode          = UCHAR
01              .SnapToDiscrete       = UCHAR
08              .NumDiscreteLevels    = UCHAR
00              .padding              = UCHAR
              .ConversionToAvfsClk{m = ULONG b = ULONG}
64 3B 9F 3F              
16 DE A5 BD              
              .SsCurve            {a = ULONG b = ULONG c = ULONG}
00 00 00 00              
00 00 00 00              
00 00 00 00              

    [PPCLK_DCLK]\n
00              .VoltageMode          = UCHAR
01              .SnapToDiscrete       = UCHAR
08              .NumDiscreteLevels    = UCHAR
00              .padding              = UCHAR
              .ConversionToAvfsClk{m = ULONG b = ULONG}
35 5E 9A 3F              
8F 36 2E 3E              
              .SsCurve            {a = ULONG b = ULONG c = ULONG}
00 00 00 00              
00 00 00 00              
00 00 00 00              

    [PPCLK_ECLK]\n
00              .VoltageMode          = UCHAR
01              .SnapToDiscrete       = UCHAR
08              .NumDiscreteLevels    = UCHAR
00              .padding              = UCHAR
              .ConversionToAvfsClk{m = ULONG b = ULONG}
69 6F B0 3F              
48 33 16 3D              
              .SsCurve            {a = ULONG b = ULONG c = ULONG}
00 00 00 00              
00 00 00 00              
00 00 00 00              

    [PPCLK_SOCCLK]\n
00              .VoltageMode          = UCHAR
01              .SnapToDiscrete       = UCHAR
08              .NumDiscreteLevels    = UCHAR
00              .padding              = UCHAR
              .ConversionToAvfsClk{m = ULONG b = ULONG}
E5 61 A1 3F
12 F7 58 BD              
              .SsCurve            {a = ULONG b = ULONG c = ULONG}
00 00 00 00              
00 00 00 00              
00 00 00 00              

    [PPCLK_UCLK]\n
00              .VoltageMode          = UCHAR
01              .SnapToDiscrete       = UCHAR
03              .NumDiscreteLevels    = UCHAR
00              .padding              = UCHAR
              .ConversionToAvfsClk{m = ULONG b = ULONG}
B5 15 83 3F              
C2 DD 19 3E              
              .SsCurve            {a = ULONG b = ULONG c = ULONG}
00 00 00 00              
00 00 00 00              
00 00 00 00              

    [PPCLK_DCEFCLK]\n
00              .VoltageMode          = UCHAR
01              .SnapToDiscrete       = UCHAR
08              .NumDiscreteLevels    = UCHAR
00              .padding              = UCHAR
              .ConversionToAvfsClk{m = ULONG b = ULONG}
86 38 86 3F              
0E BE 30 3E              
              .SsCurve            {a = ULONG b = ULONG c = ULONG}
00 00 00 00              
00 00 00 00              
00 00 00 00              

    [PPCLK_DISPCLK]\n
00              .VoltageMode          = UCHAR
01              .SnapToDiscrete       = UCHAR
08              .NumDiscreteLevels    = UCHAR
00              .padding              = UCHAR
              .ConversionToAvfsClk{m = ULONG b = ULONG}
83 C0 5A 3F              
4D A1 F3 3D              
              .SsCurve            {a = ULONG b = ULONG c = ULONG}
00 00 00 00              
00 00 00 00              
00 00 00 00              
              
    [PPCLK_PIXCLK]\n
02              .VoltageMode          = UCHAR
01              .SnapToDiscrete       = UCHAR
08              .NumDiscreteLevels    = UCHAR
00              .padding              = UCHAR
              .ConversionToAvfsClk{m = ULONG b = ULONG}
00 00 00 00              
00 00 00 00              
              .SsCurve            {a = ULONG b = ULONG c = ULONG}
A4 70 8D 3F              
E4 14 85 BF              
D5 E7 32 3F              

    [PPCLK_PHYCLK]\n
02              .VoltageMode          = UCHAR
01              .SnapToDiscrete       = UCHAR
03              .NumDiscreteLevels    = UCHAR
00              .padding              = UCHAR
              .ConversionToAvfsClk{m = ULONG b = ULONG}
00 00 00 00              
00 00 00 00              
              .SsCurve            {a = ULONG b = ULONG c = ULONG}
00 00 00 00              
00 00 00 00              
D5 E7 32 3F              

    [PPCLK_FCLK]\n
01              .VoltageMode          = UCHAR
01              .SnapToDiscrete       = UCHAR
08              .NumDiscreteLevels    = UCHAR
00              .padding              = UCHAR
              .ConversionToAvfsClk{m = ULONG b = ULONG}
00 00 80 3F              
00 00 00 00              
              .SsCurve            {a = ULONG b = ULONG c = ULONG}
D1 91 FC 3E
1F 85 2B BF
32 77 75 3F              
        
  uint16_t       FreqTableGfx      [NUM_GFXCLK_DPM_LEVELS  16];
BC 02 
28 03 
6E 04 
5C 05 
0A 06 
93 06 
D5 06 
ED 06 
09 07 
00 00 
00 00 
00 00 
00 00 
00 00 
00 00 
00 00  

  uint16_t       FreqTableVclk     [NUM_VCLK_DPM_LEVELS    8];
66 01 
E6 01 
6B 02 
F4 02 
52 03 
CC 03 
6E 04 
6E 04    
  
  uint16_t       FreqTableDclk     [NUM_DCLK_DPM_LEVELS    8];
36 01 
90 01 
0C 02 
6B 02 
A8 02 
F4 02 
52 03 
CC 03    
  
  uint16_t       FreqTableEclk     [NUM_ECLK_DPM_LEVELS    8];
36 01 
90 01 
0C 02 
6B 02 
A8 02 
F4 02 
52 03 
CC 03  
  
  uint16_t       FreqTableSocclk   [NUM_SOCCLK_DPM_LEVELS  8];
36 01 
0C 02 
37 02 
6B 02 
A8 02 
F4 02 
52 03 
CC 03

  uint16_t       FreqTableUclk     [NUM_UCLK_DPM_LEVELS    4];
5E 01 
20 03 
E8 03 
E8 03

  uint16_t       FreqTableFclk     [NUM_FCLK_DPM_LEVELS    8];
26 02 
62 02 
B2 02 
F8 02 
66 03 
C0 03 
38 04 
C9 04 
 
  uint16_t       FreqTableDcefclk  [NUM_DCEFCLK_DPM_LEVELS 8];
66 01 
C6 01 
37 02 
A8 02 
F4 02 
52 03 
CC 03 
6E 04 
 
  uint16_t       FreqTableDispclk  [NUM_DISPCLK_DPM_LEVELS 8];
66 01 
C6 01 
37 02 
A8 02 
F4 02 
52 03 
CC 03 
6E 04  

  uint16_t       FreqTablePixclk   [NUM_PIXCLK_DPM_LEVELS  8];
93 00 
F2 00 
58 01 
E4 01 
15 02 
AA 03 
13 04 
34 04  

  uint16_t       FreqTablePhyclk   [NUM_PHYCLK_DPM_LEVELS  8];
0E 01 
1C 02 
2A 03 
00 00 
00 00 
00 00 
00 00 
00 00

  uint16_t       DcModeMaxFreq     [PPCLK_COUNT            11];
09 07 
6E 04 
CC 03 
CC 03 
CC 03 
E8 03 
6E 04 
6E 04 
34 04 
2A 03 
C9 04
 
00 00  uint16_t       Padding8_Clks;

  uint16_t       Mp0clkFreq        [NUM_MP0CLK_DPM_LEVELS 2];
C8 00  
2C 01  
  
  uint16_t       Mp0DpmVoltage     [NUM_MP0CLK_DPM_LEVELS 2];
60 09  
F0 0A

28 03  uint16_t        GfxclkFidle;
00 00  uint16_t        GfxclkSlewRate;
00 00  uint16_t        CksEnableFreq;
00 00  uint16_t        Padding789;

  QuadraticInt_t  CksVoltageOffset;
    typedef struct {
00 00 00 00        uint32_t a;
00 00 00 00        uint32_t b;
00 00 00 00        uint32_t c;
    } QuadraticInt_t;
    
  uint8_t         Padding567[4];
00 
00 
00 
00 
 
09 07  uint16_t        GfxclkDsMaxFreq;
01  uint8_t         GfxclkSource;
00  uint8_t         Padding456;

00  uint8_t      LowestUclkReservedForUlv;
  uint8_t      Padding8_Uclk[3];
00 
00 
00

  uint8_t      PcieGenSpeed[NUM_LINK_LEVELS 2];
00 
02

  uint8_t      PcieLaneCount[NUM_LINK_LEVELS 2];
06 
06

  uint16_t     LclkFreq[NUM_LINK_LEVELS 2];
50 00
34 01

00 00  uint16_t     EnableTdpm;
00 00  uint16_t     TdpmHighHystTemperature;
00 00  uint16_t     TdpmLowHystTemperature;
00 00  uint16_t     GfxclkFreqHighTempLimit;                     
                     
00 00  uint16_t     FanStopTemp;
00 00  uint16_t     FanStartTemp;

90 01  uint16_t     FanGainEdge;
90 01  uint16_t     FanGainHotspot;
90 01  uint16_t     FanGainLiquid;
90 01  uint16_t     FanGainVrGfx;
90 01  uint16_t     FanGainVrSoc;
90 01  uint16_t     FanGainPlx;
90 01  uint16_t     FanGainHbm;
14 00  uint16_t     FanPwmMin;
54 0B  uint16_t     FanAcousticLimitRpm;
54 0B  uint16_t     FanThrottlingRpm;
0A 0F  uint16_t     FanMaximumRpm;
5F 00  uint16_t     FanTargetTemperature;
00 00  uint16_t     FanTargetGfxclk;
00  uint8_t      FanZeroRpmEnable;
02  uint8_t      FanTachEdgePerRev;

00 00  int16_t      FuzzyFan_ErrorSetDelta;
00 00  int16_t      FuzzyFan_ErrorRateSetDelta;
00 00  int16_t      FuzzyFan_PwmSetDelta;
00 00  uint16_t     FuzzyFan_Reserved;

  uint8_t           OverrideAvfsGb[AVFS_VOLTAGE_COUNT 2];
00 
01  
  
  uint8_t           Padding8_Avfs[2];
00 
00

  QuadraticInt_t    qAvfsGb[AVFS_VOLTAGE_COUNT 2];
    typedef struct {
00 00 00 00        uint32_t a;
50 8D 97 3C        uint32_t b;
0A D7 A3 3B        uint32_t c;
    } QuadraticInt_t;
    typedef struct {
00 00 00 00        uint32_t a;
EA B2 98 3C        uint32_t b;
87 A2 40 3D        uint32_t c;
    } QuadraticInt_t;
    
  DroopInt_t        dBtcGbGfxCksOn;
    typedef struct {
00 00 00 00        uint32_t a;
00 00 00 00        uint32_t b;
00 00 00 00        uint32_t c;
    } DroopInt_t;
    
  DroopInt_t        dBtcGbGfxCksOff;
    typedef struct {
00 00 00 00        uint32_t a;
00 00 00 00        uint32_t b;
00 00 00 00        uint32_t c;
    } DroopInt_t;  
    
  DroopInt_t        dBtcGbGfxAfll;
      typedef struct {
00 00 00 00        uint32_t a;
00 00 00 00        uint32_t b;
00 00 00 00        uint32_t c;
    } DroopInt_t;
    
  DroopInt_t        dBtcGbSoc;
      typedef struct {
00 00 00 00        uint32_t a;
00 00 00 00        uint32_t b;
00 00 00 00        uint32_t c;
    } DroopInt_t;
    
  LinearInt_t       qAgingGb[AVFS_VOLTAGE_COUNT 2];
    typedef struct {
00 00 00 00        uint32_t m;
00 00 00 00        uint32_t b;
    } LinearInt_t;
    typedef struct {
00 00 00 00        uint32_t m;
00 00 00 00        uint32_t b;
    } LinearInt_t;
    
  QuadraticInt_t    qStaticVoltageOffset[AVFS_VOLTAGE_COUNT 2];
    typedef struct {
00 00 00 00        uint32_t a;
00 00 00 00        uint32_t b;
00 00 00 00        uint32_t c;
    } QuadraticInt_t;
    typedef struct {
00 00 00 00        uint32_t a;
00 00 00 00        uint32_t b;
00 00 00 00        uint32_t c;
    } QuadraticInt_t;
    
  uint16_t          DcTol[AVFS_VOLTAGE_COUNT 2];
00 00
A0 00  
  
  uint8_t           DcBtcEnabled[AVFS_VOLTAGE_COUNT 2];
01  
00  
  
  uint8_t           Padding8_GfxBtc[2];
00
00  
  
  int16_t           DcBtcMin[AVFS_VOLTAGE_COUNT 2];
00 00 
00 00  
   
  uint16_t          DcBtcMax[AVFS_VOLTAGE_COUNT 2];
A0 00 
00 00

  uint8_t           XgmiLinkSpeed   [NUM_XGMI_LEVELS 2];
08 
10  
  
  uint8_t           XgmiLinkWidth   [NUM_XGMI_LEVELS 2];
02 
10
  
  uint16_t          XgmiFclkFreq    [NUM_XGMI_LEVELS 2];
1A 04 
4C 04 
 
  uint16_t          XgmiUclkFreq    [NUM_XGMI_LEVELS 2];
E8 03 
E8 03 
 
  uint16_t          XgmiSocclkFreq  [NUM_XGMI_LEVELS 2];
E8 03 
E8 03 
 
  uint16_t          XgmiSocVoltage  [NUM_XGMI_LEVELS 2];
00 00 
00 00

00 00 00 00  uint32_t          DebugOverrides;
           
  QuadraticInt_t    ReservedEquation0;
      typedef struct {
00 00 00 00        uint32_t a;
00 00 00 00        uint32_t b;
00 00 00 00        uint32_t c;
    } QuadraticInt_t;
  QuadraticInt_t    ReservedEquation1;
      typedef struct {
00 00 00 00        uint32_t a;
00 00 00 00        uint32_t b;
00 00 00 00        uint32_t c;
    } QuadraticInt_t;
  QuadraticInt_t    ReservedEquation2;
      typedef struct {
00 00 00 00        uint32_t a;
00 00 00 00        uint32_t b;
00 00 00 00        uint32_t c;
    } QuadraticInt_t;
  QuadraticInt_t    ReservedEquation3;
      typedef struct {
00 00 00 00        uint32_t a;
00 00 00 00        uint32_t b;
00 00 00 00        uint32_t c;
    } QuadraticInt_t;

86 0B  uint16_t     MinVoltageUlvGfx;
22 0B  uint16_t     MinVoltageUlvSoc;

54 0B  uint16_t     MGpuFanBoostLimitRpm;
00 00  uint16_t     padding16_Fan;   

90 01  uint16_t     FanGainVrMem0;
90 01  uint16_t     FanGainVrMem1;

  uint16_t     DcBtcGb[AVFS_VOLTAGE_COUNT 2];
38 00 
00 00
 
  uint32_t     Reserved[11];
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00

  uint32_t     Padding32[3];
00 00 00 00  
00 00 00 00  
00 00 00 00 

00 00  uint16_t     MaxVoltageStepGfx;
00 00  uint16_t     MaxVoltageStepSoc;

00  uint8_t      VddGfxVrMapping;
00  uint8_t      VddSocVrMapping;
00  uint8_t      VddMem0VrMapping;
00  uint8_t      VddMem1VrMapping;

00  uint8_t      GfxUlvPhaseSheddingMask;
00  uint8_t      SocUlvPhaseSheddingMask;
00  uint8_t      ExternalSensorPresent;
00  uint8_t      Padding8_V;


00 00  uint16_t     GfxMaxCurrent;
00  int8_t       GfxOffset;
00  uint8_t      Padding_TelemetryGfx;

00 00  uint16_t     SocMaxCurrent;
00  int8_t       SocOffset;
00  uint8_t      Padding_TelemetrySoc;

00 00  uint16_t     Mem0MaxCurrent;
00  int8_t       Mem0Offset;
00  uint8_t      Padding_TelemetryMem0;

00 00  uint16_t     Mem1MaxCurrent;
00  int8_t       Mem1Offset;
00  uint8_t      Padding_TelemetryMem1;

00  uint8_t      AcDcGpio;
00  uint8_t      AcDcPolarity;
00  uint8_t      VR0HotGpio;
00  uint8_t      VR0HotPolarity;

00  uint8_t      VR1HotGpio;
00  uint8_t      VR1HotPolarity;
00  uint8_t      Padding1;
00  uint8_t      Padding2;

00  uint8_t      LedPin0;
00  uint8_t      LedPin1;
00  uint8_t      LedPin2;
00  uint8_t      padding8_4;

00  uint8_t      PllGfxclkSpreadEnabled;
00  uint8_t      PllGfxclkSpreadPercent;
00 00  uint16_t     PllGfxclkSpreadFreq;

00  uint8_t      UclkSpreadEnabled;
00  uint8_t      UclkSpreadPercent;
00 00  uint16_t     UclkSpreadFreq;

00  uint8_t      FclkSpreadEnabled;
00  uint8_t      FclkSpreadPercent;
00 00  uint16_t     FclkSpreadFreq;

00  uint8_t      FllGfxclkSpreadEnabled;
00  uint8_t      FllGfxclkSpreadPercent;
00 00  uint16_t     FllGfxclkSpreadFreq;

  I2cControllerConfig_t I2cControllers[I2C_CONTROLLER_NAME_COUNT 7];
    typedef struct {
00 00 00 00        uint32_t Enabled;
00 00 00 00        uint32_t SlaveAddress;
00 00 00 00        uint32_t ControllerPort;
00 00 00 00        uint32_t ControllerName;
00 00 00 00        uint32_t ThermalThrottler;
00 00 00 00        uint32_t I2cProtocol;
00 00 00 00        uint32_t I2cSpeed;
    } I2cControllerConfig_t;
    typedef struct {
00 00 00 00        uint32_t Enabled;
00 00 00 00        uint32_t SlaveAddress;
00 00 00 00        uint32_t ControllerPort;
00 00 00 00        uint32_t ControllerName;
00 00 00 00        uint32_t ThermalThrottler;
00 00 00 00        uint32_t I2cProtocol;
00 00 00 00        uint32_t I2cSpeed;
    } I2cControllerConfig_t;    typedef struct {
00 00 00 00        uint32_t Enabled;
00 00 00 00        uint32_t SlaveAddress;
00 00 00 00        uint32_t ControllerPort;
00 00 00 00        uint32_t ControllerName;
00 00 00 00        uint32_t ThermalThrottler;
00 00 00 00        uint32_t I2cProtocol;
00 00 00 00        uint32_t I2cSpeed;
    } I2cControllerConfig_t;    typedef struct {
00 00 00 00        uint32_t Enabled;
00 00 00 00        uint32_t SlaveAddress;
00 00 00 00        uint32_t ControllerPort;
00 00 00 00        uint32_t ControllerName;
00 00 00 00        uint32_t ThermalThrottler;
00 00 00 00        uint32_t I2cProtocol;
00 00 00 00        uint32_t I2cSpeed;
    } I2cControllerConfig_t;    typedef struct {
00 00 00 00        uint32_t Enabled;
00 00 00 00        uint32_t SlaveAddress;
00 00 00 00        uint32_t ControllerPort;
00 00 00 00        uint32_t ControllerName;
00 00 00 00        uint32_t ThermalThrottler;
00 00 00 00        uint32_t I2cProtocol;
00 00 00 00        uint32_t I2cSpeed;
    } I2cControllerConfig_t;    typedef struct {
00 00 00 00        uint32_t Enabled;
00 00 00 00        uint32_t SlaveAddress;
00 00 00 00        uint32_t ControllerPort;
00 00 00 00        uint32_t ControllerName;
00 00 00 00        uint32_t ThermalThrottler;
00 00 00 00        uint32_t I2cProtocol;
00 00 00 00        uint32_t I2cSpeed;
    } I2cControllerConfig_t;    typedef struct {
00 00 00 00        uint32_t Enabled;
00 00 00 00        uint32_t SlaveAddress;
00 00 00 00        uint32_t ControllerPort;
00 00 00 00        uint32_t ControllerName;
00 00 00 00        uint32_t ThermalThrottler;
00 00 00 00        uint32_t I2cProtocol;
00 00 00 00        uint32_t I2cSpeed;
    } I2cControllerConfig_t;

  uint32_t     BoardReserved[10];
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00

  uint32_t     MmHubPadding[8];
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00 
00 00 00 00

} PPTable_t;
..aber wie gesagt, der Inhalt an einem anderen Tag.
 
Zuletzt bearbeitet:
Zurück