Blame SOURCES/kvm-pc-bios-s390x-Ensure-Read-IPL-memory-is-clean.patch

c687bc
From 6b19062226ecebf63d2d0b0ff05b5bcfa7a05818 Mon Sep 17 00:00:00 2001
c687bc
From: Thomas Huth <thuth@redhat.com>
c687bc
Date: Thu, 10 Dec 2020 08:32:40 -0500
c687bc
Subject: [PATCH 4/5] pc-bios: s390x: Ensure Read IPL memory is clean
c687bc
c687bc
RH-Author: Thomas Huth <thuth@redhat.com>
c687bc
Message-id: <20201210083241.173509-4-thuth@redhat.com>
c687bc
Patchwork-id: 100372
c687bc
O-Subject: [RHEL-8.4.0 qemu-kvm PATCH 3/4] pc-bios: s390x: Ensure Read IPL memory is clean
c687bc
Bugzilla: 1903135
c687bc
RH-Acked-by: Cornelia Huck <cohuck@redhat.com>
c687bc
RH-Acked-by: Jens Freimann <jfreimann@redhat.com>
c687bc
RH-Acked-by: David Hildenbrand <david@redhat.com>
c687bc
c687bc
From: Eric Farman <farman@linux.ibm.com>
c687bc
c687bc
If, for example, we boot off a virtio device and chreipl to a vfio-ccw
c687bc
device, the space at lowcore will be non-zero. We build a Read IPL CCW
c687bc
at address zero, but it will have leftover PSW data that will conflict
c687bc
with the Format-0 CCW being generated:
c687bc
c687bc
0x0: 00080000 80010000
c687bc
       ------ Ccw0.cda
c687bc
              -- Ccw0.chainData
c687bc
                -- Reserved bits
c687bc
c687bc
The data address will be overwritten with the correct value (0x0), but
c687bc
the apparent data chain bit will cause subsequent memory to be used as
c687bc
the target of the data store, which may not be where we expect (0x0).
c687bc
c687bc
Clear out this space when we boot from DASD, so that we know it exists
c687bc
exactly as we expect.
c687bc
c687bc
Signed-off-by: Eric Farman <farman@linux.ibm.com>
c687bc
Reviewed-by: Jason J. Herne <jjherne@linux.ibm.com>
c687bc
Reviewed-by: Janosch Frank <frankja@de.ibm.com>
c687bc
Acked-by: Christian Borntraeger <borntraeger@de.ibm.com>
c687bc
Acked-by: Cornelia Huck <cohuck@redhat.com>
c687bc
Message-Id: <20201120160117.59366-2-farman@linux.ibm.com>
c687bc
Signed-off-by: Thomas Huth <thuth@redhat.com>
c687bc
(cherry picked from commit d8e5bbdd0d6fa8d9b5ac15de62c87105d92ff558)
c687bc
Signed-off-by: Danilo C. L. de Paula <ddepaula@redhat.com>
c687bc
---
c687bc
 pc-bios/s390-ccw/dasd-ipl.c | 3 +++
c687bc
 1 file changed, 3 insertions(+)
c687bc
c687bc
diff --git a/pc-bios/s390-ccw/dasd-ipl.c b/pc-bios/s390-ccw/dasd-ipl.c
c687bc
index 0fc879bb8e8..71cbae2f16e 100644
c687bc
--- a/pc-bios/s390-ccw/dasd-ipl.c
c687bc
+++ b/pc-bios/s390-ccw/dasd-ipl.c
c687bc
@@ -100,6 +100,9 @@ static void make_readipl(void)
c687bc
 {
c687bc
     Ccw0 *ccwIplRead = (Ccw0 *)0x00;
c687bc
 
c687bc
+    /* Clear out any existing data */
c687bc
+    memset(ccwIplRead, 0, sizeof(Ccw0));
c687bc
+
c687bc
     /* Create Read IPL ccw at address 0 */
c687bc
     ccwIplRead->cmd_code = CCW_CMD_READ_IPL;
c687bc
     ccwIplRead->cda = 0x00; /* Read into address 0x00 in main memory */
c687bc
-- 
c687bc
2.27.0
c687bc