Message ID | 20241219144115.2820241-2-david@redhat.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | s390x: virtio-mem support | expand |
19.12.2024 17:41, David Hildenbrand wrote: > KVM is not happy when starting a VM with weird RAM sizes: > > # qemu-system-s390x --enable-kvm --nographic -m 1234K > qemu-system-s390x: kvm_set_user_memory_region: KVM_SET_USER_MEMORY_REGION > failed, slot=0, start=0x0, size=0x244000: Invalid argument > kvm_set_phys_mem: error registering slot: Invalid argument > Aborted (core dumped) > > Let's handle that in a better way by rejecting such weird RAM sizes > right from the start: > > # qemu-system-s390x --enable-kvm --nographic -m 1234K > qemu-system-s390x: ram size must be multiples of 1 MiB Shouldn't this one be picked for qemu-stable? Seems like a good bugfix to me. Picked up for current stable releases for now, please let me know if I shouldn't.
On 24.12.24 13:32, Michael Tokarev wrote: > 19.12.2024 17:41, David Hildenbrand wrote: >> KVM is not happy when starting a VM with weird RAM sizes: >> >> # qemu-system-s390x --enable-kvm --nographic -m 1234K >> qemu-system-s390x: kvm_set_user_memory_region: KVM_SET_USER_MEMORY_REGION >> failed, slot=0, start=0x0, size=0x244000: Invalid argument >> kvm_set_phys_mem: error registering slot: Invalid argument >> Aborted (core dumped) >> >> Let's handle that in a better way by rejecting such weird RAM sizes >> right from the start: >> >> # qemu-system-s390x --enable-kvm --nographic -m 1234K >> qemu-system-s390x: ram size must be multiples of 1 MiB > > Shouldn't this one be picked for qemu-stable? Seems like a good > bugfix to me. Picked up for current stable releases for now, please > let me know if I shouldn't. Yes, better to have it in qemu-stable, so it would be greta if you could pick that as well (already upstream). Thanks!
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 67ae34aead..f2a17ecace 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -180,6 +180,17 @@ static void s390_memory_init(MemoryRegion *ram) { MemoryRegion *sysmem = get_system_memory(); + if (!QEMU_IS_ALIGNED(memory_region_size(ram), 1 * MiB)) { + /* + * SCLP cannot possibly expose smaller granularity right now and KVM + * cannot handle smaller granularity. As we don't support NUMA, the + * region size directly corresponds to machine->ram_size, and the region + * is a single RAM memory region. + */ + error_report("ram size must be multiples of 1 MiB"); + exit(EXIT_FAILURE); + } + /* allocate RAM for core */ memory_region_add_subregion(sysmem, 0, ram);