1. 06 7月, 2018 2 次提交
  2. 05 7月, 2018 2 次提交
  3. 29 6月, 2018 2 次提交
  4. 27 6月, 2018 1 次提交
  5. 21 6月, 2018 2 次提交
  6. 19 6月, 2018 1 次提交
  7. 15 6月, 2018 4 次提交
    • M
      drm/i915: Fix context ban and hang accounting for client · 14921f3c
      Mika Kuoppala 提交于
      If client is smart or lucky enough to create a new context
      after each hang, our context banning mechanism will never
      catch up, and as a result of that it will be saved from
      client banning. This can result in a never ending streak of
      gpu hangs caused by bad or malicious client, preventing
      access from other legit gpu clients.
      
      Fix this by always incrementing per client ban score if
      it hangs in short successions regardless of context ban
      scoring. The exception are non bannable contexts. They remain
      detached from client ban scoring mechanism.
      
      v2: xchg timestamp, tidyup (Chris)
      v3: comment, bannable & banned together (Chris)
      
      Fixes: b083a087 ("drm/i915: Add per client max context ban limit")
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      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/20180615104429.31477-1-mika.kuoppala@linux.intel.com
      14921f3c
    • C
      drm/i915: Keep the ctx workarounds tightly packed · 548764bb
      Chris Wilson 提交于
      For each platform, we have a few registers that are rewritten with
      different values -- they are not part of a sequence, just different parts
      of a masked register set at different times (e.g. platform and gen
      workarounds). Consolidate these into a single register write to keep the
      table compact, important since we are running of room in the current
      fixed sized buffer.
      
      While adjusting the construction of the wa table, make it non fatal so
      that the driver still loads but keeping the warning and extra details
      for inspection.
      
      Inspecting the changes for a Kabylake system,
      Before:
      	Address	val		mask		read
      	0x07014	0x20002000	0x00002000	0x00002100
      	0x0E194	0x01000100	0x00000100	0x00000114
      	0x0E4F0	0x81008100	0x00008100	0xFFFF8120
      	0x0E184	0x00200020	0x00000020	0x00000022
      	0x0E194	0x00140014	0x00000014	0x00000114
      	0x07004	0x00420042	0x00000042	0x000029C2
      	0x0E188	0x00080000	0x00000008	0x00008030
      	0x07300	0x80208020	0x00008020	0x00008830
      	0x07300	0x00100010	0x00000010	0x00008830
      	0x0E184	0x00020002	0x00000002	0x00000022
      	0x0E180	0x20002000	0x00002000	0x00002000
      	0x02580	0x00010000	0x00000001	0x00000004
      	0x02580	0x00060004	0x00000006	0x00000004
      	0x07014	0x01000100	0x00000100	0x00002100
      	0x0E100	0x00100010	0x00000010	0x00008050
      
      After:
      	Address	val		mask		read
      	0x02580	0x00070004	0x00000007	0x00000004
      	0x07004	0x00420042	0x00000042	0x000029C2
      	0x07014	0x21002100	0x00002100	0x00002100
      	0x07300	0x80308030	0x00008030	0x00008830
      	0x0E100	0x00100010	0x00000010	0x00008050
      	0x0E180	0x20002000	0x00002000	0x00002000
      	0x0E184	0x00220022	0x00000022	0x00000022
      	0x0E188	0x00080000	0x00000008	0x00008030
      	0x0E194	0x01140114	0x00000114	0x00000114
      	0x0E4F0	0x81008100	0x00008100	0xFFFF8120
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Oscar Mateo <oscar.mateo@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: NMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180615120207.13952-1-chris@chris-wilson.co.uk
      548764bb
    • C
      drm/i915: Declare the driver wedged if hangcheck makes no progress · 1fd00c0f
      Chris Wilson 提交于
      Hangcheck is our back up in case the GPU or the driver gets stuck. It
      detects when the GPU is not making any progress and issues a GPU reset.
      However, if the driver is failing to make any progress, we can get
      ourselves into a situation where we continually try resetting the GPU to
      no avail. Employ a second timeout such that if we continue to see the
      same seqno (the stalled engine has made no progress at all) over the
      course of several hangchecks, declare the driver wedged and attempt to
      start afresh.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180602104853.17140-1-chris@chris-wilson.co.ukReviewed-by: NMika Kuoppala <mika.kuoppala@intel.com>
      1fd00c0f
    • R
      drm/i915/psr: Kill delays when activating psr back. · 5422b37c
      Rodrigo Vivi 提交于
      The immediate enabling was actually not an issue for the
      HW perspective for core platforms that have HW tracking.
      HW will wait few identical idle frames before transitioning
      to actual psr active anyways.
      
      Now that we removed VLV/CHV out of the picture completely
      we can safely remove any delays.
      
      Note that this patch also remove the delayed activation
      on HSW and BDW introduced by commit 'd0ac896a
      ("drm/i915: Delay first PSR activation.")'. This was
      introduced to fix a blank screen on VLV/CHV and also
      masked some frozen screens on other core platforms.
      Probably the same that we are now properly hunting and fixing.
      
      v2:(DK): Remove unnecessary WARN_ONs and make some other
               VLV | CHV more readable.
      v3: Do it regardless the timer rework.
      v4: (DK/CI): Add VLV || CHV check on cancel work at psr_disable.
      v5: Kill remaining items and fully rework activation functions.
      v6: Rebase on top of VLV/CHV clean-up and keep the reactivation
          on a regular non-delayed work to avoid extra delays on exit
          calls and allow us to add few more safety checks before
          real activation.
      
      Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
      Signed-off-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Reviewed-by: NJosé Roberto de Souza <jose.souza@intel.com>
      Reviewed-by: NDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180613192600.3955-1-rodrigo.vivi@intel.com
      5422b37c
  8. 13 6月, 2018 1 次提交
  9. 11 6月, 2018 2 次提交
  10. 07 6月, 2018 2 次提交
  11. 06 6月, 2018 1 次提交
  12. 05 6月, 2018 2 次提交
  13. 04 6月, 2018 1 次提交
  14. 01 6月, 2018 1 次提交
  15. 31 5月, 2018 1 次提交
  16. 24 5月, 2018 3 次提交
    • D
      drm/i915/psr: Nuke PSR support for VLV and CHV · ce3508fd
      Dhinakaran Pandiyan 提交于
      PSR hardware and hence the driver code for VLV and CHV deviates a lot from
      their DDI counterparts. While the feature has been disabled for a long time
      now, retaining support for these platforms is a maintenance burden. There
      have been multiple refactoring commits to just keep the existing code for
      these platforms in line with the rest. There are known issues that need to
      be fixed to enable PSR on these platforms, and there is no PSR capable
      platform in CI to ensure the code does not break again if we get around to
      fixing the existing issues. On account of all these reasons, let's nuke
      this code for now and bring it back if a need arises in the future.
      
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Acked-by: NJani Nikula <jani.nikula@intel.com>
      Acked-by: NRodrigo Vivi <rodrigo.vivi@intel.com>
      Reviewed-by: NJosé Roberto de Souza <jose.souza@intel.com>
      Signed-off-by: NDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180511230059.19387-1-dhinakaran.pandiyan@intel.com
      ce3508fd
    • V
      drm/i915/psr: vbt change for psr · 77312ae8
      Vathsala Nagaraju 提交于
      For psr block #9, the vbt description has moved to options [0-3] for
      TP1,TP2,TP3 Wakeup time from decimal value without any change to vbt
      structure. Since spec does not  mention from which VBT version this
      change was added to vbt.bsf file, we cannot depend on bdb->version check
      to change for all the platforms.
      
      There is RCR inplace for GOP team to  provide the version number
      to make generic change. Since Kabylake with bdb version 209 is having this
      change, limiting this change to gen9_bc and version 209+ to unblock google.
      
      Tested on skl(bdb version 203,without options) and
      kabylake(bdb version 209,212) having new options.
      
      bspec 20131
      
      v2: (Jani and Rodrigo)
          move the 165 version check to intel_bios.c
      v3: Jani
          Move the abstraction to intel_bios.
      v4: Jani
          Rename tp*_wakeup_time to have "us" suffix.
          For values outside range[0-3],default to max 2500us.
          Old decimal value was wake up time in multiples of 100us.
      v5: Jani and Rodrigo
          Handle option 2 in default condition.
          Print oustide range value.
          For negetive values default to 2500us.
      v6: Jani
          Handle default first and then fall through for case 2.
      v7: Rodrigo
          Apply this change for IS_GEN9_BC and vbt version > 209
      v8: Puthik
          Add new function vbt_psr_to_us.
      v9: Jani
          Change to v7 version as it's more readable.
          DK
          add comment /*fall through*/ after case2.
      
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Puthikorn Voravootivat <puthik@chromium.org>
      Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
      Cc: Jani Nikula <jani.nikula@intel.com>
      Cc: José Roberto de Souza <jose.souza@intel.com>
      Signed-off-by: NMaulik V Vaghela <maulik.v.vaghela@intel.com>
      Signed-off-by: NVathsala Nagaraju <vathsala.nagaraju@intel.com>
      Reviewed-by: NJani Nikula <jani.nikula@intel.com>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1526981243-2745-1-git-send-email-vathsala.nagaraju@intel.com
      77312ae8
    • Y
      drm/i915/cnl: Implement WaProgramMgsrForCorrectSliceSpecificMmioReads · 1e40d4ae
      Yunwei Zhang 提交于
      WaProgramMgsrForCorrectSliceSpecificMmioReads dictate that before any MMIO
      read into Slice/Subslice specific registers, MCR packet control
      register(0xFDC) needs to be programmed to point to any enabled
      slice/subslice pair. Otherwise, incorrect value will be returned.
      
      However, that means each subsequent MMIO read will be forwarded to a
      specific slice/subslice combination as read is unicast. This is OK since
      slice/subslice specific register values are consistent in almost all cases
      across slice/subslice. There are rare occasions such as INSTDONE that this
      value will be dependent on slice/subslice combo, in such cases, we need to
      program 0xFDC and recover this after. This is already covered by
      read_subslice_reg.
      
      Also, 0xFDC will lose its information after TDR/engine reset/power state
      change.
      
      References: HSD#1405586840, BSID#0575
      
      v2:
       - use fls() instead of find_last_bit() (Chris)
       - added INTEL_SSEU to extract sseu from device info. (Chris)
      v3:
       - rebase on latest tip
      v5:
       - Added references (Mika)
       - Change the ordered of passing arguments and etc. (Ursulin)
      v7:
       - Moved WA explanation Comments(Oscar)
       - Rebased.
      v8:
       - Renamed sanitize_mcr to calculate_s_ss_select. (Oscar)
       - calculate s/ss selector instead of whole mcr. (Oscar)
      v9:
       - Updated function name (Oscar)
       - Remove redundant variables (Oscar)
      v10:
       - Separate pre-GEN10 and GEN11 mask. (Oscar)
      
      Cc: Oscar Mateo <oscar.mateo@intel.com>
      Cc: Michel Thierry <michel.thierry@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
      Signed-off-by: NYunwei Zhang <yunwei.zhang@intel.com>
      Reviewed-by: NOscar Mateo <oscar.mateo@intel.com>
      Signed-off-by: NMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1526683197-24656-1-git-send-email-yunwei.zhang@intel.com
      1e40d4ae
  17. 22 5月, 2018 2 次提交
  18. 18 5月, 2018 1 次提交
  19. 14 5月, 2018 1 次提交
  20. 11 5月, 2018 1 次提交
    • O
      drm/i915/icl: Introduce initial Icelake Workarounds · cc38cae7
      Oscar Mateo 提交于
      Inherit workarounds from previous platforms that are still valid for
      Icelake.
      
      v2: GEN7_ROW_CHICKEN2 is masked
      v3:
        - Since it has been fixed already in upstream, removed the TODO
          comment about WA_SET_BIT for WaInPlaceDecompressionHang.
        - Squashed with this patch:
            drm/i915/icl: add icelake_init_clock_gating()
          from Paulo Zanoni <paulo.r.zanoni@intel.com>
        - Squashed with this patch:
            drm/i915/icl: WaForceEnableNonCoherent
          from Oscar Mateo <oscar.mateo@intel.com>
        - WaPushConstantDereferenceHoldDisable is now Wa_1604370585 and
          applies to B0 as well.
        - WaPipeControlBefore3DStateSamplePattern WABB was being applied
          to ICL incorrectly.
      v4:
        - Wrap the commit message
        - s/dev_priv/p to please checkpatch
      v5: Rebased on top of the WA refactoring
      v6: Rebased on top of further whitelist registers refactoring (Michel)
      v7: Added WaRsForcewakeAddDelayForAck
      v8: s/ICL_HDC_CHICKEN0/ICL_HDC_MODE (Mika)
      v9:
        - C, not lisp (Chris)
        - WaIncreaseDefaultTLBEntries is the same for GEN > 9_LP (Tvrtko)
      Signed-off-by: NOscar Mateo <oscar.mateo@intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Tomasz Lis <tomasz.lis@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: NMika Kuoppala <mika.kuoppala@linux.intel.com>
      Signed-off-by: NMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1525814984-20039-2-git-send-email-oscar.mateo@intel.com
      cc38cae7
  21. 09 5月, 2018 1 次提交
  22. 04 5月, 2018 1 次提交
    • C
      drm/i915: Lazily unbind vma on close · 3365e226
      Chris Wilson 提交于
      When userspace is passing around swapbuffers using DRI, we frequently
      have to open and close the same object in the foreign address space.
      This shows itself as the same object being rebound at roughly 30fps
      (with a second object also being rebound at 30fps), which involves us
      having to rewrite the page tables and maintain the drm_mm range manager
      every time.
      
      However, since the object still exists and it is only the local handle
      that disappears, if we are lazy and do not unbind the VMA immediately
      when the local user closes the object but defer it until the GPU is
      idle, then we can reuse the same VMA binding. We still have to be
      careful to mark the handle and lookup tables as closed to maintain the
      uABI, just allowing the underlying VMA to be resurrected if the user is
      able to access the same object from the same context again.
      
      If the object itself is destroyed (neither userspace keeping a handle to
      it), the VMA will be reaped immediately as usual.
      
      In the future, this will be even more useful as instantiating a new VMA
      for use on the GPU will become heavier. A nuisance indeed, so nip it in
      the bud.
      
      v2: s/__i915_vma_final_close/i915_vma_destroy/ etc.
      v3: Leave a hint as to why we deferred the unbind on close.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180503195115.22309-1-chris@chris-wilson.co.uk
      3365e226
  23. 03 5月, 2018 2 次提交
    • C
      drm/i915: Split i915_gem_timeline into individual timelines · a89d1f92
      Chris Wilson 提交于
      We need to move to a more flexible timeline that doesn't assume one
      fence context per engine, and so allow for a single timeline to be used
      across a combination of engines. This means that preallocating a fence
      context per engine is now a hindrance, and so we want to introduce the
      singular timeline. From the code perspective, this has the notable
      advantage of clearing up a lot of mirky semantics and some clumsy
      pointer chasing.
      
      By splitting the timeline up into a single entity rather than an array
      of per-engine timelines, we can realise the goal of the previous patch
      of tracking the timeline alongside the ring.
      
      v2: Tweak wait_for_idle to stop the compiling thinking that ret may be
      uninitialised.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180502163839.3248-2-chris@chris-wilson.co.uk
      a89d1f92
    • C
      drm/i915: Move timeline from GTT to ring · 65fcb806
      Chris Wilson 提交于
      In the future, we want to move a request between engines. To achieve
      this, we first realise that we have two timelines in effect here. The
      first runs through the GTT is required for ordering vma access, which is
      tracked currently by engine. The second is implied by sequential
      execution of commands inside the ringbuffer. This timeline is one that
      maps to userspace's expectations when submitting requests (i.e. given the
      same context, batch A is executed before batch B). As the rings's
      timelines map to userspace and the GTT timeline an implementation
      detail, move the timeline from the GTT into the ring itself (per-context
      in logical-ring-contexts/execlists, or a global per-engine timeline for
      the shared ringbuffers in legacy submission.
      
      The two timelines are still assumed to be equivalent at the moment (no
      migrating requests between engines yet) and so we can simply move from
      one to the other without adding extra ordering.
      
      v2: Reinforce that one isn't allowed to mix the engine execution
      timeline with the client timeline from userspace (on the ring).
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180502163839.3248-1-chris@chris-wilson.co.uk
      65fcb806
  24. 30 4月, 2018 3 次提交