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