Re: [PATCH RESEND] KVM: x86/pmu: Make top-down.slots event unavailable in supported leaf

From: Paolo Bonzini
Date: Fri Jan 07 2022 - 11:59:58 EST


On 1/5/22 06:07, Like Xu wrote:
+ /*
+ * The 8th Intel pre-defined architectural event (Topdown Slots) will be supported
+ * if the 4th fixed counter exists && EAX[31:24] > 7 && EBX[7] = 0.
+ *
+ * Currently, KVM needs to set EAX[31:24] < 8 or EBX[7] == 1
+ * to make this event unavailable in a consistent way.
+ */
+ if (edx.split.num_counters_fixed < 4) {
+ if (eax.split.mask_length > 7)
+ eax.split.mask_length--;
+ if (eax.split.mask_length > 7)
+ cap.events_mask |= BIT_ULL(7);
+ }
+

The first "> 7" is wrong; it should be == 8, shouldn't it? Something like

if (edx.split.num_counters_fixed < 4 && eax.split.mask_length >= 8) {
if (eax.split.mask_length == 8)
eax.split.mask_length--;
else
cap.events_mask |= BIT_ULL(7);
}

is what you mean, I think?

Paolo