Changeset View
Changeset View
Standalone View
Standalone View
sys/powerpc/powerpc/minidump_machdep.c
Show First 20 Lines • Show All 85 Lines • ▼ Show 20 Lines | static struct { | ||||
{ 90, 100, 0} | { 90, 100, 0} | ||||
}; | }; | ||||
static size_t counter, dumpsize, progress; | static size_t counter, dumpsize, progress; | ||||
/* Handle chunked writes. */ | /* Handle chunked writes. */ | ||||
static size_t fragsz; | static size_t fragsz; | ||||
int | |||||
is_dumpable(vm_paddr_t pa) | |||||
{ | |||||
vm_page_t m; | |||||
int i; | |||||
if ((m = vm_phys_paddr_to_vm_page(pa)) != NULL) | |||||
return ((m->flags & PG_NODUMP) == 0); | |||||
for (i = 0; dump_avail[i] != 0 || dump_avail[i + 1] != 0; i += 2) { | |||||
if (pa >= dump_avail[i] && pa < dump_avail[i + 1]) | |||||
return (1); | |||||
} | |||||
return (0); | |||||
} | |||||
static void | static void | ||||
pmap_kenter_temporary(vm_offset_t va, vm_paddr_t pa) | pmap_kenter_temporary(vm_offset_t va, vm_paddr_t pa) | ||||
{ | { | ||||
pmap_kremove(va); | pmap_kremove(va); | ||||
pmap_kenter(va, pa); | pmap_kenter(va, pa); | ||||
} | } | ||||
static void | static void | ||||
▲ Show 20 Lines • Show All 154 Lines • ▼ Show 20 Lines | retry: | ||||
/* Calculate dump size */ | /* Calculate dump size */ | ||||
dumpsize = PAGE_SIZE; /* header */ | dumpsize = PAGE_SIZE; /* header */ | ||||
dumpsize += round_page(msgbufp->msg_size); | dumpsize += round_page(msgbufp->msg_size); | ||||
dumpsize += round_page(sizeof(dump_avail)); | dumpsize += round_page(sizeof(dump_avail)); | ||||
dumpsize += round_page(BITSET_SIZE(vm_page_dump_pages)); | dumpsize += round_page(BITSET_SIZE(vm_page_dump_pages)); | ||||
dumpsize += pmapsize; | dumpsize += pmapsize; | ||||
VM_PAGE_DUMP_FOREACH(pa) { | VM_PAGE_DUMP_FOREACH(pa) { | ||||
/* Clear out undumpable pages now if needed */ | /* Clear out undumpable pages now if needed */ | ||||
if (is_dumpable(pa)) | if (vm_phys_is_dumpable(pa)) | ||||
dumpsize += PAGE_SIZE; | dumpsize += PAGE_SIZE; | ||||
else | else | ||||
dump_drop_page(pa); | dump_drop_page(pa); | ||||
} | } | ||||
progress = dumpsize; | progress = dumpsize; | ||||
/* Initialize mdhdr */ | /* Initialize mdhdr */ | ||||
bzero(&mdhdr, sizeof(mdhdr)); | bzero(&mdhdr, sizeof(mdhdr)); | ||||
▲ Show 20 Lines • Show All 110 Lines • Show Last 20 Lines |