vmm: Add page size as a parameter for MemoryRangeTable::from_bitmap()

This will be helpful to support the creation of a MemoryRangeTable from
virtio-mem, as it uses 2M pages.

Signed-off-by: Sebastien Boeuf <sebastien.boeuf@intel.com>
This commit is contained in:
Sebastien Boeuf 2021-09-23 09:54:40 +02:00 committed by Bo Chen
parent af3a59aa33
commit a1caa6549a
3 changed files with 3 additions and 4 deletions

View File

@ -554,7 +554,7 @@ impl VhostUserHandle {
let ptr = region.as_ptr() as *const u64;
std::slice::from_raw_parts(ptr, len).to_vec()
};
Ok(MemoryRangeTable::from_bitmap(bitmap, 0))
Ok(MemoryRangeTable::from_bitmap(bitmap, 0, 4096))
} else {
Err(Error::MissingShmLogRegion)
}

View File

@ -184,8 +184,7 @@ pub struct MemoryRangeTable {
}
impl MemoryRangeTable {
pub fn from_bitmap(bitmap: Vec<u64>, start_addr: u64) -> Self {
let page_size = 4096;
pub fn from_bitmap(bitmap: Vec<u64>, start_addr: u64, page_size: u64) -> Self {
let mut table = MemoryRangeTable::default();
let mut entry: Option<MemoryRange> = None;
for (i, block) in bitmap.iter().enumerate() {

View File

@ -2038,7 +2038,7 @@ impl Migratable for MemoryManager {
.map(|(x, y)| x | y)
.collect();
let sub_table = MemoryRangeTable::from_bitmap(dirty_bitmap, r.gpa);
let sub_table = MemoryRangeTable::from_bitmap(dirty_bitmap, r.gpa, 4096);
if sub_table.regions().is_empty() {
info!("Dirty Memory Range Table is empty");