From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59459) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XoGXD-00065A-El for qemu-devel@nongnu.org; Tue, 11 Nov 2014 13:51:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XoGX7-00051f-AQ for qemu-devel@nongnu.org; Tue, 11 Nov 2014 13:51:23 -0500 Received: from mx1.redhat.com ([209.132.183.28]:39258) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XoGX7-00051W-35 for qemu-devel@nongnu.org; Tue, 11 Nov 2014 13:51:17 -0500 From: Eduardo Habkost Date: Tue, 11 Nov 2014 16:50:56 -0200 Message-Id: <1415731856-14121-4-git-send-email-ehabkost@redhat.com> In-Reply-To: <1415731856-14121-1-git-send-email-ehabkost@redhat.com> References: <1415731856-14121-1-git-send-email-ehabkost@redhat.com> Subject: [Qemu-devel] [PATCH v2 3/3] vl: Don't silently change topology when all -smp options were set List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Paolo Bonzini , Andrew Jones , Peter Lieven QEMU tries to change the "threads" option even if it was explicitly set in the command-line, and it shouldn't do that. The right thing to do when all options (cpus, sockets, cores, threds) are explicitly set is to sanity check them and abort in case they don't make sense (i.e. when sockets*cores*threads < cpus). Signed-off-by: Eduardo Habkost --- vl.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/vl.c b/vl.c index 2ed8b07..8880a4e 100644 --- a/vl.c +++ b/vl.c @@ -1287,8 +1287,14 @@ static void smp_parse(QemuOpts *opts) } else if (cores == 0) { threads = threads > 0 ? threads : 1; cores = cpus / (sockets * threads); - } else { + } else if (threads == 0) { threads = cpus / (cores * sockets); + } else if (sockets * cores * threads < cpus) { + fprintf(stderr, "cpu topology: error: " + "sockets (%u) * cores (%u) * threads (%u) < " + "smp_cpus (%u)\n", + sockets, cores, threads, cpus); + exit(1); } max_cpus = qemu_opt_get_number(opts, "maxcpus", 0); -- 1.9.3