Re: [Intel-gfx] [PATCH 3/8] iommu/vt-d: Remove IOVA handling code from non-dma_ops path

2020-03-20 Thread Lu Baolu

On 2020/3/20 14:30, Tom Murphy wrote:

Could we merge patch 1-3 from this series? it just cleans up weird
code and merging these patches will cover some of the work needed to
move the intel iommu driver to the dma-iommu api in the future.


Can you please take a look at this patch series?

https://lkml.org/lkml/2020/3/13/1162

It probably makes this series easier.

Best regards,
baolu



On Sat, 21 Dec 2019 at 07:04, Tom Murphy  wrote:

Remove all IOVA handling code from the non-dma_ops path in the intel
iommu driver.

There's no need for the non-dma_ops path to keep track of IOVAs. The
whole point of the non-dma_ops path is that it allows the IOVAs to be
handled separately. The IOVA handling code removed in this patch is
pointless.

Signed-off-by: Tom Murphy

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH v2] drm/i915/gt: move files more files into debugfs

2020-03-20 Thread Andi Shyti
From: Andi Shyti 

The following interfaces:

i915_wedged
i915_forcewake_user
i915_gem_interrupt
i915_sseu_status

are dependent on gt values. Put them inside gt/ and drop the
"i915_" prefix name. This would be the new structure:

  gt
  |
  +-- forcewake_user
  |
  +-- interrupt_info_show
  |
  +-- sseu_status
  |
  +-- wedge

Signed-off-by: Andi Shyti 
---
Hi,

this patch is the first of a series that aims to refactor the
debugfs structure in the i915. Some changes will affect the
debugfs framework as well.

It is based on Daniele's series and it applies only on top of
that.

Thanks Tvrtko for the review,
Andi

Changelog
=
v2:
 - dropped changes on "drop_caches", they were indeed irrelevant
 - improved interrupt info function

 drivers/gpu/drm/i915/gt/debugfs_gt.c| 464 +++-
 drivers/gpu/drm/i915/gt/debugfs_gt_pm.c |  32 ++
 drivers/gpu/drm/i915/i915_debugfs.c | 441 +-
 3 files changed, 499 insertions(+), 438 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/debugfs_gt.c 
b/drivers/gpu/drm/i915/gt/debugfs_gt.c
index fcbc57e226c3..ab731350daea 100644
--- a/drivers/gpu/drm/i915/gt/debugfs_gt.c
+++ b/drivers/gpu/drm/i915/gt/debugfs_gt.c
@@ -5,12 +5,472 @@
  */
 
 #include 
+#include 
 
 #include "debugfs_engines.h"
 #include "debugfs_gt.h"
 #include "debugfs_gt_pm.h"
-#include "uc/debugfs_uc.h"
 #include "i915_drv.h"
+#include "intel_gt_pm.h"
+#include "intel_gt_requests.h"
+#include "uc/debugfs_uc.h"
+
+static void
+intel_sseu_copy_subslices(const struct sseu_dev_info *sseu, int slice,
+ u8 *to_mask)
+{
+   int offset = slice * sseu->ss_stride;
+
+   memcpy(_mask[offset], >subslice_mask[offset], sseu->ss_stride);
+}
+
+static void cherryview_sseu_device_status(struct intel_gt *gt,
+ struct sseu_dev_info *sseu)
+{
+#define SS_MAX 2
+   const int ss_max = SS_MAX;
+   u32 sig1[SS_MAX], sig2[SS_MAX];
+   int ss;
+
+   sig1[0] = intel_uncore_read(gt->uncore, CHV_POWER_SS0_SIG1);
+   sig1[1] = intel_uncore_read(gt->uncore, CHV_POWER_SS1_SIG1);
+   sig2[0] = intel_uncore_read(gt->uncore, CHV_POWER_SS0_SIG2);
+   sig2[1] = intel_uncore_read(gt->uncore, CHV_POWER_SS1_SIG2);
+
+   for (ss = 0; ss < ss_max; ss++) {
+   unsigned int eu_cnt;
+
+   if (sig1[ss] & CHV_SS_PG_ENABLE)
+   /* skip disabled subslice */
+   continue;
+
+   sseu->slice_mask = BIT(0);
+   sseu->subslice_mask[0] |= BIT(ss);
+   eu_cnt = ((sig1[ss] & CHV_EU08_PG_ENABLE) ? 0 : 2) +
+((sig1[ss] & CHV_EU19_PG_ENABLE) ? 0 : 2) +
+((sig1[ss] & CHV_EU210_PG_ENABLE) ? 0 : 2) +
+((sig2[ss] & CHV_EU311_PG_ENABLE) ? 0 : 2);
+   sseu->eu_total += eu_cnt;
+   sseu->eu_per_subslice = max_t(unsigned int,
+ sseu->eu_per_subslice, eu_cnt);
+   }
+#undef SS_MAX
+}
+
+static void gen10_sseu_device_status(struct intel_gt *gt,
+struct sseu_dev_info *sseu)
+{
+#define SS_MAX 6
+   const struct intel_runtime_info *info = RUNTIME_INFO(gt->i915);
+   u32 s_reg[SS_MAX], eu_reg[2 * SS_MAX], eu_mask[2];
+   int s, ss;
+
+   for (s = 0; s < info->sseu.max_slices; s++) {
+   /*
+* FIXME: Valid SS Mask respects the spec and read
+* only valid bits for those registers, excluding reserved
+* although this seems wrong because it would leave many
+* subslices without ACK.
+*/
+   s_reg[s] = intel_uncore_read(gt->uncore,
+GEN10_SLICE_PGCTL_ACK(s)) &
+   GEN10_PGCTL_VALID_SS_MASK(s);
+   eu_reg[2 * s] = intel_uncore_read(gt->uncore,
+ GEN10_SS01_EU_PGCTL_ACK(s));
+   eu_reg[2 * s + 1] = intel_uncore_read(gt->uncore,
+ GEN10_SS23_EU_PGCTL_ACK(s));
+   }
+
+   eu_mask[0] = GEN9_PGCTL_SSA_EU08_ACK |
+GEN9_PGCTL_SSA_EU19_ACK |
+GEN9_PGCTL_SSA_EU210_ACK |
+GEN9_PGCTL_SSA_EU311_ACK;
+   eu_mask[1] = GEN9_PGCTL_SSB_EU08_ACK |
+GEN9_PGCTL_SSB_EU19_ACK |
+GEN9_PGCTL_SSB_EU210_ACK |
+GEN9_PGCTL_SSB_EU311_ACK;
+
+   for (s = 0; s < info->sseu.max_slices; s++) {
+   if ((s_reg[s] & GEN9_PGCTL_SLICE_ACK) == 0)
+   /* skip disabled slice */
+   continue;
+
+   sseu->slice_mask |= BIT(s);
+   intel_sseu_copy_subslices(>sseu, s, sseu->subslice_mask);
+
+   for (ss = 0; ss < info->sseu.max_subslices; ss++) {
+   unsigned int 

[Intel-gfx] ✗ Fi.CI.BUILD: failure for drm/i915/gt: move files more files into debugfs (rev2)

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915/gt: move files more files into debugfs (rev2)
URL   : https://patchwork.freedesktop.org/series/74834/
State : failure

== Summary ==

Applying: drm/i915/gt: move files more files into debugfs
error: sha1 information is lacking or useless 
(drivers/gpu/drm/i915/i915_debugfs.c).
error: could not build fake ancestor
hint: Use 'git am --show-current-patch' to see the failed patch
Patch failed at 0001 drm/i915/gt: move files more files into debugfs
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/display: Trigger Modeset at boot for audio codec init

2020-03-20 Thread Shankar, Uma


> -Original Message-
> From: Souza, Jose 
> Sent: Friday, March 20, 2020 12:36 AM
> To: Shankar, Uma ; intel-gfx@lists.freedesktop.org
> Cc: Khor, Swee Aun 
> Subject: Re: [Intel-gfx] [PATCH] drm/i915/display: Trigger Modeset at boot 
> for audio
> codec init
> 
> On Wed, 2020-03-18 at 17:00 +0530, Uma Shankar wrote:
> > If external monitors are connected during boot up, driver uses the
> > same mode programmed by BIOS and avoids a full modeset.
> > This results in display audio codec left uninitialized and display
> > audio fails to work till user triggers a modeset.
> >
> > This patch fixes the same by triggering a modeset at boot.
> 
> We had the same issue for PSR, take a look to the fix:
> commit 33e059a2e4df454359f642f2235af39de9d3e914
> drm/i915/psr: Force PSR probe only after full initialization
> 
> Maybe make this even more generic.

Yeah this looks to dealing with almost a similar need. Thanks for pointing this 
out,
will try to come up with a generalized solution.

Regards,
Uma Shankar

> >
> > Cc: Ville Syrjälä 
> > Cc: Maarten Lankhorst 
> > Cc: Kai Vehmanen 
> > Signed-off-by: Uma Shankar 
> > Signed-off-by: SweeAun Khor 
> > ---
> >  drivers/gpu/drm/i915/display/intel_ddi.c | 4 
> >  drivers/gpu/drm/i915/display/intel_display.c | 8 
> >  drivers/gpu/drm/i915/i915_drv.h  | 3 +++
> >  3 files changed, 15 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c
> > b/drivers/gpu/drm/i915/display/intel_ddi.c
> > index 73d0f4648c06..ba380afa73a6 100644
> > --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> > @@ -3704,6 +3704,10 @@ static void intel_ddi_update_pipe(struct
> > intel_encoder *encoder,
> >   const struct intel_crtc_state
> > *crtc_state,
> >   const struct drm_connector_state
> > *conn_state)
> >  {
> > +   struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> > +
> > +   /* Clear the bootflag */
> > +   dev_priv->bootflag = false;
> >
> > if (!intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI))
> > intel_ddi_update_pipe_dp(encoder, crtc_state, conn_state); diff
> > --git a/drivers/gpu/drm/i915/display/intel_display.c
> > b/drivers/gpu/drm/i915/display/intel_display.c
> > index 8f23c4d51c33..a1487539495f 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > @@ -14751,6 +14751,10 @@ static int intel_atomic_check(struct
> > drm_device *dev,
> > if (new_crtc_state->hw.mode.private_flags !=
> > old_crtc_state->hw.mode.private_flags)
> > new_crtc_state->uapi.mode_changed = true;
> > +
> > +   /* Set mode_change to init audio code once at boot */
> > +   if (dev_priv->bootflag && new_crtc_state->hw.active)
> > +   new_crtc_state->uapi.mode_changed = true;
> > }
> >
> > ret = drm_atomic_helper_check_modeset(dev, >base); @@
> > -17655,11 +17659,15 @@ static void intel_update_fdi_pll_freq(struct
> > drm_i915_private *dev_priv)
> >
> >  static int intel_initial_commit(struct drm_device *dev)  {
> > +   struct drm_i915_private *dev_priv = to_i915(dev);
> > struct drm_atomic_state *state = NULL;
> > struct drm_modeset_acquire_ctx ctx;
> > struct intel_crtc *crtc;
> > int ret = 0;
> >
> > +   /* Set Flag to trigger modeset for audio codec init */
> > +   dev_priv->bootflag = true;
> > +
> > state = drm_atomic_state_alloc(dev);
> > if (!state)
> > return -ENOMEM;
> > diff --git a/drivers/gpu/drm/i915/i915_drv.h
> > b/drivers/gpu/drm/i915/i915_drv.h index a7ea1d855359..207196f9632b
> > 100644
> > --- a/drivers/gpu/drm/i915/i915_drv.h
> > +++ b/drivers/gpu/drm/i915/i915_drv.h
> > @@ -1210,6 +1210,9 @@ struct drm_i915_private {
> >  * NOTE: This is the dri1/ums dungeon, don't add stuff here.
> > Your patch
> >  * will be rejected. Instead look for a better place.
> >  */
> > +
> > +   /* Flag to trigger modeset for Audio codec init once during
> > boot */
> > +   bool bootflag;
> >  };
> >
> >  static inline struct drm_i915_private *to_i915(const struct
> > drm_device *dev)
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 02/10] drm/i915: Adjust PM QoS response frequency based on GPU load.

2020-03-20 Thread Chris Wilson
Quoting Francisco Jerez (2020-03-20 02:46:19)
> Francisco Jerez  writes:
> 
> > Francisco Jerez  writes:
> >
> >> Chris Wilson  writes:
> >>
> >>> Quoting Francisco Jerez (2020-03-10 21:41:55)
>  diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
>  b/drivers/gpu/drm/i915/gt/intel_lrc.c
>  index b9b3f78f1324..a5d7a80b826d 100644
>  --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
>  +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
>  @@ -1577,6 +1577,11 @@ static void execlists_submit_ports(struct 
>  intel_engine_cs *engine)
>  /* we need to manually load the submit queue */
>  if (execlists->ctrl_reg)
>  writel(EL_CTRL_LOAD, execlists->ctrl_reg);
>  +
>  +   if (execlists_num_ports(execlists) > 1 &&
> >>> pending[1] is always defined, the minimum submission is one slot, with
> >>> pending[1] as the sentinel NULL.
> >>>
>  +   execlists->pending[1] &&
>  +   !atomic_xchg(>overload, 1))
>  +   intel_gt_pm_active_begin(>i915->gt);
> >>>
> >>> engine->gt
> >>>
> >>
> >> Applied your suggestions above locally, will probably wait to have a few
> >> more changes batched up before sending a v2.
> >>
>   }
>   
>   static bool ctx_single_port_submission(const struct intel_context *ce)
>  @@ -2213,6 +2218,12 @@ cancel_port_requests(struct 
>  intel_engine_execlists * const execlists)
>  clear_ports(execlists->inflight, 
>  ARRAY_SIZE(execlists->inflight));
>   
>  WRITE_ONCE(execlists->active, execlists->inflight);
>  +
>  +   if (atomic_xchg(>overload, 0)) {
>  +   struct intel_engine_cs *engine =
>  +   container_of(execlists, typeof(*engine), 
>  execlists);
>  +   intel_gt_pm_active_end(>i915->gt);
>  +   }
>   }
>   
>   static inline void
>  @@ -2386,6 +2397,9 @@ static void process_csb(struct intel_engine_cs 
>  *engine)
>  /* port0 completed, advanced to port1 */
>  trace_ports(execlists, "completed", 
>  execlists->active);
>   
>  +   if (atomic_xchg(>overload, 0))
>  +   
>  intel_gt_pm_active_end(>i915->gt);
> >>>
> >>> So this looses track if we preempt a dual-ELSP submission with a
> >>> single-ELSP submission (and never go back to dual).
> >>>
> >>
> >> Yes, good point.  You're right that if a dual-ELSP submission gets
> >> preempted by a single-ELSP submission "overload" will remain signaled
> >> until the first completion interrupt arrives (e.g. from the preempting
> >> submission).
> >>
> >>> If you move this to the end of the loop and check
> >>>
> >>> if (!execlists->active[1] && atomic_xchg(>overload, 0))
> >>> intel_gt_pm_active_end(engine->gt);
> >>>
> >>> so that it covers both preemption/promotion and completion.
> >>>
> >>
> >> That sounds reasonable.
> >>
> >>> However, that will fluctuate quite rapidly. (And runs the risk of
> >>> exceeding the sentinel.)
> >>>
> >>> An alternative approach would be to couple along
> >>> schedule_in/schedule_out
> >>>
> >>> atomic_set(overload, -1);
> >>>
> >>> __execlists_schedule_in:
> >>> if (!atomic_fetch_inc(overload)
> >>> intel_gt_pm_active_begin(engine->gt);
> >>> __execlists_schedule_out:
> >>> if (!atomic_dec_return(overload)
> >>> intel_gt_pm_active_end(engine->gt);
> >>>
> >>> which would mean we are overloaded as soon as we try to submit an
> >>> overlapping ELSP.
> >>>
> >>
> >> That sounds good to me too, and AFAICT would have roughly the same
> >> behavior as this metric except for the preemption corner case you
> >> mention above.  I'll try this and verify that I get approximately the
> >> same performance numbers.
> >>
> >
> > This suggestion seems to lead to some minor regressions, I'm
> > investigating the issue.  Will send a v2 as soon as I have something
> > along the lines of what you suggested running with equivalent
> > performance to v1.
> 
> I think I've figured out why both of the alternatives we were talking
> about above lead to a couple percent regressions in latency-sensitive
> workloads: In some scenarios it's possible for execlist_dequeue() to
> execute after the GPU has gone idle, but before we've processed the
> corresponding CSB entries, particularly when called from the
> submit_queue() path.  In that case __execlists_schedule_in() will think
> that the next request is overlapping, and tell CPU power management to
> relax, even though the GPU is starving intermittently.
> 
> How about we do the same:
> 
> |   if (atomic_xchg(>overload, 0))
> |   intel_gt_pm_active_end(engine->gt);
> 
> as in this patch from process_csb() in response to each completion CSB
> entry, which ensures that the system is considered non-GPU-bound as soon
> as the first context completes.  Subsequently if another 

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/gt: Report context-is-closed prior to pinning

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915/gt: Report context-is-closed prior to pinning
URL   : https://patchwork.freedesktop.org/series/74916/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8163 -> Patchwork_17034


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/index.html

Known issues


  Here are the changes found in Patchwork_17034 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@execlists:
- fi-cfl-guc: [PASS][1] -> [INCOMPLETE][2] ([i915#1430] / 
[i915#656])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/fi-cfl-guc/igt@i915_selftest@l...@execlists.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/fi-cfl-guc/igt@i915_selftest@l...@execlists.html
- fi-icl-y:   [PASS][3] -> [DMESG-FAIL][4] ([fdo#108569])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/fi-icl-y/igt@i915_selftest@l...@execlists.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/fi-icl-y/igt@i915_selftest@l...@execlists.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [PASS][5] -> [FAIL][6] ([i915#323])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
 Possible fixes 

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
- fi-cfl-8109u:   [FAIL][7] ([fdo#103375]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/fi-cfl-8109u/igt@kms_pipe_crc_ba...@suspend-read-crc-pipe-a.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/fi-cfl-8109u/igt@kms_pipe_crc_ba...@suspend-read-crc-pipe-a.html

  
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [i915#1430]: https://gitlab.freedesktop.org/drm/intel/issues/1430
  [i915#323]: https://gitlab.freedesktop.org/drm/intel/issues/323
  [i915#656]: https://gitlab.freedesktop.org/drm/intel/issues/656


Participating hosts (41 -> 40)
--

  Additional (3): fi-skl-6770hq fi-skl-6600u fi-elk-e7500 
  Missing(4): fi-byt-squawks fi-kbl-7560u fi-ehl-1 fi-bsw-cyan 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_8163 -> Patchwork_17034

  CI-20190529: 20190529
  CI_DRM_8163: 710b3af22d17146897a55f01868d8e2d867895d3 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5523: cf6d524007ac51a7d5a48503ea3dd5f01fd4ebab @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17034: f69264ac723e239058f1019f14540fa472e9896c @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

f69264ac723e drm/i915/gt: Report context-is-closed prior to pinning

== Logs ==

For more details see: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/index.html
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 5/6] drm/i915/tc/icl: Implement the TC cold exit sequence

2020-03-20 Thread Dan Carpenter
Hi "José,

Thank you for the patch! Perhaps something to improve:

url:
https://github.com/0day-ci/linux/commits/Jos-Roberto-de-Souza/drm-i915-tc-tgl-Implement-TCCOLD-sequences/20200319-080253
base:   git://anongit.freedesktop.org/drm-intel for-linux-next

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot 
Reported-by: Dan Carpenter 

smatch warnings:
drivers/gpu/drm/i915/display/intel_tc.c:554 icl_tc_cold_request() error: 
uninitialized symbol 'ret'.

# 
https://github.com/0day-ci/linux/commit/29f27e6df6ad82b09a3c9ddaf5f51b2fc1647178
git remote add linux-review https://github.com/0day-ci/linux
git remote update linux-review
git checkout 29f27e6df6ad82b09a3c9ddaf5f51b2fc1647178
vim +/ret +554 drivers/gpu/drm/i915/display/intel_tc.c

29f27e6df6ad82 José Roberto de Souza 2020-03-18  528  static inline int 
icl_tc_cold_request(struct intel_digital_port *dig_port,
29f27e6df6ad82 José Roberto de Souza 2020-03-18  529
  bool block)
29f27e6df6ad82 José Roberto de Souza 2020-03-18  530  {
29f27e6df6ad82 José Roberto de Souza 2020-03-18  531struct drm_i915_private 
*i915 = to_i915(dig_port->base.base.dev);
29f27e6df6ad82 José Roberto de Souza 2020-03-18  532enum 
intel_display_power_domain aux_domain;
29f27e6df6ad82 José Roberto de Souza 2020-03-18  533int ret;
29f27e6df6ad82 José Roberto de Souza 2020-03-18  534  
29f27e6df6ad82 José Roberto de Souza 2020-03-18  535aux_domain = 
intel_aux_ch_to_power_domain(dig_port->aux_ch);
29f27e6df6ad82 José Roberto de Souza 2020-03-18  536  
29f27e6df6ad82 José Roberto de Souza 2020-03-18  537if (block) {
29f27e6df6ad82 José Roberto de Souza 2020-03-18  538
dig_port->tc_cold_wakeref =
29f27e6df6ad82 José Roberto de Souza 2020-03-18  539
intel_display_power_get_without_ack(i915, aux_domain);
29f27e6df6ad82 José Roberto de Souza 2020-03-18  540  
29f27e6df6ad82 José Roberto de Souza 2020-03-18  541do {
29f27e6df6ad82 José Roberto de Souza 2020-03-18  542ret = 
sandybridge_pcode_write_timeout(i915,
29f27e6df6ad82 José Roberto de Souza 2020-03-18  543
  ICL_PCODE_EXIT_TCCOLD,
29f27e6df6ad82 José Roberto de Souza 2020-03-18  544
  0, 250, 1);
29f27e6df6ad82 José Roberto de Souza 2020-03-18  545  
29f27e6df6ad82 José Roberto de Souza 2020-03-18  546} while (ret == 
-EAGAIN);

ret is only initialized on this path

29f27e6df6ad82 José Roberto de Souza 2020-03-18  547} else if 
(dig_port->tc_mode == TC_PORT_LEGACY) {
29f27e6df6ad82 José Roberto de Souza 2020-03-18  548
drm_WARN_ON(>drm, !dig_port->tc_lock_wakeref);
29f27e6df6ad82 José Roberto de Souza 2020-03-18  549
intel_display_power_put(i915, aux_domain,
29f27e6df6ad82 José Roberto de Souza 2020-03-18  550
dig_port->tc_cold_wakeref);
29f27e6df6ad82 José Roberto de Souza 2020-03-18  551
dig_port->tc_cold_wakeref = 0;
29f27e6df6ad82 José Roberto de Souza 2020-03-18  552}
29f27e6df6ad82 José Roberto de Souza 2020-03-18  553  
29f27e6df6ad82 José Roberto de Souza 2020-03-18 @554return ret;
29f27e6df6ad82 José Roberto de Souza 2020-03-18  555  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v2] drm/i915/gt: move files more files into debugfs

2020-03-20 Thread Chris Wilson
Quoting Tvrtko Ursulin (2020-03-20 12:01:14)
> 
> 
> On 20/03/2020 11:45, Andi Shyti wrote:
> > Hi Chris,
> > 
> > On Fri, Mar 20, 2020 at 11:11:46AM +, Chris Wilson wrote:
> >> Quoting Andi Shyti (2020-03-20 03:49:01)
> >>> From: Andi Shyti 
> >>>
> >>> The following interfaces:
> >>>
> >>> i915_wedged
> >>> i915_forcewake_user
> >>> i915_gem_interrupt
> >>> i915_sseu_status
> >>>
> >>> are dependent on gt values. Put them inside gt/ and drop the
> >>> "i915_" prefix name. This would be the new structure:
> >>>
> >>>gt
> >>>|
> >>>+-- forcewake_user
> >>>|
> >>>+-- interrupt_info_show
> >>
> >> Please tell me you didn't actually include _show :)
> > 
> > You know me, everything can happen!
> > I did overlook indeed, but I had to check if I actually did
> > include _show. Thanks for spotting it.
> > 
> >>>|
> >>>+-- sseu_status
> >>>|
> >>>+-- wedge
> >>
> >> The world will rejoice when it's stopped being called wedged.
> >> Well Mika will at any rate.
> > 
> > well, I did keep the original name.
> > 
> >> 'echo rcs0 > reset' maybe? Yeah. Wait, but rcs0 is uabi name, so top
> >> level.
> >>
> >> Oh well, I definitely do not think copying a mistake is a good idea.
> > 
> > OK, I'll call it reset
> 
> Wedge is wedge and reset is reset, or is it not?

i915_wedged is reset :)

Hysterical raisons.

But my main question is what do you feed into a gt/reset? Currently we
have a random bitmask to reset a group of engines. Should we just go and
put reset into sysfs/engine/ ?
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH v2] drm/i915/execlists: Pull tasklet interrupt-bh local to direct submission

2020-03-20 Thread Chris Wilson
We dropped calling process_csb prior to handling direct submission in
order to avoid the nesting of spinlocks and lift process_csb() and the
majority of the tasklet out of irq-off. However, we do want to avoid
ksoftirqd latency in the fast path, so try and pull the interrupt-bh
local to direct submission if we can acquire the tasklet's lock.

v2: Tweak the balance to avoid over submitting lite-restores

Signed-off-by: Chris Wilson 
Cc: Francisco Jerez 
Cc: Tvrtko Ursulin 
---
 drivers/gpu/drm/i915/gt/intel_lrc.c | 40 +
 1 file changed, 29 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index f09dd87324b9..0d9c6ea4adaa 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -2884,29 +2884,47 @@ static void queue_request(struct intel_engine_cs 
*engine,
set_bit(I915_FENCE_FLAG_PQUEUE, >fence.flags);
 }
 
-static void __submit_queue_imm(struct intel_engine_cs *engine)
+static bool pending_csb(const struct intel_engine_execlists *el)
 {
-   struct intel_engine_execlists * const execlists = >execlists;
-
-   if (reset_in_progress(execlists))
-   return; /* defer until we restart the engine following reset */
-
-   if (execlists->tasklet.func == execlists_submission_tasklet)
-   __execlists_submission_tasklet(engine);
-   else
-   tasklet_hi_schedule(>tasklet);
+   return READ_ONCE(*el->csb_write) != READ_ONCE(el->csb_head);
 }
 
 static void submit_queue(struct intel_engine_cs *engine,
 const struct i915_request *rq)
 {
struct intel_engine_execlists *execlists = >execlists;
+   struct i915_request *inflight;
 
if (rq_prio(rq) <= execlists->queue_priority_hint)
return;
 
+   if (reset_in_progress(execlists))
+   return; /* defer until we restart the engine following reset */
+
+   /* Hopefully we clear execlists->pending[] to let us through */
+   if (execlists->pending[0] && tasklet_trylock(>tasklet)) {
+   process_csb(engine);
+   tasklet_unlock(>tasklet);
+   }
+
+   /*
+* Suppress immediate lite-restores, leave that to the tasklet.
+*
+* However, we leave the queue_priority_hint unset so that if we do
+* submit a second context, we push that into ELSP[1] immediately.
+*/
+   inflight = execlists_active(>execlists);
+   if (inflight && inflight->context == rq->context)
+   return;
+
execlists->queue_priority_hint = rq_prio(rq);
-   __submit_queue_imm(engine);
+   __execlists_submission_tasklet(engine);
+
+   /* Try and pull an interrupt-bh queued on another CPU to here */
+   if (pending_csb(execlists) && tasklet_trylock(>tasklet)) {
+   process_csb(engine);
+   tasklet_unlock(>tasklet);
+   }
 }
 
 static bool ancestor_on_hold(const struct intel_engine_cs *engine,
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v19 4/8] drm/i915: Refactor intel_can_enable_sagv

2020-03-20 Thread Lisovskiy, Stanislav
On Wed, Mar 11, 2020 at 06:31:30PM +0200, Ville Syrjälä wrote:
> On Mon, Mar 09, 2020 at 06:12:00PM +0200, Stanislav Lisovskiy wrote:
> > Currently intel_can_enable_sagv function contains
> > a mix of workarounds for different platforms
> > some of them are not valid for gens >= 11 already,
> > so lets split it into separate functions.
> > 
> > v2:
> > - Rework watermark calculation algorithm to
> >   attempt to calculate Level 0 watermark
> >   with added sagv block time latency and
> >   check if it fits in DBuf in order to
> >   determine if SAGV can be enabled already
> >   at this stage, just as BSpec 49325 states.
> >   if that fails rollback to usual Level 0
> >   latency and disable SAGV.
> > - Remove unneeded tabs(James Ausmus)
> > 
> > v3: Rebased the patch
> > 
> > v4: - Added back interlaced check for Gen12 and
> >   added separate function for TGL SAGV check
> >   (thanks to James Ausmus for spotting)
> > - Removed unneeded gen check
> > - Extracted Gen12 SAGV decision making code
> >   to a separate function from skl_compute_wm
> > 
> > v5: - Added SAGV global state to dev_priv, because
> >   we need to track all pipes, not only those
> >   in atomic state. Each pipe has now correspondent
> >   bit mask reflecting, whether it can tolerate
> >   SAGV or not(thanks to Ville Syrjala for suggestions).
> > - Now using active flag instead of enable in crc
> >   usage check.
> > 
> > v6: - Fixed rebase conflicts
> > 
> > v7: - kms_cursor_legacy seems to get broken because of multiple memcpy
> >   calls when copying level 0 water marks for enabled SAGV, to
> >   fix this now simply using that field right away, without copying,
> >   for that introduced a new wm_level accessor which decides which
> >   wm_level to return based on SAGV state.
> > 
> > v8: - Protect crtc_sagv_mask same way as we do for other global state
> >   changes: i.e check if changes are needed, then grab all crtc locks
> >   to serialize the changes(Ville Syrjälä)
> > - Add crtc_sagv_mask caching in order to avoid needless recalculations
> >   (Matthew Roper)
> > - Put back Gen12 SAGV switch in order to get it enabled in separate
> >   patch(Matthew Roper)
> > - Rename *_set_sagv_mask to *_compute_sagv_mask(Matthew Roper)
> > - Check if there are no active pipes in intel_can_enable_sagv
> >   instead of platform specific functions(Matthew Roper), same
> >   for intel_has_sagv check.
> > 
> > v9  - Switched to u8 for crtc_sagv_mask(Ville Syrjälä)
> > - crtc_sagv_mask now is pipe_sagv_mask(Ville Syrjälä)
> > - Extracted sagv checking logic from skl/icl/tgl_compute_sagv_mask
> > - Extracted skl_plane_wm_level function and passing latency to
> >   separate patches(Ville Syrjälä)
> > - Removed part of unneeded copy-paste from tgl_check_pipe_fits_sagv_wm
> >   (Ville Syrjälä)
> > - Now using simple assignment for sagv_wm0 as it contains only
> >   pod types and no pointers(Ville Syrjälä)
> > - Fixed intel_can_enable_sagv not to do double duty, now it only
> >   check SAGV bits by ANDing those between local and global state.
> >   The SAGV masks are now computed after watermarks are available,
> >   in order to be able to figure out if ddb ranges are fitting nicely.
> >   (Ville Syrjälä)
> > - Now having uv_sagv_wm0 and sagv_wm0, otherwise we have wrong logic
> >   when using skl_plane_wm_level accessor, as we had previously for
> >   Gen11+ color plane and regular wm levels, so probably both
> >   has to be recalculated with additional SAGV block time for Level 0.
> > 
> > v10: - Starting to use new global state for storing pipe_sagv_mask
> > 
> > v11: - Fixed rebase conflict with recent drm-tip
> >  - Check if we really need to recalculate SAGV mask, otherwise
> >bail out without making any changes.
> >  - Use cached SAGV result, instead of recalculating it everytime,
> >if bw_state hasn't changed.
> > 
> > v12: - Removed WARN from intel_can_enable_sagv, in some of the commits
> >if we don't recalculated watermarks, bw_state is not recalculated,
> >thus leading to SAGV state not recalculated by the commit state,
> >which is still calling intel_can_enable_sagv function. Fix that
> >by just analyzing the current global bw_state object - because
> >we simply have no other objects related to that.
> > 
> > v13: - Rebased, fixed warnings regarding long lines
> >  - Changed function call sites from intel_atomic_bw* to
> >intel_wb_* as was suggested.(Jani Nikula)
> >  - Taken ddb_state_changed and bw_state_changed into use.
> > 
> > v14: - total_affected_planes is no longer needed to check for ddb changes,
> >just as active_pipe_changes.
> > 
> > v15: - Fixed stupid mistake with uninitialized crtc in
> >skl_compute_sagv_mask.
> > 
> > v16: - 

Re: [Intel-gfx] [CI 2/2] drm/i915/gt: Cancel a hung context if already closed

2020-03-20 Thread Mika Kuoppala
Chris Wilson  writes:

> Use the restored ability to check if a context is closed to decide
> whether or not to immediately ban the context from further execution
> after a hang.
>
> Fixes: be90e344836a ("drm/i915/gt: Cancel banned contexts after GT reset")
> Signed-off-by: Chris Wilson 
> Cc: Mika Kuoppala 
> Cc: Tvrtko Ursulin 

Reviewed-by: Mika Kuoppala 

> ---
>  drivers/gpu/drm/i915/gt/intel_reset.c | 5 +
>  1 file changed, 5 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c 
> b/drivers/gpu/drm/i915/gt/intel_reset.c
> index 9a15bdf31c7f..003f26b42998 100644
> --- a/drivers/gpu/drm/i915/gt/intel_reset.c
> +++ b/drivers/gpu/drm/i915/gt/intel_reset.c
> @@ -88,6 +88,11 @@ static bool mark_guilty(struct i915_request *rq)
>   bool banned;
>   int i;
>  
> + if (intel_context_is_closed(rq->context)) {
> + intel_context_set_banned(rq->context);
> + return true;
> + }
> +
>   rcu_read_lock();
>   ctx = rcu_dereference(rq->context->gem_context);
>   if (ctx && !kref_get_unless_zero(>ref))
> -- 
> 2.20.1
>
> ___
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v2] drm/i915/gt: move files more files into debugfs

2020-03-20 Thread Andi Shyti
Hi Chris,

On Fri, Mar 20, 2020 at 11:11:46AM +, Chris Wilson wrote:
> Quoting Andi Shyti (2020-03-20 03:49:01)
> > From: Andi Shyti 
> > 
> > The following interfaces:
> > 
> > i915_wedged
> > i915_forcewake_user
> > i915_gem_interrupt
> > i915_sseu_status
> > 
> > are dependent on gt values. Put them inside gt/ and drop the
> > "i915_" prefix name. This would be the new structure:
> > 
> >   gt
> >   |
> >   +-- forcewake_user
> >   |
> >   +-- interrupt_info_show
> 
> Please tell me you didn't actually include _show :)

You know me, everything can happen!
I did overlook indeed, but I had to check if I actually did
include _show. Thanks for spotting it.

> >   |
> >   +-- sseu_status
> >   |
> >   +-- wedge
> 
> The world will rejoice when it's stopped being called wedged.
> Well Mika will at any rate.

well, I did keep the original name.

> 'echo rcs0 > reset' maybe? Yeah. Wait, but rcs0 is uabi name, so top
> level.
> 
> Oh well, I definitely do not think copying a mistake is a good idea.

OK, I'll call it reset

Andi
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v2] drm/i915/gt: move files more files into debugfs

2020-03-20 Thread Tvrtko Ursulin




On 20/03/2020 11:45, Andi Shyti wrote:

Hi Chris,

On Fri, Mar 20, 2020 at 11:11:46AM +, Chris Wilson wrote:

Quoting Andi Shyti (2020-03-20 03:49:01)

From: Andi Shyti 

The following interfaces:

i915_wedged
i915_forcewake_user
i915_gem_interrupt
i915_sseu_status

are dependent on gt values. Put them inside gt/ and drop the
"i915_" prefix name. This would be the new structure:

   gt
   |
   +-- forcewake_user
   |
   +-- interrupt_info_show


Please tell me you didn't actually include _show :)


You know me, everything can happen!
I did overlook indeed, but I had to check if I actually did
include _show. Thanks for spotting it.


   |
   +-- sseu_status
   |
   +-- wedge


The world will rejoice when it's stopped being called wedged.
Well Mika will at any rate.


well, I did keep the original name.


'echo rcs0 > reset' maybe? Yeah. Wait, but rcs0 is uabi name, so top
level.

Oh well, I definitely do not think copying a mistake is a good idea.


OK, I'll call it reset


Wedge is wedge and reset is reset, or is it not?

Regards,

Tvrtko
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915: Immediately execute the fenced work

2020-03-20 Thread Chris Wilson
If the caller allows and we do not have to wait for any signals,
immediately execute the work within the caller's process. By doing so we
avoid the overhead of scheduling a new task, and the latency in
executing it, at the cost of pulling that work back into the immediate
context. (Sometimes we still prefer to offload the task to another cpu,
especially if we plan on executing many such tasks in parallel for this
client.)

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c |  2 +-
 drivers/gpu/drm/i915/i915_sw_fence_work.c  |  5 -
 drivers/gpu/drm/i915/i915_sw_fence_work.h  | 12 
 drivers/gpu/drm/i915/i915_vma.c|  2 +-
 4 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 36d069504836..c1179c00bc61 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -1784,7 +1784,7 @@ static int eb_parse_pipeline(struct i915_execbuffer *eb,
dma_resv_add_excl_fence(shadow->resv, >base.dma);
dma_resv_unlock(shadow->resv);
 
-   dma_fence_work_commit(>base);
+   dma_fence_work_commit_imm(>base);
return 0;
 
 err_batch_unlock:
diff --git a/drivers/gpu/drm/i915/i915_sw_fence_work.c 
b/drivers/gpu/drm/i915/i915_sw_fence_work.c
index 997b2998f1f2..a3a81bb8f2c3 100644
--- a/drivers/gpu/drm/i915/i915_sw_fence_work.c
+++ b/drivers/gpu/drm/i915/i915_sw_fence_work.c
@@ -38,7 +38,10 @@ fence_notify(struct i915_sw_fence *fence, enum 
i915_sw_fence_notify state)
 
if (!f->dma.error) {
dma_fence_get(>dma);
-   queue_work(system_unbound_wq, >work);
+   if (test_bit(DMA_FENCE_WORK_IMM, >dma.flags))
+   fence_work(>work);
+   else
+   queue_work(system_unbound_wq, >work);
} else {
fence_complete(f);
}
diff --git a/drivers/gpu/drm/i915/i915_sw_fence_work.h 
b/drivers/gpu/drm/i915/i915_sw_fence_work.h
index 3a22b287e201..90a371e0d183 100644
--- a/drivers/gpu/drm/i915/i915_sw_fence_work.h
+++ b/drivers/gpu/drm/i915/i915_sw_fence_work.h
@@ -32,6 +32,10 @@ struct dma_fence_work {
const struct dma_fence_work_ops *ops;
 };
 
+enum {
+   DMA_FENCE_WORK_IMM = DMA_FENCE_FLAG_USER_BITS,
+};
+
 void dma_fence_work_init(struct dma_fence_work *f,
 const struct dma_fence_work_ops *ops);
 int dma_fence_work_chain(struct dma_fence_work *f, struct dma_fence *signal);
@@ -41,4 +45,12 @@ static inline void dma_fence_work_commit(struct 
dma_fence_work *f)
i915_sw_fence_commit(>chain);
 }
 
+static inline void dma_fence_work_commit_imm(struct dma_fence_work *f)
+{
+   if (atomic_read(>chain.pending) <= 1)
+   set_bit(DMA_FENCE_WORK_IMM, >dma.flags);
+
+   dma_fence_work_commit(f);
+}
+
 #endif /* I915_SW_FENCE_WORK_H */
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
index 5b3efb43a8ef..6dd242c09daf 100644
--- a/drivers/gpu/drm/i915/i915_vma.c
+++ b/drivers/gpu/drm/i915/i915_vma.c
@@ -980,7 +980,7 @@ int i915_vma_pin(struct i915_vma *vma, u64 size, u64 
alignment, u64 flags)
mutex_unlock(>vm->mutex);
 err_fence:
if (work)
-   dma_fence_work_commit(>base);
+   dma_fence_work_commit_imm(>base);
if (wakeref)
intel_runtime_pm_put(>vm->i915->runtime_pm, wakeref);
 err_pages:
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/execlists: Pull tasklet interrupt-bh local to direct submission

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915/execlists: Pull tasklet interrupt-bh local to direct submission
URL   : https://patchwork.freedesktop.org/series/74914/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8163_full -> Patchwork_17032_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17032_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17032_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Possible new issues
---

  Here are the unknown changes that may have been introduced in 
Patchwork_17032_full:

### IGT changes ###

 Possible regressions 

  * igt@i915_selftest@live@hangcheck:
- shard-tglb: [PASS][1] -> [INCOMPLETE][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-tglb7/igt@i915_selftest@l...@hangcheck.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/shard-tglb1/igt@i915_selftest@l...@hangcheck.html

  
Known issues


  Here are the changes found in Patchwork_17032_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_busy@busy-vcs1:
- shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#112080]) +4 similar 
issues
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb2/igt@gem_b...@busy-vcs1.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/shard-iclb7/igt@gem_b...@busy-vcs1.html

  * igt@gem_ctx_persistence@close-replace-race:
- shard-apl:  [PASS][5] -> [INCOMPLETE][6] ([fdo#103927] / 
[i915#1402])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-apl6/igt@gem_ctx_persiste...@close-replace-race.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/shard-apl8/igt@gem_ctx_persiste...@close-replace-race.html

  * igt@gem_ctx_persistence@engines-mixed-process@vecs0:
- shard-skl:  [PASS][7] -> [FAIL][8] ([i915#679])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-skl9/igt@gem_ctx_persistence@engines-mixed-proc...@vecs0.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/shard-skl5/igt@gem_ctx_persistence@engines-mixed-proc...@vecs0.html

  * igt@gem_ctx_shared@exec-single-timeline-bsd:
- shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#110841])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb5/igt@gem_ctx_sha...@exec-single-timeline-bsd.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/shard-iclb1/igt@gem_ctx_sha...@exec-single-timeline-bsd.html

  * igt@gem_exec_parallel@vcs1-contexts:
- shard-tglb: [PASS][11] -> [INCOMPLETE][12] ([i915#529])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-tglb5/igt@gem_exec_paral...@vcs1-contexts.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/shard-tglb8/igt@gem_exec_paral...@vcs1-contexts.html

  * igt@gem_exec_schedule@implicit-read-write-bsd1:
- shard-iclb: [PASS][13] -> [SKIP][14] ([fdo#109276] / [i915#677])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb4/igt@gem_exec_sched...@implicit-read-write-bsd1.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/shard-iclb8/igt@gem_exec_sched...@implicit-read-write-bsd1.html

  * igt@gem_exec_schedule@pi-shared-iova-bsd:
- shard-iclb: [PASS][15] -> [SKIP][16] ([i915#677]) +1 similar issue
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb5/igt@gem_exec_sched...@pi-shared-iova-bsd.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/shard-iclb1/igt@gem_exec_sched...@pi-shared-iova-bsd.html

  * igt@gem_exec_schedule@pi-shared-iova-vebox:
- shard-glk:  [PASS][17] -> [FAIL][18] ([i915#859])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-glk9/igt@gem_exec_sched...@pi-shared-iova-vebox.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/shard-glk3/igt@gem_exec_sched...@pi-shared-iova-vebox.html

  * igt@gem_exec_schedule@preempt-hang-bsd:
- shard-iclb: [PASS][19] -> [SKIP][20] ([fdo#112146]) +2 similar 
issues
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb5/igt@gem_exec_sched...@preempt-hang-bsd.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/shard-iclb1/igt@gem_exec_sched...@preempt-hang-bsd.html

  * igt@gem_ppgtt@flink-and-close-vma-leak:
- shard-apl:  [PASS][21] -> [FAIL][22] ([i915#644])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-apl8/igt@gem_pp...@flink-and-close-vma-leak.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/shard-apl1/igt@gem_pp...@flink-and-close-vma-leak.html

  * 

[Intel-gfx] [PATCH 4/4] drm/i915/gem: Avoid gem_context->mutex for simple vma lookup

2020-03-20 Thread Chris Wilson
As we store the handle lookup inside a radix tree, we do not need the
gem_context->mutex except until we need to insert our lookup into the
common radix tree. This takes a small bit of rearranging to ensure that
the lut we insert into the tree is ready prior to actually inserting it
(as soon as it is exposed via the radixtree, it is visible to any other
submission).

v2: For brownie points, remove the goto spaghetti.
v3: Tighten up the closed-handle checks.

Signed-off-by: Chris Wilson 
---
 .../gpu/drm/i915/gem/i915_gem_execbuffer.c| 136 +++---
 1 file changed, 87 insertions(+), 49 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index c1179c00bc61..876fc2e124b9 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -481,7 +481,7 @@ eb_add_vma(struct i915_execbuffer *eb,
 
GEM_BUG_ON(i915_vma_is_closed(vma));
 
-   ev->vma = i915_vma_get(vma);
+   ev->vma = vma;
ev->exec = entry;
ev->flags = entry->flags;
 
@@ -728,77 +728,117 @@ static int eb_select_context(struct i915_execbuffer *eb)
return 0;
 }
 
-static int eb_lookup_vmas(struct i915_execbuffer *eb)
+static int __eb_add_lut(struct i915_execbuffer *eb,
+   u32 handle, struct i915_vma *vma)
 {
-   struct radix_tree_root *handles_vma = >gem_context->handles_vma;
-   struct drm_i915_gem_object *obj;
-   unsigned int i, batch;
+   struct i915_gem_context *ctx = eb->gem_context;
+   struct i915_lut_handle *lut;
int err;
 
-   if (unlikely(i915_gem_context_is_closed(eb->gem_context)))
-   return -ENOENT;
+   lut = i915_lut_handle_alloc();
+   if (unlikely(!lut))
+   return -ENOMEM;
 
-   INIT_LIST_HEAD(>relocs);
-   INIT_LIST_HEAD(>unbound);
+   i915_vma_get(vma);
+   if (!atomic_fetch_inc(>open_count))
+   i915_vma_reopen(vma);
+   lut->handle = handle;
+   lut->ctx = ctx;
+
+   /* Check that the context hasn't been closed in the meantime */
+   err = -EINTR;
+   if (!mutex_lock_interruptible(>mutex)) {
+   err = -ENOENT;
+   if (likely(!i915_gem_context_is_closed(ctx)))
+   err = radix_tree_insert(>handles_vma, handle, vma);
+   if (err == 0) { /* And nor has this handle */
+   struct drm_i915_gem_object *obj = vma->obj;
+
+   i915_gem_object_lock(obj);
+   if (idr_find(>file->object_idr, handle) == obj) {
+   list_add(>obj_link, >lut_list);
+   } else {
+   radix_tree_delete(>handles_vma, handle);
+   err = -ENOENT;
+   }
+   i915_gem_object_unlock(obj);
+   }
+   mutex_unlock(>mutex);
+   }
+   if (unlikely(err))
+   goto err;
 
-   batch = eb_batch_index(eb);
+   return 0;
 
-   for (i = 0; i < eb->buffer_count; i++) {
-   u32 handle = eb->exec[i].handle;
-   struct i915_lut_handle *lut;
+err:
+   atomic_dec(>open_count);
+   i915_vma_put(vma);
+   i915_lut_handle_free(lut);
+   return err;
+}
+
+static struct i915_vma *eb_lookup_vma(struct i915_execbuffer *eb, u32 handle)
+{
+   do {
+   struct drm_i915_gem_object *obj;
struct i915_vma *vma;
+   int err;
 
-   vma = radix_tree_lookup(handles_vma, handle);
+   rcu_read_lock();
+   vma = radix_tree_lookup(>gem_context->handles_vma, handle);
+   if (likely(vma))
+   vma = i915_vma_tryget(vma);
+   rcu_read_unlock();
if (likely(vma))
-   goto add_vma;
+   return vma;
 
obj = i915_gem_object_lookup(eb->file, handle);
-   if (unlikely(!obj)) {
-   err = -ENOENT;
-   goto err_vma;
-   }
+   if (unlikely(!obj))
+   return ERR_PTR(-ENOENT);
 
vma = i915_vma_instance(obj, eb->context->vm, NULL);
if (IS_ERR(vma)) {
-   err = PTR_ERR(vma);
-   goto err_obj;
+   i915_gem_object_put(obj);
+   return vma;
}
 
-   lut = i915_lut_handle_alloc();
-   if (unlikely(!lut)) {
-   err = -ENOMEM;
-   goto err_obj;
-   }
+   err = __eb_add_lut(eb, handle, vma);
+   if (likely(!err))
+   return vma;
 
-   err = radix_tree_insert(handles_vma, handle, vma);
-   if (unlikely(err)) {
-   

[Intel-gfx] [PATCH 1/4] drm/i915/gt: Report context-is-closed prior to pinning

2020-03-20 Thread Chris Wilson
Our assertion caught that we do try to pin a closed context if userspace
is viciously racing context-closure with execbuf, so make it fail
gracefully.

Closes: https://gitlab.freedesktop.org/drm/intel/issues/1492
Signed-off-by: Chris Wilson 
Cc: Tvrtko Ursulin 
Cc: Mika Kuoppala 
---
 drivers/gpu/drm/i915/gt/intel_context.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_context.c 
b/drivers/gpu/drm/i915/gt/intel_context.c
index aea992e46c42..7132bf616cc4 100644
--- a/drivers/gpu/drm/i915/gt/intel_context.c
+++ b/drivers/gpu/drm/i915/gt/intel_context.c
@@ -97,8 +97,6 @@ int __intel_context_do_pin(struct intel_context *ce)
 {
int err;
 
-   GEM_BUG_ON(intel_context_is_closed(ce));
-
if (unlikely(!test_bit(CONTEXT_ALLOC_BIT, >flags))) {
err = intel_context_alloc_state(ce);
if (err)
@@ -114,6 +112,11 @@ int __intel_context_do_pin(struct intel_context *ce)
goto out_release;
}
 
+   if (unlikely(intel_context_is_closed(ce))) {
+   err = -ENOENT;
+   goto out_release;
+   }
+
if (likely(!atomic_add_unless(>pin_count, 1, 0))) {
err = intel_context_active_acquire(ce);
if (unlikely(err))
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 2/4] drm/i915/execlists: Pull tasklet interrupt-bh local to direct submission

2020-03-20 Thread Chris Wilson
We dropped calling process_csb prior to handling direct submission in
order to avoid the nesting of spinlocks and lift process_csb() and the
majority of the tasklet out of irq-off. However, we do want to avoid
ksoftirqd latency in the fast path, so try and pull the interrupt-bh
local to direct submission if we can acquire the tasklet's lock.

v2: Tweak the balance to avoid over submitting lite-restores

Signed-off-by: Chris Wilson 
Cc: Francisco Jerez 
Cc: Tvrtko Ursulin 
---
 drivers/gpu/drm/i915/gt/intel_lrc.c | 40 +
 1 file changed, 29 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index f09dd87324b9..0d9c6ea4adaa 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -2884,29 +2884,47 @@ static void queue_request(struct intel_engine_cs 
*engine,
set_bit(I915_FENCE_FLAG_PQUEUE, >fence.flags);
 }
 
-static void __submit_queue_imm(struct intel_engine_cs *engine)
+static bool pending_csb(const struct intel_engine_execlists *el)
 {
-   struct intel_engine_execlists * const execlists = >execlists;
-
-   if (reset_in_progress(execlists))
-   return; /* defer until we restart the engine following reset */
-
-   if (execlists->tasklet.func == execlists_submission_tasklet)
-   __execlists_submission_tasklet(engine);
-   else
-   tasklet_hi_schedule(>tasklet);
+   return READ_ONCE(*el->csb_write) != READ_ONCE(el->csb_head);
 }
 
 static void submit_queue(struct intel_engine_cs *engine,
 const struct i915_request *rq)
 {
struct intel_engine_execlists *execlists = >execlists;
+   struct i915_request *inflight;
 
if (rq_prio(rq) <= execlists->queue_priority_hint)
return;
 
+   if (reset_in_progress(execlists))
+   return; /* defer until we restart the engine following reset */
+
+   /* Hopefully we clear execlists->pending[] to let us through */
+   if (execlists->pending[0] && tasklet_trylock(>tasklet)) {
+   process_csb(engine);
+   tasklet_unlock(>tasklet);
+   }
+
+   /*
+* Suppress immediate lite-restores, leave that to the tasklet.
+*
+* However, we leave the queue_priority_hint unset so that if we do
+* submit a second context, we push that into ELSP[1] immediately.
+*/
+   inflight = execlists_active(>execlists);
+   if (inflight && inflight->context == rq->context)
+   return;
+
execlists->queue_priority_hint = rq_prio(rq);
-   __submit_queue_imm(engine);
+   __execlists_submission_tasklet(engine);
+
+   /* Try and pull an interrupt-bh queued on another CPU to here */
+   if (pending_csb(execlists) && tasklet_trylock(>tasklet)) {
+   process_csb(engine);
+   tasklet_unlock(>tasklet);
+   }
 }
 
 static bool ancestor_on_hold(const struct intel_engine_cs *engine,
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 3/4] drm/i915: Immediately execute the fenced work

2020-03-20 Thread Chris Wilson
If the caller allows and we do not have to wait for any signals,
immediately execute the work within the caller's process. By doing so we
avoid the overhead of scheduling a new task, and the latency in
executing it, at the cost of pulling that work back into the immediate
context. (Sometimes we still prefer to offload the task to another cpu,
especially if we plan on executing many such tasks in parallel for this
client.)

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c |  2 +-
 drivers/gpu/drm/i915/i915_sw_fence_work.c  |  5 -
 drivers/gpu/drm/i915/i915_sw_fence_work.h  | 12 
 drivers/gpu/drm/i915/i915_vma.c|  2 +-
 4 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 36d069504836..c1179c00bc61 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -1784,7 +1784,7 @@ static int eb_parse_pipeline(struct i915_execbuffer *eb,
dma_resv_add_excl_fence(shadow->resv, >base.dma);
dma_resv_unlock(shadow->resv);
 
-   dma_fence_work_commit(>base);
+   dma_fence_work_commit_imm(>base);
return 0;
 
 err_batch_unlock:
diff --git a/drivers/gpu/drm/i915/i915_sw_fence_work.c 
b/drivers/gpu/drm/i915/i915_sw_fence_work.c
index 997b2998f1f2..a3a81bb8f2c3 100644
--- a/drivers/gpu/drm/i915/i915_sw_fence_work.c
+++ b/drivers/gpu/drm/i915/i915_sw_fence_work.c
@@ -38,7 +38,10 @@ fence_notify(struct i915_sw_fence *fence, enum 
i915_sw_fence_notify state)
 
if (!f->dma.error) {
dma_fence_get(>dma);
-   queue_work(system_unbound_wq, >work);
+   if (test_bit(DMA_FENCE_WORK_IMM, >dma.flags))
+   fence_work(>work);
+   else
+   queue_work(system_unbound_wq, >work);
} else {
fence_complete(f);
}
diff --git a/drivers/gpu/drm/i915/i915_sw_fence_work.h 
b/drivers/gpu/drm/i915/i915_sw_fence_work.h
index 3a22b287e201..0719d661dc9c 100644
--- a/drivers/gpu/drm/i915/i915_sw_fence_work.h
+++ b/drivers/gpu/drm/i915/i915_sw_fence_work.h
@@ -32,6 +32,10 @@ struct dma_fence_work {
const struct dma_fence_work_ops *ops;
 };
 
+enum {
+   DMA_FENCE_WORK_IMM = DMA_FENCE_FLAG_USER_BITS,
+};
+
 void dma_fence_work_init(struct dma_fence_work *f,
 const struct dma_fence_work_ops *ops);
 int dma_fence_work_chain(struct dma_fence_work *f, struct dma_fence *signal);
@@ -41,4 +45,12 @@ static inline void dma_fence_work_commit(struct 
dma_fence_work *f)
i915_sw_fence_commit(>chain);
 }
 
+static inline void dma_fence_work_commit_imm(struct dma_fence_work *f)
+{
+   if (atomic_read(>chain.pending) <= 1)
+   __set_bit(DMA_FENCE_WORK_IMM, >dma.flags);
+
+   dma_fence_work_commit(f);
+}
+
 #endif /* I915_SW_FENCE_WORK_H */
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
index 5b3efb43a8ef..6dd242c09daf 100644
--- a/drivers/gpu/drm/i915/i915_vma.c
+++ b/drivers/gpu/drm/i915/i915_vma.c
@@ -980,7 +980,7 @@ int i915_vma_pin(struct i915_vma *vma, u64 size, u64 
alignment, u64 flags)
mutex_unlock(>vm->mutex);
 err_fence:
if (work)
-   dma_fence_work_commit(>base);
+   dma_fence_work_commit_imm(>base);
if (wakeref)
intel_runtime_pm_put(>vm->i915->runtime_pm, wakeref);
 err_pages:
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 4/4] drm/i915/gem: Avoid gem_context->mutex for simple vma lookup

2020-03-20 Thread Chris Wilson
Quoting Tvrtko Ursulin (2020-03-20 13:47:39)
> 
> On 20/03/2020 13:01, Chris Wilson wrote:
> > As we store the handle lookup inside a radix tree, we do not need the
> > gem_context->mutex except until we need to insert our lookup into the
> > common radix tree. This takes a small bit of rearranging to ensure that
> > the lut we insert into the tree is ready prior to actually inserting it
> > (as soon as it is exposed via the radixtree, it is visible to any other
> > submission).
> > 
> > v2: For brownie points, remove the goto spaghetti.
> > v3: Tighten up the closed-handle checks.
> > 
> > Signed-off-by: Chris Wilson 
> > ---
> >   .../gpu/drm/i915/gem/i915_gem_execbuffer.c| 136 +++---
> >   1 file changed, 87 insertions(+), 49 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c 
> > b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> > index c1179c00bc61..876fc2e124b9 100644
> > --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> > +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> > @@ -481,7 +481,7 @@ eb_add_vma(struct i915_execbuffer *eb,
> >   
> >   GEM_BUG_ON(i915_vma_is_closed(vma));
> >   
> > - ev->vma = i915_vma_get(vma);
> > + ev->vma = vma;
> >   ev->exec = entry;
> >   ev->flags = entry->flags;
> >   
> > @@ -728,77 +728,117 @@ static int eb_select_context(struct i915_execbuffer 
> > *eb)
> >   return 0;
> >   }
> >   
> > -static int eb_lookup_vmas(struct i915_execbuffer *eb)
> > +static int __eb_add_lut(struct i915_execbuffer *eb,
> > + u32 handle, struct i915_vma *vma)
> >   {
> > - struct radix_tree_root *handles_vma = >gem_context->handles_vma;
> > - struct drm_i915_gem_object *obj;
> > - unsigned int i, batch;
> > + struct i915_gem_context *ctx = eb->gem_context;
> > + struct i915_lut_handle *lut;
> >   int err;
> >   
> > - if (unlikely(i915_gem_context_is_closed(eb->gem_context)))
> > - return -ENOENT;
> > + lut = i915_lut_handle_alloc();
> > + if (unlikely(!lut))
> > + return -ENOMEM;
> >   
> > - INIT_LIST_HEAD(>relocs);
> > - INIT_LIST_HEAD(>unbound);
> > + i915_vma_get(vma);
> > + if (!atomic_fetch_inc(>open_count))
> > + i915_vma_reopen(vma);
> > + lut->handle = handle;
> > + lut->ctx = ctx;
> > +
> > + /* Check that the context hasn't been closed in the meantime */
> > + err = -EINTR;
> > + if (!mutex_lock_interruptible(>mutex)) {
> > + err = -ENOENT;
> > + if (likely(!i915_gem_context_is_closed(ctx)))
> > + err = radix_tree_insert(>handles_vma, handle, 
> > vma);
> > + if (err == 0) { /* And nor has this handle */
> > + struct drm_i915_gem_object *obj = vma->obj;
> > +
> > + i915_gem_object_lock(obj);
> 
> Does this fit into Maarten's rework - nesting of object_lock under 
> ctx->mutex I mean?

This is the current lock nesting, and should generally remain so. One
context will peek at multiple objects and we should be holding an object
lock to peek at a context.

As for the rework, it holds a bunch of exclusive locks far beyond their
scope causing an even worse BKL, and that will have to be reworked.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v2] drm/i915/gt: move files more files into debugfs

2020-03-20 Thread Chris Wilson
Quoting Andi Shyti (2020-03-20 03:49:01)
> From: Andi Shyti 
> 
> The following interfaces:
> 
> i915_wedged
> i915_forcewake_user
> i915_gem_interrupt
> i915_sseu_status
> 
> are dependent on gt values. Put them inside gt/ and drop the
> "i915_" prefix name. This would be the new structure:
> 
>   gt
>   |
>   +-- forcewake_user
>   |
>   +-- interrupt_info_show

Please tell me you didn't actually include _show :)

>   |
>   +-- sseu_status
>   |
>   +-- wedge

The world will rejoice when it's stopped being called wedged.
Well Mika will at any rate.

'echo rcs0 > reset' maybe? Yeah. Wait, but rcs0 is uabi name, so top
level.

Oh well, I definitely do not think copying a mistake is a good idea.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/execlists: Pull tasklet interrupt-bh local to direct submission

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915/execlists: Pull tasklet interrupt-bh local to direct submission
URL   : https://patchwork.freedesktop.org/series/74914/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8163 -> Patchwork_17032


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/index.html

Known issues


  Here are the changes found in Patchwork_17032 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@execlists:
- fi-icl-y:   [PASS][1] -> [INCOMPLETE][2] ([i915#140])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/fi-icl-y/igt@i915_selftest@l...@execlists.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/fi-icl-y/igt@i915_selftest@l...@execlists.html

  * igt@i915_selftest@live@gem_contexts:
- fi-skl-lmem:[PASS][3] -> [INCOMPLETE][4] ([i915#424])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/fi-skl-lmem/igt@i915_selftest@live@gem_contexts.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/fi-skl-lmem/igt@i915_selftest@live@gem_contexts.html

  
 Possible fixes 

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
- fi-cfl-8109u:   [FAIL][5] ([fdo#103375]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/fi-cfl-8109u/igt@kms_pipe_crc_ba...@suspend-read-crc-pipe-a.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/fi-cfl-8109u/igt@kms_pipe_crc_ba...@suspend-read-crc-pipe-a.html

  
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [i915#140]: https://gitlab.freedesktop.org/drm/intel/issues/140
  [i915#424]: https://gitlab.freedesktop.org/drm/intel/issues/424


Participating hosts (41 -> 37)
--

  Additional (3): fi-skl-6770hq fi-skl-6600u fi-elk-e7500 
  Missing(7): fi-kbl-7560u fi-skl-guc fi-byt-squawks fi-bsw-cyan 
fi-bwr-2160 fi-ilk-650 fi-blb-e6850 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_8163 -> Patchwork_17032

  CI-20190529: 20190529
  CI_DRM_8163: 710b3af22d17146897a55f01868d8e2d867895d3 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5523: cf6d524007ac51a7d5a48503ea3dd5f01fd4ebab @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17032: d22b57277d7c1f4887fed185e7ce1054fcec9f23 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

d22b57277d7c drm/i915/execlists: Pull tasklet interrupt-bh local to direct 
submission

== Logs ==

For more details see: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17032/index.html
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v7 05/18] video/hdmi: Add Unpack only function for DRM infoframe

2020-03-20 Thread Jani Nikula
On Fri, 20 Mar 2020, Jani Nikula  wrote:
> On Tue, 11 Feb 2020, Gwan-gyeong Mun  wrote:
>> It adds an unpack only function for DRM infoframe for dynamic range and
>> mastering infoframe readout.
>> It unpacks the information data block contained in the binary buffer into
>> a structured frame of the HDMI Dynamic Range and Mastering (DRM)
>> information frame.
>>
>> In contrast to hdmi_drm_infoframe_unpack() function, it does not verify
>> a checksum.
>>
>> It can be used for unpacking a DP HDR Metadata Infoframe SDP case.
>> DP HDR Metadata Infoframe SDP uses the same Dynamic Range and Mastering
>> (DRM) information (CTA-861-G spec.) such as HDMI DRM infoframe.
>> But DP SDP header and payload structure are different from HDMI DRM
>> Infoframe. Therefore unpacking DRM infoframe for DP requires skipping of
>> a verifying checksum.
>>
>> Signed-off-by: Gwan-gyeong Mun 
>> Reviewed-by: Uma Shankar 
>
> Bartlomiej, can I have your ack for merging this via drm-intel along
> with the rest of the series, please?

Or Hans or Laurent, from v4l/video point of view.

Thanks,
Jani.

>
> BR,
> Jani.
>
>
>> ---
>>  drivers/video/hdmi.c | 58 +++-
>>  include/linux/hdmi.h |  2 ++
>>  2 files changed, 43 insertions(+), 17 deletions(-)
>>
>> diff --git a/drivers/video/hdmi.c b/drivers/video/hdmi.c
>> index 9c82e2a0a411..9818836d82b7 100644
>> --- a/drivers/video/hdmi.c
>> +++ b/drivers/video/hdmi.c
>> @@ -1775,20 +1775,18 @@ hdmi_vendor_any_infoframe_unpack(union 
>> hdmi_vendor_any_infoframe *frame,
>>  }
>>  
>>  /**
>> - * hdmi_drm_infoframe_unpack() - unpack binary buffer to a HDMI DRM 
>> infoframe
>> + * hdmi_drm_infoframe_unpack_only() - unpack binary buffer to a HDMI DRM 
>> infoframe
>>   * @frame: HDMI DRM infoframe
>>   * @buffer: source buffer
>>   * @size: size of buffer
>>   *
>> - * Unpacks the information contained in binary @buffer into a structured
>> + * Unpacks the information data block contained in binary @buffer into a 
>> structured
>>   * @frame of the HDMI Dynamic Range and Mastering (DRM) information frame.
>> - * Also verifies the checksum as required by section 5.3.5 of the HDMI 1.4
>> - * specification.
>>   *
>>   * Returns 0 on success or a negative error code on failure.
>>   */
>> -static int hdmi_drm_infoframe_unpack(struct hdmi_drm_infoframe *frame,
>> - const void *buffer, size_t size)
>> +int hdmi_drm_infoframe_unpack_only(struct hdmi_drm_infoframe *frame,
>> +   const void *buffer, size_t size)
>>  {
>>  const u8 *ptr = buffer;
>>  const u8 *temp;
>> @@ -1797,23 +1795,13 @@ static int hdmi_drm_infoframe_unpack(struct 
>> hdmi_drm_infoframe *frame,
>>  int ret;
>>  int i;
>>  
>> -if (size < HDMI_INFOFRAME_SIZE(DRM))
>> -return -EINVAL;
>> -
>> -if (ptr[0] != HDMI_INFOFRAME_TYPE_DRM ||
>> -ptr[1] != 1 ||
>> -ptr[2] != HDMI_DRM_INFOFRAME_SIZE)
>> -return -EINVAL;
>> -
>> -if (hdmi_infoframe_checksum(buffer, HDMI_INFOFRAME_SIZE(DRM)) != 0)
>> +if (size < HDMI_DRM_INFOFRAME_SIZE)
>>  return -EINVAL;
>>  
>>  ret = hdmi_drm_infoframe_init(frame);
>>  if (ret)
>>  return ret;
>>  
>> -ptr += HDMI_INFOFRAME_HEADER_SIZE;
>> -
>>  frame->eotf = ptr[0] & 0x7;
>>  frame->metadata_type = ptr[1] & 0x7;
>>  
>> @@ -1837,6 +1825,42 @@ static int hdmi_drm_infoframe_unpack(struct 
>> hdmi_drm_infoframe *frame,
>>  
>>  return 0;
>>  }
>> +EXPORT_SYMBOL(hdmi_drm_infoframe_unpack_only);
>> +
>> +/**
>> + * hdmi_drm_infoframe_unpack() - unpack binary buffer to a HDMI DRM 
>> infoframe
>> + * @frame: HDMI DRM infoframe
>> + * @buffer: source buffer
>> + * @size: size of buffer
>> + *
>> + * Unpacks the information contained in binary @buffer into a structured
>> + * @frame of the HDMI Dynamic Range and Mastering (DRM) information frame.
>> + * Also verifies the checksum as required by section 5.3.5 of the HDMI 1.4
>> + * specification.
>> + *
>> + * Returns 0 on success or a negative error code on failure.
>> + */
>> +static int hdmi_drm_infoframe_unpack(struct hdmi_drm_infoframe *frame,
>> + const void *buffer, size_t size)
>> +{
>> +const u8 *ptr = buffer;
>> +int ret;
>> +
>> +if (size < HDMI_INFOFRAME_SIZE(DRM))
>> +return -EINVAL;
>> +
>> +if (ptr[0] != HDMI_INFOFRAME_TYPE_DRM ||
>> +ptr[1] != 1 ||
>> +ptr[2] != HDMI_DRM_INFOFRAME_SIZE)
>> +return -EINVAL;
>> +
>> +if (hdmi_infoframe_checksum(buffer, HDMI_INFOFRAME_SIZE(DRM)) != 0)
>> +return -EINVAL;
>> +
>> +ret = hdmi_drm_infoframe_unpack_only(frame, ptr + 
>> HDMI_INFOFRAME_HEADER_SIZE,
>> + size - HDMI_INFOFRAME_HEADER_SIZE);
>> +return ret;
>> +}
>>  
>>  /**
>>   * hdmi_infoframe_unpack() - unpack binary buffer to a HDMI infoframe
>> diff --git a/include/linux/hdmi.h 

Re: [Intel-gfx] [PATCH v7 05/18] video/hdmi: Add Unpack only function for DRM infoframe

2020-03-20 Thread Laurent Pinchart
Hi Jani,

On Fri, Mar 20, 2020 at 01:32:17PM +0200, Jani Nikula wrote:
> On Fri, 20 Mar 2020, Jani Nikula  wrote:
> > On Tue, 11 Feb 2020, Gwan-gyeong Mun  wrote:
> >> It adds an unpack only function for DRM infoframe for dynamic range and
> >> mastering infoframe readout.
> >> It unpacks the information data block contained in the binary buffer into
> >> a structured frame of the HDMI Dynamic Range and Mastering (DRM)
> >> information frame.
> >>
> >> In contrast to hdmi_drm_infoframe_unpack() function, it does not verify
> >> a checksum.
> >>
> >> It can be used for unpacking a DP HDR Metadata Infoframe SDP case.
> >> DP HDR Metadata Infoframe SDP uses the same Dynamic Range and Mastering
> >> (DRM) information (CTA-861-G spec.) such as HDMI DRM infoframe.
> >> But DP SDP header and payload structure are different from HDMI DRM
> >> Infoframe. Therefore unpacking DRM infoframe for DP requires skipping of
> >> a verifying checksum.
> >>
> >> Signed-off-by: Gwan-gyeong Mun 
> >> Reviewed-by: Uma Shankar 
> >
> > Bartlomiej, can I have your ack for merging this via drm-intel along
> > with the rest of the series, please?
> 
> Or Hans or Laurent, from v4l/video point of view.

I'm no expert on InfoFrame, I'll only comment on the API below.

> >> ---
> >>  drivers/video/hdmi.c | 58 +++-
> >>  include/linux/hdmi.h |  2 ++
> >>  2 files changed, 43 insertions(+), 17 deletions(-)
> >>
> >> diff --git a/drivers/video/hdmi.c b/drivers/video/hdmi.c
> >> index 9c82e2a0a411..9818836d82b7 100644
> >> --- a/drivers/video/hdmi.c
> >> +++ b/drivers/video/hdmi.c
> >> @@ -1775,20 +1775,18 @@ hdmi_vendor_any_infoframe_unpack(union 
> >> hdmi_vendor_any_infoframe *frame,
> >>  }
> >>  
> >>  /**
> >> - * hdmi_drm_infoframe_unpack() - unpack binary buffer to a HDMI DRM 
> >> infoframe
> >> + * hdmi_drm_infoframe_unpack_only() - unpack binary buffer to a HDMI DRM 
> >> infoframe
> >>   * @frame: HDMI DRM infoframe
> >>   * @buffer: source buffer
> >>   * @size: size of buffer
> >>   *
> >> - * Unpacks the information contained in binary @buffer into a structured
> >> + * Unpacks the information data block contained in binary @buffer into a 
> >> structured

Line wrap please.

This needs to be clarified to explain exactly what the buffer points to.

Also, as this is applicable to DP too, shouldn't we drop the hdmi_
prefix ? Is there another prefix that could be used for functions that
are application to infoframe handling shared by different display
interfaces ? A bit of refactoring would help making all this clear.

> >>   * @frame of the HDMI Dynamic Range and Mastering (DRM) information frame.
> >> - * Also verifies the checksum as required by section 5.3.5 of the HDMI 1.4
> >> - * specification.
> >>   *
> >>   * Returns 0 on success or a negative error code on failure.
> >>   */
> >> -static int hdmi_drm_infoframe_unpack(struct hdmi_drm_infoframe *frame,
> >> -   const void *buffer, size_t size)
> >> +int hdmi_drm_infoframe_unpack_only(struct hdmi_drm_infoframe *frame,
> >> + const void *buffer, size_t size)
> >>  {
> >>const u8 *ptr = buffer;
> >>const u8 *temp;
> >> @@ -1797,23 +1795,13 @@ static int hdmi_drm_infoframe_unpack(struct 
> >> hdmi_drm_infoframe *frame,
> >>int ret;
> >>int i;
> >>  
> >> -  if (size < HDMI_INFOFRAME_SIZE(DRM))
> >> -  return -EINVAL;
> >> -
> >> -  if (ptr[0] != HDMI_INFOFRAME_TYPE_DRM ||
> >> -  ptr[1] != 1 ||
> >> -  ptr[2] != HDMI_DRM_INFOFRAME_SIZE)
> >> -  return -EINVAL;
> >> -
> >> -  if (hdmi_infoframe_checksum(buffer, HDMI_INFOFRAME_SIZE(DRM)) != 0)
> >> +  if (size < HDMI_DRM_INFOFRAME_SIZE)
> >>return -EINVAL;
> >>  
> >>ret = hdmi_drm_infoframe_init(frame);
> >>if (ret)
> >>return ret;
> >>  
> >> -  ptr += HDMI_INFOFRAME_HEADER_SIZE;
> >> -
> >>frame->eotf = ptr[0] & 0x7;
> >>frame->metadata_type = ptr[1] & 0x7;
> >>  
> >> @@ -1837,6 +1825,42 @@ static int hdmi_drm_infoframe_unpack(struct 
> >> hdmi_drm_infoframe *frame,
> >>  
> >>return 0;
> >>  }
> >> +EXPORT_SYMBOL(hdmi_drm_infoframe_unpack_only);
> >> +
> >> +/**
> >> + * hdmi_drm_infoframe_unpack() - unpack binary buffer to a HDMI DRM 
> >> infoframe
> >> + * @frame: HDMI DRM infoframe
> >> + * @buffer: source buffer
> >> + * @size: size of buffer
> >> + *
> >> + * Unpacks the information contained in binary @buffer into a structured

Same here. The difference between the two functions is "information data
block" vs. "information", it's very unclear to the reader without
looking at either the commit message or the implementation.

> >> + * @frame of the HDMI Dynamic Range and Mastering (DRM) information frame.
> >> + * Also verifies the checksum as required by section 5.3.5 of the HDMI 1.4
> >> + * specification.
> >> + *
> >> + * Returns 0 on success or a negative error code on failure.
> >> + */
> >> +static int 

[Intel-gfx] [PATCH] drm/i915: Immediately execute the fenced work

2020-03-20 Thread Chris Wilson
If the caller allows and we do not have to wait for any signals,
immediately execute the work within the caller's process. By doing so we
avoid the overhead of scheduling a new task, and the latency in
executing it, at the cost of pulling that work back into the immediate
context. (Sometimes we still prefer to offload the task to another cpu,
especially if we plan on executing many such tasks in parallel for this
client.)

Signed-off-by: Chris Wilson 
---
We know we have exclusive access to the fence (if pending <= 1) so we
can just use __set_bit.
---
 drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c |  2 +-
 drivers/gpu/drm/i915/i915_sw_fence_work.c  |  5 -
 drivers/gpu/drm/i915/i915_sw_fence_work.h  | 12 
 drivers/gpu/drm/i915/i915_vma.c|  2 +-
 4 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 36d069504836..c1179c00bc61 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -1784,7 +1784,7 @@ static int eb_parse_pipeline(struct i915_execbuffer *eb,
dma_resv_add_excl_fence(shadow->resv, >base.dma);
dma_resv_unlock(shadow->resv);
 
-   dma_fence_work_commit(>base);
+   dma_fence_work_commit_imm(>base);
return 0;
 
 err_batch_unlock:
diff --git a/drivers/gpu/drm/i915/i915_sw_fence_work.c 
b/drivers/gpu/drm/i915/i915_sw_fence_work.c
index 997b2998f1f2..a3a81bb8f2c3 100644
--- a/drivers/gpu/drm/i915/i915_sw_fence_work.c
+++ b/drivers/gpu/drm/i915/i915_sw_fence_work.c
@@ -38,7 +38,10 @@ fence_notify(struct i915_sw_fence *fence, enum 
i915_sw_fence_notify state)
 
if (!f->dma.error) {
dma_fence_get(>dma);
-   queue_work(system_unbound_wq, >work);
+   if (test_bit(DMA_FENCE_WORK_IMM, >dma.flags))
+   fence_work(>work);
+   else
+   queue_work(system_unbound_wq, >work);
} else {
fence_complete(f);
}
diff --git a/drivers/gpu/drm/i915/i915_sw_fence_work.h 
b/drivers/gpu/drm/i915/i915_sw_fence_work.h
index 3a22b287e201..0719d661dc9c 100644
--- a/drivers/gpu/drm/i915/i915_sw_fence_work.h
+++ b/drivers/gpu/drm/i915/i915_sw_fence_work.h
@@ -32,6 +32,10 @@ struct dma_fence_work {
const struct dma_fence_work_ops *ops;
 };
 
+enum {
+   DMA_FENCE_WORK_IMM = DMA_FENCE_FLAG_USER_BITS,
+};
+
 void dma_fence_work_init(struct dma_fence_work *f,
 const struct dma_fence_work_ops *ops);
 int dma_fence_work_chain(struct dma_fence_work *f, struct dma_fence *signal);
@@ -41,4 +45,12 @@ static inline void dma_fence_work_commit(struct 
dma_fence_work *f)
i915_sw_fence_commit(>chain);
 }
 
+static inline void dma_fence_work_commit_imm(struct dma_fence_work *f)
+{
+   if (atomic_read(>chain.pending) <= 1)
+   __set_bit(DMA_FENCE_WORK_IMM, >dma.flags);
+
+   dma_fence_work_commit(f);
+}
+
 #endif /* I915_SW_FENCE_WORK_H */
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
index 5b3efb43a8ef..6dd242c09daf 100644
--- a/drivers/gpu/drm/i915/i915_vma.c
+++ b/drivers/gpu/drm/i915/i915_vma.c
@@ -980,7 +980,7 @@ int i915_vma_pin(struct i915_vma *vma, u64 size, u64 
alignment, u64 flags)
mutex_unlock(>vm->mutex);
 err_fence:
if (work)
-   dma_fence_work_commit(>base);
+   dma_fence_work_commit_imm(>base);
if (wakeref)
intel_runtime_pm_put(>vm->i915->runtime_pm, wakeref);
 err_pages:
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 3/8] iommu/vt-d: Remove IOVA handling code from non-dma_ops path

2020-03-20 Thread Tom Murphy
Could we merge patch 1-3 from this series? it just cleans up weird
code and merging these patches will cover some of the work needed to
move the intel iommu driver to the dma-iommu api in the future.

On Sat, 21 Dec 2019 at 07:04, Tom Murphy  wrote:
>
> Remove all IOVA handling code from the non-dma_ops path in the intel
> iommu driver.
>
> There's no need for the non-dma_ops path to keep track of IOVAs. The
> whole point of the non-dma_ops path is that it allows the IOVAs to be
> handled separately. The IOVA handling code removed in this patch is
> pointless.
>
> Signed-off-by: Tom Murphy 
> ---
>  drivers/iommu/intel-iommu.c | 89 ++---
>  1 file changed, 33 insertions(+), 56 deletions(-)
>
> diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
> index 64b1a9793daa..8d72ea0fb843 100644
> --- a/drivers/iommu/intel-iommu.c
> +++ b/drivers/iommu/intel-iommu.c
> @@ -1908,7 +1908,8 @@ static void domain_exit(struct dmar_domain *domain)
> domain_remove_dev_info(domain);
>
> /* destroy iovas */
> -   put_iova_domain(>iovad);
> +   if (domain->domain.type == IOMMU_DOMAIN_DMA)
> +   put_iova_domain(>iovad);
>
> if (domain->pgd) {
> struct page *freelist;
> @@ -2671,19 +2672,9 @@ static struct dmar_domain *set_domain_for_dev(struct 
> device *dev,
>  }
>
>  static int iommu_domain_identity_map(struct dmar_domain *domain,
> -unsigned long long start,
> -unsigned long long end)
> +unsigned long first_vpfn,
> +unsigned long last_vpfn)
>  {
> -   unsigned long first_vpfn = start >> VTD_PAGE_SHIFT;
> -   unsigned long last_vpfn = end >> VTD_PAGE_SHIFT;
> -
> -   if (!reserve_iova(>iovad, dma_to_mm_pfn(first_vpfn),
> - dma_to_mm_pfn(last_vpfn))) {
> -   pr_err("Reserving iova failed\n");
> -   return -ENOMEM;
> -   }
> -
> -   pr_debug("Mapping reserved region %llx-%llx\n", start, end);
> /*
>  * RMRR range might have overlap with physical memory range,
>  * clear it first
> @@ -2760,7 +2751,8 @@ static int __init si_domain_init(int hw)
>
> for_each_mem_pfn_range(i, nid, _pfn, _pfn, NULL) {
> ret = iommu_domain_identity_map(si_domain,
> -   PFN_PHYS(start_pfn), 
> PFN_PHYS(end_pfn));
> +   mm_to_dma_pfn(start_pfn),
> +   mm_to_dma_pfn(end_pfn));
> if (ret)
> return ret;
> }
> @@ -4593,58 +4585,37 @@ static int intel_iommu_memory_notifier(struct 
> notifier_block *nb,
>unsigned long val, void *v)
>  {
> struct memory_notify *mhp = v;
> -   unsigned long long start, end;
> -   unsigned long start_vpfn, last_vpfn;
> +   unsigned long start_vpfn = mm_to_dma_pfn(mhp->start_pfn);
> +   unsigned long last_vpfn = mm_to_dma_pfn(mhp->start_pfn +
> +   mhp->nr_pages - 1);
>
> switch (val) {
> case MEM_GOING_ONLINE:
> -   start = mhp->start_pfn << PAGE_SHIFT;
> -   end = ((mhp->start_pfn + mhp->nr_pages) << PAGE_SHIFT) - 1;
> -   if (iommu_domain_identity_map(si_domain, start, end)) {
> -   pr_warn("Failed to build identity map for 
> [%llx-%llx]\n",
> -   start, end);
> +   if (iommu_domain_identity_map(si_domain, start_vpfn,
> +   last_vpfn)) {
> +   pr_warn("Failed to build identity map for 
> [%lx-%lx]\n",
> +   start_vpfn, last_vpfn);
> return NOTIFY_BAD;
> }
> break;
>
> case MEM_OFFLINE:
> case MEM_CANCEL_ONLINE:
> -   start_vpfn = mm_to_dma_pfn(mhp->start_pfn);
> -   last_vpfn = mm_to_dma_pfn(mhp->start_pfn + mhp->nr_pages - 1);
> -   while (start_vpfn <= last_vpfn) {
> -   struct iova *iova;
> +   {
> struct dmar_drhd_unit *drhd;
> struct intel_iommu *iommu;
> struct page *freelist;
>
> -   iova = find_iova(_domain->iovad, start_vpfn);
> -   if (iova == NULL) {
> -   pr_debug("Failed get IOVA for PFN %lx\n",
> -start_vpfn);
> -   break;
> -   }
> -
> -   iova = split_and_remove_iova(_domain->iovad, iova,
> -start_vpfn, last_vpfn);
> -   if 

Re: [Intel-gfx] [PATCH 0/8] Convert the intel iommu driver to the dma-iommu api

2020-03-20 Thread Tom Murphy
Any news on this? Is there anyone who wants to try and fix this possible bug?

On Mon, 23 Dec 2019 at 03:41, Jani Nikula  wrote:
>
> On Mon, 23 Dec 2019, Robin Murphy  wrote:
> > On 2019-12-23 10:37 am, Jani Nikula wrote:
> >> On Sat, 21 Dec 2019, Tom Murphy  wrote:
> >>> This patchset converts the intel iommu driver to the dma-iommu api.
> >>>
> >>> While converting the driver I exposed a bug in the intel i915 driver
> >>> which causes a huge amount of artifacts on the screen of my
> >>> laptop. You can see a picture of it here:
> >>> https://github.com/pippy360/kernelPatches/blob/master/IMG_20191219_225922.jpg
> >>>
> >>> This issue is most likely in the i915 driver and is most likely caused
> >>> by the driver not respecting the return value of the
> >>> dma_map_ops::map_sg function. You can see the driver ignoring the
> >>> return value here:
> >>> https://github.com/torvalds/linux/blob/7e0165b2f1a912a06e381e91f0f4e495f4ac3736/drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c#L51
> >>>
> >>> Previously this didn’t cause issues because the intel map_sg always
> >>> returned the same number of elements as the input scatter gather list
> >>> but with the change to this dma-iommu api this is no longer the
> >>> case. I wasn’t able to track the bug down to a specific line of code
> >>> unfortunately.
> >>>
> >>> Could someone from the intel team look at this?
> >>
> >> Let me get this straight. There is current API that on success always
> >> returns the same number of elements as the input scatter gather
> >> list. You propose to change the API so that this is no longer the case?
> >
> > No, the API for dma_map_sg() has always been that it may return fewer
> > DMA segments than nents - see Documentation/DMA-API.txt (and otherwise,
> > the return value would surely be a simple success/fail condition).
> > Relying on a particular implementation behaviour has never been strictly
> > correct, even if it does happen to be a very common behaviour.
> >
> >> A quick check of various dma_map_sg() calls in the kernel seems to
> >> indicate checking for 0 for errors and then ignoring the non-zero return
> >> is a common pattern. Are you sure it's okay to make the change you're
> >> proposing?
> >
> > Various code uses tricks like just iterating the mapped list until the
> > first segment with zero sg_dma_len(). Others may well simply have bugs.
>
> Thanks for the clarification.
>
> BR,
> Jani.
>
> >
> > Robin.
> >
> >> Anyway, due to the time of year and all, I'd like to ask you to file a
> >> bug against i915 at [1] so this is not forgotten, and please let's not
> >> merge the changes before this is resolved.
> >>
> >>
> >> Thanks,
> >> Jani.
> >>
> >>
> >> [1] https://gitlab.freedesktop.org/drm/intel/issues/new
> >>
> >>
>
> --
> Jani Nikula, Intel Open Source Graphics Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH v10 00/12] Convert PWM period and duty cycle to u64

2020-03-20 Thread Guru Das Srinagesh
Because period and duty cycle are defined in the PWM framework structs as ints
with units of nanoseconds, the maximum time duration that can be set is limited
to ~2.147 seconds. Consequently, applications desiring to set greater time
periods via the PWM framework are not be able to do so - like, for instance,
causing an LED to blink at an interval of 5 seconds.

Redefining the period and duty cycle struct members in the core PWM framework
structs as u64 values will enable larger time durations to be set and solve
this problem. Such a change to the framework mandates that drivers using these
struct members (and corresponding helper functions) also be modified correctly
in order to prevent compilation errors.

This patch series introduces the changes to all the drivers first, followed by
the framework change at the very end so that when the latter is applied, all
the drivers are in good shape and there are no compilation errors.

Changes from v9:
  - Gathered the received "Reviewed-by: " tag
  - Added back the clk-pwm.c patch because kbuild test robot complained [3]
and addressed received review comments.
  - clps711x: Addressed review comments.

Changes from v8:
  - Gathered all received "Acked-by: " and "Reviewed-by: " tags
  - Dropped patch to clk-pwm.c for reasons mentiond in [2]
  - Expanded audience of unreviewed patches

Changes from v7:
  - Changed commit messages of all patches to be brief and to the point.
  - Added explanation of change in cover letter.
  - Dropped change to pwm-sti.c as upon review it was unnecessary as struct
pwm_capture is not being modified in the PWM core.

Changes from v6:
  - Split out the driver changes out into separate patches, one patch per file
for ease of reviewing.

Changes from v5:
  - Dropped the conversion of struct pwm_capture to u64 for reasons mentioned
in https://www.spinics.net/lists/linux-pwm/msg11541.html

Changes from v4:
  - Split the patch into two: one for changes to the drivers, and the actual
switch to u64 for ease of reverting should the need arise.
  - Re-examined the patch and made the following corrections:
  * intel_panel.c:
DIV64_U64_ROUND_UP -> DIV_ROUND_UP_ULL (as only the numerator would be
64-bit in this case).
  * pwm-sti.c:
do_div -> div_u64 (do_div is optimized only for x86 architectures, and
div_u64's comment block suggests to use this as much as possible).

Changes from v3:
  - Rebased to current tip of for-next.

Changes from v2:
  - Fixed %u -> %llu in a dev_dbg in pwm-stm32-lp.c, thanks to kbuild test robot
  - Added a couple of fixes to pwm-imx-tpm.c and pwm-sifive.c

Changes from v1:
  - Fixed compilation errors seen when compiling for different archs.

v1:
  - Reworked the change pushed upstream earlier [1] so as to not add an
extension to an obsolete API. With this change, pwm_ops->apply() can be
used to set pwm_state parameters as usual.

[1] https://lore.kernel.org/lkml/20190916140048.GB7488@ulmo/
[2] https://lore.kernel.org/lkml/20200312190859.ga19...@codeaurora.org/
[3] https://www.spinics.net/lists/linux-pwm/msg11906.html

Guru Das Srinagesh (12):
  drm/i915: Use 64-bit division macro
  hwmon: pwm-fan: Use 64-bit division macro
  ir-rx51: Use 64-bit division macro
  pwm: clps711x: Cast period to u32 before use as divisor
  pwm: pwm-imx-tpm: Use 64-bit division macro
  pwm: imx27: Use 64-bit division macro and function
  pwm: sifive: Use 64-bit division macro
  pwm: stm32-lp: Use %llu format specifier for period
  pwm: sun4i: Use 64-bit division function
  backlight: pwm_bl: Use 64-bit division function
  clk: pwm: Assign u64 divisor to unsigned int before use
  pwm: core: Convert period and duty cycle to u64

 drivers/clk/clk-pwm.c  |  4 +++-
 drivers/gpu/drm/i915/display/intel_panel.c |  2 +-
 drivers/hwmon/pwm-fan.c|  2 +-
 drivers/media/rc/ir-rx51.c |  3 ++-
 drivers/pwm/core.c |  4 ++--
 drivers/pwm/pwm-clps711x.c |  5 -
 drivers/pwm/pwm-imx-tpm.c  |  2 +-
 drivers/pwm/pwm-imx27.c|  5 ++---
 drivers/pwm/pwm-sifive.c   |  2 +-
 drivers/pwm/pwm-stm32-lp.c |  2 +-
 drivers/pwm/pwm-sun4i.c|  2 +-
 drivers/pwm/sysfs.c|  8 
 drivers/video/backlight/pwm_bl.c   |  3 ++-
 include/linux/pwm.h| 12 ++--
 14 files changed, 31 insertions(+), 25 deletions(-)

Cc: Lee Jones 
Cc: Daniel Thompson 
Cc: Jingoo Han 
Cc: Bartlomiej Zolnierkiewicz 
Cc: linux-fb...@vger.kernel.org
Cc: Maxime Ripard 
Cc: Chen-Yu Tsai 
Cc: Philipp Zabel 
Cc: Fabrice Gasnier 
Cc: Maxime Coquelin 
Cc: Alexandre Torgue 
Cc: Palmer Dabbelt 
Cc: Paul Walmsley 
Cc: linux-ri...@lists.infradead.org
Cc: Yash Shah 
Cc: Atish Patra 
Cc: Shawn Guo 
Cc: Sascha Hauer 
Cc: Pengutronix Kernel Team 
Cc: Fabio Estevam 
Cc: NXP Linux Team 
Cc: Sascha Hauer 

[Intel-gfx] [PATCH v11 00/12] Convert PWM period and duty cycle to u64

2020-03-20 Thread Guru Das Srinagesh
Because period and duty cycle are defined in the PWM framework structs as ints
with units of nanoseconds, the maximum time duration that can be set is limited
to ~2.147 seconds. Consequently, applications desiring to set greater time
periods via the PWM framework are not be able to do so - like, for instance,
causing an LED to blink at an interval of 5 seconds.

Redefining the period and duty cycle struct members in the core PWM framework
structs as u64 values will enable larger time durations to be set and solve
this problem. Such a change to the framework mandates that drivers using these
struct members (and corresponding helper functions) also be modified correctly
in order to prevent compilation errors.

This patch series introduces the changes to all the drivers first, followed by
the framework change at the very end so that when the latter is applied, all
the drivers are in good shape and there are no compilation errors.

Changes from v10:
  - Carefully added back all the "Reviewed-by: " and "Acked-by: " tags received
so far that had gotten missed in v9. No other changes.

Changes from v9:
  - Gathered the received "Reviewed-by: " tag
  - Added back the clk-pwm.c patch because kbuild test robot complained [3]
and addressed received review comments.
  - clps711x: Addressed review comments.

Changes from v8:
  - Gathered all received "Acked-by: " and "Reviewed-by: " tags
  - Dropped patch to clk-pwm.c for reasons mentiond in [2]
  - Expanded audience of unreviewed patches

Changes from v7:
  - Changed commit messages of all patches to be brief and to the point.
  - Added explanation of change in cover letter.
  - Dropped change to pwm-sti.c as upon review it was unnecessary as struct
pwm_capture is not being modified in the PWM core.

Changes from v6:
  - Split out the driver changes out into separate patches, one patch per file
for ease of reviewing.

Changes from v5:
  - Dropped the conversion of struct pwm_capture to u64 for reasons mentioned
in https://www.spinics.net/lists/linux-pwm/msg11541.html

Changes from v4:
  - Split the patch into two: one for changes to the drivers, and the actual
switch to u64 for ease of reverting should the need arise.
  - Re-examined the patch and made the following corrections:
  * intel_panel.c:
DIV64_U64_ROUND_UP -> DIV_ROUND_UP_ULL (as only the numerator would be
64-bit in this case).
  * pwm-sti.c:
do_div -> div_u64 (do_div is optimized only for x86 architectures, and
div_u64's comment block suggests to use this as much as possible).

Changes from v3:
  - Rebased to current tip of for-next.

Changes from v2:
  - Fixed %u -> %llu in a dev_dbg in pwm-stm32-lp.c, thanks to kbuild test robot
  - Added a couple of fixes to pwm-imx-tpm.c and pwm-sifive.c

Changes from v1:
  - Fixed compilation errors seen when compiling for different archs.

v1:
  - Reworked the change pushed upstream earlier [1] so as to not add an
extension to an obsolete API. With this change, pwm_ops->apply() can be
used to set pwm_state parameters as usual.

[1] https://lore.kernel.org/lkml/20190916140048.GB7488@ulmo/
[2] https://lore.kernel.org/lkml/20200312190859.ga19...@codeaurora.org/
[3] https://www.spinics.net/lists/linux-pwm/msg11906.html

Guru Das Srinagesh (12):
  drm/i915: Use 64-bit division macro
  hwmon: pwm-fan: Use 64-bit division macro
  ir-rx51: Use 64-bit division macro
  pwm: clps711x: Cast period to u32 before use as divisor
  pwm: pwm-imx-tpm: Use 64-bit division macro
  pwm: imx27: Use 64-bit division macro and function
  pwm: sifive: Use 64-bit division macro
  pwm: stm32-lp: Use %llu format specifier for period
  pwm: sun4i: Use 64-bit division function
  backlight: pwm_bl: Use 64-bit division function
  clk: pwm: Assign u64 divisor to unsigned int before use
  pwm: core: Convert period and duty cycle to u64

 drivers/clk/clk-pwm.c  |  4 +++-
 drivers/gpu/drm/i915/display/intel_panel.c |  2 +-
 drivers/hwmon/pwm-fan.c|  2 +-
 drivers/media/rc/ir-rx51.c |  3 ++-
 drivers/pwm/core.c |  4 ++--
 drivers/pwm/pwm-clps711x.c |  5 -
 drivers/pwm/pwm-imx-tpm.c  |  2 +-
 drivers/pwm/pwm-imx27.c|  5 ++---
 drivers/pwm/pwm-sifive.c   |  2 +-
 drivers/pwm/pwm-stm32-lp.c |  2 +-
 drivers/pwm/pwm-sun4i.c|  2 +-
 drivers/pwm/sysfs.c|  8 
 drivers/video/backlight/pwm_bl.c   |  3 ++-
 include/linux/pwm.h| 12 ++--
 14 files changed, 31 insertions(+), 25 deletions(-)

Cc: Lee Jones 
Cc: Daniel Thompson 
Cc: Jingoo Han 
Cc: Bartlomiej Zolnierkiewicz 
Cc: linux-fb...@vger.kernel.org
Cc: Maxime Ripard 
Cc: Chen-Yu Tsai 
Cc: Philipp Zabel 
Cc: Fabrice Gasnier 
Cc: Maxime Coquelin 
Cc: Alexandre Torgue 
Cc: Palmer Dabbelt 
Cc: Paul Walmsley 
Cc: 

[Intel-gfx] [PATCH v10 01/12] drm/i915: Use 64-bit division macro

2020-03-20 Thread Guru Das Srinagesh
Since the PWM framework is switching struct pwm_state.duty_cycle's
datatype to u64, prepare for this transition by using DIV_ROUND_UP_ULL
to handle a 64-bit dividend.

Cc: Jani Nikula 
Cc: Joonas Lahtinen 
Cc: David Airlie 
Cc: Daniel Vetter 
Cc: Chris Wilson 
Cc: "Ville Syrjälä" 
Cc: intel-gfx@lists.freedesktop.org
Cc: dri-de...@lists.freedesktop.org

Reviewed-by: Jani Nikula 
Signed-off-by: Guru Das Srinagesh 
---
 drivers/gpu/drm/i915/display/intel_panel.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_panel.c 
b/drivers/gpu/drm/i915/display/intel_panel.c
index bc14e9c..843cac1 100644
--- a/drivers/gpu/drm/i915/display/intel_panel.c
+++ b/drivers/gpu/drm/i915/display/intel_panel.c
@@ -1868,7 +1868,7 @@ static int pwm_setup_backlight(struct intel_connector 
*connector,
 
panel->backlight.min = 0; /* 0% */
panel->backlight.max = 100; /* 100% */
-   panel->backlight.level = DIV_ROUND_UP(
+   panel->backlight.level = DIV_ROUND_UP_ULL(
 pwm_get_duty_cycle(panel->backlight.pwm) * 100,
 CRC_PMIC_PWM_PERIOD_NS);
panel->backlight.enabled = panel->backlight.level != 0;
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH v11 01/12] drm/i915: Use 64-bit division macro

2020-03-20 Thread Guru Das Srinagesh
Since the PWM framework is switching struct pwm_state.duty_cycle's
datatype to u64, prepare for this transition by using DIV_ROUND_UP_ULL
to handle a 64-bit dividend.

Cc: Jani Nikula 
Cc: Joonas Lahtinen 
Cc: David Airlie 
Cc: Daniel Vetter 
Cc: Chris Wilson 
Cc: "Ville Syrjälä" 
Cc: intel-gfx@lists.freedesktop.org
Cc: dri-de...@lists.freedesktop.org

Reviewed-by: Jani Nikula 
Signed-off-by: Guru Das Srinagesh 
---
 drivers/gpu/drm/i915/display/intel_panel.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_panel.c 
b/drivers/gpu/drm/i915/display/intel_panel.c
index bc14e9c..843cac1 100644
--- a/drivers/gpu/drm/i915/display/intel_panel.c
+++ b/drivers/gpu/drm/i915/display/intel_panel.c
@@ -1868,7 +1868,7 @@ static int pwm_setup_backlight(struct intel_connector 
*connector,
 
panel->backlight.min = 0; /* 0% */
panel->backlight.max = 100; /* 100% */
-   panel->backlight.level = DIV_ROUND_UP(
+   panel->backlight.level = DIV_ROUND_UP_ULL(
 pwm_get_duty_cycle(panel->backlight.pwm) * 100,
 CRC_PMIC_PWM_PERIOD_NS);
panel->backlight.enabled = panel->backlight.level != 0;
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v7 05/18] video/hdmi: Add Unpack only function for DRM infoframe

2020-03-20 Thread Jani Nikula
On Tue, 11 Feb 2020, Gwan-gyeong Mun  wrote:
> It adds an unpack only function for DRM infoframe for dynamic range and
> mastering infoframe readout.
> It unpacks the information data block contained in the binary buffer into
> a structured frame of the HDMI Dynamic Range and Mastering (DRM)
> information frame.
>
> In contrast to hdmi_drm_infoframe_unpack() function, it does not verify
> a checksum.
>
> It can be used for unpacking a DP HDR Metadata Infoframe SDP case.
> DP HDR Metadata Infoframe SDP uses the same Dynamic Range and Mastering
> (DRM) information (CTA-861-G spec.) such as HDMI DRM infoframe.
> But DP SDP header and payload structure are different from HDMI DRM
> Infoframe. Therefore unpacking DRM infoframe for DP requires skipping of
> a verifying checksum.
>
> Signed-off-by: Gwan-gyeong Mun 
> Reviewed-by: Uma Shankar 

Bartlomiej, can I have your ack for merging this via drm-intel along
with the rest of the series, please?

BR,
Jani.


> ---
>  drivers/video/hdmi.c | 58 +++-
>  include/linux/hdmi.h |  2 ++
>  2 files changed, 43 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/video/hdmi.c b/drivers/video/hdmi.c
> index 9c82e2a0a411..9818836d82b7 100644
> --- a/drivers/video/hdmi.c
> +++ b/drivers/video/hdmi.c
> @@ -1775,20 +1775,18 @@ hdmi_vendor_any_infoframe_unpack(union 
> hdmi_vendor_any_infoframe *frame,
>  }
>  
>  /**
> - * hdmi_drm_infoframe_unpack() - unpack binary buffer to a HDMI DRM infoframe
> + * hdmi_drm_infoframe_unpack_only() - unpack binary buffer to a HDMI DRM 
> infoframe
>   * @frame: HDMI DRM infoframe
>   * @buffer: source buffer
>   * @size: size of buffer
>   *
> - * Unpacks the information contained in binary @buffer into a structured
> + * Unpacks the information data block contained in binary @buffer into a 
> structured
>   * @frame of the HDMI Dynamic Range and Mastering (DRM) information frame.
> - * Also verifies the checksum as required by section 5.3.5 of the HDMI 1.4
> - * specification.
>   *
>   * Returns 0 on success or a negative error code on failure.
>   */
> -static int hdmi_drm_infoframe_unpack(struct hdmi_drm_infoframe *frame,
> -  const void *buffer, size_t size)
> +int hdmi_drm_infoframe_unpack_only(struct hdmi_drm_infoframe *frame,
> +const void *buffer, size_t size)
>  {
>   const u8 *ptr = buffer;
>   const u8 *temp;
> @@ -1797,23 +1795,13 @@ static int hdmi_drm_infoframe_unpack(struct 
> hdmi_drm_infoframe *frame,
>   int ret;
>   int i;
>  
> - if (size < HDMI_INFOFRAME_SIZE(DRM))
> - return -EINVAL;
> -
> - if (ptr[0] != HDMI_INFOFRAME_TYPE_DRM ||
> - ptr[1] != 1 ||
> - ptr[2] != HDMI_DRM_INFOFRAME_SIZE)
> - return -EINVAL;
> -
> - if (hdmi_infoframe_checksum(buffer, HDMI_INFOFRAME_SIZE(DRM)) != 0)
> + if (size < HDMI_DRM_INFOFRAME_SIZE)
>   return -EINVAL;
>  
>   ret = hdmi_drm_infoframe_init(frame);
>   if (ret)
>   return ret;
>  
> - ptr += HDMI_INFOFRAME_HEADER_SIZE;
> -
>   frame->eotf = ptr[0] & 0x7;
>   frame->metadata_type = ptr[1] & 0x7;
>  
> @@ -1837,6 +1825,42 @@ static int hdmi_drm_infoframe_unpack(struct 
> hdmi_drm_infoframe *frame,
>  
>   return 0;
>  }
> +EXPORT_SYMBOL(hdmi_drm_infoframe_unpack_only);
> +
> +/**
> + * hdmi_drm_infoframe_unpack() - unpack binary buffer to a HDMI DRM infoframe
> + * @frame: HDMI DRM infoframe
> + * @buffer: source buffer
> + * @size: size of buffer
> + *
> + * Unpacks the information contained in binary @buffer into a structured
> + * @frame of the HDMI Dynamic Range and Mastering (DRM) information frame.
> + * Also verifies the checksum as required by section 5.3.5 of the HDMI 1.4
> + * specification.
> + *
> + * Returns 0 on success or a negative error code on failure.
> + */
> +static int hdmi_drm_infoframe_unpack(struct hdmi_drm_infoframe *frame,
> +  const void *buffer, size_t size)
> +{
> + const u8 *ptr = buffer;
> + int ret;
> +
> + if (size < HDMI_INFOFRAME_SIZE(DRM))
> + return -EINVAL;
> +
> + if (ptr[0] != HDMI_INFOFRAME_TYPE_DRM ||
> + ptr[1] != 1 ||
> + ptr[2] != HDMI_DRM_INFOFRAME_SIZE)
> + return -EINVAL;
> +
> + if (hdmi_infoframe_checksum(buffer, HDMI_INFOFRAME_SIZE(DRM)) != 0)
> + return -EINVAL;
> +
> + ret = hdmi_drm_infoframe_unpack_only(frame, ptr + 
> HDMI_INFOFRAME_HEADER_SIZE,
> +  size - HDMI_INFOFRAME_HEADER_SIZE);
> + return ret;
> +}
>  
>  /**
>   * hdmi_infoframe_unpack() - unpack binary buffer to a HDMI infoframe
> diff --git a/include/linux/hdmi.h b/include/linux/hdmi.h
> index 9918a6c910c5..afb43efc03e0 100644
> --- a/include/linux/hdmi.h
> +++ b/include/linux/hdmi.h
> @@ -219,6 +219,8 @@ ssize_t hdmi_drm_infoframe_pack(struct hdmi_drm_infoframe 
> *frame, void *buffer,
>  

Re: [Intel-gfx] [PATCH 1/4] drm/i915/gt: Report context-is-closed prior to pinning

2020-03-20 Thread Tvrtko Ursulin



On 20/03/2020 13:01, Chris Wilson wrote:

Our assertion caught that we do try to pin a closed context if userspace
is viciously racing context-closure with execbuf, so make it fail
gracefully.

Closes: https://gitlab.freedesktop.org/drm/intel/issues/1492
Signed-off-by: Chris Wilson 
Cc: Tvrtko Ursulin 
Cc: Mika Kuoppala 
---
  drivers/gpu/drm/i915/gt/intel_context.c | 7 +--
  1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_context.c 
b/drivers/gpu/drm/i915/gt/intel_context.c
index aea992e46c42..7132bf616cc4 100644
--- a/drivers/gpu/drm/i915/gt/intel_context.c
+++ b/drivers/gpu/drm/i915/gt/intel_context.c
@@ -97,8 +97,6 @@ int __intel_context_do_pin(struct intel_context *ce)
  {
int err;
  
-	GEM_BUG_ON(intel_context_is_closed(ce));

-
if (unlikely(!test_bit(CONTEXT_ALLOC_BIT, >flags))) {
err = intel_context_alloc_state(ce);
if (err)
@@ -114,6 +112,11 @@ int __intel_context_do_pin(struct intel_context *ce)
goto out_release;
}
  
+	if (unlikely(intel_context_is_closed(ce))) {

+   err = -ENOENT;
+   goto out_release;
+   }
+
if (likely(!atomic_add_unless(>pin_count, 1, 0))) {
err = intel_context_active_acquire(ce);
if (unlikely(err))



Reviewed-by: Tvrtko Ursulin 

Regards,

Tvrtko
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/selftests: Check for has-reset before testing hostile contexts

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915/selftests: Check for has-reset before testing hostile contexts
URL   : https://patchwork.freedesktop.org/series/74915/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8163_full -> Patchwork_17033_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


  Here are the changes found in Patchwork_17033_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_busy@busy-vcs1:
- shard-iclb: [PASS][1] -> [SKIP][2] ([fdo#112080]) +9 similar 
issues
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb2/igt@gem_b...@busy-vcs1.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/shard-iclb5/igt@gem_b...@busy-vcs1.html

  * igt@gem_ctx_persistence@close-replace-race:
- shard-iclb: [PASS][3] -> [INCOMPLETE][4] ([i915#1402])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb4/igt@gem_ctx_persiste...@close-replace-race.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/shard-iclb4/igt@gem_ctx_persiste...@close-replace-race.html
- shard-apl:  [PASS][5] -> [INCOMPLETE][6] ([fdo#103927] / 
[i915#1402])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-apl6/igt@gem_ctx_persiste...@close-replace-race.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/shard-apl8/igt@gem_ctx_persiste...@close-replace-race.html

  * igt@gem_exec_schedule@implicit-write-read-bsd2:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#109276] / [i915#677])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb1/igt@gem_exec_sched...@implicit-write-read-bsd2.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/shard-iclb3/igt@gem_exec_sched...@implicit-write-read-bsd2.html

  * igt@gem_exec_schedule@pi-distinct-iova-bsd:
- shard-iclb: [PASS][9] -> [SKIP][10] ([i915#677])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb6/igt@gem_exec_sched...@pi-distinct-iova-bsd.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/shard-iclb4/igt@gem_exec_sched...@pi-distinct-iova-bsd.html

  * igt@gem_exec_schedule@promotion-bsd:
- shard-iclb: [PASS][11] -> [SKIP][12] ([fdo#112146]) +1 similar 
issue
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb6/igt@gem_exec_sched...@promotion-bsd.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/shard-iclb4/igt@gem_exec_sched...@promotion-bsd.html

  * igt@gem_ppgtt@flink-and-close-vma-leak:
- shard-tglb: [PASS][13] -> [FAIL][14] ([i915#644])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-tglb6/igt@gem_pp...@flink-and-close-vma-leak.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/shard-tglb1/igt@gem_pp...@flink-and-close-vma-leak.html

  * igt@i915_pm_rps@waitboost:
- shard-iclb: [PASS][15] -> [FAIL][16] ([i915#413])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb2/igt@i915_pm_...@waitboost.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/shard-iclb5/igt@i915_pm_...@waitboost.html

  * igt@kms_flip@2x-plain-flip-ts-check:
- shard-glk:  [PASS][17] -> [FAIL][18] ([i915#34])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-glk6/igt@kms_f...@2x-plain-flip-ts-check.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/shard-glk8/igt@kms_f...@2x-plain-flip-ts-check.html

  * igt@kms_flip@flip-vs-expired-vblank:
- shard-skl:  [PASS][19] -> [FAIL][20] ([i915#79])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-skl10/igt@kms_f...@flip-vs-expired-vblank.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/shard-skl10/igt@kms_f...@flip-vs-expired-vblank.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-kbl:  [PASS][21] -> [DMESG-WARN][22] ([i915#180]) +3 
similar issues
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-kbl4/igt@kms_frontbuffer_track...@fbc-suspend.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/shard-kbl3/igt@kms_frontbuffer_track...@fbc-suspend.html
- shard-apl:  [PASS][23] -> [DMESG-WARN][24] ([i915#180]) +3 
similar issues
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-apl2/igt@kms_frontbuffer_track...@fbc-suspend.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/shard-apl1/igt@kms_frontbuffer_track...@fbc-suspend.html

  * igt@kms_frontbuffer_tracking@psr-1p-primscrn-cur-indfb-draw-render:
- shard-skl:  [PASS][25] -> [FAIL][26] ([i915#49])
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-skl10/igt@kms_frontbuffer_track...@psr-1p-primscrn-cur-indfb-draw-render.html
   [26]: 

Re: [Intel-gfx] [PATCH 4/4] drm/i915/gem: Avoid gem_context->mutex for simple vma lookup

2020-03-20 Thread Tvrtko Ursulin



On 20/03/2020 13:01, Chris Wilson wrote:

As we store the handle lookup inside a radix tree, we do not need the
gem_context->mutex except until we need to insert our lookup into the
common radix tree. This takes a small bit of rearranging to ensure that
the lut we insert into the tree is ready prior to actually inserting it
(as soon as it is exposed via the radixtree, it is visible to any other
submission).

v2: For brownie points, remove the goto spaghetti.
v3: Tighten up the closed-handle checks.

Signed-off-by: Chris Wilson 
---
  .../gpu/drm/i915/gem/i915_gem_execbuffer.c| 136 +++---
  1 file changed, 87 insertions(+), 49 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index c1179c00bc61..876fc2e124b9 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -481,7 +481,7 @@ eb_add_vma(struct i915_execbuffer *eb,
  
  	GEM_BUG_ON(i915_vma_is_closed(vma));
  
-	ev->vma = i915_vma_get(vma);

+   ev->vma = vma;
ev->exec = entry;
ev->flags = entry->flags;
  
@@ -728,77 +728,117 @@ static int eb_select_context(struct i915_execbuffer *eb)

return 0;
  }
  
-static int eb_lookup_vmas(struct i915_execbuffer *eb)

+static int __eb_add_lut(struct i915_execbuffer *eb,
+   u32 handle, struct i915_vma *vma)
  {
-   struct radix_tree_root *handles_vma = >gem_context->handles_vma;
-   struct drm_i915_gem_object *obj;
-   unsigned int i, batch;
+   struct i915_gem_context *ctx = eb->gem_context;
+   struct i915_lut_handle *lut;
int err;
  
-	if (unlikely(i915_gem_context_is_closed(eb->gem_context)))

-   return -ENOENT;
+   lut = i915_lut_handle_alloc();
+   if (unlikely(!lut))
+   return -ENOMEM;
  
-	INIT_LIST_HEAD(>relocs);

-   INIT_LIST_HEAD(>unbound);
+   i915_vma_get(vma);
+   if (!atomic_fetch_inc(>open_count))
+   i915_vma_reopen(vma);
+   lut->handle = handle;
+   lut->ctx = ctx;
+
+   /* Check that the context hasn't been closed in the meantime */
+   err = -EINTR;
+   if (!mutex_lock_interruptible(>mutex)) {
+   err = -ENOENT;
+   if (likely(!i915_gem_context_is_closed(ctx)))
+   err = radix_tree_insert(>handles_vma, handle, vma);
+   if (err == 0) { /* And nor has this handle */
+   struct drm_i915_gem_object *obj = vma->obj;
+
+   i915_gem_object_lock(obj);


Does this fit into Maarten's rework - nesting of object_lock under 
ctx->mutex I mean?


Other than this question it looks clean.

Regards,

Tvrtko


+   if (idr_find(>file->object_idr, handle) == obj) {
+   list_add(>obj_link, >lut_list);
+   } else {
+   radix_tree_delete(>handles_vma, handle);
+   err = -ENOENT;
+   }
+   i915_gem_object_unlock(obj);
+   }
+   mutex_unlock(>mutex);
+   }
+   if (unlikely(err))
+   goto err;
  
-	batch = eb_batch_index(eb);

+   return 0;
  
-	for (i = 0; i < eb->buffer_count; i++) {

-   u32 handle = eb->exec[i].handle;
-   struct i915_lut_handle *lut;
+err:
+   atomic_dec(>open_count);
+   i915_vma_put(vma);
+   i915_lut_handle_free(lut);
+   return err;
+}
+
+static struct i915_vma *eb_lookup_vma(struct i915_execbuffer *eb, u32 handle)
+{
+   do {
+   struct drm_i915_gem_object *obj;
struct i915_vma *vma;
+   int err;
  
-		vma = radix_tree_lookup(handles_vma, handle);

+   rcu_read_lock();
+   vma = radix_tree_lookup(>gem_context->handles_vma, handle);
+   if (likely(vma))
+   vma = i915_vma_tryget(vma);
+   rcu_read_unlock();
if (likely(vma))
-   goto add_vma;
+   return vma;
  
  		obj = i915_gem_object_lookup(eb->file, handle);

-   if (unlikely(!obj)) {
-   err = -ENOENT;
-   goto err_vma;
-   }
+   if (unlikely(!obj))
+   return ERR_PTR(-ENOENT);
  
  		vma = i915_vma_instance(obj, eb->context->vm, NULL);

if (IS_ERR(vma)) {
-   err = PTR_ERR(vma);
-   goto err_obj;
+   i915_gem_object_put(obj);
+   return vma;
}
  
-		lut = i915_lut_handle_alloc();

-   if (unlikely(!lut)) {
-   err = -ENOMEM;
-   goto err_obj;
-   }
+   err = __eb_add_lut(eb, handle, vma);
+   if (likely(!err))
+   

[Intel-gfx] [PATCH] drm/i915/execlists: Pull tasklet interrupt-bh local to direct submission

2020-03-20 Thread Chris Wilson
We dropped calling process_csb prior to handling direct submission in
order to avoid the nesting of spinlocks and lift process_csb() and the
majority of the tasklet out of irq-off. However, we do want to avoid
ksoftirqd latency in the fast path, so try and pull the interrupt-bh
local to direct submission if we can acquire the tasklet's lock.

Signed-off-by: Chris Wilson 
Cc: Francisco Jerez 
Cc: Tvrtko Ursulin 
---
 drivers/gpu/drm/i915/gt/intel_lrc.c | 22 ++
 1 file changed, 18 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index f09dd87324b9..996554766aa5 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -2884,6 +2884,11 @@ static void queue_request(struct intel_engine_cs *engine,
set_bit(I915_FENCE_FLAG_PQUEUE, >fence.flags);
 }
 
+static bool pending_csb(const struct intel_engine_execlists *execlists)
+{
+   return READ_ONCE(*execlists->csb_write) != execlists->csb_head;
+}
+
 static void __submit_queue_imm(struct intel_engine_cs *engine)
 {
struct intel_engine_execlists * const execlists = >execlists;
@@ -2891,10 +2896,19 @@ static void __submit_queue_imm(struct intel_engine_cs 
*engine)
if (reset_in_progress(execlists))
return; /* defer until we restart the engine following reset */
 
-   if (execlists->tasklet.func == execlists_submission_tasklet)
-   __execlists_submission_tasklet(engine);
-   else
-   tasklet_hi_schedule(>tasklet);
+   /* Hopefully we clear execlists->pending[] to let us through */
+   if (execlists->pending[0] && tasklet_trylock(>tasklet)) {
+   process_csb(engine);
+   tasklet_unlock(>tasklet);
+   }
+
+   __execlists_submission_tasklet(engine);
+
+   /* Try and pull an interrupt-bh queued on another CPU to here */
+   if (pending_csb(execlists) && tasklet_trylock(>tasklet)) {
+   process_csb(engine);
+   tasklet_unlock(>tasklet);
+   }
 }
 
 static void submit_queue(struct intel_engine_cs *engine,
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915/selftests: Check for has-reset before testing hostile contexts

2020-03-20 Thread Chris Wilson
In order to kill off a hostile context, we need to be able to reset the
GPU. So check that is supported prior to beginning the test.

Reported-by: Tvrtko Ursulin 
Signed-off-by: Chris Wilson 
Cc: Tvrtko Ursulin 
---
 drivers/gpu/drm/i915/gt/selftest_lrc.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c 
b/drivers/gpu/drm/i915/gt/selftest_lrc.c
index 6f06ba750a0a..7e3a92faf392 100644
--- a/drivers/gpu/drm/i915/gt/selftest_lrc.c
+++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c
@@ -2030,6 +2030,9 @@ static int __cancel_hostile(struct live_preempt_cancel 
*arg)
if (!IS_ACTIVE(CONFIG_DRM_I915_PREEMPT_TIMEOUT))
return 0;
 
+   if (!intel_has_reset_engine(arg->engine->gt))
+   return 0;
+
GEM_TRACE("%s(%s)\n", __func__, arg->engine->name);
rq = spinner_create_request(>a.spin,
arg->a.ctx, arg->engine,
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915/gt: Report context-is-closed prior to pinning

2020-03-20 Thread Chris Wilson
Our assertion caught that we do try to pin a closed context if userspace
is viciously racing context-closure with execbuf, so make it fail
gracefully.

Closes: https://gitlab.freedesktop.org/drm/intel/issues/1492
Signed-off-by: Chris Wilson 
Cc: Tvrtko Ursulin 
Cc: Mika Kuoppala 
---
 drivers/gpu/drm/i915/gt/intel_context.c | 7 +--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_context.c 
b/drivers/gpu/drm/i915/gt/intel_context.c
index aea992e46c42..7132bf616cc4 100644
--- a/drivers/gpu/drm/i915/gt/intel_context.c
+++ b/drivers/gpu/drm/i915/gt/intel_context.c
@@ -97,8 +97,6 @@ int __intel_context_do_pin(struct intel_context *ce)
 {
int err;
 
-   GEM_BUG_ON(intel_context_is_closed(ce));
-
if (unlikely(!test_bit(CONTEXT_ALLOC_BIT, >flags))) {
err = intel_context_alloc_state(ce);
if (err)
@@ -114,6 +112,11 @@ int __intel_context_do_pin(struct intel_context *ce)
goto out_release;
}
 
+   if (unlikely(intel_context_is_closed(ce))) {
+   err = -ENOENT;
+   goto out_release;
+   }
+
if (likely(!atomic_add_unless(>pin_count, 1, 0))) {
err = intel_context_active_acquire(ce);
if (unlikely(err))
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/selftests: Check for has-reset before testing hostile contexts

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915/selftests: Check for has-reset before testing hostile contexts
URL   : https://patchwork.freedesktop.org/series/74915/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8163 -> Patchwork_17033


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/index.html

Known issues


  Here are the changes found in Patchwork_17033 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@execlists:
- fi-kbl-soraka:  [PASS][1] -> [INCOMPLETE][2] ([fdo#112259] / 
[i915#656])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/fi-kbl-soraka/igt@i915_selftest@l...@execlists.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/fi-kbl-soraka/igt@i915_selftest@l...@execlists.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [PASS][3] -> [FAIL][4] ([i915#323])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
 Possible fixes 

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
- fi-cfl-8109u:   [FAIL][5] ([fdo#103375]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/fi-cfl-8109u/igt@kms_pipe_crc_ba...@suspend-read-crc-pipe-a.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/fi-cfl-8109u/igt@kms_pipe_crc_ba...@suspend-read-crc-pipe-a.html

  
  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#112259]: https://bugs.freedesktop.org/show_bug.cgi?id=112259
  [i915#323]: https://gitlab.freedesktop.org/drm/intel/issues/323
  [i915#656]: https://gitlab.freedesktop.org/drm/intel/issues/656


Participating hosts (41 -> 39)
--

  Additional (2): fi-skl-6600u fi-elk-e7500 
  Missing(4): fi-bsw-kefka fi-kbl-7560u fi-byt-squawks fi-bsw-cyan 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_8163 -> Patchwork_17033

  CI-20190529: 20190529
  CI_DRM_8163: 710b3af22d17146897a55f01868d8e2d867895d3 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5523: cf6d524007ac51a7d5a48503ea3dd5f01fd4ebab @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17033: dd08db2eba929e3546b814186865a741e019694c @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

dd08db2eba92 drm/i915/selftests: Check for has-reset before testing hostile 
contexts

== Logs ==

For more details see: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17033/index.html
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v7 04/18] drm/i915/dp: Add writing of DP SDPs

2020-03-20 Thread Jani Nikula
On Mon, 16 Mar 2020, "Shankar, Uma"  wrote:
>> -Original Message-
>> From: dri-devel  On Behalf Of Gwan-
>> gyeong Mun
>> Sent: Tuesday, February 11, 2020 1:17 PM
>> To: intel-gfx@lists.freedesktop.org
>> Cc: linux-fb...@vger.kernel.org; dri-de...@lists.freedesktop.org
>> Subject: [PATCH v7 04/18] drm/i915/dp: Add writing of DP SDPs
>> 
>> It adds routines that write DP VSC SDP and DP HDR Metadata Infoframe SDP.
>> In order to pack DP VSC SDP, it adds intel_dp_vsc_sdp_pack() function.
>> It follows DP 1.4a spec. [Table 2-116: VSC SDP Header Bytes] and [Table 
>> 2-117: VSC
>> SDP Payload for DB16 through DB18]
>> 
>> In order to pack DP HDR Metadata Infoframe SDP, it adds
>> intel_dp_hdr_metadata_infoframe_sdp_pack() function.
>> And it follows DP 1.4a spec.
>> ([Table 2-125: INFOFRAME SDP v1.2 Header Bytes] and [Table 2-126: INFOFRAME
>> SDP v1.2 Payload Data Bytes - DB0 through DB31]) and CTA-861-G spec. 
>> [Table-42
>> Dynamic Range and Mastering InfoFrame].
>> 
>> A mechanism and a naming rule of intel_dp_set_infoframes() function 
>> references
>> intel_encoder->set_infoframes() of intel_hdmi.c .
>> VSC SDP is used for PSR and Pixel Encoding and Colorimetry Formats cases.
>> Because PSR routine has its own routine of writing a VSC SDP, when the PSR is
>> enabled, intel_dp_set_infoframes() does not write a VSC SDP.
>> 
>> v3:
>>   - Explicitly disable unused DIPs (AVI, GCP, VS, SPD, DRM. They will be
>> used for HDMI), when intel_dp_set_infoframes() function will be called.
>>   - Replace a structure name to drm_dp_vsc_sdp from intel_dp_vsc_sdp.
>> v4: Use struct drm_device logging macros
>> v5:
>>   - use intel_de_*() functions for register access
>>   - Addressed review comments from Uma
>> Polish commit message and comments
>> Add 6bpc to packing of VSC SDP
>
> Looks good to me.
> Reviewed-by: Uma Shankar 

Pushed up to and including this patch, thanks for the patches and
review.

BR,
Jani.

>
>> Signed-off-by: Gwan-gyeong Mun 
>> ---
>>  drivers/gpu/drm/i915/display/intel_dp.c | 199 
>>  drivers/gpu/drm/i915/display/intel_dp.h |   3 +
>>  2 files changed, 202 insertions(+)
>> 
>> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
>> b/drivers/gpu/drm/i915/display/intel_dp.c
>> index fb008168ca83..5bbc55113325 100644
>> --- a/drivers/gpu/drm/i915/display/intel_dp.c
>> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
>> @@ -4741,6 +4741,205 @@ intel_dp_needs_vsc_sdp(const struct intel_crtc_state
>> *crtc_state,
>>  return false;
>>  }
>> 
>> +static ssize_t intel_dp_vsc_sdp_pack(const struct drm_dp_vsc_sdp *vsc,
>> + struct dp_sdp *sdp, size_t size) {
>> +size_t length = sizeof(struct dp_sdp);
>> +
>> +if (size < length)
>> +return -ENOSPC;
>> +
>> +memset(sdp, 0, size);
>> +
>> +/*
>> + * Prepare VSC Header for SU as per DP 1.4a spec, Table 2-119
>> + * VSC SDP Header Bytes
>> + */
>> +sdp->sdp_header.HB0 = 0; /* Secondary-Data Packet ID = 0 */
>> +sdp->sdp_header.HB1 = vsc->sdp_type; /* Secondary-data Packet Type */
>> +sdp->sdp_header.HB2 = vsc->revision; /* Revision Number */
>> +sdp->sdp_header.HB3 = vsc->length; /* Number of Valid Data Bytes */
>> +
>> +/* VSC SDP Payload for DB16 through DB18 */
>> +/* Pixel Encoding and Colorimetry Formats  */
>> +sdp->db[16] = (vsc->pixelformat & 0xf) << 4; /* DB16[7:4] */
>> +sdp->db[16] |= vsc->colorimetry & 0xf; /* DB16[3:0] */
>> +
>> +switch (vsc->bpc) {
>> +case 6:
>> +/* 6bpc: 0x0 */
>> +break;
>> +case 8:
>> +sdp->db[17] = 0x1; /* DB17[3:0] */
>> +break;
>> +case 10:
>> +sdp->db[17] = 0x2;
>> +break;
>> +case 12:
>> +sdp->db[17] = 0x3;
>> +break;
>> +case 16:
>> +sdp->db[17] = 0x4;
>> +break;
>> +default:
>> +MISSING_CASE(vsc->bpc);
>> +break;
>> +}
>> +/* Dynamic Range and Component Bit Depth */
>> +if (vsc->dynamic_range == DP_DYNAMIC_RANGE_CTA)
>> +sdp->db[17] |= 0x80;  /* DB17[7] */
>> +
>> +/* Content Type */
>> +sdp->db[18] = vsc->content_type & 0x7;
>> +
>> +return length;
>> +}
>> +
>> +static ssize_t
>> +intel_dp_hdr_metadata_infoframe_sdp_pack(const struct hdmi_drm_infoframe
>> *drm_infoframe,
>> + struct dp_sdp *sdp,
>> + size_t size)
>> +{
>> +size_t length = sizeof(struct dp_sdp);
>> +const int infoframe_size = HDMI_INFOFRAME_HEADER_SIZE +
>> HDMI_DRM_INFOFRAME_SIZE;
>> +unsigned char buf[HDMI_INFOFRAME_HEADER_SIZE +
>> HDMI_DRM_INFOFRAME_SIZE];
>> +ssize_t len;
>> +
>> +if (size < length)
>> +return -ENOSPC;
>> +
>> +memset(sdp, 0, size);
>> +
>> +len = hdmi_drm_infoframe_pack_only(drm_infoframe, buf, sizeof(buf));
>> +if (len < 0) {
>> +

[Intel-gfx] [PATCH 13/13] drm/i915/wopcm: convert to drm device based logging

2020-03-20 Thread Jani Nikula
Prefer drm_dbg() over DRM_DEV_DEBUG_DRIVER() and drm_err() over
dev_err().

Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/intel_wopcm.c | 22 ++
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_wopcm.c 
b/drivers/gpu/drm/i915/intel_wopcm.c
index 2bb9f9f9a50a..2186386a45c8 100644
--- a/drivers/gpu/drm/i915/intel_wopcm.c
+++ b/drivers/gpu/drm/i915/intel_wopcm.c
@@ -86,7 +86,7 @@ void intel_wopcm_init_early(struct intel_wopcm *wopcm)
else
wopcm->size = GEN9_WOPCM_SIZE;
 
-   DRM_DEV_DEBUG_DRIVER(i915->drm.dev, "WOPCM: %uK\n", wopcm->size / 1024);
+   drm_dbg(>drm, "WOPCM: %uK\n", wopcm->size / 1024);
 }
 
 static inline u32 context_reserved_size(struct drm_i915_private *i915)
@@ -112,7 +112,7 @@ static inline bool gen9_check_dword_gap(struct 
drm_i915_private *i915,
offset = guc_wopcm_base + GEN9_GUC_WOPCM_OFFSET;
if (offset > guc_wopcm_size ||
(guc_wopcm_size - offset) < sizeof(u32)) {
-   dev_err(i915->drm.dev,
+   drm_err(>drm,
"WOPCM: invalid GuC region size: %uK < %uK\n",
guc_wopcm_size / SZ_1K,
(u32)(offset + sizeof(u32)) / SZ_1K);
@@ -131,7 +131,7 @@ static inline bool gen9_check_huc_fw_fits(struct 
drm_i915_private *i915,
 * firmware uploading would fail.
 */
if (huc_fw_size > guc_wopcm_size - GUC_WOPCM_RESERVED) {
-   dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n",
+   drm_err(>drm, "WOPCM: no space for %s: %uK < %uK\n",
intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_HUC),
(guc_wopcm_size - GUC_WOPCM_RESERVED) / SZ_1K,
huc_fw_size / 1024);
@@ -166,7 +166,7 @@ static inline bool __check_layout(struct drm_i915_private 
*i915, u32 wopcm_size,
 
size = wopcm_size - ctx_rsvd;
if (unlikely(range_overflows(guc_wopcm_base, guc_wopcm_size, size))) {
-   dev_err(i915->drm.dev,
+   drm_err(>drm,
"WOPCM: invalid GuC region layout: %uK + %uK > %uK\n",
guc_wopcm_base / SZ_1K, guc_wopcm_size / SZ_1K,
size / SZ_1K);
@@ -175,7 +175,7 @@ static inline bool __check_layout(struct drm_i915_private 
*i915, u32 wopcm_size,
 
size = guc_fw_size + GUC_WOPCM_RESERVED + GUC_WOPCM_STACK_RESERVED;
if (unlikely(guc_wopcm_size < size)) {
-   dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n",
+   drm_err(>drm, "WOPCM: no space for %s: %uK < %uK\n",
intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_GUC),
guc_wopcm_size / SZ_1K, size / SZ_1K);
return false;
@@ -183,7 +183,7 @@ static inline bool __check_layout(struct drm_i915_private 
*i915, u32 wopcm_size,
 
size = huc_fw_size + WOPCM_RESERVED_SIZE;
if (unlikely(guc_wopcm_base < size)) {
-   dev_err(i915->drm.dev, "WOPCM: no space for %s: %uK < %uK\n",
+   drm_err(>drm, "WOPCM: no space for %s: %uK < %uK\n",
intel_uc_fw_type_repr(INTEL_UC_FW_TYPE_HUC),
guc_wopcm_base / SZ_1K, size / SZ_1K);
return false;
@@ -242,10 +242,8 @@ void intel_wopcm_init(struct intel_wopcm *wopcm)
return;
 
if (__wopcm_regs_locked(gt->uncore, _wopcm_base, _wopcm_size)) {
-   DRM_DEV_DEBUG_DRIVER(i915->drm.dev,
-"GuC WOPCM is already locked [%uK, %uK)\n",
-guc_wopcm_base / SZ_1K,
-guc_wopcm_size / SZ_1K);
+   drm_dbg(>drm, "GuC WOPCM is already locked [%uK, %uK)\n",
+   guc_wopcm_base / SZ_1K, guc_wopcm_size / SZ_1K);
goto check;
}
 
@@ -266,8 +264,8 @@ void intel_wopcm_init(struct intel_wopcm *wopcm)
guc_wopcm_size = wopcm->size - ctx_rsvd - guc_wopcm_base;
guc_wopcm_size &= GUC_WOPCM_SIZE_MASK;
 
-   DRM_DEV_DEBUG_DRIVER(i915->drm.dev, "Calculated GuC WOPCM [%uK, %uK)\n",
-guc_wopcm_base / SZ_1K, guc_wopcm_size / SZ_1K);
+   drm_dbg(>drm, "Calculated GuC WOPCM [%uK, %uK)\n",
+   guc_wopcm_base / SZ_1K, guc_wopcm_size / SZ_1K);
 
 check:
if (__check_layout(i915, wopcm->size, guc_wopcm_base, guc_wopcm_size,
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 01/13] drm/i915/ddi: use struct drm_device based logging

2020-03-20 Thread Jani Nikula
Convert all the DRM_* logging macros to the struct drm_device based
macros to provide device specific logging.

No functional changes.

Generated using the following semantic patch, originally written by
Wambui Karuga , with manual fixups on top:

@@
identifier fn, T;
@@

fn(...,struct drm_i915_private *T,...) {
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

@@
identifier fn, T;
@@

fn(...) {
...
struct drm_i915_private *T = ...;
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

Cc: Wambui Karuga 
Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/display/intel_ddi.c | 118 ++-
 1 file changed, 72 insertions(+), 46 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
b/drivers/gpu/drm/i915/display/intel_ddi.c
index 73d0f4648c06..3df7fb5b3d02 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -1102,7 +1102,8 @@ static void intel_wait_ddi_buf_idle(struct 
drm_i915_private *dev_priv,
if (intel_de_read(dev_priv, reg) & DDI_BUF_IS_IDLE)
return;
}
-   DRM_ERROR("Timeout waiting for DDI BUF %c idle bit\n", port_name(port));
+   drm_err(_priv->drm, "Timeout waiting for DDI BUF %c idle bit\n",
+   port_name(port));
 }
 
 static u32 hsw_pll_to_ddi_pll_sel(const struct intel_shared_dpll *pll)
@@ -1249,7 +1250,8 @@ void hsw_fdi_link_train(struct intel_encoder *encoder,
 
temp = intel_de_read(dev_priv, DP_TP_STATUS(PORT_E));
if (temp & DP_TP_STATUS_AUTOTRAIN_DONE) {
-   DRM_DEBUG_KMS("FDI link training done on step %d\n", i);
+   drm_dbg_kms(_priv->drm,
+   "FDI link training done on step %d\n", i);
break;
}
 
@@ -1258,7 +1260,7 @@ void hsw_fdi_link_train(struct intel_encoder *encoder,
 * Results in less fireworks from the state checker.
 */
if (i == ARRAY_SIZE(hsw_ddi_translations_fdi) * 2 - 1) {
-   DRM_ERROR("FDI link training failed!\n");
+   drm_err(_priv->drm, "FDI link training failed!\n");
break;
}
 
@@ -1605,7 +1607,8 @@ void intel_ddi_disable_transcoder_func(const struct 
intel_crtc_state *crtc_state
 
if (dev_priv->quirks & QUIRK_INCREASE_DDI_DISABLED_TIME &&
intel_crtc_has_type(crtc_state, INTEL_OUTPUT_HDMI)) {
-   DRM_DEBUG_KMS("Quirk Increase DDI disabled time\n");
+   drm_dbg_kms(_priv->drm,
+   "Quirk Increase DDI disabled time\n");
/* Quirk time at 100ms for reliable operation */
msleep(100);
}
@@ -1786,20 +1789,23 @@ static void intel_ddi_get_encoder_pipes(struct 
intel_encoder *encoder,
}
 
if (!*pipe_mask)
-   DRM_DEBUG_KMS("No pipe for [ENCODER:%d:%s] found\n",
- encoder->base.base.id, encoder->base.name);
+   drm_dbg_kms(_priv->drm,
+   "No pipe for [ENCODER:%d:%s] found\n",
+   encoder->base.base.id, encoder->base.name);
 
if (!mst_pipe_mask && hweight8(*pipe_mask) > 1) {
-   DRM_DEBUG_KMS("Multiple pipes for [ENCODER:%d:%s] (pipe_mask 
%02x)\n",
- encoder->base.base.id, encoder->base.name,
- *pipe_mask);
+   drm_dbg_kms(_priv->drm,
+   "Multiple pipes for [ENCODER:%d:%s] (pipe_mask 
%02x)\n",
+   encoder->base.base.id, encoder->base.name,
+   *pipe_mask);
*pipe_mask = BIT(ffs(*pipe_mask) - 1);
}
 
if (mst_pipe_mask && mst_pipe_mask != *pipe_mask)
-   DRM_DEBUG_KMS("Conflicting MST and non-MST state for 
[ENCODER:%d:%s] (pipe_mask %02x mst_pipe_mask %02x)\n",
- encoder->base.base.id, encoder->base.name,
- *pipe_mask, mst_pipe_mask);
+   drm_dbg_kms(_priv->drm,
+   "Conflicting MST and non-MST state for 
[ENCODER:%d:%s] (pipe_mask %02x mst_pipe_mask %02x)\n",
+   encoder->base.base.id, encoder->base.name,
+   *pipe_mask, mst_pipe_mask);
else
*is_dp_mst = mst_pipe_mask;
 
@@ -1809,9 +1815,9 @@ static void 

[Intel-gfx] [PATCH 06/13] drm/i915/hdmi: use struct drm_device based logging

2020-03-20 Thread Jani Nikula
Convert all the DRM_* logging macros to the struct drm_device based
macros to provide device specific logging.

No functional changes.

Generated using the following semantic patch, originally written by
Wambui Karuga , with manual fixups on top:

@@
identifier fn, T;
@@

fn(...,struct drm_i915_private *T,...) {
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

@@
identifier fn, T;
@@

fn(...) {
...
struct drm_i915_private *T = ...;
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

Cc: Wambui Karuga 
Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/display/intel_hdmi.c | 189 ++
 1 file changed, 121 insertions(+), 68 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hdmi.c 
b/drivers/gpu/drm/i915/display/intel_hdmi.c
index 39930232b253..395dc192baa0 100644
--- a/drivers/gpu/drm/i915/display/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/display/intel_hdmi.c
@@ -691,6 +691,7 @@ void intel_read_infoframe(struct intel_encoder *encoder,
  union hdmi_infoframe *frame)
 {
struct intel_digital_port *intel_dig_port = enc_to_dig_port(encoder);
+   struct drm_i915_private *i915 = to_i915(intel_dig_port->base.base.dev);
u8 buffer[VIDEO_DIP_DATA_SIZE];
int ret;
 
@@ -707,13 +708,15 @@ void intel_read_infoframe(struct intel_encoder *encoder,
/* see comment above for the reason for this offset */
ret = hdmi_infoframe_unpack(frame, buffer + 1, sizeof(buffer) - 1);
if (ret) {
-   DRM_DEBUG_KMS("Failed to unpack infoframe type 0x%02x\n", type);
+   drm_dbg_kms(>drm,
+   "Failed to unpack infoframe type 0x%02x\n", type);
return;
}
 
if (frame->any.type != type)
-   DRM_DEBUG_KMS("Found the wrong infoframe type 0x%x (expected 
0x%02x)\n",
- frame->any.type, type);
+   drm_dbg_kms(>drm,
+   "Found the wrong infoframe type 0x%x (expected 
0x%02x)\n",
+   frame->any.type, type);
 }
 
 static bool
@@ -853,7 +856,8 @@ intel_hdmi_compute_drm_infoframe(struct intel_encoder 
*encoder,
 
ret = drm_hdmi_infoframe_set_hdr_metadata(frame, conn_state);
if (ret < 0) {
-   DRM_DEBUG_KMS("couldn't set HDR metadata in infoframe\n");
+   drm_dbg_kms(_priv->drm,
+   "couldn't set HDR metadata in infoframe\n");
return false;
}
 
@@ -893,8 +897,9 @@ static void g4x_set_infoframes(struct intel_encoder 
*encoder,
if (!(val & VIDEO_DIP_ENABLE))
return;
if (port != (val & VIDEO_DIP_PORT_MASK)) {
-   DRM_DEBUG_KMS("video DIP still enabled on port %c\n",
- (val & VIDEO_DIP_PORT_MASK) >> 29);
+   drm_dbg_kms(_priv->drm,
+   "video DIP still enabled on port %c\n",
+   (val & VIDEO_DIP_PORT_MASK) >> 29);
return;
}
val &= ~(VIDEO_DIP_ENABLE | VIDEO_DIP_ENABLE_AVI |
@@ -906,8 +911,9 @@ static void g4x_set_infoframes(struct intel_encoder 
*encoder,
 
if (port != (val & VIDEO_DIP_PORT_MASK)) {
if (val & VIDEO_DIP_ENABLE) {
-   DRM_DEBUG_KMS("video DIP already enabled on port %c\n",
- (val & VIDEO_DIP_PORT_MASK) >> 29);
+   drm_dbg_kms(_priv->drm,
+   "video DIP already enabled on port %c\n",
+   (val & VIDEO_DIP_PORT_MASK) >> 29);
return;
}
val &= ~VIDEO_DIP_PORT_MASK;
@@ -1264,8 +1270,8 @@ void intel_dp_dual_mode_set_tmds_output(struct intel_hdmi 
*hdmi, bool enable)
if (hdmi->dp_dual_mode.type < DRM_DP_DUAL_MODE_TYPE2_DVI)
return;
 
-   DRM_DEBUG_KMS("%s DP dual mode adaptor TMDS output\n",
- enable ? "Enabling" : "Disabling");
+   drm_dbg_kms(_priv->drm, "%s DP dual mode adaptor TMDS output\n",
+   enable ? "Enabling" : "Disabling");
 
drm_dp_dual_mode_set_tmds_output(hdmi->dp_dual_mode.type,
 adapter, enable);
@@ -1346,13 +1352,14 @@ int intel_hdmi_hdcp_write_an_aksv(struct 
intel_digital_port *intel_dig_port,
ret = 

[Intel-gfx] [PATCH 05/13] drm/i915/dsi: use struct drm_device based logging

2020-03-20 Thread Jani Nikula
Convert all the DRM_* logging macros to the struct drm_device based
macros to provide device specific logging.

No functional changes.

Generated using the following semantic patch, originally written by
Wambui Karuga , with manual fixups on top:

@@
identifier fn, T;
@@

fn(...,struct drm_i915_private *T,...) {
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

@@
identifier fn, T;
@@

fn(...) {
...
struct drm_i915_private *T = ...;
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

Cc: Wambui Karuga 
Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/display/intel_dsi.c | 9 +
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dsi.c 
b/drivers/gpu/drm/i915/display/intel_dsi.c
index a2a937109a5a..afa4e6817e8c 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi.c
+++ b/drivers/gpu/drm/i915/display/intel_dsi.c
@@ -31,20 +31,21 @@ int intel_dsi_tlpx_ns(const struct intel_dsi *intel_dsi)
 
 int intel_dsi_get_modes(struct drm_connector *connector)
 {
+   struct drm_i915_private *i915 = to_i915(connector->dev);
struct intel_connector *intel_connector = to_intel_connector(connector);
struct drm_display_mode *mode;
 
-   DRM_DEBUG_KMS("\n");
+   drm_dbg_kms(>drm, "\n");
 
if (!intel_connector->panel.fixed_mode) {
-   DRM_DEBUG_KMS("no fixed mode\n");
+   drm_dbg_kms(>drm, "no fixed mode\n");
return 0;
}
 
mode = drm_mode_duplicate(connector->dev,
  intel_connector->panel.fixed_mode);
if (!mode) {
-   DRM_DEBUG_KMS("drm_mode_duplicate failed\n");
+   drm_dbg_kms(>drm, "drm_mode_duplicate failed\n");
return 0;
}
 
@@ -60,7 +61,7 @@ enum drm_mode_status intel_dsi_mode_valid(struct 
drm_connector *connector,
const struct drm_display_mode *fixed_mode = 
intel_connector->panel.fixed_mode;
int max_dotclk = to_i915(connector->dev)->max_dotclk_freq;
 
-   DRM_DEBUG_KMS("\n");
+   drm_dbg_kms(_priv->drm, "\n");
 
if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
return MODE_NO_DBLESCAN;
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 04/13] drm/i915/dp_mst: use struct drm_device based logging

2020-03-20 Thread Jani Nikula
Convert all the DRM_* logging macros to the struct drm_device based
macros to provide device specific logging.

No functional changes.

Generated using the following semantic patch, originally written by
Wambui Karuga , with manual fixups on top:

@@
identifier fn, T;
@@

fn(...,struct drm_i915_private *T,...) {
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

@@
identifier fn, T;
@@

fn(...) {
...
struct drm_i915_private *T = ...;
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

Cc: Wambui Karuga 
Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/display/intel_dp_mst.c | 26 ++---
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c 
b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index 44f3fd251ca1..b978ddd96578 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -47,6 +47,7 @@ static int intel_dp_mst_compute_link_config(struct 
intel_encoder *encoder,
struct intel_dp *intel_dp = _mst->primary->dp;
struct intel_connector *connector =
to_intel_connector(conn_state->connector);
+   struct drm_i915_private *i915 = to_i915(connector->base.dev);
const struct drm_display_mode *adjusted_mode =
_state->hw.adjusted_mode;
void *port = connector->port;
@@ -73,7 +74,8 @@ static int intel_dp_mst_compute_link_config(struct 
intel_encoder *encoder,
}
 
if (slots < 0) {
-   DRM_DEBUG_KMS("failed finding vcpi slots:%d\n", slots);
+   drm_dbg_kms(>drm, "failed finding vcpi slots:%d\n",
+   slots);
return slots;
}
 
@@ -322,15 +324,17 @@ static void intel_mst_disable_dp(struct intel_encoder 
*encoder,
struct intel_dp *intel_dp = _dig_port->dp;
struct intel_connector *connector =
to_intel_connector(old_conn_state->connector);
+   struct drm_i915_private *i915 = to_i915(connector->base.dev);
int ret;
 
-   DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links);
+   drm_dbg_kms(>drm, "active links %d\n",
+   intel_dp->active_mst_links);
 
drm_dp_mst_reset_vcpi_slots(_dp->mst_mgr, connector->port);
 
ret = drm_dp_update_payload_part1(_dp->mst_mgr);
if (ret) {
-   DRM_DEBUG_KMS("failed to update payload %d\n", ret);
+   drm_dbg_kms(>drm, "failed to update payload %d\n", ret);
}
if (old_crtc_state->has_audio)
intel_audio_codec_disable(encoder,
@@ -371,7 +375,8 @@ static void intel_mst_post_disable_dp(struct intel_encoder 
*encoder,
 
if (intel_de_wait_for_set(dev_priv, intel_dp->regs.dp_tp_status,
  DP_TP_STATUS_ACT_SENT, 1))
-   DRM_ERROR("Timed out waiting for ACT sent when disabling\n");
+   drm_err(_priv->drm,
+   "Timed out waiting for ACT sent when disabling\n");
drm_dp_check_act_status(_dp->mst_mgr);
 
drm_dp_mst_deallocate_vcpi(_dp->mst_mgr, connector->port);
@@ -405,7 +410,8 @@ static void intel_mst_post_disable_dp(struct intel_encoder 
*encoder,
intel_dig_port->base.post_disable(_dig_port->base,
  old_crtc_state, NULL);
 
-   DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links);
+   drm_dbg_kms(_priv->drm, "active links %d\n",
+   intel_dp->active_mst_links);
 }
 
 static void intel_mst_pre_pll_enable_dp(struct intel_encoder *encoder,
@@ -445,7 +451,8 @@ static void intel_mst_pre_enable_dp(struct intel_encoder 
*encoder,
INTEL_GEN(dev_priv) >= 12 && first_mst_stream &&
!intel_dp_mst_is_master_trans(pipe_config));
 
-   DRM_DEBUG_KMS("active links %d\n", intel_dp->active_mst_links);
+   drm_dbg_kms(_priv->drm, "active links %d\n",
+   intel_dp->active_mst_links);
 
if (first_mst_stream)
intel_dp_sink_dpms(intel_dp, DRM_MODE_DPMS_ON);
@@ -461,7 +468,7 @@ static void intel_mst_pre_enable_dp(struct intel_encoder 
*encoder,
   pipe_config->pbn,
   pipe_config->dp_m_n.tu);
if (!ret)
-   DRM_ERROR("failed to allocate vcpi\n");
+   drm_err(_priv->drm, "failed to allocate vcpi\n");
 
intel_dp->active_mst_links++;
temp = 

[Intel-gfx] [PATCH 02/13] drm/i915/display_power: use struct drm_device based logging

2020-03-20 Thread Jani Nikula
Convert all the DRM_* logging macros to the struct drm_device based
macros to provide device specific logging.

No functional changes.

Generated using the following semantic patch, originally written by
Wambui Karuga , with manual fixups on top:

@@
identifier fn, T;
@@

fn(...,struct drm_i915_private *T,...) {
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

@@
identifier fn, T;
@@

fn(...) {
...
struct drm_i915_private *T = ...;
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

Cc: Wambui Karuga 
Signed-off-by: Jani Nikula 
---
 .../drm/i915/display/intel_display_power.c| 22 +--
 1 file changed, 15 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c 
b/drivers/gpu/drm/i915/display/intel_display_power.c
index 246e406bb385..433e5a81dd4d 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power.c
@@ -1873,20 +1873,27 @@ __async_put_domains_state_ok(struct i915_power_domains 
*power_domains)
 static void print_power_domains(struct i915_power_domains *power_domains,
const char *prefix, u64 mask)
 {
+   struct drm_i915_private *i915 = container_of(power_domains,
+struct drm_i915_private,
+power_domains);
enum intel_display_power_domain domain;
 
-   DRM_DEBUG_DRIVER("%s (%lu):\n", prefix, hweight64(mask));
+   drm_dbg(>drm, "%s (%lu):\n", prefix, hweight64(mask));
for_each_power_domain(domain, mask)
-   DRM_DEBUG_DRIVER("%s use_count %d\n",
-intel_display_power_domain_str(domain),
-power_domains->domain_use_count[domain]);
+   drm_dbg(>drm, "%s use_count %d\n",
+   intel_display_power_domain_str(domain),
+   power_domains->domain_use_count[domain]);
 }
 
 static void
 print_async_put_domains_state(struct i915_power_domains *power_domains)
 {
-   DRM_DEBUG_DRIVER("async_put_wakeref %u\n",
-power_domains->async_put_wakeref);
+   struct drm_i915_private *i915 = container_of(power_domains,
+struct drm_i915_private,
+power_domains);
+
+   drm_dbg(>drm, "async_put_wakeref %u\n",
+   power_domains->async_put_wakeref);
 
print_power_domains(power_domains, "async_put_domains[0]",
power_domains->async_put_domains[0]);
@@ -4480,7 +4487,8 @@ void icl_dbuf_slices_update(struct drm_i915_private 
*dev_priv,
drm_WARN(_priv->drm, hweight8(req_slices) > max_slices,
 "Invalid number of dbuf slices requested\n");
 
-   DRM_DEBUG_KMS("Updating dbuf slices to 0x%x\n", req_slices);
+   drm_dbg_kms(_priv->drm, "Updating dbuf slices to 0x%x\n",
+   req_slices);
 
/*
 * Might be running this in parallel to gen9_dc_off_power_well_enable
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 03/13] drm/i915/dp_aux_backlight: use struct drm_device based logging

2020-03-20 Thread Jani Nikula
Convert all the DRM_* logging macros to the struct drm_device based
macros to provide device specific logging.

No functional changes.

Generated using the following semantic patch, originally written by
Wambui Karuga , with manual fixups on top:

@@
identifier fn, T;
@@

fn(...,struct drm_i915_private *T,...) {
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

@@
identifier fn, T;
@@

fn(...) {
...
struct drm_i915_private *T = ...;
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

Cc: Wambui Karuga 
Signed-off-by: Jani Nikula 
---
 .../drm/i915/display/intel_dp_aux_backlight.c | 84 +++
 1 file changed, 50 insertions(+), 34 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c 
b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
index 3e706bb850a8..4b916468540f 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
@@ -27,6 +27,7 @@
 
 static void set_aux_backlight_enable(struct intel_dp *intel_dp, bool enable)
 {
+   struct drm_i915_private *i915 = dp_to_i915(intel_dp);
u8 reg_val = 0;
 
/* Early return when display use other mechanism to enable backlight. */
@@ -35,8 +36,8 @@ static void set_aux_backlight_enable(struct intel_dp 
*intel_dp, bool enable)
 
if (drm_dp_dpcd_readb(_dp->aux, DP_EDP_DISPLAY_CONTROL_REGISTER,
  _val) < 0) {
-   DRM_DEBUG_KMS("Failed to read DPCD register 0x%x\n",
- DP_EDP_DISPLAY_CONTROL_REGISTER);
+   drm_dbg_kms(>drm, "Failed to read DPCD register 0x%x\n",
+   DP_EDP_DISPLAY_CONTROL_REGISTER);
return;
}
if (enable)
@@ -46,8 +47,8 @@ static void set_aux_backlight_enable(struct intel_dp 
*intel_dp, bool enable)
 
if (drm_dp_dpcd_writeb(_dp->aux, DP_EDP_DISPLAY_CONTROL_REGISTER,
   reg_val) != 1) {
-   DRM_DEBUG_KMS("Failed to %s aux backlight\n",
- enable ? "enable" : "disable");
+   drm_dbg_kms(>drm, "Failed to %s aux backlight\n",
+   enable ? "enable" : "disable");
}
 }
 
@@ -58,6 +59,7 @@ static void set_aux_backlight_enable(struct intel_dp 
*intel_dp, bool enable)
 static u32 intel_dp_aux_get_backlight(struct intel_connector *connector)
 {
struct intel_dp *intel_dp = intel_attached_dp(connector);
+   struct drm_i915_private *i915 = dp_to_i915(intel_dp);
u8 read_val[2] = { 0x0 };
u8 mode_reg;
u16 level = 0;
@@ -65,8 +67,9 @@ static u32 intel_dp_aux_get_backlight(struct intel_connector 
*connector)
if (drm_dp_dpcd_readb(_dp->aux,
  DP_EDP_BACKLIGHT_MODE_SET_REGISTER,
  _reg) != 1) {
-   DRM_DEBUG_KMS("Failed to read the DPCD register 0x%x\n",
- DP_EDP_BACKLIGHT_MODE_SET_REGISTER);
+   drm_dbg_kms(>drm,
+   "Failed to read the DPCD register 0x%x\n",
+   DP_EDP_BACKLIGHT_MODE_SET_REGISTER);
return 0;
}
 
@@ -80,8 +83,8 @@ static u32 intel_dp_aux_get_backlight(struct intel_connector 
*connector)
 
if (drm_dp_dpcd_read(_dp->aux, DP_EDP_BACKLIGHT_BRIGHTNESS_MSB,
 _val, sizeof(read_val)) < 0) {
-   DRM_DEBUG_KMS("Failed to read DPCD register 0x%x\n",
- DP_EDP_BACKLIGHT_BRIGHTNESS_MSB);
+   drm_dbg_kms(>drm, "Failed to read DPCD register 0x%x\n",
+   DP_EDP_BACKLIGHT_BRIGHTNESS_MSB);
return 0;
}
level = read_val[0];
@@ -100,6 +103,7 @@ intel_dp_aux_set_backlight(const struct drm_connector_state 
*conn_state, u32 lev
 {
struct intel_connector *connector = 
to_intel_connector(conn_state->connector);
struct intel_dp *intel_dp = intel_attached_dp(connector);
+   struct drm_i915_private *i915 = dp_to_i915(intel_dp);
u8 vals[2] = { 0x0 };
 
vals[0] = level;
@@ -111,7 +115,8 @@ intel_dp_aux_set_backlight(const struct drm_connector_state 
*conn_state, u32 lev
}
if (drm_dp_dpcd_write(_dp->aux, DP_EDP_BACKLIGHT_BRIGHTNESS_MSB,
  vals, sizeof(vals)) < 0) {
-   DRM_DEBUG_KMS("Failed to write aux backlight level\n");
+   drm_dbg_kms(>drm,
+   "Failed 

[Intel-gfx] [PATCH 00/13] drm/i915: drm device based logging changes

2020-03-20 Thread Jani Nikula
Here's a batch of logging conversion.

BR,
Jani.

Jani Nikula (13):
  drm/i915/ddi: use struct drm_device based logging
  drm/i915/display_power: use struct drm_device based logging
  drm/i915/dp_aux_backlight: use struct drm_device based logging
  drm/i915/dp_mst: use struct drm_device based logging
  drm/i915/dsi: use struct drm_device based logging
  drm/i915/hdmi: use struct drm_device based logging
  drm/i915/dsi: use struct drm_device based logging
  drm/i915/connector: use MISSING_CASE instead of logging
  drm/i915/tv: use struct drm_device based logging
  drm/i915/display: clean up intel_PLL_is_valid()
  drm/i915/display: use struct drm_device based logging
  drm/i915/psr: use struct drm_device based logging
  drm/i915/wopcm: convert to drm device based logging

 drivers/gpu/drm/i915/display/icl_dsi.c|  10 +-
 .../gpu/drm/i915/display/intel_connector.c|   2 +-
 drivers/gpu/drm/i915/display/intel_ddi.c  | 118 ++-
 drivers/gpu/drm/i915/display/intel_display.c  |  65 +++---
 .../drm/i915/display/intel_display_power.c|  22 +-
 .../drm/i915/display/intel_dp_aux_backlight.c |  84 
 drivers/gpu/drm/i915/display/intel_dp_mst.c   |  26 ++-
 drivers/gpu/drm/i915/display/intel_dsi.c  |   9 +-
 drivers/gpu/drm/i915/display/intel_dsi_vbt.c  |  11 +-
 drivers/gpu/drm/i915/display/intel_hdmi.c | 189 +++---
 drivers/gpu/drm/i915/display/intel_psr.c  |  47 +++--
 drivers/gpu/drm/i915/display/intel_tv.c   |   6 +-
 drivers/gpu/drm/i915/display/vlv_dsi.c|   3 +-
 drivers/gpu/drm/i915/intel_wopcm.c|  22 +-
 14 files changed, 367 insertions(+), 247 deletions(-)

-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH v2] drm/i915/gt: move files more files into debugfs

2020-03-20 Thread Tvrtko Ursulin



On 20/03/2020 03:49, Andi Shyti wrote:

From: Andi Shyti 

The following interfaces:

i915_wedged
i915_forcewake_user
i915_gem_interrupt
i915_sseu_status

are dependent on gt values. Put them inside gt/ and drop the
"i915_" prefix name. This would be the new structure:

   gt
   |
   +-- forcewake_user
   |
   +-- interrupt_info_show
   |
   +-- sseu_status
   |
   +-- wedge

Signed-off-by: Andi Shyti 
---
Hi,

this patch is the first of a series that aims to refactor the
debugfs structure in the i915. Some changes will affect the
debugfs framework as well.

It is based on Daniele's series and it applies only on top of
that.

Thanks Tvrtko for the review,
Andi

Changelog
=
v2:
  - dropped changes on "drop_caches", they were indeed irrelevant
  - improved interrupt info function

  drivers/gpu/drm/i915/gt/debugfs_gt.c| 464 +++-
  drivers/gpu/drm/i915/gt/debugfs_gt_pm.c |  32 ++
  drivers/gpu/drm/i915/i915_debugfs.c | 441 +-
  3 files changed, 499 insertions(+), 438 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/debugfs_gt.c 
b/drivers/gpu/drm/i915/gt/debugfs_gt.c
index fcbc57e226c3..ab731350daea 100644
--- a/drivers/gpu/drm/i915/gt/debugfs_gt.c
+++ b/drivers/gpu/drm/i915/gt/debugfs_gt.c
@@ -5,12 +5,472 @@
   */
  
  #include 

+#include 
  
  #include "debugfs_engines.h"

  #include "debugfs_gt.h"
  #include "debugfs_gt_pm.h"
-#include "uc/debugfs_uc.h"
  #include "i915_drv.h"
+#include "intel_gt_pm.h"
+#include "intel_gt_requests.h"
+#include "uc/debugfs_uc.h"
+
+static void
+intel_sseu_copy_subslices(const struct sseu_dev_info *sseu, int slice,
+ u8 *to_mask)
+{
+   int offset = slice * sseu->ss_stride;
+
+   memcpy(_mask[offset], >subslice_mask[offset], sseu->ss_stride);
+}
+
+static void cherryview_sseu_device_status(struct intel_gt *gt,
+ struct sseu_dev_info *sseu)
+{
+#define SS_MAX 2
+   const int ss_max = SS_MAX;
+   u32 sig1[SS_MAX], sig2[SS_MAX];
+   int ss;
+
+   sig1[0] = intel_uncore_read(gt->uncore, CHV_POWER_SS0_SIG1);
+   sig1[1] = intel_uncore_read(gt->uncore, CHV_POWER_SS1_SIG1);
+   sig2[0] = intel_uncore_read(gt->uncore, CHV_POWER_SS0_SIG2);
+   sig2[1] = intel_uncore_read(gt->uncore, CHV_POWER_SS1_SIG2);
+
+   for (ss = 0; ss < ss_max; ss++) {
+   unsigned int eu_cnt;
+
+   if (sig1[ss] & CHV_SS_PG_ENABLE)
+   /* skip disabled subslice */
+   continue;
+
+   sseu->slice_mask = BIT(0);
+   sseu->subslice_mask[0] |= BIT(ss);
+   eu_cnt = ((sig1[ss] & CHV_EU08_PG_ENABLE) ? 0 : 2) +
+((sig1[ss] & CHV_EU19_PG_ENABLE) ? 0 : 2) +
+((sig1[ss] & CHV_EU210_PG_ENABLE) ? 0 : 2) +
+((sig2[ss] & CHV_EU311_PG_ENABLE) ? 0 : 2);
+   sseu->eu_total += eu_cnt;
+   sseu->eu_per_subslice = max_t(unsigned int,
+ sseu->eu_per_subslice, eu_cnt);
+   }
+#undef SS_MAX
+}
+
+static void gen10_sseu_device_status(struct intel_gt *gt,
+struct sseu_dev_info *sseu)
+{
+#define SS_MAX 6
+   const struct intel_runtime_info *info = RUNTIME_INFO(gt->i915);
+   u32 s_reg[SS_MAX], eu_reg[2 * SS_MAX], eu_mask[2];
+   int s, ss;
+
+   for (s = 0; s < info->sseu.max_slices; s++) {
+   /*
+* FIXME: Valid SS Mask respects the spec and read
+* only valid bits for those registers, excluding reserved
+* although this seems wrong because it would leave many
+* subslices without ACK.
+*/
+   s_reg[s] = intel_uncore_read(gt->uncore,
+GEN10_SLICE_PGCTL_ACK(s)) &
+   GEN10_PGCTL_VALID_SS_MASK(s);
+   eu_reg[2 * s] = intel_uncore_read(gt->uncore,
+ GEN10_SS01_EU_PGCTL_ACK(s));
+   eu_reg[2 * s + 1] = intel_uncore_read(gt->uncore,
+ GEN10_SS23_EU_PGCTL_ACK(s));
+   }
+
+   eu_mask[0] = GEN9_PGCTL_SSA_EU08_ACK |
+GEN9_PGCTL_SSA_EU19_ACK |
+GEN9_PGCTL_SSA_EU210_ACK |
+GEN9_PGCTL_SSA_EU311_ACK;
+   eu_mask[1] = GEN9_PGCTL_SSB_EU08_ACK |
+GEN9_PGCTL_SSB_EU19_ACK |
+GEN9_PGCTL_SSB_EU210_ACK |
+GEN9_PGCTL_SSB_EU311_ACK;
+
+   for (s = 0; s < info->sseu.max_slices; s++) {
+   if ((s_reg[s] & GEN9_PGCTL_SLICE_ACK) == 0)
+   /* skip disabled slice */
+   continue;
+
+   sseu->slice_mask |= BIT(s);
+   intel_sseu_copy_subslices(>sseu, s, sseu->subslice_mask);
+
+   for (ss = 0; ss < 

[Intel-gfx] [PATCH 09/13] drm/i915/tv: use struct drm_device based logging

2020-03-20 Thread Jani Nikula
Convert all the DRM_* logging macros to the struct drm_device based
macros to provide device specific logging.

No functional changes.

Generated using the following semantic patch, originally written by
Wambui Karuga , with manual fixups on top:

@@
identifier fn, T;
@@

fn(...,struct drm_i915_private *T,...) {
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

@@
identifier fn, T;
@@

fn(...) {
...
struct drm_i915_private *T = ...;
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

Cc: Wambui Karuga 
Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/display/intel_tv.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_tv.c 
b/drivers/gpu/drm/i915/display/intel_tv.c
index d2e3a3a323e9..5de39cfce054 100644
--- a/drivers/gpu/drm/i915/display/intel_tv.c
+++ b/drivers/gpu/drm/i915/display/intel_tv.c
@@ -1698,13 +1698,13 @@ intel_tv_detect(struct drm_connector *connector,
struct drm_modeset_acquire_ctx *ctx,
bool force)
 {
+   struct drm_i915_private *i915 = to_i915(connector->dev);
struct intel_tv *intel_tv = 
intel_attached_tv(to_intel_connector(connector));
enum drm_connector_status status;
int type;
 
-   DRM_DEBUG_KMS("[CONNECTOR:%d:%s] force=%d\n",
- connector->base.id, connector->name,
- force);
+   drm_dbg_kms(>drm, "[CONNECTOR:%d:%s] force=%d\n",
+   connector->base.id, connector->name, force);
 
if (force) {
struct intel_load_detect_pipe tmp;
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 10/13] drm/i915/display: clean up intel_PLL_is_valid()

2020-03-20 Thread Jani Nikula
Drop useless macro hiding the return. Fix superfluous whitespace. Rename
function to all lowercase.

Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/display/intel_display.c | 40 ++--
 1 file changed, 19 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 37bd7ce88ecd..6af8d43ceb0c 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -620,45 +620,43 @@ int chv_calc_dpll_params(int refclk, struct dpll *clock)
return clock->dot / 5;
 }
 
-#define INTELPllInvalid(s)   do { /* DRM_DEBUG(s); */ return false; } while (0)
-
 /*
  * Returns whether the given set of divisors are valid for a given refclk with
  * the given connectors.
  */
-static bool intel_PLL_is_valid(struct drm_i915_private *dev_priv,
+static bool intel_pll_is_valid(struct drm_i915_private *dev_priv,
   const struct intel_limit *limit,
   const struct dpll *clock)
 {
-   if (clock->n   < limit->n.min   || limit->n.max   < clock->n)
-   INTELPllInvalid("n out of range\n");
-   if (clock->p1  < limit->p1.min  || limit->p1.max  < clock->p1)
-   INTELPllInvalid("p1 out of range\n");
-   if (clock->m2  < limit->m2.min  || limit->m2.max  < clock->m2)
-   INTELPllInvalid("m2 out of range\n");
-   if (clock->m1  < limit->m1.min  || limit->m1.max  < clock->m1)
-   INTELPllInvalid("m1 out of range\n");
+   if (clock->n < limit->n.min || limit->n.max < clock->n)
+   return false;
+   if (clock->p1 < limit->p1.min || limit->p1.max < clock->p1)
+   return false;
+   if (clock->m2 < limit->m2.min || limit->m2.max < clock->m2)
+   return false;
+   if (clock->m1 < limit->m1.min || limit->m1.max < clock->m1)
+   return false;
 
if (!IS_PINEVIEW(dev_priv) && !IS_VALLEYVIEW(dev_priv) &&
!IS_CHERRYVIEW(dev_priv) && !IS_GEN9_LP(dev_priv))
if (clock->m1 <= clock->m2)
-   INTELPllInvalid("m1 <= m2\n");
+   return false;
 
if (!IS_VALLEYVIEW(dev_priv) && !IS_CHERRYVIEW(dev_priv) &&
!IS_GEN9_LP(dev_priv)) {
if (clock->p < limit->p.min || limit->p.max < clock->p)
-   INTELPllInvalid("p out of range\n");
+   return false;
if (clock->m < limit->m.min || limit->m.max < clock->m)
-   INTELPllInvalid("m out of range\n");
+   return false;
}
 
if (clock->vco < limit->vco.min || limit->vco.max < clock->vco)
-   INTELPllInvalid("vco out of range\n");
+   return false;
/* XXX: We may need to be checking "Dot clock" depending on the 
multiplier,
 * connector, etc., rather than just a single range.
 */
if (clock->dot < limit->dot.min || limit->dot.max < clock->dot)
-   INTELPllInvalid("dot out of range\n");
+   return false;
 
return true;
 }
@@ -725,7 +723,7 @@ i9xx_find_best_dpll(const struct intel_limit *limit,
int this_err;
 
i9xx_calc_dpll_params(refclk, );
-   if (!intel_PLL_is_valid(to_i915(dev),
+   if (!intel_pll_is_valid(to_i915(dev),
limit,
))
continue;
@@ -781,7 +779,7 @@ pnv_find_best_dpll(const struct intel_limit *limit,
int this_err;
 
pnv_calc_dpll_params(refclk, );
-   if (!intel_PLL_is_valid(to_i915(dev),
+   if (!intel_pll_is_valid(to_i915(dev),
limit,
))
continue;
@@ -842,7 +840,7 @@ g4x_find_best_dpll(const struct intel_limit *limit,
int this_err;
 
i9xx_calc_dpll_params(refclk, );
-   if (!intel_PLL_is_valid(to_i915(dev),
+   if (!intel_pll_is_valid(to_i915(dev),
limit,
))
continue;
@@ -939,7 +937,7 @@ vlv_find_best_dpll(const struct intel_limit *limit,
 
vlv_calc_dpll_params(refclk, );
 
-  

[Intel-gfx] [PATCH 11/13] drm/i915/display: use struct drm_device based logging

2020-03-20 Thread Jani Nikula
Convert all the DRM_* logging macros to the struct drm_device based
macros to provide device specific logging.

No functional changes.

Generated using the following semantic patch, originally written by
Wambui Karuga , with manual fixups on top:

@@
identifier fn, T;
@@

fn(...,struct drm_i915_private *T,...) {
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

@@
identifier fn, T;
@@

fn(...) {
...
struct drm_i915_private *T = ...;
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

Cc: Wambui Karuga 
Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/display/intel_display.c | 25 +++-
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
b/drivers/gpu/drm/i915/display/intel_display.c
index 6af8d43ceb0c..fe55c7c713f1 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -2908,6 +2908,7 @@ intel_fb_plane_get_subsampling(int *hsub, int *vsub,
 static int
 intel_fb_check_ccs_xy(struct drm_framebuffer *fb, int ccs_plane, int x, int y)
 {
+   struct drm_i915_private *i915 = to_i915(fb->dev);
struct intel_framebuffer *intel_fb = to_intel_framebuffer(fb);
int main_plane;
int hsub, vsub;
@@ -2936,7 +2937,8 @@ intel_fb_check_ccs_xy(struct drm_framebuffer *fb, int 
ccs_plane, int x, int y)
 * x/y offsets must match between CCS and the main surface.
 */
if (main_x != ccs_x || main_y != ccs_y) {
-   DRM_DEBUG_KMS("Bad CCS x/y (main %d,%d ccs %d,%d) full (main 
%d,%d ccs %d,%d)\n",
+   drm_dbg_kms(>drm,
+ "Bad CCS x/y (main %d,%d ccs %d,%d) full (main 
%d,%d ccs %d,%d)\n",
  main_x, main_y,
  ccs_x, ccs_y,
  intel_fb->normal[main_plane].x,
@@ -12882,16 +12884,17 @@ compute_baseline_pipe_bpp(struct intel_crtc *crtc,
return 0;
 }
 
-static void intel_dump_crtc_timings(const struct drm_display_mode *mode)
+static void intel_dump_crtc_timings(struct drm_i915_private *i915,
+   const struct drm_display_mode *mode)
 {
-   DRM_DEBUG_KMS("crtc timings: %d %d %d %d %d %d %d %d %d, "
- "type: 0x%x flags: 0x%x\n",
- mode->crtc_clock,
- mode->crtc_hdisplay, mode->crtc_hsync_start,
- mode->crtc_hsync_end, mode->crtc_htotal,
- mode->crtc_vdisplay, mode->crtc_vsync_start,
- mode->crtc_vsync_end, mode->crtc_vtotal,
- mode->type, mode->flags);
+   drm_dbg_kms(>drm, "crtc timings: %d %d %d %d %d %d %d %d %d, "
+   "type: 0x%x flags: 0x%x\n",
+   mode->crtc_clock,
+   mode->crtc_hdisplay, mode->crtc_hsync_start,
+   mode->crtc_hsync_end, mode->crtc_htotal,
+   mode->crtc_vdisplay, mode->crtc_vsync_start,
+   mode->crtc_vsync_end, mode->crtc_vtotal,
+   mode->type, mode->flags);
 }
 
 static inline void
@@ -13075,7 +13078,7 @@ static void intel_dump_pipe_config(const struct 
intel_crtc_state *pipe_config,
drm_mode_debug_printmodeline(_config->hw.mode);
drm_dbg_kms(_priv->drm, "adjusted mode:\n");
drm_mode_debug_printmodeline(_config->hw.adjusted_mode);
-   intel_dump_crtc_timings(_config->hw.adjusted_mode);
+   intel_dump_crtc_timings(dev_priv, _config->hw.adjusted_mode);
drm_dbg_kms(_priv->drm,
"port clock: %d, pipe src size: %dx%d, pixel rate %d\n",
pipe_config->port_clock,
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH 12/13] drm/i915/psr: use struct drm_device based logging

2020-03-20 Thread Jani Nikula
Convert all the DRM_* logging macros to the struct drm_device based
macros to provide device specific logging.

No functional changes.

Generated using the following semantic patch, originally written by
Wambui Karuga , with manual fixups on top:

@@
identifier fn, T;
@@

fn(...,struct drm_i915_private *T,...) {
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

@@
identifier fn, T;
@@

fn(...) {
...
struct drm_i915_private *T = ...;
<+...
(
-DRM_INFO(
+drm_info(>drm,
...)
|
-DRM_NOTE(
+drm_notice(>drm,
...)
|
-DRM_ERROR(
+drm_err(>drm,
...)
|
-DRM_WARN(
+drm_warn(>drm,
...)
|
-DRM_DEBUG_DRIVER(
+drm_dbg(>drm,
...)
|
-DRM_DEBUG_KMS(
+drm_dbg_kms(>drm,
...)
|
-DRM_DEBUG_ATOMIC(
+drm_dbg_atomic(>drm,
...)
)
...+>
}

Cc: Wambui Karuga 
Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/display/intel_psr.c | 47 +---
 1 file changed, 26 insertions(+), 21 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_psr.c 
b/drivers/gpu/drm/i915/display/intel_psr.c
index fd9b146e3aba..a0569fdfeb16 100644
--- a/drivers/gpu/drm/i915/display/intel_psr.c
+++ b/drivers/gpu/drm/i915/display/intel_psr.c
@@ -137,41 +137,42 @@ static void psr_irq_control(struct drm_i915_private 
*dev_priv)
intel_de_write(dev_priv, imr_reg, val);
 }
 
-static void psr_event_print(u32 val, bool psr2_enabled)
+static void psr_event_print(struct drm_i915_private *i915,
+   u32 val, bool psr2_enabled)
 {
-   DRM_DEBUG_KMS("PSR exit events: 0x%x\n", val);
+   drm_dbg_kms(>drm, "PSR exit events: 0x%x\n", val);
if (val & PSR_EVENT_PSR2_WD_TIMER_EXPIRE)
-   DRM_DEBUG_KMS("\tPSR2 watchdog timer expired\n");
+   drm_dbg_kms(>drm, "\tPSR2 watchdog timer expired\n");
if ((val & PSR_EVENT_PSR2_DISABLED) && psr2_enabled)
-   DRM_DEBUG_KMS("\tPSR2 disabled\n");
+   drm_dbg_kms(>drm, "\tPSR2 disabled\n");
if (val & PSR_EVENT_SU_DIRTY_FIFO_UNDERRUN)
-   DRM_DEBUG_KMS("\tSU dirty FIFO underrun\n");
+   drm_dbg_kms(>drm, "\tSU dirty FIFO underrun\n");
if (val & PSR_EVENT_SU_CRC_FIFO_UNDERRUN)
-   DRM_DEBUG_KMS("\tSU CRC FIFO underrun\n");
+   drm_dbg_kms(>drm, "\tSU CRC FIFO underrun\n");
if (val & PSR_EVENT_GRAPHICS_RESET)
-   DRM_DEBUG_KMS("\tGraphics reset\n");
+   drm_dbg_kms(>drm, "\tGraphics reset\n");
if (val & PSR_EVENT_PCH_INTERRUPT)
-   DRM_DEBUG_KMS("\tPCH interrupt\n");
+   drm_dbg_kms(>drm, "\tPCH interrupt\n");
if (val & PSR_EVENT_MEMORY_UP)
-   DRM_DEBUG_KMS("\tMemory up\n");
+   drm_dbg_kms(>drm, "\tMemory up\n");
if (val & PSR_EVENT_FRONT_BUFFER_MODIFY)
-   DRM_DEBUG_KMS("\tFront buffer modification\n");
+   drm_dbg_kms(>drm, "\tFront buffer modification\n");
if (val & PSR_EVENT_WD_TIMER_EXPIRE)
-   DRM_DEBUG_KMS("\tPSR watchdog timer expired\n");
+   drm_dbg_kms(>drm, "\tPSR watchdog timer expired\n");
if (val & PSR_EVENT_PIPE_REGISTERS_UPDATE)
-   DRM_DEBUG_KMS("\tPIPE registers updated\n");
+   drm_dbg_kms(>drm, "\tPIPE registers updated\n");
if (val & PSR_EVENT_REGISTER_UPDATE)
-   DRM_DEBUG_KMS("\tRegister updated\n");
+   drm_dbg_kms(>drm, "\tRegister updated\n");
if (val & PSR_EVENT_HDCP_ENABLE)
-   DRM_DEBUG_KMS("\tHDCP enabled\n");
+   drm_dbg_kms(>drm, "\tHDCP enabled\n");
if (val & PSR_EVENT_KVMR_SESSION_ENABLE)
-   DRM_DEBUG_KMS("\tKVMR session enabled\n");
+   drm_dbg_kms(>drm, "\tKVMR session enabled\n");
if (val & PSR_EVENT_VBI_ENABLE)
-   DRM_DEBUG_KMS("\tVBI enabled\n");
+   drm_dbg_kms(>drm, "\tVBI enabled\n");
if (val & PSR_EVENT_LPSP_MODE_EXIT)
-   DRM_DEBUG_KMS("\tLPSP mode exited\n");
+   drm_dbg_kms(>drm, "\tLPSP mode exited\n");
if ((val & PSR_EVENT_PSR_DISABLE) && !psr2_enabled)
-   DRM_DEBUG_KMS("\tPSR disabled\n");
+   drm_dbg_kms(>drm, "\tPSR disabled\n");
 }
 
 void intel_psr_irq_handler(struct drm_i915_private *dev_priv, u32 psr_iir)
@@ -209,7 +210,7 @@ void intel_psr_irq_handler(struct drm_i915_private 
*dev_priv, u32 psr_iir)
 
intel_de_write(dev_priv, PSR_EVENT(cpu_transcoder),
   val);
-   psr_event_print(val, psr2_enabled);
+   psr_event_print(dev_priv, val, psr2_enabled);
}
}
 
@@ -249,18 +250,21 @@ static bool intel_dp_get_alpm_status(struct intel_dp 
*intel_dp)
 
 static u8 

[Intel-gfx] [PATCH 07/13] drm/i915/dsi: use struct drm_device based logging

2020-03-20 Thread Jani Nikula
Convert all the DRM_* logging macros to the struct drm_device based
macros to provide device specific logging.

No functional changes.

Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/display/icl_dsi.c   | 10 +++---
 drivers/gpu/drm/i915/display/intel_dsi_vbt.c | 11 +--
 drivers/gpu/drm/i915/display/vlv_dsi.c   |  3 ++-
 3 files changed, 14 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c 
b/drivers/gpu/drm/i915/display/icl_dsi.c
index 17cee6f80d8b..1ca1f377419c 100644
--- a/drivers/gpu/drm/i915/display/icl_dsi.c
+++ b/drivers/gpu/drm/i915/display/icl_dsi.c
@@ -186,16 +186,19 @@ static int dsi_send_pkt_hdr(struct intel_dsi_host *host,
 static int dsi_send_pkt_payld(struct intel_dsi_host *host,
  struct mipi_dsi_packet pkt)
 {
+   struct intel_dsi *intel_dsi = host->intel_dsi;
+   struct drm_i915_private *i915 = to_i915(intel_dsi->base.base.dev);
+
/* payload queue can accept *256 bytes*, check limit */
if (pkt.payload_length > MAX_PLOAD_CREDIT * 4) {
-   DRM_ERROR("payload size exceeds max queue limit\n");
+   drm_err(>drm, "payload size exceeds max queue limit\n");
return -1;
}
 
/* load data into command payload queue */
if (!add_payld_to_queue(host, pkt.payload,
pkt.payload_length)) {
-   DRM_ERROR("adding payload to queue failed\n");
+   drm_err(>drm, "adding payload to queue failed\n");
return -1;
}
 
@@ -1417,6 +1420,7 @@ static int gen11_dsi_compute_config(struct intel_encoder 
*encoder,
struct intel_crtc_state *pipe_config,
struct drm_connector_state *conn_state)
 {
+   struct drm_i915_private *i915 = to_i915(encoder->base.dev);
struct intel_dsi *intel_dsi = container_of(encoder, struct intel_dsi,
   base);
struct intel_connector *intel_connector = intel_dsi->attached_connector;
@@ -1446,7 +1450,7 @@ static int gen11_dsi_compute_config(struct intel_encoder 
*encoder,
pipe_config->clock_set = true;
 
if (gen11_dsi_dsc_compute_config(encoder, pipe_config))
-   DRM_DEBUG_KMS("Attempting to use DSC failed\n");
+   drm_dbg_kms(>drm, "Attempting to use DSC failed\n");
 
pipe_config->port_clock = afe_clk(encoder, pipe_config) / 5;
 
diff --git a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c 
b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
index 574dcfec9577..3c9c05478a03 100644
--- a/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
+++ b/drivers/gpu/drm/i915/display/intel_dsi_vbt.c
@@ -453,8 +453,7 @@ static inline void i2c_acpi_find_adapter(struct intel_dsi 
*intel_dsi,
 
 static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
 {
-   struct drm_device *drm_dev = intel_dsi->base.base.dev;
-   struct device *dev = _dev->pdev->dev;
+   struct drm_i915_private *i915 = to_i915(intel_dsi->base.base.dev);
struct i2c_adapter *adapter;
struct i2c_msg msg;
int ret;
@@ -471,7 +470,7 @@ static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, 
const u8 *data)
 
adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
if (!adapter) {
-   DRM_DEV_ERROR(dev, "Cannot find a valid i2c bus for xfer\n");
+   drm_err(>drm, "Cannot find a valid i2c bus for xfer\n");
goto err_bus;
}
 
@@ -489,9 +488,9 @@ static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, 
const u8 *data)
 
ret = i2c_transfer(adapter, , 1);
if (ret < 0)
-   DRM_DEV_ERROR(dev,
- "Failed to xfer payload of size (%u) to reg 
(%u)\n",
- payload_size, reg_offset);
+   drm_err(>drm,
+   "Failed to xfer payload of size (%u) to reg (%u)\n",
+   payload_size, reg_offset);
 
kfree(payload_data);
 err_alloc:
diff --git a/drivers/gpu/drm/i915/display/vlv_dsi.c 
b/drivers/gpu/drm/i915/display/vlv_dsi.c
index f4c362dc6e15..456909ee37a7 100644
--- a/drivers/gpu/drm/i915/display/vlv_dsi.c
+++ b/drivers/gpu/drm/i915/display/vlv_dsi.c
@@ -875,10 +875,11 @@ static void intel_dsi_disable(struct intel_encoder 
*encoder,
  const struct intel_crtc_state *old_crtc_state,
  const struct drm_connector_state *old_conn_state)
 {
+   struct drm_i915_private *i915 = to_i915(encoder->base.dev);
struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
enum port port;
 
-   DRM_DEBUG_KMS("\n");
+   drm_dbg_kms(>drm, "\n");
 
intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_BACKLIGHT_OFF);
intel_panel_disable_backlight(old_conn_state);
-- 
2.20.1

___

[Intel-gfx] [PATCH 08/13] drm/i915/connector: use MISSING_CASE instead of logging

2020-03-20 Thread Jani Nikula
Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/display/intel_connector.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_connector.c 
b/drivers/gpu/drm/i915/display/intel_connector.c
index 903e49659f56..98ec2ea86c7c 100644
--- a/drivers/gpu/drm/i915/display/intel_connector.c
+++ b/drivers/gpu/drm/i915/display/intel_connector.c
@@ -290,7 +290,7 @@ intel_attach_colorspace_property(struct drm_connector 
*connector)
return;
break;
default:
-   DRM_DEBUG_KMS("Colorspace property not supported\n");
+   MISSING_CASE(connector->connector_type);
return;
}
 
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/gt: Report context-is-closed prior to pinning

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915/gt: Report context-is-closed prior to pinning
URL   : https://patchwork.freedesktop.org/series/74916/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8163_full -> Patchwork_17034_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17034_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17034_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Possible new issues
---

  Here are the unknown changes that may have been introduced in 
Patchwork_17034_full:

### IGT changes ###

 Possible regressions 

  * igt@gem_ctx_persistence@close-replace-race:
- shard-apl:  [PASS][1] -> [DMESG-WARN][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-apl6/igt@gem_ctx_persiste...@close-replace-race.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/shard-apl8/igt@gem_ctx_persiste...@close-replace-race.html

  
 Warnings 

  * igt@gem_ctx_persistence@close-replace-race:
- shard-skl:  [INCOMPLETE][3] ([i915#1402]) -> [DMESG-WARN][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-skl9/igt@gem_ctx_persiste...@close-replace-race.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/shard-skl6/igt@gem_ctx_persiste...@close-replace-race.html

  
Known issues


  Here are the changes found in Patchwork_17034_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_persistence@close-replace-race:
- shard-iclb: [PASS][5] -> [TIMEOUT][6] ([i915#1340])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb4/igt@gem_ctx_persiste...@close-replace-race.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/shard-iclb8/igt@gem_ctx_persiste...@close-replace-race.html

  * igt@gem_exec_parallel@vcs1-fds:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#112080]) +10 similar 
issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb4/igt@gem_exec_paral...@vcs1-fds.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/shard-iclb8/igt@gem_exec_paral...@vcs1-fds.html

  * igt@gem_exec_schedule@implicit-read-write-bsd2:
- shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#109276] / [i915#677]) 
+1 similar issue
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb1/igt@gem_exec_sched...@implicit-read-write-bsd2.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/shard-iclb8/igt@gem_exec_sched...@implicit-read-write-bsd2.html

  * igt@gem_exec_schedule@out-order-bsd2:
- shard-iclb: [PASS][11] -> [SKIP][12] ([fdo#109276]) +13 similar 
issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb4/igt@gem_exec_sched...@out-order-bsd2.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/shard-iclb8/igt@gem_exec_sched...@out-order-bsd2.html

  * igt@gem_exec_schedule@pi-userfault-bsd:
- shard-iclb: [PASS][13] -> [SKIP][14] ([i915#677]) +2 similar 
issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb3/igt@gem_exec_sched...@pi-userfault-bsd.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/shard-iclb1/igt@gem_exec_sched...@pi-userfault-bsd.html

  * igt@gem_exec_schedule@preempt-queue-bsd:
- shard-iclb: [PASS][15] -> [SKIP][16] ([fdo#112146]) +4 similar 
issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-iclb3/igt@gem_exec_sched...@preempt-queue-bsd.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/shard-iclb1/igt@gem_exec_sched...@preempt-queue-bsd.html

  * igt@gem_exec_suspend@basic-s3:
- shard-kbl:  [PASS][17] -> [DMESG-WARN][18] ([i915#180]) +1 
similar issue
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-kbl7/igt@gem_exec_susp...@basic-s3.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/shard-kbl2/igt@gem_exec_susp...@basic-s3.html
- shard-skl:  [PASS][19] -> [INCOMPLETE][20] ([i915#69])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-skl8/igt@gem_exec_susp...@basic-s3.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/shard-skl4/igt@gem_exec_susp...@basic-s3.html

  * igt@gem_ppgtt@flink-and-close-vma-leak:
- shard-apl:  [PASS][21] -> [FAIL][22] ([i915#644])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8163/shard-apl8/igt@gem_pp...@flink-and-close-vma-leak.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17034/shard-apl1/igt@gem_pp...@flink-and-close-vma-leak.html

  * igt@i915_selftest@live@execlists:
 

Re: [Intel-gfx] [PATCH] drm/i915/display: Trigger Modeset at boot for audio codec init

2020-03-20 Thread Ville Syrjälä
On Fri, Mar 20, 2020 at 06:19:37AM +, Shankar, Uma wrote:
> 
> 
> > -Original Message-
> > From: Souza, Jose 
> > Sent: Friday, March 20, 2020 12:36 AM
> > To: Shankar, Uma ; intel-gfx@lists.freedesktop.org
> > Cc: Khor, Swee Aun 
> > Subject: Re: [Intel-gfx] [PATCH] drm/i915/display: Trigger Modeset at boot 
> > for audio
> > codec init
> > 
> > On Wed, 2020-03-18 at 17:00 +0530, Uma Shankar wrote:
> > > If external monitors are connected during boot up, driver uses the
> > > same mode programmed by BIOS and avoids a full modeset.
> > > This results in display audio codec left uninitialized and display
> > > audio fails to work till user triggers a modeset.
> > >
> > > This patch fixes the same by triggering a modeset at boot.
> > 
> > We had the same issue for PSR, take a look to the fix:
> > commit 33e059a2e4df454359f642f2235af39de9d3e914
> > drm/i915/psr: Force PSR probe only after full initialization
> > 
> > Maybe make this even more generic.
> 
> Yeah this looks to dealing with almost a similar need. Thanks for pointing 
> this out,
> will try to come up with a generalized solution.

How about just fixing the uapi vs. hw fail I showed instead of adding
even more hacks?

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.BAT: failure for series starting with [1/4] drm/i915/gt: Report context-is-closed prior to pinning

2020-03-20 Thread Patchwork
== Series Details ==

Series: series starting with [1/4] drm/i915/gt: Report context-is-closed prior 
to pinning
URL   : https://patchwork.freedesktop.org/series/74918/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8167 -> Patchwork_17037


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17037 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17037, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17037/index.html

Possible new issues
---

  Here are the unknown changes that may have been introduced in Patchwork_17037:

### IGT changes ###

 Possible regressions 

  * igt@i915_selftest@live@execlists:
- fi-kbl-r:   [PASS][1] -> [DMESG-FAIL][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-r/igt@i915_selftest@l...@execlists.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17037/fi-kbl-r/igt@i915_selftest@l...@execlists.html
- fi-cfl-8109u:   [PASS][3] -> [DMESG-FAIL][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-cfl-8109u/igt@i915_selftest@l...@execlists.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17037/fi-cfl-8109u/igt@i915_selftest@l...@execlists.html
- fi-apl-guc: [PASS][5] -> [DMESG-FAIL][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-apl-guc/igt@i915_selftest@l...@execlists.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17037/fi-apl-guc/igt@i915_selftest@l...@execlists.html
- fi-kbl-x1275:   [PASS][7] -> [DMESG-FAIL][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-x1275/igt@i915_selftest@l...@execlists.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17037/fi-kbl-x1275/igt@i915_selftest@l...@execlists.html
- fi-skl-6600u:   [PASS][9] -> [DMESG-FAIL][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-skl-6600u/igt@i915_selftest@l...@execlists.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17037/fi-skl-6600u/igt@i915_selftest@l...@execlists.html
- fi-bsw-kefka:   [PASS][11] -> [DMESG-FAIL][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-bsw-kefka/igt@i915_selftest@l...@execlists.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17037/fi-bsw-kefka/igt@i915_selftest@l...@execlists.html
- fi-bsw-n3050:   [PASS][13] -> [DMESG-FAIL][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-bsw-n3050/igt@i915_selftest@l...@execlists.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17037/fi-bsw-n3050/igt@i915_selftest@l...@execlists.html
- fi-skl-guc: [PASS][15] -> [DMESG-FAIL][16]
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-skl-guc/igt@i915_selftest@l...@execlists.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17037/fi-skl-guc/igt@i915_selftest@l...@execlists.html
- fi-bxt-dsi: [PASS][17] -> [DMESG-FAIL][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-bxt-dsi/igt@i915_selftest@l...@execlists.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17037/fi-bxt-dsi/igt@i915_selftest@l...@execlists.html
- fi-bdw-5557u:   [PASS][19] -> [DMESG-FAIL][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-bdw-5557u/igt@i915_selftest@l...@execlists.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17037/fi-bdw-5557u/igt@i915_selftest@l...@execlists.html
- fi-kbl-7500u:   [PASS][21] -> [DMESG-FAIL][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-7500u/igt@i915_selftest@l...@execlists.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17037/fi-kbl-7500u/igt@i915_selftest@l...@execlists.html

  
 Suppressed 

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@i915_selftest@live@execlists:
- {fi-ehl-1}: [PASS][23] -> [DMESG-FAIL][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-ehl-1/igt@i915_selftest@l...@execlists.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17037/fi-ehl-1/igt@i915_selftest@l...@execlists.html

  
Known issues


  Here are the changes found in Patchwork_17037 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@execlists:
- fi-cfl-guc: [PASS][25] -> [INCOMPLETE][26] ([i915#656])
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-cfl-guc/igt@i915_selftest@l...@execlists.html
   [26]: 

[Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/execlists: Pull tasklet interrupt-bh local to direct submission (rev2)

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915/execlists: Pull tasklet interrupt-bh local to direct 
submission (rev2)
URL   : https://patchwork.freedesktop.org/series/74914/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8167 -> Patchwork_17035


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17035 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17035, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/index.html

Possible new issues
---

  Here are the unknown changes that may have been introduced in Patchwork_17035:

### IGT changes ###

 Possible regressions 

  * igt@i915_pm_rpm@basic-rte:
- fi-bsw-kefka:   [PASS][1] -> [DMESG-WARN][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-bsw-kefka/igt@i915_pm_...@basic-rte.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-bsw-kefka/igt@i915_pm_...@basic-rte.html

  * igt@i915_selftest@live@execlists:
- fi-kbl-r:   [PASS][3] -> [DMESG-FAIL][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-r/igt@i915_selftest@l...@execlists.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-kbl-r/igt@i915_selftest@l...@execlists.html
- fi-cfl-8109u:   [PASS][5] -> [DMESG-FAIL][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-cfl-8109u/igt@i915_selftest@l...@execlists.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-cfl-8109u/igt@i915_selftest@l...@execlists.html
- fi-skl-lmem:[PASS][7] -> [DMESG-FAIL][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-skl-lmem/igt@i915_selftest@l...@execlists.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-skl-lmem/igt@i915_selftest@l...@execlists.html
- fi-kbl-x1275:   [PASS][9] -> [DMESG-FAIL][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-x1275/igt@i915_selftest@l...@execlists.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-kbl-x1275/igt@i915_selftest@l...@execlists.html
- fi-icl-u2:  [PASS][11] -> [DMESG-FAIL][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-icl-u2/igt@i915_selftest@l...@execlists.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-icl-u2/igt@i915_selftest@l...@execlists.html
- fi-skl-6600u:   [PASS][13] -> [DMESG-FAIL][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-skl-6600u/igt@i915_selftest@l...@execlists.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-skl-6600u/igt@i915_selftest@l...@execlists.html
- fi-skl-guc: [PASS][15] -> [DMESG-FAIL][16]
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-skl-guc/igt@i915_selftest@l...@execlists.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-skl-guc/igt@i915_selftest@l...@execlists.html
- fi-cfl-guc: [PASS][17] -> [DMESG-FAIL][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-cfl-guc/igt@i915_selftest@l...@execlists.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-cfl-guc/igt@i915_selftest@l...@execlists.html
- fi-cml-u2:  [PASS][19] -> [DMESG-FAIL][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-cml-u2/igt@i915_selftest@l...@execlists.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-cml-u2/igt@i915_selftest@l...@execlists.html
- fi-kbl-guc: [PASS][21] -> [DMESG-FAIL][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-guc/igt@i915_selftest@l...@execlists.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-kbl-guc/igt@i915_selftest@l...@execlists.html
- fi-bdw-5557u:   [PASS][23] -> [DMESG-FAIL][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-bdw-5557u/igt@i915_selftest@l...@execlists.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-bdw-5557u/igt@i915_selftest@l...@execlists.html
- fi-kbl-7500u:   [PASS][25] -> [DMESG-FAIL][26]
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-7500u/igt@i915_selftest@l...@execlists.html
   [26]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-kbl-7500u/igt@i915_selftest@l...@execlists.html
- fi-kbl-8809g:   [PASS][27] -> [DMESG-FAIL][28]
   [27]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-8809g/igt@i915_selftest@l...@execlists.html
   [28]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-kbl-8809g/igt@i915_selftest@l...@execlists.html
- 

Re: ✗ Fi.CI.BAT: failure for drm/i915/execlists: Pull tasklet interrupt-bh local to direct submission (rev2)

2020-03-20 Thread Chris Wilson
Quoting Patchwork (2020-03-20 17:02:49)
>   * igt@i915_selftest@live@execlists:
> - fi-kbl-r:   [PASS][3] -> [DMESG-FAIL][4]
>[3]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-r/igt@i915_selftest@l...@execlists.html
>[4]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17035/fi-kbl-r/igt@i915_selftest@l...@execlists.html

No worries, the test was expecting lite-restore direct submission which we
suppressed instead.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: Immediately execute the fenced work (rev2)

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915: Immediately execute the fenced work (rev2)
URL   : https://patchwork.freedesktop.org/series/74917/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8167 -> Patchwork_17036


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/index.html

Known issues


  Here are the changes found in Patchwork_17036 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@execlists:
- fi-apl-guc: [PASS][1] -> [INCOMPLETE][2] ([fdo#103927] / 
[i915#1430] / [i915#656])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-apl-guc/igt@i915_selftest@l...@execlists.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/fi-apl-guc/igt@i915_selftest@l...@execlists.html

  
 Possible fixes 

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-tgl-y:   [FAIL][3] ([CI#94]) -> [PASS][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-tgl-y/igt@gem_exec_susp...@basic-s4-devices.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/fi-tgl-y/igt@gem_exec_susp...@basic-s4-devices.html

  * igt@kms_chamelium@hdmi-crc-fast:
- fi-icl-u2:  [FAIL][5] ([fdo#109635] / [i915#217]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-icl-u2/igt@kms_chamel...@hdmi-crc-fast.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/fi-icl-u2/igt@kms_chamel...@hdmi-crc-fast.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][7] ([fdo#111407]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
  [CI#94]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/94
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#109635]: https://bugs.freedesktop.org/show_bug.cgi?id=109635
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [i915#1430]: https://gitlab.freedesktop.org/drm/intel/issues/1430
  [i915#217]: https://gitlab.freedesktop.org/drm/intel/issues/217
  [i915#656]: https://gitlab.freedesktop.org/drm/intel/issues/656


Participating hosts (49 -> 42)
--

  Missing(7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_8167 -> Patchwork_17036

  CI-20190529: 20190529
  CI_DRM_8167: b51a7e7f4f72cf780661a1e4b479e2b27ddbafc8 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5526: f49ebeee9f54d6f23c60a842f75f65561d452ab0 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17036: 4568cf81d30bf68ad8124e6b8d8b6322e8fc9113 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

4568cf81d30b drm/i915: Immediately execute the fenced work

== Logs ==

For more details see: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/index.html
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/display: Trigger Modeset at boot for audio codec init

2020-03-20 Thread Khor, Swee Aun
Hi Ville,
You means this change right? Sure. Will try your suggestion as well. 
By the way, what is different between hw.mode and uapi.mode and how we know 
which to be used? It used to only base.mode before hw/uapi split patches. 

> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -14671,8 +14671,8 @@ static int intel_atomic_check(struct drm_device *dev,
> /* Catch I915_MODE_FLAG_INHERITED */
> for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state,
> new_crtc_state, i) {
> -   if (new_crtc_state->hw.mode.private_flags !=
> -   old_crtc_state->hw.mode.private_flags)
> +   if (new_crtc_state->uapi.mode.private_flags !=
> +   old_crtc_state->uapi.mode.private_flags)
> new_crtc_state->uapi.mode_changed = true;
> }
> 
> ?

Regards,
SweeAun

-Original Message-
From: Ville Syrjälä  
Sent: Friday, March 20, 2020 11:24 PM
To: Shankar, Uma 
Cc: Souza, Jose ; intel-gfx@lists.freedesktop.org; Khor, 
Swee Aun 
Subject: Re: [Intel-gfx] [PATCH] drm/i915/display: Trigger Modeset at boot for 
audio codec init

On Fri, Mar 20, 2020 at 06:19:37AM +, Shankar, Uma wrote:
> 
> 
> > -Original Message-
> > From: Souza, Jose 
> > Sent: Friday, March 20, 2020 12:36 AM
> > To: Shankar, Uma ; 
> > intel-gfx@lists.freedesktop.org
> > Cc: Khor, Swee Aun 
> > Subject: Re: [Intel-gfx] [PATCH] drm/i915/display: Trigger Modeset 
> > at boot for audio codec init
> > 
> > On Wed, 2020-03-18 at 17:00 +0530, Uma Shankar wrote:
> > > If external monitors are connected during boot up, driver uses the 
> > > same mode programmed by BIOS and avoids a full modeset.
> > > This results in display audio codec left uninitialized and display 
> > > audio fails to work till user triggers a modeset.
> > >
> > > This patch fixes the same by triggering a modeset at boot.
> > 
> > We had the same issue for PSR, take a look to the fix:
> > commit 33e059a2e4df454359f642f2235af39de9d3e914
> > drm/i915/psr: Force PSR probe only after full initialization
> > 
> > Maybe make this even more generic.
> 
> Yeah this looks to dealing with almost a similar need. Thanks for 
> pointing this out, will try to come up with a generalized solution.

How about just fixing the uapi vs. hw fail I showed instead of adding even more 
hacks?

--
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH] drm/i915/execlists: Pull tasklet interrupt-bh local to direct submission

2020-03-20 Thread Chris Wilson
We dropped calling process_csb prior to handling direct submission in
order to avoid the nesting of spinlocks and lift process_csb() and the
majority of the tasklet out of irq-off. However, we do want to avoid
ksoftirqd latency in the fast path, so try and pull the interrupt-bh
local to direct submission if we can acquire the tasklet's lock.

v2: Tweak the balance to avoid over submitting lite-restores

Signed-off-by: Chris Wilson 
Cc: Francisco Jerez 
Cc: Tvrtko Ursulin 
---
 drivers/gpu/drm/i915/gt/intel_lrc.c| 44 --
 drivers/gpu/drm/i915/gt/selftest_lrc.c |  2 +-
 2 files changed, 36 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index f09dd87324b9..dceb65a0088f 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -2884,17 +2884,17 @@ static void queue_request(struct intel_engine_cs 
*engine,
set_bit(I915_FENCE_FLAG_PQUEUE, >fence.flags);
 }
 
-static void __submit_queue_imm(struct intel_engine_cs *engine)
+static bool pending_csb(const struct intel_engine_execlists *el)
 {
-   struct intel_engine_execlists * const execlists = >execlists;
+   return READ_ONCE(*el->csb_write) != READ_ONCE(el->csb_head);
+}
 
-   if (reset_in_progress(execlists))
-   return; /* defer until we restart the engine following reset */
+static bool skip_lite_restore(struct intel_engine_execlists *el,
+ const struct i915_request *rq)
+{
+   struct i915_request *inflight = execlists_active(el);
 
-   if (execlists->tasklet.func == execlists_submission_tasklet)
-   __execlists_submission_tasklet(engine);
-   else
-   tasklet_hi_schedule(>tasklet);
+   return inflight && inflight->context == rq->context;
 }
 
 static void submit_queue(struct intel_engine_cs *engine,
@@ -2905,8 +2905,34 @@ static void submit_queue(struct intel_engine_cs *engine,
if (rq_prio(rq) <= execlists->queue_priority_hint)
return;
 
+   if (reset_in_progress(execlists))
+   return; /* defer until we restart the engine following reset */
+
+   /*
+* Suppress immediate lite-restores, leave that to the tasklet.
+*
+* However, we leave the queue_priority_hint unset so that if we do
+* submit a second context, we push that into ELSP[1] immediately.
+*/
+   if (skip_lite_restore(execlists, rq))
+   return;
+
+   /* Hopefully we clear execlists->pending[] to let us through */
+   if (execlists->pending[0] && tasklet_trylock(>tasklet)) {
+   process_csb(engine);
+   tasklet_unlock(>tasklet);
+   if (skip_lite_restore(execlists, rq))
+   return;
+   }
+
execlists->queue_priority_hint = rq_prio(rq);
-   __submit_queue_imm(engine);
+   __execlists_submission_tasklet(engine);
+
+   /* Try and pull an interrupt-bh queued on another CPU to here */
+   if (pending_csb(execlists) && tasklet_trylock(>tasklet)) {
+   process_csb(engine);
+   tasklet_unlock(>tasklet);
+   }
 }
 
 static bool ancestor_on_hold(const struct intel_engine_cs *engine,
diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c 
b/drivers/gpu/drm/i915/gt/selftest_lrc.c
index 6f06ba750a0a..c5c4b07a7d5f 100644
--- a/drivers/gpu/drm/i915/gt/selftest_lrc.c
+++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c
@@ -1028,7 +1028,7 @@ static int live_timeslice_rewind(void *arg)
if (IS_ERR(rq[1]))
goto err;
 
-   err = wait_for_submit(engine, rq[1], HZ / 2);
+   err = wait_for_submit(engine, rq[0], HZ / 2);
if (err) {
pr_err("%s: failed to submit first context\n",
   engine->name);
-- 
2.20.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: Get rid of silly void* from MST code (rev2)

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915: Get rid of silly void* from MST code (rev2)
URL   : https://patchwork.freedesktop.org/series/74539/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8167 -> Patchwork_17039


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/index.html

Known issues


  Here are the changes found in Patchwork_17039 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_pm_rpm@module-reload:
- fi-icl-dsi: [PASS][1] -> [INCOMPLETE][2] ([i915#189])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-icl-dsi/igt@i915_pm_...@module-reload.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/fi-icl-dsi/igt@i915_pm_...@module-reload.html

  * igt@i915_selftest@live@gem_contexts:
- fi-cml-s:   [PASS][3] -> [DMESG-FAIL][4] ([i915#877])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-cml-s/igt@i915_selftest@live@gem_contexts.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/fi-cml-s/igt@i915_selftest@live@gem_contexts.html

  
 Possible fixes 

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-tgl-y:   [FAIL][5] ([CI#94]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-tgl-y/igt@gem_exec_susp...@basic-s4-devices.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/fi-tgl-y/igt@gem_exec_susp...@basic-s4-devices.html

  * igt@kms_chamelium@hdmi-crc-fast:
- fi-icl-u2:  [FAIL][7] ([fdo#109635] / [i915#217]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-icl-u2/igt@kms_chamel...@hdmi-crc-fast.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/fi-icl-u2/igt@kms_chamel...@hdmi-crc-fast.html

  
 Warnings 

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][9] ([fdo#111407]) -> [FAIL][10] ([i915#323])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
  [CI#94]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/94
  [fdo#109635]: https://bugs.freedesktop.org/show_bug.cgi?id=109635
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [i915#189]: https://gitlab.freedesktop.org/drm/intel/issues/189
  [i915#217]: https://gitlab.freedesktop.org/drm/intel/issues/217
  [i915#323]: https://gitlab.freedesktop.org/drm/intel/issues/323
  [i915#877]: https://gitlab.freedesktop.org/drm/intel/issues/877


Participating hosts (49 -> 39)
--

  Additional (1): fi-skl-6770hq 
  Missing(11): fi-ilk-m540 fi-hsw-4200u fi-byt-j1900 fi-byt-squawks 
fi-bsw-cyan fi-ctg-p8600 fi-gdg-551 fi-bdw-samus fi-byt-clapper fi-skl-6600u 
fi-snb-2600 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_8167 -> Patchwork_17039

  CI-20190529: 20190529
  CI_DRM_8167: b51a7e7f4f72cf780661a1e4b479e2b27ddbafc8 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5526: f49ebeee9f54d6f23c60a842f75f65561d452ab0 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17039: d91996e50770660c5d42c30a8d6c8b746717cb75 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

d91996e50770 drm/i915: Get rid of silly void* from MST code

== Logs ==

For more details see: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/index.html
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 1/3] drm/i915: Try to use fast+narrow link on eDP again and fall back to the old max strategy on failure

2020-03-20 Thread Ville Syrjälä
On Thu, Mar 19, 2020 at 03:20:50PM -0700, Manasi Navare wrote:
> On Thu, Mar 19, 2020 at 06:38:42PM +0200, Ville Syrjala wrote:
> > From: Ville Syrjälä 
> > 
> > Some new eDP panels don't like to operate at the max parameters, and
> > instead we need to go for an optimal confiugration. That unfortunately
> > doesn't work with older eDP panels which are generally only guaranteed
> > to work at the max parameters.
> > 
> > To solve these two conflicting requirements let's start with the optimal
> > setup, and if that fails we start again with the max parameters. The
> > downside is probably an extra modeset when we switch strategies but
> > I don't see a good way to avoid that.
> > 
> > For a bit of history we first tried to go for the fast+narrow in
> > commit 7769db588384 ("drm/i915/dp: optimize eDP 1.4+ link config
> > fast and narrow"). but that had to be reverted due to regression
> > on older panels in commit f11cb1c19ad0 ("drm/i915/dp: revert back
> > to max link rate and lane count on eDP"). So now we try to get
> > the best of both worlds by using both strategies.
> > 
> > v2: Deal with output_bpp and uapi vs. hw state split
> > Reword some comments
> > 
> > Cc: Jani Nikula 
> > Cc: Rodrigo Vivi 
> > Cc: Manasi Navare 
> > Cc: Albert Astals Cid  # v5.0 backport
> > Cc: Emanuele Panigati  # v5.0 backport
> > Cc: Matteo Iervasi  # v5.0 backport
> > Cc: Timo Aaltonen 
> > References: https://bugs.freedesktop.org/show_bug.cgi?id=105267
> > References: https://bugs.freedesktop.org/show_bug.cgi?id=109959
> > References: https://gitlab.freedesktop.org/drm/intel/issues/272
> > Signed-off-by: Ville Syrjälä 
> 
> This approach looks good to me to fallback to max parameters if
> it fails the first time.
> 
> > ---
> >  .../drm/i915/display/intel_display_types.h|  1 +
> >  drivers/gpu/drm/i915/display/intel_dp.c   | 74 ---
> >  2 files changed, 66 insertions(+), 9 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
> > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > index 5e00e611f077..ffde0d4af23c 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > @@ -1258,6 +1258,7 @@ struct intel_dp {
> > bool link_trained;
> > bool has_audio;
> > bool reset_link_params;
> > +   bool use_max_params;
> > u8 dpcd[DP_RECEIVER_CAP_SIZE];
> > u8 psr_dpcd[EDP_PSR_RECEIVER_CAP_SIZE];
> > u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
> > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
> > b/drivers/gpu/drm/i915/display/intel_dp.c
> > index ef2e06e292d5..85abcce492ca 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dp.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> > @@ -465,6 +465,12 @@ int intel_dp_get_link_train_fallback_values(struct 
> > intel_dp *intel_dp,
> >  {
> > int index;
> >  
> > +   if (intel_dp_is_edp(intel_dp) && !intel_dp->use_max_params) {
> > +   DRM_DEBUG_KMS("Retrying Link training for eDP with max 
> > parameters\n");
> > +   intel_dp->use_max_params = true;
> > +   return 0;
> > +   }
> 
> We need to remove the current check for 
> intel_dp_can_link_train_fallback_for_edp() right?

No. Why do you think it needs to be removed?

-- 
Ville Syrjälä
Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 5/6] drm/i915/tc/icl: Implement the TC cold exit sequence

2020-03-20 Thread Souza, Jose
On Fri, 2020-03-20 at 16:11 +0300, Dan Carpenter wrote:
> Hi "José,
> 
> Thank you for the patch! Perhaps something to improve:
> 
> url:
> https://github.com/0day-ci/linux/commits/Jos-Roberto-de-Souza/drm-i915-tc-tgl-Implement-TCCOLD-sequences/20200319-080253
> base:   git://anongit.freedesktop.org/drm-intel for-linux-next
> 
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot 
> Reported-by: Dan Carpenter 
> 
> smatch warnings:
> drivers/gpu/drm/i915/display/intel_tc.c:554 icl_tc_cold_request()
> error: uninitialized symbol 'ret'.
> 
> # 
> https://github.com/0day-ci/linux/commit/29f27e6df6ad82b09a3c9ddaf5f51b2fc1647178
> git remote add linux-review https://github.com/0day-ci/linux
> git remote update linux-review
> git checkout 29f27e6df6ad82b09a3c9ddaf5f51b2fc1647178
> vim +/ret +554 drivers/gpu/drm/i915/display/intel_tc.c
> 
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  528  static inline
> int icl_tc_cold_request(struct intel_digital_port *dig_port,
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  529  
> bool block)
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  530  {
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  531  struct
> drm_i915_private *i915 = to_i915(dig_port->base.base.dev);
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  532  enum
> intel_display_power_domain aux_domain;
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  533  int
> ret;
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  534  
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  535  aux_dom
> ain = intel_aux_ch_to_power_domain(dig_port->aux_ch);
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  536  
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  537  if
> (block) {
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  538  
> dig_port->tc_cold_wakeref =
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  539  
>   intel_display_power_get_without_ack(i915, aux_domain);
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  540  
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  541  
> do {
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  542  
>   ret = sandybridge_pcode_write_timeout(i915,
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  543  
> ICL_PCODE_EXIT_TCCOLD,
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  544  
> 0, 250, 1);
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  545  
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  546  
> } while (ret == -EAGAIN);
> 
> ret is only initialized on this path

Thanks

> 
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  547  } else
> if (dig_port->tc_mode == TC_PORT_LEGACY) {
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  548  
> drm_WARN_ON(>drm, !dig_port->tc_lock_wakeref);
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  549  
> intel_display_power_put(i915, aux_domain,
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  550  
>   dig_port->tc_cold_wakeref);
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  551  
> dig_port->tc_cold_wakeref = 0;
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  552  }
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  553  
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18 @554  return
> ret;
> 29f27e6df6ad82 José Roberto de Souza 2020-03-18  555  }
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/4] drm/i915/gt: Report context-is-closed prior to pinning (rev2)

2020-03-20 Thread Patchwork
== Series Details ==

Series: series starting with [1/4] drm/i915/gt: Report context-is-closed prior 
to pinning (rev2)
URL   : https://patchwork.freedesktop.org/series/74918/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8167 -> Patchwork_17041


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/index.html

Known issues


  Here are the changes found in Patchwork_17041 that come from known issues:

### IGT changes ###

 Possible fixes 

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-tgl-y:   [FAIL][1] ([CI#94]) -> [PASS][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-tgl-y/igt@gem_exec_susp...@basic-s4-devices.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/fi-tgl-y/igt@gem_exec_susp...@basic-s4-devices.html

  * igt@kms_chamelium@hdmi-crc-fast:
- fi-icl-u2:  [FAIL][3] ([fdo#109635] / [i915#217]) -> [PASS][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-icl-u2/igt@kms_chamel...@hdmi-crc-fast.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/fi-icl-u2/igt@kms_chamel...@hdmi-crc-fast.html

  
  [CI#94]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/94
  [fdo#109635]: https://bugs.freedesktop.org/show_bug.cgi?id=109635
  [i915#217]: https://gitlab.freedesktop.org/drm/intel/issues/217


Participating hosts (49 -> 38)
--

  Additional (1): fi-skl-6770hq 
  Missing(12): fi-ilk-m540 fi-bsw-n3050 fi-hsw-4200u fi-hsw-peppy 
fi-byt-squawks fi-bsw-cyan fi-kbl-7500u fi-ctg-p8600 fi-ivb-3770 fi-skl-lmem 
fi-byt-clapper fi-bdw-samus 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_8167 -> Patchwork_17041

  CI-20190529: 20190529
  CI_DRM_8167: b51a7e7f4f72cf780661a1e4b479e2b27ddbafc8 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5526: f49ebeee9f54d6f23c60a842f75f65561d452ab0 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17041: e1571c1ed506ad288f8064f5bc432aaceb66ad95 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

e1571c1ed506 drm/i915/gem: Avoid gem_context->mutex for simple vma lookup
1492bcdd449a drm/i915: Immediately execute the fenced work
bee757d6cbda drm/i915/execlists: Pull tasklet interrupt-bh local to direct 
submission

== Logs ==

For more details see: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/index.html
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/display/fbc: Make fences a nice-to-have for GEN9+

2020-03-20 Thread Souza, Jose
On Fri, 2020-03-20 at 00:20 +, Patchwork wrote:
> == Series Details ==
> 
> Series: drm/i915/display/fbc: Make fences a nice-to-have for GEN9+
> URL   : https://patchwork.freedesktop.org/series/74890/
> State : failure
> 
> == Summary ==
> 
> CI Bug Log - changes from CI_DRM_8160_full -> Patchwork_17029_full
> 
> 
> Summary
> ---
> 
>   **FAILURE**
> 
>   Serious unknown changes coming with Patchwork_17029_full absolutely
> need to be
>   verified manually.
>   
>   If you think the reported changes have nothing to do with the
> changes
>   introduced in Patchwork_17029_full, please notify your bug team to
> allow them
>   to document this new failure mode, which will reduce false
> positives in CI.
> 
>   
> 
> Possible new issues
> ---
> 
>   Here are the unknown changes that may have been introduced in
> Patchwork_17029_full:
> 
> ### IGT changes ###
> 
>  Possible regressions 
> 
>   * igt@kms_fbcon_fbt@fbc:
> - shard-glk:  [PASS][1] -> [FAIL][2] +3 similar issues
>[1]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-glk9/igt@kms_fbcon_...@fbc.html
>[2]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-glk4/igt@kms_fbcon_...@fbc.html

Will update this test to handle the FBC changes.

> 
>   * igt@kms_frontbuffer_tracking@fbc-tilingchange:
> - shard-iclb: [PASS][3] -> [FAIL][4] +3 similar issues
>[3]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-iclb2/igt@kms_frontbuffer_track...@fbc-tilingchange.html
>[4]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-iclb3/igt@kms_frontbuffer_track...@fbc-tilingchange.html
> - shard-tglb: [PASS][5] -> [FAIL][6] +3 similar issues
>[5]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-tglb5/igt@kms_frontbuffer_track...@fbc-tilingchange.html
>[6]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-tglb3/igt@kms_frontbuffer_track...@fbc-tilingchange.html
> 
>   * igt@kms_hdr@static-toggle-dpms:
> - shard-tglb: NOTRUN -> [SKIP][7]
>[7]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-tglb6/igt@kms_...@static-toggle-dpms.html

This two are handled by: 
https://patchwork.freedesktop.org/series/74606/

> 
>   
> Known issues
> 
> 
>   Here are the changes found in Patchwork_17029_full that come from
> known issues:
> 
> ### IGT changes ###
> 
>  Issues hit 
> 
>   * igt@gem_ctx_isolation@bcs0-s3:
> - shard-kbl:  [PASS][8] -> [DMESG-WARN][9] ([i915#180])
> +5 similar issues
>[8]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-kbl6/igt@gem_ctx_isolat...@bcs0-s3.html
>[9]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-kbl7/igt@gem_ctx_isolat...@bcs0-s3.html
> 
>   * igt@gem_ctx_persistence@close-replace-race:
> - shard-tglb: [PASS][10] -> [INCOMPLETE][11]
> ([i915#1402])
>[10]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-tglb5/igt@gem_ctx_persiste...@close-replace-race.html
>[11]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-tglb7/igt@gem_ctx_persiste...@close-replace-race.html
> - shard-kbl:  [PASS][12] -> [INCOMPLETE][13]
> ([i915#1402])
>[12]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-kbl7/igt@gem_ctx_persiste...@close-replace-race.html
>[13]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-kbl6/igt@gem_ctx_persiste...@close-replace-race.html
> - shard-skl:  [PASS][14] -> [INCOMPLETE][15]
> ([i915#1402])
>[14]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-skl5/igt@gem_ctx_persiste...@close-replace-race.html
>[15]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-skl5/igt@gem_ctx_persiste...@close-replace-race.html
> 
>   * igt@gem_exec_parallel@vcs1-fds:
> - shard-iclb: [PASS][16] -> [SKIP][17] ([fdo#112080]) +14
> similar issues
>[16]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-iclb1/igt@gem_exec_paral...@vcs1-fds.html
>[17]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-iclb5/igt@gem_exec_paral...@vcs1-fds.html
> 
>   * igt@gem_exec_schedule@implicit-read-write-bsd2:
> - shard-iclb: [PASS][18] -> [SKIP][19] ([fdo#109276] /
> [i915#677]) +1 similar issue
>[18]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-iclb1/igt@gem_exec_sched...@implicit-read-write-bsd2.html
>[19]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-iclb3/igt@gem_exec_sched...@implicit-read-write-bsd2.html
> 
>   * igt@gem_exec_schedule@out-order-bsd2:
> - shard-iclb: [PASS][20] -> [SKIP][21] ([fdo#109276]) +8
> similar issues
>[20]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-iclb1/igt@gem_exec_sched...@out-order-bsd2.html
>[21]: 
> 

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: Hotplug cleanups (rev6)

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915: Hotplug cleanups (rev6)
URL   : https://patchwork.freedesktop.org/series/72348/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8167 -> Patchwork_17038


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/index.html

Known issues


  Here are the changes found in Patchwork_17038 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@execlists:
- fi-glk-dsi: [PASS][1] -> [INCOMPLETE][2] ([i915#58] / [i915#656] 
/ [k.org#198133])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-glk-dsi/igt@i915_selftest@l...@execlists.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/fi-glk-dsi/igt@i915_selftest@l...@execlists.html

  
 Possible fixes 

  * igt@kms_chamelium@hdmi-crc-fast:
- fi-icl-u2:  [FAIL][3] ([fdo#109635] / [i915#217]) -> [PASS][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-icl-u2/igt@kms_chamel...@hdmi-crc-fast.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/fi-icl-u2/igt@kms_chamel...@hdmi-crc-fast.html

  
 Warnings 

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][5] ([fdo#111407]) -> [FAIL][6] ([i915#323])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  * igt@runner@aborted:
- fi-kbl-8809g:   [FAIL][7] ([i915#1209]) -> [FAIL][8] ([i915#1485] / 
[i915#192] / [i915#193] / [i915#194])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-8809g/igt@run...@aborted.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/fi-kbl-8809g/igt@run...@aborted.html

  
  [fdo#109635]: https://bugs.freedesktop.org/show_bug.cgi?id=109635
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [i915#1209]: https://gitlab.freedesktop.org/drm/intel/issues/1209
  [i915#1485]: https://gitlab.freedesktop.org/drm/intel/issues/1485
  [i915#192]: https://gitlab.freedesktop.org/drm/intel/issues/192
  [i915#193]: https://gitlab.freedesktop.org/drm/intel/issues/193
  [i915#194]: https://gitlab.freedesktop.org/drm/intel/issues/194
  [i915#217]: https://gitlab.freedesktop.org/drm/intel/issues/217
  [i915#323]: https://gitlab.freedesktop.org/drm/intel/issues/323
  [i915#58]: https://gitlab.freedesktop.org/drm/intel/issues/58
  [i915#656]: https://gitlab.freedesktop.org/drm/intel/issues/656
  [k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133


Participating hosts (49 -> 37)
--

  Additional (2): fi-skl-6770hq fi-kbl-7560u 
  Missing(14): fi-cml-u2 fi-ilk-m540 fi-bdw-5557u fi-cml-s fi-hsw-4200u 
fi-byt-squawks fi-bsw-cyan fi-bwr-2160 fi-ctg-p8600 fi-cfl-8109u fi-bsw-kefka 
fi-blb-e6850 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_8167 -> Patchwork_17038

  CI-20190529: 20190529
  CI_DRM_8167: b51a7e7f4f72cf780661a1e4b479e2b27ddbafc8 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5526: f49ebeee9f54d6f23c60a842f75f65561d452ab0 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17038: 5ea9c1e2721b47853a773f52d426920ac5c4c633 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

5ea9c1e2721b drm/i915: Use stashed away hpd isr bits in 
intel_digital_port_connected()
9bdedc5134f0 drm/i915: Stash hpd status bits under dev_priv
7a2933ed6c37 drm/i915: Turn intel_digital_port_connected() in a vfunc

== Logs ==

For more details see: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/index.html
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: drm device based logging changes

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915: drm device based logging changes
URL   : https://patchwork.freedesktop.org/series/74927/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
ddb4a444dd75 drm/i915/ddi: use struct drm_device based logging
07dd9ea10f43 drm/i915/display_power: use struct drm_device based logging
df9678067397 drm/i915/dp_aux_backlight: use struct drm_device based logging
70006dcff1cf drm/i915/dp_mst: use struct drm_device based logging
96a362dca265 drm/i915/dsi: use struct drm_device based logging
6d311eabae6b drm/i915/hdmi: use struct drm_device based logging
2c83198c9de1 drm/i915/dsi: use struct drm_device based logging
0eea474ebae3 drm/i915/connector: use MISSING_CASE instead of logging
-:7: WARNING:COMMIT_MESSAGE: Missing commit description - Add an appropriate one

total: 0 errors, 1 warnings, 0 checks, 8 lines checked
b1419778ed0f drm/i915/tv: use struct drm_device based logging
87560bf44a17 drm/i915/display: clean up intel_PLL_is_valid()
c057e5d545d4 drm/i915/display: use struct drm_device based logging
-:113: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#113: FILE: drivers/gpu/drm/i915/display/intel_display.c:2941:
+   drm_dbg_kms(>drm,
+ "Bad CCS x/y (main %d,%d ccs %d,%d) full (main 
%d,%d ccs %d,%d)\n",

total: 0 errors, 0 warnings, 1 checks, 50 lines checked
f022c9422f91 drm/i915/psr: use struct drm_device based logging
5196c0d8ee07 drm/i915/wopcm: convert to drm device based logging

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: drm device based logging changes

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915: drm device based logging changes
URL   : https://patchwork.freedesktop.org/series/74927/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8167 -> Patchwork_17040


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/index.html

Known issues


  Here are the changes found in Patchwork_17040 that come from known issues:

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@execlists:
- fi-cfl-guc: [PASS][1] -> [INCOMPLETE][2] ([i915#656])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-cfl-guc/igt@i915_selftest@l...@execlists.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/fi-cfl-guc/igt@i915_selftest@l...@execlists.html

  * igt@i915_selftest@live@gem_contexts:
- fi-cml-s:   [PASS][3] -> [DMESG-FAIL][4] ([i915#877])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-cml-s/igt@i915_selftest@live@gem_contexts.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/fi-cml-s/igt@i915_selftest@live@gem_contexts.html

  
 Possible fixes 

  * igt@kms_chamelium@hdmi-crc-fast:
- fi-icl-u2:  [FAIL][5] ([fdo#109635] / [i915#217]) -> [PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-icl-u2/igt@kms_chamel...@hdmi-crc-fast.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/fi-icl-u2/igt@kms_chamel...@hdmi-crc-fast.html

  * igt@kms_chamelium@hdmi-hpd-fast:
- fi-kbl-7500u:   [FAIL][7] ([fdo#111407]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/fi-kbl-7500u/igt@kms_chamel...@hdmi-hpd-fast.html

  
 Warnings 

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-tgl-y:   [FAIL][9] ([CI#94]) -> [INCOMPLETE][10] ([CI#94] / 
[i915#460])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/fi-tgl-y/igt@gem_exec_susp...@basic-s4-devices.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/fi-tgl-y/igt@gem_exec_susp...@basic-s4-devices.html

  
  [CI#94]: https://gitlab.freedesktop.org/gfx-ci/i915-infra/issues/94
  [fdo#109635]: https://bugs.freedesktop.org/show_bug.cgi?id=109635
  [fdo#111407]: https://bugs.freedesktop.org/show_bug.cgi?id=111407
  [i915#217]: https://gitlab.freedesktop.org/drm/intel/issues/217
  [i915#460]: https://gitlab.freedesktop.org/drm/intel/issues/460
  [i915#656]: https://gitlab.freedesktop.org/drm/intel/issues/656
  [i915#877]: https://gitlab.freedesktop.org/drm/intel/issues/877


Participating hosts (49 -> 42)
--

  Additional (2): fi-skl-6770hq fi-kbl-7560u 
  Missing(9): fi-ilk-m540 fi-hsw-4200u fi-byt-j1900 fi-byt-squawks 
fi-bsw-cyan fi-ctg-p8600 fi-hsw-4770 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_8167 -> Patchwork_17040

  CI-20190529: 20190529
  CI_DRM_8167: b51a7e7f4f72cf780661a1e4b479e2b27ddbafc8 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5526: f49ebeee9f54d6f23c60a842f75f65561d452ab0 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17040: 5196c0d8ee072e997c79eb7a258c2f9d25ab07d6 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

5196c0d8ee07 drm/i915/wopcm: convert to drm device based logging
f022c9422f91 drm/i915/psr: use struct drm_device based logging
c057e5d545d4 drm/i915/display: use struct drm_device based logging
87560bf44a17 drm/i915/display: clean up intel_PLL_is_valid()
b1419778ed0f drm/i915/tv: use struct drm_device based logging
0eea474ebae3 drm/i915/connector: use MISSING_CASE instead of logging
2c83198c9de1 drm/i915/dsi: use struct drm_device based logging
6d311eabae6b drm/i915/hdmi: use struct drm_device based logging
96a362dca265 drm/i915/dsi: use struct drm_device based logging
70006dcff1cf drm/i915/dp_mst: use struct drm_device based logging
df9678067397 drm/i915/dp_aux_backlight: use struct drm_device based logging
07dd9ea10f43 drm/i915/display_power: use struct drm_device based logging
ddb4a444dd75 drm/i915/ddi: use struct drm_device based logging

== Logs ==

For more details see: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/index.html
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH] drm/i915/execlists: Pull tasklet interrupt-bh local to direct submission

2020-03-20 Thread Francisco Jerez
Chris Wilson  writes:

> We dropped calling process_csb prior to handling direct submission in
> order to avoid the nesting of spinlocks and lift process_csb() and the
> majority of the tasklet out of irq-off. However, we do want to avoid
> ksoftirqd latency in the fast path, so try and pull the interrupt-bh
> local to direct submission if we can acquire the tasklet's lock.
>
> v2: Tweak the balance to avoid over submitting lite-restores
>
> Signed-off-by: Chris Wilson 
> Cc: Francisco Jerez 
> Cc: Tvrtko Ursulin 
> ---
>  drivers/gpu/drm/i915/gt/intel_lrc.c| 44 --
>  drivers/gpu/drm/i915/gt/selftest_lrc.c |  2 +-
>  2 files changed, 36 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
> b/drivers/gpu/drm/i915/gt/intel_lrc.c
> index f09dd87324b9..dceb65a0088f 100644
> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
> @@ -2884,17 +2884,17 @@ static void queue_request(struct intel_engine_cs 
> *engine,
>   set_bit(I915_FENCE_FLAG_PQUEUE, >fence.flags);
>  }
>  
> -static void __submit_queue_imm(struct intel_engine_cs *engine)
> +static bool pending_csb(const struct intel_engine_execlists *el)
>  {
> - struct intel_engine_execlists * const execlists = >execlists;
> + return READ_ONCE(*el->csb_write) != READ_ONCE(el->csb_head);
> +}
>  
> - if (reset_in_progress(execlists))
> - return; /* defer until we restart the engine following reset */
> +static bool skip_lite_restore(struct intel_engine_execlists *el,
> +   const struct i915_request *rq)
> +{
> + struct i915_request *inflight = execlists_active(el);
>  
> - if (execlists->tasklet.func == execlists_submission_tasklet)
> - __execlists_submission_tasklet(engine);
> - else
> - tasklet_hi_schedule(>tasklet);
> + return inflight && inflight->context == rq->context;
>  }
>  
>  static void submit_queue(struct intel_engine_cs *engine,
> @@ -2905,8 +2905,34 @@ static void submit_queue(struct intel_engine_cs 
> *engine,
>   if (rq_prio(rq) <= execlists->queue_priority_hint)
>   return;
>  
> + if (reset_in_progress(execlists))
> + return; /* defer until we restart the engine following reset */
> +
> + /*
> +  * Suppress immediate lite-restores, leave that to the tasklet.
> +  *
> +  * However, we leave the queue_priority_hint unset so that if we do
> +  * submit a second context, we push that into ELSP[1] immediately.
> +  */
> + if (skip_lite_restore(execlists, rq))
> + return;
> +
Why do you need to treat lite-restore specially here?

Anyway, trying this out now in combination with my patches now.

> + /* Hopefully we clear execlists->pending[] to let us through */
> + if (execlists->pending[0] && tasklet_trylock(>tasklet)) {
> + process_csb(engine);
> + tasklet_unlock(>tasklet);
> + if (skip_lite_restore(execlists, rq))
> + return;
> + }
> +
>   execlists->queue_priority_hint = rq_prio(rq);
> - __submit_queue_imm(engine);
> + __execlists_submission_tasklet(engine);
> +
> + /* Try and pull an interrupt-bh queued on another CPU to here */
> + if (pending_csb(execlists) && tasklet_trylock(>tasklet)) {
> + process_csb(engine);
> + tasklet_unlock(>tasklet);
> + }
>  }
>  
>  static bool ancestor_on_hold(const struct intel_engine_cs *engine,
> diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c 
> b/drivers/gpu/drm/i915/gt/selftest_lrc.c
> index 6f06ba750a0a..c5c4b07a7d5f 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c
> @@ -1028,7 +1028,7 @@ static int live_timeslice_rewind(void *arg)
>   if (IS_ERR(rq[1]))
>   goto err;
>  
> - err = wait_for_submit(engine, rq[1], HZ / 2);
> + err = wait_for_submit(engine, rq[0], HZ / 2);
>   if (err) {
>   pr_err("%s: failed to submit first context\n",
>  engine->name);
> -- 
> 2.20.1


signature.asc
Description: PGP signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 3/3] drm: Constify adjusted_mode a bit

2020-03-20 Thread Manasi Navare
On Thu, Mar 19, 2020 at 06:38:44PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä 
> 
> The DP link computation functions shouldn't modify the
> adjusted_mode so make it const.
> 
> Signed-off-by: Ville Syrjälä 

Reviewed-by: Manasi Navare 

Manasi

> ---
>  drivers/gpu/drm/i915/display/intel_dp.c | 6 --
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 8491ce8b8c15..110d82ee4859 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2181,7 +2181,8 @@ static int intel_dp_dsc_compute_config(struct intel_dp 
> *intel_dp,
>  {
>   struct intel_digital_port *dig_port = dp_to_dig_port(intel_dp);
>   struct drm_i915_private *dev_priv = to_i915(dig_port->base.base.dev);
> - struct drm_display_mode *adjusted_mode = _config->hw.adjusted_mode;
> + const struct drm_display_mode *adjusted_mode =
> + _config->hw.adjusted_mode;
>   u8 dsc_max_bpc;
>   int pipe_bpp;
>   int ret;
> @@ -2296,7 +2297,8 @@ intel_dp_compute_link_config(struct intel_encoder 
> *encoder,
>struct intel_crtc_state *pipe_config,
>struct drm_connector_state *conn_state)
>  {
> - struct drm_display_mode *adjusted_mode = _config->hw.adjusted_mode;
> + const struct drm_display_mode *adjusted_mode =
> + _config->hw.adjusted_mode;
>   struct intel_dp *intel_dp = enc_to_intel_dp(encoder);
>   struct link_config_limits limits;
>   int common_len;
> -- 
> 2.24.1
> 
> ___
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 02/13] drm/i915: Move TRANS_DDI_FUNC_CTL2 programming where it belongs

2020-03-20 Thread Manasi Navare
On Thu, Mar 19, 2020 at 03:20:56PM +0200, Ville Syrjälä wrote:
> On Wed, Mar 18, 2020 at 03:34:38PM -0700, Manasi Navare wrote:
> > On Fri, Mar 13, 2020 at 06:48:20PM +0200, Ville Syrjala wrote:
> > > From: Ville Syrjälä 
> > > 
> > > This port sync enable/disable stuff is misplaced. It's just another step
> > > of the normal TRANS_DDI_FUNC_CTL enable. Move it to its natural place.
> > > 
> > > Signed-off-by: Ville Syrjälä 
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_ddi.c | 71 +++-
> > >  drivers/gpu/drm/i915/display/intel_display.c | 34 --
> > >  2 files changed, 39 insertions(+), 66 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
> > > b/drivers/gpu/drm/i915/display/intel_ddi.c
> > > index 73d0f4648c06..8d486282eea3 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> > > @@ -1558,12 +1558,34 @@ void intel_ddi_enable_transcoder_func(const 
> > > struct intel_crtc_state *crtc_state)
> > >   struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> > >   struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> > >   enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
> > > - u32 temp;
> > > + u32 ctl;
> > >  
> > > - temp = intel_ddi_transcoder_func_reg_val_get(crtc_state);
> > > + if (INTEL_GEN(dev_priv) >= 11) {
> > > + enum transcoder master_transcoder = 
> > > crtc_state->master_transcoder;
> > > + u32 ctl2 = 0;
> > > +
> > > + if (master_transcoder != INVALID_TRANSCODER) {
> > > + u8 master_select;
> > > +
> > > + if (master_transcoder == TRANSCODER_EDP)
> > > + master_select = 0;
> > > + else
> > > + master_select = master_transcoder + 1;
> > > +
> > > + ctl2 |= PORT_SYNC_MODE_ENABLE |
> > > + (PORT_SYNC_MODE_MASTER_SELECT(master_select) &
> > > +  PORT_SYNC_MODE_MASTER_SELECT_MASK) <<
> > > + PORT_SYNC_MODE_MASTER_SELECT_SHIFT;
> > > + }
> > > +
> > > + intel_de_write(dev_priv,
> > > +TRANS_DDI_FUNC_CTL2(crtc_state->cpu_transcoder), 
> > > ctl2);
> > > + }
> > > +
> > > + ctl = intel_ddi_transcoder_func_reg_val_get(crtc_state);
> > >   if (intel_crtc_has_type(crtc_state, INTEL_OUTPUT_DP_MST))
> > > - temp |= TRANS_DDI_DP_VC_PAYLOAD_ALLOC;
> > > - intel_de_write(dev_priv, TRANS_DDI_FUNC_CTL(cpu_transcoder), temp);
> > > + ctl |= TRANS_DDI_DP_VC_PAYLOAD_ALLOC;
> > > + intel_de_write(dev_priv, TRANS_DDI_FUNC_CTL(cpu_transcoder), ctl);
> > >  }
> > >  
> > >  /*
> > > @@ -1576,11 +1598,11 @@ intel_ddi_config_transcoder_func(const struct 
> > > intel_crtc_state *crtc_state)
> > >   struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> > >   struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> > >   enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
> > > - u32 temp;
> > > + u32 ctl;
> > >  
> > > - temp = intel_ddi_transcoder_func_reg_val_get(crtc_state);
> > > - temp &= ~TRANS_DDI_FUNC_ENABLE;
> > > - intel_de_write(dev_priv, TRANS_DDI_FUNC_CTL(cpu_transcoder), temp);
> > > + ctl = intel_ddi_transcoder_func_reg_val_get(crtc_state);
> > > + ctl &= ~TRANS_DDI_FUNC_ENABLE;
> > > + intel_de_write(dev_priv, TRANS_DDI_FUNC_CTL(cpu_transcoder), ctl);
> > >  }
> > >  
> > >  void intel_ddi_disable_transcoder_func(const struct intel_crtc_state 
> > > *crtc_state)
> > > @@ -1588,20 +1610,23 @@ void intel_ddi_disable_transcoder_func(const 
> > > struct intel_crtc_state *crtc_state
> > >   struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> > >   struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
> > >   enum transcoder cpu_transcoder = crtc_state->cpu_transcoder;
> > > - u32 val;
> > > + u32 ctl;
> > >  
> > > - val = intel_de_read(dev_priv, TRANS_DDI_FUNC_CTL(cpu_transcoder));
> > > - val &= ~TRANS_DDI_FUNC_ENABLE;
> > > + if (INTEL_GEN(dev_priv) >= 11)
> > > + intel_de_write(dev_priv, TRANS_DDI_FUNC_CTL2(cpu_transcoder), 
> > > 0);
> > 
> > This should be set to 0 only for the slave where we enable the port sync 
> > mode so
> > set it to 0 only if if (old_crtc_state->master_transcoder != 
> > INVALID_TRANSCODER)
> > 
> > This will just ensure that we dont accidently set it to 0 for non slave 
> > transcoders
> 
> No, we should just write the value we want for every transcoder. If
> there are bits in there that should be set then we should set them
> explicitly. But I didn't think there's anything we want to set.
>

Yes for now there is nothing that we need to set.
So for now,

Reviewed-by: Manasi Navare 

Manasi
 
> > 
> > Manasi
> > 
> > > +
> > > + ctl = intel_de_read(dev_priv, TRANS_DDI_FUNC_CTL(cpu_transcoder));
> > > + ctl &= ~TRANS_DDI_FUNC_ENABLE;
> > >  
> > >   if (INTEL_GEN(dev_priv) >= 12) {
> > >   if 

Re: [Intel-gfx] [PATCH] drm/i915/execlists: Pull tasklet interrupt-bh local to direct submission

2020-03-20 Thread Francisco Jerez
Francisco Jerez  writes:

> Chris Wilson  writes:
>
>> We dropped calling process_csb prior to handling direct submission in
>> order to avoid the nesting of spinlocks and lift process_csb() and the
>> majority of the tasklet out of irq-off. However, we do want to avoid
>> ksoftirqd latency in the fast path, so try and pull the interrupt-bh
>> local to direct submission if we can acquire the tasklet's lock.
>>
>> v2: Tweak the balance to avoid over submitting lite-restores
>>
>> Signed-off-by: Chris Wilson 
>> Cc: Francisco Jerez 
>> Cc: Tvrtko Ursulin 
>> ---
>>  drivers/gpu/drm/i915/gt/intel_lrc.c| 44 --
>>  drivers/gpu/drm/i915/gt/selftest_lrc.c |  2 +-
>>  2 files changed, 36 insertions(+), 10 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
>> b/drivers/gpu/drm/i915/gt/intel_lrc.c
>> index f09dd87324b9..dceb65a0088f 100644
>> --- a/drivers/gpu/drm/i915/gt/intel_lrc.c
>> +++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
>> @@ -2884,17 +2884,17 @@ static void queue_request(struct intel_engine_cs 
>> *engine,
>>  set_bit(I915_FENCE_FLAG_PQUEUE, >fence.flags);
>>  }
>>  
>> -static void __submit_queue_imm(struct intel_engine_cs *engine)
>> +static bool pending_csb(const struct intel_engine_execlists *el)
>>  {
>> -struct intel_engine_execlists * const execlists = >execlists;
>> +return READ_ONCE(*el->csb_write) != READ_ONCE(el->csb_head);
>> +}
>>  
>> -if (reset_in_progress(execlists))
>> -return; /* defer until we restart the engine following reset */
>> +static bool skip_lite_restore(struct intel_engine_execlists *el,
>> +  const struct i915_request *rq)
>> +{
>> +struct i915_request *inflight = execlists_active(el);
>>  
>> -if (execlists->tasklet.func == execlists_submission_tasklet)
>> -__execlists_submission_tasklet(engine);
>> -else
>> -tasklet_hi_schedule(>tasklet);
>> +return inflight && inflight->context == rq->context;
>>  }
>>  
>>  static void submit_queue(struct intel_engine_cs *engine,
>> @@ -2905,8 +2905,34 @@ static void submit_queue(struct intel_engine_cs 
>> *engine,
>>  if (rq_prio(rq) <= execlists->queue_priority_hint)
>>  return;
>>  
>> +if (reset_in_progress(execlists))
>> +return; /* defer until we restart the engine following reset */
>> +
>> +/*
>> + * Suppress immediate lite-restores, leave that to the tasklet.
>> + *
>> + * However, we leave the queue_priority_hint unset so that if we do
>> + * submit a second context, we push that into ELSP[1] immediately.
>> + */
>> +if (skip_lite_restore(execlists, rq))
>> +return;
>> +
> Why do you need to treat lite-restore specially here?
>
> Anyway, trying this out now in combination with my patches now.
>

This didn't seem to help (together with your other suggestion to move
the overload accounting to __execlists_schedule_in/out).  And it makes
the current -5% SynMark OglMultithread regression with my series go down
to -10%.  My previous suggestion of moving the
intel_gt_pm_active_begin() call to process_csb() when the submission is
ACK'ed by the hardware does seem to help (and it roughly halves the
OglMultithread regression), possibly because that way we're able to
determine whether the first context was actually overlapping at the
point that the second was received by the hardware -- I haven't tested
it extensively yet though.

>> +/* Hopefully we clear execlists->pending[] to let us through */
>> +if (execlists->pending[0] && tasklet_trylock(>tasklet)) {
>> +process_csb(engine);
>> +tasklet_unlock(>tasklet);
>> +if (skip_lite_restore(execlists, rq))
>> +return;
>> +}
>> +
>>  execlists->queue_priority_hint = rq_prio(rq);
>> -__submit_queue_imm(engine);
>> +__execlists_submission_tasklet(engine);
>> +
>> +/* Try and pull an interrupt-bh queued on another CPU to here */
>> +if (pending_csb(execlists) && tasklet_trylock(>tasklet)) {
>> +process_csb(engine);
>> +tasklet_unlock(>tasklet);
>> +}
>>  }
>>  
>>  static bool ancestor_on_hold(const struct intel_engine_cs *engine,
>> diff --git a/drivers/gpu/drm/i915/gt/selftest_lrc.c 
>> b/drivers/gpu/drm/i915/gt/selftest_lrc.c
>> index 6f06ba750a0a..c5c4b07a7d5f 100644
>> --- a/drivers/gpu/drm/i915/gt/selftest_lrc.c
>> +++ b/drivers/gpu/drm/i915/gt/selftest_lrc.c
>> @@ -1028,7 +1028,7 @@ static int live_timeslice_rewind(void *arg)
>>  if (IS_ERR(rq[1]))
>>  goto err;
>>  
>> -err = wait_for_submit(engine, rq[1], HZ / 2);
>> +err = wait_for_submit(engine, rq[0], HZ / 2);
>>  if (err) {
>>  pr_err("%s: failed to submit first context\n",
>> engine->name);
>> -- 
>> 2.20.1
> ___
> Intel-gfx mailing list
> 

Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/display/fbc: Make fences a nice-to-have for GEN9+

2020-03-20 Thread Souza, Jose
On Fri, 2020-03-20 at 20:07 +, Souza, Jose wrote:
> On Fri, 2020-03-20 at 00:20 +, Patchwork wrote:
> > == Series Details ==
> > 
> > Series: drm/i915/display/fbc: Make fences a nice-to-have for GEN9+
> > URL   : https://patchwork.freedesktop.org/series/74890/
> > State : failure
> > 
> > == Summary ==
> > 
> > CI Bug Log - changes from CI_DRM_8160_full -> Patchwork_17029_full
> > 
> > 
> > Summary
> > ---
> > 
> >   **FAILURE**
> > 
> >   Serious unknown changes coming with Patchwork_17029_full
> > absolutely
> > need to be
> >   verified manually.
> >   
> >   If you think the reported changes have nothing to do with the
> > changes
> >   introduced in Patchwork_17029_full, please notify your bug team
> > to
> > allow them
> >   to document this new failure mode, which will reduce false
> > positives in CI.
> > 
> >   
> > 
> > Possible new issues
> > ---
> > 
> >   Here are the unknown changes that may have been introduced in
> > Patchwork_17029_full:
> > 
> > ### IGT changes ###
> > 
> >  Possible regressions 
> > 
> >   * igt@kms_fbcon_fbt@fbc:
> > - shard-glk:  [PASS][1] -> [FAIL][2] +3 similar issues
> >[1]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-glk9/igt@kms_fbcon_...@fbc.html
> >[2]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-glk4/igt@kms_fbcon_...@fbc.html
> 
> Will update this test to handle the FBC changes.

Patches handling this case here: 
https://patchwork.freedesktop.org/series/74934/

Will merge this series monday unless someone is against it.

> 
> >   * igt@kms_frontbuffer_tracking@fbc-tilingchange:
> > - shard-iclb: [PASS][3] -> [FAIL][4] +3 similar issues
> >[3]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-iclb2/igt@kms_frontbuffer_track...@fbc-tilingchange.html
> >[4]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-iclb3/igt@kms_frontbuffer_track...@fbc-tilingchange.html
> > - shard-tglb: [PASS][5] -> [FAIL][6] +3 similar issues
> >[5]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-tglb5/igt@kms_frontbuffer_track...@fbc-tilingchange.html
> >[6]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-tglb3/igt@kms_frontbuffer_track...@fbc-tilingchange.html
> > 
> >   * igt@kms_hdr@static-toggle-dpms:
> > - shard-tglb: NOTRUN -> [SKIP][7]
> >[7]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-tglb6/igt@kms_...@static-toggle-dpms.html
> 
> This two are handled by: 
> https://patchwork.freedesktop.org/series/74606/
> 
> >   
> > Known issues
> > 
> > 
> >   Here are the changes found in Patchwork_17029_full that come from
> > known issues:
> > 
> > ### IGT changes ###
> > 
> >  Issues hit 
> > 
> >   * igt@gem_ctx_isolation@bcs0-s3:
> > - shard-kbl:  [PASS][8] -> [DMESG-WARN][9] ([i915#180])
> > +5 similar issues
> >[8]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-kbl6/igt@gem_ctx_isolat...@bcs0-s3.html
> >[9]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-kbl7/igt@gem_ctx_isolat...@bcs0-s3.html
> > 
> >   * igt@gem_ctx_persistence@close-replace-race:
> > - shard-tglb: [PASS][10] -> [INCOMPLETE][11]
> > ([i915#1402])
> >[10]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-tglb5/igt@gem_ctx_persiste...@close-replace-race.html
> >[11]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-tglb7/igt@gem_ctx_persiste...@close-replace-race.html
> > - shard-kbl:  [PASS][12] -> [INCOMPLETE][13]
> > ([i915#1402])
> >[12]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-kbl7/igt@gem_ctx_persiste...@close-replace-race.html
> >[13]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-kbl6/igt@gem_ctx_persiste...@close-replace-race.html
> > - shard-skl:  [PASS][14] -> [INCOMPLETE][15]
> > ([i915#1402])
> >[14]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-skl5/igt@gem_ctx_persiste...@close-replace-race.html
> >[15]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-skl5/igt@gem_ctx_persiste...@close-replace-race.html
> > 
> >   * igt@gem_exec_parallel@vcs1-fds:
> > - shard-iclb: [PASS][16] -> [SKIP][17] ([fdo#112080])
> > +14
> > similar issues
> >[16]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8160/shard-iclb1/igt@gem_exec_paral...@vcs1-fds.html
> >[17]: 
> > https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17029/shard-iclb5/igt@gem_exec_paral...@vcs1-fds.html
> > 
> >   * igt@gem_exec_schedule@implicit-read-write-bsd2:
> > - shard-iclb: [PASS][18] -> [SKIP][19] ([fdo#109276] /
> > [i915#677]) +1 similar issue
> >[18]: 
> > 

Re: [Intel-gfx] [PATCH 03/13] drm/i915: Drop usless master_transcoder assignments

2020-03-20 Thread Manasi Navare
On Thu, Mar 19, 2020 at 03:22:06PM +0200, Ville Syrjälä wrote:
> On Wed, Mar 18, 2020 at 03:37:32PM -0700, Manasi Navare wrote:
> > On Fri, Mar 13, 2020 at 06:48:21PM +0200, Ville Syrjala wrote:
> > > From: Ville Syrjälä 
> > > 
> > > The entire crtc state has been reset before readout so
> > > master_transcoder is already set to INVALID.
> > 
> > But wont that mean that the master transcoder would be set to 0
> > on reset and what we want is actually setting that to INVALID
> 
> No. Pls see intel_crtc_state_reset()
>

Okay got it with that

Reviewed-by: Manasi Navare 

Manasi
 
> 
> > 
> > Manasi
> > 
> > > 
> > > Signed-off-by: Ville Syrjälä 
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_display.c | 2 --
> > >  1 file changed, 2 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> > > b/drivers/gpu/drm/i915/display/intel_display.c
> > > index c49b4e6eb3d4..12823d8f6afe 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > > @@ -9364,7 +9364,6 @@ static bool i9xx_get_pipe_config(struct intel_crtc 
> > > *crtc,
> > >   pipe_config->output_format = INTEL_OUTPUT_FORMAT_RGB;
> > >   pipe_config->cpu_transcoder = (enum transcoder) crtc->pipe;
> > >   pipe_config->shared_dpll = NULL;
> > > - pipe_config->master_transcoder = INVALID_TRANSCODER;
> > >  
> > >   ret = false;
> > >  
> > > @@ -10588,7 +10587,6 @@ static bool ilk_get_pipe_config(struct intel_crtc 
> > > *crtc,
> > >  
> > >   pipe_config->cpu_transcoder = (enum transcoder) crtc->pipe;
> > >   pipe_config->shared_dpll = NULL;
> > > - pipe_config->master_transcoder = INVALID_TRANSCODER;
> > >  
> > >   ret = false;
> > >   tmp = intel_de_read(dev_priv, PIPECONF(crtc->pipe));
> > > -- 
> > > 2.24.1
> > > 
> 
> -- 
> Ville Syrjälä
> Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 1/3] drm/i915: Try to use fast+narrow link on eDP again and fall back to the old max strategy on failure

2020-03-20 Thread Manasi Navare
On Fri, Mar 20, 2020 at 09:08:31PM +0200, Ville Syrjälä wrote:
> On Thu, Mar 19, 2020 at 03:20:50PM -0700, Manasi Navare wrote:
> > On Thu, Mar 19, 2020 at 06:38:42PM +0200, Ville Syrjala wrote:
> > > From: Ville Syrjälä 
> > > 
> > > Some new eDP panels don't like to operate at the max parameters, and
> > > instead we need to go for an optimal confiugration. That unfortunately
> > > doesn't work with older eDP panels which are generally only guaranteed
> > > to work at the max parameters.
> > > 
> > > To solve these two conflicting requirements let's start with the optimal
> > > setup, and if that fails we start again with the max parameters. The
> > > downside is probably an extra modeset when we switch strategies but
> > > I don't see a good way to avoid that.
> > > 
> > > For a bit of history we first tried to go for the fast+narrow in
> > > commit 7769db588384 ("drm/i915/dp: optimize eDP 1.4+ link config
> > > fast and narrow"). but that had to be reverted due to regression
> > > on older panels in commit f11cb1c19ad0 ("drm/i915/dp: revert back
> > > to max link rate and lane count on eDP"). So now we try to get
> > > the best of both worlds by using both strategies.
> > > 
> > > v2: Deal with output_bpp and uapi vs. hw state split
> > > Reword some comments
> > > 
> > > Cc: Jani Nikula 
> > > Cc: Rodrigo Vivi 
> > > Cc: Manasi Navare 
> > > Cc: Albert Astals Cid  # v5.0 backport
> > > Cc: Emanuele Panigati  # v5.0 backport
> > > Cc: Matteo Iervasi  # v5.0 backport
> > > Cc: Timo Aaltonen 
> > > References: https://bugs.freedesktop.org/show_bug.cgi?id=105267
> > > References: https://bugs.freedesktop.org/show_bug.cgi?id=109959
> > > References: https://gitlab.freedesktop.org/drm/intel/issues/272
> > > Signed-off-by: Ville Syrjälä 
> > 
> > This approach looks good to me to fallback to max parameters if
> > it fails the first time.
> > 
> > > ---
> > >  .../drm/i915/display/intel_display_types.h|  1 +
> > >  drivers/gpu/drm/i915/display/intel_dp.c   | 74 ---
> > >  2 files changed, 66 insertions(+), 9 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
> > > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > index 5e00e611f077..ffde0d4af23c 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > @@ -1258,6 +1258,7 @@ struct intel_dp {
> > >   bool link_trained;
> > >   bool has_audio;
> > >   bool reset_link_params;
> > > + bool use_max_params;
> > >   u8 dpcd[DP_RECEIVER_CAP_SIZE];
> > >   u8 psr_dpcd[EDP_PSR_RECEIVER_CAP_SIZE];
> > >   u8 downstream_ports[DP_MAX_DOWNSTREAM_PORTS];
> > > diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
> > > b/drivers/gpu/drm/i915/display/intel_dp.c
> > > index ef2e06e292d5..85abcce492ca 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_dp.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> > > @@ -465,6 +465,12 @@ int intel_dp_get_link_train_fallback_values(struct 
> > > intel_dp *intel_dp,
> > >  {
> > >   int index;
> > >  
> > > + if (intel_dp_is_edp(intel_dp) && !intel_dp->use_max_params) {
> > > + DRM_DEBUG_KMS("Retrying Link training for eDP with max 
> > > parameters\n");
> > > + intel_dp->use_max_params = true;
> > > + return 0;
> > > + }
> > 
> > We need to remove the current check for 
> > intel_dp_can_link_train_fallback_for_edp() right?
> 
> No. Why do you think it needs to be removed?
>

Okay so if trying max params link training again fails on eDP, then it 
fallsback from max to lower values
and fallback link training continues until it can handle the fixed mode with 
the params or
the lowest params?

So if I understand it correctly we first try to use the optimum approach, if 
that fails then
we try with max params so in this iteration if it fails again then max params 
is still true
then it will fallback and call intel_dp_can_link_train_fallback_for_edp() and 
then
again keep retrying?

Manasi
 
> -- 
> Ville Syrjälä
> Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915: Immediately execute the fenced work (rev2)

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915: Immediately execute the fenced work (rev2)
URL   : https://patchwork.freedesktop.org/series/74917/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8167_full -> Patchwork_17036_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17036_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17036_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Possible new issues
---

  Here are the unknown changes that may have been introduced in 
Patchwork_17036_full:

### IGT changes ###

 Possible regressions 

  * igt@gem_exec_parallel@vcs0-contexts:
- shard-skl:  [PASS][1] -> [INCOMPLETE][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl10/igt@gem_exec_paral...@vcs0-contexts.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/shard-skl1/igt@gem_exec_paral...@vcs0-contexts.html

  
Known issues


  Here are the changes found in Patchwork_17036_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_busy@busy-vcs1:
- shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#112080]) +16 similar 
issues
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb2/igt@gem_b...@busy-vcs1.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/shard-iclb8/igt@gem_b...@busy-vcs1.html

  * igt@gem_exec_async@concurrent-writes-bsd:
- shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#112146]) +4 similar 
issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb5/igt@gem_exec_as...@concurrent-writes-bsd.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/shard-iclb2/igt@gem_exec_as...@concurrent-writes-bsd.html

  * igt@gem_exec_schedule@implicit-read-write-bsd2:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#109276] / [i915#677])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb2/igt@gem_exec_sched...@implicit-read-write-bsd2.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/shard-iclb8/igt@gem_exec_sched...@implicit-read-write-bsd2.html

  * igt@gem_ppgtt@flink-and-close-vma-leak:
- shard-tglb: [PASS][9] -> [FAIL][10] ([i915#644])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-tglb1/igt@gem_pp...@flink-and-close-vma-leak.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/shard-tglb1/igt@gem_pp...@flink-and-close-vma-leak.html

  * igt@gen9_exec_parse@allowed-single:
- shard-skl:  [PASS][11] -> [DMESG-WARN][12] ([i915#716])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl3/igt@gen9_exec_pa...@allowed-single.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/shard-skl6/igt@gen9_exec_pa...@allowed-single.html

  * igt@i915_pm_dc@dc5-dpms:
- shard-iclb: [PASS][13] -> [FAIL][14] ([i915#447])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb4/igt@i915_pm...@dc5-dpms.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/shard-iclb3/igt@i915_pm...@dc5-dpms.html

  * igt@i915_pm_dc@dc6-dpms:
- shard-iclb: [PASS][15] -> [FAIL][16] ([i915#454])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb1/igt@i915_pm...@dc6-dpms.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/shard-iclb3/igt@i915_pm...@dc6-dpms.html

  * igt@i915_pm_dc@dc6-psr:
- shard-skl:  [PASS][17] -> [FAIL][18] ([i915#454])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl6/igt@i915_pm...@dc6-psr.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/shard-skl7/igt@i915_pm...@dc6-psr.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
- shard-apl:  [PASS][19] -> [DMESG-WARN][20] ([i915#180]) +2 
similar issues
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-apl3/igt@i915_susp...@fence-restore-tiled2untiled.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/shard-apl4/igt@i915_susp...@fence-restore-tiled2untiled.html

  * igt@i915_suspend@sysfs-reader:
- shard-kbl:  [PASS][21] -> [DMESG-WARN][22] ([i915#180]) +2 
similar issues
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-kbl2/igt@i915_susp...@sysfs-reader.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17036/shard-kbl3/igt@i915_susp...@sysfs-reader.html

  * igt@kms_cursor_crc@pipe-a-cursor-128x128-random:
- shard-skl:  [PASS][23] -> [FAIL][24] ([i915#54]) +1 similar issue
   [23]: 

Re: [Intel-gfx] [PATCH 01/13] drm/i915/mst: Use .compute_config_late() to compute master transcoder

2020-03-20 Thread Souza, Jose
This will not work for MST, here a example

Previous state:
MST master pipe A
MST slave pipe B

New state:
Pipe A being disabled

On drm_atomic_helper_check_modeset() both intel_crtc_states will be
added to the state with crtc_state->uapi.mode_changed=true.
Then on the regular for_each_oldnew_intel_crtc_in_state() loop config
of CRTC B will have mst_master_transcoder=INVALID_TRANSCODER that
differs from TRANSCODER_A and will keep mode_changed set.
Then on the config_late loop it will skip the interation on the
needs_modeset() check keeping CRTC B with
mst_master_transcoder=INVALID_TRANSCODER.

That would be caugh by CI if this tests were merged and the TGL machine
with MST is still on: https://patchwork.freedesktop.org/series/72211/

On Fri, 2020-03-13 at 18:48 +0200, Ville Syrjala wrote:
> From: Ville Syrjälä 
> 
> Use the recently introduced encoder .compute_config_late() hook to
> do the MST master transcoder assignment. Avoids having to do it
> in a funny way before we know the CPU transcoder of each pipe.
> 
> And now we can also properly use hw.active instead of uapi.active
> since it too has been calculated earlier for everyone.
> 
> Cc: José Roberto de Souza 
> Signed-off-by: Ville Syrjälä 
> ---
>  drivers/gpu/drm/i915/display/intel_dp_mst.c | 98 +++--
> 
>  1 file changed, 51 insertions(+), 47 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> index 44f3fd251ca1..b9afc1135b9b 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> @@ -88,56 +88,10 @@ static int
> intel_dp_mst_compute_link_config(struct intel_encoder *encoder,
>   return 0;
>  }
>  
> -/*
> - * Iterate over all connectors and return the smallest transcoder in
> the MST
> - * stream
> - */
> -static enum transcoder
> -intel_dp_mst_master_trans_compute(struct intel_atomic_state *state,
> -   struct intel_dp *mst_port)
> -{
> - struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> - struct intel_digital_connector_state *conn_state;
> - struct intel_connector *connector;
> - enum pipe ret = I915_MAX_PIPES;
> - int i;
> -
> - if (INTEL_GEN(dev_priv) < 12)
> - return INVALID_TRANSCODER;
> -
> - for_each_new_intel_connector_in_state(state, connector,
> conn_state, i) {
> - struct intel_crtc_state *crtc_state;
> - struct intel_crtc *crtc;
> -
> - if (connector->mst_port != mst_port || !conn_state-
> >base.crtc)
> - continue;
> -
> - crtc = to_intel_crtc(conn_state->base.crtc);
> - crtc_state = intel_atomic_get_new_crtc_state(state,
> crtc);
> - if (!crtc_state->uapi.active)
> - continue;
> -
> - /*
> -  * Using crtc->pipe because crtc_state->cpu_transcoder
> is
> -  * computed, so others CRTCs could have non-computed
> -  * cpu_transcoder
> -  */
> - if (crtc->pipe < ret)
> - ret = crtc->pipe;
> - }
> -
> - if (ret == I915_MAX_PIPES)
> - return INVALID_TRANSCODER;
> -
> - /* Simple cast works because TGL don't have a eDP transcoder */
> - return (enum transcoder)ret;
> -}
> -
>  static int intel_dp_mst_compute_config(struct intel_encoder
> *encoder,
>  struct intel_crtc_state
> *pipe_config,
>  struct drm_connector_state
> *conn_state)
>  {
> - struct intel_atomic_state *state =
> to_intel_atomic_state(conn_state->state);
>   struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>   struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder);
>   struct intel_dp *intel_dp = _mst->primary->dp;
> @@ -201,7 +155,56 @@ static int intel_dp_mst_compute_config(struct
> intel_encoder *encoder,
>  
>   intel_ddi_compute_min_voltage_level(dev_priv, pipe_config);
>  
> - pipe_config->mst_master_transcoder =
> intel_dp_mst_master_trans_compute(state, intel_dp);
> + return 0;
> +}
> +
> +/*
> + * Iterate over all connectors and return a mask of
> + * all CPU transcoders streaming over the same DP link.
> + */
> +static unsigned int
> +intel_dp_mst_transcoder_mask(struct intel_atomic_state *state,
> +  struct intel_dp *mst_port)
> +{
> + struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> + const struct intel_digital_connector_state *conn_state;
> + struct intel_connector *connector;
> + u8 transcoders = 0;
> + int i;
> +
> + if (INTEL_GEN(dev_priv) < 12)
> + return 0;
> +
> + for_each_new_intel_connector_in_state(state, connector,
> conn_state, i) {
> + const struct intel_crtc_state *crtc_state;
> + struct intel_crtc *crtc;
> +
> + if (connector->mst_port != mst_port || 

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915: Get rid of silly void* from MST code (rev2)

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915: Get rid of silly void* from MST code (rev2)
URL   : https://patchwork.freedesktop.org/series/74539/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8167_full -> Patchwork_17039_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


  Here are the changes found in Patchwork_17039_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_busy@busy-vcs1:
- shard-iclb: [PASS][1] -> [SKIP][2] ([fdo#112080]) +15 similar 
issues
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb2/igt@gem_b...@busy-vcs1.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/shard-iclb7/igt@gem_b...@busy-vcs1.html

  * igt@gem_exec_schedule@implicit-read-write-bsd2:
- shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#109276] / [i915#677])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb2/igt@gem_exec_sched...@implicit-read-write-bsd2.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/shard-iclb7/igt@gem_exec_sched...@implicit-read-write-bsd2.html

  * igt@gem_exec_schedule@in-order-bsd:
- shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#112146]) +4 similar 
issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb5/igt@gem_exec_sched...@in-order-bsd.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/shard-iclb4/igt@gem_exec_sched...@in-order-bsd.html

  * igt@i915_pm_dc@dc6-psr:
- shard-skl:  [PASS][7] -> [FAIL][8] ([i915#454])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl6/igt@i915_pm...@dc6-psr.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/shard-skl10/igt@i915_pm...@dc6-psr.html

  * igt@i915_pm_rps@waitboost:
- shard-iclb: [PASS][9] -> [FAIL][10] ([i915#413])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb2/igt@i915_pm_...@waitboost.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/shard-iclb7/igt@i915_pm_...@waitboost.html

  * igt@i915_selftest@live@execlists:
- shard-skl:  [PASS][11] -> [INCOMPLETE][12] ([i915#656])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl9/igt@i915_selftest@l...@execlists.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/shard-skl3/igt@i915_selftest@l...@execlists.html

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
- shard-kbl:  [PASS][13] -> [DMESG-WARN][14] ([i915#180]) +2 
similar issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-kbl3/igt@kms_cursor_...@pipe-a-cursor-suspend.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/shard-kbl7/igt@kms_cursor_...@pipe-a-cursor-suspend.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-kbl:  [PASS][15] -> [INCOMPLETE][16] ([i915#155])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-kbl6/igt@kms_frontbuffer_track...@fbc-suspend.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/shard-kbl3/igt@kms_frontbuffer_track...@fbc-suspend.html

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-c-planes:
- shard-skl:  [PASS][17] -> [INCOMPLETE][18] ([i915#69])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl1/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-c-planes.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/shard-skl4/igt@kms_pl...@plane-panning-bottom-right-suspend-pipe-c-planes.html

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-skl:  [PASS][19] -> [FAIL][20] ([fdo#108145] / [i915#265])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl6/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/shard-skl10/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html

  * igt@kms_psr@psr2_primary_mmap_gtt:
- shard-iclb: [PASS][21] -> [SKIP][22] ([fdo#109441])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb2/igt@kms_psr@psr2_primary_mmap_gtt.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/shard-iclb3/igt@kms_psr@psr2_primary_mmap_gtt.html

  * igt@kms_setmode@basic:
- shard-skl:  [PASS][23] -> [FAIL][24] ([i915#31])
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl4/igt@kms_setm...@basic.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17039/shard-skl5/igt@kms_setm...@basic.html

  * igt@kms_vblank@pipe-c-ts-continuation-suspend:
- shard-apl:  [PASS][25] -> [DMESG-WARN][26] ([i915#180]) +1 
similar issue
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-apl2/igt@kms_vbl...@pipe-c-ts-continuation-suspend.html
   [26]: 

[Intel-gfx] ✗ Fi.CI.IGT: failure for series starting with [1/4] drm/i915/gt: Report context-is-closed prior to pinning (rev2)

2020-03-20 Thread Patchwork
== Series Details ==

Series: series starting with [1/4] drm/i915/gt: Report context-is-closed prior 
to pinning (rev2)
URL   : https://patchwork.freedesktop.org/series/74918/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8167_full -> Patchwork_17041_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17041_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17041_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Possible new issues
---

  Here are the unknown changes that may have been introduced in 
Patchwork_17041_full:

### IGT changes ###

 Possible regressions 

  * igt@gem_ctx_persistence@replace@rcs0:
- shard-skl:  [PASS][1] -> [INCOMPLETE][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl6/igt@gem_ctx_persistence@repl...@rcs0.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/shard-skl6/igt@gem_ctx_persistence@repl...@rcs0.html

  * igt@gem_ctx_persistence@smoketest:
- shard-tglb: [PASS][3] -> [INCOMPLETE][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-tglb1/igt@gem_ctx_persiste...@smoketest.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/shard-tglb7/igt@gem_ctx_persiste...@smoketest.html
- shard-kbl:  [PASS][5] -> [INCOMPLETE][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-kbl3/igt@gem_ctx_persiste...@smoketest.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/shard-kbl7/igt@gem_ctx_persiste...@smoketest.html
- shard-iclb: [PASS][7] -> [INCOMPLETE][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb8/igt@gem_ctx_persiste...@smoketest.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/shard-iclb4/igt@gem_ctx_persiste...@smoketest.html

  * igt@gem_exec_async@concurrent-writes-bsd1:
- shard-tglb: [PASS][9] -> [FAIL][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-tglb7/igt@gem_exec_as...@concurrent-writes-bsd1.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/shard-tglb6/igt@gem_exec_as...@concurrent-writes-bsd1.html

  
 Warnings 

  * igt@gem_ctx_persistence@close-replace-race:
- shard-tglb: [TIMEOUT][11] ([i915#1340]) -> [INCOMPLETE][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-tglb1/igt@gem_ctx_persiste...@close-replace-race.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/shard-tglb7/igt@gem_ctx_persiste...@close-replace-race.html
- shard-kbl:  [DMESG-WARN][13] -> [INCOMPLETE][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-kbl1/igt@gem_ctx_persiste...@close-replace-race.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/shard-kbl7/igt@gem_ctx_persiste...@close-replace-race.html

  
Known issues


  Here are the changes found in Patchwork_17041_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_isolation@vecs0-s3:
- shard-apl:  [PASS][15] -> [DMESG-WARN][16] ([i915#180]) +1 
similar issue
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-apl1/igt@gem_ctx_isolat...@vecs0-s3.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/shard-apl1/igt@gem_ctx_isolat...@vecs0-s3.html

  * igt@gem_ctx_persistence@smoketest:
- shard-apl:  [PASS][17] -> [INCOMPLETE][18] ([fdo#103927])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-apl6/igt@gem_ctx_persiste...@smoketest.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/shard-apl1/igt@gem_ctx_persiste...@smoketest.html

  * igt@gem_exec_schedule@independent-bsd2:
- shard-iclb: [PASS][19] -> [SKIP][20] ([fdo#109276]) +11 similar 
issues
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb4/igt@gem_exec_sched...@independent-bsd2.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/shard-iclb3/igt@gem_exec_sched...@independent-bsd2.html

  * igt@gem_exec_schedule@pi-ringfull-bsd:
- shard-iclb: [PASS][21] -> [SKIP][22] ([fdo#112146]) +4 similar 
issues
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb6/igt@gem_exec_sched...@pi-ringfull-bsd.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17041/shard-iclb1/igt@gem_exec_sched...@pi-ringfull-bsd.html

  * igt@gem_exec_schedule@pi-shared-iova-bsd:
- shard-iclb: [PASS][23] -> [SKIP][24] ([i915#677])
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb7/igt@gem_exec_sched...@pi-shared-iova-bsd.html
   [24]: 

[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915: Hotplug cleanups (rev6)

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915: Hotplug cleanups (rev6)
URL   : https://patchwork.freedesktop.org/series/72348/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8167_full -> Patchwork_17038_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17038_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17038_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Possible new issues
---

  Here are the unknown changes that may have been introduced in 
Patchwork_17038_full:

### IGT changes ###

 Possible regressions 

  * igt@kms_flip@plain-flip-fb-recreate:
- shard-skl:  [PASS][1] -> [FAIL][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl10/igt@kms_f...@plain-flip-fb-recreate.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/shard-skl5/igt@kms_f...@plain-flip-fb-recreate.html

  
 Warnings 

  * igt@gem_ctx_persistence@close-replace-race:
- shard-apl:  [INCOMPLETE][3] ([fdo#103927] / [i915#1402]) -> 
[DMESG-WARN][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-apl6/igt@gem_ctx_persiste...@close-replace-race.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/shard-apl8/igt@gem_ctx_persiste...@close-replace-race.html
- shard-skl:  [TIMEOUT][5] ([i915#1340]) -> [DMESG-WARN][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl10/igt@gem_ctx_persiste...@close-replace-race.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/shard-skl8/igt@gem_ctx_persiste...@close-replace-race.html

  
Known issues


  Here are the changes found in Patchwork_17038_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_busy@busy-vcs1:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#112080]) +12 similar 
issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb2/igt@gem_b...@busy-vcs1.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/shard-iclb3/igt@gem_b...@busy-vcs1.html

  * igt@gem_ctx_isolation@rcs0-s3:
- shard-kbl:  [PASS][9] -> [DMESG-WARN][10] ([i915#180]) +2 similar 
issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-kbl2/igt@gem_ctx_isolat...@rcs0-s3.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/shard-kbl6/igt@gem_ctx_isolat...@rcs0-s3.html

  * igt@gem_exec_balancer@hang:
- shard-tglb: [PASS][11] -> [FAIL][12] ([i915#1277])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-tglb6/igt@gem_exec_balan...@hang.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/shard-tglb6/igt@gem_exec_balan...@hang.html

  * igt@gem_exec_schedule@implicit-read-write-bsd2:
- shard-iclb: [PASS][13] -> [SKIP][14] ([fdo#109276] / [i915#677])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb2/igt@gem_exec_sched...@implicit-read-write-bsd2.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/shard-iclb3/igt@gem_exec_sched...@implicit-read-write-bsd2.html

  * igt@i915_pm_dc@dc6-psr:
- shard-skl:  [PASS][15] -> [FAIL][16] ([i915#454])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl6/igt@i915_pm...@dc6-psr.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/shard-skl1/igt@i915_pm...@dc6-psr.html

  * igt@i915_suspend@debugfs-reader:
- shard-apl:  [PASS][17] -> [DMESG-WARN][18] ([i915#180])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-apl2/igt@i915_susp...@debugfs-reader.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/shard-apl6/igt@i915_susp...@debugfs-reader.html

  * igt@kms_cursor_crc@pipe-c-cursor-256x256-onscreen:
- shard-skl:  [PASS][19] -> [FAIL][20] ([i915#54]) +1 similar issue
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl9/igt@kms_cursor_...@pipe-c-cursor-256x256-onscreen.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/shard-skl9/igt@kms_cursor_...@pipe-c-cursor-256x256-onscreen.html

  * igt@kms_flip@busy-flip:
- shard-skl:  [PASS][21] -> [FAIL][22] ([i915#275])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl10/igt@kms_f...@busy-flip.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17038/shard-skl5/igt@kms_f...@busy-flip.html

  * igt@kms_hdr@bpc-switch-dpms:
- shard-skl:  [PASS][23] -> [FAIL][24] ([i915#1188])
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl8/igt@kms_...@bpc-switch-dpms.html
   [24]: 

Re: [Intel-gfx] [PATCH 01/13] drm/i915/mst: Use .compute_config_late() to compute master transcoder

2020-03-20 Thread Souza, Jose
Never mind, read the code again it will work.

Reviewed-by: José Roberto de Souza 

On Fri, 2020-03-20 at 23:37 +, Souza, Jose wrote:
> This will not work for MST, here a example
> 
> Previous state:
> MST master pipe A
> MST slave pipe B
> 
> New state:
> Pipe A being disabled
> 
> On drm_atomic_helper_check_modeset() both intel_crtc_states will be
> added to the state with crtc_state->uapi.mode_changed=true.
> Then on the regular for_each_oldnew_intel_crtc_in_state() loop config
> of CRTC B will have mst_master_transcoder=INVALID_TRANSCODER that
> differs from TRANSCODER_A and will keep mode_changed set.
> Then on the config_late loop it will skip the interation on the
> needs_modeset() check keeping CRTC B with
> mst_master_transcoder=INVALID_TRANSCODER.
> 
> That would be caugh by CI if this tests were merged and the TGL
> machine
> with MST is still on: https://patchwork.freedesktop.org/series/72211/
> 
> On Fri, 2020-03-13 at 18:48 +0200, Ville Syrjala wrote:
> > From: Ville Syrjälä 
> > 
> > Use the recently introduced encoder .compute_config_late() hook to
> > do the MST master transcoder assignment. Avoids having to do it
> > in a funny way before we know the CPU transcoder of each pipe.
> > 
> > And now we can also properly use hw.active instead of uapi.active
> > since it too has been calculated earlier for everyone.
> > 
> > Cc: José Roberto de Souza 
> > Signed-off-by: Ville Syrjälä 
> > ---
> >  drivers/gpu/drm/i915/display/intel_dp_mst.c | 98 +++--
> > 
> >  1 file changed, 51 insertions(+), 47 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > index 44f3fd251ca1..b9afc1135b9b 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
> > @@ -88,56 +88,10 @@ static int
> > intel_dp_mst_compute_link_config(struct intel_encoder *encoder,
> > return 0;
> >  }
> >  
> > -/*
> > - * Iterate over all connectors and return the smallest transcoder
> > in
> > the MST
> > - * stream
> > - */
> > -static enum transcoder
> > -intel_dp_mst_master_trans_compute(struct intel_atomic_state
> > *state,
> > - struct intel_dp *mst_port)
> > -{
> > -   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> > -   struct intel_digital_connector_state *conn_state;
> > -   struct intel_connector *connector;
> > -   enum pipe ret = I915_MAX_PIPES;
> > -   int i;
> > -
> > -   if (INTEL_GEN(dev_priv) < 12)
> > -   return INVALID_TRANSCODER;
> > -
> > -   for_each_new_intel_connector_in_state(state, connector,
> > conn_state, i) {
> > -   struct intel_crtc_state *crtc_state;
> > -   struct intel_crtc *crtc;
> > -
> > -   if (connector->mst_port != mst_port || !conn_state-
> > > base.crtc)
> > -   continue;
> > -
> > -   crtc = to_intel_crtc(conn_state->base.crtc);
> > -   crtc_state = intel_atomic_get_new_crtc_state(state,
> > crtc);
> > -   if (!crtc_state->uapi.active)
> > -   continue;
> > -
> > -   /*
> > -* Using crtc->pipe because crtc_state->cpu_transcoder
> > is
> > -* computed, so others CRTCs could have non-computed
> > -* cpu_transcoder
> > -*/
> > -   if (crtc->pipe < ret)
> > -   ret = crtc->pipe;
> > -   }
> > -
> > -   if (ret == I915_MAX_PIPES)
> > -   return INVALID_TRANSCODER;
> > -
> > -   /* Simple cast works because TGL don't have a eDP transcoder */
> > -   return (enum transcoder)ret;
> > -}
> > -
> >  static int intel_dp_mst_compute_config(struct intel_encoder
> > *encoder,
> >struct intel_crtc_state
> > *pipe_config,
> >struct drm_connector_state
> > *conn_state)
> >  {
> > -   struct intel_atomic_state *state =
> > to_intel_atomic_state(conn_state->state);
> > struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> > struct intel_dp_mst_encoder *intel_mst = enc_to_mst(encoder);
> > struct intel_dp *intel_dp = _mst->primary->dp;
> > @@ -201,7 +155,56 @@ static int intel_dp_mst_compute_config(struct
> > intel_encoder *encoder,
> >  
> > intel_ddi_compute_min_voltage_level(dev_priv, pipe_config);
> >  
> > -   pipe_config->mst_master_transcoder =
> > intel_dp_mst_master_trans_compute(state, intel_dp);
> > +   return 0;
> > +}
> > +
> > +/*
> > + * Iterate over all connectors and return a mask of
> > + * all CPU transcoders streaming over the same DP link.
> > + */
> > +static unsigned int
> > +intel_dp_mst_transcoder_mask(struct intel_atomic_state *state,
> > +struct intel_dp *mst_port)
> > +{
> > +   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> > +   const struct intel_digital_connector_state *conn_state;
> > +   struct intel_connector *connector;
> > +   u8 transcoders = 0;
> > +   int 

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915: drm device based logging changes

2020-03-20 Thread Patchwork
== Series Details ==

Series: drm/i915: drm device based logging changes
URL   : https://patchwork.freedesktop.org/series/74927/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8167_full -> Patchwork_17040_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


  Here are the changes found in Patchwork_17040_full that come from known 
issues:

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_shared@exec-single-timeline-bsd:
- shard-iclb: [PASS][1] -> [SKIP][2] ([fdo#110841])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb5/igt@gem_ctx_sha...@exec-single-timeline-bsd.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/shard-iclb4/igt@gem_ctx_sha...@exec-single-timeline-bsd.html

  * igt@gem_exec_schedule@deep-bsd:
- shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#112146]) +4 similar 
issues
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb7/igt@gem_exec_sched...@deep-bsd.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/shard-iclb1/igt@gem_exec_sched...@deep-bsd.html

  * igt@gem_exec_schedule@preempt-queue-bsd1:
- shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#109276]) +14 similar 
issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb1/igt@gem_exec_sched...@preempt-queue-bsd1.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/shard-iclb8/igt@gem_exec_sched...@preempt-queue-bsd1.html

  * igt@gem_exec_store@pages-vcs1:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#112080]) +14 similar 
issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb1/igt@gem_exec_st...@pages-vcs1.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/shard-iclb5/igt@gem_exec_st...@pages-vcs1.html

  * igt@i915_pm_dc@dc6-psr:
- shard-iclb: [PASS][9] -> [FAIL][10] ([i915#454])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb4/igt@i915_pm...@dc6-psr.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/shard-iclb4/igt@i915_pm...@dc6-psr.html
- shard-skl:  [PASS][11] -> [FAIL][12] ([i915#454])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl6/igt@i915_pm...@dc6-psr.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/shard-skl6/igt@i915_pm...@dc6-psr.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
- shard-apl:  [PASS][13] -> [DMESG-WARN][14] ([i915#180]) +3 
similar issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-apl3/igt@i915_susp...@fence-restore-tiled2untiled.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/shard-apl4/igt@i915_susp...@fence-restore-tiled2untiled.html

  * igt@kms_cursor_crc@pipe-a-cursor-suspend:
- shard-kbl:  [PASS][15] -> [DMESG-WARN][16] ([i915#180]) +2 
similar issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-kbl3/igt@kms_cursor_...@pipe-a-cursor-suspend.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/shard-kbl7/igt@kms_cursor_...@pipe-a-cursor-suspend.html

  * igt@kms_cursor_crc@pipe-c-cursor-256x256-onscreen:
- shard-skl:  [PASS][17] -> [FAIL][18] ([i915#54])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl9/igt@kms_cursor_...@pipe-c-cursor-256x256-onscreen.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/shard-skl2/igt@kms_cursor_...@pipe-c-cursor-256x256-onscreen.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-kbl:  [PASS][19] -> [INCOMPLETE][20] ([i915#155])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-kbl6/igt@kms_frontbuffer_track...@fbc-suspend.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/shard-kbl2/igt@kms_frontbuffer_track...@fbc-suspend.html

  * igt@kms_pipe_crc_basic@hang-read-crc-pipe-c:
- shard-skl:  [PASS][21] -> [FAIL][22] ([i915#53])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl9/igt@kms_pipe_crc_ba...@hang-read-crc-pipe-c.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/shard-skl2/igt@kms_pipe_crc_ba...@hang-read-crc-pipe-c.html

  * igt@kms_plane_alpha_blend@pipe-b-coverage-7efc:
- shard-skl:  [PASS][23] -> [FAIL][24] ([fdo#108145] / [i915#265])
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-skl5/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17040/shard-skl9/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html

  * igt@kms_psr@psr2_primary_mmap_gtt:
- shard-iclb: [PASS][25] -> [SKIP][26] ([fdo#109441])
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8167/shard-iclb2/igt@kms_psr@psr2_primary_mmap_gtt.html
   [26]: