1. 29 Jan, 2015 1 commit
  2. 22 Jan, 2015 2 commits
    • Daniel Vetter's avatar
      drm/probe-helper: clamp unknown connector status in the poll work · b7703726
      Daniel Vetter authored
      On some chipset we try to avoid possibly invasive output detection
      methods (like load detect which can cause flickering elsewhere) in the
      output poll work. Drivers could hence return unknown when a previous
      full ->detect call returned a different state.
      
      This change will generate a hotplug event, forcing userspace to do a
      full scan. This in turn updates the connector->status field so that we
      will _again_ get a state change when the hotplug work re-runs in 10
      seconds.
      
      To avoid this ping-pong loop detect this situation and clamp the
      connector state to the old value.
      
      Patch is inspired by a patch from Knut Peterson. Knut's patch
      completely ignored connector state changes if either the old or new
      status was unknown, which seemed to be a bit too agressive to me.
      
      v2: Rebased onto the drm_probe_helper.c extraction.
      
      References: http://lists.freedesktop.org/archives/dri-devel/2012-August/025975.html
      Cc: Knut Petersen <Knut_Petersen@t-online.de>
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Acked-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Cc: Rob Clark <robdclark@gmail.com>
      Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      b7703726
    • Daniel Vetter's avatar
      drm/probe-helper: don't lose hotplug event · 162b6a57
      Daniel Vetter authored
      There's a race window (small for hpd, 10s large for polled outputs)
      where userspace could sneak in with an unrelated connnector probe
      ioctl call and eat the hotplug event (since neither the hpd nor the
      poll code see a state change).
      
      To avoid this, check whether the connector state changes in all other
      ->detect calls (in the current helper code that's only probe_single)
      and if that's the case, fire off a hotplug event. Note that we can't
      directly call the hotplug event handler, since that expects that no
      locks are held (due to reentrancy with the fb code to update the kms
      console).
      
      Also, this requires that drivers using the probe_single helper
      function set up the poll work. All current drivers do that already,
      and with the reworked hpd handling there'll be no downside to
      unconditionally setting up the poll work any more.
      
      v2: Review from Rob Clark
      - Don't bail out of the output poll work immediately if it's disabled
        to make sure we deliver the delayed hoptplug events. Instead just
        jump to the tail.
      - Don't scheduel the work when it's not set up. Would be a driver bug
        since using probe helpers for anything dynamic without them
        initialized makes them all noops.
      
      Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> (v1)
      Cc: Rob Clark <robdclark@gmail.com>
      Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
      Tested-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      162b6a57
  3. 21 Jan, 2015 7 commits
    • Guenter Roeck's avatar
      next: drm/atomic: Use copy_from_user to copy 64 bit data from user space · 42c5814c
      Guenter Roeck authored
      Copying 64 bit data from user space using get_user is not supported
      on all architectures, and may result in the following build error.
      
      ERROR: "__get_user_bad" [drivers/gpu/drm/drm.ko] undefined!
      
      Avoid the problem by using copy_from_user.
      
      Fixes: d34f20d6 ("drm: Atomic modeset ioctl")
      Cc: Rob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      42c5814c
    • Chris Wilson's avatar
      drm: Make drm_read() more robust against multithreaded races · cdd1cf79
      Chris Wilson authored
      The current implementation of drm_read() faces a number of issues:
      
      1. Upon an error, it consumes the event which may lead to the client
      blocking.
      2. Upon an error, it forgets about events already copied
      3. If it fails to copy a single event with O_NONBLOCK it falls into a
      infinite loop of reporting EAGAIN.
      3. There is a race between multiple waiters and blocking reads of the
      events list.
      
      Here, we inline drm_dequeue_event() into drm_read() so that we can take
      the spinlock around the list walking and event copying, and importantly
      reorder the error handling to avoid the issues above.
      
      Cc: Takashi Iwai <tiwai@suse.de>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarTakashi Iwai <tiwai@suse.de>
      Testcase: igt/drm_read
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      cdd1cf79
    • Thierry Reding's avatar
      drm/fb-helper: Propagate errors from initial config failure · 01934c2a
      Thierry Reding authored
      Make drm_fb_helper_initial_config() return an int rather than a bool so
      that the error can be properly propagated. While at it, update drivers
      to propagate errors further rather than just ignore them.
      
      v2:
      - cirrus: No cleanup is required, the top-level cirrus_driver_load()
        will do it as part of cirrus_driver_unload() in its cleanup path.
      Reported-by: default avatarFengguang Wu <fengguang.wu@intel.com>
      
      Cc: David Airlie <airlied@linux.ie>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: Tomi Valkeinen <tomi.valkeinen@ti.com>
      Cc: Alex Deucher <alexander.deucher@amd.com>
      Cc: Christian König <christian.koenig@amd.com>
      Cc: Ben Skeggs <bskeggs@redhat.com>
      Signed-off-by: default avatarThierry Reding <treding@nvidia.com>
      Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: default avatarPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
      Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
      [danvet: Squash in simplification patch from kbuild.]
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      01934c2a
    • Geert Uytterhoeven's avatar
      drm: Drop superfluous "select VT_HW_CONSOLE_BINDING" · 7119ad5f
      Geert Uytterhoeven authored
      commit 765d5b9c ("fbdev: fbcon: select VT_HW_CONSOLE_BINDING")
      made FRAMEBUFFER_CONSOLE always select VT_HW_CONSOLE_BINDING, but forgot
      to remove
      
      	select VT_HW_CONSOLE_BINDING if FRAMEBUFFER_CONSOLE
      
      from the individual drivers' sections that already did this before.
      
      Remove it, also from new drivers.
      Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      7119ad5f
    • Dave Airlie's avatar
      Merge tag 'imx-drm-next-2015-01-09' of git://git.pengutronix.de/git/pza/linux into drm-next · fc839753
      Dave Airlie authored
      imx-drm mode fixup support, imx-hdmi bridge conversion and imx-drm cleanup
      
      - Implement mode_fixup for a DI vertical timing limitation
      - Use generic DRM OF helpers in DRM core
      - Convert imx-hdmi to dw_hdmi drm_bridge and add rockchip
        driver
      - Add DC use counter to fix multi-display support
      - Simplify handling of DI clock flags
      - A few small fixes and cleanup
      
      * tag 'imx-drm-next-2015-01-09' of git://git.pengutronix.de/git/pza/linux: (26 commits)
        imx-drm: core: handling of DI clock flags to ipu_crtc_mode_set()
        gpu: ipu-di: Switch to DIV_ROUND_CLOSEST for DI clock divider calc
        gpu: ipu-v3: Use videomode in struct ipu_di_signal_cfg
        imx-drm: encoder prepare/mode_set must use adjusted mode
        imx-drm: ipuv3-crtc: Implement mode_fixup
        drm_modes: add drm_display_mode_to_videomode
        gpu: ipu-di: remove some non-functional code
        gpu: ipu-di: Add ipu_di_adjust_videomode()
        drm: rockchip: export functions needed by rockchip dw_hdmi bridge driver
        drm: bridge/dw_hdmi: request interrupt only after initializing the mutes
        drm: bridge/dw_hdmi: add rockchip rk3288 support
        dt-bindings: Add documentation for rockchip dw hdmi
        drm: bridge/dw_hdmi: add function dw_hdmi_phy_enable_spare
        drm: bridge/dw_hdmi: clear i2cmphy_stat0 reg in hdmi_phy_wait_i2c_done
        drm: bridge/dw_hdmi: add mode_valid support
        drm: bridge/dw_hdmi: add support for multi-byte register width access
        dt-bindings: add document for dw_hdmi
        drm: imx: imx-hdmi: move imx-hdmi to bridge/dw_hdmi
        drm: imx: imx-hdmi: split phy configuration to platform driver
        drm: imx: imx-hdmi: convert imx-hdmi to drm_bridge mode
        ...
      fc839753
    • Dave Airlie's avatar
      Merge branch 'drm/next/du' of git://linuxtv.org/pinchartl/fbdev into drm-next · b2eb0489
      Dave Airlie authored
      * 'drm/next/du' of git://linuxtv.org/pinchartl/fbdev:
        drm: rcar-du: Implement support for interlaced modes
        drm: rcar-du: Clamp DPMS states to on and off
        drm: rcar-du: Enable hotplug detection on HDMI connector
        drm: rcar-du: Output HSYNC instead of CSYNC
        drm: rcar-du: Add support for external pixel clock
        drm: rcar-du: Refactor DEFR8 feature
        drm: rcar-du: Remove LVDS and HDMI encoders chaining restriction
        drm: rcar-du: Configure pitch for chroma plane of multiplanar formats
        drm: rcar-du: Don't fail probe in case of partial encoder init error
        drm: adv7511: Remove interlaced mode check
      b2eb0489
    • Dave Airlie's avatar
      Merge tag 'drm-amdkfd-next-2015-01-09' of git://people.freedesktop.org/~gabbayo/linux into drm-next · 4f4d89af
      Dave Airlie authored
      - Add support for SDMA usermode queues
      - Replace logic of sub-allocating from GART buffer in amdkfd. Instead
        of using radeon_sa module, use a new module that is more suited for
        this purpose
      - Add the number of watch points to amdkfd topology
      - Split a function that did two things into two seperate functions.
      
      * tag 'drm-amdkfd-next-2015-01-09' of git://people.freedesktop.org/~gabbayo/linux:
        drm/amd: Remove old radeon_sa funcs from kfd-->kgd interface
        drm/radeon: Remove old radeon_sa usage from kfd-->kgd interface
        drm/amdkfd: Using new gtt sa in amdkfd
        drm/amdkfd: Allocate gart memory using new interface
        drm/amdkfd: Fixed calculation of gart buffer size
        drm/amdkfd: Add kfd gtt sub-allocator functions
        drm/amdkfd: Add gtt sa related data to kfd_dev struct
        drm/radeon: Impl. new gtt allocate/free functions
        drm/amd: Add new kfd-->kgd interface for gart usage
        drm/radeon: Enable sdma preemption
        drm/amdkfd: Pass queue type to pqm_create_queue()
        drm/amdkfd: Identify SDMA queue in create queue ioctl
        drm/amdkfd: Add SDMA user-mode queues support to QCM
        drm/amdkfd: Add SDMA mqd support
        drm/radeon: Implement SDMA interface functions
        drm/amd: Add SDMA functions to kfd-->kgd interface
        drm/amdkfd: Process-device data creation and lookup split
        drm/amdkfd: Add number of watch points to topology
      4f4d89af
  4. 12 Jan, 2015 1 commit
  5. 09 Jan, 2015 19 commits
  6. 08 Jan, 2015 2 commits
    • Dave Airlie's avatar
      Merge tag 'topic/atomic-core-2015-01-05' of git://anongit.freedesktop.org/drm-intel into drm-next · c93546a5
      Dave Airlie authored
      Next batch of atomic work. Most important is the propertification from Rob
      and the nth iteration of the actual atomic ioctl originally from Ville.
      Big differences compared to earlier revisions:
      - Core properties are now fully handled by the core, drivers can only
        handle driver-specific properties.
      - Atomic props&ioctl are opt-in per file_priv, userspace needs to
        explicitly ask for it (like universal plane support).
      - For now all hidden behind the atomic module option until this has
        settled a bit.
      - Atomic modesets are currently not possible since the exact abi for how
        to handle the mode property is still under discussion.
      
      Besides this some cleanup patches from me and the addition of per-object
      state to global state backpointers to simplify drivers.
      
      * tag 'topic/atomic-core-2015-01-05' of git://anongit.freedesktop.org/drm-intel:
        drm: Ensure universal_planes is set for atomic
        drm/atomic: Hide drm.ko internal interfaces
        drm: Atomic modeset ioctl
        drm/atomic: atomic connector properties
        drm/atomic: atomic plane properties
        drm: small property creation cleanup
        drm/atomic: atomic_check functions
        drm: add atomic properties
        drm: refactor getproperties/getconnector
        drm: tweak getconnector locking
        drm: add atomic_get_property
        drm: add atomic_set_property wrappers
        drm: get rid of direct property value access
        drm: store property instead of id in obj attachment
        drm: allow property validation for refcnted props
        drm/atomic: Introduce state->obj backpointers
        drm/atomic-helper: Again check modeset *before* plane states
        drm/atomic-helper: Export both plane and modeset check helpers
      c93546a5
    • Dave Airlie's avatar
      Merge tag 'topic/core-stuff-2014-12-19' of git://anongit.freedesktop.org/drm-intel into drm-next · e5202a22
      Dave Airlie authored
      Misc drm patches with mostly polish patches from Thierry, with a bit of
      generic mode validation from Ville and a few other oddball things.
      
      * tag 'topic/core-stuff-2014-12-19' of git://anongit.freedesktop.org/drm-intel: (25 commits)
        drm: Include drm_crtc_helper.h in DocBook
        drm: Make drm_crtc_helper.h standalone includible
        drm: Move IRQ related fields to proper section
        drm: Remove stale comment
        drm: Do basic sanity checks for user modes
        drm: Perform basic sanity checks on probed modes
        drm: Reorganize probed mode validation
        drm/doc: Remove duplicate "by"
        drm/info: Remove unused code
        drm/cache: Use wbinvd helpers
        drm/plane-helper: Test for plane disable earlier
        drm/doc: Document drm_add_modes_noedid() usage
        drm: bit of spell-check / editorializing.
        drm: Prefer sizeof(type) over sizeof type
        drm: Remove useless else block
        drm: Remove unneeded braces for single statement blocks
        drm: Do not assign in if condition
        drm: Prefer kmalloc_array() over kmalloc() with multiply
        drm: Prefer kcalloc() over kzalloc() with multiply
        drm: Miscellaneous checkpatch whitespace cleanups
        ...
      e5202a22
  7. 07 Jan, 2015 8 commits