[04/16] vl: move icount configuration earlier
diff mbox series

Message ID 1573655945-14912-5-git-send-email-pbonzini@redhat.com
State New
Headers show
Series
  • Complete the implementation of -accel
Related show

Commit Message

Paolo Bonzini Nov. 13, 2019, 2:38 p.m. UTC
Once qemu_tcg_configure is turned into a QOM property setter, it will not
be able to set a default value for mttcg_enabled.  Setting the default will
move to the TCG init_machine method, which currently runs after "-icount"
is processed.

However, it is harmless to do configure_icount for all accelerators; we will
just fail later if a non-TCG accelerator being selected.  So do that.

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

Comments

Marc-André Lureau Nov. 14, 2019, 8:24 a.m. UTC | #1
On Wed, Nov 13, 2019 at 6:43 PM Paolo Bonzini <pbonzini@redhat.com> wrote:
>
> Once qemu_tcg_configure is turned into a QOM property setter, it will not
> be able to set a default value for mttcg_enabled.  Setting the default will
> move to the TCG init_machine method, which currently runs after "-icount"
> is processed.
>
> However, it is harmless to do configure_icount for all accelerators; we will
> just fail later if a non-TCG accelerator being selected.  So do that.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>


> ---
>  vl.c | 17 +++++++++--------
>  1 file changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/vl.c b/vl.c
> index fc9e70f..dbc99d7 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -2829,11 +2829,7 @@ static void user_register_global_props(void)
>
>  static int do_configure_icount(void *opaque, QemuOpts *opts, Error **errp)
>  {
> -    if (tcg_enabled()) {
> -        configure_icount(opts, errp);
> -    } else {
> -        error_setg(errp, "-icount is not allowed with hardware virtualization");
> -    }
> +    configure_icount(opts, errp);
>      return 0;
>  }
>
> @@ -2854,6 +2850,9 @@ static void configure_accelerators(const char *progname)
>      bool init_failed = false;
>      AccelClass *acc = NULL;
>
> +    qemu_opts_foreach(qemu_find_opts("icount"),
> +                      do_configure_icount, NULL, &error_fatal);
> +
>      accel = qemu_opt_get(qemu_get_machine_opts(), "accel");
>      if (accel == NULL) {
>          /* Select the default accelerator */
> @@ -2901,11 +2900,13 @@ static void configure_accelerators(const char *progname)
>          error_report("Back to %s accelerator", acc->name);
>      }
>
> -    qemu_opts_foreach(qemu_find_opts("icount"),
> -                      do_configure_icount, NULL, &error_fatal);
> -
>      qemu_opts_foreach(qemu_find_opts("accel"),
>                        do_configure_accelerator, NULL, &error_fatal);
> +
> +    if (!tcg_enabled() && use_icount) {
> +        error_report("-icount is not allowed with hardware virtualization");
> +        exit(1);
> +    }
>  }
>
>  int main(int argc, char **argv, char **envp)
> --
> 1.8.3.1
>
>
>


--
Marc-André Lureau
Thomas Huth Nov. 18, 2019, 11:53 a.m. UTC | #2
On 13/11/2019 15.38, Paolo Bonzini wrote:
> Once qemu_tcg_configure is turned into a QOM property setter, it will not
> be able to set a default value for mttcg_enabled.  Setting the default will
> move to the TCG init_machine method, which currently runs after "-icount"
> is processed.
> 
> However, it is harmless to do configure_icount for all accelerators; we will
> just fail later if a non-TCG accelerator being selected.  So do that.
> 
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
>  vl.c | 17 +++++++++--------
>  1 file changed, 9 insertions(+), 8 deletions(-)

Reviewed-by: Thomas Huth <thuth@redhat.com>

Patch
diff mbox series

diff --git a/vl.c b/vl.c
index fc9e70f..dbc99d7 100644
--- a/vl.c
+++ b/vl.c
@@ -2829,11 +2829,7 @@  static void user_register_global_props(void)
 
 static int do_configure_icount(void *opaque, QemuOpts *opts, Error **errp)
 {
-    if (tcg_enabled()) {
-        configure_icount(opts, errp);
-    } else {
-        error_setg(errp, "-icount is not allowed with hardware virtualization");
-    }
+    configure_icount(opts, errp);
     return 0;
 }
 
@@ -2854,6 +2850,9 @@  static void configure_accelerators(const char *progname)
     bool init_failed = false;
     AccelClass *acc = NULL;
 
+    qemu_opts_foreach(qemu_find_opts("icount"),
+                      do_configure_icount, NULL, &error_fatal);
+
     accel = qemu_opt_get(qemu_get_machine_opts(), "accel");
     if (accel == NULL) {
         /* Select the default accelerator */
@@ -2901,11 +2900,13 @@  static void configure_accelerators(const char *progname)
         error_report("Back to %s accelerator", acc->name);
     }
 
-    qemu_opts_foreach(qemu_find_opts("icount"),
-                      do_configure_icount, NULL, &error_fatal);
-
     qemu_opts_foreach(qemu_find_opts("accel"),
                       do_configure_accelerator, NULL, &error_fatal);
+
+    if (!tcg_enabled() && use_icount) {
+        error_report("-icount is not allowed with hardware virtualization");
+        exit(1);
+    }
 }
 
 int main(int argc, char **argv, char **envp)