On 08/08/14 14:08, Paolo Bonzini wrote: > Il 08/08/2014 12:17, Michal Privoznik ha scritto: >> + if (loader->nvram) { >> + virBufferFreeAndReset(&buf); >> + virBufferAsprintf(&buf, >> + "file=%s,if=pflash,format=raw,unit=1", >> + loader->nvram); >> + >> + virCommandAddArg(cmd, "-drive"); >> + virCommandAddArgBuffer(cmd, &buf); >> + } > > Note that other machines may not need unit=1, for example pseries > doesn't need it (it uses -bios for the firmware, not -drive if=pflash). > It would be nice to make this easily configurable. > > Alternatively you could use unit=1 if there is a <loader type='pflash'> > element, and unit=0 otherwise. We can then patch QEMU to reject unit=1 > on machines that use -bios + -drive if=pflash,unit=0. > > Laszlo, what happens on x86 with -bios + -drive if=pflash,unit=0? I checked that earlier (independently of unit=... in the pflash drive). With -bios, you only change the bios filename: case QEMU_OPTION_bios: qemu_opts_set(qemu_find_opts("machine"), 0, "firmware", optarg); [...] bios_name = qemu_opt_get(machine_opts, "firmware"); Code using bios_name is not reached when a pflash drive is present: that would be old_pc_system_rom_init() in "hw/i386/pc_sysfw.c", but its only caller, pc_system_firmware_init(), doesn't call it if there's at least one pflash drive (and you're not running an ISA PC). ... I did find the "firmware" machine property too, but it seems to be used only on s390x. So, in total, as long as you run a PCI-enabled PC (esp. i440fx) machine type, -bios is simply ignored when a pflash drive is present. Thanks Laszlo -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list