* [Qemu-devel] [PULL 01/24] hostmem-file: remove object id from pmem error message
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 02/24] hw/timer/sun4v-rtc: Fix tracing at sun4v_rtc_write() Eduardo Habkost
` (24 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Zhang Yi
From: Zhang Yi <yi.z.zhang@linux.intel.com>
We will never get the canonical path from the object
before object_property_add_child.
Signed-off-by: Zhang Yi <yi.z.zhang@linux.intel.com>
Message-Id: <a6491f996827f4039c1a52198ed5dcc7727cb0f9.1540389255.git.yi.z.zhang@linux.intel.com>
[ehabkost: reword commit message]
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
backends/hostmem-file.c | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c
index 6630021226..78f058dee2 100644
--- a/backends/hostmem-file.c
+++ b/backends/hostmem-file.c
@@ -145,26 +145,20 @@ static void file_memory_backend_set_pmem(Object *o, bool value, Error **errp)
HostMemoryBackendFile *fb = MEMORY_BACKEND_FILE(o);
if (host_memory_backend_mr_inited(backend)) {
- char *path = object_get_canonical_path_component(o);
- error_setg(errp, "cannot change property 'pmem' of %s '%s'",
- object_get_typename(o),
- path);
- g_free(path);
+ error_setg(errp, "cannot change property 'pmem' of %s.",
+ object_get_typename(o));
return;
}
#ifndef CONFIG_LIBPMEM
if (value) {
Error *local_err = NULL;
- char *path = object_get_canonical_path_component(o);
error_setg(&local_err,
"Lack of libpmem support while setting the 'pmem=on'"
- " of %s '%s'. We can't ensure data persistence.",
- object_get_typename(o),
- path);
- g_free(path);
+ " of %s. We can't ensure data persistence.",
+ object_get_typename(o));
error_propagate(errp, local_err);
return;
}
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 02/24] hw/timer/sun4v-rtc: Fix tracing at sun4v_rtc_write()
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 01/24] hostmem-file: remove object id from pmem error message Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 03/24] docs: Document vCPU hotplug procedure Eduardo Habkost
` (23 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Philippe Mathieu-Daudé
The code was converted to use sun4v_rtc_read() by mistake, fix
it.
Reported-by: David Gibson <david@gibson.dropbear.id.au>
Cc: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20181031001843.12892-1-ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
hw/timer/sun4v-rtc.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/timer/sun4v-rtc.c b/hw/timer/sun4v-rtc.c
index 4e7f6a1eff..b93cbd6a81 100644
--- a/hw/timer/sun4v-rtc.c
+++ b/hw/timer/sun4v-rtc.c
@@ -41,7 +41,7 @@ static uint64_t sun4v_rtc_read(void *opaque, hwaddr addr,
static void sun4v_rtc_write(void *opaque, hwaddr addr,
uint64_t val, unsigned size)
{
- trace_sun4v_rtc_read(addr, val);
+ trace_sun4v_rtc_write(addr, val);
}
static const MemoryRegionOps sun4v_rtc_ops = {
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 03/24] docs: Document vCPU hotplug procedure
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 01/24] hostmem-file: remove object id from pmem error message Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 02/24] hw/timer/sun4v-rtc: Fix tracing at sun4v_rtc_write() Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 04/24] Deprecate QMP `cpu-add` Eduardo Habkost
` (22 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Kashyap Chamarthy
From: Kashyap Chamarthy <kchamart@redhat.com>
Signed-off-by: Kashyap Chamarthy <kchamart@redhat.com>
Message-Id: <20181030123526.26415-4-kchamart@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
docs/cpu-hotplug.rst | 142 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 142 insertions(+)
create mode 100644 docs/cpu-hotplug.rst
diff --git a/docs/cpu-hotplug.rst b/docs/cpu-hotplug.rst
new file mode 100644
index 0000000000..1c268e00b4
--- /dev/null
+++ b/docs/cpu-hotplug.rst
@@ -0,0 +1,142 @@
+===================
+Virtual CPU hotplug
+===================
+
+A complete example of vCPU hotplug (and hot-unplug) using QMP
+``device_add`` and ``device_del``.
+
+vCPU hotplug
+------------
+
+(1) Launch QEMU as follows (note that the "maxcpus" is mandatory to
+ allow vCPU hotplug)::
+
+ $ qemu-system-x86_64 -display none -no-user-config -m 2048 \
+ -nodefaults -monitor stdio -machine pc,accel=kvm,usb=off \
+ -smp 1,maxcpus=2 -cpu IvyBridge-IBRS \
+ -qmp unix:/tmp/qmp-sock,server,nowait
+
+(2) Run 'qmp-shell' (located in the source tree, under: "scripts/qmp/)
+ to connect to the just-launched QEMU::
+
+ $> ./qmp-shell -p -v /tmp/qmp-sock
+ [...]
+ (QEMU)
+
+(3) Find out which CPU types could be plugged, and into which sockets::
+
+ (QEMU) query-hotpluggable-cpus
+ {
+ "execute": "query-hotpluggable-cpus",
+ "arguments": {}
+ }
+ {
+ "return": [
+ {
+ "type": "IvyBridge-IBRS-x86_64-cpu",
+ "vcpus-count": 1,
+ "props": {
+ "socket-id": 1,
+ "core-id": 0,
+ "thread-id": 0
+ }
+ },
+ {
+ "qom-path": "/machine/unattached/device[0]",
+ "type": "IvyBridge-IBRS-x86_64-cpu",
+ "vcpus-count": 1,
+ "props": {
+ "socket-id": 0,
+ "core-id": 0,
+ "thread-id": 0
+ }
+ }
+ ]
+ }
+ (QEMU)
+
+(4) The ``query-hotpluggable-cpus`` command returns an object for CPUs
+ that are present (containing a "qom-path" member) or which may be
+ hot-plugged (no "qom-path" member). From its output in step (3), we
+ can see that ``IvyBridge-IBRS-x86_64-cpu`` is present in socket 0,
+ while hot-plugging a CPU into socket 1 requires passing the listed
+ properties to QMP ``device_add``:
+
+ (QEMU) device_add id=cpu-2 driver=IvyBridge-IBRS-x86_64-cpu socket-id=1 core-id=0 thread-id=0
+ {
+ "execute": "device_add",
+ "arguments": {
+ "socket-id": 1,
+ "driver": "IvyBridge-IBRS-x86_64-cpu",
+ "id": "cpu-2",
+ "core-id": 0,
+ "thread-id": 0
+ }
+ }
+ {
+ "return": {}
+ }
+ (QEMU)
+
+(5) Optionally, run QMP `query-cpus-fast` for some details about the
+ vCPUs::
+
+ (QEMU) query-cpus-fast
+ {
+ "execute": "query-cpus-fast",
+ "arguments": {}
+ }
+ {
+ "return": [
+ {
+ "qom-path": "/machine/unattached/device[0]",
+ "target": "x86_64",
+ "thread-id": 11534,
+ "cpu-index": 0,
+ "props": {
+ "socket-id": 0,
+ "core-id": 0,
+ "thread-id": 0
+ },
+ "arch": "x86"
+ },
+ {
+ "qom-path": "/machine/peripheral/cpu-2",
+ "target": "x86_64",
+ "thread-id": 12106,
+ "cpu-index": 1,
+ "props": {
+ "socket-id": 1,
+ "core-id": 0,
+ "thread-id": 0
+ },
+ "arch": "x86"
+ }
+ ]
+ }
+ (QEMU)
+
+vCPU hot-unplug
+---------------
+
+From the 'qmp-shell', invoke the QMP ``device_del`` command::
+
+ (QEMU) device_del id=cpu-2
+ {
+ "execute": "device_del",
+ "arguments": {
+ "id": "cpu-2"
+ }
+ }
+ {
+ "return": {}
+ }
+ (QEMU)
+
+.. note::
+ vCPU hot-unplug requires guest cooperation; so the ``device_del``
+ command above does not guarantee vCPU removal -- it's a "request to
+ unplug". At this point, the guest will get a System Control
+ Interupt (SCI) and calls the ACPI handler for the affected vCPU
+ device. Then the guest kernel will bring the vCPU offline and tell
+ QEMU to unplug it.
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 04/24] Deprecate QMP `cpu-add`
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (2 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 03/24] docs: Document vCPU hotplug procedure Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 05/24] Deprecate HMP `cpu-add` Eduardo Habkost
` (21 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Kashyap Chamarthy
From: Kashyap Chamarthy <kchamart@redhat.com>
The intended functionality of QMP `cpu-add` is replaced with
`device_add` (and `query-hotpluggable-cpus`). So let's deprecate
`cpu-add`.
A complete example of vCPU hotplug with the recommended way (using
`device_add`) is provided as part of a seperate docs patch.
Suggested-by: Eduardo Habkost <ehabkost@redhat.com
Signed-off-by: Kashyap Chamarthy <kchamart@redhat.com>
Message-Id: <20181030123526.26415-2-kchamart@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
qapi/misc.json | 8 +++++++-
qemu-deprecated.texi | 5 +++++
2 files changed, 12 insertions(+), 1 deletion(-)
diff --git a/qapi/misc.json b/qapi/misc.json
index 6c1c5c0a37..45121492dd 100644
--- a/qapi/misc.json
+++ b/qapi/misc.json
@@ -1109,7 +1109,7 @@
##
# @cpu-add:
#
-# Adds CPU with specified ID
+# Adds CPU with specified ID.
#
# @id: ID of CPU to be created, valid values [0..max_cpus)
#
@@ -1117,6 +1117,10 @@
#
# Since: 1.5
#
+# Note: This command is deprecated. The `device_add` command should be
+# used instead. See the `query-hotpluggable-cpus` command for
+# details.
+#
# Example:
#
# -> { "execute": "cpu-add", "arguments": { "id": 2 } }
@@ -3219,6 +3223,8 @@
##
# @query-hotpluggable-cpus:
#
+# TODO: Better documentation; currently there is none.
+#
# Returns: a list of HotpluggableCPU objects.
#
# Since: 2.7
diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
index cb4291f1e5..72b8191d60 100644
--- a/qemu-deprecated.texi
+++ b/qemu-deprecated.texi
@@ -121,6 +121,11 @@ replaced by the ``target'' output member.
The @option{[hub_id name]} parameter tuple of the 'hostfwd_add' and
'hostfwd_remove' HMP commands has been replaced by @option{netdev_id}.
+@subsection cpu-add (since 3.1)
+
+Use ``device_add'' for hotplugging vCPUs instead of ``cpu-add''. See
+documentation of ``query-hotpluggable-cpus'' for additional details.
+
@section System emulator devices
@subsection ivshmem (since 2.6.0)
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 05/24] Deprecate HMP `cpu-add`
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (3 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 04/24] Deprecate QMP `cpu-add` Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 06/24] range: pass const pointer where possible Eduardo Habkost
` (20 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Kashyap Chamarthy
From: Kashyap Chamarthy <kchamart@redhat.com>
Since we're deprecating the QMP `cpu-add`, let's deprecate its HMP
equivalent, too.
Suggested-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Kashyap Chamarthy <kchamart@redhat.com>
Message-Id: <20181030123526.26415-3-kchamart@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
hmp.c | 2 ++
hmp-commands.hx | 6 ++++--
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/hmp.c b/hmp.c
index 7828f93a39..43ae9ec61a 100644
--- a/hmp.c
+++ b/hmp.c
@@ -2372,6 +2372,8 @@ void hmp_cpu_add(Monitor *mon, const QDict *qdict)
int cpuid;
Error *err = NULL;
+ error_report("cpu_add is deprecated, please use device_add instead");
+
cpuid = qdict_get_int(qdict, "id");
qmp_cpu_add(cpuid, &err);
hmp_handle_error(mon, &err);
diff --git a/hmp-commands.hx b/hmp-commands.hx
index db0c681f74..ba71558c25 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -1849,14 +1849,16 @@ ETEXI
.name = "cpu-add",
.args_type = "id:i",
.params = "id",
- .help = "add cpu",
+ .help = "add cpu (deprecated, use device_add instead)",
.cmd = hmp_cpu_add,
},
STEXI
@item cpu-add @var{id}
@findex cpu-add
-Add CPU with id @var{id}
+Add CPU with id @var{id}. This command is deprecated, please
++use @code{device_add} instead. For details, refer to
+'docs/cpu-hotplug.rst'.
ETEXI
{
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 06/24] range: pass const pointer where possible
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (4 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 05/24] Deprecate HMP `cpu-add` Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 07/24] memory-device: use QEMU_IS_ALIGNED Eduardo Habkost
` (19 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, David Hildenbrand
From: David Hildenbrand <david@redhat.com>
If there are no changes, let's use a const pointer.
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20181023152306.3123-4-david@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
include/qemu/range.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/include/qemu/range.h b/include/qemu/range.h
index f28f0c1825..7e75f4e655 100644
--- a/include/qemu/range.h
+++ b/include/qemu/range.h
@@ -39,7 +39,7 @@ struct Range {
uint64_t upb; /* inclusive upper bound */
};
-static inline void range_invariant(Range *range)
+static inline void range_invariant(const Range *range)
{
assert(range->lob <= range->upb || range->lob == range->upb + 1);
}
@@ -48,14 +48,14 @@ static inline void range_invariant(Range *range)
#define range_empty ((Range){ .lob = 1, .upb = 0 })
/* Is @range empty? */
-static inline bool range_is_empty(Range *range)
+static inline bool range_is_empty(const Range *range)
{
range_invariant(range);
return range->lob > range->upb;
}
/* Does @range contain @val? */
-static inline bool range_contains(Range *range, uint64_t val)
+static inline bool range_contains(const Range *range, uint64_t val)
{
return val >= range->lob && val <= range->upb;
}
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 07/24] memory-device: use QEMU_IS_ALIGNED
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (5 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 06/24] range: pass const pointer where possible Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 08/24] memory-device: avoid overflows on very huge devices Eduardo Habkost
` (18 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, David Hildenbrand
From: David Hildenbrand <david@redhat.com>
Shorter and easier to read.
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20181023152306.3123-6-david@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
hw/mem/memory-device.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/mem/memory-device.c b/hw/mem/memory-device.c
index 7de1ccd497..996ad1490f 100644
--- a/hw/mem/memory-device.c
+++ b/hw/mem/memory-device.c
@@ -120,7 +120,7 @@ static uint64_t memory_device_get_free_addr(MachineState *ms,
g_assert(address_space_end >= address_space_start);
/* address_space_start indicates the maximum alignment we expect */
- if (QEMU_ALIGN_UP(address_space_start, align) != address_space_start) {
+ if (!QEMU_IS_ALIGNED(address_space_start, align)) {
error_setg(errp, "the alignment (0x%" PRIx64 ") is not supported",
align);
return 0;
@@ -131,13 +131,13 @@ static uint64_t memory_device_get_free_addr(MachineState *ms,
return 0;
}
- if (hint && QEMU_ALIGN_UP(*hint, align) != *hint) {
+ if (hint && !QEMU_IS_ALIGNED(*hint, align)) {
error_setg(errp, "address must be aligned to 0x%" PRIx64 " bytes",
align);
return 0;
}
- if (QEMU_ALIGN_UP(size, align) != size) {
+ if (!QEMU_IS_ALIGNED(size, align)) {
error_setg(errp, "backend memory size must be multiple of 0x%"
PRIx64, align);
return 0;
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 08/24] memory-device: avoid overflows on very huge devices
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (6 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 07/24] memory-device: use QEMU_IS_ALIGNED Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 09/24] move ObjectClass to typedefs.h Eduardo Habkost
` (17 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, David Hildenbrand
From: David Hildenbrand <david@redhat.com>
Should not be a problem right now, but it could theoretically happen
in the future.
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20181023152306.3123-7-david@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
hw/mem/memory-device.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/hw/mem/memory-device.c b/hw/mem/memory-device.c
index 996ad1490f..8be63c8032 100644
--- a/hw/mem/memory-device.c
+++ b/hw/mem/memory-device.c
@@ -85,7 +85,8 @@ static void memory_device_check_addable(MachineState *ms, uint64_t size,
/* will we exceed the total amount of memory specified */
memory_device_used_region_size(OBJECT(ms), &used_region_size);
- if (used_region_size + size > ms->maxram_size - ms->ram_size) {
+ if (used_region_size + size < used_region_size ||
+ used_region_size + size > ms->maxram_size - ms->ram_size) {
error_setg(errp, "not enough space, currently 0x%" PRIx64
" in use of total space for memory devices 0x" RAM_ADDR_FMT,
used_region_size, ms->maxram_size - ms->ram_size);
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 09/24] move ObjectClass to typedefs.h
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (7 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 08/24] memory-device: avoid overflows on very huge devices Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 10/24] i386: Rename bools in PCMachineState to end in _enabled Eduardo Habkost
` (16 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Gerd Hoffmann
From: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-Id: <20181106102335.20027-2-kraxel@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
include/qemu/typedefs.h | 1 +
include/qom/object.h | 1 -
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
index 3ec0e13a96..fed53f6de2 100644
--- a/include/qemu/typedefs.h
+++ b/include/qemu/typedefs.h
@@ -62,6 +62,7 @@ typedef struct NetClientState NetClientState;
typedef struct NetFilterState NetFilterState;
typedef struct NICInfo NICInfo;
typedef struct NumaNodeMem NumaNodeMem;
+typedef struct ObjectClass ObjectClass;
typedef struct PCIBridge PCIBridge;
typedef struct PCIBus PCIBus;
typedef struct PCIDevice PCIDevice;
diff --git a/include/qom/object.h b/include/qom/object.h
index f0b0bf39cc..499e1fd8b7 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -20,7 +20,6 @@
struct TypeImpl;
typedef struct TypeImpl *Type;
-typedef struct ObjectClass ObjectClass;
typedef struct Object Object;
typedef struct TypeInfo TypeInfo;
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 10/24] i386: Rename bools in PCMachineState to end in _enabled
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (8 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 09/24] move ObjectClass to typedefs.h Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 11/24] numa: Match struct to typedef name Eduardo Habkost
` (15 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel
Cc: Marcel Apfelbaum, Corey Minyard, Paolo Bonzini, Richard Henderson
From: Corey Minyard <cminyard@mvista.com>
This makes their function more clear and prevents conflicts when adding
the actual devices to the machine state, if necessary.
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20181107152434.22219-1-minyard@acm.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
include/hw/i386/pc.h | 6 +++---
hw/i386/pc.c | 18 +++++++++---------
hw/i386/pc_piix.c | 3 ++-
hw/i386/pc_q35.c | 6 +++---
4 files changed, 17 insertions(+), 16 deletions(-)
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 136fe497b6..7bb52b4762 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -49,9 +49,9 @@ struct PCMachineState {
AcpiNVDIMMState acpi_nvdimm_state;
bool acpi_build_enabled;
- bool smbus;
- bool sata;
- bool pit;
+ bool smbus_enabled;
+ bool sata_enabled;
+ bool pit_enabled;
/* RAM information (sizes, addresses, configuration): */
ram_addr_t below_4g_mem_size, above_4g_mem_size;
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index f095725dba..4cd2fbca4d 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -2222,42 +2222,42 @@ static bool pc_machine_get_smbus(Object *obj, Error **errp)
{
PCMachineState *pcms = PC_MACHINE(obj);
- return pcms->smbus;
+ return pcms->smbus_enabled;
}
static void pc_machine_set_smbus(Object *obj, bool value, Error **errp)
{
PCMachineState *pcms = PC_MACHINE(obj);
- pcms->smbus = value;
+ pcms->smbus_enabled = value;
}
static bool pc_machine_get_sata(Object *obj, Error **errp)
{
PCMachineState *pcms = PC_MACHINE(obj);
- return pcms->sata;
+ return pcms->sata_enabled;
}
static void pc_machine_set_sata(Object *obj, bool value, Error **errp)
{
PCMachineState *pcms = PC_MACHINE(obj);
- pcms->sata = value;
+ pcms->sata_enabled = value;
}
static bool pc_machine_get_pit(Object *obj, Error **errp)
{
PCMachineState *pcms = PC_MACHINE(obj);
- return pcms->pit;
+ return pcms->pit_enabled;
}
static void pc_machine_set_pit(Object *obj, bool value, Error **errp)
{
PCMachineState *pcms = PC_MACHINE(obj);
- pcms->pit = value;
+ pcms->pit_enabled = value;
}
static void pc_machine_initfn(Object *obj)
@@ -2271,9 +2271,9 @@ static void pc_machine_initfn(Object *obj)
pcms->acpi_nvdimm_state.is_enabled = false;
/* acpi build is enabled by default if machine supports it */
pcms->acpi_build_enabled = PC_MACHINE_GET_CLASS(pcms)->has_acpi_build;
- pcms->smbus = true;
- pcms->sata = true;
- pcms->pit = true;
+ pcms->smbus_enabled = true;
+ pcms->sata_enabled = true;
+ pcms->pit_enabled = true;
}
static void pc_machine_reset(void)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 7092d6d13f..2d996162f1 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -239,7 +239,8 @@ static void pc_init1(MachineState *machine,
/* init basic PC hardware */
pc_basic_device_init(isa_bus, pcms->gsi, &rtc_state, true,
- (pcms->vmport != ON_OFF_AUTO_ON), pcms->pit, 0x4);
+ (pcms->vmport != ON_OFF_AUTO_ON), pcms->pit_enabled,
+ 0x4);
pc_nic_init(pcmc, isa_bus, pci_bus);
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 4702bb13c4..6e3d81f5be 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -236,13 +236,13 @@ static void pc_q35_init(MachineState *machine)
/* init basic PC hardware */
pc_basic_device_init(isa_bus, pcms->gsi, &rtc_state, !mc->no_floppy,
- (pcms->vmport != ON_OFF_AUTO_ON), pcms->pit,
+ (pcms->vmport != ON_OFF_AUTO_ON), pcms->pit_enabled,
0xff0104);
/* connect pm stuff to lpc */
ich9_lpc_pm_init(lpc, pc_machine_is_smm_enabled(pcms));
- if (pcms->sata) {
+ if (pcms->sata_enabled) {
/* ahci and SATA device, for q35 1 ahci controller is built-in */
ahci = pci_create_simple_multifunction(host_bus,
PCI_DEVFN(ICH9_SATA1_DEV,
@@ -262,7 +262,7 @@ static void pc_q35_init(MachineState *machine)
ehci_create_ich9_with_companions(host_bus, 0x1d);
}
- if (pcms->smbus) {
+ if (pcms->smbus_enabled) {
/* TODO: Populate SPD eeprom data. */
smbus_eeprom_init(ich9_smb_init(host_bus,
PCI_DEVFN(ICH9_SMB_DEV, ICH9_SMB_FUNC),
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 11/24] numa: Match struct to typedef name
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (9 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 10/24] i386: Rename bools in PCMachineState to end in _enabled Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 12/24] hostmem: Validate host-nodes before setting bitmap Eduardo Habkost
` (14 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel
From: Eric Blake <eblake@redhat.com>
There's no reason to violate our naming conventions by having a
struct with a different name than its typedef. Messed up since
its introduction in commit 8c85901e, but made more obvious when
commit 3bfe5716 promoted it to typedefs.h.
Signed-off-by: Eric Blake <eblake@redhat.com>
Message-Id: <20181115211752.1295571-3-eblake@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
include/qemu/typedefs.h | 2 +-
include/sysemu/numa.h | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
index fed53f6de2..d59df20c4d 100644
--- a/include/qemu/typedefs.h
+++ b/include/qemu/typedefs.h
@@ -61,6 +61,7 @@ typedef struct MSIMessage MSIMessage;
typedef struct NetClientState NetClientState;
typedef struct NetFilterState NetFilterState;
typedef struct NICInfo NICInfo;
+typedef struct NodeInfo NodeInfo;
typedef struct NumaNodeMem NumaNodeMem;
typedef struct ObjectClass ObjectClass;
typedef struct PCIBridge PCIBridge;
@@ -113,7 +114,6 @@ typedef struct SSIBus SSIBus;
typedef struct uWireSlave uWireSlave;
typedef struct VirtIODevice VirtIODevice;
typedef struct Visitor Visitor;
-typedef struct node_info NodeInfo;
typedef void SaveStateHandler(QEMUFile *f, void *opaque);
typedef int LoadStateHandler(QEMUFile *f, void *opaque, int version_id);
diff --git a/include/sysemu/numa.h b/include/sysemu/numa.h
index 21713b7e2f..b6ac7de43e 100644
--- a/include/sysemu/numa.h
+++ b/include/sysemu/numa.h
@@ -9,7 +9,7 @@
extern int nb_numa_nodes; /* Number of NUMA nodes */
extern bool have_numa_distance;
-struct node_info {
+struct NodeInfo {
uint64_t node_mem;
struct HostMemoryBackend *node_memdev;
bool present;
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 12/24] hostmem: Validate host-nodes before setting bitmap
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (10 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 11/24] numa: Match struct to typedef name Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 13/24] q35/440fx/arm/spapr: Add QEMU 4.0 machine type Eduardo Habkost
` (13 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel
host_memory_backend_set_host_nodes() was not validating
host-nodes before writing to backend->host_nodes, making QEMU
write beyond the end of the bitmap.
Fix the crash and add a simple regression test for the fix.
While at it, fix memory leak of the list returned by
visit_type_uint16List().
Reported-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20181130122844.29103-1-ehabkost@redhat.com>
Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
[ehabkost: removed test case code]
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
backends/hostmem.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/backends/hostmem.c b/backends/hostmem.c
index 1a89342039..af800284e0 100644
--- a/backends/hostmem.c
+++ b/backends/hostmem.c
@@ -103,14 +103,23 @@ host_memory_backend_set_host_nodes(Object *obj, Visitor *v, const char *name,
{
#ifdef CONFIG_NUMA
HostMemoryBackend *backend = MEMORY_BACKEND(obj);
- uint16List *l = NULL;
+ uint16List *l, *host_nodes = NULL;
- visit_type_uint16List(v, name, &l, errp);
+ visit_type_uint16List(v, name, &host_nodes, errp);
- while (l) {
+ for (l = host_nodes; l; l = l->next) {
+ if (l->value >= MAX_NODES) {
+ error_setg(errp, "Invalid host-nodes value: %d", l->value);
+ goto out;
+ }
+ }
+
+ for (l = host_nodes; l; l = l->next) {
bitmap_set(backend->host_nodes, l->value, 1);
- l = l->next;
}
+
+out:
+ qapi_free_uint16List(host_nodes);
#else
error_setg(errp, "NUMA node binding are not supported by this QEMU");
#endif
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 13/24] q35/440fx/arm/spapr: Add QEMU 4.0 machine type
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (11 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 12/24] hostmem: Validate host-nodes before setting bitmap Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-12 12:51 ` Marc-André Lureau
2018-12-11 18:01 ` [Qemu-devel] [PULL 14/24] virt: Eliminate separate instance_init functions Eduardo Habkost
` (12 subsequent siblings)
25 siblings, 1 reply; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel
Cc: Marcel Apfelbaum, Alex Williamson, Michael S . Tsirkin,
Paolo Bonzini, Richard Henderson
From: Alex Williamson <alex.williamson@redhat.com>
Including all machine types that might have a pcie-root-port.
Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Richard Henderson <rth@twiddle.net>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Message-Id: <154394083644.28192.8501647946108201466.stgit@gimli.home>
Reviewed-by: Eric Auger <eric.auger@redhat.com>
[ehabkost: fixed accidental recursion at spapr_machine_3_1_class_options()]
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
include/hw/compat.h | 3 +++
include/hw/i386/pc.h | 3 +++
hw/arm/virt.c | 19 +++++++++++++++++--
hw/i386/pc_piix.c | 15 ++++++++++++---
hw/i386/pc_q35.c | 13 +++++++++++--
hw/ppc/spapr.c | 25 ++++++++++++++++++++++---
6 files changed, 68 insertions(+), 10 deletions(-)
diff --git a/include/hw/compat.h b/include/hw/compat.h
index 6f4d5fc647..70958328fe 100644
--- a/include/hw/compat.h
+++ b/include/hw/compat.h
@@ -1,6 +1,9 @@
#ifndef HW_COMPAT_H
#define HW_COMPAT_H
+#define HW_COMPAT_3_1 \
+ /* empty */
+
#define HW_COMPAT_3_0 \
/* empty */
diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
index 7bb52b4762..9d29c4b1df 100644
--- a/include/hw/i386/pc.h
+++ b/include/hw/i386/pc.h
@@ -294,6 +294,9 @@ int e820_add_entry(uint64_t, uint64_t, uint32_t);
int e820_get_num_entries(void);
bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
+#define PC_COMPAT_3_1 \
+ HW_COMPAT_3_1 \
+
#define PC_COMPAT_3_0 \
HW_COMPAT_3_0 \
{\
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index f69e7eb399..beaf6bc439 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -1797,7 +1797,7 @@ static void machvirt_machine_init(void)
}
type_init(machvirt_machine_init);
-static void virt_3_1_instance_init(Object *obj)
+static void virt_4_0_instance_init(Object *obj)
{
VirtMachineState *vms = VIRT_MACHINE(obj);
VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
@@ -1867,10 +1867,25 @@ static void virt_3_1_instance_init(Object *obj)
vms->irqmap = a15irqmap;
}
+static void virt_machine_4_0_options(MachineClass *mc)
+{
+}
+DEFINE_VIRT_MACHINE_AS_LATEST(4, 0)
+
+#define VIRT_COMPAT_3_1 \
+ HW_COMPAT_3_1
+
+static void virt_3_1_instance_init(Object *obj)
+{
+ virt_4_0_instance_init(obj);
+}
+
static void virt_machine_3_1_options(MachineClass *mc)
{
+ virt_machine_4_0_options(mc);
+ SET_MACHINE_COMPAT(mc, VIRT_COMPAT_3_1);
}
-DEFINE_VIRT_MACHINE_AS_LATEST(3, 1)
+DEFINE_VIRT_MACHINE(3, 1)
#define VIRT_COMPAT_3_0 \
HW_COMPAT_3_0
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 2d996162f1..d9b04c8427 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -429,21 +429,30 @@ static void pc_i440fx_machine_options(MachineClass *m)
machine_class_allow_dynamic_sysbus_dev(m, TYPE_RAMFB_DEVICE);
}
-static void pc_i440fx_3_1_machine_options(MachineClass *m)
+static void pc_i440fx_4_0_machine_options(MachineClass *m)
{
pc_i440fx_machine_options(m);
m->alias = "pc";
m->is_default = 1;
}
+DEFINE_I440FX_MACHINE(v4_0, "pc-i440fx-4.0", NULL,
+ pc_i440fx_4_0_machine_options);
+
+static void pc_i440fx_3_1_machine_options(MachineClass *m)
+{
+ pc_i440fx_4_0_machine_options(m);
+ m->is_default = 0;
+ m->alias = NULL;
+ SET_MACHINE_COMPAT(m, PC_COMPAT_3_1);
+}
+
DEFINE_I440FX_MACHINE(v3_1, "pc-i440fx-3.1", NULL,
pc_i440fx_3_1_machine_options);
static void pc_i440fx_3_0_machine_options(MachineClass *m)
{
pc_i440fx_3_1_machine_options(m);
- m->is_default = 0;
- m->alias = NULL;
SET_MACHINE_COMPAT(m, PC_COMPAT_3_0);
}
diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
index 6e3d81f5be..58459bdab5 100644
--- a/hw/i386/pc_q35.c
+++ b/hw/i386/pc_q35.c
@@ -311,19 +311,28 @@ static void pc_q35_machine_options(MachineClass *m)
m->max_cpus = 288;
}
-static void pc_q35_3_1_machine_options(MachineClass *m)
+static void pc_q35_4_0_machine_options(MachineClass *m)
{
pc_q35_machine_options(m);
m->alias = "q35";
}
+DEFINE_Q35_MACHINE(v4_0, "pc-q35-4.0", NULL,
+ pc_q35_4_0_machine_options);
+
+static void pc_q35_3_1_machine_options(MachineClass *m)
+{
+ pc_q35_4_0_machine_options(m);
+ m->alias = NULL;
+ SET_MACHINE_COMPAT(m, PC_COMPAT_3_1);
+}
+
DEFINE_Q35_MACHINE(v3_1, "pc-q35-3.1", NULL,
pc_q35_3_1_machine_options);
static void pc_q35_3_0_machine_options(MachineClass *m)
{
pc_q35_3_1_machine_options(m);
- m->alias = NULL;
SET_MACHINE_COMPAT(m, PC_COMPAT_3_0);
}
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index 7afd1a175b..def3e502d8 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3956,19 +3956,38 @@ static const TypeInfo spapr_machine_info = {
} \
type_init(spapr_machine_register_##suffix)
- /*
+/*
+ * pseries-4.0
+ */
+static void spapr_machine_4_0_instance_options(MachineState *machine)
+{
+}
+
+static void spapr_machine_4_0_class_options(MachineClass *mc)
+{
+ /* Defaults for the latest behaviour inherited from the base class */
+}
+
+DEFINE_SPAPR_MACHINE(4_0, "4.0", true);
+
+/*
* pseries-3.1
*/
+#define SPAPR_COMPAT_3_1 \
+ HW_COMPAT_3_1
+
static void spapr_machine_3_1_instance_options(MachineState *machine)
{
+ spapr_machine_4_0_instance_options(machine);
}
static void spapr_machine_3_1_class_options(MachineClass *mc)
{
- /* Defaults for the latest behaviour inherited from the base class */
+ spapr_machine_4_0_class_options(mc);
+ SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_3_1);
}
-DEFINE_SPAPR_MACHINE(3_1, "3.1", true);
+DEFINE_SPAPR_MACHINE(3_1, "3.1", false);
/*
* pseries-3.0
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [Qemu-devel] [PULL 13/24] q35/440fx/arm/spapr: Add QEMU 4.0 machine type
2018-12-11 18:01 ` [Qemu-devel] [PULL 13/24] q35/440fx/arm/spapr: Add QEMU 4.0 machine type Eduardo Habkost
@ 2018-12-12 12:51 ` Marc-André Lureau
2018-12-12 12:52 ` Marc-André Lureau
0 siblings, 1 reply; 29+ messages in thread
From: Marc-André Lureau @ 2018-12-12 12:51 UTC (permalink / raw)
To: Eduardo Habkost
Cc: Peter Maydell, QEMU, Paolo Bonzini, alex.williamson,
Richard Henderson, Michael S. Tsirkin
Hi
On Tue, Dec 11, 2018 at 10:22 PM Eduardo Habkost <ehabkost@redhat.com> wrote:
>
> From: Alex Williamson <alex.williamson@redhat.com>
>
> Including all machine types that might have a pcie-root-port.
>
> Cc: Peter Maydell <peter.maydell@linaro.org>
> Cc: Michael S. Tsirkin <mst@redhat.com>
> Cc: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Richard Henderson <rth@twiddle.net>
> Cc: Eduardo Habkost <ehabkost@redhat.com>
> Acked-by: David Gibson <david@gibson.dropbear.id.au>
> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> Message-Id: <154394083644.28192.8501647946108201466.stgit@gimli.home>
> Reviewed-by: Eric Auger <eric.auger@redhat.com>
> [ehabkost: fixed accidental recursion at spapr_machine_3_1_class_options()]
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Why was ccw dropped? (can't find the discussion)
thanks
> ---
> include/hw/compat.h | 3 +++
> include/hw/i386/pc.h | 3 +++
> hw/arm/virt.c | 19 +++++++++++++++++--
> hw/i386/pc_piix.c | 15 ++++++++++++---
> hw/i386/pc_q35.c | 13 +++++++++++--
> hw/ppc/spapr.c | 25 ++++++++++++++++++++++---
> 6 files changed, 68 insertions(+), 10 deletions(-)
>
> diff --git a/include/hw/compat.h b/include/hw/compat.h
> index 6f4d5fc647..70958328fe 100644
> --- a/include/hw/compat.h
> +++ b/include/hw/compat.h
> @@ -1,6 +1,9 @@
> #ifndef HW_COMPAT_H
> #define HW_COMPAT_H
>
> +#define HW_COMPAT_3_1 \
> + /* empty */
> +
> #define HW_COMPAT_3_0 \
> /* empty */
>
> diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> index 7bb52b4762..9d29c4b1df 100644
> --- a/include/hw/i386/pc.h
> +++ b/include/hw/i386/pc.h
> @@ -294,6 +294,9 @@ int e820_add_entry(uint64_t, uint64_t, uint32_t);
> int e820_get_num_entries(void);
> bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
>
> +#define PC_COMPAT_3_1 \
> + HW_COMPAT_3_1 \
> +
> #define PC_COMPAT_3_0 \
> HW_COMPAT_3_0 \
> {\
> diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> index f69e7eb399..beaf6bc439 100644
> --- a/hw/arm/virt.c
> +++ b/hw/arm/virt.c
> @@ -1797,7 +1797,7 @@ static void machvirt_machine_init(void)
> }
> type_init(machvirt_machine_init);
>
> -static void virt_3_1_instance_init(Object *obj)
> +static void virt_4_0_instance_init(Object *obj)
> {
> VirtMachineState *vms = VIRT_MACHINE(obj);
> VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
> @@ -1867,10 +1867,25 @@ static void virt_3_1_instance_init(Object *obj)
> vms->irqmap = a15irqmap;
> }
>
> +static void virt_machine_4_0_options(MachineClass *mc)
> +{
> +}
> +DEFINE_VIRT_MACHINE_AS_LATEST(4, 0)
> +
> +#define VIRT_COMPAT_3_1 \
> + HW_COMPAT_3_1
> +
> +static void virt_3_1_instance_init(Object *obj)
> +{
> + virt_4_0_instance_init(obj);
> +}
> +
> static void virt_machine_3_1_options(MachineClass *mc)
> {
> + virt_machine_4_0_options(mc);
> + SET_MACHINE_COMPAT(mc, VIRT_COMPAT_3_1);
> }
> -DEFINE_VIRT_MACHINE_AS_LATEST(3, 1)
> +DEFINE_VIRT_MACHINE(3, 1)
>
> #define VIRT_COMPAT_3_0 \
> HW_COMPAT_3_0
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 2d996162f1..d9b04c8427 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -429,21 +429,30 @@ static void pc_i440fx_machine_options(MachineClass *m)
> machine_class_allow_dynamic_sysbus_dev(m, TYPE_RAMFB_DEVICE);
> }
>
> -static void pc_i440fx_3_1_machine_options(MachineClass *m)
> +static void pc_i440fx_4_0_machine_options(MachineClass *m)
> {
> pc_i440fx_machine_options(m);
> m->alias = "pc";
> m->is_default = 1;
> }
>
> +DEFINE_I440FX_MACHINE(v4_0, "pc-i440fx-4.0", NULL,
> + pc_i440fx_4_0_machine_options);
> +
> +static void pc_i440fx_3_1_machine_options(MachineClass *m)
> +{
> + pc_i440fx_4_0_machine_options(m);
> + m->is_default = 0;
> + m->alias = NULL;
> + SET_MACHINE_COMPAT(m, PC_COMPAT_3_1);
> +}
> +
> DEFINE_I440FX_MACHINE(v3_1, "pc-i440fx-3.1", NULL,
> pc_i440fx_3_1_machine_options);
>
> static void pc_i440fx_3_0_machine_options(MachineClass *m)
> {
> pc_i440fx_3_1_machine_options(m);
> - m->is_default = 0;
> - m->alias = NULL;
> SET_MACHINE_COMPAT(m, PC_COMPAT_3_0);
> }
>
> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> index 6e3d81f5be..58459bdab5 100644
> --- a/hw/i386/pc_q35.c
> +++ b/hw/i386/pc_q35.c
> @@ -311,19 +311,28 @@ static void pc_q35_machine_options(MachineClass *m)
> m->max_cpus = 288;
> }
>
> -static void pc_q35_3_1_machine_options(MachineClass *m)
> +static void pc_q35_4_0_machine_options(MachineClass *m)
> {
> pc_q35_machine_options(m);
> m->alias = "q35";
> }
>
> +DEFINE_Q35_MACHINE(v4_0, "pc-q35-4.0", NULL,
> + pc_q35_4_0_machine_options);
> +
> +static void pc_q35_3_1_machine_options(MachineClass *m)
> +{
> + pc_q35_4_0_machine_options(m);
> + m->alias = NULL;
> + SET_MACHINE_COMPAT(m, PC_COMPAT_3_1);
> +}
> +
> DEFINE_Q35_MACHINE(v3_1, "pc-q35-3.1", NULL,
> pc_q35_3_1_machine_options);
>
> static void pc_q35_3_0_machine_options(MachineClass *m)
> {
> pc_q35_3_1_machine_options(m);
> - m->alias = NULL;
> SET_MACHINE_COMPAT(m, PC_COMPAT_3_0);
> }
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 7afd1a175b..def3e502d8 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -3956,19 +3956,38 @@ static const TypeInfo spapr_machine_info = {
> } \
> type_init(spapr_machine_register_##suffix)
>
> - /*
> +/*
> + * pseries-4.0
> + */
> +static void spapr_machine_4_0_instance_options(MachineState *machine)
> +{
> +}
> +
> +static void spapr_machine_4_0_class_options(MachineClass *mc)
> +{
> + /* Defaults for the latest behaviour inherited from the base class */
> +}
> +
> +DEFINE_SPAPR_MACHINE(4_0, "4.0", true);
> +
> +/*
> * pseries-3.1
> */
> +#define SPAPR_COMPAT_3_1 \
> + HW_COMPAT_3_1
> +
> static void spapr_machine_3_1_instance_options(MachineState *machine)
> {
> + spapr_machine_4_0_instance_options(machine);
> }
>
> static void spapr_machine_3_1_class_options(MachineClass *mc)
> {
> - /* Defaults for the latest behaviour inherited from the base class */
> + spapr_machine_4_0_class_options(mc);
> + SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_3_1);
> }
>
> -DEFINE_SPAPR_MACHINE(3_1, "3.1", true);
> +DEFINE_SPAPR_MACHINE(3_1, "3.1", false);
>
> /*
> * pseries-3.0
> --
> 2.18.0.rc1.1.g3f1ff2140
>
>
--
Marc-André Lureau
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Qemu-devel] [PULL 13/24] q35/440fx/arm/spapr: Add QEMU 4.0 machine type
2018-12-12 12:51 ` Marc-André Lureau
@ 2018-12-12 12:52 ` Marc-André Lureau
0 siblings, 0 replies; 29+ messages in thread
From: Marc-André Lureau @ 2018-12-12 12:52 UTC (permalink / raw)
To: Eduardo Habkost
Cc: Peter Maydell, QEMU, Paolo Bonzini, alex.williamson,
Richard Henderson, Michael S. Tsirkin
Hi
On Wed, Dec 12, 2018 at 4:51 PM Marc-André Lureau
<marcandre.lureau@gmail.com> wrote:
>
> Hi
>
> On Tue, Dec 11, 2018 at 10:22 PM Eduardo Habkost <ehabkost@redhat.com> wrote:
> >
> > From: Alex Williamson <alex.williamson@redhat.com>
> >
> > Including all machine types that might have a pcie-root-port.
> >
> > Cc: Peter Maydell <peter.maydell@linaro.org>
> > Cc: Michael S. Tsirkin <mst@redhat.com>
> > Cc: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
> > Cc: Paolo Bonzini <pbonzini@redhat.com>
> > Cc: Richard Henderson <rth@twiddle.net>
> > Cc: Eduardo Habkost <ehabkost@redhat.com>
> > Acked-by: David Gibson <david@gibson.dropbear.id.au>
> > Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
> > Message-Id: <154394083644.28192.8501647946108201466.stgit@gimli.home>
> > Reviewed-by: Eric Auger <eric.auger@redhat.com>
> > [ehabkost: fixed accidental recursion at spapr_machine_3_1_class_options()]
> > Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
>
> Why was ccw dropped? (can't find the discussion)
> thanks
Ah I see it is already in Cornelia pullreq, nevermind.
> > ---
> > include/hw/compat.h | 3 +++
> > include/hw/i386/pc.h | 3 +++
> > hw/arm/virt.c | 19 +++++++++++++++++--
> > hw/i386/pc_piix.c | 15 ++++++++++++---
> > hw/i386/pc_q35.c | 13 +++++++++++--
> > hw/ppc/spapr.c | 25 ++++++++++++++++++++++---
> > 6 files changed, 68 insertions(+), 10 deletions(-)
> >
> > diff --git a/include/hw/compat.h b/include/hw/compat.h
> > index 6f4d5fc647..70958328fe 100644
> > --- a/include/hw/compat.h
> > +++ b/include/hw/compat.h
> > @@ -1,6 +1,9 @@
> > #ifndef HW_COMPAT_H
> > #define HW_COMPAT_H
> >
> > +#define HW_COMPAT_3_1 \
> > + /* empty */
> > +
> > #define HW_COMPAT_3_0 \
> > /* empty */
> >
> > diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h
> > index 7bb52b4762..9d29c4b1df 100644
> > --- a/include/hw/i386/pc.h
> > +++ b/include/hw/i386/pc.h
> > @@ -294,6 +294,9 @@ int e820_add_entry(uint64_t, uint64_t, uint32_t);
> > int e820_get_num_entries(void);
> > bool e820_get_entry(int, uint32_t, uint64_t *, uint64_t *);
> >
> > +#define PC_COMPAT_3_1 \
> > + HW_COMPAT_3_1 \
> > +
> > #define PC_COMPAT_3_0 \
> > HW_COMPAT_3_0 \
> > {\
> > diff --git a/hw/arm/virt.c b/hw/arm/virt.c
> > index f69e7eb399..beaf6bc439 100644
> > --- a/hw/arm/virt.c
> > +++ b/hw/arm/virt.c
> > @@ -1797,7 +1797,7 @@ static void machvirt_machine_init(void)
> > }
> > type_init(machvirt_machine_init);
> >
> > -static void virt_3_1_instance_init(Object *obj)
> > +static void virt_4_0_instance_init(Object *obj)
> > {
> > VirtMachineState *vms = VIRT_MACHINE(obj);
> > VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
> > @@ -1867,10 +1867,25 @@ static void virt_3_1_instance_init(Object *obj)
> > vms->irqmap = a15irqmap;
> > }
> >
> > +static void virt_machine_4_0_options(MachineClass *mc)
> > +{
> > +}
> > +DEFINE_VIRT_MACHINE_AS_LATEST(4, 0)
> > +
> > +#define VIRT_COMPAT_3_1 \
> > + HW_COMPAT_3_1
> > +
> > +static void virt_3_1_instance_init(Object *obj)
> > +{
> > + virt_4_0_instance_init(obj);
> > +}
> > +
> > static void virt_machine_3_1_options(MachineClass *mc)
> > {
> > + virt_machine_4_0_options(mc);
> > + SET_MACHINE_COMPAT(mc, VIRT_COMPAT_3_1);
> > }
> > -DEFINE_VIRT_MACHINE_AS_LATEST(3, 1)
> > +DEFINE_VIRT_MACHINE(3, 1)
> >
> > #define VIRT_COMPAT_3_0 \
> > HW_COMPAT_3_0
> > diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> > index 2d996162f1..d9b04c8427 100644
> > --- a/hw/i386/pc_piix.c
> > +++ b/hw/i386/pc_piix.c
> > @@ -429,21 +429,30 @@ static void pc_i440fx_machine_options(MachineClass *m)
> > machine_class_allow_dynamic_sysbus_dev(m, TYPE_RAMFB_DEVICE);
> > }
> >
> > -static void pc_i440fx_3_1_machine_options(MachineClass *m)
> > +static void pc_i440fx_4_0_machine_options(MachineClass *m)
> > {
> > pc_i440fx_machine_options(m);
> > m->alias = "pc";
> > m->is_default = 1;
> > }
> >
> > +DEFINE_I440FX_MACHINE(v4_0, "pc-i440fx-4.0", NULL,
> > + pc_i440fx_4_0_machine_options);
> > +
> > +static void pc_i440fx_3_1_machine_options(MachineClass *m)
> > +{
> > + pc_i440fx_4_0_machine_options(m);
> > + m->is_default = 0;
> > + m->alias = NULL;
> > + SET_MACHINE_COMPAT(m, PC_COMPAT_3_1);
> > +}
> > +
> > DEFINE_I440FX_MACHINE(v3_1, "pc-i440fx-3.1", NULL,
> > pc_i440fx_3_1_machine_options);
> >
> > static void pc_i440fx_3_0_machine_options(MachineClass *m)
> > {
> > pc_i440fx_3_1_machine_options(m);
> > - m->is_default = 0;
> > - m->alias = NULL;
> > SET_MACHINE_COMPAT(m, PC_COMPAT_3_0);
> > }
> >
> > diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> > index 6e3d81f5be..58459bdab5 100644
> > --- a/hw/i386/pc_q35.c
> > +++ b/hw/i386/pc_q35.c
> > @@ -311,19 +311,28 @@ static void pc_q35_machine_options(MachineClass *m)
> > m->max_cpus = 288;
> > }
> >
> > -static void pc_q35_3_1_machine_options(MachineClass *m)
> > +static void pc_q35_4_0_machine_options(MachineClass *m)
> > {
> > pc_q35_machine_options(m);
> > m->alias = "q35";
> > }
> >
> > +DEFINE_Q35_MACHINE(v4_0, "pc-q35-4.0", NULL,
> > + pc_q35_4_0_machine_options);
> > +
> > +static void pc_q35_3_1_machine_options(MachineClass *m)
> > +{
> > + pc_q35_4_0_machine_options(m);
> > + m->alias = NULL;
> > + SET_MACHINE_COMPAT(m, PC_COMPAT_3_1);
> > +}
> > +
> > DEFINE_Q35_MACHINE(v3_1, "pc-q35-3.1", NULL,
> > pc_q35_3_1_machine_options);
> >
> > static void pc_q35_3_0_machine_options(MachineClass *m)
> > {
> > pc_q35_3_1_machine_options(m);
> > - m->alias = NULL;
> > SET_MACHINE_COMPAT(m, PC_COMPAT_3_0);
> > }
> >
> > diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> > index 7afd1a175b..def3e502d8 100644
> > --- a/hw/ppc/spapr.c
> > +++ b/hw/ppc/spapr.c
> > @@ -3956,19 +3956,38 @@ static const TypeInfo spapr_machine_info = {
> > } \
> > type_init(spapr_machine_register_##suffix)
> >
> > - /*
> > +/*
> > + * pseries-4.0
> > + */
> > +static void spapr_machine_4_0_instance_options(MachineState *machine)
> > +{
> > +}
> > +
> > +static void spapr_machine_4_0_class_options(MachineClass *mc)
> > +{
> > + /* Defaults for the latest behaviour inherited from the base class */
> > +}
> > +
> > +DEFINE_SPAPR_MACHINE(4_0, "4.0", true);
> > +
> > +/*
> > * pseries-3.1
> > */
> > +#define SPAPR_COMPAT_3_1 \
> > + HW_COMPAT_3_1
> > +
> > static void spapr_machine_3_1_instance_options(MachineState *machine)
> > {
> > + spapr_machine_4_0_instance_options(machine);
> > }
> >
> > static void spapr_machine_3_1_class_options(MachineClass *mc)
> > {
> > - /* Defaults for the latest behaviour inherited from the base class */
> > + spapr_machine_4_0_class_options(mc);
> > + SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_3_1);
> > }
> >
> > -DEFINE_SPAPR_MACHINE(3_1, "3.1", true);
> > +DEFINE_SPAPR_MACHINE(3_1, "3.1", false);
> >
> > /*
> > * pseries-3.0
> > --
> > 2.18.0.rc1.1.g3f1ff2140
> >
> >
>
>
> --
> Marc-André Lureau
--
Marc-André Lureau
^ permalink raw reply [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 14/24] virt: Eliminate separate instance_init functions
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (12 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 13/24] q35/440fx/arm/spapr: Add QEMU 4.0 machine type Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 15/24] spapr: Use default_machine_opts to set use_hotplug_event_source Eduardo Habkost
` (11 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel
All instance_init functions for all virt machine-types run
exactly the same code, so we don't need separate functions. We
only need to set instance_init for TYPE_VIRT_MACHINE.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20181205205827.19387-2-ehabkost@redhat.com>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
hw/arm/virt.c | 87 +++++++++++++--------------------------------------
1 file changed, 21 insertions(+), 66 deletions(-)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index beaf6bc439..17f1b49d11 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -74,7 +74,6 @@
static const TypeInfo machvirt_##major##_##minor##_info = { \
.name = MACHINE_TYPE_NAME("virt-" # major "." # minor), \
.parent = TYPE_VIRT_MACHINE, \
- .instance_init = virt_##major##_##minor##_instance_init, \
.class_init = virt_##major##_##minor##_class_init, \
}; \
static void machvirt_machine_##major##_##minor##_init(void) \
@@ -1778,26 +1777,7 @@ static void virt_machine_class_init(ObjectClass *oc, void *data)
hc->plug = virt_machine_device_plug_cb;
}
-static const TypeInfo virt_machine_info = {
- .name = TYPE_VIRT_MACHINE,
- .parent = TYPE_MACHINE,
- .abstract = true,
- .instance_size = sizeof(VirtMachineState),
- .class_size = sizeof(VirtMachineClass),
- .class_init = virt_machine_class_init,
- .interfaces = (InterfaceInfo[]) {
- { TYPE_HOTPLUG_HANDLER },
- { }
- },
-};
-
-static void machvirt_machine_init(void)
-{
- type_register_static(&virt_machine_info);
-}
-type_init(machvirt_machine_init);
-
-static void virt_4_0_instance_init(Object *obj)
+static void virt_instance_init(Object *obj)
{
VirtMachineState *vms = VIRT_MACHINE(obj);
VirtMachineClass *vmc = VIRT_MACHINE_GET_CLASS(vms);
@@ -1867,6 +1847,26 @@ static void virt_4_0_instance_init(Object *obj)
vms->irqmap = a15irqmap;
}
+static const TypeInfo virt_machine_info = {
+ .name = TYPE_VIRT_MACHINE,
+ .parent = TYPE_MACHINE,
+ .abstract = true,
+ .instance_size = sizeof(VirtMachineState),
+ .class_size = sizeof(VirtMachineClass),
+ .class_init = virt_machine_class_init,
+ .instance_init = virt_instance_init,
+ .interfaces = (InterfaceInfo[]) {
+ { TYPE_HOTPLUG_HANDLER },
+ { }
+ },
+};
+
+static void machvirt_machine_init(void)
+{
+ type_register_static(&virt_machine_info);
+}
+type_init(machvirt_machine_init);
+
static void virt_machine_4_0_options(MachineClass *mc)
{
}
@@ -1875,11 +1875,6 @@ DEFINE_VIRT_MACHINE_AS_LATEST(4, 0)
#define VIRT_COMPAT_3_1 \
HW_COMPAT_3_1
-static void virt_3_1_instance_init(Object *obj)
-{
- virt_4_0_instance_init(obj);
-}
-
static void virt_machine_3_1_options(MachineClass *mc)
{
virt_machine_4_0_options(mc);
@@ -1890,11 +1885,6 @@ DEFINE_VIRT_MACHINE(3, 1)
#define VIRT_COMPAT_3_0 \
HW_COMPAT_3_0
-static void virt_3_0_instance_init(Object *obj)
-{
- virt_3_1_instance_init(obj);
-}
-
static void virt_machine_3_0_options(MachineClass *mc)
{
virt_machine_3_1_options(mc);
@@ -1905,11 +1895,6 @@ DEFINE_VIRT_MACHINE(3, 0)
#define VIRT_COMPAT_2_12 \
HW_COMPAT_2_12
-static void virt_2_12_instance_init(Object *obj)
-{
- virt_3_0_instance_init(obj);
-}
-
static void virt_machine_2_12_options(MachineClass *mc)
{
VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc));
@@ -1924,11 +1909,6 @@ DEFINE_VIRT_MACHINE(2, 12)
#define VIRT_COMPAT_2_11 \
HW_COMPAT_2_11
-static void virt_2_11_instance_init(Object *obj)
-{
- virt_2_12_instance_init(obj);
-}
-
static void virt_machine_2_11_options(MachineClass *mc)
{
VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc));
@@ -1942,11 +1922,6 @@ DEFINE_VIRT_MACHINE(2, 11)
#define VIRT_COMPAT_2_10 \
HW_COMPAT_2_10
-static void virt_2_10_instance_init(Object *obj)
-{
- virt_2_11_instance_init(obj);
-}
-
static void virt_machine_2_10_options(MachineClass *mc)
{
virt_machine_2_11_options(mc);
@@ -1959,11 +1934,6 @@ DEFINE_VIRT_MACHINE(2, 10)
#define VIRT_COMPAT_2_9 \
HW_COMPAT_2_9
-static void virt_2_9_instance_init(Object *obj)
-{
- virt_2_10_instance_init(obj);
-}
-
static void virt_machine_2_9_options(MachineClass *mc)
{
virt_machine_2_10_options(mc);
@@ -1974,11 +1944,6 @@ DEFINE_VIRT_MACHINE(2, 9)
#define VIRT_COMPAT_2_8 \
HW_COMPAT_2_8
-static void virt_2_8_instance_init(Object *obj)
-{
- virt_2_9_instance_init(obj);
-}
-
static void virt_machine_2_8_options(MachineClass *mc)
{
VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc));
@@ -1995,11 +1960,6 @@ DEFINE_VIRT_MACHINE(2, 8)
#define VIRT_COMPAT_2_7 \
HW_COMPAT_2_7
-static void virt_2_7_instance_init(Object *obj)
-{
- virt_2_8_instance_init(obj);
-}
-
static void virt_machine_2_7_options(MachineClass *mc)
{
VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc));
@@ -2016,11 +1976,6 @@ DEFINE_VIRT_MACHINE(2, 7)
#define VIRT_COMPAT_2_6 \
HW_COMPAT_2_6
-static void virt_2_6_instance_init(Object *obj)
-{
- virt_2_7_instance_init(obj);
-}
-
static void virt_machine_2_6_options(MachineClass *mc)
{
VirtMachineClass *vmc = VIRT_MACHINE_CLASS(OBJECT_CLASS(mc));
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 15/24] spapr: Use default_machine_opts to set use_hotplug_event_source
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (13 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 14/24] virt: Eliminate separate instance_init functions Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 16/24] spapr: Use default_machine_opts to set suppress_vmdesc Eduardo Habkost
` (10 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel
Instead of setting use_hotplug_event_source at instance_init
time, set default_machine_opts on spapr_machine_2_7_class_options()
to implement equivalent behavior.
This will let us eliminate the need for separate instance_init
functions for each spapr machine-type.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20181205205827.19387-3-ehabkost@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
hw/ppc/spapr.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index def3e502d8..a3f4c86a44 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -4240,10 +4240,7 @@ static void phb_placement_2_7(sPAPRMachineState *spapr, uint32_t index,
static void spapr_machine_2_7_instance_options(MachineState *machine)
{
- sPAPRMachineState *spapr = SPAPR_MACHINE(machine);
-
spapr_machine_2_8_instance_options(machine);
- spapr->use_hotplug_event_source = false;
}
static void spapr_machine_2_7_class_options(MachineClass *mc)
@@ -4252,6 +4249,7 @@ static void spapr_machine_2_7_class_options(MachineClass *mc)
spapr_machine_2_8_class_options(mc);
mc->default_cpu_type = POWERPC_CPU_TYPE_NAME("power7_v2.3");
+ mc->default_machine_opts = "modern-hotplug-events=off";
SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_7);
smc->phb_placement = phb_placement_2_7;
}
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 16/24] spapr: Use default_machine_opts to set suppress_vmdesc
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (14 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 15/24] spapr: Use default_machine_opts to set use_hotplug_event_source Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 17/24] spapr: Delete instance_options functions Eduardo Habkost
` (9 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel
Instead of setting suppress_vmdesc at instance_init time, set
default_machine_opts on spapr_machine_2_2_class_options() to
implement equivalent behavior.
This will let us eliminate the need for separate instance_init
functions for each spapr machine-type.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20181205205827.19387-4-ehabkost@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
hw/ppc/spapr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index a3f4c86a44..fa3c74e81d 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -4368,13 +4368,13 @@ DEFINE_SPAPR_MACHINE(2_3, "2.3", false);
static void spapr_machine_2_2_instance_options(MachineState *machine)
{
spapr_machine_2_3_instance_options(machine);
- machine->suppress_vmdesc = true;
}
static void spapr_machine_2_2_class_options(MachineClass *mc)
{
spapr_machine_2_3_class_options(mc);
SET_MACHINE_COMPAT(mc, SPAPR_COMPAT_2_2);
+ mc->default_machine_opts = "modern-hotplug-events=off,suppress-vmdesc=on";
}
DEFINE_SPAPR_MACHINE(2_2, "2.2", false);
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 17/24] spapr: Delete instance_options functions
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (15 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 16/24] spapr: Use default_machine_opts to set suppress_vmdesc Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 18/24] pc: Use default_machine_opts to set suppress_vmdesc Eduardo Habkost
` (8 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel
Now that all instance_options functions for spapr are empty,
delete them.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20181205205827.19387-5-ehabkost@redhat.com>
Acked-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
hw/ppc/spapr.c | 85 --------------------------------------------------
1 file changed, 85 deletions(-)
diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
index fa3c74e81d..55be0f56cb 100644
--- a/hw/ppc/spapr.c
+++ b/hw/ppc/spapr.c
@@ -3939,16 +3939,10 @@ static const TypeInfo spapr_machine_info = {
mc->is_default = 1; \
} \
} \
- static void spapr_machine_##suffix##_instance_init(Object *obj) \
- { \
- MachineState *machine = MACHINE(obj); \
- spapr_machine_##suffix##_instance_options(machine); \
- } \
static const TypeInfo spapr_machine_##suffix##_info = { \
.name = MACHINE_TYPE_NAME("pseries-" verstr), \
.parent = TYPE_SPAPR_MACHINE, \
.class_init = spapr_machine_##suffix##_class_init, \
- .instance_init = spapr_machine_##suffix##_instance_init, \
}; \
static void spapr_machine_register_##suffix(void) \
{ \
@@ -3959,10 +3953,6 @@ static const TypeInfo spapr_machine_info = {
/*
* pseries-4.0
*/
-static void spapr_machine_4_0_instance_options(MachineState *machine)
-{
-}
-
static void spapr_machine_4_0_class_options(MachineClass *mc)
{
/* Defaults for the latest behaviour inherited from the base class */
@@ -3976,11 +3966,6 @@ DEFINE_SPAPR_MACHINE(4_0, "4.0", true);
#define SPAPR_COMPAT_3_1 \
HW_COMPAT_3_1
-static void spapr_machine_3_1_instance_options(MachineState *machine)
-{
- spapr_machine_4_0_instance_options(machine);
-}
-
static void spapr_machine_3_1_class_options(MachineClass *mc)
{
spapr_machine_4_0_class_options(mc);
@@ -3995,11 +3980,6 @@ DEFINE_SPAPR_MACHINE(3_1, "3.1", false);
#define SPAPR_COMPAT_3_0 \
HW_COMPAT_3_0
-static void spapr_machine_3_0_instance_options(MachineState *machine)
-{
- spapr_machine_3_1_instance_options(machine);
-}
-
static void spapr_machine_3_0_class_options(MachineClass *mc)
{
sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
@@ -4029,11 +4009,6 @@ DEFINE_SPAPR_MACHINE(3_0, "3.0", false);
.value = "on", \
},
-static void spapr_machine_2_12_instance_options(MachineState *machine)
-{
- spapr_machine_3_0_instance_options(machine);
-}
-
static void spapr_machine_2_12_class_options(MachineClass *mc)
{
sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
@@ -4051,11 +4026,6 @@ static void spapr_machine_2_12_class_options(MachineClass *mc)
DEFINE_SPAPR_MACHINE(2_12, "2.12", false);
-static void spapr_machine_2_12_sxxm_instance_options(MachineState *machine)
-{
- spapr_machine_2_12_instance_options(machine);
-}
-
static void spapr_machine_2_12_sxxm_class_options(MachineClass *mc)
{
sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
@@ -4074,11 +4044,6 @@ DEFINE_SPAPR_MACHINE(2_12_sxxm, "2.12-sxxm", false);
#define SPAPR_COMPAT_2_11 \
HW_COMPAT_2_11
-static void spapr_machine_2_11_instance_options(MachineState *machine)
-{
- spapr_machine_2_12_instance_options(machine);
-}
-
static void spapr_machine_2_11_class_options(MachineClass *mc)
{
sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
@@ -4096,11 +4061,6 @@ DEFINE_SPAPR_MACHINE(2_11, "2.11", false);
#define SPAPR_COMPAT_2_10 \
HW_COMPAT_2_10
-static void spapr_machine_2_10_instance_options(MachineState *machine)
-{
- spapr_machine_2_11_instance_options(machine);
-}
-
static void spapr_machine_2_10_class_options(MachineClass *mc)
{
spapr_machine_2_11_class_options(mc);
@@ -4120,11 +4080,6 @@ DEFINE_SPAPR_MACHINE(2_10, "2.10", false);
.value = "on", \
}, \
-static void spapr_machine_2_9_instance_options(MachineState *machine)
-{
- spapr_machine_2_10_instance_options(machine);
-}
-
static void spapr_machine_2_9_class_options(MachineClass *mc)
{
sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
@@ -4149,11 +4104,6 @@ DEFINE_SPAPR_MACHINE(2_9, "2.9", false);
.value = "off", \
},
-static void spapr_machine_2_8_instance_options(MachineState *machine)
-{
- spapr_machine_2_9_instance_options(machine);
-}
-
static void spapr_machine_2_8_class_options(MachineClass *mc)
{
spapr_machine_2_9_class_options(mc);
@@ -4238,11 +4188,6 @@ static void phb_placement_2_7(sPAPRMachineState *spapr, uint32_t index,
*/
}
-static void spapr_machine_2_7_instance_options(MachineState *machine)
-{
- spapr_machine_2_8_instance_options(machine);
-}
-
static void spapr_machine_2_7_class_options(MachineClass *mc)
{
sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
@@ -4267,11 +4212,6 @@ DEFINE_SPAPR_MACHINE(2_7, "2.7", false);
.value = stringify(off),\
},
-static void spapr_machine_2_6_instance_options(MachineState *machine)
-{
- spapr_machine_2_7_instance_options(machine);
-}
-
static void spapr_machine_2_6_class_options(MachineClass *mc)
{
spapr_machine_2_7_class_options(mc);
@@ -4292,11 +4232,6 @@ DEFINE_SPAPR_MACHINE(2_6, "2.6", false);
.value = "off", \
},
-static void spapr_machine_2_5_instance_options(MachineState *machine)
-{
- spapr_machine_2_6_instance_options(machine);
-}
-
static void spapr_machine_2_5_class_options(MachineClass *mc)
{
sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
@@ -4314,11 +4249,6 @@ DEFINE_SPAPR_MACHINE(2_5, "2.5", false);
#define SPAPR_COMPAT_2_4 \
HW_COMPAT_2_4
-static void spapr_machine_2_4_instance_options(MachineState *machine)
-{
- spapr_machine_2_5_instance_options(machine);
-}
-
static void spapr_machine_2_4_class_options(MachineClass *mc)
{
sPAPRMachineClass *smc = SPAPR_MACHINE_CLASS(mc);
@@ -4341,11 +4271,6 @@ DEFINE_SPAPR_MACHINE(2_4, "2.4", false);
.value = "off",\
},
-static void spapr_machine_2_3_instance_options(MachineState *machine)
-{
- spapr_machine_2_4_instance_options(machine);
-}
-
static void spapr_machine_2_3_class_options(MachineClass *mc)
{
spapr_machine_2_4_class_options(mc);
@@ -4365,11 +4290,6 @@ DEFINE_SPAPR_MACHINE(2_3, "2.3", false);
.value = "0x20000000",\
},
-static void spapr_machine_2_2_instance_options(MachineState *machine)
-{
- spapr_machine_2_3_instance_options(machine);
-}
-
static void spapr_machine_2_2_class_options(MachineClass *mc)
{
spapr_machine_2_3_class_options(mc);
@@ -4384,11 +4304,6 @@ DEFINE_SPAPR_MACHINE(2_2, "2.2", false);
#define SPAPR_COMPAT_2_1 \
HW_COMPAT_2_1
-static void spapr_machine_2_1_instance_options(MachineState *machine)
-{
- spapr_machine_2_2_instance_options(machine);
-}
-
static void spapr_machine_2_1_class_options(MachineClass *mc)
{
spapr_machine_2_2_class_options(mc);
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 18/24] pc: Use default_machine_opts to set suppress_vmdesc
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (16 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 17/24] spapr: Delete instance_options functions Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 19/24] tests: qdev_prop_check_globals() doesn't return "all_used" Eduardo Habkost
` (7 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel
Instead of setting suppress_vmdesc at instance_init time, set
default_machine_opts on pc_i440fx_2_2_machine_options() to
implement equivalent behavior.
This will let us eliminate the need for pc_compat_*() functions
for PC machine-types.
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20181205205827.19387-6-ehabkost@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
hw/i386/pc_piix.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index d9b04c8427..6981cfa740 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -321,7 +321,6 @@ static void pc_compat_2_3(MachineState *machine)
static void pc_compat_2_2(MachineState *machine)
{
pc_compat_2_3(machine);
- machine->suppress_vmdesc = true;
}
static void pc_compat_2_1(MachineState *machine)
@@ -572,6 +571,7 @@ static void pc_i440fx_2_2_machine_options(MachineClass *m)
PCMachineClass *pcmc = PC_MACHINE_CLASS(m);
pc_i440fx_2_3_machine_options(m);
m->hw_version = "2.2.0";
+ m->default_machine_opts = "firmware=bios-256k.bin,suppress-vmdesc=on";
SET_MACHINE_COMPAT(m, PC_COMPAT_2_2);
pcmc->rsdp_in_ram = false;
}
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 19/24] tests: qdev_prop_check_globals() doesn't return "all_used"
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (17 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 18/24] pc: Use default_machine_opts to set suppress_vmdesc Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 20/24] qom: make interface types abstract Eduardo Habkost
` (6 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Marc-André Lureau
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Instead, it returns 1 if an error was detected, which is the case for:
/qdev/properties/dynamic/global/subprocess:
warning: global dynamic-prop-type-bad.prop3 has invalid class name
warning: global nohotplug-type.prop5=105 not used
warning: global nondevice-type.prop6 has invalid class name
Clarify the function return value.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20181204142023.15982-2-marcandre.lureau@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
tests/test-qdev-global-props.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/tests/test-qdev-global-props.c b/tests/test-qdev-global-props.c
index d81b0862d5..ccdf6c57c1 100644
--- a/tests/test-qdev-global-props.c
+++ b/tests/test-qdev-global-props.c
@@ -214,7 +214,7 @@ static void test_dynamic_globalprop_subprocess(void)
{ TYPE_NONDEVICE, "prop6", "106", true },
{}
};
- int all_used;
+ int global_error;
qdev_prop_register_global_list(props);
@@ -223,8 +223,8 @@ static void test_dynamic_globalprop_subprocess(void)
g_assert_cmpuint(mt->prop1, ==, 101);
g_assert_cmpuint(mt->prop2, ==, 102);
- all_used = qdev_prop_check_globals();
- g_assert_cmpuint(all_used, ==, 1);
+ global_error = qdev_prop_check_globals();
+ g_assert_cmpuint(global_error, ==, 1);
g_assert(props[0].used);
g_assert(props[1].used);
g_assert(!props[2].used);
@@ -259,7 +259,7 @@ static void test_dynamic_globalprop_nouser_subprocess(void)
{ TYPE_NONDEVICE, "prop6", "106" },
{}
};
- int all_used;
+ int global_error;
qdev_prop_register_global_list(props);
@@ -268,8 +268,8 @@ static void test_dynamic_globalprop_nouser_subprocess(void)
g_assert_cmpuint(mt->prop1, ==, 101);
g_assert_cmpuint(mt->prop2, ==, 102);
- all_used = qdev_prop_check_globals();
- g_assert_cmpuint(all_used, ==, 0);
+ global_error = qdev_prop_check_globals();
+ g_assert_cmpuint(global_error, ==, 0);
g_assert(props[0].used);
g_assert(props[1].used);
g_assert(!props[2].used);
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 20/24] qom: make interface types abstract
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (18 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 19/24] tests: qdev_prop_check_globals() doesn't return "all_used" Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 21/24] qom: make user_creatable_complete() specific to UserCreatable Eduardo Habkost
` (5 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Marc-André Lureau
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Interfaces don't have instance, let's make the interface type really
abstract to avoid confusion.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20181204142023.15982-3-marcandre.lureau@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
include/hw/acpi/acpi_dev_interface.h | 6 +-----
include/hw/arm/linux-boot-if.h | 5 +----
include/hw/fw-path-provider.h | 4 +---
include/hw/hotplug.h | 6 +-----
include/hw/intc/intc.h | 4 +---
include/hw/ipmi/ipmi.h | 4 +---
include/hw/isa/isa.h | 4 ----
include/hw/mem/memory-device.h | 4 +---
include/hw/nmi.h | 4 +---
include/hw/stream.h | 4 +---
include/hw/timer/m48t59.h | 4 +---
include/qom/object_interfaces.h | 6 +-----
include/sysemu/tpm.h | 4 +---
target/arm/idau.h | 4 +---
tests/check-qom-interface.c | 4 +---
15 files changed, 14 insertions(+), 53 deletions(-)
diff --git a/include/hw/acpi/acpi_dev_interface.h b/include/hw/acpi/acpi_dev_interface.h
index dabf4c4fc9..43ff119179 100644
--- a/include/hw/acpi/acpi_dev_interface.h
+++ b/include/hw/acpi/acpi_dev_interface.h
@@ -25,11 +25,7 @@ typedef enum {
INTERFACE_CHECK(AcpiDeviceIf, (obj), \
TYPE_ACPI_DEVICE_IF)
-
-typedef struct AcpiDeviceIf {
- /* <private> */
- Object Parent;
-} AcpiDeviceIf;
+typedef struct AcpiDeviceIf AcpiDeviceIf;
void acpi_send_event(DeviceState *dev, AcpiEventStatusBits event);
diff --git a/include/hw/arm/linux-boot-if.h b/include/hw/arm/linux-boot-if.h
index aba4479a14..7bbdfd1cc6 100644
--- a/include/hw/arm/linux-boot-if.h
+++ b/include/hw/arm/linux-boot-if.h
@@ -16,10 +16,7 @@
#define ARM_LINUX_BOOT_IF(obj) \
INTERFACE_CHECK(ARMLinuxBootIf, (obj), TYPE_ARM_LINUX_BOOT_IF)
-typedef struct ARMLinuxBootIf {
- /*< private >*/
- Object parent_obj;
-} ARMLinuxBootIf;
+typedef struct ARMLinuxBootIf ARMLinuxBootIf;
typedef struct ARMLinuxBootIfClass {
/*< private >*/
diff --git a/include/hw/fw-path-provider.h b/include/hw/fw-path-provider.h
index 050cb05d92..5df893a3d8 100644
--- a/include/hw/fw-path-provider.h
+++ b/include/hw/fw-path-provider.h
@@ -30,9 +30,7 @@
#define FW_PATH_PROVIDER(obj) \
INTERFACE_CHECK(FWPathProvider, (obj), TYPE_FW_PATH_PROVIDER)
-typedef struct FWPathProvider {
- Object parent_obj;
-} FWPathProvider;
+typedef struct FWPathProvider FWPathProvider;
typedef struct FWPathProviderClass {
InterfaceClass parent_class;
diff --git a/include/hw/hotplug.h b/include/hw/hotplug.h
index 1a0516a479..6321e292fd 100644
--- a/include/hw/hotplug.h
+++ b/include/hw/hotplug.h
@@ -23,11 +23,7 @@
#define HOTPLUG_HANDLER(obj) \
INTERFACE_CHECK(HotplugHandler, (obj), TYPE_HOTPLUG_HANDLER)
-
-typedef struct HotplugHandler {
- /* <private> */
- Object Parent;
-} HotplugHandler;
+typedef struct HotplugHandler HotplugHandler;
/**
* hotplug_fn:
diff --git a/include/hw/intc/intc.h b/include/hw/intc/intc.h
index 27d9828943..fb3e8e621f 100644
--- a/include/hw/intc/intc.h
+++ b/include/hw/intc/intc.h
@@ -15,9 +15,7 @@
INTERFACE_CHECK(InterruptStatsProvider, (obj), \
TYPE_INTERRUPT_STATS_PROVIDER)
-typedef struct InterruptStatsProvider {
- Object parent;
-} InterruptStatsProvider;
+typedef struct InterruptStatsProvider InterruptStatsProvider;
typedef struct InterruptStatsProviderClass {
InterfaceClass parent;
diff --git a/include/hw/ipmi/ipmi.h b/include/hw/ipmi/ipmi.h
index 0affe5a4d8..99661d2bf0 100644
--- a/include/hw/ipmi/ipmi.h
+++ b/include/hw/ipmi/ipmi.h
@@ -114,9 +114,7 @@ uint32_t ipmi_next_uuid(void);
#define IPMI_INTERFACE_GET_CLASS(class) \
OBJECT_GET_CLASS(IPMIInterfaceClass, (class), TYPE_IPMI_INTERFACE)
-typedef struct IPMIInterface {
- Object parent;
-} IPMIInterface;
+typedef struct IPMIInterface IPMIInterface;
typedef struct IPMIInterfaceClass {
InterfaceClass parent;
diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
index b9dbab24b4..e62ac91c19 100644
--- a/include/hw/isa/isa.h
+++ b/include/hw/isa/isa.h
@@ -43,10 +43,6 @@ static inline uint16_t applesmc_port(void)
#define ISADMA(obj) \
INTERFACE_CHECK(IsaDma, (obj), TYPE_ISADMA)
-struct IsaDma {
- Object parent;
-};
-
typedef enum {
ISADMA_TRANSFER_VERIFY,
ISADMA_TRANSFER_READ,
diff --git a/include/hw/mem/memory-device.h b/include/hw/mem/memory-device.h
index e904e194d5..0293a96abb 100644
--- a/include/hw/mem/memory-device.h
+++ b/include/hw/mem/memory-device.h
@@ -25,9 +25,7 @@
#define MEMORY_DEVICE(obj) \
INTERFACE_CHECK(MemoryDeviceState, (obj), TYPE_MEMORY_DEVICE)
-typedef struct MemoryDeviceState {
- Object parent_obj;
-} MemoryDeviceState;
+typedef struct MemoryDeviceState MemoryDeviceState;
/**
* MemoryDeviceClass:
diff --git a/include/hw/nmi.h b/include/hw/nmi.h
index d092c684a1..ad857f3832 100644
--- a/include/hw/nmi.h
+++ b/include/hw/nmi.h
@@ -34,9 +34,7 @@
#define NMI(obj) \
INTERFACE_CHECK(NMI, (obj), TYPE_NMI)
-typedef struct NMIState {
- Object parent_obj;
-} NMIState;
+typedef struct NMIState NMIState;
typedef struct NMIClass {
InterfaceClass parent_class;
diff --git a/include/hw/stream.h b/include/hw/stream.h
index c370ba0c66..15774f07ab 100644
--- a/include/hw/stream.h
+++ b/include/hw/stream.h
@@ -14,9 +14,7 @@
#define STREAM_SLAVE(obj) \
INTERFACE_CHECK(StreamSlave, (obj), TYPE_STREAM_SLAVE)
-typedef struct StreamSlave {
- Object Parent;
-} StreamSlave;
+typedef struct StreamSlave StreamSlave;
typedef void (*StreamCanPushNotifyFn)(void *opaque);
diff --git a/include/hw/timer/m48t59.h b/include/hw/timer/m48t59.h
index db5e43a8da..6f8db04fce 100644
--- a/include/hw/timer/m48t59.h
+++ b/include/hw/timer/m48t59.h
@@ -13,9 +13,7 @@
#define NVRAM(obj) \
INTERFACE_CHECK(Nvram, (obj), TYPE_NVRAM)
-typedef struct Nvram {
- Object parent;
-} Nvram;
+typedef struct Nvram Nvram;
typedef struct NvramClass {
InterfaceClass parent;
diff --git a/include/qom/object_interfaces.h b/include/qom/object_interfaces.h
index 4d513fb329..652a16d2ba 100644
--- a/include/qom/object_interfaces.h
+++ b/include/qom/object_interfaces.h
@@ -16,11 +16,7 @@
INTERFACE_CHECK(UserCreatable, (obj), \
TYPE_USER_CREATABLE)
-
-typedef struct UserCreatable {
- /* <private> */
- Object Parent;
-} UserCreatable;
+typedef struct UserCreatable UserCreatable;
/**
* UserCreatableClass:
diff --git a/include/sysemu/tpm.h b/include/sysemu/tpm.h
index 17a97ed77a..5b541a71c8 100644
--- a/include/sysemu/tpm.h
+++ b/include/sysemu/tpm.h
@@ -33,9 +33,7 @@ typedef enum TPMVersion {
#define TPM_IF(obj) \
INTERFACE_CHECK(TPMIf, (obj), TYPE_TPM_IF)
-typedef struct TPMIf {
- Object parent_obj;
-} TPMIf;
+typedef struct TPMIf TPMIf;
typedef struct TPMIfClass {
InterfaceClass parent_class;
diff --git a/target/arm/idau.h b/target/arm/idau.h
index cac27b95fa..7c0e4e3776 100644
--- a/target/arm/idau.h
+++ b/target/arm/idau.h
@@ -38,9 +38,7 @@
#define IDAU_INTERFACE_GET_CLASS(obj) \
OBJECT_GET_CLASS(IDAUInterfaceClass, (obj), TYPE_IDAU_INTERFACE)
-typedef struct IDAUInterface {
- Object parent;
-} IDAUInterface;
+typedef struct IDAUInterface IDAUInterface;
#define IREGION_NOTVALID -1
diff --git a/tests/check-qom-interface.c b/tests/check-qom-interface.c
index f87c9aaa8a..2177f0dce5 100644
--- a/tests/check-qom-interface.c
+++ b/tests/check-qom-interface.c
@@ -23,9 +23,7 @@
#define TEST_IF(obj) \
INTERFACE_CHECK(TestIf, (obj), TYPE_TEST_IF)
-typedef struct TestIf {
- Object parent_obj;
-} TestIf;
+typedef struct TestIf TestIf;
typedef struct TestIfClass {
InterfaceClass parent_class;
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 21/24] qom: make user_creatable_complete() specific to UserCreatable
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (19 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 20/24] qom: make interface types abstract Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 22/24] accel: register global_props like machine globals Eduardo Habkost
` (4 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Marc-André Lureau
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Instead of accepting any Object*, change user_creatable_complete() to
require a UserCreatable*. Modify the callers to pass the appropriate
argument, removing redundant dynamic cast checks in object creation.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20181204142023.15982-4-marcandre.lureau@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
include/qom/object_interfaces.h | 4 ++--
hw/misc/ivshmem.c | 2 +-
hw/virtio/virtio-rng.c | 2 +-
qom/object.c | 12 ++++++++----
qom/object_interfaces.c | 14 +++-----------
5 files changed, 15 insertions(+), 19 deletions(-)
diff --git a/include/qom/object_interfaces.h b/include/qom/object_interfaces.h
index 652a16d2ba..682ba1d9b0 100644
--- a/include/qom/object_interfaces.h
+++ b/include/qom/object_interfaces.h
@@ -51,14 +51,14 @@ typedef struct UserCreatableClass {
/**
* user_creatable_complete:
- * @obj: the object whose complete() method is called if defined
+ * @uc: the user-creatable object whose complete() method is called if defined
* @errp: if an error occurs, a pointer to an area to store the error
*
* Wrapper to call complete() method if one of types it's inherited
* from implements USER_CREATABLE interface, otherwise the call does
* nothing.
*/
-void user_creatable_complete(Object *obj, Error **errp);
+void user_creatable_complete(UserCreatable *uc, Error **errp);
/**
* user_creatable_can_be_deleted:
diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
index ecfd10a29a..8213659602 100644
--- a/hw/misc/ivshmem.c
+++ b/hw/misc/ivshmem.c
@@ -1280,7 +1280,7 @@ static void desugar_shm(IVShmemState *s)
object_property_add_child(OBJECT(s), "internal-shm-backend", obj,
&error_abort);
object_unref(obj);
- user_creatable_complete(obj, &error_abort);
+ user_creatable_complete(USER_CREATABLE(obj), &error_abort);
s->hostmem = MEMORY_BACKEND(obj);
}
diff --git a/hw/virtio/virtio-rng.c b/hw/virtio/virtio-rng.c
index 855f1b41d1..30493a2586 100644
--- a/hw/virtio/virtio-rng.c
+++ b/hw/virtio/virtio-rng.c
@@ -191,7 +191,7 @@ static void virtio_rng_device_realize(DeviceState *dev, Error **errp)
if (vrng->conf.rng == NULL) {
vrng->conf.default_backend = RNG_RANDOM(object_new(TYPE_RNG_RANDOM));
- user_creatable_complete(OBJECT(vrng->conf.default_backend),
+ user_creatable_complete(USER_CREATABLE(vrng->conf.default_backend),
&local_err);
if (local_err) {
error_propagate(errp, local_err);
diff --git a/qom/object.c b/qom/object.c
index 547dcf97c3..eb770dbf7f 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -417,6 +417,7 @@ void object_initialize_childv(Object *parentobj, const char *propname,
{
Error *local_err = NULL;
Object *obj;
+ UserCreatable *uc;
object_initialize(childobj, size, type);
obj = OBJECT(childobj);
@@ -431,8 +432,9 @@ void object_initialize_childv(Object *parentobj, const char *propname,
goto out;
}
- if (object_dynamic_cast(obj, TYPE_USER_CREATABLE)) {
- user_creatable_complete(obj, &local_err);
+ uc = (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE);
+ if (uc) {
+ user_creatable_complete(uc, &local_err);
if (local_err) {
object_unparent(obj);
goto out;
@@ -590,6 +592,7 @@ Object *object_new_with_propv(const char *typename,
Object *obj;
ObjectClass *klass;
Error *local_err = NULL;
+ UserCreatable *uc;
klass = object_class_by_name(typename);
if (!klass) {
@@ -612,8 +615,9 @@ Object *object_new_with_propv(const char *typename,
goto error;
}
- if (object_dynamic_cast(obj, TYPE_USER_CREATABLE)) {
- user_creatable_complete(obj, &local_err);
+ uc = (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE);
+ if (uc) {
+ user_creatable_complete(uc, &local_err);
if (local_err) {
object_unparent(obj);
goto error;
diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c
index 97b79b48bb..db85d1eb75 100644
--- a/qom/object_interfaces.c
+++ b/qom/object_interfaces.c
@@ -8,18 +8,10 @@
#include "qapi/opts-visitor.h"
#include "qemu/config-file.h"
-void user_creatable_complete(Object *obj, Error **errp)
+void user_creatable_complete(UserCreatable *uc, Error **errp)
{
+ UserCreatableClass *ucc = USER_CREATABLE_GET_CLASS(uc);
- UserCreatableClass *ucc;
- UserCreatable *uc =
- (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE);
-
- if (!uc) {
- return;
- }
-
- ucc = USER_CREATABLE_GET_CLASS(uc);
if (ucc->complete) {
ucc->complete(uc, errp);
}
@@ -89,7 +81,7 @@ Object *user_creatable_add_type(const char *type, const char *id,
goto out;
}
- user_creatable_complete(obj, &local_err);
+ user_creatable_complete(USER_CREATABLE(obj), &local_err);
if (local_err) {
object_property_del(object_get_objects_root(),
id, &error_abort);
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 22/24] accel: register global_props like machine globals
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (20 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 21/24] qom: make user_creatable_complete() specific to UserCreatable Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 23/24] qdev: move qdev_prop_register_global_list() to tests Eduardo Habkost
` (3 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Marc-André Lureau
From: Marc-André Lureau <marcandre.lureau@redhat.com>
global_props is only used for Xen xen_compat_props. It's a static
array of GlobalProperty, like machine globals in SET_MACHINE_COMPAT().
Let's register the globals the same way, without extra copy allocation.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Message-Id: <20181204142023.15982-5-marcandre.lureau@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
include/hw/qdev-properties.h | 29 -----------------------------
accel/accel.c | 9 ++++++++-
hw/core/qdev-properties.c | 21 ---------------------
3 files changed, 8 insertions(+), 51 deletions(-)
diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h
index 4f60cc88f3..a95f4a73eb 100644
--- a/include/hw/qdev-properties.h
+++ b/include/hw/qdev-properties.h
@@ -255,35 +255,6 @@ void qdev_prop_set_globals(DeviceState *dev);
void error_set_from_qdev_prop_error(Error **errp, int ret, DeviceState *dev,
Property *prop, const char *value);
-/**
- * register_compat_prop:
- *
- * Register internal (not user-provided) global property, changing the
- * default value of a given property in a device type. This can be used
- * for enabling machine-type compatibility or for enabling
- * accelerator-specific defaults in devices.
- *
- * The property values set using this function must be always valid and
- * never report setter errors, as the property will have
- * GlobalProperty::errp set to &error_abort.
- *
- * User-provided global properties should override internal global
- * properties, so callers of this function should ensure that it is
- * called before user-provided global properties are registered.
- *
- * @driver: Device type to be affected
- * @property: Property whose default value is going to be changed
- * @value: New default value for the property
- */
-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:
* @dev: Device to add the property to.
diff --git a/accel/accel.c b/accel/accel.c
index 966b2d8f53..3da26eb90f 100644
--- a/accel/accel.c
+++ b/accel/accel.c
@@ -34,6 +34,7 @@
#include "qom/object.h"
#include "qemu/error-report.h"
#include "qemu/option.h"
+#include "qapi/error.h"
static const TypeInfo accel_type = {
.name = TYPE_ACCEL,
@@ -121,7 +122,13 @@ 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);
+ GlobalProperty *prop = class->global_props;
+
+ for (; prop && prop->driver; prop++) {
+ /* Any compat_props must never cause error */
+ prop->errp = &error_abort;
+ qdev_prop_register_global(prop);
+ }
}
void accel_setup_post(MachineState *ms)
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index 35072dec1e..ab61d502fd 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -1180,27 +1180,6 @@ void qdev_prop_register_global(GlobalProperty *prop)
global_props = g_list_append(global_props, prop);
}
-void register_compat_prop(const char *driver,
- const char *property,
- const char *value)
-{
- GlobalProperty *p = g_new0(GlobalProperty, 1);
-
- /* Any compat_props must never cause error */
- p->errp = &error_abort;
- p->driver = driver;
- p->property = property;
- p->value = value;
- 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;
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 23/24] qdev: move qdev_prop_register_global_list() to tests
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (21 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 22/24] accel: register global_props like machine globals Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 18:01 ` [Qemu-devel] [PULL 24/24] qom: remove unimplemented class_finalize Eduardo Habkost
` (2 subsequent siblings)
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Marc-André Lureau
From: Marc-André Lureau <marcandre.lureau@redhat.com>
The function is only used by a test, move it there.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20181204142023.15982-6-marcandre.lureau@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
include/hw/qdev-properties.h | 1 -
hw/core/qdev-properties.c | 9 ---------
tests/test-qdev-global-props.c | 18 ++++++++++++++----
3 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h
index a95f4a73eb..3ab9cd2eb6 100644
--- a/include/hw/qdev-properties.h
+++ b/include/hw/qdev-properties.h
@@ -249,7 +249,6 @@ void qdev_prop_set_enum(DeviceState *dev, const char *name, int value);
void qdev_prop_set_ptr(DeviceState *dev, const char *name, void *value);
void qdev_prop_register_global(GlobalProperty *prop);
-void qdev_prop_register_global_list(GlobalProperty *props);
int qdev_prop_check_globals(void);
void qdev_prop_set_globals(DeviceState *dev);
void error_set_from_qdev_prop_error(Error **errp, int ret, DeviceState *dev,
diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c
index ab61d502fd..bd84c4ea4c 100644
--- a/hw/core/qdev-properties.c
+++ b/hw/core/qdev-properties.c
@@ -1180,15 +1180,6 @@ void qdev_prop_register_global(GlobalProperty *prop)
global_props = g_list_append(global_props, prop);
}
-void qdev_prop_register_global_list(GlobalProperty *props)
-{
- int i;
-
- for (i = 0; props[i].driver != NULL; i++) {
- qdev_prop_register_global(props+i);
- }
-}
-
int qdev_prop_check_globals(void)
{
GList *l;
diff --git a/tests/test-qdev-global-props.c b/tests/test-qdev-global-props.c
index ccdf6c57c1..b1eb505442 100644
--- a/tests/test-qdev-global-props.c
+++ b/tests/test-qdev-global-props.c
@@ -89,6 +89,16 @@ static void test_static_prop(void)
g_test_trap_assert_stdout("");
}
+static void register_global_properties(GlobalProperty *props)
+{
+ int i;
+
+ for (i = 0; props[i].driver != NULL; i++) {
+ qdev_prop_register_global(props + i);
+ }
+}
+
+
/* Test setting of static property using global properties */
static void test_static_globalprop_subprocess(void)
{
@@ -98,7 +108,7 @@ static void test_static_globalprop_subprocess(void)
{}
};
- qdev_prop_register_global_list(props);
+ register_global_properties(props);
mt = STATIC_TYPE(object_new(TYPE_STATIC_PROPS));
qdev_init_nofail(DEVICE(mt));
@@ -216,7 +226,7 @@ static void test_dynamic_globalprop_subprocess(void)
};
int global_error;
- qdev_prop_register_global_list(props);
+ register_global_properties(props);
mt = DYNAMIC_TYPE(object_new(TYPE_DYNAMIC_PROPS));
qdev_init_nofail(DEVICE(mt));
@@ -261,7 +271,7 @@ static void test_dynamic_globalprop_nouser_subprocess(void)
};
int global_error;
- qdev_prop_register_global_list(props);
+ register_global_properties(props);
mt = DYNAMIC_TYPE(object_new(TYPE_DYNAMIC_PROPS));
qdev_init_nofail(DEVICE(mt));
@@ -299,7 +309,7 @@ static void test_subclass_global_props(void)
{}
};
- qdev_prop_register_global_list(props);
+ register_global_properties(props);
mt = STATIC_TYPE(object_new(TYPE_SUBCLASS));
qdev_init_nofail(DEVICE(mt));
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* [Qemu-devel] [PULL 24/24] qom: remove unimplemented class_finalize
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (22 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 23/24] qdev: move qdev_prop_register_global_list() to tests Eduardo Habkost
@ 2018-12-11 18:01 ` Eduardo Habkost
2018-12-11 22:26 ` [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Peter Maydell
2018-12-12 0:20 ` no-reply
25 siblings, 0 replies; 29+ messages in thread
From: Eduardo Habkost @ 2018-12-11 18:01 UTC (permalink / raw)
To: Peter Maydell, qemu-devel; +Cc: Marcel Apfelbaum, Marc-André Lureau
From: Marc-André Lureau <marcandre.lureau@redhat.com>
Instead of trying to implement something that isn't well specified,
remove it. (it would be tricky to implement, since a class struct is
memcpy on children types...)
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Eduardo Habkost <ehabkost@redhat.com>
Message-Id: <20181204142023.15982-7-marcandre.lureau@redhat.com>
Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
include/qom/object.h | 7 ++-----
hw/core/machine.c | 11 -----------
qom/object.c | 2 --
3 files changed, 2 insertions(+), 18 deletions(-)
diff --git a/include/qom/object.h b/include/qom/object.h
index 499e1fd8b7..bcae3f4951 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -454,10 +454,8 @@ struct Object
* parent class initialization has occurred, but before the class itself
* is initialized. This is the function to use to undo the effects of
* memcpy from the parent class to the descendants.
- * @class_finalize: This function is called during class destruction and is
- * meant to release and dynamic parameters allocated by @class_init.
- * @class_data: Data to pass to the @class_init, @class_base_init and
- * @class_finalize functions. This can be useful when building dynamic
+ * @class_data: Data to pass to the @class_init,
+ * @class_base_init. This can be useful when building dynamic
* classes.
* @interfaces: The list of interfaces associated with this type. This
* should point to a static array that's terminated with a zero filled
@@ -478,7 +476,6 @@ struct TypeInfo
void (*class_init)(ObjectClass *klass, void *data);
void (*class_base_init)(ObjectClass *klass, void *data);
- void (*class_finalize)(ObjectClass *klass, void *data);
void *class_data;
InterfaceInfo *interfaces;
diff --git a/hw/core/machine.c b/hw/core/machine.c
index da50ad6de7..c51423b647 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -834,16 +834,6 @@ void machine_run_board_init(MachineState *machine)
machine_class->init(machine);
}
-static void machine_class_finalize(ObjectClass *klass, void *data)
-{
- MachineClass *mc = MACHINE_CLASS(klass);
-
- if (mc->compat_props) {
- g_array_free(mc->compat_props, true);
- }
- g_free(mc->name);
-}
-
void machine_register_compat_props(MachineState *machine)
{
MachineClass *mc = MACHINE_GET_CLASS(machine);
@@ -869,7 +859,6 @@ static const TypeInfo machine_info = {
.class_size = sizeof(MachineClass),
.class_init = machine_class_init,
.class_base_init = machine_class_base_init,
- .class_finalize = machine_class_finalize,
.instance_size = sizeof(MachineState),
.instance_init = machine_initfn,
.instance_finalize = machine_finalize,
diff --git a/qom/object.c b/qom/object.c
index eb770dbf7f..17921c0a71 100644
--- a/qom/object.c
+++ b/qom/object.c
@@ -49,7 +49,6 @@ struct TypeImpl
void (*class_init)(ObjectClass *klass, void *data);
void (*class_base_init)(ObjectClass *klass, void *data);
- void (*class_finalize)(ObjectClass *klass, void *data);
void *class_data;
@@ -114,7 +113,6 @@ static TypeImpl *type_new(const TypeInfo *info)
ti->class_init = info->class_init;
ti->class_base_init = info->class_base_init;
- ti->class_finalize = info->class_finalize;
ti->class_data = info->class_data;
ti->instance_init = info->instance_init;
--
2.18.0.rc1.1.g3f1ff2140
^ permalink raw reply related [flat|nested] 29+ messages in thread
* Re: [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types)
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (23 preceding siblings ...)
2018-12-11 18:01 ` [Qemu-devel] [PULL 24/24] qom: remove unimplemented class_finalize Eduardo Habkost
@ 2018-12-11 22:26 ` Peter Maydell
2018-12-12 0:20 ` no-reply
25 siblings, 0 replies; 29+ messages in thread
From: Peter Maydell @ 2018-12-11 22:26 UTC (permalink / raw)
To: Eduardo Habkost; +Cc: QEMU Developers, Marcel Apfelbaum
On Tue, 11 Dec 2018 at 18:01, Eduardo Habkost <ehabkost@redhat.com> wrote:
>
> The following changes since commit 32a1a94dd324d33578dca1dc96d7896a0244d768:
>
> Update version for v3.1.0 release (2018-12-11 17:18:37 +0000)
>
> are available in the Git repository at:
>
> git://github.com/ehabkost/qemu.git tags/machine-next-pull-request
>
> for you to fetch changes up to 37fdb2c56c603378b85466d1dd64fb4c95f9deb7:
>
> qom: remove unimplemented class_finalize (2018-12-11 15:45:23 -0200)
>
> ----------------------------------------------------------------
> Machine queue post-3.1.0 (including 4.0 machine-types)
Applied, thanks.
-- PMM
^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types)
2018-12-11 18:01 [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Eduardo Habkost
` (24 preceding siblings ...)
2018-12-11 22:26 ` [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types) Peter Maydell
@ 2018-12-12 0:20 ` no-reply
25 siblings, 0 replies; 29+ messages in thread
From: no-reply @ 2018-12-12 0:20 UTC (permalink / raw)
To: ehabkost; +Cc: famz, peter.maydell, qemu-devel
Patchew URL: https://patchew.org/QEMU/20181211180129.7661-1-ehabkost@redhat.com/
Hi,
This series seems to have some coding style problems. See output below for
more information:
Message-id: 20181211180129.7661-1-ehabkost@redhat.com
Subject: [Qemu-devel] [PULL 00/24] Machine queue post-3.1.0 (including 4.0 machine-types)
Type: series
=== TEST SCRIPT BEGIN ===
#!/bin/bash
BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0
git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram
commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
failed=1
echo
fi
n=$((n+1))
done
exit $failed
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
67604b2 qom: remove unimplemented class_finalize
2378b00 qdev: move qdev_prop_register_global_list() to tests
4a805fe accel: register global_props like machine globals
9f66e9c qom: make user_creatable_complete() specific to UserCreatable
69661de qom: make interface types abstract
f122c95 tests: qdev_prop_check_globals() doesn't return "all_used"
1850057 pc: Use default_machine_opts to set suppress_vmdesc
2d1e974 spapr: Delete instance_options functions
b112dc8 spapr: Use default_machine_opts to set suppress_vmdesc
5bec42a spapr: Use default_machine_opts to set use_hotplug_event_source
de8eced virt: Eliminate separate instance_init functions
0502fc4 q35/440fx/arm/spapr: Add QEMU 4.0 machine type
cfbdcf0 hostmem: Validate host-nodes before setting bitmap
d61e4e16 numa: Match struct to typedef name
45bfc96 i386: Rename bools in PCMachineState to end in _enabled
9413306 move ObjectClass to typedefs.h
9e54c44 memory-device: avoid overflows on very huge devices
d18efc0 memory-device: use QEMU_IS_ALIGNED
6f10012 range: pass const pointer where possible
243a721 Deprecate HMP `cpu-add`
1c26ebd Deprecate QMP `cpu-add`
77c2b38 docs: Document vCPU hotplug procedure
56f06c1 hw/timer/sun4v-rtc: Fix tracing at sun4v_rtc_write()
d53badd hostmem-file: remove object id from pmem error message
=== OUTPUT BEGIN ===
Checking PATCH 1/24: hostmem-file: remove object id from pmem error message...
Checking PATCH 2/24: hw/timer/sun4v-rtc: Fix tracing at sun4v_rtc_write()...
Checking PATCH 3/24: docs: Document vCPU hotplug procedure...
WARNING: added, moved or deleted file(s), does MAINTAINERS need updating?
#13:
new file mode 100644
total: 0 errors, 1 warnings, 142 lines checked
Your patch has style problems, please review. If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
Checking PATCH 4/24: Deprecate QMP `cpu-add`...
Checking PATCH 5/24: Deprecate HMP `cpu-add`...
Checking PATCH 6/24: range: pass const pointer where possible...
Checking PATCH 7/24: memory-device: use QEMU_IS_ALIGNED...
Checking PATCH 8/24: memory-device: avoid overflows on very huge devices...
Checking PATCH 9/24: move ObjectClass to typedefs.h...
Checking PATCH 10/24: i386: Rename bools in PCMachineState to end in _enabled...
Checking PATCH 11/24: numa: Match struct to typedef name...
Checking PATCH 12/24: hostmem: Validate host-nodes before setting bitmap...
Checking PATCH 13/24: q35/440fx/arm/spapr: Add QEMU 4.0 machine type...
Checking PATCH 14/24: virt: Eliminate separate instance_init functions...
ERROR: code indent should never use tabs
#67: FILE: hw/arm/virt.c:1857:
+^I.instance_init = virt_instance_init,$
total: 1 errors, 0 warnings, 159 lines checked
Your patch has style problems, please review. If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.
Checking PATCH 15/24: spapr: Use default_machine_opts to set use_hotplug_event_source...
Checking PATCH 16/24: spapr: Use default_machine_opts to set suppress_vmdesc...
Checking PATCH 17/24: spapr: Delete instance_options functions...
Checking PATCH 18/24: pc: Use default_machine_opts to set suppress_vmdesc...
Checking PATCH 19/24: tests: qdev_prop_check_globals() doesn't return "all_used"...
Checking PATCH 20/24: qom: make interface types abstract...
Checking PATCH 21/24: qom: make user_creatable_complete() specific to UserCreatable...
Checking PATCH 22/24: accel: register global_props like machine globals...
Checking PATCH 23/24: qdev: move qdev_prop_register_global_list() to tests...
Checking PATCH 24/24: qom: remove unimplemented class_finalize...
=== OUTPUT END ===
Test command exited with code: 1
The full log is available at
http://patchew.org/logs/20181211180129.7661-1-ehabkost@redhat.com/testing.checkpatch/?type=message.
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@redhat.com
^ permalink raw reply [flat|nested] 29+ messages in thread