[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v6 03/11] hvf: Move common code out
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [PATCH v6 03/11] hvf: Move common code out |
Date: |
Thu, 21 Jan 2021 08:26:35 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 |
Hi Alexander,
On 1/20/21 11:44 PM, Alexander Graf wrote:
> 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 move common code out
> into its own accel directory.
>
> Signed-off-by: Alexander Graf <agraf@csgraf.de>
> Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
> Tested-by: Roman Bolshakov <r.bolshakov@yadro.com>
>
> ---
>
> v3 -> v4:
>
> - Use hv.h instead of Hypervisor.h for 10.15 compat
> - Remove manual inclusion of Hypervisor.h in common .c files
> ---
> MAINTAINERS | 8 +
> accel/hvf/hvf-all.c | 54 +++++
> accel/hvf/hvf-cpus.c | 462 ++++++++++++++++++++++++++++++++++++
> accel/hvf/meson.build | 7 +
> accel/meson.build | 1 +
> include/sysemu/hvf_int.h | 54 +++++
> target/i386/hvf/hvf-cpus.c | 131 ----------
> target/i386/hvf/hvf-cpus.h | 25 --
> target/i386/hvf/hvf-i386.h | 33 +--
> target/i386/hvf/hvf.c | 360 +---------------------------
> target/i386/hvf/meson.build | 1 -
> target/i386/hvf/x86hvf.c | 11 +-
> target/i386/hvf/x86hvf.h | 2 -
> 13 files changed, 596 insertions(+), 553 deletions(-)
> create mode 100644 accel/hvf/hvf-all.c
> create mode 100644 accel/hvf/hvf-cpus.c
> create mode 100644 accel/hvf/meson.build
> create mode 100644 include/sysemu/hvf_int.h
> delete mode 100644 target/i386/hvf/hvf-cpus.c
> delete mode 100644 target/i386/hvf/hvf-cpus.h
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 3216387521..e589ec02e0 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -448,7 +448,15 @@ M: Roman Bolshakov <r.bolshakov@yadro.com>
> W: https://wiki.qemu.org/Features/HVF
> S: Maintained
> 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_int.h
>
> WHPX CPUs
> M: Sunil Muthuswamy <sunilmut@microsoft.com>
> diff --git a/accel/hvf/hvf-all.c b/accel/hvf/hvf-all.c
> new file mode 100644
> index 0000000000..5b415eb0ed
> --- /dev/null
> +++ b/accel/hvf/hvf-all.c
> @@ -0,0 +1,54 @@
> +/*
> + * 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.
Maybe start with GPLv2+ directly?
> diff --git a/include/sysemu/hvf_int.h b/include/sysemu/hvf_int.h
> new file mode 100644
> index 0000000000..69de46db7d
> --- /dev/null
> +++ b/include/sysemu/hvf_int.h
> @@ -0,0 +1,54 @@
> +/*
> + * 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 */
Can we have this header local to accel/hvf/ ?
Otherwise:
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> +
> +#ifndef HVF_INT_H
> +#define HVF_INT_H
> +
> +#include <Hypervisor/hv.h>
> +
> +/* hvf_slot flags */
> +#define HVF_SLOT_LOG (1 << 0)
> +
> +typedef struct hvf_slot {
> + uint64_t start;
> + uint64_t size;
> + uint8_t *mem;
> + int slot_id;
> + uint32_t flags;
> + MemoryRegion *region;
> +} hvf_slot;
> +
> +typedef struct hvf_vcpu_caps {
> + uint64_t vmx_cap_pinbased;
> + uint64_t vmx_cap_procbased;
> + uint64_t vmx_cap_procbased2;
> + uint64_t vmx_cap_entry;
> + uint64_t vmx_cap_exit;
> + uint64_t vmx_cap_preemption_timer;
> +} hvf_vcpu_caps;
> +
> +struct HVFState {
> + AccelState parent;
> + hvf_slot slots[32];
> + int num_slots;
> +
> + hvf_vcpu_caps *hvf_caps;
> +};
> +extern HVFState *hvf_state;
> +
> +void assert_hvf_ok(hv_return_t ret);
> +int hvf_get_registers(CPUState *cpu);
> +int hvf_put_registers(CPUState *cpu);
> +int hvf_arch_init_vcpu(CPUState *cpu);
> +void hvf_arch_vcpu_destroy(CPUState *cpu);
> +int hvf_vcpu_exec(CPUState *cpu);
> +hvf_slot *hvf_find_overlap_slot(uint64_t, uint64_t);
> +
> +#endif
- [PATCH v6 00/11] hvf: Implement Apple Silicon Support, Alexander Graf, 2021/01/20
- [PATCH v6 02/11] hvf: x86: Remove unused definitions, Alexander Graf, 2021/01/20
- [PATCH v6 06/11] hvf: Simplify post reset/init/loadvm hooks, Alexander Graf, 2021/01/20
- [PATCH v6 01/11] hvf: Add hypervisor entitlement to output binaries, Alexander Graf, 2021/01/20
- [PATCH v6 04/11] hvf: Introduce hvf vcpu struct, Alexander Graf, 2021/01/20
- [PATCH v6 03/11] hvf: Move common code out, Alexander Graf, 2021/01/20
- [PATCH v6 08/11] arm: Add Hypervisor.framework build target, Alexander Graf, 2021/01/20
- [PATCH v6 09/11] arm/hvf: Add a WFI handler, Alexander Graf, 2021/01/20
- [PATCH v6 05/11] arm: Set PSCI to 0.2 for HVF, Alexander Graf, 2021/01/20
- [PATCH v6 07/11] hvf: Add Apple Silicon support, Alexander Graf, 2021/01/20
- [PATCH v6 11/11] hvf: arm: Implement -cpu host, Alexander Graf, 2021/01/20