On Thu, Oct 18, 2012 at 11:19:14PM -0000, Andi Kleen wrote: > static inline u8 fixed_en_pmi(u64 ctrl, int idx) > @@ -400,7 +407,7 @@ int kvm_pmu_set_msr(struct kvm_vcpu *vcpu, u32 index, u64 > data) > } else if ((pmc = get_gp_pmc(pmu, index, MSR_P6_EVNTSEL0))) { > if (data == pmc->eventsel) > return 0; > - if (!(data & 0xffffffff00200000ull)) { > + if (!(data & 0xfffffffc00200000ull)) { > reprogram_gp_counter(pmc, data); > return 0; > }
Mask should depend on cpuid bits provided to a guest. SDM says TSX is available if CPUID.(EAX=7, ECX=0):RTM[bit 11]=1, or if CPUID.07H.EBX.HLE [bit 4] = 1, so we need to check for this in kvm_pmu_cpuid_update() and initialize mask accordingly. -- Gleb. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/