[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 11/20] s390x: protvirt: Set guest IPL PSW
From: |
Cornelia Huck |
Subject: |
[PULL 11/20] s390x: protvirt: Set guest IPL PSW |
Date: |
Thu, 30 Apr 2020 11:44:36 +0200 |
From: Janosch Frank <address@hidden>
Handling of CPU reset and setting of the IPL psw from guest storage at
offset 0 is done by a Ultravisor call. Let's only fetch it if
necessary.
Signed-off-by: Janosch Frank <address@hidden>
Reviewed-by: Thomas Huth <address@hidden>
Reviewed-by: David Hildenbrand <address@hidden>
Reviewed-by: Christian Borntraeger <address@hidden>
Reviewed-by: Claudio Imbrenda <address@hidden>
Reviewed-by: Cornelia Huck <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>
---
target/s390x/cpu.c | 26 +++++++++++++++++---------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
index bb7a588e3b79..f2ccf0a06a0c 100644
--- a/target/s390x/cpu.c
+++ b/target/s390x/cpu.c
@@ -77,16 +77,24 @@ static bool s390_cpu_has_work(CPUState *cs)
static void s390_cpu_load_normal(CPUState *s)
{
S390CPU *cpu = S390_CPU(s);
- uint64_t spsw = ldq_phys(s->as, 0);
-
- cpu->env.psw.mask = spsw & PSW_MASK_SHORT_CTRL;
- /*
- * Invert short psw indication, so SIE will report a specification
- * exception if it was not set.
- */
- cpu->env.psw.mask ^= PSW_MASK_SHORTPSW;
- cpu->env.psw.addr = spsw & PSW_MASK_SHORT_ADDR;
+ uint64_t spsw;
+ if (!s390_is_pv()) {
+ spsw = ldq_phys(s->as, 0);
+ cpu->env.psw.mask = spsw & PSW_MASK_SHORT_CTRL;
+ /*
+ * Invert short psw indication, so SIE will report a specification
+ * exception if it was not set.
+ */
+ cpu->env.psw.mask ^= PSW_MASK_SHORTPSW;
+ cpu->env.psw.addr = spsw & PSW_MASK_SHORT_ADDR;
+ } else {
+ /*
+ * Firmware requires us to set the load state before we set
+ * the cpu to operating on protected guests.
+ */
+ s390_cpu_set_state(S390_CPU_STATE_LOAD, cpu);
+ }
s390_cpu_set_state(S390_CPU_STATE_OPERATING, cpu);
}
#endif
--
2.21.1
- [PULL 01/20] virtio-net: fix rsc_ext compat handling, (continued)
- [PULL 01/20] virtio-net: fix rsc_ext compat handling, Cornelia Huck, 2020/04/30
- [PULL 02/20] linux-headers: update against Linux 5.7-rc3, Cornelia Huck, 2020/04/30
- [PULL 03/20] s390x: Move diagnose 308 subcodes and rcs into ipl.h, Cornelia Huck, 2020/04/30
- [PULL 05/20] s390x: protvirt: Add migration blocker, Cornelia Huck, 2020/04/30
- [PULL 06/20] s390x: protvirt: Inhibit balloon when switching to protected mode, Cornelia Huck, 2020/04/30
- [PULL 04/20] s390x: protvirt: Support unpack facility, Cornelia Huck, 2020/04/30
- [PULL 07/20] s390x: protvirt: KVM intercept changes, Cornelia Huck, 2020/04/30
- [PULL 08/20] s390x: Add SIDA memory ops, Cornelia Huck, 2020/04/30
- [PULL 09/20] s390x: protvirt: Move STSI data over SIDAD, Cornelia Huck, 2020/04/30
- [PULL 10/20] s390x: protvirt: SCLP interpretation, Cornelia Huck, 2020/04/30
- [PULL 11/20] s390x: protvirt: Set guest IPL PSW,
Cornelia Huck <=
- [PULL 12/20] s390x: protvirt: Move diag 308 data over SIDA, Cornelia Huck, 2020/04/30
- [PULL 13/20] s390x: protvirt: Disable address checks for PV guest IO emulation, Cornelia Huck, 2020/04/30
- [PULL 14/20] s390x: protvirt: Move IO control structures over SIDA, Cornelia Huck, 2020/04/30
- [PULL 15/20] s390x: protvirt: Handle SIGP store status correctly, Cornelia Huck, 2020/04/30
- [PULL 16/20] docs: system: Add protvirt docs, Cornelia Huck, 2020/04/30
- [PULL 17/20] s390x: Add unpack facility feature to GA1, Cornelia Huck, 2020/04/30
- [PULL 18/20] s390x: protvirt: Fix stray error_report_err in s390_machine_protect, Cornelia Huck, 2020/04/30
- [PULL 19/20] s390x/pv: Retry ioctls on -EINTR, Cornelia Huck, 2020/04/30
- [PULL 20/20] s390x/s390-virtio-ccw: Fix build on systems without KVM, Cornelia Huck, 2020/04/30
- Re: [PULL 00/20] first set of s390x patches for 5.1, Peter Maydell, 2020/04/30