Skip to content
  1. Oct 05, 2017
    • Chris Wilson's avatar
      drm/i915/scheduler: Support user-defined priorities · ac14fbd4
      Chris Wilson authored
      
      
      Use a priority stored in the context as the initial value when
      submitting a request. This allows us to change the default priority on a
      per-context basis, allowing different contexts to be favoured with GPU
      time at the expense of lower importance work. The user can adjust the
      context's priority via I915_CONTEXT_PARAM_PRIORITY, with more positive
      values being higher priority (they will be serviced earlier, after their
      dependencies have been resolved). Any prerequisite work for an execbuf
      will have its priority raised to match the new request as required.
      
      Normal users can specify any value in the range of -1023 to 0 [default],
      i.e. they can reduce the priority of their workloads (and temporarily
      boost it back to normal if so desired).
      
      Privileged users can specify any value in the range of -1023 to 1023,
      [default is 0], i.e. they can raise their priority above all overs and
      so potentially starve the system.
      
      Note that the existing schedulers are not fair, nor load balancing, the
      execution is strictly by priority on a first-come, first-served basis,
      and the driver may choose to boost some requests above the range
      available to users.
      
      This priority was originally based around nice(2), but evolved to allow
      clients to adjust their priority within a small range, and allow for a
      privileged high priority range.
      
      For example, this can be used to implement EGL_IMG_context_priority
      https://www.khronos.org/registry/egl/extensions/IMG/EGL_IMG_context_priority.txt
      
      	EGL_CONTEXT_PRIORITY_LEVEL_IMG determines the priority level of
              the context to be created. This attribute is a hint, as an
              implementation may not support multiple contexts at some
              priority levels and system policy may limit access to high
              priority contexts to appropriate system privilege level. The
              default value for EGL_CONTEXT_PRIORITY_LEVEL_IMG is
              EGL_CONTEXT_PRIORITY_MEDIUM_IMG."
      
      so we can map
      
      	PRIORITY_HIGH -> 1023 [privileged, will failback to 0]
      	PRIORITY_MED -> 0 [default]
      	PRIORITY_LOW -> -1023
      
      They also map onto the priorities used by VkQueue (and a VkQueue is
      essentially a timeline, our i915_gem_context under full-ppgtt).
      
      v2: s/CAP_SYS_ADMIN/CAP_SYS_NICE/
      v3: Report min/max user priorities as defines in the uapi, and rebase
      internal priorities on the exposed values.
      
      Testcase: igt/gem_exec_schedule
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171003203453.15692-9-chris@chris-wilson.co.uk
      ac14fbd4
    • Chris Wilson's avatar
      drm/i915/execlists: Preemption! · beecec90
      Chris Wilson authored
      
      
      When we write to ELSP, it triggers a context preemption at the earliest
      arbitration point (3DPRIMITIVE, some PIPECONTROLs, a few other
      operations and the explicit MI_ARB_CHECK). If this is to the same
      context, it triggers a LITE_RESTORE where the RING_TAIL is merely
      updated (used currently to chain requests from the same context
      together, avoiding bubbles). However, if it is to a different context, a
      full context-switch is performed and it will start to execute the new
      context saving the image of the old for later execution.
      
      Previously we avoided preemption by only submitting a new context when
      the old was idle. But now we wish embrace it, and if the new request has
      a higher priority than the currently executing request, we write to the
      ELSP regardless, thus triggering preemption, but we tell the GPU to
      switch to our special preemption context (not the target). In the
      context-switch interrupt handler, we know that the previous contexts
      have finished execution and so can unwind all the incomplete requests
      and compute the new highest priority request to execute.
      
      It would be feasible to avoid the switch-to-idle intermediate by
      programming the ELSP with the target context. The difficulty is in
      tracking which request that should be whilst maintaining the dependency
      change, the error comes in with coalesced requests. As we only track the
      most recent request and its priority, we may run into the issue of being
      tricked in preempting a high priority request that was followed by a
      low priority request from the same context (e.g. for PI); worse still
      that earlier request may be our own dependency and the order then broken
      by preemption. By injecting the switch-to-idle and then recomputing the
      priority queue, we avoid the issue with tracking in-flight coalesced
      requests. Having tried the preempt-to-busy approach, and failed to find
      a way around the coalesced priority issue, Michal's original proposal to
      inject an idle context (based on handling GuC preemption) succeeds.
      
      The current heuristic for deciding when to preempt are only if the new
      request is of higher priority, and has the privileged priority of
      greater than 0. Note that the scheduler remains unfair!
      
      v2: Disable for gen8 (bdw/bsw) as we need additional w/a for GPGPU.
      Since, the feature is now conditional and not always available when we
      have a scheduler, make it known via the HAS_SCHEDULER GETPARAM (now a
      capability mask).
      v3: Stylistic tweaks.
      v4: Appease Joonas with a snippet of kerneldoc, only to fuel to fire of
      the preempt vs preempting debate.
      
      Suggested-by: default avatarMichal Winiarski <michal.winiarski@intel.com>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Michal Winiarski <michal.winiarski@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@intel.com>
      Cc: Ben Widawsky <benjamin.widawsky@intel.com>
      Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
      Cc: Zhi Wang <zhi.a.wang@intel.com>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171003203453.15692-8-chris@chris-wilson.co.uk
      beecec90
    • Chris Wilson's avatar
      drm/i915: Expand I915_PARAM_HAS_SCHEDULER into a capability bitmask · bf64e0b0
      Chris Wilson authored
      
      
      In the next few patches, we wish to enable different features for the
      scheduler, some which may subtlety change ABI (e.g. allow requests to be
      reordered under different circumstances). So we need to make sure
      userspace is cognizant of the changes (if they care), by which we employ
      the usual method of a GETPARAM. We already have an
      I915_PARAM_HAS_SCHEDULER (which notes the existing ability to reorder
      requests to avoid bubbles), and now we wish to extend that to be a
      bitmask to describe the different capabilities implemented.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171003203453.15692-7-chris@chris-wilson.co.uk
      bf64e0b0
    • Chris Wilson's avatar
      drm/i915/execlists: Keep request->priority for its lifetime · 1f181225
      Chris Wilson authored
      
      
      With preemption, we will want to "unsubmit" a request, taking it back
      from the hw and returning it to the priority sorted execution list. In
      order to know where to insert it into that list, we need to remember
      its adjust priority (which may change even as it was being executed).
      
      This also affects reset for execlists as we are now unsubmitting the
      requests following the reset (rather than directly writing the ELSP for
      the inflight contexts). This turns reset into an accidental preemption
      point, as after the reset we may choose a different pair of contexts to
      submit to hw.
      
      GuC is not updated as this series doesn't add preemption to the GuC
      submission, and so it can keep benefiting from the early pruning of the
      DFS inside execlists_schedule() for a little longer. We also need to
      find a way of reducing the cost of that DFS...
      
      v2: Include priority in error-state
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: Michał Winiarski <michal.winiarski@intel.com>
      Reviewed-by: default avatarMichał Winiarski <michal.winiarski@intel.com>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171003203453.15692-6-chris@chris-wilson.co.uk
      1f181225
    • Chris Wilson's avatar
      drm/i915/execlists: Move bdw GPGPU w/a to emit_bb · 3ad7b52d
      Chris Wilson authored
      
      
      Move the re-enabling of MI arbitration from a per-bb w/a buffer to the
      emission of the batch buffer itself.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171003203453.15692-5-chris@chris-wilson.co.uk
      3ad7b52d
    • Chris Wilson's avatar
      drm/i915: Introduce a preempt context · e7af3116
      Chris Wilson authored
      
      
      Add another perma-pinned context for using for preemption at any time.
      We cannot just reuse the existing kernel context, as first and foremost
      we need to ensure that we can preempt the kernel context itself, so
      require a distinct context id. Similar to the kernel context, we may
      want to interrupt execution and switch to the preempt context at any
      time, and so it needs to be permanently pinned and available.
      
      To compensate for yet another permanent allocation, we shrink the
      existing context and the new context by reducing their ringbuffer to the
      minimum.
      
      v2: Assert that we never allocate a request from the preemption context.
      v3: Limit perma-pin to engines that may preempt.
      v4: Onion cleanup for early driver death
      v5: Onion ordering in main driver cleanup as well.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarMichał Winiarski <michal.winiarski@intel.com>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171003203453.15692-4-chris@chris-wilson.co.uk
      e7af3116
    • Chris Wilson's avatar
      drm/i915/execlists: Distinguish the incomplete context notifies · d6c05113
      Chris Wilson authored
      
      
      Let the listener know that the context we just scheduled out was not
      complete, and will be scheduled back in at a later point.
      
      v2: Handle CONTEXT_STATUS_PREEMPTED in gvt by aliasing it to
      CONTEXT_STATUS_OUT for the moment, gvt can expand upon the difference
      later.
      
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Cc: "Zhenyu Wang" <zhenyuw@linux.intel.com>
      Cc: "Wang, Zhi A" <zhi.a.wang@intel.com>
      Cc: Michał Winiarski <michal.winiarski@intel.com>
      Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171003203453.15692-3-chris@chris-wilson.co.uk
      d6c05113
    • Michał Winiarski's avatar
      drm/i915/preempt: Default to disabled mid-command preemption levels · 5152defe
      Michał Winiarski authored
      
      
      Supporting fine-granularity preemption levels may require changes in
      userspace batch buffer programming. Therefore, we need to fallback to
      safe default values, rather that use hardware defaults. Userspace is
      still able to enable fine-granularity, since we're whitelisting the
      register controlling it in WaEnablePreemptionGranularityControlByUMD.
      
      v2: Extend w/a to cover Cannonlake
      v3: Fix commentary to include both fake w/a names.
      
      Signed-off-by: default avatarMichał Winiarski <michal.winiarski@intel.com>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171003203453.15692-2-chris@chris-wilson.co.uk
      5152defe
    • Jeff McGee's avatar
      drm/i915/preempt: Fix WaEnablePreemptionGranularityControlByUMD · 1e998343
      Jeff McGee authored
      
      
      The WA applies to all production Gen9 and requires both enabling and
      whitelisting of the per-context preemption control register.
      
      v2: Extend to Cannonlake.
      
      Signed-off-by: default avatarJeff McGee <jeff.mcgee@intel.com>
      Signed-off-by: default avatarMichał Winiarski <michal.winiarski@intel.com>
      Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171003203453.15692-1-chris@chris-wilson.co.uk
      1e998343
    • Michal Wajdeczko's avatar
      drm/i915/guc: Move Guc early init into own function · 3af7a9c6
      Michal Wajdeczko authored
      
      
      We don't want to make aggregate uc functions to be too detailed.
      This will also make future patch easier.
      
      Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
      Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: default avatarSagar Arun Kamble <sagar.a.kamble@intel.com>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171004153327.32608-7-michal.wajdeczko@intel.com
      3af7a9c6
    • Michal Wajdeczko's avatar
      drm/i915/huc: Move HuC declarations into dedicated header · d56d63d7
      Michal Wajdeczko authored
      
      
      We want to keep each uC specific code in separate files.
      
      Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
      Reviewed-by: default avatarSagar Arun Kamble <sagar.a.kamble@intel.com>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171004153327.32608-6-michal.wajdeczko@intel.com
      d56d63d7
    • Michal Wajdeczko's avatar
      drm/i915/uc: Move uC fw helper code into dedicated files · a16b4313
      Michal Wajdeczko authored
      
      
      This is a prerequisite to unblock next steps.
      
      v2: correct include order (Joonas)
      v3: use common function prefix (Joonas)
          add kerneldoc (Michal)
      
      Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
      Reviewed-by: default avatarSagar Arun Kamble <sagar.a.kamble@intel.com>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171004153327.32608-5-michal.wajdeczko@intel.com
      a16b4313
    • Sagar Arun Kamble's avatar
      drm/i915/uc: Create intel_uc_init_mmio · 1fc556fa
      Sagar Arun Kamble authored
      
      
      This patch adds new function intel_uc_init_mmio which will initialize
      MMIO access related variables prior to uc load/init.
      
      v2: Removed unnecessary export of guc_send_init_regs. Created
      intel_uc_init_mmio that currently wraps guc_init_send_regs. (Michal)
      
      v3 (Michal): add kerneldoc (Joonas)
      
      Signed-off-by: default avatarSagar Arun Kamble <sagar.a.kamble@intel.com>
      Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
      Cc: Michał Winiarski <michal.winiarski@intel.com>
      Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171004153327.32608-4-michal.wajdeczko@intel.com
      1fc556fa
    • Michal Wajdeczko's avatar
      drm/i915/uc: Drop unnecessary forward declaration · c23b4f46
      Michal Wajdeczko authored
      
      
      We don't need it here.
      
      Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
      Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Reviewed-by: default avatarSagar Arun Kamble <sagar.a.kamble@intel.com>
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171004153327.32608-3-michal.wajdeczko@intel.com
      c23b4f46
    • Michal Wajdeczko's avatar
      drm/i915: Make intel_uncore.h header self-contained · de7e095a
      Michal Wajdeczko authored
      
      
      We're trying to resolve inter-header dependencies.
      
      Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171004153327.32608-2-michal.wajdeczko@intel.com
      de7e095a
  2. Oct 04, 2017
  3. Oct 03, 2017
    • Imre Deak's avatar
      drm/i915: Fix DDI PHY init if it was already on · e19c1eb8
      Imre Deak authored
      The common lane power down flag of a DPIO PHY has a funky semantic:
      after the initial enabling of the PHY (so from a disabled state) this
      flag will be clear. It will be set only after the PHY will be used for
      the first time (for instance due to enabling the corresponding pipe) and
      then become unused (due to disabling the pipe). During the initial PHY
      enablement we don't know which of the above phases we are in, so move
      the check for the flag where this is known, the HW readout code. This is
      where the rest of lane power down status checks are done anyway.
      
      This fixes at least a problem on GLK where after module reloading, the
      common lane power down flag of PHY1 is set, but the PHY is actually
      powered-on and properly set up. The GRC readout code for other PHYs will
      hence think that PHY1 is not powered initially and disable it after the
      GRC readout. This will cause the AUX power well related to PHY1 to get
      disabled in a stuck state, timing out when we try to enable it later.
      
      Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
      Fixes: e93da0a0
      
       ("drm/i915/bxt: Sanitiy check the PHY lane power down status")
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=102777
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171002135307.26117-1-imre.deak@intel.com
      e19c1eb8
    • Imre Deak's avatar
      drm/i915/glk, cnl: Implement WaDisableScalarClockGating · ed69cd40
      Imre Deak authored
      
      
      On GLK and CNL enabling a pipe with its pipe scaler enabled will result
      in a FIFO underrun. This happens only once after driver loading or
      system/runtime resume, more specifically after power well 1 gets
      enabled; subsequent modesets seem to be free of underruns. The BSpec
      workaround for this is to disable the pipe scaler clock gating for the
      duration of modeset. Based on my tests disabling clock gating must be
      done before enabling pipe scaling and we can re-enable it after the pipe
      is enabled and one vblank has passed.
      
      For consistency I also checked if plane scaling would cause the same
      problem, but that doesn't seem to trigger this problem.
      
      The patch is based on an earlier version from Ander.
      
      v2 (Rodrigo):
      - Set also CLKGATE_DIS_PSL bits 8 and 9.
      - Add also the BSpec workaround ID.
      
      Cc: Ander Conselvan de Oliveira <conselvan2@gmail.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=100302
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20171002075557.32615-1-imre.deak@intel.com
      ed69cd40
    • David Weinehall's avatar
      drm/i915: Add has_psr-flag to gen9lp · 495001c6
      David Weinehall authored
      
      
      While testing Jim Bride's latest batch of PSR patches I noticed
      that gen9lp doesn't include the has_psr flag, and that our GLK
      system thus reported PSR as unsupported.
      
      This patch simply adds has_psr.
      
      Signed-off-by: default avatarDavid Weinehall <david.weinehall@linux.intel.com>
      Acked-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      Reviewed-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      Signed-off-by: default avatarRodrigo Vivi <rodrigo.vivi@intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170808100952.26448-1-david.weinehall@linux.intel.com
      495001c6
  4. Oct 02, 2017
    • Imre Deak's avatar
      drm/i915/gen8+: Init/reset display interrupts only if i915 IRQs are enabled · 9dfe2e3a
      Imre Deak authored
      
      
      Only init / reset the display interrupts during power well enabling /
      disabling if the i915 interrupts are enabled. So far we did the
      init / reset during driver loading / resuming too, where
      initialization / enabling of the i915 interrupts happens only at a later
      point. This didn't cause a problem due to GEN8_MASTER_IRQ_CONTROL being
      cleared, but triggered gen3_assert_iir_is_zero() in GEN8_IRQ_INIT_NDX().
      
      References: https://bugs.freedesktop.org/show_bug.cgi?id=102988
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170928100624.15533-1-imre.deak@intel.com
      9dfe2e3a
    • Imre Deak's avatar
      drm/i915/gen9+: Set same power state before hibernation image save/restore · dd9f31c7
      Imre Deak authored
      
      
      Atm, on GEN9 big core platforms before saving the hibernation image we
      uninitialize the display, disabling power wells manually, while before
      restoring the image we keep things powered (letting HW/DMC power down
      things as needed). The state mismatch will trigger the following error:
      
      DC state mismatch (0x0 -> 0x2)
      
      While the restore handler knows how to initialize the display from an
      unknown state (due to a different loader kernel or not having i915
      loaded in the loader kernel) we should still use the same state for
      consistency before image saving and restoring. Do this by uniniting the
      display before restoring the image too.
      
      Bugzilla: https://bugs.freedesktop.org/attachment.cgi?id=133376
      Reported-and-tested-by: default avatarWang Wendy <wendy.wang@intel.com>
      Reported-and-tested-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Wang Wendy <wendy.wang@intel.com>
      Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
      Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
      Cc: Ville Syrjala <ville.syrjala@linux.intel.com>
      Signed-off-by: default avatarImre Deak <imre.deak@intel.com>
      Reviewed-by: default avatarVille Syrjälä <ville.syrjala@linux.intel.com>
      Link: https://patchwork.freedesktop.org/patch/msgid/20170816144607.9935-1-imre.deak@intel.com
      dd9f31c7
  5. Sep 29, 2017