[kernel] r12132 - in dists/sid/linux-2.6/debian: . patches/bugfix/all patches/series

Ian Campbell ijc-guest at alioth.debian.org
Fri Aug 22 18:20:03 UTC 2008


Author: ijc-guest
Date: Fri Aug 22 18:20:01 2008
New Revision: 12132

Log:
Import upstream fix to fb-defio driver to fix Xen framebuffer.

commit d847471d063663b9f36927d265c66a270c0cfaab
Author: Ian Campbell <ijc at hellion.org.uk>
Date:   Wed Aug 20 14:09:23 2008 -0700

    fbdefio: add set_page_dirty handler to deferred IO FB

Added:
   dists/sid/linux-2.6/debian/patches/bugfix/all/fbdefio-add-set_page_dirty-handler-to-deferred-io-fb.patch
Modified:
   dists/sid/linux-2.6/debian/changelog
   dists/sid/linux-2.6/debian/patches/series/4

Modified: dists/sid/linux-2.6/debian/changelog
==============================================================================
--- dists/sid/linux-2.6/debian/changelog	(original)
+++ dists/sid/linux-2.6/debian/changelog	Fri Aug 22 18:20:01 2008
@@ -81,6 +81,9 @@
   * delay calls to sched_clock() until after sched_clock_init() to prevent
     inaccurate printk timings on ia64 and presumably other architectures
 
+  [ Ian Campbell ]
+  * [xen] import upstream fix to fb-defio driver used by Xen framebuffer.
+
  -- dann frazier <dannf at debian.org>  Wed, 20 Aug 2008 16:58:30 -0600
 
 linux-2.6 (2.6.26-3) unstable; urgency=low

Added: dists/sid/linux-2.6/debian/patches/bugfix/all/fbdefio-add-set_page_dirty-handler-to-deferred-io-fb.patch
==============================================================================
--- (empty file)
+++ dists/sid/linux-2.6/debian/patches/bugfix/all/fbdefio-add-set_page_dirty-handler-to-deferred-io-fb.patch	Fri Aug 22 18:20:01 2008
@@ -0,0 +1,103 @@
+commit d847471d063663b9f36927d265c66a270c0cfaab
+Author: Ian Campbell <ijc at hellion.org.uk>
+Date:   Wed Aug 20 14:09:23 2008 -0700
+
+    fbdefio: add set_page_dirty handler to deferred IO FB
+    
+    Fixes kernel BUG at lib/radix-tree.c:473.
+    
+    Previously the handler was incidentally provided by tmpfs but this was
+    removed with:
+    
+      commit 14fcc23fdc78e9d32372553ccf21758a9bd56fa1
+      Author: Hugh Dickins <hugh at veritas.com>
+      Date:   Mon Jul 28 15:46:19 2008 -0700
+    
+        tmpfs: fix kernel BUG in shmem_delete_inode
+    
+    relying on this behaviour was incorrect in any case and the BUG also
+    appeared when the device node was on an ext3 filesystem.
+    
+    v2: override a_ops at open() time rather than mmap() time to minimise
+    races per AKPM's concerns.
+    
+    Signed-off-by: Ian Campbell <ijc at hellion.org.uk>
+    Cc: Jaya Kumar <jayakumar.lkml at gmail.com>
+    Cc: Nick Piggin <npiggin at suse.de>
+    Cc: Peter Zijlstra <a.p.zijlstra at chello.nl>
+    Cc: Hugh Dickins <hugh at veritas.com>
+    Cc: Johannes Weiner <hannes at saeurebad.de>
+    Cc: Jeremy Fitzhardinge <jeremy at goop.org>
+    Cc: Kel Modderman <kel at otaku42.de>
+    Cc: Markus Armbruster <armbru at redhat.com>
+    Cc: Krzysztof Helt <krzysztof.h1 at poczta.fm>
+    Cc: <stable at kernel.org> [14fcc23fd is in 2.6.25.14 and 2.6.26.1]
+    Signed-off-by: Andrew Morton <akpm at linux-foundation.org>
+    Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+
+diff --git a/drivers/video/fb_defio.c b/drivers/video/fb_defio.c
+index 59df132..4835bdc 100644
+--- a/drivers/video/fb_defio.c
++++ b/drivers/video/fb_defio.c
+@@ -114,6 +114,17 @@ static struct vm_operations_struct fb_deferred_io_vm_ops = {
+ 	.page_mkwrite	= fb_deferred_io_mkwrite,
+ };
+ 
++static int fb_deferred_io_set_page_dirty(struct page *page)
++{
++	if (!PageDirty(page))
++		SetPageDirty(page);
++	return 0;
++}
++
++static const struct address_space_operations fb_deferred_io_aops = {
++	.set_page_dirty = fb_deferred_io_set_page_dirty,
++};
++
+ static int fb_deferred_io_mmap(struct fb_info *info, struct vm_area_struct *vma)
+ {
+ 	vma->vm_ops = &fb_deferred_io_vm_ops;
+@@ -163,6 +174,14 @@ void fb_deferred_io_init(struct fb_info *info)
+ }
+ EXPORT_SYMBOL_GPL(fb_deferred_io_init);
+ 
++void fb_deferred_io_open(struct fb_info *info,
++			 struct inode *inode,
++			 struct file *file)
++{
++	file->f_mapping->a_ops = &fb_deferred_io_aops;
++}
++EXPORT_SYMBOL_GPL(fb_deferred_io_open);
++
+ void fb_deferred_io_cleanup(struct fb_info *info)
+ {
+ 	void *screen_base = (void __force *) info->screen_base;
+diff --git a/drivers/video/fbmem.c b/drivers/video/fbmem.c
+index 6b48780..98843c2 100644
+--- a/drivers/video/fbmem.c
++++ b/drivers/video/fbmem.c
+@@ -1340,6 +1340,10 @@ fb_open(struct inode *inode, struct file *file)
+ 		if (res)
+ 			module_put(info->fbops->owner);
+ 	}
++#ifdef CONFIG_FB_DEFERRED_IO
++	if (info->fbdefio)
++		fb_deferred_io_open(info, inode, file);
++#endif
+ 	return res;
+ }
+ 
+diff --git a/include/linux/fb.h b/include/linux/fb.h
+index 3b8870e..531ccd5 100644
+--- a/include/linux/fb.h
++++ b/include/linux/fb.h
+@@ -976,6 +976,9 @@ static inline void __fb_pad_aligned_buffer(u8 *dst, u32 d_pitch,
+ 
+ /* drivers/video/fb_defio.c */
+ extern void fb_deferred_io_init(struct fb_info *info);
++extern void fb_deferred_io_open(struct fb_info *info,
++				struct inode *inode,
++				struct file *file);
+ extern void fb_deferred_io_cleanup(struct fb_info *info);
+ extern int fb_deferred_io_fsync(struct file *file, struct dentry *dentry,
+ 				int datasync);

Modified: dists/sid/linux-2.6/debian/patches/series/4
==============================================================================
--- dists/sid/linux-2.6/debian/patches/series/4	(original)
+++ dists/sid/linux-2.6/debian/patches/series/4	Fri Aug 22 18:20:01 2008
@@ -3,3 +3,4 @@
 + bugfix/all/stable/2.6.26.3.patch
 + bugfix/delay-sched_clock.patch
 + bugfix/ia64-cpu0-early-access-per-cpu-vars.patch
++ bugfix/all/fbdefio-add-set_page_dirty-handler-to-deferred-io-fb.patch



More information about the Kernel-svn-changes mailing list