1. 06 1月, 2018 1 次提交
  2. 23 12月, 2017 1 次提交
  3. 22 12月, 2017 2 次提交
  4. 20 12月, 2017 2 次提交
  5. 19 12月, 2017 1 次提交
  6. 22 11月, 2017 1 次提交
    • T
      drm/i915/pmu: Expose a PMU interface for perf queries · b46a33e2
      Tvrtko Ursulin 提交于
      From: Chris Wilson <chris@chris-wilson.co.uk>
      From: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      From: Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com>
      
      The first goal is to be able to measure GPU (and invidual ring) busyness
      without having to poll registers from userspace. (Which not only incurs
      holding the forcewake lock indefinitely, perturbing the system, but also
      runs the risk of hanging the machine.) As an alternative we can use the
      perf event counter interface to sample the ring registers periodically
      and send those results to userspace.
      
      Functionality we are exporting to userspace is via the existing perf PMU
      API and can be exercised via the existing tools. For example:
      
        perf stat -a -e i915/rcs0-busy/ -I 1000
      
      Will print the render engine busynnes once per second. All the performance
      counters can be enumerated (perf list) and have their unit of measure
      correctly reported in sysfs.
      
      v1-v2 (Chris Wilson):
      
      v2: Use a common timer for the ring sampling.
      
      v3: (Tvrtko Ursulin)
       * Decouple uAPI from i915 engine ids.
       * Complete uAPI defines.
       * Refactor some code to helpers for clarity.
       * Skip sampling disabled engines.
       * Expose counters in sysfs.
       * Pass in fake regs to avoid null ptr deref in perf core.
       * Convert to class/instance uAPI.
       * Use shared driver code for rc6 residency, power and frequency.
      
      v4: (Dmitry Rogozhkin)
       * Register PMU with .task_ctx_nr=perf_invalid_context
       * Expose cpumask for the PMU with the single CPU in the mask
       * Properly support pmu->stop(): it should call pmu->read()
       * Properly support pmu->del(): it should call stop(event, PERF_EF_UPDATE)
       * Introduce refcounting of event subscriptions.
       * Make pmu.busy_stats a refcounter to avoid busy stats going away
         with some deleted event.
       * Expose cpumask for i915 PMU to avoid multiple events creation of
         the same type followed by counter aggregation by perf-stat.
       * Track CPUs getting online/offline to migrate perf context. If (likely)
         cpumask will initially set CPU0, CONFIG_BOOTPARAM_HOTPLUG_CPU0 will be
         needed to see effect of CPU status tracking.
       * End result is that only global events are supported and perf stat
         works correctly.
       * Deny perf driver level sampling - it is prohibited for uncore PMU.
      
      v5: (Tvrtko Ursulin)
      
       * Don't hardcode number of engine samplers.
       * Rewrite event ref-counting for correctness and simplicity.
       * Store initial counter value when starting already enabled events
         to correctly report values to all listeners.
       * Fix RC6 residency readout.
       * Comments, GPL header.
      
      v6:
       * Add missing entry to v4 changelog.
       * Fix accounting in CPU hotplug case by copying the approach from
         arch/x86/events/intel/cstate.c. (Dmitry Rogozhkin)
      
      v7:
       * Log failure message only on failure.
       * Remove CPU hotplug notification state on unregister.
      
      v8:
       * Fix error unwind on failed registration.
       * Checkpatch cleanup.
      
      v9:
       * Drop the energy metric, it is available via intel_rapl_perf.
         (Ville Syrjälä)
       * Use HAS_RC6(p). (Chris Wilson)
       * Handle unsupported non-engine events. (Dmitry Rogozhkin)
       * Rebase for intel_rc6_residency_ns needing caller managed
         runtime pm.
       * Drop HAS_RC6 checks from the read callback since creating those
         events will be rejected at init time already.
       * Add counter units to sysfs so perf stat output is nicer.
       * Cleanup the attribute tables for brevity and readability.
      
      v10:
       * Fixed queued accounting.
      
      v11:
       * Move intel_engine_lookup_user to intel_engine_cs.c
       * Commit update. (Joonas Lahtinen)
      
      v12:
       * More accurate sampling. (Chris Wilson)
       * Store and report frequency in MHz for better usability from
         perf stat.
       * Removed metrics: queued, interrupts, rc6 counters.
       * Sample engine busyness based on seqno difference only
         for less MMIO (and forcewake) on all platforms. (Chris Wilson)
      
      v13:
       * Comment spelling, use mul_u32_u32 to work around potential GCC
         issue and somne code alignment changes. (Chris Wilson)
      
      v14:
       * Rebase.
      
      v15:
       * Rebase for RPS refactoring.
      
      v16:
       * Use the dynamic slot in the CPU hotplug state machine so that we are
         free to setup our state as multi-instance. Previously we were re-using
         the CPUHP_AP_PERF_X86_UNCORE_ONLINE slot which is neither used as
         multi-instance, nor owned by our driver to start with.
       * Register the CPU hotplug handlers after the PMU, otherwise the callback
         will get called before the PMU is initialized which can end up in
         perf_pmu_migrate_context with an un-initialized base.
       * Added workaround for a probable bug in cpuhp core.
      
      v17:
       * Remove workaround for the cpuhp bug.
      
      v18:
       * Rebase for drm_i915_gem_engine_class getting upstream before us.
      
      v19:
       * Rebase. (trivial)
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Signed-off-by: NDmitry Rogozhkin <dmitry.v.rogozhkin@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171121181852.16128-2-tvrtko.ursulin@linux.intel.com
      b46a33e2
  7. 18 11月, 2017 1 次提交
  8. 16 11月, 2017 1 次提交
  9. 15 11月, 2017 1 次提交
  10. 14 11月, 2017 2 次提交
  11. 13 11月, 2017 4 次提交
  12. 12 11月, 2017 1 次提交
  13. 09 11月, 2017 1 次提交
  14. 02 11月, 2017 1 次提交
    • M
      drm/i915: Use fallback forcewake if primary ack missing · 71306303
      Mika Kuoppala 提交于
      There is a possibility on gen9 hardware to miss the forcewake ack
      message. The recommended workaround is to use another free
      bit and toggle it until original bit is successfully acknowledged.
      
      Some future gen9 revs might or might not fix the underlying issue but
      using fallback forcewake bit dance can be considered as harmless:
      without the ack timeout we never reach the fallback bit forcewake.
      Thus as of now we adopt a blanket approach for all gen9 and leave
      the bypassing the fallback bit approach for future patches if
      corresponding hw revisions do appear.
      
      Commit 83e33372 ("drm/i915: Increase maximum polling time to 50ms
      for forcewake request/clear ack") did increase the forcewake timeout.
      If the issue was a delayed ack, future work could include finding
      a suitable timeout value both for primary ack and reserve toggle
      to reduce the worst case latency.
      
      v2: use bit 15, naming, comment (Chris), only wait fallback ack
      v3: fix return on fallback, backoff after fallback write (Chris)
      v4: udelay on first pass, grammar (Chris)
      v4: s/reserve/fallback
      
      References: HSDES #1604254524
      References: https://bugs.freedesktop.org/show_bug.cgi?id=102051
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
      Signed-off-by: NMika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171102094836.2506-1-mika.kuoppala@linux.intel.com
      71306303
  15. 27 10月, 2017 1 次提交
    • R
      drm/i915/cnl: Fix SSEU Device Status. · f8c3dcf9
      Rodrigo Vivi 提交于
      CNL adds an extra register for slice/subslice information.
      Although no SKU is planed with an extra slice let's already
      handle this extra piece of information so we don't have the
      risk in future of getting a part that might have chosen this
      part of the die instead of other slices or anything like that.
      
      Also if subslice is disabled the information of eu ack for that
      is garbage, so let's skip checks for eu if subslice is disabled
      as we skip the subslice if slice is disabled.
      
      The rest is pretty much like gen9.
      
      v2: Remove IS_CANNONLAKE from gen9 status function.
      
      v3: Consider s_max = 6 and ss_max=4 to run over all possible
          slices and subslices possible by spec. Although no real
          hardware will have that many slices/subslices.
          To match with sseu info init.
      v4: Fix offset calculation for slices 4 and 5.
          Removed Oscar's rv-b since this change also needs review.
      v5: Let's consider only valid bits for SLICE*_PGCTL_ACK.
          This looks like wrong in Spec, but seems to be enough
          for now. Whenever Spec gets updated and fixed we come
          back and properly update the masks. Also add a FIXME,
          so we can revisit this later when we find some strange
          info on debugfs or when we noitce spec got updated.
      
      Cc: Oscar Mateo <oscar.mateo@intel.com>
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Reviewed-by: NLionel Landwerlin <lionel.g.landwerlin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171026001546.28203-1-rodrigo.vivi@intel.com
      f8c3dcf9
  16. 25 10月, 2017 1 次提交
  17. 18 10月, 2017 2 次提交
  18. 13 10月, 2017 1 次提交
  19. 10 10月, 2017 2 次提交
  20. 07 10月, 2017 1 次提交
  21. 05 10月, 2017 1 次提交
  22. 03 10月, 2017 1 次提交
  23. 29 9月, 2017 1 次提交
  24. 27 9月, 2017 1 次提交
  25. 26 9月, 2017 1 次提交
    • U
      drm/i915: Enable scanline read based on frame timestamps · aec0246f
      Uma Shankar 提交于
      For certain platforms on certain encoders, timings are driven
      from port instead of pipe. Thus, we can't rely on pipe scanline
      registers to get the timing information. Some cases scanline
      register read will not be functional.
      This is causing vblank evasion logic to fail since it relies on
      scanline, causing atomic update failure warnings.
      
      This patch uses pipe framestamp and current timestamp registers
      to calculate scanline. This is an indirect way to get the scanline.
      It helps resolve atomic update failure for gen9 dsi platforms.
      
      v2: Addressed Ville and Daniel's review comments. Updated the
      register MACROs, handled race condition for register reads,
      extracted timings from the hwmode. Removed the dependency on
      crtc->config to get the encoder type.
      
      v3: Made get scanline function generic
      
      v4: Addressed Ville's review comments. Added a flag to decide timestamp
      based scanline reporting. Changed 64bit variables to u32
      
      v5: Adressed Ville's review comments. Put the scanline compute function
      at the place of caller. Removed hwmode flags from uapi and used a local
      i915 data structure instead.
      
      v6: Used vblank hwmode to get the timings.
      
      v7: Fixed sparse warnings, indentation and minor review comments.
      
      v8: Limited this only for Gen9 DSI.
      
      Credits-to: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NUma Shankar <uma.shankar@intel.com>
      Signed-off-by: NChandra Konduru <chandra.konduru@intel.com>
      Signed-off-by: NVidya Srinivas <vidya.srinivas@intel.com>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1506347761-4201-1-git-send-email-vidya.srinivas@intel.com
      aec0246f
  26. 20 9月, 2017 1 次提交
  27. 15 9月, 2017 1 次提交
  28. 14 9月, 2017 1 次提交
  29. 13 9月, 2017 2 次提交
  30. 09 9月, 2017 1 次提交
  31. 07 9月, 2017 1 次提交
    • K
      drm/i915/bxt+: Enable IPC support · 2503a0fe
      Kumar, Mahesh 提交于
      This patch adds IPC support. This patch also enables IPC in all supported
      platforms based on has_ipc flag.
      IPC (Isochronous Priority Control) is the hardware feature, which
      dynamically controls the memory read priority of Display.
      
      When IPC is enabled, plane read requests are sent at high priority until
      filling above the transition watermark, then the requests are sent at
      lower priority until dropping below the level 0 watermark.
      The lower priority requests allow other memory clients to have better
      memory access. When IPC is disabled, all plane read requests are sent at
      high priority.
      
      Changes since V1:
       - Remove commandline parameter to disable ipc
       - Address Paulo's comments
      Changes since V2:
       - Address review comments
       - Set ipc_enabled flag
      Changes since V3:
       - move ipc_enabled flag assignment inside intel_ipc_enable function
      Changes since V4:
       - Re-enable IPC after suspend/resume
      Changes since V5:
       - Enable IPC for all gen >=9 except SKL
      Changes since V6:
       - fix commit msg
       - after resume program IPC based on SW state.
      Changes since V7:
       - Modify IPC support check based on HAS_IPC macro (suggested by Chris)
      Signed-off-by: NMahesh Kumar <mahesh1.kumar@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Signed-off-by: NMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170817134529.2839-8-mahesh1.kumar@intel.com
      2503a0fe