rpms/kernel/devel kernel.spec, 1.537, 1.538 linux-2.6-firewire-git-pending.patch, 1.22, 1.23

Jarod Wilson (jwilson) fedora-extras-commits at redhat.com
Tue Mar 25 20:43:07 UTC 2008


Author: jwilson

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

Modified Files:
	kernel.spec linux-2.6-firewire-git-pending.patch 
Log Message:
* Tue Mar 25 2008 Jarod Wilson <jwilson at redhat.com>
- Put %{_target_cpu} into kernel uname, and tack it onto assorted
  files and directories. Makes it possible to do parallel installs
  of say both i686 and x86_64 kernels of the same version on x86_64
  x86_64 hardware (#197065).
- Plug DMA memory leak in firewire async receive handler



Index: kernel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/kernel.spec,v
retrieving revision 1.537
retrieving revision 1.538
diff -u -r1.537 -r1.538
--- kernel.spec	25 Mar 2008 18:42:30 -0000	1.537
+++ kernel.spec	25 Mar 2008 20:42:18 -0000	1.538
@@ -135,7 +135,7 @@
 %define xen_target vmlinuz
 %define xen_image vmlinuz
 
-%define KVERREL %{PACKAGE_VERSION}-%{PACKAGE_RELEASE}
+%define KVERREL %{PACKAGE_VERSION}-%{PACKAGE_RELEASE}.%{_target_cpu}
 %define hdrarch %_target_cpu
 
 %if 0%{!?nopatches:1}
@@ -1243,11 +1243,11 @@
     # Pick the right config file for the kernel we're building
     if [ -n "$Flavour" ] ; then
       Config=kernel-%{version}-%{_target_cpu}-$Flavour.config
-      DevelDir=/usr/src/kernels/%{KVERREL}-$Flavour-%{_target_cpu}
-      DevelLink=/usr/src/kernels/%{KVERREL}$Flavour-%{_target_cpu}
+      DevelDir=/usr/src/kernels/%{KVERREL}-$Flavour
+      DevelLink=/usr/src/kernels/%{KVERREL}$Flavour
     else
       Config=kernel-%{version}-%{_target_cpu}.config
-      DevelDir=/usr/src/kernels/%{KVERREL}-%{_target_cpu}
+      DevelDir=/usr/src/kernels/%{KVERREL}
       DevelLink=
     fi
 
@@ -1259,11 +1259,11 @@
       CopyKernel=cp
     fi
 
-    KernelVer=%{version}-%{release}$Flavour
+    KernelVer=%{version}-%{release}.%{_target_cpu}$Flavour
     echo BUILDING A KERNEL FOR $Flavour %{_target_cpu}...
 
     # make sure EXTRAVERSION says what we want it to say
-    perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{?stablerev}-%{release}$Flavour/" Makefile
+    perl -p -i -e "s/^EXTRAVERSION.*/EXTRAVERSION = %{?stablerev}-%{release}.%{_target_cpu}$Flavour/" Makefile
 
     # if pre-rc1 devel kernel, must fix up SUBLEVEL for our versioning scheme
     %if !0%{?rcrev}
@@ -1585,7 +1585,7 @@
 fi\
 if [ "$HARDLINK" != "no" -a -x /usr/sbin/hardlink ]\
 then\
-    (cd /usr/src/kernels/%{KVERREL}-%{?1:%{1}-}%{_target_cpu} &&\
+    (cd /usr/src/kernels/%{KVERREL}%{?1:-%{1}} &&\
      /usr/bin/find . -type f | while read f; do\
        hardlink -c /usr/src/kernels/*.fc*-*/$f $f\
      done)\
@@ -1719,8 +1719,8 @@
 %{?-e:%{-e*}}\
 %{expand:%%files %{?2:%{2}-}devel}\
 %defattr(-,root,root)\
-%verify(not mtime) /usr/src/kernels/%{KVERREL}%{?2:-%{2}}-%{_target_cpu}\
-/usr/src/kernels/%{KVERREL}%{?2}-%{_target_cpu}\
+%verify(not mtime) /usr/src/kernels/%{KVERREL}%{?2:-%{2}}\
+/usr/src/kernels/%{KVERREL}%{?2}\
 %if %{with_debuginfo}\
 %ifnarch noarch\
 %if %{fancy_debuginfo}\
@@ -1734,7 +1734,7 @@
 %{debuginfodir}/%{elf_image_install_path}/*-%{KVERREL}%{?2}.debug\
 %endif\
 %{debuginfodir}/lib/modules/%{KVERREL}%{?2}\
-%{debuginfodir}/usr/src/kernels/%{KVERREL}%{?2:-%{2}}-%{_target_cpu}\
+%{debuginfodir}/usr/src/kernels/%{KVERREL}%{?2:-%{2}}\
 %endif\
 %endif\
 %endif\
@@ -1751,7 +1751,14 @@
 %kernel_variant_files -a /%{image_install_path}/xen*-%{KVERREL} -e /etc/ld.so.conf.d/kernelcap-%{KVERREL}.conf %{with_xen} xen
 
 %changelog
-* Thu Mar 25 2008 John W. Linville <linville at redhat.com>
+* Tue Mar 25 2008 Jarod Wilson <jwilson at redhat.com>
+- Put %%{_target_cpu} into kernel uname, and tack it onto assorted
+  files and directories. Makes it possible to do parallel installs
+  of say both i686 and x86_64 kernels of the same version on x86_64
+  x86_64 hardware (#197065).
+- Plug DMA memory leak in firewire async receive handler
+
+* Tue Mar 25 2008 John W. Linville <linville at redhat.com>
 - wavelan_cs arm fix
 - arlan: fix warning when PROC_FS=n
 - rt2x00: Add id for Corega CG-WLUSB2GPX

linux-2.6-firewire-git-pending.patch:

Index: linux-2.6-firewire-git-pending.patch
===================================================================
RCS file: /cvs/pkgs/rpms/kernel/devel/linux-2.6-firewire-git-pending.patch,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- linux-2.6-firewire-git-pending.patch	24 Mar 2008 17:54:13 -0000	1.22
+++ linux-2.6-firewire-git-pending.patch	25 Mar 2008 20:42:18 -0000	1.23
@@ -784,3 +784,62 @@
 http://arcgraph.de/sr/
 
 
+There's a minor memory leak in firewire-ohci's ar_context_tasklet(), in that
+we're not freeing up some of the memory we use for each ar_buffer, due to a
+moving pointer. The problem has been there for a while, but didn't start
+to be noticed until we were doing a coherent allocation for the ar_buffer --
+meaning we have a smaller pool of memory to work with now, so the problem
+crops up sooner. The manifestation of this comes after doing a bunch of I/O to
+a firewire disk, which eventually stalls, and this starts spewing to the
+console:
+
+PCI-DMA: Out of IOMMU space for 53248 bytes at device 0000:04:09.0
+
+The device there is one of my FireWire controllers trying to do I/O. The host
+is a fairly new rev. opteron.
+
+Just need to make sure we're freeing the correct memory range is pass through
+ar_context_tasklet to fix it. Probably something we ought to sneak into 2.6.25
+if its still doable...
+
+Signed-off-by: Jarod Wilson <jwilson at redhat.com>
+---
+
+ drivers/firewire/fw-ohci.c |    9 +++++----
+ 1 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/firewire/fw-ohci.c b/drivers/firewire/fw-ohci.c
+index 8ff9059..e1d50f7 100644
+--- a/drivers/firewire/fw-ohci.c
++++ b/drivers/firewire/fw-ohci.c
+@@ -579,7 +579,8 @@ static void ar_context_tasklet(unsigned long data)
+ 
+ 	if (d->res_count == 0) {
+ 		size_t size, rest, offset;
+-		dma_addr_t buffer_bus;
++		dma_addr_t start_bus;
++		void *start;
+ 
+ 		/*
+ 		 * This descriptor is finished and we may have a
+@@ -588,9 +589,9 @@ static void ar_context_tasklet(unsigned long data)
+ 		 */
+ 
+ 		offset = offsetof(struct ar_buffer, data);
+-		buffer_bus = le32_to_cpu(ab->descriptor.data_address) - offset;
++		start = buffer = ab;
++		start_bus = le32_to_cpu(ab->descriptor.data_address) - offset;
+ 
+-		buffer = ab;
+ 		ab = ab->next;
+ 		d = &ab->descriptor;
+ 		size = buffer + PAGE_SIZE - ctx->pointer;
+@@ -605,7 +606,7 @@ static void ar_context_tasklet(unsigned long data)
+ 			buffer = handle_ar_packet(ctx, buffer);
+ 
+ 		dma_free_coherent(ohci->card.device, PAGE_SIZE,
+-				  buffer, buffer_bus);
++				  start, start_bus);
+ 		ar_context_add_page(ctx);
+ 	} else {
+ 		buffer = ctx->pointer;




More information about the fedora-extras-commits mailing list