All of lore.kernel.org
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: qemu-devel@nongnu.org
Cc: dgilbert@redhat.com, lvivier@redhat.com, peterx@redhat.com
Subject: [Qemu-devel] [PULL 02/14] accel: introduce AccelClass.global_props
Date: Wed, 28 Jun 2017 13:30:54 +0200	[thread overview]
Message-ID: <20170628113106.5248-3-quintela@redhat.com> (raw)
In-Reply-To: <20170628113106.5248-1-quintela@redhat.com>

From: Peter Xu <peterx@redhat.com>

Introduce this new field for the accelerator classes so that each
specific accelerator in the future can register its own global
properties to be used further by the system. It works just like how the
old machine compatible properties do, but only tailored for
accelerators.

Introduce register_compat_props_array() for it. Export it so that it may
be used in other codes as well in the future.

Suggested-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
Message-Id: <1498536619-14548-3-git-send-email-peterx@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
 accel/accel.c                |  6 ++++++
 hw/core/qdev-properties.c    |  7 +++++++
 include/hw/qdev-properties.h |  6 ++++++
 include/sysemu/accel.h       | 11 +++++++++++
 vl.c                         |  1 +
 5 files changed, 31 insertions(+)

diff --git a/accel/accel.c b/accel/accel.c
index 7c079a5..fa85844 100644
--- a/accel/accel.c
+++ b/accel/accel.c
@@ -120,6 +120,12 @@ void configure_accelerator(MachineState *ms)
     }
 }
 
+void accel_register_compat_props(AccelState *accel)
+{
+    AccelClass *class = ACCEL_GET_CLASS(accel);
+    register_compat_props_array(class->global_props);
+}
+
 static void register_accel_types(void)
 {
     type_register_static(&accel_type);
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index adf62ad..f11d578 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -1098,6 +1098,13 @@ void register_compat_prop(const char *driver,
     qdev_prop_register_global(p);
 }
 
+void register_compat_props_array(GlobalProperty *prop)
+{
+    for (; prop && prop->driver; prop++) {
+        register_compat_prop(prop->driver, prop->property, prop->value);
+    }
+}
+
 void qdev_prop_register_global_list(GlobalProperty *props)
 {
     int i;
diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h
index 50ade83..0604c33 100644
--- a/include/hw/qdev-properties.h
+++ b/include/hw/qdev-properties.h
@@ -231,6 +231,12 @@ void error_set_from_qdev_prop_error(Error **errp, int ret, DeviceState *dev,
  */
 void register_compat_prop(const char *driver, const char *property,
                           const char *value);
+/*
+ * register_compat_props_array(): using register_compat_prop(), which
+ * only registers internal global properties (which has lower priority
+ * than user-provided global properties)
+ */
+void register_compat_props_array(GlobalProperty *prop);
 
 /**
  * qdev_property_add_static:
diff --git a/include/sysemu/accel.h b/include/sysemu/accel.h
index 15944c1..ecc5c84 100644
--- a/include/sysemu/accel.h
+++ b/include/sysemu/accel.h
@@ -24,6 +24,7 @@
 #define HW_ACCEL_H
 
 #include "qom/object.h"
+#include "hw/qdev-properties.h"
 
 typedef struct AccelState {
     /*< private >*/
@@ -40,6 +41,14 @@ typedef struct AccelClass {
     int (*available)(void);
     int (*init_machine)(MachineState *ms);
     bool *allowed;
+    /*
+     * Array of global properties that would be applied when specific
+     * accelerator is chosen. It works like MachineClass.compat_props
+     * but it's for accelerators not machines. Accelerator-provided
+     * global properties may be overridden by machine-type
+     * compat_props or user-provided global properties.
+     */
+    GlobalProperty *global_props;
 } AccelClass;
 
 #define TYPE_ACCEL "accel"
@@ -57,5 +66,7 @@ typedef struct AccelClass {
 extern int tcg_tb_size;
 
 void configure_accelerator(MachineState *ms);
+/* Register accelerator specific global properties */
+void accel_register_compat_props(AccelState *accel);
 
 #endif
diff --git a/vl.c b/vl.c
index 59fea15..4452d7a 100644
--- a/vl.c
+++ b/vl.c
@@ -4571,6 +4571,7 @@ int main(int argc, char **argv, char **envp)
             exit (i == 1 ? 1 : 0);
     }
 
+    accel_register_compat_props(current_machine->accelerator);
     machine_register_compat_props(current_machine);
 
     qemu_opts_foreach(qemu_find_opts("global"),
-- 
2.9.4

  parent reply	other threads:[~2017-06-28 11:31 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-28 11:30 [Qemu-devel] [PULL 00/14] Migration pull request for 20170628 Juan Quintela
2017-06-28 11:30 ` [Qemu-devel] [PULL 01/14] machine: export register_compat_prop() Juan Quintela
2017-06-28 11:30 ` Juan Quintela [this message]
2017-06-28 11:30 ` [Qemu-devel] [PULL 03/14] vl: clean up global property registration Juan Quintela
2017-06-28 11:30 ` [Qemu-devel] [PULL 04/14] migration: let MigrationState be a qdev Juan Quintela
2017-06-30 21:18   ` Philippe Mathieu-Daudé
2017-06-30 21:27     ` Eric Blake
2017-07-03  1:24       ` Peter Xu
2017-06-28 11:30 ` [Qemu-devel] [PULL 05/14] migration: move global_state.optional out Juan Quintela
2017-06-28 11:30 ` [Qemu-devel] [PULL 06/14] migration: move only_migratable to MigrationState Juan Quintela
2017-06-28 11:30 ` [Qemu-devel] [PULL 07/14] migration: move skip_configuration out Juan Quintela
2017-06-28 11:31 ` [Qemu-devel] [PULL 08/14] migration: move skip_section_footers Juan Quintela
2017-06-28 11:31 ` [Qemu-devel] [PULL 09/14] migration: merge enforce_config_section somewhat Juan Quintela
2017-06-28 11:31 ` [Qemu-devel] [PULL 10/14] migration: hmp: dump globals Juan Quintela
2017-06-28 11:31 ` [Qemu-devel] [PULL 11/14] migration: add comment for TYPE_MIGRATE Juan Quintela
2017-06-28 11:31 ` [Qemu-devel] [PULL 12/14] vmstate: error hint for failed equal checks Juan Quintela
2017-06-28 11:31 ` [Qemu-devel] [PULL 13/14] migration: add "return-path" capability Juan Quintela
2017-06-28 11:31 ` [Qemu-devel] [PULL 14/14] exec: fix access to ram_list.dirty_memory when sync dirty bitmap Juan Quintela
2017-06-29 14:06 ` [Qemu-devel] [PULL 00/14] Migration pull request for 20170628 Peter Maydell

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=20170628113106.5248-3-quintela@redhat.com \
    --to=quintela@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=peterx@redhat.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 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.