diff mbox series

[17/22] vl: load plugins as late as possible

Message ID 20201021205716.2359430-18-pbonzini@redhat.com
State New
Headers show
Series cleanup qemu_init and make sense of command line processing | expand

Commit Message

Paolo Bonzini Oct. 21, 2020, 8:57 p.m. UTC
There is no need to load plugins in the middle of default device processing,
move -plugin handling just before preconfig is entered.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 softmmu/vl.c | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

Comments

Philippe Mathieu-Daudé Oct. 22, 2020, 7:28 a.m. UTC | #1
On 10/21/20 10:57 PM, Paolo Bonzini wrote:
> There is no need to load plugins in the middle of default device processing,
> move -plugin handling just before preconfig is entered.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>   softmmu/vl.c | 15 ++++++++-------
>   1 file changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/softmmu/vl.c b/softmmu/vl.c
> index 8577667b8f..75e57133ad 100644
> --- a/softmmu/vl.c
> +++ b/softmmu/vl.c
> @@ -125,6 +125,7 @@ static const char *boot_order;
>   static const char *boot_once;
>   static const char *incoming;
>   static const char *loadvm;
> +static QemuPluginList plugin_list = QTAILQ_HEAD_INITIALIZER(plugin_list);
>   enum vga_retrace_method vga_retrace_method = VGA_RETRACE_DUMB;
>   int mem_prealloc; /* force preallocation of physical target memory */
>   int display_opengl;
> @@ -3064,12 +3065,18 @@ void qemu_finish_machine_init(void)
>       MachineClass *machine_class = MACHINE_GET_CLASS(current_machine);
>       DisplayState *ds;
>   
> +    /* from here on runstate is RUN_STATE_PRELAUNCH */
> +

Please move this comment in your patch #11:
"vl: move prelaunch part of qemu_init to a new function"

Then:
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>

>       if (machine_class->default_ram_id && current_machine->ram_size &&
>           numa_uses_legacy_mem() && !current_machine->ram_memdev_id) {
>           create_default_memdev(current_machine, mem_path);
>       }
>   
> -    /* from here on runstate is RUN_STATE_PRELAUNCH */
> +    /* process plugin before CPUs are created, but once -smp has been parsed */
> +    if (qemu_plugin_load_list(&plugin_list)) {
> +        exit(1);
> +    }
> +
>       machine_run_board_init(current_machine);
>   
>       /*
> @@ -3196,7 +3203,6 @@ void qemu_init(int argc, char **argv, char **envp)
>       Error *err = NULL;
>       bool have_custom_ram_size;
>       BlockdevOptionsQueue bdo_queue = QSIMPLEQ_HEAD_INITIALIZER(bdo_queue);
> -    QemuPluginList plugin_list = QTAILQ_HEAD_INITIALIZER(plugin_list);
>   
>       qemu_add_opts(&qemu_drive_opts);
>       qemu_add_drive_opts(&qemu_legacy_drive_opts);
> @@ -4164,11 +4170,6 @@ void qemu_init(int argc, char **argv, char **envp)
>                                  machine_class->default_machine_opts, 0);
>       }
>   
> -    /* process plugin before CPUs are created, but once -smp has been parsed */
> -    if (qemu_plugin_load_list(&plugin_list)) {
> -        exit(1);
> -    }
> -
>       qemu_opts_foreach(qemu_find_opts("device"),
>                         default_driver_check, NULL, NULL);
>       qemu_opts_foreach(qemu_find_opts("global"),
>
diff mbox series

Patch

diff --git a/softmmu/vl.c b/softmmu/vl.c
index 8577667b8f..75e57133ad 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -125,6 +125,7 @@  static const char *boot_order;
 static const char *boot_once;
 static const char *incoming;
 static const char *loadvm;
+static QemuPluginList plugin_list = QTAILQ_HEAD_INITIALIZER(plugin_list);
 enum vga_retrace_method vga_retrace_method = VGA_RETRACE_DUMB;
 int mem_prealloc; /* force preallocation of physical target memory */
 int display_opengl;
@@ -3064,12 +3065,18 @@  void qemu_finish_machine_init(void)
     MachineClass *machine_class = MACHINE_GET_CLASS(current_machine);
     DisplayState *ds;
 
+    /* from here on runstate is RUN_STATE_PRELAUNCH */
+
     if (machine_class->default_ram_id && current_machine->ram_size &&
         numa_uses_legacy_mem() && !current_machine->ram_memdev_id) {
         create_default_memdev(current_machine, mem_path);
     }
 
-    /* from here on runstate is RUN_STATE_PRELAUNCH */
+    /* process plugin before CPUs are created, but once -smp has been parsed */
+    if (qemu_plugin_load_list(&plugin_list)) {
+        exit(1);
+    }
+
     machine_run_board_init(current_machine);
 
     /*
@@ -3196,7 +3203,6 @@  void qemu_init(int argc, char **argv, char **envp)
     Error *err = NULL;
     bool have_custom_ram_size;
     BlockdevOptionsQueue bdo_queue = QSIMPLEQ_HEAD_INITIALIZER(bdo_queue);
-    QemuPluginList plugin_list = QTAILQ_HEAD_INITIALIZER(plugin_list);
 
     qemu_add_opts(&qemu_drive_opts);
     qemu_add_drive_opts(&qemu_legacy_drive_opts);
@@ -4164,11 +4170,6 @@  void qemu_init(int argc, char **argv, char **envp)
                                machine_class->default_machine_opts, 0);
     }
 
-    /* process plugin before CPUs are created, but once -smp has been parsed */
-    if (qemu_plugin_load_list(&plugin_list)) {
-        exit(1);
-    }
-
     qemu_opts_foreach(qemu_find_opts("device"),
                       default_driver_check, NULL, NULL);
     qemu_opts_foreach(qemu_find_opts("global"),