From: Cornelia Huck <cohuck@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Christian Borntraeger <borntraeger@de.ibm.com>,
qemu-s390x@nongnu.org, Cornelia Huck <cohuck@redhat.com>,
qemu-devel@nongnu.org, Janosch Frank <frankja@linux.ibm.com>
Subject: [PULL 09/16] s390x: Fix cpu normal reset ri clearing
Date: Fri, 13 Dec 2019 17:18:44 +0100 [thread overview]
Message-ID: <20191213161851.24687-10-cohuck@redhat.com> (raw)
In-Reply-To: <20191213161851.24687-1-cohuck@redhat.com>
From: Janosch Frank <frankja@linux.ibm.com>
As it turns out we need to clear the ri controls and PSW enablement
bit to be architecture compliant.
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Message-Id: <20191203132813.2734-4-frankja@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
target/s390x/cpu.c | 7 ++++++-
target/s390x/cpu.h | 7 ++++++-
2 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
index bd39cb54b7aa..99ea09085a30 100644
--- a/target/s390x/cpu.c
+++ b/target/s390x/cpu.c
@@ -100,7 +100,7 @@ static void s390_cpu_reset(CPUState *s, cpu_reset_type type)
case S390_CPU_RESET_INITIAL:
/* initial reset does not clear everything! */
memset(&env->start_initial_reset_fields, 0,
- offsetof(CPUS390XState, end_reset_fields) -
+ offsetof(CPUS390XState, start_normal_reset_fields) -
offsetof(CPUS390XState, start_initial_reset_fields));
/* architectured initial value for Breaking-Event-Address register */
@@ -123,6 +123,11 @@ static void s390_cpu_reset(CPUState *s, cpu_reset_type type)
&env->fpu_status);
/* fall through */
case S390_CPU_RESET_NORMAL:
+ env->psw.mask &= ~PSW_MASK_RI;
+ memset(&env->start_normal_reset_fields, 0,
+ offsetof(CPUS390XState, end_reset_fields) -
+ offsetof(CPUS390XState, start_normal_reset_fields));
+
env->pfault_token = -1UL;
env->bpbc = false;
break;
diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
index d2af13b345cc..7e1c18d59696 100644
--- a/target/s390x/cpu.h
+++ b/target/s390x/cpu.h
@@ -58,7 +58,6 @@ struct CPUS390XState {
*/
uint64_t vregs[32][2] QEMU_ALIGNED(16); /* vector registers */
uint32_t aregs[16]; /* access registers */
- uint8_t riccb[64]; /* runtime instrumentation control */
uint64_t gscb[4]; /* guarded storage control */
uint64_t etoken; /* etoken */
uint64_t etoken_extension; /* etoken extension */
@@ -114,6 +113,10 @@ struct CPUS390XState {
uint64_t gbea;
uint64_t pp;
+ /* Fields up to this point are not cleared by normal CPU reset */
+ struct {} start_normal_reset_fields;
+ uint8_t riccb[64]; /* runtime instrumentation control */
+
/* Fields up to this point are cleared by a CPU reset */
struct {} end_reset_fields;
@@ -252,6 +255,7 @@ extern const VMStateDescription vmstate_s390_cpu;
#undef PSW_SHIFT_ASC
#undef PSW_MASK_CC
#undef PSW_MASK_PM
+#undef PSW_MASK_RI
#undef PSW_SHIFT_MASK_PM
#undef PSW_MASK_64
#undef PSW_MASK_32
@@ -273,6 +277,7 @@ extern const VMStateDescription vmstate_s390_cpu;
#define PSW_MASK_CC 0x0000300000000000ULL
#define PSW_MASK_PM 0x00000F0000000000ULL
#define PSW_SHIFT_MASK_PM 40
+#define PSW_MASK_RI 0x0000008000000000ULL
#define PSW_MASK_64 0x0000000100000000ULL
#define PSW_MASK_32 0x0000000080000000ULL
#define PSW_MASK_ESA_ADDR 0x000000007fffffffULL
--
2.21.0
next prev parent reply other threads:[~2019-12-13 21:23 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-13 16:18 [PULL 00/16] first s390x update for 5.0 Cornelia Huck
2019-12-13 16:18 ` [PULL 01/16] vfio-ccw: Fix error message Cornelia Huck
2019-12-13 16:18 ` [PULL 02/16] hw: add compat machines for 5.0 Cornelia Huck
2019-12-13 16:18 ` [PULL 03/16] s390x: Don't do a normal reset on the initial cpu Cornelia Huck
2019-12-13 16:18 ` [PULL 04/16] s390x: Move reset normal to shared reset handler Cornelia Huck
2019-12-13 16:18 ` [PULL 05/16] s390x: Move initial reset Cornelia Huck
2019-12-13 16:18 ` [PULL 06/16] s390x: Move clear reset Cornelia Huck
2019-12-13 16:18 ` [PULL 07/16] s390x: Beautify diag308 handling Cornelia Huck
2019-12-13 16:18 ` [PULL 08/16] s390x: kvm: Make kvm_sclp_service_call void Cornelia Huck
2019-12-13 16:18 ` Cornelia Huck [this message]
2019-12-13 16:18 ` [PULL 10/16] s390x/event-facility: Fix realize() error API violations Cornelia Huck
2019-12-13 16:18 ` [PULL 11/16] s390x/cpumodel: Fix feature property " Cornelia Huck
2019-12-13 16:18 ` [PULL 12/16] s390x/cpumodel: Fix realize() " Cornelia Huck
2019-12-13 16:18 ` [PULL 13/16] s390x/cpumodel: Fix query-cpu-model-FOO " Cornelia Huck
2019-12-13 16:18 ` [PULL 14/16] s390x/cpumodel: Fix query-cpu-definitions " Cornelia Huck
2019-12-13 16:18 ` [PULL 15/16] s390x/tcg: clear local interrupts on reset normal Cornelia Huck
2019-12-13 16:18 ` [PULL 16/16] qga: fence guest-set-time if hwclock not available Cornelia Huck
2019-12-13 21:12 ` [PULL 00/16] first s390x update for 5.0 Peter Maydell
2019-12-14 9:30 ` Cornelia Huck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20191213161851.24687-10-cohuck@redhat.com \
--to=cohuck@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=frankja@linux.ibm.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.