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

Function pmap_pv_insert_l2

freebsd/arm64/arm64/pmap.c:2794–2814  ·  view source on GitHub ↗

* Create the PV entry for a 2MB page mapping. Always returns true unless the * flag PMAP_ENTER_NORECLAIM is specified. If that flag is specified, returns * false if the PV entry cannot be allocated without resorting to reclamation. */

Source from the content-addressed store, hash-verified

2792 * false if the PV entry cannot be allocated without resorting to reclamation.
2793 */
2794static bool
2795pmap_pv_insert_l2(pmap_t pmap, vm_offset_t va, pd_entry_t l2e, u_int flags,
2796 struct rwlock **lockp)
2797{
2798 struct md_page *pvh;
2799 pv_entry_t pv;
2800 vm_paddr_t pa;
2801
2802 PMAP_LOCK_ASSERT(pmap, MA_OWNED);
2803 /* Pass NULL instead of the lock pointer to disable reclamation. */
2804 if ((pv = get_pv_entry(pmap, (flags & PMAP_ENTER_NORECLAIM) != 0 ?
2805 NULL : lockp)) == NULL)
2806 return (false);
2807 pv->pv_va = va;
2808 pa = l2e & ~ATTR_MASK;
2809 CHANGE_PV_LIST_LOCK_TO_PHYS(lockp, pa);
2810 pvh = pa_to_pvh(pa);
2811 TAILQ_INSERT_TAIL(&pvh->pv_list, pv, pv_next);
2812 pvh->pv_gen++;
2813 return (true);
2814}
2815
2816static void
2817pmap_remove_kernel_l2(pmap_t pmap, pt_entry_t *l2, vm_offset_t va)

Callers 2

pmap_enter_l2Function · 0.85
pmap_copyFunction · 0.85

Calls 2

pa_to_pvhFunction · 0.85
get_pv_entryFunction · 0.70

Tested by

no test coverage detected