From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43221) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vik6d-00006d-Tl for qemu-devel@nongnu.org; Tue, 19 Nov 2013 07:08:44 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Vik6V-00043s-Fj for qemu-devel@nongnu.org; Tue, 19 Nov 2013 07:08:35 -0500 Received: from mx.ipv6.kamp.de ([2a02:248:0:51::16]:33241 helo=mx01.kamp.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Vik6V-00043k-4X for qemu-devel@nongnu.org; Tue, 19 Nov 2013 07:08:27 -0500 Message-ID: <528B54BD.2060002@kamp.de> Date: Tue, 19 Nov 2013 13:08:29 +0100 From: Peter Lieven MIME-Version: 1.0 References: <1379694292-1601-1-git-send-email-pbonzini@redhat.com> <1379694292-1601-12-git-send-email-pbonzini@redhat.com> <528A310A.60607@dlhnet.de> <528A3422.1030701@kamp.de> <528A3C4A.4090001@redhat.com> <528B3C86.3030309@kamp.de> <528B41A5.1080504@redhat.com> <528B53A6.3030204@kamp.de> In-Reply-To: <528B53A6.3030204@kamp.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PULL 11/13] target-i386: forward CPUID cache leaves when -cpu host is used List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: qemu-devel@nongnu.org, Anthony Liguori , =?UTF-8?B?QmVub8OudCBDYW5ldA==?= On 19.11.2013 13:03, Peter Lieven wrote: > 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 >> >>> 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); >> } >> >> 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 first does make windows boot again and it calculates a > correct combination of cpus, threads, cores and sockets. But > I think the reason it boots is because cores=threads=1. Forgot to mention: In this case the information about cores and threads is not retreived from additional indexes. bits 16..23 in ebx in index 0x00000001 are zero. So bottom line, the whole cache leaf passthru thing only worked because of a bug in smp_parse yielding threads and cores 1 by default.