1. 07 12月, 2010 1 次提交
  2. 28 11月, 2010 1 次提交
  3. 24 11月, 2010 1 次提交
  4. 21 11月, 2010 1 次提交
  5. 19 11月, 2010 1 次提交
    • C
      drm/i915: Do not hold mutex when faulting in user addresses · 51311d0a
      Chris Wilson 提交于
      Linus Torvalds found that it was rather trivial to trigger a system
      freeze:
      
        In fact, with lockdep, I don't even need to do the sysrq-d thing: it
        shows the bug as it happens. It's the X server taking the same lock
        recursively.
      
        Here's the problem:
      
          =============================================
          [ INFO: possible recursive locking detected ]
          2.6.37-rc2-00012-gbdbd01ac #7
          ---------------------------------------------
          Xorg/2816 is trying to acquire lock:
           (&dev->struct_mutex){+.+.+.}, at: [<ffffffff812c626c>] i915_gem_fault+0x50/0x17e
      
          but task is already holding lock:
           (&dev->struct_mutex){+.+.+.}, at: [<ffffffff812c403b>] i915_mutex_lock_interruptible+0x28/0x4a
      
          other info that might help us debug this:
          2 locks held by Xorg/2816:
           #0:  (&dev->struct_mutex){+.+.+.}, at: [<ffffffff812c403b>] i915_mutex_lock_interruptible+0x28/0x4a
           #1:  (&mm->mmap_sem){++++++}, at: [<ffffffff81022d4f>] page_fault+0x156/0x37b
      
      This recursion was introduced by rearranging the locking to avoid the
      double locking on the fast path (4f27b5d and fbd5a26d) and the
      introduction of the prefault to encourage the fast paths (b5e4f2b). In
      order to undo the problem, we rearrange the code to perform the access
      validation upfront, attempt to prefault and then fight for control of the
      mutex.  the best case scenario where the mutex is uncontended the
      prefaulting is not wasted.
      Reported-and-tested-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      51311d0a
  6. 13 11月, 2010 1 次提交
  7. 09 11月, 2010 1 次提交
  8. 08 11月, 2010 1 次提交
    • C
      drm/i915: Avoid might_fault during pwrite whilst holding our mutex · b47b30cc
      Chris Wilson 提交于
      ... and so prevent a potential circular reference:
      
        [ INFO: possible circular locking dependency detected ]
        2.6.37-rc1-uwe1+ #4
        -------------------------------------------------------
        Xorg/1401 is trying to acquire lock:
         (&mm->mmap_sem){++++++}, at: [<c01e4ddb>] might_fault+0x4b/0xa0
      
        but task is already holding lock:
         (&dev->struct_mutex){+.+.+.}, at: [<f869c3ac>]
        i915_mutex_lock_interruptible+0x3c/0x60 [i915]
      
        which lock already depends on the new lock.
      
      When the locking around the pwrite ioctl was simplified, I did not spot
      that the phys path never took any locks and so we introduced this
      potential circular reference.
      Reported-by: NUwe Helm <uwe.helm@googlemail.com>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      b47b30cc
  9. 01 11月, 2010 1 次提交
  10. 29 10月, 2010 1 次提交
  11. 27 10月, 2010 1 次提交
    • P
      mm: stack based kmap_atomic() · 3e4d3af5
      Peter Zijlstra 提交于
      Keep the current interface but ignore the KM_type and use a stack based
      approach.
      
      The advantage is that we get rid of crappy code like:
      
      	#define __KM_PTE			\
      		(in_nmi() ? KM_NMI_PTE : 	\
      		 in_irq() ? KM_IRQ_PTE :	\
      		 KM_PTE0)
      
      and in general can stop worrying about what context we're in and what kmap
      slots might be appropriate for that.
      
      The downside is that FRV kmap_atomic() gets more expensive.
      
      For now we use a CPP trick suggested by Andrew:
      
        #define kmap_atomic(page, args...) __kmap_atomic(page)
      
      to avoid having to touch all kmap_atomic() users in a single patch.
      
      [ not compiled on:
        - mn10300: the arch doesn't actually build with highmem to begin with ]
      
      [akpm@linux-foundation.org: coding-style fixes]
      [akpm@linux-foundation.org: fix up drivers/gpu/drm/i915/intel_overlay.c]
      Acked-by: NRik van Riel <riel@redhat.com>
      Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Acked-by: NChris Metcalf <cmetcalf@tilera.com>
      Cc: David Howells <dhowells@redhat.com>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Russell King <rmk@arm.linux.org.uk>
      Cc: Ralf Baechle <ralf@linux-mips.org>
      Cc: David Miller <davem@davemloft.net>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Cc: Dave Airlie <airlied@linux.ie>
      Cc: Li Zefan <lizf@cn.fujitsu.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      3e4d3af5
  12. 25 10月, 2010 1 次提交
  13. 23 10月, 2010 1 次提交
  14. 22 10月, 2010 2 次提交
  15. 21 10月, 2010 1 次提交
  16. 20 10月, 2010 3 次提交
  17. 19 10月, 2010 7 次提交
  18. 08 10月, 2010 1 次提交
    • C
      drm/i915: Wait for pending flips on the GPU · e59f2bac
      Chris Wilson 提交于
      Currently, if a batch buffer refers to an object with a pending flip,
      then we sleep until that pending flip is completed (unpinned and
      signalled). This is so that a flip can be queued and the user can
      continue rendering to the backbuffer oblivious to whether the buffer is
      still pinned as the scan out. (The kernel arbitrating at the last moment
      to stall the batch and wait until the buffer is unpinned and replaced as
      the front buffer.)
      
      As we only have a queue depth of 1, we can simply wait for the current
      pending flip to complete and continue rendering. We can achieve this
      with a single WAIT_FOR_EVENT command inserted into the ring buffer prior
      to executing the batch, *without* stalling the client.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      e59f2bac
  19. 04 10月, 2010 1 次提交
  20. 03 10月, 2010 2 次提交
  21. 02 10月, 2010 2 次提交
  22. 01 10月, 2010 4 次提交
  23. 30 9月, 2010 3 次提交
  24. 29 9月, 2010 1 次提交