All of lore.kernel.org
 help / color / mirror / Atom feed
* [PULL 00/18] s390x updates
@ 2022-07-07  7:54 Thomas Huth
  2022-07-07  7:54 ` [PULL 01/18] target/s390x/tcg: SPX: check validity of new prefix Thomas Huth
                   ` (18 more replies)
  0 siblings, 19 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x

 Hi Richard!

The following changes since commit 39e19f5f67d925c60278a6156fd1776d04495a93:

  Merge tag 'pull-xen-20220705' of https://xenbits.xen.org/git-http/people/aperard/qemu-dm into staging (2022-07-05 22:13:51 +0530)

are available in the Git repository at:

  https://gitlab.com/thuth/qemu.git tags/pull-request-2022-07-07

for you to fetch changes up to 3d8111fd3bf7298486bcf1a72013b44c9044104e:

  target/s390x: Exit tb after executing ex_value (2022-07-06 19:04:57 +0200)

----------------------------------------------------------------
* Check validity of the address in the SET PREFIX instruction
* Fix booting from devices that use 4k sectors, but are not like DASDs
* Re-evaluate pending interrupts after EXECUTE of certain instructions

----------------------------------------------------------------
Janis Schoetterl-Glausch (1):
  target/s390x/tcg: SPX: check validity of new prefix

Richard Henderson (4):
  target/s390x: Remove DISAS_GOTO_TB
  target/s390x: Remove DISAS_PC_STALE
  target/s390x: Remove DISAS_PC_STALE_NOCHAIN
  target/s390x: Exit tb after executing ex_value

Thomas Huth (13):
  pc-bios/s390-ccw: Add a proper prototype for main()
  pc-bios/s390-ccw/virtio: Introduce a macro for the DASD block size
  pc-bios/s390-ccw/bootmap: Improve the guessing logic in
    zipl_load_vblk()
  pc-bios/s390-ccw/virtio-blkdev: Simplify/fix
    virtio_ipl_disk_is_valid()
  pc-bios/s390-ccw/virtio-blkdev: Remove virtio_assume_scsi()
  pc-bios/s390-ccw/virtio: Set missing status bits while initializing
  pc-bios/s390-ccw/virtio: Read device config after feature negotiation
  pc-bios/s390-ccw/virtio: Beautify the code for reading virtqueue
    configuration
  pc-bios/s390-ccw: Split virtio-scsi code from
    virtio_blk_setup_device()
  pc-bios/s390-ccw/virtio-blkdev: Request the right feature bits
  pc-bios/s390-ccw/virtio: Remove "extern" keyword from prototypes
  pc-bios/s390-ccw/netboot.mak: Ignore Clang's warnings about GNU
    extensions
  pc-bios/s390-ccw: Update the s390-ccw bios binaries with the
    virtio-blk fixes

 pc-bios/s390-ccw/netboot.mak     |   7 ++-
 pc-bios/s390-ccw/s390-ccw.h      |   1 +
 pc-bios/s390-ccw/virtio-scsi.h   |   2 +-
 pc-bios/s390-ccw/virtio.h        |  16 +++---
 pc-bios/s390-ccw/bootmap.c       |  27 +++++++--
 pc-bios/s390-ccw/main.c          |  27 ++++++---
 pc-bios/s390-ccw/virtio-blkdev.c |  91 +++++--------------------------
 pc-bios/s390-ccw/virtio-scsi.c   |  19 ++++++-
 pc-bios/s390-ccw/virtio.c        |  28 ++++++----
 target/s390x/tcg/misc_helper.c   |   7 +++
 target/s390x/tcg/translate.c     |  42 ++++++--------
 pc-bios/s390-ccw.img             | Bin 50936 -> 42608 bytes
 pc-bios/s390-netboot.img         | Bin 79688 -> 67232 bytes
 13 files changed, 129 insertions(+), 138 deletions(-)

-- 
2.31.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PULL 01/18] target/s390x/tcg: SPX: check validity of new prefix
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 02/18] pc-bios/s390-ccw: Add a proper prototype for main() Thomas Huth
                   ` (17 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson
  Cc: qemu-s390x, Janis Schoetterl-Glausch, David Hildenbrand

From: Janis Schoetterl-Glausch <scgl@linux.ibm.com>

According to the architecture, SET PREFIX must try to access the new
prefix area and recognize an addressing exception if the area is not
accessible.
For qemu this check prevents a crash in cpu_map_lowcore after an
inaccessible prefix area has been set.

Signed-off-by: Janis Schoetterl-Glausch <scgl@linux.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Message-Id: <20220630094340.3646279-1-scgl@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 target/s390x/tcg/misc_helper.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/target/s390x/tcg/misc_helper.c b/target/s390x/tcg/misc_helper.c
index aab9c47747..10dadb002a 100644
--- a/target/s390x/tcg/misc_helper.c
+++ b/target/s390x/tcg/misc_helper.c
@@ -158,6 +158,13 @@ void HELPER(spx)(CPUS390XState *env, uint64_t a1)
     if (prefix == old_prefix) {
         return;
     }
+    /*
+     * Since prefix got aligned to 8k and memory increments are a multiple of
+     * 8k checking the first page is sufficient
+     */
+    if (!mmu_absolute_addr_valid(prefix, true)) {
+        tcg_s390_program_interrupt(env, PGM_ADDRESSING, GETPC());
+    }
 
     env->psa = prefix;
     HELPER_LOG("prefix: %#x\n", prefix);
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 02/18] pc-bios/s390-ccw: Add a proper prototype for main()
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
  2022-07-07  7:54 ` [PULL 01/18] target/s390x/tcg: SPX: check validity of new prefix Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 03/18] pc-bios/s390-ccw/virtio: Introduce a macro for the DASD block size Thomas Huth
                   ` (16 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x, Cornelia Huck, Eric Farman

Older versions of Clang complain if there is no prototype for main().
Add one, and while we're at it, make sure that we use the same type
for main.c and netmain.c - since the return value does not matter,
declare the return type of main() as "void".

Message-Id: <20220704111903.62400-2-thuth@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw/s390-ccw.h | 1 +
 pc-bios/s390-ccw/main.c     | 3 +--
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/pc-bios/s390-ccw/s390-ccw.h b/pc-bios/s390-ccw/s390-ccw.h
index 79db69ff54..b88e0550ab 100644
--- a/pc-bios/s390-ccw/s390-ccw.h
+++ b/pc-bios/s390-ccw/s390-ccw.h
@@ -57,6 +57,7 @@ void write_subsystem_identification(void);
 void write_iplb_location(void);
 extern char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE)));
 unsigned int get_loadparm_index(void);
+void main(void);
 
 /* sclp.c */
 void sclp_print(const char *string);
diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
index 5d2b7ba94d..835341457d 100644
--- a/pc-bios/s390-ccw/main.c
+++ b/pc-bios/s390-ccw/main.c
@@ -281,7 +281,7 @@ static void probe_boot_device(void)
     sclp_print("Could not find a suitable boot device (none specified)\n");
 }
 
-int main(void)
+void main(void)
 {
     sclp_setup();
     css_setup();
@@ -294,5 +294,4 @@ int main(void)
     }
 
     panic("Failed to load OS from hard disk\n");
-    return 0; /* make compiler happy */
 }
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 03/18] pc-bios/s390-ccw/virtio: Introduce a macro for the DASD block size
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
  2022-07-07  7:54 ` [PULL 01/18] target/s390x/tcg: SPX: check validity of new prefix Thomas Huth
  2022-07-07  7:54 ` [PULL 02/18] pc-bios/s390-ccw: Add a proper prototype for main() Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 04/18] pc-bios/s390-ccw/bootmap: Improve the guessing logic in zipl_load_vblk() Thomas Huth
                   ` (15 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x, Eric Farman, Cornelia Huck

Use VIRTIO_DASD_DEFAULT_BLOCK_SIZE instead of the magic value 4096.

Message-Id: <20220704111903.62400-3-thuth@redhat.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw/virtio.h        | 1 +
 pc-bios/s390-ccw/virtio-blkdev.c | 2 +-
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/pc-bios/s390-ccw/virtio.h b/pc-bios/s390-ccw/virtio.h
index 19fceb6495..9e410bde6f 100644
--- a/pc-bios/s390-ccw/virtio.h
+++ b/pc-bios/s390-ccw/virtio.h
@@ -198,6 +198,7 @@ extern int virtio_read_many(ulong sector, void *load_addr, int sec_num);
 #define VIRTIO_SECTOR_SIZE 512
 #define VIRTIO_ISO_BLOCK_SIZE 2048
 #define VIRTIO_SCSI_BLOCK_SIZE 512
+#define VIRTIO_DASD_DEFAULT_BLOCK_SIZE 4096
 
 static inline ulong virtio_sector_adjust(ulong sector)
 {
diff --git a/pc-bios/s390-ccw/virtio-blkdev.c b/pc-bios/s390-ccw/virtio-blkdev.c
index 7d35050292..6483307630 100644
--- a/pc-bios/s390-ccw/virtio-blkdev.c
+++ b/pc-bios/s390-ccw/virtio-blkdev.c
@@ -155,7 +155,7 @@ void virtio_assume_eckd(void)
     vdev->config.blk.physical_block_exp = 0;
     switch (vdev->senseid.cu_model) {
     case VIRTIO_ID_BLOCK:
-        vdev->config.blk.blk_size = 4096;
+        vdev->config.blk.blk_size = VIRTIO_DASD_DEFAULT_BLOCK_SIZE;
         break;
     case VIRTIO_ID_SCSI:
         vdev->config.blk.blk_size = vdev->scsi_block_size;
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 04/18] pc-bios/s390-ccw/bootmap: Improve the guessing logic in zipl_load_vblk()
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (2 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 03/18] pc-bios/s390-ccw/virtio: Introduce a macro for the DASD block size Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 05/18] pc-bios/s390-ccw/virtio-blkdev: Simplify/fix virtio_ipl_disk_is_valid() Thomas Huth
                   ` (14 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x

The logic of trying an final ISO or ECKD boot on virtio-block devices is
very weird: Since the geometry hardly ever matches in virtio_disk_is_scsi(),
virtio_blk_setup_device() always sets a "guessed" disk geometry via
virtio_assume_scsi() (which is certainly also wrong in a lot of cases).

zipl_load_vblk() then sees that there's been a "virtio_guessed_disk_nature"
and tries to fix up the geometry again via virtio_assume_iso9660() before
always trying to do ipl_iso_el_torito(). That's a very brain-twisting
way of attempting to boot from ISO images, which won't work anymore after
the following patches that will clean up the virtio_assume_scsi() mess
(and thus get rid of the "virtio_guessed_disk_nature" here).

Let's try a better approach instead: ISO files always have a magic
string "CD001" at offset 0x8001 (see e.g. the ECMA-119 specification)
which we can use to decide whether we should try to boot in ISO 9660
mode (which we should also try if we see a sector size of 2048).

And if we were not able to boot in ISO mode here, the final boot attempt
before panicking is to boot in ECKD mode. Since this is our last boot
attempt anyway, simply always assume the ECKD geometry here (if the sector
size was not 4096 yet), so that we also do not depend on the guessed disk
geometry from virtio_blk_setup_device() here anymore.

Message-Id: <20220704111903.62400-4-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw/bootmap.c | 27 +++++++++++++++++++++++----
 1 file changed, 23 insertions(+), 4 deletions(-)

diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c
index 56411ab3b6..994e59c0b0 100644
--- a/pc-bios/s390-ccw/bootmap.c
+++ b/pc-bios/s390-ccw/bootmap.c
@@ -780,18 +780,37 @@ static void ipl_iso_el_torito(void)
     }
 }
 
+/**
+ * Detect whether we're trying to boot from an .ISO image.
+ * These always have a signature string "CD001" at offset 0x8001.
+ */
+static bool has_iso_signature(void)
+{
+    int blksize = virtio_get_block_size();
+
+    if (!blksize || virtio_read(0x8000 / blksize, sec)) {
+        return false;
+    }
+
+    return !memcmp("CD001", &sec[1], 5);
+}
+
 /***********************************************************************
  * Bus specific IPL sequences
  */
 
 static void zipl_load_vblk(void)
 {
-    if (virtio_guessed_disk_nature()) {
-        virtio_assume_iso9660();
+    int blksize = virtio_get_block_size();
+
+    if (blksize == VIRTIO_ISO_BLOCK_SIZE || has_iso_signature()) {
+        if (blksize != VIRTIO_ISO_BLOCK_SIZE) {
+            virtio_assume_iso9660();
+        }
+        ipl_iso_el_torito();
     }
-    ipl_iso_el_torito();
 
-    if (virtio_guessed_disk_nature()) {
+    if (blksize != VIRTIO_DASD_DEFAULT_BLOCK_SIZE) {
         sclp_print("Using guessed DASD geometry.\n");
         virtio_assume_eckd();
     }
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 05/18] pc-bios/s390-ccw/virtio-blkdev: Simplify/fix virtio_ipl_disk_is_valid()
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (3 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 04/18] pc-bios/s390-ccw/bootmap: Improve the guessing logic in zipl_load_vblk() Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 06/18] pc-bios/s390-ccw/virtio-blkdev: Remove virtio_assume_scsi() Thomas Huth
                   ` (13 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x, Eric Farman

The s390-ccw bios fails to boot if the boot disk is a virtio-blk
disk with a sector size of 4096. For example:

 dasdfmt -b 4096 -d cdl -y -p -M quick /dev/dasdX
 fdasd -a /dev/dasdX
 install a guest onto /dev/dasdX1 using virtio-blk
 qemu-system-s390x -nographic -hda /dev/dasdX1

The bios then bails out with:

 ! Cannot read block 0 !

Looking at virtio_ipl_disk_is_valid() and especially the function
virtio_disk_is_scsi(), it does not really make sense that we expect
only such a limited disk geometry (like a block size of 512) for
our boot disks. Let's relax the check and allow everything that
remotely looks like a sane disk.

Message-Id: <20220704111903.62400-5-thuth@redhat.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw/virtio.h        |  2 --
 pc-bios/s390-ccw/virtio-blkdev.c | 41 ++++++--------------------------
 2 files changed, 7 insertions(+), 36 deletions(-)

diff --git a/pc-bios/s390-ccw/virtio.h b/pc-bios/s390-ccw/virtio.h
index 9e410bde6f..241730effe 100644
--- a/pc-bios/s390-ccw/virtio.h
+++ b/pc-bios/s390-ccw/virtio.h
@@ -186,8 +186,6 @@ void virtio_assume_scsi(void);
 void virtio_assume_eckd(void);
 void virtio_assume_iso9660(void);
 
-extern bool virtio_disk_is_scsi(void);
-extern bool virtio_disk_is_eckd(void);
 extern bool virtio_ipl_disk_is_valid(void);
 extern int virtio_get_block_size(void);
 extern uint8_t virtio_get_heads(void);
diff --git a/pc-bios/s390-ccw/virtio-blkdev.c b/pc-bios/s390-ccw/virtio-blkdev.c
index 6483307630..7e13155589 100644
--- a/pc-bios/s390-ccw/virtio-blkdev.c
+++ b/pc-bios/s390-ccw/virtio-blkdev.c
@@ -166,46 +166,19 @@ void virtio_assume_eckd(void)
         virtio_eckd_sectors_for_block_size(vdev->config.blk.blk_size);
 }
 
-bool virtio_disk_is_scsi(void)
-{
-    VDev *vdev = virtio_get_device();
-
-    if (vdev->guessed_disk_nature == VIRTIO_GDN_SCSI) {
-        return true;
-    }
-    switch (vdev->senseid.cu_model) {
-    case VIRTIO_ID_BLOCK:
-        return (vdev->config.blk.geometry.heads == 255)
-            && (vdev->config.blk.geometry.sectors == 63)
-            && (virtio_get_block_size()  == VIRTIO_SCSI_BLOCK_SIZE);
-    case VIRTIO_ID_SCSI:
-        return true;
-    }
-    return false;
-}
-
-bool virtio_disk_is_eckd(void)
+bool virtio_ipl_disk_is_valid(void)
 {
+    int blksize = virtio_get_block_size();
     VDev *vdev = virtio_get_device();
-    const int block_size = virtio_get_block_size();
 
-    if (vdev->guessed_disk_nature == VIRTIO_GDN_DASD) {
+    if (vdev->guessed_disk_nature == VIRTIO_GDN_SCSI ||
+        vdev->guessed_disk_nature == VIRTIO_GDN_DASD) {
         return true;
     }
-    switch (vdev->senseid.cu_model) {
-    case VIRTIO_ID_BLOCK:
-        return (vdev->config.blk.geometry.heads == 15)
-            && (vdev->config.blk.geometry.sectors ==
-                virtio_eckd_sectors_for_block_size(block_size));
-    case VIRTIO_ID_SCSI:
-        return false;
-    }
-    return false;
-}
 
-bool virtio_ipl_disk_is_valid(void)
-{
-    return virtio_disk_is_scsi() || virtio_disk_is_eckd();
+    return (vdev->senseid.cu_model == VIRTIO_ID_BLOCK ||
+            vdev->senseid.cu_model == VIRTIO_ID_SCSI) &&
+           blksize >= 512 && blksize <= 4096;
 }
 
 int virtio_get_block_size(void)
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 06/18] pc-bios/s390-ccw/virtio-blkdev: Remove virtio_assume_scsi()
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (4 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 05/18] pc-bios/s390-ccw/virtio-blkdev: Simplify/fix virtio_ipl_disk_is_valid() Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 07/18] pc-bios/s390-ccw/virtio: Set missing status bits while initializing Thomas Huth
                   ` (12 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x, Eric Farman

The virtio_assume_scsi() function is very questionable: First, it
is only called for virtio-blk, and not for virtio-scsi, so the naming
is already quite confusing. Second, it is called if we detected a
"invalid" IPL disk, trying to fix it by blindly setting a sector
size of 512. This of course won't work in most cases since disks
might have a different sector size for a reason.

Thus let's remove this strange function now. The calling code can
also be removed completely, since there is another spot in main.c
that does "IPL_assert(virtio_ipl_disk_is_valid(), ...)" to make
sure that we do not try to IPL from an invalid device.

Message-Id: <20220704111903.62400-6-thuth@redhat.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw/virtio.h        |  1 -
 pc-bios/s390-ccw/virtio-blkdev.c | 24 ------------------------
 2 files changed, 25 deletions(-)

diff --git a/pc-bios/s390-ccw/virtio.h b/pc-bios/s390-ccw/virtio.h
index 241730effe..600ba5052b 100644
--- a/pc-bios/s390-ccw/virtio.h
+++ b/pc-bios/s390-ccw/virtio.h
@@ -182,7 +182,6 @@ enum guessed_disk_nature_type {
 typedef enum guessed_disk_nature_type VirtioGDN;
 
 VirtioGDN virtio_guessed_disk_nature(void);
-void virtio_assume_scsi(void);
 void virtio_assume_eckd(void);
 void virtio_assume_iso9660(void);
 
diff --git a/pc-bios/s390-ccw/virtio-blkdev.c b/pc-bios/s390-ccw/virtio-blkdev.c
index 7e13155589..db1f7f44aa 100644
--- a/pc-bios/s390-ccw/virtio-blkdev.c
+++ b/pc-bios/s390-ccw/virtio-blkdev.c
@@ -112,23 +112,6 @@ VirtioGDN virtio_guessed_disk_nature(void)
     return virtio_get_device()->guessed_disk_nature;
 }
 
-void virtio_assume_scsi(void)
-{
-    VDev *vdev = virtio_get_device();
-
-    switch (vdev->senseid.cu_model) {
-    case VIRTIO_ID_BLOCK:
-        vdev->guessed_disk_nature = VIRTIO_GDN_SCSI;
-        vdev->config.blk.blk_size = VIRTIO_SCSI_BLOCK_SIZE;
-        vdev->config.blk.physical_block_exp = 0;
-        vdev->blk_factor = 1;
-        break;
-    case VIRTIO_ID_SCSI:
-        vdev->scsi_block_size = VIRTIO_SCSI_BLOCK_SIZE;
-        break;
-    }
-}
-
 void virtio_assume_iso9660(void)
 {
     VDev *vdev = virtio_get_device();
@@ -247,13 +230,6 @@ int virtio_blk_setup_device(SubChannelId schid)
     switch (vdev->senseid.cu_model) {
     case VIRTIO_ID_BLOCK:
         sclp_print("Using virtio-blk.\n");
-        if (!virtio_ipl_disk_is_valid()) {
-            /* make sure all getters but blocksize return 0 for
-             * invalid IPL disk
-             */
-            memset(&vdev->config.blk, 0, sizeof(vdev->config.blk));
-            virtio_assume_scsi();
-        }
         break;
     case VIRTIO_ID_SCSI:
         IPL_assert(vdev->config.scsi.sense_size == VIRTIO_SCSI_SENSE_SIZE,
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 07/18] pc-bios/s390-ccw/virtio: Set missing status bits while initializing
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (5 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 06/18] pc-bios/s390-ccw/virtio-blkdev: Remove virtio_assume_scsi() Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 08/18] pc-bios/s390-ccw/virtio: Read device config after feature negotiation Thomas Huth
                   ` (11 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson
  Cc: qemu-s390x, Christian Borntraeger, Cornelia Huck, Eric Farman

According chapter "3.1.1 Driver Requirements: Device Initialization"
of the Virtio specification (v1.1), a driver for a device has to set
the ACKNOWLEDGE and DRIVER bits in the status field after resetting
the device. The s390-ccw bios skipped these steps so far and seems
like QEMU never cared. Anyway, it's better to follow the spec, so
let's set these bits now in the right spots, too.

Message-Id: <20220704111903.62400-7-thuth@redhat.com>
Acked-by: Christian Borntraeger <borntraeger@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw/virtio.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c
index 5d2c6e3381..4e85a2eb82 100644
--- a/pc-bios/s390-ccw/virtio.c
+++ b/pc-bios/s390-ccw/virtio.c
@@ -220,7 +220,7 @@ int virtio_run(VDev *vdev, int vqid, VirtioCmd *cmd)
 void virtio_setup_ccw(VDev *vdev)
 {
     int i, rc, cfg_size = 0;
-    unsigned char status = VIRTIO_CONFIG_S_DRIVER_OK;
+    uint8_t status;
     struct VirtioFeatureDesc {
         uint32_t features;
         uint8_t index;
@@ -234,6 +234,10 @@ void virtio_setup_ccw(VDev *vdev)
 
     run_ccw(vdev, CCW_CMD_VDEV_RESET, NULL, 0, false);
 
+    status = VIRTIO_CONFIG_S_ACKNOWLEDGE;
+    rc = run_ccw(vdev, CCW_CMD_WRITE_STATUS, &status, sizeof(status), false);
+    IPL_assert(rc == 0, "Could not write ACKNOWLEDGE status to host");
+
     switch (vdev->senseid.cu_model) {
     case VIRTIO_ID_NET:
         vdev->nr_vqs = 2;
@@ -253,6 +257,11 @@ void virtio_setup_ccw(VDev *vdev)
     default:
         panic("Unsupported virtio device\n");
     }
+
+    status |= VIRTIO_CONFIG_S_DRIVER;
+    rc = run_ccw(vdev, CCW_CMD_WRITE_STATUS, &status, sizeof(status), false);
+    IPL_assert(rc == 0, "Could not write DRIVER status to host");
+
     IPL_assert(
         run_ccw(vdev, CCW_CMD_READ_CONF, &vdev->config, cfg_size, false) == 0,
        "Could not get block device configuration");
@@ -291,9 +300,10 @@ void virtio_setup_ccw(VDev *vdev)
             run_ccw(vdev, CCW_CMD_SET_VQ, &info, sizeof(info), false) == 0,
             "Cannot set VQ info");
     }
-    IPL_assert(
-        run_ccw(vdev, CCW_CMD_WRITE_STATUS, &status, sizeof(status), false) == 0,
-        "Could not write status to host");
+
+    status |= VIRTIO_CONFIG_S_DRIVER_OK;
+    rc = run_ccw(vdev, CCW_CMD_WRITE_STATUS, &status, sizeof(status), false);
+    IPL_assert(rc == 0, "Could not write DRIVER_OK status to host");
 }
 
 bool virtio_is_supported(SubChannelId schid)
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 08/18] pc-bios/s390-ccw/virtio: Read device config after feature negotiation
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (6 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 07/18] pc-bios/s390-ccw/virtio: Set missing status bits while initializing Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 09/18] pc-bios/s390-ccw/virtio: Beautify the code for reading virtqueue configuration Thomas Huth
                   ` (10 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x, Eric Farman, Cornelia Huck

Feature negotiation should be done first, since some fields in the
config area can depend on the negotiated features and thus should
rather be read afterwards.

While we're at it, also adjust the error message here a little bit
(the code is nowadays used for non-block virtio devices, too).

Message-Id: <20220704111903.62400-8-thuth@redhat.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw/virtio.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c
index 4e85a2eb82..d8c2b52710 100644
--- a/pc-bios/s390-ccw/virtio.c
+++ b/pc-bios/s390-ccw/virtio.c
@@ -262,10 +262,6 @@ void virtio_setup_ccw(VDev *vdev)
     rc = run_ccw(vdev, CCW_CMD_WRITE_STATUS, &status, sizeof(status), false);
     IPL_assert(rc == 0, "Could not write DRIVER status to host");
 
-    IPL_assert(
-        run_ccw(vdev, CCW_CMD_READ_CONF, &vdev->config, cfg_size, false) == 0,
-       "Could not get block device configuration");
-
     /* Feature negotiation */
     for (i = 0; i < ARRAY_SIZE(vdev->guest_features); i++) {
         feats.features = 0;
@@ -278,6 +274,9 @@ void virtio_setup_ccw(VDev *vdev)
         IPL_assert(rc == 0, "Could not set features bits");
     }
 
+    rc = run_ccw(vdev, CCW_CMD_READ_CONF, &vdev->config, cfg_size, false);
+    IPL_assert(rc == 0, "Could not get virtio device configuration");
+
     for (i = 0; i < vdev->nr_vqs; i++) {
         VqInfo info = {
             .queue = (unsigned long long) ring_area + (i * VIRTIO_RING_SIZE),
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 09/18] pc-bios/s390-ccw/virtio: Beautify the code for reading virtqueue configuration
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (7 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 08/18] pc-bios/s390-ccw/virtio: Read device config after feature negotiation Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 10/18] pc-bios/s390-ccw: Split virtio-scsi code from virtio_blk_setup_device() Thomas Huth
                   ` (9 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x, Cornelia Huck, Eric Farman

It looks nicer if we separate the run_ccw() from the IPL_assert()
statement, and the error message should talk about "virtio device"
instead of "block device", since this code is nowadays used for
non-block (i.e. network) devices, too.

Message-Id: <20220704111903.62400-9-thuth@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw/virtio.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/pc-bios/s390-ccw/virtio.c b/pc-bios/s390-ccw/virtio.c
index d8c2b52710..f37510f312 100644
--- a/pc-bios/s390-ccw/virtio.c
+++ b/pc-bios/s390-ccw/virtio.c
@@ -289,9 +289,8 @@ void virtio_setup_ccw(VDev *vdev)
             .num = 0,
         };
 
-        IPL_assert(
-            run_ccw(vdev, CCW_CMD_READ_VQ_CONF, &config, sizeof(config), false) == 0,
-            "Could not get block device VQ configuration");
+        rc = run_ccw(vdev, CCW_CMD_READ_VQ_CONF, &config, sizeof(config), false);
+        IPL_assert(rc == 0, "Could not get virtio device VQ configuration");
         info.num = config.num;
         vring_init(&vdev->vrings[i], &info);
         vdev->vrings[i].schid = vdev->schid;
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 10/18] pc-bios/s390-ccw: Split virtio-scsi code from virtio_blk_setup_device()
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (8 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 09/18] pc-bios/s390-ccw/virtio: Beautify the code for reading virtqueue configuration Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 11/18] pc-bios/s390-ccw/virtio-blkdev: Request the right feature bits Thomas Huth
                   ` (8 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x, Eric Farman

The next patch is going to add more virtio-block specific code to
virtio_blk_setup_device(), and if the virtio-scsi code is also in
there, this is more cumbersome. And the calling function virtio_setup()
in main.c looks at the device type already anyway, so it's more
logical to separate the virtio-scsi stuff into a new function in
virtio-scsi.c instead.

Message-Id: <20220704111903.62400-10-thuth@redhat.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw/virtio-scsi.h   |  2 +-
 pc-bios/s390-ccw/main.c          | 24 +++++++++++++++++-------
 pc-bios/s390-ccw/virtio-blkdev.c | 20 ++------------------
 pc-bios/s390-ccw/virtio-scsi.c   | 19 ++++++++++++++++++-
 4 files changed, 38 insertions(+), 27 deletions(-)

diff --git a/pc-bios/s390-ccw/virtio-scsi.h b/pc-bios/s390-ccw/virtio-scsi.h
index 4b14c2c2f9..e6b6cd4815 100644
--- a/pc-bios/s390-ccw/virtio-scsi.h
+++ b/pc-bios/s390-ccw/virtio-scsi.h
@@ -67,8 +67,8 @@ static inline bool virtio_scsi_response_ok(const VirtioScsiCmdResp *r)
         return r->response == VIRTIO_SCSI_S_OK && r->status == CDB_STATUS_GOOD;
 }
 
-int virtio_scsi_setup(VDev *vdev);
 int virtio_scsi_read_many(VDev *vdev,
                           ulong sector, void *load_addr, int sec_num);
+int virtio_scsi_setup_device(SubChannelId schid);
 
 #endif /* VIRTIO_SCSI_H */
diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
index 835341457d..a2def83e82 100644
--- a/pc-bios/s390-ccw/main.c
+++ b/pc-bios/s390-ccw/main.c
@@ -14,6 +14,7 @@
 #include "s390-ccw.h"
 #include "cio.h"
 #include "virtio.h"
+#include "virtio-scsi.h"
 #include "dasd-ipl.h"
 
 char stack[PAGE_SIZE * 8] __attribute__((__aligned__(PAGE_SIZE)));
@@ -218,6 +219,7 @@ static int virtio_setup(void)
 {
     VDev *vdev = virtio_get_device();
     QemuIplParameters *early_qipl = (QemuIplParameters *)QIPL_ADDRESS;
+    int ret;
 
     memcpy(&qipl, early_qipl, sizeof(QemuIplParameters));
 
@@ -225,18 +227,26 @@ static int virtio_setup(void)
         menu_setup();
     }
 
-    if (virtio_get_device_type() == VIRTIO_ID_NET) {
+    switch (vdev->senseid.cu_model) {
+    case VIRTIO_ID_NET:
         sclp_print("Network boot device detected\n");
         vdev->netboot_start_addr = qipl.netboot_start_addr;
-    } else {
-        int ret = virtio_blk_setup_device(blk_schid);
-        if (ret) {
-            return ret;
-        }
+        return 0;
+    case VIRTIO_ID_BLOCK:
+        ret = virtio_blk_setup_device(blk_schid);
+        break;
+    case VIRTIO_ID_SCSI:
+        ret = virtio_scsi_setup_device(blk_schid);
+        break;
+    default:
+        panic("\n! No IPL device available !\n");
+    }
+
+    if (!ret) {
         IPL_assert(virtio_ipl_disk_is_valid(), "No valid IPL device detected");
     }
 
-    return 0;
+    return ret;
 }
 
 static void ipl_boot_device(void)
diff --git a/pc-bios/s390-ccw/virtio-blkdev.c b/pc-bios/s390-ccw/virtio-blkdev.c
index db1f7f44aa..c175b66a47 100644
--- a/pc-bios/s390-ccw/virtio-blkdev.c
+++ b/pc-bios/s390-ccw/virtio-blkdev.c
@@ -222,27 +222,11 @@ uint64_t virtio_get_blocks(void)
 int virtio_blk_setup_device(SubChannelId schid)
 {
     VDev *vdev = virtio_get_device();
-    int ret = 0;
 
     vdev->schid = schid;
     virtio_setup_ccw(vdev);
 
-    switch (vdev->senseid.cu_model) {
-    case VIRTIO_ID_BLOCK:
-        sclp_print("Using virtio-blk.\n");
-        break;
-    case VIRTIO_ID_SCSI:
-        IPL_assert(vdev->config.scsi.sense_size == VIRTIO_SCSI_SENSE_SIZE,
-            "Config: sense size mismatch");
-        IPL_assert(vdev->config.scsi.cdb_size == VIRTIO_SCSI_CDB_SIZE,
-            "Config: CDB size mismatch");
+    sclp_print("Using virtio-blk.\n");
 
-        sclp_print("Using virtio-scsi.\n");
-        ret = virtio_scsi_setup(vdev);
-        break;
-    default:
-        panic("\n! No IPL device available !\n");
-    }
-
-    return ret;
+    return 0;
 }
diff --git a/pc-bios/s390-ccw/virtio-scsi.c b/pc-bios/s390-ccw/virtio-scsi.c
index 2c8d0f3097..3b7069270c 100644
--- a/pc-bios/s390-ccw/virtio-scsi.c
+++ b/pc-bios/s390-ccw/virtio-scsi.c
@@ -329,7 +329,7 @@ static void scsi_parse_capacity_report(void *data,
     }
 }
 
-int virtio_scsi_setup(VDev *vdev)
+static int virtio_scsi_setup(VDev *vdev)
 {
     int retry_test_unit_ready = 3;
     uint8_t data[256];
@@ -430,3 +430,20 @@ int virtio_scsi_setup(VDev *vdev)
 
     return 0;
 }
+
+int virtio_scsi_setup_device(SubChannelId schid)
+{
+    VDev *vdev = virtio_get_device();
+
+    vdev->schid = schid;
+    virtio_setup_ccw(vdev);
+
+    IPL_assert(vdev->config.scsi.sense_size == VIRTIO_SCSI_SENSE_SIZE,
+               "Config: sense size mismatch");
+    IPL_assert(vdev->config.scsi.cdb_size == VIRTIO_SCSI_CDB_SIZE,
+               "Config: CDB size mismatch");
+
+    sclp_print("Using virtio-scsi.\n");
+
+    return virtio_scsi_setup(vdev);
+}
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 11/18] pc-bios/s390-ccw/virtio-blkdev: Request the right feature bits
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (9 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 10/18] pc-bios/s390-ccw: Split virtio-scsi code from virtio_blk_setup_device() Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 12/18] pc-bios/s390-ccw/virtio: Remove "extern" keyword from prototypes Thomas Huth
                   ` (7 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x

The virtio-blk code uses the block size and geometry fields in the
config area. According to the virtio-spec, these have to be negotiated
with the right feature bits during initialization, otherwise they
might not be available. QEMU is so far very forgiving and always
provides them, but we should not rely on this behavior, so let's
better request them properly via the VIRTIO_BLK_F_GEOMETRY and
VIRTIO_BLK_F_BLK_SIZE feature bits.

Message-Id: <20220704111903.62400-11-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw/virtio-blkdev.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/pc-bios/s390-ccw/virtio-blkdev.c b/pc-bios/s390-ccw/virtio-blkdev.c
index c175b66a47..8271c47296 100644
--- a/pc-bios/s390-ccw/virtio-blkdev.c
+++ b/pc-bios/s390-ccw/virtio-blkdev.c
@@ -13,6 +13,9 @@
 #include "virtio.h"
 #include "virtio-scsi.h"
 
+#define VIRTIO_BLK_F_GEOMETRY   (1 << 4)
+#define VIRTIO_BLK_F_BLK_SIZE   (1 << 6)
+
 static int virtio_blk_read_many(VDev *vdev, ulong sector, void *load_addr,
                                 int sec_num)
 {
@@ -223,6 +226,7 @@ int virtio_blk_setup_device(SubChannelId schid)
 {
     VDev *vdev = virtio_get_device();
 
+    vdev->guest_features[0] = VIRTIO_BLK_F_GEOMETRY | VIRTIO_BLK_F_BLK_SIZE;
     vdev->schid = schid;
     virtio_setup_ccw(vdev);
 
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 12/18] pc-bios/s390-ccw/virtio: Remove "extern" keyword from prototypes
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (10 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 11/18] pc-bios/s390-ccw/virtio-blkdev: Request the right feature bits Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 13/18] pc-bios/s390-ccw/netboot.mak: Ignore Clang's warnings about GNU extensions Thomas Huth
                   ` (6 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x, Cornelia Huck

All the other protytpes in the headers here do not use the "extern"
keyword, so let's unify this by removing the "extern" from the misfits,
too.

Message-Id: <20220704111903.62400-12-thuth@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw/virtio.h | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/pc-bios/s390-ccw/virtio.h b/pc-bios/s390-ccw/virtio.h
index 600ba5052b..e657d381ec 100644
--- a/pc-bios/s390-ccw/virtio.h
+++ b/pc-bios/s390-ccw/virtio.h
@@ -185,12 +185,12 @@ VirtioGDN virtio_guessed_disk_nature(void);
 void virtio_assume_eckd(void);
 void virtio_assume_iso9660(void);
 
-extern bool virtio_ipl_disk_is_valid(void);
-extern int virtio_get_block_size(void);
-extern uint8_t virtio_get_heads(void);
-extern uint8_t virtio_get_sectors(void);
-extern uint64_t virtio_get_blocks(void);
-extern int virtio_read_many(ulong sector, void *load_addr, int sec_num);
+bool virtio_ipl_disk_is_valid(void);
+int virtio_get_block_size(void);
+uint8_t virtio_get_heads(void);
+uint8_t virtio_get_sectors(void);
+uint64_t virtio_get_blocks(void);
+int virtio_read_many(ulong sector, void *load_addr, int sec_num);
 
 #define VIRTIO_SECTOR_SIZE 512
 #define VIRTIO_ISO_BLOCK_SIZE 2048
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 13/18] pc-bios/s390-ccw/netboot.mak: Ignore Clang's warnings about GNU extensions
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (11 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 12/18] pc-bios/s390-ccw/virtio: Remove "extern" keyword from prototypes Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 14/18] pc-bios/s390-ccw: Update the s390-ccw bios binaries with the virtio-blk fixes Thomas Huth
                   ` (5 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x

When compiling the s390-ccw bios with Clang (v14.0), there is currently
an unuseful warning like this:

  CC      pc-bios/s390-ccw/ipv6.o
 ../../roms/SLOF/lib/libnet/ipv6.c:447:18: warning: variable length array
  folded to constant array as an extension [-Wgnu-folding-constant]
                unsigned short raw[ip6size];
                               ^

SLOF is currently GCC-only and cannot be compiled with Clang yet, so
it is expected that such extensions sneak in there - and as long as
we don't want to compile the code with a compiler that is neither GCC
or Clang, it is also not necessary to avoid such extensions.

Thus these GNU-extension related warnings are completely useless in
the s390-ccw bios, especially in the code that is coming from SLOF,
so we should simply disable the related warnings here now.

Message-Id: <20220704111903.62400-13-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw/netboot.mak | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/pc-bios/s390-ccw/netboot.mak b/pc-bios/s390-ccw/netboot.mak
index 1a06befa4b..057f13bdb4 100644
--- a/pc-bios/s390-ccw/netboot.mak
+++ b/pc-bios/s390-ccw/netboot.mak
@@ -16,9 +16,12 @@ s390-netboot.elf: $(NETOBJS) libnet.a libc.a
 s390-netboot.img: s390-netboot.elf
 	$(call quiet-command,$(STRIP) --strip-unneeded $< -o $@,"STRIP","$(TARGET_DIR)$@")
 
+# SLOF is GCC-only, so ignore warnings about GNU extensions with Clang here
+NO_GNU_WARN := $(call cc-option,-Werror $(QEMU_CFLAGS),-Wno-gnu)
+
 # libc files:
 
-LIBC_CFLAGS = $(QEMU_CFLAGS) $(CFLAGS) $(LIBC_INC) $(LIBNET_INC) \
+LIBC_CFLAGS = $(QEMU_CFLAGS) $(CFLAGS) $(NO_GNU_WARN) $(LIBC_INC) $(LIBNET_INC) \
 	      -MMD -MP -MT $@ -MF $(@:%.o=%.d)
 
 CTYPE_OBJS = isdigit.o isxdigit.o toupper.o
@@ -52,7 +55,7 @@ libc.a: $(LIBCOBJS)
 
 LIBNETOBJS := args.o dhcp.o dns.o icmpv6.o ipv6.o tcp.o udp.o bootp.o \
 	      dhcpv6.o ethernet.o ipv4.o ndp.o tftp.o pxelinux.o
-LIBNETCFLAGS = $(QEMU_CFLAGS) $(CFLAGS) $(LIBC_INC) $(LIBNET_INC) \
+LIBNETCFLAGS = $(QEMU_CFLAGS) $(CFLAGS) $(NO_GNU_WARN) $(LIBC_INC) $(LIBNET_INC) \
 	       -DDHCPARCH=0x1F -MMD -MP -MT $@ -MF $(@:%.o=%.d)
 
 %.o : $(SLOF_DIR)/lib/libnet/%.c
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 14/18] pc-bios/s390-ccw: Update the s390-ccw bios binaries with the virtio-blk fixes
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (12 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 13/18] pc-bios/s390-ccw/netboot.mak: Ignore Clang's warnings about GNU extensions Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 15/18] target/s390x: Remove DISAS_GOTO_TB Thomas Huth
                   ` (4 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x

The binaries have been recompiled with the fixes from the previous patches.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 pc-bios/s390-ccw.img     | Bin 50936 -> 42608 bytes
 pc-bios/s390-netboot.img | Bin 79688 -> 67232 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/pc-bios/s390-ccw.img b/pc-bios/s390-ccw.img
index a560c1272f6c135f4fa14f4e10c97b0ce3a66e42..39f9680a0ef1c57f8a0bac9e12ff77ce15150d37 100644
GIT binary patch
literal 42608
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
NjDl;rRhaO^{{!#4+l>GK

literal 50936
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
E03u^A*Z=?k

diff --git a/pc-bios/s390-netboot.img b/pc-bios/s390-netboot.img
index bc34af8a287e8b63b61a5c349697a984973e7f9c..682da24a05d3b13d9530fe1123b242e38109e1c3 100644
GIT binary patch
literal 67232
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
Hl_&lWsQ8x_

literal 79688
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
CjQ7O=

-- 
2.31.1



^ permalink raw reply	[flat|nested] 20+ messages in thread

* [PULL 15/18] target/s390x: Remove DISAS_GOTO_TB
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (13 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 14/18] pc-bios/s390-ccw: Update the s390-ccw bios binaries with the virtio-blk fixes Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 16/18] target/s390x: Remove DISAS_PC_STALE Thomas Huth
                   ` (3 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x

From: Richard Henderson <richard.henderson@linaro.org>

There is nothing to distinguish this from DISAS_NORETURN.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220702060228.420454-2-richard.henderson@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 target/s390x/tcg/translate.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
index fd2433d625..e38ae9ce09 100644
--- a/target/s390x/tcg/translate.c
+++ b/target/s390x/tcg/translate.c
@@ -1123,9 +1123,6 @@ typedef struct {
    exiting the TB.  */
 #define DISAS_PC_UPDATED        DISAS_TARGET_0
 
-/* We have emitted one or more goto_tb.  No fixup required.  */
-#define DISAS_GOTO_TB           DISAS_TARGET_1
-
 /* We have updated the PC and CC values.  */
 #define DISAS_PC_CC_UPDATED     DISAS_TARGET_2
 
@@ -1189,7 +1186,7 @@ static DisasJumpType help_goto_direct(DisasContext *s, uint64_t dest)
         tcg_gen_goto_tb(0);
         tcg_gen_movi_i64(psw_addr, dest);
         tcg_gen_exit_tb(s->base.tb, 0);
-        return DISAS_GOTO_TB;
+        return DISAS_NORETURN;
     } else {
         tcg_gen_movi_i64(psw_addr, dest);
         per_branch(s, false);
@@ -1258,7 +1255,7 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c,
             tcg_gen_movi_i64(psw_addr, dest);
             tcg_gen_exit_tb(s->base.tb, 1);
 
-            ret = DISAS_GOTO_TB;
+            ret = DISAS_NORETURN;
         } else {
             /* Fallthru can use goto_tb, but taken branch cannot.  */
             /* Store taken branch destination before the brcond.  This
@@ -6634,7 +6631,6 @@ static void s390x_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
     DisasContext *dc = container_of(dcbase, DisasContext, base);
 
     switch (dc->base.is_jmp) {
-    case DISAS_GOTO_TB:
     case DISAS_NORETURN:
         break;
     case DISAS_TOO_MANY:
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 16/18] target/s390x: Remove DISAS_PC_STALE
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (14 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 15/18] target/s390x: Remove DISAS_GOTO_TB Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 17/18] target/s390x: Remove DISAS_PC_STALE_NOCHAIN Thomas Huth
                   ` (2 subsequent siblings)
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x

From: Richard Henderson <richard.henderson@linaro.org>

There is nothing to distinguish this from DISAS_TOO_MANY.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220702060228.420454-3-richard.henderson@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 target/s390x/tcg/translate.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
index e38ae9ce09..a3422c0eb0 100644
--- a/target/s390x/tcg/translate.c
+++ b/target/s390x/tcg/translate.c
@@ -1126,10 +1126,6 @@ typedef struct {
 /* We have updated the PC and CC values.  */
 #define DISAS_PC_CC_UPDATED     DISAS_TARGET_2
 
-/* We are exiting the TB, but have neither emitted a goto_tb, nor
-   updated the PC for the next instruction to be executed.  */
-#define DISAS_PC_STALE          DISAS_TARGET_3
-
 /* We are exiting the TB to the main loop.  */
 #define DISAS_PC_STALE_NOCHAIN  DISAS_TARGET_4
 
@@ -3993,7 +3989,7 @@ static DisasJumpType op_sacf(DisasContext *s, DisasOps *o)
 {
     gen_helper_sacf(cpu_env, o->in2);
     /* Addressing mode has changed, so end the block.  */
-    return DISAS_PC_STALE;
+    return DISAS_TOO_MANY;
 }
 #endif
 
@@ -4029,7 +4025,7 @@ static DisasJumpType op_sam(DisasContext *s, DisasOps *o)
     tcg_temp_free_i64(tsam);
 
     /* Always exit the TB, since we (may have) changed execution mode.  */
-    return DISAS_PC_STALE;
+    return DISAS_TOO_MANY;
 }
 
 static DisasJumpType op_sar(DisasContext *s, DisasOps *o)
@@ -6562,13 +6558,13 @@ static DisasJumpType translate_one(CPUS390XState *env, DisasContext *s)
 
     /* io should be the last instruction in tb when icount is enabled */
     if (unlikely(icount && ret == DISAS_NEXT)) {
-        ret = DISAS_PC_STALE;
+        ret = DISAS_TOO_MANY;
     }
 
 #ifndef CONFIG_USER_ONLY
     if (s->base.tb->flags & FLAG_MASK_PER) {
         /* An exception might be triggered, save PSW if not already done.  */
-        if (ret == DISAS_NEXT || ret == DISAS_PC_STALE) {
+        if (ret == DISAS_NEXT || ret == DISAS_TOO_MANY) {
             tcg_gen_movi_i64(psw_addr, s->pc_tmp);
         }
 
@@ -6634,7 +6630,6 @@ static void s390x_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
     case DISAS_NORETURN:
         break;
     case DISAS_TOO_MANY:
-    case DISAS_PC_STALE:
     case DISAS_PC_STALE_NOCHAIN:
         update_psw_addr(dc);
         /* FALLTHRU */
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 17/18] target/s390x: Remove DISAS_PC_STALE_NOCHAIN
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (15 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 16/18] target/s390x: Remove DISAS_PC_STALE Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-07  7:54 ` [PULL 18/18] target/s390x: Exit tb after executing ex_value Thomas Huth
  2022-07-08  0:46 ` [PULL 00/18] s390x updates Richard Henderson
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x

From: Richard Henderson <richard.henderson@linaro.org>

Replace this with a flag: exit_to_mainloop.
We can now control the exit for each of DISAS_TOO_MANY,
DISAS_PC_UPDATED, and DISAS_PC_CC_UPDATED, and fold in
the check for PER.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220702060228.420454-4-richard.henderson@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 target/s390x/tcg/translate.c | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
index a3422c0eb0..eac59c3dd1 100644
--- a/target/s390x/tcg/translate.c
+++ b/target/s390x/tcg/translate.c
@@ -149,6 +149,7 @@ struct DisasContext {
     uint64_t pc_tmp;
     uint32_t ilen;
     enum cc_op cc_op;
+    bool exit_to_mainloop;
 };
 
 /* Information carried about a condition to be evaluated.  */
@@ -1126,9 +1127,6 @@ typedef struct {
 /* We have updated the PC and CC values.  */
 #define DISAS_PC_CC_UPDATED     DISAS_TARGET_2
 
-/* We are exiting the TB to the main loop.  */
-#define DISAS_PC_STALE_NOCHAIN  DISAS_TARGET_4
-
 
 /* Instruction flags */
 #define IF_AFP1     0x0001      /* r1 is a fp reg for HFP/FPS instructions */
@@ -3022,7 +3020,8 @@ static DisasJumpType op_lctl(DisasContext *s, DisasOps *o)
     tcg_temp_free_i32(r1);
     tcg_temp_free_i32(r3);
     /* Exit to main loop to reevaluate s390_cpu_exec_interrupt.  */
-    return DISAS_PC_STALE_NOCHAIN;
+    s->exit_to_mainloop = true;
+    return DISAS_TOO_MANY;
 }
 
 static DisasJumpType op_lctlg(DisasContext *s, DisasOps *o)
@@ -3033,7 +3032,8 @@ static DisasJumpType op_lctlg(DisasContext *s, DisasOps *o)
     tcg_temp_free_i32(r1);
     tcg_temp_free_i32(r3);
     /* Exit to main loop to reevaluate s390_cpu_exec_interrupt.  */
-    return DISAS_PC_STALE_NOCHAIN;
+    s->exit_to_mainloop = true;
+    return DISAS_TOO_MANY;
 }
 
 static DisasJumpType op_lra(DisasContext *s, DisasOps *o)
@@ -4283,7 +4283,8 @@ static DisasJumpType op_ssm(DisasContext *s, DisasOps *o)
 {
     tcg_gen_deposit_i64(psw_mask, psw_mask, o->in2, 56, 8);
     /* Exit to main loop to reevaluate s390_cpu_exec_interrupt.  */
-    return DISAS_PC_STALE_NOCHAIN;
+    s->exit_to_mainloop = true;
+    return DISAS_TOO_MANY;
 }
 
 static DisasJumpType op_stap(DisasContext *s, DisasOps *o)
@@ -4548,7 +4549,8 @@ static DisasJumpType op_stnosm(DisasContext *s, DisasOps *o)
     }
 
     /* Exit to main loop to reevaluate s390_cpu_exec_interrupt.  */
-    return DISAS_PC_STALE_NOCHAIN;
+    s->exit_to_mainloop = true;
+    return DISAS_TOO_MANY;
 }
 
 static DisasJumpType op_stura(DisasContext *s, DisasOps *o)
@@ -6591,6 +6593,7 @@ static void s390x_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
 
     dc->cc_op = CC_OP_DYNAMIC;
     dc->ex_value = dc->base.tb->cs_base;
+    dc->exit_to_mainloop = (dc->base.tb->flags & FLAG_MASK_PER);
 }
 
 static void s390x_tr_tb_start(DisasContextBase *db, CPUState *cs)
@@ -6630,7 +6633,6 @@ static void s390x_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
     case DISAS_NORETURN:
         break;
     case DISAS_TOO_MANY:
-    case DISAS_PC_STALE_NOCHAIN:
         update_psw_addr(dc);
         /* FALLTHRU */
     case DISAS_PC_UPDATED:
@@ -6640,8 +6642,7 @@ static void s390x_tr_tb_stop(DisasContextBase *dcbase, CPUState *cs)
         /* FALLTHRU */
     case DISAS_PC_CC_UPDATED:
         /* Exit the TB, either by raising a debug exception or by return.  */
-        if ((dc->base.tb->flags & FLAG_MASK_PER) ||
-             dc->base.is_jmp == DISAS_PC_STALE_NOCHAIN) {
+        if (dc->exit_to_mainloop) {
             tcg_gen_exit_tb(NULL, 0);
         } else {
             tcg_gen_lookup_and_goto_ptr();
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* [PULL 18/18] target/s390x: Exit tb after executing ex_value
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (16 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 17/18] target/s390x: Remove DISAS_PC_STALE_NOCHAIN Thomas Huth
@ 2022-07-07  7:54 ` Thomas Huth
  2022-07-08  0:46 ` [PULL 00/18] s390x updates Richard Henderson
  18 siblings, 0 replies; 20+ messages in thread
From: Thomas Huth @ 2022-07-07  7:54 UTC (permalink / raw)
  To: qemu-devel, Richard Henderson; +Cc: qemu-s390x, Sven Schnelle

From: Richard Henderson <richard.henderson@linaro.org>

When EXECUTE sets ex_value to interrupt the constructed instruction,
we implicitly disable interrupts so that the value is not corrupted.
Exit to the main loop after execution, so that we re-evaluate any
pending interrupts.

Reported-by: Sven Schnelle <svens@linux.ibm.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220702060228.420454-5-richard.henderson@linaro.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 target/s390x/tcg/translate.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
index eac59c3dd1..e2ee005671 100644
--- a/target/s390x/tcg/translate.c
+++ b/target/s390x/tcg/translate.c
@@ -6593,7 +6593,7 @@ static void s390x_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
 
     dc->cc_op = CC_OP_DYNAMIC;
     dc->ex_value = dc->base.tb->cs_base;
-    dc->exit_to_mainloop = (dc->base.tb->flags & FLAG_MASK_PER);
+    dc->exit_to_mainloop = (dc->base.tb->flags & FLAG_MASK_PER) || dc->ex_value;
 }
 
 static void s390x_tr_tb_start(DisasContextBase *db, CPUState *cs)
-- 
2.31.1



^ permalink raw reply related	[flat|nested] 20+ messages in thread

* Re: [PULL 00/18] s390x updates
  2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
                   ` (17 preceding siblings ...)
  2022-07-07  7:54 ` [PULL 18/18] target/s390x: Exit tb after executing ex_value Thomas Huth
@ 2022-07-08  0:46 ` Richard Henderson
  18 siblings, 0 replies; 20+ messages in thread
From: Richard Henderson @ 2022-07-08  0:46 UTC (permalink / raw)
  To: Thomas Huth, qemu-devel; +Cc: qemu-s390x

On 7/7/22 13:24, Thomas Huth wrote:
>   Hi Richard!
> 
> The following changes since commit 39e19f5f67d925c60278a6156fd1776d04495a93:
> 
>    Merge tag 'pull-xen-20220705' of https://xenbits.xen.org/git-http/people/aperard/qemu-dm into staging (2022-07-05 22:13:51 +0530)
> 
> are available in the Git repository at:
> 
>    https://gitlab.com/thuth/qemu.git tags/pull-request-2022-07-07
> 
> for you to fetch changes up to 3d8111fd3bf7298486bcf1a72013b44c9044104e:
> 
>    target/s390x: Exit tb after executing ex_value (2022-07-06 19:04:57 +0200)
> 
> ----------------------------------------------------------------
> * Check validity of the address in the SET PREFIX instruction
> * Fix booting from devices that use 4k sectors, but are not like DASDs
> * Re-evaluate pending interrupts after EXECUTE of certain instructions

Applied, thanks.  Please update https://wiki.qemu.org/ChangeLog/7.1 as appropriate.


r~


> 
> ----------------------------------------------------------------
> Janis Schoetterl-Glausch (1):
>    target/s390x/tcg: SPX: check validity of new prefix
> 
> Richard Henderson (4):
>    target/s390x: Remove DISAS_GOTO_TB
>    target/s390x: Remove DISAS_PC_STALE
>    target/s390x: Remove DISAS_PC_STALE_NOCHAIN
>    target/s390x: Exit tb after executing ex_value
> 
> Thomas Huth (13):
>    pc-bios/s390-ccw: Add a proper prototype for main()
>    pc-bios/s390-ccw/virtio: Introduce a macro for the DASD block size
>    pc-bios/s390-ccw/bootmap: Improve the guessing logic in
>      zipl_load_vblk()
>    pc-bios/s390-ccw/virtio-blkdev: Simplify/fix
>      virtio_ipl_disk_is_valid()
>    pc-bios/s390-ccw/virtio-blkdev: Remove virtio_assume_scsi()
>    pc-bios/s390-ccw/virtio: Set missing status bits while initializing
>    pc-bios/s390-ccw/virtio: Read device config after feature negotiation
>    pc-bios/s390-ccw/virtio: Beautify the code for reading virtqueue
>      configuration
>    pc-bios/s390-ccw: Split virtio-scsi code from
>      virtio_blk_setup_device()
>    pc-bios/s390-ccw/virtio-blkdev: Request the right feature bits
>    pc-bios/s390-ccw/virtio: Remove "extern" keyword from prototypes
>    pc-bios/s390-ccw/netboot.mak: Ignore Clang's warnings about GNU
>      extensions
>    pc-bios/s390-ccw: Update the s390-ccw bios binaries with the
>      virtio-blk fixes
> 
>   pc-bios/s390-ccw/netboot.mak     |   7 ++-
>   pc-bios/s390-ccw/s390-ccw.h      |   1 +
>   pc-bios/s390-ccw/virtio-scsi.h   |   2 +-
>   pc-bios/s390-ccw/virtio.h        |  16 +++---
>   pc-bios/s390-ccw/bootmap.c       |  27 +++++++--
>   pc-bios/s390-ccw/main.c          |  27 ++++++---
>   pc-bios/s390-ccw/virtio-blkdev.c |  91 +++++--------------------------
>   pc-bios/s390-ccw/virtio-scsi.c   |  19 ++++++-
>   pc-bios/s390-ccw/virtio.c        |  28 ++++++----
>   target/s390x/tcg/misc_helper.c   |   7 +++
>   target/s390x/tcg/translate.c     |  42 ++++++--------
>   pc-bios/s390-ccw.img             | Bin 50936 -> 42608 bytes
>   pc-bios/s390-netboot.img         | Bin 79688 -> 67232 bytes
>   13 files changed, 129 insertions(+), 138 deletions(-)
> 



^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2022-07-08  0:47 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-07  7:54 [PULL 00/18] s390x updates Thomas Huth
2022-07-07  7:54 ` [PULL 01/18] target/s390x/tcg: SPX: check validity of new prefix Thomas Huth
2022-07-07  7:54 ` [PULL 02/18] pc-bios/s390-ccw: Add a proper prototype for main() Thomas Huth
2022-07-07  7:54 ` [PULL 03/18] pc-bios/s390-ccw/virtio: Introduce a macro for the DASD block size Thomas Huth
2022-07-07  7:54 ` [PULL 04/18] pc-bios/s390-ccw/bootmap: Improve the guessing logic in zipl_load_vblk() Thomas Huth
2022-07-07  7:54 ` [PULL 05/18] pc-bios/s390-ccw/virtio-blkdev: Simplify/fix virtio_ipl_disk_is_valid() Thomas Huth
2022-07-07  7:54 ` [PULL 06/18] pc-bios/s390-ccw/virtio-blkdev: Remove virtio_assume_scsi() Thomas Huth
2022-07-07  7:54 ` [PULL 07/18] pc-bios/s390-ccw/virtio: Set missing status bits while initializing Thomas Huth
2022-07-07  7:54 ` [PULL 08/18] pc-bios/s390-ccw/virtio: Read device config after feature negotiation Thomas Huth
2022-07-07  7:54 ` [PULL 09/18] pc-bios/s390-ccw/virtio: Beautify the code for reading virtqueue configuration Thomas Huth
2022-07-07  7:54 ` [PULL 10/18] pc-bios/s390-ccw: Split virtio-scsi code from virtio_blk_setup_device() Thomas Huth
2022-07-07  7:54 ` [PULL 11/18] pc-bios/s390-ccw/virtio-blkdev: Request the right feature bits Thomas Huth
2022-07-07  7:54 ` [PULL 12/18] pc-bios/s390-ccw/virtio: Remove "extern" keyword from prototypes Thomas Huth
2022-07-07  7:54 ` [PULL 13/18] pc-bios/s390-ccw/netboot.mak: Ignore Clang's warnings about GNU extensions Thomas Huth
2022-07-07  7:54 ` [PULL 14/18] pc-bios/s390-ccw: Update the s390-ccw bios binaries with the virtio-blk fixes Thomas Huth
2022-07-07  7:54 ` [PULL 15/18] target/s390x: Remove DISAS_GOTO_TB Thomas Huth
2022-07-07  7:54 ` [PULL 16/18] target/s390x: Remove DISAS_PC_STALE Thomas Huth
2022-07-07  7:54 ` [PULL 17/18] target/s390x: Remove DISAS_PC_STALE_NOCHAIN Thomas Huth
2022-07-07  7:54 ` [PULL 18/18] target/s390x: Exit tb after executing ex_value Thomas Huth
2022-07-08  0:46 ` [PULL 00/18] s390x updates Richard Henderson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.