From: Halil Pasic <pasic@linux.vnet.ibm.com>
To: Christian Borntraeger <borntraeger@de.ibm.com>,
Cornelia Huck <cohuck@redhat.com>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
"Jason J . Herne" <jjherne@linux.vnet.ibm.com>,
Juan Quintela <quintela@redhat.com>,
Cornelia Huck <cornelia.huck@de.ibm.com>,
Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>,
Thomas Huth <thuth@redhat.com>,
qemu-devel@nongnu.org, Halil Pasic <pasic@linux.vnet.ibm.com>
Subject: [Qemu-devel] [PATCH v3 1/6] s390x: add helper get_machine_class
Date: Tue, 11 Jul 2017 16:54:36 +0200 [thread overview]
Message-ID: <20170711145441.33925-2-pasic@linux.vnet.ibm.com> (raw)
In-Reply-To: <20170711145441.33925-1-pasic@linux.vnet.ibm.com>
We will need the machine class at machine initialization time, so the
usual way via qdev won't do. Let's cache the machine class and also use
the default values of the base machine for capability discovery.
Signed-off-by: Halil Pasic <pasic@linux.vnet.ibm.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
---
hw/s390x/s390-virtio-ccw.c | 46 +++++++++++++++++++++++-----------------------
1 file changed, 23 insertions(+), 23 deletions(-)
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 41ca6668e2..1eb17ad184 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -252,36 +252,35 @@ static inline void machine_set_dea_key_wrap(Object *obj, bool value,
ms->dea_key_wrap = value;
}
-bool ri_allowed(void)
-{
- if (kvm_enabled()) {
- MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine());
- if (object_class_dynamic_cast(OBJECT_CLASS(mc),
- TYPE_S390_CCW_MACHINE)) {
- S390CcwMachineClass *s390mc = S390_MACHINE_CLASS(mc);
+static S390CcwMachineClass *current_mc;
- return s390mc->ri_allowed;
- }
+static S390CcwMachineClass *get_machine_class(void)
+{
+ if (unlikely(!current_mc)) {
/*
- * Make sure the "none" machine can have ri, otherwise it won't * be
- * unlocked in KVM and therefore the host CPU model might be wrong.
- */
- return true;
+ * No s390 ccw machine was instantiated, we are likely to
+ * be called for the 'none' machine. The properties will
+ * have their after-initialization values.
+ */
+ current_mc = S390_MACHINE_CLASS(
+ object_class_by_name(TYPE_S390_CCW_MACHINE));
}
- return 0;
+ return current_mc;
}
-bool cpu_model_allowed(void)
+bool ri_allowed(void)
{
- MachineClass *mc = MACHINE_GET_CLASS(qdev_get_machine());
- if (object_class_dynamic_cast(OBJECT_CLASS(mc),
- TYPE_S390_CCW_MACHINE)) {
- S390CcwMachineClass *s390mc = S390_MACHINE_CLASS(mc);
-
- return s390mc->cpu_model_allowed;
+ if (!kvm_enabled()) {
+ return false;
}
- /* allow CPU model qmp queries with the "none" machine */
- return true;
+ /* for "none" machine this results in true */
+ return get_machine_class()->ri_allowed;
+}
+
+bool cpu_model_allowed(void)
+{
+ /* for "none" machine this results in true */
+ return get_machine_class()->cpu_model_allowed;
}
static char *machine_get_loadparm(Object *obj, Error **errp)
@@ -391,6 +390,7 @@ static const TypeInfo ccw_machine_info = {
static void ccw_machine_##suffix##_instance_init(Object *obj) \
{ \
MachineState *machine = MACHINE(obj); \
+ current_mc = S390_MACHINE_CLASS(MACHINE_GET_CLASS(machine)); \
ccw_machine_##suffix##_instance_options(machine); \
} \
static const TypeInfo ccw_machine_##suffix##_info = { \
--
2.11.2
next prev parent reply other threads:[~2017-07-11 14:54 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-11 14:54 [Qemu-devel] [PATCH v3 0/6] migration: s390x css migration Halil Pasic
2017-07-11 14:54 ` Halil Pasic [this message]
2017-07-11 14:54 ` [Qemu-devel] [PATCH v3 2/6] s390x: add css_migration_enabled to machine class Halil Pasic
2017-07-11 14:54 ` [Qemu-devel] [PATCH v3 3/6] s390x/css: add missing css state conditionally Halil Pasic
2017-07-11 14:54 ` [Qemu-devel] [PATCH v3 4/6] s390x/css: add ORB to SubchDev Halil Pasic
2017-07-11 14:54 ` [Qemu-devel] [PATCH v3 5/6] s390x/css: activate ChannelSubSys migration Halil Pasic
2017-10-03 11:58 ` Thomas Huth
2017-10-04 8:16 ` Cornelia Huck
2017-10-04 9:36 ` Halil Pasic
2017-07-11 14:54 ` [Qemu-devel] [PATCH v3 6/6] s390x/css: use SubchDev.orb Halil Pasic
2017-07-12 7:58 ` [Qemu-devel] [PATCH v3 0/6] migration: s390x css migration Cornelia Huck
2017-07-12 8:01 ` Christian Borntraeger
2017-07-12 11:06 ` Halil Pasic
2017-07-12 11:15 ` Christian Borntraeger
2017-07-12 11:29 ` Christian Borntraeger
2017-07-12 12:50 ` Dr. David Alan Gilbert
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=20170711145441.33925-2-pasic@linux.vnet.ibm.com \
--to=pasic@linux.vnet.ibm.com \
--cc=bjsdjshi@linux.vnet.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=cornelia.huck@de.ibm.com \
--cc=dgilbert@redhat.com \
--cc=jjherne@linux.vnet.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=thuth@redhat.com \
/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).