mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-09-14 13:29:31 +00:00
virtcontainers: change memory_offset to uint64
`memory_offset` is used to increase the maximum amount of memory supported in a VM, this offset is equal to the NVDIMM/PMEM device that is hot added, in real use case workloads such devices are bigger than 4G, which is the current limit (uint32). fixes #2006 Signed-off-by: Julio Montes <julio.montes@intel.com>
This commit is contained in:
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
|
||||
|
@@ -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)
|
||||
|
@@ -177,7 +177,7 @@ const (
|
||||
type qemuArchBase struct {
|
||||
qemuMachine govmmQemu.Machine
|
||||
qemuExePath string
|
||||
memoryOffset uint32
|
||||
memoryOffset uint64
|
||||
nestedRun bool
|
||||
vhost bool
|
||||
disableNvdimm bool
|
||||
|
Reference in New Issue
Block a user