perf/x86/vlbr: Add c->flags to vlbr event constraints
authorLike Xu <likexu@tencent.com>
Wed, 3 Nov 2021 09:17:16 +0000 (17:17 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 25 Nov 2021 08:48:32 +0000 (09:48 +0100)
[ Upstream commit 5863702561e625903ec678551cb056a4b19e0b8a ]

Just like what we do in the x86_get_event_constraints(), the
PERF_X86_EVENT_LBR_SELECT flag should also be propagated
to event->hw.flags so that the host lbr driver can save/restore
MSR_LBR_SELECT for the special vlbr event created by KVM or BPF.

Fixes: 097e4311cda9 ("perf/x86: Add constraint to create guest LBR event without hw counter")
Reported-by: Wanpeng Li <wanpengli@tencent.com>
Signed-off-by: Like Xu <likexu@tencent.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Wanpeng Li <wanpengli@tencent.com>
Link: https://lore.kernel.org/r/20211103091716.59906-1-likexu@tencent.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
arch/x86/events/intel/core.c

index bc3f97f834011e1a9c8263a92257514881230bba..c7f1cc433a6aa30b28cfc357b1430282d5e35868 100644 (file)
@@ -2999,8 +2999,10 @@ intel_vlbr_constraints(struct perf_event *event)
 {
        struct event_constraint *c = &vlbr_constraint;
 
-       if (unlikely(constraint_match(c, event->hw.config)))
+       if (unlikely(constraint_match(c, event->hw.config))) {
+               event->hw.flags |= c->flags;
                return c;
+       }
 
        return NULL;
 }