[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <A6AD88C3F2289247BE726C37303E1EB88EAB57E1@orsmsx505.amr.corp.intel.com>
Date: Sat, 22 Nov 2008 08:18:02 -0800
From: "Yu, Fenghua" <fenghua.yu@...el.com>
To: 'FUJITA Tomonori' <fujita.tomonori@....ntt.co.jp>,
"Luck, Tony" <tony.luck@...el.com>,
"'dwmw2@...radead.org'" <dwmw2@...radead.org>
CC: "'linux-ia64@...r.kernel.org'" <linux-ia64@...r.kernel.org>,
"'linux-kernel@...r.kernel.org'" <linux-kernel@...r.kernel.org>,
"'mingo@...e.hu'" <mingo@...e.hu>
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;
+}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists