On 08/01/2018 03:19 PM, Janosch Frank wrote: > QEMU has had huge page support for a longer time already, but KVM > memory management under s390x needed some changes to work with huge > backings. > > Now that we have support, let's enable it if requested and > available. Otherwise we now properly tell the user if there is no > support and back out instead of failing to run the VM later on. > > Signed-off-by: Janosch Frank <fran...@linux.ibm.com> > --- > target/s390x/kvm.c | 34 ++++++++++++++++++++++++++++++++-- > 1 file changed, 32 insertions(+), 2 deletions(-) > > diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c > index d923cf4240..d1c72975cf 100644 > --- a/target/s390x/kvm.c > +++ b/target/s390x/kvm.c > @@ -34,6 +34,8 @@ > #include "qapi/error.h" > #include "qemu/error-report.h" > #include "qemu/timer.h" > +#include "qemu/units.h" > +#include "qemu/mmap-alloc.h" > #include "sysemu/sysemu.h" > #include "sysemu/hw_accel.h" > #include "hw/hw.h" > @@ -139,6 +141,7 @@ static int cap_mem_op; > static int cap_s390_irq; > static int cap_ri; > static int cap_gs; > +static int cap_hpage_1m; > > static int active_cmma; > > @@ -220,9 +223,9 @@ static void kvm_s390_enable_cmma(void) > .attr = KVM_S390_VM_MEM_ENABLE_CMMA, > }; > > - if (mem_path) { > + if (cap_hpage_1m) { > warn_report("CMM will not be enabled because it is not " > - "compatible with hugetlbfs."); > + "compatible with huge memory backings."); > return; > } > rc = kvm_vm_ioctl(kvm_state, KVM_SET_DEVICE_ATTR, &attr); > @@ -281,10 +284,37 @@ void kvm_s390_crypto_reset(void) > } > } > > +static int kvm_s390_configure_mempath_backing(KVMState *s) > +{ > + size_t path_psize = qemu_mempath_getpagesize(mem_path); > + > + if (path_psize == 4 * KiB) > + return 0;
Missing curly braces. > + if (path_psize != 1 * MiB) { > + error_report("Memory backing with 2G pages was specified, " > + "but KVM does not support this memory backing"); May I suggest to use a text that rather matches the condition of the if-statement (just in case there will be other sizes in the future...), e.g. "Memory backing is only supported for 1 MiB huge pages" or something similar. Thomas