hvf: Move assert_hvf_ok() into common directory
Until now, Hypervisor.framework has only been available on x86_64 systems. With Apple Silicon shipping now, it extends its reach to aarch64. To prepare for support for multiple architectures, let's start moving common code out into its own accel directory. This patch moves assert_hvf_ok() and introduces generic build infrastructure. Signed-off-by: Alexander Graf <agraf@csgraf.de> Reviewed-by: Sergio Lopez <slp@redhat.com> Message-id: 20210519202253.76782-2-agraf@csgraf.de Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
3c93dfa42c
commit
d57bc3c109
@ -436,7 +436,15 @@ M: Roman Bolshakov <r.bolshakov@yadro.com>
|
|||||||
W: https://wiki.qemu.org/Features/HVF
|
W: https://wiki.qemu.org/Features/HVF
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: target/i386/hvf/
|
F: target/i386/hvf/
|
||||||
|
|
||||||
|
HVF
|
||||||
|
M: Cameron Esfahani <dirty@apple.com>
|
||||||
|
M: Roman Bolshakov <r.bolshakov@yadro.com>
|
||||||
|
W: https://wiki.qemu.org/Features/HVF
|
||||||
|
S: Maintained
|
||||||
|
F: accel/hvf/
|
||||||
F: include/sysemu/hvf.h
|
F: include/sysemu/hvf.h
|
||||||
|
F: include/sysemu/hvf_int.h
|
||||||
|
|
||||||
WHPX CPUs
|
WHPX CPUs
|
||||||
M: Sunil Muthuswamy <sunilmut@microsoft.com>
|
M: Sunil Muthuswamy <sunilmut@microsoft.com>
|
||||||
|
47
accel/hvf/hvf-all.c
Normal file
47
accel/hvf/hvf-all.c
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
/*
|
||||||
|
* QEMU Hypervisor.framework support
|
||||||
|
*
|
||||||
|
* This work is licensed under the terms of the GNU GPL, version 2. See
|
||||||
|
* the COPYING file in the top-level directory.
|
||||||
|
*
|
||||||
|
* Contributions after 2012-01-13 are licensed under the terms of the
|
||||||
|
* GNU GPL, version 2 or (at your option) any later version.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "qemu/osdep.h"
|
||||||
|
#include "qemu-common.h"
|
||||||
|
#include "qemu/error-report.h"
|
||||||
|
#include "sysemu/hvf.h"
|
||||||
|
#include "sysemu/hvf_int.h"
|
||||||
|
|
||||||
|
void assert_hvf_ok(hv_return_t ret)
|
||||||
|
{
|
||||||
|
if (ret == HV_SUCCESS) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (ret) {
|
||||||
|
case HV_ERROR:
|
||||||
|
error_report("Error: HV_ERROR");
|
||||||
|
break;
|
||||||
|
case HV_BUSY:
|
||||||
|
error_report("Error: HV_BUSY");
|
||||||
|
break;
|
||||||
|
case HV_BAD_ARGUMENT:
|
||||||
|
error_report("Error: HV_BAD_ARGUMENT");
|
||||||
|
break;
|
||||||
|
case HV_NO_RESOURCES:
|
||||||
|
error_report("Error: HV_NO_RESOURCES");
|
||||||
|
break;
|
||||||
|
case HV_NO_DEVICE:
|
||||||
|
error_report("Error: HV_NO_DEVICE");
|
||||||
|
break;
|
||||||
|
case HV_UNSUPPORTED:
|
||||||
|
error_report("Error: HV_UNSUPPORTED");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
error_report("Unknown Error");
|
||||||
|
}
|
||||||
|
|
||||||
|
abort();
|
||||||
|
}
|
6
accel/hvf/meson.build
Normal file
6
accel/hvf/meson.build
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
hvf_ss = ss.source_set()
|
||||||
|
hvf_ss.add(files(
|
||||||
|
'hvf-all.c',
|
||||||
|
))
|
||||||
|
|
||||||
|
specific_ss.add_all(when: 'CONFIG_HVF', if_true: hvf_ss)
|
@ -2,6 +2,7 @@ specific_ss.add(files('accel-common.c'))
|
|||||||
softmmu_ss.add(files('accel-softmmu.c'))
|
softmmu_ss.add(files('accel-softmmu.c'))
|
||||||
user_ss.add(files('accel-user.c'))
|
user_ss.add(files('accel-user.c'))
|
||||||
|
|
||||||
|
subdir('hvf')
|
||||||
subdir('qtest')
|
subdir('qtest')
|
||||||
subdir('kvm')
|
subdir('kvm')
|
||||||
subdir('tcg')
|
subdir('tcg')
|
||||||
|
18
include/sysemu/hvf_int.h
Normal file
18
include/sysemu/hvf_int.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
/*
|
||||||
|
* QEMU Hypervisor.framework (HVF) support
|
||||||
|
*
|
||||||
|
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
||||||
|
* See the COPYING file in the top-level directory.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* header to be included in HVF-specific code */
|
||||||
|
|
||||||
|
#ifndef HVF_INT_H
|
||||||
|
#define HVF_INT_H
|
||||||
|
|
||||||
|
#include <Hypervisor/hv.h>
|
||||||
|
|
||||||
|
void assert_hvf_ok(hv_return_t ret);
|
||||||
|
|
||||||
|
#endif
|
@ -51,6 +51,7 @@
|
|||||||
#include "qemu/error-report.h"
|
#include "qemu/error-report.h"
|
||||||
|
|
||||||
#include "sysemu/hvf.h"
|
#include "sysemu/hvf.h"
|
||||||
|
#include "sysemu/hvf_int.h"
|
||||||
#include "sysemu/runstate.h"
|
#include "sysemu/runstate.h"
|
||||||
#include "hvf-i386.h"
|
#include "hvf-i386.h"
|
||||||
#include "vmcs.h"
|
#include "vmcs.h"
|
||||||
@ -76,38 +77,6 @@
|
|||||||
|
|
||||||
HVFState *hvf_state;
|
HVFState *hvf_state;
|
||||||
|
|
||||||
static void assert_hvf_ok(hv_return_t ret)
|
|
||||||
{
|
|
||||||
if (ret == HV_SUCCESS) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (ret) {
|
|
||||||
case HV_ERROR:
|
|
||||||
error_report("Error: HV_ERROR");
|
|
||||||
break;
|
|
||||||
case HV_BUSY:
|
|
||||||
error_report("Error: HV_BUSY");
|
|
||||||
break;
|
|
||||||
case HV_BAD_ARGUMENT:
|
|
||||||
error_report("Error: HV_BAD_ARGUMENT");
|
|
||||||
break;
|
|
||||||
case HV_NO_RESOURCES:
|
|
||||||
error_report("Error: HV_NO_RESOURCES");
|
|
||||||
break;
|
|
||||||
case HV_NO_DEVICE:
|
|
||||||
error_report("Error: HV_NO_DEVICE");
|
|
||||||
break;
|
|
||||||
case HV_UNSUPPORTED:
|
|
||||||
error_report("Error: HV_UNSUPPORTED");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
error_report("Unknown Error");
|
|
||||||
}
|
|
||||||
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Memory slots */
|
/* Memory slots */
|
||||||
hvf_slot *hvf_find_overlap_slot(uint64_t start, uint64_t size)
|
hvf_slot *hvf_find_overlap_slot(uint64_t start, uint64_t size)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user