On Fri, Sep 16, 2016 at 04:36:48PM -0300, Eduardo Habkost wrote:
> On Fri, Sep 16, 2016 at 07:50:24PM +0400, Marc-André Lureau wrote:
> > Those are unneeded now that CPUState nr_{cores,threads} is always
> > initialized.
> > 
> > Signed-off-by: Marc-André Lureau <marcandre.lur...@redhat.com>
> 
> Reviewed-by: Eduardo Habkost <ehabk...@redhat.com>
> 
> I will wait for at least an Acked-by from the PPC maintainers
> before I merge it, though.

As I've said elsewhere, I'm not entirely convinced that the vcpu
structure is the place to keep this info.

But since it's there, we might as well use it.

Acked-by: David Gibson <da...@gibson.dropbear.id.au>

> 
> > ---
> >  target-i386/cpu.c           | 8 ++++----
> >  target-ppc/translate_init.c | 3 ++-
> >  include/sysemu/cpus.h       | 5 +----
> >  3 files changed, 7 insertions(+), 9 deletions(-)
> > 
> > diff --git a/target-i386/cpu.c b/target-i386/cpu.c
> > index 5a5299a..e863bea 100644
> > --- a/target-i386/cpu.c
> > +++ b/target-i386/cpu.c
> > @@ -2490,13 +2490,13 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t 
> > index, uint32_t count,
> >  
> >          switch (count) {
> >          case 0:
> > -            *eax = apicid_core_offset(smp_cores, smp_threads);
> > -            *ebx = smp_threads;
> > +            *eax = apicid_core_offset(cs->nr_cores, cs->nr_threads);
> > +            *ebx = cs->nr_threads;
> >              *ecx |= CPUID_TOPOLOGY_LEVEL_SMT;
> >              break;
> >          case 1:
> > -            *eax = apicid_pkg_offset(smp_cores, smp_threads);
> > -            *ebx = smp_cores * smp_threads;
> > +            *eax = apicid_pkg_offset(cs->nr_cores, cs->nr_threads);
> > +            *ebx = cs->nr_cores * cs->nr_threads;
> >              *ecx |= CPUID_TOPOLOGY_LEVEL_CORE;
> >              break;
> >          default:
> > diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
> > index 407ccb9..b66b40b 100644
> > --- a/target-ppc/translate_init.c
> > +++ b/target-ppc/translate_init.c
> > @@ -9943,7 +9943,8 @@ static void ppc_cpu_unrealizefn(DeviceState *dev, 
> > Error **errp)
> >  
> >  int ppc_get_compat_smt_threads(PowerPCCPU *cpu)
> >  {
> > -    int ret = MIN(smp_threads, kvmppc_smt_threads());
> > +    CPUState *cs = CPU(cpu);
> > +    int ret = MIN(cs->nr_threads, kvmppc_smt_threads());
> >  
> >      switch (cpu->cpu_version) {
> >      case CPU_POWERPC_LOGICAL_2_05:
> > diff --git a/include/sysemu/cpus.h b/include/sysemu/cpus.h
> > index fe992a8..3728a1e 100644
> > --- a/include/sysemu/cpus.h
> > +++ b/include/sysemu/cpus.h
> > @@ -29,12 +29,9 @@ void qtest_clock_warp(int64_t dest);
> >  
> >  #ifndef CONFIG_USER_ONLY
> >  /* vl.c */
> > +/* *-user doesn't have configurable SMP topology */
> >  extern int smp_cores;
> >  extern int smp_threads;
> > -#else
> > -/* *-user doesn't have configurable SMP topology */
> > -#define smp_cores   1
> > -#define smp_threads 1
> >  #endif
> >  
> >  void list_cpus(FILE *f, fprintf_function cpu_fprintf, const char *optarg);
> 

-- 
David Gibson                    | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au  | minimalist, thank you.  NOT _the_ _other_
                                | _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature

Reply via email to