@@ -12,8 +12,8 @@ use crate::acpi::x86_64::{
1212} ;
1313use crate :: arch:: x86_64:: layout;
1414use crate :: device_manager:: DeviceManager ;
15- use crate :: device_manager:: resources:: ResourceAllocator ;
1615use crate :: vstate:: memory:: { GuestAddress , GuestMemoryMmap } ;
16+ use crate :: vstate:: resources:: ResourceAllocator ;
1717
1818mod x86_64;
1919
@@ -80,7 +80,11 @@ impl AcpiTableWriter<'_> {
8080 }
8181
8282 /// Build the DSDT table for the guest
83- fn build_dsdt ( & mut self , device_manager : & mut DeviceManager ) -> Result < u64 , AcpiError > {
83+ fn build_dsdt (
84+ & mut self ,
85+ device_manager : & mut DeviceManager ,
86+ resource_allocator : & ResourceAllocator ,
87+ ) -> Result < u64 , AcpiError > {
8488 let mut dsdt_data = Vec :: new ( ) ;
8589
8690 // Virtio-devices DSDT data
@@ -99,7 +103,7 @@ impl AcpiTableWriter<'_> {
99103 setup_arch_dsdt ( & mut dsdt_data) ?;
100104
101105 let mut dsdt = Dsdt :: new ( OEM_ID , * b"FCVMDSDT" , OEM_REVISION , dsdt_data) ;
102- self . write_acpi_table ( & device_manager . resource_allocator , & mut dsdt)
106+ self . write_acpi_table ( resource_allocator, & mut dsdt)
103107 }
104108
105109 /// Build the FADT table for the guest
@@ -193,26 +197,16 @@ impl AcpiTableWriter<'_> {
193197pub ( crate ) fn create_acpi_tables (
194198 mem : & GuestMemoryMmap ,
195199 device_manager : & mut DeviceManager ,
200+ resource_allocator : & ResourceAllocator ,
196201 vcpus : & [ Vcpu ] ,
197202) -> Result < ( ) , AcpiError > {
198203 let mut writer = AcpiTableWriter { mem } ;
199- let dsdt_addr = writer. build_dsdt ( device_manager) ?;
200-
201- let fadt_addr = writer. build_fadt ( & device_manager. resource_allocator , dsdt_addr) ?;
202- let madt_addr = writer. build_madt (
203- & device_manager. resource_allocator ,
204- vcpus. len ( ) . try_into ( ) . unwrap ( ) ,
205- ) ?;
206- let mcfg_addr = writer. build_mcfg (
207- & device_manager. resource_allocator ,
208- layout:: PCI_MMCONFIG_START ,
209- ) ?;
210- let xsdt_addr = writer. build_xsdt (
211- & device_manager. resource_allocator ,
212- fadt_addr,
213- madt_addr,
214- mcfg_addr,
215- ) ?;
204+ let dsdt_addr = writer. build_dsdt ( device_manager, resource_allocator) ?;
205+
206+ let fadt_addr = writer. build_fadt ( resource_allocator, dsdt_addr) ?;
207+ let madt_addr = writer. build_madt ( resource_allocator, vcpus. len ( ) . try_into ( ) . unwrap ( ) ) ?;
208+ let mcfg_addr = writer. build_mcfg ( resource_allocator, layout:: PCI_MMCONFIG_START ) ?;
209+ let xsdt_addr = writer. build_xsdt ( resource_allocator, fadt_addr, madt_addr, mcfg_addr) ?;
216210 writer. build_rsdp ( xsdt_addr)
217211}
218212
@@ -224,8 +218,8 @@ mod tests {
224218 use crate :: acpi:: { AcpiError , AcpiTableWriter } ;
225219 use crate :: arch:: x86_64:: layout:: { SYSTEM_MEM_SIZE , SYSTEM_MEM_START } ;
226220 use crate :: builder:: tests:: default_vmm;
227- use crate :: device_manager:: resources:: ResourceAllocator ;
228221 use crate :: utils:: u64_to_usize;
222+ use crate :: vstate:: resources:: ResourceAllocator ;
229223 use crate :: vstate:: vm:: tests:: setup_vm_with_memory;
230224
231225 struct MockSdt ( Vec < u8 > ) ;
@@ -259,14 +253,14 @@ mod tests {
259253 // This should succeed
260254 let mut sdt = MockSdt ( vec ! [ 0 ; 4096 ] ) ;
261255 let addr = writer
262- . write_acpi_table ( & vmm. device_manager . resource_allocator , & mut sdt)
256+ . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
263257 . unwrap ( ) ;
264258 assert_eq ! ( addr, SYSTEM_MEM_START ) ;
265259
266260 // Let's try to write two 4K pages plus one byte
267261 let mut sdt = MockSdt ( vec ! [ 0 ; usize :: try_from( SYSTEM_MEM_SIZE + 1 ) . unwrap( ) ] ) ;
268262 let err = writer
269- . write_acpi_table ( & vmm. device_manager . resource_allocator , & mut sdt)
263+ . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
270264 . unwrap_err ( ) ;
271265 assert ! (
272266 matches!(
@@ -281,27 +275,27 @@ mod tests {
281275 // succeed.
282276 let mut sdt = MockSdt ( vec ! [ 0 ; 5 ] ) ;
283277 let addr = writer
284- . write_acpi_table ( & vmm. device_manager . resource_allocator , & mut sdt)
278+ . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
285279 . unwrap ( ) ;
286280 assert_eq ! ( addr, SYSTEM_MEM_START + 4096 ) ;
287281 let mut sdt = MockSdt ( vec ! [ 0 ; 2 ] ) ;
288282 let addr = writer
289- . write_acpi_table ( & vmm. device_manager . resource_allocator , & mut sdt)
283+ . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
290284 . unwrap ( ) ;
291285 assert_eq ! ( addr, SYSTEM_MEM_START + 4101 ) ;
292286 let mut sdt = MockSdt ( vec ! [ 0 ; 4 ] ) ;
293287 let addr = writer
294- . write_acpi_table ( & vmm. device_manager . resource_allocator , & mut sdt)
288+ . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
295289 . unwrap ( ) ;
296290 assert_eq ! ( addr, SYSTEM_MEM_START + 4103 ) ;
297291 let mut sdt = MockSdt ( vec ! [ 0 ; 8 ] ) ;
298292 let addr = writer
299- . write_acpi_table ( & vmm. device_manager . resource_allocator , & mut sdt)
293+ . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
300294 . unwrap ( ) ;
301295 assert_eq ! ( addr, SYSTEM_MEM_START + 4107 ) ;
302296 let mut sdt = MockSdt ( vec ! [ 0 ; 16 ] ) ;
303297 let addr = writer
304- . write_acpi_table ( & vmm. device_manager . resource_allocator , & mut sdt)
298+ . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
305299 . unwrap ( ) ;
306300 assert_eq ! ( addr, SYSTEM_MEM_START + 4115 ) ;
307301 }
0 commit comments