]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Sparc32 iommu patch from DaveM
authorChris Wright <chrisw@sous-sol.org>
Tue, 20 Jun 2006 08:10:35 +0000 (01:10 -0700)
committerChris Wright <chrisw@sous-sol.org>
Tue, 20 Jun 2006 08:10:35 +0000 (01:10 -0700)
queue-2.6.17/series
queue-2.6.17/sparc32-fix-iommu_flush_iotlb-end-address.patch [new file with mode: 0644]

index 739856dfe7eeb901045f97f5229b8ed801471c3e..302f6f430920603130d64c3246f1e5d4e0efea97 100644 (file)
@@ -8,3 +8,4 @@ sctp-reset-rtt_in_progress-for-the-chunk-when-processing-its-sack.patch
 sctp-send-only-1-window-update-sack-per-message.patch
 sctp-fix-persistent-slowdown-in-sctp-when-a-gap-ack-consumes-rx-buffer.patch
 ethtool-fix-ufo-typo.patch
+sparc32-fix-iommu_flush_iotlb-end-address.patch
diff --git a/queue-2.6.17/sparc32-fix-iommu_flush_iotlb-end-address.patch b/queue-2.6.17/sparc32-fix-iommu_flush_iotlb-end-address.patch
new file mode 100644 (file)
index 0000000..42c2885
--- /dev/null
@@ -0,0 +1,33 @@
+From stable-bounces@linux.kernel.org  Tue Jun 20 00:45:05 2006
+Date: Tue, 20 Jun 2006 00:44:27 -0700 (PDT)
+From: David Miller <davem@davemloft.net>
+To: stable@kernel.org
+Cc: 
+Subject: SPARC32: Fix iommu_flush_iotlb end address
+
+Fix the calculation of the end address when flushing iotlb entries to
+ram.  This bug has been a cause of esp dma errors, and it affects
+HyperSPARC systems much worse than SuperSPARC systems.
+
+Signed-off-by: Bob Breuer <breuerr@mc.net>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+
+---
+ arch/sparc/mm/iommu.c |    3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+--- linux-2.6.17.1.orig/arch/sparc/mm/iommu.c
++++ linux-2.6.17.1/arch/sparc/mm/iommu.c
+@@ -144,8 +144,9 @@ static void iommu_flush_iotlb(iopte_t *i
+       unsigned long start;
+       unsigned long end;
+-      start = (unsigned long)iopte & PAGE_MASK;
++      start = (unsigned long)iopte;
+       end = PAGE_ALIGN(start + niopte*sizeof(iopte_t));
++      start &= PAGE_MASK;
+       if (viking_mxcc_present) {
+               while(start < end) {
+                       viking_mxcc_flush_page(start);