vm_page_startup()

Alan Cox alc at rice.edu
Wed Dec 1 06:21:25 UTC 2010


Given this bit of code in the MIPS pmap:

vm_offset_t
pmap_map(vm_offset_t *virt, vm_offset_t start, vm_offset_t end, int prot)
{
    vm_offset_t va, sva;

    if (MIPS_DIRECT_MAPPABLE(end))
        return (MIPS_PHYS_TO_DIRECT(start));


The following in vm_page_startup() can apply to MIPS (as well as amd64):

#ifdef __amd64__
    /*
     * pmap_map on amd64 comes out of the direct-map, not kvm like i386,
     * so the pages must be tracked for a crashdump to include this data.
     * This includes the vm_page_array and the early UMA bootstrap pages.
     */
    for (pa = new_end; pa < phys_avail[biggestone + 1]; pa += PAGE_SIZE)
        dump_add_page(pa);
#endif   


Even if a particular MIPS-based machine didn't wind up using the direct 
map for the pmap_map calls in vm_page_startup() there would be no harm 
in having called dump_add_page().  On the other hand, if you don't call 
dump_add_page() when the direct map is used, you're crash dump will be 
missing some kernel data structures.

Regards,
Alan



More information about the freebsd-mips mailing list