qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PULL-for-s390x 06/14] s390-ccw: parse and set boot men


From: Cornelia Huck
Subject: Re: [Qemu-devel] [PULL-for-s390x 06/14] s390-ccw: parse and set boot menu options
Date: Mon, 26 Feb 2018 19:48:57 +0100

On Mon, 26 Feb 2018 11:42:29 +0100
Thomas Huth <address@hidden> wrote:

> From: "Collin L. Walling" <address@hidden>
> 
> 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.
> 
> Signed-off-by: Collin L. Walling <address@hidden>
> Reviewed-by: Janosch Frank <address@hidden>
> Reviewed-by: Thomas Huth <address@hidden>
> Signed-off-by: Thomas Huth <address@hidden>
> ---
>  hw/s390x/ipl.c          | 52 
> +++++++++++++++++++++++++++++++++++++++++++++++++
>  hw/s390x/ipl.h          |  9 +++++++--
>  pc-bios/s390-ccw/iplb.h |  9 +++++++--

Updating the header, but it is not consumed in the bios?

>  3 files changed, 66 insertions(+), 4 deletions(-)

> +static void s390_ipl_set_boot_menu(S390IPLState *ipl)
> +{
> +    QemuOptsList *plist = qemu_find_opts("boot-opts");
> +    QemuOpts *opts = QTAILQ_FIRST(&plist->head);
> +    uint8_t *flags = &ipl->qipl.qipl_flags;
> +    uint32_t *timeout = &ipl->qipl.boot_menu_timeout;
> +    const char *tmp;
> +    unsigned long splash_time = 0;
> +
> +    if (!get_boot_device(0)) {
> +        if (boot_menu) {
> +            error_report("boot menu requires a bootindex to be specified for 
> "
> +                         "the IPL device.");
> +        }
> +        return;
> +    }
> +
> +    switch (ipl->iplb.pbt) {
> +    case S390_IPL_TYPE_CCW:
> +        break;
> +    default:
> +        error_report("boot menu is not supported for this device type.");

If I specify both a bootindex for a device and a -kernel parameter, I
get this error message. Looks a tad odd, but not sure how to avoid it.

Also, error_report() should not use trailing punctuation, but we can
fix that up with a follow-on patch.

> +        return;
> +    }
> +
> +    if (!boot_menu) {
> +        return;
> +    }
> +
> +    *flags |= QIPL_FLAG_BM_OPTS_CMD;
> +
> +    tmp = qemu_opt_get(opts, "splash-time");
> +
> +    if (tmp && qemu_strtoul(tmp, NULL, 10, &splash_time)) {
> +        error_report("splash-time is invalid, forcing it to 0.");
> +        *timeout = 0;
> +        return;
> +    }
> +
> +    if (splash_time > 0xffffffff) {
> +        error_report("splash-time is too large, forcing it to max value.");
> +        *timeout = 0xffffffff;
> +        return;
> +    }
> +
> +    *timeout = cpu_to_be32(splash_time);
> +}
> +



reply via email to

[Prev in Thread] Current Thread [Next in Thread]