[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [qemu-s390x] [PATCH v7 05/12] s390-ccw: move auxiliary IPL data to s
From: |
Thomas Huth |
Subject: |
Re: [qemu-s390x] [PATCH v7 05/12] s390-ccw: move auxiliary IPL data to separate location |
Date: |
Sat, 17 Feb 2018 09:11:12 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 |
On 16.02.2018 23:07, Collin L. Walling wrote:
> The s390-ccw firmware needs some information in support of the
> boot process which is not available on the native machine.
> Examples are the netboot firmware load address and now the
> boot menu parameters.
>
> While storing that data in unused fields of the IPL parameter block
> works, that approach could create problems if the parameter block
> definition should change in the future. Because then a guest could
> overwrite these fields using the set IPLB diagnose.
>
> In fact the data in question is of more global nature and not really
> tied to an IPL device, so separating it is rather logical.
>
> This commit introduces a new structure to hold firmware relevant
> IPL parameters set by QEMU. The data is stored at location 204 (dec)
> and can contain up to 7 32-bit words. This area is available to
> programming in the z/Architecture Principles of Operation and
> can thus safely be used by the firmware until the IPL has completed.
>
> Signed-off-by: Viktor Mihajlovski <address@hidden>
> Signed-off-by: Collin L. Walling <address@hidden>
> ---
[...]
> diff --git a/hw/s390x/ipl.h b/hw/s390x/ipl.h
> index 8a705e0..74469b1 100644
> --- a/hw/s390x/ipl.h
> +++ b/hw/s390x/ipl.h
> @@ -16,8 +16,7 @@
> #include "cpu.h"
>
> struct IplBlockCcw {
> - uint64_t netboot_start_addr;
> - uint8_t reserved0[77];
> + uint8_t reserved0[85];
> uint8_t ssid;
> uint16_t devno;
> uint8_t vm_flags;
> @@ -59,6 +58,21 @@ typedef struct IplBlockQemuScsi IplBlockQemuScsi;
>
> #define DIAG308_FLAGS_LP_VALID 0x80
>
> +#define QIPL_ADDRESS 0xcc
> +
> +/*
> + * The QEMU IPL Parameters will be stored 32-bit word aligned.
> + * Placement of data fields in this area must account for
> + * their alignment needs.
> + * The entire structure must not be larger than 28 bytes.
> + */
> +struct QemuIplParameters {
> + uint8_t reserved1[4];
> + uint64_t netboot_start_addr;
> + uint8_t reserved2[16];
> +} QEMU_PACKED;
> +typedef struct QemuIplParameters QemuIplParameters;
> +
> union IplParameterBlock {
> struct {
> uint32_t len;
> @@ -74,6 +88,7 @@ union IplParameterBlock {
> IplBlockFcp fcp;
> IplBlockQemuScsi scsi;
> };
> + QemuIplParameters qipl;
> } QEMU_PACKED;
> struct {
> uint8_t reserved1[110];
I still think that the information should *not* be stored within the
IplParameterBlock to avoid that we pass it via DIAG 0x308, too.
If we do it like this, I'm pretty sure that we will look at this code in
a couple of years and wonder whether we can change it again or whether
this is an established interface between the host and the guest. So
please, let's avoid establishing such "hidden" interfaces just out of
current convenience. There must be a better location for this.
Christian, do you have an idea?
Thomas
- [qemu-s390x] [PATCH v7 02/12] s390-ccw: refactor eckd_block_num to use CHS, (continued)
- [qemu-s390x] [PATCH v7 02/12] s390-ccw: refactor eckd_block_num to use CHS, Collin L. Walling, 2018/02/16
- [qemu-s390x] [PATCH v7 04/12] s390-ccw: update libc, Collin L. Walling, 2018/02/16
- Re: [qemu-s390x] [PATCH v7 04/12] s390-ccw: update libc, Thomas Huth, 2018/02/17
- Re: [qemu-s390x] [PATCH v7 04/12] s390-ccw: update libc, Collin L. Walling, 2018/02/19
- Re: [qemu-s390x] [PATCH v7 04/12] s390-ccw: update libc, Thomas Huth, 2018/02/19
- Re: [qemu-s390x] [PATCH v7 04/12] s390-ccw: update libc, Collin L. Walling, 2018/02/19
- Re: [qemu-s390x] [Qemu-devel] [PATCH v7 04/12] s390-ccw: update libc, Collin L. Walling, 2018/02/19
- Re: [qemu-s390x] [Qemu-devel] [PATCH v7 04/12] s390-ccw: update libc, Eric Blake, 2018/02/19
- Re: [qemu-s390x] [Qemu-devel] [PATCH v7 04/12] s390-ccw: update libc, Thomas Huth, 2018/02/19
[qemu-s390x] [PATCH v7 05/12] s390-ccw: move auxiliary IPL data to separate location, Collin L. Walling, 2018/02/16
- Re: [qemu-s390x] [PATCH v7 05/12] s390-ccw: move auxiliary IPL data to separate location,
Thomas Huth <=
Re: [qemu-s390x] [PATCH v7 05/12] s390-ccw: move auxiliary IPL data to separate location, Viktor Mihajlovski, 2018/02/19
[qemu-s390x] [PATCH v7 07/12] s390-ccw: set up interactive boot menu parameters, Collin L. Walling, 2018/02/16
[qemu-s390x] [PATCH v7 11/12] s390-ccw: set cp_receive mask only when needed and consume pending service irqs, Collin L. Walling, 2018/02/16