[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 5/7] x86: enable CQM monitoring for each domain RMID
> -----Original Message----- > From: Andrew Cooper [mailto:andrew.cooper3@xxxxxxxxxx] > Sent: Friday, November 29, 2013 10:57 PM > To: Xu, Dongxiao > Cc: xen-devel@xxxxxxxxxxxxx; keir@xxxxxxx; JBeulich@xxxxxxxx; > Ian.Jackson@xxxxxxxxxxxxx; Ian.Campbell@xxxxxxxxxx; > stefano.stabellini@xxxxxxxxxxxxx; konrad.wilk@xxxxxxxxxx; > dgdegra@xxxxxxxxxxxxx > Subject: Re: [PATCH v3 5/7] x86: enable CQM monitoring for each domain RMID > > On 29/11/13 05:48, dongxiao.xu@xxxxxxxxx wrote: > > From: Dongxiao Xu <dongxiao.xu@xxxxxxxxx> > > > > If the CQM service is attached to a domain, its related RMID will be set > > to hardware for monitoring when the domain's vcpu is scheduled in. When > > the domain's vcpu is scheduled out, RMID 0 (system reserved) will be set > > for monitoring. > > > > Signed-off-by: Jiongxi Li <jiongxi.li@xxxxxxxxx> > > Signed-off-by: Dongxiao Xu <dongxiao.xu@xxxxxxxxx> > > --- > > xen/arch/x86/domain.c | 5 +++++ > > xen/arch/x86/pqos.c | 10 ++++++++++ > > xen/include/asm-x86/msr-index.h | 1 + > > xen/include/asm-x86/pqos.h | 1 + > > 4 files changed, 17 insertions(+) > > > > diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c > > index 41e1fc6..628f7eb 100644 > > --- a/xen/arch/x86/domain.c > > +++ b/xen/arch/x86/domain.c > > @@ -1371,6 +1371,8 @@ static void __context_switch(void) > > { > > memcpy(&p->arch.user_regs, stack_regs, > CTXT_SWITCH_STACK_BYTES); > > vcpu_save_fpu(p); > > + if ( system_supports_cqm() ) > > + cqm_assoc_rmid(0); > > p->arch.ctxt_switch_from(p); > > } > > > > @@ -1395,6 +1397,9 @@ static void __context_switch(void) > > } > > vcpu_restore_fpu_eager(n); > > n->arch.ctxt_switch_to(n); > > + > > + if ( system_supports_cqm() && n->domain->arch.pqos_cqm_rmid > > 0 ) > > + cqm_assoc_rmid(n->domain->arch.pqos_cqm_rmid); > > } > > > > gdt = !is_pv_32on64_vcpu(n) ? per_cpu(gdt_table, cpu) : > > diff --git a/xen/arch/x86/pqos.c b/xen/arch/x86/pqos.c > > index 615c5ea..1faa650 100644 > > --- a/xen/arch/x86/pqos.c > > +++ b/xen/arch/x86/pqos.c > > @@ -29,6 +29,7 @@ boolean_param("pqos", pqos_enabled); > > > > static unsigned int cqm_rmid_count = 256; > > integer_param("cqm_rmid_count", cqm_rmid_count); > > +static uint64_t rmid_mask; > > > > unsigned int cqm_upscaling_factor = 0; > > bool_t cqm_enabled = 0; > > @@ -75,6 +76,8 @@ static void __init init_qos_monitor(void) > > > > cpuid_count(0xf, 0, &eax, &ebx, &ecx, &qm_features); > > > > + rmid_mask = ~(~0ull << get_count_order(ebx)); > > + > > if ( qm_features & QOS_MONITOR_TYPE_L3 ) > > init_cqm(); > > } > > @@ -198,6 +201,13 @@ void get_cqm_info(cpumask_t *cpu_cqmdata_map, > struct xen_socket_cqmdata *data) > > on_selected_cpus(cpu_cqmdata_map, read_cqm_data, data, 1); > > } > > > > +void cqm_assoc_rmid(unsigned int rmid) > > +{ > > + uint64_t val; > > Xen style requires a newline here. > > Otherwise, > > Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Will change it in next version. Thanks, Dongxiao > > > + rdmsrl(MSR_IA32_PQR_ASSOC, val); > > + wrmsrl(MSR_IA32_PQR_ASSOC, (val & ~(rmid_mask)) | (rmid & > rmid_mask)); > > +} > > + > > /* > > * Local variables: > > * mode: C > > diff --git a/xen/include/asm-x86/msr-index.h > b/xen/include/asm-x86/msr-index.h > > index 46ef165..45f4918 100644 > > --- a/xen/include/asm-x86/msr-index.h > > +++ b/xen/include/asm-x86/msr-index.h > > @@ -491,5 +491,6 @@ > > /* Platform QoS register */ > > #define MSR_IA32_QOSEVTSEL 0x00000c8d > > #define MSR_IA32_QMC 0x00000c8e > > +#define MSR_IA32_PQR_ASSOC 0x00000c8f > > > > #endif /* __ASM_MSR_INDEX_H */ > > diff --git a/xen/include/asm-x86/pqos.h b/xen/include/asm-x86/pqos.h > > index 2ab9277..c75643a 100644 > > --- a/xen/include/asm-x86/pqos.h > > +++ b/xen/include/asm-x86/pqos.h > > @@ -41,5 +41,6 @@ void free_cqm_rmid(struct domain *d); > > unsigned int get_cqm_count(void); > > unsigned int get_cqm_avail(void); > > void get_cqm_info(cpumask_t *cpu_cqmdata_map, struct > xen_socket_cqmdata *data); > > +void cqm_assoc_rmid(unsigned int rmid); > > > > #endif _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |