Lines Matching refs:ptp
104 uint64_t *ptp; /* first level page table page */ member
448 pt_paddr = vtophys(dom->ptp); in vtd_add_device()
522 uint64_t spsize, *ptp; in vtd_update_mapping() local
562 ptp = dom->ptp; in vtd_update_mapping()
579 if (ptp[ptpindex] == 0) { in vtd_update_mapping()
581 ptp[ptpindex] = vtophys(nlp)| VTD_PTE_RD | VTD_PTE_WR; in vtd_update_mapping()
584 ptp = (uint64_t *)PHYS_TO_DMAP(ptp[ptpindex] & VTD_PTE_ADDR_M); in vtd_update_mapping()
594 ptp[ptpindex] = 0; in vtd_update_mapping()
596 ptp[ptpindex] = hpa | VTD_PTE_RD | VTD_PTE_WR; in vtd_update_mapping()
599 ptp[ptpindex] |= VTD_PTE_SUPERPAGE; in vtd_update_mapping()
702 dom->ptp = malloc(PAGE_SIZE, M_VTD, M_ZERO | M_WAITOK); in vtd_create_domain()
703 if ((uintptr_t)dom->ptp & PAGE_MASK) in vtd_create_domain()
704 panic("vtd_create_domain: ptp (%p) not page aligned", dom->ptp); in vtd_create_domain()
735 vtd_free_ptp(uint64_t *ptp, int level) in vtd_free_ptp() argument
742 if ((ptp[i] & (VTD_PTE_RD | VTD_PTE_WR)) == 0) in vtd_free_ptp()
744 if ((ptp[i] & VTD_PTE_SUPERPAGE) != 0) in vtd_free_ptp()
746 nlp = (uint64_t *)PHYS_TO_DMAP(ptp[i] & VTD_PTE_ADDR_M); in vtd_free_ptp()
751 bzero(ptp, PAGE_SIZE); in vtd_free_ptp()
752 free(ptp, M_VTD); in vtd_free_ptp()
763 vtd_free_ptp(dom->ptp, dom->pt_levels); in vtd_destroy_domain()