[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v16 13/23] x86/VPMU: Interface for setting PMU mode and flags
>>> On 17.12.14 at 16:38, <boris.ostrovsky@xxxxxxxxxx> wrote: > Acked-by: Kevin Tian <kevin.tian@xxxxxxxxx> > Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> > Reviewed-by: Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxx> > Tested-by: Dietmar Hahn <dietmar.hahn@xxxxxxxxxxxxxx> I don't see these being valid anymore, and I think this isn't the first time I'm pointing out that you should drop such tags when making more than really benign changes. > @@ -277,3 +289,163 @@ void vpmu_dump(struct vcpu *v) > vpmu->arch_vpmu_ops->arch_vpmu_dump(v); > } > > +void vpmu_unload(struct vpmu_struct *vpmu) > +{ > + if ( !vpmu_is_set(vpmu, VPMU_CONTEXT_LOADED | VPMU_RUNNING) ) > + return; > + > + if (vpmu->arch_vpmu_ops && vpmu->arch_vpmu_ops->arch_vpmu_unload) > + vpmu->arch_vpmu_ops->arch_vpmu_unload(vpmu); > + > + vpmu_reset(vpmu, VPMU_RUNNING | VPMU_RUNNING); ??? > +static long vpmu_unload_next(void *arg) > +{ > + struct vcpu *last; > + > + local_irq_disable(); /* so that last_vcpu doesn't change under us. */ > + > + last = this_cpu(last_vcpu); > + if ( last ) > + { > + vpmu_unload(vcpu_vpmu(last)); > + this_cpu(last_vcpu) = NULL; > + } > + > + local_irq_enable(); > + > + cpumask_and(&vpmu_cpumask_unload, &vpmu_cpumask_unload, &cpu_online_map); > + if ( cpumask_weight(&vpmu_cpumask_unload) > 1 ) > + { > + int ret; > + int cpu = cpumask_cycle(smp_processor_id(), &vpmu_cpumask_unload); CPU numbers are unsigned. > +static int vpmu_unload_all(unsigned long old_mode) > +{ > + int ret = 0; > + > + vpmu_unload(vcpu_vpmu(current)); > + > + if ( nr_cpu_ids > 1 ) > + { > + unsigned int cpu; > + > + cpumask_or(&vpmu_cpumask_unload, &vpmu_cpumask_unload, > &cpu_online_map); Why do you want to re-use old state here? I.e. don't you mean cpumask_copy()? I don't see why you need a static mask anyway - just store the CPU number you started only in a static, and cycle through cpu_online_map until you reach it again. > + cpu = cpumask_cycle(smp_processor_id(), &vpmu_cpumask_unload); Nothing guarantees cpu < nr_cpus_ids here, as nr_cpu_ids > 1 doesn't mean there's more than one CPU online. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |