diff mbox series

[v3,15/24] modules: use modinfo for qemu opts load

Message ID 20210618045353.2510174-16-kraxel@redhat.com (mailing list archive)
State New, archived
Headers show
Series modules: add meta-data database | expand

Commit Message

Gerd Hoffmann June 18, 2021, 4:53 a.m. UTC
Use module database to figure which module adds given QemuOpts group.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 softmmu/vl.c        | 17 -----------------
 stubs/module-opts.c |  4 ----
 util/module.c       | 19 +++++++++++++++++++
 3 files changed, 19 insertions(+), 21 deletions(-)

Comments

Paolo Bonzini June 18, 2021, 5:50 p.m. UTC | #1
On 18/06/21 06:53, Gerd Hoffmann wrote:
> Use module database to figure which module adds given QemuOpts group.
> 
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>   softmmu/vl.c        | 17 -----------------
>   stubs/module-opts.c |  4 ----
>   util/module.c       | 19 +++++++++++++++++++
>   3 files changed, 19 insertions(+), 21 deletions(-)
> 
> diff --git a/softmmu/vl.c b/softmmu/vl.c
> index a4857ec43ff3..c91d63e3cc02 100644
> --- a/softmmu/vl.c
> +++ b/softmmu/vl.c
> @@ -2675,23 +2675,6 @@ void qmp_x_exit_preconfig(Error **errp)
>       }
>   }
>   
> -#ifdef CONFIG_MODULES
> -void qemu_load_module_for_opts(const char *group)
> -{
> -    static bool spice_tried;
> -    if (g_str_equal(group, "spice") && !spice_tried) {
> -        ui_module_load_one("spice-core");
> -        spice_tried = true;
> -    }
> -
> -    static bool iscsi_tried;
> -    if (g_str_equal(group, "iscsi") && !iscsi_tried) {
> -        block_module_load_one("iscsi");
> -        iscsi_tried = true;
> -    }
> -}
> -#endif
> -
>   void qemu_init(int argc, char **argv, char **envp)
>   {
>       QemuOpts *opts;
> diff --git a/stubs/module-opts.c b/stubs/module-opts.c
> index a7d0e4ad6ead..5412429ea869 100644
> --- a/stubs/module-opts.c
> +++ b/stubs/module-opts.c
> @@ -1,6 +1,2 @@
>   #include "qemu/osdep.h"
>   #include "qemu/config-file.h"
> -
> -void qemu_load_module_for_opts(const char *group)
> -{
> -}
> diff --git a/util/module.c b/util/module.c
> index 745ae0fb20ed..a9ec2da9972e 100644
> --- a/util/module.c
> +++ b/util/module.c
> @@ -20,6 +20,7 @@
>   #include "qemu/queue.h"
>   #include "qemu/module.h"
>   #include "qemu/cutils.h"
> +#include "qemu/config-file.h"
>   #ifdef CONFIG_MODULE_UPGRADES
>   #include "qemu-version.h"
>   #endif
> @@ -322,8 +323,26 @@ void module_load_qom_all(void)
>       module_loaded_qom_all = true;
>   }
>   
> +void qemu_load_module_for_opts(const char *group)
> +{
> +    const QemuModinfo *modinfo;
> +    const char **sl;
> +
> +    for (modinfo = module_info; modinfo->name != NULL; modinfo++) {
> +        if (!modinfo->opts) {
> +            continue;
> +        }
> +        for (sl = modinfo->opts; *sl != NULL; sl++) {
> +            if (strcmp(group, *sl) == 0) {
> +                module_load_one("", modinfo->name, false);
> +            }
> +        }
> +    }
> +}
> +
>   #else
>   
> +void qemu_load_module_for_opts(const char *group) {}
>   void module_load_qom_one(const char *type) {}
>   void module_load_qom_all(void) {}
>   
> 

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
diff mbox series

Patch

diff --git a/softmmu/vl.c b/softmmu/vl.c
index a4857ec43ff3..c91d63e3cc02 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -2675,23 +2675,6 @@  void qmp_x_exit_preconfig(Error **errp)
     }
 }
 
-#ifdef CONFIG_MODULES
-void qemu_load_module_for_opts(const char *group)
-{
-    static bool spice_tried;
-    if (g_str_equal(group, "spice") && !spice_tried) {
-        ui_module_load_one("spice-core");
-        spice_tried = true;
-    }
-
-    static bool iscsi_tried;
-    if (g_str_equal(group, "iscsi") && !iscsi_tried) {
-        block_module_load_one("iscsi");
-        iscsi_tried = true;
-    }
-}
-#endif
-
 void qemu_init(int argc, char **argv, char **envp)
 {
     QemuOpts *opts;
diff --git a/stubs/module-opts.c b/stubs/module-opts.c
index a7d0e4ad6ead..5412429ea869 100644
--- a/stubs/module-opts.c
+++ b/stubs/module-opts.c
@@ -1,6 +1,2 @@ 
 #include "qemu/osdep.h"
 #include "qemu/config-file.h"
-
-void qemu_load_module_for_opts(const char *group)
-{
-}
diff --git a/util/module.c b/util/module.c
index 745ae0fb20ed..a9ec2da9972e 100644
--- a/util/module.c
+++ b/util/module.c
@@ -20,6 +20,7 @@ 
 #include "qemu/queue.h"
 #include "qemu/module.h"
 #include "qemu/cutils.h"
+#include "qemu/config-file.h"
 #ifdef CONFIG_MODULE_UPGRADES
 #include "qemu-version.h"
 #endif
@@ -322,8 +323,26 @@  void module_load_qom_all(void)
     module_loaded_qom_all = true;
 }
 
+void qemu_load_module_for_opts(const char *group)
+{
+    const QemuModinfo *modinfo;
+    const char **sl;
+
+    for (modinfo = module_info; modinfo->name != NULL; modinfo++) {
+        if (!modinfo->opts) {
+            continue;
+        }
+        for (sl = modinfo->opts; *sl != NULL; sl++) {
+            if (strcmp(group, *sl) == 0) {
+                module_load_one("", modinfo->name, false);
+            }
+        }
+    }
+}
+
 #else
 
+void qemu_load_module_for_opts(const char *group) {}
 void module_load_qom_one(const char *type) {}
 void module_load_qom_all(void) {}