Disable CPU Core #2 Through BIOS Settings

forumguy

Member
Sep 29, 2008
42
0
0
I'm building a budget file server oriented non-gaming AMD system from some new and old spare parts. After low level memtest86 testing the new build, I found that core #2 of my old six-core AMD Phenom X6 1090T immediately fails it tests -- probably its memory controller circuits are damaged -- this CPU suffered overheat after its CPU waterblock failed. I need to find a way to specifically disable core #2 from the BIOS layer.

Relevant specs:

* Gigabyte GA-970A-DS3P AM3+ Motherboard
* AMD Phenom II X6 1090T Black Edition CPU

The BIOS, like many, others allows the user to disable cores but doesn't appear to allow a user to disable a *specific* core. That is, there is a menu that allows setting the CPU into 1, 2, 3, 4, or 5 core mode. You just don't get to pick which specific cores get disabled!

I'm pretty much sure this isn't possible without getting access to this motherboard's American Megatrends AMI BIOS source code then recompiling a new firmware image.

Out of curiosity, would it be possible to get access to that firmware source code and the compilation tools somewhere? Then create a "hacked" custom BIOS that is hard coded to disable core #2? This hacked BIOS may then only work with this system but that's alright. I just presume that if the stock BIOS has a way to disable CPU cores, it wouldn't be too hard to locate that section of code and have it disable a *specific* CPU core only!

I'd be happy to run on 5 cores out of 6. This AMD X6 1090T CPU is over 5 years old and well out of warranty. It still sells on eBay for $140. I'll probably end up getting a brand new 8-core AMD FX Black Edition FX-8320E Vishera 3.2GHz for $130 shipped!
 

VirtualLarry

No Lifer
Aug 25, 2001
56,450
10,119
126
First, there are two memory controllers on the CPU, but they are part of the NB / "uncore", not part of any particular core. So if there's a problem with one of the memory controllers, you can actually shut one of them down, if the BIOS supports that.

As far as shutting down cores, I had one AMD board that supported "core unlocking", that allowed for disabling individual cores (except for Core #0).

I suppose you could try to find one of those boards?
 

Rickyyy369

Member
Apr 21, 2012
149
13
81
That is, there is a menu that allows setting the CPU into 1, 2, 3, 4, or 5 core mode. You just don't get to pick which specific cores get disabled!

Have you tried setting it into one of those modes and seeing if it just so happens to disable the faulty core?
 

forumguy

Member
Sep 29, 2008
42
0
0
First, there are two memory controllers on the CPU, but they are part of the NB / "uncore", not part of any particular core. So if there's a problem with one of the memory controllers, you can actually shut one of them down, if the BIOS supports that.

As far as shutting down cores, I had one AMD board that supported "core unlocking", that allowed for disabling individual cores (except for Core #0).

I suppose you could try to find one of those boards?

Hi Larry. I wish I had one of those motherboards!

You mean above that AMD cores can have their respective memory controller disabled? If disabled, it will use a shared memory controller in the NB?
 

forumguy

Member
Sep 29, 2008
42
0
0
Have you tried setting it into one of those modes and seeing if it just so happens to disable the faulty core?

Yes. Unfortunately, this BIOS appears to disable from the 6th core at the end and work its way backwards. So my core #2 is in the worst possible position! If only my 6th core was bad! Then I could just choose the 5 core option!
 

VirtualLarry

No Lifer
Aug 25, 2001
56,450
10,119
126
Hi Larry. I wish I had one of those motherboards!

You mean above that AMD cores can have their respective memory controller disabled? If disabled, it will use a shared memory controller in the NB?

No, there's no "memory controller" on the cores. They use a crossbar bus I think to access the actual memory controllers, which access the DRAM array. Since those CPUs have dual-channel memory, there are two 64-bit memory controllers. (DCT0 and DCT1). They can normally be set for "ganged" or "unganged", but some BIOSes have the ability to shut off DCT 0 or 1 entirely. (You will lose half your RAM slots / capacity in doing this.)
 

KingFatty

Diamond Member
Dec 29, 2010
3,034
1
81
You could just disable all but one core, test to make sure it works, then enable another core and repeat until failure.

Maybe you can eek out the use of more than one core this way, depending how the mobo enables them - who knows, perhaps it's not specifically in the order they claim and you get lucky with some more cores than expected.
 

Soulkeeper

Diamond Member
Nov 23, 2001
6,713
142
106
You can dynamically disable cores in linux
Unfortunately it won't put them in a low power state when disabled tho so they'll still use like 10W per core at idle when disabled (more than leaving them enabled with acpi/powernow taking care of them).
 
Last edited:

forumguy

Member
Sep 29, 2008
42
0
0
You can dynamically disable cores in linux
Unfortunately it won't put them in a low power state when disabled tho so they'll still use like 10W per core at idle when disabled (more than leaving them enabled with acpi/powernow taking care of them).

Yeah, I've been reading about core disabling at the O/S layer. Supposedly Windows has such a thing as well.

One thing I need to research is *when* the OS kernel actually enables/disables cores during its boot up. The big problem here is core #2 is defective. If threads are dispatched onto this core at anytime during OS startup, there is a chance of memory or file corruption and total OS crash. That is the big reason BIOS layer is the most ideal location to do this in but I'm seeing that AMI and other BIOS developers keep their source code a secret.

If an easy solution can be done in the OS layer, I'm thinking the ideal flow would be for the OS to boot itself using only core #0. Only when it reaches the configuration that tells it what cores to enable should the kernel start dispatching threads to the other cores (minus the cores the OS is told not to use).
 

Soulkeeper

Diamond Member
Nov 23, 2001
6,713
142
106
Yeah, I've been reading about core disabling at the O/S layer. Supposedly Windows has such a thing as well.

One thing I need to research is *when* the OS kernel actually enables/disables cores during its boot up. The big problem here is core #2 is defective. If threads are dispatched onto this core at anytime during OS startup, there is a chance of memory or file corruption and total OS crash. That is the big reason BIOS layer is the most ideal location to do this in but I'm seeing that AMI and other BIOS developers keep their source code a secret.

If an easy solution can be done in the OS layer, I'm thinking the ideal flow would be for the OS to boot itself using only core #0. Only when it reaches the configuration that tells it what cores to enable should the kernel start dispatching threads to the other cores (minus the cores the OS is told not to use).

In linux you can do that, unfortunately core #0 would be whichever core responds first I believe. So it's random
 

paffinity

Member
Jan 25, 2007
89
1
71
What I mean is not OS downcoring, but system downcoring.
If you set bit 2 for register F3x190, then core 2 will be disabled on reboot.
If you can boot to anything and have access to PCI space this is the easiest thing to do.
The BIOS downcoring options would typically disable the cores in reverse.
 

sm625

Diamond Member
May 6, 2011
8,172
137
106
I dont think it is random which core gets assigned to core 0. I had a Q6600 for a few years, and I always had CPUTemp running. And core 1 was always 6 degrees hotter than core 0 and core 2 was always 2 degrees hotter than core 1 and so on. These ratios of heat never once changed, which implies that their positions on the die(s) were always the same.
 

forumguy

Member
Sep 29, 2008
42
0
0
In Windows its called set affinity, under the task manager. you can associate core's with software.

Yeah, unfortunately that won't work in my case since one of the cores is defective and should not ever be booted with. Also I would have to do that affinity change with *every* process that I ever start.
 

forumguy

Member
Sep 29, 2008
42
0
0
What I mean is not OS downcoring, but system downcoring.
If you set bit 2 for register F3x190, then core 2 will be disabled on reboot.
If you can boot to anything and have access to PCI space this is the easiest thing to do.
The BIOS downcoring options would typically disable the cores in reverse.

Now this is what I had in mind! I was going to use Windows 10 as the host O/S and have one or two Linux VMs. I might do that in reverse if I can get this working with a Linux kernel.
 

paffinity

Member
Jan 25, 2007
89
1
71
Okay, if you can boot into Linux and have sudo access, try this:

First read to see original value:
sudo lspci -s 00:18.3 -xxxx | grep 190

Should see something like this:
190: 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00

Now set bit 2 of F3x190: (assuming cores ordered 0, 1, 2, 3, 4, 5)
sudo setpci -s 00:18.3 190.B=4

Read back the bytes:
sudo lspci -s 00:18.3 -xxxx | grep 190

Should see the bit set now:
190: 04 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00


Reboot and core 2 should be disabled now. This will survive warm reboots (through OS or Ctrl-Alt-Del). If you shutdown or hit the reset button then you'll have to do this again.

Hope this fixes your problems!
 

forumguy

Member
Sep 29, 2008
42
0
0
Okay, if you can boot into Linux and have sudo access, try this:

First read to see original value:
sudo lspci -s 00:18.3 -xxxx | grep 190

Should see something like this:
190: 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00

Now set bit 2 of F3x190: (assuming cores ordered 0, 1, 2, 3, 4, 5)
sudo setpci -s 00:18.3 190.B=4

Read back the bytes:
sudo lspci -s 00:18.3 -xxxx | grep 190

Should see the bit set now:
190: 04 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00


Reboot and core 2 should be disabled now. This will survive warm reboots (through OS or Ctrl-Alt-Del). If you shutdown or hit the reset button then you'll have to do this again.

Hope this fixes your problems!

Hi paffinity. Thanks for those beautiful detailed instructions! This is the best solution so far. I didn't know that making and viewing such low level system changes was so easy with the right commands. I'm using a test "throw-away" Fedora 22 setup and its seeing only 5 CPUs after the reboot. I ran prime95 tests for over 15 hours without errors.

I also see that these PCI tools are also available for Windows.

The only other thing is to somehow get this to automatically get applied during OS startup. I love it when I learn about a whole new set of tools!
 

paffinity

Member
Jan 25, 2007
89
1
71
Awesome, great to hear that it solved your issues!
I suppose you can create a startup service to automatically set this up for you. But as long as you don't shutdown, you should be fine. I'm not sure what would happen on standby/sleep, hopefully it sticks.
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |