rpms/kernel-xen-2.6/devel linux-2.6-xen-swiotlb-bidir.ptach, NONE, 1.1.2.1 kernel-xen.spec, 1.60, 1.60.2.1

Eduardo Habkost (ehabkost) fedora-extras-commits at redhat.com
Thu Sep 27 14:09:21 UTC 2007


Author: ehabkost

Update of /cvs/pkgs/rpms/kernel-xen-2.6/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv1919

Modified Files:
      Tag: private-ehabkost-fw-ohci-test-branch
	kernel-xen.spec 
Added Files:
      Tag: private-ehabkost-fw-ohci-test-branch
	linux-2.6-xen-swiotlb-bidir.ptach 
Log Message:
Experimental fix to bz#240471




--- NEW FILE linux-2.6-xen-swiotlb-bidir.ptach ---
# HG changeset patch
# User Eduardo Habkost <ehabkost at redhat.com>
# Date 1190901132 10800
# Node ID 724e42a60ed5d891e20b9943ac3a09298349ab5e
# Parent  4b1b115de5debf988f267a1cd1e566a750b391a2
swiotlb: Accept DMA_BIDIRECTIONAL on sync functions

Make swiotlb_sync_{single,sg}_for_{device,cpu}() accept DMA_BIDIRECTIONAL.

Pass DMA_TO_DEVICE or DMA_FROM_DEVICE direction to sync_single() depending
if for_device or for_cpu functions were called.

This should make fw-ohci module work under Xen, as it uses
dma_sync_single_for_device() with dir==DMA_BIDIRECTIONAL.

diff -r 4b1b115de5de -r 724e42a60ed5 arch/i386/kernel/swiotlb.c
--- a/arch/i386/kernel/swiotlb.c	Tue Jun 19 19:16:04 2007 +0200
+++ b/arch/i386/kernel/swiotlb.c	Thu Sep 27 10:52:12 2007 -0300
@@ -529,18 +529,18 @@ swiotlb_sync_single_for_cpu(struct devic
 swiotlb_sync_single_for_cpu(struct device *hwdev, dma_addr_t dev_addr,
 			    size_t size, int dir)
 {
-	BUG_ON(dir == DMA_NONE);
+	BUG_ON((dir != DMA_FROM_DEVICE) || (dir != DMA_BIDIRECTIONAL));
 	if (in_swiotlb_aperture(dev_addr))
-		sync_single(hwdev, bus_to_virt(dev_addr), size, dir);
+		sync_single(hwdev, bus_to_virt(dev_addr), size, DMA_FROM_DEVICE);
 }
 
 void
 swiotlb_sync_single_for_device(struct device *hwdev, dma_addr_t dev_addr,
 			       size_t size, int dir)
 {
-	BUG_ON(dir == DMA_NONE);
+	BUG_ON((dir != DMA_TO_DEVICE) || (dir != DMA_BIDIRECTIONAL));
 	if (in_swiotlb_aperture(dev_addr))
-		sync_single(hwdev, bus_to_virt(dev_addr), size, dir);
+		sync_single(hwdev, bus_to_virt(dev_addr), size, DMA_TO_DEVICE);
 }
 
 /*
@@ -624,13 +624,13 @@ swiotlb_sync_sg_for_cpu(struct device *h
 {
 	int i;
 
-	BUG_ON(dir == DMA_NONE);
+	BUG_ON((dir != DMA_FROM_DEVICE) || (dir != DMA_BIDIRECTIONAL));
 
 	for (i = 0; i < nelems; i++, sg++)
 		if (sg->dma_address != SG_ENT_PHYS_ADDRESS(sg))
 			sync_single(hwdev,
 				    (void *)bus_to_virt(sg->dma_address),
-				    sg->dma_length, dir);
+				    sg->dma_length, DMA_FROM_DEVICE);
 }
 
 void
@@ -640,12 +640,13 @@ swiotlb_sync_sg_for_device(struct device
 	int i;
 
 	BUG_ON(dir == DMA_NONE);
+	BUG_ON((dir != DMA_TO_DEVICE) || (dir != DMA_BIDIRECTIONAL));
 
 	for (i = 0; i < nelems; i++, sg++)
 		if (sg->dma_address != SG_ENT_PHYS_ADDRESS(sg))
 			sync_single(hwdev,
 				    (void *)bus_to_virt(sg->dma_address),
-				    sg->dma_length, dir);
+				    sg->dma_length, DMA_TO_DEVICE);
 }
 
 #ifdef CONFIG_HIGHMEM


Index: kernel-xen.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel-xen-2.6/devel/kernel-xen.spec,v
retrieving revision 1.60
retrieving revision 1.60.2.1
diff -u -r1.60 -r1.60.2.1
--- kernel-xen.spec	26 Sep 2007 19:21:01 -0000	1.60
+++ kernel-xen.spec	27 Sep 2007 14:08:49 -0000	1.60.2.1
@@ -470,6 +470,9 @@
 Patch963: linux-2.6-xen-sleazy-fpu-i386.patch
 Patch964: linux-2.6-xen-sleazy-fpu-x86_64.patch
 
+# Support DMA_BIDIRECTIONAL on swiotlb (bug #240471)
+Patch965: linux-2.6-xen-swiotlb-bidir.ptach
+
 #
 # Patches 1000 to 5000 are reserved for bugfixes to drivers and filesystems
 #
@@ -959,6 +962,7 @@
 %patch962 -p1
 %patch963 -p1
 %patch964 -p1
+%patch965 -p1
 %endif
 
 
@@ -2362,6 +2366,9 @@
 #  - tux.
 
 %changelog
+* Thu Sep 27 2007 Eduardo Habkost <ehabkost at redhat.com>
+- Experimental patch to fix fw-ohci under Xen (bug #240471)
+
 * Wed Sep 26 2007 Eduardo Habkost <ehabkost at redhat.com>
 - Disable Firewire on i686. It is not supported by the current
   Xen swiotlb implementation (bug #307461)




More information about the fedora-extras-commits mailing list