On Thu, 2025-06-05 at 17:03 +0200, Rafael J. Wysocki wrote: > Hi Everyone, > > The purpose of this series is to reapply the code changes from commit > 96040f7273e2 ("x86/smp: Eliminate mwait_play_dead_cpuid_hint()") that > has been reverted because of an issue introduced by it. This takes > place in the last patch ([5/5]) and the previous patches make > preparatory changes needed to avoid breaking systems in the field > once again. Hello, thanks Rafael for the patches, and Peter/Dave for helping handling the issue. Tested-by: Artem Bityutskiy <artem.bityutskiy@xxxxxxxxxxxxxxx> I measured a Granite Rapids Xeon with v6.15 vanilla [setup 1], then with v6.15 + revert of 96040f7273e2 + these 5 patches [setup 2]. I can see that in setup 2 the average idle package power is 54% lower than in setup 1. This is simply because in setup 1 there is no CC6 / PC6. And this is because every core's sibling is in CC1, which blocks CC6 on every core. == Reference == 1. Small article explaining then naming I use (CC1, CC6, PC6): https://github.com/intel/pepc/blob/main/docs/misc-cstate-namespaces.md == Non-essential details, just for reference == The measurement could have been done in a simpler way, but since I have developed tools and have a good setup to measure workloads with my open source tools, I did the following. Used stats-collect: https://github.com/intel/stats-collect/ # Boot the vanilla kernel on system under test (SUT) named 'gnr2' (this # is the host name). Then run the following command on my system, that # has root SSH access to 'gnr2' configured. stats-collect start --stats all -H gnr2 --reportid gnr2-idle-nosmt- v6.15-vanilla -o raw/gnr2-idle-nosmt-v6.15-vanilla -- sleep 600 # The above SSHed to gnr2, ran workload "sleep 600", and collected a # bunch of statistics, which were saved to # raw/gnr2-idle-nosmt-v6.15-vanilla on my host. # Boot the "setup 2" kernel, which I referred to as "6.15-fixed". Run # the following command. stats-collect start --stats all -H gnr2 --reportid gnr2-idle-nosmt- v6.15-fixed -o raw/gnr2-idle-nosmt-v6.15-fixed -- sleep 600 # Then generate an HTML diff between those. stats-collect report raw/gnr2-idle-nosmt-v6.15-vanilla/ raw/gnr2-idle- nosmt-v6.15-fixed/ -o diff # Open "diff" with a browser (I have my HTTP server, so just copied it # to ~/public_html). Find lots of stats, in my case # turbostat, interrupts, IPMI. In the diff, I checked turbostat's PkgPwr (CPU chip power in Watts) and turbostat's CPU%c6 (CC6 residency, %). HTH, Artem.