aboutsummaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorClaudio Fontana <cfontana@suse.de>2021-03-22 14:27:44 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2021-05-10 15:41:50 -0400
commit9ea057dc641b150ecbfd45acfe18fe043641a551 (patch)
treecff91686711453fcaf8e5d1a286feb4c81d69ab8 /target
parentce21726525da53053432b19e27e9fd2a49086d78 (diff)
downloadqemu-9ea057dc641b150ecbfd45acfe18fe043641a551.zip
qemu-9ea057dc641b150ecbfd45acfe18fe043641a551.tar.gz
qemu-9ea057dc641b150ecbfd45acfe18fe043641a551.tar.bz2
accel-cpu: make cpu_realizefn return a bool
overall, all devices' realize functions take an Error **errp, but return void. hw/core/qdev.c code, which realizes devices, therefore does: local_err = NULL; dc->realize(dev, &local_err); if (local_err != NULL) { goto fail; } However, we can improve at least accel_cpu to return a meaningful bool value. Signed-off-by: Claudio Fontana <cfontana@suse.de> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20210322132800.7470-9-cfontana@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'target')
-rw-r--r--target/i386/host-cpu.c5
-rw-r--r--target/i386/host-cpu.h2
-rw-r--r--target/i386/kvm/kvm-cpu.c4
-rw-r--r--target/i386/tcg/tcg-cpu.c6
4 files changed, 10 insertions, 7 deletions
diff --git a/target/i386/host-cpu.c b/target/i386/host-cpu.c
index d07d41c..4ea9e35 100644
--- a/target/i386/host-cpu.c
+++ b/target/i386/host-cpu.c
@@ -80,7 +80,7 @@ static uint32_t host_cpu_adjust_phys_bits(X86CPU *cpu)
return phys_bits;
}
-void host_cpu_realizefn(CPUState *cs, Error **errp)
+bool host_cpu_realizefn(CPUState *cs, Error **errp)
{
X86CPU *cpu = X86_CPU(cs);
CPUX86State *env = &cpu->env;
@@ -97,10 +97,11 @@ void host_cpu_realizefn(CPUState *cs, Error **errp)
error_setg(errp, "phys-bits should be between 32 and %u "
" (but is %u)",
TARGET_PHYS_ADDR_SPACE_BITS, phys_bits);
- return;
+ return false;
}
cpu->phys_bits = phys_bits;
}
+ return true;
}
#define CPUID_MODEL_ID_SZ 48
diff --git a/target/i386/host-cpu.h b/target/i386/host-cpu.h
index b47bc09..6a9bc91 100644
--- a/target/i386/host-cpu.h
+++ b/target/i386/host-cpu.h
@@ -12,7 +12,7 @@
void host_cpu_instance_init(X86CPU *cpu);
void host_cpu_max_instance_init(X86CPU *cpu);
-void host_cpu_realizefn(CPUState *cs, Error **errp);
+bool host_cpu_realizefn(CPUState *cs, Error **errp);
void host_cpu_vendor_fms(char *vendor, int *family, int *model, int *stepping);
diff --git a/target/i386/kvm/kvm-cpu.c b/target/i386/kvm/kvm-cpu.c
index c23bbe6..c660ad4 100644
--- a/target/i386/kvm/kvm-cpu.c
+++ b/target/i386/kvm/kvm-cpu.c
@@ -18,7 +18,7 @@
#include "kvm_i386.h"
#include "hw/core/accel-cpu.h"
-static void kvm_cpu_realizefn(CPUState *cs, Error **errp)
+static bool kvm_cpu_realizefn(CPUState *cs, Error **errp)
{
X86CPU *cpu = X86_CPU(cs);
CPUX86State *env = &cpu->env;
@@ -41,7 +41,7 @@ static void kvm_cpu_realizefn(CPUState *cs, Error **errp)
MSR_IA32_UCODE_REV);
}
}
- host_cpu_realizefn(cs, errp);
+ return host_cpu_realizefn(cs, errp);
}
/*
diff --git a/target/i386/tcg/tcg-cpu.c b/target/i386/tcg/tcg-cpu.c
index 1d3d6d1..23e1f5f 100644
--- a/target/i386/tcg/tcg-cpu.c
+++ b/target/i386/tcg/tcg-cpu.c
@@ -96,7 +96,7 @@ static void x86_cpu_machine_done(Notifier *n, void *unused)
}
}
-static void tcg_cpu_realizefn(CPUState *cs, Error **errp)
+static bool tcg_cpu_realizefn(CPUState *cs, Error **errp)
{
X86CPU *cpu = X86_CPU(cs);
@@ -132,12 +132,14 @@ static void tcg_cpu_realizefn(CPUState *cs, Error **errp)
/* ... SMRAM with higher priority, linked from /machine/smram. */
cpu->machine_done.notify = x86_cpu_machine_done;
qemu_add_machine_init_done_notifier(&cpu->machine_done);
+ return true;
}
#else /* CONFIG_USER_ONLY */
-static void tcg_cpu_realizefn(CPUState *cs, Error **errp)
+static bool tcg_cpu_realizefn(CPUState *cs, Error **errp)
{
+ return true;
}
#endif /* !CONFIG_USER_ONLY */