All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Lieven <pl@kamp.de>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: qemu-devel@nongnu.org, "Anthony Liguori" <anthony@codemonkey.ws>,
	"Benoît Canet" <benoit@irqsave.net>
Subject: Re: [Qemu-devel] [PULL 11/13] target-i386: forward CPUID cache leaves when -cpu host is used
Date: Tue, 19 Nov 2013 12:07:44 +0100	[thread overview]
Message-ID: <528B4680.6060400@kamp.de> (raw)
In-Reply-To: <528B41A5.1080504@redhat.com>

On 19.11.2013 11:47, Paolo Bonzini wrote:
> Il 19/11/2013 11:25, Peter Lieven ha scritto:
>> ~/git/qemu$ x86_64-softmmu/qemu-system-x86_64 -m 2048 -drive
>> if=virtio,file=iscsi://172.21.200.45/iqn.2001-05.com.equallogic:0-8a0906-9d95c510a-344001d54795289f-2012-r2-1-7-0/0,format=raw,cache=writeback,aio=native
>> -smp 2,cores=2,threads=1,sockets=1 -cpu host -monitor stdio -vnc :1
>> -enable-kvm -usb -usbdevice tablet -vga cirrus -global
>> virtio-blk-pci.scsi=off  -serial null  -parallel null -boot c
> What is your host CPU's topology
I tested it with 1 socket, 2 cores, 2 threads per core (my workstation) and 2 sockets, 8 cores per socket, 2 threads per thread.
Both crash.
>
>> With just -smp 2 it works. However, have a look at my other email I
>> think there is a bug in smp_parse, because -smp 2 yields
>> cpus=2,cores=1,threads=1,sockets=1 whereas I think cores should
>> be 2.
> The code matching the comment in vl.c ("compute missing values, prefer
> sockets over cores over threads") would be like "-smp
> cpu=2,cores=1,threads=1,sockets=2", giving this code:
>
>          if (cpus == 0) {
>              sockets = sockets > 0 ? sockets : 1;
>              cores = cores > 0 ? cores : 1;
>              threads = threads > 0 ? threads : 1;
>              cpus = cores * threads * sockets;
>          } else if (sockets == 0) {
>              cores = cores > 0 ? cores : 1;
>              threads = threads > 0 ? threads : 1;
>              sockets = cpus / (cores * threads);
>          } else if (cores == 0) {
>              threads = threads > 0 ? threads : 1;
>              cores = cpus / (sockets * threads);
>          } else {
>              threads = cpus / (sockets * cores);
>          }
I am fine with either of the both variants, it should just
be consistent ;-)
>
> What you suggest is cores over threads over sockets:
>
>          if (cpus == 0) {
>              cores = cores > 0 ? cores : 1;
>              threads = threads > 0 ? threads : 1;
>              sockets = sockets > 0 ? sockets : 1;
>              cpus = cores * threads * sockets;
>          } else if (cores == 0) {
>              threads = threads > 0 ? threads : 1;
>              sockets = sockets > 0 ? sockets : 1;
>              cores = cpus / (threads * sockets);
>          } else if (threads == 0) {
>              sockets = sockets > 0 ? sockets : 1;
>              threads = cpus / (cores * sockets);
>          } else {
>              sockets = cpus / (cores * threads);
>          }
>
> Can you test which of these two work?  But I agree it's best to disable
> cache-leaf forwarding.
The problem is, its broken because at least cpuid index 4 includes a hint
to the number of cores and threads. I think we have to disable the cache
leaf forwarding if the qemu cpu topology does not match the host topology.

I also tried to fix index 4, but this alone seems to be not enough. at least
in index 2 seems also to be some info about cores and threads (which is currently
not there).

  reply	other threads:[~2013-11-19 11:07 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-20 16:24 [Qemu-devel] [PULL 00/13] KVM patches for 2013-09-20 Paolo Bonzini
2013-09-20 16:24 ` [Qemu-devel] [PULL 01/13] exec: always use MADV_DONTFORK Paolo Bonzini
2013-09-20 16:24 ` [PULL 02/13] cpu: Move cpu state syncs up into cpu_dump_state() Paolo Bonzini
2013-09-20 16:24   ` [Qemu-devel] " Paolo Bonzini
2013-09-20 16:24 ` [Qemu-devel] [PULL 03/13] kvm: warn if num cpus is greater than num recommended Paolo Bonzini
2013-09-20 16:24 ` [Qemu-devel] [PULL 04/13] fix steal time MSR vmsd callback to proper opaque type Paolo Bonzini
2013-09-20 16:24 ` [Qemu-devel] [PULL 05/13] kvm irqfd: support direct msimessage to irq translation Paolo Bonzini
2013-09-20 16:24 ` [Qemu-devel] [PULL 06/13] kvmvapic: Catch invalid ROM size Paolo Bonzini
2013-09-20 16:24 ` [Qemu-devel] [PULL 07/13] kvmvapic: Enter inactive state on hardware reset Paolo Bonzini
2013-09-20 16:24 ` [Qemu-devel] [PULL 08/13] kvmvapic: Clear also physical ROM address when entering INACTIVE state Paolo Bonzini
2013-09-20 16:24 ` [Qemu-devel] [PULL 09/13] kvm: fix traces to use %x instead of %d Paolo Bonzini
2013-09-20 16:24 ` [Qemu-devel] [PULL 10/13] linux-headers: update to 3.11 Paolo Bonzini
2013-09-20 16:24 ` [Qemu-devel] [PULL 11/13] target-i386: forward CPUID cache leaves when -cpu host is used Paolo Bonzini
2013-11-18 15:23   ` Peter Lieven
2013-11-18 15:37     ` Peter Lieven
2013-11-18 16:11       ` Paolo Bonzini
2013-11-18 19:53         ` Peter Lieven
2013-11-19 10:50           ` Paolo Bonzini
2013-11-19 11:35             ` Peter Lieven
2013-11-19 11:37               ` Paolo Bonzini
2013-11-19 11:42                 ` Peter Lieven
2013-11-19 10:25         ` Peter Lieven
2013-11-19 10:47           ` Paolo Bonzini
2013-11-19 11:07             ` Peter Lieven [this message]
2013-11-19 12:03             ` Peter Lieven
2013-11-19 12:08               ` Peter Lieven
2013-11-19 12:14               ` Paolo Bonzini
2013-11-19 12:32                 ` Peter Lieven
2013-11-19 13:21                   ` Paolo Bonzini
2013-11-19 14:11                     ` Peter Lieven
2013-11-19 14:14                       ` Paolo Bonzini
2013-11-19 14:17                         ` Peter Lieven
2013-11-19 14:19                           ` Paolo Bonzini
2013-11-19 14:46                             ` Peter Lieven
2013-11-19 14:57                               ` Paolo Bonzini
2013-11-19 15:05                                 ` Peter Lieven
2013-11-19 15:11                                   ` Paolo Bonzini
2013-09-20 16:24 ` [Qemu-devel] [PULL 12/13] linux-headers: update to 3.12-rc1 Paolo Bonzini
2013-09-20 16:24 ` [Qemu-devel] [PULL 13/13] target-i386: add feature kvm_pv_unhalt Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=528B4680.6060400@kamp.de \
    --to=pl@kamp.de \
    --cc=anthony@codemonkey.ws \
    --cc=benoit@irqsave.net \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.