1. 29 Oct, 2010 7 commits
  2. 28 Oct, 2010 7 commits
  3. 27 Oct, 2010 26 commits
    • Chris Wilson's avatar
      drm/i915: Capture ERROR register on Sandybridge hangs · f406839f
      Chris Wilson authored
      This holds error state from the main graphics arbiter mainly involving
      the DMA engine and address translation.
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      f406839f
    • Chris Wilson's avatar
      drm/i915: Use the agp_size determined from the GTT · 71e9339c
      Chris Wilson authored
      This is the same value as before, but it just makes the code slightly
      more readable to use the local variable than converting the aperture
      size into bytes every time.
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      71e9339c
    • Chris Wilson's avatar
    • Daniel Vetter's avatar
      drm/i915: add accounting for mappable objects in gtt v2 · fb7d516a
      Daniel Vetter authored
      More precisely: For those that _need_ to be mappable. Also add two
      BUG_ONs in fault and pin to check the consistency of the mappable
      flag.
      
      Changes in v2:
      - Add tracking of gtt mappable space (to notice mappable/unmappable
        balancing issues).
      - Improve the mappable working set tracking by tracking fault and pin
        separately.
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      fb7d516a
    • Daniel Vetter's avatar
      drm/i915: add mappable to gem_object_bind tracepoint · ec57d260
      Daniel Vetter authored
      This way we can make some more educated guesses as to why exactly
      we can't use 2G apertures to their full potential ;)
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      ec57d260
    • Daniel Vetter's avatar
      intel-gtt: maximize ggtt size on platforms that support this · 20172842
      Daniel Vetter authored
      On VT-d supporting platforms the GGTT is allocated in a stolen mem
      section separate from graphcis stolen mem. The GMCH register contains
      a bitfield specifying the size of that region. Docs suggest that this
      region can only be used for GGTT and PPGTT. Hence ensure that the
      PPGTT is disabled and use the complete area for the GGTT.
      
      Unfortunately the graphics core on G33/Pineview can't cope with really
      large GTTs and the BIOS usually enables the maximum of 512MB. So
      don't bother with maximizing the GTT on these platforms.
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      20172842
    • Daniel Vetter's avatar
      intel-gtt: save PGETBL_CTL later in the setup process · b3eafc5a
      Daniel Vetter authored
      ... and switch to a more classical store-reg-on-suspend, restore-on-resume
      way of doing things. Obviously this is just preparation for the future,
      the code is not there at all, yet.
      
      This is needed because the next patch adjusts this register and everything
      in it (not just the pagetable address) needs to be restored on resume.
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      b3eafc5a
    • Daniel Vetter's avatar
      drm/i915: use the complete gtt · 53984635
      Daniel Vetter authored
      At least the part that's currently enabled by the BIOS.
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      53984635
    • Daniel Vetter's avatar
      drm/i915: unbind unmappable objects on fault/pin · 16e809ac
      Daniel Vetter authored
      In i915_gem_object_pin obviously unbind only if mappable is true.
      
      This is the last part to enable gtt_mappable_end != gtt_size, which
      the next patch will do.
      
      v2: Fences on g33/pineview only work in the mappable part of the
      gtt.
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      16e809ac
    • Daniel Vetter's avatar
      drm/i915: range-restricted bind_to_gtt · 920afa77
      Daniel Vetter authored
      Like before add a parameter mappable (also to gem_object_pin) and
      set it depending upon the context. Only bos that are brought into
      the gtt due to an execbuffer call can be put into the unmappable
      part of the gtt, everything else (especially pinned objects) need
      to be put into the mappable part of the gtt.
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      920afa77
    • Daniel Vetter's avatar
      drm/i915: range-restricted eviction support · a6e0aa42
      Daniel Vetter authored
      Add a mappable parameter to i915_gem_evict_something to distinguish
      the two cases (non-restricted vs. mappable gtt allocations). No
      functional changes because the mappable limit is set to the end of
      the gtt currently.
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      a6e0aa42
    • Daniel Vetter's avatar
    • Chris Wilson's avatar
    • Chris Wilson's avatar
    • Chris Wilson's avatar
      drm/i915/debugfs: Include info for the other rings · c2c347a9
      Chris Wilson authored
      The render ring is not alone any more! And the other rings are just as
      troublesome...
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      c2c347a9
    • Chris Wilson's avatar
      drm/i915: Fix hangcheck to handle multiple rings · 893eead0
      Chris Wilson authored
      Currently, we believe the GPU is idle if just the RENDER ring is idle.
      This is obviously wrong if we only using either the BLT or the BSD
      rings and so masking genuine hangs.
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      893eead0
    • Chris Wilson's avatar
      drm/i915: Move object to GPU domains after dispatching execbuffer · 7e318e18
      Chris Wilson authored
      In the event that we fail to dispatch the execbuffer, for example if
      there is insufficient space on the ring, we were leaving the objects in
      an inconsistent state. Notably they were marked as being in the GPU
      write domain, but were not added to the ring or any list. This would
      lead to inevitable oops:
      
      [ 1010.522940] [drm:i915_gem_do_execbuffer] *ERROR* dispatch failed -16
      [ 1010.523055] BUG: unable to handle kernel NULL pointer dereference at
      0000000000000088
      [ 1010.523097] IP: [<ffffffff8122d006>] i915_gem_flush_ring+0x26/0x140
      [ 1010.523120] PGD 14cf2f067 PUD 14ce04067 PMD 0
      [ 1010.523140] Oops: 0000 [#1] SMP
      [ 1010.523154] last sysfs file: /sys/devices/virtual/vc/vcsa2/uevent
      [ 1010.523173] CPU 0
      [ 1010.523183] Pid: 716, comm: X Not tainted 2.6.36+ #34 LosLunas
      CRB/SandyBridge Platform
      [ 1010.523206] RIP: 0010:[<ffffffff8122d006>]  [<ffffffff8122d006>]
      i915_gem_flush_ring+0x26/0x140
      [ 1010.523233] RSP: 0018:ffff88014bf97cd8  EFLAGS: 00010296
      [ 1010.523249] RAX: ffff88014e2d1808 RBX: 0000000000000000 RCX: 0000000000000000
      [ 1010.523270] RDX: 0000000000000002 RSI: 0000000000000000 RDI: 0000000000000000
      [ 1010.523290] RBP: ffff88014e2d1000 R08: 0000000000000002 R09: 00000000400c645f
      [ 1010.523311] R10: 0000000000000001 R11: 0000000000000246 R12: 0000000000000002
      [ 1010.523331] R13: ffff88014e29a000 R14: 00000000000000c8 R15: ffffffff8162eb28
      [ 1010.523352] FS:  00007fc62379d700(0000) GS:ffff88001fc00000(0000) knlGS:0000000000000000
      [ 1010.523375] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [ 1010.523392] CR2: 0000000000000088 CR3: 000000014bf87000 CR4: 00000000000406f0
      [ 1010.523412] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [ 1010.523433] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      [ 1010.523454] Process X (pid: 716, threadinfo ffff88014bf96000, task ffff88014cc1ee40)
      [ 1010.523475] Stack:
      [ 1010.523483]  ffff88014d5199c0 0000000000000200 0000000000000000 ffff88014bcc6400
      [ 1010.523509] <0> 0000000000000000 0000000000000001 ffff88014e29a000 ffff88014bcc6400
      [ 1010.523537] <0> ffffffff8162eb28 ffffffff8122faa8 ffff88014e29a000 ffff88014bcc6400
      [ 1010.523568] Call Trace:
      [ 1010.523578]  [<ffffffff8122faa8>] ?  i915_gem_object_flush_gpu_write_domain+0x48/0x80
      [ 1010.523601]  [<ffffffff8122fb8e>] ?  i915_gem_object_set_to_gtt_domain+0x2e/0xb0
      [ 1010.523623]  [<ffffffff8123113b>] ?  i915_gem_set_domain_ioctl+0xdb/0x1f0
      [ 1010.523644]  [<ffffffff8120a3f1>] ? drm_ioctl+0x3d1/0x460
      [ 1010.523660]  [<ffffffff81231060>] ?  i915_gem_set_domain_ioctl+0x0/0x1f0
      [ 1010.523682]  [<ffffffff81092618>] ?  vma_prio_tree_insert+0x28/0x120
      [ 1010.523701]  [<ffffffff8109f379>] ? vma_link+0x99/0xf0
      [ 1010.523717]  [<ffffffff810a111d>] ? mmap_region+0x1ed/0x4f0
      [ 1010.523734]  [<ffffffff810c306f>] ? do_vfs_ioctl+0x9f/0x580
      [ 1010.523750]  [<ffffffff810c3599>] ? sys_ioctl+0x49/0x80
      [ 1010.523767]  [<ffffffff810022eb>] ?  system_call_fastpath+0x16/0x1b
      [ 1010.523785] Code: 00 00 00 00 00 41 57 89 ce 41 56 41 55 41 54 45 89 c4 55 48 89 fd 53 48 89 d3 44 89 c2 48 89 df 4c 8d b3 c8 00 00 00 48 83 ec 18 <ff> 93 88 00 00 00 48 8b 83 c8 00 00 00 4c 8b bd 30 03 00 00 48
      [ 1010.523946] RIP  [<ffffffff8122d006>] i915_gem_flush_ring+0x26/0x140
      [ 1010.523966]  RSP <ffff88014bf97cd8>
      [ 1010.523977] CR2: 0000000000000088
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      7e318e18
    • Chris Wilson's avatar
      drm/i915: Propagate errors from writing to ringbuffer · e1f99ce6
      Chris Wilson authored
      Preparing the ringbuffer for adding new commands can fail (a timeout
      whilst waiting for the GPU to catch up and free some space). So check
      for any potential error before overwriting HEAD with new commands, and
      propagate that error back to the user where possible.
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      e1f99ce6
    • Chris Wilson's avatar
      drm/i915/ringbuffer: Drop the redundant dev from the vfunc interface · 78501eac
      Chris Wilson authored
      The ringbuffer keeps a pointer to the parent device, so we can use that
      instead of passing around the pointer on the stack.
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      78501eac
    • Takashi Iwai's avatar
      drm/i915: Fix typo from "Enable DisplayPort Audio" · dd2b379f
      Takashi Iwai authored
      Hi,
      
      while I looked through your changes in drm-intel git tree (as I've got
      a pressure for supporting DisplayPort audio), I stumbled on the
      possible bug in the commit a9756bb5
      
      	Author: Zhenyu Wang <zhenyuw@linux.intel.com>
      	Date:   Sun Sep 19 13:09:06 2010 +0800
      	drm/i915: Enable DisplayPort audio
      
      In this commit, you changed the return value of g4x_dp_detect()
      to "bit", but it should be "status", I suppose.
      
      [ickle: mea culpa.]
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=31094Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      dd2b379f
    • Al Viro's avatar
      fix braino in fs: do not assign default i_ino in new_inode · 12ba8d1e
      Al Viro authored
      usbfs_get_inode() is something completely different...
      
      Bogosity introduced by commit 85fe4025 ("fs: do not assign default
      i_ino in new_inode").
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Cc: Christoph Hellwig <hch@lst.de>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      12ba8d1e
    • Linus Torvalds's avatar
      Merge branch 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6 · c48c43e4
      Linus Torvalds authored
      * 'drm-core-next' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6: (476 commits)
        vmwgfx: Implement a proper GMR eviction mechanism
        drm/radeon/kms: fix r6xx/7xx 1D tiling CS checker v2
        drm/radeon/kms: properly compute group_size on 6xx/7xx
        drm/radeon/kms: fix 2D tile height alignment in the r600 CS checker
        drm/radeon/kms/evergreen: set the clear state to the blit state
        drm/radeon/kms: don't poll dac load detect.
        gpu: Add Intel GMA500(Poulsbo) Stub Driver
        drm/radeon/kms: MC vram map needs to be >= pci aperture size
        drm/radeon/kms: implement display watermark support for evergreen
        drm/radeon/kms/evergreen: add some additional safe regs v2
        drm/radeon/r600: fix tiling issues in CS checker.
        drm/i915: Move gpu_write_list to per-ring
        drm/i915: Invalidate the to-ring, flush the old-ring when updating domains
        drm/i915/ringbuffer: Write the value passed in to the tail register
        agp/intel: Restore valid PTE bit for Sandybridge after bdd30729
        drm/i915: Fix flushing regression from 9af90d19
        drm/i915/sdvo: Remove unused encoding member
        i915: enable AVI infoframe for intel_hdmi.c [v4]
        drm/i915: Fix current fb blocking for page flip
        drm/i915: IS_IRONLAKE is synonymous with gen == 5
        ...
      
      Fix up conflicts in
       - drivers/gpu/drm/i915/{i915_gem.c, i915/intel_overlay.c}: due to the
         new simplified stack-based kmap_atomic() interface
       - drivers/gpu/drm/vmwgfx/vmwgfx_drv.c: added .llseek entry due to BKL
         removal cleanups.
      c48c43e4
    • Linus Torvalds's avatar
      Merge branches 'upstream/xenfs' and 'upstream/core' of... · 520045db
      Linus Torvalds authored
      Merge branches 'upstream/xenfs' and 'upstream/core' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen
      
      * 'upstream/xenfs' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen:
        xen/privcmd: make privcmd visible in domU
        xen/privcmd: move remap_domain_mfn_range() to core xen code and export.
        privcmd: MMAPBATCH: Fix error handling/reporting
        xenbus: export xen_store_interface for xenfs
        xen/privcmd: make sure vma is ours before doing anything to it
        xen/privcmd: print SIGBUS faults
        xen/xenfs: set_page_dirty is supposed to return true if it dirties
        xen/privcmd: create address space to allow writable mmaps
        xen: add privcmd driver
        xen: add variable hypercall caller
        xen: add xen_set_domain_pte()
        xen: add /proc/xen/xsd_{kva,port} to xenfs
      
      * 'upstream/core' of git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen: (29 commits)
        xen: include xen/xen.h for definition of xen_initial_domain()
        xen: use host E820 map for dom0
        xen: correctly rebuild mfn list list after migration.
        xen: improvements to VIRQ_DEBUG output
        xen: set up IRQ before binding virq to evtchn
        xen: ensure that all event channels start off bound to VCPU 0
        xen/hvc: only notify if we actually sent something
        xen: don't add extra_pages for RAM after mem_end
        xen: add support for PAT
        xen: make sure xen_max_p2m_pfn is up to date
        xen: limit extra memory to a certain ratio of base
        xen: add extra pages for E820 RAM regions, even if beyond mem_end
        xen: make sure xen_extra_mem_start is beyond all non-RAM e820
        xen: implement "extra" memory to reserve space for pages not present at boot
        xen: Use host-provided E820 map
        xen: don't map missing memory
        xen: defer building p2m mfn structures until kernel is mapped
        xen: add return value to set_phys_to_machine()
        xen: convert p2m to a 3 level tree
        xen: make install_p2mtop_page() static
        ...
      
      Fix up trivial conflict in arch/x86/xen/mmu.c, and fix the use of
      'reserve_early()' - in the new memblock world order it is now
      'memblock_x86_reserve_range()' instead. Pointed out by Jeremy.
      520045db
    • Thomas Hellstrom's avatar
      vmwgfx: Implement a proper GMR eviction mechanism · 135cba0d
      Thomas Hellstrom authored
      Use Ben's new range manager hooks to implement a manager for
      GMRs that manages ids rather than ranges.
      This means we can use the standard TTM code for binding, unbinding and
      eviction.
      Signed-off-by: default avatarThomas Hellstrom <thellstrom@vmware.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      135cba0d
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 · 426e1f5c
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6: (52 commits)
        split invalidate_inodes()
        fs: skip I_FREEING inodes in writeback_sb_inodes
        fs: fold invalidate_list into invalidate_inodes
        fs: do not drop inode_lock in dispose_list
        fs: inode split IO and LRU lists
        fs: switch bdev inode bdi's correctly
        fs: fix buffer invalidation in invalidate_list
        fsnotify: use dget_parent
        smbfs: use dget_parent
        exportfs: use dget_parent
        fs: use RCU read side protection in d_validate
        fs: clean up dentry lru modification
        fs: split __shrink_dcache_sb
        fs: improve DCACHE_REFERENCED usage
        fs: use percpu counter for nr_dentry and nr_dentry_unused
        fs: simplify __d_free
        fs: take dcache_lock inside __d_path
        fs: do not assign default i_ino in new_inode
        fs: introduce a per-cpu last_ino allocator
        new helper: ihold()
        ...
      426e1f5c
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband · 9e5fca25
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: (63 commits)
        IB/qib: clean up properly if pci_set_consistent_dma_mask() fails
        IB/qib: Allow driver to load if PCIe AER fails
        IB/qib: Fix uninitialized pointer if CONFIG_PCI_MSI not set
        IB/qib: Fix extra log level in qib_early_err()
        RDMA/cxgb4: Remove unnecessary KERN_<level> use
        RDMA/cxgb3: Remove unnecessary KERN_<level> use
        IB/core: Add link layer type information to sysfs
        IB/mlx4: Add VLAN support for IBoE
        IB/core: Add VLAN support for IBoE
        IB/mlx4: Add support for IBoE
        mlx4_en: Change multicast promiscuous mode to support IBoE
        mlx4_core: Update data structures and constants for IBoE
        mlx4_core: Allow protocol drivers to find corresponding interfaces
        IB/uverbs: Return link layer type to userspace for query port operation
        IB/srp: Sync buffer before posting send
        IB/srp: Use list_first_entry()
        IB/srp: Reduce number of BUSY conditions
        IB/srp: Eliminate two forward declarations
        IB/mlx4: Signal node desc changes to SM by using FW to generate trap 144
        IB: Replace EXTRA_CFLAGS with ccflags-y
        ...
      9e5fca25