1. 26 2月, 2015 2 次提交
  2. 25 2月, 2015 2 次提交
    • B
      drm/i915: Create page table allocators · 06fda602
      Ben Widawsky 提交于
      As we move toward dynamic page table allocation, it becomes much easier
      to manage our data structures if break do things less coarsely by
      breaking up all of our actions into individual tasks.  This makes the
      code easier to write, read, and verify.
      
      Aside from the dissection of the allocation functions, the patch
      statically allocates the page table structures without a page directory.
      This remains the same for all platforms,
      
      The patch itself should not have much functional difference. The primary
      noticeable difference is the fact that page tables are no longer
      allocated, but rather statically declared as part of the page directory.
      This has non-zero overhead, but things gain additional complexity as a
      result.
      
      This patch exists for a few reasons:
      1. Splitting out the functions allows easily combining GEN6 and GEN8
      code. Page tables have no difference based on GEN8. As we'll see in a
      future patch when we add the DMA mappings to the allocations, it
      requires only one small change to make work, and error handling should
      just fall into place.
      
      2. Unless we always want to allocate all page tables under a given PDE,
      we'll have to eventually break this up into an array of pointers (or
      pointer to pointer).
      
      3. Having the discrete functions is easier to review, and understand.
      All allocations and frees now take place in just a couple of locations.
      Reviewing, and catching leaks should be easy.
      
      4. Less important: the GFP flags are confined to one location, which
      makes playing around with such things trivial.
      
      v2: Updated commit message to explain why this patch exists
      
      v3: For lrc, s/pdp.page_directory[i].daddr/pdp.page_directory[i]->daddr/
      
      v4: Renamed free_pt/pd_single functions to unmap_and_free_pt/pd (Daniel)
      
      v5: Added additional safety checks in gen8 clear/free/unmap.
      
      v6: Use WARN_ON and return -EINVAL in alloc_pt_range (Mika).
      
      v7: Make err_out loop symmetrical to the way we allocate in
      alloc_pt_range. Also s/page_tables/page_table and correct commit
      message (Mika)
      
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: Michel Thierry <michel.thierry@intel.com> (v3+)
      Reviewed-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      06fda602
    • B
      drm/i915: Complete page table structures · 7324cc04
      Ben Widawsky 提交于
      Move the remaining members over to the new page table structures.
      
      This can be squashed with the previous commit if desire. The reasoning
      is the same as that patch. I simply felt it is easier to review if split.
      
      v2: In lrc: s/ppgtt->pd_dma_addr[i]/ppgtt->pdp.page_directory[i].daddr/
      v3: Rebase.
      v4: Rebased after s/page_tables/page_table/.
      Signed-off-by: NBen Widawsky <ben@bwidawsk.net>
      Signed-off-by: Michel Thierry <michel.thierry@intel.com> (v2+)
      Reviewed-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      7324cc04
  3. 24 2月, 2015 2 次提交
  4. 14 2月, 2015 5 次提交
  5. 31 1月, 2015 1 次提交
  6. 27 1月, 2015 8 次提交
  7. 13 1月, 2015 1 次提交
    • T
      drm/i915: Reset CSB read pointer in ring init · c0a03a2e
      Thomas Daniel 提交于
      A previous commit enabled execlists by default:
      
             commit 27401d12 ("drm/i915/bdw: Enable execlists by default where supported")
      
      This allowed routine testing of execlists which exposed a regression when
      resuming from suspend.  The cause was tracked down the to recent changes to the
      ring init sequence:
      
             commit 35a57ffb ("drm/i915: Only init engines once")
      
      During a suspend/resume cycle the hardware Context Status Buffer write pointer
      is reset.  However since the recent changes to the init sequence the software CSB
      read pointer is no longer reset.  This means that context status events are not
      handled correctly and new contexts are not written to the ELSP, resulting in an
      apparent GPU hang.
      
      Pending further changes to the ring init code, just move the
      ring->next_context_status_buffer initialization into gen8_init_common_ring to
      fix this regression.
      
      v2: Moved init into gen8_init_common_ring rather than context_enable after
      feedback from Daniel Vetter.  Updated commit msg to reflect this and also cite
      commits related to the regression.  Fixed bz link to correct bug.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88096
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Dave Gordon <david.s.gordon@intel.com>
      Signed-off-by: NThomas Daniel <thomas.daniel@intel.com>
      Reviewed-by: NDave Gordon <david.s.gordon@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      c0a03a2e
  8. 16 12月, 2014 1 次提交
  9. 15 12月, 2014 2 次提交
  10. 06 12月, 2014 2 次提交
  11. 05 12月, 2014 1 次提交
  12. 03 12月, 2014 13 次提交