Index: vm_map.c =================================================================== --- vm_map.c +++ vm_map.c @@ -2192,7 +2192,18 @@ * entry BEFORE this one, so that this entry has the specified * starting address. */ - vm_map_simplify_entry(map, entry); + if ((entry->eflags & MAP_ENTRY_NOMERGE_MASK) == 0 && + (vm_map_mergeable_neighbors(entry->prev, entry) || + vm_map_mergeable_neighbors(entry, entry->next))) { + printf("%s: simplifying entry start %jx end %jx next_read %jx " + "max_free %jx eflags %jx object-type %d\n", __func__, + (uintmax_t)entry->start, (uintmax_t)entry->end, + (uintmax_t)entry->next_read, (uintmax_t)entry->max_free, + (uintmax_t)entry->eflags, + entry->object.vm_object ? entry->object.vm_object->type : -1); + vm_map_simplify_entry(map, entry); + } + vm_map_entry_charge_object(map, entry); new_entry = vm_map_entry_create(map); *new_entry = *entry;