Changeset View
Changeset View
Standalone View
Standalone View
head/sys/vm/vm_page.c
Show First 20 Lines • Show All 349 Lines • ▼ Show 20 Lines | vm_page_blacklist_add(vm_paddr_t pa, bool verbose) | ||||
m = vm_phys_paddr_to_vm_page(pa); | m = vm_phys_paddr_to_vm_page(pa); | ||||
if (m == NULL) | if (m == NULL) | ||||
return (true); /* page does not exist, no failure */ | return (true); /* page does not exist, no failure */ | ||||
vmd = vm_pagequeue_domain(m); | vmd = vm_pagequeue_domain(m); | ||||
vm_domain_free_lock(vmd); | vm_domain_free_lock(vmd); | ||||
ret = vm_phys_unfree_page(m); | ret = vm_phys_unfree_page(m); | ||||
vm_domain_free_unlock(vmd); | vm_domain_free_unlock(vmd); | ||||
if (ret) { | if (ret != 0) { | ||||
vm_domain_freecnt_inc(vmd, -1); | |||||
TAILQ_INSERT_TAIL(&blacklist_head, m, listq); | TAILQ_INSERT_TAIL(&blacklist_head, m, listq); | ||||
if (verbose) | if (verbose) | ||||
printf("Skipping page with pa 0x%jx\n", (uintmax_t)pa); | printf("Skipping page with pa 0x%jx\n", (uintmax_t)pa); | ||||
} | } | ||||
return (ret); | return (ret); | ||||
} | } | ||||
/* | /* | ||||
▲ Show 20 Lines • Show All 4,148 Lines • Show Last 20 Lines |