1. 26 5月, 2017 1 次提交
  2. 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
  3. 18 5月, 2017 3 次提交
  4. 17 5月, 2017 1 次提交
  5. 15 5月, 2017 1 次提交
  6. 13 5月, 2017 3 次提交
    • R
      drm/i915/perf: rate limit spurious oa report notice · 712122ea
      Robert Bragg 提交于
      This change is pre-emptively aiming to avoid a potential cause of kernel
      logging noise in case some condition were to result in us seeing invalid
      OA reports.
      
      The workaround for the OA unit's tail pointer race condition is what
      avoids the primary known cause of invalid reports being seen and with
      that in place we aren't expecting to see this notice but it can't be
      entirely ruled out.
      
      Just in case some condition does lead to the notice then it's likely
      that it will be triggered repeatedly while attempting to append a
      sequence of reports and depending on the configured OA sampling
      frequency that might be a large number of repeat notices.
      
      v2: (Chris) avoid inconsistent warning on throttle with
          printk_ratelimit()
      v3: (Matt) init and summarise with stream init/close not driver init/fini
      Signed-off-by: NRobert Bragg <robert@sixbynine.org>
      Reviewed-by: NMatthew Auld <matthew.auld@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170511154345.962-9-lionel.g.landwerlin@intel.comSigned-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      712122ea
    • R
      drm/i915/perf: improve tail race workaround · 0dd860cf
      Robert Bragg 提交于
      There's a HW race condition between OA unit tail pointer register
      updates and writes to memory whereby the tail pointer can sometimes get
      ahead of what's been written out to the OA buffer so far (in terms of
      what's visible to the CPU).
      
      Although this can be observed explicitly while copying reports to
      userspace by checking for a zeroed report-id field in tail reports, we
      want to account for this earlier, as part of the _oa_buffer_check to
      avoid lots of redundant read() attempts.
      
      Previously the driver used to define an effective tail pointer that
      lagged the real pointer by a 'tail margin' measured in bytes derived
      from OA_TAIL_MARGIN_NSEC and the configured sampling frequency.
      Unfortunately this was flawed considering that the OA unit may also
      automatically generate non-periodic reports (such as on context switch)
      or the OA unit may be enabled without any periodic sampling.
      
      This improves how we define a tail pointer for reading that lags the
      real tail pointer by at least %OA_TAIL_MARGIN_NSEC nanoseconds, which
      gives enough time for the corresponding reports to become visible to the
      CPU.
      
      The driver now maintains two tail pointers:
       1) An 'aging' tail with an associated timestamp that is tracked until we
          can trust the corresponding data is visible to the CPU; at which point
          it is considered 'aged'.
       2) An 'aged' tail that can be used for read()ing.
      
      The two separate pointers let us decouple read()s from tail pointer aging.
      
      The tail pointers are checked and updated at a limited rate within a
      hrtimer callback (the same callback that is used for delivering POLLIN
      events) and since we're now measuring the wall clock time elapsed since
      a given tail pointer was read the mechanism no longer cares about
      the OA unit's periodic sampling frequency.
      
      The natural place to handle the tail pointer updates was in
      gen7_oa_buffer_is_empty() which is called as part of blocking reads and
      the hrtimer callback used for polling, and so this was renamed to
      oa_buffer_check() considering the added side effect while checking
      whether the buffer contains data.
      Signed-off-by: NRobert Bragg <robert@sixbynine.org>
      Reviewed-by: NMatthew Auld <matthew.auld@intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170511154345.962-6-lionel.g.landwerlin@intel.comSigned-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      0dd860cf
    • R
      drm/i915/perf: avoid read back of head register · f279020a
      Robert Bragg 提交于
      There's no need for the driver to keep reading back the head pointer
      from hardware since the hardware doesn't update it automatically. This
      way we can treat any invalid head pointer value as a software/driver
      bug instead of spurious hardware behaviour.
      
      This change is also a small stepping stone towards re-working how
      the head and tail state is managed as part of an improved workaround
      for the tail register race condition.
      Signed-off-by: NRobert Bragg <robert@sixbynine.org>
      Reviewed-by: NMatthew Auld <matthew.auld@intel.com>
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170511154345.962-4-lionel.g.landwerlin@intel.com
      f279020a
  7. 11 5月, 2017 1 次提交
    • V
      drm/i915: Support variable cursor height on ivb+ · 024faac7
      Ville Syrjälä 提交于
      IVB introduced the CUR_FBC_CTL register which allows reducing the cursor
      height down to 8 lines from the otherwise square cursor dimensions.
      Implement support for it. CUR_FBC_CTL can't be used when the cursor
      is rotated.
      
      Commandeer the otherwise unused cursor->cursor.size to track the
      current value of CUR_FBC_CTL to optimize away redundant CUR_FBC_CTL
      writes, and to notice when we need to arm the update via CURBASE if
      just CUR_FBC_CTL changes.
      
      v2: Reverse the gen check to make it sane
      v3: Only enable CUR_FBC_CTL when cursor is enabled, adapt to
          earlier code changes which means we now actually turn off
          the cursor when we're supposed to unlike v2
      v4: Add a comment about rotation vs. CUR_FBC_CTL,
          rebase due to 'dirty' (Chris)
      v5: Rebase to the atomic world
          Handle 180 degree rotation
          Add HAS_CUR_FBC()
      v6: Rebase
      v7: Rebase due to I915_WRITE_FW/uncore.lock
          s/size/fbc_ctl/
      Signed-off-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: http://patchwork.freedesktop.org/patch/msgid/20170327185546.2977-12-ville.syrjala@linux.intel.comReviewed-by: NImre Deak <imre.deak@intel.com>
      024faac7
  8. 10 5月, 2017 2 次提交
  9. 09 5月, 2017 1 次提交
  10. 03 5月, 2017 3 次提交
  11. 02 5月, 2017 2 次提交
  12. 28 4月, 2017 2 次提交
    • J
      drm/i915: Eliminate HAS_HW_CONTEXTS · f2e4d76e
      Joonas Lahtinen 提交于
      HAS_HW_CONTEXTS is misleading condition for GPU reset and CCID,
      replace it with Gen specific (to be updated in next patches).
      
      HAS_HW_CONTEXTS in i915_l3_write is bogus because each HAS_L3_DPF
      match also has .has_hw_contexts = 1 set.
      
      This leads to us being able to get rid of the property completely.
      
      v2:
      - Keep the checks at Gen6 for no functional change (Ville)
      Signed-off-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      f2e4d76e
    • J
      drm/i915: Sanitize engine context sizes · 63ffbcda
      Joonas Lahtinen 提交于
      Pre-calculate engine context size based on engine class and device
      generation and store it in the engine instance.
      
      v2:
      - Squash and get rid of hw_context_size (Chris)
      
      v3:
      - Move after MMIO init for probing on Gen7 and 8 (Chris)
      - Retained rounding (Tvrtko)
      v4:
      - Rebase for deferred legacy context allocation
      Signed-off-by: NJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Oscar Mateo <oscar.mateo@intel.com>
      Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
      Cc: intel-gvt-dev@lists.freedesktop.org
      Acked-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      63ffbcda
  13. 27 4月, 2017 1 次提交
  14. 18 4月, 2017 1 次提交
  15. 15 4月, 2017 1 次提交
  16. 12 4月, 2017 1 次提交
  17. 10 4月, 2017 1 次提交
  18. 08 4月, 2017 1 次提交
  19. 07 4月, 2017 2 次提交
  20. 03 4月, 2017 1 次提交
  21. 29 3月, 2017 2 次提交
  22. 27 3月, 2017 1 次提交
  23. 23 3月, 2017 4 次提交
  24. 20 3月, 2017 1 次提交
  25. 17 3月, 2017 2 次提交