On 24.10.2012, at 00:43, David Gibson wrote: > On Tue, Oct 23, 2012 at 12:20:08PM +0200, Alexander Graf wrote: >> >> On 23.10.2012, at 12:09, Avik Sil wrote: >> >>> 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 <machine_name>,boot=<boot_devices>, 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 <avik...@linux.vnet.ibm.com> >>> --- >>> hw/nseries.c | 2 ++ >>> hw/pc_piix.c | 13 ++++++++++++- >>> hw/ppc_newworld.c | 1 + >>> hw/ppc_oldworld.c | 1 + >>> hw/ppc_prep.c | 1 + >>> hw/sun4m.c | 10 ++++++++++ >>> hw/sun4u.c | 3 +++ >> >> That feels like too much magic for my taste. Can't we have some >> default macro (or even the explicit "cad" thing) that we push to >> _every_ machine description out there? The next patch to implement >> boot= for pseries would then remove this default value for the >> pseries machine. > > I'm not 100% clear on what you mean here. Do you just mean: > #define DEFAULT_BOOT_ORDER "boot=cad" > and then we use > .default_machine_opts = DEFAULT_BOOT_ORDER, > > or something else?
I mean that this patch only patches 7 files. Check this out: dekai:qemu alex$ grep -R register_machine hw hw/alpha_dp264.c: qemu_register_machine(&clipper_machine); hw/an5206.c: qemu_register_machine(&an5206_machine); hw/axis_dev88.c: qemu_register_machine(&axisdev88_machine); hw/boards.h:int qemu_register_machine(QEMUMachine *m); hw/collie.c: qemu_register_machine(&collie_machine); hw/dummy_m68k.c: qemu_register_machine(&dummy_m68k_machine); hw/exynos4_boards.c: qemu_register_machine(&exynos4_machines[EXYNOS4_BOARD_NURI]); hw/exynos4_boards.c: qemu_register_machine(&exynos4_machines[EXYNOS4_BOARD_SMDKC210]); hw/gumstix.c: qemu_register_machine(&connex_machine); hw/gumstix.c: qemu_register_machine(&verdex_machine); hw/highbank.c: qemu_register_machine(&highbank_machine); hw/integratorcp.c: qemu_register_machine(&integratorcp_machine); hw/leon3.c: qemu_register_machine(&leon3_generic_machine); hw/lm32_boards.c: qemu_register_machine(&lm32_uclinux_machine); hw/lm32_boards.c: qemu_register_machine(&lm32_evr_machine); hw/mainstone.c: qemu_register_machine(&mainstone2_machine); hw/mcf5208.c: qemu_register_machine(&mcf5208evb_machine); hw/milkymist.c: qemu_register_machine(&milkymist_machine); hw/mips_fulong2e.c: qemu_register_machine(&mips_fulong2e_machine); hw/mips_jazz.c: qemu_register_machine(&mips_magnum_machine); hw/mips_jazz.c: qemu_register_machine(&mips_pica61_machine); hw/mips_malta.c: qemu_register_machine(&mips_malta_machine); hw/mips_mipssim.c: qemu_register_machine(&mips_mipssim_machine); hw/mips_r4k.c: qemu_register_machine(&mips_machine); hw/musicpal.c: qemu_register_machine(&musicpal_machine); hw/nseries.c: qemu_register_machine(&n800_machine); hw/nseries.c: qemu_register_machine(&n810_machine); hw/omap_sx1.c: qemu_register_machine(&sx1_machine_v2); hw/omap_sx1.c: qemu_register_machine(&sx1_machine_v1); hw/palm.c: qemu_register_machine(&palmte_machine); hw/pc_piix.c: qemu_register_machine(&pc_machine_v1_1); hw/pc_piix.c: qemu_register_machine(&pc_machine_v1_0); hw/pc_piix.c: qemu_register_machine(&pc_machine_v0_15); hw/pc_piix.c: qemu_register_machine(&pc_machine_v0_14); hw/pc_piix.c: qemu_register_machine(&pc_machine_v0_13); hw/pc_piix.c: qemu_register_machine(&pc_machine_v0_12); hw/pc_piix.c: qemu_register_machine(&pc_machine_v0_11); hw/pc_piix.c: qemu_register_machine(&pc_machine_v0_10); hw/pc_piix.c: qemu_register_machine(&isapc_machine); hw/pc_piix.c: qemu_register_machine(&xenfv_machine); hw/petalogix_ml605_mmu.c: qemu_register_machine(&petalogix_ml605_machine); hw/petalogix_s3adsp1800_mmu.c: qemu_register_machine(&petalogix_s3adsp1800_machine); hw/ppc405_boards.c: qemu_register_machine(&ref405ep_machine); hw/ppc405_boards.c: qemu_register_machine(&taihu_machine); hw/ppc440_bamboo.c: qemu_register_machine(&bamboo_machine); hw/ppc_newworld.c: qemu_register_machine(&core99_machine); hw/ppc_oldworld.c: qemu_register_machine(&heathrow_machine); hw/ppc_prep.c: qemu_register_machine(&prep_machine); hw/ppce500_mpc8544ds.c: qemu_register_machine(&mpc8544ds_machine); hw/r2d.c: qemu_register_machine(&r2d_machine); hw/realview.c: qemu_register_machine(&realview_eb_machine); hw/realview.c: qemu_register_machine(&realview_eb_mpcore_machine); hw/realview.c: qemu_register_machine(&realview_pb_a8_machine); hw/realview.c: qemu_register_machine(&realview_pbx_a9_machine); hw/s390-virtio.c: qemu_register_machine(&s390_machine); hw/shix.c: qemu_register_machine(&shix_machine); hw/spapr.c: qemu_register_machine(&spapr_machine); hw/spitz.c: qemu_register_machine(&akitapda_machine); hw/spitz.c: qemu_register_machine(&spitzpda_machine); hw/spitz.c: qemu_register_machine(&borzoipda_machine); hw/spitz.c: qemu_register_machine(&terrierpda_machine); hw/stellaris.c: qemu_register_machine(&lm3s811evb_machine); hw/stellaris.c: qemu_register_machine(&lm3s6965evb_machine); hw/sun4m.c: qemu_register_machine(&ss5_machine); hw/sun4m.c: qemu_register_machine(&ss10_machine); hw/sun4m.c: qemu_register_machine(&ss600mp_machine); hw/sun4m.c: qemu_register_machine(&ss20_machine); hw/sun4m.c: qemu_register_machine(&voyager_machine); hw/sun4m.c: qemu_register_machine(&ss_lx_machine); hw/sun4m.c: qemu_register_machine(&ss4_machine); hw/sun4m.c: qemu_register_machine(&scls_machine); hw/sun4m.c: qemu_register_machine(&sbook_machine); hw/sun4m.c: qemu_register_machine(&ss1000_machine); hw/sun4m.c: qemu_register_machine(&ss2000_machine); hw/sun4m.c: qemu_register_machine(&ss2_machine); hw/sun4u.c: qemu_register_machine(&sun4u_machine); hw/sun4u.c: qemu_register_machine(&sun4v_machine); hw/sun4u.c: qemu_register_machine(&niagara_machine); hw/tosa.c: qemu_register_machine(&tosapda_machine); hw/versatilepb.c: qemu_register_machine(&versatilepb_machine); hw/versatilepb.c: qemu_register_machine(&versatileab_machine); hw/vexpress.c: qemu_register_machine(&vexpress_a9_machine); hw/vexpress.c: qemu_register_machine(&vexpress_a15_machine); hw/virtex_ml507.c: qemu_register_machine(&virtex_machine); hw/xen_machine_pv.c: qemu_register_machine(&xenpv_machine); hw/xilinx_zynq.c: qemu_register_machine(&zynq_machine); hw/xtensa_lx60.c: qemu_register_machine(&xtensa_lx60_machine); hw/xtensa_lx60.c: qemu_register_machine(&xtensa_lx200_machine); hw/xtensa_sim.c: qemu_register_machine(&xtensa_sim_machine); hw/z2.c: qemu_register_machine(&z2_machine); Looks like a lot more files to me :). > >> The way the patch works right now, the "make machine specific" patch >> indirectly also changes the behavior for a bunch of machines. > > A bunch? I thought the only machine whose behaviour changed was > pseries. It changes the behavior of all machines that are not patched, because they will fall back to no boot order now. Alex > I agree that moving the behaviour change into a separate > patch would be a better idea, but if there are machines other than > pseries with changed behaviour by this patch, then that's a plain old > bug, rather than a mere question of patch elegance. > > -- > David Gibson | I'll have my music baroque, and my code > david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ > _other_ > | _way_ _around_! > http://www.ozlabs.org/~dgibson >