Return to Level1Techs.com

Ryzen and disabling C6 C-state, the curse of C6

Seems like all the solutions I tried to stabilize Ryzen by disabling C-State C6 locks the CPU at base clocks.

Apparently people affected by the Curse of C6 have had no official definite fix in the kernel or from AMD themselves since Ryzen 1st gen…

I want to gather horror stories here because it looks like this is EXTREMELY common. Community solutions seem to be all over the place with mixed results.

Whoops! I left the Custom Pstates enabled and that turned off Precision Boost. You can indeed disable all Cstate stuff in BIOS and it will no longer drop below 1V idle voltage. I combined that with the zenstates.py fix.

The idle bug afflicting Gen 1 Ryzen CPUs — for which disabling C6 was a workaround — was addressed in AGESA update 1.0.0.2a which was incorporated into pretty-much all BIOS updates by the end of 2018. It exposed a “Power Supply Idle Control” option in the BIOS (located somewhere like Advanced » AMD CBS » Zen Common) which let you switch from the default setting to “Typical”. That solved the problem (freezes and restarts when idle) for the majority of folks. Certainly did for me.

Are you saying that changing “Power Supply Idle Control” disables Precision Boost on a 3000?

Um, it was removed again in later AGESA updates by accounts of both ASUS and ASRock both taking away the option on Zen2 CPUs on the latest AGESA.

It’s been documented on the Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=196683

The Precision Boost thing was me being an idiot going through BIOS pages too fast, aka PEBCAK.

Thanks for the update on that BIOS option. Glad you got your system stable again.

Not quite, still have to reconfirm 1800 FCLK is stable and reconfirm idle is stable.

Okay, found some interesting things about Precision Boost.

Original research, take with a grain of salt.

Initially I thought disabling C-states disables Precision Boost entirely. This is not true, but it does not mean Precision Boost isn’t affected.

Precision Boost is somewhat tied to C-states and allocates boost frequency based on how low the C-state on other cores can get.

Single core performance has to work harder for more power budget if none of the cores can enter C6 C-state. This results in lower boost clocks.

Unfortunately, the 2 less than ideal solutions, globally disabling C-state and using zenstates.py need you to compensate for available power/voltage for boost by raising it to hit the same boost clocks as before.

Global C-states being off has the most impact, but has the potential to stabilize Live USB/CDs of most Linux distros. If you run a lot of distros, this is what you should choose.

zenstates.py only disables C6, allowing inactive cores to downclock more to provide more “budget” to the single loaded core.

Of course, since all cores are loaded in a multi-thread workload, C-states don’t do anything for that workload.

It’s still up to AMD to fix C6 issues since Precision Boost relies on it to gain more power budget for higher boost clocks on single core. With the crippled state of C6, you will have to live with lower boost clocks or deal with regular instability.

Well, the difference in clockspeed can’t be that big. I disable C-States on all the things and got fine clocks on my 2700X until I sold it.

You can use the EDC bug to get boost up again, but possibly this bypasses FIT and might lead to too high vcore and degradation. Lots of speculation at OC.net.

https://www.overclock.net/forum/13-amd-general/1741052-edc-1-pbo-turbo-boost.html