On Fri, Nov 16, 2018 at 05:19:45AM -0800, kan.liang@xxxxxxxxxxxxxxx wrote:
From: Kan Liang <kan.liang@xxxxxxxxxxxxxxx> The client IMC bandwidth events return very huge result. perf stat -e uncore_imc/data_reads/ -e uncore_imc/data_writes/ -I 10000 -a 10.000117222 34,788.76 MiB uncore_imc/data_reads/ 10.000117222 8.26 MiB uncore_imc/data_writes/ 20.000374584 34,842.89 MiB uncore_imc/data_reads/ 20.000374584 10.45 MiB uncore_imc/data_writes/ 30.000633299 37,965.29 MiB uncore_imc/data_reads/ 30.000633299 323.62 MiB uncore_imc/data_writes/ 40.000891548 41,012.88 MiB uncore_imc/data_reads/ 40.000891548 6.98 MiB uncore_imc/data_writes/ 50.001142480 1,125,899,906,621,494.75 MiB uncore_imc/data_reads/ 50.001142480 6.97 MiB uncore_imc/data_writes/ The client IMC events are freerunning counters. They still use the old event encoding format (0x1 for data_read and 0x2 for data write). The counter bit width is calculated by common code, which assume that the standard encoding format is used for the freerunning counters. Error bit width information is calculated. The event->attr.config, which directly from user space, should not be used by the functions of freerunning counters. For client IMC events, the attr.config needs to be converted to the standard encoding format. The modified event config will be stored in event->hw.config. For other freerunning counters, the attr.config has the correct format. Just save it in event->hw.config. Using event->hw.config to replace event->attr.config for the functions of freerunning counters. Fix: commit 9aae1780e7e8 ("perf/x86/intel/uncore: Clean up client IMC uncore")
Please use a "fixes" (vs "fix") tag here, a few folks have automation around this. It should look something like this: Fixes: commit 9aae1780e7e8 ("perf/x86/intel/uncore: Clean up client IMC uncore") Also, if you intend for this to go in stable trees, please add a stable tag rather than just cc it to the stable mailing list. Something like this: Cc: stable@xxxxxxxxxx -- Thanks, Sasha