1. 30 8月, 2010 2 次提交
  2. 27 8月, 2010 1 次提交
  3. 03 3月, 2009 2 次提交
  4. 29 12月, 2008 1 次提交
    • D
      drm: move to kref per-master structures. · 7c1c2871
      Dave Airlie 提交于
      This is step one towards having multiple masters sharing a drm
      device in order to get fast-user-switching to work.
      
      It splits out the information associated with the drm master
      into a separate kref counted structure, and allocates this when
      a master opens the device node. It also allows the current master
      to abdicate (say while VT switched), and a new master to take over
      the hardware.
      
      It moves the Intel and radeon drivers to using the sarea from
      within the new master structures.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      7c1c2871
  5. 11 11月, 2008 1 次提交
  6. 23 10月, 2008 1 次提交
    • K
      drm/i915: hold dev->struct_mutex and DRM lock during vblank ring operations · 9e44af79
      Keith Packard 提交于
      To synchronize clip lists with the X server, the DRM lock must be held while
      looking at drawable clip lists. To synchronize with other ring access, the
      ring mutex must be held while inserting commands into the ring.  Failure to
      do the first resulted in easy visual corruption when moving windows, and the
      second could have corrupted the ring with DRI2.
      
      Grabbing the DRM lock involves using the DRM tasklet mechanism, grabbing the
      ring mutex means potentially sleeping. Deal with both of these by always
      running the tasklet from a work handler.
      
      Also, protect from clip list changes since the vblank request was queued by
      making sure the window has at least one rectangle while looking inside,
      preventing oopses .
      Signed-off-by: NKeith Packard <keithp@keithp.com>
      Signed-off-by: NEric Anholt <eric@anholt.net>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      9e44af79
  7. 25 8月, 2008 2 次提交
  8. 14 7月, 2008 1 次提交
    • D
      drm: reorganise drm tree to be more future proof. · c0e09200
      Dave Airlie 提交于
      With the coming of kernel based modesetting and the memory manager stuff,
      the everything in one directory approach was getting very ugly and
      starting to be unmanageable.
      
      This restructures the drm along the lines of other kernel components.
      
      It creates a drivers/gpu/drm directory and moves the hw drivers into
      subdirectores. It moves the includes into an include/drm, and
      sets up the unifdef for the userspace headers we should be exporting.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      c0e09200
  9. 07 5月, 2008 1 次提交
  10. 17 3月, 2008 1 次提交
    • M
      drm: Fix race that can lockup the kernel · 9df5808c
      Mike Isely 提交于
      The i915_vblank_swap() function schedules an automatic buffer swap
      upon receipt of the vertical sync interrupt.  Such an operation is
      lengthy so it can't be allowed to happen in normal interrupt context,
      thus the DRM implements this by scheduling the work in a kernel
      softirq-scheduled tasklet.  In order for the buffer swap to work
      safely, the DRM's central lock must be taken, via a call to
      drm_lock_take() located in drivers/char/drm/drm_irq.c within the
      function drm_locked_tasklet_func().  The lock-taking logic uses a
      non-interrupt-blocking spinlock to implement the manipulations needed
      to take the lock.  This semantic would be safe if all attempts to use
      the spinlock only happen from process context.  However this buffer
      swap happens from softirq context which is really a form of interrupt
      context.  Thus we have an unsafe situation, in that
      drm_locked_tasklet_func() can block on a spinlock already taken by a
      thread in process context which will never get scheduled again because
      of the blocked softirq tasklet.  This wedges the kernel hard.
      
      To trigger this bug, run a dual-head cloned mode configuration which
      uses the i915 drm, then execute an opengl application which
      synchronizes buffer swaps against the vertical sync interrupt.  In my
      testing, a lockup always results after running anywhere from 5 minutes
      to an hour and a half.  I believe dual-head is needed to really
      trigger the problem because then the vertical sync interrupt handling
      is no longer predictable (due to being interrupt-sourced from two
      different heads running at different speeds).  This raises the
      probability of the tasklet trying to run while the userspace DRI is
      doing things to the GPU (and manipulating the DRM lock).
      
      The fix is to change the relevant spinlock semantics to be the
      interrupt-blocking form.  After this change I am no longer able to
      trigger the lockup; the longest test run so far was 20 hours (test
      stopped after that point).
      
      Note: I have examined the places where this spinlock is being
      employed; all are reasonably short bounded sequences and should be
      suitable for interrupts being blocked without impacting overall kernel
      interrupt response latency.
      Signed-off-by: NMike Isely <isely@pobox.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      9df5808c
  11. 20 10月, 2007 1 次提交
  12. 15 10月, 2007 3 次提交
  13. 11 7月, 2007 3 次提交
  14. 23 3月, 2007 1 次提交
    • T
      drm: fix driver deadlock with AIGLX and reclaim_buffers_locked · 040ac320
      Thomas Hellstrom 提交于
      Bugzilla Bug #9457
      
      Add refcounting of user waiters to the DRM hardware lock, so that we can use
      DRM_LOCK_CONT flag more conservatively.
      
      Also add a kernel waiter refcount that if nonzero transfers the lock for the
      kernel context when it is released. This is useful when waiting for idle and can be used for very simple fence object driver implementations for the new memory manager
      Signed-off-by: NDave Airlie <airlied@linux.ie>
      040ac320
  15. 19 12月, 2006 1 次提交
  16. 07 12月, 2006 2 次提交
  17. 02 1月, 2006 1 次提交
  18. 24 11月, 2005 1 次提交
    • D
      drm: fix quiescent locking · cf65f162
      Dave Airlie 提交于
      A fix for a locking bug which is triggered when a client tries to lock with
      flag DMA_QUIESCENT (typically the X server), but gets interrupted by a signal.
      The locking IOCTL should then return an error, but if DMA_QUIESCENT succeeds
      it returns 0, and the client falsely thinks it has the lock. In addition
      The client waits for DMA_QUISCENT and possibly DMA_READY without having the lock.
      
      From: Thomas Hellstrom
      Signed-off-by: NDave Airlie <airlied@linux.ie>
      cf65f162
  19. 25 9月, 2005 1 次提交
    • D
      drm: lindent the drm directory. · b5e89ed5
      Dave Airlie 提交于
      I've been threatening this for a while, so no point hanging around.
      This lindents the DRM code which was always really bad in tabbing department.
      I've also fixed some misnamed files in comments and removed some trailing
      whitespace.
      Signed-off-by: NDave Airlie <airlied@linux.ie>
      b5e89ed5
  20. 07 7月, 2005 1 次提交
  21. 17 4月, 2005 1 次提交
    • L
      Linux-2.6.12-rc2 · 1da177e4
      Linus Torvalds 提交于
      Initial git repository build. I'm not bothering with the full history,
      even though we have it. We can create a separate "historical" git
      archive of that later if we want to, and in the meantime it's about
      3.2GB when imported into git - space that would just make the early
      git days unnecessarily complicated, when we don't have a lot of good
      infrastructure for it.
      
      Let it rip!
      1da177e4