@@ -54,7 +54,7 @@ impl AcpiTableWriter<'_> {
5454 /// buffer. It returns the address in which it wrote the table.
5555 fn write_acpi_table < S > (
5656 & mut self ,
57- resource_allocator : & ResourceAllocator ,
57+ resource_allocator : & mut ResourceAllocator ,
5858 table : & mut S ,
5959 ) -> Result < u64 , AcpiError >
6060 where
@@ -83,7 +83,7 @@ impl AcpiTableWriter<'_> {
8383 fn build_dsdt (
8484 & mut self ,
8585 device_manager : & mut DeviceManager ,
86- resource_allocator : & ResourceAllocator ,
86+ resource_allocator : & mut ResourceAllocator ,
8787 ) -> Result < u64 , AcpiError > {
8888 let mut dsdt_data = Vec :: new ( ) ;
8989
@@ -111,7 +111,7 @@ impl AcpiTableWriter<'_> {
111111 /// This includes a pointer with the location of the DSDT in guest memory
112112 fn build_fadt (
113113 & mut self ,
114- resource_allocator : & ResourceAllocator ,
114+ resource_allocator : & mut ResourceAllocator ,
115115 dsdt_addr : u64 ,
116116 ) -> Result < u64 , AcpiError > {
117117 let mut fadt = Fadt :: new ( OEM_ID , * b"FCVMFADT" , OEM_REVISION ) ;
@@ -129,7 +129,7 @@ impl AcpiTableWriter<'_> {
129129 /// This includes information about the interrupt controllers supported in the platform
130130 fn build_madt (
131131 & mut self ,
132- resource_allocator : & ResourceAllocator ,
132+ resource_allocator : & mut ResourceAllocator ,
133133 nr_vcpus : u8 ,
134134 ) -> Result < u64 , AcpiError > {
135135 let mut madt = Madt :: new (
@@ -147,7 +147,7 @@ impl AcpiTableWriter<'_> {
147147 /// Currently, we pass to the guest just FADT and MADT tables.
148148 fn build_xsdt (
149149 & mut self ,
150- resource_allocator : & ResourceAllocator ,
150+ resource_allocator : & mut ResourceAllocator ,
151151 fadt_addr : u64 ,
152152 madt_addr : u64 ,
153153 mcfg_addr : u64 ,
@@ -164,7 +164,7 @@ impl AcpiTableWriter<'_> {
164164 /// Build the MCFG table for the guest.
165165 fn build_mcfg (
166166 & mut self ,
167- resource_allocator : & ResourceAllocator ,
167+ resource_allocator : & mut ResourceAllocator ,
168168 pci_mmio_config_addr : u64 ,
169169 ) -> Result < u64 , AcpiError > {
170170 let mut mcfg = Mcfg :: new ( OEM_ID , * b"FCMVMCFG" , OEM_REVISION , pci_mmio_config_addr) ;
@@ -197,7 +197,7 @@ impl AcpiTableWriter<'_> {
197197pub ( crate ) fn create_acpi_tables (
198198 mem : & GuestMemoryMmap ,
199199 device_manager : & mut DeviceManager ,
200- resource_allocator : & ResourceAllocator ,
200+ resource_allocator : & mut ResourceAllocator ,
201201 vcpus : & [ Vcpu ] ,
202202) -> Result < ( ) , AcpiError > {
203203 let mut writer = AcpiTableWriter { mem } ;
@@ -253,14 +253,20 @@ mod tests {
253253 // This should succeed
254254 let mut sdt = MockSdt ( vec ! [ 0 ; 4096 ] ) ;
255255 let addr = writer
256- . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
256+ . write_acpi_table (
257+ & mut vmm. vm . common . resource_allocator . lock ( ) . unwrap ( ) ,
258+ & mut sdt,
259+ )
257260 . unwrap ( ) ;
258261 assert_eq ! ( addr, SYSTEM_MEM_START ) ;
259262
260263 // Let's try to write two 4K pages plus one byte
261264 let mut sdt = MockSdt ( vec ! [ 0 ; usize :: try_from( SYSTEM_MEM_SIZE + 1 ) . unwrap( ) ] ) ;
262265 let err = writer
263- . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
266+ . write_acpi_table (
267+ & mut vmm. vm . common . resource_allocator . lock ( ) . unwrap ( ) ,
268+ & mut sdt,
269+ )
264270 . unwrap_err ( ) ;
265271 assert ! (
266272 matches!(
@@ -275,27 +281,42 @@ mod tests {
275281 // succeed.
276282 let mut sdt = MockSdt ( vec ! [ 0 ; 5 ] ) ;
277283 let addr = writer
278- . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
284+ . write_acpi_table (
285+ & mut vmm. vm . common . resource_allocator . lock ( ) . unwrap ( ) ,
286+ & mut sdt,
287+ )
279288 . unwrap ( ) ;
280289 assert_eq ! ( addr, SYSTEM_MEM_START + 4096 ) ;
281290 let mut sdt = MockSdt ( vec ! [ 0 ; 2 ] ) ;
282291 let addr = writer
283- . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
292+ . write_acpi_table (
293+ & mut vmm. vm . common . resource_allocator . lock ( ) . unwrap ( ) ,
294+ & mut sdt,
295+ )
284296 . unwrap ( ) ;
285297 assert_eq ! ( addr, SYSTEM_MEM_START + 4101 ) ;
286298 let mut sdt = MockSdt ( vec ! [ 0 ; 4 ] ) ;
287299 let addr = writer
288- . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
300+ . write_acpi_table (
301+ & mut vmm. vm . common . resource_allocator . lock ( ) . unwrap ( ) ,
302+ & mut sdt,
303+ )
289304 . unwrap ( ) ;
290305 assert_eq ! ( addr, SYSTEM_MEM_START + 4103 ) ;
291306 let mut sdt = MockSdt ( vec ! [ 0 ; 8 ] ) ;
292307 let addr = writer
293- . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
308+ . write_acpi_table (
309+ & mut vmm. vm . common . resource_allocator . lock ( ) . unwrap ( ) ,
310+ & mut sdt,
311+ )
294312 . unwrap ( ) ;
295313 assert_eq ! ( addr, SYSTEM_MEM_START + 4107 ) ;
296314 let mut sdt = MockSdt ( vec ! [ 0 ; 16 ] ) ;
297315 let addr = writer
298- . write_acpi_table ( & vmm. vm . common . resource_allocator , & mut sdt)
316+ . write_acpi_table (
317+ & mut vmm. vm . common . resource_allocator . lock ( ) . unwrap ( ) ,
318+ & mut sdt,
319+ )
299320 . unwrap ( ) ;
300321 assert_eq ! ( addr, SYSTEM_MEM_START + 4115 ) ;
301322 }
@@ -312,11 +333,11 @@ mod tests {
312333 let mut writer = AcpiTableWriter {
313334 mem : vm. guest_memory ( ) ,
314335 } ;
315- let resource_allocator = ResourceAllocator :: new ( ) . unwrap ( ) ;
336+ let mut resource_allocator = ResourceAllocator :: new ( ) ;
316337
317338 let mut sdt = MockSdt ( vec ! [ 0 ; usize :: try_from( SYSTEM_MEM_SIZE ) . unwrap( ) ] ) ;
318339 let err = writer
319- . write_acpi_table ( & resource_allocator, & mut sdt)
340+ . write_acpi_table ( & mut resource_allocator, & mut sdt)
320341 . unwrap_err ( ) ;
321342 assert ! (
322343 matches!(
0 commit comments