Lines Matching defs:pmegp
471 #define is_pmeg_wired(pmegp) (pmegp->pmeg_wired != 0)
474 pmeg_set_wiring(pmeg_t pmegp, vaddr_t va, int flag)
482 pmegp->pmeg_wired |= mask;
484 pmegp->pmeg_wired &= ~mask;
670 pmeg_t pmegp;
673 pmegp = &pmeg_array[sme];
675 if (pmegp->pmeg_reserved) {
679 if (pmegp->pmeg_owner) {
685 pmegp->pmeg_owner = kernel_pmap;
686 pmegp->pmeg_reserved++; /* keep count, just in case */
687 TAILQ_REMOVE(&pmeg_free_queue, pmegp, pmeg_link);
688 pmegp->pmeg_qstate = PMEGQ_NONE;
740 pmeg_clean(pmeg_t pmegp)
749 sme = pmegp->pmeg_index;
767 pmeg_t pmegp, pmegp_first;
769 pmegp = TAILQ_FIRST(&pmeg_free_queue);
770 if (pmegp == NULL)
776 pmegp = TAILQ_FIRST(&pmeg_free_queue);
777 TAILQ_REMOVE(&pmeg_free_queue, pmegp, pmeg_link);
779 pmegp->pmeg_qstate = PMEGQ_NONE;
780 pmeg_clean(pmegp);
781 pmegp->pmeg_qstate = PMEGQ_FREE;
783 TAILQ_INSERT_TAIL(&pmeg_free_queue, pmegp, pmeg_link);
785 if (pmegp == pmegp_first)
788 pmegp_first = pmegp;
799 pmeg_t pmegp;
810 pmegp = TAILQ_FIRST(&pmeg_free_queue);
811 if (!pmegp) {
813 pmegp = TAILQ_FIRST(&pmeg_inactive_queue);
814 if (!pmegp) {
816 pmegp = TAILQ_FIRST(&pmeg_active_queue);
818 if (!pmegp) {
827 pmap_remove1(pmegp->pmeg_owner,
828 pmegp->pmeg_va,
829 pmegp->pmeg_va + NBSG);
833 pmegp = TAILQ_FIRST(&pmeg_free_queue);
835 if (pmegp == NULL)
837 if ((pmegp->pmeg_qstate != PMEGQ_FREE) ||
838 (pmegp->pmeg_index == SEGINV) ||
839 (pmegp->pmeg_vpages))
840 panic("pmeg_allocate: bad pmegp=%p", pmegp);
843 if (pmegp->pmeg_index == pmap_db_watchpmeg) {
844 db_printf("pmeg_allocate: watch pmegp=%p\n", pmegp);
849 TAILQ_REMOVE(&pmeg_free_queue, pmegp, pmeg_link);
852 pmegp->pmeg_owner = pmap;
853 pmegp->pmeg_version = pmap->pm_version;
854 pmegp->pmeg_va = va;
855 pmegp->pmeg_wired = 0;
856 pmegp->pmeg_reserved = 0;
857 pmegp->pmeg_vpages = 0;
859 TAILQ_INSERT_TAIL(&pmeg_kernel_queue, pmegp, pmeg_link);
860 pmegp->pmeg_qstate = PMEGQ_KERNEL;
862 TAILQ_INSERT_TAIL(&pmeg_active_queue, pmegp, pmeg_link);
863 pmegp->pmeg_qstate = PMEGQ_ACTIVE;
866 return pmegp;
875 pmeg_release(pmeg_t pmegp)
881 if ((pmegp->pmeg_owner == kernel_pmap) ||
882 (pmegp->pmeg_qstate != PMEGQ_ACTIVE))
883 panic("pmeg_release: bad pmeg=%p", pmegp);
886 TAILQ_REMOVE(&pmeg_active_queue, pmegp, pmeg_link);
887 pmegp->pmeg_qstate = PMEGQ_INACTIVE;
888 TAILQ_INSERT_TAIL(&pmeg_inactive_queue, pmegp, pmeg_link);
896 pmeg_free(pmeg_t pmegp)
903 if (pmegp->pmeg_vpages != 0)
907 switch (pmegp->pmeg_qstate) {
909 TAILQ_REMOVE(&pmeg_active_queue, pmegp, pmeg_link);
912 TAILQ_REMOVE(&pmeg_inactive_queue, pmegp, pmeg_link);
915 TAILQ_REMOVE(&pmeg_kernel_queue, pmegp, pmeg_link);
923 if (pmegp->pmeg_index == pmap_db_watchpmeg) {
925 pmegp->pmeg_index);
930 pmegp->pmeg_owner = NULL;
931 pmegp->pmeg_qstate = PMEGQ_FREE;
932 TAILQ_INSERT_TAIL(&pmeg_free_queue, pmegp, pmeg_link);
943 pmeg_t pmegp;
966 pmegp = pmeg_p(sme);
969 if (pmegp->pmeg_index == pmap_db_watchpmeg) {
970 db_printf("pmeg_cache: watch pmeg 0x%x\n", pmegp->pmeg_index);
979 if ((pmegp->pmeg_owner != pmap) ||
980 (pmegp->pmeg_version != pmap->pm_version) ||
981 (pmegp->pmeg_va != va))
985 pmeg_print(pmegp);
994 if (pmegp->pmeg_qstate != PMEGQ_INACTIVE)
995 panic("pmeg_cache: pmeg was taken: %p", pmegp);
998 TAILQ_REMOVE(&pmeg_inactive_queue, pmegp, pmeg_link);
999 pmegp->pmeg_qstate = PMEGQ_ACTIVE;
1000 TAILQ_INSERT_TAIL(&pmeg_active_queue, pmegp, pmeg_link);
1002 return pmegp;
1981 pmeg_t pmegp;
2028 pmegp = pmeg_p(sme);
2035 if (pmegp->pmeg_owner != pmap)
2040 pmegp = pmeg_allocate(pmap, segva);
2041 sme = pmegp->pmeg_index;
2075 pmegp->pmeg_vpages--;
2099 pmeg_set_wiring(pmegp, pgva, wired);
2119 pmegp->pmeg_vpages++;
2128 pmeg_t pmegp;
2198 pmegp = pmeg_p(sme);
2204 if (pmegp->pmeg_owner != pmap)
2209 pmegp = pmeg_cache(pmap, segva);
2210 if (pmegp) {
2212 sme = pmegp->pmeg_index;
2216 pmegp = pmeg_allocate(pmap, segva);
2217 sme = pmegp->pmeg_index;
2251 pmegp->pmeg_vpages--;
2276 /* pmeg_set_wiring(pmegp, pgva, wired); */
2295 pmegp->pmeg_vpages++;
2303 pmeg_t pmegp;
2367 pmegp = pmeg_p(sme);
2373 if (pmegp->pmeg_owner != pmap)
2379 pmegp = pmeg_allocate(pmap, segva);
2380 sme = pmegp->pmeg_index;
2392 pmeg_set_wiring(pmegp, va, true);
2407 pmegp->pmeg_vpages++;
2417 pmeg_t pmegp;
2439 pmegp = pmeg_p(sme);
2479 KASSERT(pmegp->pmeg_vpages > 0);
2480 pmegp->pmeg_vpages--;
2483 KASSERT(pmegp->pmeg_vpages >= 0);
2484 if (pmegp->pmeg_vpages == 0) {
2487 if (is_pmeg_wired(pmegp)) {
2490 "pmeg: %p\n", pmegp);
2498 pmegp->pmeg_index);
2508 pmeg_free(pmegp);
2570 pmeg_t pmegp;
2622 pmegp = pmeg_cache(pmap, segva);
2623 if (pmegp) {
2626 sme = pmegp->pmeg_index;
2795 pmeg_t pmegp;
2826 pmegp = pmeg_p(sme);
2827 pmegp->pmeg_wired &= ~wiremask;
3098 pmeg_t pmegp = pmeg_p(sme);
3100 if ((pmegp->pmeg_va != segva) ||
3101 (pmegp->pmeg_owner != pmap) ||
3102 (pmegp->pmeg_version != pmap->pm_version))
3104 panic("pmap_protect_mmu: bad pmeg=%p", pmegp);
3106 if (pmegp->pmeg_vpages < 0)
3108 if (pmegp->pmeg_vpages == 0)
3308 pmeg_t pmegp;
3333 pmegp = pmeg_p(sme);
3338 if ((pmegp->pmeg_va != segva) ||
3339 (pmegp->pmeg_owner != pmap) ||
3340 (pmegp->pmeg_version != pmap->pm_version))
3342 panic("pmap_remove_mmu: bad pmeg=%p", pmegp);
3344 if (pmegp->pmeg_vpages < 0)
3346 if (pmegp->pmeg_vpages == 0)
3389 KASSERT(pmegp->pmeg_vpages > 0);
3390 pmegp->pmeg_vpages--;
3394 KASSERT(pmegp->pmeg_vpages >= 0);
3395 if (pmegp->pmeg_vpages == 0) {
3397 if (is_pmeg_wired(pmegp)) {
3401 pmegp);
3411 pmap->pm_ctxnum, segva, pmegp->pmeg_index);
3426 pmeg_free(pmegp);
3437 pmeg_t pmegp;
3456 pmegp = pmeg_p(sme);
3492 KASSERT(pmegp->pmeg_vpages > 0);
3493 pmegp->pmeg_vpages--;
3507 KASSERT(pmegp->pmeg_vpages >= 0);
3508 if (pmegp->pmeg_vpages == 0) {
3510 if (is_pmeg_wired(pmegp)) {
3514 pmegp);
3521 pmeg_free(pmegp);
3844 pmeg_print(pmeg_t pmegp)
3847 TAILQ_NEXT(pmegp, pmeg_link),
3848 TAILQ_PREV(pmegp, pmeg_tailq, pmeg_link));
3850 pmegp->pmeg_index, pmegp->pmeg_owner, pmegp->pmeg_version);
3852 pmegp->pmeg_va, pmegp->pmeg_wired,
3853 pmegp->pmeg_reserved, pmegp->pmeg_vpages,
3854 pmegp->pmeg_qstate);