Messages in this thread | | | From | "Yu, Fenghua" <> | Date | Sat, 22 Nov 2008 08:18:02 -0800 | Subject | RE: [PATCH] IA64: fix VT-d dma_mapping_error |
| |
>+int intel_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr) >+{ >+ return !dma_addr; >+}
The implementation of inte_dma_mapping_error is incomplete.
Dma_addr is valid only when it belongs to hwdev's domain. This is all about VT-d isolation fundamental.
+int intel_dma_mapping_error(struct device *hwdev, dma_addr_t dma_addr) +{ + struct pci_dev *pdev = to_pci_dev(hwdev); + struct dmar_domain *domain; + struct iova *iova; + + domain = find_domain(pdev); + + iova = find_iova(&domain->iovad, IOVA_PFN(dma_addr)); + if (!iova) + return -EINVAL; + return 0; +}
| |