In multi-target qemu, we want all modules to be loaded without condition. So add this function for latter usage. Add this independent function for decouple only
Signed-off-by: Yonggang Luo <[email protected]> --- include/qemu/module.h | 2 ++ util/module.c | 10 +++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/qemu/module.h b/include/qemu/module.h index fccf017bf9e..6268c3a8d75 100644 --- a/include/qemu/module.h +++ b/include/qemu/module.h @@ -100,6 +100,8 @@ int module_load(const char *prefix, const char *name, Error **errp); int module_load_qom(const char *type, Error **errp); void module_load_qom_all(void); void module_allow_arch(const char *arch); +/* Allow every arch-tagged module without selecting an architecture. */ +void module_allow_all_arch(void); /** * DOC: module info annotation macros diff --git a/util/module.c b/util/module.c index 8f8e6994f11..b7253fbd065 100644 --- a/util/module.c +++ b/util/module.c @@ -119,6 +119,7 @@ static const QemuModinfo module_info_stub[] = { { } }; static const QemuModinfo *module_info = module_info_stub; static const char *module_arch; +static bool module_all_archs; void module_init_info(const QemuModinfo *info) { @@ -128,11 +129,17 @@ void module_init_info(const QemuModinfo *info) void module_allow_arch(const char *arch) { module_arch = arch; + module_all_archs = false; +} + +void module_allow_all_arch(void) +{ + module_all_archs = true; } static bool module_check_arch(const QemuModinfo *modinfo) { - if (modinfo->arch) { + if (modinfo->arch && !module_all_archs) { if (!module_arch) { /* no arch set -> ignore all */ return false; @@ -400,6 +407,7 @@ const QemuModinfo qemu_modinfo[] = {}; void module_init_info(const QemuModinfo *info) {} void module_allow_arch(const char *arch) {} +void module_allow_all_arch(void) {} void qemu_load_module_for_opts(const char *group) {} int module_load(const char *prefix, const char *name, Error **errp) { return 2; } int module_load_qom(const char *type, Error **errp) { return 2; } -- 2.55.0.windows.3
