From: Peter Xu <peterx@redhat.com>
To: qemu-devel@nongnu.org
Cc: Eduardo Habkost <ehabkost@redhat.com>,
Laurent Vivier <lvivier@redhat.com>,
Eric Blake <eblake@redhat.com>,
Markus Armbruster <armbru@redhat.com>,
Juan Quintela <quintela@redhat.com>,
"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
peterx@redhat.com
Subject: [Qemu-devel] [PATCH v5 02/10] accel: introduce AccelClass.global_props
Date: Fri, 23 Jun 2017 12:46:38 +0800 [thread overview]
Message-ID: <1498193206-18007-3-git-send-email-peterx@redhat.com> (raw)
In-Reply-To: <1498193206-18007-1-git-send-email-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>
---
accel/accel.c | 6 ++++++
hw/core/qdev-properties.c | 7 +++++++
include/hw/qdev-properties.h | 1 +
include/sysemu/accel.h | 10 ++++++++++
vl.c | 1 +
5 files changed, 25 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 6ff1ac3..19fa335 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -1060,6 +1060,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 1722ca4..2bac6a0 100644
--- a/include/hw/qdev-properties.h
+++ b/include/hw/qdev-properties.h
@@ -203,6 +203,7 @@ 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);
+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..effcd7f 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,13 @@ 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 just like
+ * MachineClass.compat_props but it's for accelerators not
+ * machines.
+ */
+ GlobalProperty *global_props;
} AccelClass;
#define TYPE_ACCEL "accel"
@@ -57,5 +65,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.7.4
next prev parent reply other threads:[~2017-06-23 4:47 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-23 4:46 [Qemu-devel] [PATCH v5 00/10] migration: objectify MigrationState Peter Xu
2017-06-23 4:46 ` [Qemu-devel] [PATCH v5 01/10] machine: export register_compat_prop() Peter Xu
2017-06-23 21:24 ` Eduardo Habkost
2017-06-26 2:36 ` Peter Xu
2017-06-23 4:46 ` Peter Xu [this message]
2017-06-23 21:31 ` [Qemu-devel] [PATCH v5 02/10] accel: introduce AccelClass.global_props Eduardo Habkost
2017-06-26 2:39 ` Peter Xu
2017-06-27 0:50 ` Eduardo Habkost
2017-06-23 4:46 ` [Qemu-devel] [PATCH v5 03/10] vl: clean up global property registerations Peter Xu
2017-06-23 21:35 ` Eduardo Habkost
2017-06-26 2:40 ` Peter Xu
2017-06-23 4:46 ` [Qemu-devel] [PATCH v5 04/10] migration: let MigrationState be a qdev Peter Xu
2017-06-23 22:18 ` Eduardo Habkost
2017-06-26 2:50 ` Peter Xu
2017-06-27 0:54 ` Eduardo Habkost
2017-06-23 4:46 ` [Qemu-devel] [PATCH v5 05/10] migration: move global_state.optional out Peter Xu
2017-06-23 22:19 ` Eduardo Habkost
2017-06-26 2:51 ` Peter Xu
2017-06-23 4:46 ` [Qemu-devel] [PATCH v5 06/10] migration: move only_migratable to MigrationState Peter Xu
2017-06-23 4:46 ` [Qemu-devel] [PATCH v5 07/10] migration: move skip_configuration out Peter Xu
2017-06-23 4:46 ` [Qemu-devel] [PATCH v5 08/10] migration: move skip_section_footers Peter Xu
2017-06-23 4:46 ` [Qemu-devel] [PATCH v5 09/10] migration: merge enforce_config_section somewhat Peter Xu
2017-06-23 4:46 ` [Qemu-devel] [PATCH v5 10/10] migration: hmp: dump globals Peter Xu
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=1498193206-18007-3-git-send-email-peterx@redhat.com \
--to=peterx@redhat.com \
--cc=armbru@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=ehabkost@redhat.com \
--cc=lvivier@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@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).