Bios Mods -The Best BIOS Update and Modification Source

Full Version: Adding Opteron 2300-series "Barcelona" support to Sun Ultra 40 M2 Socket F bios
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3 4

I have a Sun Ultra 40 M2. Sun promised 'Barcelona' quad-core support and never delivered.

The board is a Dual Socket F (1207) with nForce Professional 3600 chipset. Current BIOS support is for dual-core 22xx 'Santa Rosa' chips.

Other boards, like the MSI K9ND (and other TYAN boards) are based on the nForce Professional 3600 and same general CPU layout/design support the quad-core 23xx 'Barcelona' chips.

The MSI K9ND uses Phoenix BIOS based code as does the Sun Ultra 40 M2. I extracted both BIOS images and found that the Sun's UPDATE0.ROM is 7KB and in a hex editor is filled with 'FF' and padded at the end. The MSI has actual microcode in its UPDATE0.ROM file and its 57KB...

I thought I might start by replacing the microcode first and maybe replacing the AGESA later if needed, but because the microcode is located elsewhere in the Sun, I'm not sure what to do now.

Any ideas? Also what module is the AGESA code typically found in? =p

(BTW I have several BIOS images for the Sun. Good ol' Oracle has removed the images from the site now so they're inaccessible)
In the file BIOSCOD1.ROM for the MSI I found the following ASCII strings-

AMD Engineering SampleAMD Thermal Test KitAMD Processor model unknownDual-Core AMD Opteron™ Processor 83Dual-Core AMD Opteron™ Processor 23Dual-Core AMD Opteron™ Processor 13Quad-Core AMD Opteron™ Processor 83Quad-Core AMD Opteron™ Processor ect.

For the Sun BIOS, in the same file, I found the following ASCII strings-
AMD Engineering SampleAMD Processor model unknownDual-Core AMD Opteron™ Processor 12Dual-Core AMD Opteron™ Processor 22Dual-Core AMD Opteron™ Processor 82Mobile AMD Sempron™ Processor AMD Athlon™ 64 Processor AMD Athlon™ 64 X2 Dual Core P... ect

BIOSCOD01.ROM might possible house some of all of the AGESA code? Hrm...
Hi there,

Looks like you have some good skills with the whole AGESA/CPU update proccess. Can you please post te link to the Sun BIOS so I can take a better look.

Hi TheWiz, thank you for your interest. Any insight you can provide would be very helpful.

As requested, I've posted the U40M2 BIOS images on my webserver. I have 4 revisions, 124 being the latest.

I also have a changelog showing the updates made in each release-

BIOS v1.24-

BIOS v1.20-

BIOS v1.11-

BIOS v1.00-
I've located the AGESA header in BIOSCODE01.ROM. 'AMD!GESA' was a give away. AGESA is located at file offset 0x00003A9F.

Now I'm going to try to determine the version of AGESA this BIOS contains and determine if it's compatible with Barcelona chips. Still need to locate the CPU microcode. Might that be at file offset 0x000018EB?

One problem I'm running into is with CBROM32 /D hanging and now displaying any information. Using verison 1.98. Need to figure that one out too. Windows 7 64bit incompatibility perhaps?

Any insight would be helpful =)
Okay, so I tested CBROM32 on a 32bit Windows XP system and it's taking a long time and producing no results. Maybe this is normal?

The BIOS is Phoenix BIOS 4.0 Release 6.1 (BIOS image timestamp from 2008)... hrm?

Other questions... I believe Shanghai is possible with this board, but maybe 6-core Socket-F Istanbul support is possible? That would be an awesome mod. I'm sure it would be quite complicated.
TYAN Thunder n3600M S2932-SI ( BIOS 2.06 changelog says
- Updated CPU support
- Updated AMD AGESA code to v3.5.0.0
- Added Istanbul CPU support

This board is based on the same chipset as my Sun Ultra 40 M2 - the nForce 3600 Pro. Downloaded the BIOS and attempted to extract it... it's not Phoenix. Might be AMI or some other BIOS type (not sure what Tyan typically uses)

It would be AMAZING to get Istanbul 6 core CPU support working. I understand that BIOS support alone doesn't garentee compatibility.

I'm still exploring this. Trying to find an MCP55 or nForce 3600 Pro board supporting Istanbul that is also Phoenix BIOS based.
Wow lots of good work done here. A couple things.

CBROM is for Award BIOSes, this is a Phoenix BIOS so it will not work with CBROM. Yoyur tools of choice for compilation and disassembley are Phoenix BIOS Editor 2.2.13 or Phoenix SLIC Tool. To get the version of your current AGESA, look right after the AMD!GESA and in hext it will normally tell you the version number in little endian for the older agesas. My gues is itll look something like 02 08 05 , or version 2.05.08. It would definitely be beneficial to see if you could find one additional chipset for comparison.

TheWiz, thanks again for your help. You're absolutely right about the AGESA version.

The Sun BIOS 1.24 contains AGESA version 2.8.11. The MSI 2.20 BIOS contains version 3.1.7 and also contains an ASCII string representation of the version (which I somehow missed)

This is what they look like side by side. (I incorrectly labeled the Sun BIOS as v. 1.20 in the screenshot when I'm using 1.24 - the latest offical release)

Also, thanks for your insight into CBROM. I had thought the Phoenix BIOS and AWARD were related. You helped clarify this for me.

Any thoughts on doing a direct swap of the BIOSCODE01.ROM and trying it? I'm thinking I'd have to look for JMPs to routines in BIOSCODE01 and correct for changed offsets.

Before I can do this, I also need to get a spare BIOS chip. =P
There was a substancial difference between the V2 and V3 structure that affected the Award platform dramatically. Yet, if you get the spare BIOS chip and know you can freely test that would definitely be the first thing you want to try. I will have more time towards the end of this week to help you out more in depth, but so far you are doing quite well Big Grin

Thanks for your continued input TheWiz. You've been very helpful.

I went out and bought a PLCC remover. I'm going to source a chip and a writer, so any real testing will have to wait a couple weeks.

In the mean time, I need to familize myself with the BIOS modules and how offsets are calculated. The subroutines/offsets will change with the new file, JMPs will need to be updated accordingly. I need to figure out how to calculate the offsets (will file offsets be good enough or do I need to calculate offsets in memory??) It's been a while since I've used IDA but I'm going to give this a shot.
Pages: 1 2 3 4