[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 1/8] s390: kvm: adjust diag318 resets to retain data
From: |
Thomas Huth |
Subject: |
[PULL 1/8] s390: kvm: adjust diag318 resets to retain data |
Date: |
Thu, 16 Dec 2021 10:44:40 +0100 |
From: Collin Walling <walling@linux.ibm.com>
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>
---
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 5b1fdb55c4..6acf14d5ec 100644
--- a/target/s390x/kvm/kvm.c
+++ b/target/s390x/kvm/kvm.c
@@ -1585,6 +1585,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.27.0
- [PULL 0/8] s390x patches (and one gitlab-CI fix), Thomas Huth, 2021/12/16
- [PULL 3/8] s390x/pci: use a reserved ID for the default PCI group, Thomas Huth, 2021/12/16
- [PULL 2/8] MAINTAINERS: update email address of Christian Borntraeger, Thomas Huth, 2021/12/16
- [PULL 1/8] s390: kvm: adjust diag318 resets to retain data,
Thomas Huth <=
- [PULL 4/8] s390x/pci: don't use hard-coded dma range in reg_ioat, Thomas Huth, 2021/12/16
- [PULL 8/8] gitlab-ci: Speed up the msys2-64bit job by using --without-default-devices, Thomas Huth, 2021/12/16
- [PULL 6/8] s390x/pci: add supported DT information to clp response, Thomas Huth, 2021/12/16
- [PULL 7/8] hw: Add compat machines for 7.0, Thomas Huth, 2021/12/16
- [PULL 5/8] s390x/pci: use the passthrough measurement update interval, Thomas Huth, 2021/12/16
- Re: [PULL 0/8] s390x patches (and one gitlab-CI fix), Richard Henderson, 2021/12/16