|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2] Intel/VPMU: Add support for full-width PMC writes
>>> On 06.08.13 at 16:53, Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx> wrote:
> --- a/xen/arch/x86/hvm/vmx/vpmu_core2.c
> +++ b/xen/arch/x86/hvm/vmx/vpmu_core2.c
> @@ -64,6 +64,10 @@
> #define PMU_FIXED_WIDTH_BITS 8 /* 8 bits 5..12 */
> #define PMU_FIXED_WIDTH_MASK (((1 << PMU_FIXED_WIDTH_BITS) -1) <<
> PMU_FIXED_WIDTH_SHIFT)
>
> +/* Alias registers (0x4c1) for full-width writes to PMCs */
> +#define MSR_PMC_ALIAS_MASK (~0x400)
I'd prefer this to be (~(MSR_IA32_PERFCTR0 ^ MSR_IA32_A_PERFCTR0)),
so there's just a single definition. Alternatively you could put
this in the header and use it for defining MSR_IA32_A_PERFCTR0.
> +bool_t __read_mostly full_width_write;
static.
> @@ -260,6 +266,15 @@ static void core2_vpmu_set_msr_bitmap(unsigned long
> *msr_bitmap)
> clear_bit(msraddr_to_bitpos(MSR_IA32_PERFCTR0+i),
> msr_bitmap + 0x800/BYTES_PER_LONG);
> }
> + if ( full_width_write )
> + {
> + for ( i = 0; i < core2_get_pmc_count(); i++ )
> + {
> + clear_bit(msraddr_to_bitpos(MSR_IA32_A_PERFCTR0+i), msr_bitmap);
> + clear_bit(msraddr_to_bitpos(MSR_IA32_A_PERFCTR0+i),
> + msr_bitmap + 0x800/BYTES_PER_LONG);
> + }
> + }
Perhaps better put these into the earlier loop, rather than having
a second one?
> @@ -324,11 +349,17 @@ static inline void __core2_vpmu_load(struct vcpu *v)
> {
> int i;
> struct core2_vpmu_context *core2_vpmu_cxt = vcpu_vpmu(v)->context;
> + int pmc_start;
>
> for ( i = 0; i < core2_fix_counters.num; i++ )
> wrmsrl(core2_fix_counters.msr[i], core2_vpmu_cxt->fix_counters[i]);
> +
> + if ( full_width_write )
> + pmc_start = MSR_IA32_A_PERFCTR0;
> + else
> + pmc_start = MSR_IA32_PERFCTR0;
> for ( i = 0; i < core2_get_pmc_count(); i++ )
> - wrmsrl(MSR_IA32_PERFCTR0+i,
> core2_vpmu_cxt->arch_msr_pair[i].counter);
> + wrmsrl(pmc_start+i, core2_vpmu_cxt->arch_msr_pair[i].counter);
Even if the old code (wrongly) didn't have them - please add
spaces around the +.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |