Skip to content

Commit 76f1527

Browse files
committed
refactor: introduce mib_to_bytes helper
Left-shifting by 20 to convert MiB to bytes is ubiquitous in our codebase, but probably somewhat arcane to people not familiar with low level stuff. Let's define a helper for the conversion. Signed-off-by: Patrick Roy <[email protected]>
1 parent ff8ca93 commit 76f1527

File tree

8 files changed

+28
-14
lines changed

8 files changed

+28
-14
lines changed

src/vmm/src/arch/x86_64/mod.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ use linux_loader::loader::elf::start_info::{
4141

4242
use crate::arch::{BootProtocol, InitrdConfig, SYSTEM_MEM_SIZE, SYSTEM_MEM_START};
4343
use crate::device_manager::resources::ResourceAllocator;
44-
use crate::utils::u64_to_usize;
44+
use crate::utils::{mib_to_bytes, u64_to_usize};
4545
use crate::vstate::memory::{
4646
Address, GuestAddress, GuestMemory, GuestMemoryMmap, GuestMemoryRegion,
4747
};
@@ -77,7 +77,7 @@ pub enum ConfigurationError {
7777
pub const FIRST_ADDR_PAST_32BITS: u64 = 1 << 32;
7878

7979
/// Size of MMIO gap at top of 32-bit address space.
80-
pub const MEM_32BIT_GAP_SIZE: u64 = 768 << 20;
80+
pub const MEM_32BIT_GAP_SIZE: u64 = mib_to_bytes(768) as u64;
8181
/// The start of the memory area reserved for MMIO devices.
8282
pub const MMIO_MEM_START: u64 = FIRST_ADDR_PAST_32BITS - MEM_32BIT_GAP_SIZE;
8383
/// The size of the memory area reserved for MMIO devices.
@@ -403,7 +403,7 @@ mod tests {
403403
);
404404

405405
// Now assigning some memory that falls before the 32bit memory hole.
406-
let mem_size = 128 << 20;
406+
let mem_size = mib_to_bytes(128);
407407
let gm = arch_mem(mem_size);
408408
let mut resource_allocator = ResourceAllocator::new().unwrap();
409409
configure_system(
@@ -428,7 +428,7 @@ mod tests {
428428
.unwrap();
429429

430430
// Now assigning some memory that is equal to the start of the 32bit memory hole.
431-
let mem_size = 3328 << 20;
431+
let mem_size = mib_to_bytes(3328);
432432
let gm = arch_mem(mem_size);
433433
let mut resource_allocator = ResourceAllocator::new().unwrap();
434434
configure_system(
@@ -453,7 +453,7 @@ mod tests {
453453
.unwrap();
454454

455455
// Now assigning some memory that falls after the 32bit memory hole.
456-
let mem_size = 3330 << 20;
456+
let mem_size = mib_to_bytes(3330);
457457
let gm = arch_mem(mem_size);
458458
let mut resource_allocator = ResourceAllocator::new().unwrap();
459459
configure_system(

src/vmm/src/builder.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1050,6 +1050,7 @@ pub(crate) mod tests {
10501050
use crate::mmds::data_store::{Mmds, MmdsVersion};
10511051
use crate::mmds::ns::MmdsNetworkStack;
10521052
use crate::test_utils::{single_region_mem, single_region_mem_at};
1053+
use crate::utils::mib_to_bytes;
10531054
use crate::vmm_config::balloon::{BALLOON_DEV_ID, BalloonBuilder, BalloonDeviceConfig};
10541055
use crate::vmm_config::boot_source::DEFAULT_KERNEL_CMDLINE;
10551056
use crate::vmm_config::drive::{BlockBuilder, BlockDeviceConfig};
@@ -1113,7 +1114,7 @@ pub(crate) mod tests {
11131114
}
11141115

11151116
pub(crate) fn default_vmm() -> Vmm {
1116-
let (kvm, mut vm, guest_memory) = setup_vm_with_memory(128 << 20);
1117+
let (kvm, mut vm, guest_memory) = setup_vm_with_memory(mib_to_bytes(128));
11171118

11181119
let mmio_device_manager = MMIODeviceManager::new();
11191120
let acpi_device_manager = ACPIDeviceManager::new();

src/vmm/src/devices/virtio/vsock/event_handler.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,9 +477,10 @@ mod tests {
477477
use crate::arch::x86_64::{FIRST_ADDR_PAST_32BITS, MEM_32BIT_GAP_SIZE};
478478
use crate::devices::virtio::vsock::packet::VSOCK_PKT_HDR_SIZE;
479479
use crate::test_utils::multi_region_mem;
480+
use crate::utils::mib_to_bytes;
480481
use crate::vstate::memory::GuestAddress;
481482

482-
const MIB: usize = 1 << 20;
483+
const MIB: usize = mib_to_bytes(1);
483484

484485
let mut test_ctx = TestContext::new();
485486
test_ctx.mem = multi_region_mem(&[

src/vmm/src/resources.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ use crate::logger::info;
1313
use crate::mmds;
1414
use crate::mmds::data_store::{Mmds, MmdsVersion};
1515
use crate::mmds::ns::MmdsNetworkStack;
16+
use crate::utils::mib_to_bytes;
1617
use crate::utils::net::ipv4addr::is_link_local_valid;
1718
use crate::vmm_config::balloon::*;
1819
use crate::vmm_config::boot_source::{
@@ -462,7 +463,8 @@ impl VmResources {
462463
self.machine_config.huge_pages,
463464
)
464465
} else {
465-
let regions = crate::arch::arch_memory_regions(self.machine_config.mem_size_mib << 20);
466+
let regions =
467+
crate::arch::arch_memory_regions(mib_to_bytes(self.machine_config.mem_size_mib));
466468
GuestMemoryMmap::anonymous(
467469
regions.into_iter(),
468470
self.machine_config.track_dirty_pages,

src/vmm/src/utils/mod.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@ pub mod sm;
1313
use std::num::Wrapping;
1414
use std::result::Result;
1515

16+
/// How many bits to left-shift by to convert MiB to bytes
17+
const MIB_TO_BYTES_SHIFT: usize = 20;
18+
1619
/// Return the default page size of the platform, in bytes.
1720
pub fn get_page_size() -> Result<usize, vmm_sys_util::errno::Error> {
1821
// SAFETY: Safe because the parameters are valid.
@@ -45,3 +48,8 @@ pub const fn usize_to_u64(num: usize) -> u64 {
4548
pub const fn wrap_usize_to_u32(num: usize) -> Wrapping<u32> {
4649
Wrapping(((num as u64) & 0xFFFFFFFF) as u32)
4750
}
51+
52+
/// Converts MiB to Bytes
53+
pub const fn mib_to_bytes(mib: usize) -> usize {
54+
mib << MIB_TO_BYTES_SHIFT
55+
}

src/vmm/src/vstate/memory.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use vmm_sys_util::errno;
2323

2424
use crate::DirtyBitmap;
2525
use crate::arch::arch_memory_regions;
26-
use crate::utils::{get_page_size, u64_to_usize};
26+
use crate::utils::{get_page_size, mib_to_bytes, u64_to_usize};
2727
use crate::vmm_config::machine_config::HugePageConfig;
2828

2929
/// Type of GuestMemoryMmap.
@@ -72,7 +72,7 @@ where
7272
huge_pages: HugePageConfig,
7373
) -> Result<Self, MemoryError> {
7474
let memfd_file = create_memfd(mem_size_mib, huge_pages.into())?.into_file();
75-
let regions = arch_memory_regions(mem_size_mib << 20).into_iter();
75+
let regions = arch_memory_regions(mib_to_bytes(mem_size_mib)).into_iter();
7676

7777
Self::create(
7878
regions,
@@ -330,7 +330,7 @@ fn create_memfd(
330330
size: usize,
331331
hugetlb_size: Option<memfd::HugetlbSize>,
332332
) -> Result<memfd::Memfd, MemoryError> {
333-
let mem_size = size << 20;
333+
let mem_size = mib_to_bytes(size);
334334
// Create a memfd.
335335
let opts = memfd::MemfdOptions::default()
336336
.hugetlb(hugetlb_size)
@@ -713,7 +713,7 @@ mod tests {
713713
#[test]
714714
fn test_create_memfd() {
715715
let size = 1;
716-
let size_mb = 1 << 20;
716+
let size_mb = mib_to_bytes(1) as u64;
717717

718718
let memfd = create_memfd(size, None).unwrap();
719719

src/vmm/src/vstate/vcpu.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -775,6 +775,7 @@ pub(crate) mod tests {
775775
use crate::devices::BusDevice;
776776
use crate::devices::bus::DummyDevice;
777777
use crate::seccomp::get_empty_filters;
778+
use crate::utils::mib_to_bytes;
778779
use crate::utils::signal::validate_signal_num;
779780
use crate::vstate::kvm::Kvm;
780781
use crate::vstate::memory::{GuestAddress, GuestMemoryMmap};
@@ -962,7 +963,7 @@ pub(crate) mod tests {
962963
fn vcpu_configured_for_boot() -> (VcpuHandle, EventFd, GuestMemoryMmap) {
963964
Vcpu::register_kick_signal_handler();
964965
// Need enough mem to boot linux.
965-
let mem_size = 64 << 20;
966+
let mem_size = mib_to_bytes(64);
966967
let (kvm, _, mut vcpu, vm_mem) = setup_vcpu(mem_size);
967968

968969
let vcpu_exit_evt = vcpu.exit_evt.try_clone().unwrap();

src/vmm/src/vstate/vm.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ impl Vm {
135135
pub(crate) mod tests {
136136
use super::*;
137137
use crate::test_utils::single_region_mem;
138+
use crate::utils::mib_to_bytes;
138139
use crate::vstate::kvm::Kvm;
139140
use crate::vstate::memory::GuestMemoryMmap;
140141

@@ -189,7 +190,7 @@ pub(crate) mod tests {
189190
#[test]
190191
fn test_create_vcpus() {
191192
let vcpu_count = 2;
192-
let (_, mut vm, _) = setup_vm_with_memory(128 << 20);
193+
let (_, mut vm, _) = setup_vm_with_memory(mib_to_bytes(128));
193194

194195
let (vcpu_vec, _) = vm.create_vcpus(vcpu_count).unwrap();
195196

0 commit comments

Comments
 (0)