From patchwork Mon Sep 28 17:31:34 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eduardo Habkost X-Patchwork-Id: 523635 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 6D78D14010F for ; Tue, 29 Sep 2015 10:46:28 +1000 (AEST) Received: from localhost ([::1]:43141 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zgj3q-0004QJ-5X for incoming@patchwork.ozlabs.org; Mon, 28 Sep 2015 20:46:26 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39357) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZgcHJ-0007aJ-1L for qemu-devel@nongnu.org; Mon, 28 Sep 2015 13:31:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZgcHH-00053v-W1 for qemu-devel@nongnu.org; Mon, 28 Sep 2015 13:31:52 -0400 Received: from mx1.redhat.com ([209.132.183.28]:51192) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZgcHH-00053q-Qk for qemu-devel@nongnu.org; Mon, 28 Sep 2015 13:31:51 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id 883042FAA93; Mon, 28 Sep 2015 17:31:51 +0000 (UTC) Received: from localhost (ovpn-113-192.phx2.redhat.com [10.3.113.192]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t8SHVnU2023449; Mon, 28 Sep 2015 13:31:50 -0400 From: Eduardo Habkost To: Peter Maydell Date: Mon, 28 Sep 2015 14:31:34 -0300 Message-Id: <1443461499-5843-3-git-send-email-ehabkost@redhat.com> In-Reply-To: <1443461499-5843-1-git-send-email-ehabkost@redhat.com> References: <1443461499-5843-1-git-send-email-ehabkost@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 209.132.183.28 Cc: qemu-devel@nongnu.org, Paolo Bonzini , Thomas Huth , =?UTF-8?q?Andreas=20F=C3=A4rber?= , Richard Henderson Subject: [Qemu-devel] [PULL 2/7] vl: Add another sanity check to smp_parse() function X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org From: Thomas Huth The code in smp_parse already checks the topology information for sockets * cores * threads < cpus and bails out with an error in that case. However, it is still possible to supply a bad configuration the other way round, e.g. with: qemu-system-xxx -smp 4,sockets=1,cores=4,threads=2 QEMU then still starts the guest, with topology configuration that is rather incomprehensible and likely not what the user wanted. So let's add another check to refuse such wrong configurations. Signed-off-by: Thomas Huth Reviewed-by: Eduardo Habkost Acked-by: Cornelia Huck Acked-by: Bastian Koppelmann Signed-off-by: Eduardo Habkost --- vl.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/vl.c b/vl.c index e211f6a..cbc8f25 100644 --- a/vl.c +++ b/vl.c @@ -1222,7 +1222,13 @@ static void smp_parse(QemuOpts *opts) exit(1); } - max_cpus = qemu_opt_get_number(opts, "maxcpus", 0); + max_cpus = qemu_opt_get_number(opts, "maxcpus", cpus); + if (sockets * cores * threads > max_cpus) { + fprintf(stderr, "cpu topology: error: " + "sockets (%u) * cores (%u) * threads (%u) > maxcpus (%u)\n", + sockets, cores, threads, max_cpus); + exit(1); + } smp_cpus = cpus; smp_cores = cores > 0 ? cores : 1;