Symbol: mmu_info
arch/sparc/include/asm/pgtable_32.h
307
void mmu_info(struct seq_file *m);
arch/sparc/include/asm/pgtable_64.h
978
void mmu_info(struct seq_file *);
arch/sparc/kernel/cpu.c
357
mmu_info(m);
arch/sparc/kernel/cpu.c
405
mmu_info(m);
arch/sparc/mm/init_64.h
18
void mmu_info(struct seq_file *m);
drivers/gpu/drm/imagination/pvr_rogue_fwif.h
398
struct rogue_mmuinfo mmu_info;
drivers/media/pci/intel/ipu6/ipu6-dma.c
175
PHYS_PFN(mmu->dmap->mmu_info->aperture_end), 0);
drivers/media/pci/intel/ipu6/ipu6-dma.c
196
ret = ipu6_mmu_map(mmu->dmap->mmu_info,
drivers/media/pci/intel/ipu6/ipu6-dma.c
225
pci_dma_addr = ipu6_mmu_iova_to_phys(mmu->dmap->mmu_info,
drivers/media/pci/intel/ipu6/ipu6-dma.c
230
ipu6_mmu_unmap(mmu->dmap->mmu_info, ipu6_iova, PAGE_SIZE);
drivers/media/pci/intel/ipu6/ipu6-dma.c
278
pci_dma_addr = ipu6_mmu_iova_to_phys(mmu->dmap->mmu_info,
drivers/media/pci/intel/ipu6/ipu6-dma.c
284
ipu6_mmu_unmap(mmu->dmap->mmu_info, PFN_PHYS(iova->pfn_lo),
drivers/media/pci/intel/ipu6/ipu6-dma.c
357
pci_dma_addr = ipu6_mmu_iova_to_phys(mmu->dmap->mmu_info,
drivers/media/pci/intel/ipu6/ipu6-dma.c
366
ipu6_mmu_unmap(mmu->dmap->mmu_info, PFN_PHYS(iova->pfn_lo),
drivers/media/pci/intel/ipu6/ipu6-dma.c
401
PHYS_PFN(mmu->dmap->mmu_info->aperture_end), 0);
drivers/media/pci/intel/ipu6/ipu6-dma.c
417
ret = ipu6_mmu_map(mmu->dmap->mmu_info, PFN_PHYS(iova_addr),
drivers/media/pci/intel/ipu6/ipu6-dma.h
16
struct ipu6_mmu_info *mmu_info;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
102
if (mmu_info->l1_pt[l1_idx] == mmu_info->dummy_l2_pteval)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
105
l2_phys = TBL_PHYS_ADDR(mmu_info->l1_pt[l1_idx]);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
106
dev_dbg(mmu_info->dev,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
111
u32 *l2_pt = mmu_info->l2_pts[l1_idx];
drivers/media/pci/intel/ipu6/ipu6-mmu.c
114
if (l2_pt[l2_idx] == mmu_info->dummy_page_pteval)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
117
dev_dbg(mmu_info->dev,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
124
dev_dbg(mmu_info->dev, "end IOMMU page table dump\n");
drivers/media/pci/intel/ipu6/ipu6-mmu.c
128
static dma_addr_t map_single(struct ipu6_mmu_info *mmu_info, void *ptr)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
132
dma = dma_map_single(mmu_info->dev, ptr, PAGE_SIZE, DMA_BIDIRECTIONAL);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
133
if (dma_mapping_error(mmu_info->dev, dma))
drivers/media/pci/intel/ipu6/ipu6-mmu.c
139
static int get_dummy_page(struct ipu6_mmu_info *mmu_info)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
147
dev_dbg(mmu_info->dev, "dummy_page: get_zeroed_page() == %p\n", pt);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
149
dma = map_single(mmu_info, pt);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
151
dev_err(mmu_info->dev, "Failed to map dummy page\n");
drivers/media/pci/intel/ipu6/ipu6-mmu.c
155
mmu_info->dummy_page = pt;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
156
mmu_info->dummy_page_pteval = dma >> ISP_PAGE_SHIFT;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
165
static void free_dummy_page(struct ipu6_mmu_info *mmu_info)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
167
dma_unmap_single(mmu_info->dev,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
168
TBL_PHYS_ADDR(mmu_info->dummy_page_pteval),
drivers/media/pci/intel/ipu6/ipu6-mmu.c
170
free_page((unsigned long)mmu_info->dummy_page);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
173
static int alloc_dummy_l2_pt(struct ipu6_mmu_info *mmu_info)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
182
dev_dbg(mmu_info->dev, "dummy_l2: get_zeroed_page() = %p\n", pt);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
184
dma = map_single(mmu_info, pt);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
186
dev_err(mmu_info->dev, "Failed to map l2pt page\n");
drivers/media/pci/intel/ipu6/ipu6-mmu.c
191
pt[i] = mmu_info->dummy_page_pteval;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
193
mmu_info->dummy_l2_pt = pt;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
194
mmu_info->dummy_l2_pteval = dma >> ISP_PAGE_SHIFT;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
203
static void free_dummy_l2_pt(struct ipu6_mmu_info *mmu_info)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
205
dma_unmap_single(mmu_info->dev,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
206
TBL_PHYS_ADDR(mmu_info->dummy_l2_pteval),
drivers/media/pci/intel/ipu6/ipu6-mmu.c
208
free_page((unsigned long)mmu_info->dummy_l2_pt);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
211
static u32 *alloc_l1_pt(struct ipu6_mmu_info *mmu_info)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
220
dev_dbg(mmu_info->dev, "alloc_l1: get_zeroed_page() = %p\n", pt);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
223
pt[i] = mmu_info->dummy_l2_pteval;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
225
dma = map_single(mmu_info, pt);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
227
dev_err(mmu_info->dev, "Failed to map l1pt page\n");
drivers/media/pci/intel/ipu6/ipu6-mmu.c
231
mmu_info->l1_pt_dma = dma >> ISP_PADDR_SHIFT;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
232
dev_dbg(mmu_info->dev, "l1 pt %p mapped at %pad\n", pt, &dma);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
241
static u32 *alloc_l2_pt(struct ipu6_mmu_info *mmu_info)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
249
dev_dbg(mmu_info->dev, "alloc_l2: get_zeroed_page() = %p\n", pt);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
252
pt[i] = mmu_info->dummy_page_pteval;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
257
static void l2_unmap(struct ipu6_mmu_info *mmu_info, unsigned long iova,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
266
spin_lock_irqsave(&mmu_info->lock, flags);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
269
dev_dbg(mmu_info->dev,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
273
if (mmu_info->l1_pt[l1_idx] == mmu_info->dummy_l2_pteval) {
drivers/media/pci/intel/ipu6/ipu6-mmu.c
274
dev_err(mmu_info->dev,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
279
l2_pt = mmu_info->l2_pts[l1_idx];
drivers/media/pci/intel/ipu6/ipu6-mmu.c
286
dev_dbg(mmu_info->dev,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
289
l2_pt[l2_idx] = mmu_info->dummy_page_pteval;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
303
spin_unlock_irqrestore(&mmu_info->lock, flags);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
306
static int l2_map(struct ipu6_mmu_info *mmu_info, unsigned long iova,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
309
struct device *dev = mmu_info->dev;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
320
spin_lock_irqsave(&mmu_info->lock, flags);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
329
l1_entry = mmu_info->l1_pt[l1_idx];
drivers/media/pci/intel/ipu6/ipu6-mmu.c
330
if (l1_entry == mmu_info->dummy_l2_pteval) {
drivers/media/pci/intel/ipu6/ipu6-mmu.c
331
l2_virt = mmu_info->l2_pts[l1_idx];
drivers/media/pci/intel/ipu6/ipu6-mmu.c
333
l2_virt = alloc_l2_pt(mmu_info);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
340
dma = map_single(mmu_info, l2_virt);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
352
mmu_info->l1_pt[l1_idx] = l1_entry;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
353
mmu_info->l2_pts[l1_idx] = l2_virt;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
355
clflush_cache_range(&mmu_info->l1_pt[l1_idx],
drivers/media/pci/intel/ipu6/ipu6-mmu.c
356
sizeof(mmu_info->l1_pt[l1_idx]));
drivers/media/pci/intel/ipu6/ipu6-mmu.c
359
l2_pt = mmu_info->l2_pts[l1_idx];
drivers/media/pci/intel/ipu6/ipu6-mmu.c
382
spin_unlock_irqrestore(&mmu_info->lock, flags);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
387
spin_unlock_irqrestore(&mmu_info->lock, flags);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
390
l2_unmap(mmu_info, iova - mapped, paddr - mapped, mapped);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
395
static int __ipu6_mmu_map(struct ipu6_mmu_info *mmu_info, unsigned long iova,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
401
dev_dbg(mmu_info->dev,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
405
return l2_map(mmu_info, iova_start, paddr, size);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
408
static void __ipu6_mmu_unmap(struct ipu6_mmu_info *mmu_info,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
411
l2_unmap(mmu_info, iova, 0, size);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
425
PHYS_PFN(mmu->dmap->mmu_info->aperture_end), 0);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
431
dma = dma_map_page(mmu->dmap->mmu_info->dev, mmu->trash_page, 0,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
433
if (dma_mapping_error(mmu->dmap->mmu_info->dev, dma)) {
drivers/media/pci/intel/ipu6/ipu6-mmu.c
434
dev_err(mmu->dmap->mmu_info->dev, "Failed to map trash page\n");
drivers/media/pci/intel/ipu6/ipu6-mmu.c
447
ret = ipu6_mmu_map(mmu->dmap->mmu_info, PFN_PHYS(iova_addr),
drivers/media/pci/intel/ipu6/ipu6-mmu.c
464
ipu6_mmu_unmap(mmu->dmap->mmu_info, PFN_PHYS(iova->pfn_lo),
drivers/media/pci/intel/ipu6/ipu6-mmu.c
466
dma_unmap_page(mmu->dmap->mmu_info->dev, mmu->pci_trash_page,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
475
struct ipu6_mmu_info *mmu_info;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
479
mmu_info = mmu->dmap->mmu_info;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
488
writel((phys_addr_t)mmu_info->l1_pt_dma,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
549
struct ipu6_mmu_info *mmu_info;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
552
mmu_info = kzalloc_obj(*mmu_info);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
553
if (!mmu_info)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
556
mmu_info->aperture_start = 0;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
557
mmu_info->aperture_end =
drivers/media/pci/intel/ipu6/ipu6-mmu.c
561
mmu_info->pgsize_bitmap = SZ_4K;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
562
mmu_info->dev = &isp->pdev->dev;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
564
ret = get_dummy_page(mmu_info);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
568
ret = alloc_dummy_l2_pt(mmu_info);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
572
mmu_info->l2_pts = vzalloc(ISP_L2PT_PTES * sizeof(*mmu_info->l2_pts));
drivers/media/pci/intel/ipu6/ipu6-mmu.c
573
if (!mmu_info->l2_pts)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
580
mmu_info->l1_pt = alloc_l1_pt(mmu_info);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
581
if (!mmu_info->l1_pt)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
584
spin_lock_init(&mmu_info->lock);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
586
dev_dbg(mmu_info->dev, "domain initialised\n");
drivers/media/pci/intel/ipu6/ipu6-mmu.c
588
return mmu_info;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
591
vfree(mmu_info->l2_pts);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
593
free_dummy_l2_pt(mmu_info);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
595
free_dummy_page(mmu_info);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
597
kfree(mmu_info);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
620
dmap->mmu_info = ipu6_mmu_alloc(isp);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
621
if (!dmap->mmu_info) {
drivers/media/pci/intel/ipu6/ipu6-mmu.c
627
dmap->mmu_info->dmap = dmap;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
636
phys_addr_t ipu6_mmu_iova_to_phys(struct ipu6_mmu_info *mmu_info,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
643
spin_lock_irqsave(&mmu_info->lock, flags);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
644
l2_pt = mmu_info->l2_pts[iova >> ISP_L1PT_SHIFT];
drivers/media/pci/intel/ipu6/ipu6-mmu.c
647
spin_unlock_irqrestore(&mmu_info->lock, flags);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
652
void ipu6_mmu_unmap(struct ipu6_mmu_info *mmu_info, unsigned long iova,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
657
dev_dbg(mmu_info->dev, "unmapping iova 0x%lx size 0x%zx\n", iova, size);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
660
min_pagesz = 1 << __ffs(mmu_info->pgsize_bitmap);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
673
__ipu6_mmu_unmap(mmu_info, iova, size);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
676
int ipu6_mmu_map(struct ipu6_mmu_info *mmu_info, unsigned long iova,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
681
if (mmu_info->pgsize_bitmap == 0UL)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
685
min_pagesz = 1 << __ffs(mmu_info->pgsize_bitmap);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
693
dev_err(mmu_info->dev,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
699
dev_dbg(mmu_info->dev, "map: iova 0x%lx pa %pa size 0x%zx\n",
drivers/media/pci/intel/ipu6/ipu6-mmu.c
702
return __ipu6_mmu_map(mmu_info, iova, paddr, size);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
708
struct ipu6_mmu_info *mmu_info = dmap->mmu_info;
drivers/media/pci/intel/ipu6/ipu6-mmu.c
716
ipu6_mmu_unmap(mmu_info, PFN_PHYS(iova->pfn_lo),
drivers/media/pci/intel/ipu6/ipu6-mmu.c
724
dma_unmap_page(mmu_info->dev, mmu->pci_trash_page,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
731
if (mmu_info->l1_pt[l1_idx] != mmu_info->dummy_l2_pteval) {
drivers/media/pci/intel/ipu6/ipu6-mmu.c
732
dma_unmap_single(mmu_info->dev,
drivers/media/pci/intel/ipu6/ipu6-mmu.c
733
TBL_PHYS_ADDR(mmu_info->l1_pt[l1_idx]),
drivers/media/pci/intel/ipu6/ipu6-mmu.c
735
free_page((unsigned long)mmu_info->l2_pts[l1_idx]);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
739
vfree(mmu_info->l2_pts);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
740
free_dummy_page(mmu_info);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
741
dma_unmap_single(mmu_info->dev, TBL_PHYS_ADDR(mmu_info->l1_pt_dma),
drivers/media/pci/intel/ipu6/ipu6-mmu.c
743
free_page((unsigned long)mmu_info->dummy_l2_pt);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
744
free_page((unsigned long)mmu_info->l1_pt);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
745
kfree(mmu_info);
drivers/media/pci/intel/ipu6/ipu6-mmu.c
91
static void page_table_dump(struct ipu6_mmu_info *mmu_info)
drivers/media/pci/intel/ipu6/ipu6-mmu.c
95
dev_dbg(mmu_info->dev, "begin IOMMU page table dump\n");
drivers/media/pci/intel/ipu6/ipu6-mmu.h
67
int ipu6_mmu_map(struct ipu6_mmu_info *mmu_info, unsigned long iova,
drivers/media/pci/intel/ipu6/ipu6-mmu.h
69
void ipu6_mmu_unmap(struct ipu6_mmu_info *mmu_info, unsigned long iova,
drivers/media/pci/intel/ipu6/ipu6-mmu.h
71
phys_addr_t ipu6_mmu_iova_to_phys(struct ipu6_mmu_info *mmu_info,
drivers/staging/media/ipu7/ipu7-dma.c
175
PHYS_PFN(mmu->dmap->mmu_info->aperture_end), 0);
drivers/staging/media/ipu7/ipu7-dma.c
196
ret = ipu7_mmu_map(mmu->dmap->mmu_info,
drivers/staging/media/ipu7/ipu7-dma.c
225
pci_dma_addr = ipu7_mmu_iova_to_phys(mmu->dmap->mmu_info,
drivers/staging/media/ipu7/ipu7-dma.c
230
ipu7_mmu_unmap(mmu->dmap->mmu_info, ipu7_iova, PAGE_SIZE);
drivers/staging/media/ipu7/ipu7-dma.c
278
pci_dma_addr = ipu7_mmu_iova_to_phys(mmu->dmap->mmu_info,
drivers/staging/media/ipu7/ipu7-dma.c
284
ipu7_mmu_unmap(mmu->dmap->mmu_info, PFN_PHYS(iova->pfn_lo),
drivers/staging/media/ipu7/ipu7-dma.c
357
pci_dma_addr = ipu7_mmu_iova_to_phys(mmu->dmap->mmu_info,
drivers/staging/media/ipu7/ipu7-dma.c
366
ipu7_mmu_unmap(mmu->dmap->mmu_info, PFN_PHYS(iova->pfn_lo),
drivers/staging/media/ipu7/ipu7-dma.c
417
PHYS_PFN(mmu->dmap->mmu_info->aperture_end),
drivers/staging/media/ipu7/ipu7-dma.c
435
ret = ipu7_mmu_map(mmu->dmap->mmu_info, PFN_PHYS(iova_addr),
drivers/staging/media/ipu7/ipu7-dma.h
19
struct ipu7_mmu_info *mmu_info;
drivers/staging/media/ipu7/ipu7-mmu.c
111
static dma_addr_t map_single(struct ipu7_mmu_info *mmu_info, void *ptr)
drivers/staging/media/ipu7/ipu7-mmu.c
115
dma = dma_map_single(mmu_info->dev, ptr, PAGE_SIZE, DMA_BIDIRECTIONAL);
drivers/staging/media/ipu7/ipu7-mmu.c
116
if (dma_mapping_error(mmu_info->dev, dma))
drivers/staging/media/ipu7/ipu7-mmu.c
122
static int get_dummy_page(struct ipu7_mmu_info *mmu_info)
drivers/staging/media/ipu7/ipu7-mmu.c
130
dev_dbg(mmu_info->dev, "dummy_page: get_zeroed_page() == %p\n", pt);
drivers/staging/media/ipu7/ipu7-mmu.c
132
dma = map_single(mmu_info, pt);
drivers/staging/media/ipu7/ipu7-mmu.c
134
dev_err(mmu_info->dev, "Failed to map dummy page\n");
drivers/staging/media/ipu7/ipu7-mmu.c
138
mmu_info->dummy_page = pt;
drivers/staging/media/ipu7/ipu7-mmu.c
139
mmu_info->dummy_page_pteval = dma >> ISP_PAGE_SHIFT;
drivers/staging/media/ipu7/ipu7-mmu.c
148
static void free_dummy_page(struct ipu7_mmu_info *mmu_info)
drivers/staging/media/ipu7/ipu7-mmu.c
150
dma_unmap_single(mmu_info->dev,
drivers/staging/media/ipu7/ipu7-mmu.c
151
TBL_PHYS_ADDR(mmu_info->dummy_page_pteval),
drivers/staging/media/ipu7/ipu7-mmu.c
153
free_page((unsigned long)mmu_info->dummy_page);
drivers/staging/media/ipu7/ipu7-mmu.c
156
static int alloc_dummy_l2_pt(struct ipu7_mmu_info *mmu_info)
drivers/staging/media/ipu7/ipu7-mmu.c
165
dev_dbg(mmu_info->dev, "dummy_l2: get_zeroed_page() = %p\n", pt);
drivers/staging/media/ipu7/ipu7-mmu.c
167
dma = map_single(mmu_info, pt);
drivers/staging/media/ipu7/ipu7-mmu.c
169
dev_err(mmu_info->dev, "Failed to map l2pt page\n");
drivers/staging/media/ipu7/ipu7-mmu.c
174
pt[i] = mmu_info->dummy_page_pteval;
drivers/staging/media/ipu7/ipu7-mmu.c
176
mmu_info->dummy_l2_pt = pt;
drivers/staging/media/ipu7/ipu7-mmu.c
177
mmu_info->dummy_l2_pteval = dma >> ISP_PAGE_SHIFT;
drivers/staging/media/ipu7/ipu7-mmu.c
186
static void free_dummy_l2_pt(struct ipu7_mmu_info *mmu_info)
drivers/staging/media/ipu7/ipu7-mmu.c
188
dma_unmap_single(mmu_info->dev,
drivers/staging/media/ipu7/ipu7-mmu.c
189
TBL_PHYS_ADDR(mmu_info->dummy_l2_pteval),
drivers/staging/media/ipu7/ipu7-mmu.c
191
free_page((unsigned long)mmu_info->dummy_l2_pt);
drivers/staging/media/ipu7/ipu7-mmu.c
194
static u32 *alloc_l1_pt(struct ipu7_mmu_info *mmu_info)
drivers/staging/media/ipu7/ipu7-mmu.c
203
dev_dbg(mmu_info->dev, "alloc_l1: get_zeroed_page() = %p\n", pt);
drivers/staging/media/ipu7/ipu7-mmu.c
206
pt[i] = mmu_info->dummy_l2_pteval;
drivers/staging/media/ipu7/ipu7-mmu.c
208
dma = map_single(mmu_info, pt);
drivers/staging/media/ipu7/ipu7-mmu.c
210
dev_err(mmu_info->dev, "Failed to map l1pt page\n");
drivers/staging/media/ipu7/ipu7-mmu.c
214
mmu_info->l1_pt_dma = dma >> ISP_PADDR_SHIFT;
drivers/staging/media/ipu7/ipu7-mmu.c
215
dev_dbg(mmu_info->dev, "l1 pt %p mapped at %pad\n", pt, &dma);
drivers/staging/media/ipu7/ipu7-mmu.c
224
static u32 *alloc_l2_pt(struct ipu7_mmu_info *mmu_info)
drivers/staging/media/ipu7/ipu7-mmu.c
232
dev_dbg(mmu_info->dev, "alloc_l2: get_zeroed_page() = %p\n", pt);
drivers/staging/media/ipu7/ipu7-mmu.c
235
pt[i] = mmu_info->dummy_page_pteval;
drivers/staging/media/ipu7/ipu7-mmu.c
240
static void l2_unmap(struct ipu7_mmu_info *mmu_info, unsigned long iova,
drivers/staging/media/ipu7/ipu7-mmu.c
249
spin_lock_irqsave(&mmu_info->lock, flags);
drivers/staging/media/ipu7/ipu7-mmu.c
252
dev_dbg(mmu_info->dev,
drivers/staging/media/ipu7/ipu7-mmu.c
256
if (mmu_info->l1_pt[l1_idx] == mmu_info->dummy_l2_pteval) {
drivers/staging/media/ipu7/ipu7-mmu.c
257
dev_err(mmu_info->dev,
drivers/staging/media/ipu7/ipu7-mmu.c
262
l2_pt = mmu_info->l2_pts[l1_idx];
drivers/staging/media/ipu7/ipu7-mmu.c
269
dev_dbg(mmu_info->dev,
drivers/staging/media/ipu7/ipu7-mmu.c
272
l2_pt[l2_idx] = mmu_info->dummy_page_pteval;
drivers/staging/media/ipu7/ipu7-mmu.c
286
spin_unlock_irqrestore(&mmu_info->lock, flags);
drivers/staging/media/ipu7/ipu7-mmu.c
289
static int l2_map(struct ipu7_mmu_info *mmu_info, unsigned long iova,
drivers/staging/media/ipu7/ipu7-mmu.c
292
struct device *dev = mmu_info->dev;
drivers/staging/media/ipu7/ipu7-mmu.c
303
spin_lock_irqsave(&mmu_info->lock, flags);
drivers/staging/media/ipu7/ipu7-mmu.c
312
l1_entry = mmu_info->l1_pt[l1_idx];
drivers/staging/media/ipu7/ipu7-mmu.c
313
if (l1_entry == mmu_info->dummy_l2_pteval) {
drivers/staging/media/ipu7/ipu7-mmu.c
314
l2_virt = mmu_info->l2_pts[l1_idx];
drivers/staging/media/ipu7/ipu7-mmu.c
316
l2_virt = alloc_l2_pt(mmu_info);
drivers/staging/media/ipu7/ipu7-mmu.c
323
dma = map_single(mmu_info, l2_virt);
drivers/staging/media/ipu7/ipu7-mmu.c
335
mmu_info->l1_pt[l1_idx] = l1_entry;
drivers/staging/media/ipu7/ipu7-mmu.c
336
mmu_info->l2_pts[l1_idx] = l2_virt;
drivers/staging/media/ipu7/ipu7-mmu.c
338
clflush_cache_range(&mmu_info->l1_pt[l1_idx],
drivers/staging/media/ipu7/ipu7-mmu.c
339
sizeof(mmu_info->l1_pt[l1_idx]));
drivers/staging/media/ipu7/ipu7-mmu.c
342
l2_pt = mmu_info->l2_pts[l1_idx];
drivers/staging/media/ipu7/ipu7-mmu.c
365
spin_unlock_irqrestore(&mmu_info->lock, flags);
drivers/staging/media/ipu7/ipu7-mmu.c
370
spin_unlock_irqrestore(&mmu_info->lock, flags);
drivers/staging/media/ipu7/ipu7-mmu.c
373
l2_unmap(mmu_info, iova - mapped, paddr - mapped, mapped);
drivers/staging/media/ipu7/ipu7-mmu.c
378
static int __ipu7_mmu_map(struct ipu7_mmu_info *mmu_info, unsigned long iova,
drivers/staging/media/ipu7/ipu7-mmu.c
384
dev_dbg(mmu_info->dev,
drivers/staging/media/ipu7/ipu7-mmu.c
388
return l2_map(mmu_info, iova_start, paddr, size);
drivers/staging/media/ipu7/ipu7-mmu.c
391
static void __ipu7_mmu_unmap(struct ipu7_mmu_info *mmu_info,
drivers/staging/media/ipu7/ipu7-mmu.c
394
l2_unmap(mmu_info, iova, 0, size);
drivers/staging/media/ipu7/ipu7-mmu.c
408
PHYS_PFN(mmu->dmap->mmu_info->aperture_end), 0);
drivers/staging/media/ipu7/ipu7-mmu.c
414
dma = dma_map_page(mmu->dmap->mmu_info->dev, mmu->trash_page, 0,
drivers/staging/media/ipu7/ipu7-mmu.c
416
if (dma_mapping_error(mmu->dmap->mmu_info->dev, dma)) {
drivers/staging/media/ipu7/ipu7-mmu.c
417
dev_err(mmu->dmap->mmu_info->dev, "Failed to map trash page\n");
drivers/staging/media/ipu7/ipu7-mmu.c
430
ret = ipu7_mmu_map(mmu->dmap->mmu_info, PFN_PHYS(iova_addr),
drivers/staging/media/ipu7/ipu7-mmu.c
447
ipu7_mmu_unmap(mmu->dmap->mmu_info, PFN_PHYS(iova->pfn_lo),
drivers/staging/media/ipu7/ipu7-mmu.c
449
dma_unmap_page(mmu->dmap->mmu_info->dev, mmu->pci_trash_page,
drivers/staging/media/ipu7/ipu7-mmu.c
458
struct ipu7_mmu_info *mmu_info;
drivers/staging/media/ipu7/ipu7-mmu.c
461
mmu_info = mmu->dmap->mmu_info;
drivers/staging/media/ipu7/ipu7-mmu.c
467
writel((phys_addr_t)mmu_info->l1_pt_dma,
drivers/staging/media/ipu7/ipu7-mmu.c
584
struct ipu7_mmu_info *mmu_info;
drivers/staging/media/ipu7/ipu7-mmu.c
587
mmu_info = kzalloc_obj(*mmu_info);
drivers/staging/media/ipu7/ipu7-mmu.c
588
if (!mmu_info)
drivers/staging/media/ipu7/ipu7-mmu.c
592
mmu_info->aperture_start = IPU_FW_CODE_REGION_END;
drivers/staging/media/ipu7/ipu7-mmu.c
593
mmu_info->aperture_end =
drivers/staging/media/ipu7/ipu7-mmu.c
596
mmu_info->aperture_start = IPU_FW_CODE_REGION_START;
drivers/staging/media/ipu7/ipu7-mmu.c
597
mmu_info->aperture_end =
drivers/staging/media/ipu7/ipu7-mmu.c
601
mmu_info->pgsize_bitmap = SZ_4K;
drivers/staging/media/ipu7/ipu7-mmu.c
602
mmu_info->dev = &isp->pdev->dev;
drivers/staging/media/ipu7/ipu7-mmu.c
604
ret = get_dummy_page(mmu_info);
drivers/staging/media/ipu7/ipu7-mmu.c
608
ret = alloc_dummy_l2_pt(mmu_info);
drivers/staging/media/ipu7/ipu7-mmu.c
612
mmu_info->l2_pts = vzalloc(ISP_L2PT_PTES * sizeof(*mmu_info->l2_pts));
drivers/staging/media/ipu7/ipu7-mmu.c
613
if (!mmu_info->l2_pts)
drivers/staging/media/ipu7/ipu7-mmu.c
620
mmu_info->l1_pt = alloc_l1_pt(mmu_info);
drivers/staging/media/ipu7/ipu7-mmu.c
621
if (!mmu_info->l1_pt)
drivers/staging/media/ipu7/ipu7-mmu.c
624
spin_lock_init(&mmu_info->lock);
drivers/staging/media/ipu7/ipu7-mmu.c
626
dev_dbg(mmu_info->dev, "domain initialised\n");
drivers/staging/media/ipu7/ipu7-mmu.c
628
return mmu_info;
drivers/staging/media/ipu7/ipu7-mmu.c
631
vfree(mmu_info->l2_pts);
drivers/staging/media/ipu7/ipu7-mmu.c
633
free_dummy_l2_pt(mmu_info);
drivers/staging/media/ipu7/ipu7-mmu.c
635
free_dummy_page(mmu_info);
drivers/staging/media/ipu7/ipu7-mmu.c
637
kfree(mmu_info);
drivers/staging/media/ipu7/ipu7-mmu.c
661
dmap->mmu_info = ipu7_mmu_alloc(isp);
drivers/staging/media/ipu7/ipu7-mmu.c
662
if (!dmap->mmu_info) {
drivers/staging/media/ipu7/ipu7-mmu.c
669
PFN_DOWN(dmap->mmu_info->aperture_start));
drivers/staging/media/ipu7/ipu7-mmu.c
671
dmap->mmu_info->dmap = dmap;
drivers/staging/media/ipu7/ipu7-mmu.c
680
phys_addr_t ipu7_mmu_iova_to_phys(struct ipu7_mmu_info *mmu_info,
drivers/staging/media/ipu7/ipu7-mmu.c
687
spin_lock_irqsave(&mmu_info->lock, flags);
drivers/staging/media/ipu7/ipu7-mmu.c
688
l2_pt = mmu_info->l2_pts[iova >> ISP_L1PT_SHIFT];
drivers/staging/media/ipu7/ipu7-mmu.c
691
spin_unlock_irqrestore(&mmu_info->lock, flags);
drivers/staging/media/ipu7/ipu7-mmu.c
696
void ipu7_mmu_unmap(struct ipu7_mmu_info *mmu_info, unsigned long iova,
drivers/staging/media/ipu7/ipu7-mmu.c
701
dev_dbg(mmu_info->dev, "unmapping iova 0x%lx size 0x%zx\n", iova, size);
drivers/staging/media/ipu7/ipu7-mmu.c
704
min_pagesz = 1U << __ffs(mmu_info->pgsize_bitmap);
drivers/staging/media/ipu7/ipu7-mmu.c
712
dev_err(mmu_info->dev,
drivers/staging/media/ipu7/ipu7-mmu.c
718
__ipu7_mmu_unmap(mmu_info, iova, size);
drivers/staging/media/ipu7/ipu7-mmu.c
721
int ipu7_mmu_map(struct ipu7_mmu_info *mmu_info, unsigned long iova,
drivers/staging/media/ipu7/ipu7-mmu.c
726
if (mmu_info->pgsize_bitmap == 0UL)
drivers/staging/media/ipu7/ipu7-mmu.c
730
min_pagesz = 1U << __ffs(mmu_info->pgsize_bitmap);
drivers/staging/media/ipu7/ipu7-mmu.c
738
dev_err(mmu_info->dev,
drivers/staging/media/ipu7/ipu7-mmu.c
744
dev_dbg(mmu_info->dev, "map: iova 0x%lx pa %pa size 0x%zx\n",
drivers/staging/media/ipu7/ipu7-mmu.c
747
return __ipu7_mmu_map(mmu_info, iova, paddr, size);
drivers/staging/media/ipu7/ipu7-mmu.c
753
struct ipu7_mmu_info *mmu_info = dmap->mmu_info;
drivers/staging/media/ipu7/ipu7-mmu.c
761
ipu7_mmu_unmap(mmu_info, PFN_PHYS(iova->pfn_lo),
drivers/staging/media/ipu7/ipu7-mmu.c
769
dma_unmap_page(mmu_info->dev, mmu->pci_trash_page,
drivers/staging/media/ipu7/ipu7-mmu.c
776
if (mmu_info->l1_pt[l1_idx] != mmu_info->dummy_l2_pteval) {
drivers/staging/media/ipu7/ipu7-mmu.c
777
dma_unmap_single(mmu_info->dev,
drivers/staging/media/ipu7/ipu7-mmu.c
778
TBL_PHYS_ADDR(mmu_info->l1_pt[l1_idx]),
drivers/staging/media/ipu7/ipu7-mmu.c
780
free_page((unsigned long)mmu_info->l2_pts[l1_idx]);
drivers/staging/media/ipu7/ipu7-mmu.c
784
vfree(mmu_info->l2_pts);
drivers/staging/media/ipu7/ipu7-mmu.c
785
free_dummy_page(mmu_info);
drivers/staging/media/ipu7/ipu7-mmu.c
786
dma_unmap_single(mmu_info->dev, TBL_PHYS_ADDR(mmu_info->l1_pt_dma),
drivers/staging/media/ipu7/ipu7-mmu.c
788
free_page((unsigned long)mmu_info->dummy_l2_pt);
drivers/staging/media/ipu7/ipu7-mmu.c
789
free_page((unsigned long)mmu_info->l1_pt);
drivers/staging/media/ipu7/ipu7-mmu.c
790
kfree(mmu_info);
drivers/staging/media/ipu7/ipu7-mmu.h
408
int ipu7_mmu_map(struct ipu7_mmu_info *mmu_info, unsigned long iova,
drivers/staging/media/ipu7/ipu7-mmu.h
410
void ipu7_mmu_unmap(struct ipu7_mmu_info *mmu_info, unsigned long iova,
drivers/staging/media/ipu7/ipu7-mmu.h
412
phys_addr_t ipu7_mmu_iova_to_phys(struct ipu7_mmu_info *mmu_info,