|
Bernhard M. Wiedemann |
399b1f |
From: Claudio Fontana <cfontana@suse.de>
|
|
Bernhard M. Wiedemann |
399b1f |
Date: Thu, 29 Sep 2022 11:30:35 +0200
|
|
Bernhard M. Wiedemann |
399b1f |
Subject: accel: abort if we fail to load the accelerator plugin
|
|
Bernhard M. Wiedemann |
399b1f |
MIME-Version: 1.0
|
|
Bernhard M. Wiedemann |
399b1f |
Content-Type: text/plain; charset=UTF-8
|
|
Bernhard M. Wiedemann |
399b1f |
Content-Transfer-Encoding: 8bit
|
|
Bernhard M. Wiedemann |
399b1f |
|
|
Bernhard M. Wiedemann |
399b1f |
if QEMU is configured with modules enabled, it is possible that the
|
|
Bernhard M. Wiedemann |
399b1f |
load of an accelerator module will fail.
|
|
Bernhard M. Wiedemann |
399b1f |
Exit in this case, relying on module_object_class_by_name to report
|
|
Bernhard M. Wiedemann |
399b1f |
the specific load error if any.
|
|
Bernhard M. Wiedemann |
399b1f |
|
|
Bernhard M. Wiedemann |
399b1f |
Signed-off-by: Claudio Fontana <cfontana@suse.de>
|
|
Bernhard M. Wiedemann |
399b1f |
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
|
|
Bernhard M. Wiedemann |
399b1f |
|
|
Bernhard M. Wiedemann |
399b1f |
[claudio: changed abort() to exit(1)]
|
|
Bernhard M. Wiedemann |
399b1f |
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
|
|
Bernhard M. Wiedemann |
399b1f |
Reviewed-by: Markus Armbruster <armbru@redhat.com>
|
|
Bernhard M. Wiedemann |
399b1f |
Message-Id: <20220929093035.4231-6-cfontana@suse.de>
|
|
Bernhard M. Wiedemann |
399b1f |
|
|
Bernhard M. Wiedemann |
399b1f |
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
|
Bernhard M. Wiedemann |
399b1f |
(cherry picked from commit 5141e9a23fc9a890d66a5700920a5ffd8885121f)
|
|
Bernhard M. Wiedemann |
399b1f |
Resolves: bsc#1208139
|
|
Bernhard M. Wiedemann |
399b1f |
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
|
|
Bernhard M. Wiedemann |
399b1f |
---
|
|
Bernhard M. Wiedemann |
399b1f |
accel/accel-softmmu.c | 8 +++++++-
|
|
Bernhard M. Wiedemann |
399b1f |
1 file changed, 7 insertions(+), 1 deletion(-)
|
|
Bernhard M. Wiedemann |
399b1f |
|
|
Bernhard M. Wiedemann |
399b1f |
diff --git a/accel/accel-softmmu.c b/accel/accel-softmmu.c
|
|
Bernhard M. Wiedemann |
399b1f |
index 67276e4f522210baaf6a1c9090cd..f9cdafb148ac4281565e59d998cc 100644
|
|
Bernhard M. Wiedemann |
399b1f |
--- a/accel/accel-softmmu.c
|
|
Bernhard M. Wiedemann |
399b1f |
+++ b/accel/accel-softmmu.c
|
|
Bernhard M. Wiedemann |
399b1f |
@@ -66,6 +66,7 @@ void accel_init_ops_interfaces(AccelClass *ac)
|
|
Bernhard M. Wiedemann |
399b1f |
{
|
|
Bernhard M. Wiedemann |
399b1f |
const char *ac_name;
|
|
Bernhard M. Wiedemann |
399b1f |
char *ops_name;
|
|
Bernhard M. Wiedemann |
399b1f |
+ ObjectClass *oc;
|
|
Bernhard M. Wiedemann |
399b1f |
AccelOpsClass *ops;
|
|
Bernhard M. Wiedemann |
399b1f |
|
|
Bernhard M. Wiedemann |
399b1f |
ac_name = object_class_get_name(OBJECT_CLASS(ac));
|
|
Bernhard M. Wiedemann |
399b1f |
@@ -73,8 +74,13 @@ void accel_init_ops_interfaces(AccelClass *ac)
|
|
Bernhard M. Wiedemann |
399b1f |
|
|
Bernhard M. Wiedemann |
399b1f |
ops_name = g_strdup_printf("%s" ACCEL_OPS_SUFFIX, ac_name);
|
|
Bernhard M. Wiedemann |
399b1f |
ops = ACCEL_OPS_CLASS(module_object_class_by_name(ops_name));
|
|
Bernhard M. Wiedemann |
399b1f |
+ oc = module_object_class_by_name(ops_name);
|
|
Bernhard M. Wiedemann |
399b1f |
+ if (!oc) {
|
|
Bernhard M. Wiedemann |
399b1f |
+ error_report("fatal: could not load module for type '%s'", ops_name);
|
|
Bernhard M. Wiedemann |
399b1f |
+ exit(1);
|
|
Bernhard M. Wiedemann |
399b1f |
+ }
|
|
Bernhard M. Wiedemann |
399b1f |
g_free(ops_name);
|
|
Bernhard M. Wiedemann |
399b1f |
-
|
|
Bernhard M. Wiedemann |
399b1f |
+ ops = ACCEL_OPS_CLASS(oc);
|
|
Bernhard M. Wiedemann |
399b1f |
/*
|
|
Bernhard M. Wiedemann |
399b1f |
* all accelerators need to define ops, providing at least a mandatory
|
|
Bernhard M. Wiedemann |
399b1f |
* non-NULL create_vcpu_thread operation.
|