• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/pci/

Lines Matching defs:iova

36 #include <linux/iova.h>
327 struct iova_domain iovad; /* iova's that belong to this domain */
363 struct iova *iova[HIGH_WATER_MARK];
469 struct iova *alloc_iova_mem(void)
474 void free_iova_mem(struct iova *iova)
476 kmem_cache_free(iommu_iova_cache, iova);
771 /* we don't need lock here; nobody else touches the iova range */
805 /* We don't need lock here; nobody else touches the iova range */
1297 struct iova *iova;
1306 iova = reserve_iova(&reserved_iova_list, IOVA_PFN(IOAPIC_RANGE_START),
1308 if (!iova)
1319 iova = reserve_iova(&reserved_iova_list,
1322 if (!iova)
1323 printk(KERN_ERR "Reserve iova failed\n");
1676 * touches the iova range
1921 printk(KERN_ERR "IOMMU: reserve iova failed\n");
2423 static struct iova *intel_alloc_iova(struct device *dev,
2428 struct iova *iova = NULL;
2439 iova = alloc_iova(&domain->iovad, nrpages,
2441 if (iova)
2442 return iova;
2444 iova = alloc_iova(&domain->iovad, nrpages, IOVA_PFN(dma_mask), 1);
2445 if (unlikely(!iova)) {
2446 printk(KERN_ERR "Allocating %ld-page iova for %s failed",
2451 return iova;
2557 struct iova *iova;
2575 iova = intel_alloc_iova(hwdev, domain, dma_to_mm_pfn(size),
2577 if (!iova)
2595 ret = domain_pfn_mapping(domain, mm_to_dma_pfn(iova->pfn_lo),
2602 iommu_flush_iotlb_psi(iommu, domain->id, mm_to_dma_pfn(iova->pfn_lo), size, 1);
2606 start_paddr = (phys_addr_t)iova->pfn_lo << PAGE_SHIFT;
2611 if (iova)
2612 __free_iova(&domain->iovad, iova);
2648 struct iova *iova = deferred_flush[i].iova[j];
2654 iova->pfn_lo, iova->pfn_hi - iova->pfn_lo + 1, 0);
2656 mask = ilog2(mm_to_dma_pfn(iova->pfn_hi - iova->pfn_lo + 1));
2658 (uint64_t)iova->pfn_lo << PAGE_SHIFT, mask);
2660 __free_iova(&deferred_flush[i].domain[j]->iovad, iova);
2677 static void add_unmap(struct dmar_domain *dom, struct iova *iova)
2692 deferred_flush[iommu_id].iova[next] = iova;
2710 struct iova *iova;
2721 iova = find_iova(&domain->iovad, IOVA_PFN(dev_addr));
2722 if (WARN_ONCE(!iova, "Driver unmaps unmatched page at PFN %llx\n",
2726 start_pfn = mm_to_dma_pfn(iova->pfn_lo);
2727 last_pfn = mm_to_dma_pfn(iova->pfn_hi + 1) - 1;
2741 /* free iova */
2742 __free_iova(&domain->iovad, iova);
2744 add_unmap(domain, iova);
2803 struct iova *iova;
2814 iova = find_iova(&domain->iovad, IOVA_PFN(sglist[0].dma_address));
2815 if (WARN_ONCE(!iova, "Driver unmaps unmatched sglist at PFN %llx\n",
2819 start_pfn = mm_to_dma_pfn(iova->pfn_lo);
2820 last_pfn = mm_to_dma_pfn(iova->pfn_hi + 1) - 1;
2831 /* free iova */
2832 __free_iova(&domain->iovad, iova);
2834 add_unmap(domain, iova);
2864 struct iova *iova = NULL;
2883 iova = intel_alloc_iova(hwdev, domain, dma_to_mm_pfn(size),
2885 if (!iova) {
2900 start_vpfn = mm_to_dma_pfn(iova->pfn_lo);
2910 /* free iova */
2911 __free_iova(&domain->iovad, iova);
2979 sizeof(struct iova),
2984 printk(KERN_ERR "Couldn't create iova cache\n");
3239 * when mapping the device to iova.
3642 unsigned long iova, phys_addr_t hpa,
3659 max_addr = iova + size;
3676 ret = domain_pfn_mapping(dmar_domain, iova >> VTD_PAGE_SHIFT,
3682 unsigned long iova, int gfp_order)
3687 dma_pte_clear_range(dmar_domain, iova >> VTD_PAGE_SHIFT,
3688 (iova + size - 1) >> VTD_PAGE_SHIFT);
3690 if (dmar_domain->max_addr == iova + size)
3691 dmar_domain->max_addr = iova;
3697 unsigned long iova)
3703 pte = pfn_to_dma_pte(dmar_domain, iova >> VTD_PAGE_SHIFT);