From patchwork Mon Jun 7 23:51:57 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anthony Liguori X-Patchwork-Id: 54900 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id DCDE2B7D43 for ; Tue, 8 Jun 2010 09:59:05 +1000 (EST) Received: from localhost ([127.0.0.1]:45888 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OLmDQ-0007YZ-K5 for incoming@patchwork.ozlabs.org; Mon, 07 Jun 2010 19:58:48 -0400 Received: from [140.186.70.92] (port=43902 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OLm7D-0004LT-7R for qemu-devel@nongnu.org; Mon, 07 Jun 2010 19:52:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OLm7B-00039e-72 for qemu-devel@nongnu.org; Mon, 07 Jun 2010 19:52:23 -0400 Received: from e1.ny.us.ibm.com ([32.97.182.141]:37621) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OLm7B-00039W-4Q for qemu-devel@nongnu.org; Mon, 07 Jun 2010 19:52:21 -0400 Received: from d01relay01.pok.ibm.com (d01relay01.pok.ibm.com [9.56.227.233]) by e1.ny.us.ibm.com (8.14.4/8.13.1) with ESMTP id o57NkQpq015279 for ; Mon, 7 Jun 2010 19:46:26 -0400 Received: from d01av02.pok.ibm.com (d01av02.pok.ibm.com [9.56.224.216]) by d01relay01.pok.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id o57NqKTP123448 for ; Mon, 7 Jun 2010 19:52:20 -0400 Received: from d01av02.pok.ibm.com (loopback [127.0.0.1]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id o57NqKiO010312 for ; Mon, 7 Jun 2010 20:52:20 -0300 Received: from localhost.localdomain (sig-9-65-84-205.mts.ibm.com [9.65.84.205]) by d01av02.pok.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id o57NqDqw009965; Mon, 7 Jun 2010 20:52:19 -0300 From: Anthony Liguori To: qemu-devel@nongnu.org Date: Mon, 7 Jun 2010 18:51:57 -0500 Message-Id: <1275954730-8196-10-git-send-email-aliguori@us.ibm.com> X-Mailer: git-send-email 1.7.0.4 In-Reply-To: <1275954730-8196-1-git-send-email-aliguori@us.ibm.com> References: <1275954730-8196-1-git-send-email-aliguori@us.ibm.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) Cc: Glauber Costa , Anthony Liguori Subject: [Qemu-devel] [PATCH 09/22] machine: implement -m in terms of -machine X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Anthony Liguori diff --git a/vl.c b/vl.c index 4553648..398d3b4 100644 --- a/vl.c +++ b/vl.c @@ -2968,35 +2968,14 @@ int main(int argc, char **argv, char **envp) version(); exit(0); break; - case QEMU_OPTION_m: { - uint64_t value; - char *ptr; - - value = strtoul(optarg, &ptr, 10); - switch (*ptr) { - case 0: case 'M': case 'm': - value <<= 20; - break; - case 'G': case 'g': - value <<= 30; - break; - default: - fprintf(stderr, "qemu: invalid ram size: %s\n", optarg); - exit(1); - } - - /* On 32-bit hosts, QEMU is limited by virtual address space */ - if (value > (2047 << 20) && HOST_LONG_BITS == 32) { - fprintf(stderr, "qemu: at most 2047 MB RAM can be simulated\n"); - exit(1); - } - if (value != (uint64_t)(ram_addr_t)value) { - fprintf(stderr, "qemu: ram size too large\n"); - exit(1); + case QEMU_OPTION_m: + /* Default to 'M' which is not the normal behavior */ + if (*optarg && isdigit(optarg[strlen(optarg) - 1])) { + qemu_opts_parsef(&qemu_machine_opts, "ram_size=%sM", optarg); + } else { + qemu_opts_parsef(&qemu_machine_opts, "ram_size=%s", optarg); } - ram_size = value; break; - } case QEMU_OPTION_mempath: mem_path = optarg; break; @@ -3645,8 +3624,26 @@ int main(int argc, char **argv, char **envp) exit(1); /* init the memory */ - if (ram_size == 0) - ram_size = DEFAULT_RAM_SIZE * 1024 * 1024; + ram_size = qemu_opt_get_size(machine_opts, "ram_size", + DEFAULT_RAM_SIZE * 1024 * 1024); + + + if (!qemu_opt_get(machine_opts, "ram_size")) { + char buffer[64]; + snprintf(buffer, sizeof(buffer), "%" PRId64, ram_size); + qemu_opt_set(machine_opts, "ram_size", buffer); + } + + /* On 32-bit hosts, QEMU is limited by virtual address space */ + if (ram_size > (2047 << 20) && HOST_LONG_BITS == 32) { + fprintf(stderr, "qemu: at most 2047 MB RAM can be simulated\n"); + exit(1); + } + + if (ram_size != (uint64_t)(ram_addr_t)ram_size) { + fprintf(stderr, "qemu: ram size too large\n"); + exit(1); + } /* init the dynamic translator */ cpu_exec_init_all(tb_size * 1024 * 1024);