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()
881 tlb_offset = (tlb_addr & (IO_TLB_SIZE - 1)) - in swiotlb_bounce()
1084 phys_addr_t tlb_addr; in swiotlb_search_pool_area() local
1087 tlb_addr = slot_addr(tbl_dma_addr, slot_index); in swiotlb_search_pool_area()
1089 if ((tlb_addr & alloc_align_mask) || in swiotlb_search_pool_area()
1090 (orig_addr && (tlb_addr & iotlb_align_mask) != in swiotlb_search_pool_area()
1394 phys_addr_t tlb_addr; in swiotlb_tbl_map_single() local
1444 tlb_addr = slot_addr(pool->start, index) + offset; in swiotlb_tbl_map_single()
1454 swiotlb_bounce(dev, tlb_addr, mapping_size, DMA_TO_DEVICE, pool); in swiotlb_tbl_map_single()
1455 return tlb_addr; in swiotlb_tbl_map_single()
1458 static void swiotlb_release_slots(struct device *dev, phys_addr_t tlb_addr, in swiotlb_release_slots() argument
1462 unsigned int offset = swiotlb_align_offset(dev, 0, tlb_addr); in swiotlb_release_slots()
1467 index = (tlb_addr - offset - mem->start) >> IO_TLB_SHIFT; in swiotlb_release_slots()
1525 static bool swiotlb_del_transient(struct device *dev, phys_addr_t tlb_addr, in swiotlb_del_transient() argument
1540 phys_addr_t tlb_addr, struct io_tlb_pool *pool) in swiotlb_del_transient() argument
1550 void __swiotlb_tbl_unmap_single(struct device *dev, phys_addr_t tlb_addr, in __swiotlb_tbl_unmap_single() argument
1559 swiotlb_bounce(dev, tlb_addr, mapping_size, in __swiotlb_tbl_unmap_single()
1562 if (swiotlb_del_transient(dev, tlb_addr, pool)) in __swiotlb_tbl_unmap_single()
1564 swiotlb_release_slots(dev, tlb_addr, pool); in __swiotlb_tbl_unmap_single()
1567 void __swiotlb_sync_single_for_device(struct device *dev, phys_addr_t tlb_addr, in __swiotlb_sync_single_for_device() argument
1572 swiotlb_bounce(dev, tlb_addr, size, DMA_TO_DEVICE, pool); in __swiotlb_sync_single_for_device()
1577 void __swiotlb_sync_single_for_cpu(struct device *dev, phys_addr_t tlb_addr, in __swiotlb_sync_single_for_cpu() argument
1582 swiotlb_bounce(dev, tlb_addr, size, DMA_FROM_DEVICE, pool); in __swiotlb_sync_single_for_cpu()
1770 phys_addr_t tlb_addr; in swiotlb_alloc() local
1782 tlb_addr = slot_addr(pool->start, index); in swiotlb_alloc()
1783 if (unlikely(!PAGE_ALIGNED(tlb_addr))) { in swiotlb_alloc()
1785 &tlb_addr); in swiotlb_alloc()
1786 swiotlb_release_slots(dev, tlb_addr, pool); in swiotlb_alloc()
1790 return pfn_to_page(PFN_DOWN(tlb_addr)); in swiotlb_alloc()
1795 phys_addr_t tlb_addr = page_to_phys(page); in swiotlb_free() local
1798 pool = swiotlb_find_pool(dev, tlb_addr); in swiotlb_free()
1802 swiotlb_release_slots(dev, tlb_addr, pool); in swiotlb_free()