mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 01:03:55 -06:00
hvf: arm: Implement -cpu host
Now that we have working system register sync, we push more target CPU properties into the virtual machine. That might be useful in some situations, but is not the typical case that users want. So let's add a -cpu host option that allows them to explicitly pass all CPU capabilities of their host CPU into the guest. Signed-off-by: Alexander Graf <agraf@csgraf.de> Acked-by: Roman Bolshakov <r.bolshakov@yadro.com> Reviewed-by: Sergio Lopez <slp@redhat.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 20210916155404.86958-7-agraf@csgraf.de [PMM: drop unnecessary #include line from .h file] Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
219c101fa7
commit
585df85efe
5 changed files with 124 additions and 6 deletions
|
@ -39,6 +39,7 @@
|
|||
#include "sysemu/tcg.h"
|
||||
#include "sysemu/hw_accel.h"
|
||||
#include "kvm_arm.h"
|
||||
#include "hvf_arm.h"
|
||||
#include "disas/capstone.h"
|
||||
#include "fpu/softfloat.h"
|
||||
|
||||
|
@ -1417,8 +1418,8 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
|
|||
* this is the first point where we can report it.
|
||||
*/
|
||||
if (cpu->host_cpu_probe_failed) {
|
||||
if (!kvm_enabled()) {
|
||||
error_setg(errp, "The 'host' CPU type can only be used with KVM");
|
||||
if (!kvm_enabled() && !hvf_enabled()) {
|
||||
error_setg(errp, "The 'host' CPU type can only be used with KVM or HVF");
|
||||
} else {
|
||||
error_setg(errp, "Failed to retrieve host CPU features");
|
||||
}
|
||||
|
@ -2078,15 +2079,19 @@ static void arm_cpu_class_init(ObjectClass *oc, void *data)
|
|||
#endif /* CONFIG_TCG */
|
||||
}
|
||||
|
||||
#ifdef CONFIG_KVM
|
||||
#if defined(CONFIG_KVM) || defined(CONFIG_HVF)
|
||||
static void arm_host_initfn(Object *obj)
|
||||
{
|
||||
ARMCPU *cpu = ARM_CPU(obj);
|
||||
|
||||
#ifdef CONFIG_KVM
|
||||
kvm_arm_set_cpu_features_from_host(cpu);
|
||||
if (arm_feature(&cpu->env, ARM_FEATURE_AARCH64)) {
|
||||
aarch64_add_sve_properties(obj);
|
||||
}
|
||||
#else
|
||||
hvf_arm_set_cpu_features_from_host(cpu);
|
||||
#endif
|
||||
arm_cpu_post_init(obj);
|
||||
}
|
||||
|
||||
|
@ -2146,7 +2151,7 @@ static void arm_cpu_register_types(void)
|
|||
{
|
||||
type_register_static(&arm_cpu_type_info);
|
||||
|
||||
#ifdef CONFIG_KVM
|
||||
#if defined(CONFIG_KVM) || defined(CONFIG_HVF)
|
||||
type_register_static(&host_arm_cpu_type_info);
|
||||
#endif
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue