diff options
author | Christian Borntraeger <borntraeger@de.ibm.com> | 2012-06-15 05:10:30 +0000 |
---|---|---|
committer | Alexander Graf <agraf@suse.de> | 2012-07-10 18:27:33 +0200 |
commit | fdec9918578ec38738ecf250fa2c2656a44796b5 (patch) | |
tree | df492b5ddd37c0c69d2e63ca9bfa0196a7dbd7ac /kvm-all.c | |
parent | 92336855975805d88c7979f53bc05c2d47abab04 (diff) |
s390: autodetect map private
By default qemu will use MAP_PRIVATE for guest pages. This will write
protect pages and thus break on s390 systems that dont support this feature.
Therefore qemu has a hack to always use MAP_SHARED for s390. But MAP_SHARED
has other problems (no dirty pages tracking, a lot more swap overhead etc.)
Newer systems allow the distinction via KVM_CAP_S390_COW. With this feature
qemu can use the standard qemu alloc if available, otherwise it will use
the old s390 hack.
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
Acked-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'kvm-all.c')
-rw-r--r-- | kvm-all.c | 13 |
1 files changed, 13 insertions, 0 deletions
@@ -1655,6 +1655,19 @@ int kvm_allows_irq0_override(void) return !kvm_irqchip_in_kernel() || kvm_has_gsi_routing(); } +void *kvm_vmalloc(ram_addr_t size) +{ +#ifdef TARGET_S390X + void *mem; + + mem = kvm_arch_vmalloc(size); + if (mem) { + return mem; + } +#endif + return qemu_vmalloc(size); +} + void kvm_setup_guest_memory(void *start, size_t size) { if (!kvm_has_sync_mmu()) { |