- kvm-virtio-kconfig-memory-devices-are-PCI-only.patch [RHEL-72977] - kvm-hw-s390-ccw-device-Convert-to-three-phase-reset.patch [RHEL-72977] - kvm-hw-s390-virtio-ccw-Convert-to-three-phase-reset.patch [RHEL-72977] - kvm-target-s390-Convert-CPU-to-Resettable-interface.patch [RHEL-72977] - kvm-reset-Use-ResetType-for-qemu_devices_reset-and-Machi.patch [RHEL-72977] - kvm-reset-Add-RESET_TYPE_WAKEUP.patch [RHEL-72977] - kvm-virtio-mem-Use-new-Resettable-framework-instead-of-L.patch [RHEL-72977] - kvm-virtio-mem-Add-support-for-suspend-wake-up-with-plug.patch [RHEL-72977] - kvm-virtio-mem-unplug-memory-only-during-system-resets-n.patch [RHEL-72977] - kvm-s390x-s390-virtio-ccw-don-t-crash-on-weird-RAM-sizes.patch [RHEL-72977] - kvm-s390x-s390-virtio-hcall-remove-hypercall-registratio.patch [RHEL-72977] - kvm-s390x-s390-virtio-hcall-prepare-for-more-diag500-hyp.patch [RHEL-72977] - kvm-s390x-rename-s390-virtio-hcall-to-s390-hypercall.patch [RHEL-72977] - kvm-s390x-s390-virtio-ccw-move-setting-the-maximum-guest.patch [RHEL-72977] - kvm-s390x-introduce-s390_get_memory_limit.patch [RHEL-72977] - kvm-s390x-s390-hypercall-introduce-DIAG500-STORAGE_LIMIT.patch [RHEL-72977] - kvm-s390x-s390-stattrib-kvm-prepare-for-memory-devices-a.patch [RHEL-72977] - kvm-s390x-s390-skeys-prepare-for-memory-devices.patch [RHEL-72977] - kvm-s390x-s390-virtio-ccw-prepare-for-memory-devices.patch [RHEL-72977] - kvm-s390x-pv-prepare-for-memory-devices.patch [RHEL-72977] - kvm-s390x-remember-the-maximum-page-size.patch [RHEL-72977] - kvm-s390x-virtio-ccw-add-support-for-virtio-based-memory.patch [RHEL-72977] - kvm-s390x-virtio-mem-support.patch [RHEL-72977] - kvm-hw-virtio-Also-include-md-stubs-in-case-CONFIG_VIRTI.patch [RHEL-72977] - kvm-virtio-mem-don-t-warn-about-THP-sizes-on-a-kernel-wi.patch [RHEL-72977] - kvm-redhat-Enable-virtio-mem-on-s390x.patch [RHEL-72977] - Resolves: RHEL-72977 ([IBM 9.7 FEAT] KVM: Enable virtio-mem support - qemu part)
64 lines
2.4 KiB
Diff
64 lines
2.4 KiB
Diff
From 4ee3076ac566622929f9410636483c4f0b2da967 Mon Sep 17 00:00:00 2001
|
|
From: David Hildenbrand <david@redhat.com>
|
|
Date: Thu, 19 Dec 2024 15:41:02 +0100
|
|
Subject: [PATCH 10/26] s390x/s390-virtio-ccw: don't crash on weird RAM sizes
|
|
|
|
RH-Author: Thomas Huth <thuth@redhat.com>
|
|
RH-MergeRequest: 351: Enable virtio-mem support on s390x
|
|
RH-Jira: RHEL-72977
|
|
RH-Acked-by: David Hildenbrand <david@redhat.com>
|
|
RH-Acked-by: Juraj Marcin <None>
|
|
RH-Commit: [10/26] 55738da52f3cf4746bee2b17780a10720fa05863 (thuth/qemu-kvm-cs)
|
|
|
|
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
|
|
|
|
Message-ID: <20241219144115.2820241-2-david@redhat.com>
|
|
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>
|
|
(cherry picked from commit 14e568ab4836347481af2e334009c385f456a734)
|
|
Signed-off-by: Thomas Huth <thuth@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 94cad1705b..82ded9666c 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.48.1
|
|
|