2003-06-27 15:48:28

by Alex Williamson

[permalink] [raw]
Subject: [PATCH] Disable sba_iommu bypass to be compatible with bio-level block merging

--- linux-2.5.72-orig/include/asm-ia64/io.h 2003-06-20 14:40:35.000000000 -0600
+++ linux-2.5.72/include/asm-ia64/io.h 2003-06-27 09:12:44.000000000 -0600
@@ -424,6 +424,6 @@
* which is precisely what we want.
*/
extern unsigned long ia64_max_iommu_merge_mask;
-#define BIO_VMERGE_BOUNDARY (0UL)//(ia64_max_iommu_merge_mask + 1)
+#define BIO_VMERGE_BOUNDARY (ia64_max_iommu_merge_mask + 1)

#endif /* _ASM_IA64_IO_H */
--- linux-2.5.72-orig/arch/ia64/hp/common/sba_iommu.c 2003-06-20 14:40:31.000000000 -0600
+++ linux-2.5.72/arch/ia64/hp/common/sba_iommu.c 2003-06-27 09:09:50.000000000 -0600
@@ -47,8 +47,11 @@
/*
** This option allows cards capable of 64bit DMA to bypass the IOMMU. If
** not defined, all DMA will be 32bit and go through the TLB.
+** The bio merge code currently expects that if we tweak that vmerge
+** boundary that we will alway coalesce blocks on that boundary. Enabling
+** this optimization is therefore incompatible with tuning the boundary.
*/
-#define ALLOW_IOV_BYPASS
+#undef ALLOW_IOV_BYPASS

/*
** If a device prefetches beyond the end of a valid pdir entry, it will cause


Attachments:
sba_iommu-bypass-disable.diff (1.10 kB)