@@ -1028,8 +1028,16 @@ fn attach_cpu_container_device(vmm: &mut Vmm, vcpu_count: u8) -> Result<(), Star
10281028 vcpu_count,
10291029 ) ?) ) ;
10301030 vmm. acpi_device_manager
1031- . attach_cpu_container ( cpu_container, vmm. vm . fd ( ) )
1031+ . attach_cpu_container ( cpu_container. clone ( ) , vmm. vm . fd ( ) )
10321032 . map_err ( StartMicrovmError :: AttachCpuContainerDevice ) ?;
1033+ vmm. mmio_device_manager
1034+ . register_mmio_cpu_container_for_boot (
1035+ vmm. vm . fd ( ) ,
1036+ & mut vmm. resource_allocator ,
1037+ cpu_container,
1038+ )
1039+ . map_err ( StartMicrovmError :: RegisterMmioDevice ) ?;
1040+
10331041 Ok ( ( ) )
10341042}
10351043
@@ -1143,6 +1151,9 @@ pub mod tests {
11431151 #[ cfg( target_arch = "aarch64" ) ]
11441152 let resource_allocator = ResourceAllocator :: new ( ) . unwrap ( ) ;
11451153
1154+ #[ cfg( target_arch = "x86_64" ) ]
1155+ let mut mmio_device_manager = MMIODeviceManager :: new ( ) ;
1156+ #[ cfg( target_arch = "aarch64" ) ]
11461157 let mmio_device_manager = MMIODeviceManager :: new ( ) ;
11471158
11481159 #[ cfg( target_arch = "x86_64" ) ]
@@ -1166,16 +1177,21 @@ pub mod tests {
11661177 )
11671178 . unwrap ( ) ;
11681179
1169- #[ cfg( target_arch = "x86_64" ) ]
1170- setup_interrupt_controller ( & mut vm) . unwrap ( ) ;
1171-
11721180 #[ cfg( target_arch = "x86_64" ) ]
11731181 {
1182+ setup_interrupt_controller ( & mut vm) . unwrap ( ) ;
11741183 let cpu_container = Arc :: new ( Mutex :: new (
11751184 CpuContainer :: new ( & mut resource_allocator, 1 ) . unwrap ( ) ,
11761185 ) ) ;
11771186 acpi_device_manager
1178- . attach_cpu_container ( cpu_container, vm. fd ( ) )
1187+ . attach_cpu_container ( cpu_container. clone ( ) , vm. fd ( ) )
1188+ . unwrap ( ) ;
1189+ mmio_device_manager
1190+ . register_mmio_cpu_container_for_boot (
1191+ vm. fd ( ) ,
1192+ & mut resource_allocator,
1193+ cpu_container,
1194+ )
11791195 . unwrap ( ) ;
11801196 }
11811197
@@ -1559,8 +1575,8 @@ pub mod tests {
15591575 #[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
15601576 assert ! ( cmdline_contains(
15611577 & cmdline,
1562- "virtio_mmio.device=4K@0xd0001000:6 virtio_mmio.device=4K@0xd0002000:7 \
1563- virtio_mmio.device=4K@0xd0003000:8 "
1578+ "virtio_mmio.device=4K@0xd0001000:7 virtio_mmio.device=4K@0xd0002000:8 \
1579+ virtio_mmio.device=4K@0xd0003000:9 "
15641580 ) ) ;
15651581 }
15661582
@@ -1655,7 +1671,7 @@ pub mod tests {
16551671 #[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
16561672 assert ! ( cmdline_contains(
16571673 & cmdline,
1658- "virtio_mmio.device=4K@0xd0001000:6 "
1674+ "virtio_mmio.device=4K@0xd0001000:7 "
16591675 ) ) ;
16601676 }
16611677
@@ -1672,7 +1688,7 @@ pub mod tests {
16721688 #[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
16731689 assert ! ( cmdline_contains(
16741690 & cmdline,
1675- "virtio_mmio.device=4K@0xd0001000:6 "
1691+ "virtio_mmio.device=4K@0xd0001000:7 "
16761692 ) ) ;
16771693 }
16781694
@@ -1691,7 +1707,7 @@ pub mod tests {
16911707 #[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
16921708 assert ! ( cmdline_contains(
16931709 & cmdline,
1694- "virtio_mmio.device=4K@0xd0001000:6 "
1710+ "virtio_mmio.device=4K@0xd0001000:7 "
16951711 ) ) ;
16961712 }
16971713}
0 commit comments