On 06/08/2013 09:11 PM, Andreas Färber wrote:
  if (tcg_enabled() && !inited) {
>          inited = true;
>          s390x_translate_init();
>      }
>+
>+    smp_cpus += 1;
Won't we need some form of locking?

If we fiddle with a global CPU counter, we should do so in qom/cpu.c,
not just in s390x code.


I've redesigned a lot of this to make it simpler and less intrusive. I'm almost ready to post the next revision but I'm hung up on this one thing.

I moved the smp_cpu increment to qom/cpu.c : cpu_common_realizefn. However this seems to break the user mode target because smp_cpus does not exist. I tried wrapping the increment in a #ifndef CONFIG_USER_ONLY statement but it seems to have no effect. I think the reason for that is because CONFIG_USER_ONLY is added to config-target.h which is not actually generated until after we compile qom/cpu.c.

...
  CC    qom/object.o
  CC    qom/container.o
  CC    qom/qom-qobject.o
  CC    qom/cpu.o
  CC    hw/core/qdev.o
  CC    hw/core/qdev-properties.o
  CC    hw/core/irq.o
  GEN   s390x-linux-user/config-target.h
  CC    s390x-linux-user/exec.o
...

Is there another place I should put the increment?


--
-- Jason J. Herne (jjhe...@linux.vnet.ibm.com)


Reply via email to