qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: thuth@redhat.com, armbru@redhat.com
Subject: [PATCH 08/16] qom: introduce object_register_sugar_prop
Date: Wed, 13 Nov 2019 15:38:57 +0100	[thread overview]
Message-ID: <1573655945-14912-9-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1573655945-14912-1-git-send-email-pbonzini@redhat.com>

Similar to the existing "-rtc driftfix" option, we will convert some
legacy "-machine" command line options to global properties on accelerators.
Because accelerators are not devices, we cannot use qdev_prop_register_global.
Instead, provide a slot in the generic object_compat_props arrays for
command line syntactic sugar.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 include/qom/object.h |  1 +
 qom/object.c         | 23 +++++++++++++++++++++--
 vl.c                 | 10 +++-------
 3 files changed, 25 insertions(+), 9 deletions(-)

diff --git a/include/qom/object.h b/include/qom/object.h
index 128d00c..230b18f 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -679,6 +679,7 @@ void object_apply_global_props(Object *obj, const GPtrArray *props,
                                Error **errp);
 void object_set_machine_compat_props(GPtrArray *compat_props);
 void object_set_accelerator_compat_props(GPtrArray *compat_props);
+void object_register_sugar_prop(const char *driver, const char *prop, const char *value);
 void object_apply_compat_props(Object *obj);
 
 /**
diff --git a/qom/object.c b/qom/object.c
index 6fa9c61..c7825dd 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -414,10 +414,29 @@ void object_apply_global_props(Object *obj, const GPtrArray *props, Error **errp
  * Global property defaults
  * Slot 0: accelerator's global property defaults
  * Slot 1: machine's global property defaults
+ * Slot 2: global properties from legacy command line option
  * Each is a GPtrArray of of GlobalProperty.
  * Applied in order, later entries override earlier ones.
  */
-static GPtrArray *object_compat_props[2];
+static GPtrArray *object_compat_props[3];
+
+/*
+ * Retrieve @GPtrArray for global property defined with options
+ * other than "-global".  These are generally used for syntactic
+ * sugar and legacy command line options.
+ */
+void object_register_sugar_prop(const char *driver, const char *prop, const char *value)
+{
+    GlobalProperty *g;
+    if (!object_compat_props[2]) {
+        object_compat_props[2] = g_ptr_array_new();
+    }
+    g = g_new(GlobalProperty, 1);
+    g->driver = g_strdup(driver);
+    g->property = g_strdup(prop);
+    g->value = g_strdup(value);
+    g_ptr_array_add(object_compat_props[2], g);
+}
 
 /*
  * Set machine's global property defaults to @compat_props.
@@ -445,7 +464,7 @@ void object_apply_compat_props(Object *obj)
 
     for (i = 0; i < ARRAY_SIZE(object_compat_props); i++) {
         object_apply_global_props(obj, object_compat_props[i],
-                                  &error_abort);
+                                  i == 2 ? &error_fatal : &error_abort);
     }
 }
 
diff --git a/vl.c b/vl.c
index 843b263..cb993dd 100644
--- a/vl.c
+++ b/vl.c
@@ -896,13 +896,9 @@ static void configure_rtc(QemuOpts *opts)
     value = qemu_opt_get(opts, "driftfix");
     if (value) {
         if (!strcmp(value, "slew")) {
-            static GlobalProperty slew_lost_ticks = {
-                .driver   = "mc146818rtc",
-                .property = "lost_tick_policy",
-                .value    = "slew",
-            };
-
-            qdev_prop_register_global(&slew_lost_ticks);
+            object_register_sugar_prop("mc146818rtc",
+                                       "lost_tick_policy",
+                                       "slew");
         } else if (!strcmp(value, "none")) {
             /* discard is default */
         } else {
-- 
1.8.3.1




  parent reply	other threads:[~2019-11-13 14:47 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-13 14:38 [PATCH for-5.0 00/16] Complete the implementation of -accel Paolo Bonzini
2019-11-13 14:38 ` [PATCH 01/16] memory: do not look at current_machine->accel Paolo Bonzini
2019-11-14  8:56   ` Marc-André Lureau
2019-11-14  9:27     ` Paolo Bonzini
2019-11-14  9:31       ` Marc-André Lureau
2019-11-14  9:10   ` Thomas Huth
2019-11-14  9:35     ` Paolo Bonzini
2019-11-14  9:46       ` Thomas Huth
2019-11-14 10:21       ` Peter Maydell
2019-11-14 10:32         ` Paolo Bonzini
2019-11-14 10:40           ` Peter Maydell
2019-11-14 10:47             ` Paolo Bonzini
2019-11-13 14:38 ` [PATCH 02/16] vl: extract accelerator option processing to a separate function Paolo Bonzini
2019-11-14  7:55   ` Marc-André Lureau
2019-11-14  9:29     ` Paolo Bonzini
2019-11-18 10:58   ` Thomas Huth
2019-11-18 11:39     ` Paolo Bonzini
2019-11-13 14:38 ` [PATCH 03/16] vl: merge -accel processing into configure_accelerators Paolo Bonzini
2019-11-14  8:13   ` Marc-André Lureau
2019-11-18 11:27   ` Thomas Huth
2019-11-18 11:39     ` Paolo Bonzini
2019-11-18 15:12   ` Wainer dos Santos Moschetta
2019-11-13 14:38 ` [PATCH 04/16] vl: move icount configuration earlier Paolo Bonzini
2019-11-14  8:24   ` Marc-André Lureau
2019-11-18 11:53   ` Thomas Huth
2019-11-13 14:38 ` [PATCH 05/16] vl: introduce object_parse_property_opt Paolo Bonzini
2019-11-14  8:23   ` Marc-André Lureau
2019-11-14  9:46     ` Paolo Bonzini
2019-11-13 14:38 ` [PATCH 06/16] vl: configure accelerators from -accel options Paolo Bonzini
2019-11-18 17:59   ` Wainer dos Santos Moschetta
2019-11-13 14:38 ` [PATCH 07/16] vl: warn for unavailable accelerators, clarify messages Paolo Bonzini
2019-11-14  9:28   ` Marc-André Lureau
2019-11-13 14:38 ` Paolo Bonzini [this message]
2019-11-14  9:53   ` [PATCH 08/16] qom: introduce object_register_sugar_prop Marc-André Lureau
2019-11-14 10:03     ` Paolo Bonzini
2019-11-13 14:38 ` [PATCH 09/16] qom: add object_new_with_class Paolo Bonzini
2019-11-14  9:56   ` Marc-André Lureau
2019-11-13 14:38 ` [PATCH 10/16] accel: pass object to accel_init_machine Paolo Bonzini
2019-11-14 10:48   ` Marc-André Lureau
2019-11-13 14:39 ` [PATCH 11/16] tcg: convert "-accel threads" to a QOM property Paolo Bonzini
2019-11-14 11:08   ` Marc-André Lureau
2019-11-13 14:39 ` [PATCH 12/16] tcg: add "-accel tcg,tb-size" and deprecate "-tb-size" Paolo Bonzini
2019-11-19 10:44   ` Thomas Huth
2019-11-13 14:39 ` [PATCH 13/16] xen: convert "-machine igd-passthru" to an accelerator property Paolo Bonzini
2019-11-14  9:39   ` Paul Durrant
2019-11-14  9:47     ` Paolo Bonzini
2019-11-14  9:52       ` Paul Durrant
2019-11-19 11:02   ` Thomas Huth
2019-11-13 14:39 ` [PATCH 14/16] kvm: convert "-machine kvm_shadow_mem" " Paolo Bonzini
2019-11-19 11:33   ` Thomas Huth
2019-11-13 14:39 ` [PATCH 15/16] kvm: introduce kvm_kernel_irqchip_* functions Paolo Bonzini
2019-11-19 11:56   ` Thomas Huth
2019-11-19 12:13     ` Paolo Bonzini
2019-11-19 12:22       ` Thomas Huth
2019-11-13 14:39 ` [PATCH 16/16] kvm: convert "-machine kernel_irqchip" to an accelerator property Paolo Bonzini

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=1573655945-14912-9-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=armbru@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --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).