* Wed May 24 2023 Jon Maloy <jmaloy@redhat.com> - 6.2.0-35
- kvm-virtiofsd-Add-basic-support-for-FUSE_SYNCFS-request.patch [bz#2196880] - kvm-s390-kvm-adjust-diag318-resets-to-retain-data.patch [bz#2169308] - kvm-target-s390x-Fix-SLDA-sign-bit-index.patch [bz#2169308] - kvm-target-s390x-Fix-SRDA-CC-calculation.patch [bz#2169308] - kvm-target-s390x-Fix-cc_calc_sla_64-missing-overflows.patch [bz#2169308] - kvm-target-s390x-Fix-shifting-32-bit-values-for-more-tha.patch [bz#2169308] - kvm-s390x-sigp-Reorder-the-SIGP-STOP-code.patch [bz#2169308] - kvm-s390x-tcg-Fix-BRASL-with-a-large-negative-offset.patch [bz#2169308] - kvm-s390x-tcg-Fix-BRCL-with-a-large-negative-offset.patch [bz#2169308] - kvm-target-s390x-Fix-determination-of-overflow-condition.patch [bz#2169308] - kvm-target-s390x-Fix-determination-of-overflow-conditioo.patch [bz#2169308] - kvm-s390x-follow-qdev-tree-to-detect-SCSI-device-on-a-CC.patch [bz#2169308] - kvm-target-s390x-Fix-the-accumulation-of-ccm-in-op_icm.patch [bz#2169308] - kvm-target-s390x-Fix-writeback-to-v1-in-helper_vstl.patch [bz#2169308] - kvm-target-s390x-fix-handling-of-zeroes-in-vfmin-vfmax.patch [bz#2169308] - kvm-target-s390x-Fix-CLFIT-and-CLGIT-immediate-size.patch [bz#2169308] - kvm-s390x-tcg-Fix-opcode-for-lzrf.patch [bz#2169308] - kvm-target-s390x-Fix-emulation-of-the-VISTR-instruction.patch [bz#2169308] - kvm-s390x-css-revert-SCSW-ctrl-flag-bits-on-error.patch [bz#2169308] - kvm-target-s390x-tcg-Fix-and-improve-the-SACF-instructio.patch [bz#2169308] - kvm-target-s390x-tcg-mem_helper-Test-the-right-bits-in-p.patch [bz#2169308] - Resolves: bz#2196880 ([virtiofs] Backport FUSE_SYNCFS support) - Resolves: bz#2169308 (Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9)
This commit is contained in:
parent
0b6715de3c
commit
df4dbb6cf8
87
kvm-s390-kvm-adjust-diag318-resets-to-retain-data.patch
Normal file
87
kvm-s390-kvm-adjust-diag318-resets-to-retain-data.patch
Normal file
@ -0,0 +1,87 @@
|
||||
From 584bdef0c5aa6bf78596a780654a848f59883cef Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 02/21] s390: kvm: adjust diag318 resets to retain data
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [1/20] 16f2ff166efdd26a3be98d7c97d3b184598d1ca4
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit c35aff184b2ed5be930da671ea25c857713555af
|
||||
Author: Collin L. Walling <walling@linux.ibm.com>
|
||||
Date: Wed Nov 17 10:23:03 2021 -0500
|
||||
|
||||
s390: kvm: adjust diag318 resets to retain data
|
||||
|
||||
The CPNC portion of the diag318 data is erroneously reset during an
|
||||
initial CPU reset caused by SIGP. Let's go ahead and relocate the
|
||||
diag318_info field within the CPUS390XState struct such that it is
|
||||
only zeroed during a clear reset. This way, the CPNC will be retained
|
||||
for each VCPU in the configuration after the diag318 instruction
|
||||
has been invoked.
|
||||
|
||||
The s390_machine_reset code already takes care of zeroing the diag318
|
||||
data on VM resets, which also cover resets caused by diag308.
|
||||
|
||||
Fixes: fabdada9357b ("s390: guest support for diagnose 0x318")
|
||||
Reported-by: Christian Borntraeger <borntraeger@de.ibm.com>
|
||||
Signed-off-by: Collin Walling <walling@linux.ibm.com>
|
||||
Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
|
||||
Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>
|
||||
Message-Id: <20211117152303.627969-1-walling@linux.ibm.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/cpu.h | 4 ++--
|
||||
target/s390x/kvm/kvm.c | 4 ++++
|
||||
2 files changed, 6 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
|
||||
index ca3845d023..a75e559134 100644
|
||||
--- a/target/s390x/cpu.h
|
||||
+++ b/target/s390x/cpu.h
|
||||
@@ -63,6 +63,8 @@ struct CPUS390XState {
|
||||
uint64_t etoken; /* etoken */
|
||||
uint64_t etoken_extension; /* etoken extension */
|
||||
|
||||
+ uint64_t diag318_info;
|
||||
+
|
||||
/* Fields up to this point are not cleared by initial CPU reset */
|
||||
struct {} start_initial_reset_fields;
|
||||
|
||||
@@ -118,8 +120,6 @@ struct CPUS390XState {
|
||||
uint16_t external_call_addr;
|
||||
DECLARE_BITMAP(emergency_signals, S390_MAX_CPUS);
|
||||
|
||||
- uint64_t diag318_info;
|
||||
-
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
uint64_t tlb_fill_tec; /* translation exception code during tlb_fill */
|
||||
int tlb_fill_exc; /* exception number seen during tlb_fill */
|
||||
diff --git a/target/s390x/kvm/kvm.c b/target/s390x/kvm/kvm.c
|
||||
index d36b44f32a..8d36c377b5 100644
|
||||
--- a/target/s390x/kvm/kvm.c
|
||||
+++ b/target/s390x/kvm/kvm.c
|
||||
@@ -1598,6 +1598,10 @@ void kvm_s390_set_diag318(CPUState *cs, uint64_t diag318_info)
|
||||
env->diag318_info = diag318_info;
|
||||
cs->kvm_run->s.regs.diag318 = diag318_info;
|
||||
cs->kvm_run->kvm_dirty_regs |= KVM_SYNC_DIAG318;
|
||||
+ /*
|
||||
+ * diag 318 info is zeroed during a clear reset and
|
||||
+ * diag 308 IPL subcodes.
|
||||
+ */
|
||||
}
|
||||
}
|
||||
|
||||
--
|
||||
2.37.3
|
||||
|
167
kvm-s390x-css-revert-SCSW-ctrl-flag-bits-on-error.patch
Normal file
167
kvm-s390x-css-revert-SCSW-ctrl-flag-bits-on-error.patch
Normal file
@ -0,0 +1,167 @@
|
||||
From e91e89a7c6df49d999178c454d8b65cca1ad3618 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 19/21] s390x/css: revert SCSW ctrl/flag bits on error
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [18/20] e4d5797ab93ba4afd9978a1d3e1f9d05da301506
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit f53b033e4cd2e7706df3cca04f3bf3c5ffc6b08c
|
||||
Author: Peter Jin <pjin@linux.ibm.com>
|
||||
Date: Thu Oct 27 23:23:41 2022 +0200
|
||||
|
||||
s390x/css: revert SCSW ctrl/flag bits on error
|
||||
|
||||
Revert the control and flag bits in the subchannel status word in case
|
||||
the SSCH operation fails with non-zero CC (ditto for CSCH and HSCH).
|
||||
According to POPS, the control and flag bits are only changed if SSCH,
|
||||
CSCH, and HSCH return CC 0, and no other action should be taken otherwise.
|
||||
In order to simulate that after the fact, the bits need to be reverted on
|
||||
non-zero CC.
|
||||
|
||||
While the do_subchannel_work logic for virtual (virtio) devices will
|
||||
return condition code 0, passthrough (vfio) devices may encounter
|
||||
errors from either the host kernel or real hardware that need to be
|
||||
accounted for after this point. This includes restoring the state of
|
||||
the Subchannel Status Word to reflect the subchannel, as these bits
|
||||
would not be set in the event of a non-zero condition code from the
|
||||
affected instructions.
|
||||
|
||||
Experimentation has shown that a failure on a START SUBCHANNEL (SSCH)
|
||||
to a passthrough device would leave the subchannel with the START
|
||||
PENDING activity control bit set, thus blocking subsequent SSCH
|
||||
operations in css_do_ssch() until some form of error recovery was
|
||||
undertaken since no interrupt would be expected.
|
||||
|
||||
Signed-off-by: Peter Jin <pjin@linux.ibm.com>
|
||||
Message-Id: <20221027212341.2904795-1-pjin@linux.ibm.com>
|
||||
Reviewed-by: Eric Farman <farman@linux.ibm.com>
|
||||
Reviewed-by: Matthew Rosato <mjrosato@linux.ibm.com>
|
||||
[thuth: Updated the commit description to Eric's suggestion]
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
hw/s390x/css.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++---
|
||||
1 file changed, 48 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/hw/s390x/css.c b/hw/s390x/css.c
|
||||
index 7d9523f811..95d1b3a3ce 100644
|
||||
--- a/hw/s390x/css.c
|
||||
+++ b/hw/s390x/css.c
|
||||
@@ -1522,21 +1522,37 @@ IOInstEnding css_do_xsch(SubchDev *sch)
|
||||
IOInstEnding css_do_csch(SubchDev *sch)
|
||||
{
|
||||
SCHIB *schib = &sch->curr_status;
|
||||
+ uint16_t old_scsw_ctrl;
|
||||
+ IOInstEnding ccode;
|
||||
|
||||
if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) {
|
||||
return IOINST_CC_NOT_OPERATIONAL;
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ * Save the current scsw.ctrl in case CSCH fails and we need
|
||||
+ * to revert the scsw to the status quo ante.
|
||||
+ */
|
||||
+ old_scsw_ctrl = schib->scsw.ctrl;
|
||||
+
|
||||
/* Trigger the clear function. */
|
||||
schib->scsw.ctrl &= ~(SCSW_CTRL_MASK_FCTL | SCSW_CTRL_MASK_ACTL);
|
||||
schib->scsw.ctrl |= SCSW_FCTL_CLEAR_FUNC | SCSW_ACTL_CLEAR_PEND;
|
||||
|
||||
- return do_subchannel_work(sch);
|
||||
+ ccode = do_subchannel_work(sch);
|
||||
+
|
||||
+ if (ccode != IOINST_CC_EXPECTED) {
|
||||
+ schib->scsw.ctrl = old_scsw_ctrl;
|
||||
+ }
|
||||
+
|
||||
+ return ccode;
|
||||
}
|
||||
|
||||
IOInstEnding css_do_hsch(SubchDev *sch)
|
||||
{
|
||||
SCHIB *schib = &sch->curr_status;
|
||||
+ uint16_t old_scsw_ctrl;
|
||||
+ IOInstEnding ccode;
|
||||
|
||||
if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) {
|
||||
return IOINST_CC_NOT_OPERATIONAL;
|
||||
@@ -1553,6 +1569,12 @@ IOInstEnding css_do_hsch(SubchDev *sch)
|
||||
return IOINST_CC_BUSY;
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ * Save the current scsw.ctrl in case HSCH fails and we need
|
||||
+ * to revert the scsw to the status quo ante.
|
||||
+ */
|
||||
+ old_scsw_ctrl = schib->scsw.ctrl;
|
||||
+
|
||||
/* Trigger the halt function. */
|
||||
schib->scsw.ctrl |= SCSW_FCTL_HALT_FUNC;
|
||||
schib->scsw.ctrl &= ~SCSW_FCTL_START_FUNC;
|
||||
@@ -1564,7 +1586,13 @@ IOInstEnding css_do_hsch(SubchDev *sch)
|
||||
}
|
||||
schib->scsw.ctrl |= SCSW_ACTL_HALT_PEND;
|
||||
|
||||
- return do_subchannel_work(sch);
|
||||
+ ccode = do_subchannel_work(sch);
|
||||
+
|
||||
+ if (ccode != IOINST_CC_EXPECTED) {
|
||||
+ schib->scsw.ctrl = old_scsw_ctrl;
|
||||
+ }
|
||||
+
|
||||
+ return ccode;
|
||||
}
|
||||
|
||||
static void css_update_chnmon(SubchDev *sch)
|
||||
@@ -1605,6 +1633,8 @@ static void css_update_chnmon(SubchDev *sch)
|
||||
IOInstEnding css_do_ssch(SubchDev *sch, ORB *orb)
|
||||
{
|
||||
SCHIB *schib = &sch->curr_status;
|
||||
+ uint16_t old_scsw_ctrl, old_scsw_flags;
|
||||
+ IOInstEnding ccode;
|
||||
|
||||
if (~(schib->pmcw.flags) & (PMCW_FLAGS_MASK_DNV | PMCW_FLAGS_MASK_ENA)) {
|
||||
return IOINST_CC_NOT_OPERATIONAL;
|
||||
@@ -1626,11 +1656,26 @@ IOInstEnding css_do_ssch(SubchDev *sch, ORB *orb)
|
||||
}
|
||||
sch->orb = *orb;
|
||||
sch->channel_prog = orb->cpa;
|
||||
+
|
||||
+ /*
|
||||
+ * Save the current scsw.ctrl and scsw.flags in case SSCH fails and we need
|
||||
+ * to revert the scsw to the status quo ante.
|
||||
+ */
|
||||
+ old_scsw_ctrl = schib->scsw.ctrl;
|
||||
+ old_scsw_flags = schib->scsw.flags;
|
||||
+
|
||||
/* Trigger the start function. */
|
||||
schib->scsw.ctrl |= (SCSW_FCTL_START_FUNC | SCSW_ACTL_START_PEND);
|
||||
schib->scsw.flags &= ~SCSW_FLAGS_MASK_PNO;
|
||||
|
||||
- return do_subchannel_work(sch);
|
||||
+ ccode = do_subchannel_work(sch);
|
||||
+
|
||||
+ if (ccode != IOINST_CC_EXPECTED) {
|
||||
+ schib->scsw.ctrl = old_scsw_ctrl;
|
||||
+ schib->scsw.flags = old_scsw_flags;
|
||||
+ }
|
||||
+
|
||||
+ return ccode;
|
||||
}
|
||||
|
||||
static void copy_irb_to_guest(IRB *dest, const IRB *src, const PMCW *pmcw,
|
||||
--
|
||||
2.37.3
|
||||
|
@ -0,0 +1,72 @@
|
||||
From f6afa9a83b65e4ce3745473ba25cef37500e08f8 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 12/21] s390x: follow qdev tree to detect SCSI device on a CCW
|
||||
bus
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [11/20] 97303bc9c356e8828d185868736b395bc0b70214
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit 7d2eb76d0407fc391b78df16d17f1e616ec3e228
|
||||
Author: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Date: Mon Mar 28 09:40:00 2022 +0200
|
||||
|
||||
s390x: follow qdev tree to detect SCSI device on a CCW bus
|
||||
|
||||
Do not make assumptions on the parent type of the SCSIDevice, instead
|
||||
use object_dynamic_cast all the way up to the CcwDevice. This is cleaner
|
||||
because there is no guarantee that the bus is on a virtio-scsi device;
|
||||
that is only the case for the default configuration of QEMU's s390x
|
||||
target.
|
||||
|
||||
Reviewed-by: Thomas Huth <thuth@redhat.com>
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
hw/s390x/ipl.c | 20 ++++++++++++--------
|
||||
1 file changed, 12 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/hw/s390x/ipl.c b/hw/s390x/ipl.c
|
||||
index eb7fc4c4ae..9051d8652d 100644
|
||||
--- a/hw/s390x/ipl.c
|
||||
+++ b/hw/s390x/ipl.c
|
||||
@@ -376,14 +376,18 @@ static CcwDevice *s390_get_ccw_device(DeviceState *dev_st, int *devtype)
|
||||
object_dynamic_cast(OBJECT(dev_st),
|
||||
TYPE_SCSI_DEVICE);
|
||||
if (sd) {
|
||||
- SCSIBus *bus = scsi_bus_from_device(sd);
|
||||
- VirtIOSCSI *vdev = container_of(bus, VirtIOSCSI, bus);
|
||||
- VirtIOSCSICcw *scsi_ccw = container_of(vdev, VirtIOSCSICcw,
|
||||
- vdev);
|
||||
-
|
||||
- ccw_dev = (CcwDevice *)object_dynamic_cast(OBJECT(scsi_ccw),
|
||||
- TYPE_CCW_DEVICE);
|
||||
- tmp_dt = CCW_DEVTYPE_SCSI;
|
||||
+ SCSIBus *sbus = scsi_bus_from_device(sd);
|
||||
+ VirtIODevice *vdev = (VirtIODevice *)
|
||||
+ object_dynamic_cast(OBJECT(sbus->qbus.parent),
|
||||
+ TYPE_VIRTIO_DEVICE);
|
||||
+ if (vdev) {
|
||||
+ ccw_dev = (CcwDevice *)
|
||||
+ object_dynamic_cast(OBJECT(qdev_get_parent_bus(DEVICE(vdev))->parent),
|
||||
+ TYPE_CCW_DEVICE);
|
||||
+ if (ccw_dev) {
|
||||
+ tmp_dt = CCW_DEVTYPE_SCSI;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
--
|
||||
2.37.3
|
||||
|
76
kvm-s390x-sigp-Reorder-the-SIGP-STOP-code.patch
Normal file
76
kvm-s390x-sigp-Reorder-the-SIGP-STOP-code.patch
Normal file
@ -0,0 +1,76 @@
|
||||
From 15e0c081d07f15641acc5610553a9c1a2bfd8745 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 07/21] s390x: sigp: Reorder the SIGP STOP code
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [6/20] 0c957b3f4a2d6abb278375a7080055502fa8e34d
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit 59b9b5186e44a90088a91ed7a7493b03027e4f1f
|
||||
Author: Eric Farman <farman@linux.ibm.com>
|
||||
Date: Mon Dec 13 22:09:19 2021 +0100
|
||||
|
||||
s390x: sigp: Reorder the SIGP STOP code
|
||||
|
||||
Let's wait to mark the VCPU STOPPED until the possible
|
||||
STORE STATUS operation is completed, so that we know the
|
||||
CPU is fully stopped and done doing anything. (When we
|
||||
also clear the possible sigp_order field for STOP orders.)
|
||||
|
||||
Suggested-by: David Hildenbrand <david@redhat.com>
|
||||
Signed-off-by: Eric Farman <farman@linux.ibm.com>
|
||||
Message-Id: <20211213210919.856693-2-farman@linux.ibm.com>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/sigp.c | 12 ++++++++----
|
||||
1 file changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/target/s390x/sigp.c b/target/s390x/sigp.c
|
||||
index 51c727834c..9dd977349a 100644
|
||||
--- a/target/s390x/sigp.c
|
||||
+++ b/target/s390x/sigp.c
|
||||
@@ -139,7 +139,7 @@ static void sigp_stop_and_store_status(CPUState *cs, run_on_cpu_data arg)
|
||||
case S390_CPU_STATE_OPERATING:
|
||||
cpu->env.sigp_order = SIGP_STOP_STORE_STATUS;
|
||||
cpu_inject_stop(cpu);
|
||||
- /* store will be performed in do_stop_interrup() */
|
||||
+ /* store will be performed in do_stop_interrupt() */
|
||||
break;
|
||||
case S390_CPU_STATE_STOPPED:
|
||||
/* already stopped, just store the status */
|
||||
@@ -479,13 +479,17 @@ void do_stop_interrupt(CPUS390XState *env)
|
||||
{
|
||||
S390CPU *cpu = env_archcpu(env);
|
||||
|
||||
- if (s390_cpu_set_state(S390_CPU_STATE_STOPPED, cpu) == 0) {
|
||||
- qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN);
|
||||
- }
|
||||
+ /*
|
||||
+ * Complete the STOP operation before exposing the CPU as
|
||||
+ * STOPPED to the system.
|
||||
+ */
|
||||
if (cpu->env.sigp_order == SIGP_STOP_STORE_STATUS) {
|
||||
s390_store_status(cpu, S390_STORE_STATUS_DEF_ADDR, true);
|
||||
}
|
||||
env->sigp_order = 0;
|
||||
+ if (s390_cpu_set_state(S390_CPU_STATE_STOPPED, cpu) == 0) {
|
||||
+ qemu_system_shutdown_request(SHUTDOWN_CAUSE_GUEST_SHUTDOWN);
|
||||
+ }
|
||||
env->pending_int &= ~INTERRUPT_STOP;
|
||||
}
|
||||
|
||||
--
|
||||
2.37.3
|
||||
|
54
kvm-s390x-tcg-Fix-BRASL-with-a-large-negative-offset.patch
Normal file
54
kvm-s390x-tcg-Fix-BRASL-with-a-large-negative-offset.patch
Normal file
@ -0,0 +1,54 @@
|
||||
From f8e6ee7bc393ab47d608bd384011ba534d66776e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 08/21] s390x/tcg: Fix BRASL with a large negative offset
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [7/20] f2eb97bf300afcb440cd5dc6d398ce7ad34f1db9
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit fc3dd86a290a9c7c3c3273961b03058ae8f1d49f
|
||||
Author: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Date: Mon Mar 14 11:42:30 2022 +0100
|
||||
|
||||
s390x/tcg: Fix BRASL with a large negative offset
|
||||
|
||||
When RI2 is 0x80000000, qemu enters an infinite loop instead of jumping
|
||||
backwards. Fix by adding a missing cast, like in in2_ri2().
|
||||
|
||||
Fixes: 8ac33cdb8bfb ("Convert BRANCH AND SAVE")
|
||||
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Message-Id: <20220314104232.675863-2-iii@linux.ibm.com>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@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 b14e6a04a7..8147d952df 100644
|
||||
--- a/target/s390x/tcg/translate.c
|
||||
+++ b/target/s390x/tcg/translate.c
|
||||
@@ -1567,7 +1567,7 @@ static DisasJumpType op_bal(DisasContext *s, DisasOps *o)
|
||||
static DisasJumpType op_basi(DisasContext *s, DisasOps *o)
|
||||
{
|
||||
pc_to_link_info(o->out, s, s->pc_tmp);
|
||||
- return help_goto_direct(s, s->base.pc_next + 2 * get_field(s, i2));
|
||||
+ return help_goto_direct(s, s->base.pc_next + (int64_t)get_field(s, i2) * 2);
|
||||
}
|
||||
|
||||
static DisasJumpType op_bc(DisasContext *s, DisasOps *o)
|
||||
--
|
||||
2.37.3
|
||||
|
54
kvm-s390x-tcg-Fix-BRCL-with-a-large-negative-offset.patch
Normal file
54
kvm-s390x-tcg-Fix-BRCL-with-a-large-negative-offset.patch
Normal file
@ -0,0 +1,54 @@
|
||||
From df0bb58a0bef833451744b9912b3392904e0190e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 09/21] s390x/tcg: Fix BRCL with a large negative offset
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [8/20] 60abe03ceba239268b72ff79e2945b73822fb72f
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit 16ed5f14215b20c8dc49b96e2149032ba3238beb
|
||||
Author: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Date: Mon Mar 14 11:42:31 2022 +0100
|
||||
|
||||
s390x/tcg: Fix BRCL with a large negative offset
|
||||
|
||||
When RI2 is 0x80000000, qemu enters an infinite loop instead of jumping
|
||||
backwards. Fix by adding a missing cast, like in in2_ri2().
|
||||
|
||||
Fixes: 7233f2ed1717 ("target-s390: Convert BRANCH ON CONDITION")
|
||||
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Message-Id: <20220314104232.675863-3-iii@linux.ibm.com>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@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 8147d952df..7ff7f90e23 100644
|
||||
--- a/target/s390x/tcg/translate.c
|
||||
+++ b/target/s390x/tcg/translate.c
|
||||
@@ -1201,7 +1201,7 @@ static DisasJumpType help_branch(DisasContext *s, DisasCompare *c,
|
||||
bool is_imm, int imm, TCGv_i64 cdest)
|
||||
{
|
||||
DisasJumpType ret;
|
||||
- uint64_t dest = s->base.pc_next + 2 * imm;
|
||||
+ uint64_t dest = s->base.pc_next + (int64_t)imm * 2;
|
||||
TCGLabel *lab;
|
||||
|
||||
/* Take care of the special cases first. */
|
||||
--
|
||||
2.37.3
|
||||
|
56
kvm-s390x-tcg-Fix-opcode-for-lzrf.patch
Normal file
56
kvm-s390x-tcg-Fix-opcode-for-lzrf.patch
Normal file
@ -0,0 +1,56 @@
|
||||
From 9e30b40f1a738765c1e6c7d28db4c95cf7f5cbb5 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 17/21] s390x/tcg: Fix opcode for lzrf
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [16/20] 43af79d2c9cd818bfa7ac1819bd9964c86915d97
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit 131aafa7eff4aa4d747cb7113726b27394a38866
|
||||
Author: Christian Borntraeger <borntraeger@linux.ibm.com>
|
||||
Date: Wed Sep 14 12:57:50 2022 +0200
|
||||
|
||||
s390x/tcg: Fix opcode for lzrf
|
||||
|
||||
Fix the opcode for Load and Zero Rightmost Byte (32).
|
||||
|
||||
Fixes: c2a5c1d718ea ("target/s390x: Implement load-and-zero-rightmost-byte insns")
|
||||
Reported-by: Nathan Chancellor <nathan@kernel.org>
|
||||
Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com>
|
||||
Tested-by: Nathan Chancellor <nathan@kernel.org>
|
||||
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Cc: qemu-stable@nongnu.org
|
||||
Message-Id: <20220914105750.767697-1-borntraeger@linux.ibm.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/tcg/insn-data.def | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/target/s390x/tcg/insn-data.def b/target/s390x/tcg/insn-data.def
|
||||
index 96d4794162..d54673a3ba 100644
|
||||
--- a/target/s390x/tcg/insn-data.def
|
||||
+++ b/target/s390x/tcg/insn-data.def
|
||||
@@ -463,7 +463,7 @@
|
||||
C(0xe39f, LAT, RXY_a, LAT, 0, m2_32u, r1, 0, lat, 0)
|
||||
C(0xe385, LGAT, RXY_a, LAT, 0, a2, r1, 0, lgat, 0)
|
||||
/* LOAD AND ZERO RIGHTMOST BYTE */
|
||||
- C(0xe3eb, LZRF, RXY_a, LZRB, 0, m2_32u, new, r1_32, lzrb, 0)
|
||||
+ C(0xe33b, LZRF, RXY_a, LZRB, 0, m2_32u, new, r1_32, lzrb, 0)
|
||||
C(0xe32a, LZRG, RXY_a, LZRB, 0, m2_64, r1, 0, lzrb, 0)
|
||||
/* LOAD LOGICAL AND ZERO RIGHTMOST BYTE */
|
||||
C(0xe33a, LLZRGF, RXY_a, LZRB, 0, m2_32u, r1, 0, lzrb, 0)
|
||||
--
|
||||
2.37.3
|
||||
|
56
kvm-target-s390x-Fix-CLFIT-and-CLGIT-immediate-size.patch
Normal file
56
kvm-target-s390x-Fix-CLFIT-and-CLGIT-immediate-size.patch
Normal file
@ -0,0 +1,56 @@
|
||||
From e683c93efba105ae97a1eb62d1fa9d3f91d40efd Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 16/21] target/s390x: Fix CLFIT and CLGIT immediate size
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [15/20] 68c0b87490dfe5349797acd7494fd293c3f733ca
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit d324c21ba0b84b3033baa097e44a7fbbec815fad
|
||||
Author: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Date: Wed Aug 17 18:15:29 2022 +0200
|
||||
|
||||
target/s390x: Fix CLFIT and CLGIT immediate size
|
||||
|
||||
I2 is 16 bits, not 32.
|
||||
|
||||
Found by running valgrind's none/tests/s390x/traps.
|
||||
|
||||
Fixes: 1c2687518235 ("target-s390: Implement COMPARE AND TRAP")
|
||||
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Message-Id: <20220817161529.597414-1-iii@linux.ibm.com>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/tcg/insn-data.def | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/target/s390x/tcg/insn-data.def b/target/s390x/tcg/insn-data.def
|
||||
index 99f4f5e36e..96d4794162 100644
|
||||
--- a/target/s390x/tcg/insn-data.def
|
||||
+++ b/target/s390x/tcg/insn-data.def
|
||||
@@ -287,8 +287,8 @@
|
||||
D(0xb961, CLGRT, RRF_c, GIE, r1_o, r2_o, 0, 0, ct, 0, 1)
|
||||
D(0xeb23, CLT, RSY_b, MIE, r1_32u, m2_32u, 0, 0, ct, 0, 1)
|
||||
D(0xeb2b, CLGT, RSY_b, MIE, r1_o, m2_64, 0, 0, ct, 0, 1)
|
||||
- D(0xec73, CLFIT, RIE_a, GIE, r1_32u, i2_32u, 0, 0, ct, 0, 1)
|
||||
- D(0xec71, CLGIT, RIE_a, GIE, r1_o, i2_32u, 0, 0, ct, 0, 1)
|
||||
+ D(0xec73, CLFIT, RIE_a, GIE, r1_32u, i2_16u, 0, 0, ct, 0, 1)
|
||||
+ D(0xec71, CLGIT, RIE_a, GIE, r1_o, i2_16u, 0, 0, ct, 0, 1)
|
||||
|
||||
/* CONVERT TO DECIMAL */
|
||||
C(0x4e00, CVD, RX_a, Z, r1_o, a2, 0, 0, cvd, 0)
|
||||
--
|
||||
2.37.3
|
||||
|
54
kvm-target-s390x-Fix-SLDA-sign-bit-index.patch
Normal file
54
kvm-target-s390x-Fix-SLDA-sign-bit-index.patch
Normal file
@ -0,0 +1,54 @@
|
||||
From a66aab861a925da517c2ec9f798b5a5b84a539da Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 03/21] target/s390x: Fix SLDA sign bit index
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [2/20] 8600ece5b20bbe9dfa91e322cf29c5f79000d39c
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit 521130f267240cb1ed8fd4635496493a153281db
|
||||
Author: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Date: Wed Jan 12 17:50:12 2022 +0100
|
||||
|
||||
target/s390x: Fix SLDA sign bit index
|
||||
|
||||
SLDA operates on 64-bit values, so its sign bit index should be 63,
|
||||
not 31.
|
||||
|
||||
Fixes: a79ba3398a0a ("target-s390: Convert SHIFT DOUBLE")
|
||||
Reported-by: David Hildenbrand <david@redhat.com>
|
||||
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Message-Id: <20220112165016.226996-2-iii@linux.ibm.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/tcg/insn-data.def | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/target/s390x/tcg/insn-data.def b/target/s390x/tcg/insn-data.def
|
||||
index 3e5594210c..c92284df5d 100644
|
||||
--- a/target/s390x/tcg/insn-data.def
|
||||
+++ b/target/s390x/tcg/insn-data.def
|
||||
@@ -800,7 +800,7 @@
|
||||
C(0xebde, SRLK, RSY_a, DO, r3_32u, sh32, new, r1_32, srl, 0)
|
||||
C(0xeb0c, SRLG, RSY_a, Z, r3_o, sh64, r1, 0, srl, 0)
|
||||
/* SHIFT LEFT DOUBLE */
|
||||
- D(0x8f00, SLDA, RS_a, Z, r1_D32, sh64, new, r1_D32, sla, 0, 31)
|
||||
+ D(0x8f00, SLDA, RS_a, Z, r1_D32, sh64, new, r1_D32, sla, 0, 63)
|
||||
/* SHIFT LEFT DOUBLE LOGICAL */
|
||||
C(0x8d00, SLDL, RS_a, Z, r1_D32, sh64, new, r1_D32, sll, 0)
|
||||
/* SHIFT RIGHT DOUBLE */
|
||||
--
|
||||
2.37.3
|
||||
|
61
kvm-target-s390x-Fix-SRDA-CC-calculation.patch
Normal file
61
kvm-target-s390x-Fix-SRDA-CC-calculation.patch
Normal file
@ -0,0 +1,61 @@
|
||||
From e3bf3f208a50c76d9fb624ffe0c36fdf63c4446f Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 04/21] target/s390x: Fix SRDA CC calculation
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [3/20] 95b2ba26003baa51f85f07e8860f875349c72b86
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit 57556b28afde4b039bb12bfc274bd8df9022d946
|
||||
Author: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Date: Wed Jan 12 17:50:13 2022 +0100
|
||||
|
||||
target/s390x: Fix SRDA CC calculation
|
||||
|
||||
SRDA uses r1_D32 for binding the first operand and s64 for setting CC.
|
||||
cout_s64() relies on o->out being the shift result, however,
|
||||
wout_r1_D32() clobbers it.
|
||||
|
||||
Fix by using a temporary.
|
||||
|
||||
Fixes: a79ba3398a0a ("target-s390: Convert SHIFT DOUBLE")
|
||||
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Message-Id: <20220112165016.226996-3-iii@linux.ibm.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/tcg/translate.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
|
||||
index dcc249a197..c5e59b68af 100644
|
||||
--- a/target/s390x/tcg/translate.c
|
||||
+++ b/target/s390x/tcg/translate.c
|
||||
@@ -5420,9 +5420,11 @@ static void wout_r1_P32(DisasContext *s, DisasOps *o)
|
||||
static void wout_r1_D32(DisasContext *s, DisasOps *o)
|
||||
{
|
||||
int r1 = get_field(s, r1);
|
||||
+ TCGv_i64 t = tcg_temp_new_i64();
|
||||
store_reg32_i64(r1 + 1, o->out);
|
||||
- tcg_gen_shri_i64(o->out, o->out, 32);
|
||||
- store_reg32_i64(r1, o->out);
|
||||
+ tcg_gen_shri_i64(t, o->out, 32);
|
||||
+ store_reg32_i64(r1, t);
|
||||
+ tcg_temp_free_i64(t);
|
||||
}
|
||||
#define SPEC_wout_r1_D32 SPEC_r1_even
|
||||
|
||||
--
|
||||
2.37.3
|
||||
|
56
kvm-target-s390x-Fix-cc_calc_sla_64-missing-overflows.patch
Normal file
56
kvm-target-s390x-Fix-cc_calc_sla_64-missing-overflows.patch
Normal file
@ -0,0 +1,56 @@
|
||||
From df3c38e1ff4fb4cfb09fefb859216e9d51d97483 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 05/21] target/s390x: Fix cc_calc_sla_64() missing overflows
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [4/20] 2f91de2ac980d6ffa4da0ec41bb30562624a2396
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit df103c09bc2f549d36ba6313a69c18fc003ef1ee
|
||||
Author: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Date: Wed Jan 12 17:50:14 2022 +0100
|
||||
|
||||
target/s390x: Fix cc_calc_sla_64() missing overflows
|
||||
|
||||
An overflow occurs for SLAG when at least one shifted bit is not equal
|
||||
to sign bit. Therefore, we need to check that `shift + 1` bits are
|
||||
neither all 0s nor all 1s. The current code checks only `shift` bits,
|
||||
missing some overflows.
|
||||
|
||||
Fixes: cbe24bfa91d2 ("target-s390: Convert SHIFT, ROTATE SINGLE")
|
||||
Co-developed-by: David Hildenbrand <david@redhat.com>
|
||||
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Message-Id: <20220112165016.226996-4-iii@linux.ibm.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/tcg/cc_helper.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/target/s390x/tcg/cc_helper.c b/target/s390x/tcg/cc_helper.c
|
||||
index c2c96c3a3c..c9b7b0e8c6 100644
|
||||
--- a/target/s390x/tcg/cc_helper.c
|
||||
+++ b/target/s390x/tcg/cc_helper.c
|
||||
@@ -297,7 +297,7 @@ static uint32_t cc_calc_sla_32(uint32_t src, int shift)
|
||||
|
||||
static uint32_t cc_calc_sla_64(uint64_t src, int shift)
|
||||
{
|
||||
- uint64_t mask = ((1ULL << shift) - 1ULL) << (64 - shift);
|
||||
+ uint64_t mask = -1ULL << (63 - shift);
|
||||
uint64_t sign = 1ULL << 63;
|
||||
uint64_t match;
|
||||
int64_t r;
|
||||
--
|
||||
2.37.3
|
||||
|
@ -0,0 +1,97 @@
|
||||
From 713f7455ca5e45a6245259dd35564310fc2aa521 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 10/21] target/s390x: Fix determination of overflow condition
|
||||
code after addition
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [9/20] e8b946ff4e521e0367cb03fcd918a2f8af8bd4d5
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit 5a2e67a691501bc4dd81c46c81b8f1881c8bd5df
|
||||
Author: Bruno Haible <bruno@clisp.org>
|
||||
Date: Wed Mar 23 17:26:20 2022 +0100
|
||||
|
||||
target/s390x: Fix determination of overflow condition code after addition
|
||||
|
||||
This program currently prints different results when run with TCG instead
|
||||
of running on real s390x hardware:
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int overflow_32 (int x, int y)
|
||||
{
|
||||
int sum;
|
||||
return ! __builtin_add_overflow (x, y, &sum);
|
||||
}
|
||||
|
||||
int overflow_64 (long long x, long long y)
|
||||
{
|
||||
long sum;
|
||||
return ! __builtin_add_overflow (x, y, &sum);
|
||||
}
|
||||
|
||||
int a1 = -2147483648;
|
||||
int b1 = -2147483648;
|
||||
long long a2 = -9223372036854775808L;
|
||||
long long b2 = -9223372036854775808L;
|
||||
|
||||
int main ()
|
||||
{
|
||||
{
|
||||
int a = a1;
|
||||
int b = b1;
|
||||
printf ("a = 0x%x, b = 0x%x\n", a, b);
|
||||
printf ("no_overflow = %d\n", overflow_32 (a, b));
|
||||
}
|
||||
{
|
||||
long long a = a2;
|
||||
long long b = b2;
|
||||
printf ("a = 0x%llx, b = 0x%llx\n", a, b);
|
||||
printf ("no_overflow = %d\n", overflow_64 (a, b));
|
||||
}
|
||||
}
|
||||
|
||||
Signed-off-by: Bruno Haible <bruno@clisp.org>
|
||||
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/616
|
||||
Message-Id: <20220323162621.139313-2-thuth@redhat.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/tcg/cc_helper.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/target/s390x/tcg/cc_helper.c b/target/s390x/tcg/cc_helper.c
|
||||
index 8d04097f78..e11cdb745d 100644
|
||||
--- a/target/s390x/tcg/cc_helper.c
|
||||
+++ b/target/s390x/tcg/cc_helper.c
|
||||
@@ -136,7 +136,7 @@ static uint32_t cc_calc_subu(uint64_t borrow_out, uint64_t result)
|
||||
|
||||
static uint32_t cc_calc_add_64(int64_t a1, int64_t a2, int64_t ar)
|
||||
{
|
||||
- if ((a1 > 0 && a2 > 0 && ar < 0) || (a1 < 0 && a2 < 0 && ar > 0)) {
|
||||
+ if ((a1 > 0 && a2 > 0 && ar < 0) || (a1 < 0 && a2 < 0 && ar >= 0)) {
|
||||
return 3; /* overflow */
|
||||
} else {
|
||||
if (ar < 0) {
|
||||
@@ -196,7 +196,7 @@ static uint32_t cc_calc_comp_64(int64_t dst)
|
||||
|
||||
static uint32_t cc_calc_add_32(int32_t a1, int32_t a2, int32_t ar)
|
||||
{
|
||||
- if ((a1 > 0 && a2 > 0 && ar < 0) || (a1 < 0 && a2 < 0 && ar > 0)) {
|
||||
+ if ((a1 > 0 && a2 > 0 && ar < 0) || (a1 < 0 && a2 < 0 && ar >= 0)) {
|
||||
return 3; /* overflow */
|
||||
} else {
|
||||
if (ar < 0) {
|
||||
--
|
||||
2.37.3
|
||||
|
100
kvm-target-s390x-Fix-determination-of-overflow-conditioo.patch
Normal file
100
kvm-target-s390x-Fix-determination-of-overflow-conditioo.patch
Normal file
@ -0,0 +1,100 @@
|
||||
From 101a8ec53cd1cea06984f1d7913940069930f54b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 11/21] target/s390x: Fix determination of overflow condition
|
||||
code after subtraction
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [10/20] 14792faddfca784503f89c292ebaba5be8d3fc96
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit fc6e0d0f2db5126592bb4066d484fcdfc14ccf36
|
||||
Author: Bruno Haible <bruno@clisp.org>
|
||||
Date: Wed Mar 23 17:26:21 2022 +0100
|
||||
|
||||
target/s390x: Fix determination of overflow condition code after subtraction
|
||||
|
||||
Reported by Paul Eggert in
|
||||
https://lists.gnu.org/archive/html/bug-gnulib/2021-09/msg00050.html
|
||||
|
||||
This program currently prints different results when run with TCG instead
|
||||
of running on real s390x hardware:
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int overflow_32 (int x, int y)
|
||||
{
|
||||
int sum;
|
||||
return __builtin_sub_overflow (x, y, &sum);
|
||||
}
|
||||
|
||||
int overflow_64 (long long x, long long y)
|
||||
{
|
||||
long sum;
|
||||
return __builtin_sub_overflow (x, y, &sum);
|
||||
}
|
||||
|
||||
int a1 = 0;
|
||||
int b1 = -2147483648;
|
||||
long long a2 = 0L;
|
||||
long long b2 = -9223372036854775808L;
|
||||
|
||||
int main ()
|
||||
{
|
||||
{
|
||||
int a = a1;
|
||||
int b = b1;
|
||||
printf ("a = 0x%x, b = 0x%x\n", a, b);
|
||||
printf ("no_overflow = %d\n", ! overflow_32 (a, b));
|
||||
}
|
||||
{
|
||||
long long a = a2;
|
||||
long long b = b2;
|
||||
printf ("a = 0x%llx, b = 0x%llx\n", a, b);
|
||||
printf ("no_overflow = %d\n", ! overflow_64 (a, b));
|
||||
}
|
||||
}
|
||||
|
||||
Signed-off-by: Bruno Haible <bruno@clisp.org>
|
||||
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/618
|
||||
Message-Id: <20220323162621.139313-3-thuth@redhat.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/tcg/cc_helper.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/target/s390x/tcg/cc_helper.c b/target/s390x/tcg/cc_helper.c
|
||||
index e11cdb745d..b2e8d3d9f5 100644
|
||||
--- a/target/s390x/tcg/cc_helper.c
|
||||
+++ b/target/s390x/tcg/cc_helper.c
|
||||
@@ -151,7 +151,7 @@ static uint32_t cc_calc_add_64(int64_t a1, int64_t a2, int64_t ar)
|
||||
|
||||
static uint32_t cc_calc_sub_64(int64_t a1, int64_t a2, int64_t ar)
|
||||
{
|
||||
- if ((a1 > 0 && a2 < 0 && ar < 0) || (a1 < 0 && a2 > 0 && ar > 0)) {
|
||||
+ if ((a1 >= 0 && a2 < 0 && ar < 0) || (a1 < 0 && a2 > 0 && ar > 0)) {
|
||||
return 3; /* overflow */
|
||||
} else {
|
||||
if (ar < 0) {
|
||||
@@ -211,7 +211,7 @@ static uint32_t cc_calc_add_32(int32_t a1, int32_t a2, int32_t ar)
|
||||
|
||||
static uint32_t cc_calc_sub_32(int32_t a1, int32_t a2, int32_t ar)
|
||||
{
|
||||
- if ((a1 > 0 && a2 < 0 && ar < 0) || (a1 < 0 && a2 > 0 && ar > 0)) {
|
||||
+ if ((a1 >= 0 && a2 < 0 && ar < 0) || (a1 < 0 && a2 > 0 && ar > 0)) {
|
||||
return 3; /* overflow */
|
||||
} else {
|
||||
if (ar < 0) {
|
||||
--
|
||||
2.37.3
|
||||
|
@ -0,0 +1,54 @@
|
||||
From f1cff8f7a04bd6faec80585af39a9ea3c4e6a34e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 18/21] target/s390x: Fix emulation of the VISTR instruction
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [17/20] ca521ee65c0bd2b191d6fdddbfe38daf39bd7b07
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit f7d81a351d6122440f9190adba69da3f81b7b186
|
||||
Author: Thomas Huth <thuth@redhat.com>
|
||||
Date: Wed Oct 12 20:27:54 2022 +0200
|
||||
|
||||
target/s390x: Fix emulation of the VISTR instruction
|
||||
|
||||
The element size is encoded in the M3 field, not in the M4
|
||||
field.
|
||||
|
||||
Fixes: be6324c6b734 ("s390x/tcg: Implement VECTOR ISOLATE STRING")
|
||||
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1248
|
||||
Message-Id: <20221012182755.1014853-3-thuth@redhat.com>
|
||||
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/tcg/translate_vx.c.inc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/target/s390x/tcg/translate_vx.c.inc b/target/s390x/tcg/translate_vx.c.inc
|
||||
index 28bf5a23b6..6a125694ed 100644
|
||||
--- a/target/s390x/tcg/translate_vx.c.inc
|
||||
+++ b/target/s390x/tcg/translate_vx.c.inc
|
||||
@@ -2413,7 +2413,7 @@ static DisasJumpType op_vfene(DisasContext *s, DisasOps *o)
|
||||
|
||||
static DisasJumpType op_vistr(DisasContext *s, DisasOps *o)
|
||||
{
|
||||
- const uint8_t es = get_field(s, m4);
|
||||
+ const uint8_t es = get_field(s, m3);
|
||||
const uint8_t m5 = get_field(s, m5);
|
||||
static gen_helper_gvec_2 * const g[3] = {
|
||||
gen_helper_gvec_vistr8,
|
||||
--
|
||||
2.37.3
|
||||
|
277
kvm-target-s390x-Fix-shifting-32-bit-values-for-more-tha.patch
Normal file
277
kvm-target-s390x-Fix-shifting-32-bit-values-for-more-tha.patch
Normal file
@ -0,0 +1,277 @@
|
||||
From 9d8fc151dfeef942fff798a871be27c66bae5275 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 06/21] target/s390x: Fix shifting 32-bit values for more than
|
||||
31 bits
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [5/20] fba372359f0771ec41f3ad7ee4f1376e545da088
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit 6da170beda33f3e7f1d9242814acd9f428f0f0fb
|
||||
Author: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Date: Wed Jan 12 17:50:15 2022 +0100
|
||||
|
||||
target/s390x: Fix shifting 32-bit values for more than 31 bits
|
||||
|
||||
According to PoP, both 32- and 64-bit shifts use lowest 6 address
|
||||
bits. The current code special-cases 32-bit shifts to use only 5 bits,
|
||||
which is not correct. For example, shifting by 32 bits currently
|
||||
preserves the initial value, however, it's supposed zero it out
|
||||
instead.
|
||||
|
||||
Fix by merging sh32 and sh64 and adapting CC calculation to shift
|
||||
values greater than 31.
|
||||
|
||||
Fixes: cbe24bfa91d2 ("target-s390: Convert SHIFT, ROTATE SINGLE")
|
||||
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Message-Id: <20220112165016.226996-5-iii@linux.ibm.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/cpu-dump.c | 3 +--
|
||||
target/s390x/s390x-internal.h | 3 +--
|
||||
target/s390x/tcg/cc_helper.c | 36 +++-----------------------
|
||||
target/s390x/tcg/insn-data.def | 36 +++++++++++++-------------
|
||||
target/s390x/tcg/translate.c | 47 ++++++++++++++++------------------
|
||||
5 files changed, 45 insertions(+), 80 deletions(-)
|
||||
|
||||
diff --git a/target/s390x/cpu-dump.c b/target/s390x/cpu-dump.c
|
||||
index 0f5c062994..ffa9e94d84 100644
|
||||
--- a/target/s390x/cpu-dump.c
|
||||
+++ b/target/s390x/cpu-dump.c
|
||||
@@ -121,8 +121,7 @@ const char *cc_name(enum cc_op cc_op)
|
||||
[CC_OP_NZ_F64] = "CC_OP_NZ_F64",
|
||||
[CC_OP_NZ_F128] = "CC_OP_NZ_F128",
|
||||
[CC_OP_ICM] = "CC_OP_ICM",
|
||||
- [CC_OP_SLA_32] = "CC_OP_SLA_32",
|
||||
- [CC_OP_SLA_64] = "CC_OP_SLA_64",
|
||||
+ [CC_OP_SLA] = "CC_OP_SLA",
|
||||
[CC_OP_FLOGR] = "CC_OP_FLOGR",
|
||||
[CC_OP_LCBB] = "CC_OP_LCBB",
|
||||
[CC_OP_VC] = "CC_OP_VC",
|
||||
diff --git a/target/s390x/s390x-internal.h b/target/s390x/s390x-internal.h
|
||||
index 02cf6c3f43..c9acb450ba 100644
|
||||
--- a/target/s390x/s390x-internal.h
|
||||
+++ b/target/s390x/s390x-internal.h
|
||||
@@ -193,8 +193,7 @@ enum cc_op {
|
||||
CC_OP_NZ_F128, /* FP dst != 0 (128bit) */
|
||||
|
||||
CC_OP_ICM, /* insert characters under mask */
|
||||
- CC_OP_SLA_32, /* Calculate shift left signed (32bit) */
|
||||
- CC_OP_SLA_64, /* Calculate shift left signed (64bit) */
|
||||
+ CC_OP_SLA, /* Calculate shift left signed */
|
||||
CC_OP_FLOGR, /* find leftmost one */
|
||||
CC_OP_LCBB, /* load count to block boundary */
|
||||
CC_OP_VC, /* vector compare result */
|
||||
diff --git a/target/s390x/tcg/cc_helper.c b/target/s390x/tcg/cc_helper.c
|
||||
index c9b7b0e8c6..8d04097f78 100644
|
||||
--- a/target/s390x/tcg/cc_helper.c
|
||||
+++ b/target/s390x/tcg/cc_helper.c
|
||||
@@ -268,34 +268,7 @@ static uint32_t cc_calc_icm(uint64_t mask, uint64_t val)
|
||||
}
|
||||
}
|
||||
|
||||
-static uint32_t cc_calc_sla_32(uint32_t src, int shift)
|
||||
-{
|
||||
- uint32_t mask = ((1U << shift) - 1U) << (32 - shift);
|
||||
- uint32_t sign = 1U << 31;
|
||||
- uint32_t match;
|
||||
- int32_t r;
|
||||
-
|
||||
- /* Check if the sign bit stays the same. */
|
||||
- if (src & sign) {
|
||||
- match = mask;
|
||||
- } else {
|
||||
- match = 0;
|
||||
- }
|
||||
- if ((src & mask) != match) {
|
||||
- /* Overflow. */
|
||||
- return 3;
|
||||
- }
|
||||
-
|
||||
- r = ((src << shift) & ~sign) | (src & sign);
|
||||
- if (r == 0) {
|
||||
- return 0;
|
||||
- } else if (r < 0) {
|
||||
- return 1;
|
||||
- }
|
||||
- return 2;
|
||||
-}
|
||||
-
|
||||
-static uint32_t cc_calc_sla_64(uint64_t src, int shift)
|
||||
+static uint32_t cc_calc_sla(uint64_t src, int shift)
|
||||
{
|
||||
uint64_t mask = -1ULL << (63 - shift);
|
||||
uint64_t sign = 1ULL << 63;
|
||||
@@ -459,11 +432,8 @@ static uint32_t do_calc_cc(CPUS390XState *env, uint32_t cc_op,
|
||||
case CC_OP_ICM:
|
||||
r = cc_calc_icm(src, dst);
|
||||
break;
|
||||
- case CC_OP_SLA_32:
|
||||
- r = cc_calc_sla_32(src, dst);
|
||||
- break;
|
||||
- case CC_OP_SLA_64:
|
||||
- r = cc_calc_sla_64(src, dst);
|
||||
+ case CC_OP_SLA:
|
||||
+ r = cc_calc_sla(src, dst);
|
||||
break;
|
||||
case CC_OP_FLOGR:
|
||||
r = cc_calc_flogr(dst);
|
||||
diff --git a/target/s390x/tcg/insn-data.def b/target/s390x/tcg/insn-data.def
|
||||
index c92284df5d..99f4f5e36e 100644
|
||||
--- a/target/s390x/tcg/insn-data.def
|
||||
+++ b/target/s390x/tcg/insn-data.def
|
||||
@@ -747,8 +747,8 @@
|
||||
C(0xb9e1, POPCNT, RRE, PC, 0, r2_o, r1, 0, popcnt, nz64)
|
||||
|
||||
/* ROTATE LEFT SINGLE LOGICAL */
|
||||
- C(0xeb1d, RLL, RSY_a, Z, r3_o, sh32, new, r1_32, rll32, 0)
|
||||
- C(0xeb1c, RLLG, RSY_a, Z, r3_o, sh64, r1, 0, rll64, 0)
|
||||
+ C(0xeb1d, RLL, RSY_a, Z, r3_o, sh, new, r1_32, rll32, 0)
|
||||
+ C(0xeb1c, RLLG, RSY_a, Z, r3_o, sh, r1, 0, rll64, 0)
|
||||
|
||||
/* ROTATE THEN INSERT SELECTED BITS */
|
||||
C(0xec55, RISBG, RIE_f, GIE, 0, r2, r1, 0, risbg, s64)
|
||||
@@ -784,29 +784,29 @@
|
||||
C(0x0400, SPM, RR_a, Z, r1, 0, 0, 0, spm, 0)
|
||||
|
||||
/* SHIFT LEFT SINGLE */
|
||||
- D(0x8b00, SLA, RS_a, Z, r1, sh32, new, r1_32, sla, 0, 31)
|
||||
- D(0xebdd, SLAK, RSY_a, DO, r3, sh32, new, r1_32, sla, 0, 31)
|
||||
- D(0xeb0b, SLAG, RSY_a, Z, r3, sh64, r1, 0, sla, 0, 63)
|
||||
+ D(0x8b00, SLA, RS_a, Z, r1, sh, new, r1_32, sla, 0, 31)
|
||||
+ D(0xebdd, SLAK, RSY_a, DO, r3, sh, new, r1_32, sla, 0, 31)
|
||||
+ D(0xeb0b, SLAG, RSY_a, Z, r3, sh, r1, 0, sla, 0, 63)
|
||||
/* SHIFT LEFT SINGLE LOGICAL */
|
||||
- C(0x8900, SLL, RS_a, Z, r1_o, sh32, new, r1_32, sll, 0)
|
||||
- C(0xebdf, SLLK, RSY_a, DO, r3_o, sh32, new, r1_32, sll, 0)
|
||||
- C(0xeb0d, SLLG, RSY_a, Z, r3_o, sh64, r1, 0, sll, 0)
|
||||
+ C(0x8900, SLL, RS_a, Z, r1_o, sh, new, r1_32, sll, 0)
|
||||
+ C(0xebdf, SLLK, RSY_a, DO, r3_o, sh, new, r1_32, sll, 0)
|
||||
+ C(0xeb0d, SLLG, RSY_a, Z, r3_o, sh, r1, 0, sll, 0)
|
||||
/* SHIFT RIGHT SINGLE */
|
||||
- C(0x8a00, SRA, RS_a, Z, r1_32s, sh32, new, r1_32, sra, s32)
|
||||
- C(0xebdc, SRAK, RSY_a, DO, r3_32s, sh32, new, r1_32, sra, s32)
|
||||
- C(0xeb0a, SRAG, RSY_a, Z, r3_o, sh64, r1, 0, sra, s64)
|
||||
+ C(0x8a00, SRA, RS_a, Z, r1_32s, sh, new, r1_32, sra, s32)
|
||||
+ C(0xebdc, SRAK, RSY_a, DO, r3_32s, sh, new, r1_32, sra, s32)
|
||||
+ C(0xeb0a, SRAG, RSY_a, Z, r3_o, sh, r1, 0, sra, s64)
|
||||
/* SHIFT RIGHT SINGLE LOGICAL */
|
||||
- C(0x8800, SRL, RS_a, Z, r1_32u, sh32, new, r1_32, srl, 0)
|
||||
- C(0xebde, SRLK, RSY_a, DO, r3_32u, sh32, new, r1_32, srl, 0)
|
||||
- C(0xeb0c, SRLG, RSY_a, Z, r3_o, sh64, r1, 0, srl, 0)
|
||||
+ C(0x8800, SRL, RS_a, Z, r1_32u, sh, new, r1_32, srl, 0)
|
||||
+ C(0xebde, SRLK, RSY_a, DO, r3_32u, sh, new, r1_32, srl, 0)
|
||||
+ C(0xeb0c, SRLG, RSY_a, Z, r3_o, sh, r1, 0, srl, 0)
|
||||
/* SHIFT LEFT DOUBLE */
|
||||
- D(0x8f00, SLDA, RS_a, Z, r1_D32, sh64, new, r1_D32, sla, 0, 63)
|
||||
+ D(0x8f00, SLDA, RS_a, Z, r1_D32, sh, new, r1_D32, sla, 0, 63)
|
||||
/* SHIFT LEFT DOUBLE LOGICAL */
|
||||
- C(0x8d00, SLDL, RS_a, Z, r1_D32, sh64, new, r1_D32, sll, 0)
|
||||
+ C(0x8d00, SLDL, RS_a, Z, r1_D32, sh, new, r1_D32, sll, 0)
|
||||
/* SHIFT RIGHT DOUBLE */
|
||||
- C(0x8e00, SRDA, RS_a, Z, r1_D32, sh64, new, r1_D32, sra, s64)
|
||||
+ C(0x8e00, SRDA, RS_a, Z, r1_D32, sh, new, r1_D32, sra, s64)
|
||||
/* SHIFT RIGHT DOUBLE LOGICAL */
|
||||
- C(0x8c00, SRDL, RS_a, Z, r1_D32, sh64, new, r1_D32, srl, 0)
|
||||
+ C(0x8c00, SRDL, RS_a, Z, r1_D32, sh, new, r1_D32, srl, 0)
|
||||
|
||||
/* SQUARE ROOT */
|
||||
F(0xb314, SQEBR, RRE, Z, 0, e2, new, e1, sqeb, 0, IF_BFP)
|
||||
diff --git a/target/s390x/tcg/translate.c b/target/s390x/tcg/translate.c
|
||||
index c5e59b68af..b14e6a04a7 100644
|
||||
--- a/target/s390x/tcg/translate.c
|
||||
+++ b/target/s390x/tcg/translate.c
|
||||
@@ -636,8 +636,7 @@ static void gen_op_calc_cc(DisasContext *s)
|
||||
case CC_OP_LTUGTU_64:
|
||||
case CC_OP_TM_32:
|
||||
case CC_OP_TM_64:
|
||||
- case CC_OP_SLA_32:
|
||||
- case CC_OP_SLA_64:
|
||||
+ case CC_OP_SLA:
|
||||
case CC_OP_SUBU:
|
||||
case CC_OP_NZ_F128:
|
||||
case CC_OP_VC:
|
||||
@@ -1178,19 +1177,6 @@ struct DisasInsn {
|
||||
/* ====================================================================== */
|
||||
/* Miscellaneous helpers, used by several operations. */
|
||||
|
||||
-static void help_l2_shift(DisasContext *s, DisasOps *o, int mask)
|
||||
-{
|
||||
- int b2 = get_field(s, b2);
|
||||
- int d2 = get_field(s, d2);
|
||||
-
|
||||
- if (b2 == 0) {
|
||||
- o->in2 = tcg_const_i64(d2 & mask);
|
||||
- } else {
|
||||
- o->in2 = get_address(s, 0, b2, d2);
|
||||
- tcg_gen_andi_i64(o->in2, o->in2, mask);
|
||||
- }
|
||||
-}
|
||||
-
|
||||
static DisasJumpType help_goto_direct(DisasContext *s, uint64_t dest)
|
||||
{
|
||||
if (dest == s->pc_tmp) {
|
||||
@@ -4113,9 +4099,18 @@ static DisasJumpType op_soc(DisasContext *s, DisasOps *o)
|
||||
|
||||
static DisasJumpType op_sla(DisasContext *s, DisasOps *o)
|
||||
{
|
||||
+ TCGv_i64 t;
|
||||
uint64_t sign = 1ull << s->insn->data;
|
||||
- enum cc_op cco = s->insn->data == 31 ? CC_OP_SLA_32 : CC_OP_SLA_64;
|
||||
- gen_op_update2_cc_i64(s, cco, o->in1, o->in2);
|
||||
+ if (s->insn->data == 31) {
|
||||
+ t = tcg_temp_new_i64();
|
||||
+ tcg_gen_shli_i64(t, o->in1, 32);
|
||||
+ } else {
|
||||
+ t = o->in1;
|
||||
+ }
|
||||
+ gen_op_update2_cc_i64(s, CC_OP_SLA, t, o->in2);
|
||||
+ if (s->insn->data == 31) {
|
||||
+ tcg_temp_free_i64(t);
|
||||
+ }
|
||||
tcg_gen_shl_i64(o->out, o->in1, o->in2);
|
||||
/* The arithmetic left shift is curious in that it does not affect
|
||||
the sign bit. Copy that over from the source unchanged. */
|
||||
@@ -5924,17 +5919,19 @@ static void in2_ri2(DisasContext *s, DisasOps *o)
|
||||
}
|
||||
#define SPEC_in2_ri2 0
|
||||
|
||||
-static void in2_sh32(DisasContext *s, DisasOps *o)
|
||||
+static void in2_sh(DisasContext *s, DisasOps *o)
|
||||
{
|
||||
- help_l2_shift(s, o, 31);
|
||||
-}
|
||||
-#define SPEC_in2_sh32 0
|
||||
+ int b2 = get_field(s, b2);
|
||||
+ int d2 = get_field(s, d2);
|
||||
|
||||
-static void in2_sh64(DisasContext *s, DisasOps *o)
|
||||
-{
|
||||
- help_l2_shift(s, o, 63);
|
||||
+ if (b2 == 0) {
|
||||
+ o->in2 = tcg_const_i64(d2 & 0x3f);
|
||||
+ } else {
|
||||
+ o->in2 = get_address(s, 0, b2, d2);
|
||||
+ tcg_gen_andi_i64(o->in2, o->in2, 0x3f);
|
||||
+ }
|
||||
}
|
||||
-#define SPEC_in2_sh64 0
|
||||
+#define SPEC_in2_sh 0
|
||||
|
||||
static void in2_m2_8u(DisasContext *s, DisasOps *o)
|
||||
{
|
||||
--
|
||||
2.37.3
|
||||
|
53
kvm-target-s390x-Fix-the-accumulation-of-ccm-in-op_icm.patch
Normal file
53
kvm-target-s390x-Fix-the-accumulation-of-ccm-in-op_icm.patch
Normal file
@ -0,0 +1,53 @@
|
||||
From 32f2dfe2fc3afa916f0cf9ed58e27f6c0c97a9e6 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 13/21] target/s390x: Fix the accumulation of ccm in op_icm
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [12/20] ad52141b1d733a34d392b72d9962ea7ac521dc17
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit 21641ee5a9b31568c990c7fc949eeb9bcd0f6a0f
|
||||
Author: Richard Henderson <richard.henderson@linaro.org>
|
||||
Date: Fri Apr 1 13:36:59 2022 -0600
|
||||
|
||||
target/s390x: Fix the accumulation of ccm in op_icm
|
||||
|
||||
Coverity rightly reports that 0xff << pos can overflow.
|
||||
This would affect the ICMH instruction.
|
||||
|
||||
Fixes: Coverity CID 1487161
|
||||
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Reviewed-by: Thomas Huth <thuth@redhat.com>
|
||||
Message-Id: <20220401193659.332079-1-richard.henderson@linaro.org>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@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 7ff7f90e23..75f0418c10 100644
|
||||
--- a/target/s390x/tcg/translate.c
|
||||
+++ b/target/s390x/tcg/translate.c
|
||||
@@ -2592,7 +2592,7 @@ static DisasJumpType op_icm(DisasContext *s, DisasOps *o)
|
||||
tcg_gen_qemu_ld8u(tmp, o->in2, get_mem_index(s));
|
||||
tcg_gen_addi_i64(o->in2, o->in2, 1);
|
||||
tcg_gen_deposit_i64(o->out, o->out, tmp, pos, 8);
|
||||
- ccm |= 0xff << pos;
|
||||
+ ccm |= 0xffull << pos;
|
||||
}
|
||||
m3 = (m3 << 1) & 0xf;
|
||||
pos -= 8;
|
||||
--
|
||||
2.37.3
|
||||
|
59
kvm-target-s390x-Fix-writeback-to-v1-in-helper_vstl.patch
Normal file
59
kvm-target-s390x-Fix-writeback-to-v1-in-helper_vstl.patch
Normal file
@ -0,0 +1,59 @@
|
||||
From 8fb292bd2f8d50a6ee041b7ea675d96d629c27b2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 14/21] target/s390x: Fix writeback to v1 in helper_vstl
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [13/20] 9db50d12afc0a85921e6bfdb69f12ba29f3dce72
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit db67a6ff480b346b1415b983f9582028cf8e18f0
|
||||
Author: Richard Henderson <richard.henderson@linaro.org>
|
||||
Date: Thu Apr 28 11:46:56 2022 +0200
|
||||
|
||||
target/s390x: Fix writeback to v1 in helper_vstl
|
||||
|
||||
Fixes: 0e0a5b49ad58 ("s390x/tcg: Implement VECTOR STORE WITH LENGTH")
|
||||
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
|
||||
Signed-off-by: David Hildenbrand <david@redhat.com>
|
||||
Tested-by: Thomas Huth <thuth@redhat.com>
|
||||
Reviewed-by: David Miller <dmiller423@gmail.com>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Message-Id: <20220428094708.84835-2-david@redhat.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/tcg/vec_helper.c | 2 --
|
||||
1 file changed, 2 deletions(-)
|
||||
|
||||
diff --git a/target/s390x/tcg/vec_helper.c b/target/s390x/tcg/vec_helper.c
|
||||
index ededf13cf0..48d86722b2 100644
|
||||
--- a/target/s390x/tcg/vec_helper.c
|
||||
+++ b/target/s390x/tcg/vec_helper.c
|
||||
@@ -200,7 +200,6 @@ void HELPER(vstl)(CPUS390XState *env, const void *v1, uint64_t addr,
|
||||
addr = wrap_address(env, addr + 8);
|
||||
cpu_stq_data_ra(env, addr, s390_vec_read_element64(v1, 1), GETPC());
|
||||
} else {
|
||||
- S390Vector tmp = {};
|
||||
int i;
|
||||
|
||||
for (i = 0; i < bytes; i++) {
|
||||
@@ -209,6 +208,5 @@ void HELPER(vstl)(CPUS390XState *env, const void *v1, uint64_t addr,
|
||||
cpu_stb_data_ra(env, addr, byte, GETPC());
|
||||
addr = wrap_address(env, addr + 1);
|
||||
}
|
||||
- *(S390Vector *)v1 = tmp;
|
||||
}
|
||||
}
|
||||
--
|
||||
2.37.3
|
||||
|
66
kvm-target-s390x-fix-handling-of-zeroes-in-vfmin-vfmax.patch
Normal file
66
kvm-target-s390x-fix-handling-of-zeroes-in-vfmin-vfmax.patch
Normal file
@ -0,0 +1,66 @@
|
||||
From 04fb9d950b89b0229577885e3254d115f98dc954 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 15/21] target/s390x: fix handling of zeroes in vfmin/vfmax
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [14/20] 27f66691e08192a5c9f2ecbde3603c0adece4857
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit 13c59eb09bd6d1fbc13f08b708226421f14a232b
|
||||
Author: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Date: Wed Jul 13 20:26:10 2022 +0200
|
||||
|
||||
target/s390x: fix handling of zeroes in vfmin/vfmax
|
||||
|
||||
vfmin_res() / vfmax_res() are trying to check whether a and b are both
|
||||
zeroes, but in reality they check that they are the same kind of zero.
|
||||
This causes incorrect results when comparing positive and negative
|
||||
zeroes.
|
||||
|
||||
Fixes: da4807527f3b ("s390x/tcg: Implement VECTOR FP (MAXIMUM|MINIMUM)")
|
||||
Co-developed-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
|
||||
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Message-Id: <20220713182612.3780050-2-iii@linux.ibm.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/tcg/vec_fpu_helper.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/target/s390x/tcg/vec_fpu_helper.c b/target/s390x/tcg/vec_fpu_helper.c
|
||||
index 1a77993471..d1249706f9 100644
|
||||
--- a/target/s390x/tcg/vec_fpu_helper.c
|
||||
+++ b/target/s390x/tcg/vec_fpu_helper.c
|
||||
@@ -794,7 +794,7 @@ static S390MinMaxRes vfmin_res(uint16_t dcmask_a, uint16_t dcmask_b,
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
}
|
||||
- } else if (unlikely(dcmask_a & dcmask_b & DCMASK_ZERO)) {
|
||||
+ } else if (unlikely((dcmask_a & DCMASK_ZERO) && (dcmask_b & DCMASK_ZERO))) {
|
||||
switch (type) {
|
||||
case S390_MINMAX_TYPE_JAVA:
|
||||
return neg_a ? S390_MINMAX_RES_A : S390_MINMAX_RES_B;
|
||||
@@ -844,7 +844,7 @@ static S390MinMaxRes vfmax_res(uint16_t dcmask_a, uint16_t dcmask_b,
|
||||
default:
|
||||
g_assert_not_reached();
|
||||
}
|
||||
- } else if (unlikely(dcmask_a & dcmask_b & DCMASK_ZERO)) {
|
||||
+ } else if (unlikely((dcmask_a & DCMASK_ZERO) && (dcmask_b & DCMASK_ZERO))) {
|
||||
const bool neg_a = dcmask_a & DCMASK_NEGATIVE;
|
||||
|
||||
switch (type) {
|
||||
--
|
||||
2.37.3
|
||||
|
@ -0,0 +1,89 @@
|
||||
From 849aea4561e80c4a2a3eaa3c49d24565fdd36764 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 20/21] target/s390x/tcg: Fix and improve the SACF instruction
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [19/20] 62030baceb0b0d1d651ba9026bb419ed4b2a8149
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit 21be74a9a59d1e4954ebb59dcbee0fda0b19de00
|
||||
Author: Thomas Huth <thuth@redhat.com>
|
||||
Date: Thu Dec 1 19:44:43 2022 +0100
|
||||
|
||||
target/s390x/tcg: Fix and improve the SACF instruction
|
||||
|
||||
The SET ADDRESS SPACE CONTROL FAST instruction is not privileged, it can be
|
||||
used from problem space, too. Just the switching to the home address space
|
||||
is privileged and should still generate a privilege exception. This bug is
|
||||
e.g. causing programs like Java that use the "getcpu" vdso kernel function
|
||||
to crash (see https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=990417#26 ).
|
||||
|
||||
While we're at it, also check if DAT is not enabled. In that case the
|
||||
instruction is supposed to generate a special operation exception.
|
||||
|
||||
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/655
|
||||
Message-Id: <20221201184443.136355-1-thuth@redhat.com>
|
||||
Reviewed-by: Ilya Leoshkevich <iii@linux.ibm.com>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Conflicts:
|
||||
file rename target/s390x/tcg/insn-data.h.in -> insn-data.def
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/tcg/cc_helper.c | 7 +++++++
|
||||
target/s390x/tcg/insn-data.def | 2 +-
|
||||
2 files changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/target/s390x/tcg/cc_helper.c b/target/s390x/tcg/cc_helper.c
|
||||
index b2e8d3d9f5..b36f8cdc8b 100644
|
||||
--- a/target/s390x/tcg/cc_helper.c
|
||||
+++ b/target/s390x/tcg/cc_helper.c
|
||||
@@ -487,6 +487,10 @@ void HELPER(sacf)(CPUS390XState *env, uint64_t a1)
|
||||
{
|
||||
HELPER_LOG("%s: %16" PRIx64 "\n", __func__, a1);
|
||||
|
||||
+ if (!(env->psw.mask & PSW_MASK_DAT)) {
|
||||
+ tcg_s390_program_interrupt(env, PGM_SPECIAL_OP, GETPC());
|
||||
+ }
|
||||
+
|
||||
switch (a1 & 0xf00) {
|
||||
case 0x000:
|
||||
env->psw.mask &= ~PSW_MASK_ASC;
|
||||
@@ -497,6 +501,9 @@ void HELPER(sacf)(CPUS390XState *env, uint64_t a1)
|
||||
env->psw.mask |= PSW_ASC_SECONDARY;
|
||||
break;
|
||||
case 0x300:
|
||||
+ if ((env->psw.mask & PSW_MASK_PSTATE) != 0) {
|
||||
+ tcg_s390_program_interrupt(env, PGM_PRIVILEGED, GETPC());
|
||||
+ }
|
||||
env->psw.mask &= ~PSW_MASK_ASC;
|
||||
env->psw.mask |= PSW_ASC_HOME;
|
||||
break;
|
||||
diff --git a/target/s390x/tcg/insn-data.def b/target/s390x/tcg/insn-data.def
|
||||
index d54673a3ba..548b0eedc2 100644
|
||||
--- a/target/s390x/tcg/insn-data.def
|
||||
+++ b/target/s390x/tcg/insn-data.def
|
||||
@@ -1315,7 +1315,7 @@
|
||||
/* SERVICE CALL LOGICAL PROCESSOR (PV hypercall) */
|
||||
F(0xb220, SERVC, RRE, Z, r1_o, r2_o, 0, 0, servc, 0, IF_PRIV | IF_IO)
|
||||
/* SET ADDRESS SPACE CONTROL FAST */
|
||||
- F(0xb279, SACF, S, Z, 0, a2, 0, 0, sacf, 0, IF_PRIV)
|
||||
+ C(0xb279, SACF, S, Z, 0, a2, 0, 0, sacf, 0)
|
||||
/* SET CLOCK */
|
||||
F(0xb204, SCK, S, Z, la2, 0, 0, 0, sck, 0, IF_PRIV | IF_IO)
|
||||
/* SET CLOCK COMPARATOR */
|
||||
--
|
||||
2.37.3
|
||||
|
@ -0,0 +1,55 @@
|
||||
From acfd4067b936f6672054f82ba71dea3a9fb4f820 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?C=C3=A9dric=20Le=20Goater?= <clg@redhat.com>
|
||||
Date: Tue, 23 May 2023 12:34:33 +0200
|
||||
Subject: [PATCH 21/21] target/s390x/tcg/mem_helper: Test the right bits in
|
||||
psw_key_valid()
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
RH-Author: Cédric Le Goater <clg@redhat.com>
|
||||
RH-MergeRequest: 279: Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
RH-Bugzilla: 2169308
|
||||
RH-Acked-by: Thomas Huth <thuth@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [20/20] 00a243a96953023387bab6f1925b734755c53e6e
|
||||
|
||||
Bugzilla: https://bugzilla.redhat.com/2169308
|
||||
|
||||
commit 5e275ca6fb32bcb4b56b29e6acfd3cf306c4a180
|
||||
Author: Thomas Huth <thuth@redhat.com>
|
||||
Date: Mon Dec 5 15:20:43 2022 +0100
|
||||
|
||||
target/s390x/tcg/mem_helper: Test the right bits in psw_key_valid()
|
||||
|
||||
The PSW key mask is a 16 bit field, and the psw_key variable is
|
||||
in the range from 0 to 15, so it does not make sense to use
|
||||
"0x80 >> psw_key" for testing the bits here. We should use 0x8000
|
||||
instead.
|
||||
|
||||
Message-Id: <20221205142043.95185-1-thuth@redhat.com>
|
||||
Reviewed-by: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
|
||||
Reviewed-by: David Hildenbrand <david@redhat.com>
|
||||
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
||||
|
||||
Signed-off-by: Cédric Le Goater <clg@redhat.com>
|
||||
---
|
||||
target/s390x/tcg/mem_helper.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/target/s390x/tcg/mem_helper.c b/target/s390x/tcg/mem_helper.c
|
||||
index 362a30d99e..bd27c75dfb 100644
|
||||
--- a/target/s390x/tcg/mem_helper.c
|
||||
+++ b/target/s390x/tcg/mem_helper.c
|
||||
@@ -50,7 +50,7 @@ static inline bool psw_key_valid(CPUS390XState *env, uint8_t psw_key)
|
||||
|
||||
if (env->psw.mask & PSW_MASK_PSTATE) {
|
||||
/* PSW key has range 0..15, it is valid if the bit is 1 in the PKM */
|
||||
- return pkm & (0x80 >> psw_key);
|
||||
+ return pkm & (0x8000 >> psw_key);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
--
|
||||
2.37.3
|
||||
|
176
kvm-virtiofsd-Add-basic-support-for-FUSE_SYNCFS-request.patch
Normal file
176
kvm-virtiofsd-Add-basic-support-for-FUSE_SYNCFS-request.patch
Normal file
@ -0,0 +1,176 @@
|
||||
From c21782b55953b49d7a91d66acf94473ef35cfa5e Mon Sep 17 00:00:00 2001
|
||||
From: Greg Kurz <groug@kaod.org>
|
||||
Date: Tue, 15 Feb 2022 19:15:29 +0100
|
||||
Subject: [PATCH 01/21] virtiofsd: Add basic support for FUSE_SYNCFS request
|
||||
|
||||
RH-Author: German Maglione <None>
|
||||
RH-MergeRequest: 278: virtiofsd: Add basic support for FUSE_SYNCFS request
|
||||
RH-Bugzilla: 2196880
|
||||
RH-Acked-by: Stefano Garzarella <sgarzare@redhat.com>
|
||||
RH-Acked-by: Hanna Czenczek <hreitz@redhat.com>
|
||||
RH-Acked-by: Jon Maloy <jmaloy@redhat.com>
|
||||
RH-Commit: [1/1] 7a0cbe70d97f13e74b2116218fccd9f79d335752
|
||||
|
||||
Honor the expected behavior of syncfs() to synchronously flush all data
|
||||
and metadata to disk on linux systems.
|
||||
|
||||
If virtiofsd is started with '-o announce_submounts', the client is
|
||||
expected to send a FUSE_SYNCFS request for each individual submount.
|
||||
In this case, we just create a new file descriptor on the submount
|
||||
inode with lo_inode_open(), call syncfs() on it and close it. The
|
||||
intermediary file is needed because O_PATH descriptors aren't
|
||||
backed by an actual file and syncfs() would fail with EBADF.
|
||||
|
||||
If virtiofsd is started without '-o announce_submounts' or if the
|
||||
client doesn't have the FUSE_CAP_SUBMOUNTS capability, the client
|
||||
only sends a single FUSE_SYNCFS request for the root inode. The
|
||||
server would thus need to track submounts internally and call
|
||||
syncfs() on each of them. This will be implemented later.
|
||||
|
||||
Note that syncfs() might suffer from a time penalty if the submounts
|
||||
are being hammered by some unrelated workload on the host. The only
|
||||
solution to prevent that is to avoid shared mounts.
|
||||
|
||||
Signed-off-by: Greg Kurz <groug@kaod.org>
|
||||
Message-Id: <20220215181529.164070-2-groug@kaod.org>
|
||||
Reviewed-by: Vivek Goyal <vgoyal@redhat.com>
|
||||
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
|
||||
(cherry picked from commit 45b04ef48dbbeb18d93c2631bf5584ac493de749)
|
||||
Signed-off-by: German Maglione <gmaglione@redhat.com>
|
||||
---
|
||||
tools/virtiofsd/fuse_lowlevel.c | 11 +++++++
|
||||
tools/virtiofsd/fuse_lowlevel.h | 13 ++++++++
|
||||
tools/virtiofsd/passthrough_ll.c | 44 +++++++++++++++++++++++++++
|
||||
tools/virtiofsd/passthrough_seccomp.c | 1 +
|
||||
4 files changed, 69 insertions(+)
|
||||
|
||||
diff --git a/tools/virtiofsd/fuse_lowlevel.c b/tools/virtiofsd/fuse_lowlevel.c
|
||||
index 5d431a7038..57f928463a 100644
|
||||
--- a/tools/virtiofsd/fuse_lowlevel.c
|
||||
+++ b/tools/virtiofsd/fuse_lowlevel.c
|
||||
@@ -1876,6 +1876,16 @@ static void do_lseek(fuse_req_t req, fuse_ino_t nodeid,
|
||||
}
|
||||
}
|
||||
|
||||
+static void do_syncfs(fuse_req_t req, fuse_ino_t nodeid,
|
||||
+ struct fuse_mbuf_iter *iter)
|
||||
+{
|
||||
+ if (req->se->op.syncfs) {
|
||||
+ req->se->op.syncfs(req, nodeid);
|
||||
+ } else {
|
||||
+ fuse_reply_err(req, ENOSYS);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
static void do_init(fuse_req_t req, fuse_ino_t nodeid,
|
||||
struct fuse_mbuf_iter *iter)
|
||||
{
|
||||
@@ -2282,6 +2292,7 @@ static struct {
|
||||
[FUSE_RENAME2] = { do_rename2, "RENAME2" },
|
||||
[FUSE_COPY_FILE_RANGE] = { do_copy_file_range, "COPY_FILE_RANGE" },
|
||||
[FUSE_LSEEK] = { do_lseek, "LSEEK" },
|
||||
+ [FUSE_SYNCFS] = { do_syncfs, "SYNCFS" },
|
||||
};
|
||||
|
||||
#define FUSE_MAXOP (sizeof(fuse_ll_ops) / sizeof(fuse_ll_ops[0]))
|
||||
diff --git a/tools/virtiofsd/fuse_lowlevel.h b/tools/virtiofsd/fuse_lowlevel.h
|
||||
index c55c0ca2fc..b889dae4de 100644
|
||||
--- a/tools/virtiofsd/fuse_lowlevel.h
|
||||
+++ b/tools/virtiofsd/fuse_lowlevel.h
|
||||
@@ -1226,6 +1226,19 @@ struct fuse_lowlevel_ops {
|
||||
*/
|
||||
void (*lseek)(fuse_req_t req, fuse_ino_t ino, off_t off, int whence,
|
||||
struct fuse_file_info *fi);
|
||||
+
|
||||
+ /**
|
||||
+ * Synchronize file system content
|
||||
+ *
|
||||
+ * If this request is answered with an error code of ENOSYS,
|
||||
+ * this is treated as success and future calls to syncfs() will
|
||||
+ * succeed automatically without being sent to the filesystem
|
||||
+ * process.
|
||||
+ *
|
||||
+ * @param req request handle
|
||||
+ * @param ino the inode number
|
||||
+ */
|
||||
+ void (*syncfs)(fuse_req_t req, fuse_ino_t ino);
|
||||
};
|
||||
|
||||
/**
|
||||
diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c
|
||||
index 523d8fbe1e..00ccb90a72 100644
|
||||
--- a/tools/virtiofsd/passthrough_ll.c
|
||||
+++ b/tools/virtiofsd/passthrough_ll.c
|
||||
@@ -3357,6 +3357,49 @@ static void lo_lseek(fuse_req_t req, fuse_ino_t ino, off_t off, int whence,
|
||||
}
|
||||
}
|
||||
|
||||
+static int lo_do_syncfs(struct lo_data *lo, struct lo_inode *inode)
|
||||
+{
|
||||
+ int fd, ret = 0;
|
||||
+
|
||||
+ fuse_log(FUSE_LOG_DEBUG, "lo_do_syncfs(ino=%" PRIu64 ")\n",
|
||||
+ inode->fuse_ino);
|
||||
+
|
||||
+ fd = lo_inode_open(lo, inode, O_RDONLY);
|
||||
+ if (fd < 0) {
|
||||
+ return -fd;
|
||||
+ }
|
||||
+
|
||||
+ if (syncfs(fd) < 0) {
|
||||
+ ret = errno;
|
||||
+ }
|
||||
+
|
||||
+ close(fd);
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static void lo_syncfs(fuse_req_t req, fuse_ino_t ino)
|
||||
+{
|
||||
+ struct lo_data *lo = lo_data(req);
|
||||
+ struct lo_inode *inode = lo_inode(req, ino);
|
||||
+ int err;
|
||||
+
|
||||
+ if (!inode) {
|
||||
+ fuse_reply_err(req, EBADF);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ err = lo_do_syncfs(lo, inode);
|
||||
+ lo_inode_put(lo, &inode);
|
||||
+
|
||||
+ /*
|
||||
+ * If submounts aren't announced, the client only sends a request to
|
||||
+ * sync the root inode. TODO: Track submounts internally and iterate
|
||||
+ * over them as well.
|
||||
+ */
|
||||
+
|
||||
+ fuse_reply_err(req, err);
|
||||
+}
|
||||
+
|
||||
static void lo_destroy(void *userdata)
|
||||
{
|
||||
struct lo_data *lo = (struct lo_data *)userdata;
|
||||
@@ -3417,6 +3460,7 @@ static struct fuse_lowlevel_ops lo_oper = {
|
||||
.copy_file_range = lo_copy_file_range,
|
||||
#endif
|
||||
.lseek = lo_lseek,
|
||||
+ .syncfs = lo_syncfs,
|
||||
.destroy = lo_destroy,
|
||||
};
|
||||
|
||||
diff --git a/tools/virtiofsd/passthrough_seccomp.c b/tools/virtiofsd/passthrough_seccomp.c
|
||||
index a3ce9f898d..3e9d6181dc 100644
|
||||
--- a/tools/virtiofsd/passthrough_seccomp.c
|
||||
+++ b/tools/virtiofsd/passthrough_seccomp.c
|
||||
@@ -108,6 +108,7 @@ static const int syscall_allowlist[] = {
|
||||
SCMP_SYS(set_robust_list),
|
||||
SCMP_SYS(setxattr),
|
||||
SCMP_SYS(symlinkat),
|
||||
+ SCMP_SYS(syncfs),
|
||||
SCMP_SYS(time), /* Rarely needed, except on static builds */
|
||||
SCMP_SYS(tgkill),
|
||||
SCMP_SYS(unlinkat),
|
||||
--
|
||||
2.37.3
|
||||
|
@ -83,7 +83,7 @@ Obsoletes: %1-rhev <= %{epoch}:%{version}-%{release}
|
||||
Summary: QEMU is a machine emulator and virtualizer
|
||||
Name: qemu-kvm
|
||||
Version: 6.2.0
|
||||
Release: 34%{?rcrel}%{?dist}
|
||||
Release: 35%{?rcrel}%{?dist}
|
||||
# Epoch because we pushed a qemu-1.0 package. AIUI this can't ever be dropped
|
||||
Epoch: 15
|
||||
License: GPLv2 and GPLv2+ and CC-BY
|
||||
@ -664,6 +664,48 @@ Patch261: kvm-migration-Attempt-disk-reactivation-in-more-failure-.patch
|
||||
Patch262: kvm-nbd-server-push-pending-frames-after-sending-reply.patch
|
||||
# For bz#2035712 - [qemu] Booting from Guest Image over NBD with TLS Is Slow
|
||||
Patch263: kvm-nbd-server-Request-TCP_NODELAY.patch
|
||||
# For bz#2196880 - [virtiofs] Backport FUSE_SYNCFS support
|
||||
Patch264: kvm-virtiofsd-Add-basic-support-for-FUSE_SYNCFS-request.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch265: kvm-s390-kvm-adjust-diag318-resets-to-retain-data.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch266: kvm-target-s390x-Fix-SLDA-sign-bit-index.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch267: kvm-target-s390x-Fix-SRDA-CC-calculation.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch268: kvm-target-s390x-Fix-cc_calc_sla_64-missing-overflows.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch269: kvm-target-s390x-Fix-shifting-32-bit-values-for-more-tha.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch270: kvm-s390x-sigp-Reorder-the-SIGP-STOP-code.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch271: kvm-s390x-tcg-Fix-BRASL-with-a-large-negative-offset.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch272: kvm-s390x-tcg-Fix-BRCL-with-a-large-negative-offset.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch273: kvm-target-s390x-Fix-determination-of-overflow-condition.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch274: kvm-target-s390x-Fix-determination-of-overflow-conditioo.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch275: kvm-s390x-follow-qdev-tree-to-detect-SCSI-device-on-a-CC.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch276: kvm-target-s390x-Fix-the-accumulation-of-ccm-in-op_icm.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch277: kvm-target-s390x-Fix-writeback-to-v1-in-helper_vstl.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch278: kvm-target-s390x-fix-handling-of-zeroes-in-vfmin-vfmax.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch279: kvm-target-s390x-Fix-CLFIT-and-CLGIT-immediate-size.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch280: kvm-s390x-tcg-Fix-opcode-for-lzrf.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch281: kvm-target-s390x-Fix-emulation-of-the-VISTR-instruction.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch282: kvm-s390x-css-revert-SCSW-ctrl-flag-bits-on-error.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch283: kvm-target-s390x-tcg-Fix-and-improve-the-SACF-instructio.patch
|
||||
# For bz#2169308 - Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9
|
||||
Patch284: kvm-target-s390x-tcg-mem_helper-Test-the-right-bits-in-p.patch
|
||||
|
||||
BuildRequires: wget
|
||||
BuildRequires: rpm-build
|
||||
@ -1833,6 +1875,33 @@ sh %{_sysconfdir}/sysconfig/modules/kvm.modules &> /dev/null || :
|
||||
|
||||
|
||||
%changelog
|
||||
* Wed May 24 2023 Jon Maloy <jmaloy@redhat.com> - 6.2.0-35
|
||||
- kvm-virtiofsd-Add-basic-support-for-FUSE_SYNCFS-request.patch [bz#2196880]
|
||||
- kvm-s390-kvm-adjust-diag318-resets-to-retain-data.patch [bz#2169308]
|
||||
- kvm-target-s390x-Fix-SLDA-sign-bit-index.patch [bz#2169308]
|
||||
- kvm-target-s390x-Fix-SRDA-CC-calculation.patch [bz#2169308]
|
||||
- kvm-target-s390x-Fix-cc_calc_sla_64-missing-overflows.patch [bz#2169308]
|
||||
- kvm-target-s390x-Fix-shifting-32-bit-values-for-more-tha.patch [bz#2169308]
|
||||
- kvm-s390x-sigp-Reorder-the-SIGP-STOP-code.patch [bz#2169308]
|
||||
- kvm-s390x-tcg-Fix-BRASL-with-a-large-negative-offset.patch [bz#2169308]
|
||||
- kvm-s390x-tcg-Fix-BRCL-with-a-large-negative-offset.patch [bz#2169308]
|
||||
- kvm-target-s390x-Fix-determination-of-overflow-condition.patch [bz#2169308]
|
||||
- kvm-target-s390x-Fix-determination-of-overflow-conditioo.patch [bz#2169308]
|
||||
- kvm-s390x-follow-qdev-tree-to-detect-SCSI-device-on-a-CC.patch [bz#2169308]
|
||||
- kvm-target-s390x-Fix-the-accumulation-of-ccm-in-op_icm.patch [bz#2169308]
|
||||
- kvm-target-s390x-Fix-writeback-to-v1-in-helper_vstl.patch [bz#2169308]
|
||||
- kvm-target-s390x-fix-handling-of-zeroes-in-vfmin-vfmax.patch [bz#2169308]
|
||||
- kvm-target-s390x-Fix-CLFIT-and-CLGIT-immediate-size.patch [bz#2169308]
|
||||
- kvm-s390x-tcg-Fix-opcode-for-lzrf.patch [bz#2169308]
|
||||
- kvm-target-s390x-Fix-emulation-of-the-VISTR-instruction.patch [bz#2169308]
|
||||
- kvm-s390x-css-revert-SCSW-ctrl-flag-bits-on-error.patch [bz#2169308]
|
||||
- kvm-target-s390x-tcg-Fix-and-improve-the-SACF-instructio.patch [bz#2169308]
|
||||
- kvm-target-s390x-tcg-mem_helper-Test-the-right-bits-in-p.patch [bz#2169308]
|
||||
- Resolves: bz#2196880
|
||||
([virtiofs] Backport FUSE_SYNCFS support)
|
||||
- Resolves: bz#2169308
|
||||
(Backport latest s390x-related fixes from upstream QEMU for qemu-kvm in RHEL 8.9)
|
||||
|
||||
* Fri May 19 2023 Miroslav Rezanina <mrezanin@redhat.com> - 6.2.0-34
|
||||
- kvm-migration-Handle-block-device-inactivation-failures-.patch [bz#2177957]
|
||||
- kvm-migration-Minor-control-flow-simplification.patch [bz#2177957]
|
||||
|
Loading…
Reference in New Issue
Block a user