03 Oct, 2011

3 commits

  • When blanking an already blanked framebuffer, a kernel NULL pointer
    dereference occurred, because mx3fb driver handles all kinds of screen
    blanking (normal, vsync suspend, powerdown) in the same way.
    Certain programs (Xorg X11 server) first do a normal blank, followed by
    a powerdown blank, which triggered the bug.

    Add an additional safeguard and make sdc_disable_channel() safe against
    multiple calls independent of other logic.

    Signed-off-by: Michael Thalmeier
    Signed-off-by: Florian Tobias Schandinat

    Wolfram Stering
     
  • Since commit [e58aa3d2: genirq: Run irq handlers with interrupts disabled],
    We run all interrupt handlers with interrupts disabled
    and we even check and yell when an interrupt handler
    returns with interrupts enabled (see commit [b738a50a:
    genirq: Warn when handler enables interrupts]).

    So now this flag is a NOOP and can be removed.

    Signed-off-by: Yong Zhang
    Acked-by: David Brown
    Signed-off-by: Florian Tobias Schandinat

    Yong Zhang
     
  • Having "edid" as char caused a problem in ufx_read_edid() where we
    compared "edid[i] != 0xFF". Because of the type difference, the
    condition was never true and the error checking failed.

    Also I added a __user notation to silence a sparse complaint.

    Signed-off-by: Dan Carpenter
    Signed-off-by: Florian Tobias Schandinat

    Dan Carpenter
     

19 Sep, 2011

13 commits


15 Sep, 2011

3 commits


06 Sep, 2011

9 commits


03 Sep, 2011

4 commits

  • Following on Herton's patch "fb: avoid possible deadlock caused by
    fb_set_suspend" which moves lock_fb_info() out of fb_set_suspend()
    to its callers, correct sh-mobile's locking around call to
    fb_set_suspend() and the same sort of deaklocks with console_lock()
    due to order of taking the lock.

    console_lock() must be taken while fb_info is already locked and fb_info
    must be locked while calling fb_set_suspend().

    Signed-off-by: Bruno Prémont
    Signed-off-by: Guennadi Liakhovetski
    Signed-off-by: Florian Tobias Schandinat
    Cc: stable@kernel.org

    Bruno Prémont
     
  • A lock ordering issue can cause deadlocks: in framebuffer/console code,
    all needed struct fb_info locks are taken before acquire_console_sem(),
    in places which need to take console semaphore.

    But fb_set_suspend is always called with console semaphore held, and
    inside it we call lock_fb_info which gets the fb_info lock, inverse
    locking order of what the rest of the code does. This causes a real
    deadlock issue, when we write to state fb sysfs attribute (which calls
    fb_set_suspend) while a framebuffer is being unregistered by
    remove_conflicting_framebuffers, as can be shown by following show
    blocked state trace on a test program which loads i915 and runs another
    forked processes writing to state attribute:

    Test process with semaphore held and trying to get fb_info lock:
    ..
    fb-test2 D 0000000000000000 0 237 228 0x00000000
    ffff8800774f3d68 0000000000000082 00000000000135c0 00000000000135c0
    ffff880000000000 ffff8800774f3fd8 ffff8800774f3fd8 ffff880076ee4530
    00000000000135c0 ffff8800774f3fd8 ffff8800774f2000 00000000000135c0
    Call Trace:
    [] __mutex_lock_slowpath+0x11a/0x1e0
    [] ? _raw_spin_lock_irq+0x22/0x40
    [] mutex_lock+0x23/0x50
    [] lock_fb_info+0x25/0x60
    [] fb_set_suspend+0x20/0x80
    [] store_fbstate+0x4f/0x70
    [] dev_attr_store+0x20/0x30
    [] sysfs_write_file+0xd4/0x160
    [] vfs_write+0xc6/0x190
    [] sys_write+0x51/0x90
    [] system_call_fastpath+0x16/0x1b
    ..
    modprobe process stalled because has the fb_info lock (got inside
    unregister_framebuffer) but waiting for the semaphore held by the
    test process which is waiting to get the fb_info lock:
    ..
    modprobe D 0000000000000000 0 230 218 0x00000000
    ffff880077a4d618 0000000000000082 0000000000000001 0000000000000001
    ffff880000000000 ffff880077a4dfd8 ffff880077a4dfd8 ffff8800775a2e20
    00000000000135c0 ffff880077a4dfd8 ffff880077a4c000 00000000000135c0
    Call Trace:
    [] schedule_timeout+0x215/0x310
    [] ? get_parent_ip+0x11/0x50
    [] __down+0x6d/0xb0
    [] down+0x41/0x50
    [] acquire_console_sem+0x2c/0x50
    [] unbind_con_driver+0xad/0x2d0
    [] fbcon_event_notify+0x457/0x890
    [] ? _raw_spin_unlock_irqrestore+0x1f/0x50
    [] ? get_parent_ip+0x11/0x50
    [] notifier_call_chain+0x4d/0x70
    [] __blocking_notifier_call_chain+0x58/0x80
    [] blocking_notifier_call_chain+0x16/0x20
    [] fb_notifier_call_chain+0x1b/0x20
    [] unregister_framebuffer+0x7c/0x130
    [] remove_conflicting_framebuffers+0x153/0x180
    [] register_framebuffer+0x93/0x2c0
    [] drm_fb_helper_single_fb_probe+0x252/0x2f0 [drm_kms_helper]
    [] drm_fb_helper_initial_config+0x2f3/0x6d0 [drm_kms_helper]
    [] ? drm_fb_helper_single_add_all_connectors+0x5d/0x1c0 [drm_kms_helper]
    [] intel_fbdev_init+0xa8/0x160 [i915]
    [] i915_driver_load+0x854/0x12b0 [i915]
    [] drm_get_pci_dev+0x19e/0x360 [drm]
    [] ? sub_preempt_count+0x9d/0xd0
    [] i915_pci_probe+0x15/0x17 [i915]
    [] local_pci_probe+0x5f/0xd0
    [] pci_device_probe+0x119/0x120
    [] ? driver_sysfs_add+0x7a/0xb0
    [] driver_probe_device+0xa3/0x290
    [] ? __driver_attach+0x0/0xb0
    [] __driver_attach+0xab/0xb0
    [] ? __driver_attach+0x0/0xb0
    [] bus_for_each_dev+0x5e/0x90
    [] driver_attach+0x1e/0x20
    [] bus_add_driver+0xe2/0x320
    [] ? i915_init+0x0/0x96 [i915]
    [] driver_register+0x76/0x140
    [] ? i915_init+0x0/0x96 [i915]
    [] __pci_register_driver+0x56/0xd0
    [] drm_pci_init+0xe4/0xf0 [drm]
    [] ? i915_init+0x0/0x96 [i915]
    [] drm_init+0x58/0x70 [drm]
    [] i915_init+0x94/0x96 [i915]
    [] do_one_initcall+0x44/0x190
    [] sys_init_module+0xcb/0x210
    [] system_call_fastpath+0x16/0x1b
    ..

    fb-test2 which reproduces above is available on kernel.org bug #26232.
    To solve this issue, avoid calling lock_fb_info inside fb_set_suspend,
    and move it out to where needed (callers of fb_set_suspend must call
    lock_fb_info before if needed). So far, the only place which needs to
    call lock_fb_info is store_fbstate, all other places which calls
    fb_set_suspend are suspend/resume hooks that should not need the lock as
    they should be run only when processes are already frozen in
    suspend/resume.

    References: https://bugzilla.kernel.org/show_bug.cgi?id=26232
    Signed-off-by: Herton Ronaldo Krzesinski
    Signed-off-by: Florian Tobias Schandinat
    Cc: stable@kernel.org

    Herton Ronaldo Krzesinski
     
  • it's annoying and takes up way too much space in dmesg.

    Signed-off-by: Manuel Lauss
    Signed-off-by: Florian Tobias Schandinat

    Manuel Lauss
     
  • Increase delay when polling for tx status. This fixes
    the unreliable video decoder i2c register access.

    Signed-off-by: Anatolij Gustschin
    Signed-off-by: Florian Tobias Schandinat

    Anatolij Gustschin
     

01 Sep, 2011

3 commits

  • The standard timings parses uses 1:1 dimensions when the ratio in the
    EDID data is 0. However, for EDID 1.3 and later the dimensions are 16:10
    when the ratio is 0.

    Pass the version and revision numbers to get_std_timing() which can then
    make the right decision about dimensions.

    Signed-off-by: Tomi Valkeinen
    Signed-off-by: Florian Tobias Schandinat

    Tomi Valkeinen
     
  • Since commit aa3831cf9d29cfeaebd8c2169378b74111364487
    "ARM: Consolidate the clkdev header files",
    the header file arch/arm/mach-nuc93x/include/mach/clkdev.h is removed.

    This patch fixes below build error:

    drivers/video/nuc900fb.c:42:25: error: mach/clkdev.h: No such file or directory
    make[2]: *** [drivers/video/nuc900fb.o] Error 1
    make[1]: *** [drivers/video] Error 2
    make: *** [drivers] Error 2

    Signed-off-by: Axel Lin
    Signed-off-by: Florian Tobias Schandinat

    Axel Lin
     
  • Include linux/module.h to fix below build error:

    from drivers/video/mxsfb.c:42:
    arch/arm/mach-mxs/include/mach/memory.h:22:1: warning: this is the location of the previous definition
    drivers/video/mxsfb.c:574: error: 'THIS_MODULE' undeclared here (not in a function)
    drivers/video/mxsfb.c:893: warning: data definition has no type or storage class
    drivers/video/mxsfb.c:893: warning: type defaults to 'int' in declaration of 'MODULE_DEVICE_TABLE'
    drivers/video/mxsfb.c:893: warning: parameter names (without types) in function declaration
    drivers/video/mxsfb.c:917: error: expected declaration specifiers or '...' before string constant
    drivers/video/mxsfb.c:917: warning: data definition has no type or storage class
    drivers/video/mxsfb.c:917: warning: type defaults to 'int' in declaration of 'MODULE_DESCRIPTION'
    drivers/video/mxsfb.c:917: warning: function declaration isn't a prototype
    drivers/video/mxsfb.c:918: error: expected declaration specifiers or '...' before string constant
    drivers/video/mxsfb.c:918: warning: data definition has no type or storage class
    drivers/video/mxsfb.c:918: warning: type defaults to 'int' in declaration of 'MODULE_AUTHOR'
    drivers/video/mxsfb.c:918: warning: function declaration isn't a prototype
    drivers/video/mxsfb.c:919: error: expected declaration specifiers or '...' before string constant
    drivers/video/mxsfb.c:919: warning: data definition has no type or storage class
    drivers/video/mxsfb.c:919: warning: type defaults to 'int' in declaration of 'MODULE_LICENSE'
    drivers/video/mxsfb.c:919: warning: function declaration isn't a prototype
    make[2]: *** [drivers/video/mxsfb.o] Error 1
    make[1]: *** [drivers/video] Error 2
    make: *** [drivers] Error 2

    Signed-off-by: Axel Lin
    Signed-off-by: Florian Tobias Schandinat

    Axel Lin
     

31 Aug, 2011

1 commit


29 Aug, 2011

1 commit


24 Aug, 2011

3 commits

  • This patch adds struct s3c_fb_driverdata s3c_fb_data_exynos4 for EXYNOS4
    and adds lcd clock gating support.

    FIMD driver needs two clocks for FIMD IP and LCD pixel clock. Previously,
    both clocks are provided by using bus clock such as HCLK. However, EXYNOS4
    can not select HCLK for LCD pixel clock because the EXYNOS4 FIMD IP does not
    have the CLKSEL bit of VIDCON0. So, FIMD driver should provide the lcd clock
    using SCLK_FIMD as LCD pixel clock for EXYNOS4.

    The driver selects enabling lcd clock according to has_clksel which means
    the CLKSEL bit of VIDCON0. If there is has_clksel, the driver will not
    enable the lcd clock using SCLK_FIMD because bus clock using HCLK is used
    a LCD pixel clock.

    Signed-off-by: Jingoo Han
    Signed-off-by: Florian Tobias Schandinat

    Jingoo Han
     
  • Signed-off-by: Bernie Thompson
    Signed-off-by: Florian Tobias Schandinat

    Bernie Thompson
     
  • Enables page fault based detection of mmap writes to the framebuffer,
    which allows standard fbdev apps (like the generic fbdev xorg driver)
    to work on DisplayLink devices.

    Not all bugs are shaken out of the fb_defio path of udlfb, but it's
    tantalizingly close, so this seems a good time to enable by default.

    Alternatively, option can be disabled when running with an xorg driver
    that can more directly communicate damaged regions of the framebuffer
    via IOCTL. This is a simpler, higher perf option, when available.

    Signed-off-by: Bernie Thompson
    Signed-off-by: Florian Tobias Schandinat

    Bernie Thompson