diff --git a/src/runtime/pkg/katautils/config-settings.go.in b/src/runtime/pkg/katautils/config-settings.go.in index 470527998f..31a4828c46 100644 --- a/src/runtime/pkg/katautils/config-settings.go.in +++ b/src/runtime/pkg/katautils/config-settings.go.in @@ -26,7 +26,7 @@ const defaultVCPUCount uint32 = 1 const defaultMaxVCPUCount uint32 = 0 const defaultMemSize uint32 = 2048 // MiB const defaultMemSlots uint32 = 10 -const defaultMemOffset uint32 = 0 // MiB +const defaultMemOffset uint64 = 0 // MiB const defaultVirtioMem bool = false const defaultBridgesCount uint32 = 1 const defaultInterNetworkingModel = "tcfilter" diff --git a/src/runtime/pkg/katautils/config.go b/src/runtime/pkg/katautils/config.go index 3da633a24a..c6173234ef 100644 --- a/src/runtime/pkg/katautils/config.go +++ b/src/runtime/pkg/katautils/config.go @@ -114,7 +114,7 @@ type hypervisor struct { DefaultMaxVCPUs uint32 `toml:"default_maxvcpus"` MemorySize uint32 `toml:"default_memory"` MemSlots uint32 `toml:"memory_slots"` - MemOffset uint32 `toml:"memory_offset"` + MemOffset uint64 `toml:"memory_offset"` DefaultBridges uint32 `toml:"default_bridges"` Msize9p uint32 `toml:"msize_9p"` PCIeRootPort uint32 `toml:"pcie_root_port"` @@ -359,7 +359,7 @@ func (h hypervisor) defaultMemSlots() uint32 { return slots } -func (h hypervisor) defaultMemOffset() uint32 { +func (h hypervisor) defaultMemOffset() uint64 { offset := h.MemOffset if offset == 0 { offset = defaultMemOffset diff --git a/src/runtime/virtcontainers/hypervisor.go b/src/runtime/virtcontainers/hypervisor.go index 9e6cabf7ff..d6bc97c118 100644 --- a/src/runtime/virtcontainers/hypervisor.go +++ b/src/runtime/virtcontainers/hypervisor.go @@ -242,7 +242,7 @@ type HypervisorConfig struct { MemSlots uint32 // MemOffset specifies memory space for nvdimm device - MemOffset uint32 + MemOffset uint64 // VirtioFSCacheSize is the DAX cache size in MiB VirtioFSCacheSize uint32 diff --git a/src/runtime/virtcontainers/persist/api/config.go b/src/runtime/virtcontainers/persist/api/config.go index 3bd5567dbe..897aae3668 100644 --- a/src/runtime/virtcontainers/persist/api/config.go +++ b/src/runtime/virtcontainers/persist/api/config.go @@ -33,7 +33,7 @@ type HypervisorConfig struct { MemSlots uint32 // MemOffset specifies memory space for nvdimm device - MemOffset uint32 + MemOffset uint64 // VirtioFSCacheSize is the DAX cache size in MiB VirtioFSCacheSize uint32 diff --git a/src/runtime/virtcontainers/pkg/oci/utils.go b/src/runtime/virtcontainers/pkg/oci/utils.go index efaee4a969..b007f3ae31 100644 --- a/src/runtime/virtcontainers/pkg/oci/utils.go +++ b/src/runtime/virtcontainers/pkg/oci/utils.go @@ -576,13 +576,13 @@ func addHypervisorMemoryOverrides(ocispec specs.Spec, sbConfig *vc.SandboxConfig } if value, ok := ocispec.Annotations[vcAnnotations.MemOffset]; ok { - moffset, err := strconv.ParseUint(value, 10, 32) + moffset, err := strconv.ParseUint(value, 10, 64) if err != nil { return fmt.Errorf("Error parsing annotation for memory_offset: %v, please specify positive numeric value", err) } if moffset > 0 { - sbConfig.HypervisorConfig.MemOffset = uint32(moffset) + sbConfig.HypervisorConfig.MemOffset = moffset } } diff --git a/src/runtime/virtcontainers/pkg/oci/utils_test.go b/src/runtime/virtcontainers/pkg/oci/utils_test.go index 436510c47f..8e8a5a3ed3 100644 --- a/src/runtime/virtcontainers/pkg/oci/utils_test.go +++ b/src/runtime/virtcontainers/pkg/oci/utils_test.go @@ -870,7 +870,7 @@ func TestAddHypervisorAnnotations(t *testing.T) { assert.Equal(config.HypervisorConfig.DefaultMaxVCPUs, uint32(1)) assert.Equal(config.HypervisorConfig.MemorySize, uint32(1024)) assert.Equal(config.HypervisorConfig.MemSlots, uint32(20)) - assert.Equal(config.HypervisorConfig.MemOffset, uint32(512)) + assert.Equal(config.HypervisorConfig.MemOffset, uint64(512)) assert.Equal(config.HypervisorConfig.VirtioMem, true) assert.Equal(config.HypervisorConfig.MemPrealloc, true) assert.Equal(config.HypervisorConfig.Mlock, false) diff --git a/src/runtime/virtcontainers/qemu.go b/src/runtime/virtcontainers/qemu.go index 953b611242..8c478f0b4b 100644 --- a/src/runtime/virtcontainers/qemu.go +++ b/src/runtime/virtcontainers/qemu.go @@ -2116,12 +2116,12 @@ func genericBridges(number uint32, machineType string) []types.Bridge { } // nolint: unused, deadcode -func genericMemoryTopology(memoryMb, hostMemoryMb uint64, slots uint8, memoryOffset uint32) govmmQemu.Memory { +func genericMemoryTopology(memoryMb, hostMemoryMb uint64, slots uint8, memoryOffset uint64) govmmQemu.Memory { // image NVDIMM device needs memory space 1024MB // See https://github.com/clearcontainers/runtime/issues/380 memoryOffset += 1024 - memMax := fmt.Sprintf("%dM", hostMemoryMb+uint64(memoryOffset)) + memMax := fmt.Sprintf("%dM", hostMemoryMb+memoryOffset) mem := fmt.Sprintf("%dM", memoryMb) diff --git a/src/runtime/virtcontainers/qemu_amd64_test.go b/src/runtime/virtcontainers/qemu_amd64_test.go index b29b84a1b0..5016e58ad7 100644 --- a/src/runtime/virtcontainers/qemu_amd64_test.go +++ b/src/runtime/virtcontainers/qemu_amd64_test.go @@ -109,7 +109,7 @@ func TestQemuAmd64CPUModel(t *testing.T) { func TestQemuAmd64MemoryTopology(t *testing.T) { assert := assert.New(t) amd64 := newTestQemu(assert, QemuPC) - memoryOffset := 1024 + memoryOffset := uint64(1024) hostMem := uint64(100) mem := uint64(120) @@ -117,7 +117,7 @@ func TestQemuAmd64MemoryTopology(t *testing.T) { expectedMemory := govmmQemu.Memory{ Size: fmt.Sprintf("%dM", mem), Slots: slots, - MaxMem: fmt.Sprintf("%dM", hostMem+uint64(memoryOffset)), + MaxMem: fmt.Sprintf("%dM", hostMem+memoryOffset), } m := amd64.memoryTopology(mem, hostMem, slots) diff --git a/src/runtime/virtcontainers/qemu_arch_base.go b/src/runtime/virtcontainers/qemu_arch_base.go index 6c35550ad3..ebdfc4a3b8 100644 --- a/src/runtime/virtcontainers/qemu_arch_base.go +++ b/src/runtime/virtcontainers/qemu_arch_base.go @@ -177,7 +177,7 @@ const ( type qemuArchBase struct { qemuMachine govmmQemu.Machine qemuExePath string - memoryOffset uint32 + memoryOffset uint64 nestedRun bool vhost bool disableNvdimm bool