@@ -274,8 +274,6 @@ pub mod aarch64 {
274274 vcpus. push ( vcpu) ;
275275 }
276276
277- setup_interrupt_controller ( vm, vcpu_count) ?;
278-
279277 Ok ( vcpus)
280278 }
281279
@@ -317,6 +315,9 @@ pub mod aarch64 {
317315 let vcpus = create_vcpus ( & mut vmm. vm , vm_config. vcpu_count , & vmm. vcpus_exit_evt )
318316 . map_err ( StartMicrovmError :: Internal ) ?;
319317
318+ setup_interrupt_controller ( & mut vmm. vm , vm_config. vcpu_count )
319+ . map_err ( StartMicrovmError :: Internal ) ?;
320+
320321 Ok ( ( vmm, vcpus) )
321322 }
322323}
@@ -459,6 +460,11 @@ pub mod x86_64 {
459460 kvm_capabilities,
460461 ) ?;
461462
463+ setup_interrupt_controller ( & mut vmm. vm ) . map_err ( StartMicrovmError :: Internal ) ?;
464+ vmm. pio_device_manager
465+ . register_devices ( vmm. vm . fd ( ) )
466+ . unwrap ( ) ;
467+
462468 let vcpus = create_vcpus ( & mut vmm. vm , vm_config. vcpu_count , & vmm. vcpus_exit_evt )
463469 . map_err ( StartMicrovmError :: Internal ) ?;
464470
@@ -477,10 +483,7 @@ fn build_vmm(
477483
478484 // Set up Kvm Vm and register memory regions.
479485 // Build custom CPU config if a custom template is provided.
480- //
481- // allow unused_mut for the aarch64 platform.
482- #[ allow( unused_mut) ]
483- let mut vm = Vm :: new ( kvm_capabilities)
486+ let vm = Vm :: new ( kvm_capabilities)
484487 . map_err ( VmmError :: Vm )
485488 . map_err ( Internal ) ?;
486489 vm. memory_init ( & guest_memory, vm_config. track_dirty_pages )
@@ -513,15 +516,9 @@ fn build_vmm(
513516 . map_err ( VmmError :: EventFd )
514517 . map_err ( Internal ) ?;
515518
516- x86_64:: setup_interrupt_controller ( & mut vm) . map_err ( Internal ) ?;
517-
518519 // create pio dev manager with legacy devices
519- let pio_device_manager = {
520- // TODO Remove these unwraps.
521- let mut pio_dev_mgr = PortIODeviceManager :: new ( serial_device, reset_evt) . unwrap ( ) ;
522- pio_dev_mgr. register_devices ( vm. fd ( ) ) . unwrap ( ) ;
523- pio_dev_mgr
524- } ;
520+ // TODO: remove this unwrap
521+ let pio_device_manager = PortIODeviceManager :: new ( serial_device, reset_evt) . unwrap ( ) ;
525522
526523 pio_device_manager
527524 } ;
0 commit comments