01 Apr, 2009

1 commit

  • Change the page_mkwrite prototype to take a struct vm_fault, and return
    VM_FAULT_xxx flags. There should be no functional change.

    This makes it possible to return much more detailed error information to
    the VM (and also can provide more information eg. virtual_address to the
    driver, which might be important in some special cases).

    This is required for a subsequent fix. And will also make it easier to
    merge page_mkwrite() with fault() in future.

    Signed-off-by: Nick Piggin
    Cc: Chris Mason
    Cc: Trond Myklebust
    Cc: Miklos Szeredi
    Cc: Steven Whitehouse
    Cc: Mark Fasheh
    Cc: Joel Becker
    Cc: Artem Bityutskiy
    Cc: Felix Blyakher
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nick Piggin
     

22 Dec, 2008

3 commits

  • Extend the deferred io code from only supporting vmalloc()ed frame
    buffer memory to support both vmalloc()ed and physically contiguous
    frame buffer memory.

    The sh_mobile_lcdcfb hardware does not support scatter gather so
    we need physically contiguous memory to back our frame buffer.

    Signed-off-by: Magnus Damm
    Acked-by: Jaya Kumar
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • Make sure the mmap callback is set to NULL in the deferred io
    cleanup function. This way we can enable and disable deferred
    io on the fly.

    Signed-off-by: Magnus Damm
    Acked-by: Jaya Kumar
    Signed-off-by: Paul Mundt

    Magnus Damm
     
  • If CONFIG_FB_DEFERRED_IO is set, but there are framebuffers
    registered that does not make use of deferred io, then fsync()
    on those framebuffers will result in a crash. Fix that.

    This is needed for sh_mobile_lcdcfb since we always enable
    deferred io at compile time but we may disable deferred io
    for some types of hardware configurations.

    Signed-off-by: Magnus Damm
    Acked-by: Jaya Kumar
    Signed-off-by: Paul Mundt

    Magnus Damm
     

21 Aug, 2008

1 commit

  • 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
    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
    Cc: Jaya Kumar
    Cc: Nick Piggin
    Cc: Peter Zijlstra
    Cc: Hugh Dickins
    Cc: Johannes Weiner
    Cc: Jeremy Fitzhardinge
    Cc: Kel Modderman
    Cc: Markus Armbruster
    Cc: Krzysztof Helt
    Cc: [14fcc23fd is in 2.6.25.14 and 2.6.26.1]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Campbell
     

13 Jul, 2008

1 commit

  • This patch is a bugfix for how defio handles multiple processes manipulating
    the same framebuffer.

    Thanks to Bernard Blackham for identifying this bug.

    It occurs when two applications mmap the same framebuffer and concurrently
    write to the same page. Normally, this doesn't occur since only a single
    process mmaps the framebuffer. The symptom of the bug is that the mapping
    applications will hang. The cause is that defio incorrectly tries to add the
    same page twice to the pagelist. The solution I have is to walk the pagelist
    and check for a duplicate before adding. Since I needed to walk the pagelist,
    I now also keep the pagelist in sorted order.

    Signed-off-by: Jaya Kumar
    Cc: Bernard Blackham
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jaya Kumar
     

20 Mar, 2008

1 commit

  • Implement support for the E-Ink Metronome controller. It provides an mmapable
    interface to the controller using defio support. It was tested with a gumstix
    pxa255 with Vizplex media using Xfbdev and various X clients such as xeyes,
    xpdf, xloadimage.

    This patch also fixes the following bug: Defio would cause a hang on write
    access to the framebuffer as the page fault would be called ad-infinitum. It
    fixes fb_defio by setting the mapping to be used by page_mkclean.

    Signed-off-by: Jaya Kumar
    Cc: "Antonino A. Daplas"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jaya Kumar
     

07 Feb, 2008

1 commit

  • Convert fb defio from nopage to fault.
    Switch from OOM to SIGBUS if the resource is not available.

    Signed-off-by: Nick Piggin
    Cc: "Antonino A. Daplas"
    Cc: Paul Mundt
    Cc: Jaya Kumar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nick Piggin
     

17 Oct, 2007

1 commit


09 May, 2007

4 commits

  • Kill the following in fb_defio.c:

    drivers/video/fb_defio.c:40:43: warning: incorrect type in argument 1 (different address spaces)
    drivers/video/fb_defio.c:40:43: expected void *addr
    drivers/video/fb_defio.c:40:43: got char [noderef] *screen_base

    The framebuffer memory of these types of devices are allocated from system
    RAM.

    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Antonino A. Daplas
     
  • There are cases when we do not want to wait on the delay for automatically
    updating the "real" framebuffer, this implements a simple ->fsync() hook
    for explicitly flushing the deferred I/O work. The ->page_mkwrite()
    handler will rearm the work queue normally.

    (akpm: nuke unneeded ifdefs, forward-delcare struct dentry)

    Signed-off-by: Paul Mundt
    Cc: Jaya Kumar
    Acked-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Mundt
     
  • Signed-off-by: Adrian Bunk
    Cc: Jaya Kumar
    Cc: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     
  • This implements deferred IO support in fbdev. Deferred IO is a way to delay
    and repurpose IO. This implementation is done using mm's page_mkwrite and
    page_mkclean hooks in order to detect, delay and then rewrite IO. This
    functionality is used by hecubafb.

    [adaplas]
    This is useful for graphics hardware with no directly addressable/mappable
    framebuffer. Implementing this will allow the "framebuffer" to be accesible
    from user space via mmap().

    Signed-off-by: Jaya Kumar
    Signed-off-by: Antonino Daplas
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jaya Kumar