Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/powerpc/uma_machdep.c
Show First 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | if (m == NULL) | ||||
return (NULL); | return (NULL); | ||||
pa = VM_PAGE_TO_PHYS(m); | pa = VM_PAGE_TO_PHYS(m); | ||||
/* On book-e sizeof(void *) < sizeof(vm_paddr_t) */ | /* On book-e sizeof(void *) < sizeof(vm_paddr_t) */ | ||||
if ((vm_offset_t)pa != pa) | if ((vm_offset_t)pa != pa) | ||||
return (NULL); | return (NULL); | ||||
if ((wait & M_NODUMP) == 0) | |||||
dump_add_page(pa); | |||||
if (!hw_direct_map) { | if (!hw_direct_map) { | ||||
pmap_kenter(pa, pa); | pmap_kenter(pa, pa); | ||||
va = (void *)(vm_offset_t)pa; | va = (void *)(vm_offset_t)pa; | ||||
} else { | } else { | ||||
va = (void *)(vm_offset_t)PHYS_TO_DMAP(pa); | va = (void *)(vm_offset_t)PHYS_TO_DMAP(pa); | ||||
} | } | ||||
if ((wait & M_ZERO) && (m->flags & PG_ZERO) == 0) | if ((wait & M_ZERO) && (m->flags & PG_ZERO) == 0) | ||||
Show All 13 Lines | pmap_remove(kernel_pmap,(vm_offset_t)mem, | ||||
(vm_offset_t)mem + PAGE_SIZE); | (vm_offset_t)mem + PAGE_SIZE); | ||||
if (hw_direct_map) | if (hw_direct_map) | ||||
m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)mem)); | m = PHYS_TO_VM_PAGE(DMAP_TO_PHYS((vm_offset_t)mem)); | ||||
else | else | ||||
m = PHYS_TO_VM_PAGE((vm_offset_t)mem); | m = PHYS_TO_VM_PAGE((vm_offset_t)mem); | ||||
KASSERT(m != NULL, | KASSERT(m != NULL, | ||||
("Freeing UMA block at %p with no associated page", mem)); | ("Freeing UMA block at %p with no associated page", mem)); | ||||
dump_add_page(VM_PAGE_TO_PHYS(m)); | |||||
vm_page_unwire_noq(m); | vm_page_unwire_noq(m); | ||||
vm_page_free(m); | vm_page_free(m); | ||||
atomic_subtract_int(&hw_uma_mdpages, 1); | atomic_subtract_int(&hw_uma_mdpages, 1); | ||||
} | } |