Re: [PATCH] x86/perf: Default freeze_on_smi on for Comet Lake and later.

From: Liang, Kan
Date: Mon Jan 24 2022 - 12:05:06 EST




On 1/24/2022 11:30 AM, Peter Zijlstra wrote:
On Mon, Jan 24, 2022 at 11:00:56AM -0500, Liang, Kan wrote:


On 1/24/2022 7:21 AM, Peter Zijlstra wrote:
On Fri, Jan 21, 2022 at 11:26:44PM -0800, Kyle Huey wrote:
Beginning in Comet Lake, Intel extended the concept of privilege rings to
SMM.[0] A side effect of this is that events caused by execution of code
in SMM are now visible to performance counters with IA32_PERFEVTSELx.USR
set.

rr[1] depends on exact counts of performance events for the user space
tracee, so this change in behavior is fatal for us. It is, however, easily
corrected by setting IA32_DEBUGCTL.FREEZE_WHILE_SMM to 1 (visible in sysfs
as /sys/devices/cpu/freeze_on_smi). While we can and will tell our users to
set freeze_on_smi manually when appropriate, because observing events in
SMM is rarely useful to anyone, we propose to change the default value of
this switch.

+ Andi

From we heard many times from sophisticated customers, they really hate
blind spots. They want to see everything. That's why we set freeze_on_smi to
0 as default. I think the patch breaks the principle.

Well, USR really, as in *REALLY* should not be counting SMM. That's just
plain broken.


For the USR only case, the bit could be set.

There's maybe an argument to include it in OS, but USR is ring-3.

But we don't have an option for the USR only case. The changing will impact the SYS case as well. Personally, maybe it's better to let the user apace app control the bit as needed rather than changing the default kernel value for all cases.

Thanks,
Kan