diff mbox

vl: process -object after other backend options

Message ID 1408969024-22548-1-git-send-email-pbonzini@redhat.com
State New
Headers show

Commit Message

Paolo Bonzini Aug. 25, 2014, 12:17 p.m. UTC
QOM backends can refer to chardevs, but not vice versa.  So
process -chardev and -fsdev options before -object

This fixes the rng-egd backend to virtio-rng.

Reported-by: Amos Kong <akong@redhat.com>
Cc: qemu-stable@nongnu.org
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 vl.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

Comments

Stefan Hajnoczi Aug. 27, 2014, 1:34 p.m. UTC | #1
On Mon, Aug 25, 2014 at 02:17:04PM +0200, Paolo Bonzini wrote:
> QOM backends can refer to chardevs, but not vice versa.  So
> process -chardev and -fsdev options before -object
> 
> This fixes the rng-egd backend to virtio-rng.
> 
> Reported-by: Amos Kong <akong@redhat.com>
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  vl.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)

Option ordering is a bad idea.  With an option as generic as -object,
who can say that there will never be a non-object that depends on an
-object?

We should process the command-line left-to-right instead of ordering by
option type.  Maybe that would be a good QEMU 3.0 feature! :)

Feel free to merge if it works for now, but we'll need a better fix in
the future.

Stefan
Paolo Bonzini Aug. 27, 2014, 1:38 p.m. UTC | #2
Il 27/08/2014 15:34, Stefan Hajnoczi ha scritto:
> Option ordering is a bad idea.  With an option as generic as -object,
> who can say that there will never be a non-object that depends on an
> -object?
> 
> We should process the command-line left-to-right instead of ordering by
> option type.  Maybe that would be a good QEMU 3.0 feature! :)
> 
> Feel free to merge if it works for now, but we'll need a better fix in
> the future.

I agree on all points.

Paolo
diff mbox

Patch

diff --git a/vl.c b/vl.c
index b796c67..1d8eb27 100644
--- a/vl.c
+++ b/vl.c
@@ -4033,11 +4033,6 @@  int main(int argc, char **argv, char **envp)
         qemu_set_version(machine_class->hw_version);
     }
 
-    if (qemu_opts_foreach(qemu_find_opts("object"),
-                          object_create, NULL, 0) != 0) {
-        exit(1);
-    }
-
     /* Init CPU def lists, based on config
      * - Must be called after all the qemu_read_config_file() calls
      * - Must be called before list_cpus()
@@ -4256,6 +4251,11 @@  int main(int argc, char **argv, char **envp)
         exit(1);
     }
 
+    if (qemu_opts_foreach(qemu_find_opts("object"),
+                          object_create, NULL, 0) != 0) {
+        exit(1);
+    }
+
     configure_accelerator(machine_class);
 
     if (qtest_chrdev) {