]> nv-tegra.nvidia Code Review - linux-2.6.git/blobdiff - arch/x86/kernel/pci-dma.c
Merge branch 'core-iommu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6.git] / arch / x86 / kernel / pci-dma.c
index fa80f60e9607db49e4ed1b3266869d961828afe9..d71c8655905b4c4d8e2dbc3a729a4224d44b18ab 100644 (file)
@@ -33,7 +33,14 @@ int no_iommu __read_mostly;
 /* Set this to 1 if there is a HW IOMMU in the system */
 int iommu_detected __read_mostly = 0;
 
-int iommu_pass_through;
+/*
+ * This variable becomes 1 if iommu=pt is passed on the kernel command line.
+ * If this variable is 1, IOMMU implementations do no DMA ranslation for
+ * devices and allow every device to access to whole physical memory. This is
+ * useful if a user want to use an IOMMU only for KVM device assignment to
+ * guests and not for driver dma translation.
+ */
+int iommu_pass_through __read_mostly;
 
 dma_addr_t bad_dma_address __read_mostly = 0;
 EXPORT_SYMBOL(bad_dma_address);
@@ -153,7 +160,7 @@ again:
                return NULL;
 
        addr = page_to_phys(page);
-       if (!is_buffer_dma_capable(dma_mask, addr, size)) {
+       if (addr + size > dma_mask) {
                __free_pages(page, get_order(size));
 
                if (dma_mask < DMA_BIT_MASK(32) && !(flag & GFP_DMA)) {