hvf: Split up hv_vm_create logic per arch
This is preliminary work to split up hv_vm_create logic per platform so we can support creating VMs with > 64GB of RAM on Apple Silicon machines. This is done via ARM HVF's hv_vm_config_create() (and other APIs that modify this config that will be coming in future patches). This should have no behavioral difference at all as hv_vm_config_create() just assigns the same default values as if you just passed NULL to the function. Signed-off-by: Danny Canter <danny_canter@apple.com> Message-id: 20240828111552.93482-3-danny_canter@apple.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
81e3d93a9e
commit
2c760670af
@ -61,10 +61,6 @@
|
|||||||
|
|
||||||
HVFState *hvf_state;
|
HVFState *hvf_state;
|
||||||
|
|
||||||
#ifdef __aarch64__
|
|
||||||
#define HV_VM_DEFAULT NULL
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* 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)
|
||||||
@ -324,7 +320,7 @@ static int hvf_accel_init(MachineState *ms)
|
|||||||
hv_return_t ret;
|
hv_return_t ret;
|
||||||
HVFState *s;
|
HVFState *s;
|
||||||
|
|
||||||
ret = hv_vm_create(HV_VM_DEFAULT);
|
ret = hvf_arch_vm_create(ms, 0);
|
||||||
assert_hvf_ok(ret);
|
assert_hvf_ok(ret);
|
||||||
|
|
||||||
s = g_new0(HVFState, 1);
|
s = g_new0(HVFState, 1);
|
||||||
|
@ -65,6 +65,7 @@ void assert_hvf_ok_impl(hv_return_t ret, const char *file, unsigned int line,
|
|||||||
#define assert_hvf_ok(EX) assert_hvf_ok_impl((EX), __FILE__, __LINE__, #EX)
|
#define assert_hvf_ok(EX) assert_hvf_ok_impl((EX), __FILE__, __LINE__, #EX)
|
||||||
const char *hvf_return_string(hv_return_t ret);
|
const char *hvf_return_string(hv_return_t ret);
|
||||||
int hvf_arch_init(void);
|
int hvf_arch_init(void);
|
||||||
|
hv_return_t hvf_arch_vm_create(MachineState *ms, uint32_t pa_range);
|
||||||
int hvf_arch_init_vcpu(CPUState *cpu);
|
int hvf_arch_init_vcpu(CPUState *cpu);
|
||||||
void hvf_arch_vcpu_destroy(CPUState *cpu);
|
void hvf_arch_vcpu_destroy(CPUState *cpu);
|
||||||
int hvf_vcpu_exec(CPUState *);
|
int hvf_vcpu_exec(CPUState *);
|
||||||
|
@ -929,6 +929,15 @@ void hvf_arch_vcpu_destroy(CPUState *cpu)
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hv_return_t hvf_arch_vm_create(MachineState *ms, uint32_t pa_range)
|
||||||
|
{
|
||||||
|
hv_vm_config_t config = hv_vm_config_create();
|
||||||
|
hv_return_t ret = hv_vm_create(config);
|
||||||
|
os_release(config);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
int hvf_arch_init_vcpu(CPUState *cpu)
|
int hvf_arch_init_vcpu(CPUState *cpu)
|
||||||
{
|
{
|
||||||
ARMCPU *arm_cpu = ARM_CPU(cpu);
|
ARMCPU *arm_cpu = ARM_CPU(cpu);
|
||||||
|
@ -223,6 +223,11 @@ int hvf_arch_init(void)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hv_return_t hvf_arch_vm_create(MachineState *ms, uint32_t pa_range)
|
||||||
|
{
|
||||||
|
return hv_vm_create(HV_VM_DEFAULT);
|
||||||
|
}
|
||||||
|
|
||||||
int hvf_arch_init_vcpu(CPUState *cpu)
|
int hvf_arch_init_vcpu(CPUState *cpu)
|
||||||
{
|
{
|
||||||
X86CPU *x86cpu = X86_CPU(cpu);
|
X86CPU *x86cpu = X86_CPU(cpu);
|
||||||
|
Loading…
Reference in New Issue
Block a user