On 15.02.2018 23:54, Collin L. Walling wrote: > Set boot menu options for an s390 guest and store them in > the iplb. These options are set via the QEMU command line > option: > > -boot menu=on|off[,splash-time=X] > > or via the libvirt domain xml: > > <os> > <bootmenu enable='yes|no' timeout='X'/> > </os> > > Where X represents some positive integer representing > milliseconds. > > Any value set for loadparm will override all boot menu options. > If loadparm=PROMPT, then the menu will be enabled without a > timeout. > > The absence of any boot options on the command line will flag > to later use the zipl boot loader values. > > Signed-off-by: Collin L. Walling <wall...@linux.vnet.ibm.com> > Reviewed-by: Janosch Frank <fran...@linux.vnet.ibm.com> > Reviewed-by: Thomas Huth <th...@redhat.com> > --- > hw/s390x/ipl.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ > hw/s390x/ipl.h | 9 +++++++-- > pc-bios/s390-ccw/iplb.h | 6 ++++-- > 3 files changed, 59 insertions(+), 4 deletions(-) [....] > diff --git a/hw/s390x/ipl.h b/hw/s390x/ipl.h > index cab8a97..7c3cab8 100644 > --- a/hw/s390x/ipl.h > +++ b/hw/s390x/ipl.h > @@ -60,10 +60,15 @@ typedef struct IplBlockQemuScsi IplBlockQemuScsi; > > #define QIPL_ADDRESS 0xcc > > +#define BOOT_MENU_FLAG_CMD_OPTS 0x80 > +#define BOOT_MENU_FLAG_ZIPL_OPTS 0x40 > + > struct QemuIplParameters { > - uint8_t reserved1[4]; > + uint8_t boot_menu_flags; > + uint8_t reserved1; > + uint32_t boot_menu_timeout; > uint64_t netboot_start_addr;
The netboot_start_addr field is now never aligned anymore, neither on the host side, nor in guest memory. Not a big problem since the struct is declared with "QEMU_PACKED", but still ... it's always nicer to try to align fields to their natural boundaries. So maybe move boot_menu_flags and reserved1 after netboot_start_addr ? > - uint8_t reserved2[16]; > + uint8_t reserved2[14]; > } QEMU_PACKED; > typedef struct QemuIplParameters QemuIplParameters; Thomas