Skip to content

Commit

Permalink
hvf: Move assert_hvf_ok() into common directory
Browse files Browse the repository at this point in the history
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 <[email protected]>
Reviewed-by: Sergio Lopez <[email protected]>
Message-id: [email protected]
Reviewed-by: Peter Maydell <[email protected]>
Signed-off-by: Peter Maydell <[email protected]>
  • Loading branch information
agraf authored and pm215 committed Jun 3, 2021
1 parent 3c93dfa commit d57bc3c
Show file tree
Hide file tree
Showing 6 changed files with 81 additions and 32 deletions.
8 changes: 8 additions & 0 deletions MAINTAINERS
Original file line number Diff line number Diff line change
Expand Up @@ -436,7 +436,15 @@ M: Roman Bolshakov <[email protected]>
W: https://wiki.qemu.org/Features/HVF
S: Maintained
F: target/i386/hvf/

HVF
M: Cameron Esfahani <[email protected]>
M: Roman Bolshakov <[email protected]>
W: https://wiki.qemu.org/Features/HVF
S: Maintained
F: accel/hvf/
F: include/sysemu/hvf.h
F: include/sysemu/hvf_int.h

WHPX CPUs
M: Sunil Muthuswamy <[email protected]>
Expand Down
47 changes: 47 additions & 0 deletions accel/hvf/hvf-all.c
Original file line number Diff line number Diff line change
@@ -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 changes: 6 additions & 0 deletions accel/hvf/meson.build
Original file line number Diff line number Diff line change
@@ -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)
1 change: 1 addition & 0 deletions accel/meson.build
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ specific_ss.add(files('accel-common.c'))
softmmu_ss.add(files('accel-softmmu.c'))
user_ss.add(files('accel-user.c'))

subdir('hvf')
subdir('qtest')
subdir('kvm')
subdir('tcg')
Expand Down
18 changes: 18 additions & 0 deletions include/sysemu/hvf_int.h
Original file line number Diff line number Diff line change
@@ -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
33 changes: 1 addition & 32 deletions target/i386/hvf/hvf.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
#include "qemu/error-report.h"

#include "sysemu/hvf.h"
#include "sysemu/hvf_int.h"
#include "sysemu/runstate.h"
#include "hvf-i386.h"
#include "vmcs.h"
Expand All @@ -76,38 +77,6 @@

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 */
hvf_slot *hvf_find_overlap_slot(uint64_t start, uint64_t size)
{
Expand Down

0 comments on commit d57bc3c

Please sign in to comment.