From: David Hildenbrand <dahi@linux.vnet.ibm.com>
To: qemu-devel@nongnu.org
Cc: ehabkost@redhat.com, jdenemar@redhat.com, imammedo@redhat.com,
cornelia.huck@de.ibm.com, borntraeger@de.ibm.com,
fiuczy@linux.vnet.ibm.com, mimu@linux.vnet.ibm.com
Subject: [Qemu-devel] [Patch v1 11/29] s390x/cpumodel: let the CPU model handle feature checks
Date: Tue, 2 Aug 2016 13:58:57 +0200 [thread overview]
Message-ID: <1470139155-53900-12-git-send-email-dahi@linux.vnet.ibm.com> (raw)
In-Reply-To: <1470139155-53900-1-git-send-email-dahi@linux.vnet.ibm.com>
If we have certain features enabled, we have to migrate additional state
(e.g. vector registers or runtime-instrumentation registers). Let the
CPU model control that unless we have no "host" CPU model in the KVM
case. This will later on be the case for compatibility machines, so
migration from QEMU versions without the CPU model will still work.
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
---
target-s390x/cpu_models.c | 24 ++++++++++++++++++++++++
target-s390x/cpu_models.h | 2 ++
target-s390x/machine.c | 14 ++------------
3 files changed, 28 insertions(+), 12 deletions(-)
diff --git a/target-s390x/cpu_models.c b/target-s390x/cpu_models.c
index 9532b46..b698b80 100644
--- a/target-s390x/cpu_models.c
+++ b/target-s390x/cpu_models.c
@@ -73,6 +73,30 @@ static const S390CPUDef s390_cpu_defs[] = {
CPUDEF_INIT(0x2965, 13, 2, 47, 0x08000000U, "z13s", "IBM z13s GA1"),
};
+bool s390_has_feat(S390Feat feat)
+{
+ static S390CPU *cpu;
+
+ if (!cpu) {
+ cpu = S390_CPU(qemu_get_cpu(0));
+ }
+
+ if (!cpu || !cpu->model) {
+#ifdef CONFIG_KVM
+ if (kvm_enabled()) {
+ if (feat == S390_FEAT_VECTOR) {
+ return kvm_check_extension(kvm_state, KVM_CAP_S390_VECTOR_REGISTERS);
+ }
+ if (feat == S390_FEAT_RUNTIME_INSTRUMENTATION) {
+ return kvm_s390_get_ri();
+ }
+ }
+#endif
+ return 0;
+ }
+ return test_bit(feat, cpu->model->features);
+}
+
struct S390PrintCpuListInfo {
FILE *f;
fprintf_function print;
diff --git a/target-s390x/cpu_models.h b/target-s390x/cpu_models.h
index 244256b..fe988cc 100644
--- a/target-s390x/cpu_models.h
+++ b/target-s390x/cpu_models.h
@@ -43,4 +43,6 @@ typedef struct S390CPUModel {
uint8_t cpu_ver; /* CPU version, usually "ff" for kvm */
} S390CPUModel;
+bool s390_has_feat(S390Feat feat);
+
#endif /* TARGET_S390X_CPU_MODELS_H */
diff --git a/target-s390x/machine.c b/target-s390x/machine.c
index aa39e5d..edc3a47 100644
--- a/target-s390x/machine.c
+++ b/target-s390x/machine.c
@@ -78,12 +78,7 @@ static const VMStateDescription vmstate_fpu = {
static bool vregs_needed(void *opaque)
{
-#ifdef CONFIG_KVM
- if (kvm_enabled()) {
- return kvm_check_extension(kvm_state, KVM_CAP_S390_VECTOR_REGISTERS);
- }
-#endif
- return 0;
+ return s390_has_feat(S390_FEAT_VECTOR);
}
static const VMStateDescription vmstate_vregs = {
@@ -147,12 +142,7 @@ static const VMStateDescription vmstate_vregs = {
static bool riccb_needed(void *opaque)
{
-#ifdef CONFIG_KVM
- if (kvm_enabled()) {
- return kvm_s390_get_ri();
- }
-#endif
- return 0;
+ return s390_has_feat(S390_FEAT_RUNTIME_INSTRUMENTATION);
}
const VMStateDescription vmstate_riccb = {
--
2.6.6
next prev parent reply other threads:[~2016-08-02 11:59 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-02 11:58 [Qemu-devel] [Patch v1 00/29] s390x CPU models: exposing features David Hildenbrand
2016-08-02 11:58 ` [Qemu-devel] [Patch v1 01/29] qmp: details about CPU definitions in query-cpu-definitions David Hildenbrand
2016-08-02 13:04 ` Eduardo Habkost
2016-08-02 13:23 ` David Hildenbrand
2016-08-02 14:00 ` Eduardo Habkost
2016-08-02 14:27 ` David Hildenbrand
2016-08-02 14:49 ` Eduardo Habkost
2016-08-02 14:53 ` David Hildenbrand
2016-08-02 11:58 ` [Qemu-devel] [Patch v1 02/29] s390x/cpumodel: "host" and "qemu" as CPU subclasses David Hildenbrand
2016-08-02 11:58 ` [Qemu-devel] [Patch v1 03/29] s390x/cpumodel: expose CPU class properties David Hildenbrand
2016-08-02 11:58 ` [Qemu-devel] [Patch v1 04/29] s390x/cpumodel: introduce CPU features David Hildenbrand
2016-08-02 11:58 ` [Qemu-devel] [Patch v1 05/29] s390x/cpumodel: generate CPU feature lists for CPU models David Hildenbrand
2016-08-02 11:58 ` [Qemu-devel] [Patch v1 06/29] s390x/cpumodel: generate CPU feature group lists David Hildenbrand
2016-08-02 11:58 ` [Qemu-devel] [Patch v1 07/29] s390x/cpumodel: introduce CPU feature group definitions David Hildenbrand
2016-08-02 11:58 ` [Qemu-devel] [Patch v1 08/29] s390x/cpumodel: register defined CPU models as subclasses David Hildenbrand
2016-08-02 11:58 ` [Qemu-devel] [Patch v1 09/29] s390x/cpumodel: store the CPU model in the CPU instance David Hildenbrand
2016-08-02 11:58 ` [Qemu-devel] [Patch v1 10/29] s390x/cpumodel: expose features and feature groups as properties David Hildenbrand
2016-08-02 11:58 ` David Hildenbrand [this message]
2016-08-02 11:58 ` [Qemu-devel] [Patch v1 12/29] s390x/cpumodel: check and apply the CPU model David Hildenbrand
2016-08-02 11:58 ` [Qemu-devel] [Patch v1 13/29] s390x/sclp: factor out preparation of cpu entries David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 14/29] s390x/sclp: introduce sclp feature blocks David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 15/29] s390x/sclp: indicate sclp features David Hildenbrand
2016-08-02 12:31 ` Thomas Huth
2016-08-02 13:00 ` David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 16/29] s390x/sclp: propagate the ibc val(lowest and unblocked ibc) David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 17/29] s390x/sclp: propagate the mha via sclp David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 18/29] s390x/sclp: propagate hmfai David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 19/29] linux-headers: update against kvm/next David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 20/29] s390x/kvm: allow runtime-instrumentation for "none" machine David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 21/29] s390x/kvm: implement CPU model support David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 22/29] s390x/kvm: disable host model for existing compat machines David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 23/29] s390x/kvm: let the CPU model control CMM(A) David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 24/29] qmp: add QMP interface "query-cpu-model-expansion" David Hildenbrand
2016-08-02 13:45 ` Eduardo Habkost
2016-08-02 15:04 ` David Hildenbrand
2016-08-02 15:38 ` Eduardo Habkost
2016-08-03 7:02 ` David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 25/29] qmp: add QMP interface "query-cpu-model-comparison" David Hildenbrand
2016-08-02 14:45 ` Eduardo Habkost
2016-08-02 15:15 ` David Hildenbrand
2016-08-02 15:47 ` Eduardo Habkost
2016-08-03 7:09 ` David Hildenbrand
2016-08-03 17:39 ` Eduardo Habkost
2016-08-04 7:34 ` David Hildenbrand
2016-08-04 14:36 ` Eduardo Habkost
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 26/29] qmp: add QMP interface "query-cpu-model-baseline" David Hildenbrand
2016-08-04 7:32 ` David Hildenbrand
2016-08-04 14:36 ` Eduardo Habkost
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 27/29] s390x/cpumodel: implement QMP interface "query-cpu-model-expansion" David Hildenbrand
2016-08-02 14:22 ` Eduardo Habkost
2016-08-02 14:28 ` David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 28/29] s390x/cpumodel: implement QMP interface "query-cpu-model-comparison" David Hildenbrand
2016-08-02 11:59 ` [Qemu-devel] [Patch v1 29/29] s390x/cpumodel: implement QMP interface "query-cpu-model-baseline" David Hildenbrand
2016-08-02 17:28 ` [Qemu-devel] [Patch v1 00/29] s390x CPU models: exposing features Eduardo Habkost
2016-08-02 18:12 ` David Hildenbrand
2016-08-02 20:14 ` Eduardo Habkost
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=1470139155-53900-12-git-send-email-dahi@linux.vnet.ibm.com \
--to=dahi@linux.vnet.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=cornelia.huck@de.ibm.com \
--cc=ehabkost@redhat.com \
--cc=fiuczy@linux.vnet.ibm.com \
--cc=imammedo@redhat.com \
--cc=jdenemar@redhat.com \
--cc=mimu@linux.vnet.ibm.com \
--cc=qemu-devel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).