66use crate :: HardwareIsolatedMemoryProtector ;
77use crate :: MemoryAcceptor ;
88use crate :: mapping:: GuestMemoryMapping ;
9- use crate :: mapping:: GuestPartitionMemoryBuilder ;
9+ use crate :: mapping:: GuestPartitionMemoryView ;
1010use anyhow:: Context ;
1111use futures:: future:: try_join_all;
1212use guestmem:: GuestMemory ;
@@ -210,19 +210,17 @@ pub async fn init(params: &Init<'_>) -> anyhow::Result<MemoryMappings> {
210210 // kernel-registered RAM.
211211
212212 tracing:: debug!( "Building valid encrypted memory view" ) ;
213- let encrypted_memory_builder = {
213+ let encrypted_memory_view = {
214214 let _span = tracing:: info_span!( "create encrypted memory view" ) . entered ( ) ;
215- GuestPartitionMemoryBuilder :: new ( params. mem_layout , Some ( true ) ) ?
215+ GuestPartitionMemoryView :: new ( params. mem_layout , true ) ?
216216 } ;
217217
218218 tracing:: debug!( "Building VTL0 memory map" ) ;
219219 let vtl0_mapping = Arc :: new ( {
220220 let _span = tracing:: info_span!( "map_vtl0_memory" ) . entered ( ) ;
221- encrypted_memory_builder
222- . build_guest_memory_mapping (
223- & gpa_fd,
224- GuestMemoryMapping :: builder ( 0 ) . dma_base_address ( None ) ,
225- )
221+ GuestMemoryMapping :: builder ( 0 )
222+ . dma_base_address ( None )
223+ . build_with_bitmap ( & gpa_fd, & encrypted_memory_view)
226224 . context ( "failed to map vtl0 memory" ) ?
227225 } ) ;
228226
@@ -292,34 +290,28 @@ pub async fn init(params: &Init<'_>) -> anyhow::Result<MemoryMappings> {
292290
293291 tracing:: debug!( "Building shared memory map" ) ;
294292
295- let shared_memory_builder = {
293+ let shared_memory_view = {
296294 let _span = tracing:: info_span!( "create shared memory view" ) . entered ( ) ;
297- GuestPartitionMemoryBuilder :: new ( params. complete_memory_layout , Some ( false ) ) ?
295+ GuestPartitionMemoryView :: new ( params. complete_memory_layout , false ) ?
298296 } ;
299297
300- let valid_shared_memory = shared_memory_builder . partition_valid_memory ( ) ;
298+ let valid_shared_memory = shared_memory_view . partition_valid_memory ( ) ;
301299
302300 // Update the shared mapping bitmap for pages used by the shared
303301 // visibility pool to be marked as shared, since by default pages are
304302 // marked as no-access in the bitmap.
305303 tracing:: debug!( "Updating shared mapping bitmaps" ) ;
306304 for range in params. shared_pool {
307- valid_shared_memory
308- . as_ref ( )
309- . unwrap ( )
310- . update_valid ( range. range , true ) ;
305+ valid_shared_memory. as_ref ( ) . update_valid ( range. range , true ) ;
311306 }
312307
313308 let shared_mapping = Arc :: new ( {
314309 let _span = tracing:: info_span!( "map_shared_memory" ) . entered ( ) ;
315- shared_memory_builder
316- . build_guest_memory_mapping (
317- & gpa_fd,
318- GuestMemoryMapping :: builder ( shared_offset)
319- . shared ( true )
320- . ignore_registration_failure ( params. boot_init . is_none ( ) )
321- . dma_base_address ( Some ( dma_base_address) ) ,
322- )
310+ GuestMemoryMapping :: builder ( shared_offset)
311+ . shared ( true )
312+ . ignore_registration_failure ( params. boot_init . is_none ( ) )
313+ . dma_base_address ( Some ( dma_base_address) )
314+ . build_with_bitmap ( & gpa_fd, & shared_memory_view)
323315 . context ( "failed to map shared memory" ) ?
324316 } ) ;
325317
@@ -373,11 +365,8 @@ pub async fn init(params: &Init<'_>) -> anyhow::Result<MemoryMappings> {
373365 let private_vtl0_memory = GuestMemory :: new ( "trusted" , vtl0_mapping. clone ( ) ) ;
374366
375367 let protector = Arc :: new ( HardwareIsolatedMemoryProtector :: new (
376- encrypted_memory_builder
377- . partition_valid_memory ( )
378- . unwrap ( )
379- . clone ( ) ,
380- valid_shared_memory. unwrap ( ) . clone ( ) ,
368+ encrypted_memory_view. partition_valid_memory ( ) . clone ( ) ,
369+ valid_shared_memory. clone ( ) ,
381370 vtl0_mapping. clone ( ) ,
382371 params. mem_layout . clone ( ) ,
383372 acceptor. as_ref ( ) . unwrap ( ) . clone ( ) ,
@@ -396,22 +385,17 @@ pub async fn init(params: &Init<'_>) -> anyhow::Result<MemoryMappings> {
396385 } ) ,
397386 }
398387 } else {
399- let partition_memory_builder = GuestPartitionMemoryBuilder :: new ( params. mem_layout , None ) ?;
400-
401388 tracing:: debug!( "Creating VTL0 guest memory" ) ;
402389 let vtl0_mapping = {
403390 let _span = tracing:: info_span!( "map_vtl0_memory" ) . entered ( ) ;
404391 let base_address = params. vtl0_alias_map_bit . unwrap_or ( 0 ) ;
405392
406393 Arc :: new (
407- partition_memory_builder
408- . build_guest_memory_mapping (
409- & gpa_fd,
410- GuestMemoryMapping :: builder ( base_address)
411- . for_kernel_access ( true )
412- . dma_base_address ( Some ( base_address) )
413- . ignore_registration_failure ( params. boot_init . is_none ( ) ) ,
414- )
394+ GuestMemoryMapping :: builder ( base_address)
395+ . for_kernel_access ( true )
396+ . dma_base_address ( Some ( base_address) )
397+ . ignore_registration_failure ( params. boot_init . is_none ( ) )
398+ . build_without_bitmap ( & gpa_fd, params. mem_layout )
415399 . context ( "failed to map vtl0 memory" ) ?,
416400 )
417401 } ;
@@ -442,14 +426,11 @@ pub async fn init(params: &Init<'_>) -> anyhow::Result<MemoryMappings> {
442426
443427 let _span = tracing:: info_span!( "map_vtl1_memory" ) . entered ( ) ;
444428 Some ( Arc :: new (
445- partition_memory_builder
446- . build_guest_memory_mapping (
447- & gpa_fd,
448- GuestMemoryMapping :: builder ( 0 )
449- . for_kernel_access ( true )
450- . dma_base_address ( Some ( 0 ) )
451- . ignore_registration_failure ( params. boot_init . is_none ( ) ) ,
452- )
429+ GuestMemoryMapping :: builder ( 0 )
430+ . for_kernel_access ( true )
431+ . dma_base_address ( Some ( 0 ) )
432+ . ignore_registration_failure ( params. boot_init . is_none ( ) )
433+ . build_without_bitmap ( & gpa_fd, params. mem_layout )
453434 . context ( "failed to map vtl1 memory" ) ?,
454435 ) )
455436 }
0 commit comments