fb-defio: If FBINFO_VIRTFB is defined, do not set VM_IO flag.
Konrad Rzeszutek Wilk [Thu, 3 Dec 2009 15:31:56 +0000 (10:31 -0500)]
Most users (except sh_mobile_lcdcfb.c) get their framebuffer from
vmalloc. Setting VM_IO is not necessary as the memory obtained
from vmalloc is System RAM type and is not susceptible to PCI memory
constraints.

Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>
Acked-by: Jaya Kumar <jayakumar.lkml@gmail.com>

drivers/video/fb_defio.c
include/linux/fb.h

index 0a7a667..875d019 100644 (file)
@@ -144,7 +144,9 @@ static const struct address_space_operations fb_deferred_io_aops = {
 static int fb_deferred_io_mmap(struct fb_info *info, struct vm_area_struct *vma)
 {
        vma->vm_ops = &fb_deferred_io_vm_ops;
-       vma->vm_flags |= ( VM_IO | VM_RESERVED | VM_DONTEXPAND );
+       vma->vm_flags |= ( VM_RESERVED | VM_DONTEXPAND );
+       if (!(info->flags & FBINFO_VIRTFB))
+               vma->vm_flags |= VM_IO;
        vma->vm_private_data = info;
        return 0;
 }
index f847df9..6e8ebf7 100644 (file)
@@ -768,6 +768,7 @@ struct fb_tile_ops {
         *  takes over; acceleration engine should be in a quiescent state */
 
 /* hints */
+#define FBINFO_VIRTFB          0x0004 /* FB is System RAM, not device. */
 #define FBINFO_PARTIAL_PAN_OK  0x0040 /* otw use pan only for double-buffering */
 #define FBINFO_READS_FAST      0x0080 /* soft-copy faster than rendering */