MCPcopy Create free account
hub / github.com/F-Stack/f-stack / pmap_unmapdev

Function pmap_unmapdev

freebsd/amd64/amd64/pmap.c:9017–9048  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9015}
9016
9017void
9018pmap_unmapdev(vm_offset_t va, vm_size_t size)
9019{
9020 struct pmap_preinit_mapping *ppim;
9021 vm_offset_t offset;
9022 int i;
9023
9024 /* If we gave a direct map region in pmap_mapdev, do nothing */
9025 if (va >= DMAP_MIN_ADDRESS && va < DMAP_MAX_ADDRESS)
9026 return;
9027 offset = va & PAGE_MASK;
9028 size = round_page(offset + size);
9029 va = trunc_page(va);
9030 for (i = 0; i < PMAP_PREINIT_MAPPING_COUNT; i++) {
9031 ppim = pmap_preinit_mapping + i;
9032 if (ppim->va == va && ppim->sz == size) {
9033 if (pmap_initialized)
9034 return;
9035 ppim->pa = 0;
9036 ppim->va = 0;
9037 ppim->sz = 0;
9038 ppim->mode = 0;
9039 if (va + size == virtual_avail)
9040 virtual_avail = va;
9041 return;
9042 }
9043 }
9044 if (pmap_initialized) {
9045 pmap_qremove(va, atop(size));
9046 kva_free(va, size);
9047 }
9048}
9049
9050/*
9051 * Tries to demote a 1GB page mapping.

Callers 7

memrwFunction · 0.70
generic_bs_unmapFunction · 0.50
generic_bs_unmapFunction · 0.50
ocotp_attachFunction · 0.50
bcm_fb_setup_fbdFunction · 0.50

Calls 2

kva_freeFunction · 0.85
pmap_qremoveFunction · 0.70

Tested by

no test coverage detected