- 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)
108 lines
3.8 KiB
Diff
108 lines
3.8 KiB
Diff
From 5a311d410bca4a5530a51c0b789ce8525d2d0653 Mon Sep 17 00:00:00 2001
|
|
From: David Hildenbrand <david@redhat.com>
|
|
Date: Thu, 19 Dec 2024 15:41:13 +0100
|
|
Subject: [PATCH 21/26] s390x: remember the maximum page size
|
|
|
|
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: [21/26] 3b97c555b153d42e4fcb27dbb65fbf3edac622a4 (thuth/qemu-kvm-cs)
|
|
|
|
Let's remember the value (successfully) set via s390_set_max_pagesize().
|
|
This will be helpful to reject hotplugged memory devices that would exceed
|
|
this initially set page size.
|
|
|
|
Handle it just like how we handle s390_get_memory_limit(), storing it in
|
|
the machine, and moving the handling to machine code.
|
|
|
|
Message-ID: <20241219144115.2820241-13-david@redhat.com>
|
|
Acked-by: Michael S. Tsirkin <mst@redhat.com>
|
|
Reviewed-by: Thomas Huth <thuth@redhat.com>
|
|
Signed-off-by: David Hildenbrand <david@redhat.com>
|
|
(cherry picked from commit df2ac211a62e6ced7f1495b634fa6f78962f2321)
|
|
Signed-off-by: Thomas Huth <thuth@redhat.com>
|
|
---
|
|
hw/s390x/s390-virtio-ccw.c | 12 +++++++++++-
|
|
include/hw/s390x/s390-virtio-ccw.h | 1 +
|
|
target/s390x/cpu-sysemu.c | 7 -------
|
|
target/s390x/cpu.h | 1 -
|
|
4 files changed, 12 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
|
|
index 824c73536a..bd05a22b4e 100644
|
|
--- a/hw/s390x/s390-virtio-ccw.c
|
|
+++ b/hw/s390x/s390-virtio-ccw.c
|
|
@@ -143,6 +143,16 @@ static void s390_set_memory_limit(S390CcwMachineState *s390ms,
|
|
s390ms->memory_limit = new_limit;
|
|
}
|
|
|
|
+static void s390_set_max_pagesize(S390CcwMachineState *s390ms,
|
|
+ uint64_t pagesize)
|
|
+{
|
|
+ assert(!s390ms->max_pagesize && pagesize);
|
|
+ if (kvm_enabled()) {
|
|
+ kvm_s390_set_max_pagesize(pagesize, &error_fatal);
|
|
+ }
|
|
+ s390ms->max_pagesize = pagesize;
|
|
+}
|
|
+
|
|
static void s390_memory_init(MachineState *machine)
|
|
{
|
|
S390CcwMachineState *s390ms = S390_CCW_MACHINE(machine);
|
|
@@ -191,7 +201,7 @@ static void s390_memory_init(MachineState *machine)
|
|
* Configure the maximum page size. As no memory devices were created
|
|
* yet, this is the page size of initial memory only.
|
|
*/
|
|
- s390_set_max_pagesize(qemu_maxrampagesize(), &error_fatal);
|
|
+ s390_set_max_pagesize(s390ms, qemu_maxrampagesize());
|
|
/* Initialize storage key device */
|
|
s390_skeys_init();
|
|
/* Initialize storage attributes device */
|
|
diff --git a/include/hw/s390x/s390-virtio-ccw.h b/include/hw/s390x/s390-virtio-ccw.h
|
|
index de04336c5a..599740a998 100644
|
|
--- a/include/hw/s390x/s390-virtio-ccw.h
|
|
+++ b/include/hw/s390x/s390-virtio-ccw.h
|
|
@@ -30,6 +30,7 @@ struct S390CcwMachineState {
|
|
bool pv;
|
|
uint8_t loadparm[8];
|
|
uint64_t memory_limit;
|
|
+ uint64_t max_pagesize;
|
|
|
|
SCLPDevice *sclp;
|
|
};
|
|
diff --git a/target/s390x/cpu-sysemu.c b/target/s390x/cpu-sysemu.c
|
|
index 3118a25fee..706a5c53e2 100644
|
|
--- a/target/s390x/cpu-sysemu.c
|
|
+++ b/target/s390x/cpu-sysemu.c
|
|
@@ -255,13 +255,6 @@ unsigned int s390_cpu_set_state(uint8_t cpu_state, S390CPU *cpu)
|
|
return s390_count_running_cpus();
|
|
}
|
|
|
|
-void s390_set_max_pagesize(uint64_t pagesize, Error **errp)
|
|
-{
|
|
- if (kvm_enabled()) {
|
|
- kvm_s390_set_max_pagesize(pagesize, errp);
|
|
- }
|
|
-}
|
|
-
|
|
void s390_cmma_reset(void)
|
|
{
|
|
if (kvm_enabled()) {
|
|
diff --git a/target/s390x/cpu.h b/target/s390x/cpu.h
|
|
index ecaf3191d2..9770a62ac9 100644
|
|
--- a/target/s390x/cpu.h
|
|
+++ b/target/s390x/cpu.h
|
|
@@ -881,7 +881,6 @@ static inline void s390_do_cpu_load_normal(CPUState *cs, run_on_cpu_data arg)
|
|
|
|
/* cpu.c */
|
|
void s390_crypto_reset(void);
|
|
-void s390_set_max_pagesize(uint64_t pagesize, Error **errp);
|
|
void s390_cmma_reset(void);
|
|
void s390_enable_css_support(S390CPU *cpu);
|
|
void s390_do_cpu_set_diag318(CPUState *cs, run_on_cpu_data arg);
|
|
--
|
|
2.48.1
|
|
|