1. 07 10月, 2017 1 次提交
  2. 29 9月, 2017 1 次提交
  3. 22 9月, 2017 1 次提交
  4. 18 9月, 2017 1 次提交
  5. 14 9月, 2017 3 次提交
    • Z
      drm/i915: Remove the "INDEX" suffix from PPAT marcos · c095b97c
      Zhi Wang 提交于
      Remove the "INDEX" suffix from PPAT marcos as they are bits actually, not
      indexes.
      Suggested-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NZhi Wang <zhi.a.wang@intel.com>
      Cc: Ben Widawsky <benjamin.widawsky@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1505392783-4084-2-git-send-email-zhi.a.wang@intel.com
      c095b97c
    • Z
      drm/i915: Introduce private PAT management · 4395890a
      Zhi Wang 提交于
      The private PAT management is to support PPAT entry manipulation. Two
      APIs are introduced for dynamically managing PPAT entries: intel_ppat_get
      and intel_ppat_put.
      
      intel_ppat_get will search for an existing PPAT entry which perfectly
      matches the required PPAT value. If not, it will try to allocate a new
      entry if there is any available PPAT indexs, or return a partially
      matched PPAT entry if there is no available PPAT indexes.
      
      intel_ppat_put will put back the PPAT entry which comes from
      intel_ppat_get. If it's dynamically allocated, the reference count will
      be decreased. If the reference count turns into zero, the PPAT index is
      freed again.
      
      Besides, another two callbacks are introduced to support the private PAT
      management framework. One is ppat->update_hw(), which writes the PPAT
      configurations in ppat->entries into HW. Another one is ppat->match, which
      will return a score to show how two PPAT values match with each other.
      
      v17:
      
      - Refine the comparision of score of BDW. (Joonas)
      
      v16:
      
      - Fix a bug in PPAT match function of BDW. (Joonas)
      
      v15:
      
      - Refine some code flow. (Joonas)
      
      v12:
      
      - Fix a problem "not returning the entry of best score". (Zhenyu)
      
      v7:
      
      - Keep all the register writes unchanged in this patch. (Joonas)
      
      v6:
      
      - Address all comments from Chris:
      http://www.spinics.net/lists/intel-gfx/msg136850.html
      
      - Address all comments from Joonas:
      http://www.spinics.net/lists/intel-gfx/msg136845.html
      
      v5:
      
      - Add check and warnnings for those platforms which don't have PPAT.
      
      v3:
      
      - Introduce dirty bitmap for PPAT registers. (Chris)
      - Change the name of the pointer "dev_priv" to "i915". (Chris)
      - intel_ppat_{get, put} returns/takes a const intel_ppat_entry *. (Chris)
      
      v2:
      
      - API re-design. (Chris)
      Signed-off-by: NZhi Wang <zhi.a.wang@intel.com>
      Cc: Ben Widawsky <benjamin.widawsky@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> #v7
      Reviewed-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      [Joonas: Use BIT() in the enum in bdw_private_pat_match]
      Signed-off-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1505392783-4084-1-git-send-email-zhi.a.wang@intel.com
      4395890a
    • M
      mm: treewide: remove GFP_TEMPORARY allocation flag · 0ee931c4
      Michal Hocko 提交于
      GFP_TEMPORARY was introduced by commit e12ba74d ("Group short-lived
      and reclaimable kernel allocations") along with __GFP_RECLAIMABLE.  It's
      primary motivation was to allow users to tell that an allocation is
      short lived and so the allocator can try to place such allocations close
      together and prevent long term fragmentation.  As much as this sounds
      like a reasonable semantic it becomes much less clear when to use the
      highlevel GFP_TEMPORARY allocation flag.  How long is temporary? Can the
      context holding that memory sleep? Can it take locks? It seems there is
      no good answer for those questions.
      
      The current implementation of GFP_TEMPORARY is basically GFP_KERNEL |
      __GFP_RECLAIMABLE which in itself is tricky because basically none of
      the existing caller provide a way to reclaim the allocated memory.  So
      this is rather misleading and hard to evaluate for any benefits.
      
      I have checked some random users and none of them has added the flag
      with a specific justification.  I suspect most of them just copied from
      other existing users and others just thought it might be a good idea to
      use without any measuring.  This suggests that GFP_TEMPORARY just
      motivates for cargo cult usage without any reasoning.
      
      I believe that our gfp flags are quite complex already and especially
      those with highlevel semantic should be clearly defined to prevent from
      confusion and abuse.  Therefore I propose dropping GFP_TEMPORARY and
      replace all existing users to simply use GFP_KERNEL.  Please note that
      SLAB users with shrinkers will still get __GFP_RECLAIMABLE heuristic and
      so they will be placed properly for memory fragmentation prevention.
      
      I can see reasons we might want some gfp flag to reflect shorterm
      allocations but I propose starting from a clear semantic definition and
      only then add users with proper justification.
      
      This was been brought up before LSF this year by Matthew [1] and it
      turned out that GFP_TEMPORARY really doesn't have a clear semantic.  It
      seems to be a heuristic without any measured advantage for most (if not
      all) its current users.  The follow up discussion has revealed that
      opinions on what might be temporary allocation differ a lot between
      developers.  So rather than trying to tweak existing users into a
      semantic which they haven't expected I propose to simply remove the flag
      and start from scratch if we really need a semantic for short term
      allocations.
      
      [1] http://lkml.kernel.org/r/20170118054945.GD18349@bombadil.infradead.org
      
      [akpm@linux-foundation.org: fix typo]
      [akpm@linux-foundation.org: coding-style fixes]
      [sfr@canb.auug.org.au: drm/i915: fix up]
        Link: http://lkml.kernel.org/r/20170816144703.378d4f4d@canb.auug.org.au
      Link: http://lkml.kernel.org/r/20170728091904.14627-1-mhocko@kernel.orgSigned-off-by: NMichal Hocko <mhocko@suse.com>
      Signed-off-by: NStephen Rothwell <sfr@canb.auug.org.au>
      Acked-by: NMel Gorman <mgorman@suse.de>
      Acked-by: NVlastimil Babka <vbabka@suse.cz>
      Cc: Matthew Wilcox <willy@infradead.org>
      Cc: Neil Brown <neilb@suse.de>
      Cc: "Theodore Ts'o" <tytso@mit.edu>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      0ee931c4
  6. 12 9月, 2017 1 次提交
  7. 09 9月, 2017 1 次提交
  8. 07 9月, 2017 1 次提交
    • C
      drm/i915: wire up shrinkctl->nr_scanned · 912d572d
      Chris Wilson 提交于
      shrink_slab() allows us to report back the number of objects we
      successfully scanned (out of the target shrinkctl->nr_to_scan).  As
      report the number of pages owned by each GEM object as a separate item
      to the shrinker, we cannot precisely control the number of shrinker
      objects we scan on each pass; and indeed may free more than requested.
      If we fail to tell the shrinker about the number of objects we process,
      it will continue to hold a grudge against us as any objects left
      unscanned are added to the next reclaim -- and so we will keep on
      "unfairly" shrinking our own slab in comparison to other slabs.
      
      Link: http://lkml.kernel.org/r/20170822135325.9191-2-chris@chris-wilson.co.ukSigned-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Michal Hocko <mhocko@suse.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Hillf Danton <hillf.zj@alibaba-inc.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Cc: Vlastimil Babka <vbabka@suse.cz>
      Cc: Mel Gorman <mgorman@techsingularity.net>
      Cc: Shaohua Li <shli@fb.com>
      Cc: Christoph Lameter <cl@linux.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
      Cc: Pekka Enberg <penberg@kernel.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      912d572d
  9. 06 9月, 2017 1 次提交
  10. 02 9月, 2017 1 次提交
  11. 01 9月, 2017 1 次提交
  12. 23 8月, 2017 1 次提交
  13. 19 8月, 2017 1 次提交
  14. 16 8月, 2017 1 次提交
  15. 15 8月, 2017 2 次提交
    • T
      drm/i915: Enable guest i915 full ppgtt functionality · 8a4ab66f
      Tina Zhang 提交于
      Enable the guest i915 full ppgtt functionality when host can provide this
      capability. vgt_caps is introduced to guest i915 driver to get the vgpu
      capabilities from the device model. VGT_CPAS_FULL_PPGTT is one of the
      capabilities type to let guest i915 dirver know that the guest i915 full
      ppgtt is supported by device model.
      
      Notice that the minor version of pvinfo isn't bumped because of this
      vgt_caps introduction, due to older guest would be broken by simply
      increasing the pvinfo version. Although the pvinfo minor version doesn't
      increase, the compatibility won't be blocked. The compatibility is ensured
      by checking the value of caps field in pvinfo. Zero means no full ppgtt
      support and BIT(2) means this feature is provided.
      
      Changes since v1:
      - Use u32 instead of uint32_t (Joonas)
      - Move VGT_CAPS_FULL_PPGTT introduction to this patch and use #define
        instead of enum (Joonas)
      - Rewrite the vgpu full ppgtt capability checking logic. (Joonas)
      - Some coding style refine. (Joonas)
      
      Changes since v2:
      - Divide the whole patch set into two separate patch series, with one
        patch in i915 side to check guest i915 full ppgtt capability and enable
        it when this capability is supported by the device model, and the other
        one in gvt side which fixs the blocking issue and enables the device
        model to provide the capability to guest. And this patch focuses on guest
        i915 side. (Joonas)
      - Change the title from "introduce vgt_caps to pvinfo" to
        "Enable guest i915 full ppgtt functionality". (Tina)
      
      Change since v3:
      - Add some comments about pvinfo caps and version. (Joonas)
      
      Change since v4:
      - Tested by Tina Zhang.
      
      Change since v5:
      - Add limitation about supporting 32bit full ppgtt.
      
      Change since v6:
      - Change the fallback to 48bit full ppgtt if i915.ppgtt_enable=2. (Zhenyu)
      
      Change in v9:
      - Remove the fixme comment due to no plan for 32bit full ppgtt
        support. (Zhenyu)
      - Reorder the patch-set to fix compiling issue with git-bisect. (Zhenyu)
      - Add print log when forcing guest 48bit full ppgtt. (Zhenyu)
      
      v10:
      - Update against Joonas's has_full_ppgtt and has_full_48bit_ppgtt disconnect
        change. (Zhenyu)
      
      Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> # in v2
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Tina Zhang <tina.zhang@intel.com>
      Signed-off-by: NTina Zhang <tina.zhang@intel.com>
      Signed-off-by: NZhenyu Wang <zhenyuw@linux.intel.com>
      8a4ab66f
    • J
      drm/i915: Disconnect 32 and 48 bit ppGTT support · 4fc05063
      Joonas Lahtinen 提交于
      Configurations like virtualized environments may support only 48 bit
      ppGTT without supporting 32 bit ppGTT. Support this by disconnecting
      the relationship of the two feature bits.
      
      Cc: Tina Zhang <tina.zhang@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Zhi Wang <zhi.a.wang@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Signed-off-by: NZhenyu Wang <zhenyuw@linux.intel.com>
      4fc05063
  16. 07 7月, 2017 1 次提交
  17. 22 6月, 2017 1 次提交
  18. 17 6月, 2017 1 次提交
  19. 16 6月, 2017 1 次提交
    • C
      drm/i915: First try the previous execbuffer location · 616d9cee
      Chris Wilson 提交于
      When choosing a slot for an execbuffer, we ideally want to use the same
      address as last time (so that we don't have to rebind it) and the same
      address as expected by the user (so that we don't have to fixup any
      relocations pointing to it). If we first try to bind the incoming
      execbuffer->offset from the user, or the currently bound offset that
      should hopefully achieve the goal of avoiding the rebind cost and the
      relocation penalty. However, if the object is not currently bound there
      we don't want to arbitrarily unbind an object in our chosen position and
      so choose to rebind/relocate the incoming object instead. After we
      report the new position back to the user, on the next pass the
      relocations should have settled down.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NJoonas Lahtinen <joonas.lahtien@linux.intel.com>
      616d9cee
  20. 07 6月, 2017 2 次提交
    • C
      drm/i915: Guard against i915_ggtt_disable_guc() being invoked unconditionally · d90c9890
      Chris Wilson 提交于
      Commit 7c3f86b6 ("drm/i915: Invalidate the guc ggtt TLB upon
      insertion") added the restoration of the invalidation routine after the
      GuC was disabled, but missed that the GuC was unconditionally disabled
      when not used. This then overwrites the invalidate routine for the older
      chipsets, causing havoc and breaking resume as the most obvious victim.
      
      We place the guard inside i915_ggtt_disable_guc() to be backport
      friendly (the bug was introduced into v4.11) but it would be preferred
      to be in more control over when this was guard (i.e. do not try and
      teardown the data structures before we have enabled them). That should
      be true with the reorganisation of the guc loaders.
      Reported-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Fixes: 7c3f86b6 ("drm/i915: Invalidate the guc ggtt TLB upon insertion")
      Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Oscar Mateo <oscar.mateo@intel.com>
      Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
      Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
      Cc: <stable@vger.kernel.org> # v4.11+
      Link: http://patchwork.freedesktop.org/patch/msgid/20170531190514.3691-1-chris@chris-wilson.co.ukReviewed-by: NMichel Thierry <michel.thierry@intel.com>
      (cherry picked from commit cb60606d)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      d90c9890
    • J
      drm/i915: Serialize GTT/Aperture accesses on BXT · d86b18a0
      Jon Bloomfield 提交于
      BXT has a H/W issue with IOMMU which can lead to system hangs when
      Aperture accesses are queued within the GAM behind GTT Accesses.
      
      This patch avoids the condition by wrapping all GTT updates in stop_machine
      and using a flushing read prior to restarting the machine.
      
      The stop_machine guarantees no new Aperture accesses can begin while
      the PTE writes are being emmitted. The flushing read ensures that
      any following Aperture accesses cannot begin until the PTE writes
      have been cleared out of the GAM's fifo.
      
      Only FOLLOWING Aperture accesses need to be separated from in flight
      PTE updates. PTE Writes may follow tightly behind already in flight
      Aperture accesses, so no flushing read is required at the start of
      a PTE update sequence.
      
      This issue was reproduced by running
      	igt/gem_readwrite and
      	igt/gem_render_copy
      simultaneously from different processes, each in a tight loop,
      with INTEL_IOMMU enabled.
      
      This patch was originally published as:
      	drm/i915: Serialize GTT Updates on BXT
      
      [Note: This will cause a performance penalty for some use cases, but
      avoiding hangs trumps performance hits. This may need to be worked
      around in Mesa to recover the lost performance.]
      
      v2: Move bxt/iommu detection into static function
          Remove #ifdef CONFIG_INTEL_IOMMU protection
          Make function names more reflective of purpose
          Move flushing read into static function
      
      v3: Tidy up for checkpatch.pl
      
      Testcase: igt/gem_concurrent_blit
      Signed-off-by: NJon Bloomfield <jon.bloomfield@intel.com>
      Cc: John Harrison <john.C.Harrison@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Daniel Vetter <daniel.vetter@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: stable@vger.kernel.org
      Link: http://patchwork.freedesktop.org/patch/msgid/1495641251-30022-1-git-send-email-jon.bloomfield@intel.comReviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      (cherry picked from commit 0ef34ad6)
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      d86b18a0
  21. 01 6月, 2017 2 次提交
  22. 26 5月, 2017 1 次提交
  23. 25 5月, 2017 1 次提交
    • J
      drm/i915: Serialize GTT/Aperture accesses on BXT · 0ef34ad6
      Jon Bloomfield 提交于
      BXT has a H/W issue with IOMMU which can lead to system hangs when
      Aperture accesses are queued within the GAM behind GTT Accesses.
      
      This patch avoids the condition by wrapping all GTT updates in stop_machine
      and using a flushing read prior to restarting the machine.
      
      The stop_machine guarantees no new Aperture accesses can begin while
      the PTE writes are being emmitted. The flushing read ensures that
      any following Aperture accesses cannot begin until the PTE writes
      have been cleared out of the GAM's fifo.
      
      Only FOLLOWING Aperture accesses need to be separated from in flight
      PTE updates. PTE Writes may follow tightly behind already in flight
      Aperture accesses, so no flushing read is required at the start of
      a PTE update sequence.
      
      This issue was reproduced by running
      	igt/gem_readwrite and
      	igt/gem_render_copy
      simultaneously from different processes, each in a tight loop,
      with INTEL_IOMMU enabled.
      
      This patch was originally published as:
      	drm/i915: Serialize GTT Updates on BXT
      
      v2: Move bxt/iommu detection into static function
          Remove #ifdef CONFIG_INTEL_IOMMU protection
          Make function names more reflective of purpose
          Move flushing read into static function
      
      v3: Tidy up for checkpatch.pl
      
      Testcase: igt/gem_concurrent_blit
      Signed-off-by: NJon Bloomfield <jon.bloomfield@intel.com>
      Cc: John Harrison <john.C.Harrison@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Daniel Vetter <daniel.vetter@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/1495641251-30022-1-git-send-email-jon.bloomfield@intel.comReviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      0ef34ad6
  24. 18 5月, 2017 2 次提交
  25. 16 5月, 2017 1 次提交
  26. 15 5月, 2017 1 次提交
  27. 12 5月, 2017 1 次提交
  28. 10 5月, 2017 2 次提交
  29. 09 5月, 2017 1 次提交
  30. 31 3月, 2017 1 次提交
  31. 30 3月, 2017 1 次提交
  32. 03 3月, 2017 2 次提交