Just re-acquired (still mad I let go of my old one many years ago) a C440GX motherboard. I have some 400mhz 1mb P2 Xeons that work fine with it, boots to FreeBSD and I can do all my usual things.
I grabbed some 2.8v 700mhz 2mb P3 Xeons, and they aren't working so well. BIOS recognizes them as 'Pentium Pro 400mhz'; if I go into setup it shows the correct CPU ID (6A1), but shows 256kb cache and clock rate is blank. At the end of POST I get:
8163: Unable to apply BIOS Update for Processor #1
8162: Unable to apply BIOS Update for Processor #2
8162: Unable to apply BIOS Update for Processor #2
(Yes, the second line is repeated) If I continue, FreeBSD boots, detects a P3 400mhz, runs stable, and performs about the same as the P2 Xeons. I've updated the BIOS to 8.1 and BMC to 1.07; didn't help.
I don't know what to do to get these running at 700mhz, any ideas?
A small amount of progress. The system now shows "Pentium Pro 700mhz", I didn't do anything other than leave the system powered off for a while. When I came back it was running at 700mhz instead of 400mhz. I still get the "Unable to apply BIOS Update" error messages at the end of POST. I booted into FreeBSD, it also reports 700mhz. I timed a kernel compile, it completed only a few seconds faster than my L440GX 600mhz Katmai setup. So the 700s still aren't running as they should.
I'm now trying to add hte 6a1 (700mhz 2mb) microcode to the BIOS. It's a Phoenix BIOS, so I'm playing around with cbrom195.exe. The C440GX BIOS is split into multiple files labeled P08-108.{BIO, BI1, ... BIA}, but cbrom seems to want a single file to work with. I'm about to go wrestle with that some more.
I'm using a Win XP live CD on the C440GX system to run cbrom (I only have OSX and FreeBSD here otherwise). It happens to have CPUZ as well, and people always want to see that so I took a picture. It looks as expected, nothing funny to me.
Made some progress! The "Unable to apply BIOS Update" errors are now gone. I modified the BIOS to include the 6a1 microcode and flashed it onto the system. Here's my steps:
3. I made a small hack to force the microcode swapper to always memcpy 2kb of the microcode; it was reading a length parameter from the input files which for the C440GX BIOS / 6a1 microcode was set to 0. The code compiled with a few harmless warnings using OSX's xcode clang, I expect it should compile and run on FreeBSD and Linux also. (no idea about windows)
4. Cat the C440GX BIOS files (P08-0108.*, starting with .BIO and ending with .BIA) into one file.
5. Run the microcode swapper on the combined BIOS file. Use the undocumented '-unsafe' option. I replaced slot 5, CPUID 671, with the 6a1 code from step 1. BTW, does anyone know which Xeon products were CPUID 671? cpu-world only shows AMD products for this CPUID.
6. Split the modified BIOS file back into separate files sized 65696 bytes each. They must be named the same as the original, P08-0108.*
7. Flash the modified BIOS, do the usual settings reset and configuration.
The BIOS still reports "Pentium Pro 700mhz" at POST and still reports 6a1, 256kb cache for both processors in the settings. But, there are otherwise no more errors or holdups on boot. Curiously dmesg now identifies a specifically PIII Xeon, instead of the more generic 'PIII/Celeron/Xeon'.
Performance in FreeBSD is unchanged with this modified BIOS: these 2mb 700s take 5m30s to compile my FreeBSD 6.4 kernel, while my dual Katmai 600mhz takes 5m33s.
The plot thickens! Next, I booted into linux (from scratch!) to see what cpuinfo says:
1$ cat /proc/cpuinfo 2processor : 0 3vendor_id : GenuineIntel 4cpu family : 6 5model : 10 6model name : Pentium III (Cascades) 7stepping : 1 8cpu MHz : 697.210 9cache size : 2048 KB 10physical id : 0 11siblings : 1 12fdiv_bug : no 13hlt_bug : no 14f00f_bug : no 15coma_bug : no 16fpu : yes 17fpu_exception : yes 18cpuid level : 2 19wp : yes 20flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse 21bogomips : 1376.25 22 23processor : 1 24vendor_id : GenuineIntel 25cpu family : 6 26model : 10 27model name : Pentium III (Cascades) 28stepping : 1 29cpu MHz : 697.210 30cache size : 32 KB 31physical id : 0 32siblings : 1 33fdiv_bug : no 34hlt_bug : no 35f00f_bug : no 36coma_bug : no 37fpu : yes 38fpu_exception : yes 39cpuid level : 2 40wp : yes 41flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 mmx fxsr sse 42bogomips : 1384.44
Weird! One CPU has 2mb cache, the other has 32kb cache.
And that's where I have to leave it for now, I haven't had time to research and tinker further. I might find something to run pinned to each CPU and compare performance.
Does anybody know what I can do to get the 2mb cache showing up right on the second CPU?
Weird! One CPU has 2mb cache, the other has 32kb cache.
I might find something to run pinned to each CPU and compare performance.
Does anybody know what I can do to get the 2mb cache showing up right on the second CPU?
My SIV utility has Menu->Machine->CPU D+W Benchmark which will benchmark both CPUs and Menu->Hardware->Cache Latency->Cache-<n> which will measure the cache latency.
If you do Menu->File->Save Local and post the two save files I should be able to tell what's happening with the second CPU L2 cache, Menu->Hardware->CPU Detail->CPU Control Register 0 might be enough.
If you do Menu->File->Save Local and post the two save files I should be able to tell what's happening with the second CPU L2 cache, Menu->Hardware->CPU Detail->CPU Control Register 0 might be enough.
Thank you so much! Here you go. I just grabbed the two files, next I'll go through your tool more (which is amazing) and try the benchmarks as suggested. Looks like they're in the file though.
I appreciate everyone's responses. Yes, I'm near giving up on this too. SIV confirms the cache on the second processor is missing/inactive. I physically swapped the two processors to rule out a problem with one of them; this had no affect (missing cache does not follow physical processors, stays on second motherboard CPU slot).
I looked through the BIOS file with a hex editor on the off chance I might see some sort of table I can mess with, no luck. Looking through all the strings, I don't even see a 'Pentium' reference in the file. There's clearly more to the BIOS CPU support than the microcode, and maybe not even located in the BIOS update/flash file.
Attached are some SIV screenshots. On the second processor it's showing no L2 cache at all, poor dhrystone/wheststone results, and poor cache latencies that don't reflect a multi-level hierarchy at all.
Yes they are and looking at [Cache-1 Latency] it looks like all the L1 + L2 caches are disabled as the times are way longer than the [Cache-0 Latency] times.
Thanks again for your help! Unfortunately I don't normally use Windows at all, I'm a unix guy. I'm using this system for programming hobby work instead of gaming. Like W2K, neither FreeBSD nor Linux appear to work right. Which is unfortunate, what I'm seeing benchmarking my own single-threaded code on this 700mhz unit is fantastic.
I believe if anyone at Intel was willing to update the C440GX BIOS, they would have done it (I'm retired from Intel, but I didn't work on anything related to this stuff and have no insider info). I tried both cbrom and a Phoenix BIOS editor utility, neither will open/edit the C440GX BIOS.
With nothing left to try, I'm deciding between going back to the L440GX Katmai 600mhz setup that's been working great, or tracking down some 2mb 550s.