Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/amd64/mp_machdep.c
Show First 20 Lines • Show All 299 Lines • ▼ Show 20 Lines | |||||
mp_realloc_pcpu(int cpuid, int domain) | mp_realloc_pcpu(int cpuid, int domain) | ||||
{ | { | ||||
vm_page_t m; | vm_page_t m; | ||||
vm_offset_t oa, na; | vm_offset_t oa, na; | ||||
oa = (vm_offset_t)&__pcpu[cpuid]; | oa = (vm_offset_t)&__pcpu[cpuid]; | ||||
if (vm_phys_domain(pmap_kextract(oa)) == domain) | if (vm_phys_domain(pmap_kextract(oa)) == domain) | ||||
return; | return; | ||||
m = vm_page_alloc_domain(NULL, 0, domain, | m = vm_page_alloc_noobj_domain(domain, VM_ALLOC_NORMAL); | ||||
VM_ALLOC_NORMAL | VM_ALLOC_NOOBJ); | |||||
if (m == NULL) | if (m == NULL) | ||||
return; | return; | ||||
na = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)); | na = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)); | ||||
pagecopy((void *)oa, (void *)na); | pagecopy((void *)oa, (void *)na); | ||||
pmap_qenter((vm_offset_t)&__pcpu[cpuid], &m, 1); | pmap_qenter((vm_offset_t)&__pcpu[cpuid], &m, 1); | ||||
/* XXX old pcpu page leaked. */ | /* XXX old pcpu page leaked. */ | ||||
} | } | ||||
#endif | #endif | ||||
▲ Show 20 Lines • Show All 791 Lines • Show Last 20 Lines |