| 374 | |
| 375 | #ifdef NUMA |
| 376 | static void |
| 377 | mp_realloc_pcpu(int cpuid, int domain) |
| 378 | { |
| 379 | vm_page_t m; |
| 380 | vm_offset_t oa, na; |
| 381 | |
| 382 | oa = (vm_offset_t)&__pcpu[cpuid]; |
| 383 | if (vm_phys_domain(pmap_kextract(oa)) == domain) |
| 384 | return; |
| 385 | m = vm_page_alloc_domain(NULL, 0, domain, |
| 386 | VM_ALLOC_NORMAL | VM_ALLOC_NOOBJ); |
| 387 | if (m == NULL) |
| 388 | return; |
| 389 | na = PHYS_TO_DMAP(VM_PAGE_TO_PHYS(m)); |
| 390 | pagecopy((void *)oa, (void *)na); |
| 391 | pmap_qenter((vm_offset_t)&__pcpu[cpuid], &m, 1); |
| 392 | /* XXX old pcpu page leaked. */ |
| 393 | } |
| 394 | #endif |
| 395 | |
| 396 | /* |
no test coverage detected