Skip to content
  1. Apr 12, 2018
    • Oscar Mateo's avatar
      drm/i915: Split out functions for different kinds of workarounds · 59b449d5
      Oscar Mateo authored
      
      
      There are different kind of workarounds (those that modify registers that
      live in the context image, those that modify global registers, those that
      whitelist registers, etc...) and they have different requirements in terms
      of where they are applied and how. Also, by splitting them apart, it should
      be easier to decide where a new workaround should go.
      
      v2:
        - Add multiple MISSING_CASE
        - Rebased
      
      v3:
        - Rename mmio_workarounds to gt_workarounds (Chris, Mika)
        - Create empty placeholders for BDW and CHV GT WAs
        - Rebased
      
      v4: Rebased
      
      v5:
       - Rebased
       - FORCE_TO_NONPRIV register exists since BDW, so make a path
         for it to achieve universality, even if empty (Chris)
      
      Signed-off-by: default avatarOscar Mateo <oscar.mateo@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      [ickle: appease checkpatch]
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Link: https://patchwork.freedesktop.org/patch/msgid/1523376767-18480-2-git-send-email-oscar.mateo@intel.com
      59b449d5
    • Oscar Mateo's avatar
      drm/i915: Move a bunch of workaround-related code to its own file · 7d3c425f
      Oscar Mateo authored
      
      
      This has grown to be a sizable amount of code, so move it to
      its own file before we try to refactor anything. For the moment,
      we are leaving behind the WA BB code and the WAs that get applied
      (incorrectly) in init_clock_gating, but we will deal with it later.
      
      v2: Use intel_ prefix for code that deals with the hardware (Chris)
      v3: Rebased
      v4:
        - Rebased
        - New license header
      v5:
        - Rebased
        - Added some organisational notes to the file (Chris)
      v6: Include DOC section in the documentation build (Jani)
      
      Signed-off-by: default avatarOscar Mateo <oscar.mateo@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Jani Nikula <jani.nikula@intel.com>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      [ickle: appease checkpatch, mostly]
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Link: https://patchwork.freedesktop.org/patch/msgid/1523376767-18480-1-git-send-email-oscar.mateo@intel.com
      7d3c425f
    • Chris Wilson's avatar
      drm/i915/execlists: Set queue priority from secondary port · 15c83c43
      Chris Wilson authored
      We can refine our current execlists->queue_priority if we inspect
      ELSP[1] rather than the head of the unsubmitted queue. Currently, we use
      the unsubmitted queue and say that if a subsequent request is more
      important than the current queue, we will rerun the submission tasklet
      to evaluate the need for preemption. However, we only want to preempt if
      we need to jump ahead of a currently executing request in ELSP. The
      second reason for running the submission tasklet is amalgamate requests
      into the active context on ELSP[0] to avoid a stall when ELSP[0] drains.
      (Though repeatedly amalgamating requests into the active context and
      triggering many lite-restore is off question gain, the goal really is to
      put a context into ELSP[1] to cover the interrupt.) So if instead of
      looking at the head of the queue, we look at the context in ELSP[1] we
      can answer both of the questions more accurately -- we don't need to
      rerun the submission tasklet unless our new request is important enough
      to feed into, at least, ELSP[1].
      
      v2: Add some comments from the discussion with Tvrtko.
      v3: More commentary to cross-reference queue_request()
      
      References: f6322edd
      
       ("drm/i915/preemption: Allow preemption between submission ports")
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Michał Winiarski <michal.winiarski@intel.com>
      Cc: Michel Thierry <michel.thierry@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180411103929.27374-1-chris@chris-wilson.co.uk
      15c83c43
  2. Apr 11, 2018
    • Jani Nikula's avatar
      drm/i915/bios: remove duplicated code · f3aa929c
      Jani Nikula authored
      
      
      Apparently caused by a merge fail at some point. Due to the nature of
      the duplicated block, the second one will have no effect, and there's no
      need to backport.
      
      Reviewed-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: default avatarJani Nikula <jani.nikula@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180410091248.1454-1-jani.nikula@intel.com
      f3aa929c
    • Tvrtko Ursulin's avatar
      drm/i915/pmu: Inspect runtime PM state more carefully while estimating RC6 · 2924bdee
      Tvrtko Ursulin authored
      
      
      While thinking about sporadic failures of perf_pmu/rc6-runtime-pm* tests
      on some CI machines I have concluded that: a) the PMU readout of RC6 can
      race against runtime PM transitions, and b) there are other reasons than
      being runtime suspended which can cause intel_runtime_pm_get_if_in_use to
      fail.
      
      Therefore when estimating RC6 the code needs to assert we are indeed in
      suspended state, and if not, the best we can do is return the last known
      RC6 value.
      
      Without this check we can calculate the estimated value based on un-
      initialized or inappropriate internal state, which can result in over-
      estimation, or in any case incorrect value being returned.
      
      v2:
       * Re-arrange the code a bit to avoid second unlock and return branch.
         (Chris Wilson)
      
      v3:
       * Insert some strategic blank lines and improve commit msg.
         (Chris Wilson)
      
      Signed-off-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Fixes: 1fe699e3
      
       ("drm/i915/pmu: Fix sleep under atomic in RC6 readout")
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105010
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Imre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180410112704.24462-1-tvrtko.ursulin@linux.intel.com
      2924bdee
    • Chris Wilson's avatar
      drm/i915/guc: Replace %phn with %ph · 2184b3d6
      Chris Wilson authored
      
      
      %phn is not a valid specifier, and the trailing 'n' is being eaten by
      the format-specifier and defaulting to the ' ' separator. Avoid angering
      smatch by using the unknown specifier, and use the default we expect.
      
      drivers/gpu/drm/i915/intel_guc_ct.c:616 ctb_read() warn: '%ph' cannot be followed by 'n'
      drivers/gpu/drm/i915/intel_guc_ct.c:616 ctb_read() warn: '%ph' cannot be followed by 'n'
      drivers/gpu/drm/i915/intel_guc_ct.c:616 ctb_read() warn: '%ph' cannot be followed by 'n'
      drivers/gpu/drm/i915/intel_guc_ct.c:669 ct_handle_response() warn: '%ph' cannot be followed by 'n'
      drivers/gpu/drm/i915/intel_guc_ct.c:679 ct_handle_response() warn: '%ph' cannot be followed by 'n'
      drivers/gpu/drm/i915/intel_guc_ct.c:693 ct_handle_response() warn: '%ph' cannot be followed by 'n'
      drivers/gpu/drm/i915/intel_guc_ct.c:707 ct_handle_response() warn: '%ph' cannot be followed by 'n'
      drivers/gpu/drm/i915/intel_guc_ct.c:727 ct_process_request() warn: '%ph' cannot be followed by 'n'
      drivers/gpu/drm/i915/intel_guc_ct.c:803 ct_handle_request() warn: '%ph' cannot be followed by 'n'
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
      Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Reviewed-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180410111417.27563-1-chris@chris-wilson.co.uk
      2184b3d6
    • Chris Wilson's avatar
      drm/i915: Don't fiddle with rps/rc6 across GPU reset · 3834dc1f
      Chris Wilson authored
      
      
      Resetting the GPU doesn't affect the RPS/RC6 state, so we can stop
      forcibly reloading the registers.
      
      Ville suggested this many moons ago, I said at that time that sanitizing
      was no harm and meant that our bookkeeping was kept consistent with the
      HW. However, in a forthcoming series, we want to split rps/rc6 GT
      powermanagement and one of the key simplifications is the control of
      when we enable it. Performing a crude sanitize in the middle of
      i915_gem_reset() is then a huge wart.
      
      Suggested-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Reviewed-by: default avatarSagar Arun Kamble <sagar.a.kamble@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180410133354.13425-1-chris@chris-wilson.co.uk
      3834dc1f
  3. Apr 10, 2018
  4. Apr 09, 2018
  5. Apr 08, 2018
    • Lyude Paul's avatar
      drm/i915/dp: Send DPCD ON for MST before phy_up · be1c63c8
      Lyude Paul authored
      
      
      When doing a modeset where the sink is transitioning from D3 to D0 , it
      would sometimes be possible for the initial power_up_phy() to start
      timing out. This would only be observed in the last action before the
      sink went into D3 mode was intel_dp_sink_dpms(DRM_MODE_DPMS_OFF). We
      originally thought this might be an issue with us accidentally shutting
      off the aux block when putting the sink into D3, but since the DP spec
      mandates that sinks must wake up within 1ms while we have 100ms to
      respond to an ESI irq, this didn't really add up. Turns out that the
      problem is more subtle then that:
      
      It turns out that the timeout is from us not enabling DPMS on the MST
      hub before actually trying to initiate sideband communications. This
      would cause the first sideband communication (power_up_phy()), to start
      timing out because the sink wasn't ready to respond. Afterwards, we
      would call intel_dp_sink_dpms(DRM_MODE_DPMS_ON) in
      intel_ddi_pre_enable_dp(), which would actually result in waking up the
      sink so that sideband requests would work again.
      
      Since DPMS is what lets us actually bring the hub up into a state where
      sideband communications become functional again, we just need to make
      sure to enable DPMS on the display before attempting to perform sideband
      communications.
      
      Changes since v1:
      - Remove comment above if (!intel_dp->is_mst) - vsryjala
      - Move intel_dp_sink_dpms() for MST into intel_dp_post_disable_mst() to
        keep enable/disable paths symmetrical
      - Improve commit message - dhnkrn
      Changes since v2:
      - Only send DPMS off when we're disabling the last sink, and only send
        DPMS on when we're enabling the first sink - dhnkrn
      Changes since v3:
      - Check against is_mst, not intel_dp->is_mst - dhnkrn/vsyrjala
      
      Signed-off-by: default avatarLyude Paul <lyude@redhat.com>
      Reviewed-by: default avatarDhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
      Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Tested-by: default avatarLaura Abbott <labbott@redhat.com>
      Cc: stable@vger.kernel.org
      Fixes: ad260ab3 ("drm/i915/dp: Write to SET_POWER dpcd to enable MST hub.")
      Link: https://patchwork.freedesktop.org/patch/msgid/20180407011053.22437-1-lyude@redhat.com
      be1c63c8
  6. Apr 07, 2018
    • Chris Wilson's avatar
      drm/i915: Pass the set of guilty engines to i915_reset() · d0667e9c
      Chris Wilson authored
      
      
      Currently, we rely on inspecting the hangcheck state from within the
      i915_reset() routines to determine which engines were guilty of the
      hang. This is problematic for cases where we want to run
      i915_handle_error() and call i915_reset() independently of hangcheck.
      Instead of relying on the indirect parameter passing, turn it into an
      explicit parameter providing the set of stalled engines which then are
      treated as guilty until proven innocent.
      
      While we are removing the implicit stalled parameter, also make the
      reason into an explicit parameter to i915_reset(). We still need a
      back-channel for i915_handle_error() to hand over the task to the locked
      waiter, but let's keep that its own channel rather than incriminate
      another.
      
      This leaves stalled/seqno as being private to hangcheck, with no more
      nefarious snooping by reset, be it whole-device or per-engine. \o/
      
      The only real issue now is that this makes it crystal clear that we
      don't actually do any testing of hangcheck per se in
      drv_selftest/live_hangcheck, merely of resets!
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Michel Thierry <michel.thierry@intel.com>
      Cc: Jeff McGee <jeff.mcgee@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180406220354.18911-2-chris@chris-wilson.co.uk
      d0667e9c
    • Chris Wilson's avatar
      drm/i915: Treat i915_reset_engine() as guilty until proven innocent · bba0869b
      Chris Wilson authored
      
      
      If we are resetting just one engine, we know it has stalled. So we can
      pass the stalled parameter directly to i915_gem_reset_engine(), which
      alleviates the necessity to poke at the generic engine->hangcheck.stalled
      magic variable, leaving that under control of hangcheck as its name
      implies. Other than simplifying by removing the indirect parameter along
      this path, this allows us to introduce new reset mechanisms that run
      independently of hangcheck.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Michel Thierry <michel.thierry@intel.com>
      Cc: Jeff McGee <jeff.mcgee@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180406220354.18911-1-chris@chris-wilson.co.uk
      bba0869b
    • Chris Wilson's avatar
      drm/i915: Split out parking from the idle worker for reuse · e4d2006f
      Chris Wilson authored
      
      
      We will want to park GEM before disengaging the drive^W^W^W unwedging.
      Since we already do the work for idling, expose the guts as a new
      function that we can then reuse.
      
      v2: Just skip if already parked; makes it more forgiving to use by
      future callers.
      v3: Extract mark_busy, rename it to i915_gem_unpark and place it next to
      i915_gem_park so that we can evaluate it for symmetry more easily.
      Calling GEM from inside i915_request looks to be a bit of a layering
      violation, for the moment I am imaging them as being notify_cb.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
      Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> #v1
      Reviewed-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180406155144.27791-1-chris@chris-wilson.co.uk
      e4d2006f
  7. Apr 06, 2018
    • Chris Wilson's avatar
      drm/i915/selftests: Rename wait_for_hang() to wait_until_running() · 29991d53
      Chris Wilson authored
      
      
      Tvrtko mentioned that wait_for_hang() was confusing as it does not
      actually wait for the aforementioned hang, just until the request is
      running and we are *ready* to inject a hang. A quick
      s/wait_for_hang/wait_until_running/ removes that confusion without
      having to rethink the naming scheme, immediately at least.
      
      Suggested-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Michel Thierry <michel.thierry@intel.com>
      Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180406100950.19033-1-chris@chris-wilson.co.uk
      29991d53
    • Oscar Mateo's avatar
      drm/i915/icl: Enable RC6 and RPS in Gen11 · 2b2874ef
      Oscar Mateo authored
      
      
      AFAICT, once the new interrupt is in place, the rest should behave the
      same as Gen10.
      
      v2: Update ring frequencies (Sagar)
      v3: Rebase.
      
      Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: default avatarOscar Mateo <oscar.mateo@intel.com>
      Reviewed-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Signed-off-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180405140052.10682-5-mika.kuoppala@linux.intel.com
      2b2874ef
    • Oscar Mateo's avatar
      drm/i915/icl: Deal with GT INT DW correctly · 96606f3b
      Oscar Mateo authored
      
      
      BSpec says:
      
      "Second level interrupt events are stored in the GT INT DW. GT INT DW is
      a double buffered structure. A snapshot of events is taken when SW reads
      GT INT DW. From the time of read to the time of SW completely clearing
      GT INT DW (to indicate end of service), all incoming interrupts are logged
      in a secondary storage structure. this guarantees that the record of
      interrupts SW is servicing will not change while under service".
      
      We read GT INT DW in several places now:
      
      - The IRQ handler (banks 0 and 1) where, hopefully, it is completely
        cleared (operation now covered with the irq lock).
      - The 'reset' interrupts functions for RPS and GuC logs, where we clear
        the bit we are interested in and leave the others for the normal
        interrupt handler.
      - The 'enable' interrupts functions for RPS and GuC logs, as a measure
        of precaution. Here we could relax a bit and don't check GT INT DW
        at all or, if we do, at least we should clear the offending bit
        (which is what this patch does).
      
      Note that, if every bit is cleared on reading GT INT DW, the register
      won't be locked. Also note that, according to the BSpec, GT INT DW
      cannot be cleared without first servicing the Selector & Shared IIR
      registers.
      
      v2:
        - Remove some code duplication (Tvrtko)
        - Make sure GT_INTR_DW are protected by the irq spinlock, since it's a
          global resource (Tvrtko)
      
      v3: Optimize the spinlock (Tvrtko)
      
      v4: Rebase.
      v5:
        - take spinlock on outer scope to please sparse (Mika)
        - use raw_reg accessors (Mika)
      v6: omit the continue in looping banks (Michel)
      
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
      Signed-off-by: default avatarOscar Mateo <oscar.mateo@intel.com>
      Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> (v4)
      Signed-off-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180406093237.14548-1-mika.kuoppala@linux.intel.com
      96606f3b
    • Oscar Mateo's avatar
      drm/i915/icl: Handle RPS interrupts correctly for Gen11 · d02b98b8
      Oscar Mateo authored
      
      
      Using the new hierarchical interrupt infrastructure.
      
      v2: Rebase
      v3: Rebase
      v4: use class/instance handler (Mika)
      
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Signed-off-by: default avatarOscar Mateo <oscar.mateo@intel.com>
      Signed-off-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180405140052.10682-3-mika.kuoppala@linux.intel.com
      d02b98b8
    • Mika Kuoppala's avatar
      drm/i915/icl: Use hw engine class, instance to find irq handler · f744dbc2
      Mika Kuoppala authored
      
      
      Interrupt identity register we already read from hardware
      contains engine class and instance fields. Leverage
      these fields to find correct engine to handle the interrupt.
      
      v3: rebase on top of rps intr
          use correct class / instance limits (Michel)
      v4: split engine/other handling
      v5: empty iir is not err (Daniele, Michel)
      
      Suggested-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Michel Thierry <michel.thierry@intel.com>
      Signed-off-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Reviewed-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Reviewed-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180406093145.14389-1-mika.kuoppala@linux.intel.com
      f744dbc2
    • Michel Thierry's avatar
      drm/i915/icl: Add reset control register changes · e34b0345
      Michel Thierry authored
      
      
      The bits used to reset the different engines/domains have changed in
      GEN11, this patch maps the reset engine mask bits with the new bits
      in the reset control register.
      
      v2: Use shift-left instead of BIT macro to match the file style (Paulo).
      v3: Reuse gen8_reset_engines (Daniele).
      v4: Do not call intel_uncore_forcewake_reset after reset, we may be
      using the forcewake to read protected registers elsewhere and those
      results may be clobbered by the concurrent dropping of forcewake.
      
      bspec: 19212
      Cc: Oscar Mateo <oscar.mateo@intel.com>
      Cc: Antonio Argenziano <antonio.argenziano@intel.com>
      Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
      Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Acked-by: default avatarDaniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
      Signed-off-by: default avatarMichel Thierry <michel.thierry@intel.com>
      Reviewed-by: default avatarOscar Mateo <oscar.mateo@intel.com>
      Signed-off-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20180405140052.10682-1-mika.kuoppala@linux.intel.com
      e34b0345
    • Kevin Rogovin's avatar
      drm/i915: Describe the bottom of stack in processing a batchbuffer · 99d7e4ee
      Kevin Rogovin authored
      
      
      Now that "DOC: User command execution" of i915_gem_execbuffer.c is included
      in the i915.rst, it is benecifial (for new developers) to read what happens
      at the bottom of the driver stack (in terms of bytes written to be read
      by the GPU) when processing a user-space batchbuffer.
      
      v5:
        Typo correction of lacking double tick.
      
      Signed-off-by: default avatarKevin Rogovin <kevin.rogovin@intel.com>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      [Joonas: correcting the patch title]
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/1523001957-6427-4-git-send-email-kevin.rogovin@intel.com
      99d7e4ee