Re: [PATCH v3 04/17] perf: x86/ds: Handle guest PEBS overflow PMI and inject it to guest

From: Xu, Like
Date: Fri Jan 15 2021 - 10:13:14 EST


On 2021/1/15 22:44, Peter Zijlstra wrote:
On Fri, Jan 15, 2021 at 10:30:13PM +0800, Xu, Like wrote:

Are you sure? Spurious NMI/PMIs are known to happen anyway. We have far
too much code to deal with them.
https://lore.kernel.org/lkml/20170628130748.GI5981@leverpostej/T/

In the rr workload, the commit change "the PMI interrupts in skid region
should be dropped"
is reverted since some users complain that:

It seems to me that it might be reasonable to ignore the interrupt if
the purpose of the interrupt is to trigger sampling of the CPUs
register state. But if the interrupt will trigger some other
operation, such as a signal on an fd, then there's no reason to drop
it.
I assume that if the PMI drop is unacceptable, either will spurious PMI
injection.

I'm pretty open if you insist that we really need to do this for guest PEBS
enabling.
That was an entirely different issue. We were dropping events on the
floor because they'd passed priv boundaries. So there was an actual
event, and we made it go away.

Thanks for your clarification and support.

What we're talking about here is raising an PMI with BUFFER_OVF set,
even if the DS is empty. That should really be harmless. We'll take the
PMI, find there's nothing there, and do nothing.

The only harm point is confusing the guest PEBS user with
the behavior of pebs_interrupt_threshold.

Now that KVM has to break it due to cross-mapping issue,
Let me implement this idea in the next version w/ relevant performance data.