Any way to disable specific CPU idle (Cx) states?

I just got a new Toshiba Tecra S11 notebook, which has a Core i5 520M CPU, and it appears to suffer from a well-known problem: a high pitched noise when the CPU is idle.

Googling around revealed that this is caused by a specific power-saving mode in the CPU. In most cases, C4 mode is blamed for the noise.

So my question is: is it possible to disable C4 mode (or any other "sleep" mode) using some utility or BIOS setting? I don't mind if it hurts battery life.

I'd appreciate any advice on this matter. It's driving me crazy.

FYI: I'm running Windows 7 64-bit


Solution 1:

I've checked the Toshiba (Canada) site and there no mention of that problem, either in their technical service bulletins, or from users in the forums.

I then called Toshiba personally (we're a Toshiba reseller/repair depot), and got them to dig around in their notes to see if there are any reports outside of what's on the website. They told me that they can't find anything relating to this being a common, or even previously reported, problem with the Tecra line.

I questioned them on possible warranty replacement, and they responded that if it's under warranty and it's determined that it's not a disk in the DVD drive, or a fan that's failing/whining because it's full of dirt, then that whine is not acceptable, and it would be repaired.

Which is how I would expect to deal with it if you had brought it directly to us.

My suspects would be LCD inverter first (common whiner), and if that proves to be OK, then the next step would be to test with a new CPU (only because it's easier), and then replace the motherboard with the intention being to get rid of faulty voltage controllers and capacitors that are (more likely) causing the noise. None of this "it's normal" crud. ;)

So, if you're under warranty (Tecra's usually have 3 years of warranty; you can check yours here) it sounds like it'd be covered, and that's probably your best bet to get rid of it, and not hamper your battery life (or alike) by disabling features.

Solution 2:

There is a way, even when your goddamn OEM provider locked out everything from your bios just in case you try fix the annoying whine problem in their laptop.

You need to write one Model Specific Register (MSR). It can be done with several utilities (RW-Everything, CrystalCPUID or whatever you can find).

The exact MSR address and the C-State values for a plenty of Intel CPUs can be found in Intel® 64 and IA-32 Architectures Software Developer’s Manual (Volume 3B: System Programming Guide, Part 2).

I have Core i5 520M and the register for it is MSR_PKG_CST_CONFIG_CONTROL (0x00E2). You need to specify the highest possible value in Package C-State limit field (bits 2:0) for which the whine disappears. (In my case the change was from 3 down to 1)

In case of RW-Everything you need to add the register and its address manually using the user list function of the MSR access window.

In case of CrystalCPUID you can set the value per core (Core i5 520M has 2 cores which are displayed as 4 CPUs) and basically downgrading one core is enough to stop the whine.

Unfortunately both utilities I've found doesn't give a way to make them do what's needed automatically, so you need to start them and change the value manually every time you start your PC, but at least the configuration is remembered and you can close the utilities after the change.

Newly added:

RW-Everything actually provide an automated method, a script can be loaded from the command line via rw.exe /command=ScriptName.rw

In my case the script is:

>CPU 3
>WRMSR 0x00e2 0x00000000 0x02000401
>RwExit

CPU 3 focuses the second core of the CPU, if omitted the first core (CPU 1 and CPU 2) will be focused. If both cores must be configured separate WRMSR commands are needed after focusing each of the cores.

Keep in mind that the value to be written is probably CPU model specific. Your default can be seen in the RW-Everything's MSR window.

The next step is to create a scheduled task which to run the application at startup and after resuming from sleep (the config is reset then).

Solution 3:

Philippe is right on about cpu whine and how common it is. I am an IT technician and can testify. It not really the cpu that whines but rather a coil on an inductor on the motherboard near the cpu voltage regulators. When certain voltages are applied a resonance can sometimes be heard. I've had lcd monitors that whined when in power save mode. Opening it up and applying a drop of hot glue fixes it. Similar principle and could probably be fixed the same way. Most of the core 2's and up have some sort of whine in certain power states if you can listen closely. Factors like case design and fan placement affect the degree you can hear it. Like most of the other posters, I too at first thought it must be an lcd inverter, or some moving part like a fan or hard drive, but you can open up the machine and use a straw by your ear to isolate the sound. If your bios had an option to disable enhanced power states you'd be good. I'm currently dealing with the same issue on a core i5 430 Asus laptop. This is common in certain macbooks from a few years ago. Dell even has a KB article describing it.

http://support.dell.com/support/topics/global.aspx/support/dsn/en/document?c=us&cs=19&dl=false&l=en&s=dhs&docid=0A7D5CD2E17F5125E0401E0A55176204&doclang=en

Google "cpu whine" or "how to disable c4 state" for countless others. I can only post one link here.