Lines Matching refs:tlb_addr
858 static void swiotlb_bounce(struct device *dev, phys_addr_t tlb_addr, size_t size, in swiotlb_bounce() argument
861 int index = (tlb_addr - mem->start) >> IO_TLB_SHIFT; in swiotlb_bounce()
865 unsigned char *vaddr = mem->vaddr + tlb_addr - mem->start; in swiotlb_bounce()
884 tlb_offset = (tlb_addr & (IO_TLB_SIZE - 1)) - in swiotlb_bounce()
1087 phys_addr_t tlb_addr; in swiotlb_search_pool_area() local
1090 tlb_addr = slot_addr(tbl_dma_addr, slot_index); in swiotlb_search_pool_area()
1092 if ((tlb_addr & alloc_align_mask) || in swiotlb_search_pool_area()
1093 (orig_addr && (tlb_addr & iotlb_align_mask) != in swiotlb_search_pool_area()
1397 phys_addr_t tlb_addr; in swiotlb_tbl_map_single() local
1447 tlb_addr = slot_addr(pool->start, index) + offset; in swiotlb_tbl_map_single()
1457 swiotlb_bounce(dev, tlb_addr, mapping_size, DMA_TO_DEVICE, pool); in swiotlb_tbl_map_single()
1458 return tlb_addr; in swiotlb_tbl_map_single()
1461 static void swiotlb_release_slots(struct device *dev, phys_addr_t tlb_addr, in swiotlb_release_slots() argument
1465 unsigned int offset = swiotlb_align_offset(dev, 0, tlb_addr); in swiotlb_release_slots()
1470 index = (tlb_addr - offset - mem->start) >> IO_TLB_SHIFT; in swiotlb_release_slots()
1528 static bool swiotlb_del_transient(struct device *dev, phys_addr_t tlb_addr, in swiotlb_del_transient() argument
1543 phys_addr_t tlb_addr, struct io_tlb_pool *pool) in swiotlb_del_transient() argument
1553 void __swiotlb_tbl_unmap_single(struct device *dev, phys_addr_t tlb_addr, in __swiotlb_tbl_unmap_single() argument
1562 swiotlb_bounce(dev, tlb_addr, mapping_size, in __swiotlb_tbl_unmap_single()
1565 if (swiotlb_del_transient(dev, tlb_addr, pool)) in __swiotlb_tbl_unmap_single()
1567 swiotlb_release_slots(dev, tlb_addr, pool); in __swiotlb_tbl_unmap_single()
1570 void __swiotlb_sync_single_for_device(struct device *dev, phys_addr_t tlb_addr, in __swiotlb_sync_single_for_device() argument
1575 swiotlb_bounce(dev, tlb_addr, size, DMA_TO_DEVICE, pool); in __swiotlb_sync_single_for_device()
1580 void __swiotlb_sync_single_for_cpu(struct device *dev, phys_addr_t tlb_addr, in __swiotlb_sync_single_for_cpu() argument
1585 swiotlb_bounce(dev, tlb_addr, size, DMA_FROM_DEVICE, pool); in __swiotlb_sync_single_for_cpu()
1775 phys_addr_t tlb_addr; in swiotlb_alloc() local
1787 tlb_addr = slot_addr(pool->start, index); in swiotlb_alloc()
1788 if (unlikely(!PAGE_ALIGNED(tlb_addr))) { in swiotlb_alloc()
1790 &tlb_addr); in swiotlb_alloc()
1791 swiotlb_release_slots(dev, tlb_addr, pool); in swiotlb_alloc()
1795 return pfn_to_page(PFN_DOWN(tlb_addr)); in swiotlb_alloc()
1800 phys_addr_t tlb_addr = page_to_phys(page); in swiotlb_free() local
1803 pool = swiotlb_find_pool(dev, tlb_addr); in swiotlb_free()
1807 swiotlb_release_slots(dev, tlb_addr, pool); in swiotlb_free()