From patchwork Thu Oct 25 14:38:14 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Avik Sil X-Patchwork-Id: 194192 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 6688F2C00AE for ; Fri, 26 Oct 2012 01:39:12 +1100 (EST) Received: from localhost ([::1]:39571 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TROaU-00062b-Hm for incoming@patchwork.ozlabs.org; Thu, 25 Oct 2012 10:39:10 -0400 Received: from eggs.gnu.org ([208.118.235.92]:59095) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TROa1-0005kJ-TD for qemu-devel@nongnu.org; Thu, 25 Oct 2012 10:38:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TROZt-00089R-Hc for qemu-devel@nongnu.org; Thu, 25 Oct 2012 10:38:41 -0400 Received: from e28smtp05.in.ibm.com ([122.248.162.5]:54615) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TROZr-00088e-U8 for qemu-devel@nongnu.org; Thu, 25 Oct 2012 10:38:33 -0400 Received: from /spool/local by e28smtp05.in.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 25 Oct 2012 20:08:25 +0530 Received: from d28relay05.in.ibm.com (9.184.220.62) by e28smtp05.in.ibm.com (192.168.1.135) with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted; Thu, 25 Oct 2012 20:08:23 +0530 Received: from d28av02.in.ibm.com (d28av02.in.ibm.com [9.184.220.64]) by d28relay05.in.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q9PEcMOk58982582; Thu, 25 Oct 2012 20:08:22 +0530 Received: from d28av02.in.ibm.com (loopback [127.0.0.1]) by d28av02.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q9PK7MUq032684; Fri, 26 Oct 2012 07:07:22 +1100 Received: from aviksil-thinkpad.in.ibm.com ([9.79.219.192]) by d28av02.in.ibm.com (8.14.4/8.13.1/NCO v10.0 AVin) with ESMTP id q9PK7HLm032435; Fri, 26 Oct 2012 07:07:20 +1100 From: Avik Sil To: qemu-devel@nongnu.org, qemu-ppc@nongnu.org Date: Thu, 25 Oct 2012 20:08:14 +0530 Message-Id: <1351175895-27131-2-git-send-email-aviksil@linux.vnet.ibm.com> X-Mailer: git-send-email 1.7.11.4 In-Reply-To: <1351175895-27131-1-git-send-email-aviksil@linux.vnet.ibm.com> References: <1351175895-27131-1-git-send-email-aviksil@linux.vnet.ibm.com> x-cbid: 12102514-8256-0000-0000-000004BAB608 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 122.248.162.5 Cc: aliguori@us.ibm.com, agraf@suse.de, david@gibson.dropbear.id.au Subject: [Qemu-devel] [PATCH v2 1/2] Make default boot order machine specific 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 This patch makes default boot order machine specific instead of set globally. The default boot order can be set per machine in QEMUMachine default_machine_opts, or by the command line using -machine ,boot=, or by standard -boot option. This allows a machine to receive a NULL boot order when -boot isn't used and take an appropriate action accordingly. This helps machine boots from the devices as set in guest's non-volatile memory location in case no boot order is provided by the user. Signed-off-by: Avik Sil --- hw/alpha_dp264.c | 1 + hw/an5206.c | 1 + hw/axis_dev88.c | 1 + hw/boards.h | 2 ++ hw/collie.c | 1 + hw/dummy_m68k.c | 1 + hw/exynos4_boards.c | 2 ++ hw/gumstix.c | 2 ++ hw/highbank.c | 1 + hw/integratorcp.c | 1 + hw/kzm.c | 1 + hw/leon3.c | 1 + hw/lm32_boards.c | 2 ++ hw/mainstone.c | 1 + hw/mcf5208.c | 1 + hw/milkymist.c | 1 + hw/mips_fulong2e.c | 1 + hw/mips_jazz.c | 2 ++ hw/mips_malta.c | 1 + hw/mips_mipssim.c | 1 + hw/mips_r4k.c | 1 + hw/musicpal.c | 1 + hw/nseries.c | 2 ++ hw/null-machine.c | 1 + hw/omap_sx1.c | 2 ++ hw/openrisc_sim.c | 1 + hw/palm.c | 1 + hw/pc_piix.c | 13 ++++++++++++- hw/petalogix_ml605_mmu.c | 1 + hw/petalogix_s3adsp1800_mmu.c | 1 + hw/ppc/e500plat.c | 1 + hw/ppc/mpc8544ds.c | 1 + hw/ppc405_boards.c | 2 ++ hw/ppc440_bamboo.c | 1 + hw/ppc_newworld.c | 1 + hw/ppc_oldworld.c | 1 + hw/ppc_prep.c | 1 + hw/puv3.c | 1 + hw/r2d.c | 1 + hw/realview.c | 4 ++++ hw/s390-virtio.c | 1 + hw/shix.c | 1 + hw/spapr.c | 1 + hw/spitz.c | 4 ++++ hw/stellaris.c | 2 ++ hw/sun4m.c | 12 ++++++++++++ hw/sun4u.c | 3 +++ hw/tosa.c | 1 + hw/versatilepb.c | 2 ++ hw/vexpress.c | 2 ++ hw/virtex_ml507.c | 1 + hw/xen_machine_pv.c | 2 +- hw/xilinx_zynq.c | 1 + hw/xtensa_lx60.c | 2 ++ hw/xtensa_sim.c | 1 + hw/z2.c | 1 + qemu-config.c | 6 +++++- vl.c | 13 +++++++++---- 58 files changed, 112 insertions(+), 7 deletions(-) diff --git a/hw/alpha_dp264.c b/hw/alpha_dp264.c index 76d8ae8..0175f48 100644 --- a/hw/alpha_dp264.c +++ b/hw/alpha_dp264.c @@ -171,6 +171,7 @@ static QEMUMachine clipper_machine = { .init = clipper_init, .max_cpus = 4, .is_default = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void clipper_machine_init(void) diff --git a/hw/an5206.c b/hw/an5206.c index d887c0e..53ef5ff 100644 --- a/hw/an5206.c +++ b/hw/an5206.c @@ -86,6 +86,7 @@ static QEMUMachine an5206_machine = { .name = "an5206", .desc = "Arnewsh 5206", .init = an5206_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void an5206_machine_init(void) diff --git a/hw/axis_dev88.c b/hw/axis_dev88.c index aa1ac9e..9d43bc6 100644 --- a/hw/axis_dev88.c +++ b/hw/axis_dev88.c @@ -355,6 +355,7 @@ static QEMUMachine axisdev88_machine = { .desc = "AXIS devboard 88", .init = axisdev88_init, .is_default = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void axisdev88_machine_init(void) diff --git a/hw/boards.h b/hw/boards.h index 813d0e5..31a3ec2 100644 --- a/hw/boards.h +++ b/hw/boards.h @@ -5,6 +5,8 @@ #include "qdev.h" +#define DEFAULT_BOOT_ORDER "boot=cad" /* default to HD->floppy->CD-ROM */ + typedef struct QEMUMachineInitArgs { ram_addr_t ram_size; const char *boot_device; diff --git a/hw/collie.c b/hw/collie.c index 695982a..b5e88bf 100644 --- a/hw/collie.c +++ b/hw/collie.c @@ -62,6 +62,7 @@ static QEMUMachine collie_machine = { .name = "collie", .desc = "Collie PDA (SA-1110)", .init = collie_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void collie_machine_init(void) diff --git a/hw/dummy_m68k.c b/hw/dummy_m68k.c index 20f790b..1002772 100644 --- a/hw/dummy_m68k.c +++ b/hw/dummy_m68k.c @@ -73,6 +73,7 @@ static QEMUMachine dummy_m68k_machine = { .name = "dummy", .desc = "Dummy board", .init = dummy_m68k_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void dummy_m68k_machine_init(void) diff --git a/hw/exynos4_boards.c b/hw/exynos4_boards.c index 4951064..f12b2f3 100644 --- a/hw/exynos4_boards.c +++ b/hw/exynos4_boards.c @@ -160,12 +160,14 @@ static QEMUMachine exynos4_machines[EXYNOS4_NUM_OF_BOARDS] = { .desc = "Samsung NURI board (Exynos4210)", .init = nuri_init, .max_cpus = EXYNOS4210_NCPUS, + .default_machine_opts = DEFAULT_BOOT_ORDER, }, [EXYNOS4_BOARD_SMDKC210] = { .name = "smdkc210", .desc = "Samsung SMDKC210 board (Exynos4210)", .init = smdkc210_init, .max_cpus = EXYNOS4210_NCPUS, + .default_machine_opts = DEFAULT_BOOT_ORDER, }, }; diff --git a/hw/gumstix.c b/hw/gumstix.c index 4103a88..15a5a8f 100644 --- a/hw/gumstix.c +++ b/hw/gumstix.c @@ -122,12 +122,14 @@ static QEMUMachine connex_machine = { .name = "connex", .desc = "Gumstix Connex (PXA255)", .init = connex_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine verdex_machine = { .name = "verdex", .desc = "Gumstix Verdex (PXA270)", .init = verdex_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void gumstix_machine_init(void) diff --git a/hw/highbank.c b/hw/highbank.c index afbb005..5286ffe 100644 --- a/hw/highbank.c +++ b/hw/highbank.c @@ -328,6 +328,7 @@ static QEMUMachine highbank_machine = { .init = highbank_init, .use_scsi = 1, .max_cpus = 4, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void highbank_machine_init(void) diff --git a/hw/integratorcp.c b/hw/integratorcp.c index 77807c3..fc72943 100644 --- a/hw/integratorcp.c +++ b/hw/integratorcp.c @@ -512,6 +512,7 @@ static QEMUMachine integratorcp_machine = { .desc = "ARM Integrator/CP (ARM926EJ-S)", .init = integratorcp_init, .is_default = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void integratorcp_machine_init(void) diff --git a/hw/kzm.c b/hw/kzm.c index 687daf3..b064a15 100644 --- a/hw/kzm.c +++ b/hw/kzm.c @@ -146,6 +146,7 @@ static QEMUMachine kzm_machine = { .name = "kzm", .desc = "ARM KZM Emulation Baseboard (ARM1136)", .init = kzm_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void kzm_machine_init(void) diff --git a/hw/leon3.c b/hw/leon3.c index 7742738..5416fc7 100644 --- a/hw/leon3.c +++ b/hw/leon3.c @@ -213,6 +213,7 @@ static QEMUMachine leon3_generic_machine = { .desc = "Leon-3 generic", .init = leon3_generic_hw_init, .use_scsi = 0, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void leon3_machine_init(void) diff --git a/hw/lm32_boards.c b/hw/lm32_boards.c index 772cb8b..e28e45a 100644 --- a/hw/lm32_boards.c +++ b/hw/lm32_boards.c @@ -289,6 +289,7 @@ static QEMUMachine lm32_evr_machine = { .desc = "LatticeMico32 EVR32 eval system", .init = lm32_evr_init, .is_default = 1 + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine lm32_uclinux_machine = { @@ -296,6 +297,7 @@ static QEMUMachine lm32_uclinux_machine = { .desc = "lm32 platform for uClinux and u-boot by Theobroma Systems", .init = lm32_uclinux_init, .is_default = 0 + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void lm32_machine_init(void) diff --git a/hw/mainstone.c b/hw/mainstone.c index 3266946..0b61a84 100644 --- a/hw/mainstone.c +++ b/hw/mainstone.c @@ -186,6 +186,7 @@ static QEMUMachine mainstone2_machine = { .name = "mainstone", .desc = "Mainstone II (PXA27x)", .init = mainstone_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void mainstone_machine_init(void) diff --git a/hw/mcf5208.c b/hw/mcf5208.c index b1db549..3111389 100644 --- a/hw/mcf5208.c +++ b/hw/mcf5208.c @@ -292,6 +292,7 @@ static QEMUMachine mcf5208evb_machine = { .desc = "MCF5206EVB", .init = mcf5208evb_init, .is_default = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void mcf5208evb_machine_init(void) diff --git a/hw/milkymist.c b/hw/milkymist.c index 4c8111a..cf045b8 100644 --- a/hw/milkymist.c +++ b/hw/milkymist.c @@ -208,6 +208,7 @@ static QEMUMachine milkymist_machine = { .desc = "Milkymist One", .init = milkymist_init, .is_default = 0 + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void milkymist_machine_init(void) diff --git a/hw/mips_fulong2e.c b/hw/mips_fulong2e.c index 5fcf900..0770874 100644 --- a/hw/mips_fulong2e.c +++ b/hw/mips_fulong2e.c @@ -400,6 +400,7 @@ static QEMUMachine mips_fulong2e_machine = { .name = "fulong2e", .desc = "Fulong 2e mini pc", .init = mips_fulong2e_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void mips_fulong2e_machine_init(void) diff --git a/hw/mips_jazz.c b/hw/mips_jazz.c index 0847427..6454886 100644 --- a/hw/mips_jazz.c +++ b/hw/mips_jazz.c @@ -325,6 +325,7 @@ static QEMUMachine mips_magnum_machine = { .desc = "MIPS Magnum", .init = mips_magnum_init, .use_scsi = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine mips_pica61_machine = { @@ -332,6 +333,7 @@ static QEMUMachine mips_pica61_machine = { .desc = "Acer Pica 61", .init = mips_pica61_init, .use_scsi = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void mips_jazz_machine_init(void) diff --git a/hw/mips_malta.c b/hw/mips_malta.c index 0571d58..e8fb5ae 100644 --- a/hw/mips_malta.c +++ b/hw/mips_malta.c @@ -1016,6 +1016,7 @@ static QEMUMachine mips_malta_machine = { .init = mips_malta_init, .max_cpus = 16, .is_default = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void mips_malta_register_types(void) diff --git a/hw/mips_mipssim.c b/hw/mips_mipssim.c index a95a3c1..cccc955 100644 --- a/hw/mips_mipssim.c +++ b/hw/mips_mipssim.c @@ -228,6 +228,7 @@ static QEMUMachine mips_mipssim_machine = { .name = "mipssim", .desc = "MIPS MIPSsim platform", .init = mips_mipssim_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void mips_mipssim_machine_init(void) diff --git a/hw/mips_r4k.c b/hw/mips_r4k.c index 325098a..3e695b6 100644 --- a/hw/mips_r4k.c +++ b/hw/mips_r4k.c @@ -302,6 +302,7 @@ static QEMUMachine mips_machine = { .name = "mips", .desc = "mips r4k platform", .init = mips_r4k_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void mips_machine_init(void) diff --git a/hw/musicpal.c b/hw/musicpal.c index beec76b..014cfba 100644 --- a/hw/musicpal.c +++ b/hw/musicpal.c @@ -1659,6 +1659,7 @@ static QEMUMachine musicpal_machine = { .name = "musicpal", .desc = "Marvell 88w8618 / MusicPal (ARM926EJ-S)", .init = musicpal_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void musicpal_machine_init(void) diff --git a/hw/nseries.c b/hw/nseries.c index 7ada90d..79623b2 100644 --- a/hw/nseries.c +++ b/hw/nseries.c @@ -1427,12 +1427,14 @@ static QEMUMachine n800_machine = { .name = "n800", .desc = "Nokia N800 tablet aka. RX-34 (OMAP2420)", .init = n800_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine n810_machine = { .name = "n810", .desc = "Nokia N810 tablet aka. RX-44 (OMAP2420)", .init = n810_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void nseries_machine_init(void) diff --git a/hw/null-machine.c b/hw/null-machine.c index d813c08..094e746 100644 --- a/hw/null-machine.c +++ b/hw/null-machine.c @@ -24,6 +24,7 @@ static QEMUMachine machine_none = { .desc = "empty machine", .init = machine_none_init, .max_cpus = 0, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void register_machines(void) diff --git a/hw/omap_sx1.c b/hw/omap_sx1.c index eb2bf05..cc6ce02 100644 --- a/hw/omap_sx1.c +++ b/hw/omap_sx1.c @@ -237,12 +237,14 @@ static QEMUMachine sx1_machine_v2 = { .name = "sx1", .desc = "Siemens SX1 (OMAP310) V2", .init = sx1_init_v2, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine sx1_machine_v1 = { .name = "sx1-v1", .desc = "Siemens SX1 (OMAP310) V1", .init = sx1_init_v1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void sx1_machine_init(void) diff --git a/hw/openrisc_sim.c b/hw/openrisc_sim.c index 23c66df..3ea0992 100644 --- a/hw/openrisc_sim.c +++ b/hw/openrisc_sim.c @@ -139,6 +139,7 @@ static QEMUMachine openrisc_sim_machine = { .init = openrisc_sim_init, .max_cpus = 1, .is_default = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void openrisc_sim_machine_init(void) diff --git a/hw/palm.c b/hw/palm.c index d263051..32c2363 100644 --- a/hw/palm.c +++ b/hw/palm.c @@ -280,6 +280,7 @@ static QEMUMachine palmte_machine = { .name = "cheetah", .desc = "Palm Tungsten|E aka. Cheetah PDA (OMAP310)", .init = palmte_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void palmte_machine_init(void) diff --git a/hw/pc_piix.c b/hw/pc_piix.c index 47ebc1a..594b13e 100644 --- a/hw/pc_piix.c +++ b/hw/pc_piix.c @@ -352,6 +352,7 @@ static QEMUMachine pc_machine_v1_3 = { .init = pc_init_pci, .max_cpus = 255, .is_default = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; #define PC_COMPAT_1_2 \ @@ -390,6 +391,7 @@ static QEMUMachine pc_machine_v1_2 = { PC_COMPAT_1_2, { /* end of list */ } }, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; #define PC_COMPAT_1_1 \ @@ -433,6 +435,7 @@ static QEMUMachine pc_machine_v1_1 = { PC_COMPAT_1_1, { /* end of list */ } }, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; #define PC_COMPAT_1_0 \ @@ -469,6 +472,7 @@ static QEMUMachine pc_machine_v1_0 = { { /* end of list */ } }, .hw_version = "1.0", + .default_machine_opts = DEFAULT_BOOT_ORDER, }; #define PC_COMPAT_0_15 \ @@ -484,6 +488,7 @@ static QEMUMachine pc_machine_v0_15 = { { /* end of list */ } }, .hw_version = "0.15", + .default_machine_opts = DEFAULT_BOOT_ORDER, }; #define PC_COMPAT_0_14 \ @@ -525,6 +530,7 @@ static QEMUMachine pc_machine_v0_14 = { { /* end of list */ } }, .hw_version = "0.14", + .default_machine_opts = DEFAULT_BOOT_ORDER, }; #define PC_COMPAT_0_13 \ @@ -562,6 +568,7 @@ static QEMUMachine pc_machine_v0_13 = { { /* end of list */ } }, .hw_version = "0.13", + .default_machine_opts = DEFAULT_BOOT_ORDER, }; #define PC_COMPAT_0_12 \ @@ -595,6 +602,7 @@ static QEMUMachine pc_machine_v0_12 = { { /* end of list */ } }, .hw_version = "0.12", + .default_machine_opts = DEFAULT_BOOT_ORDER, }; #define PC_COMPAT_0_11 \ @@ -628,6 +636,7 @@ static QEMUMachine pc_machine_v0_11 = { { /* end of list */ } }, .hw_version = "0.11", + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine pc_machine_v0_10 = { @@ -661,6 +670,7 @@ static QEMUMachine pc_machine_v0_10 = { { /* end of list */ } }, .hw_version = "0.10", + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine isapc_machine = { @@ -676,6 +686,7 @@ static QEMUMachine isapc_machine = { }, { /* end of list */ } }, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; #ifdef CONFIG_XEN @@ -684,7 +695,7 @@ static QEMUMachine xenfv_machine = { .desc = "Xen Fully-virtualized PC", .init = pc_xen_hvm_init, .max_cpus = HVM_MAX_VCPUS, - .default_machine_opts = "accel=xen", + .default_machine_opts = "accel=xen," DEFAULT_BOOT_ORDER, }; #endif diff --git a/hw/petalogix_ml605_mmu.c b/hw/petalogix_ml605_mmu.c index 3589a4b..5a5e625 100644 --- a/hw/petalogix_ml605_mmu.c +++ b/hw/petalogix_ml605_mmu.c @@ -174,6 +174,7 @@ static QEMUMachine petalogix_ml605_machine = { .desc = "PetaLogix linux refdesign for xilinx ml605 little endian", .init = petalogix_ml605_init, .is_default = 0 + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void petalogix_ml605_machine_init(void) diff --git a/hw/petalogix_s3adsp1800_mmu.c b/hw/petalogix_s3adsp1800_mmu.c index c5fd5e7..52ff3bf 100644 --- a/hw/petalogix_s3adsp1800_mmu.c +++ b/hw/petalogix_s3adsp1800_mmu.c @@ -116,6 +116,7 @@ static QEMUMachine petalogix_s3adsp1800_machine = { .desc = "PetaLogix linux refdesign for xilinx Spartan 3ADSP1800", .init = petalogix_s3adsp1800_init, .is_default = 1 + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void petalogix_s3adsp1800_machine_init(void) diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c index 4cfb940..b62277d 100644 --- a/hw/ppc/e500plat.c +++ b/hw/ppc/e500plat.c @@ -51,6 +51,7 @@ static QEMUMachine e500plat_machine = { .desc = "generic paravirt e500 platform", .init = e500plat_init, .max_cpus = 15, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void e500plat_machine_init(void) diff --git a/hw/ppc/mpc8544ds.c b/hw/ppc/mpc8544ds.c index e651661..0b899a2 100644 --- a/hw/ppc/mpc8544ds.c +++ b/hw/ppc/mpc8544ds.c @@ -52,6 +52,7 @@ static QEMUMachine ppce500_machine = { .desc = "mpc8544ds", .init = mpc8544ds_init, .max_cpus = 15, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void ppce500_machine_init(void) diff --git a/hw/ppc405_boards.c b/hw/ppc405_boards.c index 8dc693f..1fd7513 100644 --- a/hw/ppc405_boards.c +++ b/hw/ppc405_boards.c @@ -362,6 +362,7 @@ static QEMUMachine ref405ep_machine = { .name = "ref405ep", .desc = "ref405ep", .init = ref405ep_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; /*****************************************************************************/ @@ -649,6 +650,7 @@ static QEMUMachine taihu_machine = { .name = "taihu", .desc = "taihu", .init = taihu_405ep_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void ppc405_machine_init(void) diff --git a/hw/ppc440_bamboo.c b/hw/ppc440_bamboo.c index a6b1d51..0488b0f 100644 --- a/hw/ppc440_bamboo.c +++ b/hw/ppc440_bamboo.c @@ -295,6 +295,7 @@ static QEMUMachine bamboo_machine = { .name = "bamboo", .desc = "bamboo", .init = bamboo_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void bamboo_machine_init(void) diff --git a/hw/ppc_newworld.c b/hw/ppc_newworld.c index 15f74f9..7bdd964 100644 --- a/hw/ppc_newworld.c +++ b/hw/ppc_newworld.c @@ -426,6 +426,7 @@ static QEMUMachine core99_machine = { #ifdef TARGET_PPC64 .is_default = 1, #endif + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void core99_machine_init(void) diff --git a/hw/ppc_oldworld.c b/hw/ppc_oldworld.c index a4f899d..d15e917 100644 --- a/hw/ppc_oldworld.c +++ b/hw/ppc_oldworld.c @@ -341,6 +341,7 @@ static QEMUMachine heathrow_machine = { #ifndef TARGET_PPC64 .is_default = 1, #endif + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void heathrow_machine_init(void) diff --git a/hw/ppc_prep.c b/hw/ppc_prep.c index 085851a..37865bf 100644 --- a/hw/ppc_prep.c +++ b/hw/ppc_prep.c @@ -694,6 +694,7 @@ static QEMUMachine prep_machine = { .desc = "PowerPC PREP platform", .init = ppc_prep_init, .max_cpus = MAX_CPUS, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void prep_machine_init(void) diff --git a/hw/puv3.c b/hw/puv3.c index 764799c..4a8326c 100644 --- a/hw/puv3.c +++ b/hw/puv3.c @@ -123,6 +123,7 @@ static QEMUMachine puv3_machine = { .init = puv3_init, .is_default = 1, .use_scsi = 0, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void puv3_machine_init(void) diff --git a/hw/r2d.c b/hw/r2d.c index 66212e9..a9784ad 100644 --- a/hw/r2d.c +++ b/hw/r2d.c @@ -347,6 +347,7 @@ static QEMUMachine r2d_machine = { .name = "r2d", .desc = "r2d-plus board", .init = r2d_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void r2d_machine_init(void) diff --git a/hw/realview.c b/hw/realview.c index baa92d4..d20d16f 100644 --- a/hw/realview.c +++ b/hw/realview.c @@ -395,6 +395,7 @@ static QEMUMachine realview_eb_machine = { .desc = "ARM RealView Emulation Baseboard (ARM926EJ-S)", .init = realview_eb_init, .use_scsi = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine realview_eb_mpcore_machine = { @@ -403,12 +404,14 @@ static QEMUMachine realview_eb_mpcore_machine = { .init = realview_eb_mpcore_init, .use_scsi = 1, .max_cpus = 4, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine realview_pb_a8_machine = { .name = "realview-pb-a8", .desc = "ARM RealView Platform Baseboard for Cortex-A8", .init = realview_pb_a8_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine realview_pbx_a9_machine = { @@ -417,6 +420,7 @@ static QEMUMachine realview_pbx_a9_machine = { .init = realview_pbx_a9_init, .use_scsi = 1, .max_cpus = 4, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void realview_machine_init(void) diff --git a/hw/s390-virtio.c b/hw/s390-virtio.c index 85bd13e..7066c76 100644 --- a/hw/s390-virtio.c +++ b/hw/s390-virtio.c @@ -343,6 +343,7 @@ static QEMUMachine s390_machine = { .use_virtcon = 1, .max_cpus = 255, .is_default = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void s390_machine_init(void) diff --git a/hw/shix.c b/hw/shix.c index b56dd54..e6b5fcb 100644 --- a/hw/shix.c +++ b/hw/shix.c @@ -92,6 +92,7 @@ static QEMUMachine shix_machine = { .desc = "shix card", .init = shix_init, .is_default = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void shix_machine_init(void) diff --git a/hw/spapr.c b/hw/spapr.c index 73d75e8..57db710 100644 --- a/hw/spapr.c +++ b/hw/spapr.c @@ -915,6 +915,7 @@ static QEMUMachine spapr_machine = { .max_cpus = MAX_CPUS, .no_parallel = 1, .use_scsi = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void spapr_machine_init(void) diff --git a/hw/spitz.c b/hw/spitz.c index 944c274..7bf3084 100644 --- a/hw/spitz.c +++ b/hw/spitz.c @@ -984,24 +984,28 @@ static QEMUMachine akitapda_machine = { .name = "akita", .desc = "Akita PDA (PXA270)", .init = akita_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine spitzpda_machine = { .name = "spitz", .desc = "Spitz PDA (PXA270)", .init = spitz_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine borzoipda_machine = { .name = "borzoi", .desc = "Borzoi PDA (PXA270)", .init = borzoi_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine terrierpda_machine = { .name = "terrier", .desc = "Terrier PDA (PXA270)", .init = terrier_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void spitz_machine_init(void) diff --git a/hw/stellaris.c b/hw/stellaris.c index b038f10..6920164 100644 --- a/hw/stellaris.c +++ b/hw/stellaris.c @@ -1331,12 +1331,14 @@ static QEMUMachine lm3s811evb_machine = { .name = "lm3s811evb", .desc = "Stellaris LM3S811EVB", .init = lm3s811evb_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine lm3s6965evb_machine = { .name = "lm3s6965evb", .desc = "Stellaris LM3S6965EVB", .init = lm3s6965evb_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void stellaris_machine_init(void) diff --git a/hw/sun4m.c b/hw/sun4m.c index 02673b2..304752c 100644 --- a/hw/sun4m.c +++ b/hw/sun4m.c @@ -1428,6 +1428,7 @@ static QEMUMachine ss5_machine = { .init = ss5_init, .use_scsi = 1, .is_default = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine ss10_machine = { @@ -1436,6 +1437,7 @@ static QEMUMachine ss10_machine = { .init = ss10_init, .use_scsi = 1, .max_cpus = 4, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine ss600mp_machine = { @@ -1444,6 +1446,7 @@ static QEMUMachine ss600mp_machine = { .init = ss600mp_init, .use_scsi = 1, .max_cpus = 4, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine ss20_machine = { @@ -1452,6 +1455,7 @@ static QEMUMachine ss20_machine = { .init = ss20_init, .use_scsi = 1, .max_cpus = 4, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine voyager_machine = { @@ -1459,6 +1463,7 @@ static QEMUMachine voyager_machine = { .desc = "Sun4m platform, SPARCstation Voyager", .init = vger_init, .use_scsi = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine ss_lx_machine = { @@ -1466,6 +1471,7 @@ static QEMUMachine ss_lx_machine = { .desc = "Sun4m platform, SPARCstation LX", .init = ss_lx_init, .use_scsi = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine ss4_machine = { @@ -1473,6 +1479,7 @@ static QEMUMachine ss4_machine = { .desc = "Sun4m platform, SPARCstation 4", .init = ss4_init, .use_scsi = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine scls_machine = { @@ -1480,6 +1487,7 @@ static QEMUMachine scls_machine = { .desc = "Sun4m platform, SPARCClassic", .init = scls_init, .use_scsi = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine sbook_machine = { @@ -1487,6 +1495,7 @@ static QEMUMachine sbook_machine = { .desc = "Sun4m platform, SPARCbook", .init = sbook_init, .use_scsi = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static const struct sun4d_hwdef sun4d_hwdefs[] = { @@ -1711,6 +1720,7 @@ static QEMUMachine ss1000_machine = { .init = ss1000_init, .use_scsi = 1, .max_cpus = 8, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine ss2000_machine = { @@ -1719,6 +1729,7 @@ static QEMUMachine ss2000_machine = { .init = ss2000_init, .use_scsi = 1, .max_cpus = 20, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static const struct sun4c_hwdef sun4c_hwdefs[] = { @@ -1897,6 +1908,7 @@ static QEMUMachine ss2_machine = { .desc = "Sun4c platform, SPARCstation 2", .init = ss2_init, .use_scsi = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void sun4m_register_types(void) diff --git a/hw/sun4u.c b/hw/sun4u.c index 1621171..1f86e04 100644 --- a/hw/sun4u.c +++ b/hw/sun4u.c @@ -978,6 +978,7 @@ static QEMUMachine sun4u_machine = { .init = sun4u_init, .max_cpus = 1, // XXX for now .is_default = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine sun4v_machine = { @@ -985,6 +986,7 @@ static QEMUMachine sun4v_machine = { .desc = "Sun4v platform", .init = sun4v_init, .max_cpus = 1, // XXX for now + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine niagara_machine = { @@ -992,6 +994,7 @@ static QEMUMachine niagara_machine = { .desc = "Sun4v platform, Niagara", .init = niagara_init, .max_cpus = 1, // XXX for now + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void sun4u_register_types(void) diff --git a/hw/tosa.c b/hw/tosa.c index 512278c..836ebc6 100644 --- a/hw/tosa.c +++ b/hw/tosa.c @@ -251,6 +251,7 @@ static QEMUMachine tosapda_machine = { .name = "tosa", .desc = "Tosa PDA (PXA255)", .init = tosa_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void tosapda_machine_init(void) diff --git a/hw/versatilepb.c b/hw/versatilepb.c index f55bd0c..2cf7228 100644 --- a/hw/versatilepb.c +++ b/hw/versatilepb.c @@ -381,6 +381,7 @@ static QEMUMachine versatilepb_machine = { .desc = "ARM Versatile/PB (ARM926EJ-S)", .init = vpb_init, .use_scsi = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine versatileab_machine = { @@ -388,6 +389,7 @@ static QEMUMachine versatileab_machine = { .desc = "ARM Versatile/AB (ARM926EJ-S)", .init = vab_init, .use_scsi = 1, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void versatile_machine_init(void) diff --git a/hw/vexpress.c b/hw/vexpress.c index 3f7cb66..183330b 100644 --- a/hw/vexpress.c +++ b/hw/vexpress.c @@ -499,6 +499,7 @@ static QEMUMachine vexpress_a9_machine = { .init = vexpress_a9_init, .use_scsi = 1, .max_cpus = 4, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine vexpress_a15_machine = { @@ -507,6 +508,7 @@ static QEMUMachine vexpress_a15_machine = { .init = vexpress_a15_init, .use_scsi = 1, .max_cpus = 4, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void vexpress_machine_init(void) diff --git a/hw/virtex_ml507.c b/hw/virtex_ml507.c index 6ab8fee..e470a1f 100644 --- a/hw/virtex_ml507.c +++ b/hw/virtex_ml507.c @@ -264,6 +264,7 @@ static QEMUMachine virtex_machine = { .name = "virtex-ml507", .desc = "Xilinx Virtex ML507 reference design", .init = virtex_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void virtex_machine_init(void) diff --git a/hw/xen_machine_pv.c b/hw/xen_machine_pv.c index 4264703..98f63d1 100644 --- a/hw/xen_machine_pv.c +++ b/hw/xen_machine_pv.c @@ -114,7 +114,7 @@ static QEMUMachine xenpv_machine = { .desc = "Xen Para-virtualized PC", .init = xen_init_pv, .max_cpus = 1, - .default_machine_opts = "accel=xen", + .default_machine_opts = "accel=xen," DEFAULT_BOOT_ORDER, }; static void xenpv_machine_init(void) diff --git a/hw/xilinx_zynq.c b/hw/xilinx_zynq.c index c55dafb..599fa00 100644 --- a/hw/xilinx_zynq.c +++ b/hw/xilinx_zynq.c @@ -184,6 +184,7 @@ static QEMUMachine zynq_machine = { .use_scsi = 1, .max_cpus = 1, .no_sdcard = 1 + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void zynq_machine_init(void) diff --git a/hw/xtensa_lx60.c b/hw/xtensa_lx60.c index 5dd2e08..dec24b8 100644 --- a/hw/xtensa_lx60.c +++ b/hw/xtensa_lx60.c @@ -310,6 +310,7 @@ static QEMUMachine xtensa_lx60_machine = { .desc = "lx60 EVB (" XTENSA_DEFAULT_CPU_MODEL ")", .init = xtensa_lx60_init, .max_cpus = 4, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static QEMUMachine xtensa_lx200_machine = { @@ -317,6 +318,7 @@ static QEMUMachine xtensa_lx200_machine = { .desc = "lx200 EVB (" XTENSA_DEFAULT_CPU_MODEL ")", .init = xtensa_lx200_init, .max_cpus = 4, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void xtensa_lx_machines_init(void) diff --git a/hw/xtensa_sim.c b/hw/xtensa_sim.c index 2e846d8..5e484b8 100644 --- a/hw/xtensa_sim.c +++ b/hw/xtensa_sim.c @@ -117,6 +117,7 @@ static QEMUMachine xtensa_sim_machine = { .is_default = true, .init = xtensa_sim_init, .max_cpus = 4, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void xtensa_sim_machine_init(void) diff --git a/hw/z2.c b/hw/z2.c index f62b806..bed5c49 100644 --- a/hw/z2.c +++ b/hw/z2.c @@ -373,6 +373,7 @@ static QEMUMachine z2_machine = { .name = "z2", .desc = "Zipit Z2 (PXA27x)", .init = z2_init, + .default_machine_opts = DEFAULT_BOOT_ORDER, }; static void z2_machine_init(void) diff --git a/qemu-config.c b/qemu-config.c index cd1ec21..92dfc8e 100644 --- a/qemu-config.c +++ b/qemu-config.c @@ -619,7 +619,11 @@ static QemuOptsList qemu_machine_opts = { .name = "mem-merge", .type = QEMU_OPT_BOOL, .help = "enable/disable memory merge support", - }, + }, { + .name = "boot", + .type = QEMU_OPT_STRING, + .help = "boot order", + }, { /* End of list */ } }, }; diff --git a/vl.c b/vl.c index ee3c43a..6ef2246 100644 --- a/vl.c +++ b/vl.c @@ -2369,7 +2369,7 @@ int main(int argc, char **argv, char **envp) const char *icount_option = NULL; const char *initrd_filename; const char *kernel_filename, *kernel_cmdline; - char boot_devices[33] = "cad"; /* default to HD->floppy->CD-ROM */ + const char *boot_devices = NULL; DisplayState *ds; DisplayChangeListener *dcl; int cyls, heads, secs, translation; @@ -2645,7 +2645,7 @@ int main(int argc, char **argv, char **envp) "splash", "splash-time", "reboot-timeout", NULL }; - char buf[sizeof(boot_devices)]; + char buf[33]; char *standard_boot_devices; int legacy = 0; @@ -2662,14 +2662,18 @@ int main(int argc, char **argv, char **envp) if (legacy || get_param_value(buf, sizeof(buf), "order", optarg)) { validate_bootdevices(buf); - pstrcpy(boot_devices, sizeof(boot_devices), buf); + machine_opts = qemu_opts_create(qemu_find_opts("machine"), + NULL, 0, NULL); + qemu_opt_set(machine_opts, "boot", buf); } if (!legacy) { if (get_param_value(buf, sizeof(buf), "once", optarg)) { validate_bootdevices(buf); standard_boot_devices = g_strdup(boot_devices); - pstrcpy(boot_devices, sizeof(boot_devices), buf); + machine_opts = qemu_opts_create(qemu_find_opts("machine"), + NULL, 0, NULL); + qemu_opt_set(machine_opts, "boot", buf); qemu_register_reset(restore_boot_devices, standard_boot_devices); } @@ -3479,6 +3483,7 @@ int main(int argc, char **argv, char **envp) kernel_filename = qemu_opt_get(machine_opts, "kernel"); initrd_filename = qemu_opt_get(machine_opts, "initrd"); kernel_cmdline = qemu_opt_get(machine_opts, "append"); + boot_devices = qemu_opt_get(machine_opts, "boot"); } else { kernel_filename = initrd_filename = kernel_cmdline = NULL; }