Home
last modified time | relevance | path

Searched refs:pgtable (Results 1 – 25 of 69) sorted by relevance

123

/linux-6.12.1/drivers/iommu/amd/
Dio_pgtable.c119 static bool increase_address_space(struct amd_io_pgtable *pgtable, in increase_address_space() argument
123 struct io_pgtable_cfg *cfg = &pgtable->pgtbl.cfg; in increase_address_space()
125 container_of(pgtable, struct protection_domain, iop); in increase_address_space()
136 if (address <= PM_LEVEL_SIZE(pgtable->mode)) in increase_address_space()
140 if (WARN_ON_ONCE(pgtable->mode == PAGE_MODE_6_LEVEL)) in increase_address_space()
143 *pte = PM_LEVEL_PDE(pgtable->mode, iommu_virt_to_phys(pgtable->root)); in increase_address_space()
145 pgtable->root = pte; in increase_address_space()
146 pgtable->mode += 1; in increase_address_space()
159 static u64 *alloc_pte(struct amd_io_pgtable *pgtable, in alloc_pte() argument
166 struct io_pgtable_cfg *cfg = &pgtable->pgtbl.cfg; in alloc_pte()
[all …]
Dio_pgtable_v2.c194 static u64 *fetch_pte(struct amd_io_pgtable *pgtable, in fetch_pte() argument
201 pte = &pgtable->pgd[PM_LEVEL_INDEX(level, iova)]; in fetch_pte()
236 struct amd_io_pgtable *pgtable = io_pgtable_ops_to_data(ops); in iommu_v2_map_pages() local
237 struct io_pgtable_cfg *cfg = &pgtable->pgtbl.cfg; in iommu_v2_map_pages()
254 pte = v2_alloc_pte(cfg->amd.nid, pgtable->pgd, in iommu_v2_map_pages()
286 struct amd_io_pgtable *pgtable = io_pgtable_ops_to_data(ops); in iommu_v2_unmap_pages() local
287 struct io_pgtable_cfg *cfg = &pgtable->pgtbl.cfg; in iommu_v2_unmap_pages()
297 pte = fetch_pte(pgtable, iova, &unmap_size); in iommu_v2_unmap_pages()
312 struct amd_io_pgtable *pgtable = io_pgtable_ops_to_data(ops); in iommu_v2_iova_to_phys() local
316 pte = fetch_pte(pgtable, iova, &pte_pgsize); in iommu_v2_iova_to_phys()
[all …]
/linux-6.12.1/drivers/accel/ivpu/
Divpu_mmu_context.c93 static int ivpu_mmu_pgtable_init(struct ivpu_device *vdev, struct ivpu_mmu_pgtable *pgtable) in ivpu_mmu_pgtable_init() argument
97 pgtable->pgd_dma_ptr = ivpu_pgtable_alloc_page(vdev, &pgd_dma); in ivpu_mmu_pgtable_init()
98 if (!pgtable->pgd_dma_ptr) in ivpu_mmu_pgtable_init()
101 pgtable->pgd_dma = pgd_dma; in ivpu_mmu_pgtable_init()
106 static void ivpu_mmu_pgtables_free(struct ivpu_device *vdev, struct ivpu_mmu_pgtable *pgtable) in ivpu_mmu_pgtables_free() argument
113 pud_dma_ptr = pgtable->pud_ptrs[pgd_idx]; in ivpu_mmu_pgtables_free()
114 pud_dma = pgtable->pgd_dma_ptr[pgd_idx]; in ivpu_mmu_pgtables_free()
120 pmd_dma_ptr = pgtable->pmd_ptrs[pgd_idx][pud_idx]; in ivpu_mmu_pgtables_free()
121 pmd_dma = pgtable->pud_ptrs[pgd_idx][pud_idx]; in ivpu_mmu_pgtables_free()
127 pte_dma_ptr = pgtable->pte_ptrs[pgd_idx][pud_idx][pmd_idx]; in ivpu_mmu_pgtables_free()
[all …]
/linux-6.12.1/arch/arm64/kvm/
Dptdump.c100 struct kvm_pgtable *pgtable = mmu->pgt; in kvm_ptdump_parser_create() local
107 ret = kvm_ptdump_build_levels(&st->level[0], pgtable->start_level); in kvm_ptdump_parser_create()
114 st->ipa_marker[1].start_address = BIT(pgtable->ia_bits); in kvm_ptdump_parser_create()
115 st->range[0].end = BIT(pgtable->ia_bits); in kvm_ptdump_parser_create()
196 struct kvm_pgtable *pgtable = m->private; in kvm_pgtable_range_show() local
198 seq_printf(m, "%2u\n", pgtable->ia_bits); in kvm_pgtable_range_show()
204 struct kvm_pgtable *pgtable = m->private; in kvm_pgtable_levels_show() local
206 seq_printf(m, "%1d\n", KVM_PGTABLE_MAX_LEVELS - pgtable->start_level); in kvm_pgtable_levels_show()
214 struct kvm_pgtable *pgtable; in kvm_pgtable_debugfs_open() local
220 pgtable = kvm->arch.mmu.pgt; in kvm_pgtable_debugfs_open()
[all …]
/linux-6.12.1/mm/
Dpgtable-generic.c166 pgtable_t pgtable) in pgtable_trans_huge_deposit() argument
172 INIT_LIST_HEAD(&pgtable->lru); in pgtable_trans_huge_deposit()
174 list_add(&pgtable->lru, &pmd_huge_pte(mm, pmdp)->lru); in pgtable_trans_huge_deposit()
175 pmd_huge_pte(mm, pmdp) = pgtable; in pgtable_trans_huge_deposit()
183 pgtable_t pgtable; in pgtable_trans_huge_withdraw() local
188 pgtable = pmd_huge_pte(mm, pmdp); in pgtable_trans_huge_withdraw()
189 pmd_huge_pte(mm, pmdp) = list_first_entry_or_null(&pgtable->lru, in pgtable_trans_huge_withdraw()
192 list_del(&pgtable->lru); in pgtable_trans_huge_withdraw()
193 return pgtable; in pgtable_trans_huge_withdraw()
247 void pte_free_defer(struct mm_struct *mm, pgtable_t pgtable) in pte_free_defer() argument
[all …]
Dhuge_memory.c1145 pgtable_t pgtable; in __do_huge_pmd_anonymous_page() local
1161 pgtable = pte_alloc_one(vma->vm_mm); in __do_huge_pmd_anonymous_page()
1162 if (unlikely(!pgtable)) { in __do_huge_pmd_anonymous_page()
1189 pte_free(vma->vm_mm, pgtable); in __do_huge_pmd_anonymous_page()
1199 pgtable_trans_huge_deposit(vma->vm_mm, vmf->pmd, pgtable); in __do_huge_pmd_anonymous_page()
1215 if (pgtable) in __do_huge_pmd_anonymous_page()
1216 pte_free(vma->vm_mm, pgtable); in __do_huge_pmd_anonymous_page()
1258 static void set_huge_zero_folio(pgtable_t pgtable, struct mm_struct *mm, in set_huge_zero_folio() argument
1267 pgtable_trans_huge_deposit(mm, pmd, pgtable); in set_huge_zero_folio()
1290 pgtable_t pgtable; in do_huge_pmd_anonymous_page() local
[all …]
Dhugetlb_vmemmap.c57 pte_t *pgtable; in vmemmap_split_pmd() local
59 pgtable = pte_alloc_one_kernel(&init_mm); in vmemmap_split_pmd()
60 if (!pgtable) in vmemmap_split_pmd()
63 pmd_populate_kernel(&init_mm, &__pmd, pgtable); in vmemmap_split_pmd()
86 pmd_populate_kernel(&init_mm, pmd, pgtable); in vmemmap_split_pmd()
90 pte_free_kernel(&init_mm, pgtable); in vmemmap_split_pmd()
/linux-6.12.1/arch/sparc/mm/
Dtlb.c270 pgtable_t pgtable) in pgtable_trans_huge_deposit() argument
272 struct list_head *lh = (struct list_head *) pgtable; in pgtable_trans_huge_deposit()
281 pmd_huge_pte(mm, pmdp) = pgtable; in pgtable_trans_huge_deposit()
287 pgtable_t pgtable; in pgtable_trans_huge_withdraw() local
292 pgtable = pmd_huge_pte(mm, pmdp); in pgtable_trans_huge_withdraw()
293 lh = (struct list_head *) pgtable; in pgtable_trans_huge_withdraw()
300 pte_val(pgtable[0]) = 0; in pgtable_trans_huge_withdraw()
301 pte_val(pgtable[1]) = 0; in pgtable_trans_huge_withdraw()
303 return pgtable; in pgtable_trans_huge_withdraw()
/linux-6.12.1/drivers/gpu/drm/etnaviv/
Detnaviv_iommu.c93 u32 pgtable; in etnaviv_iommuv1_restore() local
107 pgtable = (u32)v1_context->pgtable_dma; in etnaviv_iommuv1_restore()
109 gpu_write(gpu, VIVS_MC_MMU_FE_PAGE_TABLE, pgtable); in etnaviv_iommuv1_restore()
110 gpu_write(gpu, VIVS_MC_MMU_TX_PAGE_TABLE, pgtable); in etnaviv_iommuv1_restore()
111 gpu_write(gpu, VIVS_MC_MMU_PE_PAGE_TABLE, pgtable); in etnaviv_iommuv1_restore()
112 gpu_write(gpu, VIVS_MC_MMU_PEZ_PAGE_TABLE, pgtable); in etnaviv_iommuv1_restore()
113 gpu_write(gpu, VIVS_MC_MMU_RA_PAGE_TABLE, pgtable); in etnaviv_iommuv1_restore()
/linux-6.12.1/arch/powerpc/mm/book3s64/
Dhash_pgtable.c268 pgtable_t pgtable) in hash__pgtable_trans_huge_deposit() argument
277 *pgtable_slot = pgtable; in hash__pgtable_trans_huge_deposit()
289 pgtable_t pgtable; in hash__pgtable_trans_huge_withdraw() local
295 pgtable = *pgtable_slot; in hash__pgtable_trans_huge_withdraw()
304 memset(pgtable, 0, PTE_FRAG_SIZE); in hash__pgtable_trans_huge_withdraw()
305 return pgtable; in hash__pgtable_trans_huge_withdraw()
349 pgtable_t pgtable; in hash__pmdp_huge_get_and_clear() local
361 pgtable = *pgtable_slot; in hash__pmdp_huge_get_and_clear()
366 memset(pgtable, 0, PTE_FRAG_SIZE); in hash__pmdp_huge_get_and_clear()
/linux-6.12.1/arch/m68k/include/asm/
Dmotorola_pgalloc.h42 static inline void pte_free(struct mm_struct *mm, pgtable_t pgtable) in pte_free() argument
44 free_pointer_table(pgtable, TABLE_PTE); in pte_free()
47 static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pgtable, in __pte_free_tlb() argument
50 free_pointer_table(pgtable, TABLE_PTE); in __pte_free_tlb()
Dmcf_pgalloc.h35 static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t pgtable, in __pte_free_tlb() argument
38 struct ptdesc *ptdesc = virt_to_ptdesc(pgtable); in __pte_free_tlb()
60 static inline void pte_free(struct mm_struct *mm, pgtable_t pgtable) in pte_free() argument
62 struct ptdesc *ptdesc = virt_to_ptdesc(pgtable); in pte_free()
/linux-6.12.1/drivers/iommu/
Dexynos-iommu.c180 static sysmmu_pte_t *section_entry(sysmmu_pte_t *pgtable, sysmmu_iova_t iova) in section_entry() argument
182 return pgtable + lv1ent_offset(iova); in section_entry()
250 sysmmu_pte_t *pgtable; /* lv1 page table, 16KB */ member
300 phys_addr_t pgtable; /* assigned page table structure */ member
557 dev_dbg(data->sysmmu, "Page table base: %pa\n", &data->pgtable); in show_fault_information()
558 ent = section_entry(phys_to_virt(data->pgtable), fault->addr); in show_fault_information()
656 __sysmmu_set_ptbase(data, data->pgtable); in __sysmmu_enable()
905 domain->pgtable = iommu_alloc_pages(GFP_KERNEL, 2); in exynos_iommu_domain_alloc_paging()
906 if (!domain->pgtable) in exynos_iommu_domain_alloc_paging()
915 domain->pgtable[i] = ZERO_LV2LINK; in exynos_iommu_domain_alloc_paging()
[all …]
DMakefile8 obj-$(CONFIG_IOMMU_IO_PGTABLE) += io-pgtable.o
9 obj-$(CONFIG_IOMMU_IO_PGTABLE_ARMV7S) += io-pgtable-arm-v7s.o
10 obj-$(CONFIG_IOMMU_IO_PGTABLE_LPAE) += io-pgtable-arm.o
11 obj-$(CONFIG_IOMMU_IO_PGTABLE_DART) += io-pgtable-dart.o
/linux-6.12.1/arch/mips/mm/
DMakefile14 obj-y += pgtable.o
29 obj-$(CONFIG_32BIT) += ioremap.o pgtable-32.o
30 obj-$(CONFIG_64BIT) += ioremap64.o pgtable-64.o
/linux-6.12.1/arch/x86/boot/compressed/
Dpgtable_64.c104 asmlinkage void configure_5level_paging(struct boot_params *bp, void *pgtable) in configure_5level_paging() argument
198 memcpy(pgtable, trampoline_32bit, PAGE_SIZE); in configure_5level_paging()
199 native_write_cr3((unsigned long)pgtable); in configure_5level_paging()
Dhead_64.S201 leal rva(pgtable)(%ebx), %edi
207 leal rva(pgtable + 0)(%ebx), %edi
213 leal rva(pgtable + 0x1000)(%ebx), %edi
224 leal rva(pgtable + 0x2000)(%ebx), %edi
235 leal rva(pgtable)(%ebx), %eax
644 SYM_DATA_LOCAL(pgtable, .fill BOOT_PGT_SIZE, 1, 0)
Dvmlinux.lds.S66 .pgtable : {
68 *(.pgtable) argument
/linux-6.12.1/arch/powerpc/mm/
Dpgtable-frag.c137 void pte_free_defer(struct mm_struct *mm, pgtable_t pgtable) in pte_free_defer() argument
141 folio = virt_to_folio(pgtable); in pte_free_defer()
143 pte_fragment_free((unsigned long *)pgtable, 0); in pte_free_defer()
DMakefile6 obj-y := fault.o mem.o pgtable.o maccess.o pageattr.o \
8 pgtable-frag.o ioremap.o ioremap_$(BITS).o \
/linux-6.12.1/Documentation/features/debug/debug-vm-pgtable/
Darch-support.txt2 # Feature name: debug-vm-pgtable
4 # description: arch supports pgtable tests for semantics compliance
/linux-6.12.1/arch/arm64/kvm/hyp/
Dpgtable.c167 struct kvm_pgtable_mm_ops *mm_ops, kvm_pteref_t pgtable, s8 level);
236 struct kvm_pgtable_mm_ops *mm_ops, kvm_pteref_t pgtable, s8 level) in __kvm_pgtable_walk() argument
246 kvm_pteref_t pteref = &pgtable[idx]; in __kvm_pgtable_walk()
1398 kvm_pte_t *pgtable; in kvm_pgtable_stage2_create_unlinked() local
1408 pgtable = mm_ops->zalloc_page(mc); in kvm_pgtable_stage2_create_unlinked()
1409 if (!pgtable) in kvm_pgtable_stage2_create_unlinked()
1412 ret = __kvm_pgtable_walk(&data, mm_ops, (kvm_pteref_t)pgtable, in kvm_pgtable_stage2_create_unlinked()
1415 kvm_pgtable_stage2_free_unlinked(mm_ops, pgtable, level); in kvm_pgtable_stage2_create_unlinked()
1419 return pgtable; in kvm_pgtable_stage2_create_unlinked()
1594 void kvm_pgtable_stage2_free_unlinked(struct kvm_pgtable_mm_ops *mm_ops, void *pgtable, s8 level) in kvm_pgtable_stage2_free_unlinked() argument
[all …]
DMakefile10 obj-$(CONFIG_KVM) += vhe/ nvhe/ pgtable.o
/linux-6.12.1/arch/microblaze/mm/
DMakefile6 obj-y := consistent.o init.o pgtable.o mmu_context.o fault.o
/linux-6.12.1/arch/powerpc/kvm/
Dbook3s_64_mmu_radix.c566 if (kvm->arch.pgtable) { in kvmppc_free_radix()
567 kvmppc_free_pgtable_radix(kvm, kvm->arch.pgtable, in kvmppc_free_radix()
569 pgd_free(kvm->mm, kvm->arch.pgtable); in kvmppc_free_radix()
570 kvm->arch.pgtable = NULL; in kvmppc_free_radix()
615 int kvmppc_create_pte(struct kvm *kvm, pgd_t *pgtable, pte_t pte, in kvmppc_create_pte() argument
628 pgd = pgtable + pgd_index(gpa); in kvmppc_create_pte()
921 ret = kvmppc_create_pte(kvm, kvm->arch.pgtable, pte, gpa, level, in kvmppc_book3s_instantiate_page()
1248 kvm->arch.pgtable = pgd_alloc(kvm->mm); in kvmppc_init_vm_radix()
1249 if (!kvm->arch.pgtable) in kvmppc_init_vm_radix()
1363 pgt = kvm->arch.pgtable; in debugfs_radix_read()

123