@@ -165,23 +165,14 @@ pub fn build_microvm_for_boot(
165165 . cpu_template
166166 . get_cpu_template ( ) ?;
167167
168- /*
169- let (mut vmm, mut vcpus) = create_vmm_and_vcpus(
170- instance_info,
171- event_manager,
172- vm_resources.machine_config.vcpu_count,
173- cpu_template.kvm_capabilities.clone(),
174- )?;
175- */
176-
177168 let kvm = Kvm :: new ( cpu_template. kvm_capabilities . clone ( ) ) ?;
178169 // Set up Kvm Vm and register memory regions.
179170 // Build custom CPU config if a custom template is provided.
180171 let mut vm = Vm :: new ( & kvm) ?;
181172 let ( mut vcpus, vcpus_exit_evt) = vm. create_vcpus ( vm_resources. machine_config . vcpu_count ) ?;
182173 vm. register_memory_regions ( guest_memory) ?;
183174
184- let mut device_manager = DeviceManager :: new ( event_manager, & vcpus_exit_evt, vm . fd ( ) ) ?;
175+ let mut device_manager = DeviceManager :: new ( event_manager, & vcpus_exit_evt, & vm ) ?;
185176
186177 let entry_point = load_kernel ( & boot_config. kernel_file , vm. guest_memory ( ) ) ?;
187178 let initrd = InitrdConfig :: from_config ( boot_config, vm. guest_memory ( ) ) ?;
@@ -257,9 +248,9 @@ pub fn build_microvm_for_boot(
257248 }
258249
259250 #[ cfg( target_arch = "aarch64" ) ]
260- device_manager. attach_legacy_devices_aarch64 ( vm . fd ( ) , event_manager, & mut boot_cmdline) ?;
251+ device_manager. attach_legacy_devices_aarch64 ( & vm , event_manager, & mut boot_cmdline) ?;
261252
262- device_manager. attach_vmgenid_device ( vm. guest_memory ( ) , vm . fd ( ) ) ?;
253+ device_manager. attach_vmgenid_device ( vm. guest_memory ( ) , & vm ) ?;
263254
264255 #[ cfg( target_arch = "aarch64" ) ]
265256 if vcpus[ 0 ] . kvm_vcpu . supports_pvtime ( ) {
@@ -423,7 +414,7 @@ pub fn build_microvm_from_snapshot(
423414 . create_vcpus ( vm_resources. machine_config . vcpu_count )
424415 . map_err ( StartMicrovmError :: Vm ) ?;
425416
426- let mut device_manager = DeviceManager :: new ( event_manager, & vcpus_exit_evt, vm . fd ( ) ) . unwrap ( ) ;
417+ let mut device_manager = DeviceManager :: new ( event_manager, & vcpus_exit_evt, & vm ) . unwrap ( ) ;
427418
428419 vm. register_memory_regions ( guest_memory)
429420 . map_err ( StartMicrovmError :: Vm ) ?;
@@ -477,7 +468,7 @@ pub fn build_microvm_from_snapshot(
477468 // Restore devices states.
478469 let device_ctor_args = DeviceRestoreArgs {
479470 mem : vm. guest_memory ( ) ,
480- vm : vm . fd ( ) ,
471+ vm : & vm ,
481472 event_manager,
482473 vm_resources,
483474 instance_id : & instance_info. id ,
@@ -580,14 +571,7 @@ fn attach_entropy_device(
580571 . to_string ( ) ;
581572
582573 event_manager. add_subscriber ( entropy_device. clone ( ) ) ;
583- device_manager. attach_virtio_device (
584- vm. guest_memory ( ) ,
585- vm. fd ( ) ,
586- id,
587- entropy_device. clone ( ) ,
588- cmdline,
589- false ,
590- )
574+ device_manager. attach_virtio_device ( vm, id, entropy_device. clone ( ) , cmdline, false )
591575}
592576
593577fn attach_block_devices < ' a , I : Iterator < Item = & ' a Arc < Mutex < Block > > > + Debug > (
@@ -614,14 +598,7 @@ fn attach_block_devices<'a, I: Iterator<Item = &'a Arc<Mutex<Block>>> + Debug>(
614598 } ;
615599 // The device mutex mustn't be locked here otherwise it will deadlock.
616600 event_manager. add_subscriber ( block. clone ( ) ) ;
617- device_manager. attach_virtio_device (
618- vm. guest_memory ( ) ,
619- vm. fd ( ) ,
620- id,
621- block. clone ( ) ,
622- cmdline,
623- is_vhost_user,
624- ) ?;
601+ device_manager. attach_virtio_device ( vm, id, block. clone ( ) , cmdline, is_vhost_user) ?;
625602 }
626603 Ok ( ( ) )
627604}
@@ -637,14 +614,7 @@ fn attach_net_devices<'a, I: Iterator<Item = &'a Arc<Mutex<Net>>> + Debug>(
637614 let id = net_device. lock ( ) . expect ( "Poisoned lock" ) . id ( ) . clone ( ) ;
638615 event_manager. add_subscriber ( net_device. clone ( ) ) ;
639616 // The device mutex mustn't be locked here otherwise it will deadlock.
640- device_manager. attach_virtio_device (
641- vm. guest_memory ( ) ,
642- vm. fd ( ) ,
643- id,
644- net_device. clone ( ) ,
645- cmdline,
646- false ,
647- ) ?;
617+ device_manager. attach_virtio_device ( vm, id, net_device. clone ( ) , cmdline, false ) ?;
648618 }
649619 Ok ( ( ) )
650620}
@@ -659,14 +629,7 @@ fn attach_unixsock_vsock_device(
659629 let id = String :: from ( unix_vsock. lock ( ) . expect ( "Poisoned lock" ) . id ( ) ) ;
660630 event_manager. add_subscriber ( unix_vsock. clone ( ) ) ;
661631 // The device mutex mustn't be locked here otherwise it will deadlock.
662- device_manager. attach_virtio_device (
663- vm. guest_memory ( ) ,
664- vm. fd ( ) ,
665- id,
666- unix_vsock. clone ( ) ,
667- cmdline,
668- false ,
669- )
632+ device_manager. attach_virtio_device ( vm, id, unix_vsock. clone ( ) , cmdline, false )
670633}
671634
672635fn attach_balloon_device (
@@ -679,14 +642,7 @@ fn attach_balloon_device(
679642 let id = String :: from ( balloon. lock ( ) . expect ( "Poisoned lock" ) . id ( ) ) ;
680643 event_manager. add_subscriber ( balloon. clone ( ) ) ;
681644 // The device mutex mustn't be locked here otherwise it will deadlock.
682- device_manager. attach_virtio_device (
683- vm. guest_memory ( ) ,
684- vm. fd ( ) ,
685- id,
686- balloon. clone ( ) ,
687- cmdline,
688- false ,
689- )
645+ device_manager. attach_virtio_device ( vm, id, balloon. clone ( ) , cmdline, false )
690646}
691647
692648#[ cfg( test) ]
@@ -933,7 +889,7 @@ pub(crate) mod tests {
933889 #[ cfg( target_arch = "x86_64" ) ]
934890 pub ( crate ) fn insert_vmgenid_device ( vmm : & mut Vmm ) {
935891 vmm. device_manager
936- . attach_vmgenid_device ( vmm. vm . guest_memory ( ) , vmm. vm . fd ( ) )
892+ . attach_vmgenid_device ( vmm. vm . guest_memory ( ) , & vmm. vm )
937893 . unwrap ( ) ;
938894 assert ! ( vmm. device_manager. acpi_devices. vmgenid. is_some( ) ) ;
939895 }
0 commit comments