Revision ff83678a exec.c

b/exec.c
2910 2910
#endif
2911 2911
        } else {
2912 2912
#if defined(TARGET_S390X) && defined(CONFIG_KVM)
2913
            /* XXX S390 KVM requires the topmost vma of the RAM to be < 256GB */
2914
            new_block->host = mmap((void*)0x1000000, size,
2913
            /* S390 KVM requires the topmost vma of the RAM to be smaller than
2914
               an system defined value, which is at least 256GB. Larger systems
2915
               have larger values. We put the guest between the end of data
2916
               segment (system break) and this value. We use 32GB as a base to
2917
               have enough room for the system break to grow. */
2918
            new_block->host = mmap((void*)0x800000000, size,
2915 2919
                                   PROT_EXEC|PROT_READ|PROT_WRITE,
2916
                                   MAP_SHARED | MAP_ANONYMOUS, -1, 0);
2920
                                   MAP_SHARED | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
2917 2921
#else
2918 2922
            if (xen_mapcache_enabled()) {
2919 2923
                xen_ram_alloc(new_block->offset, size);

Also available in: Unified diff