On 30.10.20 13:28, Christian Borntraeger wrote:
> From: "Jason J. Herne" <[email protected]>
>
> The architecture states that the iplb location is only written to low
> core for list directed ipl and not for traditional ccw ipl. If we don't
> skip this then operating systems that load by reading into low core
> memory may fail to start.
>
> We should also not write the iplb pointer for network boot as it might
> overwrite content that we got via network.
>
> Signed-off-by: Jason J. Herne <[email protected]>
> Fixes: 9bfc04f9ef68 ("pc-bios: s390x: Save iplb location in lowcore")
> Signed-off-by: Christian Borntraeger <[email protected]>
FWIW, this fixes the vfio-ccw IPL for some non Linux binaries.
> ---
> pc-bios/s390-ccw/main.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
> index 43c792cf9509..fc4bfaa45529 100644
> --- a/pc-bios/s390-ccw/main.c
> +++ b/pc-bios/s390-ccw/main.c
> @@ -43,7 +43,9 @@ void write_subsystem_identification(void)
>
> void write_iplb_location(void)
> {
> - lowcore->ptr_iplb = ptr2u32(&iplb);
> + if (cutype == CU_TYPE_VIRTIO && virtio_get_device_type() !=
> VIRTIO_ID_NET) {
> + lowcore->ptr_iplb = ptr2u32(&iplb);
> + }
> }
>
> unsigned int get_loadparm_index(void)
>