Fedora only allows up to C3 PKG C-states. All other distros on same hardware allow C10

Update 2:

The cause of the problem is found. It’s the smartcard reader service, pcscd. At boot up, it pegs the reader to 100% use.

It only takes a restart of the socket with sudo systemctl restart pcscd.socket to resume the normal behaviour and allow the system to go to C10.

Lenovo is also now looking into possible issues with the firmware of the X13 Yoga Gen3.

This issue has drawn the attention of everyone involved, Fedora/RedHat, the pcscd creator and Lenovo. Amazing job.

Obviously if your X13 Yoga Gen3 has no smartcard reader, this is not going to be an issue.

I wonder if other Thinkpads (Alder Lake or later) with a smartcard reader may have the same problem.

Update:

Many thanks to Hans De Goede for his amazing support and help in finding a work around this, and all that during a weekend! Many many thanks, I’m grateful.

More here: 2264606 – Fedora only allows up to C3 PKG C-states. All other distros on same hardware allow C10

This is more complex than one thought.

The problem only occurs if your X13y Gen 3 has a Smartcard reader and ONLY if you use Gnome.

Gnome pegs the Smartcard reader and the Smartcard reader then hods the CPU interrupts and thus prevents it from reaching anything deeper than C3.

Currently the only solution is to (physically) disable the Smartcard reader (disconnect it from the mainboard).

This is a problem unique to Fedora, Gnome and the SmartCard reader of the X13Yoga Gen3.

As soon as I identify which system to file a bug under, I will do and update again.

Many thanks for all who tried to help, it is very much appreciated.

Original Post

I am trying to figure this out for sometime and I’m posting again in hope anyone can help.

This is on a ThinkPad X13 Yoga Gen 3, i7-1255u.

We got 10 of these laptops, all setup with F39, and we are now facing this issue, Fedora won’t let the CPU (pkg) reach deeper C-states, with a massive effect on battery life. On Ubuntu we get 8hrs, on Fedora only 5 with similar load.

In my testing I have done clean installs of F38, F39 and Rawhide, all with the same issue: The CPU (pkg) goes up to C3. That’s it.

Fedora 39:

F38 (kernel 6.2.9) and Rawhide (F41, kernel 6.8.0) are the same, only C3.

I have tried Ubuntu 23.10, EndeavourOS (latest ISO), OpenSuse TW, Debian Testing, they all go to C10.

Here are some screenshots:

Ubuntu:

EndeavourOS:

Also tested PopOS, Arch, Manjaro and Garunda, all reach C10. Nobara (Fedora based) is also limited to C3. No screenshots for these.

It must be something in the kernel that Fedora uses, but there are 1000s of options in the kernel, and a diff between Fedora’s config and the other distros’ kernels is impossible to yield something I can work with.

I have looked onto cpupower idle-info and the output of turbostat and as far as I can tell, all distros produce the same. There is no difference that I can see in a “setting”.

Intel graphics are in RC6 mode for all distros too.

Any input is very welcome. Many thanks.

P.S. Interestingly enough, when connected to a TB3 dock, which is known to limit pkg C-states, all other distros are limited to C3, Fedora to C2.

I have posted this on reddit, here: Reddit

I have also filed a bug here: https://bugzilla.redhat.com/show_bug.cgi?id=2264606

2 Likes

Just for reference, I am pasting here a link to the description of the Package C-States of 12th gen Intel CPUs: Package C-States - 001 - ID:655258 | 12th Generation Intel® Core™ Processors Datasheet, Volume 1 of 2

Thank you. I have seen this document and only checked what I could, i.e RC6 for the iGPU.

My laptop is the same.

Hi, have you tried other distributions? Also, make sure you’re not connected to a TB3 dock when checking.

1 Like

Yeah, I didn’t use any docks at all. Regarding other distributions, I have not tried any at all.

Fix for X13 Yoga Gen3 CPU PKG - C states

Update:

Many thanks to Hans De Goede from Redhat for his amazing support and help in finding a work around this, and all that during a weekend! Many many thanks, I’m grateful.

This is more complex than one thought.

The problem only occurs if your X13y Gen 3 has a Smartcard reader and ONLY if you use Gnome. If you use KDE or other DE this is not a problem and the CPU reaches C10.

Gnome pegs the Smartcard reader and the Smartcard reader then hogs the CPU interrupts and thus prevents it from reaching anything deeper than C3.

Currently the only solution is to (physically) disable the Smartcard reader (disconnect it from the mainboard).

This is a problem unique to Fedora, Gnome and the SmartCard reader of the X13Yoga Gen3.

As soon as I identify which system to file a bug under, I will do and update again.

Many thanks for all who tried to help, it is very much appreciated.

1 Like

Wow this was an interesting read.

@spxak1 Instead of Update can you make a more explicit tile? It creates a link that is easily found on search engines. maybe call it " Fix for X13Yoga Gen 3 Power - C states" or something similar?

I don’t think I can edit the title. I would gladly do so.

just your post above where you marked solution. You used # Update , that creates a url link too.

Did it work?

Awesome. Thanks

I will update again with the new bug report and if/when solved (without having to disconnect the Smartcard reader). Thanks for your help.

Fix for X13 Yoga Gen 3 pkg C-States

The cause of the problem is found. It’s the smartcard reader service, pcscd. At boot up, it pegs the reader to 100% use.

It only takes a restart of the socket with sudo systemctl restart pcscd.socket to resume the normal behaviour and allow the system to go to C10.

Lenovo is also now looking into possible issues with the firmware of the X13 Yoga Gen3.

This issue has drawn the attention of everyone involved, Fedora/RedHat, the pcscd creator and Lenovo. Amazing job.

Obviously if your X13 Yoga Gen3 has no smartcard reader, this is not going to be an issue.

I wonder if other Thinkpads (Alder Lake or later) with a smartcard reader may have the same problem.