@@ -1028,8 +1028,16 @@ fn attach_cpu_container_device(vmm: &mut Vmm, vcpu_count: u8) -> Result<(), Star
1028
1028
vcpu_count,
1029
1029
) ?) ) ;
1030
1030
vmm. acpi_device_manager
1031
- . attach_cpu_container ( cpu_container, vmm. vm . fd ( ) )
1031
+ . attach_cpu_container ( cpu_container. clone ( ) , vmm. vm . fd ( ) )
1032
1032
. 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
+
1033
1041
Ok ( ( ) )
1034
1042
}
1035
1043
@@ -1143,6 +1151,9 @@ pub mod tests {
1143
1151
#[ cfg( target_arch = "aarch64" ) ]
1144
1152
let resource_allocator = ResourceAllocator :: new ( ) . unwrap ( ) ;
1145
1153
1154
+ #[ cfg( target_arch = "x86_64" ) ]
1155
+ let mut mmio_device_manager = MMIODeviceManager :: new ( ) ;
1156
+ #[ cfg( target_arch = "aarch64" ) ]
1146
1157
let mmio_device_manager = MMIODeviceManager :: new ( ) ;
1147
1158
1148
1159
#[ cfg( target_arch = "x86_64" ) ]
@@ -1166,16 +1177,21 @@ pub mod tests {
1166
1177
)
1167
1178
. unwrap ( ) ;
1168
1179
1169
- #[ cfg( target_arch = "x86_64" ) ]
1170
- setup_interrupt_controller ( & mut vm) . unwrap ( ) ;
1171
-
1172
1180
#[ cfg( target_arch = "x86_64" ) ]
1173
1181
{
1182
+ setup_interrupt_controller ( & mut vm) . unwrap ( ) ;
1174
1183
let cpu_container = Arc :: new ( Mutex :: new (
1175
1184
CpuContainer :: new ( & mut resource_allocator, 1 ) . unwrap ( ) ,
1176
1185
) ) ;
1177
1186
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
+ )
1179
1195
. unwrap ( ) ;
1180
1196
}
1181
1197
@@ -1559,8 +1575,8 @@ pub mod tests {
1559
1575
#[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
1560
1576
assert ! ( cmdline_contains(
1561
1577
& 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 "
1564
1580
) ) ;
1565
1581
}
1566
1582
@@ -1655,7 +1671,7 @@ pub mod tests {
1655
1671
#[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
1656
1672
assert ! ( cmdline_contains(
1657
1673
& cmdline,
1658
- "virtio_mmio.device=4K@0xd0001000:6 "
1674
+ "virtio_mmio.device=4K@0xd0001000:7 "
1659
1675
) ) ;
1660
1676
}
1661
1677
@@ -1672,7 +1688,7 @@ pub mod tests {
1672
1688
#[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
1673
1689
assert ! ( cmdline_contains(
1674
1690
& cmdline,
1675
- "virtio_mmio.device=4K@0xd0001000:6 "
1691
+ "virtio_mmio.device=4K@0xd0001000:7 "
1676
1692
) ) ;
1677
1693
}
1678
1694
@@ -1691,7 +1707,7 @@ pub mod tests {
1691
1707
#[ cfg( any( target_arch = "x86" , target_arch = "x86_64" ) ) ]
1692
1708
assert ! ( cmdline_contains(
1693
1709
& cmdline,
1694
- "virtio_mmio.device=4K@0xd0001000:6 "
1710
+ "virtio_mmio.device=4K@0xd0001000:7 "
1695
1711
) ) ;
1696
1712
}
1697
1713
}
0 commit comments