Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/kern_malloc.c
Show First 20 Lines • Show All 1,162 Lines • ▼ Show 20 Lines | #endif | ||||
* twice the physical memory size, which has been sufficient to handle | * twice the physical memory size, which has been sufficient to handle | ||||
* the most severe cases of external fragmentation in the kmem arena. | * the most severe cases of external fragmentation in the kmem arena. | ||||
*/ | */ | ||||
if (vm_kmem_size / 2 / PAGE_SIZE > mem_size) | if (vm_kmem_size / 2 / PAGE_SIZE > mem_size) | ||||
vm_kmem_size = 2 * mem_size * PAGE_SIZE; | vm_kmem_size = 2 * mem_size * PAGE_SIZE; | ||||
vm_kmem_size = round_page(vm_kmem_size); | vm_kmem_size = round_page(vm_kmem_size); | ||||
#ifdef KASAN | |||||
/* | /* | ||||
* With KASAN enabled, dynamically allocated kernel memory is shadowed. | * With KASAN or KMSAN enabled, dynamically allocated kernel memory is | ||||
* Account for this when setting the UMA limit. | * shadowed. Account for this when setting the UMA limit. | ||||
*/ | */ | ||||
#if defined(KASAN) | |||||
vm_kmem_size = (vm_kmem_size * KASAN_SHADOW_SCALE) / | vm_kmem_size = (vm_kmem_size * KASAN_SHADOW_SCALE) / | ||||
(KASAN_SHADOW_SCALE + 1); | (KASAN_SHADOW_SCALE + 1); | ||||
#elif defined(KMSAN) | |||||
vm_kmem_size /= 3; | |||||
#endif | #endif | ||||
#ifdef DEBUG_MEMGUARD | #ifdef DEBUG_MEMGUARD | ||||
tmp = memguard_fudge(vm_kmem_size, kernel_map); | tmp = memguard_fudge(vm_kmem_size, kernel_map); | ||||
#else | #else | ||||
tmp = vm_kmem_size; | tmp = vm_kmem_size; | ||||
#endif | #endif | ||||
uma_set_limit(tmp); | uma_set_limit(tmp); | ||||
▲ Show 20 Lines • Show All 364 Lines • Show Last 20 Lines |