[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 01/14] s390x/s390-virtio-ccw: don't crash on weird RAM sizes
From: |
David Hildenbrand |
Subject: |
[PATCH v2 01/14] s390x/s390-virtio-ccw: don't crash on weird RAM sizes |
Date: |
Tue, 8 Oct 2024 12:54:42 +0200 |
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
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Eric Farman <farman@linux.ibm.com>
Reviewed-by: Thomas Huth <thuth@redhat.com>
Acked-by: Janosch Frank <frankja@linux.ibm.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
---
hw/s390x/s390-virtio-ccw.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 5aa8d207a3..b88ec8e78a 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);
--
2.46.1
- [PATCH v2 00/14] s390x: virtio-mem support, David Hildenbrand, 2024/10/08
- [PATCH v2 01/14] s390x/s390-virtio-ccw: don't crash on weird RAM sizes,
David Hildenbrand <=
- [PATCH v2 02/14] s390x/s390-virtio-hcall: remove hypercall registration mechanism, David Hildenbrand, 2024/10/08
- [PATCH v2 03/14] s390x/s390-virtio-hcall: prepare for more diag500 hypercalls, David Hildenbrand, 2024/10/08
- [PATCH v2 04/14] s390x: rename s390-virtio-hcall* to s390-hypercall*, David Hildenbrand, 2024/10/08
- [PATCH v2 05/14] s390x/s390-virtio-ccw: move setting the maximum guest size from sclp to machine code, David Hildenbrand, 2024/10/08
- [PATCH v2 06/14] s390x: introduce s390_get_memory_limit(), David Hildenbrand, 2024/10/08
- [PATCH v2 08/14] s390x/s390-stattrib-kvm: prepare for memory devices and sparse memory layouts, David Hildenbrand, 2024/10/08
- [PATCH v2 10/14] s390x/s390-virtio-ccw: prepare for memory devices, David Hildenbrand, 2024/10/08
- [PATCH v2 11/14] s390x/pv: prepare for memory devices, David Hildenbrand, 2024/10/08
- [PATCH v2 09/14] s390x/s390-skeys: prepare for memory devices, David Hildenbrand, 2024/10/08
- [PATCH v2 07/14] s390x/s390-hypercall: introduce DIAG500 STORAGE_LIMIT, David Hildenbrand, 2024/10/08