390x bios leaked

Discussion in 'Videocards - AMD Radeon Drivers Section' started by WarDocsRevenge, Jun 16, 2015.

  1. OneB1t

    OneB1t Guest

    Messages:
    263
    Likes Received:
    0
    GPU:
    R9 290X@R9 390X 1050/1325
    we need to make something like this :) comparing bioeses is useless in this case as there is alot of different values not on same places

    USHORT usStructureSize: 0xB17E -- 116
    USHORT usStructureRevision: 0xB180 -- 3
    UCHAR ucTableContentRevision: 0xB181 -- 1

    UCHAR ucVoltageType: 0xB182 -- 1
    UCHAR ucVoltageMode: 0xB183 -- 3
    USHORT ucSize: 0xB184 -- 18
    UCHAR ucVoltageGpioCntlId: 0xB186 -- 8
    UCHAR ucGpioEntryNum: 0xB187 -- 150
    UCHAR ucPhaseDelay : 0xB188 -- 96
    UCHAR ucReserved: 0xB189 -- 0
    ULONG ulGpioMaskVal: 0xB18A -- 0
    ULONG ulVoltageId: 0xB18E -- 14614637
    USHORT usVoltageValue: 0xB192 -- 255

    then get IR3567 datasheet from somewhere and check how final voltage is made
     
    Last edited: Jul 9, 2015
  2. gupsterg

    gupsterg Guest

    Messages:
    177
    Likes Received:
    3
    GPU:
    RX 7900 XTX
    Is and isn't.

    Why I say that is first 16 hex values other than 1st & 7th are the same in all 8.

    When the table grows in data in Asus vs VX290X STD vs VX290X OC its added after hex values FF 00 01 07 0C 00 0A 00. Everything from hex values FF 00 01 07 0C 00 0A 00 is the same but moved along in table.

    In XFX vs Stilt V32 vs V2C, you will note in XFX vs Stilt V32 extra data is added after hex values FF 00 01 07 0C 00 0A 00. Everything from hex values FF 00 01 07 0C 00 0A 00 is the same but moved along in table. Everything before the new data is the same in XFX vs V32.

    Then in V32 vs V2C extra data is again added between orange boxed code & red. And orange and red boxed values are the same.

    Then look at TriX 290 STD VS OC extra data added after hex values FF 00 01 07 0C 00 0A 00. Everything from hex values FF 00 01 07 0C 00 0A 00 is the same but moved along in table. But due to shorter table length and inclusion of 6D 00 DF 00 8D 00 04 00 some values are truncated. Before the additional data in STD vs OC they are the same hex values in same location.

    Regardless of us deciphering the table and having access to IR3567 datasheet the fact remains a copy and paste of the OC bios table into STD bios did not work, even though I removed the padding in appropriate area to accommodate it.

    I've tested 3 versions of the STD bios modded with gpu voltage offset :-

    [​IMG]

    One of the above was copy paste of table, only thing different would be unknown data between 0 - A125.
     
    Last edited: Jul 9, 2015
  3. Jrt3D

    Jrt3D Guest

    Messages:
    1
    Likes Received:
    0
    GPU:
    R9 290 vapor-x
    Someone knows the hex values to modify the min and max rpm? I've tried to modify the temp and rpm values but didn't work. Can i try to flash the bios of any r9 390 that stop the fans in idle on my r9 290 vapor-x , or i need a specific sapphire card bios?

    Thanks to OneB1t for HawaiiBiosReader and to all contributors in this thread.
     
  4. gupsterg

    gupsterg Guest

    Messages:
    177
    Likes Received:
    3
    GPU:
    RX 7900 XTX
    OneB1t can you view this video carefully.

    Link:- http://youtu.be/wPZBxQWkpO8

    I think the 7th hex may denote length of values used in some way after the first row of 16 hex values.

    It may just be coincidence that the count denoted by 7th hex stop at hex values 04 07 0C 00 .....

    Or maybe it isn't coincidence?

    *** edit ***

    Just viewed XFX 390X rom, 7th hex is 66 , when selecting from 17th hex with length of 66 selection finish at hex values 04 07 0C 00 .....
     
    Last edited: Jul 9, 2015

  5. OneB1t

    OneB1t Guest

    Messages:
    263
    Likes Received:
    0
    GPU:
    R9 290X@R9 390X 1050/1325
    this is useless we need to match these numbers into some structure.. without it its not going to work as you never know which value is just size/i2c address etc.. and which is voltage control
     
  6. The Stilt

    The Stilt Member

    Messages:
    19
    Likes Received:
    4
    Playing with the VRM controller without knowing what you´re doing is pretty damn dangerous.

    Tell me what you are trying to achieve exactly.

    Also I would suggest not to spend too much time in supporting Gen. 1 EVV systems (Bonaire, Hawaii) as all the work goes to waste with Gen. 2 EVV (Tonga, Fiji >>).

    If you tamper with the voltages, keep the levels sane.
    If people start killing their cards due excess overvoltage or power draw the ODMs will notice pretty quickly. The next thing you´ll know is AMD or the ODMs adding password protection to the VRM config.
     
    Last edited: Jul 10, 2015
  7. Snow

    Snow New Member

    Messages:
    6
    Likes Received:
    1
    GPU:
    GTX 1080
    Hi there. Does anybody know if this BIOS can be modded (R9 370 -> R9 270)?
    techpowerup.com/vgabios/173048/msi-r9370-2048-150528.html

    I have a Radeon R9 270 reference card and I don't know if is compatible. This is my current BIOS:
    techpowerup.com/vgabios/161778/ati-r9270-2048-131126.html

    Thank you in advance for your amability! ;)
     
  8. gupsterg

    gupsterg Guest

    Messages:
    177
    Likes Received:
    3
    GPU:
    RX 7900 XTX
    Set GPU core voltage offset.

    At present can only modify it to a different offset in roms which have it present (which are limited).

    For example in the Vapor-X 290X OC bios I have 8d 00 04 00 in VoltageObjectInfo table, this bios has +25mv GPU core voltage offset. If I change 04 to an appropriate one I get the desired GPU core voltage offset.

    In the Vapor-X 290X STD bios the VoltageObjectInfo table is missing those hex values.

    It has same values in it excluding 1st hex and 7th plus missing 8d 00 04 00. Even inserting those values to the same place and shifting the other values like the OC bios equals black screen. Even if first hex value is adjusted to include the increased length of table.

    Even inserting a copy of OC bios VoltageObjectTable into the STD bios also does not work, even if the empty values in bios at the end of command tables are shortened to keep bios size right.

    Bios compare Vapor-X 290X STD vs OC

    [​IMG]

    VoltageObjectInfo table compare Vapor-X 290X STD vs OC

    [​IMG]
     
    Last edited: Jul 10, 2015
  9. DrunkenDonkey

    DrunkenDonkey Master Guru

    Messages:
    208
    Likes Received:
    4
    GPU:
    2xPC 290 PCS+
    Ha, The Stilt here. Now you guys got the best resource, he sure as hell knows how to modify voltages on 290/x, I have used your bios mods :)
     
  10. cyraxus

    cyraxus Guest

    Messages:
    20
    Likes Received:
    0
    GPU:
    NVIDIA GTX465
    Hi. i have amd 7870 ghz edition..(elpida) i tried before flashing r9 270x bios(same memory) .i edited clock and ram frequency and flashed. But after installing catalyst driver i got grey screen.What is problem? i want to flash r9 370 msi bios(samsung memory) to my 7870. vbe7 is open that bios. How is it possible ? Can you help me please?
     

  11. The Stilt

    The Stilt Member

    Messages:
    19
    Likes Received:
    4
    Generally using the VRM offset to adjust the voltage is a bad idea.
    It will destroy the efficiency as the offset isn´t state specific but applied on all states instead.

    If you wonder why I used the offset to adjust the voltage in the most recent builds I published (MLU), the reason is pretty simple: It was the only way I could release the bioses without making 256 different VID versions of each variant ;)

    E.G. stock Hawaii XT:

    DPM0 = 300MHz - 0.96875V
    DPM1 = 516MHz - 1.01875V
    DPM2 = 727MHz - 1.05000V
    DPM3 = 840MHz - 1.07500V
    DPM4 = 890MHz - 1.10000V
    DPM5 = 936MHz - 1.12500V
    DPM6 = 977MHz - 1.18750V
    DPM7 = 1000MHz - 1.21250V

    Then set the clocks to 1150MHz and the voltage offset to +100mV through AfterBurner or bios mod:

    DPM0 = 300MHz - 1.06875V
    DPM1 = 516MHz - 1.11875V
    DPM2 = 727MHz - 1.15000V
    DPM3 = 840MHz - 1.17500V
    DPM4 = 890MHz - 1.20000V
    DPM5 = 936MHz - 1.22500V
    DPM6 = 977MHz - 1.28750V

    DPM7 = 1150MHz - 1.31250V

    The correct and especially more efficient way is to modify the commanded VID of the highest DPM state. This way the voltage in all of the other states remain intact and the power consumption is only increased in the highest performance state.

    The trouble in altering the commanded VIDs is that there is no easy way to check the default value, which varies between the specimens and leakage levels. The default voltage is calculated by the display driver based on fused leakage information.

    I´ll try to find some time to write and application which can be used to check the default voltages on Gen. 1 EVV GPUs (Bonaire / Strato and Hawaii). The code will contain some proprietary stuff so it won´t open source.

    Anyway I suggest you cease playing around with the VRM controller for now.
     
    Last edited: Jul 10, 2015
  12. Plug2k

    Plug2k Ancient Guru

    Messages:
    1,560
    Likes Received:
    34
    GPU:
    3090
    The stilt, mate is there any way to change the highest state voltage on R9295x2 bios`s.
    so that we can change the offset in those cards.

    seems these cards have no objectinfo table to work with and these guys are trying to figure it out as well..
     
  13. The Stilt

    The Stilt Member

    Messages:
    19
    Likes Received:
    4
    295X2 is Hawaii so the VID control is identical (SVI2).

    295X2 cards however use different VRM controller (OnSemi vs. IR) than 290/390 cards so the programming is naturally completely different if you plan to use offsets.
     
  14. Plug2k

    Plug2k Ancient Guru

    Messages:
    1,560
    Likes Received:
    34
    GPU:
    3090
    hopefully mate you can help these guys out with finding out a way to add the different vid information to the hawaii bios editor.
     
  15. gupsterg

    gupsterg Guest

    Messages:
    177
    Likes Received:
    3
    GPU:
    RX 7900 XTX
    I agree :) , the offset is a quick fix and not efficient.

    I agree and would prefer this method :) . This method means at low loads your not hitting the GPU with higher voltage when it don't require it.

    My purpose of doing thread on OCN was just to enable a owner to be able to edit his own bios, not interested in releasing bios roms for others to use as I understand the complexity this would present.

    I and others will definitely appreciate it for sure :D.

    Playing ceased ;) , don't really wanna fork out another £200+ for GFX card.

    Like I said in PM's many thanks for your original roms :D and even more for getting involved! :D .
     
    Last edited: Jul 10, 2015

  16. The Stilt

    The Stilt Member

    Messages:
    19
    Likes Received:
    4
    Bugs? Most likely (definitely).

    Supports Bonaire (7790, 260X, 360) and Hawaii (290, 390 and 295X2), i.e. EVV Gen. 1 cards.

    Reset the default clocks prior using as either over or underclocking will affect the driver leakage calculations (which are extremely complex).

    The Lkg value is the fused LeakageID of the GPU.
    Convert it to decimal and divide by 1023, you´ll have the GPU-Z ASIC "quality".

    Higher LeakageID (or ASIC "quality") means higher leakage, which is bad unless you´re running on custom water cooling or LN2.

    The checksum for the original, unaltered package is 37D1F46522F97736D56E5FCEDECC164C (MD5).

    Discard if the checksum mismatches.

    Every reputable AV (Kaspersky, F-Secure, etc) will say the package is clean, unlike the less reputable ones might do.

    Wonder why I write like this?
    I´m pretty badly (or well) wasted :)

    [​IMG]

    http://1drv.ms/1Hln01F
     
    Last edited: Jul 11, 2015
  17. gupsterg

    gupsterg Guest

    Messages:
    177
    Likes Received:
    3
    GPU:
    RX 7900 XTX
    Sorry don't know what to do with this information? and I'm guessing no one else does?

    I was comparing VoltageObjectInfo tables of your newly released roms. Why does 8d 00 xx 00 keep shifting position in the table just for a different offset when bios is same?

    When I edit the Vapor-X 290X OC bios 8d 00 04 00 to 8d 00 08 00 I get +50mv but is it also effecting a voltage which say GPU-Z / HWinfo is not picking up?
     
  18. OneB1t

    OneB1t Guest

    Messages:
    263
    Likes Received:
    0
    GPU:
    R9 290X@R9 390X 1050/1325
    its just that you can read your default DMP7 voltage :D not really usefull but nice gadget
     
  19. gupsterg

    gupsterg Guest

    Messages:
    177
    Likes Received:
    3
    GPU:
    RX 7900 XTX
    That part I got! LOL
     
  20. The Stilt

    The Stilt Member

    Messages:
    19
    Likes Received:
    4
    On EVV cards there are always eight different performance states (DPM0 - 7).
    In most cases the lowest state has fixed voltage (boot voltage) which is the same between all ASICs (specimens). The voltages for the other states are determined by the leakage characteristics of your ASIC specimen. High leakage ASICs will have lower voltages through the different DPMs while ASICs with low leakage characteristics will have higher voltages.

    In PowerPlay table each DPM state implementing the fuse based voltage (EVV) will have it´s own fuse table pointer.

    To calculate the pointer you need to add the order (2-8) to 0xFF00 or 65280:

    - DPM0 (fixed voltage)
    - DPM1 (2nd DPM) = 0xFF02
    - DPM2 (3rd DPM) = 0xFF03
    - DPM3 (4th DPM) = 0xFF04
    - DPM4 (5th DPM) = 0xFF05
    - DPM5 (6th DPM) = 0xFF06
    - DPM6 (7th DPM) = 0xFF07
    - DPM7 (8th DPM) = 0xFF08

    Flip the bytes and search these pointers within the PowerPlay table.
    There will be six instances of each of them.

    On all EVV cards the voltage unit is 6.25mV as defined by the AMD SVI2 specification.
    Divide your desired target voltage with 0.00625 and round it to the nearest integer. Then multiply the result with 0.00625 and trim so that it has three decimal places.

    Multiply your desired target voltage by 100000 and divide the result by 625. Round the result to the nearest integer. Then multiply the result with 6.25 and use the integer part as the voltage value in PowerPlay table.

    E.G

    Target Voltage = 1.23750V
    ((1.23750 * 100000) / 625) = 198
    198 * 6.25 = 1237.5

    1237 = 0x4D5

    Voltages which do not produce a correct and driveable VID code might cause system to crash.

    E.G. 0x457 (1.111V) would be wrong. 0x458 (1.112V) is the closest possible voltage value drivable by the system.

    When you have the voltage code ready, replace all six pointers of the given DPM state found in PowerPlay table.

    If you want to set 1.25000V for DPM7 for example, you´ll replace the six DPM7 fuse voltage pointers 0xFF08 instances with 0x04E2 value. By changing the voltage this way all the voltages for the other states remain intact, yielding lower power consumption.

    Note that a lower performance state cannot have higher voltage than a higher performance state (i.e. DPM6 voltage must be lower than DPM7 voltage etc.).

    The reason why I made the "EVV VID Decoder" program is very simple.
    Without it there is no way to tell the default voltage of the GPU. Without it it´s pretty hard to tell which voltage code you should put in the PowerPlay table if you want to use 50mV higher voltage than stock ;)
     

Share This Page