All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cornelia Huck <cohuck@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: David Hildenbrand <david@redhat.com>,
	Cornelia Huck <cohuck@redhat.com>,
	qemu-devel@nongnu.org, Bruce Rogers <brogers@suse.com>,
	Christian Borntraeger <borntraeger@de.ibm.com>,
	qemu-s390x@nongnu.org
Subject: [PULL 20/20] s390x/s390-virtio-ccw: Fix build on systems without KVM
Date: Thu, 30 Apr 2020 11:44:45 +0200	[thread overview]
Message-ID: <20200430094445.25943-21-cohuck@redhat.com> (raw)
In-Reply-To: <20200430094445.25943-1-cohuck@redhat.com>

From: Christian Borntraeger <borntraeger@de.ibm.com>

linux/kvm.h is not available on all platforms. Let us move
s390_machine_inject_pv_error into pv.c as it uses KVM structures.
Also rename the function to s390_pv_inject_reset_error.

While at it, ipl.h needs an include for "exec/address-spaces.h"
as it uses address_space_memory.

Fixes: c3347ed0d2ee ("s390x: protvirt: Support unpack facility")
Reported-by: Bruce Rogers <brogers@suse.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Message-Id: <20200406100158.5940-2-borntraeger@de.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
 hw/s390x/ipl.h             |  1 +
 hw/s390x/pv.c              | 11 +++++++++++
 hw/s390x/s390-virtio-ccw.c | 12 +-----------
 include/hw/s390x/pv.h      |  3 +++
 4 files changed, 16 insertions(+), 11 deletions(-)

diff --git a/hw/s390x/ipl.h b/hw/s390x/ipl.h
index 89b3044d7a2e..53cc9eb5ac4d 100644
--- a/hw/s390x/ipl.h
+++ b/hw/s390x/ipl.h
@@ -14,6 +14,7 @@
 #define HW_S390_IPL_H
 
 #include "cpu.h"
+#include "exec/address-spaces.h"
 #include "hw/qdev-core.h"
 
 struct IPLBlockPVComp {
diff --git a/hw/s390x/pv.c b/hw/s390x/pv.c
index cb0dce4a4f06..f11868e865fa 100644
--- a/hw/s390x/pv.c
+++ b/hw/s390x/pv.c
@@ -13,8 +13,10 @@
 
 #include <linux/kvm.h>
 
+#include "cpu.h"
 #include "qemu/error-report.h"
 #include "sysemu/kvm.h"
+#include "hw/s390x/ipl.h"
 #include "hw/s390x/pv.h"
 
 static int __s390_pv_cmd(uint32_t cmd, const char *cmdname, void *data)
@@ -100,3 +102,12 @@ void s390_pv_unshare(void)
 {
     s390_pv_cmd_exit(KVM_PV_UNSHARE_ALL, NULL);
 }
+
+void s390_pv_inject_reset_error(CPUState *cs)
+{
+    int r1 = (cs->kvm_run->s390_sieic.ipa & 0x00f0) >> 4;
+    CPUS390XState *env = &S390_CPU(cs)->env;
+
+    /* Report that we are unable to enter protected mode */
+    env->regs[r1 + 1] = DIAG_308_RC_INVAL_FOR_PV;
+}
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index b2689073953e..45292fb5a8b6 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -45,7 +45,6 @@
 #include "sysemu/sysemu.h"
 #include "sysemu/balloon.h"
 #include "hw/s390x/pv.h"
-#include <linux/kvm.h>
 #include "migration/blocker.h"
 
 static Error *pv_mig_blocker;
@@ -390,15 +389,6 @@ out_err:
     return rc;
 }
 
-static void s390_machine_inject_pv_error(CPUState *cs)
-{
-    int r1 = (cs->kvm_run->s390_sieic.ipa & 0x00f0) >> 4;
-    CPUS390XState *env = &S390_CPU(cs)->env;
-
-    /* Report that we are unable to enter protected mode */
-    env->regs[r1 + 1] = DIAG_308_RC_INVAL_FOR_PV;
-}
-
 static void s390_pv_prepare_reset(S390CcwMachineState *ms)
 {
     CPUState *cs;
@@ -484,7 +474,7 @@ static void s390_machine_reset(MachineState *machine)
         run_on_cpu(cs, s390_do_cpu_reset, RUN_ON_CPU_NULL);
 
         if (s390_machine_protect(ms)) {
-            s390_machine_inject_pv_error(cs);
+            s390_pv_inject_reset_error(cs);
             /*
              * Continue after the diag308 so the guest knows something
              * went wrong.
diff --git a/include/hw/s390x/pv.h b/include/hw/s390x/pv.h
index c6cb360f2f6a..522ca6a04ee8 100644
--- a/include/hw/s390x/pv.h
+++ b/include/hw/s390x/pv.h
@@ -13,6 +13,7 @@
 #define HW_S390_PV_H
 
 #ifdef CONFIG_KVM
+#include "cpu.h"
 #include "hw/s390x/s390-virtio-ccw.h"
 
 static inline bool s390_is_pv(void)
@@ -41,6 +42,7 @@ int s390_pv_unpack(uint64_t addr, uint64_t size, uint64_t tweak);
 void s390_pv_perf_clear_reset(void);
 int s390_pv_verify(void);
 void s390_pv_unshare(void);
+void s390_pv_inject_reset_error(CPUState *cs);
 #else /* CONFIG_KVM */
 static inline bool s390_is_pv(void) { return false; }
 static inline int s390_pv_vm_enable(void) { return 0; }
@@ -50,6 +52,7 @@ static inline int s390_pv_unpack(uint64_t addr, uint64_t size, uint64_t tweak) {
 static inline void s390_pv_perf_clear_reset(void) {}
 static inline int s390_pv_verify(void) { return 0; }
 static inline void s390_pv_unshare(void) {}
+static inline void s390_pv_inject_reset_error(CPUState *cs) {};
 #endif /* CONFIG_KVM */
 
 #endif /* HW_S390_PV_H */
-- 
2.21.1



  parent reply	other threads:[~2020-04-30 10:02 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-30  9:44 [PULL 00/20] first set of s390x patches for 5.1 Cornelia Huck
2020-04-30  9:44 ` [PULL 01/20] virtio-net: fix rsc_ext compat handling Cornelia Huck
2020-04-30  9:44 ` [PULL 02/20] linux-headers: update against Linux 5.7-rc3 Cornelia Huck
2020-04-30  9:44 ` [PULL 03/20] s390x: Move diagnose 308 subcodes and rcs into ipl.h Cornelia Huck
2020-04-30  9:44 ` [PULL 04/20] s390x: protvirt: Support unpack facility Cornelia Huck
2020-04-30  9:44 ` [PULL 05/20] s390x: protvirt: Add migration blocker Cornelia Huck
2020-04-30  9:44 ` [PULL 06/20] s390x: protvirt: Inhibit balloon when switching to protected mode Cornelia Huck
2020-04-30  9:44 ` [PULL 07/20] s390x: protvirt: KVM intercept changes Cornelia Huck
2020-04-30  9:44 ` [PULL 08/20] s390x: Add SIDA memory ops Cornelia Huck
2020-04-30  9:44 ` [PULL 09/20] s390x: protvirt: Move STSI data over SIDAD Cornelia Huck
2020-04-30  9:44 ` [PULL 10/20] s390x: protvirt: SCLP interpretation Cornelia Huck
2020-04-30  9:44 ` [PULL 11/20] s390x: protvirt: Set guest IPL PSW Cornelia Huck
2020-04-30  9:44 ` [PULL 12/20] s390x: protvirt: Move diag 308 data over SIDA Cornelia Huck
2020-04-30  9:44 ` [PULL 13/20] s390x: protvirt: Disable address checks for PV guest IO emulation Cornelia Huck
2020-04-30  9:44 ` [PULL 14/20] s390x: protvirt: Move IO control structures over SIDA Cornelia Huck
2020-04-30  9:44 ` [PULL 15/20] s390x: protvirt: Handle SIGP store status correctly Cornelia Huck
2020-04-30  9:44 ` [PULL 16/20] docs: system: Add protvirt docs Cornelia Huck
2020-04-30  9:44 ` [PULL 17/20] s390x: Add unpack facility feature to GA1 Cornelia Huck
2020-04-30  9:44 ` [PULL 18/20] s390x: protvirt: Fix stray error_report_err in s390_machine_protect Cornelia Huck
2020-04-30  9:44 ` [PULL 19/20] s390x/pv: Retry ioctls on -EINTR Cornelia Huck
2020-04-30  9:44 ` Cornelia Huck [this message]
2020-04-30 13:54 ` [PULL 00/20] first set of s390x patches for 5.1 Peter Maydell
2020-04-30 15:36 ` no-reply

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=20200430094445.25943-21-cohuck@redhat.com \
    --to=cohuck@redhat.com \
    --cc=borntraeger@de.ibm.com \
    --cc=brogers@suse.com \
    --cc=david@redhat.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.