Skip to content
  1. May 04, 2015
    • Daniel Vetter's avatar
      drm/vblank: Fixup and document timestamp update/read barriers · 99264a61
      Daniel Vetter authored
      
      
      This was a bit too much cargo-culted, so lets make it solid:
      - vblank->count doesn't need to be an atomic, writes are always done
        under the protection of dev->vblank_time_lock. Switch to an unsigned
        long instead and update comments. Note that atomic_read is just a
        normal read of a volatile variable, so no need to audit all the
        read-side access specifically.
      
      - The barriers for the vblank counter seqlock weren't complete: The
        read-side was missing the first barrier between the counter read and
        the timestamp read, it only had a barrier between the ts and the
        counter read. We need both.
      
      - Barriers weren't properly documented. Since barriers only work if
        you have them on boths sides of the transaction it's prudent to
        reference where the other side is. To avoid duplicating the
        write-side comment 3 times extract a little store_vblank() helper.
        In that helper also assert that we do indeed hold
        dev->vblank_time_lock, since in some cases the lock is acquired a
        few functions up in the callchain.
      
      Spotted while reviewing a patch from Chris Wilson to add a fastpath to
      the vblank_wait ioctl.
      
      v2: Add comment to better explain how store_vblank works, suggested by
      Chris.
      
      v3: Peter noticed that as-is the 2nd smp_wmb is redundant with the
      implicit barrier in the spin_unlock. But that can only be proven by
      auditing all callers and my point in extracting this little helper was
      to localize all the locking into just one place. Hence I think that
      additional optimization is too risky.
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Mario Kleiner <mario.kleiner.de@gmail.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Michel Dänzer <michel@daenzer.net>
      Cc: Peter Hurley <peter@hurleysoftware.com>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-and-tested-by: default avatarMario Kleiner <mario.kleiner.de@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      99264a61
  2. Apr 21, 2015
    • Josef Holzmayr's avatar
      DRM: Don't re-poll connector for disconnect · a3c6d686
      Josef Holzmayr authored
      
      
      DRM probe should not repoll a connector if it is already
      connected and the DRM_CONNECTOR_POLL_DISCONNECT flag is not set.
      
      Signed-off-by: default avatarJosef Holzmayr <holzmayr@rsi-elektrotechnik.de>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      a3c6d686
    • Todd Previte's avatar
      drm: Fix for DP CTS test 4.2.2.5 - I2C DEFER handling · 396aa445
      Todd Previte authored
      
      
      For test 4.2.2.5 to pass per the Link CTS Core 1.2 rev1.1 spec, the source
      device must attempt at least 7 times to read the EDID when it receives an
      I2C defer. The normal DRM code makes only 7 retries, regardless of whether
      or not the response is a native defer or an I2C defer. Test 4.2.2.5 fails
      since there are native defers interspersed with the I2C defers which
      results in less than 7 EDID read attempts.
      
      The solution is to add the numer of defers to the retry counter when an I2C
      DEFER is returned such that another read attempt will be made. This situation
      should normally only occur in compliance testing, however, as a worse case
      real-world scenario, it would result in 13 attempts ( 6 native defers, 7 I2C
      defers) for a single transaction to complete. The net result is a slightly
      slower response to an EDID read that shouldn't significantly impact overall
      performance.
      
      V2:
      - Added a check on the number of I2C Defers to limit the number
        of times that the retries variable will be decremented. This
        is to address review feedback regarding possible infinite loops
        from misbehaving sink devices.
      V3:
      - Fixed the limit value to 7 instead of 8 to get the correct retry
        count.
      - Combined the increment of the defer count into the if-statement
      V4:
      - Removed i915 tag from subject as the patch is not i915-specific
      V5:
      - Updated the for-loop to add the number of i2c defers to the retry
        counter such that the correct number of retry attempts will be
        made
      
      Signed-off-by: default avatarTodd Previte <tprevite@gmail.com>
      Cc: dri-devel@lists.freedesktop.org
      Reviewed-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      396aa445
  3. Apr 16, 2015
  4. Apr 14, 2015
    • John Hunter's avatar
      drm: fix trivial typo mistake · 2b1193d5
      John Hunter authored
      
      
      Signed-off-by: default avatarJohn Hunter <zhjwpku@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      2b1193d5
    • Matt Roper's avatar
      drm: Make integer overflow checking cover universal cursor updates (v2) · 3968be94
      Matt Roper authored
      Our legacy SetPlane updates perform integer overflow checking on a
      plane's destination rectangle in drm_mode_setplane(), and atomic updates
      handled as part of a drm_atomic_state transaction do the same checking
      in drm_atomic_plane_check().  However legacy cursor updates that get
      routed through universal plane interfaces may bypass this overflow
      checking if the driver's .update_plane is serviced by the transitional
      plane helpers rather than the full atomic plane helpers.
      
      Move the check for destination rectangle integer overflow from the
      drm_mode_setplane() to __setplane_internal() so that it also covers
      cursor operations.
      
      This fixes an issue first noticed with i915 commit:
      
              commit ff42e093
              Author: Daniel Vetter <daniel.vetter@ffwll.ch>
              Date:   Mon Mar 2 16:35:20 2015 +0100
      
                  Revert "drm/i915: Switch planes from transitional helpers to full
                  atomic helpers"
      
      The above revert switched us from full atomic helpers back to the
      transitional helpers, and in doing so we lost the overflow checking here
      for universal cursor updates.  Even though such extreme cursor positions
      are unlikely to actually happen in the wild, we still don't want there
      to be a change of behavior when drivers switch from transitional helpers
      to full helpers.
      
      v2: Move check from setplane ioctl to setplane_internal rather than
          adding an additional copy of the checks to the transitional plane
          helpers.  (Daniel)
      
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Testcase: igt/kms_cursor_crc
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84269
      
      
      Signed-off-by: default avatarMatt Roper <matthew.d.roper@intel.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      3968be94
  5. Apr 13, 2015
  6. Apr 12, 2015
  7. Apr 08, 2015
  8. Apr 07, 2015
  9. Apr 02, 2015
  10. Apr 01, 2015
    • Chris Ruffin's avatar
    • Dave Airlie's avatar
      Merge tag 'topic/drm-misc-2015-03-31' of git://anongit.freedesktop.org/drm-intel into drm-next · 53d8858b
      Dave Airlie authored
      Final drm-misc pull for 4.0, just various things all over, including a few
      more important atomic fixes. btw I didn't pick up the vmwgfx patch from
      Ville's series, but one patch has one hunk touching vmwgfx and
      Thomas/Jakob didn't get around to ack it. I figured it's simple enough to
      be ok though.
      
      * tag 'topic/drm-misc-2015-03-31' of git://anongit.freedesktop.org/drm-intel:
        drm: line wrap DRM_IOCTL_DEF* macros
        drm/atomic: Don't try to free a NULL state
        drm/atomic: Clear crtcs, connectors and planes when clearing state
        drm: Rewrite drm_ioctl_flags() to resemble the new drm_ioctl() code
        drm: Use max() to make the ioctl alloc size code cleaner
        drm: Simplify core vs. drv ioctl handling
        drm: Drop ioctl->cmd_drv
        drm: Fix DRM_IOCTL_DEF_DRV()
        drm/atomic-helpers: Properly avoid full modeset dance
        drm: atomic: Allow setting CRTC active property
        drm: atomic: Expose CRTC active property
        drm: crtc_helper: Update hwmode before mode_set call
        drm: mode: Allow NULL modes for equality check
        drm: fb_helper: Simplify exit condition
        drm: mode: Fix typo in kerneldoc
        drm/dp: Print the number of bytes processed for aux nacks
      53d8858b
    • Dave Airlie's avatar
      Merge tag 'drm-intel-next-2015-03-27-merge' of... · 9e87e48f
      Dave Airlie authored
      Merge tag 'drm-intel-next-2015-03-27-merge' of git://anongit.freedesktop.org/drm-intel into drm-next
      
      This backmerges 4.0-rc6 due to the recent fixes in rc5/6
      
      - DP link rate refactoring from Ville
      - byt/bsw rps tuning from Chris
      - kerneldoc for the shrinker code
      - more dynamic ppgtt pte work (Michel, Ben, ...)
      - vlv dpll code refactoring to prep fro bxt (Imre)
      - refactoring the sprite colorkey code (Ville)
      - rotated ggtt view support from Tvrtko
      - roll out struct drm_atomic_state to prep for atomic update (Ander)
      
      * tag 'drm-intel-next-2015-03-27-merge' of git://anongit.freedesktop.org/drm-intel: (473 commits)
        Linux 4.0-rc6
        arm64: juno: Fix misleading name of UART reference clock
        drm/i915: Update DRIVER_DATE to 20150327
        drm/i915: Skip allocating shadow batch for 0-length batches
        drm/i915: Handle error to get connector state when staging config
        drm/i915: Compare GGTT view structs instead of types
        drm/i915: fix simple_return.cocci warnings
        drm/i915: Add module param to test the load detect code
        drm/i915: Remove usage of encoder->new_crtc from clock computations
        drm/i915: Don't look at staged config crtc when changing DRRS state
        drm/i915: Convert intel_pipe_will_have_type() to using atomic state
        drm/i915: Pass an atomic state to modeset_global_resources() functions
        drm/i915: Add dynamic page trace events
        drm/i915: Finish gen6/7 dynamic page table allocation
        drm/i915: Remove unnecessary gen6_ppgtt_unmap_pages
        drm/i915: Fix i915_dma_map_single positive error code
        drm/i915: Prevent out of range pt in gen6_for_each_pde
        drm/i915: fix definition of the DRM_IOCTL_I915_GET_SPRITE_COLORKEY ioctl
        drm/i915: Rip out GET_SPRITE_COLORKEY ioctl
        watchdog: imgpdc: Fix default heartbeat
        ...
      9e87e48f
  11. Mar 31, 2015
  12. Mar 30, 2015
  13. Mar 29, 2015