[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 12/40] s390x: add helper get_machine_class
From: |
Christian Borntraeger |
Subject: |
[Qemu-devel] [PULL 12/40] s390x: add helper get_machine_class |
Date: |
Fri, 14 Jul 2017 12:40:39 +0200 |
From: Halil Pasic <address@hidden>
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 <address@hidden>
Acked-by: Cornelia Huck <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Christian Borntraeger <address@hidden>
---
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 0c8f758..df2b055 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -255,36 +255,35 @@ static inline void machine_set_dea_key_wrap(Object *obj,
bool value,
ms->dea_key_wrap = value;
}
+static S390CcwMachineClass *current_mc;
+
+static S390CcwMachineClass *get_machine_class(void)
+{
+ if (unlikely(!current_mc)) {
+ /*
+ * 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 current_mc;
+}
+
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);
-
- return s390mc->ri_allowed;
- }
- /*
- * 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;
+ if (!kvm_enabled()) {
+ return false;
}
- return 0;
+ /* for "none" machine this results in true */
+ return get_machine_class()->ri_allowed;
}
bool cpu_model_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;
- }
- /* allow CPU model qmp queries with the "none" machine */
- return true;
+ /* for "none" machine this results in true */
+ return get_machine_class()->cpu_model_allowed;
}
static char *machine_get_loadparm(Object *obj, Error **errp)
@@ -394,6 +393,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.7.4
- [Qemu-devel] [PULL 11/40] s390x/css: update css_adapter_interrupt, (continued)
- [Qemu-devel] [PULL 11/40] s390x/css: update css_adapter_interrupt, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 08/40] s390x/flic: introduce modify_ais_mode callback, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 21/40] pc-bios/s390-ccw: Add a write() function for stdio, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 32/40] s390x/cpumodel: add zpci, aen and ais facilities, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 24/40] pc-bios/s390-ccw: Add code for virtio feature negotiation, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 31/40] s390x: initialize cpu firstly, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 16/40] s390x/css: activate ChannelSubSys migration, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 34/40] s390x/cpumodel: wire up new hardware features, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 33/40] s390x/flic: migrate ais states, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 04/40] s390x/migration: Monitor commands for storage attributes, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 12/40] s390x: add helper get_machine_class,
Christian Borntraeger <=
- [Qemu-devel] [PULL 10/40] s390x/sic: realize SIC handling, Christian Borntraeger, 2017/07/14
- [Qemu-devel] [PULL 29/40] pc-bios/s390: add s390-netboot.img, Christian Borntraeger, 2017/07/14
- Re: [Qemu-devel] [PULL 00/40] s390x: fixes, enhancements for 2.10 softfreeze, Peter Maydell, 2017/07/14