Lines Matching refs:pte
334 static int get_pte(dma_addr_t baseaddr, uint32_t index, uint64_t *pte, in get_pte() argument
338 dma_addr_t addr = baseaddr + index * sizeof(*pte); in get_pte()
341 ret = ldq_le_dma(&address_space_memory, addr, pte, MEMTXATTRS_UNSPECIFIED); in get_pte()
348 trace_smmu_get_pte(baseaddr, index, addr, *pte); in get_pte()
359 static inline hwaddr get_page_pte_address(uint64_t pte, int granule_sz) in get_page_pte_address() argument
361 return PTE_ADDRESS(pte, granule_sz); in get_page_pte_address()
369 static inline hwaddr get_table_pte_address(uint64_t pte, int granule_sz) in get_table_pte_address() argument
371 return PTE_ADDRESS(pte, granule_sz); in get_table_pte_address()
378 static inline hwaddr get_block_pte_address(uint64_t pte, int level, in get_block_pte_address() argument
384 return PTE_ADDRESS(pte, n); in get_block_pte_address()
484 uint64_t pte, gpa; in smmu_ptw_64_s1() local
485 dma_addr_t pte_addr = baseaddr + offset * sizeof(pte); in smmu_ptw_64_s1()
488 if (get_pte(baseaddr, offset, &pte, info)) { in smmu_ptw_64_s1()
492 baseaddr, offset, pte); in smmu_ptw_64_s1()
494 if (is_invalid_pte(pte) || is_reserved_pte(pte, level)) { in smmu_ptw_64_s1()
496 pte_addr, offset, pte); in smmu_ptw_64_s1()
500 if (is_table_pte(pte, level)) { in smmu_ptw_64_s1()
501 ap = PTE_APTABLE(pte); in smmu_ptw_64_s1()
507 baseaddr = get_table_pte_address(pte, granule_sz); in smmu_ptw_64_s1()
515 } else if (is_page_pte(pte, level)) { in smmu_ptw_64_s1()
516 gpa = get_page_pte_address(pte, granule_sz); in smmu_ptw_64_s1()
518 baseaddr, pte_addr, pte, gpa); in smmu_ptw_64_s1()
522 gpa = get_block_pte_address(pte, level, granule_sz, in smmu_ptw_64_s1()
525 pte_addr, pte, iova, gpa, in smmu_ptw_64_s1()
534 if (!PTE_AF(pte) && !cfg->affd) { in smmu_ptw_64_s1()
539 ap = PTE_AP(pte); in smmu_ptw_64_s1()
620 uint64_t pte, gpa; in smmu_ptw_64_s2() local
621 dma_addr_t pte_addr = baseaddr + offset * sizeof(pte); in smmu_ptw_64_s2()
624 if (get_pte(baseaddr, offset, &pte, info)) { in smmu_ptw_64_s2()
628 baseaddr, offset, pte); in smmu_ptw_64_s2()
629 if (is_invalid_pte(pte) || is_reserved_pte(pte, level)) { in smmu_ptw_64_s2()
631 pte_addr, offset, pte); in smmu_ptw_64_s2()
635 if (is_table_pte(pte, level)) { in smmu_ptw_64_s2()
636 baseaddr = get_table_pte_address(pte, granule_sz); in smmu_ptw_64_s2()
639 } else if (is_page_pte(pte, level)) { in smmu_ptw_64_s2()
640 gpa = get_page_pte_address(pte, granule_sz); in smmu_ptw_64_s2()
642 baseaddr, pte_addr, pte, gpa); in smmu_ptw_64_s2()
646 gpa = get_block_pte_address(pte, level, granule_sz, in smmu_ptw_64_s2()
649 pte_addr, pte, ipa, gpa, in smmu_ptw_64_s2()
657 if (!PTE_AF(pte) && !cfg->s2cfg.affd) { in smmu_ptw_64_s2()
662 s2ap = PTE_AP(pte); in smmu_ptw_64_s2()