1. 23 8月, 2017 1 次提交
  2. 19 8月, 2017 1 次提交
  3. 16 8月, 2017 1 次提交
  4. 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
  5. 07 7月, 2017 1 次提交
  6. 22 6月, 2017 1 次提交
  7. 17 6月, 2017 1 次提交
  8. 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
  9. 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
  10. 01 6月, 2017 2 次提交
  11. 26 5月, 2017 1 次提交
  12. 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
  13. 18 5月, 2017 2 次提交
  14. 16 5月, 2017 1 次提交
  15. 15 5月, 2017 1 次提交
  16. 12 5月, 2017 1 次提交
  17. 10 5月, 2017 2 次提交
  18. 09 5月, 2017 1 次提交
  19. 31 3月, 2017 1 次提交
  20. 30 3月, 2017 1 次提交
  21. 03 3月, 2017 4 次提交
  22. 28 2月, 2017 1 次提交
  23. 27 2月, 2017 2 次提交
  24. 26 2月, 2017 2 次提交
  25. 23 2月, 2017 1 次提交
  26. 20 2月, 2017 1 次提交
  27. 16 2月, 2017 1 次提交
  28. 15 2月, 2017 3 次提交