@@ -8,9 +8,10 @@ use std::{
88use arm_vcpu:: Aarch64VCpuSetupConfig ;
99
1010use crate :: {
11- GuestPhysAddr , TASK_STACK_SIZE , VmData , VmStatusInitOps ,
11+ GuestPhysAddr , TASK_STACK_SIZE , VmRunCommonData , VmStatusInitOps ,
1212 arch:: { VmStatusRunning , cpu:: VCpu } ,
1313 config:: AxVMConfig ,
14+ data2:: VmDataWeak ,
1415 vm:: { MappingFlags , VmId } ,
1516} ;
1617
@@ -19,26 +20,27 @@ const VM_ASPACE_SIZE: usize = 0x7fff_ffff_f000;
1920const VM_ASPACE_END : GuestPhysAddr =
2021 GuestPhysAddr :: from_usize ( VM_ASPACE_BASE . as_usize ( ) + VM_ASPACE_SIZE ) ;
2122
22- pub struct VmInit {
23+ pub struct VmMachineInited {
2324 pub id : VmId ,
2425 pub name : String ,
25- pt_levels : usize ,
26- stop_requested : AtomicBool ,
27- run_data : Option < VmStatusRunning > ,
26+ // pt_levels: usize,
27+ // stop_requested: AtomicBool,
28+ pub run_data : VmStatusRunning ,
2829}
2930
30- impl VmInit {
31+ impl VmMachineInited {
3132 /// Creates a new VM with the given configuration
32- pub fn new ( config : & AxVMConfig ) -> anyhow:: Result < Self > {
33- let vm = Self {
34- id : config. id ( ) . into ( ) ,
35- name : config. name ( ) ,
36- pt_levels : 4 ,
37- stop_requested : AtomicBool :: new ( false ) ,
38- run_data : None ,
39- } ;
40- Ok ( vm)
41- }
33+ // pub fn new(config: &AxVMConfig) -> anyhow::Result<Self> {
34+ // let vm = Self {
35+ // id: config.id().into(),
36+ // name: config.name().into(),
37+ // pt_levels: 4,
38+ // stop_requested: AtomicBool::new(false),
39+ // run_data: None,
40+ // };
41+ // Ok(vm)
42+ // }
43+
4244
4345 /// Initializes the VM, creating vCPUs and setting up memory
4446 pub fn init ( & mut self , config : AxVMConfig ) -> anyhow:: Result < ( ) > {
@@ -47,14 +49,14 @@ impl VmInit {
4749 let vcpus = self . new_vcpus ( & config) ?;
4850
4951 let mut run_data = VmStatusRunning :: new (
50- VmData :: new ( self . pt_levels , VM_ASPACE_BASE ..VM_ASPACE_END ) ?,
52+ VmRunCommonData :: new ( self . pt_levels , VM_ASPACE_BASE ..VM_ASPACE_END ) ?,
5153 vcpus,
5254 ) ;
5355
5456 debug ! ( "Mapping memory regions for VM {} ({})" , self . id, self . name) ;
5557 for memory_cfg in & config. memory_regions {
5658 use crate :: vm:: MappingFlags ;
57- let m = run_data. data . new_memory (
59+ let m = run_data. data . try_use ( ) ? . new_memory (
5860 memory_cfg,
5961 MappingFlags :: READ
6062 | MappingFlags :: WRITE
@@ -64,13 +66,13 @@ impl VmInit {
6466 run_data. data . add_memory ( m) ;
6567 }
6668
67- run_data. data . load_kernel_image ( & config) ?;
69+ run_data. data . try_use ( ) ? . load_kernel_image ( & config) ?;
6870 run_data. make_dtb ( & config) ?;
6971
70- run_data. data . map_passthrough_regions ( ) ?;
72+ run_data. data . try_use ( ) ? . map_passthrough_regions ( ) ?;
7173
72- let kernel_entry = run_data. data . kernel_entry ( ) ;
73- let gpt_root = run_data. data . gpt_root ( ) ;
74+ let kernel_entry = run_data. data . try_use ( ) ? . kernel_entry ( ) ;
75+ let gpt_root = run_data. data . try_use ( ) ? . gpt_root ( ) ;
7476
7577 // Setup vCPUs
7678 for vcpu in & mut run_data. vcpus {
@@ -141,7 +143,7 @@ impl VmInit {
141143 }
142144}
143145
144- impl VmStatusInitOps for VmInit {
146+ impl VmStatusInitOps for VmMachineInited {
145147 type Running = VmStatusRunning ;
146148
147149 fn id ( & self ) -> VmId {
@@ -152,7 +154,7 @@ impl VmStatusInitOps for VmInit {
152154 & self . name
153155 }
154156
155- fn start ( self ) -> Result < Self :: Running , ( anyhow:: Error , Self ) > {
157+ fn start ( self , vmdata : VmDataWeak ) -> Result < Self :: Running , ( anyhow:: Error , Self ) > {
156158 let mut data = self . run_data . unwrap ( ) ;
157159
158160 let mut vcpus = vec ! [ ] ;
0 commit comments