Re: [Intel-gfx] [PATCH 19/51] drm: Cleanups after drmm_add_final_kfree rollout

2020-04-01 Thread Daniel Vetter
On Thu, Apr 2, 2020 at 2:50 AM Laurent Pinchart
 wrote:
>
> Hi Daniel,
>
> (On a side note, git-format-patch accepts a -v argument to specify the
> version, I didn't realize you were not aware of it :-))
>
> On Mon, Mar 23, 2020 at 03:49:18PM +0100, Daniel Vetter wrote:
> > A few things:
> > - Update the example driver in the documentation.
> > - We can drop the old kfree in drm_dev_release.
> > - Add a WARN_ON check in drm_dev_register to make sure everyone calls
> >   drmm_add_final_kfree and there's no leaks.
> >
> > v2: Restore the full cleanup, I accidentally left some moved code
> > behind when fixing the bisectability of the series.
> >
> > Acked-by: Sam Ravnborg 
> > Acked-by: Thomas Zimmermann 
> > Cc: Sam Ravnborg 
> > Cc: Dan Carpenter 
> > Signed-off-by: Daniel Vetter 
> > ---
> >  drivers/gpu/drm/drm_drv.c | 12 +---
> >  1 file changed, 5 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> > index 877ded348b6e..7f9d7ea543a0 100644
> > --- a/drivers/gpu/drm/drm_drv.c
> > +++ b/drivers/gpu/drm/drm_drv.c
> > @@ -297,8 +297,6 @@ void drm_minor_release(struct drm_minor *minor)
> >   *
> >   *   drm_mode_config_cleanup(drm);
> >   *   drm_dev_fini(drm);
> > - *   kfree(priv->userspace_facing);
> > - *   kfree(priv);
> >   *   }
> >   *
> >   *   static struct drm_driver driver_drm_driver = {
> > @@ -326,10 +324,11 @@ void drm_minor_release(struct drm_minor *minor)
> >   *   kfree(drm);
> >   *   return ret;
> >   *   }
> > + *   drmm_add_final_kfree(drm, priv);
> >   *
> >   *   drm_mode_config_init(drm);
> >   *
> > - *   priv->userspace_facing = kzalloc(..., GFP_KERNEL);
> > + *   priv->userspace_facing = drmm_kzalloc(..., GFP_KERNEL);
> >   *   if (!priv->userspace_facing)
> >   *   return -ENOMEM;
> >   *
> > @@ -837,10 +836,7 @@ static void drm_dev_release(struct kref *ref)
> >
> >   drm_managed_release(dev);
> >
> > - if (!dev->driver->release && !dev->managed.final_kfree) {
> > - WARN_ON(!list_empty(>managed.resources));
> > - kfree(dev);
> > - } else if (dev->managed.final_kfree)
> > + if (dev->managed.final_kfree)
> >   kfree(dev->managed.final_kfree);
> >  }
> >
> > @@ -961,6 +957,8 @@ int drm_dev_register(struct drm_device *dev, unsigned 
> > long flags)
> >   if (!driver->load)
> >   drm_mode_config_validate(dev);
> >
> > + WARN_ON(!dev->managed.final_kfree);
>
> That's too aggressive. Driver freeing their private object in .release()
> isn't wrong. I'd even go as far as saying that it should be the norm,
> until we manage to find a better way to handle that (which this series
> doesn't achieve). Many drivers need to allocate resources at probe time
> before they get a chance to init the drm device. Those resources must be
> released in the error handling paths of probe. By requiring
> drmm_add_final_kfree(), you're making that much more complex. I can't
> release those resources in the error path anymore after calling
> drmm_add_final_kfree(), or they will be released twice. And I can't rely
> on drmm_* to release them in all cases, as the error path may be hit
> before touching anything drm-related.
>
> Until we figure out a good way forward and test it on a significant
> number of drivers, let's not add WARN_ON() that will be hit with the
> majority of drivers, forcing them to be converted to something that is
> clearly half-baked.

Hm, is this conjecture, or did you actually hit this WARN_ON with a
driver? Because I did audit them all, none should hit this, all are
fixed up.

Also, I'm now actually going through all the places where I've added
the drmm_add_final_kfree and remove it again, they are _all_ about 5
lines after the kzalloc that allocates the driver structure which has
drm_device embedded.

So I'd like to understand where you get your seemingly rather sure
convinction from that this is a horrible mistake here ...

/me confused
-Daniel

>
> > +
> >   if (drm_dev_needs_global_mutex(dev))
> >   mutex_lock(_global_mutex);
> >
>
> --
> Regards,
>
> Laurent Pinchart



-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 09/13] drm/i915: Eliminate port sync copy pasta

2020-04-01 Thread Souza, Jose
On Fri, 2020-03-13 at 18:48 +0200, Ville Syrjala wrote:
> From: Ville Syrjälä 
> 
> Remove the copy pasted port sync crtc enable functions and instead
> just split the normal function into the two parts we need.

Reviewed-by: José Roberto de Souza 

> 
> Signed-off-by: Ville Syrjälä 
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 128 +++
> 
>  1 file changed, 45 insertions(+), 83 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 292cac64f1ac..b56a5a49418f 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -14909,11 +14909,13 @@ static void intel_pipe_fastset(const struct
> intel_crtc_state *old_crtc_state,
>  }
>  
>  static void commit_pipe_config(struct intel_atomic_state *state,
> -struct intel_crtc_state *old_crtc_state,
> -struct intel_crtc_state *new_crtc_state)
> +struct intel_crtc *crtc)
>  {
> - struct intel_crtc *crtc = to_intel_crtc(new_crtc_state-
> >uapi.crtc);
>   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> + const struct intel_crtc_state *old_crtc_state =
> + intel_atomic_get_old_crtc_state(state, crtc);
> + const struct intel_crtc_state *new_crtc_state =
> + intel_atomic_get_new_crtc_state(state, crtc);
>   bool modeset = needs_modeset(new_crtc_state);
>  
>   /*
> @@ -14939,22 +14941,35 @@ static void commit_pipe_config(struct
> intel_atomic_state *state,
>   dev_priv->display.atomic_update_watermarks(state,
> crtc);
>  }
>  
> -static void intel_update_crtc(struct intel_crtc *crtc,
> -   struct intel_atomic_state *state,
> -   struct intel_crtc_state *old_crtc_state,
> -   struct intel_crtc_state *new_crtc_state)
> +static void intel_enable_crtc(struct intel_atomic_state *state,
> +   struct intel_crtc *crtc)
>  {
>   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> + const struct intel_crtc_state *new_crtc_state =
> + intel_atomic_get_new_crtc_state(state, crtc);
> +
> + if (!needs_modeset(new_crtc_state))
> + return;
> +
> + intel_crtc_update_active_timings(new_crtc_state);
> +
> + dev_priv->display.crtc_enable(state, crtc);
> +
> + /* vblanks work again, re-enable pipe CRC. */
> + intel_crtc_enable_pipe_crc(crtc);
> +}
> +
> +static void intel_update_crtc(struct intel_atomic_state *state,
> +   struct intel_crtc *crtc)
> +{
> + struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> + const struct intel_crtc_state *old_crtc_state =
> + intel_atomic_get_old_crtc_state(state, crtc);
> + struct intel_crtc_state *new_crtc_state =
> + intel_atomic_get_new_crtc_state(state, crtc);
>   bool modeset = needs_modeset(new_crtc_state);
>  
> - if (modeset) {
> - intel_crtc_update_active_timings(new_crtc_state);
> -
> - dev_priv->display.crtc_enable(state, crtc);
> -
> - /* vblanks work again, re-enable pipe CRC. */
> - intel_crtc_enable_pipe_crc(crtc);
> - } else {
> + if (!modeset) {
>   if (new_crtc_state->preload_luts &&
>   (new_crtc_state->uapi.color_mgmt_changed ||
>new_crtc_state->update_pipe))
> @@ -14974,7 +14989,7 @@ static void intel_update_crtc(struct
> intel_crtc *crtc,
>   /* Perform vblank evasion around commit operation */
>   intel_pipe_update_start(new_crtc_state);
>  
> - commit_pipe_config(state, old_crtc_state, new_crtc_state);
> + commit_pipe_config(state, crtc);
>  
>   if (INTEL_GEN(dev_priv) >= 9)
>   skl_update_planes_on_crtc(state, crtc);
> @@ -15081,30 +15096,19 @@ static void
> intel_commit_modeset_disables(struct intel_atomic_state *state)
>  
>  static void intel_commit_modeset_enables(struct intel_atomic_state
> *state)
>  {
> + struct intel_crtc_state *new_crtc_state;
>   struct intel_crtc *crtc;
> - struct intel_crtc_state *old_crtc_state, *new_crtc_state;
>   int i;
>  
> - for_each_oldnew_intel_crtc_in_state(state, crtc,
> old_crtc_state, new_crtc_state, i) {
> + for_each_new_intel_crtc_in_state(state, crtc, new_crtc_state,
> i) {
>   if (!new_crtc_state->hw.active)
>   continue;
>  
> - intel_update_crtc(crtc, state, old_crtc_state,
> -   new_crtc_state);
> + intel_enable_crtc(state, crtc);
> + intel_update_crtc(state, crtc);
>   }
>  }
>  
> -static void intel_crtc_enable_trans_port_sync(struct intel_crtc
> *crtc,
> -   struct intel_atomic_state
> *state,
> - 

Re: [Intel-gfx] [PATCH 12/13] drm/i915: Pass atomic state to encoder hooks

2020-04-01 Thread Souza, Jose
On Fri, 2020-03-13 at 18:48 +0200, Ville Syrjala wrote:
> From: Ville Syrjälä 
> 
> We're going to want access to the atomic state for iterating
> the slave crtcs when enabling the port sync master crtc. Pass
> the atomic state all the way down.
> 
> The alternative would be yet another encoder hook which we'll
> have to call after all the normal modeset stuff is done. Not
> really a fan of yet another hook just for this.
> 
> Note that during readout state sanitation we are now going
> to pass NULL as the atomic state since we don't have one.
> We need to change that and then we can also s/crtc_state/crtc/
> and s/conn_state/conn/ for the encoder hooks as well.

Reviewed-by: José Roberto de Souza 

> 
> Signed-off-by: Ville Syrjälä 
> ---
>  drivers/gpu/drm/i915/display/icl_dsi.c| 15 ++--
>  drivers/gpu/drm/i915/display/intel_crt.c  | 33 ---
>  drivers/gpu/drm/i915/display/intel_ddi.c  | 89 -
> --
>  drivers/gpu/drm/i915/display/intel_ddi.h  |  3 +-
>  drivers/gpu/drm/i915/display/intel_display.c  | 26 --
>  .../drm/i915/display/intel_display_types.h| 21 +++--
>  drivers/gpu/drm/i915/display/intel_dp.c   | 55 +++-
>  drivers/gpu/drm/i915/display/intel_dp_mst.c   | 21 +++--
>  drivers/gpu/drm/i915/display/intel_dvo.c  |  9 +-
>  drivers/gpu/drm/i915/display/intel_hdcp.c |  3 +-
>  drivers/gpu/drm/i915/display/intel_hdcp.h |  4 +-
>  drivers/gpu/drm/i915/display/intel_hdmi.c | 59 +++-
>  drivers/gpu/drm/i915/display/intel_lvds.c | 22 +++--
>  drivers/gpu/drm/i915/display/intel_panel.c|  3 +-
>  drivers/gpu/drm/i915/display/intel_panel.h|  3 +-
>  drivers/gpu/drm/i915/display/intel_sdvo.c | 17 ++--
>  drivers/gpu/drm/i915/display/intel_tv.c   |  9 +-
>  drivers/gpu/drm/i915/display/vlv_dsi.c| 12 ++-
>  18 files changed, 260 insertions(+), 144 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c
> b/drivers/gpu/drm/i915/display/icl_dsi.c
> index 17cee6f80d8b..ea9907c3e5ba 100644
> --- a/drivers/gpu/drm/i915/display/icl_dsi.c
> +++ b/drivers/gpu/drm/i915/display/icl_dsi.c
> @@ -1088,7 +1088,8 @@ static void gen11_dsi_powerup_panel(struct
> intel_encoder *encoder)
>   wait_for_cmds_dispatched_to_panel(encoder);
>  }
>  
> -static void gen11_dsi_pre_pll_enable(struct intel_encoder *encoder,
> +static void gen11_dsi_pre_pll_enable(struct intel_atomic_state
> *state,
> +  struct intel_encoder *encoder,
>const struct intel_crtc_state
> *crtc_state,
>const struct drm_connector_state
> *conn_state)
>  {
> @@ -1099,7 +1100,8 @@ static void gen11_dsi_pre_pll_enable(struct
> intel_encoder *encoder,
>   gen11_dsi_program_esc_clk_div(encoder, crtc_state);
>  }
>  
> -static void gen11_dsi_pre_enable(struct intel_encoder *encoder,
> +static void gen11_dsi_pre_enable(struct intel_atomic_state *state,
> +  struct intel_encoder *encoder,
>const struct intel_crtc_state
> *pipe_config,
>const struct drm_connector_state
> *conn_state)
>  {
> @@ -1118,7 +1120,8 @@ static void gen11_dsi_pre_enable(struct
> intel_encoder *encoder,
>   gen11_dsi_set_transcoder_timings(encoder, pipe_config);
>  }
>  
> -static void gen11_dsi_enable(struct intel_encoder *encoder,
> +static void gen11_dsi_enable(struct intel_atomic_state *state,
> +  struct intel_encoder *encoder,
>const struct intel_crtc_state *crtc_state,
>const struct drm_connector_state
> *conn_state)
>  {
> @@ -1264,7 +1267,8 @@ static void gen11_dsi_disable_io_power(struct
> intel_encoder *encoder)
>   }
>  }
>  
> -static void gen11_dsi_disable(struct intel_encoder *encoder,
> +static void gen11_dsi_disable(struct intel_atomic_state *state,
> +   struct intel_encoder *encoder,
> const struct intel_crtc_state
> *old_crtc_state,
> const struct drm_connector_state
> *old_conn_state)
>  {
> @@ -1290,7 +1294,8 @@ static void gen11_dsi_disable(struct
> intel_encoder *encoder,
>   gen11_dsi_disable_io_power(encoder);
>  }
>  
> -static void gen11_dsi_post_disable(struct intel_encoder *encoder,
> +static void gen11_dsi_post_disable(struct intel_atomic_state *state,
> +struct intel_encoder *encoder,
>  const struct intel_crtc_state
> *old_crtc_state,
>  const struct drm_connector_state
> *old_conn_state)
>  {
> diff --git a/drivers/gpu/drm/i915/display/intel_crt.c
> b/drivers/gpu/drm/i915/display/intel_crt.c
> index 78f9b6cde810..80c91404046f 100644
> --- a/drivers/gpu/drm/i915/display/intel_crt.c
> +++ b/drivers/gpu/drm/i915/display/intel_crt.c
> @@ -203,27 +203,31 @@ static void 

Re: [Intel-gfx] [PATCH 6/6] drm/i915/tc/tgl: Implement TC cold sequences

2020-04-01 Thread Imre Deak
On Thu, Apr 02, 2020 at 02:36:53AM +0300, Souza, Jose wrote:
> On Wed, 2020-04-01 at 15:55 +0300, Imre Deak wrote:
> > On Tue, Mar 31, 2020 at 05:41:20PM -0700, José Roberto de Souza
> > wrote:
> > > TC ports can enter in TCCOLD to save power and is required to
> > > request
> > > to PCODE to exit this state before use or read to TC registers.
> > > 
> > > For TGL there is a new MBOX command to do that with a parameter to
> > > ask
> > > PCODE to exit and block TCCOLD entry or unblock TCCOLD entry.
> > > 
> > > So adding a new power domain to reuse the refcount and only allow
> > > TC cold when all TC ports are not in use.
> > > 
> > > BSpec: 49294
> > > Cc: Imre Deak 
> > > Cc: Cooper Chiou 
> > > Cc: Kai-Heng Feng 
> > > Signed-off-by: José Roberto de Souza 
> > > ---
> > >  .../drm/i915/display/intel_display_power.c| 46 ++
> > >  .../drm/i915/display/intel_display_power.h|  1 +
> > >  drivers/gpu/drm/i915/display/intel_tc.c   | 63
> > > +++
> > >  drivers/gpu/drm/i915/display/intel_tc.h   |  1 +
> > >  drivers/gpu/drm/i915/i915_reg.h   |  3 +
> > >  5 files changed, 103 insertions(+), 11 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c
> > > b/drivers/gpu/drm/i915/display/intel_display_power.c
> > > index 1ccd57d645c7..5de115583146 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> > > @@ -2842,6 +2842,8 @@ void intel_display_power_put(struct
> > > drm_i915_private *dev_priv,
> > >  #define TGL_AUX_I_TBT6_IO_POWER_DOMAINS (\
> > >   BIT_ULL(POWER_DOMAIN_AUX_I_TBT))
> > >  
> > > +#define TGL_TC_COLD_OFF (BIT_ULL(POWER_DOMAIN_TC_COLD_OFF))
> > 
> > TGL_TC_COLD_OFF_POWER_DOMAINS
> 
> Okay
> 
> > and should also include all the AUX power domains.
> 
> So we would call intel_display_power_get() in intel_tc with aux domain
> instead of POWER_DOMAIN_TC_COLD_OFF?

No, but we also need to block tc-cold whenever getting an AUX power
reference.

> > > +
> > >  static const struct i915_power_well_ops
> > > i9xx_always_on_power_well_ops = {
> > >   .sync_hw = i9xx_power_well_sync_hw_noop,
> > >   .enable = i9xx_always_on_power_well_noop,
> > > @@ -3944,6 +3946,44 @@ static const struct i915_power_well_desc
> > > ehl_power_wells[] = {
> > >   },
> > >  };
> > >  
> > > +static void
> > > +tgl_tc_cold_off_power_well_enable(struct drm_i915_private *i915,
> > > +   struct i915_power_well *power_well)
> > > +{
> > > + intel_tc_tgl_tc_cold_request(i915, true);
> > > +}
> > > +
> > > +static void
> > > +tgl_tc_cold_off_power_well_disable(struct drm_i915_private *i915,
> > > +struct i915_power_well *power_well)
> > > +{
> > > + intel_tc_tgl_tc_cold_request(i915, false);
> > > +}
> > > +
> > > +static void
> > > +tgl_tc_cold_off_power_well_sync_hw(struct drm_i915_private *i915,
> > > +struct i915_power_well *power_well)
> > > +{
> > > + if (power_well->count > 0)
> > > + tgl_tc_cold_off_power_well_enable(i915, power_well);
> > > + else
> > > + tgl_tc_cold_off_power_well_disable(i915, power_well);
> > > +}
> > > +
> > > +static bool tgl_tc_cold_off_power_well_is_enabled(struct
> > > drm_i915_private *dev_priv,
> > > +   struct
> > > i915_power_well *power_well)
> > > +{
> > > + /* There is no way to just read it from PCODE */
> > > + return false;
> > > +}
> > > +
> > > +static const struct i915_power_well_ops tgl_tc_cold_off_ops = {
> > > + .sync_hw = tgl_tc_cold_off_power_well_sync_hw,
> > > + .enable = tgl_tc_cold_off_power_well_enable,
> > > + .disable = tgl_tc_cold_off_power_well_disable,
> > > + .is_enabled = tgl_tc_cold_off_power_well_is_enabled,
> > > +};
> > > +
> > >  static const struct i915_power_well_desc tgl_power_wells[] = {
> > >   {
> > >   .name = "always-on",
> > > @@ -4271,6 +4311,12 @@ static const struct i915_power_well_desc
> > > tgl_power_wells[] = {
> > >   .hsw.irq_pipe_mask = BIT(PIPE_D),
> > >   },
> > >   },
> > > + {
> > > + .name = "TC cold off",
> > > + .domains = POWER_DOMAIN_TC_COLD_OFF,
> > 
> > TGL_TC_COLD_OFF_POWER_DOMAINS
> > 
> > > + .ops = _tc_cold_off_ops,
> > > + .id = DISP_PW_ID_NONE,
> > > + },
> > >  };
> > >  
> > >  static int
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h
> > > b/drivers/gpu/drm/i915/display/intel_display_power.h
> > > index da64a5edae7a..070457e7b948 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_power.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_power.h
> > > @@ -76,6 +76,7 @@ enum intel_display_power_domain {
> > >   POWER_DOMAIN_MODESET,
> > >   POWER_DOMAIN_GT_IRQ,
> > >   POWER_DOMAIN_DPLL_DC_OFF,
> > > + POWER_DOMAIN_TC_COLD_OFF,
> > >   POWER_DOMAIN_INIT,
> > >  
> > >   POWER_DOMAIN_NUM,
> > > diff --git 

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

2020-04-01 Thread Imre Deak
On Thu, Apr 02, 2020 at 01:35:30AM +0300, Souza, Jose wrote:
> On Wed, 2020-04-01 at 15:43 +0300, Imre Deak wrote:
> > On Tue, Mar 31, 2020 at 05:41:19PM -0700, José Roberto de Souza
> > wrote:
> > > This is required for legacy/static TC ports as IOM is not aware of
> > > the connection and will not trigger the TC cold exit.
> > > 
> > > Just request PCODE to exit TCCOLD is not enough as it could enter
> > > again be driver makes use of the port, to prevent it BSpec states
> > > that
> > > aux powerwell should be held.
> > > 
> > > So here embedding the TC cold exit sequence into ICL aux enable,
> > > it will enable aux, request tc cold exit and depending in the TC
> > > live
> > > state continue with the regular aux enable sequence.
> > > 
> > > And then turning on aux power well during tc lock and turning off
> > > during unlock both depending into the TC port refcount.
> > > 
> > > BSpec: 21750
> > > Fixes: https://gitlab.freedesktop.org/drm/intel/issues/1296
> > > Cc: Imre Deak 
> > > Cc: Cooper Chiou 
> > > Cc: Kai-Heng Feng 
> > > Signed-off-by: José Roberto de Souza 
> > > ---
> > > 
> > > Will run some tests in the office with TBT dockstation to check if
> > > it will be a issue keep both aux enabled. Otherwise more changes
> > > will
> > > be required here.
> > > 
> > >  .../drm/i915/display/intel_display_power.c| 12 -
> > >  .../drm/i915/display/intel_display_types.h|  1 +
> > >  drivers/gpu/drm/i915/display/intel_tc.c   | 47
> > > ++-
> > >  drivers/gpu/drm/i915/display/intel_tc.h   |  2 +
> > >  drivers/gpu/drm/i915/i915_reg.h   |  1 +
> > >  5 files changed, 59 insertions(+), 4 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c
> > > b/drivers/gpu/drm/i915/display/intel_display_power.c
> > > index dbd61517ba63..1ccd57d645c7 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> > > @@ -592,9 +592,17 @@ icl_tc_phy_aux_power_well_enable(struct
> > > drm_i915_private *dev_priv,
> > >  
> > >   _hsw_power_well_enable(dev_priv, power_well);
> > >  
> > > - /* TODO ICL TC cold handling */
> > > + if (INTEL_GEN(dev_priv) == 11)
> > 
> > Should be if (ICL && dig_port->tc_legacy_port)
> 
> Makes sence.
> Oh so we could use it on __intel_tc_port_lock() too and
> don't do this stuff for non legacy ports. Until we get a report of a
> system with a wrong VBT :P

Yes, it's a loss of the vendor shipping a corrupt VBT. But we'll print
an error and fix up the flag.

> > > + intel_tc_icl_tc_cold_exit(dev_priv);
> > >  
> > > - _hsw_power_well_continue_enable(dev_priv, power_well);
> > > + /*
> > > +  * To avoid power well enable timeouts when disconnected or in
> > > TBT mode
> > > +  * when doing the TC cold exit sequence for GEN11
> > > +  */
> > > + if (INTEL_GEN(dev_priv) != 11 ||
> > > + (intel_tc_port_live_status_mask(dig_port) &
> > > +  (TC_PORT_LEGACY | TC_PORT_DP_ALT)))
> > > + _hsw_power_well_continue_enable(dev_priv, power_well);
> > 
> > Why can't we call this unconditionally?
> 
> Because we are requesting aux power of regular TC ports as part of tc
> cold exit sequence, if the port is disconnected it will timeout in
> hsw_wait_for_power_well_enable().
> 
> Anyways it is wrong as it is not
> taking care of TBT ports, so changing to: if (INTEL_GEN(dev_priv) != 11
> || !dig_port->tc_legacy_port || intel_tc_port_live_status_mask())

What I thought is that the legacy AUX power request will ack after the
PCODE request completes, regardless of whether the sink is connected or
not. If that is not the case then let's just suppress the timeout for
legacy AUX power wells the same way we do that for TBT AUX. I don't like
to make the above call conditional on the live status flag, as that can
change at any moment. So in either case let's make the above call
unconditional.

> > >  
> > >   if (INTEL_GEN(dev_priv) >= 12 && !power_well->desc-
> > > >hsw.is_tc_tbt) {

Could you check your email client, so that it doesn't wrap lines?

> > >   enum tc_port tc_port;
> > > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > index 176ab5f1e867..a9a4a3c1b4d7 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > > @@ -1391,6 +1391,7 @@ struct intel_digital_port {
> > >   enum intel_display_power_domain ddi_io_power_domain;
> > >   struct mutex tc_lock;   /* protects the TypeC port mode */
> > >   intel_wakeref_t tc_lock_wakeref;
> > > + intel_wakeref_t tc_cold_wakeref;
> > >   int tc_link_refcount;
> > >   bool tc_legacy_port:1;
> > >   char tc_port_name[8];
> > > diff --git a/drivers/gpu/drm/i915/display/intel_tc.c
> > > b/drivers/gpu/drm/i915/display/intel_tc.c
> > > index d944be935423..b6d67f069ef7 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_tc.c
> > > 

Re: [Intel-gfx] [PATCH v2 07/13] drm/i915: Store cpu_transcoder_mask in device info

2020-04-01 Thread Souza, Jose
On Wed, 2020-03-18 at 19:02 +0200, Ville Syrjala wrote:
> From: Ville Syrjälä 
> 
> We have a bunch of code that would like to know which
> CPU transcoders are actually present in the hardware. Rather than
> use various ad-hoc methods let's just include a full bitmask in
> the device info, alongside pipe_mask.
> 
> v2: Rebase
> 
> Signed-off-by: Ville Syrjälä 
> ---
>  drivers/gpu/drm/i915/display/intel_ddi.c |  6 ++--
>  drivers/gpu/drm/i915/display/intel_display.c | 13 ++---
>  drivers/gpu/drm/i915/display/intel_display.h |  8 --
>  drivers/gpu/drm/i915/i915_drv.h  |  2 +-
>  drivers/gpu/drm/i915/i915_pci.c  | 23 +++-
>  drivers/gpu/drm/i915/intel_device_info.c | 29 
> 
>  drivers/gpu/drm/i915/intel_device_info.h |  1 +
>  7 files changed, 53 insertions(+), 29 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c
> b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 8bb6c583abb8..0fea2ec2cdd8 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -1689,7 +1689,7 @@ bool intel_ddi_connector_get_hw_state(struct
> intel_connector *intel_connector)
>   goto out;
>   }
>  
> - if (HAS_TRANSCODER_EDP(dev_priv) && port == PORT_A)
> + if (HAS_TRANSCODER(dev_priv, TRANSCODER_EDP) && port == PORT_A)
>   cpu_transcoder = TRANSCODER_EDP;
>   else
>   cpu_transcoder = (enum transcoder) pipe;
> @@ -1751,7 +1751,7 @@ static void intel_ddi_get_encoder_pipes(struct
> intel_encoder *encoder,
>   if (!(tmp & DDI_BUF_CTL_ENABLE))
>   goto out;
>  
> - if (HAS_TRANSCODER_EDP(dev_priv) && port == PORT_A) {
> + if (HAS_TRANSCODER(dev_priv, TRANSCODER_EDP) && port == PORT_A)
> {
>   tmp = intel_de_read(dev_priv,
>   TRANS_DDI_FUNC_CTL(TRANSCODER_EDP))
> ;
>  
> @@ -4076,7 +4076,7 @@ static int intel_ddi_compute_config(struct
> intel_encoder *encoder,
>   enum port port = encoder->port;
>   int ret;
>  
> - if (HAS_TRANSCODER_EDP(dev_priv) && port == PORT_A)
> + if (HAS_TRANSCODER(dev_priv, TRANSCODER_EDP) && port == PORT_A)
>   pipe_config->cpu_transcoder = TRANSCODER_EDP;
>  
>   if (intel_crtc_has_type(pipe_config, INTEL_OUTPUT_HDMI)) {
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 4840988dc58d..292cac64f1ac 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -10855,7 +10855,7 @@ static bool hsw_get_transcoder_state(struct
> intel_crtc *crtc,
>   panel_transcoder_mask |=
>   BIT(TRANSCODER_DSI_0) | BIT(TRANSCODER_DSI_1);
>  
> - if (HAS_TRANSCODER_EDP(dev_priv))
> + if (HAS_TRANSCODER(dev_priv, TRANSCODER_EDP))
>   panel_transcoder_mask |= BIT(TRANSCODER_EDP);
>  
>   /*
> @@ -18712,15 +18712,6 @@ void
> intel_modeset_driver_remove_noirq(struct drm_i915_private *i915)
>  
>  #if IS_ENABLED(CONFIG_DRM_I915_CAPTURE_ERROR)
>  
> -static bool
> -has_transcoder(struct drm_i915_private *dev_priv, enum transcoder
> cpu_transcoder)
> -{
> - if (cpu_transcoder == TRANSCODER_EDP)
> - return HAS_TRANSCODER_EDP(dev_priv);
> - else
> - return INTEL_INFO(dev_priv)->pipe_mask &
> BIT(cpu_transcoder);
> -}
> -
>  struct intel_display_error_state {
>  
>   u32 power_well_driver;
> @@ -18829,7 +18820,7 @@ intel_display_capture_error_state(struct
> drm_i915_private *dev_priv)
>   for (i = 0; i < ARRAY_SIZE(error->transcoder); i++) {
>   enum transcoder cpu_transcoder = transcoders[i];
>  
> - if (!has_transcoder(dev_priv, cpu_transcoder))
> + if (!HAS_TRANSCODER(dev_priv, cpu_transcoder))
>   continue;
>  
>   error->transcoder[i].available = true;
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h
> b/drivers/gpu/drm/i915/display/intel_display.h
> index adb1225a3480..cc7f287804d7 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -320,9 +320,13 @@ enum phy_fia {
>   for_each_pipe(__dev_priv, __p) \
>   for_each_if((__mask) & BIT(__p))
>  
> -#define for_each_cpu_transcoder_masked(__dev_priv, __t, __mask) \
> +#define for_each_cpu_transcoder(__dev_priv, __t) \
>   for ((__t) = 0; (__t) < I915_MAX_TRANSCODERS; (__t)++)  \
> - for_each_if ((__mask) & (1 << (__t)))
> + for_each_if (INTEL_INFO(__dev_priv)-
> >cpu_transcoder_mask & BIT(__t))
> +
> +#define for_each_cpu_transcoder_masked(__dev_priv, __t, __mask) \
> + for_each_cpu_transcoder(__dev_priv, __t) \
> + for_each_if ((__mask) & BIT(__t))
>  
>  #define for_each_universal_plane(__dev_priv, __pipe, __p)
> \
>   for ((__p) = 0;

Re: [Intel-gfx] [PATCH 19/51] drm: Cleanups after drmm_add_final_kfree rollout

2020-04-01 Thread Laurent Pinchart
Hi Daniel,

(On a side note, git-format-patch accepts a -v argument to specify the
version, I didn't realize you were not aware of it :-))

On Mon, Mar 23, 2020 at 03:49:18PM +0100, Daniel Vetter wrote:
> A few things:
> - Update the example driver in the documentation.
> - We can drop the old kfree in drm_dev_release.
> - Add a WARN_ON check in drm_dev_register to make sure everyone calls
>   drmm_add_final_kfree and there's no leaks.
> 
> v2: Restore the full cleanup, I accidentally left some moved code
> behind when fixing the bisectability of the series.
> 
> Acked-by: Sam Ravnborg 
> Acked-by: Thomas Zimmermann 
> Cc: Sam Ravnborg 
> Cc: Dan Carpenter 
> Signed-off-by: Daniel Vetter 
> ---
>  drivers/gpu/drm/drm_drv.c | 12 +---
>  1 file changed, 5 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c
> index 877ded348b6e..7f9d7ea543a0 100644
> --- a/drivers/gpu/drm/drm_drv.c
> +++ b/drivers/gpu/drm/drm_drv.c
> @@ -297,8 +297,6 @@ void drm_minor_release(struct drm_minor *minor)
>   *
>   *   drm_mode_config_cleanup(drm);
>   *   drm_dev_fini(drm);
> - *   kfree(priv->userspace_facing);
> - *   kfree(priv);
>   *   }
>   *
>   *   static struct drm_driver driver_drm_driver = {
> @@ -326,10 +324,11 @@ void drm_minor_release(struct drm_minor *minor)
>   *   kfree(drm);
>   *   return ret;
>   *   }
> + *   drmm_add_final_kfree(drm, priv);
>   *
>   *   drm_mode_config_init(drm);
>   *
> - *   priv->userspace_facing = kzalloc(..., GFP_KERNEL);
> + *   priv->userspace_facing = drmm_kzalloc(..., GFP_KERNEL);
>   *   if (!priv->userspace_facing)
>   *   return -ENOMEM;
>   *
> @@ -837,10 +836,7 @@ static void drm_dev_release(struct kref *ref)
>  
>   drm_managed_release(dev);
>  
> - if (!dev->driver->release && !dev->managed.final_kfree) {
> - WARN_ON(!list_empty(>managed.resources));
> - kfree(dev);
> - } else if (dev->managed.final_kfree)
> + if (dev->managed.final_kfree)
>   kfree(dev->managed.final_kfree);
>  }
>  
> @@ -961,6 +957,8 @@ int drm_dev_register(struct drm_device *dev, unsigned 
> long flags)
>   if (!driver->load)
>   drm_mode_config_validate(dev);
>  
> + WARN_ON(!dev->managed.final_kfree);

That's too aggressive. Driver freeing their private object in .release()
isn't wrong. I'd even go as far as saying that it should be the norm,
until we manage to find a better way to handle that (which this series
doesn't achieve). Many drivers need to allocate resources at probe time
before they get a chance to init the drm device. Those resources must be
released in the error handling paths of probe. By requiring
drmm_add_final_kfree(), you're making that much more complex. I can't
release those resources in the error path anymore after calling
drmm_add_final_kfree(), or they will be released twice. And I can't rely
on drmm_* to release them in all cases, as the error path may be hit
before touching anything drm-related.

Until we figure out a good way forward and test it on a significant
number of drivers, let's not add WARN_ON() that will be hit with the
majority of drivers, forcing them to be converted to something that is
clearly half-baked.

> +
>   if (drm_dev_needs_global_mutex(dev))
>   mutex_lock(_global_mutex);
>  

-- 
Regards,

Laurent Pinchart
___
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/gem: Drop cached obj->bind_count (rev3)

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/gem: Drop cached obj->bind_count (rev3)
URL   : https://patchwork.freedesktop.org/series/74593/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8235 -> Patchwork_17173


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Possible fixes 

  * {igt@gem_exec_parallel@engines@contexts}:
- {fi-tgl-dsi}:   [INCOMPLETE][1] ([i915#529]) -> [PASS][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8235/fi-tgl-dsi/igt@gem_exec_parallel@engi...@contexts.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17173/fi-tgl-dsi/igt@gem_exec_parallel@engi...@contexts.html

  
 Warnings 

  * igt@debugfs_test@read_all_entries:
- fi-kbl-x1275:   [DMESG-WARN][3] ([i915#62] / [i915#92]) -> 
[DMESG-WARN][4] ([i915#62] / [i915#92] / [i915#95]) +4 similar issues
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8235/fi-kbl-x1275/igt@debugfs_test@read_all_entries.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17173/fi-kbl-x1275/igt@debugfs_test@read_all_entries.html

  * igt@kms_flip@basic-flip-vs-modeset:
- fi-kbl-x1275:   [DMESG-WARN][5] ([i915#62] / [i915#92] / [i915#95]) 
-> [DMESG-WARN][6] ([i915#62] / [i915#92]) +5 similar issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8235/fi-kbl-x1275/igt@kms_f...@basic-flip-vs-modeset.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17173/fi-kbl-x1275/igt@kms_f...@basic-flip-vs-modeset.html

  
  {name}: This element is suppressed. This means it is ignored when computing
  the status of the difference (SUCCESS, WARNING, or FAILURE).

  [i915#529]: https://gitlab.freedesktop.org/drm/intel/issues/529
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95


Participating hosts (47 -> 38)
--

  Additional (3): fi-gdg-551 fi-cfl-8109u fi-skl-6700k2 
  Missing(12): fi-ilk-m540 fi-bdw-samus fi-bdw-5557u fi-byt-squawks 
fi-bsw-cyan fi-ctg-p8600 fi-elk-e7500 fi-bsw-kefka fi-kbl-7560u fi-byt-clapper 
fi-skl-6600u fi-snb-2600 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_8235 -> Patchwork_17173

  CI-20190529: 20190529
  CI_DRM_8235: 8e658041c38badcc50eb074ae0797989fe1fa776 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5556: 311cb1b360b7ae00fab80b822cd34fd512f08ce9 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17173: c3b89dcced3239d5ac1cffcb2a6b4110ba062370 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

c3b89dcced32 drm/i915/gem: Drop cached obj->bind_count

== Logs ==

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


Re: [Intel-gfx] [PATCH v2 4/8] drm/i915: Flatten a bunch of the pfit functions

2020-04-01 Thread Manasi Navare
On Wed, Feb 12, 2020 at 06:17:34PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä 
> 
> Most of the pfit functions are of the form:
> 
> func()
> {
>   if (pfit_enabled) {
>   ...
>   }
> }
> 
> Flip the pfit_enabled check around to flatten the functions.
> 
> And while we're touching all this let's do the usual
> s/pipe_config/crtc_state/ replacement.
> 
> Signed-off-by: Ville Syrjälä 
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 233 +--
>  1 file changed, 115 insertions(+), 118 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index becc6322b7dc..796e27c4aece 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -6233,42 +6233,42 @@ static void skl_pfit_enable(const struct 
> intel_crtc_state *crtc_state)
>   enum pipe pipe = crtc->pipe;
>   const struct intel_crtc_scaler_state *scaler_state =
>   _state->scaler_state;
> + u16 uv_rgb_hphase, uv_rgb_vphase;
> + int pfit_w, pfit_h, hscale, vscale;
> + unsigned long irqflags;
> + int id;
>  
> - if (crtc_state->pch_pfit.enabled) {
> - u16 uv_rgb_hphase, uv_rgb_vphase;
> - int pfit_w, pfit_h, hscale, vscale;
> - unsigned long irqflags;
> - int id;
> + if (!crtc_state->pch_pfit.enabled)
> + return;
>  
> - if (WARN_ON(crtc_state->scaler_state.scaler_id < 0))
> - return;
> + if (WARN_ON(crtc_state->scaler_state.scaler_id < 0))
> + return;
>  
> - pfit_w = (crtc_state->pch_pfit.size >> 16) & 0x;
> - pfit_h = crtc_state->pch_pfit.size & 0x;
> + pfit_w = (crtc_state->pch_pfit.size >> 16) & 0x;
> + pfit_h = crtc_state->pch_pfit.size & 0x;
>  
> - hscale = (crtc_state->pipe_src_w << 16) / pfit_w;
> - vscale = (crtc_state->pipe_src_h << 16) / pfit_h;
> + hscale = (crtc_state->pipe_src_w << 16) / pfit_w;
> + vscale = (crtc_state->pipe_src_h << 16) / pfit_h;
>  
> - uv_rgb_hphase = skl_scaler_calc_phase(1, hscale, false);
> - uv_rgb_vphase = skl_scaler_calc_phase(1, vscale, false);
> + uv_rgb_hphase = skl_scaler_calc_phase(1, hscale, false);
> + uv_rgb_vphase = skl_scaler_calc_phase(1, vscale, false);
>  
> - id = scaler_state->scaler_id;
> + id = scaler_state->scaler_id;
>  
> - spin_lock_irqsave(_priv->uncore.lock, irqflags);
> + spin_lock_irqsave(_priv->uncore.lock, irqflags);
>  
> - intel_de_write_fw(dev_priv, SKL_PS_CTRL(pipe, id), PS_SCALER_EN 
> |
> -   PS_FILTER_MEDIUM | 
> scaler_state->scalers[id].mode);
> - intel_de_write_fw(dev_priv, SKL_PS_VPHASE(pipe, id),
> -   PS_Y_PHASE(0) | 
> PS_UV_RGB_PHASE(uv_rgb_vphase));
> - intel_de_write_fw(dev_priv, SKL_PS_HPHASE(pipe, id),
> -   PS_Y_PHASE(0) | 
> PS_UV_RGB_PHASE(uv_rgb_hphase));
> - intel_de_write_fw(dev_priv, SKL_PS_WIN_POS(pipe, id),
> -   crtc_state->pch_pfit.pos);
> - intel_de_write_fw(dev_priv, SKL_PS_WIN_SZ(pipe, id),
> -   crtc_state->pch_pfit.size);
> + intel_de_write_fw(dev_priv, SKL_PS_CTRL(pipe, id), PS_SCALER_EN |
> +   PS_FILTER_MEDIUM | scaler_state->scalers[id].mode);
> + intel_de_write_fw(dev_priv, SKL_PS_VPHASE(pipe, id),
> +   PS_Y_PHASE(0) | PS_UV_RGB_PHASE(uv_rgb_vphase));
> + intel_de_write_fw(dev_priv, SKL_PS_HPHASE(pipe, id),
> +   PS_Y_PHASE(0) | PS_UV_RGB_PHASE(uv_rgb_hphase));
> + intel_de_write_fw(dev_priv, SKL_PS_WIN_POS(pipe, id),
> +   crtc_state->pch_pfit.pos);
> + intel_de_write_fw(dev_priv, SKL_PS_WIN_SZ(pipe, id),
> +   crtc_state->pch_pfit.size);
>  
> - spin_unlock_irqrestore(_priv->uncore.lock, irqflags);
> - }
> + spin_unlock_irqrestore(_priv->uncore.lock, irqflags);
>  }
>  
>  static void ilk_pfit_enable(const struct intel_crtc_state *crtc_state)
> @@ -6277,22 +6277,23 @@ static void ilk_pfit_enable(const struct 
> intel_crtc_state *crtc_state)
>   struct drm_i915_private *dev_priv = to_i915(crtc->base.dev);
>   enum pipe pipe = crtc->pipe;
>  
> - if (crtc_state->pch_pfit.enabled) {
> - /* Force use of hard-coded filter coefficients
> -  * as some pre-programmed values are broken,
> -  * e.g. x201.
> -  */
> - if (IS_IVYBRIDGE(dev_priv) || IS_HASWELL(dev_priv))
> - intel_de_write(dev_priv, PF_CTL(pipe),
> -PF_ENABLE | PF_FILTER_MED_3x3 | 
> PF_PIPE_SEL_IVB(pipe));
> - else
> - 

Re: [Intel-gfx] [PATCH 6/6] drm/i915/tc/tgl: Implement TC cold sequences

2020-04-01 Thread Souza, Jose
On Wed, 2020-04-01 at 15:55 +0300, Imre Deak wrote:
> On Tue, Mar 31, 2020 at 05:41:20PM -0700, José Roberto de Souza
> wrote:
> > TC ports can enter in TCCOLD to save power and is required to
> > request
> > to PCODE to exit this state before use or read to TC registers.
> > 
> > For TGL there is a new MBOX command to do that with a parameter to
> > ask
> > PCODE to exit and block TCCOLD entry or unblock TCCOLD entry.
> > 
> > So adding a new power domain to reuse the refcount and only allow
> > TC cold when all TC ports are not in use.
> > 
> > BSpec: 49294
> > Cc: Imre Deak 
> > Cc: Cooper Chiou 
> > Cc: Kai-Heng Feng 
> > Signed-off-by: José Roberto de Souza 
> > ---
> >  .../drm/i915/display/intel_display_power.c| 46 ++
> >  .../drm/i915/display/intel_display_power.h|  1 +
> >  drivers/gpu/drm/i915/display/intel_tc.c   | 63
> > +++
> >  drivers/gpu/drm/i915/display/intel_tc.h   |  1 +
> >  drivers/gpu/drm/i915/i915_reg.h   |  3 +
> >  5 files changed, 103 insertions(+), 11 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c
> > b/drivers/gpu/drm/i915/display/intel_display_power.c
> > index 1ccd57d645c7..5de115583146 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> > @@ -2842,6 +2842,8 @@ void intel_display_power_put(struct
> > drm_i915_private *dev_priv,
> >  #define TGL_AUX_I_TBT6_IO_POWER_DOMAINS (  \
> > BIT_ULL(POWER_DOMAIN_AUX_I_TBT))
> >  
> > +#define TGL_TC_COLD_OFF (BIT_ULL(POWER_DOMAIN_TC_COLD_OFF))
> 
> TGL_TC_COLD_OFF_POWER_DOMAINS

Okay

> and should also include all the AUX power domains.

So we would call intel_display_power_get() in intel_tc with aux domain
instead of POWER_DOMAIN_TC_COLD_OFF?

> 
> > +
> >  static const struct i915_power_well_ops
> > i9xx_always_on_power_well_ops = {
> > .sync_hw = i9xx_power_well_sync_hw_noop,
> > .enable = i9xx_always_on_power_well_noop,
> > @@ -3944,6 +3946,44 @@ static const struct i915_power_well_desc
> > ehl_power_wells[] = {
> > },
> >  };
> >  
> > +static void
> > +tgl_tc_cold_off_power_well_enable(struct drm_i915_private *i915,
> > + struct i915_power_well *power_well)
> > +{
> > +   intel_tc_tgl_tc_cold_request(i915, true);
> > +}
> > +
> > +static void
> > +tgl_tc_cold_off_power_well_disable(struct drm_i915_private *i915,
> > +  struct i915_power_well *power_well)
> > +{
> > +   intel_tc_tgl_tc_cold_request(i915, false);
> > +}
> > +
> > +static void
> > +tgl_tc_cold_off_power_well_sync_hw(struct drm_i915_private *i915,
> > +  struct i915_power_well *power_well)
> > +{
> > +   if (power_well->count > 0)
> > +   tgl_tc_cold_off_power_well_enable(i915, power_well);
> > +   else
> > +   tgl_tc_cold_off_power_well_disable(i915, power_well);
> > +}
> > +
> > +static bool tgl_tc_cold_off_power_well_is_enabled(struct
> > drm_i915_private *dev_priv,
> > + struct
> > i915_power_well *power_well)
> > +{
> > +   /* There is no way to just read it from PCODE */
> > +   return false;
> > +}
> > +
> > +static const struct i915_power_well_ops tgl_tc_cold_off_ops = {
> > +   .sync_hw = tgl_tc_cold_off_power_well_sync_hw,
> > +   .enable = tgl_tc_cold_off_power_well_enable,
> > +   .disable = tgl_tc_cold_off_power_well_disable,
> > +   .is_enabled = tgl_tc_cold_off_power_well_is_enabled,
> > +};
> > +
> >  static const struct i915_power_well_desc tgl_power_wells[] = {
> > {
> > .name = "always-on",
> > @@ -4271,6 +4311,12 @@ static const struct i915_power_well_desc
> > tgl_power_wells[] = {
> > .hsw.irq_pipe_mask = BIT(PIPE_D),
> > },
> > },
> > +   {
> > +   .name = "TC cold off",
> > +   .domains = POWER_DOMAIN_TC_COLD_OFF,
> 
> TGL_TC_COLD_OFF_POWER_DOMAINS
> 
> > +   .ops = _tc_cold_off_ops,
> > +   .id = DISP_PW_ID_NONE,
> > +   },
> >  };
> >  
> >  static int
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h
> > b/drivers/gpu/drm/i915/display/intel_display_power.h
> > index da64a5edae7a..070457e7b948 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_power.h
> > +++ b/drivers/gpu/drm/i915/display/intel_display_power.h
> > @@ -76,6 +76,7 @@ enum intel_display_power_domain {
> > POWER_DOMAIN_MODESET,
> > POWER_DOMAIN_GT_IRQ,
> > POWER_DOMAIN_DPLL_DC_OFF,
> > +   POWER_DOMAIN_TC_COLD_OFF,
> > POWER_DOMAIN_INIT,
> >  
> > POWER_DOMAIN_NUM,
> > diff --git a/drivers/gpu/drm/i915/display/intel_tc.c
> > b/drivers/gpu/drm/i915/display/intel_tc.c
> > index b6d67f069ef7..58f19037411a 100644
> > --- a/drivers/gpu/drm/i915/display/intel_tc.c
> > +++ b/drivers/gpu/drm/i915/display/intel_tc.c
> > @@ -507,11 +507,16 @@ static void __intel_tc_port_lock(struct
> > intel_digital_port *dig_port,
> >  
> > 

Re: [Intel-gfx] [PATCH v2 3/8] drm/i915: Fix skl+ non-scaled pfit modes

2020-04-01 Thread Manasi Navare
On Wed, Feb 12, 2020 at 06:17:33PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä 
> 
> Fix skl_update_scaler_crtc() to deal with different scaling
> modes correctly. The current implementation assumes
> DRM_MODE_SCALE_FULLSCREEN. Fortunately we don't expose any
> border properties currently so the code does actually end
> up doing the right thing (assigning a scaler for pfit).
> The code does need to be fixed before any borders are
> exposed.
> 
> Also we have redundant calls to skl_update_scaler_crtc() in
> dp/hdmi .compute_config() which can be nuked. They were anyway
> called before we had even computed the pfit state so were
> basically nonsense. The real call we need to keep is in
> intel_crtc_atomic_check().
> 
> v2: Deal witrh skl_update_scaler_crtc() in intel_dp_ycbcr420_config()
> 
> Signed-off-by: Ville Syrjälä 

Just keeping the call in intel_crtc_atomic_check() looks good

Reviewed-by: Manasi Navare 

Manasi

> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 40 ++--
>  drivers/gpu/drm/i915/display/intel_display.h |  1 -
>  drivers/gpu/drm/i915/display/intel_dp.c  | 15 
>  drivers/gpu/drm/i915/display/intel_hdmi.c|  6 ---
>  4 files changed, 19 insertions(+), 43 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index de50aa0b076c..becc6322b7dc 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -6101,30 +6101,28 @@ skl_update_scaler(struct intel_crtc_state 
> *crtc_state, bool force_detach,
>   return 0;
>  }
>  
> -/**
> - * skl_update_scaler_crtc - Stages update to scaler state for a given crtc.
> - *
> - * @state: crtc's scaler state
> - *
> - * Return
> - * 0 - scaler_usage updated successfully
> - *error - requested scaling cannot be supported or other error condition
> - */
> -int skl_update_scaler_crtc(struct intel_crtc_state *state)
> +static int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state)
>  {
> - const struct drm_display_mode *adjusted_mode = >hw.adjusted_mode;
> - bool need_scaler = false;
> + const struct drm_display_mode *adjusted_mode =
> + _state->hw.adjusted_mode;
> + int width, height;
>  
> - if (state->output_format == INTEL_OUTPUT_FORMAT_YCBCR420 ||
> - state->pch_pfit.enabled)
> - need_scaler = true;
> + if (crtc_state->pch_pfit.enabled) {
> + u32 pfit_size = crtc_state->pch_pfit.size;
> +
> + width = pfit_size >> 16;
> + height = pfit_size & 0x;
> + } else {
> + width = adjusted_mode->crtc_hdisplay;
> + height = adjusted_mode->crtc_vdisplay;
> + }
>  
> - return skl_update_scaler(state, !state->hw.active, SKL_CRTC_INDEX,
> -  >scaler_state.scaler_id,
> -  state->pipe_src_w, state->pipe_src_h,
> -  adjusted_mode->crtc_hdisplay,
> -  adjusted_mode->crtc_vdisplay, NULL, 0,
> -  need_scaler);
> + return skl_update_scaler(crtc_state, !crtc_state->hw.active,
> +  SKL_CRTC_INDEX,
> +  _state->scaler_state.scaler_id,
> +  crtc_state->pipe_src_w, crtc_state->pipe_src_h,
> +  width, height, NULL, 0,
> +  crtc_state->pch_pfit.enabled);
>  }
>  
>  /**
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h 
> b/drivers/gpu/drm/i915/display/intel_display.h
> index 75438a136d58..6291d3dbc513 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -584,7 +584,6 @@ void intel_crtc_arm_fifo_underrun(struct intel_crtc *crtc,
> struct intel_crtc_state *crtc_state);
>  
>  u16 skl_scaler_calc_phase(int sub, int scale, bool chroma_center);
> -int skl_update_scaler_crtc(struct intel_crtc_state *crtc_state);
>  void skl_scaler_disable(const struct intel_crtc_state *old_crtc_state);
>  void ilk_pfit_disable(const struct intel_crtc_state *old_crtc_state);
>  u32 glk_plane_color_ctl(const struct intel_crtc_state *crtc_state,
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index f4dede6253f8..a827eac8acc2 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -2307,7 +2307,6 @@ intel_dp_ycbcr420_config(struct intel_dp *intel_dp,
>   const struct drm_display_mode *adjusted_mode =
>   _state->hw.adjusted_mode;
>   struct intel_crtc *crtc = to_intel_crtc(crtc_state->uapi.crtc);
> - int ret;
>  
>   if (!drm_mode_is_420_only(info, adjusted_mode) ||
>   !intel_dp_get_colorimetry_status(intel_dp) ||
> @@ -2316,13 +2315,6 @@ 

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/gem: Drop cached obj->bind_count (rev3)

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/gem: Drop cached obj->bind_count (rev3)
URL   : https://patchwork.freedesktop.org/series/74593/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
c3b89dcced32 drm/i915/gem: Drop cached obj->bind_count
-:160: WARNING:LONG_LINE: line over 100 characters
#160: FILE: drivers/gpu/drm/i915/i915_debugfs.c:285:
+   seq_printf(m, "%s: %lu objects, %llu bytes (%llu active, %llu 
inactive, %llu closed)\n", \

total: 0 errors, 1 warnings, 0 checks, 228 lines checked

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


Re: [Intel-gfx] [PATCH 02/23] perf/core: Only copy-to-user after completely unlocking all locks.

2020-04-01 Thread Philip Li
On Wed, Apr 01, 2020 at 11:55:28AM -0700, Nick Desaulniers wrote:
> On Tue, Mar 31, 2020 at 11:50 PM kbuild test robot  wrote:
> >
> > Hi Maarten,
> >
> > I love your patch! Perhaps something to improve:
> >
> > [auto build test WARNING on drm-tip/drm-tip]
> > [also build test WARNING on next-20200331]
> > [cannot apply to drm-intel/for-linux-next tip/perf/core v5.6]
> > [if your patch is applied to the wrong git tree, please drop us a note to 
> > help
> > improve the system. BTW, we also suggest to use '--base' option to specify 
> > the
> > base tree in git format-patch, please see 
> > https://stackoverflow.com/a/37406982]
> >
> > url:
> > https://github.com/0day-ci/linux/commits/Maarten-Lankhorst/Revert-drm-i915-gem-Drop-relocation-slowpath/20200401-005710
> > base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
> > config: x86_64-randconfig-d003-20200331 (attached as .config)
> > compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 
> > 5227fa0c72ce55927cf4849160acb00442489937)
> > reproduce:
> > wget 
> > https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
> > ~/bin/make.cross
> > chmod +x ~/bin/make.cross
> > # save the attached .config to linux build tree
> > COMPILER=clang make.cross ARCH=x86_64
> >
> > If you fix the issue, kindly add following tag
> > Reported-by: kbuild test robot 
> >
> > All warnings (new ones prefixed by >>):
> >
> > >> kernel/events/core.o: warning: objtool: perf_read()+0x306: stack state 
> > >> mismatch: reg1[3]=-2-56 reg2[3]=-1+0
> 
> Apologies Maarten, this objtool warning looks like maybe a compiler
> bug for us to fix.
> 
> Philip, I tried to reproduce by cloning
> git://anongit.freedesktop.org/drm/drm-tip, but I don't understand the
> URL in the report.  Were Maarten's patches on top of drm-tip?  Is
Hi Nick, this is report for patch we receive from the mailing list, so the 
patch series
is applied on "git://anongit.freedesktop.org/drm/drm-tip drm-tip", and form a 
branch
at 
"https://github.com/0day-ci/linux/commits/Maarten-Lankhorst/Revert-drm-i915-gem-Drop-relocation-slowpath/20200401-005710;.

The url is the real code to be checked out that can be used to reproduce.

Thanks

> there a tree you found them from (rather than me fetching the 0day
> branch on github)? (Or maybe this is what a report looks like for a
> series posted to the list?)  Apologies for the naivete, but I plan to
> triage as many of these reports on the Clang side as I can in my free
> time, so I want to make sure I understand precisely what failure is
> occurring where and how.
> -- 
> Thanks,
> ~Nick Desaulniers
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] kernel 5.6: baytrail hdmi audio not working

2020-04-01 Thread Giacomo Comes
Hi,
on my Intel Compute Stick STCK1 (baytrail hdmi audio) 
sound is not working with the kernel 5.6

I have bisected the kernel and I found the commit that introduced the issue:

commit 58d124ea2739e1440ddd743d46c470fe724aca9a
Author: Maarten Lankhorst 
Date:   Thu Oct 31 12:26:04 2019 +0100

drm/i915: Complete crtc hw/uapi split, v6.

Now that we separated everything into uapi and hw, it's
time to make the split definitive. Remove the union and
make a copy of the hw state on modeset and fastset.

Color blobs are copied in crtc atomic_check(), right
before color management is checked.

If more information is required please let me know.

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


Re: [Intel-gfx] [PATCH v2 1/8] drm/i915: Parametrize PFIT_PIPE

2020-04-01 Thread Manasi Navare
On Wed, Feb 12, 2020 at 07:43:51PM +0200, Jani Nikula wrote:
> On Wed, 12 Feb 2020, Ville Syrjala  wrote:
> > From: Ville Syrjälä 
> >
> > Make the PFIT_PIPE stuff less ugly via parametrization.
> >
> > Signed-off-by: Ville Syrjälä 
> > ---
> >  drivers/gpu/drm/i915/display/intel_panel.c | 3 +--
> >  drivers/gpu/drm/i915/i915_reg.h| 1 +
> >  2 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_panel.c 
> > b/drivers/gpu/drm/i915/display/intel_panel.c
> > index cba2f1c2557f..8b0730f4c442 100644
> > --- a/drivers/gpu/drm/i915/display/intel_panel.c
> > +++ b/drivers/gpu/drm/i915/display/intel_panel.c
> > @@ -434,8 +434,7 @@ void intel_gmch_panel_fitting(struct intel_crtc 
> > *intel_crtc,
> > /* 965+ wants fuzzy fitting */
> > /* FIXME: handle multiple panels by failing gracefully */
> > if (INTEL_GEN(dev_priv) >= 4)
> > -   pfit_control |= ((intel_crtc->pipe << PFIT_PIPE_SHIFT) |
> > -PFIT_FILTER_FUZZY);
> > +   pfit_control |= PFIT_PIPE(intel_crtc->pipe) | PFIT_FILTER_FUZZY;
> >  
> >  out:
> > if ((pfit_control & PFIT_ENABLE) == 0) {
> > diff --git a/drivers/gpu/drm/i915/i915_reg.h 
> > b/drivers/gpu/drm/i915/i915_reg.h
> > index b09c1d6dc0aa..faf8945a51b0 100644
> > --- a/drivers/gpu/drm/i915/i915_reg.h
> > +++ b/drivers/gpu/drm/i915/i915_reg.h
> > @@ -4928,6 +4928,7 @@ enum {
> >  #define   PFIT_ENABLE  (1 << 31)
> >  #define   PFIT_PIPE_MASK   (3 << 29)
> >  #define   PFIT_PIPE_SHIFT  29
> > +#define   PFIT_PIPE(pipe)  ((pipe) << 29)
> 
> This is fine, but might have as well defined this in terms of
> REG_FIELD_PREP. I especially like it for parametrized stuff because it
> ensures we don't flood the value outside the field.
> 
> Reviewed-by: Jani Nikula 

Was just reviewing this series and noticed that Jani had suggested using
REG_FIELD_PREP stuff here, are you going to change that Ville?

Looks good otherwise

Manasi
> 
> >  #define   VERT_INTERP_DISABLE  (0 << 10)
> >  #define   VERT_INTERP_BILINEAR (1 << 10)
> >  #define   VERT_INTERP_MASK (3 << 10)
> 
> -- 
> 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 mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [CI] drm/i915/gem: Drop cached obj->bind_count

2020-04-01 Thread Chris Wilson
We cached the number of vma bound to the object in order to speed up
shrinker decisions. This has been superseded by being more proactive in
removing objects we cannot shrink from the shrinker lists, and so we can
drop the clumsy attempt at atomically counting the bind count and
comparing it to the number of pinned mappings of the object. This will
only get more clumsier with asynchronous binding and unbinding.

Signed-off-by: Chris Wilson 
Reviewed-by: Matthew Auld 
---
 drivers/gpu/drm/i915/gem/i915_gem_domain.c|  2 +-
 drivers/gpu/drm/i915/gem/i915_gem_object.c|  1 -
 .../gpu/drm/i915/gem/i915_gem_object_types.h  |  3 ---
 drivers/gpu/drm/i915/gem/i915_gem_pages.c |  2 --
 drivers/gpu/drm/i915/gem/i915_gem_shrinker.c  | 18 ++---
 .../drm/i915/gem/selftests/i915_gem_mman.c|  4 ---
 drivers/gpu/drm/i915/i915_debugfs.c   |  7 ++---
 drivers/gpu/drm/i915/i915_drv.h   |  1 +
 drivers/gpu/drm/i915/i915_gem.c   |  7 -
 drivers/gpu/drm/i915/i915_vma.c   | 24 -
 .../gpu/drm/i915/selftests/i915_gem_evict.c   | 26 +--
 drivers/gpu/drm/i915/selftests/i915_gem_gtt.c |  1 -
 12 files changed, 13 insertions(+), 83 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_domain.c 
b/drivers/gpu/drm/i915/gem/i915_gem_domain.c
index 0cc40e77bbd2..af43e82f45c7 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_domain.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_domain.c
@@ -369,7 +369,7 @@ static void i915_gem_object_bump_inactive_ggtt(struct 
drm_i915_gem_object *obj)
struct i915_vma *vma;
 
GEM_BUG_ON(!i915_gem_object_has_pinned_pages(obj));
-   if (!atomic_read(>bind_count))
+   if (list_empty(>vma.list))
return;
 
mutex_lock(>ggtt.vm.mutex);
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object.c 
b/drivers/gpu/drm/i915/gem/i915_gem_object.c
index 5da9f9e534b9..3f01cdd1a39b 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object.c
@@ -206,7 +206,6 @@ static void __i915_gem_free_objects(struct drm_i915_private 
*i915,
}
obj->mmo.offsets = RB_ROOT;
 
-   GEM_BUG_ON(atomic_read(>bind_count));
GEM_BUG_ON(obj->userfault_count);
GEM_BUG_ON(!list_empty(>lut_list));
 
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h 
b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h
index a0b10bcd8d8a..54ee658bb168 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_object_types.h
+++ b/drivers/gpu/drm/i915/gem/i915_gem_object_types.h
@@ -179,9 +179,6 @@ struct drm_i915_gem_object {
 #define TILING_MASK (FENCE_MINIMUM_STRIDE - 1)
 #define STRIDE_MASK (~TILING_MASK)
 
-   /** Count of VMA actually bound by this object */
-   atomic_t bind_count;
-
struct {
/*
 * Protects the pages and their use. Do not use directly, but
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_pages.c 
b/drivers/gpu/drm/i915/gem/i915_gem_pages.c
index 24f4cadea114..5d855fcd5c0f 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_pages.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_pages.c
@@ -199,8 +199,6 @@ int __i915_gem_object_put_pages(struct drm_i915_gem_object 
*obj)
if (i915_gem_object_has_pinned_pages(obj))
return -EBUSY;
 
-   GEM_BUG_ON(atomic_read(>bind_count));
-
/* May be called by shrinker from within get_pages() (on another bo) */
mutex_lock(>mm.lock);
if (unlikely(atomic_read(>mm.pages_pin_count))) {
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shrinker.c 
b/drivers/gpu/drm/i915/gem/i915_gem_shrinker.c
index 03e5eb4c99d1..5b65ce738b16 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_shrinker.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_shrinker.c
@@ -26,18 +26,6 @@ static bool can_release_pages(struct drm_i915_gem_object 
*obj)
if (!i915_gem_object_is_shrinkable(obj))
return false;
 
-   /*
-* Only report true if by unbinding the object and putting its pages
-* we can actually make forward progress towards freeing physical
-* pages.
-*
-* If the pages are pinned for any other reason than being bound
-* to the GPU, simply unbinding from the GPU is not going to succeed
-* in releasing our pin count on the pages themselves.
-*/
-   if (atomic_read(>mm.pages_pin_count) > 
atomic_read(>bind_count))
-   return false;
-
/*
 * We can only return physical pages to the system if we can either
 * discard the contents (because the user has marked them as being
@@ -54,6 +42,8 @@ static bool unsafe_drop_pages(struct drm_i915_gem_object *obj,
flags = 0;
if (shrink & I915_SHRINK_ACTIVE)
flags = I915_GEM_OBJECT_UNBIND_ACTIVE;
+   if (!(shrink & I915_SHRINK_BOUND))
+   flags = I915_GEM_OBJECT_UNBIND_TEST;
 
if 

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

2020-04-01 Thread Souza, Jose
On Wed, 2020-04-01 at 15:43 +0300, Imre Deak wrote:
> On Tue, Mar 31, 2020 at 05:41:19PM -0700, José Roberto de Souza
> wrote:
> > This is required for legacy/static TC ports as IOM is not aware of
> > the connection and will not trigger the TC cold exit.
> > 
> > Just request PCODE to exit TCCOLD is not enough as it could enter
> > again be driver makes use of the port, to prevent it BSpec states
> > that
> > aux powerwell should be held.
> > 
> > So here embedding the TC cold exit sequence into ICL aux enable,
> > it will enable aux, request tc cold exit and depending in the TC
> > live
> > state continue with the regular aux enable sequence.
> > 
> > And then turning on aux power well during tc lock and turning off
> > during unlock both depending into the TC port refcount.
> > 
> > BSpec: 21750
> > Fixes: https://gitlab.freedesktop.org/drm/intel/issues/1296
> > Cc: Imre Deak 
> > Cc: Cooper Chiou 
> > Cc: Kai-Heng Feng 
> > Signed-off-by: José Roberto de Souza 
> > ---
> > 
> > Will run some tests in the office with TBT dockstation to check if
> > it will be a issue keep both aux enabled. Otherwise more changes
> > will
> > be required here.
> > 
> >  .../drm/i915/display/intel_display_power.c| 12 -
> >  .../drm/i915/display/intel_display_types.h|  1 +
> >  drivers/gpu/drm/i915/display/intel_tc.c   | 47
> > ++-
> >  drivers/gpu/drm/i915/display/intel_tc.h   |  2 +
> >  drivers/gpu/drm/i915/i915_reg.h   |  1 +
> >  5 files changed, 59 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c
> > b/drivers/gpu/drm/i915/display/intel_display_power.c
> > index dbd61517ba63..1ccd57d645c7 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> > @@ -592,9 +592,17 @@ icl_tc_phy_aux_power_well_enable(struct
> > drm_i915_private *dev_priv,
> >  
> > _hsw_power_well_enable(dev_priv, power_well);
> >  
> > -   /* TODO ICL TC cold handling */
> > +   if (INTEL_GEN(dev_priv) == 11)
> 
> Should be if (ICL && dig_port->tc_legacy_port)

Makes sence.
Oh so we could use it on __intel_tc_port_lock() too and
don't do this stuff for non legacy ports. Until we get a report of a
system with a wrong VBT :P

> 
> > +   intel_tc_icl_tc_cold_exit(dev_priv);
> >  
> > -   _hsw_power_well_continue_enable(dev_priv, power_well);
> > +   /*
> > +* To avoid power well enable timeouts when disconnected or in
> > TBT mode
> > +* when doing the TC cold exit sequence for GEN11
> > +*/
> > +   if (INTEL_GEN(dev_priv) != 11 ||
> > +   (intel_tc_port_live_status_mask(dig_port) &
> > +(TC_PORT_LEGACY | TC_PORT_DP_ALT)))
> > +   _hsw_power_well_continue_enable(dev_priv, power_well);
> 
> Why can't we call this unconditionally?

Because we are requesting aux power of regular TC ports as part of tc
cold exit sequence, if the port is disconnected it will timeout in
hsw_wait_for_power_well_enable().

Anyways it is wrong as it is not
taking care of TBT ports, so changing to: if (INTEL_GEN(dev_priv) != 11
|| !dig_port->tc_legacy_port || intel_tc_port_live_status_mask())

> 
> >  
> > if (INTEL_GEN(dev_priv) >= 12 && !power_well->desc-
> > >hsw.is_tc_tbt) {
> > enum tc_port tc_port;
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h
> > b/drivers/gpu/drm/i915/display/intel_display_types.h
> > index 176ab5f1e867..a9a4a3c1b4d7 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> > +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> > @@ -1391,6 +1391,7 @@ struct intel_digital_port {
> > enum intel_display_power_domain ddi_io_power_domain;
> > struct mutex tc_lock;   /* protects the TypeC port mode */
> > intel_wakeref_t tc_lock_wakeref;
> > +   intel_wakeref_t tc_cold_wakeref;
> > int tc_link_refcount;
> > bool tc_legacy_port:1;
> > char tc_port_name[8];
> > diff --git a/drivers/gpu/drm/i915/display/intel_tc.c
> > b/drivers/gpu/drm/i915/display/intel_tc.c
> > index d944be935423..b6d67f069ef7 100644
> > --- a/drivers/gpu/drm/i915/display/intel_tc.c
> > +++ b/drivers/gpu/drm/i915/display/intel_tc.c
> > @@ -7,6 +7,7 @@
> >  #include "intel_display.h"
> >  #include "intel_display_types.h"
> >  #include "intel_dp_mst.h"
> > +#include "intel_sideband.h"
> >  #include "intel_tc.h"
> >  
> >  static const char *tc_port_mode_name(enum tc_port_mode mode)
> > @@ -506,6 +507,13 @@ static void __intel_tc_port_lock(struct
> > intel_digital_port *dig_port,
> >  
> > mutex_lock(_port->tc_lock);
> >  
> > +   if (INTEL_GEN(i915) == 11 && dig_port->tc_link_refcount == 0) {
> > +   enum intel_display_power_domain aux_domain;
> > +
> > +   aux_domain = intel_aux_ch_to_power_domain(dig_port-
> > >aux_ch);
> > +   dig_port->tc_cold_wakeref =
> > intel_display_power_get(i915, aux_domain);
> > +   }
> > +
> 
> It would be enough to hold this ref only for the 

[Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [CI,1/3] drm/i915/gt: Only wait for GPU activity before unbinding a GGTT fence

2020-04-01 Thread Patchwork
== Series Details ==

Series: series starting with [CI,1/3] drm/i915/gt: Only wait for GPU activity 
before unbinding a GGTT fence
URL   : https://patchwork.freedesktop.org/series/75383/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8234 -> Patchwork_17172


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live@active:
- fi-icl-y:   [PASS][1] -> [DMESG-FAIL][2] ([i915#765])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8234/fi-icl-y/igt@i915_selftest@l...@active.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17172/fi-icl-y/igt@i915_selftest@l...@active.html

  * igt@i915_selftest@live@execlists:
- fi-icl-y:   [PASS][3] -> [DMESG-FAIL][4] ([i915#1314])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8234/fi-icl-y/igt@i915_selftest@l...@execlists.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17172/fi-icl-y/igt@i915_selftest@l...@execlists.html

  
 Warnings 

  * igt@i915_pm_rpm@module-reload:
- fi-kbl-x1275:   [DMESG-FAIL][5] ([i915#62] / [i915#95]) -> [SKIP][6] 
([fdo#109271])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8234/fi-kbl-x1275/igt@i915_pm_...@module-reload.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17172/fi-kbl-x1275/igt@i915_pm_...@module-reload.html

  * igt@kms_flip@basic-flip-vs-wf_vblank:
- fi-kbl-x1275:   [DMESG-WARN][7] ([i915#62] / [i915#92]) -> 
[DMESG-WARN][8] ([i915#62] / [i915#92] / [i915#95]) +4 similar issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8234/fi-kbl-x1275/igt@kms_flip@basic-flip-vs-wf_vblank.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17172/fi-kbl-x1275/igt@kms_flip@basic-flip-vs-wf_vblank.html

  * igt@kms_force_connector_basic@force-edid:
- fi-kbl-x1275:   [DMESG-WARN][9] ([i915#62] / [i915#92] / [i915#95]) 
-> [DMESG-WARN][10] ([i915#62] / [i915#92]) +3 similar issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8234/fi-kbl-x1275/igt@kms_force_connector_ba...@force-edid.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17172/fi-kbl-x1275/igt@kms_force_connector_ba...@force-edid.html

  
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#1314]: https://gitlab.freedesktop.org/drm/intel/issues/1314
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#765]: https://gitlab.freedesktop.org/drm/intel/issues/765
  [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95


Participating hosts (46 -> 37)
--

  Additional (4): fi-hsw-peppy fi-gdg-551 fi-bsw-kefka fi-kbl-r 
  Missing(13): fi-ilk-m540 fi-bsw-n3050 fi-hsw-4200u fi-bdw-gvtdvm 
fi-byt-squawks fi-bsw-cyan fi-bwr-2160 fi-ctg-p8600 fi-skl-lmem fi-bdw-samus 
fi-byt-n2820 fi-byt-clapper fi-skl-6600u 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_8234 -> Patchwork_17172

  CI-20190529: 20190529
  CI_DRM_8234: 5fef6faaa3ca8d62bc01e07c7737c2c6d6296817 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5556: 311cb1b360b7ae00fab80b822cd34fd512f08ce9 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17172: 32e647fb1bc0e7fae2bbbf54703182a45b446047 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

32e647fb1bc0 drm/i915/gt: Make fence revocation unequivocal
e64a5dc6c8cd drm/i915/gt: Store the fence details on the fence
141fb6b1ac25 drm/i915/gt: Only wait for GPU activity before unbinding a GGTT 
fence

== Logs ==

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


[Intel-gfx] [CI 1/3] drm/i915/gt: Only wait for GPU activity before unbinding a GGTT fence

2020-04-01 Thread Chris Wilson
Only GPU activity via the GGTT fence is asynchronous, we know that we
control the CPU access directly, so we only need to wait for the GPU to
stop using the fence before we relinquish it.

Signed-off-by: Chris Wilson 
Reviewed-by: Matthew Auld 
---
 drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 25 
 drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h |  3 +++
 drivers/gpu/drm/i915/i915_vma.c  |  4 
 3 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c 
b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
index 225970f4a4ef..d527b11ddfb7 100644
--- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
+++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
@@ -223,6 +223,11 @@ static void fence_write(struct i915_fence_reg *fence,
fence->dirty = false;
 }
 
+static bool gpu_uses_fence_registers(struct i915_fence_reg *fence)
+{
+   return INTEL_GEN(fence_to_i915(fence)) < 4;
+}
+
 static int fence_update(struct i915_fence_reg *fence,
struct i915_vma *vma)
 {
@@ -239,15 +244,18 @@ static int fence_update(struct i915_fence_reg *fence,
if (!i915_vma_is_map_and_fenceable(vma))
return -EINVAL;
 
-   ret = i915_vma_sync(vma);
-   if (ret)
-   return ret;
+   if (gpu_uses_fence_registers(fence)) {
+   /* implicit 'unfenced' GPU blits */
+   ret = i915_vma_sync(vma);
+   if (ret)
+   return ret;
+   }
}
 
old = xchg(>vma, NULL);
if (old) {
/* XXX Ideally we would move the waiting to outside the mutex */
-   ret = i915_vma_sync(old);
+   ret = i915_active_wait(>active);
if (ret) {
fence->vma = old;
return ret;
@@ -869,6 +877,7 @@ void intel_ggtt_init_fences(struct i915_ggtt *ggtt)
for (i = 0; i < num_fences; i++) {
struct i915_fence_reg *fence = >fence_regs[i];
 
+   i915_active_init(>active, NULL, NULL);
fence->ggtt = ggtt;
fence->id = i;
list_add_tail(>link, >fence_list);
@@ -880,6 +889,14 @@ void intel_ggtt_init_fences(struct i915_ggtt *ggtt)
 
 void intel_ggtt_fini_fences(struct i915_ggtt *ggtt)
 {
+   int i;
+
+   for (i = 0; i < ggtt->num_fences; i++) {
+   struct i915_fence_reg *fence = >fence_regs[i];
+
+   i915_active_fini(>active);
+   }
+
kfree(ggtt->fence_regs);
 }
 
diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h 
b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h
index 9850f6a85d2a..08c6bb667581 100644
--- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h
+++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h
@@ -28,6 +28,8 @@
 #include 
 #include 
 
+#include "i915_active.h"
+
 struct drm_i915_gem_object;
 struct i915_ggtt;
 struct i915_vma;
@@ -41,6 +43,7 @@ struct i915_fence_reg {
struct i915_ggtt *ggtt;
struct i915_vma *vma;
atomic_t pin_count;
+   struct i915_active active;
int id;
/**
 * Whether the tiling parameters for the currently
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
index 18069df2a9e5..616ca5a7c875 100644
--- a/drivers/gpu/drm/i915/i915_vma.c
+++ b/drivers/gpu/drm/i915/i915_vma.c
@@ -1232,6 +1232,10 @@ int i915_vma_move_to_active(struct i915_vma *vma,
dma_resv_add_shared_fence(vma->resv, >fence);
obj->write_domain = 0;
}
+
+   if (flags & EXEC_OBJECT_NEEDS_FENCE && vma->fence)
+   i915_active_add_request(>fence->active, rq);
+
obj->read_domains |= I915_GEM_GPU_DOMAINS;
obj->mm.dirty = true;
 
-- 
2.20.1

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


[Intel-gfx] [CI 3/3] drm/i915/gt: Make fence revocation unequivocal

2020-04-01 Thread Chris Wilson
If we must revoke the fence because the VMA is no longer present, or
because the fence no longer applies, ensure that we do and convert it
into an error if we try but cannot.

Signed-off-by: Chris Wilson 
Reviewed-by: Matthew Auld 
---
 drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 21 +++-
 drivers/gpu/drm/i915/i915_gem.c  | 12 +--
 drivers/gpu/drm/i915/i915_vma.c  |  4 +---
 drivers/gpu/drm/i915/i915_vma.h  |  2 +-
 4 files changed, 19 insertions(+), 20 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c 
b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
index b5b2ef52e570..7fb36b12fe7a 100644
--- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
+++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
@@ -298,23 +298,26 @@ static int fence_update(struct i915_fence_reg *fence,
  *
  * This function force-removes any fence from the given object, which is useful
  * if the kernel wants to do untiled GTT access.
- *
- * Returns:
- *
- * 0 on success, negative error code on failure.
  */
-int i915_vma_revoke_fence(struct i915_vma *vma)
+void i915_vma_revoke_fence(struct i915_vma *vma)
 {
struct i915_fence_reg *fence = vma->fence;
+   intel_wakeref_t wakeref;
 
lockdep_assert_held(>vm->mutex);
if (!fence)
-   return 0;
+   return;
 
-   if (atomic_read(>pin_count))
-   return -EBUSY;
+   GEM_BUG_ON(fence->vma != vma);
+   GEM_BUG_ON(!i915_active_is_idle(>active));
+   GEM_BUG_ON(atomic_read(>pin_count));
+
+   fence->tiling = 0;
+   WRITE_ONCE(fence->vma, NULL);
+   vma->fence = NULL;
 
-   return fence_update(fence, NULL);
+   with_intel_runtime_pm_if_in_use(fence_to_uncore(fence)->rpm, wakeref)
+   fence_write(fence);
 }
 
 static struct i915_fence_reg *fence_find(struct i915_ggtt *ggtt)
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 762b50b08d73..b0836fc47ae6 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -993,18 +993,16 @@ i915_gem_object_ggtt_pin(struct drm_i915_gem_object *obj,
return ERR_PTR(ret);
}
 
+   ret = i915_vma_pin(vma, size, alignment, flags | PIN_GLOBAL);
+   if (ret)
+   return ERR_PTR(ret);
+
if (vma->fence && !i915_gem_object_is_tiled(obj)) {
mutex_lock(>vm.mutex);
-   ret = i915_vma_revoke_fence(vma);
+   i915_vma_revoke_fence(vma);
mutex_unlock(>vm.mutex);
-   if (ret)
-   return ERR_PTR(ret);
}
 
-   ret = i915_vma_pin(vma, size, alignment, flags | PIN_GLOBAL);
-   if (ret)
-   return ERR_PTR(ret);
-
ret = i915_vma_wait_for_bind(vma);
if (ret) {
i915_vma_unpin(vma);
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
index 616ca5a7c875..b5f78b0acf5d 100644
--- a/drivers/gpu/drm/i915/i915_vma.c
+++ b/drivers/gpu/drm/i915/i915_vma.c
@@ -1298,9 +1298,7 @@ int __i915_vma_unbind(struct i915_vma *vma)
i915_vma_flush_writes(vma);
 
/* release the fence reg _after_ flushing */
-   ret = i915_vma_revoke_fence(vma);
-   if (ret)
-   return ret;
+   i915_vma_revoke_fence(vma);
 
/* Force a pagefault for domain tracking on next user access */
i915_vma_revoke_mmap(vma);
diff --git a/drivers/gpu/drm/i915/i915_vma.h b/drivers/gpu/drm/i915/i915_vma.h
index b958ad07f212..8ad1daabcd58 100644
--- a/drivers/gpu/drm/i915/i915_vma.h
+++ b/drivers/gpu/drm/i915/i915_vma.h
@@ -326,7 +326,7 @@ static inline struct page *i915_vma_first_page(struct 
i915_vma *vma)
  * True if the vma has a fence, false otherwise.
  */
 int __must_check i915_vma_pin_fence(struct i915_vma *vma);
-int __must_check i915_vma_revoke_fence(struct i915_vma *vma);
+void i915_vma_revoke_fence(struct i915_vma *vma);
 
 int __i915_vma_pin_fence(struct i915_vma *vma);
 
-- 
2.20.1

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


[Intel-gfx] [CI 2/3] drm/i915/gt: Store the fence details on the fence

2020-04-01 Thread Chris Wilson
Make a copy of the object tiling parameters at the point of grabbing the
fence.

Signed-off-by: Chris Wilson 
Reviewed-by: Matthew Auld 
---
 drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 93 +++-
 drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h |  4 +
 2 files changed, 37 insertions(+), 60 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c 
b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
index d527b11ddfb7..b5b2ef52e570 100644
--- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
+++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
@@ -68,8 +68,7 @@ static struct intel_uncore *fence_to_uncore(struct 
i915_fence_reg *fence)
return fence->ggtt->vm.gt->uncore;
 }
 
-static void i965_write_fence_reg(struct i915_fence_reg *fence,
-struct i915_vma *vma)
+static void i965_write_fence_reg(struct i915_fence_reg *fence)
 {
i915_reg_t fence_reg_lo, fence_reg_hi;
int fence_pitch_shift;
@@ -87,18 +86,16 @@ static void i965_write_fence_reg(struct i915_fence_reg 
*fence,
}
 
val = 0;
-   if (vma) {
-   unsigned int stride = i915_gem_object_get_stride(vma->obj);
+   if (fence->tiling) {
+   unsigned int stride = fence->stride;
 
-   GEM_BUG_ON(!i915_vma_is_map_and_fenceable(vma));
-   GEM_BUG_ON(!IS_ALIGNED(vma->node.start, I965_FENCE_PAGE));
-   GEM_BUG_ON(!IS_ALIGNED(vma->fence_size, I965_FENCE_PAGE));
GEM_BUG_ON(!IS_ALIGNED(stride, 128));
 
-   val = (vma->node.start + vma->fence_size - I965_FENCE_PAGE) << 
32;
-   val |= vma->node.start;
+   val = fence->start + fence->size - I965_FENCE_PAGE;
+   val <<= 32;
+   val |= fence->start;
val |= (u64)((stride / 128) - 1) << fence_pitch_shift;
-   if (i915_gem_object_get_tiling(vma->obj) == I915_TILING_Y)
+   if (fence->tiling == I915_TILING_Y)
val |= BIT(I965_FENCE_TILING_Y_SHIFT);
val |= I965_FENCE_REG_VALID;
}
@@ -125,21 +122,15 @@ static void i965_write_fence_reg(struct i915_fence_reg 
*fence,
}
 }
 
-static void i915_write_fence_reg(struct i915_fence_reg *fence,
-struct i915_vma *vma)
+static void i915_write_fence_reg(struct i915_fence_reg *fence)
 {
u32 val;
 
val = 0;
-   if (vma) {
-   unsigned int tiling = i915_gem_object_get_tiling(vma->obj);
+   if (fence->tiling) {
+   unsigned int stride = fence->stride;
+   unsigned int tiling = fence->tiling;
bool is_y_tiled = tiling == I915_TILING_Y;
-   unsigned int stride = i915_gem_object_get_stride(vma->obj);
-
-   GEM_BUG_ON(!i915_vma_is_map_and_fenceable(vma));
-   GEM_BUG_ON(vma->node.start & ~I915_FENCE_START_MASK);
-   GEM_BUG_ON(!is_power_of_2(vma->fence_size));
-   GEM_BUG_ON(!IS_ALIGNED(vma->node.start, vma->fence_size));
 
if (is_y_tiled && HAS_128_BYTE_Y_TILING(fence_to_i915(fence)))
stride /= 128;
@@ -147,10 +138,10 @@ static void i915_write_fence_reg(struct i915_fence_reg 
*fence,
stride /= 512;
GEM_BUG_ON(!is_power_of_2(stride));
 
-   val = vma->node.start;
+   val = fence->start;
if (is_y_tiled)
val |= BIT(I830_FENCE_TILING_Y_SHIFT);
-   val |= I915_FENCE_SIZE_BITS(vma->fence_size);
+   val |= I915_FENCE_SIZE_BITS(fence->size);
val |= ilog2(stride) << I830_FENCE_PITCH_SHIFT;
 
val |= I830_FENCE_REG_VALID;
@@ -165,25 +156,18 @@ static void i915_write_fence_reg(struct i915_fence_reg 
*fence,
}
 }
 
-static void i830_write_fence_reg(struct i915_fence_reg *fence,
-struct i915_vma *vma)
+static void i830_write_fence_reg(struct i915_fence_reg *fence)
 {
u32 val;
 
val = 0;
-   if (vma) {
-   unsigned int stride = i915_gem_object_get_stride(vma->obj);
+   if (fence->tiling) {
+   unsigned int stride = fence->stride;
 
-   GEM_BUG_ON(!i915_vma_is_map_and_fenceable(vma));
-   GEM_BUG_ON(vma->node.start & ~I830_FENCE_START_MASK);
-   GEM_BUG_ON(!is_power_of_2(vma->fence_size));
-   GEM_BUG_ON(!is_power_of_2(stride / 128));
-   GEM_BUG_ON(!IS_ALIGNED(vma->node.start, vma->fence_size));
-
-   val = vma->node.start;
-   if (i915_gem_object_get_tiling(vma->obj) == I915_TILING_Y)
+   val = fence->start;
+   if (fence->tiling == I915_TILING_Y)
val |= BIT(I830_FENCE_TILING_Y_SHIFT);
-   val |= I830_FENCE_SIZE_BITS(vma->fence_size);
+   val |= I830_FENCE_SIZE_BITS(fence->size);

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/gem: Try allocating va from free space (rev3)

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/gem: Try allocating va from free space (rev3)
URL   : https://patchwork.freedesktop.org/series/74748/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8233 -> Patchwork_17171


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@i915_pm_rpm@module-reload:
- fi-kbl-x1275:   [PASS][1] -> [SKIP][2] ([fdo#109271])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-kbl-x1275/igt@i915_pm_...@module-reload.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17171/fi-kbl-x1275/igt@i915_pm_...@module-reload.html

  * igt@kms_busy@basic@modeset:
- fi-kbl-x1275:   [PASS][3] -> [DMESG-FAIL][4] ([i915#62])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-kbl-x1275/igt@kms_busy@ba...@modeset.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17171/fi-kbl-x1275/igt@kms_busy@ba...@modeset.html

  * igt@kms_chamelium@common-hpd-after-suspend:
- fi-cml-u2:  [PASS][5] -> [DMESG-WARN][6] ([IGT#4])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-cml-u2/igt@kms_chamel...@common-hpd-after-suspend.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17171/fi-cml-u2/igt@kms_chamel...@common-hpd-after-suspend.html

  * igt@kms_flip@basic-flip-vs-modeset:
- fi-kbl-x1275:   [PASS][7] -> [DMESG-WARN][8] ([i915#62] / [i915#92]) 
+21 similar issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-kbl-x1275/igt@kms_f...@basic-flip-vs-modeset.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17171/fi-kbl-x1275/igt@kms_f...@basic-flip-vs-modeset.html

  * igt@kms_force_connector_basic@force-edid:
- fi-kbl-x1275:   [PASS][9] -> [DMESG-WARN][10] ([i915#62] / [i915#92] 
/ [i915#95]) +9 similar issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-kbl-x1275/igt@kms_force_connector_ba...@force-edid.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17171/fi-kbl-x1275/igt@kms_force_connector_ba...@force-edid.html

  
  [IGT#4]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/4
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62
  [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92
  [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95


Participating hosts (47 -> 36)
--

  Additional (2): fi-bdw-gvtdvm fi-gdg-551 
  Missing(13): fi-tgl-dsi fi-bsw-n3050 fi-hsw-4200u fi-byt-squawks 
fi-bsw-cyan fi-bwr-2160 fi-kbl-7500u fi-ctg-p8600 fi-elk-e7500 fi-skl-lmem 
fi-bdw-samus fi-byt-clapper fi-skl-6700k2 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_8233 -> Patchwork_17171

  CI-20190529: 20190529
  CI_DRM_8233: 0862243a5514a9da625520bd4f554f8348077594 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5553: 60475d9b41c58b7d256e83c7d53eaf7c2f1f8ecc @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17171: ea63499c8e784ef283f7ee9ce0a1e103b07c1174 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

ea63499c8e78 drm/i915/gem: Try allocating va from free space

== Logs ==

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


[Intel-gfx] [PATCH v2] drm/i915/gem: Try allocating va from free space

2020-04-01 Thread Chris Wilson
If the current node/entry location is occupied, and the object is not
pinned, try assigning it some free space. We cannot wait here, so if in
doubt, we unreserve and try to grab all at once.

v2: Use the final pin_flags so that we won't have to move the object if
we find the wrong free space.

Signed-off-by: Chris Wilson 
Reviewed-by: Matthew Auld 
---
 .../gpu/drm/i915/gem/i915_gem_execbuffer.c| 68 ---
 1 file changed, 43 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 908fb877f875..9d11bad74e9a 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -429,6 +429,32 @@ eb_vma_misplaced(const struct drm_i915_gem_exec_object2 
*entry,
return false;
 }
 
+static u64 eb_pin_flags(const struct drm_i915_gem_exec_object2 *entry,
+   unsigned int exec_flags)
+{
+   u64 pin_flags = 0;
+
+   if (exec_flags & EXEC_OBJECT_NEEDS_GTT)
+   pin_flags |= PIN_GLOBAL;
+
+   /*
+* Wa32bitGeneralStateOffset & Wa32bitInstructionBaseOffset,
+* limit address to the first 4GBs for unflagged objects.
+*/
+   if (!(exec_flags & EXEC_OBJECT_SUPPORTS_48B_ADDRESS))
+   pin_flags |= PIN_ZONE_4G;
+
+   if (exec_flags & __EXEC_OBJECT_NEEDS_MAP)
+   pin_flags |= PIN_MAPPABLE;
+
+   if (exec_flags & EXEC_OBJECT_PINNED)
+   pin_flags |= entry->offset | PIN_OFFSET_FIXED;
+   else if (exec_flags & __EXEC_OBJECT_NEEDS_BIAS)
+   pin_flags |= BATCH_OFFSET_BIAS | PIN_OFFSET_BIAS;
+
+   return pin_flags;
+}
+
 static inline bool
 eb_pin_vma(struct i915_execbuffer *eb,
   const struct drm_i915_gem_exec_object2 *entry,
@@ -446,8 +472,19 @@ eb_pin_vma(struct i915_execbuffer *eb,
if (unlikely(ev->flags & EXEC_OBJECT_NEEDS_GTT))
pin_flags |= PIN_GLOBAL;
 
-   if (unlikely(i915_vma_pin(vma, 0, 0, pin_flags)))
-   return false;
+   /* Attempt to reuse the current location if available */
+   if (unlikely(i915_vma_pin(vma, 0, 0, pin_flags))) {
+   if (entry->flags & EXEC_OBJECT_PINNED)
+   return false;
+
+   /* Failing that pick any _free_ space if suitable */
+   if (unlikely(i915_vma_pin(vma,
+ entry->pad_to_size,
+ entry->alignment,
+ eb_pin_flags(entry, ev->flags) |
+ PIN_USER | PIN_NOEVICT)))
+   return false;
+   }
 
if (unlikely(ev->flags & EXEC_OBJECT_NEEDS_FENCE)) {
if (unlikely(i915_vma_pin_fence(vma))) {
@@ -588,28 +625,9 @@ static int eb_reserve_vma(const struct i915_execbuffer *eb,
  u64 pin_flags)
 {
struct drm_i915_gem_exec_object2 *entry = ev->exec;
-   unsigned int exec_flags = ev->flags;
struct i915_vma *vma = ev->vma;
int err;
 
-   if (exec_flags & EXEC_OBJECT_NEEDS_GTT)
-   pin_flags |= PIN_GLOBAL;
-
-   /*
-* Wa32bitGeneralStateOffset & Wa32bitInstructionBaseOffset,
-* limit address to the first 4GBs for unflagged objects.
-*/
-   if (!(exec_flags & EXEC_OBJECT_SUPPORTS_48B_ADDRESS))
-   pin_flags |= PIN_ZONE_4G;
-
-   if (exec_flags & __EXEC_OBJECT_NEEDS_MAP)
-   pin_flags |= PIN_MAPPABLE;
-
-   if (exec_flags & EXEC_OBJECT_PINNED)
-   pin_flags |= entry->offset | PIN_OFFSET_FIXED;
-   else if (exec_flags & __EXEC_OBJECT_NEEDS_BIAS)
-   pin_flags |= BATCH_OFFSET_BIAS | PIN_OFFSET_BIAS;
-
if (drm_mm_node_allocated(>node) &&
eb_vma_misplaced(entry, vma, ev->flags)) {
err = i915_vma_unbind(vma);
@@ -619,7 +637,7 @@ static int eb_reserve_vma(const struct i915_execbuffer *eb,
 
err = i915_vma_pin(vma,
   entry->pad_to_size, entry->alignment,
-  pin_flags);
+  eb_pin_flags(entry, ev->flags) | pin_flags);
if (err)
return err;
 
@@ -628,7 +646,7 @@ static int eb_reserve_vma(const struct i915_execbuffer *eb,
eb->args->flags |= __EXEC_HAS_RELOC;
}
 
-   if (unlikely(exec_flags & EXEC_OBJECT_NEEDS_FENCE)) {
+   if (unlikely(ev->flags & EXEC_OBJECT_NEEDS_FENCE)) {
err = i915_vma_pin_fence(vma);
if (unlikely(err)) {
i915_vma_unpin(vma);
@@ -636,10 +654,10 @@ static int eb_reserve_vma(const struct i915_execbuffer 
*eb,
}
 
if (vma->fence)
-   exec_flags |= __EXEC_OBJECT_HAS_FENCE;
+   ev->flags |= __EXEC_OBJECT_HAS_FENCE;
}
 
-   ev->flags = 

Re: ✗ Fi.CI.BAT: failure for drm/i915/gem: Try allocating va from free space (rev2)

2020-04-01 Thread Chris Wilson
Quoting Patchwork (2020-04-01 20:31:15)
> == Series Details ==
> 
> Series: drm/i915/gem: Try allocating va from free space (rev2)
> URL   : https://patchwork.freedesktop.org/series/74748/
> State : failure
> 
> == Summary ==
> 
> CI Bug Log - changes from CI_DRM_8233 -> Patchwork_17170
> 
> 
> Summary
> ---
> 
>   **FAILURE**
> 
>   Serious unknown changes coming with Patchwork_17170 absolutely need to be
>   verified manually.
>   
>   If you think the reported changes have nothing to do with the changes
>   introduced in Patchwork_17170, 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_17170/index.html
> 
> Possible new issues
> ---
> 
>   Here are the unknown changes that may have been introduced in 
> Patchwork_17170:
> 
> ### IGT changes ###
> 
>  Possible regressions 
> 
>   * igt@gem_busy@busy-all:
> - fi-bsw-nick:[PASS][1] -> [INCOMPLETE][2]
>[1]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-bsw-nick/igt@gem_b...@busy-all.html
>[2]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-bsw-nick/igt@gem_b...@busy-all.html

Looks like CI is working!
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] ✗ Fi.CI.BAT: failure for drm/i915/gem: Try allocating va from free space (rev2)

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/gem: Try allocating va from free space (rev2)
URL   : https://patchwork.freedesktop.org/series/74748/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8233 -> Patchwork_17170


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17170 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17170, 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_17170/index.html

Possible new issues
---

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

### IGT changes ###

 Possible regressions 

  * igt@gem_busy@busy-all:
- fi-bsw-nick:[PASS][1] -> [INCOMPLETE][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-bsw-nick/igt@gem_b...@busy-all.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-bsw-nick/igt@gem_b...@busy-all.html
- fi-bdw-5557u:   [PASS][3] -> [INCOMPLETE][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-bdw-5557u/igt@gem_b...@busy-all.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-bdw-5557u/igt@gem_b...@busy-all.html
- fi-kbl-8809g:   [PASS][5] -> [INCOMPLETE][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-kbl-8809g/igt@gem_b...@busy-all.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-kbl-8809g/igt@gem_b...@busy-all.html
- fi-icl-guc: [PASS][7] -> [INCOMPLETE][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-icl-guc/igt@gem_b...@busy-all.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-icl-guc/igt@gem_b...@busy-all.html
- fi-kbl-r:   [PASS][9] -> [INCOMPLETE][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-kbl-r/igt@gem_b...@busy-all.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-kbl-r/igt@gem_b...@busy-all.html
- fi-icl-dsi: [PASS][11] -> [INCOMPLETE][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-icl-dsi/igt@gem_b...@busy-all.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-icl-dsi/igt@gem_b...@busy-all.html
- fi-kbl-guc: [PASS][13] -> [INCOMPLETE][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-kbl-guc/igt@gem_b...@busy-all.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-kbl-guc/igt@gem_b...@busy-all.html
- fi-kbl-7500u:   [PASS][15] -> [INCOMPLETE][16]
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-kbl-7500u/igt@gem_b...@busy-all.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-kbl-7500u/igt@gem_b...@busy-all.html
- fi-kbl-x1275:   [PASS][17] -> [INCOMPLETE][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-kbl-x1275/igt@gem_b...@busy-all.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-kbl-x1275/igt@gem_b...@busy-all.html
- fi-icl-u2:  [PASS][19] -> [INCOMPLETE][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-icl-u2/igt@gem_b...@busy-all.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-icl-u2/igt@gem_b...@busy-all.html
- fi-skl-6600u:   [PASS][21] -> [INCOMPLETE][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-skl-6600u/igt@gem_b...@busy-all.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-skl-6600u/igt@gem_b...@busy-all.html
- fi-cfl-8700k:   [PASS][23] -> [INCOMPLETE][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-cfl-8700k/igt@gem_b...@busy-all.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-cfl-8700k/igt@gem_b...@busy-all.html
- fi-icl-y:   [PASS][25] -> [INCOMPLETE][26]
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-icl-y/igt@gem_b...@busy-all.html
   [26]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-icl-y/igt@gem_b...@busy-all.html
- fi-apl-guc: [PASS][27] -> [INCOMPLETE][28]
   [27]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-apl-guc/igt@gem_b...@busy-all.html
   [28]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-apl-guc/igt@gem_b...@busy-all.html
- fi-ivb-3770:[PASS][29] -> [INCOMPLETE][30]
   [29]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8233/fi-ivb-3770/igt@gem_b...@busy-all.html
   [30]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17170/fi-ivb-3770/igt@gem_b...@busy-all.html
- fi-cml-s:   [PASS][31] -> [INCOMPLETE][32]
   [31]: 

Re: [Intel-gfx] [PATCH 08/11] drm/i915/gt: Only wait for GPU activity before unbinding a GGTT fence

2020-04-01 Thread Matthew Auld
On Wed, 1 Apr 2020 at 20:02, Chris Wilson  wrote:
>
> Quoting Matthew Auld (2020-04-01 19:56:23)
> > On Tue, 31 Mar 2020 at 22:31, Chris Wilson  wrote:
> > >
> > > Only GPU activity via the GGTT fence is asynchronous, we know that we
> > > control the CPU access directly, so we only need to wait for the GPU to
> > > stop using the fence before we relinquish it.
> > >
> > > Signed-off-by: Chris Wilson 
> > > ---
> > >  drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 12 
> > >  drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h |  3 +++
> > >  drivers/gpu/drm/i915/i915_vma.c  |  4 
> > >  3 files changed, 15 insertions(+), 4 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c 
> > > b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> > > index 225970f4a4ef..74f8201486b2 100644
> > > --- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> > > +++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> > > @@ -239,15 +239,18 @@ static int fence_update(struct i915_fence_reg 
> > > *fence,
> > > if (!i915_vma_is_map_and_fenceable(vma))
> > > return -EINVAL;
> > >
> > > -   ret = i915_vma_sync(vma);
> > > -   if (ret)
> > > -   return ret;
> > > +   if (INTEL_GEN(fence_to_i915(fence)) < 4) {
> > > +   /* implicit 'unfenced' GPU blits */
> > > +   ret = i915_vma_sync(vma);
> >
> > What was the strangeness with gen < 4 again?
>
> From gen4, all gpu ops have implicit fences and never reference the
> global fence registers.
>
> if (gpu_uses_fence_registers())
>
> worksforme
>
> > > +   if (ret)
> > > +   return ret;
> > > +   }
> > > }
> > >
> > > old = xchg(>vma, NULL);
> > > if (old) {
> > > /* XXX Ideally we would move the waiting to outside the 
> > > mutex */
> > > -   ret = i915_vma_sync(old);
> > > +   ret = i915_active_wait(>active);
> > > if (ret) {
> > > fence->vma = old;
> > > return ret;
> > > @@ -869,6 +872,7 @@ void intel_ggtt_init_fences(struct i915_ggtt *ggtt)
> > > for (i = 0; i < num_fences; i++) {
> > > struct i915_fence_reg *fence = >fence_regs[i];
> > >
> > > +   i915_active_init(>active, NULL, NULL);
> >
> > Some active_fini?
>
> For debug peace of mind, I think we added fini_fences so should be easy
> to type up.

Ok,
Reviewed-by: Matthew Auld 

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


Re: [Intel-gfx] [PATCH 11/11] drm/i915/gem: Drop cached obj->bind_count

2020-04-01 Thread Matthew Auld
On Tue, 31 Mar 2020 at 22:31, Chris Wilson  wrote:
>
> We cached the number of vma bound to the object in order to speed up
> shrinker decisions. This has been superseded by being more proactive in
> removing objects we cannot shrink from the shrinker lists, and so we can
> drop the clumsy attempt at atomically counting the bind count and
> comparing it to the number of pinned mappings of the object. This will
> only get more clumsier with asynchronous binding and unbinding.
>
> Signed-off-by: Chris Wilson 
Reviewed-by: Matthew Auld 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 10/11] drm/i915/gt: Make fence revocation unequivocal

2020-04-01 Thread Matthew Auld
On Tue, 31 Mar 2020 at 22:31, Chris Wilson  wrote:
>
> If we must revoke the fence because the VMA is no longer present, or
> because the fence no longer applies, ensure that we do and convert it
> into an error if we try but cannot.
>
> Signed-off-by: Chris Wilson 
Reviewed-by: Matthew Auld 
___
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/gem: Try allocating va from free space (rev2)

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/gem: Try allocating va from free space (rev2)
URL   : https://patchwork.freedesktop.org/series/74748/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
f645456d24f7 drm/i915/gem: Try allocating va from free space
-:27: CHECK:PREFER_KERNEL_TYPES: Prefer kernel type 'u64' over 'uint64_t'
#27: FILE: drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c:435:
+   uint64_t pin_flags = 0;

total: 0 errors, 0 warnings, 1 checks, 109 lines checked

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


Re: [Intel-gfx] [PATCH 09/11] drm/i915/gt: Store the fence details on the fence

2020-04-01 Thread Matthew Auld
On Tue, 31 Mar 2020 at 22:31, Chris Wilson  wrote:
>
> Make a copy of the object tiling parameters at the point of grabbing the
> fence.
>
> Signed-off-by: Chris Wilson 
Reviewed-by: Matthew Auld 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


Re: [Intel-gfx] [PATCH 08/11] drm/i915/gt: Only wait for GPU activity before unbinding a GGTT fence

2020-04-01 Thread Chris Wilson
Quoting Matthew Auld (2020-04-01 19:56:23)
> On Tue, 31 Mar 2020 at 22:31, Chris Wilson  wrote:
> >
> > Only GPU activity via the GGTT fence is asynchronous, we know that we
> > control the CPU access directly, so we only need to wait for the GPU to
> > stop using the fence before we relinquish it.
> >
> > Signed-off-by: Chris Wilson 
> > ---
> >  drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 12 
> >  drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h |  3 +++
> >  drivers/gpu/drm/i915/i915_vma.c  |  4 
> >  3 files changed, 15 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c 
> > b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> > index 225970f4a4ef..74f8201486b2 100644
> > --- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> > +++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> > @@ -239,15 +239,18 @@ static int fence_update(struct i915_fence_reg *fence,
> > if (!i915_vma_is_map_and_fenceable(vma))
> > return -EINVAL;
> >
> > -   ret = i915_vma_sync(vma);
> > -   if (ret)
> > -   return ret;
> > +   if (INTEL_GEN(fence_to_i915(fence)) < 4) {
> > +   /* implicit 'unfenced' GPU blits */
> > +   ret = i915_vma_sync(vma);
> 
> What was the strangeness with gen < 4 again?

>From gen4, all gpu ops have implicit fences and never reference the
global fence registers.

if (gpu_uses_fence_registers())

worksforme

> > +   if (ret)
> > +   return ret;
> > +   }
> > }
> >
> > old = xchg(>vma, NULL);
> > if (old) {
> > /* XXX Ideally we would move the waiting to outside the 
> > mutex */
> > -   ret = i915_vma_sync(old);
> > +   ret = i915_active_wait(>active);
> > if (ret) {
> > fence->vma = old;
> > return ret;
> > @@ -869,6 +872,7 @@ void intel_ggtt_init_fences(struct i915_ggtt *ggtt)
> > for (i = 0; i < num_fences; i++) {
> > struct i915_fence_reg *fence = >fence_regs[i];
> >
> > +   i915_active_init(>active, NULL, NULL);
> 
> Some active_fini?

For debug peace of mind, I think we added fini_fences so should be easy
to type up.
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [CI] drm/i915/gem: Try allocating va from free space

2020-04-01 Thread Chris Wilson
If the current node/entry location is occupied, and the object is not
pinned, try assigning it some free space. We cannot wait here, so if in
doubt, we unreserve and try to grab all at once.

v2: Use the final pin_flags so that we won't have to move the object if
we find the wrong free space.

Signed-off-by: Chris Wilson 
Reviewed-by: Matthew Auld 
---
 .../gpu/drm/i915/gem/i915_gem_execbuffer.c| 68 ---
 1 file changed, 43 insertions(+), 25 deletions(-)

diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c 
b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
index 908fb877f875..7665a9262433 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
@@ -429,6 +429,32 @@ eb_vma_misplaced(const struct drm_i915_gem_exec_object2 
*entry,
return false;
 }
 
+static uint64_t
+eb_pin_flags(const struct drm_i915_gem_exec_object2 *entry)
+{
+   uint64_t pin_flags = 0;
+
+   if (entry->flags & EXEC_OBJECT_NEEDS_GTT)
+   pin_flags |= PIN_GLOBAL;
+
+   /*
+* Wa32bitGeneralStateOffset & Wa32bitInstructionBaseOffset,
+* limit address to the first 4GBs for unflagged objects.
+*/
+   if (!(entry->flags & EXEC_OBJECT_SUPPORTS_48B_ADDRESS))
+   pin_flags |= PIN_ZONE_4G;
+
+   if (entry->flags & __EXEC_OBJECT_NEEDS_MAP)
+   pin_flags |= PIN_MAPPABLE;
+
+   if (entry->flags & EXEC_OBJECT_PINNED)
+   pin_flags |= entry->offset | PIN_OFFSET_FIXED;
+   else if (entry->flags & __EXEC_OBJECT_NEEDS_BIAS)
+   pin_flags |= BATCH_OFFSET_BIAS | PIN_OFFSET_BIAS;
+
+   return pin_flags;
+}
+
 static inline bool
 eb_pin_vma(struct i915_execbuffer *eb,
   const struct drm_i915_gem_exec_object2 *entry,
@@ -446,8 +472,19 @@ eb_pin_vma(struct i915_execbuffer *eb,
if (unlikely(ev->flags & EXEC_OBJECT_NEEDS_GTT))
pin_flags |= PIN_GLOBAL;
 
-   if (unlikely(i915_vma_pin(vma, 0, 0, pin_flags)))
-   return false;
+   /* Attempt to reuse the current location if available */
+   if (unlikely(i915_vma_pin(vma, 0, 0, pin_flags))) {
+   if (entry->flags & EXEC_OBJECT_PINNED)
+   return false;
+
+   /* Failing that pick any _free_ space if suitable */
+   if (unlikely(i915_vma_pin(vma,
+ entry->pad_to_size,
+ entry->alignment,
+ eb_pin_flags(entry) |
+ PIN_USER | PIN_NOEVICT)))
+   return false;
+   }
 
if (unlikely(ev->flags & EXEC_OBJECT_NEEDS_FENCE)) {
if (unlikely(i915_vma_pin_fence(vma))) {
@@ -588,28 +625,9 @@ static int eb_reserve_vma(const struct i915_execbuffer *eb,
  u64 pin_flags)
 {
struct drm_i915_gem_exec_object2 *entry = ev->exec;
-   unsigned int exec_flags = ev->flags;
struct i915_vma *vma = ev->vma;
int err;
 
-   if (exec_flags & EXEC_OBJECT_NEEDS_GTT)
-   pin_flags |= PIN_GLOBAL;
-
-   /*
-* Wa32bitGeneralStateOffset & Wa32bitInstructionBaseOffset,
-* limit address to the first 4GBs for unflagged objects.
-*/
-   if (!(exec_flags & EXEC_OBJECT_SUPPORTS_48B_ADDRESS))
-   pin_flags |= PIN_ZONE_4G;
-
-   if (exec_flags & __EXEC_OBJECT_NEEDS_MAP)
-   pin_flags |= PIN_MAPPABLE;
-
-   if (exec_flags & EXEC_OBJECT_PINNED)
-   pin_flags |= entry->offset | PIN_OFFSET_FIXED;
-   else if (exec_flags & __EXEC_OBJECT_NEEDS_BIAS)
-   pin_flags |= BATCH_OFFSET_BIAS | PIN_OFFSET_BIAS;
-
if (drm_mm_node_allocated(>node) &&
eb_vma_misplaced(entry, vma, ev->flags)) {
err = i915_vma_unbind(vma);
@@ -619,7 +637,7 @@ static int eb_reserve_vma(const struct i915_execbuffer *eb,
 
err = i915_vma_pin(vma,
   entry->pad_to_size, entry->alignment,
-  pin_flags);
+  eb_pin_flags(entry) | pin_flags);
if (err)
return err;
 
@@ -628,7 +646,7 @@ static int eb_reserve_vma(const struct i915_execbuffer *eb,
eb->args->flags |= __EXEC_HAS_RELOC;
}
 
-   if (unlikely(exec_flags & EXEC_OBJECT_NEEDS_FENCE)) {
+   if (unlikely(ev->flags & EXEC_OBJECT_NEEDS_FENCE)) {
err = i915_vma_pin_fence(vma);
if (unlikely(err)) {
i915_vma_unpin(vma);
@@ -636,10 +654,10 @@ static int eb_reserve_vma(const struct i915_execbuffer 
*eb,
}
 
if (vma->fence)
-   exec_flags |= __EXEC_OBJECT_HAS_FENCE;
+   ev->flags |= __EXEC_OBJECT_HAS_FENCE;
}
 
-   ev->flags = exec_flags | __EXEC_OBJECT_HAS_PIN;
+   ev->flags |= 

Re: [Intel-gfx] [PATCH 08/11] drm/i915/gt: Only wait for GPU activity before unbinding a GGTT fence

2020-04-01 Thread Matthew Auld
On Tue, 31 Mar 2020 at 22:31, Chris Wilson  wrote:
>
> Only GPU activity via the GGTT fence is asynchronous, we know that we
> control the CPU access directly, so we only need to wait for the GPU to
> stop using the fence before we relinquish it.
>
> Signed-off-by: Chris Wilson 
> ---
>  drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c | 12 
>  drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h |  3 +++
>  drivers/gpu/drm/i915/i915_vma.c  |  4 
>  3 files changed, 15 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c 
> b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> index 225970f4a4ef..74f8201486b2 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> +++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.c
> @@ -239,15 +239,18 @@ static int fence_update(struct i915_fence_reg *fence,
> if (!i915_vma_is_map_and_fenceable(vma))
> return -EINVAL;
>
> -   ret = i915_vma_sync(vma);
> -   if (ret)
> -   return ret;
> +   if (INTEL_GEN(fence_to_i915(fence)) < 4) {
> +   /* implicit 'unfenced' GPU blits */
> +   ret = i915_vma_sync(vma);

What was the strangeness with gen < 4 again?

> +   if (ret)
> +   return ret;
> +   }
> }
>
> old = xchg(>vma, NULL);
> if (old) {
> /* XXX Ideally we would move the waiting to outside the mutex 
> */
> -   ret = i915_vma_sync(old);
> +   ret = i915_active_wait(>active);
> if (ret) {
> fence->vma = old;
> return ret;
> @@ -869,6 +872,7 @@ void intel_ggtt_init_fences(struct i915_ggtt *ggtt)
> for (i = 0; i < num_fences; i++) {
> struct i915_fence_reg *fence = >fence_regs[i];
>
> +   i915_active_init(>active, NULL, NULL);

Some active_fini?

> fence->ggtt = ggtt;
> fence->id = i;
> list_add_tail(>link, >fence_list);
> diff --git a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h 
> b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h
> index 9850f6a85d2a..08c6bb667581 100644
> --- a/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h
> +++ b/drivers/gpu/drm/i915/gt/intel_ggtt_fencing.h
> @@ -28,6 +28,8 @@
>  #include 
>  #include 
>
> +#include "i915_active.h"
> +
>  struct drm_i915_gem_object;
>  struct i915_ggtt;
>  struct i915_vma;
> @@ -41,6 +43,7 @@ struct i915_fence_reg {
> struct i915_ggtt *ggtt;
> struct i915_vma *vma;
> atomic_t pin_count;
> +   struct i915_active active;
> int id;
> /**
>  * Whether the tiling parameters for the currently
> diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
> index 18069df2a9e5..616ca5a7c875 100644
> --- a/drivers/gpu/drm/i915/i915_vma.c
> +++ b/drivers/gpu/drm/i915/i915_vma.c
> @@ -1232,6 +1232,10 @@ int i915_vma_move_to_active(struct i915_vma *vma,
> dma_resv_add_shared_fence(vma->resv, >fence);
> obj->write_domain = 0;
> }
> +
> +   if (flags & EXEC_OBJECT_NEEDS_FENCE && vma->fence)
> +   i915_active_add_request(>fence->active, rq);
> +
> obj->read_domains |= I915_GEM_GPU_DOMAINS;
> obj->mm.dirty = true;
>
> --
> 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


[Intel-gfx] ✗ Fi.CI.IGT: failure for series starting with [01/23] Revert "drm/i915/gem: Drop relocation slowpath"

2020-04-01 Thread Patchwork
== Series Details ==

Series: series starting with [01/23] Revert "drm/i915/gem: Drop relocation 
slowpath"
URL   : https://patchwork.freedesktop.org/series/75303/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8228_full -> Patchwork_17153_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17153_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17153_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_17153_full:

### IGT changes ###

 Possible regressions 

  * igt@gem_close@many-handles-one-vma:
- shard-glk:  [PASS][1] -> [FAIL][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-glk6/igt@gem_cl...@many-handles-one-vma.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-glk4/igt@gem_cl...@many-handles-one-vma.html
- shard-apl:  [PASS][3] -> [FAIL][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-apl4/igt@gem_cl...@many-handles-one-vma.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-apl7/igt@gem_cl...@many-handles-one-vma.html
- shard-skl:  [PASS][5] -> [FAIL][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-skl10/igt@gem_cl...@many-handles-one-vma.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-skl2/igt@gem_cl...@many-handles-one-vma.html
- shard-tglb: [PASS][7] -> [FAIL][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-tglb2/igt@gem_cl...@many-handles-one-vma.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-tglb7/igt@gem_cl...@many-handles-one-vma.html
- shard-kbl:  [PASS][9] -> [FAIL][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-kbl3/igt@gem_cl...@many-handles-one-vma.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-kbl4/igt@gem_cl...@many-handles-one-vma.html
- shard-snb:  [PASS][11] -> [FAIL][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-snb5/igt@gem_cl...@many-handles-one-vma.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-snb6/igt@gem_cl...@many-handles-one-vma.html
- shard-iclb: [PASS][13] -> [FAIL][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb7/igt@gem_cl...@many-handles-one-vma.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-iclb5/igt@gem_cl...@many-handles-one-vma.html

  * igt@gem_ctx_freq@sysfs:
- shard-apl:  [PASS][15] -> [INCOMPLETE][16] +20 similar issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-apl7/igt@gem_ctx_f...@sysfs.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-apl4/igt@gem_ctx_f...@sysfs.html

  * igt@gem_exec_whisper@basic-fds-all:
- shard-iclb: NOTRUN -> [INCOMPLETE][17]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-iclb1/igt@gem_exec_whis...@basic-fds-all.html

  * igt@perf_pmu@busy-hang-bcs0:
- shard-skl:  [PASS][18] -> [INCOMPLETE][19] +19 similar issues
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-skl7/igt@perf_...@busy-hang-bcs0.html
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-skl9/igt@perf_...@busy-hang-bcs0.html

  * igt@perf_pmu@busy-idle-vcs0:
- shard-skl:  NOTRUN -> [INCOMPLETE][20]
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-skl4/igt@perf_...@busy-idle-vcs0.html

  * igt@perf_pmu@busy-start-vecs0:
- shard-iclb: [PASS][21] -> [INCOMPLETE][22] +18 similar issues
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb2/igt@perf_...@busy-start-vecs0.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-iclb5/igt@perf_...@busy-start-vecs0.html

  * igt@perf_pmu@busy-vcs0:
- shard-kbl:  [PASS][23] -> [INCOMPLETE][24] +22 similar issues
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-kbl3/igt@perf_...@busy-vcs0.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-kbl4/igt@perf_...@busy-vcs0.html

  * igt@perf_pmu@render-node-busy-rcs0:
- shard-tglb: [PASS][25] -> [INCOMPLETE][26] +24 similar issues
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-tglb1/igt@perf_...@render-node-busy-rcs0.html
   [26]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17153/shard-tglb1/igt@perf_...@render-node-busy-rcs0.html

  * igt@runner@aborted:
- shard-iclb: NOTRUN -> 

Re: [Intel-gfx] [PATCH] drm/i915/perf: Enable application triggered OA reports

2020-04-01 Thread Umesh Nerlige Ramappa

On Tue, Mar 31, 2020 at 02:46:46PM +0300, Lionel Landwerlin wrote:

Gen12 brought an important redesign of the OA unit, splitting it in 2
with a per context part (OAR) and a global part (OAG).

OAR deals with per context counters and implements the
MI_REPORT_PERF_COUNT command.

OAG deals with global counters and the OA buffer.

Unfortunately some of the counters available in OAG are not available
in OAR, for instance counters that would report global caches
utilization.

Since applications making use of this want to access those additional
OAG counters we can enable them to generate a report from their
command buffer into the OA buffer. This is somewhat equivalent to
having them doing their own MI_REPORT_PERF_COUNT. The application then
parse the OA buffer as they were doing previously, only looking for a
begin/end OA report with the appropriate reason field in the OA buffer
instead of using MI_REPORT_PERF_COUNT generated reports for begin/end.

Signed-off-by: Lionel Landwerlin 
---
drivers/gpu/drm/i915/gt/intel_workarounds.c | 18 ++
drivers/gpu/drm/i915/i915_perf.c| 10 +++---
drivers/gpu/drm/i915/i915_reg.h |  2 ++
3 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c 
b/drivers/gpu/drm/i915/gt/intel_workarounds.c
index e96cc7fa0936..552eadaa6f9a 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
@@ -1127,6 +1127,10 @@ static void gen9_whitelist_build(struct i915_wa_list *w)

/* WaSendPushConstantsFromMMIO:skl,bxt */
whitelist_reg(w, COMMON_SLICE_CHICKEN2);
+
+   /* Allow userspace trigger OA report generation in OA buffer. */
+   whitelist_reg(w, OAREPORTTRIG2);
+   whitelist_reg(w, OAREPORTTRIG6);
}

static void skl_whitelist_build(struct intel_engine_cs *engine)
@@ -1208,6 +1212,10 @@ static void cnl_whitelist_build(struct intel_engine_cs 
*engine)

/* WaEnablePreemptionGranularityControlByUMD:cnl */
whitelist_reg(w, GEN8_CS_CHICKEN1);
+
+   /* Allow userspace trigger OA report generation in OA buffer. */
+   whitelist_reg(w, OAREPORTTRIG2);
+   whitelist_reg(w, OAREPORTTRIG6);
}

static void icl_whitelist_build(struct intel_engine_cs *engine)
@@ -1237,6 +1245,12 @@ static void icl_whitelist_build(struct intel_engine_cs 
*engine)
whitelist_reg_ext(w, PS_INVOCATION_COUNT,
  RING_FORCE_TO_NONPRIV_ACCESS_RD |
  RING_FORCE_TO_NONPRIV_RANGE_4);
+
+   /*
+* Allow userspace trigger OA report generation in OA buffer.
+*/
+   whitelist_reg(w, OAREPORTTRIG2);
+   whitelist_reg(w, OAREPORTTRIG6);
break;

case VIDEO_DECODE_CLASS:
@@ -1281,6 +1295,10 @@ static void tgl_whitelist_build(struct intel_engine_cs 
*engine)

/* Wa_1806527549:tgl */
whitelist_reg(w, HIZ_CHICKEN);
+
+   /* Allow userspace trigger OA report generation in OA buffer. */
+   whitelist_reg(w, GEN12_OAG_OAREPORTTRIG2);
+   whitelist_reg(w, GEN12_OAG_OAREPORTTRIG6);
break;
default:
break;
diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index 28e3d76fa2e6..ae935b1b1ae3 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -1450,7 +1450,8 @@ static void gen8_init_oa_buffer(struct i915_perf_stream 
*stream)
 *  bit."
 */
intel_uncore_write(uncore, GEN8_OABUFFER, gtt_offset |
-  OABUFFER_SIZE_16M | GEN8_OABUFFER_MEM_SELECT_GGTT);
+  OABUFFER_SIZE_16M | GEN8_OABUFFER_MEM_SELECT_GGTT |
+  GEN8_OABUFFER_EDGE_TRIGGER);
intel_uncore_write(uncore, GEN8_OATAILPTR, gtt_offset & 
GEN8_OATAILPTR_MASK);

/* Mark that we need updated tail pointers to read from... */
@@ -1503,7 +1504,8 @@ static void gen12_init_oa_buffer(struct i915_perf_stream 
*stream)
 *  bit."
 */
intel_uncore_write(uncore, GEN12_OAG_OABUFFER, gtt_offset |
-  OABUFFER_SIZE_16M | GEN8_OABUFFER_MEM_SELECT_GGTT);
+  OABUFFER_SIZE_16M | GEN8_OABUFFER_MEM_SELECT_GGTT |
+  GEN12_OAG_OABUFFER_EDGE_TRIGGER);
intel_uncore_write(uncore, GEN12_OAG_OATAILPTR,
   gtt_offset & GEN12_OAG_OATAILPTR_MASK);

@@ -4481,8 +4483,10 @@ int i915_perf_ioctl_version(void)
 *
 * 5: Add DRM_I915_PERF_PROP_POLL_OA_PERIOD parameter that controls the
 *interval for the hrtimer used to check for OA data.
+*
+* 6. Add edge trigger report generation support.
 */
-   return 5;
+   return 6;


Do you think we should be adding a comment in uapi for revision 6?

If not, this patch looks good and is:


Re: [Intel-gfx] [PATCH 07/11] drm/i915/gem: Try allocating va from free space

2020-04-01 Thread Chris Wilson
Quoting Matthew Auld (2020-04-01 19:20:56)
> On Tue, 31 Mar 2020 at 22:31, Chris Wilson  wrote:
> >
> > If the current node/entry location is occupied, and the object is not
> > pinned, try assigning it some free space. We cannot wait here, so if in
> > doubt, we unreserve and try to grab all at once.
> >
> > Signed-off-by: Chris Wilson 
> > ---
> >  drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 13 +++--
> >  1 file changed, 11 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c 
> > b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> > index bc8aa9604787..d8c746108d85 100644
> > --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> > +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> > @@ -446,8 +446,17 @@ eb_pin_vma(struct i915_execbuffer *eb,
> > if (unlikely(ev->flags & EXEC_OBJECT_NEEDS_GTT))
> > pin_flags |= PIN_GLOBAL;
> >
> > -   if (unlikely(i915_vma_pin(vma, 0, 0, pin_flags)))
> > -   return false;
> > +   if (unlikely(i915_vma_pin(vma, 0, 0, pin_flags))) {
> > +   if (entry->flags & EXEC_OBJECT_PINNED)
> > +   return false;
> > +
> > +   pin_flags &= ~PIN_OFFSET_FIXED;
> > +   if (unlikely(i915_vma_pin(vma,
> > + entry->pad_to_size,
> > + entry->alignment,
> > + pin_flags)))
> 
> Just curious, why not just apply the rest of the flags here(MAP, 48B,
> BIAS etc) which saves us from having to bind/unbind/bind if it's
> trivially misplaced?

That required actually doing some work to refactor the flag selection!
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH i-g-t] i915/gem_exec_alignment: Exercise potential priority inversion

2020-04-01 Thread Chris Wilson
From: Dominik Grzegorzek 

A low priority client should not block a high priority client. In this
case we check that if a low priority client poisons its own GTT and so
its execbuf may take ages to process, a high priority client can still
execute in parallel.

Signed-off-by: Dominik Grzegorzek 
Cc: Zbigniew Kempczyński 
Reviewed-by: Chris Wilson 
Signed-off-by: Chris Wilson 
---
 tests/i915/gem_exec_alignment.c | 116 
 tests/intel-ci/blacklist.txt|   1 -
 2 files changed, 116 insertions(+), 1 deletion(-)

diff --git a/tests/i915/gem_exec_alignment.c b/tests/i915/gem_exec_alignment.c
index 2895aee1e..730d3b778 100644
--- a/tests/i915/gem_exec_alignment.c
+++ b/tests/i915/gem_exec_alignment.c
@@ -38,6 +38,8 @@
 #include 
 #include 
 #include 
+#include 
+#include 
 
 #include "drm.h"
 
@@ -121,6 +123,118 @@ static uint32_t batch_create(int i915, unsigned long sz)
return handle;
 }
 
+static void naughty_child(int i915, int link)
+{
+   struct drm_i915_gem_execbuffer2 execbuf;
+   struct drm_i915_gem_exec_object2 *obj;
+   uint64_t gtt_size, ram_size, count;
+   struct timespec tv = {};
+
+   gtt_size = gem_aperture_size(i915); /* We have to *share* our GTT! */
+   ram_size = intel_get_total_ram_mb();
+   ram_size *= 1024 * 1024;
+
+   count = min(gtt_size, ram_size) / 16384;
+   if (count > file_max()) /* vfs cap */
+   count = file_max();
+   intel_require_memory(count, 4096, CHECK_RAM);
+
+   /* Fill the low-priority address space */
+   obj = calloc(sizeof(*obj), count);
+   igt_assert(obj);
+   for (unsigned long i = 0; i < count; i++) {
+   obj[i].handle = batch_create(i915, 4096);
+   if ((gtt_size - 1) >> 32)
+   obj[i].flags |= EXEC_OBJECT_SUPPORTS_48B_ADDRESS;
+   obj[i].alignment = 4096;
+   }
+
+   memset(, 0, sizeof(execbuf));
+   execbuf.buffers_ptr = to_user_pointer(obj);
+   execbuf.buffer_count = count;
+   execbuf.rsvd1 = gem_context_create(i915);
+   gem_execbuf(i915, );
+
+   /* Calibrate a long execbuf() */
+   for (unsigned long i = 0; i < count; i++)
+   obj[i].alignment = 8192;
+
+   execbuf.buffer_count = 2;
+   while (igt_seconds_elapsed() < 2) {
+   execbuf.buffer_count <<= 1;
+   gem_execbuf(i915, );
+   }
+   execbuf.buffer_count <<= 1;
+   if (execbuf.buffer_count > count)
+   execbuf.buffer_count = count;
+   igt_debug("Using %u buffers to delay execbuf\n", execbuf.buffer_count);
+
+   for (unsigned long i = 0; i < count; i++)
+   obj[i].alignment = 16384;
+
+   write(link, , sizeof(tv));
+
+   igt_debug("Executing naughty execbuf\n");
+   igt_nsec_elapsed(memset(, 0, sizeof(tv)));
+   gem_execbuf(i915, ); /* this should take over 2s */
+   igt_info("Naughty client took %'"PRIu64"ns\n",
+igt_nsec_elapsed());
+
+   gem_context_destroy(i915, execbuf.rsvd1);
+   for (unsigned long i = 0; i < count; i++)
+   gem_close(i915, obj[i].handle);
+   free(obj);
+}
+
+static void prio_inversion(int i915)
+{
+   struct drm_i915_gem_exec_object2 obj = {
+   .handle = batch_create(i915, 4095)
+   };
+   struct drm_i915_gem_execbuffer2 execbuf = {
+   .buffers_ptr = to_user_pointer(),
+   .buffer_count = 1,
+   };
+   struct timespec tv;
+   uint64_t elapsed;
+   int link[2];
+
+   /*
+* First low priority client create mass of holes in their
+* own address space, then launch a batch with oodles of object with
+* alignment that doesn't match previous one. While lp execbufer
+* is performing we want to start high priority task
+* and we expect it will not be blocked.
+*/
+
+   igt_require(gem_uses_full_ppgtt(i915));
+   igt_assert(pipe(link) == 0);
+
+   /* Prime our prestine context */
+   gem_execbuf(i915, );
+
+   igt_fork(child, 1)
+   naughty_child(i915, link[1]);
+
+   igt_debug("Waiting for naughty client\n");
+   read(link[0], , sizeof(tv));
+   igt_debug("Ready...\n");
+   sleep(1); /* let the naughty execbuf begin */
+   igt_debug("Go!\n");
+
+   igt_nsec_elapsed(memset(, 0, sizeof(tv)));
+   gem_execbuf(i915, );
+   elapsed = igt_nsec_elapsed();
+   igt_info("Normal client took %'"PRIu64"ns\n", elapsed);
+
+   igt_waitchildren();
+   gem_close(i915, obj.handle);
+
+   igt_assert(elapsed < 10 * 1000 * 1000); /* 10ms */
+   close(link[0]);
+   close(link[1]);
+}
+
 static void many(int fd, int timeout)
 {
struct drm_i915_gem_exec_object2 *execobj;
@@ -281,4 +395,6 @@ igt_main
single(fd);
igt_subtest("many")
many(fd, 20);
+   igt_subtest("pi")
+   prio_inversion(fd);
 }
diff --git 

Re: [Intel-gfx] [PATCH 07/11] drm/i915/gem: Try allocating va from free space

2020-04-01 Thread Matthew Auld
On Tue, 31 Mar 2020 at 22:31, Chris Wilson  wrote:
>
> If the current node/entry location is occupied, and the object is not
> pinned, try assigning it some free space. We cannot wait here, so if in
> doubt, we unreserve and try to grab all at once.
>
> Signed-off-by: Chris Wilson 
> ---
>  drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 13 +++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c 
> b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> index bc8aa9604787..d8c746108d85 100644
> --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c
> @@ -446,8 +446,17 @@ eb_pin_vma(struct i915_execbuffer *eb,
> if (unlikely(ev->flags & EXEC_OBJECT_NEEDS_GTT))
> pin_flags |= PIN_GLOBAL;
>
> -   if (unlikely(i915_vma_pin(vma, 0, 0, pin_flags)))
> -   return false;
> +   if (unlikely(i915_vma_pin(vma, 0, 0, pin_flags))) {
> +   if (entry->flags & EXEC_OBJECT_PINNED)
> +   return false;
> +
> +   pin_flags &= ~PIN_OFFSET_FIXED;
> +   if (unlikely(i915_vma_pin(vma,
> + entry->pad_to_size,
> + entry->alignment,
> + pin_flags)))

Just curious, why not just apply the rest of the flags here(MAP, 48B,
BIAS etc) which saves us from having to bind/unbind/bind if it's
trivially misplaced?

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


Re: [Intel-gfx] [PATCH 1/6] drm/i915/display: Move out code to return the digital_port of the aux ch

2020-04-01 Thread Souza, Jose
On Wed, 2020-04-01 at 15:18 +0800, You-Sheng Yang wrote:
> On 2020-04-01 08:41, José Roberto de Souza wrote:
> > Moving the code to return the digital port of the aux channel also
> > removing the intel_phy_is_tc() to make it generic.
> > digital_port will be needed in icl_tc_phy_aux_power_well_enable()
> > so adding it as a parameter to icl_tc_port_assert_ref_held().
> > 
> > While at at removing the duplicated call to icl_tc_phy_aux_ch() in
> > icl_tc_port_assert_ref_held().
> > 
> > Signed-off-by: José Roberto de Souza 
> > ---
> >  .../drm/i915/display/intel_display_power.c| 38 ++-
> > 
> >  1 file changed, 21 insertions(+), 17 deletions(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c
> > b/drivers/gpu/drm/i915/display/intel_display_power.c
> > index 433e5a81dd4d..02a07aa710e4 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> > @@ -500,26 +500,14 @@ static int power_well_async_ref_count(struct
> > drm_i915_private *dev_priv,
> > return refs;
> >  }
> >  
> > -static void icl_tc_port_assert_ref_held(struct drm_i915_private
> > *dev_priv,
> > -   struct i915_power_well
> > *power_well)
> > +static struct intel_digital_port *
> > +aux_ch_to_digital_port(struct drm_i915_private *dev_priv,
> > +  enum aux_ch aux_ch)
> 
> This fails the build because icl_tc_port_assert_ref_held was
> originally
> guarded by CONFIG_DRM_I915_DEBUG_RUNTIME_PM, but now
> aux_ch_to_digital_port maybe used outside the scope.

Thanks, fixed.

> 
> >  {
> > -   enum aux_ch aux_ch = icl_tc_phy_aux_ch(dev_priv, power_well);
> > struct intel_digital_port *dig_port = NULL;
> > struct intel_encoder *encoder;
> >  
> > -   /* Bypass the check if all references are released
> > asynchronously */
> > -   if (power_well_async_ref_count(dev_priv, power_well) ==
> > -   power_well->count)
> > -   return;
> > -
> > -   aux_ch = icl_tc_phy_aux_ch(dev_priv, power_well);
> > -
> > for_each_intel_encoder(_priv->drm, encoder) {
> > -   enum phy phy = intel_port_to_phy(dev_priv, encoder-
> > >port);
> > -
> > -   if (!intel_phy_is_tc(dev_priv, phy))
> > -   continue;
> > -
> > /* We'll check the MST primary port */
> > if (encoder->type == INTEL_OUTPUT_DP_MST)
> > continue;
> > @@ -536,6 +524,18 @@ static void icl_tc_port_assert_ref_held(struct
> > drm_i915_private *dev_priv,
> > break;
> > }
> >  
> > +   return dig_port;
> > +}
> > +
> > +static void icl_tc_port_assert_ref_held(struct drm_i915_private
> > *dev_priv,
> > +   struct i915_power_well
> > *power_well,
> > +   struct intel_digital_port
> > *dig_port)
> > +{
> > +   /* Bypass the check if all references are released
> > asynchronously */
> > +   if (power_well_async_ref_count(dev_priv, power_well) ==
> > +   power_well->count)
> > +   return;
> > +
> > if (drm_WARN_ON(_priv->drm, !dig_port))
> > return;
> >  
> > @@ -558,9 +558,10 @@ icl_tc_phy_aux_power_well_enable(struct
> > drm_i915_private *dev_priv,
> >  struct i915_power_well *power_well)
> >  {
> > enum aux_ch aux_ch = icl_tc_phy_aux_ch(dev_priv, power_well);
> > +   struct intel_digital_port *dig_port =
> > aux_ch_to_digital_port(dev_priv, aux_ch);
> 
> E.g. here.
> 
> > u32 val;
> >  
> > -   icl_tc_port_assert_ref_held(dev_priv, power_well);
> > +   icl_tc_port_assert_ref_held(dev_priv, power_well, dig_port);
> >  
> > val = intel_de_read(dev_priv, DP_AUX_CH_CTL(aux_ch));
> > val &= ~DP_AUX_CH_CTL_TBT_IO;
> > @@ -588,7 +589,10 @@ static void
> >  icl_tc_phy_aux_power_well_disable(struct drm_i915_private
> > *dev_priv,
> >   struct i915_power_well *power_well)
> >  {
> > -   icl_tc_port_assert_ref_held(dev_priv, power_well);
> > +   enum aux_ch aux_ch = icl_tc_phy_aux_ch(dev_priv, power_well);
> > +   struct intel_digital_port *dig_port =
> > aux_ch_to_digital_port(dev_priv, aux_ch);
> > +
> > +   icl_tc_port_assert_ref_held(dev_priv, power_well, dig_port);
> >  
> > hsw_power_well_disable(dev_priv, power_well);
> >  }
> > 
> 
> You-Sheng Yang
> 
___
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/perf: Do not clear pollin for small user read buffers (rev6)

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/perf: Do not clear pollin for small user read buffers (rev6)
URL   : https://patchwork.freedesktop.org/series/75085/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8230_full -> Patchwork_17166_full


Summary
---

  **SUCCESS**

  No regressions found.

  

New tests
-

  New tests have been introduced between CI_DRM_8230_full and 
Patchwork_17166_full:

### New IGT tests (1) ###

  * igt@gem_exec_capture@capture:
- Statuses :
- Exec time: [None] s

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_exec_schedule@implicit-read-write-bsd2:
- shard-iclb: [PASS][1] -> [SKIP][2] ([fdo#109276] / [i915#677])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-iclb2/igt@gem_exec_sched...@implicit-read-write-bsd2.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17166/shard-iclb5/igt@gem_exec_sched...@implicit-read-write-bsd2.html

  * igt@gem_exec_schedule@out-order-bsd2:
- shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#109276]) +7 similar 
issues
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-iclb4/igt@gem_exec_sched...@out-order-bsd2.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17166/shard-iclb3/igt@gem_exec_sched...@out-order-bsd2.html

  * igt@gem_exec_schedule@pi-common-bsd:
- shard-iclb: [PASS][5] -> [SKIP][6] ([i915#677])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-iclb6/igt@gem_exec_sched...@pi-common-bsd.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17166/shard-iclb2/igt@gem_exec_sched...@pi-common-bsd.html

  * igt@gem_exec_schedule@preempt-other-chain-bsd:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#112146]) +6 similar 
issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-iclb7/igt@gem_exec_sched...@preempt-other-chain-bsd.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17166/shard-iclb1/igt@gem_exec_sched...@preempt-other-chain-bsd.html

  * igt@gem_exec_suspend@basic-s3:
- shard-kbl:  [PASS][9] -> [DMESG-WARN][10] ([i915#180]) +1 similar 
issue
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-kbl6/igt@gem_exec_susp...@basic-s3.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17166/shard-kbl6/igt@gem_exec_susp...@basic-s3.html

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

  * igt@kms_cursor_crc@pipe-a-cursor-64x64-random:
- shard-apl:  [PASS][13] -> [FAIL][14] ([i915#54] / [i915#95])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-apl3/igt@kms_cursor_...@pipe-a-cursor-64x64-random.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17166/shard-apl8/igt@kms_cursor_...@pipe-a-cursor-64x64-random.html

  * igt@kms_cursor_crc@pipe-b-cursor-suspend:
- shard-skl:  [PASS][15] -> [INCOMPLETE][16] ([i915#300])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-skl8/igt@kms_cursor_...@pipe-b-cursor-suspend.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17166/shard-skl8/igt@kms_cursor_...@pipe-b-cursor-suspend.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
- shard-skl:  [PASS][17] -> [FAIL][18] ([IGT#5] / [i915#697])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-skl10/igt@kms_cursor_leg...@flip-vs-cursor-atomic-transitions.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17166/shard-skl9/igt@kms_cursor_leg...@flip-vs-cursor-atomic-transitions.html

  * igt@kms_flip@plain-flip-ts-check-interruptible:
- shard-skl:  [PASS][19] -> [FAIL][20] ([i915#34])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-skl3/igt@kms_f...@plain-flip-ts-check-interruptible.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17166/shard-skl5/igt@kms_f...@plain-flip-ts-check-interruptible.html

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-min:
- shard-skl:  [PASS][21] -> [FAIL][22] ([fdo#108145]) +1 similar 
issue
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-skl10/igt@kms_plane_alpha_bl...@pipe-a-constant-alpha-min.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17166/shard-skl10/igt@kms_plane_alpha_bl...@pipe-a-constant-alpha-min.html

  * igt@kms_plane_alpha_blend@pipe-b-coverage-7efc:
- shard-skl:  [PASS][23] -> [FAIL][24] ([fdo#108145] / [i915#265])
   [23]: 

[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/gt: move remaining debugfs interfaces into gt (rev2)

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/gt: move remaining debugfs interfaces into gt (rev2)
URL   : https://patchwork.freedesktop.org/series/75333/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8230_full -> Patchwork_17165_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17165_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17165_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_17165_full:

### IGT changes ###

 Possible regressions 

  * igt@i915_pm_rpm@debugfs-forcewake-user:
- shard-iclb: [PASS][1] -> [SKIP][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-iclb5/igt@i915_pm_...@debugfs-forcewake-user.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17165/shard-iclb5/igt@i915_pm_...@debugfs-forcewake-user.html
- shard-tglb: [PASS][3] -> [SKIP][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-tglb6/igt@i915_pm_...@debugfs-forcewake-user.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17165/shard-tglb6/igt@i915_pm_...@debugfs-forcewake-user.html

  * igt@i915_suspend@forcewake:
- shard-snb:  [PASS][5] -> [FAIL][6] +1 similar issue
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-snb5/igt@i915_susp...@forcewake.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17165/shard-snb5/igt@i915_susp...@forcewake.html

  * igt@perf_pmu@rc6:
- shard-apl:  [PASS][7] -> [FAIL][8] +3 similar issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-apl3/igt@perf_...@rc6.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17165/shard-apl7/igt@perf_...@rc6.html
- shard-glk:  [PASS][9] -> [FAIL][10] +3 similar issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-glk3/igt@perf_...@rc6.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17165/shard-glk9/igt@perf_...@rc6.html
- shard-tglb: [PASS][11] -> [FAIL][12] +4 similar issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-tglb5/igt@perf_...@rc6.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17165/shard-tglb1/igt@perf_...@rc6.html
- shard-kbl:  [PASS][13] -> [FAIL][14] +3 similar issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-kbl2/igt@perf_...@rc6.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17165/shard-kbl2/igt@perf_...@rc6.html

  * igt@perf_pmu@rc6-runtime-pm:
- shard-skl:  [PASS][15] -> [FAIL][16] +3 similar issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-skl10/igt@perf_...@rc6-runtime-pm.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17165/shard-skl1/igt@perf_...@rc6-runtime-pm.html

  * igt@perf_pmu@rc6-runtime-pm-long:
- shard-iclb: [PASS][17] -> [FAIL][18] +3 similar issues
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-iclb7/igt@perf_...@rc6-runtime-pm-long.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17165/shard-iclb4/igt@perf_...@rc6-runtime-pm-long.html

  
New tests
-

  New tests have been introduced between CI_DRM_8230_full and 
Patchwork_17165_full:

### New IGT tests (1) ###

  * igt@gem_exec_capture@capture:
- Statuses :
- Exec time: [None] s

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_exec_balancer@smoke:
- shard-iclb: [PASS][19] -> [SKIP][20] ([fdo#110854])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-iclb4/igt@gem_exec_balan...@smoke.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17165/shard-iclb5/igt@gem_exec_balan...@smoke.html

  * igt@gem_exec_schedule@pi-userfault-bsd:
- shard-iclb: [PASS][21] -> [SKIP][22] ([i915#677])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-iclb8/igt@gem_exec_sched...@pi-userfault-bsd.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17165/shard-iclb2/igt@gem_exec_sched...@pi-userfault-bsd.html

  * igt@gem_exec_schedule@preempt-other-chain-bsd:
- shard-iclb: [PASS][23] -> [SKIP][24] ([fdo#112146]) +5 similar 
issues
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8230/shard-iclb7/igt@gem_exec_sched...@preempt-other-chain-bsd.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17165/shard-iclb4/igt@gem_exec_sched...@preempt-other-chain-bsd.html

  * 

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/gt: Fill all the unused space in the GGTT (rev2)

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/gt: Fill all the unused space in the GGTT (rev2)
URL   : https://patchwork.freedesktop.org/series/75320/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8229_full -> Patchwork_17160_full


Summary
---

  **SUCCESS**

  No regressions found.

  

New tests
-

  New tests have been introduced between CI_DRM_8229_full and 
Patchwork_17160_full:

### New IGT tests (1) ###

  * igt@gem_exec_capture@capture:
- Statuses :
- Exec time: [None] s

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_persistence@engines-mixed-process@rcs0:
- shard-skl:  [PASS][1] -> [FAIL][2] ([i915#1528])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8229/shard-skl2/igt@gem_ctx_persistence@engines-mixed-proc...@rcs0.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17160/shard-skl8/igt@gem_ctx_persistence@engines-mixed-proc...@rcs0.html

  * igt@gem_exec_schedule@implicit-both-bsd:
- shard-iclb: [PASS][3] -> [SKIP][4] ([i915#677])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8229/shard-iclb5/igt@gem_exec_sched...@implicit-both-bsd.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17160/shard-iclb4/igt@gem_exec_sched...@implicit-both-bsd.html

  * igt@gem_exec_schedule@preempt-other-chain-bsd:
- shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#112146]) +9 similar 
issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8229/shard-iclb6/igt@gem_exec_sched...@preempt-other-chain-bsd.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17160/shard-iclb1/igt@gem_exec_sched...@preempt-other-chain-bsd.html

  * igt@gem_workarounds@suspend-resume-context:
- shard-apl:  [PASS][7] -> [DMESG-WARN][8] ([i915#180]) +2 similar 
issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8229/shard-apl3/igt@gem_workarou...@suspend-resume-context.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17160/shard-apl4/igt@gem_workarou...@suspend-resume-context.html

  * igt@kms_cursor_crc@pipe-a-cursor-64x64-random:
- shard-apl:  [PASS][9] -> [FAIL][10] ([i915#54] / [i915#95])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8229/shard-apl2/igt@kms_cursor_...@pipe-a-cursor-64x64-random.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17160/shard-apl8/igt@kms_cursor_...@pipe-a-cursor-64x64-random.html

  * igt@kms_cursor_crc@pipe-b-cursor-suspend:
- shard-skl:  [PASS][11] -> [INCOMPLETE][12] ([i915#300])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8229/shard-skl3/igt@kms_cursor_...@pipe-b-cursor-suspend.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17160/shard-skl5/igt@kms_cursor_...@pipe-b-cursor-suspend.html

  * igt@kms_draw_crc@draw-method-xrgb2101010-mmap-cpu-untiled:
- shard-skl:  [PASS][13] -> [FAIL][14] ([i915#52] / [i915#54])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8229/shard-skl10/igt@kms_draw_...@draw-method-xrgb2101010-mmap-cpu-untiled.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17160/shard-skl7/igt@kms_draw_...@draw-method-xrgb2101010-mmap-cpu-untiled.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-kbl:  [PASS][15] -> [DMESG-WARN][16] ([i915#180] / 
[i915#93] / [i915#95]) +1 similar issue
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8229/shard-kbl6/igt@kms_frontbuffer_track...@fbc-suspend.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17160/shard-kbl4/igt@kms_frontbuffer_track...@fbc-suspend.html

  * igt@kms_plane_lowres@pipe-a-tiling-x:
- shard-glk:  [PASS][17] -> [FAIL][18] ([i915#899])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8229/shard-glk6/igt@kms_plane_low...@pipe-a-tiling-x.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17160/shard-glk4/igt@kms_plane_low...@pipe-a-tiling-x.html

  * igt@kms_psr2_su@frontbuffer:
- shard-iclb: [PASS][19] -> [SKIP][20] ([fdo#109642] / [fdo#111068])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8229/shard-iclb2/igt@kms_psr2...@frontbuffer.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17160/shard-iclb6/igt@kms_psr2...@frontbuffer.html

  * igt@kms_psr@psr2_sprite_plane_move:
- shard-iclb: [PASS][21] -> [SKIP][22] ([fdo#109441]) +1 similar 
issue
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8229/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17160/shard-iclb6/igt@kms_psr@psr2_sprite_plane_move.html

  * igt@kms_vblank@pipe-a-ts-continuation-suspend:
- shard-kbl:  [PASS][23] -> [DMESG-WARN][24] ([i915#180]) +3 
similar issues
   [23]: 

Re: [Intel-gfx] [PATCH v3 2/3] drm/i915: Add i915_lpsp_info debugfs

2020-04-01 Thread Manna, Animesh



On 31-03-2020 17:07, Anshuman Gupta wrote:

New i915_pm_lpsp igt solution approach relies on connector specific
debugfs attribute i915_lpsp_info, it exposes whether an output is
capable of driving lpsp and exposes lpsp enablement info.

v2:
- CI fixup.
v3:
- register i915_lpsp_info only for supported connector. [Jani]
- use intel_display_power_well_is_enabled() instead of looking
   inside power_well count. [Jani]
- fixes the lpsp capable conditional logic. [Jani]
- combined the lpsp capable and enable info. [Jani]

Signed-off-by: Anshuman Gupta 
---
  .../drm/i915/display/intel_display_debugfs.c  | 124 ++
  .../drm/i915/display/intel_display_power.h|   2 +
  2 files changed, 126 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display_debugfs.c 
b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
index 424f4e52f783..b185c4617468 100644
--- a/drivers/gpu/drm/i915/display/intel_display_debugfs.c
+++ b/drivers/gpu/drm/i915/display/intel_display_debugfs.c
@@ -9,6 +9,7 @@
  #include "i915_debugfs.h"
  #include "intel_csr.h"
  #include "intel_display_debugfs.h"
+#include "intel_display_power.h"
  #include "intel_display_types.h"
  #include "intel_dp.h"
  #include "intel_fbc.h"
@@ -611,6 +612,98 @@ static void intel_hdcp_info(struct seq_file *m,
seq_puts(m, "\n");
  }
  
+#define LPSP_CAPABLE(COND) (COND ? seq_puts(m, "LPSP capable\n") : seq_puts(m, "LPSP incapable\n"))

+#define LPSP_ENABLE(COND) (COND ? seq_puts(m, "LPSP enabled\n") : seq_puts(m, "LPSP 
disabled\n"))
+
+/* LVDS also an embedded panel but we are not interested in it */
+static bool intel_have_embedded_panel(struct drm_connector *connector)
+{
+   return connector->connector_type == DRM_MODE_CONNECTOR_DSI ||
+   connector->connector_type == DRM_MODE_CONNECTOR_eDP;
+}
+
+static bool intel_have_gen9_lpsp_panel(struct drm_connector *connector)
+{
+   return intel_have_embedded_panel(connector) ||
+   connector->connector_type == DRM_MODE_CONNECTOR_DisplayPort;
+}
+
+static bool intel_have_lpsp_supported_panel(struct drm_connector *connector)
+{
+   return intel_have_gen9_lpsp_panel(connector) ||
+   connector->connector_type == DRM_MODE_CONNECTOR_HDMIA ||
+   connector->connector_type == DRM_MODE_CONNECTOR_HDMIB;
+}


This function will pass for every platform for almost all (EDP/MIPI/DP/HDMI) 
connector type even if not supported ...rt?
Apart from that I did not understand the purpose of above functions.
Can we have a single function to check the connector is supported lpsp or not.

static bool is_lpsp_supported(struct drm_connector *connector)

In function definition we can check for platform first, then check 
connector_type and return true/false.
 


+
+static bool
+intel_lpsp_power_well_enabled(struct drm_i915_private *dev_priv,
+ enum i915_power_well_id power_well_id)
+{
+   intel_wakeref_t wakeref;
+   bool is_enabled;
+
+   wakeref = intel_runtime_pm_get(_priv->runtime_pm);
+   is_enabled = intel_display_power_well_is_enabled(dev_priv,
+power_well_id);
+   intel_runtime_pm_put(_priv->runtime_pm, wakeref);
+
+   return is_enabled;
+}
+
+static void
+intel_lpsp_gen12_helper(struct seq_file *m, struct drm_connector *connector)
+{
+   struct intel_encoder *encoder =
+   intel_attached_encoder(to_intel_connector(connector));
+   struct drm_i915_private *dev_priv = to_i915(connector->dev);
+   bool lpsp_capable = false;
+
+   if (IS_TIGERLAKE(dev_priv))
+   lpsp_capable = encoder->port <= PORT_C;
+
+   LPSP_CAPABLE(lpsp_capable);


is_supported and capable looks similar to me, what is the difference?


+   LPSP_ENABLE(!intel_lpsp_power_well_enabled(dev_priv, ICL_DISP_PW_3));
+}
+
+static void
+intel_lpsp_gen11_helper(struct seq_file *m, struct drm_connector *connector)
+{
+   struct drm_i915_private *dev_priv = to_i915(connector->dev);
+
+   LPSP_CAPABLE(intel_have_embedded_panel(connector));
+   LPSP_ENABLE(!intel_lpsp_power_well_enabled(dev_priv, ICL_DISP_PW_3));
+}
+
+static void
+intel_lpsp_gen9_helper(struct seq_file *m, struct drm_connector *connector)
+{
+   struct intel_encoder *encoder =
+   intel_attached_encoder(to_intel_connector(connector));
+   struct drm_i915_private *dev_priv = to_i915(connector->dev);
+
+   LPSP_CAPABLE(encoder->port == PORT_A &&
+intel_have_gen9_lpsp_panel(connector));
+   LPSP_ENABLE(!intel_lpsp_power_well_enabled(dev_priv, SKL_DISP_PW_2));
+}
+
+static void
+intel_lpsp_legacy_gen_helper(struct seq_file *m,
+struct drm_connector *connector)
+{
+   struct drm_i915_private *dev_priv = to_i915(connector->dev);
+
+   /*
+* Apart from HASWELL/BROADWELL other legacy platform doesn't
+* support lpsp.
+*/
+   if 

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915: Report all failed registers for ctx isolation (rev2)

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915: Report all failed registers for ctx isolation (rev2)
URL   : https://patchwork.freedesktop.org/series/75318/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8228_full -> Patchwork_17159_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Possible new issues
---

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

### IGT changes ###

 Suppressed 

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

  * {igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb}:
- shard-glk:  NOTRUN -> [FAIL][1]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17159/shard-glk3/igt@kms_plane_alpha_bl...@pipe-b-alpha-transparent-fb.html
- shard-skl:  NOTRUN -> [FAIL][2]
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17159/shard-skl8/igt@kms_plane_alpha_bl...@pipe-b-alpha-transparent-fb.html

  
New tests
-

  New tests have been introduced between CI_DRM_8228_full and 
Patchwork_17159_full:

### New IGT tests (1) ###

  * igt@gem_exec_capture@capture:
- Statuses :
- Exec time: [None] s

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_exec_schedule@implicit-both-bsd1:
- shard-iclb: [PASS][3] -> [SKIP][4] ([fdo#109276] / [i915#677]) +1 
similar issue
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb2/igt@gem_exec_sched...@implicit-both-bsd1.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17159/shard-iclb7/igt@gem_exec_sched...@implicit-both-bsd1.html

  * igt@gem_exec_schedule@pi-distinct-iova-bsd:
- shard-iclb: [PASS][5] -> [SKIP][6] ([i915#677]) +2 similar issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb8/igt@gem_exec_sched...@pi-distinct-iova-bsd.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17159/shard-iclb4/igt@gem_exec_sched...@pi-distinct-iova-bsd.html

  * igt@gem_exec_schedule@preempt-contexts-bsd2:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#109276]) +15 similar 
issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb4/igt@gem_exec_sched...@preempt-contexts-bsd2.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17159/shard-iclb3/igt@gem_exec_sched...@preempt-contexts-bsd2.html

  * igt@gem_exec_schedule@reorder-wide-bsd:
- shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#112146]) +6 similar 
issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb8/igt@gem_exec_sched...@reorder-wide-bsd.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17159/shard-iclb4/igt@gem_exec_sched...@reorder-wide-bsd.html

  * igt@i915_pm_rps@min-max-config-loaded:
- shard-glk:  [PASS][11] -> [FAIL][12] ([i915#39])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-glk3/igt@i915_pm_...@min-max-config-loaded.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17159/shard-glk8/igt@i915_pm_...@min-max-config-loaded.html

  * igt@kms_cursor_crc@pipe-a-cursor-alpha-transparent:
- shard-skl:  [PASS][13] -> [FAIL][14] ([i915#54])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-skl8/igt@kms_cursor_...@pipe-a-cursor-alpha-transparent.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17159/shard-skl1/igt@kms_cursor_...@pipe-a-cursor-alpha-transparent.html

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

  * igt@kms_dp_dsc@basic-dsc-enable-edp:
- shard-iclb: [PASS][17] -> [SKIP][18] ([fdo#109349])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb2/igt@kms_dp_...@basic-dsc-enable-edp.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17159/shard-iclb8/igt@kms_dp_...@basic-dsc-enable-edp.html

  * igt@kms_fbcon_fbt@fbc-suspend:
- shard-kbl:  [PASS][19] -> [DMESG-WARN][20] ([i915#180] / 
[i915#93] / [i915#95])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-kbl6/igt@kms_fbcon_...@fbc-suspend.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17159/shard-kbl3/igt@kms_fbcon_...@fbc-suspend.html

  * igt@kms_flip@dpms-vs-vblank-race-interruptible:
- shard-glk:  [PASS][21] -> [FAIL][22] ([i915#407])
   [21]: 

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/tgl: Make Wa_14010229206 permanent

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/tgl: Make Wa_14010229206 permanent
URL   : https://patchwork.freedesktop.org/series/75139/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8197_full -> Patchwork_17107_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_persistence@close-replace-race:
- shard-iclb: [PASS][1] -> [INCOMPLETE][2] ([i915#1492])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-iclb4/igt@gem_ctx_persiste...@close-replace-race.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-iclb2/igt@gem_ctx_persiste...@close-replace-race.html

  * igt@gem_eio@in-flight-suspend:
- shard-glk:  [PASS][3] -> [CRASH][4] ([i915#395])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-glk1/igt@gem_...@in-flight-suspend.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-glk4/igt@gem_...@in-flight-suspend.html

  * igt@gem_exec_schedule@implicit-read-write-bsd1:
- shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#109276] / [i915#677]) +2 
similar issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-iclb2/igt@gem_exec_sched...@implicit-read-write-bsd1.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-iclb6/igt@gem_exec_sched...@implicit-read-write-bsd1.html

  * igt@gem_exec_schedule@pi-common-bsd:
- shard-iclb: [PASS][7] -> [SKIP][8] ([i915#677]) +1 similar issue
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-iclb3/igt@gem_exec_sched...@pi-common-bsd.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-iclb1/igt@gem_exec_sched...@pi-common-bsd.html

  * igt@gem_exec_schedule@preempt-other-chain-bsd:
- shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#112146]) +4 similar 
issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-iclb3/igt@gem_exec_sched...@preempt-other-chain-bsd.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-iclb1/igt@gem_exec_sched...@preempt-other-chain-bsd.html

  * igt@kms_cursor_crc@pipe-a-cursor-64x21-onscreen:
- shard-kbl:  [PASS][11] -> [FAIL][12] ([i915#54] / [i915#93] / 
[i915#95])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-kbl7/igt@kms_cursor_...@pipe-a-cursor-64x21-onscreen.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-kbl4/igt@kms_cursor_...@pipe-a-cursor-64x21-onscreen.html

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

  * igt@kms_draw_crc@draw-method-rgb565-blt-untiled:
- shard-glk:  [PASS][15] -> [FAIL][16] ([i915#52] / [i915#54])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-glk9/igt@kms_draw_...@draw-method-rgb565-blt-untiled.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-glk7/igt@kms_draw_...@draw-method-rgb565-blt-untiled.html

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

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-glk:  [PASS][19] -> [FAIL][20] ([i915#79])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-glk6/igt@kms_f...@flip-vs-expired-vblank-interruptible.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-glk4/igt@kms_f...@flip-vs-expired-vblank-interruptible.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
- shard-apl:  [PASS][21] -> [DMESG-WARN][22] ([i915#180]) +1 
similar issue
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-apl7/igt@kms_f...@flip-vs-suspend-interruptible.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-apl8/igt@kms_f...@flip-vs-suspend-interruptible.html

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

  * igt@kms_psr@psr2_sprite_plane_move:
- shard-iclb:

[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/gt: Include a few tracek for timeslicing

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/gt: Include a few tracek for timeslicing
URL   : https://patchwork.freedesktop.org/series/75317/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8228_full -> Patchwork_17158_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17158_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17158_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_17158_full:

### IGT changes ###

 Possible regressions 

  * igt@gem_mmap_gtt@big-copy-odd:
- shard-kbl:  [PASS][1] -> [FAIL][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-kbl2/igt@gem_mmap_...@big-copy-odd.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17158/shard-kbl6/igt@gem_mmap_...@big-copy-odd.html

  
 Suppressed 

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

  * {igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb}:
- shard-glk:  NOTRUN -> [FAIL][3]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17158/shard-glk3/igt@kms_plane_alpha_bl...@pipe-b-alpha-transparent-fb.html
- shard-skl:  NOTRUN -> [FAIL][4]
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17158/shard-skl1/igt@kms_plane_alpha_bl...@pipe-b-alpha-transparent-fb.html

  
New tests
-

  New tests have been introduced between CI_DRM_8228_full and 
Patchwork_17158_full:

### New IGT tests (1) ###

  * igt@gem_exec_capture@capture:
- Statuses :
- Exec time: [None] s

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_busy@busy-vcs1:
- shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#112080]) +6 similar 
issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb1/igt@gem_b...@busy-vcs1.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17158/shard-iclb6/igt@gem_b...@busy-vcs1.html

  * igt@gem_exec_schedule@implicit-write-read-bsd:
- shard-iclb: [PASS][7] -> [SKIP][8] ([i915#677])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb8/igt@gem_exec_sched...@implicit-write-read-bsd.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17158/shard-iclb4/igt@gem_exec_sched...@implicit-write-read-bsd.html

  * igt@gem_exec_schedule@smoketest-bsd:
- shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#112146])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb3/igt@gem_exec_sched...@smoketest-bsd.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17158/shard-iclb4/igt@gem_exec_sched...@smoketest-bsd.html

  * igt@i915_suspend@forcewake:
- shard-kbl:  [PASS][11] -> [DMESG-WARN][12] ([i915#180]) +5 
similar issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-kbl7/igt@i915_susp...@forcewake.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17158/shard-kbl2/igt@i915_susp...@forcewake.html

  * igt@kms_cursor_crc@pipe-a-cursor-alpha-transparent:
- shard-skl:  [PASS][13] -> [FAIL][14] ([i915#54])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-skl8/igt@kms_cursor_...@pipe-a-cursor-alpha-transparent.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17158/shard-skl2/igt@kms_cursor_...@pipe-a-cursor-alpha-transparent.html

  * igt@kms_dp_dsc@basic-dsc-enable-edp:
- shard-iclb: [PASS][15] -> [SKIP][16] ([fdo#109349])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb2/igt@kms_dp_...@basic-dsc-enable-edp.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17158/shard-iclb7/igt@kms_dp_...@basic-dsc-enable-edp.html

  * igt@kms_plane_alpha_blend@pipe-c-constant-alpha-min:
- shard-skl:  [PASS][17] -> [FAIL][18] ([fdo#108145]) +1 similar 
issue
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-skl2/igt@kms_plane_alpha_bl...@pipe-c-constant-alpha-min.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17158/shard-skl9/igt@kms_plane_alpha_bl...@pipe-c-constant-alpha-min.html

  * igt@kms_psr@psr2_sprite_mmap_cpu:
- shard-iclb: [PASS][19] -> [SKIP][20] ([fdo#109441])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb2/igt@kms_psr@psr2_sprite_mmap_cpu.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17158/shard-iclb7/igt@kms_psr@psr2_sprite_mmap_cpu.html

  * igt@kms_vblank@pipe-a-ts-continuation-suspend:
- shard-apl: 

[Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915: Defer kicking the tasklet until all rescheduling is complete

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915: Defer kicking the tasklet until all rescheduling is complete
URL   : https://patchwork.freedesktop.org/series/75314/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8228_full -> Patchwork_17157_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17157_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17157_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_17157_full:

### IGT changes ###

 Possible regressions 

  * igt@gem_ctx_persistence@engines-mixed-process@bcs0:
- shard-tglb: [PASS][1] -> [FAIL][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-tglb8/igt@gem_ctx_persistence@engines-mixed-proc...@bcs0.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17157/shard-tglb8/igt@gem_ctx_persistence@engines-mixed-proc...@bcs0.html

  
 Suppressed 

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

  * {igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb}:
- shard-glk:  NOTRUN -> [FAIL][3]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17157/shard-glk8/igt@kms_plane_alpha_bl...@pipe-b-alpha-transparent-fb.html
- shard-skl:  NOTRUN -> [FAIL][4]
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17157/shard-skl8/igt@kms_plane_alpha_bl...@pipe-b-alpha-transparent-fb.html

  
New tests
-

  New tests have been introduced between CI_DRM_8228_full and 
Patchwork_17157_full:

### New IGT tests (1) ###

  * igt@gem_exec_capture@capture:
- Statuses :
- Exec time: [None] s

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_persistence@legacy-engines-mixed-process@vebox:
- shard-skl:  [PASS][5] -> [FAIL][6] ([i915#1528])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-skl10/igt@gem_ctx_persistence@legacy-engines-mixed-proc...@vebox.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17157/shard-skl9/igt@gem_ctx_persistence@legacy-engines-mixed-proc...@vebox.html

  * igt@gem_exec_schedule@implicit-both-bsd1:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#109276] / [i915#677]) +1 
similar issue
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb2/igt@gem_exec_sched...@implicit-both-bsd1.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17157/shard-iclb3/igt@gem_exec_sched...@implicit-both-bsd1.html

  * igt@gem_exec_schedule@pi-distinct-iova-bsd:
- shard-iclb: [PASS][9] -> [SKIP][10] ([i915#677]) +3 similar issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb8/igt@gem_exec_sched...@pi-distinct-iova-bsd.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17157/shard-iclb2/igt@gem_exec_sched...@pi-distinct-iova-bsd.html

  * igt@gem_exec_schedule@preempt-contexts-bsd2:
- shard-iclb: [PASS][11] -> [SKIP][12] ([fdo#109276]) +13 similar 
issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb4/igt@gem_exec_sched...@preempt-contexts-bsd2.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17157/shard-iclb6/igt@gem_exec_sched...@preempt-contexts-bsd2.html

  * igt@gem_exec_schedule@reorder-wide-bsd:
- shard-iclb: [PASS][13] -> [SKIP][14] ([fdo#112146]) +7 similar 
issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb8/igt@gem_exec_sched...@reorder-wide-bsd.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17157/shard-iclb2/igt@gem_exec_sched...@reorder-wide-bsd.html

  * igt@gen9_exec_parse@allowed-single:
- shard-skl:  [PASS][15] -> [INCOMPLETE][16] ([i915#716])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-skl6/igt@gen9_exec_pa...@allowed-single.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17157/shard-skl2/igt@gen9_exec_pa...@allowed-single.html

  * igt@i915_pm_rc6_residency@rc6-idle:
- shard-snb:  [PASS][17] -> [TIMEOUT][18] ([i915#1526])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-snb6/igt@i915_pm_rc6_reside...@rc6-idle.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17157/shard-snb2/igt@i915_pm_rc6_reside...@rc6-idle.html

  * igt@kms_cursor_crc@pipe-a-cursor-alpha-transparent:
- shard-skl:  [PASS][19] -> [FAIL][20] ([i915#54])
   [19]: 

[Intel-gfx] ✗ Fi.CI.IGT: failure for i915 lpsp support for lpsp igt (rev6)

2020-04-01 Thread Patchwork
== Series Details ==

Series: i915 lpsp support for lpsp igt (rev6)
URL   : https://patchwork.freedesktop.org/series/74648/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8228_full -> Patchwork_17155_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17155_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17155_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_17155_full:

### IGT changes ###

 Possible regressions 

  * {igt@i915_pm_lpsp@non-edp-lpsp} (NEW):
- shard-tglb: NOTRUN -> [SKIP][1]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17155/shard-tglb1/igt@i915_pm_l...@non-edp-lpsp.html
- shard-iclb: NOTRUN -> [SKIP][2]
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17155/shard-iclb6/igt@i915_pm_l...@non-edp-lpsp.html

  * igt@i915_pm_rpm@fences-dpms:
- shard-tglb: [PASS][3] -> [SKIP][4] +1 similar issue
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-tglb6/igt@i915_pm_...@fences-dpms.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17155/shard-tglb6/igt@i915_pm_...@fences-dpms.html

  * igt@i915_pm_rpm@modeset-lpsp-stress-no-wait:
- shard-iclb: [PASS][5] -> [SKIP][6] +1 similar issue
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb3/igt@i915_pm_...@modeset-lpsp-stress-no-wait.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17155/shard-iclb7/igt@i915_pm_...@modeset-lpsp-stress-no-wait.html

  * igt@runner@aborted:
- shard-tglb: NOTRUN -> [FAIL][7]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17155/shard-tglb1/igt@run...@aborted.html

  
 Warnings 

  * igt@i915_pm_lpsp@screens-disabled:
- shard-snb:  [SKIP][8] ([fdo#109271]) -> [FAIL][9]
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-snb2/igt@i915_pm_l...@screens-disabled.html
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17155/shard-snb4/igt@i915_pm_l...@screens-disabled.html

  
 Suppressed 

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

  * {igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb}:
- shard-glk:  NOTRUN -> [FAIL][10]
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17155/shard-glk7/igt@kms_plane_alpha_bl...@pipe-b-alpha-transparent-fb.html
- shard-skl:  NOTRUN -> [FAIL][11]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17155/shard-skl9/igt@kms_plane_alpha_bl...@pipe-b-alpha-transparent-fb.html

  
New tests
-

  New tests have been introduced between CI_DRM_8228_full and 
Patchwork_17155_full:

### New IGT tests (2) ###

  * igt@gem_exec_capture@capture:
- Statuses :
- Exec time: [None] s

  * igt@i915_pm_lpsp@non-edp-lpsp:
- Statuses : 4 pass(s) 3 skip(s)
- Exec time: [0.0, 0.77] s

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_busy@busy-vcs1:
- shard-iclb: [PASS][12] -> [SKIP][13] ([fdo#112080]) +8 similar 
issues
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb1/igt@gem_b...@busy-vcs1.html
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17155/shard-iclb6/igt@gem_b...@busy-vcs1.html

  * igt@gem_exec_schedule@implicit-both-bsd1:
- shard-iclb: [PASS][14] -> [SKIP][15] ([fdo#109276] / [i915#677]) 
+1 similar issue
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb2/igt@gem_exec_sched...@implicit-both-bsd1.html
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17155/shard-iclb6/igt@gem_exec_sched...@implicit-both-bsd1.html

  * igt@gem_exec_schedule@in-order-bsd2:
- shard-iclb: [PASS][16] -> [SKIP][17] ([fdo#109276]) +10 similar 
issues
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb2/igt@gem_exec_sched...@in-order-bsd2.html
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17155/shard-iclb8/igt@gem_exec_sched...@in-order-bsd2.html

  * igt@gem_exec_schedule@pi-distinct-iova-bsd:
- shard-iclb: [PASS][18] -> [SKIP][19] ([i915#677]) +1 similar issue
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8228/shard-iclb8/igt@gem_exec_sched...@pi-distinct-iova-bsd.html
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17155/shard-iclb1/igt@gem_exec_sched...@pi-distinct-iova-bsd.html

  * igt@gem_exec_schedule@preempt-bsd:
- shard-iclb: [PASS][20] -> 

Re: [Intel-gfx] [PATCH i-g-t] i915/gem_exec_balancer: Check for bonding support before exercising

2020-04-01 Thread Tvrtko Ursulin



On 31/03/2020 11:36, Chris Wilson wrote:

Don't bother trying and failing to test bonding if the kernel doesn't
even support it.

Signed-off-by: Chris Wilson 
Cc: Tvrtko Ursulin 
Cc: Andi Shyti 
---
  tests/i915/gem_exec_balancer.c | 34 +++---
  1 file changed, 27 insertions(+), 7 deletions(-)

diff --git a/tests/i915/gem_exec_balancer.c b/tests/i915/gem_exec_balancer.c
index da8aff6de..9930e394d 100644
--- a/tests/i915/gem_exec_balancer.c
+++ b/tests/i915/gem_exec_balancer.c
@@ -1936,6 +1936,22 @@ static bool has_load_balancer(int i915)
return err == 0;
  }
  
+static bool has_bonding(int i915)

+{
+   I915_DEFINE_CONTEXT_ENGINES_BOND(bonds, 0) = {
+   .base.name = I915_CONTEXT_ENGINES_EXT_BOND,
+   };


Doh why do we allow zero bonds.. to make for an easier probe of course! :))

Reviewed-by: Tvrtko Ursulin 

Regards,

Tvrtko


+   struct i915_engine_class_instance ci = {};
+   uint32_t ctx;
+   int err;
+
+   ctx = gem_context_create(i915);
+   err = __set_load_balancer(i915, ctx, , 1, );
+   gem_context_destroy(i915, ctx);
+
+   return err == 0;
+}
+
  igt_main
  {
int i915 = -1;
@@ -1992,11 +2008,18 @@ igt_main
igt_subtest("smoke")
smoketest(i915, 20);
  
-	igt_subtest("bonded-imm")

-   bonded(i915, 0);
+   igt_subtest_group {
+   igt_fixture igt_require(has_bonding(i915));
+
+   igt_subtest("bonded-imm")
+   bonded(i915, 0);
+
+   igt_subtest("bonded-cork")
+   bonded(i915, CORK);
  
-	igt_subtest("bonded-cork")

-   bonded(i915, CORK);
+   igt_subtest("bonded-early")
+   bonded_early(i915);
+   }
  
  	igt_subtest("bonded-slice")

bonded_slice(i915);
@@ -2007,9 +2030,6 @@ igt_main
igt_subtest("bonded-semaphore")
bonded_semaphore(i915);
  
-	igt_subtest("bonded-early")

-   bonded_early(i915);
-
igt_fixture {
igt_stop_hang_detector();
}


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


Re: [Intel-gfx] Kernel 5.2 to current: possible i915 related problems

2020-04-01 Thread Dirk Gouders
Jani Nikula  writes:

> On Mon, 30 Mar 2020, Dirk Gouders  wrote:
>> Dirk Gouders  writes:
>>
>>> Some additional information:
>>>
>>> I tried to get more information by using netconsole with kernel
>>> 5.6.0-rc7+.  After some time, the system stopped to respond and I
>>> checked the messages sent to the remote machine.  Unfortunately they
>>> gave no other information than the local logfile.
>>>
>>> Dirk
>>>
>>> Dirk Gouders  writes:
>>>
 Hello,

 because of the current pandemic situation the usage of my laptop has
 changed.  It is now running at home 24/7 with a monitor attached to it
 and after about 12 days running a somewhat older kernel (5.2), it
 stopped working.

 After a reboot I found some information in the syslog that I attach to
 this mail.  The next hang happened one day later but without any
 information.

 With a current 5.6.0-rc7+ I seem to get more frequent hangs but without any
 information in the log file and somewhat non-reproducable.  Today, I
 experienced two hangs when starting xterms or other programs but after
 this (and necessary reboots) I am unable to reproduce a hang.

 Perhaps, someone has suggestion for me how to produce debugging
 information that survives the hangs and reboots.

>>
>> This time, I have some information from a hang with the current kernel
>> 5.6.0-rc7+ that obviously could be written to the logfile while the
>> system was starting to get problems.  A minute later or so, it
>> completely stopped to respond and a hard reset was necessary:
>>
>> Mar 30 10:37:52 lena kernel: i915 :00:02.0: GPU HANG: ecode 
>> 8:1:85d9, in X [4278]
>> Mar 30 10:37:52 lena kernel: GPU hangs can indicate a bug anywhere in the 
>> entire gfx stack, including userspace.
>> Mar 30 10:37:52 lena kernel: Please file a _new_ bug report at 
>> https://gitlab.freedesktop.org/drm/intel/issues/new.
>> Mar 30 10:37:52 lena kernel: Please see
> https://gitlab.freedesktop.org/drm/intel/-/wikis/How-to-file-i915-bugs
> for details.
>> Mar 30 10:37:52 lena kernel: drm/i915 developers can then reassign to the 
>> right component if it's not a kernel issue.
>> Mar 30 10:37:52 lena kernel: The GPU crash dump is required to analyze GPU 
>> hangs, so please always attach it.
>> Mar 30 10:37:52 lena kernel: GPU crash dump saved to 
>> /sys/class/drm/card0/error
>> Mar 30 10:37:52 lena kernel: i915 :00:02.0: Resetting rcs0 for stopped 
>> heartbeat on rcs0
>> Mar 30 10:37:52 lena kernel: i915 :00:02.0: X[4278] context reset due to 
>> GPU hang
>>
>> Adding the i915 maintainers because I doubt the data in
>> /sys/class/drm/card0/error is useful after a reboot.  Should I file a
>> bug report as suggested above, anyway?
>
> Please do.

OK.  I was able to reproduce GPU hangs and thus try to bisect that
problem: https://gitlab.freedesktop.org/drm/intel/-/issues/1585

Dirk


> BR,
> Jani.
>
>
>>
>> Dirk
>>

 
 Mar 27 19:36:51 lena kernel: [drm:intel_cpu_fifo_underrun_irq_handler
 [i915]] *ERROR* CPU pipe B FIFO underrun
 Mar 27 21:45:19 lena kernel: usb 1-1: USB disconnect, device number 15
 Mar 27 21:45:19 lena kernel: sd 2:0:0:0: [sdb] Synchronizing SCSI cache
 Mar 27 21:45:19 lena kernel: sd 2:0:0:0: [sdb] Synchronize Cache(10)
 failed: Result: hostbyte=DID_NO_CONNECT driverbyte=DRIVER_OK
 Mar 27 22:00:53 lena kernel: [drm:intel_cpu_fifo_underrun_irq_handler
 [i915]] *ERROR* CPU pipe B FIFO underrun
 Mar 27 23:46:13 lena kernel: [ cut here ]
 Mar 27 23:46:13 lena kernel: vblank wait timed out on crtc 1
 Mar 27 23:46:13 lena kernel: WARNING: CPU: 0 PID: 4221 at 
 drm_wait_one_vblank+0xfa/0x12a [drm]
 Mar 27 23:46:13 lena kernel: Modules linked in: usblp uas usb_storage
 uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_v4l2
 videobuf2_common snd_hda_codec
 _hdmi snd_hda_codec_realtek snd_hda_codec_generic crc32_pclmul
 crc32c_intel ghash_clmulni_intel i915 aesni_intel drm_kms_helper
 cfbfillrect crypto_simd glue_he
 lper syscopyarea cfbimgblt sysfillrect sysimgblt snd_hda_intel
 fb_sys_fops cfbcopyarea snd_hda_codec sdhci_acpi drm xhci_pci
 snd_hwdep sdhci drm_panel_orientat
 ion_quirks snd_hda_core intel_gtt mmc_core xhci_hcd iosf_mbi
 Mar 27 23:46:13 lena kernel: CPU: 0 PID: 4221 Comm: X Not tainted 5.2.0+ 
 #44
 Mar 27 23:46:13 lena kernel: Hardware name: Acer Aspire ES1-131/Garp_BA, 
 BIOS V1.23 06/22/2016
 Mar 27 23:46:13 lena kernel: RIP: 0010:drm_wait_one_vblank+0xfa/0x12a [drm]
 Mar 27 23:46:13 lena kernel: Code: 89 e7 e8 31 eb 74 e1 49 89 c4 eb bf
 48 89 e6 4c 89 f7 e8 d5 b5 ff e0 45 85 e4 75 10 89 de 48 c7 c7 cf de
 0d a0 e8 2e bd fc e
 0 <0f> 0b 89 de 48 89 ef e8 82 fe ff ff 48 8b 44 24 28 65 48 33 04 25
 Mar 27 23:46:13 lena kernel: RSP: 0018:c9e73ac0 EFLAGS: 

[Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915/gt: Align engine dump active/pending

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/gt: Align engine dump active/pending
URL   : https://patchwork.freedesktop.org/series/75363/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8232 -> Patchwork_17169


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Possible fixes 

  * igt@i915_module_load@reload:
- fi-skl-6770hq:  [DMESG-WARN][1] ([i915#203]) -> [PASS][2] +1 similar 
issue
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8232/fi-skl-6770hq/igt@i915_module_l...@reload.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17169/fi-skl-6770hq/igt@i915_module_l...@reload.html

  * igt@i915_pm_rpm@basic-pci-d3-state:
- fi-skl-6770hq:  [SKIP][3] ([fdo#109271]) -> [PASS][4] +2 similar 
issues
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8232/fi-skl-6770hq/igt@i915_pm_...@basic-pci-d3-state.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17169/fi-skl-6770hq/igt@i915_pm_...@basic-pci-d3-state.html

  * igt@i915_selftest@live@requests:
- fi-icl-guc: [INCOMPLETE][5] ([i915#1505] / [i915#1581]) -> 
[PASS][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8232/fi-icl-guc/igt@i915_selftest@l...@requests.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17169/fi-icl-guc/igt@i915_selftest@l...@requests.html

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
- fi-skl-6770hq:  [DMESG-FAIL][7] ([i915#165]) -> [PASS][8]
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8232/fi-skl-6770hq/igt@kms_pipe_crc_ba...@suspend-read-crc-pipe-a.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17169/fi-skl-6770hq/igt@kms_pipe_crc_ba...@suspend-read-crc-pipe-a.html

  
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [i915#1505]: https://gitlab.freedesktop.org/drm/intel/issues/1505
  [i915#1581]: https://gitlab.freedesktop.org/drm/intel/issues/1581
  [i915#165]: https://gitlab.freedesktop.org/drm/intel/issues/165
  [i915#203]: https://gitlab.freedesktop.org/drm/intel/issues/203


Participating hosts (49 -> 36)
--

  Missing(13): fi-ilk-m540 fi-bsw-n3050 fi-hsw-4200u fi-hsw-peppy 
fi-glk-dsi fi-byt-squawks fi-bsw-cyan fi-snb-2520m fi-kbl-7500u fi-ctg-p8600 
fi-gdg-551 fi-bdw-samus fi-snb-2600 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_8232 -> Patchwork_17169

  CI-20190529: 20190529
  CI_DRM_8232: cade363a69762c57ffb58f91b47670df7ca520bf @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5553: 60475d9b41c58b7d256e83c7d53eaf7c2f1f8ecc @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17169: a8418e5a61084fde9a451c49a9351ef9df9039fa @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

a8418e5a6108 drm/i915/gt: Align engine dump active/pending

== Logs ==

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


[Intel-gfx] [PATCH i-g-t] i915/gem_exec_schedule: Dynamic engine tests

2020-04-01 Thread Chris Wilson
Use igt_subtest_with_dynamic for the flexible approach to engine
dependent test discovery.

Signed-off-by: Chris Wilson 
---
 lib/i915/gem_engine_topology.h |   6 +-
 tests/i915/gem_exec_schedule.c | 432 -
 2 files changed, 207 insertions(+), 231 deletions(-)

diff --git a/lib/i915/gem_engine_topology.h b/lib/i915/gem_engine_topology.h
index 9588f74d4..f5edcb5d1 100644
--- a/lib/i915/gem_engine_topology.h
+++ b/lib/i915/gem_engine_topology.h
@@ -68,9 +68,9 @@ struct intel_execution_engine2 
gem_eb_flags_to_engine(unsigned int flags);
 
 /* needs to replace "for_each_physical_engine" when conflicts are fixed */
 #define for_each_physical_engine(fd__, ctx__, e__) \
-   for (struct intel_engine_data i__ = intel_init_engine_list(fd__, 
ctx__); \
-((e__) = intel_get_current_physical_engine(__)); \
-intel_next_engine(__))
+   for (struct intel_engine_data i__##e__ = intel_init_engine_list(fd__, 
ctx__); \
+((e__) = intel_get_current_physical_engine(__##e__)); \
+intel_next_engine(__##e__))
 
 #define __for_each_physical_engine(fd__, e__) \
for_each_physical_engine(fd__, 0, e__)
diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c
index 2a74f13dc..7274ffbf3 100644
--- a/tests/i915/gem_exec_schedule.c
+++ b/tests/i915/gem_exec_schedule.c
@@ -49,15 +49,9 @@
 #define MAX_PRIO LOCAL_I915_CONTEXT_MAX_USER_PRIORITY
 #define MIN_PRIO LOCAL_I915_CONTEXT_MIN_USER_PRIORITY
 
-#define MAX_ELSP_QLEN 16
-
-#define MAX_ENGINES 16
-
 #define MAX_CONTEXTS 1024
-
-#define LOCAL_I915_EXEC_BSD_SHIFT  (13)
-#define LOCAL_I915_EXEC_BSD_MASK   (3 << LOCAL_I915_EXEC_BSD_SHIFT)
-#define ENGINE_MASK  (I915_EXEC_RING_MASK | LOCAL_I915_EXEC_BSD_MASK)
+#define MAX_ELSP_QLEN 16
+#define MAX_ENGINES (I915_EXEC_RING_MASK + 1)
 
 #define MI_SEMAPHORE_WAIT  (0x1c << 23)
 #define   MI_SEMAPHORE_POLL (1 << 15)
@@ -179,7 +173,7 @@ static void store_dword_fenced(int fd, uint32_t ctx, 
unsigned ring,
 
 static uint32_t create_highest_priority(int fd)
 {
-   uint32_t ctx = gem_context_create(fd);
+   uint32_t ctx = gem_context_clone_with_engines(fd, 0);
 
/*
 * If there is no priority support, all contexts will have equal
@@ -248,6 +242,7 @@ enum implicit_dir {
 
 static void implicit_rw(int i915, unsigned ring, enum implicit_dir dir)
 {
+   const struct intel_execution_engine2 *e;
IGT_CORK_FENCE(cork);
unsigned int count;
uint32_t scratch;
@@ -255,8 +250,8 @@ static void implicit_rw(int i915, unsigned ring, enum 
implicit_dir dir)
int fence;
 
count = 0;
-   for_each_physical_engine(other, i915) {
-   if (eb_ring(other) == ring)
+   __for_each_physical_engine(i915, e) {
+   if (e->flags == ring)
continue;
 
count++;
@@ -268,15 +263,15 @@ static void implicit_rw(int i915, unsigned ring, enum 
implicit_dir dir)
 
if (dir & WRITE_READ)
store_dword_fenced(i915, 0,
-  ring, scratch, 0, -ring,
+  ring, scratch, 0, ~ring,
   fence, I915_GEM_DOMAIN_RENDER);
 
-   for_each_physical_engine(other, i915) {
-   if (eb_ring(other) == ring)
+   __for_each_physical_engine(i915, e) {
+   if (e->flags == ring)
continue;
 
store_dword_fenced(i915, 0,
-  eb_ring(other), scratch, 0, eb_ring(other),
+  e->flags, scratch, 0, e->flags,
   fence, 0);
}
 
@@ -292,21 +287,20 @@ static void implicit_rw(int i915, unsigned ring, enum 
implicit_dir dir)
gem_close(i915, scratch);
 
if (dir & WRITE_READ)
-   igt_assert_neq_u32(result, -ring);
+   igt_assert_neq_u32(result, ~ring);
if (dir & READ_WRITE)
igt_assert_eq_u32(result, ring);
 }
 
 static void independent(int fd, unsigned int engine)
 {
+   const struct intel_execution_engine2 *e;
IGT_CORK_FENCE(cork);
igt_spin_t *spin = NULL;
uint32_t scratch, batch;
uint32_t *ptr;
int fence;
 
-   igt_require(engine != 0);
-
scratch = gem_create(fd, 4096);
ptr = gem_mmap__device_coherent(fd, scratch, 0, 4096, PROT_READ);
igt_assert_eq(ptr[0], 0);
@@ -314,25 +308,25 @@ static void independent(int fd, unsigned int engine)
fence = igt_cork_plug(, fd);
 
/* Check that we can submit to engine while all others are blocked */
-   for_each_physical_engine(e, fd) {
-   if (eb_ring(e) == engine)
+   __for_each_physical_engine(fd, e) {
+   if (e->flags == engine)
continue;
 
-   if (!gem_can_store_dword(fd, eb_ring(e)))
+   if 

Re: [Intel-gfx] [PATCH 1/5] drm: report dp downstream port type as a subconnector property

2020-04-01 Thread Ville Syrjälä
On Wed, Apr 01, 2020 at 05:42:24PM +0530, Jeevan B wrote:
> Currently, downstream port type is only reported in debugfs. This
> information should be considered important since it reflects the actual
> physical connector type. Some userspace (e.g. window compositors)
> may want to show this info to a user.
> 
> The 'subconnector' property is already utilized for DVI-I and TV-out for
> reporting connector subtype.
> 
> The initial motivation for this feature came from i2c test [1].
> It is supposed to be skipped on VGA connectors, but it cannot
> detect VGA over DP and fails instead.
> 
> v2:
>  - Ville: utilized drm_dp_is_branch()
>  - Ville: implement DP 1.0 downstream type info
>  - Replaced create_dp_properties with add_dp_subconnector_property
>  - Added dp_set_subconnector_property helper
> 
> v4:
>  - Ville: add DP1.0 best assumption about subconnector
>  - Ville: assume DVI is DVI-D
>  - Ville: reuse Writeback enum value for Virtual subconnector
>  - Renamed #defines: HDMI -> HDMIA, DP -> DisplayPort
> 
> [1]: https://bugs.freedesktop.org/show_bug.cgi?id=104097
> 
> Reviewed-by: Emil Velikov 
> Signed-off-by: Oleg Vasilev 

Is this Oleg's patch? If so why did you change the patch author to be
yourself?

> Cc: Ville Syrjälä 
> Cc: intel-gfx@lists.freedesktop.org
> Signed-off-by: Jeevan B 
> Link: 
> https://patchwork.freedesktop.org/patch/msgid/20190829114854.1539-3-oleg.vasi...@intel.com
> ---
>  drivers/gpu/drm/drm_connector.c | 49 --
>  drivers/gpu/drm/drm_dp_helper.c | 77 
> +
>  include/drm/drm_connector.h |  3 ++
>  include/drm/drm_dp_helper.h |  8 +
>  include/drm/drm_mode_config.h   |  6 
>  include/uapi/drm/drm_mode.h | 21 ++-
>  6 files changed, 154 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
> index b1099e1..b6972d1 100644
> --- a/drivers/gpu/drm/drm_connector.c
> +++ b/drivers/gpu/drm/drm_connector.c
> @@ -844,7 +844,7 @@ static const struct drm_prop_enum_list 
> drm_dvi_i_select_enum_list[] = {
>  DRM_ENUM_NAME_FN(drm_get_dvi_i_select_name, drm_dvi_i_select_enum_list)
>  
>  static const struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] = {
> - { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I and TV-out */
> + { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I, TV-out and 
> DP */
>   { DRM_MODE_SUBCONNECTOR_DVID,  "DVI-D" }, /* DVI-I  */
>   { DRM_MODE_SUBCONNECTOR_DVIA,  "DVI-A" }, /* DVI-I  */
>  };
> @@ -861,7 +861,7 @@ static const struct drm_prop_enum_list 
> drm_tv_select_enum_list[] = {
>  DRM_ENUM_NAME_FN(drm_get_tv_select_name, drm_tv_select_enum_list)
>  
>  static const struct drm_prop_enum_list drm_tv_subconnector_enum_list[] = {
> - { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I and TV-out */
> + { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I, TV-out and 
> DP */
>   { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
>   { DRM_MODE_SUBCONNECTOR_SVIDEO,"SVIDEO"}, /* TV-out */
>   { DRM_MODE_SUBCONNECTOR_Component, "Component" }, /* TV-out */
> @@ -870,6 +870,19 @@ static const struct drm_prop_enum_list 
> drm_tv_subconnector_enum_list[] = {
>  DRM_ENUM_NAME_FN(drm_get_tv_subconnector_name,
>drm_tv_subconnector_enum_list)
>  
> +static const struct drm_prop_enum_list drm_dp_subconnector_enum_list[] = {
> + { DRM_MODE_SUBCONNECTOR_Unknown, "Unknown"   }, /* DVI-I, TV-out 
> and DP */
> + { DRM_MODE_SUBCONNECTOR_VGA, "VGA"   }, /* DP */
> + { DRM_MODE_SUBCONNECTOR_DVID,"DVI-D" }, /* DP */
> + { DRM_MODE_SUBCONNECTOR_HDMIA,   "HDMI"  }, /* DP */
> + { DRM_MODE_SUBCONNECTOR_DisplayPort, "DP"}, /* DP */
> + { DRM_MODE_SUBCONNECTOR_Wireless,"Wireless"  }, /* DP */
> + { DRM_MODE_SUBCONNECTOR_Native,  "Native"}, /* DP */
> +};
> +
> +DRM_ENUM_NAME_FN(drm_get_dp_subconnector_name,
> +  drm_dp_subconnector_enum_list)
> +
>  static const struct drm_prop_enum_list hdmi_colorspaces[] = {
>   /* For Default case, driver will set the colorspace */
>   { DRM_MODE_COLORIMETRY_DEFAULT, "Default" },
> @@ -1186,6 +1199,14 @@ static const struct drm_prop_enum_list 
> dp_colorspaces[] = {
>   *   can also expose this property to external outputs, in which case they
>   *   must support "None", which should be the default (since external screens
>   *   have a built-in scaler).
> + *
> + * subconnector:
> + *   This property is used by DVI-I, TVout and DisplayPort to indicate 
> different
> + *   connector subtypes. Enum values more or less match with those from main
> + *   connector types.
> + *   For DVI-I and TVout there is also a matching property "select 
> subconnector"
> + *   allowing to switch between signal types.
> + *   DP subconnector corresponds to a downstream port.
>   */
>  
>  

Re: [Intel-gfx] [PATCH 6/6] drm/i915/tc/tgl: Implement TC cold sequences

2020-04-01 Thread Imre Deak
On Tue, Mar 31, 2020 at 05:41:20PM -0700, José Roberto de Souza wrote:
> TC ports can enter in TCCOLD to save power and is required to request
> to PCODE to exit this state before use or read to TC registers.
> 
> For TGL there is a new MBOX command to do that with a parameter to ask
> PCODE to exit and block TCCOLD entry or unblock TCCOLD entry.
> 
> So adding a new power domain to reuse the refcount and only allow
> TC cold when all TC ports are not in use.
> 
> BSpec: 49294
> Cc: Imre Deak 
> Cc: Cooper Chiou 
> Cc: Kai-Heng Feng 
> Signed-off-by: José Roberto de Souza 
> ---
>  .../drm/i915/display/intel_display_power.c| 46 ++
>  .../drm/i915/display/intel_display_power.h|  1 +
>  drivers/gpu/drm/i915/display/intel_tc.c   | 63 +++
>  drivers/gpu/drm/i915/display/intel_tc.h   |  1 +
>  drivers/gpu/drm/i915/i915_reg.h   |  3 +
>  5 files changed, 103 insertions(+), 11 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c 
> b/drivers/gpu/drm/i915/display/intel_display_power.c
> index 1ccd57d645c7..5de115583146 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> @@ -2842,6 +2842,8 @@ void intel_display_power_put(struct drm_i915_private 
> *dev_priv,
>  #define TGL_AUX_I_TBT6_IO_POWER_DOMAINS (\
>   BIT_ULL(POWER_DOMAIN_AUX_I_TBT))
>  
> +#define TGL_TC_COLD_OFF (BIT_ULL(POWER_DOMAIN_TC_COLD_OFF))

TGL_TC_COLD_OFF_POWER_DOMAINS
and should also include all the AUX power domains.

> +
>  static const struct i915_power_well_ops i9xx_always_on_power_well_ops = {
>   .sync_hw = i9xx_power_well_sync_hw_noop,
>   .enable = i9xx_always_on_power_well_noop,
> @@ -3944,6 +3946,44 @@ static const struct i915_power_well_desc 
> ehl_power_wells[] = {
>   },
>  };
>  
> +static void
> +tgl_tc_cold_off_power_well_enable(struct drm_i915_private *i915,
> +   struct i915_power_well *power_well)
> +{
> + intel_tc_tgl_tc_cold_request(i915, true);
> +}
> +
> +static void
> +tgl_tc_cold_off_power_well_disable(struct drm_i915_private *i915,
> +struct i915_power_well *power_well)
> +{
> + intel_tc_tgl_tc_cold_request(i915, false);
> +}
> +
> +static void
> +tgl_tc_cold_off_power_well_sync_hw(struct drm_i915_private *i915,
> +struct i915_power_well *power_well)
> +{
> + if (power_well->count > 0)
> + tgl_tc_cold_off_power_well_enable(i915, power_well);
> + else
> + tgl_tc_cold_off_power_well_disable(i915, power_well);
> +}
> +
> +static bool tgl_tc_cold_off_power_well_is_enabled(struct drm_i915_private 
> *dev_priv,
> +   struct i915_power_well 
> *power_well)
> +{
> + /* There is no way to just read it from PCODE */
> + return false;
> +}
> +
> +static const struct i915_power_well_ops tgl_tc_cold_off_ops = {
> + .sync_hw = tgl_tc_cold_off_power_well_sync_hw,
> + .enable = tgl_tc_cold_off_power_well_enable,
> + .disable = tgl_tc_cold_off_power_well_disable,
> + .is_enabled = tgl_tc_cold_off_power_well_is_enabled,
> +};
> +
>  static const struct i915_power_well_desc tgl_power_wells[] = {
>   {
>   .name = "always-on",
> @@ -4271,6 +4311,12 @@ static const struct i915_power_well_desc 
> tgl_power_wells[] = {
>   .hsw.irq_pipe_mask = BIT(PIPE_D),
>   },
>   },
> + {
> + .name = "TC cold off",
> + .domains = POWER_DOMAIN_TC_COLD_OFF,

TGL_TC_COLD_OFF_POWER_DOMAINS

> + .ops = _tc_cold_off_ops,
> + .id = DISP_PW_ID_NONE,
> + },
>  };
>  
>  static int
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.h 
> b/drivers/gpu/drm/i915/display/intel_display_power.h
> index da64a5edae7a..070457e7b948 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.h
> @@ -76,6 +76,7 @@ enum intel_display_power_domain {
>   POWER_DOMAIN_MODESET,
>   POWER_DOMAIN_GT_IRQ,
>   POWER_DOMAIN_DPLL_DC_OFF,
> + POWER_DOMAIN_TC_COLD_OFF,
>   POWER_DOMAIN_INIT,
>  
>   POWER_DOMAIN_NUM,
> diff --git a/drivers/gpu/drm/i915/display/intel_tc.c 
> b/drivers/gpu/drm/i915/display/intel_tc.c
> index b6d67f069ef7..58f19037411a 100644
> --- a/drivers/gpu/drm/i915/display/intel_tc.c
> +++ b/drivers/gpu/drm/i915/display/intel_tc.c
> @@ -507,11 +507,16 @@ static void __intel_tc_port_lock(struct 
> intel_digital_port *dig_port,
>  
>   mutex_lock(_port->tc_lock);
>  
> - if (INTEL_GEN(i915) == 11 && dig_port->tc_link_refcount == 0) {
> - enum intel_display_power_domain aux_domain;
> + if (dig_port->tc_link_refcount == 0) {
> + enum intel_display_power_domain domain;
>  
> - aux_domain = intel_aux_ch_to_power_domain(dig_port->aux_ch);
> -

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

2020-04-01 Thread Imre Deak
On Tue, Mar 31, 2020 at 05:41:19PM -0700, José Roberto de Souza wrote:
> This is required for legacy/static TC ports as IOM is not aware of
> the connection and will not trigger the TC cold exit.
> 
> Just request PCODE to exit TCCOLD is not enough as it could enter
> again be driver makes use of the port, to prevent it BSpec states that
> aux powerwell should be held.
> 
> So here embedding the TC cold exit sequence into ICL aux enable,
> it will enable aux, request tc cold exit and depending in the TC live
> state continue with the regular aux enable sequence.
> 
> And then turning on aux power well during tc lock and turning off
> during unlock both depending into the TC port refcount.
> 
> BSpec: 21750
> Fixes: https://gitlab.freedesktop.org/drm/intel/issues/1296
> Cc: Imre Deak 
> Cc: Cooper Chiou 
> Cc: Kai-Heng Feng 
> Signed-off-by: José Roberto de Souza 
> ---
> 
> Will run some tests in the office with TBT dockstation to check if
> it will be a issue keep both aux enabled. Otherwise more changes will
> be required here.
> 
>  .../drm/i915/display/intel_display_power.c| 12 -
>  .../drm/i915/display/intel_display_types.h|  1 +
>  drivers/gpu/drm/i915/display/intel_tc.c   | 47 ++-
>  drivers/gpu/drm/i915/display/intel_tc.h   |  2 +
>  drivers/gpu/drm/i915/i915_reg.h   |  1 +
>  5 files changed, 59 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c 
> b/drivers/gpu/drm/i915/display/intel_display_power.c
> index dbd61517ba63..1ccd57d645c7 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> @@ -592,9 +592,17 @@ icl_tc_phy_aux_power_well_enable(struct drm_i915_private 
> *dev_priv,
>  
>   _hsw_power_well_enable(dev_priv, power_well);
>  
> - /* TODO ICL TC cold handling */
> + if (INTEL_GEN(dev_priv) == 11)

Should be if (ICL && dig_port->tc_legacy_port)

> + intel_tc_icl_tc_cold_exit(dev_priv);
>  
> - _hsw_power_well_continue_enable(dev_priv, power_well);
> + /*
> +  * To avoid power well enable timeouts when disconnected or in TBT mode
> +  * when doing the TC cold exit sequence for GEN11
> +  */
> + if (INTEL_GEN(dev_priv) != 11 ||
> + (intel_tc_port_live_status_mask(dig_port) &
> +  (TC_PORT_LEGACY | TC_PORT_DP_ALT)))
> + _hsw_power_well_continue_enable(dev_priv, power_well);

Why can't we call this unconditionally?

>  
>   if (INTEL_GEN(dev_priv) >= 12 && !power_well->desc->hsw.is_tc_tbt) {
>   enum tc_port tc_port;
> diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h 
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index 176ab5f1e867..a9a4a3c1b4d7 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1391,6 +1391,7 @@ struct intel_digital_port {
>   enum intel_display_power_domain ddi_io_power_domain;
>   struct mutex tc_lock;   /* protects the TypeC port mode */
>   intel_wakeref_t tc_lock_wakeref;
> + intel_wakeref_t tc_cold_wakeref;
>   int tc_link_refcount;
>   bool tc_legacy_port:1;
>   char tc_port_name[8];
> diff --git a/drivers/gpu/drm/i915/display/intel_tc.c 
> b/drivers/gpu/drm/i915/display/intel_tc.c
> index d944be935423..b6d67f069ef7 100644
> --- a/drivers/gpu/drm/i915/display/intel_tc.c
> +++ b/drivers/gpu/drm/i915/display/intel_tc.c
> @@ -7,6 +7,7 @@
>  #include "intel_display.h"
>  #include "intel_display_types.h"
>  #include "intel_dp_mst.h"
> +#include "intel_sideband.h"
>  #include "intel_tc.h"
>  
>  static const char *tc_port_mode_name(enum tc_port_mode mode)
> @@ -506,6 +507,13 @@ static void __intel_tc_port_lock(struct 
> intel_digital_port *dig_port,
>  
>   mutex_lock(_port->tc_lock);
>  
> + if (INTEL_GEN(i915) == 11 && dig_port->tc_link_refcount == 0) {
> + enum intel_display_power_domain aux_domain;
> +
> + aux_domain = intel_aux_ch_to_power_domain(dig_port->aux_ch);
> + dig_port->tc_cold_wakeref = intel_display_power_get(i915, 
> aux_domain);
> + }
> +

It would be enough to hold this ref only for the time we access FIA
regs. Anything else later will hold its own AUX reference, which takes
care of blocking tc-cold. So here something like:

tc_cold_wakeref = block_tc_cold(dig_port);

where block_tc_cold() would return a non-NULL wakeref only for
ICL/dig_port->tc_legacy_port and TGL.

>   if (!dig_port->tc_link_refcount &&
>   intel_tc_port_needs_reset(dig_port))
>   intel_tc_port_reset_mode(dig_port, required_lanes);

unblock_tc_cold(tc_cold_wakeref);

We need to call block/unblock_tc_cold() also in intel_tc_port_sanitize()
and intel_tc_port_connected().

> @@ -519,15 +527,30 @@ void intel_tc_port_lock(struct intel_digital_port 
> *dig_port)
>   __intel_tc_port_lock(dig_port, 1);
>  }
>  
> 

Re: [Intel-gfx] [PATCH 1/5] drm: report dp downstream port type as a subconnector property

2020-04-01 Thread Shankar, Uma
> 
> > -Original Message-
> > From: B, Jeevan 
> > Sent: Wednesday, April 1, 2020 5:42 PM
> > To: Shankar, Uma 
> > Cc: B, Jeevan ; Ville Syrjälä
> > ; intel-gfx@lists.freedesktop.org
> > Subject: [PATCH 1/5] drm: report dp downstream port type as a
> > subconnector property
> >
> > Currently, downstream port type is only reported in debugfs. This
> > information should be considered important since it reflects the
> > actual physical connector type. Some userspace (e.g. window compositors) may
> want to show this info to a user.
> >
> > The 'subconnector' property is already utilized for DVI-I and TV-out
> > for reporting connector subtype.
> >
> > The initial motivation for this feature came from i2c test [1].
> > It is supposed to be skipped on VGA connectors, but it cannot detect
> > VGA over DP and fails instead.
> >
> > v2:
> >  - Ville: utilized drm_dp_is_branch()
> >  - Ville: implement DP 1.0 downstream type info
> >  - Replaced create_dp_properties with add_dp_subconnector_property
> >  - Added dp_set_subconnector_property helper
> >
> > v4:
> >  - Ville: add DP1.0 best assumption about subconnector
> >  - Ville: assume DVI is DVI-D
> >  - Ville: reuse Writeback enum value for Virtual subconnector
> >  - Renamed #defines: HDMI -> HDMIA, DP -> DisplayPort
> >
> > [1]: https://bugs.freedesktop.org/show_bug.cgi?id=104097
> >
> > Reviewed-by: Emil Velikov 
> > Signed-off-by: Oleg Vasilev 
> > Cc: Ville Syrjälä 
> > Cc: intel-gfx@lists.freedesktop.org
> > Signed-off-by: Jeevan B 
> 
> You can update the version number for this series : use subject-prefix=v5 as 
> git-
> format.
> Also move your signed off close to Oleg's. Best is to put Cc: at the top, 
> then all
> Signed-off and Reviewed-by
> 
> Also in patch mention change in v5, like if it's just rebased
> V5: rebase

Also, please send the series to intel-gfx as well as dri-devel for review.

> > Link:
> > https://patchwork.freedesktop.org/patch/msgid/20190829114854.1539-3-
> > oleg.vasi...@intel.com
> > ---
> >  drivers/gpu/drm/drm_connector.c | 49 --
> > drivers/gpu/drm/drm_dp_helper.c | 77
> > +
> >  include/drm/drm_connector.h |  3 ++
> >  include/drm/drm_dp_helper.h |  8 +
> >  include/drm/drm_mode_config.h   |  6 
> >  include/uapi/drm/drm_mode.h | 21 ++-
> >  6 files changed, 154 insertions(+), 10 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_connector.c
> > b/drivers/gpu/drm/drm_connector.c index b1099e1..b6972d1 100644
> > --- a/drivers/gpu/drm/drm_connector.c
> > +++ b/drivers/gpu/drm/drm_connector.c
> > @@ -844,7 +844,7 @@ static const struct drm_prop_enum_list
> > drm_dvi_i_select_enum_list[] = {
> > DRM_ENUM_NAME_FN(drm_get_dvi_i_select_name,
> > drm_dvi_i_select_enum_list)
> >
> >  static const struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] 
> > = {
> > -   { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I and
> > TV-out */
> > +   { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I, TV-
> > out and DP */
> > { DRM_MODE_SUBCONNECTOR_DVID,  "DVI-D" }, /* DVI-I  */
> > { DRM_MODE_SUBCONNECTOR_DVIA,  "DVI-A" }, /* DVI-I  */
> >  };
> > @@ -861,7 +861,7 @@ static const struct drm_prop_enum_list
> > drm_tv_select_enum_list[] = {
> > DRM_ENUM_NAME_FN(drm_get_tv_select_name,
> > drm_tv_select_enum_list)
> >
> >  static const struct drm_prop_enum_list drm_tv_subconnector_enum_list[] = {
> > -   { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I and
> > TV-out */
> > +   { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I, TV-
> > out and DP */
> > { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
> > { DRM_MODE_SUBCONNECTOR_SVIDEO,"SVIDEO"}, /* TV-out */
> > { DRM_MODE_SUBCONNECTOR_Component, "Component" }, /* TV-out */
> @@
> > -870,6 +870,19 @@ static const struct drm_prop_enum_list
> > drm_tv_subconnector_enum_list[] = {
> > DRM_ENUM_NAME_FN(drm_get_tv_subconnector_name,
> >  drm_tv_subconnector_enum_list)
> >
> > +static const struct drm_prop_enum_list drm_dp_subconnector_enum_list[] = {
> > +   { DRM_MODE_SUBCONNECTOR_Unknown, "Unknown"   }, /* DVI-I, TV-
> > out and DP */
> > +   { DRM_MODE_SUBCONNECTOR_VGA, "VGA"   }, /* DP */
> > +   { DRM_MODE_SUBCONNECTOR_DVID,"DVI-D" }, /* DP */
> > +   { DRM_MODE_SUBCONNECTOR_HDMIA,   "HDMI"  }, /* DP */
> > +   { DRM_MODE_SUBCONNECTOR_DisplayPort, "DP"}, /* DP */
> > +   { DRM_MODE_SUBCONNECTOR_Wireless,"Wireless"  }, /* DP */
> > +   { DRM_MODE_SUBCONNECTOR_Native,  "Native"}, /* DP */
> > +};
> > +
> > +DRM_ENUM_NAME_FN(drm_get_dp_subconnector_name,
> > +drm_dp_subconnector_enum_list)
> > +
> >  static const struct drm_prop_enum_list hdmi_colorspaces[] = {
> > /* For Default case, driver will set the colorspace */
> > { DRM_MODE_COLORIMETRY_DEFAULT, "Default" }, @@ -1186,6 +1199,14
> @@
> > static 

Re: [Intel-gfx] [PATCH 1/5] drm: report dp downstream port type as a subconnector property

2020-04-01 Thread Shankar, Uma


> -Original Message-
> From: B, Jeevan 
> Sent: Wednesday, April 1, 2020 5:42 PM
> To: Shankar, Uma 
> Cc: B, Jeevan ; Ville Syrjälä 
> ;
> intel-gfx@lists.freedesktop.org
> Subject: [PATCH 1/5] drm: report dp downstream port type as a subconnector
> property
> 
> Currently, downstream port type is only reported in debugfs. This information 
> should
> be considered important since it reflects the actual physical connector type. 
> Some
> userspace (e.g. window compositors) may want to show this info to a user.
> 
> The 'subconnector' property is already utilized for DVI-I and TV-out for 
> reporting
> connector subtype.
> 
> The initial motivation for this feature came from i2c test [1].
> It is supposed to be skipped on VGA connectors, but it cannot detect VGA over 
> DP
> and fails instead.
> 
> v2:
>  - Ville: utilized drm_dp_is_branch()
>  - Ville: implement DP 1.0 downstream type info
>  - Replaced create_dp_properties with add_dp_subconnector_property
>  - Added dp_set_subconnector_property helper
> 
> v4:
>  - Ville: add DP1.0 best assumption about subconnector
>  - Ville: assume DVI is DVI-D
>  - Ville: reuse Writeback enum value for Virtual subconnector
>  - Renamed #defines: HDMI -> HDMIA, DP -> DisplayPort
> 
> [1]: https://bugs.freedesktop.org/show_bug.cgi?id=104097
> 
> Reviewed-by: Emil Velikov 
> Signed-off-by: Oleg Vasilev 
> Cc: Ville Syrjälä 
> Cc: intel-gfx@lists.freedesktop.org
> Signed-off-by: Jeevan B 

You can update the version number for this series : use subject-prefix=v5 as 
git-format.
Also move your signed off close to Oleg's. Best is to put Cc: at the top, then 
all
Signed-off and Reviewed-by

Also in patch mention change in v5, like if it's just rebased
V5: rebase

> Link: https://patchwork.freedesktop.org/patch/msgid/20190829114854.1539-3-
> oleg.vasi...@intel.com
> ---
>  drivers/gpu/drm/drm_connector.c | 49 --
> drivers/gpu/drm/drm_dp_helper.c | 77
> +
>  include/drm/drm_connector.h |  3 ++
>  include/drm/drm_dp_helper.h |  8 +
>  include/drm/drm_mode_config.h   |  6 
>  include/uapi/drm/drm_mode.h | 21 ++-
>  6 files changed, 154 insertions(+), 10 deletions(-)
> 
> diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
> index b1099e1..b6972d1 100644
> --- a/drivers/gpu/drm/drm_connector.c
> +++ b/drivers/gpu/drm/drm_connector.c
> @@ -844,7 +844,7 @@ static const struct drm_prop_enum_list
> drm_dvi_i_select_enum_list[] = {
> DRM_ENUM_NAME_FN(drm_get_dvi_i_select_name, drm_dvi_i_select_enum_list)
> 
>  static const struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] = {
> - { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I and
> TV-out */
> + { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I, TV-
> out and DP */
>   { DRM_MODE_SUBCONNECTOR_DVID,  "DVI-D" }, /* DVI-I  */
>   { DRM_MODE_SUBCONNECTOR_DVIA,  "DVI-A" }, /* DVI-I  */
>  };
> @@ -861,7 +861,7 @@ static const struct drm_prop_enum_list
> drm_tv_select_enum_list[] = {  DRM_ENUM_NAME_FN(drm_get_tv_select_name,
> drm_tv_select_enum_list)
> 
>  static const struct drm_prop_enum_list drm_tv_subconnector_enum_list[] = {
> - { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I and
> TV-out */
> + { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I, TV-
> out and DP */
>   { DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
>   { DRM_MODE_SUBCONNECTOR_SVIDEO,"SVIDEO"}, /* TV-out */
>   { DRM_MODE_SUBCONNECTOR_Component, "Component" }, /* TV-out */
> @@ -870,6 +870,19 @@ static const struct drm_prop_enum_list
> drm_tv_subconnector_enum_list[] = {
> DRM_ENUM_NAME_FN(drm_get_tv_subconnector_name,
>drm_tv_subconnector_enum_list)
> 
> +static const struct drm_prop_enum_list drm_dp_subconnector_enum_list[] = {
> + { DRM_MODE_SUBCONNECTOR_Unknown, "Unknown"   }, /* DVI-I, TV-
> out and DP */
> + { DRM_MODE_SUBCONNECTOR_VGA, "VGA"   }, /* DP */
> + { DRM_MODE_SUBCONNECTOR_DVID,"DVI-D" }, /* DP */
> + { DRM_MODE_SUBCONNECTOR_HDMIA,   "HDMI"  }, /* DP */
> + { DRM_MODE_SUBCONNECTOR_DisplayPort, "DP"}, /* DP */
> + { DRM_MODE_SUBCONNECTOR_Wireless,"Wireless"  }, /* DP */
> + { DRM_MODE_SUBCONNECTOR_Native,  "Native"}, /* DP */
> +};
> +
> +DRM_ENUM_NAME_FN(drm_get_dp_subconnector_name,
> +  drm_dp_subconnector_enum_list)
> +
>  static const struct drm_prop_enum_list hdmi_colorspaces[] = {
>   /* For Default case, driver will set the colorspace */
>   { DRM_MODE_COLORIMETRY_DEFAULT, "Default" }, @@ -1186,6 +1199,14
> @@ static const struct drm_prop_enum_list dp_colorspaces[] = {
>   *   can also expose this property to external outputs, in which case they
>   *   must support "None", which should be the default (since external screens
>   *   have a built-in scaler).
> + *
> + * 

[Intel-gfx] [PATCH 1/5] drm: report dp downstream port type as a subconnector property

2020-04-01 Thread Jeevan B
Currently, downstream port type is only reported in debugfs. This
information should be considered important since it reflects the actual
physical connector type. Some userspace (e.g. window compositors)
may want to show this info to a user.

The 'subconnector' property is already utilized for DVI-I and TV-out for
reporting connector subtype.

The initial motivation for this feature came from i2c test [1].
It is supposed to be skipped on VGA connectors, but it cannot
detect VGA over DP and fails instead.

v2:
 - Ville: utilized drm_dp_is_branch()
 - Ville: implement DP 1.0 downstream type info
 - Replaced create_dp_properties with add_dp_subconnector_property
 - Added dp_set_subconnector_property helper

v4:
 - Ville: add DP1.0 best assumption about subconnector
 - Ville: assume DVI is DVI-D
 - Ville: reuse Writeback enum value for Virtual subconnector
 - Renamed #defines: HDMI -> HDMIA, DP -> DisplayPort

[1]: https://bugs.freedesktop.org/show_bug.cgi?id=104097

Reviewed-by: Emil Velikov 
Signed-off-by: Oleg Vasilev 
Cc: Ville Syrjälä 
Cc: intel-gfx@lists.freedesktop.org
Signed-off-by: Jeevan B 
Link: 
https://patchwork.freedesktop.org/patch/msgid/20190829114854.1539-3-oleg.vasi...@intel.com
---
 drivers/gpu/drm/drm_connector.c | 49 --
 drivers/gpu/drm/drm_dp_helper.c | 77 +
 include/drm/drm_connector.h |  3 ++
 include/drm/drm_dp_helper.h |  8 +
 include/drm/drm_mode_config.h   |  6 
 include/uapi/drm/drm_mode.h | 21 ++-
 6 files changed, 154 insertions(+), 10 deletions(-)

diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
index b1099e1..b6972d1 100644
--- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c
@@ -844,7 +844,7 @@ static const struct drm_prop_enum_list 
drm_dvi_i_select_enum_list[] = {
 DRM_ENUM_NAME_FN(drm_get_dvi_i_select_name, drm_dvi_i_select_enum_list)
 
 static const struct drm_prop_enum_list drm_dvi_i_subconnector_enum_list[] = {
-   { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I and TV-out */
+   { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I, TV-out and 
DP */
{ DRM_MODE_SUBCONNECTOR_DVID,  "DVI-D" }, /* DVI-I  */
{ DRM_MODE_SUBCONNECTOR_DVIA,  "DVI-A" }, /* DVI-I  */
 };
@@ -861,7 +861,7 @@ static const struct drm_prop_enum_list 
drm_tv_select_enum_list[] = {
 DRM_ENUM_NAME_FN(drm_get_tv_select_name, drm_tv_select_enum_list)
 
 static const struct drm_prop_enum_list drm_tv_subconnector_enum_list[] = {
-   { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I and TV-out */
+   { DRM_MODE_SUBCONNECTOR_Unknown,   "Unknown"   }, /* DVI-I, TV-out and 
DP */
{ DRM_MODE_SUBCONNECTOR_Composite, "Composite" }, /* TV-out */
{ DRM_MODE_SUBCONNECTOR_SVIDEO,"SVIDEO"}, /* TV-out */
{ DRM_MODE_SUBCONNECTOR_Component, "Component" }, /* TV-out */
@@ -870,6 +870,19 @@ static const struct drm_prop_enum_list 
drm_tv_subconnector_enum_list[] = {
 DRM_ENUM_NAME_FN(drm_get_tv_subconnector_name,
 drm_tv_subconnector_enum_list)
 
+static const struct drm_prop_enum_list drm_dp_subconnector_enum_list[] = {
+   { DRM_MODE_SUBCONNECTOR_Unknown, "Unknown"   }, /* DVI-I, TV-out 
and DP */
+   { DRM_MODE_SUBCONNECTOR_VGA, "VGA"   }, /* DP */
+   { DRM_MODE_SUBCONNECTOR_DVID,"DVI-D" }, /* DP */
+   { DRM_MODE_SUBCONNECTOR_HDMIA,   "HDMI"  }, /* DP */
+   { DRM_MODE_SUBCONNECTOR_DisplayPort, "DP"}, /* DP */
+   { DRM_MODE_SUBCONNECTOR_Wireless,"Wireless"  }, /* DP */
+   { DRM_MODE_SUBCONNECTOR_Native,  "Native"}, /* DP */
+};
+
+DRM_ENUM_NAME_FN(drm_get_dp_subconnector_name,
+drm_dp_subconnector_enum_list)
+
 static const struct drm_prop_enum_list hdmi_colorspaces[] = {
/* For Default case, driver will set the colorspace */
{ DRM_MODE_COLORIMETRY_DEFAULT, "Default" },
@@ -1186,6 +1199,14 @@ static const struct drm_prop_enum_list dp_colorspaces[] 
= {
  * can also expose this property to external outputs, in which case they
  * must support "None", which should be the default (since external screens
  * have a built-in scaler).
+ *
+ * subconnector:
+ * This property is used by DVI-I, TVout and DisplayPort to indicate 
different
+ * connector subtypes. Enum values more or less match with those from main
+ * connector types.
+ * For DVI-I and TVout there is also a matching property "select 
subconnector"
+ * allowing to switch between signal types.
+ * DP subconnector corresponds to a downstream port.
  */
 
 int drm_connector_create_standard_properties(struct drm_device *dev)
@@ -1275,6 +1296,30 @@ int drm_mode_create_dvi_i_properties(struct drm_device 
*dev)
 EXPORT_SYMBOL(drm_mode_create_dvi_i_properties);
 
 /**
+ * drm_mode_add_dp_subconnector_property - create subconnector property for DP
+ * 

[Intel-gfx] [PATCH 2/5] drm/i915: utilize subconnector property for DP

2020-04-01 Thread Jeevan B
Since DP-specific information is stored in driver's structures, every
driver needs to implement subconnector property by itself.

v2: updates to match previous commit changes

Reviewed-by: Emil Velikov 
Tested-by: Oleg Vasilev 
Signed-off-by: Oleg Vasilev 
Cc: Ville Syrjälä 
Cc: intel-gfx@lists.freedesktop.org
Signed-off-by: Jeevan B 
Link: 
https://patchwork.freedesktop.org/patch/msgid/20190829114854.1539-4-oleg.vasi...@intel.com
---
 drivers/gpu/drm/i915/display/intel_dp.c | 8 
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_dp.c 
b/drivers/gpu/drm/i915/display/intel_dp.c
index 2e715e6..c2c9ed3 100644
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -6140,6 +6140,11 @@ intel_dp_detect(struct drm_connector *connector,
 */
intel_display_power_flush_work(dev_priv);
 
+   if (!intel_dp_is_edp(intel_dp))
+   drm_dp_set_subconnector_property(connector,
+status,
+intel_dp->dpcd,
+intel_dp->downstream_ports);
return status;
 }
 
@@ -7192,6 +7197,9 @@ intel_dp_add_properties(struct intel_dp *intel_dp, struct 
drm_connector *connect
struct drm_i915_private *dev_priv = to_i915(connector->dev);
enum port port = dp_to_dig_port(intel_dp)->base.port;
 
+   if (!intel_dp_is_edp(intel_dp))
+   drm_mode_add_dp_subconnector_property(connector);
+
if (!IS_G4X(dev_priv) && port != PORT_A)
intel_attach_force_audio_property(connector);
 
-- 
2.7.4

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


Re: [Intel-gfx] [PATCH 3/6] drm/i915/display: Add intel_aux_ch_to_power_domain()

2020-04-01 Thread Imre Deak
On Tue, Mar 31, 2020 at 05:41:17PM -0700, José Roberto de Souza wrote:
> This is a similar function to intel_aux_power_domain() but it do not
> care about TBT ports, this will be needed by GEN11 TC sequences.
> 
> Cc: Imre Deak 
> Cc: Cooper Chiou 
> Cc: Kai-Heng Feng 
> Signed-off-by: José Roberto de Souza 
> ---
>  drivers/gpu/drm/i915/display/intel_display.c | 14 --
>  drivers/gpu/drm/i915/display/intel_display.h |  2 ++
>  2 files changed, 14 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index e09a11b1e509..7e06d2306dcd 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -7278,7 +7278,17 @@ intel_aux_power_domain(struct intel_digital_port 
> *dig_port)
>   }
>   }
>  
> - switch (dig_port->aux_ch) {
> + return intel_aux_ch_to_power_domain(dig_port->aux_ch);
> +}
> +
> +/*
> + * Converts aux_ch to power_domain without caring about TBT ports for that 
> use
> + * intel_aux_power_domain()
> + */
> +enum intel_display_power_domain
> +intel_aux_ch_to_power_domain(enum aux_ch aux_ch)

Maybe intel_legacy_aux_to_power_domain()?

> +{
> + switch (aux_ch) {
>   case AUX_CH_A:
>   return POWER_DOMAIN_AUX_A;
>   case AUX_CH_B:
> @@ -7294,7 +7304,7 @@ intel_aux_power_domain(struct intel_digital_port 
> *dig_port)
>   case AUX_CH_G:
>   return POWER_DOMAIN_AUX_G;
>   default:
> - MISSING_CASE(dig_port->aux_ch);
> + MISSING_CASE(aux_ch);
>   return POWER_DOMAIN_AUX_A;
>   }
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_display.h 
> b/drivers/gpu/drm/i915/display/intel_display.h
> index adb1225a3480..ad50119c0453 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.h
> +++ b/drivers/gpu/drm/i915/display/intel_display.h
> @@ -579,6 +579,8 @@ void hsw_disable_ips(const struct intel_crtc_state 
> *crtc_state);
>  enum intel_display_power_domain intel_port_to_power_domain(enum port port);
>  enum intel_display_power_domain
>  intel_aux_power_domain(struct intel_digital_port *dig_port);
> +enum intel_display_power_domain
> +intel_aux_ch_to_power_domain(enum aux_ch aux_ch);
>  void intel_mode_from_pipe_config(struct drm_display_mode *mode,
>struct intel_crtc_state *pipe_config);
>  void intel_crtc_arm_fifo_underrun(struct intel_crtc *crtc,
> -- 
> 2.26.0
> 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH -next] drm/i915/gt: fix spelling mistake "undeflow" -> "underflow"

2020-04-01 Thread Chen Zhou
There is a spelling mistake in comment, fix it.

Signed-off-by: Chen Zhou 
---
 drivers/gpu/drm/i915/gt/intel_engine_pm.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_engine_pm.c 
b/drivers/gpu/drm/i915/gt/intel_engine_pm.c
index b6cf284..3be6797 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_pm.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_pm.c
@@ -181,7 +181,7 @@ static bool switch_to_kernel_context(struct intel_engine_cs 
*engine)
 * Ergo, if we put ourselves on the timelines.active_list
 * (se intel_timeline_enter()) before we increment the
 * engine->wakeref.count, we may see the request completion and retire
-* it causing an undeflow of the engine->wakeref.
+* it causing an underflow of the engine->wakeref.
 */
flags = __timeline_mark_lock(ce);
GEM_BUG_ON(atomic_read(>timeline->active_count) < 0);
-- 
2.7.4

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


Re: [Intel-gfx] [PATCH 1/6] drm/i915/display: Move out code to return the digital_port of the aux ch

2020-04-01 Thread You-Sheng Yang
On 2020-04-01 08:41, José Roberto de Souza wrote:
> Moving the code to return the digital port of the aux channel also
> removing the intel_phy_is_tc() to make it generic.
> digital_port will be needed in icl_tc_phy_aux_power_well_enable()
> so adding it as a parameter to icl_tc_port_assert_ref_held().
> 
> While at at removing the duplicated call to icl_tc_phy_aux_ch() in
> icl_tc_port_assert_ref_held().
> 
> Signed-off-by: José Roberto de Souza 
> ---
>  .../drm/i915/display/intel_display_power.c| 38 ++-
>  1 file changed, 21 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c 
> b/drivers/gpu/drm/i915/display/intel_display_power.c
> index 433e5a81dd4d..02a07aa710e4 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_power.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_power.c
> @@ -500,26 +500,14 @@ static int power_well_async_ref_count(struct 
> drm_i915_private *dev_priv,
>   return refs;
>  }
>  
> -static void icl_tc_port_assert_ref_held(struct drm_i915_private *dev_priv,
> - struct i915_power_well *power_well)
> +static struct intel_digital_port *
> +aux_ch_to_digital_port(struct drm_i915_private *dev_priv,
> +enum aux_ch aux_ch)

This fails the build because icl_tc_port_assert_ref_held was originally
guarded by CONFIG_DRM_I915_DEBUG_RUNTIME_PM, but now
aux_ch_to_digital_port maybe used outside the scope.

>  {
> - enum aux_ch aux_ch = icl_tc_phy_aux_ch(dev_priv, power_well);
>   struct intel_digital_port *dig_port = NULL;
>   struct intel_encoder *encoder;
>  
> - /* Bypass the check if all references are released asynchronously */
> - if (power_well_async_ref_count(dev_priv, power_well) ==
> - power_well->count)
> - return;
> -
> - aux_ch = icl_tc_phy_aux_ch(dev_priv, power_well);
> -
>   for_each_intel_encoder(_priv->drm, encoder) {
> - enum phy phy = intel_port_to_phy(dev_priv, encoder->port);
> -
> - if (!intel_phy_is_tc(dev_priv, phy))
> - continue;
> -
>   /* We'll check the MST primary port */
>   if (encoder->type == INTEL_OUTPUT_DP_MST)
>   continue;
> @@ -536,6 +524,18 @@ static void icl_tc_port_assert_ref_held(struct 
> drm_i915_private *dev_priv,
>   break;
>   }
>  
> + return dig_port;
> +}
> +
> +static void icl_tc_port_assert_ref_held(struct drm_i915_private *dev_priv,
> + struct i915_power_well *power_well,
> + struct intel_digital_port *dig_port)
> +{
> + /* Bypass the check if all references are released asynchronously */
> + if (power_well_async_ref_count(dev_priv, power_well) ==
> + power_well->count)
> + return;
> +
>   if (drm_WARN_ON(_priv->drm, !dig_port))
>   return;
>  
> @@ -558,9 +558,10 @@ icl_tc_phy_aux_power_well_enable(struct drm_i915_private 
> *dev_priv,
>struct i915_power_well *power_well)
>  {
>   enum aux_ch aux_ch = icl_tc_phy_aux_ch(dev_priv, power_well);
> + struct intel_digital_port *dig_port = aux_ch_to_digital_port(dev_priv, 
> aux_ch);

E.g. here.

>   u32 val;
>  
> - icl_tc_port_assert_ref_held(dev_priv, power_well);
> + icl_tc_port_assert_ref_held(dev_priv, power_well, dig_port);
>  
>   val = intel_de_read(dev_priv, DP_AUX_CH_CTL(aux_ch));
>   val &= ~DP_AUX_CH_CTL_TBT_IO;
> @@ -588,7 +589,10 @@ static void
>  icl_tc_phy_aux_power_well_disable(struct drm_i915_private *dev_priv,
> struct i915_power_well *power_well)
>  {
> - icl_tc_port_assert_ref_held(dev_priv, power_well);
> + enum aux_ch aux_ch = icl_tc_phy_aux_ch(dev_priv, power_well);
> + struct intel_digital_port *dig_port = aux_ch_to_digital_port(dev_priv, 
> aux_ch);
> +
> + icl_tc_port_assert_ref_held(dev_priv, power_well, dig_port);
>  
>   hsw_power_well_disable(dev_priv, power_well);
>  }
> 

You-Sheng Yang



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


Re: [Intel-gfx] [PATCH 2/2] drm/i915: Extend hotplug detect retry on TypeC connectors to 5 seconds

2020-04-01 Thread Imre Deak
On Wed, Apr 01, 2020 at 04:50:23PM +0530, Anshuman Gupta wrote:
> On 2020-03-30 at 15:24:25 +0530, Imre Deak wrote:
> > On TypeC ports if a sink deasserts/reasserts its HPD signal, generating
> > a hotplug interrupt without the sink getting unplugged/replugged from
> > the connector, there can be an up to 3 seconds delay until the AUX
> > channel gets functional. To avoid detection failures this delay causes
> > retry the detection for 5 seconds.
> > 
> > I noticed this on ICL/TGL RVPs and a DELL XPS 13 7390 ICL laptop.
> > 
> > References: https://gitlab.freedesktop.org/drm/intel/issues/1067
> > Signed-off-by: Imre Deak 
> > ---
> >  drivers/gpu/drm/i915/display/intel_ddi.c | 12 +++-
> >  1 file changed, 11 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
> > b/drivers/gpu/drm/i915/display/intel_ddi.c
> > index 4f508bf70f3b..2d947ff83488 100644
> > --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> > +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> > @@ -4371,7 +4371,10 @@ static enum intel_hotplug_state
> >  intel_ddi_hotplug(struct intel_encoder *encoder,
> >   struct intel_connector *connector)
> >  {
> > +   struct drm_i915_private *i915 = to_i915(encoder->base.dev);
> > struct intel_digital_port *dig_port = enc_to_dig_port(encoder);
> > +   enum phy phy = intel_port_to_phy(i915, encoder->port);
> > +   bool is_tc = intel_phy_is_tc(i915, phy);
> > struct drm_modeset_acquire_ctx ctx;
> > enum intel_hotplug_state state;
> > int ret;
> > @@ -4414,8 +4417,15 @@ intel_ddi_hotplug(struct intel_encoder *encoder,
> >  * valid EDID. To solve this schedule another detection cycle if this
> >  * time around we didn't detect any change in the sink's connection
> >  * status.
> > +*
> > +* Type-c connectors which get their HPD signal deasserted then
> > +* reasserted, without unplugging/replugging the sink from the
> > +* connector, introduce a delay until the AUX channel communication
> > +* becomes functional. Retry the detection for 5 seconds on type-c
> > +* connectors to account for this delay.
> >  */
> > -   if (state == INTEL_HOTPLUG_UNCHANGED && !connector->hotplug_retries &&
> > +   if (state == INTEL_HOTPLUG_UNCHANGED &&
> > +   connector->hotplug_retries < (is_tc ? 5 : 1) &&
>
> I had observed that intel_dp_detect may race between user spece
> invoked get connector call and intel_encoder_hotplug(), that may leave
> connector status to be UNCHANGED in actual hotplug flow as
> intel_dp_detect() already called from
> drm_helper_probe_single_connector_modes(), this may results in 5
> retries for type-C ports for normal HPD assertion.  Please correct me
> if i am wrong.

Yes, it's possible the retries will be unneccessary, but I don't think
we can do much about avoiding a race between a hotplug event and a
detect call.

> Thanks,
> Anshuman Gupta.
> > !dig_port->dp.is_mst)
> > state = INTEL_HOTPLUG_RETRY;
> >  
> > -- 
> > 2.23.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


[Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915/execlists: Peek at the next submission for error interrupts

2020-04-01 Thread Patchwork
== Series Details ==

Series: series starting with [1/2] drm/i915/execlists: Peek at the next 
submission for error interrupts
URL   : https://patchwork.freedesktop.org/series/75362/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8231 -> Patchwork_17168


Summary
---

  **SUCCESS**

  No regressions found.

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

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@kms_chamelium@common-hpd-after-suspend:
- fi-cml-u2:  [PASS][1] -> [DMESG-WARN][2] ([IGT#4])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8231/fi-cml-u2/igt@kms_chamel...@common-hpd-after-suspend.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17168/fi-cml-u2/igt@kms_chamel...@common-hpd-after-suspend.html

  
 Possible fixes 

  * igt@gem_wait@basic-await-all:
- fi-byt-n2820:   [FAIL][3] -> [PASS][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8231/fi-byt-n2820/igt@gem_w...@basic-await-all.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17168/fi-byt-n2820/igt@gem_w...@basic-await-all.html

  
  [IGT#4]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/4


Participating hosts (49 -> 43)
--

  Additional (2): fi-skl-6770hq fi-tgl-dsi 
  Missing(8): fi-hsw-4200u fi-byt-j1900 fi-byt-squawks fi-bsw-cyan 
fi-ctg-p8600 fi-kbl-7560u fi-byt-clapper fi-bdw-samus 


Build changes
-

  * CI: CI-20190529 -> None
  * Linux: CI_DRM_8231 -> Patchwork_17168

  CI-20190529: 20190529
  CI_DRM_8231: e262993871d01ae0ee71477ffc92752305cd2bb5 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_5550: 98927dfde17aecaecfe67bb9853ceca326ca2b23 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_17168: cfc4b332219941e947762ea13f2e25a88d86c734 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

cfc4b3322199 drm/i915/execlists: Record the active CCID from before reset
c77a5b25db60 drm/i915/execlists: Peek at the next submission for error 
interrupts

== Logs ==

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


Re: [Intel-gfx] [PATCH 2/2] drm/i915: Extend hotplug detect retry on TypeC connectors to 5 seconds

2020-04-01 Thread Anshuman Gupta
On 2020-03-30 at 15:24:25 +0530, Imre Deak wrote:
> On TypeC ports if a sink deasserts/reasserts its HPD signal, generating
> a hotplug interrupt without the sink getting unplugged/replugged from
> the connector, there can be an up to 3 seconds delay until the AUX
> channel gets functional. To avoid detection failures this delay causes
> retry the detection for 5 seconds.
> 
> I noticed this on ICL/TGL RVPs and a DELL XPS 13 7390 ICL laptop.
> 
> References: https://gitlab.freedesktop.org/drm/intel/issues/1067
> Signed-off-by: Imre Deak 
> ---
>  drivers/gpu/drm/i915/display/intel_ddi.c | 12 +++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c 
> b/drivers/gpu/drm/i915/display/intel_ddi.c
> index 4f508bf70f3b..2d947ff83488 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -4371,7 +4371,10 @@ static enum intel_hotplug_state
>  intel_ddi_hotplug(struct intel_encoder *encoder,
> struct intel_connector *connector)
>  {
> + struct drm_i915_private *i915 = to_i915(encoder->base.dev);
>   struct intel_digital_port *dig_port = enc_to_dig_port(encoder);
> + enum phy phy = intel_port_to_phy(i915, encoder->port);
> + bool is_tc = intel_phy_is_tc(i915, phy);
>   struct drm_modeset_acquire_ctx ctx;
>   enum intel_hotplug_state state;
>   int ret;
> @@ -4414,8 +4417,15 @@ intel_ddi_hotplug(struct intel_encoder *encoder,
>* valid EDID. To solve this schedule another detection cycle if this
>* time around we didn't detect any change in the sink's connection
>* status.
> +  *
> +  * Type-c connectors which get their HPD signal deasserted then
> +  * reasserted, without unplugging/replugging the sink from the
> +  * connector, introduce a delay until the AUX channel communication
> +  * becomes functional. Retry the detection for 5 seconds on type-c
> +  * connectors to account for this delay.
>*/
> - if (state == INTEL_HOTPLUG_UNCHANGED && !connector->hotplug_retries &&
> + if (state == INTEL_HOTPLUG_UNCHANGED &&
> + connector->hotplug_retries < (is_tc ? 5 : 1) &&
I had observed that intel_dp_detect may race between user spece invoked
get connector call and intel_encoder_hotplug(), that may leave connector status
to be UNCHANGED in actual hotplug flow as intel_dp_detect() already called from 
drm_helper_probe_single_connector_modes(), this may results in 5 retries for 
type-C ports for normal HPD assertion.
Please correct me if i am wrong.
Thanks,
Anshuman Gupta.
>   !dig_port->dp.is_mst)
>   state = INTEL_HOTPLUG_RETRY;
>  
> -- 
> 2.23.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


[Intel-gfx] [CI] drm/i915/gt: Align engine dump active/pending

2020-04-01 Thread Chris Wilson
Insert a space so that the same fields between active/pending execlists
state are aligned.

Signed-off-by: Chris Wilson 
Reviewed-by: Mika Kuoppala 
---
 drivers/gpu/drm/i915/gt/intel_engine_cs.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c 
b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index b01af08eaaf7..843cb6f2f696 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -1405,7 +1405,7 @@ static void intel_engine_print_registers(struct 
intel_engine_cs *engine,
int len;
 
len = scnprintf(hdr, sizeof(hdr),
-   "\t\tActive[%d]: ccid:%08x, ",
+   "\t\tActive[%d]:  ccid:%08x, ",
(int)(port - execlists->active),
upper_32_bits(rq->context->lrc_desc));
len += print_ring(hdr + len, sizeof(hdr) - len, rq);
-- 
2.20.1

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


[Intel-gfx] [PATCH 1/2] drm/i915/execlists: Peek at the next submission for error interrupts

2020-04-01 Thread Chris Wilson
If we receive the error interrupt before the CS interrupt, we may find
ourselves without an active request to reset, skipping the GPU reset.
All because the attempt to reset was too early.

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/intel_lrc.c | 41 -
 1 file changed, 40 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index 3479cda37fdc..f028114714cd 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -2804,6 +2804,45 @@ static struct execlists_capture *capture_regs(struct 
intel_engine_cs *engine)
return NULL;
 }
 
+static struct i915_request *
+active_context(struct intel_engine_cs *engine, u32 ccid)
+{
+   const struct intel_engine_execlists * const el = >execlists;
+   struct i915_request * const *port, *rq;
+
+   /*
+* Use the most recent result from process_csb(), but just in case
+* we trigger an error (via interrupt) before the first CS event has
+* been written, peek at the next submission.
+*/
+
+   for (port = el->active; (rq = *port); port++) {
+   if (upper_32_bits(rq->context->lrc_desc) == ccid) {
+   ENGINE_TRACE(engine,
+"ccid found at active:%zd\n",
+port - el->active);
+   return rq;
+   }
+   }
+
+   for (port = el->pending; (rq = *port); port++) {
+   if (upper_32_bits(rq->context->lrc_desc) == ccid) {
+   ENGINE_TRACE(engine,
+"ccid found at pending:%zd\n",
+port - el->pending);
+   return rq;
+   }
+   }
+
+   ENGINE_TRACE(engine, "ccid:%x not found\n", ccid);
+   return NULL;
+}
+
+static u32 active_ccid(struct intel_engine_cs *engine)
+{
+   return ENGINE_READ_FW(engine, RING_EXECLIST_STATUS_HI);
+}
+
 static bool execlists_capture(struct intel_engine_cs *engine)
 {
struct execlists_capture *cap;
@@ -2821,7 +2860,7 @@ static bool execlists_capture(struct intel_engine_cs 
*engine)
return true;
 
spin_lock_irq(>active.lock);
-   cap->rq = execlists_active(>execlists);
+   cap->rq = active_context(engine, active_ccid(engine));
if (cap->rq) {
cap->rq = active_request(cap->rq->context->timeline, cap->rq);
cap->rq = i915_request_get_rcu(cap->rq);
-- 
2.20.1

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


[Intel-gfx] [PATCH 2/2] drm/i915/execlists: Record the active CCID from before reset

2020-04-01 Thread Chris Wilson
If we cannot trust the reset will flush out the CS event queue such that
process_csb() reports an accurate view of HW, we will need to search the
active and pending contexts to determine which was actually running at
the time we issued the reset.

Signed-off-by: Chris Wilson 
---
 drivers/gpu/drm/i915/gt/intel_engine_types.h | 5 +
 drivers/gpu/drm/i915/gt/intel_lrc.c  | 4 +++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_engine_types.h 
b/drivers/gpu/drm/i915/gt/intel_engine_types.h
index 80cdde712842..4804587442e7 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_types.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine_types.h
@@ -166,6 +166,11 @@ struct intel_engine_execlists {
 */
u32 error_interrupt;
 
+   /**
+* @reset_ccid: Active CCID [EXECLISTS_STATUS_HI] at the time of reset
+*/
+   u32 reset_ccid;
+
/**
 * @no_priolist: priority lists disabled
 */
diff --git a/drivers/gpu/drm/i915/gt/intel_lrc.c 
b/drivers/gpu/drm/i915/gt/intel_lrc.c
index f028114714cd..55bf3cdf3b38 100644
--- a/drivers/gpu/drm/i915/gt/intel_lrc.c
+++ b/drivers/gpu/drm/i915/gt/intel_lrc.c
@@ -3724,6 +3724,8 @@ static void execlists_reset_prepare(struct 
intel_engine_cs *engine)
 */
ring_set_paused(engine, 1);
intel_engine_stop_cs(engine);
+
+   engine->execlists.reset_ccid = active_ccid(engine);
 }
 
 static void reset_csb_pointers(struct intel_engine_cs *engine)
@@ -3798,7 +3800,7 @@ static void __execlists_reset(struct intel_engine_cs 
*engine, bool stalled)
 * its request, it was still running at the time of the
 * reset and will have been clobbered.
 */
-   rq = execlists_active(execlists);
+   rq = active_context(engine, engine->execlists.reset_ccid);
if (!rq)
goto unwind;
 
-- 
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/gem: Utilize rcu iteration of context engines (rev2)

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/gem: Utilize rcu iteration of context engines (rev2)
URL   : https://patchwork.freedesktop.org/series/75270/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8223_full -> Patchwork_17151_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17151_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17151_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_17151_full:

### IGT changes ###

 Possible regressions 

  * igt@i915_selftest@live@requests:
- shard-tglb: [PASS][1] -> [DMESG-FAIL][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-tglb8/igt@i915_selftest@l...@requests.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17151/shard-tglb1/igt@i915_selftest@l...@requests.html

  
New tests
-

  New tests have been introduced between CI_DRM_8223_full and 
Patchwork_17151_full:

### New IGT tests (1) ###

  * igt@gem_exec_capture@capture:
- Statuses :
- Exec time: [None] s

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_exec_schedule@implicit-both-bsd:
- shard-iclb: [PASS][3] -> [SKIP][4] ([i915#677])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-iclb3/igt@gem_exec_sched...@implicit-both-bsd.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17151/shard-iclb4/igt@gem_exec_sched...@implicit-both-bsd.html

  * igt@gem_exec_schedule@implicit-both-bsd1:
- shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#109276] / [i915#677])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-iclb1/igt@gem_exec_sched...@implicit-both-bsd1.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17151/shard-iclb6/igt@gem_exec_sched...@implicit-both-bsd1.html

  * igt@gem_exec_schedule@in-order-bsd:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#112146]) +6 similar 
issues
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-iclb7/igt@gem_exec_sched...@in-order-bsd.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17151/shard-iclb2/igt@gem_exec_sched...@in-order-bsd.html

  * igt@gem_softpin@noreloc-s3:
- shard-kbl:  [PASS][9] -> [DMESG-WARN][10] ([i915#180]) +1 similar 
issue
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-kbl3/igt@gem_soft...@noreloc-s3.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17151/shard-kbl7/igt@gem_soft...@noreloc-s3.html

  * igt@kms_cursor_crc@pipe-a-cursor-128x42-offscreen:
- shard-apl:  [PASS][11] -> [FAIL][12] ([i915#54] / [i915#95])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-apl3/igt@kms_cursor_...@pipe-a-cursor-128x42-offscreen.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17151/shard-apl3/igt@kms_cursor_...@pipe-a-cursor-128x42-offscreen.html

  * igt@kms_cursor_crc@pipe-a-cursor-alpha-transparent:
- shard-skl:  [PASS][13] -> [FAIL][14] ([i915#54])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-skl5/igt@kms_cursor_...@pipe-a-cursor-alpha-transparent.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17151/shard-skl2/igt@kms_cursor_...@pipe-a-cursor-alpha-transparent.html

  * igt@kms_flip@flip-vs-expired-vblank:
- shard-skl:  [PASS][15] -> [FAIL][16] ([i915#79])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-skl7/igt@kms_f...@flip-vs-expired-vblank.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17151/shard-skl2/igt@kms_f...@flip-vs-expired-vblank.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-glk:  [PASS][17] -> [FAIL][18] ([i915#79])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-glk2/igt@kms_f...@flip-vs-expired-vblank-interruptible.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17151/shard-glk1/igt@kms_f...@flip-vs-expired-vblank-interruptible.html

  * igt@kms_flip@plain-flip-ts-check:
- shard-glk:  [PASS][19] -> [FAIL][20] ([i915#34])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-glk2/igt@kms_f...@plain-flip-ts-check.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17151/shard-glk1/igt@kms_f...@plain-flip-ts-check.html

  * igt@kms_frontbuffer_tracking@fbc-suspend:
- shard-kbl:  [PASS][21] -> [DMESG-WARN][22] ([i915#180] / 
[i915#93] / [i915#95]) +1 similar issue
   [21]: 

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/gt: Include the execlists CCID of each port in the engine dump

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/gt: Include the execlists CCID of each port in the engine dump
URL   : https://patchwork.freedesktop.org/series/75298/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8223_full -> Patchwork_17150_full


Summary
---

  **SUCCESS**

  No regressions found.

  

New tests
-

  New tests have been introduced between CI_DRM_8223_full and 
Patchwork_17150_full:

### New IGT tests (1) ###

  * igt@gem_exec_capture@capture:
- Statuses :
- Exec time: [None] s

  

Known issues


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

### IGT changes ###

 Issues hit 

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

  * igt@gem_ctx_persistence@engines-mixed-process@rcs0:
- shard-iclb: [PASS][3] -> [FAIL][4] ([i915#1528])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-iclb3/igt@gem_ctx_persistence@engines-mixed-proc...@rcs0.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17150/shard-iclb1/igt@gem_ctx_persistence@engines-mixed-proc...@rcs0.html

  * igt@gem_exec_schedule@implicit-both-bsd:
- shard-iclb: [PASS][5] -> [SKIP][6] ([i915#677])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-iclb3/igt@gem_exec_sched...@implicit-both-bsd.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17150/shard-iclb1/igt@gem_exec_sched...@implicit-both-bsd.html

  * igt@gem_exec_schedule@implicit-both-bsd1:
- shard-iclb: [PASS][7] -> [SKIP][8] ([fdo#109276] / [i915#677])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-iclb1/igt@gem_exec_sched...@implicit-both-bsd1.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17150/shard-iclb7/igt@gem_exec_sched...@implicit-both-bsd1.html

  * igt@gem_exec_schedule@in-order-bsd:
- shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#112146]) +6 similar 
issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-iclb7/igt@gem_exec_sched...@in-order-bsd.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17150/shard-iclb4/igt@gem_exec_sched...@in-order-bsd.html

  * igt@gem_exec_schedule@preempt-queue-bsd1:
- shard-iclb: [PASS][11] -> [SKIP][12] ([fdo#109276]) +18 similar 
issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-iclb1/igt@gem_exec_sched...@preempt-queue-bsd1.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17150/shard-iclb7/igt@gem_exec_sched...@preempt-queue-bsd1.html

  * igt@i915_pm_rc6_residency@rc6-idle:
- shard-snb:  [PASS][13] -> [TIMEOUT][14] ([i915#1526])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-snb6/igt@i915_pm_rc6_reside...@rc6-idle.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17150/shard-snb5/igt@i915_pm_rc6_reside...@rc6-idle.html

  * igt@i915_suspend@fence-restore-untiled:
- shard-kbl:  [PASS][15] -> [DMESG-WARN][16] ([i915#180]) +2 
similar issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-kbl1/igt@i915_susp...@fence-restore-untiled.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17150/shard-kbl1/igt@i915_susp...@fence-restore-untiled.html

  * igt@kms_draw_crc@draw-method-rgb565-mmap-gtt-ytiled:
- shard-glk:  [PASS][17] -> [FAIL][18] ([i915#52] / [i915#54])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-glk8/igt@kms_draw_...@draw-method-rgb565-mmap-gtt-ytiled.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17150/shard-glk6/igt@kms_draw_...@draw-method-rgb565-mmap-gtt-ytiled.html

  * igt@kms_fbcon_fbt@fbc-suspend:
- shard-kbl:  [PASS][19] -> [DMESG-WARN][20] ([i915#180] / 
[i915#93] / [i915#95])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-kbl6/igt@kms_fbcon_...@fbc-suspend.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17150/shard-kbl6/igt@kms_fbcon_...@fbc-suspend.html

  * igt@kms_flip@2x-plain-flip-fb-recreate-interruptible:
- shard-glk:  [PASS][21] -> [FAIL][22] ([i915#34])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-glk8/igt@kms_f...@2x-plain-flip-fb-recreate-interruptible.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17150/shard-glk6/igt@kms_f...@2x-plain-flip-fb-recreate-interruptible.html

  * igt@kms_flip@plain-flip-fb-recreate:
- shard-skl:  [PASS][23] -> [FAIL][24] ([i915#34])
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8223/shard-skl10/igt@kms_f...@plain-flip-fb-recreate.html
   [24]: 

[Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915/tgl: Make Wa_14010229206 permanent

2020-04-01 Thread Patchwork
== Series Details ==

Series: drm/i915/tgl: Make Wa_14010229206 permanent
URL   : https://patchwork.freedesktop.org/series/75139/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_8197_full -> Patchwork_17107_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_persistence@close-replace-race:
- shard-iclb: [PASS][1] -> [INCOMPLETE][2] ([i915#1492])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-iclb4/igt@gem_ctx_persiste...@close-replace-race.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-iclb2/igt@gem_ctx_persiste...@close-replace-race.html

  * igt@gem_eio@in-flight-suspend:
- shard-glk:  [PASS][3] -> [CRASH][4] ([i915#1582])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-glk1/igt@gem_...@in-flight-suspend.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-glk4/igt@gem_...@in-flight-suspend.html

  * igt@gem_exec_schedule@implicit-read-write-bsd1:
- shard-iclb: [PASS][5] -> [SKIP][6] ([fdo#109276] / [i915#677]) +2 
similar issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-iclb2/igt@gem_exec_sched...@implicit-read-write-bsd1.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-iclb6/igt@gem_exec_sched...@implicit-read-write-bsd1.html

  * igt@gem_exec_schedule@pi-common-bsd:
- shard-iclb: [PASS][7] -> [SKIP][8] ([i915#677]) +1 similar issue
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-iclb3/igt@gem_exec_sched...@pi-common-bsd.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-iclb1/igt@gem_exec_sched...@pi-common-bsd.html

  * igt@gem_exec_schedule@preempt-other-chain-bsd:
- shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#112146]) +4 similar 
issues
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-iclb3/igt@gem_exec_sched...@preempt-other-chain-bsd.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-iclb1/igt@gem_exec_sched...@preempt-other-chain-bsd.html

  * igt@kms_cursor_crc@pipe-a-cursor-64x21-onscreen:
- shard-kbl:  [PASS][11] -> [FAIL][12] ([i915#54] / [i915#93] / 
[i915#95])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-kbl7/igt@kms_cursor_...@pipe-a-cursor-64x21-onscreen.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-kbl4/igt@kms_cursor_...@pipe-a-cursor-64x21-onscreen.html

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

  * igt@kms_draw_crc@draw-method-rgb565-blt-untiled:
- shard-glk:  [PASS][15] -> [FAIL][16] ([i915#52] / [i915#54])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-glk9/igt@kms_draw_...@draw-method-rgb565-blt-untiled.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-glk7/igt@kms_draw_...@draw-method-rgb565-blt-untiled.html

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

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-glk:  [PASS][19] -> [FAIL][20] ([i915#79])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-glk6/igt@kms_f...@flip-vs-expired-vblank-interruptible.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-glk4/igt@kms_f...@flip-vs-expired-vblank-interruptible.html

  * igt@kms_flip@flip-vs-suspend-interruptible:
- shard-apl:  [PASS][21] -> [DMESG-WARN][22] ([i915#180]) +1 
similar issue
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-apl7/igt@kms_f...@flip-vs-suspend-interruptible.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-apl8/igt@kms_f...@flip-vs-suspend-interruptible.html

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

  * igt@kms_psr@psr2_sprite_plane_move:
- shard-iclb:   

Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for drm/i915/tgl: Make Wa_14010229206 permanent

2020-04-01 Thread Vudum, Lakshminarayana
Hi Swathi, I have addressed the issue and re-reported the results last night. 
But the results were not updated. Now I am re-reporting for the second time. I 
will update you. I will keep you posted.

Lakshmi.

-Original Message-
From: Dhanavanthri, Swathi  
Sent: Wednesday, April 1, 2020 12:17 AM
To: intel-gfx@lists.freedesktop.org
Cc: Vudum, Lakshminarayana ; Peres, Martin 

Subject: RE: ✗ Fi.CI.IGT: failure for drm/i915/tgl: Make Wa_14010229206 
permanent

I am requesting to retest this patch.

This patch involves changes that are for TGL only, but the errors are in ICL 
and GLK. These seem to be false positives.

Thanks,
Swathi

-Original Message-
From: Patchwork  
Sent: Friday, March 27, 2020 7:32 AM
To: Dhanavanthri, Swathi 
Cc: intel-gfx@lists.freedesktop.org
Subject: ✗ Fi.CI.IGT: failure for drm/i915/tgl: Make Wa_14010229206 permanent

== Series Details ==

Series: drm/i915/tgl: Make Wa_14010229206 permanent
URL   : https://patchwork.freedesktop.org/series/75139/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8197_full -> Patchwork_17107_full 


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17107_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17107_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_17107_full:

### IGT changes ###

 Possible regressions 

  * igt@gem_ctx_persistence@legacy-engines-mixed-process@bsd2:
- shard-iclb: NOTRUN -> [FAIL][1]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-iclb4/igt@gem_ctx_persistence@legacy-engines-mixed-proc...@bsd2.html

  * igt@gem_eio@in-flight-suspend:
- shard-glk:  [PASS][2] -> [CRASH][3]
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-glk1/igt@gem_...@in-flight-suspend.html
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-glk4/igt@gem_...@in-flight-suspend.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_persistence@close-replace-race:
- shard-iclb: [PASS][4] -> [INCOMPLETE][5] ([i915#1492])
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-iclb4/igt@gem_ctx_persiste...@close-replace-race.html
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-iclb2/igt@gem_ctx_persiste...@close-replace-race.html

  * igt@gem_exec_schedule@implicit-read-write-bsd1:
- shard-iclb: [PASS][6] -> [SKIP][7] ([fdo#109276] / [i915#677]) +2 
similar issues
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-iclb2/igt@gem_exec_sched...@implicit-read-write-bsd1.html
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-iclb6/igt@gem_exec_sched...@implicit-read-write-bsd1.html

  * igt@gem_exec_schedule@pi-common-bsd:
- shard-iclb: [PASS][8] -> [SKIP][9] ([i915#677]) +1 similar issue
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-iclb3/igt@gem_exec_sched...@pi-common-bsd.html
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-iclb1/igt@gem_exec_sched...@pi-common-bsd.html

  * igt@gem_exec_schedule@preempt-other-chain-bsd:
- shard-iclb: [PASS][10] -> [SKIP][11] ([fdo#112146]) +4 similar 
issues
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-iclb3/igt@gem_exec_sched...@preempt-other-chain-bsd.html
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-iclb1/igt@gem_exec_sched...@preempt-other-chain-bsd.html

  * igt@kms_cursor_crc@pipe-a-cursor-64x21-onscreen:
- shard-kbl:  [PASS][12] -> [FAIL][13] ([i915#54] / [i915#93] / 
[i915#95])
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-kbl7/igt@kms_cursor_...@pipe-a-cursor-64x21-onscreen.html
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17107/shard-kbl4/igt@kms_cursor_...@pipe-a-cursor-64x21-onscreen.html

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

  * igt@kms_draw_crc@draw-method-rgb565-blt-untiled:
- shard-glk:  [PASS][16] -> [FAIL][17] ([i915#52] / [i915#54])
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8197/shard-glk9/igt@kms_draw_...@draw-method-rgb565-blt-untiled.html
   [17]: 

[Intel-gfx] ✗ Fi.CI.IGT: failure for series starting with [1/4] drm/i915/selftests: Tidy up an error message for live_error_interrupt

2020-04-01 Thread Patchwork
== Series Details ==

Series: series starting with [1/4] drm/i915/selftests: Tidy up an error message 
for live_error_interrupt
URL   : https://patchwork.freedesktop.org/series/75296/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_8222_full -> Patchwork_17149_full


Summary
---

  **FAILURE**

  Serious unknown changes coming with Patchwork_17149_full absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_17149_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_17149_full:

### IGT changes ###

 Possible regressions 

  * igt@drm_mm@all@evict_range:
- shard-skl:  [PASS][1] -> [INCOMPLETE][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8222/shard-skl10/igt@drm_mm@all@evict_range.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17149/shard-skl1/igt@drm_mm@all@evict_range.html

  
 Warnings 

  * igt@kms_content_protection@lic:
- shard-apl:  [TIMEOUT][3] ([i915#1319]) -> [INCOMPLETE][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8222/shard-apl3/igt@kms_content_protect...@lic.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17149/shard-apl1/igt@kms_content_protect...@lic.html

  * igt@kms_vblank@pipe-d-ts-continuation-modeset-rpm:
- shard-apl:  [SKIP][5] ([fdo#109271]) -> [INCOMPLETE][6]
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8222/shard-apl3/igt@kms_vbl...@pipe-d-ts-continuation-modeset-rpm.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17149/shard-apl4/igt@kms_vbl...@pipe-d-ts-continuation-modeset-rpm.html

  
New tests
-

  New tests have been introduced between CI_DRM_8222_full and 
Patchwork_17149_full:

### New IGT tests (2) ###

  * igt@gem_exec_async@concurrent-writes:
- Statuses :
- Exec time: [None] s

  * igt@gem_exec_capture@capture:
- Statuses :
- Exec time: [None] s

  

Known issues


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

### IGT changes ###

 Issues hit 

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

  * igt@gem_exec_balancer@smoke:
- shard-iclb: [PASS][9] -> [SKIP][10] ([fdo#110854])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8222/shard-iclb2/igt@gem_exec_balan...@smoke.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17149/shard-iclb8/igt@gem_exec_balan...@smoke.html

  * igt@gem_exec_schedule@implicit-both-bsd1:
- shard-iclb: [PASS][11] -> [SKIP][12] ([fdo#109276] / [i915#677]) 
+1 similar issue
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8222/shard-iclb1/igt@gem_exec_sched...@implicit-both-bsd1.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17149/shard-iclb7/igt@gem_exec_sched...@implicit-both-bsd1.html

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

  * igt@gem_exec_schedule@preempt-other-chain-bsd:
- shard-iclb: [PASS][15] -> [SKIP][16] ([fdo#112146]) +4 similar 
issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8222/shard-iclb5/igt@gem_exec_sched...@preempt-other-chain-bsd.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17149/shard-iclb4/igt@gem_exec_sched...@preempt-other-chain-bsd.html

  * igt@gem_workarounds@suspend-resume-fd:
- shard-kbl:  [PASS][17] -> [DMESG-WARN][18] ([i915#180]) +3 
similar issues
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8222/shard-kbl6/igt@gem_workarou...@suspend-resume-fd.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17149/shard-kbl1/igt@gem_workarou...@suspend-resume-fd.html

  * igt@kms_cursor_crc@pipe-c-cursor-alpha-transparent:
- shard-skl:  [PASS][19] -> [FAIL][20] ([i915#54])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8222/shard-skl5/igt@kms_cursor_...@pipe-c-cursor-alpha-transparent.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17149/shard-skl10/igt@kms_cursor_...@pipe-c-cursor-alpha-transparent.html

  * igt@kms_draw_crc@draw-method-rgb565-render-xtiled:

Re: [Intel-gfx] [PATCH v2 08/20] drm/i915: Introduce proper dbuf state

2020-04-01 Thread Lisovskiy, Stanislav
On Tue, Feb 25, 2020 at 07:11:13PM +0200, Ville Syrjala wrote:
> From: Ville Syrjälä 
> 
> Add a global state to track the dbuf slices. Gets rid of all the nasty
> coupling between state->modeset and dbuf recomputation. Also we can now
> totally nuke state->active_pipe_changes.
> 
> dev_priv->wm.distrust_bios_wm still remains, but that too will get
> nuked soon.
> 
> Cc: Stanislav Lisovskiy 
> Signed-off-by: Ville Syrjälä 
> ---
>  drivers/gpu/drm/i915/display/intel_display.c  |  67 +--
>  .../drm/i915/display/intel_display_power.c|   8 +-
>  .../drm/i915/display/intel_display_types.h|  13 --
>  drivers/gpu/drm/i915/i915_drv.h   |  11 +-
>  drivers/gpu/drm/i915/intel_pm.c   | 189 --
>  drivers/gpu/drm/i915/intel_pm.h   |  22 ++
>  6 files changed, 209 insertions(+), 101 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c 
> b/drivers/gpu/drm/i915/display/intel_display.c
> index 6952c398cc43..659b952c8e2f 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -7581,6 +7581,8 @@ static void intel_crtc_disable_noatomic(struct 
> intel_crtc *crtc,
>   to_intel_bw_state(dev_priv->bw_obj.state);
>   struct intel_cdclk_state *cdclk_state =
>   to_intel_cdclk_state(dev_priv->cdclk.obj.state);
> + struct intel_dbuf_state *dbuf_state =
> + to_intel_dbuf_state(dev_priv->dbuf.obj.state);
>   struct intel_crtc_state *crtc_state =
>   to_intel_crtc_state(crtc->base.state);
>   enum intel_display_power_domain domain;
> @@ -7654,6 +7656,8 @@ static void intel_crtc_disable_noatomic(struct 
> intel_crtc *crtc,
>   cdclk_state->min_voltage_level[pipe] = 0;
>   cdclk_state->active_pipes &= ~BIT(pipe);
>  
> + dbuf_state->active_pipes &= ~BIT(pipe);
> +
>   bw_state->data_rate[pipe] = 0;
>   bw_state->num_active_planes[pipe] = 0;
>  }
> @@ -13991,10 +13995,10 @@ static void verify_wm_state(struct intel_crtc *crtc,
>   hw_enabled_slices = intel_enabled_dbuf_slices_mask(dev_priv);
>  
>   if (INTEL_GEN(dev_priv) >= 11 &&
> - hw_enabled_slices != dev_priv->enabled_dbuf_slices_mask)
> + hw_enabled_slices != dev_priv->dbuf.enabled_slices)
>   drm_err(_priv->drm,
>   "mismatch in DBUF Slices (expected 0x%x, got 0x%x)\n",
> - dev_priv->enabled_dbuf_slices_mask,
> + dev_priv->dbuf.enabled_slices,
>   hw_enabled_slices);
>  
>   /* planes */
> @@ -14529,9 +14533,7 @@ static int intel_modeset_checks(struct 
> intel_atomic_state *state)
>   state->modeset = true;
>   state->active_pipes = intel_calc_active_pipes(state, 
> dev_priv->active_pipes);
>  
> - state->active_pipe_changes = state->active_pipes ^ 
> dev_priv->active_pipes;
> -
> - if (state->active_pipe_changes) {
> + if (state->active_pipes != dev_priv->active_pipes) {
>   ret = _intel_atomic_lock_global_state(state);
>   if (ret)
>   return ret;
> @@ -15292,22 +15294,38 @@ static void 
> intel_update_trans_port_sync_crtcs(struct intel_crtc *crtc,
>  static void icl_dbuf_slice_pre_update(struct intel_atomic_state *state)
>  {
>   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> - u8 hw_enabled_slices = dev_priv->enabled_dbuf_slices_mask;
> - u8 required_slices = state->enabled_dbuf_slices_mask;
> - u8 slices_union = hw_enabled_slices | required_slices;
> + const struct intel_dbuf_state *new_dbuf_state =
> + intel_atomic_get_new_dbuf_state(state);
> + const struct intel_dbuf_state *old_dbuf_state =
> + intel_atomic_get_old_dbuf_state(state);
>  
> - if (INTEL_GEN(dev_priv) >= 11 && slices_union != hw_enabled_slices)
> - gen9_dbuf_slices_update(dev_priv, slices_union);
> + if (!new_dbuf_state ||
> + new_dbuf_state->enabled_slices == old_dbuf_state->enabled_slices)
> + return;
> +
> + WARN_ON(!new_dbuf_state->base.changed);
> +
> + gen9_dbuf_slices_update(dev_priv,
> + old_dbuf_state->enabled_slices |
> + new_dbuf_state->enabled_slices);
>  }
>  
>  static void icl_dbuf_slice_post_update(struct intel_atomic_state *state)
>  {
>   struct drm_i915_private *dev_priv = to_i915(state->base.dev);
> - u8 hw_enabled_slices = dev_priv->enabled_dbuf_slices_mask;
> - u8 required_slices = state->enabled_dbuf_slices_mask;
> + const struct intel_dbuf_state *new_dbuf_state =
> + intel_atomic_get_new_dbuf_state(state);
> + const struct intel_dbuf_state *old_dbuf_state =
> + intel_atomic_get_old_dbuf_state(state);
>  
> - if (INTEL_GEN(dev_priv) >= 11 && required_slices != hw_enabled_slices)
> - gen9_dbuf_slices_update(dev_priv, required_slices);
> + if 

Re: [Intel-gfx] [PATCH v2 05/20] drm/i915: Make skl_compute_dbuf_slices() behave consistently for all platforms

2020-04-01 Thread Lisovskiy, Stanislav
On Mon, Mar 02, 2020 at 04:50:37PM +0200, Ville Syrjälä wrote:
> On Tue, Feb 25, 2020 at 05:30:57PM +, Lisovskiy, Stanislav wrote:
> > On Tue, 2020-02-25 at 19:11 +0200, Ville Syrjala wrote:
> > > From: Ville Syrjälä 
> > > 
> > > Currently skl_compute_dbuf_slices() returns 0 for any inactive pipe
> > > on
> > > icl+, but returns BIT(S1) on pre-icl for any pipe (whether it's
> > > active or
> > > not). Let's make the behaviour consistent and always return 0 for any
> > > inactive pipe.
> > > 
> > > Cc: Stanislav Lisovskiy 
> > > Signed-off-by: Ville Syrjälä 
> > > ---
> > >  drivers/gpu/drm/i915/intel_pm.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/intel_pm.c
> > > b/drivers/gpu/drm/i915/intel_pm.c
> > > index a2e78969c0df..640f4c4fd508 100644
> > > --- a/drivers/gpu/drm/i915/intel_pm.c
> > > +++ b/drivers/gpu/drm/i915/intel_pm.c
> > > @@ -4408,7 +4408,7 @@ static u8 skl_compute_dbuf_slices(const struct
> > > intel_crtc_state *crtc_state,
> > >* For anything else just return one slice yet.
> > >* Should be extended for other platforms.
> > >*/
> > > - return BIT(DBUF_S1);
> > > + return active_pipes & BIT(pipe) ? BIT(DBUF_S1) : 0;
> > 
> > I think the initial idea was this won't be even called if there 
> > are no active pipes at all - skl_ddb_get_pipe_allocation_limits would
> > bail out immediately. If there were some active pipes - then we will
> > have to use slice S1 anyway - because there were simply no other slices
> > available. If some pipes were inactive - they are currently skipped by
> > !crtc_state->hw.active check - so I would just keep it simple and don't
> > call this function for non-active pipes at all.
> 
> That's just going to make the caller more messy by forcing it to
> check for active_pipes 0 vs. not. Ie. we'd be splitting the
> responsibility of computing the dbuf slices for this pipe between
> skl_compute_dbuf_slices() and its caller. Not a good idea IMO.

Let's ramp it up. As I understood from your comments we still need dbuf_state.
I would anyway add another table for handling this in some unified manner at 
least,
however don't want to spend another couple of month discussing that :)

Reviewed-by: Stanislav Lisovskiy 


> 
> -- 
> 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] drm/i915/perf: Do not clear pollin for small user read buffers

2020-04-01 Thread Lionel Landwerlin

On 01/04/2020 10:43, Dixit, Ashutosh wrote:

On Tue, 31 Mar 2020 23:57:57 -0700, Lionel Landwerlin wrote:

On 01/04/2020 02:14, Ashutosh Dixit wrote:

It is wrong to block the user thread in the next poll when OA data is
already available which could not fit in the user buffer provided in
the previous read. In several cases the exact user buffer size is not
known. Blocking user space in poll can lead to data loss when the
buffer size used is smaller than the available data.

This change fixes this issue and allows user space to read all OA data
even when using a buffer size smaller than the available data using
multiple non-blocking reads rather than staying blocked in poll till
the next timer interrupt.

v2: Fix ret value for blocking reads (Umesh)
v3: Mistake during patch send (Ashutosh)
v4: Remove -EAGAIN from comment (Umesh)
v5: Improve condition for clearing pollin and return (Lionel)
v6: Improve blocking read loop and other cleanups (Lionel)

Cc: Umesh Nerlige Ramappa 
Cc: Lionel Landwerlin 
Signed-off-by: Ashutosh Dixit 
---
   drivers/gpu/drm/i915/i915_perf.c | 61 ++--
   1 file changed, 11 insertions(+), 50 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index 28e3d76fa2e6..2f78b147bb2d 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -2963,49 +2963,6 @@ void i915_oa_init_reg_state(const struct intel_context 
*ce,
gen8_update_reg_state_unlocked(ce, stream);
   }
   -/**
- * i915_perf_read_locked - _perf_stream_ops->read with error normalisation
- * @stream: An i915 perf stream
- * @file: An i915 perf stream file
- * @buf: destination buffer given by userspace
- * @count: the number of bytes userspace wants to read
- * @ppos: (inout) file seek position (unused)
- *
- * Besides wrapping _perf_stream_ops->read this provides a common place to
- * ensure that if we've successfully copied any data then reporting that takes
- * precedence over any internal error status, so the data isn't lost.
- *
- * For example ret will be -ENOSPC whenever there is more buffered data than
- * can be copied to userspace, but that's only interesting if we weren't able
- * to copy some data because it implies the userspace buffer is too small to
- * receive a single record (and we never split records).
- *
- * Another case with ret == -EFAULT is more of a grey area since it would seem
- * like bad form for userspace to ask us to overrun its buffer, but the user
- * knows best:
- *
- *   http://yarchive.net/comp/linux/partial_reads_writes.html
- *
- * Returns: The number of bytes copied or a negative error code on failure.
- */
-static ssize_t i915_perf_read_locked(struct i915_perf_stream *stream,
-struct file *file,
-char __user *buf,
-size_t count,
-loff_t *ppos)
-{
-   /* Note we keep the offset (aka bytes read) separate from any
-* error status so that the final check for whether we return
-* the bytes read with a higher precedence than any error (see
-* comment below) doesn't need to be handled/duplicated in
-* stream->ops->read() implementations.
-*/
-   size_t offset = 0;
-   int ret = stream->ops->read(stream, buf, count, );
-
-   return offset ?: (ret ?: -EAGAIN);
-}
-
   /**
* i915_perf_read - handles read() FOP for i915 perf stream FDs
* @file: An i915 perf stream file
@@ -3031,7 +2988,8 @@ static ssize_t i915_perf_read(struct file *file,
   {
struct i915_perf_stream *stream = file->private_data;
struct i915_perf *perf = stream->perf;
-   ssize_t ret;
+   size_t offset = 0;
+   int ret;
/* To ensure it's handled consistently we simply treat all 
reads of
a
 * disabled stream as an error. In particular it might otherwise lead
@@ -3054,13 +3012,12 @@ static ssize_t i915_perf_read(struct file *file,
return ret;
mutex_lock(>lock);
-   ret = i915_perf_read_locked(stream, file,
-   buf, count, ppos);
+   ret = stream->ops->read(stream, buf, count, );
mutex_unlock(>lock);
-   } while (ret == -EAGAIN);
+   } while (!offset && !ret);

This doesn't sound right, !offset means it will stop as soon as some data
was written.

But for the blocking read we want to fill the buffer up to -ENOSPC.

I don't think that's true. Here's 'man 2 read': "read() attempts to read
/up to/ count bytes" and "It is not an error if this number is smaller than
the number of bytes requested".

The condition (!offset && !ret) is exactly equivalent to the condition (ret
== -EAGAIN) in the original code (currently on drm-tip). The driver is free
to unblock the blocking 

Re: [Intel-gfx] [PATCH] drm/i915/perf: Do not clear pollin for small user read buffers

2020-04-01 Thread Dixit, Ashutosh
On Tue, 31 Mar 2020 23:57:57 -0700, Lionel Landwerlin wrote:
>
> On 01/04/2020 02:14, Ashutosh Dixit wrote:
> > It is wrong to block the user thread in the next poll when OA data is
> > already available which could not fit in the user buffer provided in
> > the previous read. In several cases the exact user buffer size is not
> > known. Blocking user space in poll can lead to data loss when the
> > buffer size used is smaller than the available data.
> >
> > This change fixes this issue and allows user space to read all OA data
> > even when using a buffer size smaller than the available data using
> > multiple non-blocking reads rather than staying blocked in poll till
> > the next timer interrupt.
> >
> > v2: Fix ret value for blocking reads (Umesh)
> > v3: Mistake during patch send (Ashutosh)
> > v4: Remove -EAGAIN from comment (Umesh)
> > v5: Improve condition for clearing pollin and return (Lionel)
> > v6: Improve blocking read loop and other cleanups (Lionel)
> >
> > Cc: Umesh Nerlige Ramappa 
> > Cc: Lionel Landwerlin 
> > Signed-off-by: Ashutosh Dixit 
> > ---
> >   drivers/gpu/drm/i915/i915_perf.c | 61 ++--
> >   1 file changed, 11 insertions(+), 50 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/i915_perf.c 
> > b/drivers/gpu/drm/i915/i915_perf.c
> > index 28e3d76fa2e6..2f78b147bb2d 100644
> > --- a/drivers/gpu/drm/i915/i915_perf.c
> > +++ b/drivers/gpu/drm/i915/i915_perf.c
> > @@ -2963,49 +2963,6 @@ void i915_oa_init_reg_state(const struct 
> > intel_context *ce,
> > gen8_update_reg_state_unlocked(ce, stream);
> >   }
> >   -/**
> > - * i915_perf_read_locked - _perf_stream_ops->read with error 
> > normalisation
> > - * @stream: An i915 perf stream
> > - * @file: An i915 perf stream file
> > - * @buf: destination buffer given by userspace
> > - * @count: the number of bytes userspace wants to read
> > - * @ppos: (inout) file seek position (unused)
> > - *
> > - * Besides wrapping _perf_stream_ops->read this provides a common 
> > place to
> > - * ensure that if we've successfully copied any data then reporting that 
> > takes
> > - * precedence over any internal error status, so the data isn't lost.
> > - *
> > - * For example ret will be -ENOSPC whenever there is more buffered data 
> > than
> > - * can be copied to userspace, but that's only interesting if we weren't 
> > able
> > - * to copy some data because it implies the userspace buffer is too small 
> > to
> > - * receive a single record (and we never split records).
> > - *
> > - * Another case with ret == -EFAULT is more of a grey area since it would 
> > seem
> > - * like bad form for userspace to ask us to overrun its buffer, but the 
> > user
> > - * knows best:
> > - *
> > - *   http://yarchive.net/comp/linux/partial_reads_writes.html
> > - *
> > - * Returns: The number of bytes copied or a negative error code on failure.
> > - */
> > -static ssize_t i915_perf_read_locked(struct i915_perf_stream *stream,
> > -struct file *file,
> > -char __user *buf,
> > -size_t count,
> > -loff_t *ppos)
> > -{
> > -   /* Note we keep the offset (aka bytes read) separate from any
> > -* error status so that the final check for whether we return
> > -* the bytes read with a higher precedence than any error (see
> > -* comment below) doesn't need to be handled/duplicated in
> > -* stream->ops->read() implementations.
> > -*/
> > -   size_t offset = 0;
> > -   int ret = stream->ops->read(stream, buf, count, );
> > -
> > -   return offset ?: (ret ?: -EAGAIN);
> > -}
> > -
> >   /**
> >* i915_perf_read - handles read() FOP for i915 perf stream FDs
> >* @file: An i915 perf stream file
> > @@ -3031,7 +2988,8 @@ static ssize_t i915_perf_read(struct file *file,
> >   {
> > struct i915_perf_stream *stream = file->private_data;
> > struct i915_perf *perf = stream->perf;
> > -   ssize_t ret;
> > +   size_t offset = 0;
> > +   int ret;
> > /* To ensure it's handled consistently we simply treat all 
> > reads of
> > a
> >  * disabled stream as an error. In particular it might otherwise lead
> > @@ -3054,13 +3012,12 @@ static ssize_t i915_perf_read(struct file *file,
> > return ret;
> > mutex_lock(>lock);
> > -   ret = i915_perf_read_locked(stream, file,
> > -   buf, count, ppos);
> > +   ret = stream->ops->read(stream, buf, count, );
> > mutex_unlock(>lock);
> > -   } while (ret == -EAGAIN);
> > +   } while (!offset && !ret);
>
> This doesn't sound right, !offset means it will stop as soon as some data
> was written.
>
> But for the blocking read we want to fill the buffer up to -ENOSPC.

I don't think that's true. Here's 'man 2 read': "read() attempts to read
/up to/ 

Re: [Intel-gfx] [PATCH] drm/i915/perf: Do not clear pollin for small user read buffers

2020-04-01 Thread Lionel Landwerlin

On 01/04/2020 02:14, Ashutosh Dixit wrote:

It is wrong to block the user thread in the next poll when OA data is
already available which could not fit in the user buffer provided in
the previous read. In several cases the exact user buffer size is not
known. Blocking user space in poll can lead to data loss when the
buffer size used is smaller than the available data.

This change fixes this issue and allows user space to read all OA data
even when using a buffer size smaller than the available data using
multiple non-blocking reads rather than staying blocked in poll till
the next timer interrupt.

v2: Fix ret value for blocking reads (Umesh)
v3: Mistake during patch send (Ashutosh)
v4: Remove -EAGAIN from comment (Umesh)
v5: Improve condition for clearing pollin and return (Lionel)
v6: Improve blocking read loop and other cleanups (Lionel)

Cc: Umesh Nerlige Ramappa 
Cc: Lionel Landwerlin 
Signed-off-by: Ashutosh Dixit 
---
  drivers/gpu/drm/i915/i915_perf.c | 61 ++--
  1 file changed, 11 insertions(+), 50 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_perf.c b/drivers/gpu/drm/i915/i915_perf.c
index 28e3d76fa2e6..2f78b147bb2d 100644
--- a/drivers/gpu/drm/i915/i915_perf.c
+++ b/drivers/gpu/drm/i915/i915_perf.c
@@ -2963,49 +2963,6 @@ void i915_oa_init_reg_state(const struct intel_context 
*ce,
gen8_update_reg_state_unlocked(ce, stream);
  }
  
-/**

- * i915_perf_read_locked - _perf_stream_ops->read with error normalisation
- * @stream: An i915 perf stream
- * @file: An i915 perf stream file
- * @buf: destination buffer given by userspace
- * @count: the number of bytes userspace wants to read
- * @ppos: (inout) file seek position (unused)
- *
- * Besides wrapping _perf_stream_ops->read this provides a common place to
- * ensure that if we've successfully copied any data then reporting that takes
- * precedence over any internal error status, so the data isn't lost.
- *
- * For example ret will be -ENOSPC whenever there is more buffered data than
- * can be copied to userspace, but that's only interesting if we weren't able
- * to copy some data because it implies the userspace buffer is too small to
- * receive a single record (and we never split records).
- *
- * Another case with ret == -EFAULT is more of a grey area since it would seem
- * like bad form for userspace to ask us to overrun its buffer, but the user
- * knows best:
- *
- *   http://yarchive.net/comp/linux/partial_reads_writes.html
- *
- * Returns: The number of bytes copied or a negative error code on failure.
- */
-static ssize_t i915_perf_read_locked(struct i915_perf_stream *stream,
-struct file *file,
-char __user *buf,
-size_t count,
-loff_t *ppos)
-{
-   /* Note we keep the offset (aka bytes read) separate from any
-* error status so that the final check for whether we return
-* the bytes read with a higher precedence than any error (see
-* comment below) doesn't need to be handled/duplicated in
-* stream->ops->read() implementations.
-*/
-   size_t offset = 0;
-   int ret = stream->ops->read(stream, buf, count, );
-
-   return offset ?: (ret ?: -EAGAIN);
-}
-
  /**
   * i915_perf_read - handles read() FOP for i915 perf stream FDs
   * @file: An i915 perf stream file
@@ -3031,7 +2988,8 @@ static ssize_t i915_perf_read(struct file *file,
  {
struct i915_perf_stream *stream = file->private_data;
struct i915_perf *perf = stream->perf;
-   ssize_t ret;
+   size_t offset = 0;
+   int ret;
  
  	/* To ensure it's handled consistently we simply treat all reads of a

 * disabled stream as an error. In particular it might otherwise lead
@@ -3054,13 +3012,12 @@ static ssize_t i915_perf_read(struct file *file,
return ret;
  
  			mutex_lock(>lock);

-   ret = i915_perf_read_locked(stream, file,
-   buf, count, ppos);
+   ret = stream->ops->read(stream, buf, count, );
mutex_unlock(>lock);
-   } while (ret == -EAGAIN);
+   } while (!offset && !ret);


This doesn't sound right, !offset means it will stop as soon as some 
data was written.


But for the blocking read we want to fill the buffer up to -ENOSPC.


while (ret >= 0) doesn't work?


-Lionel


} else {
mutex_lock(>lock);
-   ret = i915_perf_read_locked(stream, file, buf, count, ppos);
+   ret = stream->ops->read(stream, buf, count, );
mutex_unlock(>lock);
}
  
@@ -3071,11 +3028,15 @@ static ssize_t i915_perf_read(struct file *file,

 * and read() returning -EAGAIN. Clearing the oa.pollin state here
 * effectively ensures we back off until the next hrtimer 

Re: [Intel-gfx] [PATCH 02/23] perf/core: Only copy-to-user after completely unlocking all locks.

2020-04-01 Thread kbuild test robot
Hi Maarten,

I love your patch! Perhaps something to improve:

[auto build test WARNING on drm-tip/drm-tip]
[also build test WARNING on next-20200331]
[cannot apply to drm-intel/for-linux-next tip/perf/core v5.6]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:
https://github.com/0day-ci/linux/commits/Maarten-Lankhorst/Revert-drm-i915-gem-Drop-relocation-slowpath/20200401-005710
base:   git://anongit.freedesktop.org/drm/drm-tip drm-tip
config: x86_64-randconfig-d003-20200331 (attached as .config)
compiler: clang version 11.0.0 (https://github.com/llvm/llvm-project 
5227fa0c72ce55927cf4849160acb00442489937)
reproduce:
wget 
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O 
~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
COMPILER=clang make.cross ARCH=x86_64 

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

All warnings (new ones prefixed by >>):

>> kernel/events/core.o: warning: objtool: perf_read()+0x306: stack state 
>> mismatch: reg1[3]=-2-56 reg2[3]=-1+0

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org


.config.gz
Description: application/gzip
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx