Lines Matching +full:dma +full:- +full:safe +full:- +full:map
26 #include <linux/io-mapping.h>
45 set_pte_at(r->mm, addr, pte, pte_mkspecial(pfn_pte(r->pfn, r->prot))); in remap_pfn()
46 r->pfn++; in remap_pfn()
51 #define use_dma(io) ((io) != -1)
55 if (use_dma(r->iobase)) in sgt_pfn()
56 return (r->sgt.dma + r->sgt.curr + r->iobase) >> PAGE_SHIFT; in sgt_pfn()
58 return r->sgt.pfn + (r->sgt.curr >> PAGE_SHIFT); in sgt_pfn()
65 if (GEM_WARN_ON(!r->sgt.pfn)) in remap_sg()
66 return -EINVAL; in remap_sg()
69 set_pte_at(r->mm, addr, pte, in remap_sg()
70 pte_mkspecial(pfn_pte(sgt_pfn(r), r->prot))); in remap_sg()
71 r->pfn++; /* track insertions in case we need to unwind later */ in remap_sg()
73 r->sgt.curr += PAGE_SIZE; in remap_sg()
74 if (r->sgt.curr >= r->sgt.max) in remap_sg()
75 r->sgt = __sgt_iter(__sg_next(r->sgt.sgp), use_dma(r->iobase)); in remap_sg()
81 * remap_io_mapping - remap an IO mapping to userspace
82 * @vma: user vma to map to
85 * @size: size of map area
88 * Note: this is only safe if the mm semaphore is held when called.
98 GEM_BUG_ON((vma->vm_flags & EXPECTED_FLAGS) != EXPECTED_FLAGS); in remap_io_mapping()
100 /* We rely on prevalidation of the io-mapping to skip track_pfn(). */ in remap_io_mapping()
101 r.mm = vma->vm_mm; in remap_io_mapping()
103 r.prot = __pgprot((pgprot_val(iomap->prot) & _PAGE_CACHE_MASK) | in remap_io_mapping()
104 (pgprot_val(vma->vm_page_prot) & ~_PAGE_CACHE_MASK)); in remap_io_mapping()
108 zap_vma_ptes(vma, addr, (r.pfn - pfn) << PAGE_SHIFT); in remap_io_mapping()
116 * remap_io_sg - remap an IO mapping to userspace
117 * @vma: user vma to map to
119 * @size: size of map area
121 * @iobase: Use stored dma address offset by this address or pfn if -1
123 * Note: this is only safe if the mm semaphore is held when called.
130 .mm = vma->vm_mm, in remap_io_sg()
131 .prot = vma->vm_page_prot, in remap_io_sg()
137 /* We rely on prevalidation of the io-mapping to skip track_pfn(). */ in remap_io_sg()
138 GEM_BUG_ON((vma->vm_flags & EXPECTED_FLAGS) != EXPECTED_FLAGS); in remap_io_sg()