[was Re: Linux 2.6.14 ] Revert "x86-64: Avoid unnecessary double bouncing for swiotlb"

From: Ravikiran G Thirumalai
Date: Fri Oct 28 2005 - 17:58:19 EST


On Thu, Oct 27, 2005 at 05:28:50PM -0700, Linus Torvalds wrote:
>
> Revert "x86-64: Avoid unnecessary double bouncing for swiotlb"

(http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=79b95a454bb5c1d9b7287d1016a70885ba3f346c)

Well, Andi's patch here wasn't just a small optimization as the changelog
suggests. It helped EM64T boxes a great deal. Just to make sure, I
reran 2.6.14 with the attached patch and got about 45% better performance
with iozone Initial write. This was on a 2 cpu 4 thread SMP Xeon with 8G ram,
with 2 processes performing io to 4G files on a IDE drive.
Maybe it wouldn't have caused breakage on some AMD boxes if the following
additional check for swiotlb was added. Can this go into 2.6.15 please?

Thanks,
Kiran

Originally by Andi Kleen. Patch prevents the block layer from bouncing if
a hard or soft iommu is present.

Signed-off-by: Ravikiran Thirumalai <kiran@xxxxxxxxxxxx>

Index: linux-2.6.14/include/asm-x86_64/pci.h
===================================================================
--- linux-2.6.14.orig/include/asm-x86_64/pci.h 2005-10-27 17:02:08.000000000 -0700
+++ linux-2.6.14/include/asm-x86_64/pci.h 2005-10-27 21:42:41.000000000 -0700
@@ -51,9 +51,9 @@
* this boolean for bounce buffer decisions
*
* On AMD64 it mostly equals, but we set it to zero to tell some subsystems
- * that an IOMMU is available.
+ * that a hard or soft IOMMU is available.
*/
-#define PCI_DMA_BUS_IS_PHYS (no_iommu ? 1 : 0)
+#define PCI_DMA_BUS_IS_PHYS ((no_iommu && !swiotlb) ? 1 : 0)

/*
* x86-64 always supports DAC, but sometimes it is useful to force
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/