diff mbox series

[RFC,V1,01/14] accel: encapsulate search state

Message ID 1729178055-207271-2-git-send-email-steven.sistare@oracle.com (mailing list archive)
State New
Headers show
Series precreate phase | expand

Commit Message

Steven Sistare Oct. 17, 2024, 3:14 p.m. UTC
Save the state of the search for a working machine accelerator in
the new structure AccelSearch.  No functional change.

Signed-off-by: Steve Sistare <steven.sistare@oracle.com>
---
 system/vl.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)
diff mbox series

Patch

diff --git a/system/vl.c b/system/vl.c
index 7439916..8b345dd 100644
--- a/system/vl.c
+++ b/system/vl.c
@@ -2304,9 +2304,14 @@  static int accelerator_set_property(void *opaque,
     return object_parse_property_opt(opaque, name, value, "accel", errp);
 }
 
+typedef struct {
+    AccelState *accel;
+    bool init_failed;
+} AccelSearch;
+
 static int do_configure_accelerator(void *opaque, QemuOpts *opts, Error **errp)
 {
-    bool *p_init_failed = opaque;
+    AccelSearch *acs = opaque;
     const char *acc = qemu_opt_get(opts, "accel");
     AccelClass *ac = accel_find(acc);
     AccelState *accel;
@@ -2340,16 +2345,17 @@  static int do_configure_accelerator(void *opaque, QemuOpts *opts, Error **errp)
         goto bad;
     }
 
+    acs->accel = accel;
     return 1;
 
 bad:
-    *p_init_failed = true;
+    acs->init_failed = true;
     return 0;
 }
 
 static void configure_accelerators(const char *progname)
 {
-    bool init_failed = false;
+    AccelSearch acs = {0};
 
     qemu_opts_foreach(qemu_find_opts("icount"),
                       do_configure_icount, NULL, &error_fatal);
@@ -2389,7 +2395,7 @@  static void configure_accelerators(const char *progname)
             if (accel_find(*tmp)) {
                 qemu_opts_parse_noisily(qemu_find_opts("accel"), *tmp, true);
             } else {
-                init_failed = true;
+                acs.init_failed = true;
                 error_report("invalid accelerator %s", *tmp);
             }
         }
@@ -2402,15 +2408,15 @@  static void configure_accelerators(const char *progname)
     }
 
     if (!qemu_opts_foreach(qemu_find_opts("accel"),
-                           do_configure_accelerator, &init_failed, &error_fatal)) {
-        if (!init_failed) {
+                           do_configure_accelerator, &acs, &error_fatal)) {
+        if (!acs.init_failed) {
             error_report("no accelerator found");
         }
         exit(1);
     }
 
-    if (init_failed && !qtest_chrdev) {
-        error_report("falling back to %s", current_accel_name());
+    if (acs.init_failed && !qtest_chrdev) {
+        error_report("falling back to %s", ACCEL_GET_CLASS(acs.accel)->name);
     }
 
     if (icount_enabled() && !tcg_enabled()) {