[Intel-gfx] ✓ Fi.CI.BAT: success for CI: Revert "net/sch_generic: Shut up noise"

2019-05-16 Thread Patchwork
== Series Details ==

Series: CI: Revert "net/sch_generic: Shut up noise"
URL   : https://patchwork.freedesktop.org/series/60699/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6089 -> Patchwork_13024


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@i915_selftest@live_evict:
- fi-bsw-kefka:   [PASS][1] -> [DMESG-WARN][2] ([fdo#107709])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/fi-bsw-kefka/igt@i915_selftest@live_evict.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/fi-bsw-kefka/igt@i915_selftest@live_evict.html

  * igt@i915_selftest@live_hangcheck:
- fi-icl-u2:  [PASS][3] -> [INCOMPLETE][4] ([fdo#107713] / 
[fdo#108569])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/fi-icl-u2/igt@i915_selftest@live_hangcheck.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/fi-icl-u2/igt@i915_selftest@live_hangcheck.html
- fi-skl-iommu:   [PASS][5] -> [INCOMPLETE][6] ([fdo#108602] / 
[fdo#108744])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/fi-skl-iommu/igt@i915_selftest@live_hangcheck.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/fi-skl-iommu/igt@i915_selftest@live_hangcheck.html

  
 Possible fixes 

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

  
 Warnings 

  * igt@i915_selftest@live_hangcheck:
- fi-apl-guc: [DMESG-FAIL][9] ([fdo#110620]) -> [INCOMPLETE][10] 
([fdo#103927] / [fdo#110624])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/fi-apl-guc/igt@i915_selftest@live_hangcheck.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/fi-apl-guc/igt@i915_selftest@live_hangcheck.html

  * igt@runner@aborted:
- fi-apl-guc: [FAIL][11] ([fdo#110622]) -> [FAIL][12] ([fdo#110624])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/fi-apl-guc/igt@run...@aborted.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/fi-apl-guc/igt@run...@aborted.html

  
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#107709]: https://bugs.freedesktop.org/show_bug.cgi?id=107709
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#108602]: https://bugs.freedesktop.org/show_bug.cgi?id=108602
  [fdo#108744]: https://bugs.freedesktop.org/show_bug.cgi?id=108744
  [fdo#109485]: https://bugs.freedesktop.org/show_bug.cgi?id=109485
  [fdo#110620]: https://bugs.freedesktop.org/show_bug.cgi?id=110620
  [fdo#110622]: https://bugs.freedesktop.org/show_bug.cgi?id=110622
  [fdo#110624]: https://bugs.freedesktop.org/show_bug.cgi?id=110624


Participating hosts (52 -> 46)
--

  Additional (1): fi-pnv-d510 
  Missing(7): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks 
fi-bsw-cyan fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_6089 -> Patchwork_13024

  CI_DRM_6089: c7a46913f77868d15ade90846526d7e4cb910637 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4991: 61dd8eec659062eac67823ccd9f2189c3aa36201 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_13024: 8fbf6ed5c78a4698353e85b9084616feacd6bea2 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

8fbf6ed5c78a CI: Revert "net/sch_generic: Shut up noise"

== Logs ==

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

Re: [Intel-gfx] [v10 01/12] drm: Add HDR source metadata property

2019-05-16 Thread Shankar, Uma


>-Original Message-
>From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>Sent: Thursday, May 16, 2019 12:40 AM
>To: Shankar, Uma 
>Cc: intel-gfx@lists.freedesktop.org; dri-de...@lists.freedesktop.org;
>maarten.lankho...@linux.intel.com; Sharma, Shashank
>; emil.l.veli...@gmail.com; brian.star...@arm.com;
>dcasta...@chromium.org; seanp...@chromium.org; Roper, Matthew D
>; jo...@kwiboo.se
>Subject: Re: [v10 01/12] drm: Add HDR source metadata property
>
>On Tue, May 14, 2019 at 11:06:23PM +0530, Uma Shankar wrote:
>> This patch adds a blob property to get HDR metadata information from
>> userspace. This will be send as part of AVI Infoframe to panel.
>>
>> It also implements get() and set() functions for HDR output metadata
>> property.The blob data is received from userspace and saved in
>> connector state, the same is returned as blob in get property call to
>> userspace.
>>
>> v2: Rebase and modified the metadata structure elements as per Ville's
>> POC changes.
>>
>> v3: No Change
>>
>> v4: Addressed Shashank's review comments
>>
>> v5: Rebase.
>>
>> v6: Addressed Brian Starkey's review comments, defined new structure
>> with header for dynamic metadata scalability.
>> Merge get/set property functions for metadata in this patch.
>>
>> v7: Addressed Jonas Karlman review comments and defined separate
>> structure for infoframe to better align with CTA 861.G spec. Added
>> Shashank's RB.
>>
>> v8: Addressed Ville's review comments. Moved sink metadata structure
>> out of uapi headers as suggested by Jonas Karlman.
>>
>> v9: Rebase and addressed Jonas Karlman review comments.
>>
>> Signed-off-by: Uma Shankar 
>> Reviewed-by: Shashank Sharma 
>> ---
>>  drivers/gpu/drm/drm_atomic.c  |  2 ++
>>  drivers/gpu/drm/drm_atomic_uapi.c | 13 +
>>  drivers/gpu/drm/drm_connector.c   |  6 ++
>>  include/drm/drm_connector.h   | 11 +++
>>  include/drm/drm_mode_config.h |  7 +++
>>  include/linux/hdmi.h  | 26 ++
>>  include/uapi/drm/drm_mode.h   | 23 +++
>>  7 files changed, 88 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/drm_atomic.c
>> b/drivers/gpu/drm/drm_atomic.c index f4924cb..0d27195 100644
>> --- a/drivers/gpu/drm/drm_atomic.c
>> +++ b/drivers/gpu/drm/drm_atomic.c
>> @@ -925,6 +925,8 @@ static void
>> drm_atomic_connector_print_state(struct drm_printer *p,
>>
>>  drm_printf(p, "connector[%u]: %s\n", connector->base.id, connector-
>>name);
>>  drm_printf(p, "\tcrtc=%s\n", state->crtc ? state->crtc->name :
>> "(null)");
>> +drm_printf(p, "\thdr_metadata_changed=%d\n",
>> +   state->hdr_metadata_changed);
>>
>>  if (connector->connector_type == DRM_MODE_CONNECTOR_WRITEBACK)
>>  if (state->writeback_job && state->writeback_job->fb) diff --git
>> a/drivers/gpu/drm/drm_atomic_uapi.c
>> b/drivers/gpu/drm/drm_atomic_uapi.c
>> index 4131e66..4aa82c91 100644
>> --- a/drivers/gpu/drm/drm_atomic_uapi.c
>> +++ b/drivers/gpu/drm/drm_atomic_uapi.c
>> @@ -676,6 +676,8 @@ static int
>> drm_atomic_connector_set_property(struct drm_connector *connector,  {
>>  struct drm_device *dev = connector->dev;
>>  struct drm_mode_config *config = &dev->mode_config;
>> +bool replaced = false;
>> +int ret;
>>
>>  if (property == config->prop_crtc_id) {
>>  struct drm_crtc *crtc = drm_crtc_find(dev, file_priv, val); @@
>> -726,6 +728,14 @@ static int drm_atomic_connector_set_property(struct
>drm_connector *connector,
>>   */
>>  if (state->link_status != DRM_LINK_STATUS_GOOD)
>>  state->link_status = val;
>> +} else if (property == config->hdr_output_metadata_property) {
>> +ret = drm_atomic_replace_property_blob_from_id(dev,
>> +&state->hdr_output_metadata,
>> +val,
>> +-1, sizeof(struct hdr_output_metadata),
>
>Those function arguments are nonsesne for a blob that isn't an array.

Hmm, just to clarify - Since this is a fixed struct being passed. We should make
ret = drm_atomic_replace_property_blob_from_id(dev,
&state->hdr_output_metadata,
val,
sizeof(struct hdr_output_metadata), -1,
&replaced);

Basically have check for expected_size rather expected_elem_size.
Hope this is what you meant.

>> +state->hdr_metadata_changed |= replaced;
>> +return ret;
>>  } else if (property == config->aspect_ratio_property) {
>>  state->picture_aspect_ratio = val;
>>  } else if (property == config->content_type_property) { @@ -814,6
>> +824,9 @@ static int drm_atomic_connector_set_property(struct drm_connector
>*connector,
>>  *val = state->colorspace;
>>  } else if (property == connector->scaling_mode_property) {
>>  *val = state->sc

Re: [Intel-gfx] [v10 04/12] drm: Enable HDR infoframe support

2019-05-16 Thread Shankar, Uma


>-Original Message-
>From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>Sent: Thursday, May 16, 2019 12:45 AM
>To: Shankar, Uma 
>Cc: intel-gfx@lists.freedesktop.org; dri-de...@lists.freedesktop.org;
>maarten.lankho...@linux.intel.com; Sharma, Shashank
>; emil.l.veli...@gmail.com; brian.star...@arm.com;
>dcasta...@chromium.org; seanp...@chromium.org; Roper, Matthew D
>; jo...@kwiboo.se
>Subject: Re: [v10 04/12] drm: Enable HDR infoframe support
>
>On Tue, May 14, 2019 at 11:06:26PM +0530, Uma Shankar wrote:
>> Enable Dynamic Range and Mastering Infoframe for HDR content, which is
>> defined in CEA 861.3 spec.
>>
>> The metadata will be computed based on blending policy in userspace
>> compositors and passed as a connector property blob to driver. The
>> same will be sent as infoframe to panel which support HDR.
>>
>> Added the const version of infoframe for DRM metadata for HDR.
>>
>> v2: Rebase and added Ville's POC changes.
>>
>> v3: No Change
>>
>> v4: Addressed Shashank's review comments and merged the patch making
>> drm infoframe function arguments as constant.
>>
>> v5: Rebase
>>
>> v6: Fixed checkpatch warnings with --strict option. Addressed
>> Shashank's review comments and added his RB.
>>
>> v7: Addressed Brian Starkey's review comments. Merged 2 patches into
>> one.
>>
>> v8: Addressed Jonas Karlman review comments.
>>
>> v9: Addressed Jonas Karlman review comments.
>>
>> Signed-off-by: Uma Shankar 
>> Signed-off-by: Ville Syrjälä 
>> Reviewed-by: Shashank Sharma 
>> ---
>>  drivers/gpu/drm/drm_edid.c |  43 +++
>>  drivers/video/hdmi.c   | 187
>+
>>  include/drm/drm_edid.h |   5 ++
>>  include/linux/hdmi.h   |  27 +++
>>  4 files changed, 262 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
>> index 2e0b5be..73b7905 100644
>> --- a/drivers/gpu/drm/drm_edid.c
>> +++ b/drivers/gpu/drm/drm_edid.c
>> @@ -4903,6 +4903,49 @@ static bool is_hdmi2_sink(struct drm_connector
>> *connector)  }
>>
>>  /**
>> + * drm_hdmi_infoframe_set_hdr_metadata() - fill an HDMI DRM infoframe with
>> + * HDR metadata from userspace
>> + * @frame: HDMI DRM infoframe
>> + * @hdr_metadata: hdr_source_metadata info from userspace
>> + *
>> + * Return: 0 on success or a negative error code on failure.
>> + */
>> +int
>> +drm_hdmi_infoframe_set_hdr_metadata(struct hdmi_drm_infoframe *frame,
>> +const struct hdr_output_metadata
>*hdr_metadata) {
>> +int err;
>> +
>> +if (!frame || !hdr_metadata)
>> +return -EINVAL;
>> +
>> +err = hdmi_drm_infoframe_init(frame);
>> +if (err < 0)
>> +return err;
>> +
>> +DRM_DEBUG_KMS("type = %x\n", frame->type);
>
>This debug seems pointless.

Ok, will drop this.

>> +
>> +frame->eotf = hdr_metadata->hdmi_metadata_type1.eotf;
>> +frame->metadata_type =
>> +hdr_metadata->hdmi_metadata_type1.metadata_type;
>> +
>> +memcpy(&frame->display_primaries,
>> +   &hdr_metadata->hdmi_metadata_type1.display_primaries, 12);
>
>sizeof() can be used here.

Sure.

>Could also slap on a BUILD_BUG_ON() to make sure both are the same size.

Ok, will addd it.

>
>> +
>> +memcpy(&frame->white_point,
>> +   &hdr_metadata->hdmi_metadata_type1.white_point, 4);
>
>ditto.

Sure.

>> +
>> +frame->max_display_mastering_luminance =
>> +hdr_metadata-
>>hdmi_metadata_type1.max_display_mastering_luminance;
>> +frame->min_display_mastering_luminance =
>> +hdr_metadata-
>>hdmi_metadata_type1.min_display_mastering_luminance;
>> +frame->max_fall = hdr_metadata->hdmi_metadata_type1.max_fall;
>> +frame->max_cll = hdr_metadata->hdmi_metadata_type1.max_cll;
>> +
>> +return 0;
>> +}
>> +EXPORT_SYMBOL(drm_hdmi_infoframe_set_hdr_metadata);
>> +
>> +/**
>>   * drm_hdmi_avi_infoframe_from_display_mode() - fill an HDMI AVI infoframe 
>> with
>>   *  data from a DRM display mode
>>   * @frame: HDMI AVI infoframe
>> diff --git a/drivers/video/hdmi.c b/drivers/video/hdmi.c index
>> 799ae49..c5ecd16 100644
>> --- a/drivers/video/hdmi.c
>> +++ b/drivers/video/hdmi.c
>> @@ -650,6 +650,147 @@ ssize_t hdmi_vendor_infoframe_pack(struct
>hdmi_vendor_infoframe *frame,
>>  return 0;
>>  }
>>
>> +/**
>> + * hdmi_drm_infoframe_init() - initialize an HDMI Dynaminc Range and
>> + * mastering infoframe
>> + * @frame: HDMI DRM infoframe
>> + *
>> + * Returns 0 on success or a negative error code on failure.
>> + */
>> +int hdmi_drm_infoframe_init(struct hdmi_drm_infoframe *frame) {
>> +memset(frame, 0, sizeof(*frame));
>> +
>> +frame->type = HDMI_INFOFRAME_TYPE_DRM;
>> +frame->version = 1;
>> +frame->length = HDMI_DRM_INFOFRAME_SIZE;
>> +
>> +return 0;
>> +}
>> +EXPORT_SYMBOL(hdmi_drm_infoframe_init);
>> +
>> +static int hdmi_drm_infoframe_check_only(const struct
>> +hdmi_drm_i

Re: [Intel-gfx] [v10 12/12] drm/i915: Add state readout for DRM infoframe

2019-05-16 Thread Shankar, Uma


>-Original Message-
>From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>Sent: Thursday, May 16, 2019 1:00 AM
>To: Shankar, Uma 
>Cc: intel-gfx@lists.freedesktop.org; dri-de...@lists.freedesktop.org;
>maarten.lankho...@linux.intel.com; Sharma, Shashank
>; emil.l.veli...@gmail.com; brian.star...@arm.com;
>dcasta...@chromium.org; seanp...@chromium.org; Roper, Matthew D
>; jo...@kwiboo.se
>Subject: Re: [v10 12/12] drm/i915: Add state readout for DRM infoframe
>
>On Tue, May 14, 2019 at 11:06:34PM +0530, Uma Shankar wrote:
>> Added state readout for DRM infoframe and enabled state validation for
>> DRM infoframe.
>>
>> v2: Addressed Ville's review comments and dropped the unused drm
>> infoframe read at intel_hdmi_init.
>>
>> Signed-off-by: Uma Shankar 
>> ---
>>  drivers/gpu/drm/i915/intel_ddi.c | 4 
>>  drivers/gpu/drm/i915/intel_display.c | 1 +
>>  2 files changed, 5 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_ddi.c
>> b/drivers/gpu/drm/i915/intel_ddi.c
>> index 0af47f3..f574315 100644
>> --- a/drivers/gpu/drm/i915/intel_ddi.c
>> +++ b/drivers/gpu/drm/i915/intel_ddi.c
>> @@ -3834,6 +3834,10 @@ void intel_ddi_get_config(struct intel_encoder
>*encoder,
>>  intel_read_infoframe(encoder, pipe_config,
>>   HDMI_INFOFRAME_TYPE_VENDOR,
>>   &pipe_config->infoframes.hdmi);
>> +if ((INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)))
>
>Silly extra parens. Actually, I think the check can be removed entirely since
>intel_read_infoframe() also checks infoframes.enable.

Hmm yeah, will drop this.

>> +intel_read_infoframe(encoder, pipe_config,
>> + HDMI_INFOFRAME_TYPE_DRM,
>> + &pipe_config->infoframes.drm);
>>  }
>>
>>  static enum intel_output_type
>> diff --git a/drivers/gpu/drm/i915/intel_display.c
>> b/drivers/gpu/drm/i915/intel_display.c
>> index e35ba8d..c89b214 100644
>> --- a/drivers/gpu/drm/i915/intel_display.c
>> +++ b/drivers/gpu/drm/i915/intel_display.c
>> @@ -12274,6 +12274,7 @@ static bool fastboot_enabled(struct drm_i915_private
>*dev_priv)
>>  PIPE_CONF_CHECK_INFOFRAME(avi);
>>  PIPE_CONF_CHECK_INFOFRAME(spd);
>>  PIPE_CONF_CHECK_INFOFRAME(hdmi);
>> +PIPE_CONF_CHECK_INFOFRAME(drm);
>>
>>  #undef PIPE_CONF_CHECK_X
>>  #undef PIPE_CONF_CHECK_I
>> --
>> 1.9.1
>
>--
>Ville Syrjälä
>Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [v10 03/12] drm: Parse HDR metadata info from EDID

2019-05-16 Thread Shankar, Uma


>-Original Message-
>From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>Sent: Thursday, May 16, 2019 1:06 AM
>To: Shankar, Uma 
>Cc: intel-gfx@lists.freedesktop.org; dri-de...@lists.freedesktop.org;
>maarten.lankho...@linux.intel.com; Sharma, Shashank
>; emil.l.veli...@gmail.com; brian.star...@arm.com;
>dcasta...@chromium.org; seanp...@chromium.org; Roper, Matthew D
>; jo...@kwiboo.se
>Subject: Re: [v10 03/12] drm: Parse HDR metadata info from EDID
>
>On Tue, May 14, 2019 at 11:06:25PM +0530, Uma Shankar wrote:
>> HDR metadata block is introduced in CEA-861.3 spec.
>> Parsing the same to get the panel's HDR metadata.
>>
>> v2: Rebase and added Ville's POC changes to the patch.
>>
>> v3: No Change
>>
>> v4: Addressed Shashank's review comments
>>
>> v5: Addressed Shashank's comment and added his RB.
>>
>> v6: Addressed Jonas Karlman review comments.
>>
>> v7: Adressed Ville's review comments and fixed the issue with length
>> handling.
>>
>> Signed-off-by: Uma Shankar 
>> Reviewed-by: Shashank Sharma 
>> ---
>>  drivers/gpu/drm/drm_edid.c | 49
>> ++
>>  1 file changed, 49 insertions(+)
>>
>> diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
>> index 852bdd8..2e0b5be 100644
>> --- a/drivers/gpu/drm/drm_edid.c
>> +++ b/drivers/gpu/drm/drm_edid.c
>> @@ -2852,6 +2852,7 @@ static int drm_cvt_modes(struct drm_connector
>*connector,
>>  #define VIDEO_BLOCK 0x02
>>  #define VENDOR_BLOCK0x03
>>  #define SPEAKER_BLOCK   0x04
>> +#define HDR_STATIC_METADATA_BLOCK   0x6
>>  #define USE_EXTENDED_TAG 0x07
>>  #define EXT_VIDEO_CAPABILITY_BLOCK 0x00
>>  #define EXT_VIDEO_DATA_BLOCK_4200x0E
>> @@ -3834,6 +3835,52 @@ static void fixup_detailed_cea_mode_clock(struct
>drm_display_mode *mode)
>>  mode->clock = clock;
>>  }
>>
>> +static bool cea_db_is_hdmi_hdr_metadata_block(const u8 *db) {
>> +if (cea_db_tag(db) != USE_EXTENDED_TAG)
>> +return false;
>> +
>> +if (db[1] != HDR_STATIC_METADATA_BLOCK)
>> +return false;
>> +
>> +return true;
>> +}
>> +
>> +static uint8_t eotf_supported(const u8 *edid_ext) {
>> +return edid_ext[2] &
>> +(BIT(HDMI_EOTF_TRADITIONAL_GAMMA_SDR) |
>> + BIT(HDMI_EOTF_TRADITIONAL_GAMMA_HDR) |
>> + BIT(HDMI_EOTF_SMPTE_ST2084));
>> +}
>> +
>> +static uint8_t hdr_metadata_type(const u8 *edid_ext) {
>> +return edid_ext[3] &
>> +BIT(HDMI_STATIC_METADATA_TYPE1);
>> +}
>> +
>> +static void
>> +drm_parse_hdr_metadata_block(struct drm_connector *connector, const
>> +u8 *db) {
>> +u16 len;
>> +
>> +len = cea_db_payload_len(db);
>> +if (len >= 3) {
>
>I believe in other cases we've put the length check for the mandatory bytes 
>into the
>cea_db_is_foo() function. Would be good to follow the path laid out by 
>existing code
>here too.

Ok got it. Will update this.

>> +connector->hdr_sink_metadata.hdmi_type1.eotf =
>> +eotf_supported(db);
>> +connector->hdr_sink_metadata.hdmi_type1.metadata_type =
>> +hdr_metadata_type(db);
>> +}
>> +
>> +if (len >= 4)
>> +connector->hdr_sink_metadata.hdmi_type1.max_cll = db[4];
>> +if (len >= 5)
>> +connector->hdr_sink_metadata.hdmi_type1.max_fall = db[5];
>> +if (len >= 6)
>> +connector->hdr_sink_metadata.hdmi_type1.min_cll = db[6]; }
>> +
>>  static void
>>  drm_parse_hdmi_vsdb_audio(struct drm_connector *connector, const u8
>> *db)  { @@ -4461,6 +4508,8 @@ static void drm_parse_cea_ext(struct
>> drm_connector *connector,
>>  drm_parse_y420cmdb_bitmap(connector, db);
>>  if (cea_db_is_vcdb(db))
>>  drm_parse_vcdb(connector, db);
>> +if (cea_db_is_hdmi_hdr_metadata_block(db))
>> +drm_parse_hdr_metadata_block(connector, db);
>>  }
>>  }
>>
>> --
>> 1.9.1
>
>--
>Ville Syrjälä
>Intel
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for Add HDR Metadata Parsing and handling in DRM layer (rev10)

2019-05-16 Thread Shankar, Uma


>-Original Message-
>From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>Sent: Thursday, May 16, 2019 1:02 AM
>To: Shankar, Uma 
>Cc: intel-gfx@lists.freedesktop.org
>Subject: Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for Add HDR Metadata Parsing and 
>handling
>in DRM layer (rev10)
>
>On Wed, May 15, 2019 at 08:59:37AM +, Shankar, Uma wrote:
>>
>>
>> >-Original Message-
>> >From: Patchwork [mailto:patchw...@emeril.freedesktop.org]
>> >Sent: Wednesday, May 15, 2019 6:54 AM
>> >To: Shankar, Uma 
>> >Cc: intel-gfx@lists.freedesktop.org
>> >Subject: ✗ Fi.CI.IGT: failure for Add HDR Metadata Parsing and
>> >handling in DRM layer
>> >(rev10)
>> >
>> >== Series Details ==
>> >
>> >Series: Add HDR Metadata Parsing and handling in DRM layer (rev10)
>> >URL   : https://patchwork.freedesktop.org/series/25091/
>> >State : failure
>> >
>> >== Summary ==
>> >
>> >CI Bug Log - changes from CI_DRM_6081_full -> Patchwork_13017_full
>> >
>> >
>> >Summary
>> >---
>> >
>> >  **FAILURE**
>> >
>> >  Serious unknown changes coming with Patchwork_13017_full absolutely
>> > need to be  verified manually.
>> >
>> >  If you think the reported changes have nothing to do with the
>> > changes  introduced in Patchwork_13017_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_13017_full:
>> >
>> >### IGT changes ###
>> >
>> > Possible regressions 
>> >
>> >  * igt@gem_exec_suspend@basic-s3:
>> >- shard-iclb: [PASS][1] -> [SKIP][2] +43 similar issues
>> >   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6081/shard-
>> >iclb6/igt@gem_exec_susp...@basic-s3.html
>> >   [2]:
>> >https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13017/shard-
>> >iclb5/igt@gem_exec_susp...@basic-s3.html
>> >
>> >  * igt@kms_prop_blob@invalid-set-prop-any:
>> >- shard-iclb: [PASS][3] -> [FAIL][4]
>> >   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6081/shard-
>> >iclb6/igt@kms_prop_b...@invalid-set-prop-any.html
>> >   [4]:
>> >https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13017/shard-
>> >iclb5/igt@kms_prop_b...@invalid-set-prop-any.html
>> >
>>
>> Hi Martin,
>> These issues are unrelated to the changes made in this series. Can you
>> please have a look and confirm.
>
>The kms_prop fails at least are real. Probably due to the bogus function 
>arguements
>to the replace_blob() thing I pointed out.

The CI IGT have a clean PASS now. Will anyways update the function arguments 
and make
it consistent.

Regards,
Uma Shankar

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

[Intel-gfx] ✓ Fi.CI.IGT: success for Reg: igt@kms_pipe_crc_basic@* CRC mismatch test failures

2019-05-16 Thread Patchwork
== Series Details ==

Series: Reg: igt@kms_pipe_crc_basic@* CRC mismatch test failures
URL   : https://patchwork.freedesktop.org/series/60697/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6089_full -> Patchwork_13023_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_tiled_swapping@non-threaded:
- shard-hsw:  [PASS][1] -> [FAIL][2] ([fdo#108686])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-hsw7/igt@gem_tiled_swapp...@non-threaded.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13023/shard-hsw4/igt@gem_tiled_swapp...@non-threaded.html

  * igt@i915_pm_rpm@debugfs-forcewake-user:
- shard-skl:  [PASS][3] -> [INCOMPLETE][4] ([fdo#107807])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-skl2/igt@i915_pm_...@debugfs-forcewake-user.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13023/shard-skl4/igt@i915_pm_...@debugfs-forcewake-user.html

  * igt@i915_suspend@debugfs-reader:
- shard-apl:  [PASS][5] -> [DMESG-WARN][6] ([fdo#108566]) +2 
similar issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-apl7/igt@i915_susp...@debugfs-reader.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13023/shard-apl5/igt@i915_susp...@debugfs-reader.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-atomic:
- shard-hsw:  [PASS][7] -> [FAIL][8] ([fdo#105767])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-hsw7/igt@kms_cursor_leg...@2x-long-cursor-vs-flip-atomic.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13023/shard-hsw1/igt@kms_cursor_leg...@2x-long-cursor-vs-flip-atomic.html

  * igt@kms_flip@plain-flip-fb-recreate-interruptible:
- shard-skl:  [PASS][9] -> [FAIL][10] ([fdo#100368])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-skl4/igt@kms_f...@plain-flip-fb-recreate-interruptible.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13023/shard-skl1/igt@kms_f...@plain-flip-fb-recreate-interruptible.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite:
- shard-iclb: [PASS][11] -> [FAIL][12] ([fdo#103167]) +8 similar 
issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-iclb6/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13023/shard-iclb6/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-shrfb-draw-pwrite.html

  * igt@kms_plane_alpha_blend@pipe-b-coverage-7efc:
- shard-skl:  [PASS][13] -> [FAIL][14] ([fdo#108145] / [fdo#110403])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-skl2/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13023/shard-skl5/igt@kms_plane_alpha_bl...@pipe-b-coverage-7efc.html

  * igt@kms_psr@no_drrs:
- shard-iclb: [PASS][15] -> [FAIL][16] ([fdo#108341])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-iclb4/igt@kms_psr@no_drrs.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13023/shard-iclb1/igt@kms_psr@no_drrs.html

  * igt@kms_psr@psr2_sprite_plane_move:
- shard-iclb: [PASS][17] -> [SKIP][18] ([fdo#109441]) +3 similar 
issues
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13023/shard-iclb4/igt@kms_psr@psr2_sprite_plane_move.html

  * igt@perf@oa-exponents:
- shard-glk:  [PASS][19] -> [FAIL][20] ([fdo#105483])
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-glk2/igt@p...@oa-exponents.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13023/shard-glk8/igt@p...@oa-exponents.html

  * igt@perf_pmu@rc6:
- shard-kbl:  [PASS][21] -> [SKIP][22] ([fdo#109271])
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-kbl6/igt@perf_...@rc6.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13023/shard-kbl2/igt@perf_...@rc6.html

  
 Possible fixes 

  * igt@i915_pm_rpm@gem-execbuf:
- shard-apl:  [INCOMPLETE][23] ([fdo#103927]) -> [PASS][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-apl6/igt@i915_pm_...@gem-execbuf.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13023/shard-apl3/igt@i915_pm_...@gem-execbuf.html

  * igt@i915_pm_rpm@sysfs-read:
- shard-skl:  [INCOMPLETE][25] ([fdo#107807]) -> [PASS][26]
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-skl7/igt@i915_pm_...@sysfs-read.html
   [26]: 
https://i

Re: [Intel-gfx] [PATCH v7 09/11] drm: uevent for connector status change

2019-05-16 Thread Pekka Paalanen
On Wed, 15 May 2019 10:24:49 +0200
Daniel Vetter  wrote:

> On Wed, May 15, 2019 at 10:37:31AM +0300, Pekka Paalanen wrote:
> > On Tue, 14 May 2019 16:34:01 +0200
> > Daniel Vetter  wrote:
> >   
> > > On Tue, May 14, 2019 at 3:36 PM Pekka Paalanen  
> > > wrote:  
> > > >
> > > > On Tue, 14 May 2019 13:02:09 +0200
> > > > Daniel Vetter  wrote:
> > > >
> > > > > On Tue, May 14, 2019 at 10:18 AM Ser, Simon  
> > > > > wrote:
> > > > > >
> > > > > > On Tue, 2019-05-14 at 11:02 +0300, Pekka Paalanen wrote:
> > 
> > ...
> >   
> > > > > > > Hi Daniel,
> > > > > > >
> > > > > > > just to clarify the first case, specific to one very particular
> > > > > > > property:
> > > > > > >
> > > > > > > With HDCP, there is a property that may change dynamically at 
> > > > > > > runtime
> > > > > > > (the undesired/desired/enabled tristate). Userspace must be 
> > > > > > > notified
> > > > > > > when it changes, I do not want userspace have to poll that 
> > > > > > > property
> > > > > > > with a timer.
> > > > > > >
> > > > > > > When that property alone changes, and userspace is prepared to 
> > > > > > > handle
> > > > > > > that property changing alone, it must not trigger a reprobe of the
> > > > > > > connector. There is no reason to reprobe at that point AFAIU.
> > > > > > >
> > > > > > > How do you ensure that userspace can avoid triggering a reprobe 
> > > > > > > with the
> > > > > > > epoch approach or with any alternate uevent design?
> > > > > > >
> > > > > > > We need an event to userspace that indicates that re-reading the
> > > > > > > properties is enough and reprobe of the connector is not 
> > > > > > > necessary.
> > > > > > > This is complementary to indicating to userspace that only some
> > > > > > > connectors need to be reprobed instead of everything.
> > > > > >
> > > > > > Can't you use the PROPERTY hint? If PROPERTY is the HDCP one, skip 
> > > > > > the
> > > > > > reprobing. Would that work?
> > > >
> > > > Hi,
> > > >
> > > > yes, that would work, if it was acceptable to DRM upstream. The replies
> > > > to Paul seemed to be going south so fast that I thought we wouldn't get
> > > > any new uevent fields in favour of "epoch counters".
> > > >
> > > > > Yes that's the idea, depending upon which property you get you know
> > > > > it's a sink change (needs full reprobe) or something else like hdcp
> > > > > state machinery update.
> > > >
> > > > Right.
> > > >
> > > > > Wrt avoiding the full reprobe for sink changes: I think we should
> > > > > indeed decouple that from the per-connector event for sink changes.
> > > > > That along is a good win already, since you know for which connector
> > > > > you need to call drmGetConnector (which forces the reprobe). It would
> > > > > be nice to only call drmGetConnectorCurrent (avoids the reprobe), but
> > > > > historically speaking every time we tried to rely on this we ended up
> > > > > regretting things.
> > > >
> > > > What changed? This sounds very much what Paul suggested. Looking at it
> > > > from userspace side:
> > > 
> > > This sounds solid, some refinements below:
> > >   
> > > > HOTPLUG=1 CONNECTOR=xx PROPERTY=yy
> > > >
> > > > - If yy is "Content Protection", no need to drmModeGetConnector(), just
> > > >   re-get the connector properties.
> > > >
> > > > - Kernel probably shouldn't bother sending this for properties where
> > > >   re-probe could be necessary, and send the below instead.
> > > 
> > > 
> > > I think we should assert that the kernel can get the new property
> > > values using drmModeGetConnectorCurrent for this case, i.e. the kernel
> > > does not expect a full reprobe. I.e. upgrade your idea from "should"
> > > to "must"  
> > 
> > Hi Daniel,
> > 
> > ok, that's good.
> >   
> > > Furthermore different property can indicate different kind of updates,
> > > e.g. hdcp vs general sink change vs. whatever else might come in the
> > > future.  
> > 
> > What do you mean by different kinds of updates?  
> 
> Atm we're discussing two:
> 
> - "Content Protection"
> - "sink changed, but you don't need to reprobe" this would be quite a bit
>   a catch all from the output detection. Paul thinks differently, but I'm
>   not sold on splitting this up more, at least not right now. This would
>   include connector status (and related things returned by drmGetConnector
>   which currently aren't a property), EDID, the mst path id, that kind of
>   stuff.
> 
> Ime once we have 2, there's more bound to come :-)

Hi Daniel,

I don't understand what the "sink changed" thing could be, but sure,
there can be more.

> > Btw. I started thinking, maybe we should completely leave out the "If
> > yy is "Content Protection"" and require the kernel to guarantee, that
> > if PROPERTY is set, then drmModeGetConnector() (probing) must not be
> > necessary based on this event alone.
> > 
> > Writing it down again:
> > 
> > HOTPLUG=1 CONNECTOR=xx PROPERTY=yy
> > 
> > - yy denotes which connector xx pro

Re: [Intel-gfx] [PATCH 1/1] drm/i915: skip the second CRC even for GEN 7 GPUs

2019-05-16 Thread Jani Nikula
On Wed, 15 May 2019, Harish Chegondi  wrote:
> display_pipe_crc_irq_handler() skips the first CRC for all GPUs and the
> second CRC for GEN8+ GPUs. The second CRC is invalid even for BYT which
> is a GEN7 GPU. So, skip the second CRC even for GEN7 GPUs.
>
> Cc: Jani Nikula 
> Cc: Tomi Sarvela 
> Cc: Petri Latvala 
> Cc: Ville Syrjälä 
> Cc: Maarten Lankhorst 
> Signed-off-by: Harish Chegondi 
> References: https://bugs.freedesktop.org/show_bug.cgi?id=103191

s/References:/Bugzilla:/

Acked-by: Jani Nikula 


> ---
>  drivers/gpu/drm/i915/i915_irq.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 233211fde0ea..3809e9f7fae2 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1775,11 +1775,11 @@ static void display_pipe_crc_irq_handler(struct 
> drm_i915_private *dev_priv,
>* bonkers. So let's just wait for the next vblank and read
>* out the buggy result.
>*
> -  * On GEN8+ sometimes the second CRC is bonkers as well, so
> +  * On GEN7+ sometimes the second CRC is bonkers as well, so
>* don't trust that one either.
>*/
>   if (pipe_crc->skipped <= 0 ||
> - (INTEL_GEN(dev_priv) >= 8 && pipe_crc->skipped == 1)) {
> + (INTEL_GEN(dev_priv) >= 7 && pipe_crc->skipped == 1)) {
>   pipe_crc->skipped++;
>   spin_unlock(&pipe_crc->lock);
>   return;

-- 
Jani Nikula, Intel Open Source Graphics Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH i-g-t 05/16] i915/gem_ctx_create: Basic checks for constructor properties

2019-05-16 Thread Tvrtko Ursulin


On 15/05/2019 20:05, Chris Wilson wrote:

Quoting Tvrtko Ursulin (2019-05-14 11:15:12)


On 08/05/2019 11:09, Chris Wilson wrote:

Check that the extended create interface accepts setparam.

Signed-off-by: Chris Wilson 
---
   tests/i915/gem_ctx_create.c | 225 ++--
   1 file changed, 213 insertions(+), 12 deletions(-)

diff --git a/tests/i915/gem_ctx_create.c b/tests/i915/gem_ctx_create.c
index a664070db..9b4fddbe7 100644
--- a/tests/i915/gem_ctx_create.c
+++ b/tests/i915/gem_ctx_create.c
@@ -33,6 +33,7 @@
   #include 
   
   #include "igt_rand.h"

+#include "sw_sync.h"
   
   #define LOCAL_I915_EXEC_BSD_SHIFT  (13)

   #define LOCAL_I915_EXEC_BSD_MASK   (3 << LOCAL_I915_EXEC_BSD_SHIFT)
@@ -45,12 +46,33 @@ static unsigned all_nengine;
   static unsigned ppgtt_engines[16];
   static unsigned ppgtt_nengine;
   
-static int __gem_context_create_local(int fd, struct drm_i915_gem_context_create *arg)

+static int create_ioctl(int fd, struct drm_i915_gem_context_create *arg)
   {
- int ret = 0;
- if (drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, arg))
- ret = -errno;
- return ret;
+ int err;
+
+ err = 0;
+ if (igt_ioctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, arg)) {
+ err = -errno;
+ igt_assert(err);
+ }
+
+ errno = 0;
+ return err;
+}
+
+static int create_ext_ioctl(int i915,
+ struct drm_i915_gem_context_create_ext *arg)
+{
+ int err;
+
+ err = 0;
+ if (igt_ioctl(i915, DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, arg)) {
+ err = -errno;
+ igt_assume(err);
+ }
+
+ errno = 0;
+ return err;
   }
   
   static double elapsed(const struct timespec *start,

@@ -308,6 +330,187 @@ static void maximum(int fd, int ncpus, unsigned mode)
   free(contexts);
   }
   
+static void basic_ext_param(int i915)

+{
+ struct drm_i915_gem_context_create_ext_setparam ext = {
+ { .name = I915_CONTEXT_CREATE_EXT_SETPARAM },
+ };
+ struct drm_i915_gem_context_create_ext create = {
+ .flags = I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS
+ };
+ struct drm_i915_gem_context_param get;
+
+ igt_require(create_ext_ioctl(i915, &create) == 0);
+ gem_context_destroy(i915, create.ctx_id);
+
+ create.extensions = -1ull;
+ igt_assert_eq(create_ext_ioctl(i915, &create), -EFAULT);
+
+ create.extensions = to_user_pointer(&ext);
+ igt_assert_eq(create_ext_ioctl(i915, &create), -EINVAL);
+
+ ext.param.param = I915_CONTEXT_PARAM_PRIORITY;
+ if (create_ext_ioctl(i915, &create) != -ENODEV) {
+ gem_context_destroy(i915, create.ctx_id);
+
+ ext.base.next_extension = -1ull;
+ igt_assert_eq(create_ext_ioctl(i915, &create), -EFAULT);
+ ext.base.next_extension = to_user_pointer(&ext);
+ igt_assert_eq(create_ext_ioctl(i915, &create), -E2BIG);
+ ext.base.next_extension = 0;
+
+ ext.param.value = 32;
+ igt_assert_eq(create_ext_ioctl(i915, &create), 0);
+
+ memset(&get, 0, sizeof(get));
+ get.ctx_id = create.ctx_id;
+ get.param = I915_CONTEXT_PARAM_PRIORITY;
+ gem_context_get_param(i915, &get);
+ igt_assert_eq(get.value, ext.param.value);
+
+ gem_context_destroy(i915, create.ctx_id);
+ }
+}
+
+static void check_single_timeline(int i915, uint32_t ctx, int num_engines)
+{
+#define RCS_TIMESTAMP (0x2000 + 0x358)
+ const int gen = intel_gen(intel_get_drm_devid(i915));
+ const int has_64bit_reloc = gen >= 8;
+ struct drm_i915_gem_exec_object2 results = { .handle = gem_create(i915, 
4096) };
+ const uint32_t bbe = MI_BATCH_BUFFER_END;
+ int timeline = sw_sync_timeline_create();
+ uint32_t last, *map;
+
+ {
+ struct drm_i915_gem_execbuffer2 execbuf = {
+ .buffers_ptr = to_user_pointer(&results),
+ .buffer_count = 1,
+ .rsvd1 = ctx,
+ };
+ gem_write(i915, results.handle, 0, &bbe, sizeof(bbe));
+ gem_execbuf(i915, &execbuf);
+ results.flags = EXEC_OBJECT_PINNED;
+ }
+
+ for (int i = 0; i < num_engines; i++) {
+ struct drm_i915_gem_exec_object2 obj[2] = {
+ results, /* write hazard lies! */
+ { .handle = gem_create(i915, 4096) },
+ };
+ struct drm_i915_gem_execbuffer2 execbuf = {
+ .buffers_ptr = to_user_pointer(obj),
+ .buffer_count = 2,
+ .rsvd1 = ctx,
+ .rsvd2 = sw_sync_timeline_create_fence(timeline, 
num_engines - i),
+ .flags = i | I915_EXEC_FENCE_IN,
+ };
+ uint64_t offset = results.offset + 4 * i;
+ uint32_t *cs;
+ int j = 0;
+
+ cs = gem_mmap__cpu(i915, obj[1].h

[Intel-gfx] ✓ Fi.CI.IGT: success for CI: Revert "net/sch_generic: Shut up noise"

2019-05-16 Thread Patchwork
== Series Details ==

Series: CI: Revert "net/sch_generic: Shut up noise"
URL   : https://patchwork.freedesktop.org/series/60699/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6089_full -> Patchwork_13024_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_isolation@vcs1-s3:
- shard-kbl:  [PASS][1] -> [DMESG-WARN][2] ([fdo#108566])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-kbl3/igt@gem_ctx_isolat...@vcs1-s3.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-kbl7/igt@gem_ctx_isolat...@vcs1-s3.html

  * igt@gem_tiled_swapping@non-threaded:
- shard-hsw:  [PASS][3] -> [FAIL][4] ([fdo#108686])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-hsw7/igt@gem_tiled_swapp...@non-threaded.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-hsw5/igt@gem_tiled_swapp...@non-threaded.html

  * igt@gem_workarounds@suspend-resume-context:
- shard-apl:  [PASS][5] -> [DMESG-WARN][6] ([fdo#108566]) +4 
similar issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-apl7/igt@gem_workarou...@suspend-resume-context.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-apl7/igt@gem_workarou...@suspend-resume-context.html

  * igt@i915_pm_rpm@dpms-lpsp:
- shard-skl:  [PASS][7] -> [INCOMPLETE][8] ([fdo#107807])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-skl10/igt@i915_pm_...@dpms-lpsp.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-skl10/igt@i915_pm_...@dpms-lpsp.html

  * igt@kms_flip_tiling@flip-x-tiled:
- shard-iclb: [PASS][9] -> [FAIL][10] ([fdo#108303])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-iclb7/igt@kms_flip_til...@flip-x-tiled.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-iclb4/igt@kms_flip_til...@flip-x-tiled.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
- shard-iclb: [PASS][11] -> [FAIL][12] ([fdo#103167]) +5 similar 
issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-iclb2/igt@kms_frontbuffer_track...@fbc-1p-primscrn-cur-indfb-draw-blt.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-iclb6/igt@kms_frontbuffer_track...@fbc-1p-primscrn-cur-indfb-draw-blt.html

  * igt@kms_psr@psr2_sprite_plane_move:
- shard-iclb: [PASS][13] -> [SKIP][14] ([fdo#109441]) +3 similar 
issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-iclb6/igt@kms_psr@psr2_sprite_plane_move.html

  * igt@kms_setmode@basic:
- shard-kbl:  [PASS][15] -> [FAIL][16] ([fdo#99912])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-kbl2/igt@kms_setm...@basic.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-kbl2/igt@kms_setm...@basic.html

  * igt@perf_pmu@rc6:
- shard-kbl:  [PASS][17] -> [SKIP][18] ([fdo#109271])
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-kbl6/igt@perf_...@rc6.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-kbl7/igt@perf_...@rc6.html

  
 Possible fixes 

  * igt@gem_ctx_isolation@bcs0-s3:
- shard-kbl:  [DMESG-WARN][19] ([fdo#108566]) -> [PASS][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-kbl7/igt@gem_ctx_isolat...@bcs0-s3.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-kbl3/igt@gem_ctx_isolat...@bcs0-s3.html

  * igt@gem_tiled_swapping@non-threaded:
- shard-iclb: [FAIL][21] ([fdo#108686]) -> [PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-iclb5/igt@gem_tiled_swapp...@non-threaded.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-iclb8/igt@gem_tiled_swapp...@non-threaded.html

  * igt@i915_pm_rpm@basic-rte:
- shard-skl:  [INCOMPLETE][23] ([fdo#107807]) -> [PASS][24] +1 
similar issue
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-skl3/igt@i915_pm_...@basic-rte.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-skl10/igt@i915_pm_...@basic-rte.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
- shard-apl:  [DMESG-WARN][25] ([fdo#108566]) -> [PASS][26] +4 
similar issues
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-apl6/igt@i915_susp...@fence-restore-tiled2untiled.html
   [26]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-apl8/igt@i915_susp...@fence-restore

Re: [Intel-gfx] [PATCH i-g-t 08/16] i915: Exercise creating context with shared GTT

2019-05-16 Thread Tvrtko Ursulin


On 15/05/2019 20:33, Chris Wilson wrote:

Quoting Tvrtko Ursulin (2019-05-15 07:37:18)


On 08/05/2019 11:09, Chris Wilson wrote:

v2: Test each shared context is its own timeline and allows request
reordering between shared contexts.

Signed-off-by: Chris Wilson 
Cc: Joonas Lahtinen 
Cc: Tvrtko Ursulin 
Cc: Mika Kuoppala 
Cc: Michal Wajdeczko 
---
   lib/i915/gem_context.c|  68 +++
   lib/i915/gem_context.h|  13 +
   tests/Makefile.sources|   1 +
   tests/i915/gem_ctx_shared.c   | 856 ++
   tests/i915/gem_exec_whisper.c |  32 +-
   tests/meson.build |   1 +
   6 files changed, 962 insertions(+), 9 deletions(-)
   create mode 100644 tests/i915/gem_ctx_shared.c

diff --git a/lib/i915/gem_context.c b/lib/i915/gem_context.c
index f94d89cb4..8fb8984d1 100644
--- a/lib/i915/gem_context.c
+++ b/lib/i915/gem_context.c
@@ -272,6 +272,74 @@ void gem_context_set_priority(int fd, uint32_t ctx_id, int 
prio)
   igt_assert_eq(__gem_context_set_priority(fd, ctx_id, prio), 0);
   }
   
+int

+__gem_context_clone(int i915,
+ uint32_t src, unsigned int share,
+ unsigned int flags,
+ uint32_t *out)
+{
+ struct drm_i915_gem_context_create_ext_clone clone = {
+ { .name = I915_CONTEXT_CREATE_EXT_CLONE },
+ .clone_id = src,
+ .flags = share,
+ };
+ struct drm_i915_gem_context_create_ext arg = {
+ .flags = flags | I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS,
+ .extensions = to_user_pointer(&clone),
+ };
+ int err = 0;
+
+ if (igt_ioctl(i915, DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT, &arg))
+ err = -errno;
+
+ *out = arg.ctx_id;
+
+ errno = 0;
+ return err;
+}
+
+static bool __gem_context_has(int i915, uint32_t share, unsigned int flags)
+{
+ uint32_t ctx;
+
+ __gem_context_clone(i915, 0, share, flags, &ctx);
+ if (ctx)
+ gem_context_destroy(i915, ctx);
+
+ errno = 0;
+ return ctx;
+}
+
+bool gem_contexts_has_shared_gtt(int i915)
+{
+ return __gem_context_has(i915, I915_CONTEXT_CLONE_VM, 0);
+}
+
+bool gem_has_queues(int i915)
+{
+ return __gem_context_has(i915,
+  I915_CONTEXT_CLONE_VM,
+  I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE);
+}
+
+uint32_t gem_context_clone(int i915,
+uint32_t src, unsigned int share,
+unsigned int flags)
+{
+ uint32_t ctx;
+
+ igt_assert_eq(__gem_context_clone(i915, src, share, flags, &ctx), 0);
+
+ return ctx;
+}
+
+uint32_t gem_queue_create(int i915)
+{
+ return gem_context_clone(i915, 0,
+  I915_CONTEXT_CLONE_VM,
+  I915_CONTEXT_CREATE_FLAGS_SINGLE_TIMELINE);
+}
+
   bool gem_context_has_engine(int fd, uint32_t ctx, uint64_t engine)
   {
   struct drm_i915_gem_exec_object2 exec = {};
diff --git a/lib/i915/gem_context.h b/lib/i915/gem_context.h
index a052714d4..8043c3401 100644
--- a/lib/i915/gem_context.h
+++ b/lib/i915/gem_context.h
@@ -29,6 +29,19 @@ int __gem_context_create(int fd, uint32_t *ctx_id);
   void gem_context_destroy(int fd, uint32_t ctx_id);
   int __gem_context_destroy(int fd, uint32_t ctx_id);
   
+int __gem_context_clone(int i915,

+ uint32_t src, unsigned int share,
+ unsigned int flags,
+ uint32_t *out);
+uint32_t gem_context_clone(int i915,
+uint32_t src, unsigned int share,
+unsigned int flags);
+
+uint32_t gem_queue_create(int i915);
+
+bool gem_contexts_has_shared_gtt(int i915);
+bool gem_has_queues(int i915);
+
   bool gem_has_contexts(int fd);
   void gem_require_contexts(int fd);
   void gem_context_require_bannable(int fd);
diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index e1b7feeb2..3552e895b 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -22,6 +22,7 @@ TESTS_progs = \
   drm_mm \
   drm_read \
   i915/gem_ctx_clone \
+ i915/gem_ctx_shared \
   i915/gem_vm_create \
   kms_3d \
   kms_addfb_basic \
diff --git a/tests/i915/gem_ctx_shared.c b/tests/i915/gem_ctx_shared.c
new file mode 100644
index 0..0076f5e9d
--- /dev/null
+++ b/tests/i915/gem_ctx_shared.c
@@ -0,0 +1,856 @@
+/*
+ * Copyright © 2017 Intel Corporation


2019


Nah, that would imply I put any thought into touching it since.


+static void exhaust_shared_gtt(int i915, unsigned int flags)
+#define EXHAUST_LRC 0x1
+{
+ i915 = gem_reopen_driver(i915);
+
+ igt_fork(pid, 1) {
+ const uint32_t bbe = MI_BATCH_BUFFER_END;
+ struct drm_i915_gem_exec_object2 obj = {
+ .handle = gem_create(i915, 4096)
+ };
+ struct drm_i915_gem_execbuffer2 execbuf = {
+ .buffers_ptr = to_user_pointer(&obj),
+ .b

Re: [Intel-gfx] [PATCH i-g-t 10/16] i915/gem_exec_whisper: Fork all-engine tests one-per-engine

2019-05-16 Thread Tvrtko Ursulin


On 15/05/2019 20:35, Chris Wilson wrote:

Quoting Tvrtko Ursulin (2019-05-14 13:57:26)


On 08/05/2019 11:09, Chris Wilson wrote:

Add a new mode for some more stress, submit the all-engines tests
simultaneously, a stream per engine.

Signed-off-by: Chris Wilson 
---
   tests/i915/gem_exec_whisper.c | 27 ++-
   1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/tests/i915/gem_exec_whisper.c b/tests/i915/gem_exec_whisper.c
index d3e0b0ba2..d5afc8119 100644
--- a/tests/i915/gem_exec_whisper.c
+++ b/tests/i915/gem_exec_whisper.c
@@ -88,6 +88,7 @@ static void verify_reloc(int fd, uint32_t handle,
   #define SYNC 0x40
   #define PRIORITY 0x80
   #define QUEUES 0x100
+#define ALL 0x200
   
   struct hang {

   struct drm_i915_gem_exec_object2 obj;
@@ -199,6 +200,7 @@ static void whisper(int fd, unsigned engine, unsigned flags)
   uint64_t old_offset;
   int i, n, loc;
   int debugfs;
+ int nchild;
   
   if (flags & PRIORITY) {

   igt_require(gem_scheduler_enabled(fd));
@@ -215,6 +217,7 @@ static void whisper(int fd, unsigned engine, unsigned flags)
   engines[nengine++] = engine;
   }
   } else {
+ igt_assert(!(flags & ALL));
   igt_require(gem_has_ring(fd, engine));
   igt_require(gem_can_store_dword(fd, engine));
   engines[nengine++] = engine;
@@ -233,11 +236,22 @@ static void whisper(int fd, unsigned engine, unsigned 
flags)
   if (flags & HANG)
   init_hang(&hang);
   
+ nchild = 1;

+ if (flags & FORKED)
+ nchild *= sysconf(_SC_NPROCESSORS_ONLN);
+ if (flags & ALL)
+ nchild *= nengine;
+
   intel_detect_and_clear_missed_interrupts(fd);
   gpu_power_read(&power, &sample[0]);
- igt_fork(child, flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1)  {
+ igt_fork(child, nchild) {
   unsigned int pass;
   
+ if (flags & ALL) {

+ engines[0] = engines[child % nengine];


Relying on PIDs being sequential feels fragile but suggesting pipes or
shared memory would be overkill. How about another loop:


Where are you getting pid_t from? child is an integer [0, nchild).


Add a core helper to get it?

I am coming from an angle that I remember some time in the past there 
was a security thing which randomized pid allocation. TBH I am not sure 
if that still exists, but if it does then it would not be good for this 
test. May be moot point to think such security hardening measures would 
be active on a machine running IGT tests.. hm.. not sure. But it is 
still a quite hidden assumption.


Regards,

Tvrtko

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

Re: [Intel-gfx] [PATCH i-g-t 13/16] i915: Add gem_exec_balancer

2019-05-16 Thread Tvrtko Ursulin


On 15/05/2019 20:50, Chris Wilson wrote:

Quoting Tvrtko Ursulin (2019-05-15 11:49:45)


On 08/05/2019 11:09, Chris Wilson wrote:

Exercise the in-kernel load balancer checking that we can distribute
batches across the set of ctx->engines to avoid load.

Signed-off-by: Chris Wilson 
---
   tests/Makefile.am  |1 +
   tests/Makefile.sources |1 +
   tests/i915/gem_exec_balancer.c | 1050 
   tests/meson.build  |7 +
   4 files changed, 1059 insertions(+)
   create mode 100644 tests/i915/gem_exec_balancer.c

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 5097debf6..c6af0aeaf 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -96,6 +96,7 @@ gem_close_race_LDADD = $(LDADD) -lpthread
   gem_ctx_thrash_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS)
   gem_ctx_thrash_LDADD = $(LDADD) -lpthread
   gem_ctx_sseu_LDADD = $(LDADD) $(top_builddir)/lib/libigt_perf.la
+i915_gem_exec_balancer_LDADD = $(LDADD) $(top_builddir)/lib/libigt_perf.la
   gem_exec_capture_LDADD = $(LDADD) -lz
   gem_exec_parallel_CFLAGS = $(AM_CFLAGS) $(THREAD_CFLAGS)
   gem_exec_parallel_LDADD = $(LDADD) -lpthread
diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index e7ee27e81..323b625aa 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -24,6 +24,7 @@ TESTS_progs = \
   i915/gem_ctx_clone \
   i915/gem_ctx_engines \
   i915/gem_ctx_shared \
+ i915/gem_exec_balancer \
   i915/gem_vm_create \
   kms_3d \
   kms_addfb_basic \
diff --git a/tests/i915/gem_exec_balancer.c b/tests/i915/gem_exec_balancer.c
new file mode 100644
index 0..25195d478
--- /dev/null
+++ b/tests/i915/gem_exec_balancer.c
@@ -0,0 +1,1050 @@
+/*
+ * Copyright © 2018 Intel Corporation


2019 I guess, even though work was started in 2018?


+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include 
+
+#include "igt.h"
+#include "igt_perf.h"
+#include "i915/gem_ring.h"
+#include "sw_sync.h"
+
+IGT_TEST_DESCRIPTION("Exercise in-kernel load-balancing");
+
+#define INSTANCE_COUNT (1 << I915_PMU_SAMPLE_INSTANCE_BITS)


Hmm.. this is a strange surrogate but I guess it works.


+
+static bool has_class_instance(int i915, uint16_t class, uint16_t instance)
+{
+ int fd;
+
+ fd = perf_i915_open(I915_PMU_ENGINE_BUSY(class, instance));


More work for Andi to replace with real engine discovery. :)


+ if (fd != -1) {
+ close(fd);
+ return true;
+ }
+
+ return false;
+}
+
+static struct i915_engine_class_instance *
+list_engines(int i915, uint32_t class_mask, unsigned int *out)
+{
+ unsigned int count = 0, size = 64;
+ struct i915_engine_class_instance *engines;
+
+ engines = malloc(size * sizeof(*engines));
+ if (!engines) {
+ *out = 0;
+ return NULL;
+ }
+
+ for (enum drm_i915_gem_engine_class class = I915_ENGINE_CLASS_RENDER;
+  class_mask;
+  class++, class_mask >>= 1) {
+ if (!(class_mask & 1))
+ continue;
+
+ for (unsigned int instance = 0;
+  instance < INSTANCE_COUNT;
+  instance++) {
+  if (!has_class_instance(i915, class, instance))
+  continue;
+
+ if (count == size) {
+ struct i915_engine_class_instance *e;
+
+ size *= 2;
+ e = realloc(engines, size*sizeof(*engines));
+ if (!e) {


I'd just assert. On malloc as well.


+ *out = count;
+ return engines;
+ }
+
+ engines = e;
+ }
+
+ engines[count++] = (struct i915_engine_class_instance){
+

Re: [Intel-gfx] [PATCH i-g-t 14/16] i915/gem_exec_balancer: Exercise bonded pairs

2019-05-16 Thread Tvrtko Ursulin


On 15/05/2019 21:32, Chris Wilson wrote:

Quoting Chris Wilson (2019-05-15 20:57:18)

Quoting Tvrtko Ursulin (2019-05-15 11:58:20)


On 08/05/2019 11:09, Chris Wilson wrote:

+ igt_assert_f(load > 0.90,
+  "engine %d (class:instance %d:%d) was found to be 
only %.1f%% busy\n",
+  n, siblings[n].engine_class, 
siblings[n].engine_instance,
+  load*100);


Master also needs to be checked I think. You have the infrastructure to
open two pmus in the previous patch so should be easy.


Haven't we checked precisely that in earlier tests? What would perhaps


Where? I see one subtest for bonding.


be fairer here would be to verify the other engine was idle, otherwise
we could say we fluked it. Furthermore, we should repeat a few times
with say (0, 1), (0, 1), (1, 0), (1, 0) to further rule out flukes, and
then to finish with a random smoketest of some description.


Hm maybe gpu idling before each pass is needed in this test.

Then I'd be happy if you just measured busyness on a bonded pair.

And yeah more permutation would be good for fluke prevention.


Perhaps even a test is closer to the typical workload would involve
semaphore communication across the bond. But I don't know a way in which
I can determine which engine I am on in order to record that from the
GPU itself.


To remind myself, the importance here is on uABI stressing, it's is much
easier to prove the relationship in the kernel and that is where we do.


I didn't think it would be hard to read busyness from the master as well 
but if you insist okay.


Regards,

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

Re: [Intel-gfx] [PATCH] drm/i915/perf: Refactor oa object to better manage resources

2019-05-16 Thread Lionel Landwerlin

Hi Umesh,

This v3 looks good to me. I've left some nits below, but with or with 
them applied this is :


Reviewed-by: Lionel Landwerlin 

On 15/05/2019 19:07, Umesh Nerlige Ramappa wrote:

The oa object manages the oa buffer and must be allocated when the user
intends to read performance counter snapshots. This can be achieved by
making the oa object part of the stream object which is allocated when a
stream is opened by the user.

Attributes in the oa object that are gen-specific are moved to the perf
object so that they can be initialized on driver load.

The split provides a better separation of the objects used in perf
implementation of i915 driver so that resources are allocated and
initialized only when needed.

v2: Fix checkpatch warnings
v3: Addressed Lionel's review comment

Signed-off-by: Umesh Nerlige Ramappa 
---
  drivers/gpu/drm/i915/gt/intel_sseu.c  |   2 +-
  drivers/gpu/drm/i915/gvt/scheduler.c  |   4 +-
  drivers/gpu/drm/i915/i915_drv.h   | 219 +-
  drivers/gpu/drm/i915/i915_oa_bdw.c|  30 +-
  drivers/gpu/drm/i915/i915_oa_bxt.c|  30 +-
  drivers/gpu/drm/i915/i915_oa_cflgt2.c |  30 +-
  drivers/gpu/drm/i915/i915_oa_cflgt3.c |  30 +-
  drivers/gpu/drm/i915/i915_oa_chv.c|  30 +-
  drivers/gpu/drm/i915/i915_oa_cnl.c|  30 +-
  drivers/gpu/drm/i915/i915_oa_glk.c|  30 +-
  drivers/gpu/drm/i915/i915_oa_hsw.c|  30 +-
  drivers/gpu/drm/i915/i915_oa_icl.c|  30 +-
  drivers/gpu/drm/i915/i915_oa_kblgt2.c |  30 +-
  drivers/gpu/drm/i915/i915_oa_kblgt3.c |  30 +-
  drivers/gpu/drm/i915/i915_oa_sklgt2.c |  30 +-
  drivers/gpu/drm/i915/i915_oa_sklgt3.c |  30 +-
  drivers/gpu/drm/i915/i915_oa_sklgt4.c |  30 +-
  drivers/gpu/drm/i915/i915_perf.c  | 583 ++
  18 files changed, 629 insertions(+), 599 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_sseu.c 
b/drivers/gpu/drm/i915/gt/intel_sseu.c
index 7f448f3bea0b..fa78df39521a 100644
--- a/drivers/gpu/drm/i915/gt/intel_sseu.c
+++ b/drivers/gpu/drm/i915/gt/intel_sseu.c
@@ -32,7 +32,7 @@ u32 intel_sseu_make_rpcs(struct drm_i915_private *i915,
 * cases which disable slices for functional, apart for performance
 * reasons. So in this case we select a known stable subset.
 */
-   if (!i915->perf.oa.exclusive_stream) {
+   if (!i915->perf.exclusive_stream) {
ctx_sseu = *req_sseu;
} else {
ctx_sseu = intel_sseu_from_device_info(sseu);
diff --git a/drivers/gpu/drm/i915/gvt/scheduler.c 
b/drivers/gpu/drm/i915/gvt/scheduler.c
index 7ae42f2ebfe8..878e71a927de 100644
--- a/drivers/gpu/drm/i915/gvt/scheduler.c
+++ b/drivers/gpu/drm/i915/gvt/scheduler.c
@@ -81,8 +81,8 @@ static void sr_oa_regs(struct intel_vgpu_workload *workload,
u32 *reg_state, bool save)
  {
struct drm_i915_private *dev_priv = workload->vgpu->gvt->dev_priv;
-   u32 ctx_oactxctrl = dev_priv->perf.oa.ctx_oactxctrl_offset;
-   u32 ctx_flexeu0 = dev_priv->perf.oa.ctx_flexeu0_offset;
+   u32 ctx_oactxctrl = dev_priv->perf.ctx_oactxctrl_offset;
+   u32 ctx_flexeu0 = dev_priv->perf.ctx_flexeu0_offset;
int i = 0;
u32 flex_mmio[] = {
i915_mmio_reg_offset(EU_PERF_CNTL0),
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 9a634ba57ff9..23778f6299de 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1400,6 +1400,86 @@ struct i915_perf_stream {
 * @oa_config: The OA configuration used by the stream.
 */
struct i915_oa_config *oa_config;
+
+   /**
+* The OA context specific information.
+*/
+   struct intel_context *pinned_ctx;
+   u32 specific_ctx_id;
+   u32 specific_ctx_id_mask;
+
+   struct hrtimer poll_check_timer;
+   wait_queue_head_t poll_wq;
+   bool pollin;
+
+   bool periodic;
+   int period_exponent;
+
+   /**
+* State of the OA buffer.
+*/
+   struct {
+   struct i915_vma *vma;
+   u8 *vaddr;
+   u32 last_ctx_id;
+   int format;
+   int format_size;
+   int size_exponent;
+
+   /**
+* Locks reads and writes to all head/tail state
+*
+* Consider: the head and tail pointer state needs to be read
+* consistently from a hrtimer callback (atomic context) and
+* read() fop (user context) with tail pointer updates happening
+* in atomic context and head updates in user context and the
+* (unlikely) possibility of read() errors needing to reset all
+* head/tail state.
+*
+* Note: Contention/performance aren't currently a significant
+* concern here considering the relatively low frequency of
+* hrtimer callbacks (5ms period) and that reads typically only
+ 

Re: [Intel-gfx] [PATCH 1/2] drm/i915: Re-add enable_rc6 modparam

2019-05-16 Thread Jani Nikula
On Tue, 14 May 2019, Rodrigo Vivi  wrote:
> One possibility that just came to my mind now is, what if we make
> this only for platforms that are still protected by is_alpha_support=1
> (soon becoming require_force_probe=1)

Please don't conflate alpha_support or force_probe with *anything* else.

> But this is just one side of the coin... when product is out there
> and we want the user to debug the issue to see if it is a RC6 bug
> we have no way to verify that. :/

The problem is, if it works with rc6 disabled, it doesn't prove it's an
rc6 bug either.


BR,
Jani.


-- 
Jani Nikula, Intel Open Source Graphics Center
___
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: Disable active links before rebooting

2019-05-16 Thread Jani Nikula
On Wed, 15 May 2019, Chris Wilson  wrote:
> Certain monitors, e.g. Dell, do not like it when we reboot with an
> active link, leaving them in a confused state where they refuse to
> renegotiate the link after the reboot. If we hook into the reboot
> notifier, we can switch off any active link before rebooting, leaving
> everything in a consistent, hopefully happy, state.
>
> Signed-off-by: Chris Wilson 
> Cc: Ville Syrjälä 
> ---
>  drivers/gpu/drm/i915/i915_pci.c | 4 
>  1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/i915_pci.c b/drivers/gpu/drm/i915/i915_pci.c
> index 401eb6c71ae1..7b2dc8d66f35 100644
> --- a/drivers/gpu/drm/i915/i915_pci.c
> +++ b/drivers/gpu/drm/i915/i915_pci.c
> @@ -26,6 +26,7 @@
>  #include 
>  #include 
>  
> +#include 
>  #include 
>  
>  #include "i915_drv.h"
> @@ -909,6 +910,9 @@ static void i915_pci_shutdown(struct pci_dev *pdev)
>   /* Cancel any outstanding rendering */
>   if (READ_ONCE(i915->gt.awake))
>   i915_gem_set_wedged(i915);
> +
> + /* Disable active links to avoid confusing certain (Dell) monitors */
> + drm_atomic_helper_shutdown(&i915->drm);

I think we could use this to replace edp_notify_handler(). But the above
alone is not enough because it won't do the wait, as we do the waits in
enable, and after boot we've lost track of when the last disable was.

BR,
Jani.

>  }
>  
>  static struct pci_driver i915_pci_driver = {

-- 
Jani Nikula, Intel Open Source Graphics Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [v10 09/12] drm/i915:Enabled Modeset when HDR Infoframe changes

2019-05-16 Thread Shankar, Uma


>-Original Message-
>From: dri-devel [mailto:dri-devel-boun...@lists.freedesktop.org] On Behalf Of 
>Ville
>Syrjälä
>Sent: Thursday, May 16, 2019 12:57 AM
>To: Shankar, Uma 
>Cc: dcasta...@chromium.org; jo...@kwiboo.se; intel-gfx@lists.freedesktop.org;
>emil.l.veli...@gmail.com; dri-de...@lists.freedesktop.org; 
>seanp...@chromium.org
>Subject: Re: [v10 09/12] drm/i915:Enabled Modeset when HDR Infoframe changes
>
>On Tue, May 14, 2019 at 11:06:31PM +0530, Uma Shankar wrote:
>> This patch enables modeset whenever HDR metadata needs to be updated
>> to sink.
>>
>> v2: Addressed Shashank's review comments.
>>
>> v3: Added Shashank's RB.
>>
>> v4: Addressed Ville's review comments.
>>
>> Signed-off-by: Ville Syrjälä 
>> Signed-off-by: Uma Shankar 
>> Reviewed-by: Shashank Sharma 
>> ---
>>  drivers/gpu/drm/i915/intel_atomic.c | 14 +-
>>  drivers/gpu/drm/i915/intel_hdmi.c   | 13 +
>>  2 files changed, 26 insertions(+), 1 deletion(-)
>>
>> diff --git a/drivers/gpu/drm/i915/intel_atomic.c
>> b/drivers/gpu/drm/i915/intel_atomic.c
>> index 58b8049..6b985e8 100644
>> --- a/drivers/gpu/drm/i915/intel_atomic.c
>> +++ b/drivers/gpu/drm/i915/intel_atomic.c
>> @@ -105,6 +105,16 @@ int intel_digital_connector_atomic_set_property(struct
>drm_connector *connector,
>>  return -EINVAL;
>>  }
>>
>> +static bool blob_equal(const struct drm_property_blob *a,
>> +   const struct drm_property_blob *b) {
>> +if (a && b)
>> +return a->length == b->length &&
>> +!memcmp(a->data, b->data, a->length);
>> +
>> +return !a == !b;
>> +}
>> +
>>  int intel_digital_connector_atomic_check(struct drm_connector *conn,
>>   struct drm_connector_state *new_state) 
>>  {
>@@ -132,7 +142,9 @@
>> int intel_digital_connector_atomic_check(struct drm_connector *conn,
>>  new_conn_state->base.colorspace != old_conn_state->base.colorspace 
>> ||
>>  new_conn_state->base.picture_aspect_ratio != old_conn_state-
>>base.picture_aspect_ratio ||
>>  new_conn_state->base.content_type != old_conn_state-
>>base.content_type ||
>> -new_conn_state->base.scaling_mode != old_conn_state-
>>base.scaling_mode)
>> +new_conn_state->base.scaling_mode != old_conn_state-
>>base.scaling_mode ||
>> +!blob_equal(new_conn_state->base.hdr_output_metadata,
>> +old_conn_state->base.hdr_output_metadata))
>>  crtc_state->mode_changed = true;
>>
>>  return 0;
>> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c
>> b/drivers/gpu/drm/i915/intel_hdmi.c
>> index b80406b..e97bf6e 100644
>> --- a/drivers/gpu/drm/i915/intel_hdmi.c
>> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
>> @@ -806,6 +806,11 @@ void intel_read_infoframe(struct intel_encoder *encoder,
>>  return true;
>>  }
>>
>> +static inline bool is_eotf_supported(u8 output_eotf, u8 sink_eotf) {
>> +return sink_eotf & BIT(output_eotf); }
>> +
>>  static bool
>>  intel_hdmi_compute_drm_infoframe(struct intel_encoder *encoder,
>>   struct intel_crtc_state *crtc_state, @@ -814,6
>+819,7 @@ void
>> intel_read_infoframe(struct intel_encoder *encoder,
>>  struct hdmi_drm_infoframe *frame = &crtc_state->infoframes.drm.drm;
>>  struct hdr_output_metadata *hdr_metadata;
>>  struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
>> +struct drm_connector *connector = conn_state->connector;
>>  int ret;
>>
>>  if (!(INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))) @@
>> -828,6 +834,13 @@ void intel_read_infoframe(struct intel_encoder
>> *encoder,
>>
>>  hdr_metadata = conn_state->hdr_output_metadata->data;
>>
>> +/* Sink EOTF is Bit map while infoframe is absolute values */
>> +if (!is_eotf_supported(hdr_metadata->hdmi_metadata_type1.eotf,
>> +connector->hdr_sink_metadata.hdmi_type1.eotf)) {
>> +DRM_ERROR("EOTF Not Supported\n");
>> +return true;
>> +}
>
>I was going to say that this should probably be in the
>drm_set_hdr_metdata() or whatever it was called.
>
>But now I'm now wondering if we can even have this check here. What happens if
>someone does a display switcheroo while the machine is suspended? Depends on
>when we're going to reprobe the displays I suppose. Hmm. Maybe it's fine. We
>already have a similar issue after all wih the has_hdmi2_sink stuff.
>
>Either way the user triggerable DRM_ERROR()s are at least a nono.

Ok, Will keep the check and move it inside the drm_set_hdr_metdata(). Also 
downgrade
the print as INFO instead of ERROR. Hope this is fine.

>> +
>>  crtc_state->infoframes.enable |=
>>  intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_DRM);
>>
>> --
>> 1.9.1
>
>--
>Ville Syrjälä
>Intel
>___
>dri-devel mailing list
>dri-de...@lists.freedesktop.org
>https://lists.freedesktop.org/mailman/listinfo/dri-devel
__

Re: [Intel-gfx] [PATCH v3 04/10] drm: Convert connector_helper_funcs->atomic_check to accept drm_atomic_state

2019-05-16 Thread Laurent Pinchart
Hi Sean,

On Mon, May 13, 2019 at 10:38:58AM -0400, Sean Paul wrote:
> On Sat, May 11, 2019 at 3:12 PM Laurent Pinchart wrote:
> > On Thu, May 02, 2019 at 03:49:46PM -0400, Sean Paul wrote:
> >> From: Sean Paul 
> >>
> >> Everyone who implements connector_helper_funcs->atomic_check reaches
> >> into the connector state to get the atomic state. Instead of continuing
> >> this pattern, change the callback signature to just give atomic state
> >> and let the driver determine what it does and does not need from it.
> >>
> >> Eventually all atomic functions should do this, but that's just too much
> >> busy work for me.
> >
> > Given that drivers also access the connector state, isn't this slightly
> > more inefficient ?
> 
> Inefficient in terms of what?

In terms of the operation having to lookup the connector state, when the
caller has it and can easily pass it. As Daniel commented, this may be
the price to pay for a cleaner API, but I wonder how much overhead all
the state tracking is costing.

> Agree that in isolation this patch might seem unnecessary, but it ties
> in with the encoder and bridge CLs which accept drm_atomic_state in

CLs ?

> their hooks. In general the idea is to convert all atomic functions to
> take overall atomic state instead of just their object state. Reality
> has proven to be more complicated and we need more access than what
> the current implementation provides.
> 
> Sean
> 
> >> Changes in v3:
> >> - Added to the set
> >>
> >> Cc: Daniel Vetter 
> >> Cc: Ville Syrjälä 
> >> Cc: Jani Nikula 
> >> Cc: Joonas Lahtinen 
> >> Cc: Rodrigo Vivi 
> >> Cc: Ben Skeggs 
> >> Cc: Laurent Pinchart 
> >> Cc: Kieran Bingham 
> >> Cc: Eric Anholt 
> >> Signed-off-by: Sean Paul 
> >> ---
> >>  drivers/gpu/drm/drm_atomic_helper.c  |  4 ++--
> >>  drivers/gpu/drm/i915/intel_atomic.c  |  8 +---
> >>  drivers/gpu/drm/i915/intel_dp_mst.c  |  7 ---
> >>  drivers/gpu/drm/i915/intel_drv.h |  2 +-
> >>  drivers/gpu/drm/i915/intel_sdvo.c|  9 +
> >>  drivers/gpu/drm/i915/intel_tv.c  |  8 +---
> >>  drivers/gpu/drm/nouveau/dispnv50/disp.c  |  5 +++--
> >>  drivers/gpu/drm/rcar-du/rcar_lvds.c  | 12 +++-
> >>  drivers/gpu/drm/vc4/vc4_txp.c|  7 ---
> >>  include/drm/drm_modeset_helper_vtables.h |  2 +-
> >>  10 files changed, 37 insertions(+), 27 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/drm_atomic_helper.c 
> >> b/drivers/gpu/drm/drm_atomic_helper.c
> >> index 9d9e47276839..fa5a367507c1 100644
> >> --- a/drivers/gpu/drm/drm_atomic_helper.c
> >> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> >> @@ -683,7 +683,7 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
> >>   }
> >>
> >>   if (funcs->atomic_check)
> >> - ret = funcs->atomic_check(connector, 
> >> new_connector_state);
> >> + ret = funcs->atomic_check(connector, state);
> >>   if (ret)
> >>   return ret;
> >>
> >> @@ -725,7 +725,7 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
> >>   continue;
> >>
> >>   if (funcs->atomic_check)
> >> - ret = funcs->atomic_check(connector, 
> >> new_connector_state);
> >> + ret = funcs->atomic_check(connector, state);
> >>   if (ret)
> >>   return ret;
> >>   }
> >> diff --git a/drivers/gpu/drm/i915/intel_atomic.c 
> >> b/drivers/gpu/drm/i915/intel_atomic.c
> >> index b844e8840c6f..e8a5b82e9242 100644
> >> --- a/drivers/gpu/drm/i915/intel_atomic.c
> >> +++ b/drivers/gpu/drm/i915/intel_atomic.c
> >> @@ -103,12 +103,14 @@ int 
> >> intel_digital_connector_atomic_set_property(struct drm_connector 
> >> *connector,
> >>  }
> >>
> >>  int intel_digital_connector_atomic_check(struct drm_connector *conn,
> >> -  struct drm_connector_state 
> >> *new_state)
> >> +  struct drm_atomic_state *state)
> >>  {
> >> + struct drm_connector_state *new_state =
> >> + drm_atomic_get_new_connector_state(state, conn);
> >>   struct intel_digital_connector_state *new_conn_state =
> >>   to_intel_digital_connector_state(new_state);
> >>   struct drm_connector_state *old_state =
> >> - drm_atomic_get_old_connector_state(new_state->state, conn);
> >> + drm_atomic_get_old_connector_state(state, conn);
> >>   struct intel_digital_connector_state *old_conn_state =
> >>   to_intel_digital_connector_state(old_state);
> >>   struct drm_crtc_state *crtc_state;
> >> @@ -118,7 +120,7 @@ int intel_digital_connector_atomic_check(struct 
> >> drm_connector *conn,
> >>   if (!new_state->crtc)
> >>   return 0;
> >>
> >> - crtc_state = drm_atomic_get_new_crtc_state(new_state->state, 
> >> new_state->crtc);
> >> + crtc_state = drm_atomic_get_new_crtc_state(state, new_state->c

Re: [Intel-gfx] [PATCH v3 04/10] drm: Convert connector_helper_funcs->atomic_check to accept drm_atomic_state

2019-05-16 Thread Laurent Pinchart
Hi Daniel,

On Mon, May 13, 2019 at 04:47:47PM +0200, Daniel Vetter wrote:
> On Sat, May 11, 2019 at 10:12:02PM +0300, Laurent Pinchart wrote:
> > On Thu, May 02, 2019 at 03:49:46PM -0400, Sean Paul wrote:
> >> From: Sean Paul 
> >> 
> >> Everyone who implements connector_helper_funcs->atomic_check reaches
> >> into the connector state to get the atomic state. Instead of continuing
> >> this pattern, change the callback signature to just give atomic state
> >> and let the driver determine what it does and does not need from it.
> >> 
> >> Eventually all atomic functions should do this, but that's just too much
> >> busy work for me.
> > 
> > Given that drivers also access the connector state, isn't this slightly
> > more inefficient ?
> 
> It's atomic code, we're trying to optimize for clean code at the expense
> of a bit of runtime overhead due to more pointer chasing. And I agree with
> the general push, the pile of old/new_state pointers of various objects
> we're passing around is confusing. Passing the overall drm_atomic_state
> seems much more reasonable, and with that we can get everything else. Plus
> it's much more obvious whether you have the old/new state (since that's
> explicit when you look it up from the drm_atomic_state).

Yes, I agree it's cleaner. I just hope the atomic state tracking cost
can be kept under control :-)

By the way, this is likely not going to happen as it would be way too
intrusive, but it would be nice to rename drm_atomic_state to
drm_atomic_transaction (or something similar). It doesn't model a state,
but a change between an old state to a new state. This confused me in
the past, and I'm sure it can still be confusing to newcomers.

> If we ever see this show up in profile, and it starts mattering, first
> thing we need is a hashtable I think (atm it's list walking, which is just
> terrible). But thus far no one cares.
> 
> >> Changes in v3:
> >> - Added to the set
> >> 
> >> Cc: Daniel Vetter 
> >> Cc: Ville Syrjälä 
> >> Cc: Jani Nikula 
> >> Cc: Joonas Lahtinen 
> >> Cc: Rodrigo Vivi 
> >> Cc: Ben Skeggs 
> >> Cc: Laurent Pinchart 
> >> Cc: Kieran Bingham 
> >> Cc: Eric Anholt 
> >> Signed-off-by: Sean Paul 
> >> ---
> >>  drivers/gpu/drm/drm_atomic_helper.c  |  4 ++--
> >>  drivers/gpu/drm/i915/intel_atomic.c  |  8 +---
> >>  drivers/gpu/drm/i915/intel_dp_mst.c  |  7 ---
> >>  drivers/gpu/drm/i915/intel_drv.h |  2 +-
> >>  drivers/gpu/drm/i915/intel_sdvo.c|  9 +
> >>  drivers/gpu/drm/i915/intel_tv.c  |  8 +---
> >>  drivers/gpu/drm/nouveau/dispnv50/disp.c  |  5 +++--
> >>  drivers/gpu/drm/rcar-du/rcar_lvds.c  | 12 +++-
> >>  drivers/gpu/drm/vc4/vc4_txp.c|  7 ---
> >>  include/drm/drm_modeset_helper_vtables.h |  2 +-
> >>  10 files changed, 37 insertions(+), 27 deletions(-)
> >> 
> >> diff --git a/drivers/gpu/drm/drm_atomic_helper.c 
> >> b/drivers/gpu/drm/drm_atomic_helper.c
> >> index 9d9e47276839..fa5a367507c1 100644
> >> --- a/drivers/gpu/drm/drm_atomic_helper.c
> >> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> >> @@ -683,7 +683,7 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
> >>}
> >>  
> >>if (funcs->atomic_check)
> >> -  ret = funcs->atomic_check(connector, 
> >> new_connector_state);
> >> +  ret = funcs->atomic_check(connector, state);
> >>if (ret)
> >>return ret;
> >>  
> >> @@ -725,7 +725,7 @@ drm_atomic_helper_check_modeset(struct drm_device *dev,
> >>continue;
> >>  
> >>if (funcs->atomic_check)
> >> -  ret = funcs->atomic_check(connector, 
> >> new_connector_state);
> >> +  ret = funcs->atomic_check(connector, state);
> >>if (ret)
> >>return ret;
> >>}
> >> diff --git a/drivers/gpu/drm/i915/intel_atomic.c 
> >> b/drivers/gpu/drm/i915/intel_atomic.c
> >> index b844e8840c6f..e8a5b82e9242 100644
> >> --- a/drivers/gpu/drm/i915/intel_atomic.c
> >> +++ b/drivers/gpu/drm/i915/intel_atomic.c
> >> @@ -103,12 +103,14 @@ int 
> >> intel_digital_connector_atomic_set_property(struct drm_connector 
> >> *connector,
> >>  }
> >>  
> >>  int intel_digital_connector_atomic_check(struct drm_connector *conn,
> >> -   struct drm_connector_state *new_state)
> >> +   struct drm_atomic_state *state)
> >>  {
> >> +  struct drm_connector_state *new_state =
> >> +  drm_atomic_get_new_connector_state(state, conn);
> >>struct intel_digital_connector_state *new_conn_state =
> >>to_intel_digital_connector_state(new_state);
> >>struct drm_connector_state *old_state =
> >> -  drm_atomic_get_old_connector_state(new_state->state, conn);
> >> +  drm_atomic_get_old_connector_state(state, conn);
> >>struct intel_digital_connector_state *old_conn_state =
> >>to_intel_digital_connector_sta

Re: [Intel-gfx] [PATCH v3 04/10] drm: Convert connector_helper_funcs->atomic_check to accept drm_atomic_state

2019-05-16 Thread Daniel Vetter
On Thu, May 16, 2019 at 2:02 PM Laurent Pinchart
 wrote:
>
> Hi Daniel,
>
> On Mon, May 13, 2019 at 04:47:47PM +0200, Daniel Vetter wrote:
> > On Sat, May 11, 2019 at 10:12:02PM +0300, Laurent Pinchart wrote:
> > > On Thu, May 02, 2019 at 03:49:46PM -0400, Sean Paul wrote:
> > >> From: Sean Paul 
> > >>
> > >> Everyone who implements connector_helper_funcs->atomic_check reaches
> > >> into the connector state to get the atomic state. Instead of continuing
> > >> this pattern, change the callback signature to just give atomic state
> > >> and let the driver determine what it does and does not need from it.
> > >>
> > >> Eventually all atomic functions should do this, but that's just too much
> > >> busy work for me.
> > >
> > > Given that drivers also access the connector state, isn't this slightly
> > > more inefficient ?
> >
> > It's atomic code, we're trying to optimize for clean code at the expense
> > of a bit of runtime overhead due to more pointer chasing. And I agree with
> > the general push, the pile of old/new_state pointers of various objects
> > we're passing around is confusing. Passing the overall drm_atomic_state
> > seems much more reasonable, and with that we can get everything else. Plus
> > it's much more obvious whether you have the old/new state (since that's
> > explicit when you look it up from the drm_atomic_state).
>
> Yes, I agree it's cleaner. I just hope the atomic state tracking cost
> can be kept under control :-)
>
> By the way, this is likely not going to happen as it would be way too
> intrusive, but it would be nice to rename drm_atomic_state to
> drm_atomic_transaction (or something similar). It doesn't model a state,
> but a change between an old state to a new state. This confused me in
> the past, and I'm sure it can still be confusing to newcomers.

Why are you the first to suggest this, this is awesome!
drm_atomic_state is indeed not a state, but a transaction representing
how we go from the old to the new state.

I think this is awesome enough that we should actually try to make it
happen. Tree-wide cocci + bribing Dave on St. Patrick's day with lots
of beer might be enough :-)
-Daniel

> > If we ever see this show up in profile, and it starts mattering, first
> > thing we need is a hashtable I think (atm it's list walking, which is just
> > terrible). But thus far no one cares.
> >
> > >> Changes in v3:
> > >> - Added to the set
> > >>
> > >> Cc: Daniel Vetter 
> > >> Cc: Ville Syrjälä 
> > >> Cc: Jani Nikula 
> > >> Cc: Joonas Lahtinen 
> > >> Cc: Rodrigo Vivi 
> > >> Cc: Ben Skeggs 
> > >> Cc: Laurent Pinchart 
> > >> Cc: Kieran Bingham 
> > >> Cc: Eric Anholt 
> > >> Signed-off-by: Sean Paul 
> > >> ---
> > >>  drivers/gpu/drm/drm_atomic_helper.c  |  4 ++--
> > >>  drivers/gpu/drm/i915/intel_atomic.c  |  8 +---
> > >>  drivers/gpu/drm/i915/intel_dp_mst.c  |  7 ---
> > >>  drivers/gpu/drm/i915/intel_drv.h |  2 +-
> > >>  drivers/gpu/drm/i915/intel_sdvo.c|  9 +
> > >>  drivers/gpu/drm/i915/intel_tv.c  |  8 +---
> > >>  drivers/gpu/drm/nouveau/dispnv50/disp.c  |  5 +++--
> > >>  drivers/gpu/drm/rcar-du/rcar_lvds.c  | 12 +++-
> > >>  drivers/gpu/drm/vc4/vc4_txp.c|  7 ---
> > >>  include/drm/drm_modeset_helper_vtables.h |  2 +-
> > >>  10 files changed, 37 insertions(+), 27 deletions(-)
> > >>
> > >> diff --git a/drivers/gpu/drm/drm_atomic_helper.c 
> > >> b/drivers/gpu/drm/drm_atomic_helper.c
> > >> index 9d9e47276839..fa5a367507c1 100644
> > >> --- a/drivers/gpu/drm/drm_atomic_helper.c
> > >> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> > >> @@ -683,7 +683,7 @@ drm_atomic_helper_check_modeset(struct drm_device 
> > >> *dev,
> > >>}
> > >>
> > >>if (funcs->atomic_check)
> > >> -  ret = funcs->atomic_check(connector, 
> > >> new_connector_state);
> > >> +  ret = funcs->atomic_check(connector, state);
> > >>if (ret)
> > >>return ret;
> > >>
> > >> @@ -725,7 +725,7 @@ drm_atomic_helper_check_modeset(struct drm_device 
> > >> *dev,
> > >>continue;
> > >>
> > >>if (funcs->atomic_check)
> > >> -  ret = funcs->atomic_check(connector, 
> > >> new_connector_state);
> > >> +  ret = funcs->atomic_check(connector, state);
> > >>if (ret)
> > >>return ret;
> > >>}
> > >> diff --git a/drivers/gpu/drm/i915/intel_atomic.c 
> > >> b/drivers/gpu/drm/i915/intel_atomic.c
> > >> index b844e8840c6f..e8a5b82e9242 100644
> > >> --- a/drivers/gpu/drm/i915/intel_atomic.c
> > >> +++ b/drivers/gpu/drm/i915/intel_atomic.c
> > >> @@ -103,12 +103,14 @@ int 
> > >> intel_digital_connector_atomic_set_property(struct drm_connector 
> > >> *connector,
> > >>  }
> > >>
> > >>  int intel_digital_connector_atomic_check(struct drm_connector *conn,
> > >> -   struct drm_connector_state 
> > >> *new_state)
> >

Re: [Intel-gfx] [PATCH v7 09/11] drm: uevent for connector status change

2019-05-16 Thread Daniel Vetter
On Thu, May 16, 2019 at 11:22:11AM +0300, Pekka Paalanen wrote:
> On Wed, 15 May 2019 10:24:49 +0200
> Daniel Vetter  wrote:
> 
> > On Wed, May 15, 2019 at 10:37:31AM +0300, Pekka Paalanen wrote:
> > > On Tue, 14 May 2019 16:34:01 +0200
> > > Daniel Vetter  wrote:
> > >   
> > > > On Tue, May 14, 2019 at 3:36 PM Pekka Paalanen  
> > > > wrote:  
> > > > >
> > > > > On Tue, 14 May 2019 13:02:09 +0200
> > > > > Daniel Vetter  wrote:
> > > > >
> > > > > > On Tue, May 14, 2019 at 10:18 AM Ser, Simon  
> > > > > > wrote:
> > > > > > >
> > > > > > > On Tue, 2019-05-14 at 11:02 +0300, Pekka Paalanen wrote:
> > > 
> > > ...
> > >   
> > > > > > > > Hi Daniel,
> > > > > > > >
> > > > > > > > just to clarify the first case, specific to one very particular
> > > > > > > > property:
> > > > > > > >
> > > > > > > > With HDCP, there is a property that may change dynamically at 
> > > > > > > > runtime
> > > > > > > > (the undesired/desired/enabled tristate). Userspace must be 
> > > > > > > > notified
> > > > > > > > when it changes, I do not want userspace have to poll that 
> > > > > > > > property
> > > > > > > > with a timer.
> > > > > > > >
> > > > > > > > When that property alone changes, and userspace is prepared to 
> > > > > > > > handle
> > > > > > > > that property changing alone, it must not trigger a reprobe of 
> > > > > > > > the
> > > > > > > > connector. There is no reason to reprobe at that point AFAIU.
> > > > > > > >
> > > > > > > > How do you ensure that userspace can avoid triggering a reprobe 
> > > > > > > > with the
> > > > > > > > epoch approach or with any alternate uevent design?
> > > > > > > >
> > > > > > > > We need an event to userspace that indicates that re-reading the
> > > > > > > > properties is enough and reprobe of the connector is not 
> > > > > > > > necessary.
> > > > > > > > This is complementary to indicating to userspace that only some
> > > > > > > > connectors need to be reprobed instead of everything.
> > > > > > >
> > > > > > > Can't you use the PROPERTY hint? If PROPERTY is the HDCP one, 
> > > > > > > skip the
> > > > > > > reprobing. Would that work?
> > > > >
> > > > > Hi,
> > > > >
> > > > > yes, that would work, if it was acceptable to DRM upstream. The 
> > > > > replies
> > > > > to Paul seemed to be going south so fast that I thought we wouldn't 
> > > > > get
> > > > > any new uevent fields in favour of "epoch counters".
> > > > >
> > > > > > Yes that's the idea, depending upon which property you get you know
> > > > > > it's a sink change (needs full reprobe) or something else like hdcp
> > > > > > state machinery update.
> > > > >
> > > > > Right.
> > > > >
> > > > > > Wrt avoiding the full reprobe for sink changes: I think we should
> > > > > > indeed decouple that from the per-connector event for sink changes.
> > > > > > That along is a good win already, since you know for which connector
> > > > > > you need to call drmGetConnector (which forces the reprobe). It 
> > > > > > would
> > > > > > be nice to only call drmGetConnectorCurrent (avoids the reprobe), 
> > > > > > but
> > > > > > historically speaking every time we tried to rely on this we ended 
> > > > > > up
> > > > > > regretting things.
> > > > >
> > > > > What changed? This sounds very much what Paul suggested. Looking at it
> > > > > from userspace side:
> > > > 
> > > > This sounds solid, some refinements below:
> > > >   
> > > > > HOTPLUG=1 CONNECTOR=xx PROPERTY=yy
> > > > >
> > > > > - If yy is "Content Protection", no need to drmModeGetConnector(), 
> > > > > just
> > > > >   re-get the connector properties.
> > > > >
> > > > > - Kernel probably shouldn't bother sending this for properties where
> > > > >   re-probe could be necessary, and send the below instead.
> > > > 
> > > > 
> > > > I think we should assert that the kernel can get the new property
> > > > values using drmModeGetConnectorCurrent for this case, i.e. the kernel
> > > > does not expect a full reprobe. I.e. upgrade your idea from "should"
> > > > to "must"  
> > > 
> > > Hi Daniel,
> > > 
> > > ok, that's good.
> > >   
> > > > Furthermore different property can indicate different kind of updates,
> > > > e.g. hdcp vs general sink change vs. whatever else might come in the
> > > > future.  
> > > 
> > > What do you mean by different kinds of updates?  
> > 
> > Atm we're discussing two:
> > 
> > - "Content Protection"
> > - "sink changed, but you don't need to reprobe" this would be quite a bit
> >   a catch all from the output detection. Paul thinks differently, but I'm
> >   not sold on splitting this up more, at least not right now. This would
> >   include connector status (and related things returned by drmGetConnector
> >   which currently aren't a property), EDID, the mst path id, that kind of
> >   stuff.
> > 
> > Ime once we have 2, there's more bound to come :-)
> 
> Hi Daniel,
> 
> I don't understand what the "sink changed" thing could be, but sure,
> there can be mo

Re: [Intel-gfx] [PATCH 1/1] drm/i915: skip the second CRC even for GEN 7 GPUs

2019-05-16 Thread Maarten Lankhorst
Op 16-05-2019 om 07:58 schreef Harish Chegondi:
> display_pipe_crc_irq_handler() skips the first CRC for all GPUs and the
> second CRC for GEN8+ GPUs. The second CRC is invalid even for BYT which
> is a GEN7 GPU. So, skip the second CRC even for GEN7 GPUs.
>
> Cc: Jani Nikula 
> Cc: Tomi Sarvela 
> Cc: Petri Latvala 
> Cc: Ville Syrjälä 
> Cc: Maarten Lankhorst 
> Signed-off-by: Harish Chegondi 
> References: https://bugs.freedesktop.org/show_bug.cgi?id=103191
> ---
>  drivers/gpu/drm/i915/i915_irq.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 233211fde0ea..3809e9f7fae2 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1775,11 +1775,11 @@ static void display_pipe_crc_irq_handler(struct 
> drm_i915_private *dev_priv,
>* bonkers. So let's just wait for the next vblank and read
>* out the buggy result.
>*
> -  * On GEN8+ sometimes the second CRC is bonkers as well, so
> +  * On GEN7+ sometimes the second CRC is bonkers as well, so
>* don't trust that one either.
>*/
>   if (pipe_crc->skipped <= 0 ||
> - (INTEL_GEN(dev_priv) >= 8 && pipe_crc->skipped == 1)) {
> + (INTEL_GEN(dev_priv) >= 7 && pipe_crc->skipped == 1)) {
>   pipe_crc->skipped++;
>   spin_unlock(&pipe_crc->lock);
>   return;

I would be interested in the results, haswell is different from VLV. Has it 
ever been observed on that platform?

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

Re: [Intel-gfx] [PATCH 1/1] drm/i915: skip the second CRC even for GEN 7 GPUs

2019-05-16 Thread Jani Nikula
On Thu, 16 May 2019, Maarten Lankhorst  
wrote:
> Op 16-05-2019 om 07:58 schreef Harish Chegondi:
>> display_pipe_crc_irq_handler() skips the first CRC for all GPUs and the
>> second CRC for GEN8+ GPUs. The second CRC is invalid even for BYT which
>> is a GEN7 GPU. So, skip the second CRC even for GEN7 GPUs.
>>
>> Cc: Jani Nikula 
>> Cc: Tomi Sarvela 
>> Cc: Petri Latvala 
>> Cc: Ville Syrjälä 
>> Cc: Maarten Lankhorst 
>> Signed-off-by: Harish Chegondi 
>> References: https://bugs.freedesktop.org/show_bug.cgi?id=103191
>> ---
>>  drivers/gpu/drm/i915/i915_irq.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/i915_irq.c 
>> b/drivers/gpu/drm/i915/i915_irq.c
>> index 233211fde0ea..3809e9f7fae2 100644
>> --- a/drivers/gpu/drm/i915/i915_irq.c
>> +++ b/drivers/gpu/drm/i915/i915_irq.c
>> @@ -1775,11 +1775,11 @@ static void display_pipe_crc_irq_handler(struct 
>> drm_i915_private *dev_priv,
>>   * bonkers. So let's just wait for the next vblank and read
>>   * out the buggy result.
>>   *
>> - * On GEN8+ sometimes the second CRC is bonkers as well, so
>> + * On GEN7+ sometimes the second CRC is bonkers as well, so
>>   * don't trust that one either.
>>   */
>>  if (pipe_crc->skipped <= 0 ||
>> -(INTEL_GEN(dev_priv) >= 8 && pipe_crc->skipped == 1)) {
>> +(INTEL_GEN(dev_priv) >= 7 && pipe_crc->skipped == 1)) {
>>  pipe_crc->skipped++;
>>  spin_unlock(&pipe_crc->lock);
>>  return;
>
> I would be interested in the results, haswell is different from
> VLV. Has it ever been observed on that platform?

Good point. I looked at [1] which I presumed was on VLV, but it says
nothing about HSW.

BR,
Jani.



[1] https://bugs.freedesktop.org/show_bug.cgi?id=103191#c34


>

-- 
Jani Nikula, Intel Open Source Graphics Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH v5 08/11] drm/fb-helper: Remove drm_fb_helper_connector

2019-05-16 Thread Sam Ravnborg
Hi Noralf.

See few comments in the following.

Sam

On Mon, May 06, 2019 at 08:01:36PM +0200, Noralf Trønnes wrote:
> All drivers add all their connectors so there's no need to keep around an
> array of available connectors.
> 
> Rename functions which signature is changed since they will be moved to
> drm_client in a later patch.
> 
> Signed-off-by: Noralf Trønnes 
> ---
> @@ -1645,8 +1461,9 @@ static int drm_fb_helper_single_fb_probe(struct 
> drm_fb_helper *fb_helper,
>   struct drm_client_dev *client = &fb_helper->client;
>   int ret = 0;
>   int crtc_count = 0;
> - int i;
> + struct drm_connector_list_iter conn_iter;
>   struct drm_fb_helper_surface_size sizes;
> + struct drm_connector *connector;
>   struct drm_mode_set *mode_set;
>   int best_depth = 0;
>  
> @@ -1663,11 +1480,11 @@ static int drm_fb_helper_single_fb_probe(struct 
> drm_fb_helper *fb_helper,
>   if (preferred_bpp != sizes.surface_bpp)
>   sizes.surface_depth = sizes.surface_bpp = preferred_bpp;
>  
> - drm_fb_helper_for_each_connector(fb_helper, i) {
> - struct drm_fb_helper_connector *fb_helper_conn = 
> fb_helper->connector_info[i];
> + drm_connector_list_iter_begin(fb_helper->dev, &conn_iter);
> + drm_client_for_each_connector_iter(connector, &conn_iter) {
>   struct drm_cmdline_mode *cmdline_mode;

I fail to see when to use drm_client_for_each_connector_iter() and when
to use a simple for loop.
In this patch drm_fb_helper_for_each_connector() is here replaced by the
iterator variant and in many other placed a simple for loop.

The old code, in this place, would go through all connectors, but this
code will skip  DRM_MODE_CONNECTOR_WRITEBACK conectors.
So it does not like identical code.

>  
> - cmdline_mode = &fb_helper_conn->connector->cmdline_mode;
> + cmdline_mode = &connector->cmdline_mode;
>  
>   if (cmdline_mode->bpp_specified) {
>   switch (cmdline_mode->bpp) {
> @@ -1692,6 +1509,7 @@ static int drm_fb_helper_single_fb_probe(struct 
> drm_fb_helper *fb_helper,
>   break;
>   }
>   }
> + drm_connector_list_iter_end(&conn_iter);
>  
>   /*
>* If we run into a situation where, for example, the primary plane
> @@ -1876,26 +1694,12 @@ void drm_fb_helper_fill_info(struct fb_info *info,
>  }
>  EXPORT_SYMBOL(drm_fb_helper_fill_info);
>  
> +static void drm_client_connectors_enabled(struct drm_connector **connectors,
> +   unsigned int connector_count,
> +   bool *enabled)
>  {
>   bool any_enabled = false;
>   struct drm_connector *connector;
>   int i = 0;
>  
> - drm_fb_helper_for_each_connector(fb_helper, i) {
> - connector = fb_helper->connector_info[i]->connector;
> + for (i = 0; i < connector_count; i++) {
> + connector = connectors[i];
This is for example a place where the drm_fb_helper_for_each_connector()
is replaced by a simple for loop.
The simple for loop is nice and readable - just a comment replated to
the above comment.

>   struct drm_display_mode *mode = modes[i];
>   struct drm_crtc *crtc = crtcs[i];
>   struct drm_fb_offset *offset = &offsets[i];
>  
>   if (mode && crtc) {
>   struct drm_mode_set *modeset = 
> drm_client_find_modeset(client, crtc);
> - struct drm_connector *connector =
> - fb_helper->connector_info[i]->connector;
> + struct drm_connector *connector = connectors[i];
>  
>   DRM_DEBUG_KMS("desired mode %s set on crtc %d 
> (%d,%d)\n",
> mode->name, crtc->base.id, offset->x, 
> offset->y);
> @@ -2539,6 +2354,10 @@ static void drm_setup_crtcs(struct drm_fb_helper 
> *fb_helper,
>   kfree(modes);
>   kfree(offsets);
>   kfree(enabled);
> +free_connectors:
> + for (i = 0; i < connector_count; i++)
> + drm_connector_put(connectors[i]);
This may call drm_connector_put(NULL) as not all connectors are init.

> + kfree(connectors);
>  }
>  
>  /*
> @@ -2551,10 +2370,11 @@ static void drm_setup_crtcs(struct drm_fb_helper 
> *fb_helper,
>  static void drm_setup_crtcs_fb(struct drm_fb_helper *fb_helper)
>  {
>   struct drm_client_dev *client = &fb_helper->client;
> + struct drm_connector_list_iter conn_iter;
>   struct fb_info *info = fb_helper->fbdev;
>   unsigned int rotation, sw_rotations = 0;
> + struct drm_connector *connector;
>   struct drm_mode_set *modeset;
> - int i;
>  
>   mutex_lock(&client->modeset_mutex);
>   drm_client_for_each_modeset(modeset, client) {
> @@ -2571,10 +2391,8 @@ static void drm_setup_crtcs_fb(struct drm_fb_helper 
> *fb_helper)
>   }
>   mutex_unlock(&client->modeset_mutex);
>  
> - mutex_l

Re: [Intel-gfx] [v10 09/12] drm/i915:Enabled Modeset when HDR Infoframe changes

2019-05-16 Thread Ville Syrjälä
On Thu, May 16, 2019 at 10:54:14AM +, Shankar, Uma wrote:
> 
> 
> >-Original Message-
> >From: dri-devel [mailto:dri-devel-boun...@lists.freedesktop.org] On Behalf 
> >Of Ville
> >Syrjälä
> >Sent: Thursday, May 16, 2019 12:57 AM
> >To: Shankar, Uma 
> >Cc: dcasta...@chromium.org; jo...@kwiboo.se; intel-gfx@lists.freedesktop.org;
> >emil.l.veli...@gmail.com; dri-de...@lists.freedesktop.org; 
> >seanp...@chromium.org
> >Subject: Re: [v10 09/12] drm/i915:Enabled Modeset when HDR Infoframe changes
> >
> >On Tue, May 14, 2019 at 11:06:31PM +0530, Uma Shankar wrote:
> >> This patch enables modeset whenever HDR metadata needs to be updated
> >> to sink.
> >>
> >> v2: Addressed Shashank's review comments.
> >>
> >> v3: Added Shashank's RB.
> >>
> >> v4: Addressed Ville's review comments.
> >>
> >> Signed-off-by: Ville Syrjälä 
> >> Signed-off-by: Uma Shankar 
> >> Reviewed-by: Shashank Sharma 
> >> ---
> >>  drivers/gpu/drm/i915/intel_atomic.c | 14 +-
> >>  drivers/gpu/drm/i915/intel_hdmi.c   | 13 +
> >>  2 files changed, 26 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/intel_atomic.c
> >> b/drivers/gpu/drm/i915/intel_atomic.c
> >> index 58b8049..6b985e8 100644
> >> --- a/drivers/gpu/drm/i915/intel_atomic.c
> >> +++ b/drivers/gpu/drm/i915/intel_atomic.c
> >> @@ -105,6 +105,16 @@ int intel_digital_connector_atomic_set_property(struct
> >drm_connector *connector,
> >>return -EINVAL;
> >>  }
> >>
> >> +static bool blob_equal(const struct drm_property_blob *a,
> >> + const struct drm_property_blob *b) {
> >> +  if (a && b)
> >> +  return a->length == b->length &&
> >> +  !memcmp(a->data, b->data, a->length);
> >> +
> >> +  return !a == !b;
> >> +}
> >> +
> >>  int intel_digital_connector_atomic_check(struct drm_connector *conn,
> >> struct drm_connector_state *new_state) 
> >>  {
> >@@ -132,7 +142,9 @@
> >> int intel_digital_connector_atomic_check(struct drm_connector *conn,
> >>new_conn_state->base.colorspace != old_conn_state->base.colorspace 
> >> ||
> >>new_conn_state->base.picture_aspect_ratio != old_conn_state-
> >>base.picture_aspect_ratio ||
> >>new_conn_state->base.content_type != old_conn_state-
> >>base.content_type ||
> >> -  new_conn_state->base.scaling_mode != old_conn_state-
> >>base.scaling_mode)
> >> +  new_conn_state->base.scaling_mode != old_conn_state-
> >>base.scaling_mode ||
> >> +  !blob_equal(new_conn_state->base.hdr_output_metadata,
> >> +  old_conn_state->base.hdr_output_metadata))
> >>crtc_state->mode_changed = true;
> >>
> >>return 0;
> >> diff --git a/drivers/gpu/drm/i915/intel_hdmi.c
> >> b/drivers/gpu/drm/i915/intel_hdmi.c
> >> index b80406b..e97bf6e 100644
> >> --- a/drivers/gpu/drm/i915/intel_hdmi.c
> >> +++ b/drivers/gpu/drm/i915/intel_hdmi.c
> >> @@ -806,6 +806,11 @@ void intel_read_infoframe(struct intel_encoder 
> >> *encoder,
> >>return true;
> >>  }
> >>
> >> +static inline bool is_eotf_supported(u8 output_eotf, u8 sink_eotf) {
> >> +  return sink_eotf & BIT(output_eotf); }
> >> +
> >>  static bool
> >>  intel_hdmi_compute_drm_infoframe(struct intel_encoder *encoder,
> >> struct intel_crtc_state *crtc_state, @@ -814,6
> >+819,7 @@ void
> >> intel_read_infoframe(struct intel_encoder *encoder,
> >>struct hdmi_drm_infoframe *frame = &crtc_state->infoframes.drm.drm;
> >>struct hdr_output_metadata *hdr_metadata;
> >>struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
> >> +  struct drm_connector *connector = conn_state->connector;
> >>int ret;
> >>
> >>if (!(INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))) @@
> >> -828,6 +834,13 @@ void intel_read_infoframe(struct intel_encoder
> >> *encoder,
> >>
> >>hdr_metadata = conn_state->hdr_output_metadata->data;
> >>
> >> +  /* Sink EOTF is Bit map while infoframe is absolute values */
> >> +  if (!is_eotf_supported(hdr_metadata->hdmi_metadata_type1.eotf,
> >> +  connector->hdr_sink_metadata.hdmi_type1.eotf)) {
> >> +  DRM_ERROR("EOTF Not Supported\n");
> >> +  return true;
> >> +  }
> >
> >I was going to say that this should probably be in the
> >drm_set_hdr_metdata() or whatever it was called.
> >
> >But now I'm now wondering if we can even have this check here. What happens 
> >if
> >someone does a display switcheroo while the machine is suspended? Depends on
> >when we're going to reprobe the displays I suppose. Hmm. Maybe it's fine. We
> >already have a similar issue after all wih the has_hdmi2_sink stuff.
> >
> >Either way the user triggerable DRM_ERROR()s are at least a nono.
> 
> Ok, Will keep the check and move it inside the drm_set_hdr_metdata(). Also 
> downgrade
> the print as INFO instead of ERROR. Hope this is fine.

DEBUG_KMS like everything else.

> 
> >> +
> >>crtc_state->infoframes.enable |=
> >>intel_hdmi_inf

Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for Add HDR Metadata Parsing and handling in DRM layer (rev10)

2019-05-16 Thread Ville Syrjälä
On Thu, May 16, 2019 at 07:28:43AM +, Shankar, Uma wrote:
> 
> 
> >-Original Message-
> >From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
> >Sent: Thursday, May 16, 2019 1:02 AM
> >To: Shankar, Uma 
> >Cc: intel-gfx@lists.freedesktop.org
> >Subject: Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for Add HDR Metadata Parsing 
> >and handling
> >in DRM layer (rev10)
> >
> >On Wed, May 15, 2019 at 08:59:37AM +, Shankar, Uma wrote:
> >>
> >>
> >> >-Original Message-
> >> >From: Patchwork [mailto:patchw...@emeril.freedesktop.org]
> >> >Sent: Wednesday, May 15, 2019 6:54 AM
> >> >To: Shankar, Uma 
> >> >Cc: intel-gfx@lists.freedesktop.org
> >> >Subject: ✗ Fi.CI.IGT: failure for Add HDR Metadata Parsing and
> >> >handling in DRM layer
> >> >(rev10)
> >> >
> >> >== Series Details ==
> >> >
> >> >Series: Add HDR Metadata Parsing and handling in DRM layer (rev10)
> >> >URL   : https://patchwork.freedesktop.org/series/25091/
> >> >State : failure
> >> >
> >> >== Summary ==
> >> >
> >> >CI Bug Log - changes from CI_DRM_6081_full -> Patchwork_13017_full
> >> >
> >> >
> >> >Summary
> >> >---
> >> >
> >> >  **FAILURE**
> >> >
> >> >  Serious unknown changes coming with Patchwork_13017_full absolutely
> >> > need to be  verified manually.
> >> >
> >> >  If you think the reported changes have nothing to do with the
> >> > changes  introduced in Patchwork_13017_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_13017_full:
> >> >
> >> >### IGT changes ###
> >> >
> >> > Possible regressions 
> >> >
> >> >  * igt@gem_exec_suspend@basic-s3:
> >> >- shard-iclb: [PASS][1] -> [SKIP][2] +43 similar issues
> >> >   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6081/shard-
> >> >iclb6/igt@gem_exec_susp...@basic-s3.html
> >> >   [2]:
> >> >https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13017/shard-
> >> >iclb5/igt@gem_exec_susp...@basic-s3.html
> >> >
> >> >  * igt@kms_prop_blob@invalid-set-prop-any:
> >> >- shard-iclb: [PASS][3] -> [FAIL][4]
> >> >   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6081/shard-
> >> >iclb6/igt@kms_prop_b...@invalid-set-prop-any.html
> >> >   [4]:
> >> >https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13017/shard-
> >> >iclb5/igt@kms_prop_b...@invalid-set-prop-any.html
> >> >
> >>
> >> Hi Martin,
> >> These issues are unrelated to the changes made in this series. Can you
> >> please have a look and confirm.
> >
> >The kms_prop fails at least are real. Probably due to the bogus function 
> >arguements
> >to the replace_blob() thing I pointed out.
> 
> The CI IGT have a clean PASS now.

You mean it went from FAIL to PASS on its own? Why did that happen?

> Will anyways update the function arguments and make
> it consistent.
> 
> Regards,
> Uma Shankar
> 
> >--
> >Ville Syrjälä
> >Intel

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

Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for Add HDR Metadata Parsing and handling in DRM layer (rev10)

2019-05-16 Thread Shankar, Uma


>>
>> >-Original Message-
>> >From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
>> >Sent: Thursday, May 16, 2019 1:02 AM
>> >To: Shankar, Uma 
>> >Cc: intel-gfx@lists.freedesktop.org
>> >Subject: Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for Add HDR Metadata
>> >Parsing and handling in DRM layer (rev10)
>> >
>> >On Wed, May 15, 2019 at 08:59:37AM +, Shankar, Uma wrote:
>> >>
>> >>
>> >> >-Original Message-
>> >> >From: Patchwork [mailto:patchw...@emeril.freedesktop.org]
>> >> >Sent: Wednesday, May 15, 2019 6:54 AM
>> >> >To: Shankar, Uma 
>> >> >Cc: intel-gfx@lists.freedesktop.org
>> >> >Subject: ✗ Fi.CI.IGT: failure for Add HDR Metadata Parsing and
>> >> >handling in DRM layer
>> >> >(rev10)
>> >> >
>> >> >== Series Details ==
>> >> >
>> >> >Series: Add HDR Metadata Parsing and handling in DRM layer (rev10)
>> >> >URL   : https://patchwork.freedesktop.org/series/25091/
>> >> >State : failure
>> >> >
>> >> >== Summary ==
>> >> >
>> >> >CI Bug Log - changes from CI_DRM_6081_full -> Patchwork_13017_full
>> >> >
>> >> >
>> >> >Summary
>> >> >---
>> >> >
>> >> >  **FAILURE**
>> >> >
>> >> >  Serious unknown changes coming with Patchwork_13017_full
>> >> > absolutely need to be  verified manually.
>> >> >
>> >> >  If you think the reported changes have nothing to do with the
>> >> > changes  introduced in Patchwork_13017_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_13017_full:
>> >> >
>> >> >### IGT changes ###
>> >> >
>> >> > Possible regressions 
>> >> >
>> >> >  * igt@gem_exec_suspend@basic-s3:
>> >> >- shard-iclb: [PASS][1] -> [SKIP][2] +43 similar issues
>> >> >   [1]:
>> >> >https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6081/shard-
>> >> >iclb6/igt@gem_exec_susp...@basic-s3.html
>> >> >   [2]:
>> >> >https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13017/shard-
>> >> >iclb5/igt@gem_exec_susp...@basic-s3.html
>> >> >
>> >> >  * igt@kms_prop_blob@invalid-set-prop-any:
>> >> >- shard-iclb: [PASS][3] -> [FAIL][4]
>> >> >   [3]:
>> >> >https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6081/shard-
>> >> >iclb6/igt@kms_prop_b...@invalid-set-prop-any.html
>> >> >   [4]:
>> >> >https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13017/shard-
>> >> >iclb5/igt@kms_prop_b...@invalid-set-prop-any.html
>> >> >
>> >>
>> >> Hi Martin,
>> >> These issues are unrelated to the changes made in this series. Can
>> >> you please have a look and confirm.
>> >
>> >The kms_prop fails at least are real. Probably due to the bogus
>> >function arguements to the replace_blob() thing I pointed out.
>>
>> The CI IGT have a clean PASS now.
>
>You mean it went from FAIL to PASS on its own? Why did that happen?

It was giving a PASS on earlier version v9 with same changes. But on v10 it gave
this error. I was thinking it was re-run, on checking with Jani N he clarified 
that it
was re-reported. 

>> Will anyways update the function arguments and make it consistent.
>>
>> Regards,
>> Uma Shankar
>>
>> >--
>> >Ville Syrjälä
>> >Intel
>
>--
>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 v3 04/10] drm: Convert connector_helper_funcs->atomic_check to accept drm_atomic_state

2019-05-16 Thread Ville Syrjälä
On Thu, May 16, 2019 at 02:07:34PM +0200, Daniel Vetter wrote:
> On Thu, May 16, 2019 at 2:02 PM Laurent Pinchart
>  wrote:
> >
> > Hi Daniel,
> >
> > On Mon, May 13, 2019 at 04:47:47PM +0200, Daniel Vetter wrote:
> > > On Sat, May 11, 2019 at 10:12:02PM +0300, Laurent Pinchart wrote:
> > > > On Thu, May 02, 2019 at 03:49:46PM -0400, Sean Paul wrote:
> > > >> From: Sean Paul 
> > > >>
> > > >> Everyone who implements connector_helper_funcs->atomic_check reaches
> > > >> into the connector state to get the atomic state. Instead of continuing
> > > >> this pattern, change the callback signature to just give atomic state
> > > >> and let the driver determine what it does and does not need from it.
> > > >>
> > > >> Eventually all atomic functions should do this, but that's just too 
> > > >> much
> > > >> busy work for me.
> > > >
> > > > Given that drivers also access the connector state, isn't this slightly
> > > > more inefficient ?
> > >
> > > It's atomic code, we're trying to optimize for clean code at the expense
> > > of a bit of runtime overhead due to more pointer chasing. And I agree with
> > > the general push, the pile of old/new_state pointers of various objects
> > > we're passing around is confusing. Passing the overall drm_atomic_state
> > > seems much more reasonable, and with that we can get everything else. Plus
> > > it's much more obvious whether you have the old/new state (since that's
> > > explicit when you look it up from the drm_atomic_state).
> >
> > Yes, I agree it's cleaner. I just hope the atomic state tracking cost
> > can be kept under control :-)
> >
> > By the way, this is likely not going to happen as it would be way too
> > intrusive, but it would be nice to rename drm_atomic_state to
> > drm_atomic_transaction (or something similar). It doesn't model a state,
> > but a change between an old state to a new state. This confused me in
> > the past, and I'm sure it can still be confusing to newcomers.
> 
> Why are you the first to suggest this, this is awesome!

Can't quite tell if that's irony or not. Anyways, this has been
suggested before but no volunteers stepped forward.

> drm_atomic_state is indeed not a state, but a transaction representing
> how we go from the old to the new state.

On a semi-related topic, I've occasionally pondered about moving
mode_changed & co. from the obj states to the top level
state/transaction (maybe stored as a bitmask). But that would
definitely not be a trivial sed job.

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

Re: [Intel-gfx] [PATCH 1/1] drm/i915: skip the second CRC even for GEN 7 GPUs

2019-05-16 Thread Ville Syrjälä
On Thu, May 16, 2019 at 03:55:25PM +0300, Jani Nikula wrote:
> On Thu, 16 May 2019, Maarten Lankhorst  
> wrote:
> > Op 16-05-2019 om 07:58 schreef Harish Chegondi:
> >> display_pipe_crc_irq_handler() skips the first CRC for all GPUs and the
> >> second CRC for GEN8+ GPUs. The second CRC is invalid even for BYT which
> >> is a GEN7 GPU. So, skip the second CRC even for GEN7 GPUs.
> >>
> >> Cc: Jani Nikula 
> >> Cc: Tomi Sarvela 
> >> Cc: Petri Latvala 
> >> Cc: Ville Syrjälä 
> >> Cc: Maarten Lankhorst 
> >> Signed-off-by: Harish Chegondi 
> >> References: https://bugs.freedesktop.org/show_bug.cgi?id=103191
> >> ---
> >>  drivers/gpu/drm/i915/i915_irq.c | 4 ++--
> >>  1 file changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/i915_irq.c 
> >> b/drivers/gpu/drm/i915/i915_irq.c
> >> index 233211fde0ea..3809e9f7fae2 100644
> >> --- a/drivers/gpu/drm/i915/i915_irq.c
> >> +++ b/drivers/gpu/drm/i915/i915_irq.c
> >> @@ -1775,11 +1775,11 @@ static void display_pipe_crc_irq_handler(struct 
> >> drm_i915_private *dev_priv,
> >> * bonkers. So let's just wait for the next vblank and read
> >> * out the buggy result.
> >> *
> >> -   * On GEN8+ sometimes the second CRC is bonkers as well, so
> >> +   * On GEN7+ sometimes the second CRC is bonkers as well, so
> >> * don't trust that one either.
> >> */
> >>if (pipe_crc->skipped <= 0 ||
> >> -  (INTEL_GEN(dev_priv) >= 8 && pipe_crc->skipped == 1)) {
> >> +  (INTEL_GEN(dev_priv) >= 7 && pipe_crc->skipped == 1)) {
> >>pipe_crc->skipped++;
> >>spin_unlock(&pipe_crc->lock);
> >>return;
> >
> > I would be interested in the results, haswell is different from
> > VLV. Has it ever been observed on that platform?
> 
> Good point. I looked at [1] which I presumed was on VLV, but it says
> nothing about HSW.

This whole thing is just a pile of duct tape anyway. The reason(s)
for these funky crcs has never been properly analysed.

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

[Intel-gfx] [v11 06/12] drm/i915: Write HDR infoframe and send to panel

2019-05-16 Thread Uma Shankar
Enable writing of HDR metadata infoframe to panel.
The data will be provid by usersapace compositors, based
on blending policies and passsed to driver through a blob
property.

v2: Rebase

v3: Fixed a warning message

v4: Addressed Shashank's review comments

v5: Rebase. Added infoframe calculation in compute config.

v6: Addressed Shashank's review comment. Added HDR metadata
support from GEN10 onwards as per Shashank's recommendation.

v7: Addressed Shashank's review comments

v8: Added Shashank's RB.

v9: Addressed Ville's review comments.

Signed-off-by: Uma Shankar 
Reviewed-by: Shashank Sharma 
---
 drivers/gpu/drm/i915/intel_drv.h  |  1 +
 drivers/gpu/drm/i915/intel_hdmi.c | 44 +++
 2 files changed, 45 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 5258abb..40e2c52 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -910,6 +910,7 @@ struct intel_crtc_state {
union hdmi_infoframe avi;
union hdmi_infoframe spd;
union hdmi_infoframe hdmi;
+   union hdmi_infoframe drm;
} infoframes;
 
/* HDMI scrambling status */
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c 
b/drivers/gpu/drm/i915/intel_hdmi.c
index 92597d8..d3b8e09 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -573,6 +573,7 @@ static u32 hsw_infoframes_enabled(struct intel_encoder 
*encoder,
HDMI_INFOFRAME_TYPE_AVI,
HDMI_INFOFRAME_TYPE_SPD,
HDMI_INFOFRAME_TYPE_VENDOR,
+   HDMI_INFOFRAME_TYPE_DRM,
 };
 
 u32 intel_hdmi_infoframe_enable(unsigned int type)
@@ -795,6 +796,41 @@ void intel_read_infoframe(struct intel_encoder *encoder,
return true;
 }
 
+static bool
+intel_hdmi_compute_drm_infoframe(struct intel_encoder *encoder,
+struct intel_crtc_state *crtc_state,
+struct drm_connector_state *conn_state)
+{
+   struct hdmi_drm_infoframe *frame = &crtc_state->infoframes.drm.drm;
+   struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
+   int ret;
+
+   if (!(INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv)))
+   return true;
+
+   if (!crtc_state->has_infoframe)
+   return true;
+
+   if (!conn_state->hdr_output_metadata ||
+   conn_state->hdr_output_metadata->length == 0)
+   return true;
+
+   crtc_state->infoframes.enable |=
+   intel_hdmi_infoframe_enable(HDMI_INFOFRAME_TYPE_DRM);
+
+   ret = drm_hdmi_infoframe_set_hdr_metadata(frame, conn_state);
+   if (ret < 0) {
+   DRM_ERROR("couldn't set HDR metadata in infoframe\n");
+   return false;
+   }
+
+   ret = hdmi_drm_infoframe_check(frame);
+   if (WARN_ON(ret))
+   return false;
+
+   return true;
+}
+
 static void g4x_set_infoframes(struct intel_encoder *encoder,
   bool enable,
   const struct intel_crtc_state *crtc_state,
@@ -1180,6 +1216,9 @@ static void hsw_set_infoframes(struct intel_encoder 
*encoder,
intel_write_infoframe(encoder, crtc_state,
  HDMI_INFOFRAME_TYPE_VENDOR,
  &crtc_state->infoframes.hdmi);
+   intel_write_infoframe(encoder, crtc_state,
+ HDMI_INFOFRAME_TYPE_DRM,
+ &crtc_state->infoframes.drm);
 }
 
 void intel_dp_dual_mode_set_tmds_output(struct intel_hdmi *hdmi, bool enable)
@@ -2386,6 +2425,11 @@ int intel_hdmi_compute_config(struct intel_encoder 
*encoder,
return -EINVAL;
}
 
+   if (!intel_hdmi_compute_drm_infoframe(encoder, pipe_config, 
conn_state)) {
+   DRM_DEBUG_KMS("bad DRM infoframe\n");
+   return -EINVAL;
+   }
+
return 0;
 }
 
-- 
1.9.1

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

[Intel-gfx] [v11 01/12] drm: Add HDR source metadata property

2019-05-16 Thread Uma Shankar
This patch adds a blob property to get HDR metadata
information from userspace. This will be send as part
of AVI Infoframe to panel.

It also implements get() and set() functions for HDR output
metadata property.The blob data is received from userspace and
saved in connector state, the same is returned as blob in get
property call to userspace.

v2: Rebase and modified the metadata structure elements
as per Ville's POC changes.

v3: No Change

v4: Addressed Shashank's review comments

v5: Rebase.

v6: Addressed Brian Starkey's review comments, defined
new structure with header for dynamic metadata scalability.
Merge get/set property functions for metadata in this patch.

v7: Addressed Jonas Karlman review comments and defined separate
structure for infoframe to better align with CTA 861.G spec. Added
Shashank's RB.

v8: Addressed Ville's review comments. Moved sink metadata structure
out of uapi headers as suggested by Jonas Karlman.

v9: Rebase and addressed Jonas Karlman review comments.

v10: Addressed Ville's review comments, dropped the metdata_changed
state variable as its not needed anymore.

Signed-off-by: Uma Shankar 
Reviewed-by: Shashank Sharma 
---
 drivers/gpu/drm/drm_atomic_uapi.c | 12 
 drivers/gpu/drm/drm_connector.c   |  6 ++
 include/drm/drm_connector.h   | 10 ++
 include/drm/drm_mode_config.h |  7 +++
 include/linux/hdmi.h  | 26 ++
 include/uapi/drm/drm_mode.h   | 23 +++
 6 files changed, 84 insertions(+)

diff --git a/drivers/gpu/drm/drm_atomic_uapi.c 
b/drivers/gpu/drm/drm_atomic_uapi.c
index 4131e66..eb22e8b 100644
--- a/drivers/gpu/drm/drm_atomic_uapi.c
+++ b/drivers/gpu/drm/drm_atomic_uapi.c
@@ -676,6 +676,8 @@ static int drm_atomic_connector_set_property(struct 
drm_connector *connector,
 {
struct drm_device *dev = connector->dev;
struct drm_mode_config *config = &dev->mode_config;
+   bool replaced = false;
+   int ret;
 
if (property == config->prop_crtc_id) {
struct drm_crtc *crtc = drm_crtc_find(dev, file_priv, val);
@@ -726,6 +728,13 @@ static int drm_atomic_connector_set_property(struct 
drm_connector *connector,
 */
if (state->link_status != DRM_LINK_STATUS_GOOD)
state->link_status = val;
+   } else if (property == config->hdr_output_metadata_property) {
+   ret = drm_atomic_replace_property_blob_from_id(dev,
+   &state->hdr_output_metadata,
+   val,
+   sizeof(struct hdr_output_metadata), -1,
+   &replaced);
+   return ret;
} else if (property == config->aspect_ratio_property) {
state->picture_aspect_ratio = val;
} else if (property == config->content_type_property) {
@@ -814,6 +823,9 @@ static int drm_atomic_connector_set_property(struct 
drm_connector *connector,
*val = state->colorspace;
} else if (property == connector->scaling_mode_property) {
*val = state->scaling_mode;
+   } else if (property == config->hdr_output_metadata_property) {
+   *val = state->hdr_output_metadata ?
+   state->hdr_output_metadata->base.id : 0;
} else if (property == config->content_protection_property) {
*val = state->content_protection;
} else if (property == config->writeback_fb_id_property) {
diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c
index 11fcd25..c9ac8b9 100644
--- a/drivers/gpu/drm/drm_connector.c
+++ b/drivers/gpu/drm/drm_connector.c
@@ -1051,6 +1051,12 @@ int drm_connector_create_standard_properties(struct 
drm_device *dev)
return -ENOMEM;
dev->mode_config.non_desktop_property = prop;
 
+   prop = drm_property_create(dev, DRM_MODE_PROP_BLOB,
+  "HDR_OUTPUT_METADATA", 0);
+   if (!prop)
+   return -ENOMEM;
+   dev->mode_config.hdr_output_metadata_property = prop;
+
return 0;
 }
 
diff --git a/include/drm/drm_connector.h b/include/drm/drm_connector.h
index e257b87..f8f4003 100644
--- a/include/drm/drm_connector.h
+++ b/include/drm/drm_connector.h
@@ -603,6 +603,12 @@ struct drm_connector_state {
 * and the connector bpc limitations obtained from edid.
 */
u8 max_bpc;
+
+   /**
+* @hdr_output_metadata:
+* DRM blob property for HDR output metadata
+*/
+   struct drm_property_blob *hdr_output_metadata;
 };
 
 /**
@@ -1237,6 +1243,10 @@ struct drm_connector {
 * &drm_mode_config.connector_free_work.
 */
struct llist_node free_node;
+
+   /* HDR metdata */
+   struct hdr_output_metadata hdr_output_metadata;
+   struct hdr_sink_metadata hdr_sink_metadata;
 };
 
 #define obj_to_connector(x) container_of(x, str

[Intel-gfx] [v11 04/12] drm: Enable HDR infoframe support

2019-05-16 Thread Uma Shankar
Enable Dynamic Range and Mastering Infoframe for HDR
content, which is defined in CEA 861.3 spec.

The metadata will be computed based on blending
policy in userspace compositors and passed as a connector
property blob to driver. The same will be sent as infoframe
to panel which support HDR.

Added the const version of infoframe for DRM metadata
for HDR.

v2: Rebase and added Ville's POC changes.

v3: No Change

v4: Addressed Shashank's review comments and merged the
patch making drm infoframe function arguments as constant.

v5: Rebase

v6: Fixed checkpatch warnings with --strict option. Addressed
Shashank's review comments and added his RB.

v7: Addressed Brian Starkey's review comments. Merged 2 patches
into one.

v8: Addressed Jonas Karlman review comments.

v9: Addressed Jonas Karlman review comments.

v10: Addressed Ville's review comments.

v11: Added BUILD_BUG_ON and sizeof instead of magic numbers as
per Ville's comments.

Signed-off-by: Uma Shankar 
Signed-off-by: Ville Syrjälä 
Reviewed-by: Shashank Sharma 
---
 drivers/gpu/drm/drm_edid.c |  72 +
 drivers/video/hdmi.c   | 190 +
 include/drm/drm_edid.h |   5 ++
 include/linux/hdmi.h   |  28 +++
 4 files changed, 295 insertions(+)

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index a5ef9f4..73560c9 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -4904,6 +4904,78 @@ static bool is_hdmi2_sink(struct drm_connector 
*connector)
connector->display_info.color_formats & 
DRM_COLOR_FORMAT_YCRCB420;
 }
 
+static inline bool is_eotf_supported(u8 output_eotf, u8 sink_eotf)
+{
+   return sink_eotf & BIT(output_eotf);
+}
+
+/**
+ * drm_hdmi_infoframe_set_hdr_metadata() - fill an HDMI DRM infoframe with
+ * HDR metadata from userspace
+ * @frame: HDMI DRM infoframe
+ * @hdr_metadata: hdr_source_metadata info from userspace
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
+int
+drm_hdmi_infoframe_set_hdr_metadata(struct hdmi_drm_infoframe *frame,
+   const struct drm_connector_state 
*conn_state)
+{
+   struct drm_connector *connector;
+   struct hdr_output_metadata *hdr_metadata;
+   int err;
+
+   if (!frame || !conn_state)
+   return -EINVAL;
+
+   connector = conn_state->connector;
+
+   if (!conn_state->hdr_output_metadata)
+   return -EINVAL;
+
+   hdr_metadata = conn_state->hdr_output_metadata->data;
+
+   if (!hdr_metadata || !connector)
+   return -EINVAL;
+
+   /* Sink EOTF is Bit map while infoframe is absolute values */
+   if (!is_eotf_supported(hdr_metadata->hdmi_metadata_type1.eotf,
+   connector->hdr_sink_metadata.hdmi_type1.eotf)) {
+   DRM_DEBUG_KMS("EOTF Not Supported\n");
+   return -EINVAL;
+   }
+
+   err = hdmi_drm_infoframe_init(frame);
+   if (err < 0)
+   return err;
+
+   frame->eotf = hdr_metadata->hdmi_metadata_type1.eotf;
+   frame->metadata_type = hdr_metadata->hdmi_metadata_type1.metadata_type;
+
+   BUILD_BUG_ON(sizeof(frame->display_primaries) !=
+
sizeof(hdr_metadata->hdmi_metadata_type1.display_primaries));
+   BUILD_BUG_ON(sizeof(frame->white_point) !=
+sizeof(hdr_metadata->hdmi_metadata_type1.white_point));
+
+   memcpy(&frame->display_primaries,
+  &hdr_metadata->hdmi_metadata_type1.display_primaries,
+  sizeof(frame->display_primaries));
+
+   memcpy(&frame->white_point,
+  &hdr_metadata->hdmi_metadata_type1.white_point,
+  sizeof(frame->white_point));
+
+   frame->max_display_mastering_luminance =
+   
hdr_metadata->hdmi_metadata_type1.max_display_mastering_luminance;
+   frame->min_display_mastering_luminance =
+   
hdr_metadata->hdmi_metadata_type1.min_display_mastering_luminance;
+   frame->max_fall = hdr_metadata->hdmi_metadata_type1.max_fall;
+   frame->max_cll = hdr_metadata->hdmi_metadata_type1.max_cll;
+
+   return 0;
+}
+EXPORT_SYMBOL(drm_hdmi_infoframe_set_hdr_metadata);
+
 /**
  * drm_hdmi_avi_infoframe_from_display_mode() - fill an HDMI AVI infoframe with
  *  data from a DRM display mode
diff --git a/drivers/video/hdmi.c b/drivers/video/hdmi.c
index 799ae49..481f036 100644
--- a/drivers/video/hdmi.c
+++ b/drivers/video/hdmi.c
@@ -650,6 +650,150 @@ ssize_t hdmi_vendor_infoframe_pack(struct 
hdmi_vendor_infoframe *frame,
return 0;
 }
 
+/**
+ * hdmi_drm_infoframe_init() - initialize an HDMI Dynaminc Range and
+ * mastering infoframe
+ * @frame: HDMI DRM infoframe
+ *
+ * Returns 0 on success or a negative error code on failure.
+ */
+int hdmi_drm_infoframe_init(struct hdmi_drm_infoframe *frame)
+{
+   memset(frame, 0, sizeof(*frame));
+

[Intel-gfx] [v11 11/12] video/hdmi: Add Unpack function for DRM infoframe

2019-05-16 Thread Uma Shankar
Added unpack function for DRM infoframe for dynamic
range and mastering infoframe readout.

v2: Addressed Ville's review comments.

Suggested-by: Ville Syrjälä 
Signed-off-by: Uma Shankar 
---
 drivers/video/hdmi.c | 67 
 1 file changed, 67 insertions(+)

diff --git a/drivers/video/hdmi.c b/drivers/video/hdmi.c
index 481f036..b99ba01 100644
--- a/drivers/video/hdmi.c
+++ b/drivers/video/hdmi.c
@@ -1805,6 +1805,70 @@ static int hdmi_audio_infoframe_unpack(struct 
hdmi_audio_infoframe *frame,
 }
 
 /**
+ * hdmi_drm_infoframe_unpack() - unpack binary buffer to a HDMI DRM infoframe
+ * @frame: HDMI DRM infoframe
+ * @buffer: source buffer
+ * @size: size of buffer
+ *
+ * Unpacks the information contained in binary @buffer into a structured
+ * @frame of the HDMI Dynamic Range and Mastering (DRM) information frame.
+ * Also verifies the checksum as required by section 5.3.5 of the HDMI 1.4
+ * specification.
+ *
+ * Returns 0 on success or a negative error code on failure.
+ */
+static int hdmi_drm_infoframe_unpack(struct hdmi_drm_infoframe *frame,
+const void *buffer, size_t size)
+{
+   const u8 *ptr = buffer;
+   const u8 *temp;
+   u8 x_lsb, x_msb;
+   u8 y_lsb, y_msb;
+   int ret;
+   int i;
+
+   if (size < HDMI_INFOFRAME_SIZE(DRM))
+   return -EINVAL;
+
+   if (ptr[0] != HDMI_INFOFRAME_TYPE_DRM ||
+   ptr[1] != 1 ||
+   ptr[2] != HDMI_DRM_INFOFRAME_SIZE)
+   return -EINVAL;
+
+   if (hdmi_infoframe_checksum(buffer, HDMI_INFOFRAME_SIZE(DRM)) != 0)
+   return -EINVAL;
+
+   ret = hdmi_drm_infoframe_init(frame);
+   if (ret)
+   return ret;
+
+   ptr += HDMI_INFOFRAME_HEADER_SIZE;
+
+   frame->eotf = ptr[0] & 0x7;
+   frame->metadata_type = ptr[1] & 0x7;
+
+   temp = ptr + 2;
+   for (i = 0; i < 3; i++) {
+   x_lsb = *temp++;
+   x_msb = *temp++;
+   frame->display_primaries[i].x =  (x_msb << 8) | x_lsb;
+   y_lsb = *temp++;
+   y_msb = *temp++;
+   frame->display_primaries[i].y = (y_msb << 8) | y_lsb;
+   }
+
+   frame->white_point.x = (ptr[15] << 8) | ptr[14];
+   frame->white_point.y = (ptr[17] << 8) | ptr[16];
+
+   frame->max_display_mastering_luminance = (ptr[19] << 8) | ptr[18];
+   frame->min_display_mastering_luminance = (ptr[21] << 8) | ptr[20];
+   frame->max_cll = (ptr[23] << 8) | ptr[22];
+   frame->max_fall = (ptr[25] << 8) | ptr[24];
+
+   return 0;
+}
+
+/**
  * hdmi_infoframe_unpack() - unpack binary buffer to a HDMI infoframe
  * @frame: HDMI infoframe
  * @buffer: source buffer
@@ -1830,6 +1894,9 @@ int hdmi_infoframe_unpack(union hdmi_infoframe *frame,
case HDMI_INFOFRAME_TYPE_AVI:
ret = hdmi_avi_infoframe_unpack(&frame->avi, buffer, size);
break;
+   case HDMI_INFOFRAME_TYPE_DRM:
+   ret = hdmi_drm_infoframe_unpack(&frame->drm, buffer, size);
+   break;
case HDMI_INFOFRAME_TYPE_SPD:
ret = hdmi_spd_infoframe_unpack(&frame->spd, buffer, size);
break;
-- 
1.9.1

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

[Intel-gfx] [v11 02/12] drm: Add reference counting on HDR metadata blob

2019-05-16 Thread Uma Shankar
From: Jonas Karlman 

This adds reference count for HDR metadata blob,
handled as part of duplicate and destroy connector
state functions.

v2: Removed the hdr_metadata_changed initialization as
the variable is dropped and not required.

Signed-off-by: Jonas Karlman 
Signed-off-by: Uma Shankar 
---
 drivers/gpu/drm/drm_atomic_state_helper.c | 5 +
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/drm_atomic_state_helper.c 
b/drivers/gpu/drm/drm_atomic_state_helper.c
index ac929f6..ec13823 100644
--- a/drivers/gpu/drm/drm_atomic_state_helper.c
+++ b/drivers/gpu/drm/drm_atomic_state_helper.c
@@ -391,6 +391,9 @@ void drm_atomic_helper_connector_reset(struct drm_connector 
*connector)
drm_connector_get(connector);
state->commit = NULL;
 
+   if (state->hdr_output_metadata)
+   drm_property_blob_get(state->hdr_output_metadata);
+
/* Don't copy over a writeback job, they are used only once */
state->writeback_job = NULL;
 }
@@ -438,6 +441,8 @@ struct drm_connector_state *
 
if (state->writeback_job)
drm_writeback_cleanup_job(state->writeback_job);
+
+   drm_property_blob_put(state->hdr_output_metadata);
 }
 EXPORT_SYMBOL(__drm_atomic_helper_connector_destroy_state);
 
-- 
1.9.1

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

[Intel-gfx] [v11 00/12] Add HDR Metadata Parsing and handling in DRM layer

2019-05-16 Thread Uma Shankar
This patch series enables HDR support in drm. It basically defines
HDR metadata structures, property to pass content (after blending)
metadata from user space compositors to driver.

Dynamic Range and Mastering infoframe creation and sending.

ToDo:
1. We need to get the color framework in place for all planes
   which support HDR content in hardware. This is already in progres
   and patches are out for review in mailing list.
2. UserSpace/Compositors: Blending policies and metadata blob
   creation and passing to driver. Work is already in progress
   by Intel's middleware teams on wayland and the patches for
   the same are in review.

A POC has already been developed by Ville based on wayland. Please refer
below link to see the component interactions and usage:
https://lists.freedesktop.org/archives/wayland-devel/2017-December/036403.html

v2: Updated Ville's POC changes to the patch series.Incorporated cleanups
and fixes from Ville. Rebase on latest drm-tip.

v3: Fixed a warning causing builds to break on CI. No major change.

v4: Addressed Shashank's review comments.

v5: Rebase on top of Ville's infoframe refactoring changes. Fixed non modeset
case for HDR metadata update. Dropped a redundant patch.

v6: Addressed Shashank's review comments and added RB's received.

v7: Squashed 2 patches, dropped 1 change and addressed Brian Starkey's and
Shashank's review comments.

v8: Addressed Jonas Karlman review comments. Added Shashank's RB to the series,
fixed a WARN_ON on BYT/CHT.

v9: Addressed Ville and Jonas Karlman's review comments. Added the infoframe
state readout and metadata reference count.

v10: Addressed review comments from Jonas and Ville. Dropped one patch related
to i915 fastset handling as per Ville's feedback.

v11: Addressed Ville's review comments.

Note: v9 version is already tested with Kodi and a confirmation from team kodi 
has been
received. Branch details for the same as below:
https://github.com/xbmc/xbmc/tree/feature_drmprime-vaapi

v9 of this series is:
Tested-by: Jonas Karlman 

Jonas Karlman (1):
  drm: Add reference counting on HDR metadata blob

Uma Shankar (9):
  drm: Add HDR source metadata property
  drm: Parse HDR metadata info from EDID
  drm: Enable HDR infoframe support
  drm/i915: Attach HDR metadata property to connector
  drm/i915: Write HDR infoframe and send to panel
  drm/i915:Enabled Modeset when HDR Infoframe changes
  drm/i915: Added DRM Infoframe handling for BYT/CHT
  video/hdmi: Add Unpack function for DRM infoframe
  drm/i915: Add state readout for DRM infoframe

Ville Syrjälä (2):
  drm: Add HLG EOTF
  drm/i915: Enable infoframes on GLK+ for HDR

 drivers/gpu/drm/drm_atomic_state_helper.c |   5 +
 drivers/gpu/drm/drm_atomic_uapi.c |  12 ++
 drivers/gpu/drm/drm_connector.c   |   6 +
 drivers/gpu/drm/drm_edid.c| 124 ++
 drivers/gpu/drm/i915/i915_reg.h   |   4 +
 drivers/gpu/drm/i915/intel_atomic.c   |  14 +-
 drivers/gpu/drm/i915/intel_ddi.c  |   3 +
 drivers/gpu/drm/i915/intel_display.c  |   1 +
 drivers/gpu/drm/i915/intel_drv.h  |   1 +
 drivers/gpu/drm/i915/intel_hdmi.c |  67 +++-
 drivers/video/hdmi.c  | 257 ++
 include/drm/drm_connector.h   |  10 ++
 include/drm/drm_edid.h|   5 +
 include/drm/drm_mode_config.h |   7 +
 include/linux/hdmi.h  |  55 +++
 include/uapi/drm/drm_mode.h   |  23 +++
 16 files changed, 589 insertions(+), 5 deletions(-)

-- 
1.9.1

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

[Intel-gfx] [v11 03/12] drm: Parse HDR metadata info from EDID

2019-05-16 Thread Uma Shankar
HDR metadata block is introduced in CEA-861.3 spec.
Parsing the same to get the panel's HDR metadata.

v2: Rebase and added Ville's POC changes to the patch.

v3: No Change

v4: Addressed Shashank's review comments

v5: Addressed Shashank's comment and added his RB.

v6: Addressed Jonas Karlman review comments.

v7: Adressed Ville's review comments and fixed the issue
with length handling.

v8: Put the length check as per the convention followed in
existing code, as suggested by Ville.

Signed-off-by: Uma Shankar 
Reviewed-by: Shashank Sharma 
---
 drivers/gpu/drm/drm_edid.c | 51 ++
 1 file changed, 51 insertions(+)

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 852bdd8..a5ef9f4 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -2852,6 +2852,7 @@ static int drm_cvt_modes(struct drm_connector *connector,
 #define VIDEO_BLOCK 0x02
 #define VENDOR_BLOCK0x03
 #define SPEAKER_BLOCK  0x04
+#define HDR_STATIC_METADATA_BLOCK  0x6
 #define USE_EXTENDED_TAG 0x07
 #define EXT_VIDEO_CAPABILITY_BLOCK 0x00
 #define EXT_VIDEO_DATA_BLOCK_420   0x0E
@@ -3834,6 +3835,54 @@ static void fixup_detailed_cea_mode_clock(struct 
drm_display_mode *mode)
mode->clock = clock;
 }
 
+static bool cea_db_is_hdmi_hdr_metadata_block(const u8 *db)
+{
+   if (cea_db_tag(db) != USE_EXTENDED_TAG)
+   return false;
+
+   if (db[1] != HDR_STATIC_METADATA_BLOCK)
+   return false;
+
+   if (cea_db_payload_len(db) < 3)
+   return false;
+
+   return true;
+}
+
+static uint8_t eotf_supported(const u8 *edid_ext)
+{
+   return edid_ext[2] &
+   (BIT(HDMI_EOTF_TRADITIONAL_GAMMA_SDR) |
+BIT(HDMI_EOTF_TRADITIONAL_GAMMA_HDR) |
+BIT(HDMI_EOTF_SMPTE_ST2084));
+}
+
+static uint8_t hdr_metadata_type(const u8 *edid_ext)
+{
+   return edid_ext[3] &
+   BIT(HDMI_STATIC_METADATA_TYPE1);
+}
+
+static void
+drm_parse_hdr_metadata_block(struct drm_connector *connector, const u8 *db)
+{
+   u16 len;
+
+   len = cea_db_payload_len(db);
+
+   connector->hdr_sink_metadata.hdmi_type1.eotf =
+   eotf_supported(db);
+   connector->hdr_sink_metadata.hdmi_type1.metadata_type =
+   hdr_metadata_type(db);
+
+   if (len >= 4)
+   connector->hdr_sink_metadata.hdmi_type1.max_cll = db[4];
+   if (len >= 5)
+   connector->hdr_sink_metadata.hdmi_type1.max_fall = db[5];
+   if (len >= 6)
+   connector->hdr_sink_metadata.hdmi_type1.min_cll = db[6];
+}
+
 static void
 drm_parse_hdmi_vsdb_audio(struct drm_connector *connector, const u8 *db)
 {
@@ -4461,6 +4510,8 @@ static void drm_parse_cea_ext(struct drm_connector 
*connector,
drm_parse_y420cmdb_bitmap(connector, db);
if (cea_db_is_vcdb(db))
drm_parse_vcdb(connector, db);
+   if (cea_db_is_hdmi_hdr_metadata_block(db))
+   drm_parse_hdr_metadata_block(connector, db);
}
 }
 
-- 
1.9.1

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

[Intel-gfx] [v11 10/12] drm/i915: Added DRM Infoframe handling for BYT/CHT

2019-05-16 Thread Uma Shankar
BYT/CHT doesn't support DRM Infoframe. This caused
a WARN_ON due to a missing CASE while executing
intel_hdmi_infoframes_enabled function. This patch
fixes the same.

Signed-off-by: Uma Shankar 
---
 drivers/gpu/drm/i915/intel_hdmi.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_hdmi.c 
b/drivers/gpu/drm/i915/intel_hdmi.c
index 8bd7c07..90e0587 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -129,6 +129,8 @@ static u32 g4x_infoframe_enable(unsigned int type)
return VIDEO_DIP_ENABLE_SPD;
case HDMI_INFOFRAME_TYPE_VENDOR:
return VIDEO_DIP_ENABLE_VENDOR;
+   case HDMI_INFOFRAME_TYPE_DRM:
+   return 0;
default:
MISSING_CASE(type);
return 0;
-- 
1.9.1

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

[Intel-gfx] [v11 08/12] drm/i915: Enable infoframes on GLK+ for HDR

2019-05-16 Thread Uma Shankar
From: Ville Syrjälä 

This patch enables infoframes on GLK+ to be
used to send HDR metadata to HDMI sink.

v2: Addressed Shashank's review comment.

v3: Addressed Shashank's review comment.

v4: Added Shashank's RB.

v5: Dropped hdr_metadata_change check while modeset, as per
Ville's suggestion.

Signed-off-by: Ville Syrjälä 
Signed-off-by: Uma Shankar 
Reviewed-by: Shashank Sharma 
---
 drivers/gpu/drm/i915/i915_reg.h   |  4 
 drivers/gpu/drm/i915/intel_hdmi.c | 19 +++
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index e97c47f..d3f5510 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -4694,6 +4694,7 @@ enum {
 #define   VIDEO_DIP_FREQ_MASK  (3 << 16)
 /* HSW and later: */
 #define   DRM_DIP_ENABLE   (1 << 28)
+#define   VIDEO_DIP_ENABLE_DRM_GLK (1 << 28)
 #define   PSR_VSC_BIT_7_SET(1 << 27)
 #define   VSC_SELECT_MASK  (0x3 << 25)
 #define   VSC_SELECT_SHIFT 25
@@ -8146,6 +8147,7 @@ enum {
 #define _HSW_VIDEO_DIP_SPD_DATA_A  0x602A0
 #define _HSW_VIDEO_DIP_GMP_DATA_A  0x602E0
 #define _HSW_VIDEO_DIP_VSC_DATA_A  0x60320
+#define _GLK_VIDEO_DIP_DRM_DATA_A  0x60440
 #define _HSW_VIDEO_DIP_AVI_ECC_A   0x60240
 #define _HSW_VIDEO_DIP_VS_ECC_A0x60280
 #define _HSW_VIDEO_DIP_SPD_ECC_A   0x602C0
@@ -8159,6 +8161,7 @@ enum {
 #define _HSW_VIDEO_DIP_SPD_DATA_B  0x612A0
 #define _HSW_VIDEO_DIP_GMP_DATA_B  0x612E0
 #define _HSW_VIDEO_DIP_VSC_DATA_B  0x61320
+#define _GLK_VIDEO_DIP_DRM_DATA_B  0x61440
 #define _HSW_VIDEO_DIP_BVI_ECC_B   0x61240
 #define _HSW_VIDEO_DIP_VS_ECC_B0x61280
 #define _HSW_VIDEO_DIP_SPD_ECC_B   0x612C0
@@ -8184,6 +8187,7 @@ enum {
 #define HSW_TVIDEO_DIP_SPD_DATA(trans, i)  _MMIO_TRANS2(trans, 
_HSW_VIDEO_DIP_SPD_DATA_A + (i) * 4)
 #define HSW_TVIDEO_DIP_GMP_DATA(trans, i)  _MMIO_TRANS2(trans, 
_HSW_VIDEO_DIP_GMP_DATA_A + (i) * 4)
 #define HSW_TVIDEO_DIP_VSC_DATA(trans, i)  _MMIO_TRANS2(trans, 
_HSW_VIDEO_DIP_VSC_DATA_A + (i) * 4)
+#define GLK_TVIDEO_DIP_DRM_DATA(trans, i)  _MMIO_TRANS2(trans, 
_GLK_VIDEO_DIP_DRM_DATA_A + (i) * 4)
 #define ICL_VIDEO_DIP_PPS_DATA(trans, i)   _MMIO_TRANS2(trans, 
_ICL_VIDEO_DIP_PPS_DATA_A + (i) * 4)
 #define ICL_VIDEO_DIP_PPS_ECC(trans, i)_MMIO_TRANS2(trans, 
_ICL_VIDEO_DIP_PPS_ECC_A + (i) * 4)
 
diff --git a/drivers/gpu/drm/i915/intel_hdmi.c 
b/drivers/gpu/drm/i915/intel_hdmi.c
index d3b8e09..8bd7c07 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -152,6 +152,8 @@ static u32 hsw_infoframe_enable(unsigned int type)
return VIDEO_DIP_ENABLE_SPD_HSW;
case HDMI_INFOFRAME_TYPE_VENDOR:
return VIDEO_DIP_ENABLE_VS_HSW;
+   case HDMI_INFOFRAME_TYPE_DRM:
+   return VIDEO_DIP_ENABLE_DRM_GLK;
default:
MISSING_CASE(type);
return 0;
@@ -177,6 +179,8 @@ static u32 hsw_infoframe_enable(unsigned int type)
return HSW_TVIDEO_DIP_SPD_DATA(cpu_transcoder, i);
case HDMI_INFOFRAME_TYPE_VENDOR:
return HSW_TVIDEO_DIP_VS_DATA(cpu_transcoder, i);
+   case HDMI_INFOFRAME_TYPE_DRM:
+   return GLK_TVIDEO_DIP_DRM_DATA(cpu_transcoder, i);
default:
MISSING_CASE(type);
return INVALID_MMIO_REG;
@@ -560,10 +564,16 @@ static u32 hsw_infoframes_enabled(struct intel_encoder 
*encoder,
 {
struct drm_i915_private *dev_priv = to_i915(encoder->base.dev);
u32 val = I915_READ(HSW_TVIDEO_DIP_CTL(pipe_config->cpu_transcoder));
+   u32 mask;
 
-   return val & (VIDEO_DIP_ENABLE_VSC_HSW | VIDEO_DIP_ENABLE_AVI_HSW |
- VIDEO_DIP_ENABLE_GCP_HSW | VIDEO_DIP_ENABLE_VS_HSW |
- VIDEO_DIP_ENABLE_GMP_HSW | VIDEO_DIP_ENABLE_SPD_HSW);
+   mask = (VIDEO_DIP_ENABLE_VSC_HSW | VIDEO_DIP_ENABLE_AVI_HSW |
+   VIDEO_DIP_ENABLE_GCP_HSW | VIDEO_DIP_ENABLE_VS_HSW |
+   VIDEO_DIP_ENABLE_GMP_HSW | VIDEO_DIP_ENABLE_SPD_HSW);
+
+   if (INTEL_GEN(dev_priv) >= 10 || IS_GEMINILAKE(dev_priv))
+   mask |= VIDEO_DIP_ENABLE_DRM_GLK;
+
+   return val & mask;
 }
 
 static const u8 infoframe_type_to_idx[] = {
@@ -1193,7 +1203,8 @@ static void hsw_set_infoframes(struct intel_encoder 
*encoder,
 
val &= ~(VIDEO_DIP_ENABLE_VSC_HSW | VIDEO_DIP_ENABLE_AVI_HSW |
 VIDEO_DIP_ENABLE_GCP_HSW | VIDEO_DIP_ENABLE_VS_HSW |
-VIDEO_DIP_ENABLE_GMP_HSW | VIDEO_DIP_ENABLE_SPD_HSW);
+VIDEO_DIP_ENABLE_GMP_HSW | VIDEO_DIP_ENABLE_SPD_HSW |
+VIDEO_DIP_ENABLE_DRM_GLK);
 
if (!enable) {
I915_WRITE(reg, val);
-- 
1.9.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
htt

[Intel-gfx] [v11 12/12] drm/i915: Add state readout for DRM infoframe

2019-05-16 Thread Uma Shankar
Added state readout for DRM infoframe and enabled
state validation for DRM infoframe.

v2: Addressed Ville's review comments and dropped the
unused drm infoframe read at intel_hdmi_init.

v3: Removed a redundant platform check as per Ville's
comment.

Signed-off-by: Uma Shankar 
---
 drivers/gpu/drm/i915/intel_ddi.c | 3 +++
 drivers/gpu/drm/i915/intel_display.c | 1 +
 2 files changed, 4 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index 0af47f3..c789de9 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -3834,6 +3834,9 @@ void intel_ddi_get_config(struct intel_encoder *encoder,
intel_read_infoframe(encoder, pipe_config,
 HDMI_INFOFRAME_TYPE_VENDOR,
 &pipe_config->infoframes.hdmi);
+   intel_read_infoframe(encoder, pipe_config,
+HDMI_INFOFRAME_TYPE_DRM,
+&pipe_config->infoframes.drm);
 }
 
 static enum intel_output_type
diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index e35ba8d..c89b214 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -12274,6 +12274,7 @@ static bool fastboot_enabled(struct drm_i915_private 
*dev_priv)
PIPE_CONF_CHECK_INFOFRAME(avi);
PIPE_CONF_CHECK_INFOFRAME(spd);
PIPE_CONF_CHECK_INFOFRAME(hdmi);
+   PIPE_CONF_CHECK_INFOFRAME(drm);
 
 #undef PIPE_CONF_CHECK_X
 #undef PIPE_CONF_CHECK_I
-- 
1.9.1

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

[Intel-gfx] [v11 09/12] drm/i915:Enabled Modeset when HDR Infoframe changes

2019-05-16 Thread Uma Shankar
This patch enables modeset whenever HDR metadata
needs to be updated to sink.

v2: Addressed Shashank's review comments.

v3: Added Shashank's RB.

v4: Addressed Ville's review comments.

v5: Addressed Ville's review comments.

Signed-off-by: Ville Syrjälä 
Signed-off-by: Uma Shankar 
Reviewed-by: Shashank Sharma 
---
 drivers/gpu/drm/i915/intel_atomic.c | 14 +-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/intel_atomic.c 
b/drivers/gpu/drm/i915/intel_atomic.c
index 58b8049..6b985e8 100644
--- a/drivers/gpu/drm/i915/intel_atomic.c
+++ b/drivers/gpu/drm/i915/intel_atomic.c
@@ -105,6 +105,16 @@ int intel_digital_connector_atomic_set_property(struct 
drm_connector *connector,
return -EINVAL;
 }
 
+static bool blob_equal(const struct drm_property_blob *a,
+  const struct drm_property_blob *b)
+{
+   if (a && b)
+   return a->length == b->length &&
+   !memcmp(a->data, b->data, a->length);
+
+   return !a == !b;
+}
+
 int intel_digital_connector_atomic_check(struct drm_connector *conn,
 struct drm_connector_state *new_state)
 {
@@ -132,7 +142,9 @@ int intel_digital_connector_atomic_check(struct 
drm_connector *conn,
new_conn_state->base.colorspace != old_conn_state->base.colorspace 
||
new_conn_state->base.picture_aspect_ratio != 
old_conn_state->base.picture_aspect_ratio ||
new_conn_state->base.content_type != 
old_conn_state->base.content_type ||
-   new_conn_state->base.scaling_mode != 
old_conn_state->base.scaling_mode)
+   new_conn_state->base.scaling_mode != 
old_conn_state->base.scaling_mode ||
+   !blob_equal(new_conn_state->base.hdr_output_metadata,
+   old_conn_state->base.hdr_output_metadata))
crtc_state->mode_changed = true;
 
return 0;
-- 
1.9.1

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

[Intel-gfx] [v11 05/12] drm/i915: Attach HDR metadata property to connector

2019-05-16 Thread Uma Shankar
Attach HDR metadata property to connector object.

v2: Rebase

v3: Updated the property name as per updated name
while creating hdr metadata property

Signed-off-by: Uma Shankar 
Reviewed-by: Shashank Sharma 
---
 drivers/gpu/drm/i915/intel_hdmi.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/gpu/drm/i915/intel_hdmi.c 
b/drivers/gpu/drm/i915/intel_hdmi.c
index 2a4086c..92597d8 100644
--- a/drivers/gpu/drm/i915/intel_hdmi.c
+++ b/drivers/gpu/drm/i915/intel_hdmi.c
@@ -2724,6 +2724,8 @@ static void intel_hdmi_destroy(struct drm_connector 
*connector)
 
drm_connector_attach_content_type_property(connector);
connector->state->picture_aspect_ratio = HDMI_PICTURE_ASPECT_NONE;
+   drm_object_attach_property(&connector->base,
+  
connector->dev->mode_config.hdr_output_metadata_property, 0);
 
if (!HAS_GMCH(dev_priv))
drm_connector_attach_max_bpc_property(connector, 8, 12);
-- 
1.9.1

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

[Intel-gfx] [v11 07/12] drm: Add HLG EOTF

2019-05-16 Thread Uma Shankar
From: Ville Syrjälä 

ADD HLG EOTF to the list of EOTF transfer functions supported.
Hybrid Log-Gamma (HLG) is a high dynamic range (HDR) standard.
HLG defines a nonlinear transfer function in which the lower
half of the signal values use a gamma curve and the upper half
of the signal values use a logarithmic curve.

v2: Rebase

v3: Fixed a warning message

v4: Addressed Shashank's review comments

v5: Addressed Jonas Karlman's review comment and dropped the i915
tag from header.

Signed-off-by: Ville Syrjälä 
Signed-off-by: Uma Shankar 
Reviewed-by: Shashank Sharma 
---
 drivers/gpu/drm/drm_edid.c | 3 ++-
 include/linux/hdmi.h   | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/drm_edid.c b/drivers/gpu/drm/drm_edid.c
index 73560c9..262510c 100644
--- a/drivers/gpu/drm/drm_edid.c
+++ b/drivers/gpu/drm/drm_edid.c
@@ -3854,7 +3854,8 @@ static uint8_t eotf_supported(const u8 *edid_ext)
return edid_ext[2] &
(BIT(HDMI_EOTF_TRADITIONAL_GAMMA_SDR) |
 BIT(HDMI_EOTF_TRADITIONAL_GAMMA_HDR) |
-BIT(HDMI_EOTF_SMPTE_ST2084));
+BIT(HDMI_EOTF_SMPTE_ST2084) |
+BIT(HDMI_EOTF_BT_2100_HLG));
 }
 
 static uint8_t hdr_metadata_type(const u8 *edid_ext)
diff --git a/include/linux/hdmi.h b/include/linux/hdmi.h
index bcf3c6c..ee55ba5 100644
--- a/include/linux/hdmi.h
+++ b/include/linux/hdmi.h
@@ -162,6 +162,7 @@ enum hdmi_eotf {
HDMI_EOTF_TRADITIONAL_GAMMA_SDR,
HDMI_EOTF_TRADITIONAL_GAMMA_HDR,
HDMI_EOTF_SMPTE_ST2084,
+   HDMI_EOTF_BT_2100_HLG,
 };
 
 struct hdmi_avi_infoframe {
-- 
1.9.1

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

Re: [Intel-gfx] [PATCH v5 08/11] drm/fb-helper: Remove drm_fb_helper_connector

2019-05-16 Thread Noralf Trønnes


Den 16.05.2019 15.07, skrev Sam Ravnborg:
> Hi Noralf.
> 
> See few comments in the following.
> 
>   Sam
> 
> On Mon, May 06, 2019 at 08:01:36PM +0200, Noralf Trønnes wrote:
>> All drivers add all their connectors so there's no need to keep around an
>> array of available connectors.

I could expand on this text a little:

All drivers add all their connectors so there's no need to keep around an
array of available connectors. Instead we just put the useable (not
writeback) connectors in a temporary array using
drm_client_for_each_connector_iter() everytime we probe the outputs.
Other places where it's necessary to look at the connectors, we just
iterate over them using the same iterator function.

>>
>> Rename functions which signature is changed since they will be moved to
>> drm_client in a later patch.
>>
>> Signed-off-by: Noralf Trønnes 
>> ---
>> @@ -1645,8 +1461,9 @@ static int drm_fb_helper_single_fb_probe(struct 
>> drm_fb_helper *fb_helper,
>>  struct drm_client_dev *client = &fb_helper->client;
>>  int ret = 0;
>>  int crtc_count = 0;
>> -int i;
>> +struct drm_connector_list_iter conn_iter;
>>  struct drm_fb_helper_surface_size sizes;
>> +struct drm_connector *connector;
>>  struct drm_mode_set *mode_set;
>>  int best_depth = 0;
>>  
>> @@ -1663,11 +1480,11 @@ static int drm_fb_helper_single_fb_probe(struct 
>> drm_fb_helper *fb_helper,
>>  if (preferred_bpp != sizes.surface_bpp)
>>  sizes.surface_depth = sizes.surface_bpp = preferred_bpp;
>>  
>> -drm_fb_helper_for_each_connector(fb_helper, i) {
>> -struct drm_fb_helper_connector *fb_helper_conn = 
>> fb_helper->connector_info[i];
>> +drm_connector_list_iter_begin(fb_helper->dev, &conn_iter);
>> +drm_client_for_each_connector_iter(connector, &conn_iter) {
>>  struct drm_cmdline_mode *cmdline_mode;
> 
> I fail to see when to use drm_client_for_each_connector_iter() and when
> to use a simple for loop.
> In this patch drm_fb_helper_for_each_connector() is here replaced by the
> iterator variant and in many other placed a simple for loop.
> 

When I use a for loop it's in the 'probe for outputs' path where we are
operating on a temporary connector array that is created in
drm_setup_crtcs().

> The old code, in this place, would go through all connectors, but this
> code will skipDRM_MODE_CONNECTOR_WRITEBACK conectors.
> So it does not like identical code.
> 

If you look at the removed drm_fb_helper_single_add_all_connectors()
you'll see that it skips writeback connectors.

>>  
>> -cmdline_mode = &fb_helper_conn->connector->cmdline_mode;
>> +cmdline_mode = &connector->cmdline_mode;
>>  
>>  if (cmdline_mode->bpp_specified) {
>>  switch (cmdline_mode->bpp) {
>> @@ -1692,6 +1509,7 @@ static int drm_fb_helper_single_fb_probe(struct 
>> drm_fb_helper *fb_helper,
>>  break;
>>  }
>>  }
>> +drm_connector_list_iter_end(&conn_iter);
>>  
>>  /*
>>   * If we run into a situation where, for example, the primary plane
>> @@ -1876,26 +1694,12 @@ void drm_fb_helper_fill_info(struct fb_info *info,
>>  }
>>  EXPORT_SYMBOL(drm_fb_helper_fill_info);
>>  
>> +static void drm_client_connectors_enabled(struct drm_connector **connectors,
>> +  unsigned int connector_count,
>> +  bool *enabled)
>>  {
>>  bool any_enabled = false;
>>  struct drm_connector *connector;
>>  int i = 0;
>>  
>> -drm_fb_helper_for_each_connector(fb_helper, i) {
>> -connector = fb_helper->connector_info[i]->connector;
>> +for (i = 0; i < connector_count; i++) {
>> +connector = connectors[i];
> This is for example a place where the drm_fb_helper_for_each_connector()
> is replaced by a simple for loop.

Yeah, this is downstream from drm_setup_crtcs() and we're operating on
the temporary 'connectors' array.

> The simple for loop is nice and readable - just a comment replated to
> the above comment.
> 
>>  struct drm_display_mode *mode = modes[i];
>>  struct drm_crtc *crtc = crtcs[i];
>>  struct drm_fb_offset *offset = &offsets[i];
>>  
>>  if (mode && crtc) {
>>  struct drm_mode_set *modeset = 
>> drm_client_find_modeset(client, crtc);
>> -struct drm_connector *connector =
>> -fb_helper->connector_info[i]->connector;
>> +struct drm_connector *connector = connectors[i];
>>  
>>  DRM_DEBUG_KMS("desired mode %s set on crtc %d 
>> (%d,%d)\n",
>>mode->name, crtc->base.id, offset->x, 
>> offset->y);
>> @@ -2539,6 +2354,10 @@ static void drm_setup_crtcs(struct drm_fb_helper 
>> *fb_helper,
>>  kfree(modes);
>>  kfree(offsets);
>>  kfree(enabled);
>> +free_connectors:
>> +for (i = 0

Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for Add HDR Metadata Parsing and handling in DRM layer (rev10)

2019-05-16 Thread Martin Peres
On 16/05/2019 16:18, Shankar, Uma wrote:
> 
> 
>>>
 -Original Message-
 From: Ville Syrjälä [mailto:ville.syrj...@linux.intel.com]
 Sent: Thursday, May 16, 2019 1:02 AM
 To: Shankar, Uma 
 Cc: intel-gfx@lists.freedesktop.org
 Subject: Re: [Intel-gfx] ✗ Fi.CI.IGT: failure for Add HDR Metadata
 Parsing and handling in DRM layer (rev10)

 On Wed, May 15, 2019 at 08:59:37AM +, Shankar, Uma wrote:
>
>
>> -Original Message-
>> From: Patchwork [mailto:patchw...@emeril.freedesktop.org]
>> Sent: Wednesday, May 15, 2019 6:54 AM
>> To: Shankar, Uma 
>> Cc: intel-gfx@lists.freedesktop.org
>> Subject: ✗ Fi.CI.IGT: failure for Add HDR Metadata Parsing and
>> handling in DRM layer
>> (rev10)
>>
>> == Series Details ==
>>
>> Series: Add HDR Metadata Parsing and handling in DRM layer (rev10)
>> URL   : https://patchwork.freedesktop.org/series/25091/
>> State : failure
>>
>> == Summary ==
>>
>> CI Bug Log - changes from CI_DRM_6081_full -> Patchwork_13017_full
>> 
>>
>> Summary
>> ---
>>
>>  **FAILURE**
>>
>>  Serious unknown changes coming with Patchwork_13017_full
>> absolutely need to be  verified manually.
>>
>>  If you think the reported changes have nothing to do with the
>> changes  introduced in Patchwork_13017_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_13017_full:
>>
>> ### IGT changes ###
>>
>>  Possible regressions 
>>
>>  * igt@gem_exec_suspend@basic-s3:
>>- shard-iclb: [PASS][1] -> [SKIP][2] +43 similar issues
>>   [1]:
>> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6081/shard-
>> iclb6/igt@gem_exec_susp...@basic-s3.html
>>   [2]:
>> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13017/shard-
>> iclb5/igt@gem_exec_susp...@basic-s3.html
>>
>>  * igt@kms_prop_blob@invalid-set-prop-any:
>>- shard-iclb: [PASS][3] -> [FAIL][4]
>>   [3]:
>> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6081/shard-
>> iclb6/igt@kms_prop_b...@invalid-set-prop-any.html
>>   [4]:
>> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13017/shard-
>> iclb5/igt@kms_prop_b...@invalid-set-prop-any.html
>>
>
> Hi Martin,
> These issues are unrelated to the changes made in this series. Can
> you please have a look and confirm.

 The kms_prop fails at least are real. Probably due to the bogus
 function arguements to the replace_blob() thing I pointed out.
>>>
>>> The CI IGT have a clean PASS now.
>>
>> You mean it went from FAIL to PASS on its own? Why did that happen?
> 
> It was giving a PASS on earlier version v9 with same changes. But on v10 it 
> gave
> this error. I was thinking it was re-run, on checking with Jani N he 
> clarified that it
> was re-reported. 

Yeah, I re-report some runs after being told they contain noise :)

> 
>>> Will anyways update the function arguments and make it consistent.
>>>
>>> Regards,
>>> Uma Shankar
>>>
 --
 Ville Syrjälä
 Intel
>>
>> --
>> Ville Syrjälä
>> Intel
-
Intel Finland Oy
Registered Address: PL 281, 00181 Helsinki 
Business Identity Code: 0357606 - 4 
Domiciled in Helsinki 

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH 1/2] drm/i915: Re-add enable_rc6 modparam

2019-05-16 Thread Summers, Stuart
On Thu, 2019-05-16 at 12:59 +0300, Jani Nikula wrote:
> On Tue, 14 May 2019, Rodrigo Vivi  wrote:
> > One possibility that just came to my mind now is, what if we make
> > this only for platforms that are still protected by
> > is_alpha_support=1
> > (soon becoming require_force_probe=1)
> 
> Please don't conflate alpha_support or force_probe with *anything*
> else.
> 
> > But this is just one side of the coin... when product is out there
> > and we want the user to debug the issue to see if it is a RC6 bug
> > we have no way to verify that. :/
> 
> The problem is, if it works with rc6 disabled, it doesn't prove it's
> an
> rc6 bug either.

Good point. I'm not saying we should enforce a process of disabling RC6
for the platform if enable_rc6=0 results in success. I'm just saying
having the option is useful from a debug perspective. We will still
need to do the appropriate full analysis, including the normal code
review process on a pre-case basis when debug involves this parameter.
But the parameter itself is still useful.

Thanks,
Stuart

> 
> 
> BR,
> Jani.
> 
> 


smime.p7s
Description: S/MIME cryptographic signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Add HDR Metadata Parsing and handling in DRM layer (rev11)

2019-05-16 Thread Patchwork
== Series Details ==

Series: Add HDR Metadata Parsing and handling in DRM layer (rev11)
URL   : https://patchwork.freedesktop.org/series/25091/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
c372f3162e09 drm: Add HDR source metadata property
-:62: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#62: FILE: drivers/gpu/drm/drm_atomic_uapi.c:733:
+   ret = drm_atomic_replace_property_blob_from_id(dev,
+   &state->hdr_output_metadata,

total: 0 errors, 0 warnings, 1 checks, 144 lines checked
4d08742fedee drm: Add reference counting on HDR metadata blob
b95d51f65c44 drm: Parse HDR metadata info from EDID
736754715323 drm: Enable HDR infoframe support
-:92: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#92: FILE: drivers/gpu/drm/drm_edid.c:4943:
+   if (!is_eotf_supported(hdr_metadata->hdmi_metadata_type1.eotf,
+   connector->hdr_sink_metadata.hdmi_type1.eotf)) {

total: 0 errors, 0 warnings, 1 checks, 379 lines checked
495dfdf065ff drm/i915: Attach HDR metadata property to connector
77b052459da8 drm/i915: Write HDR infoframe and send to panel
538cf737007c drm: Add HLG EOTF
d8c1195d31eb drm/i915: Enable infoframes on GLK+ for HDR
-:57: WARNING:LONG_LINE: line over 100 characters
#57: FILE: drivers/gpu/drm/i915/i915_reg.h:8190:
+#define GLK_TVIDEO_DIP_DRM_DATA(trans, i)  _MMIO_TRANS2(trans, 
_GLK_VIDEO_DIP_DRM_DATA_A + (i) * 4)

total: 0 errors, 1 warnings, 0 checks, 72 lines checked
f3797bbcf507 drm/i915:Enabled Modeset when HDR Infoframe changes
d74cf996f1e0 drm/i915: Added DRM Infoframe handling for BYT/CHT
dcd93072f636 video/hdmi: Add Unpack function for DRM infoframe
b7ccb67c3091 drm/i915: Add state readout for DRM infoframe

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

Re: [Intel-gfx] [PATCH v3 04/10] drm: Convert connector_helper_funcs->atomic_check to accept drm_atomic_state

2019-05-16 Thread Sean Paul
On Thu, May 16, 2019 at 03:00:01PM +0300, Laurent Pinchart wrote:
> Hi Sean,
> 
> On Mon, May 13, 2019 at 10:38:58AM -0400, Sean Paul wrote:
> > On Sat, May 11, 2019 at 3:12 PM Laurent Pinchart wrote:
> > > On Thu, May 02, 2019 at 03:49:46PM -0400, Sean Paul wrote:
> > >> From: Sean Paul 
> > >>
> > >> Everyone who implements connector_helper_funcs->atomic_check reaches
> > >> into the connector state to get the atomic state. Instead of continuing
> > >> this pattern, change the callback signature to just give atomic state
> > >> and let the driver determine what it does and does not need from it.
> > >>
> > >> Eventually all atomic functions should do this, but that's just too much
> > >> busy work for me.
> > >
> > > Given that drivers also access the connector state, isn't this slightly
> > > more inefficient ?
> > 
> > Inefficient in terms of what?
> 
> In terms of the operation having to lookup the connector state, when the
> caller has it and can easily pass it. As Daniel commented, this may be
> the price to pay for a cleaner API, but I wonder how much overhead all
> the state tracking is costing.
> 

It'd be interesting to quantify, but iirc the last time we benchmarked
atomic check commits they were virtually free (~thousands/s).

> > Agree that in isolation this patch might seem unnecessary, but it ties
> > in with the encoder and bridge CLs which accept drm_atomic_state in
> 
> CLs ?

Googleism for patches, I usually catch these before sending... guess I missed
one.

Sean

> 
> > their hooks. In general the idea is to convert all atomic functions to
> > take overall atomic state instead of just their object state. Reality
> > has proven to be more complicated and we need more access than what
> > the current implementation provides.
> > 
> > Sean
> > 
> > >> Changes in v3:
> > >> - Added to the set
> > >>
> > >> Cc: Daniel Vetter 
> > >> Cc: Ville Syrjälä 
> > >> Cc: Jani Nikula 
> > >> Cc: Joonas Lahtinen 
> > >> Cc: Rodrigo Vivi 
> > >> Cc: Ben Skeggs 
> > >> Cc: Laurent Pinchart 
> > >> Cc: Kieran Bingham 
> > >> Cc: Eric Anholt 
> > >> Signed-off-by: Sean Paul 
> > >> ---
> > >>  drivers/gpu/drm/drm_atomic_helper.c  |  4 ++--
> > >>  drivers/gpu/drm/i915/intel_atomic.c  |  8 +---
> > >>  drivers/gpu/drm/i915/intel_dp_mst.c  |  7 ---
> > >>  drivers/gpu/drm/i915/intel_drv.h |  2 +-
> > >>  drivers/gpu/drm/i915/intel_sdvo.c|  9 +
> > >>  drivers/gpu/drm/i915/intel_tv.c  |  8 +---
> > >>  drivers/gpu/drm/nouveau/dispnv50/disp.c  |  5 +++--
> > >>  drivers/gpu/drm/rcar-du/rcar_lvds.c  | 12 +++-
> > >>  drivers/gpu/drm/vc4/vc4_txp.c|  7 ---
> > >>  include/drm/drm_modeset_helper_vtables.h |  2 +-
> > >>  10 files changed, 37 insertions(+), 27 deletions(-)
> > >>
> > >> diff --git a/drivers/gpu/drm/drm_atomic_helper.c 
> > >> b/drivers/gpu/drm/drm_atomic_helper.c
> > >> index 9d9e47276839..fa5a367507c1 100644
> > >> --- a/drivers/gpu/drm/drm_atomic_helper.c
> > >> +++ b/drivers/gpu/drm/drm_atomic_helper.c
> > >> @@ -683,7 +683,7 @@ drm_atomic_helper_check_modeset(struct drm_device 
> > >> *dev,
> > >>   }
> > >>
> > >>   if (funcs->atomic_check)
> > >> - ret = funcs->atomic_check(connector, 
> > >> new_connector_state);
> > >> + ret = funcs->atomic_check(connector, state);
> > >>   if (ret)
> > >>   return ret;
> > >>
> > >> @@ -725,7 +725,7 @@ drm_atomic_helper_check_modeset(struct drm_device 
> > >> *dev,
> > >>   continue;
> > >>
> > >>   if (funcs->atomic_check)
> > >> - ret = funcs->atomic_check(connector, 
> > >> new_connector_state);
> > >> + ret = funcs->atomic_check(connector, state);
> > >>   if (ret)
> > >>   return ret;
> > >>   }
> > >> diff --git a/drivers/gpu/drm/i915/intel_atomic.c 
> > >> b/drivers/gpu/drm/i915/intel_atomic.c
> > >> index b844e8840c6f..e8a5b82e9242 100644
> > >> --- a/drivers/gpu/drm/i915/intel_atomic.c
> > >> +++ b/drivers/gpu/drm/i915/intel_atomic.c
> > >> @@ -103,12 +103,14 @@ int 
> > >> intel_digital_connector_atomic_set_property(struct drm_connector 
> > >> *connector,
> > >>  }
> > >>
> > >>  int intel_digital_connector_atomic_check(struct drm_connector *conn,
> > >> -  struct drm_connector_state 
> > >> *new_state)
> > >> +  struct drm_atomic_state *state)
> > >>  {
> > >> + struct drm_connector_state *new_state =
> > >> + drm_atomic_get_new_connector_state(state, conn);
> > >>   struct intel_digital_connector_state *new_conn_state =
> > >>   to_intel_digital_connector_state(new_state);
> > >>   struct drm_connector_state *old_state =
> > >> - drm_atomic_get_old_connector_state(new_state->state, conn);
> > >> + drm_atomic_get_old_connector_stat

[Intel-gfx] ✓ Fi.CI.BAT: success for Add HDR Metadata Parsing and handling in DRM layer (rev11)

2019-05-16 Thread Patchwork
== Series Details ==

Series: Add HDR Metadata Parsing and handling in DRM layer (rev11)
URL   : https://patchwork.freedesktop.org/series/25091/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6090 -> Patchwork_13025


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/

Known issues


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

### IGT changes ###

 Possible fixes 

  * igt@i915_selftest@live_contexts:
- fi-bdw-gvtdvm:  [DMESG-FAIL][1] ([fdo#110235]) -> [PASS][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html

  * igt@i915_selftest@live_hangcheck:
- {fi-icl-y}: [INCOMPLETE][3] ([fdo#107713] / [fdo#108569]) -> 
[PASS][4]
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/fi-icl-y/igt@i915_selftest@live_hangcheck.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/fi-icl-y/igt@i915_selftest@live_hangcheck.html

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

  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#110235]: https://bugs.freedesktop.org/show_bug.cgi?id=110235


Participating hosts (50 -> 44)
--

  Additional (3): fi-icl-dsi fi-ivb-3770 fi-apl-guc 
  Missing(9): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-skl-guc 
fi-byt-squawks fi-bsw-cyan fi-pnv-d510 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_6090 -> Patchwork_13025

  CI_DRM_6090: df27ebbc9ec0d8ae42e8cf3d7a3b29fd6baf4940 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4992: 0d488fae6d35c222c8a527c9fb85614800ead646 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_13025: b7ccb67c3091f1658e0c3467a535257fd19761c0 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

b7ccb67c3091 drm/i915: Add state readout for DRM infoframe
dcd93072f636 video/hdmi: Add Unpack function for DRM infoframe
d74cf996f1e0 drm/i915: Added DRM Infoframe handling for BYT/CHT
f3797bbcf507 drm/i915:Enabled Modeset when HDR Infoframe changes
d8c1195d31eb drm/i915: Enable infoframes on GLK+ for HDR
538cf737007c drm: Add HLG EOTF
77b052459da8 drm/i915: Write HDR infoframe and send to panel
495dfdf065ff drm/i915: Attach HDR metadata property to connector
736754715323 drm: Enable HDR infoframe support
b95d51f65c44 drm: Parse HDR metadata info from EDID
4d08742fedee drm: Add reference counting on HDR metadata blob
c372f3162e09 drm: Add HDR source metadata property

== Logs ==

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

Re: [Intel-gfx] [PATCH v5 08/11] drm/fb-helper: Remove drm_fb_helper_connector

2019-05-16 Thread Sam Ravnborg
Hi Noralf.

On Thu, May 16, 2019 at 03:53:07PM +0200, Noralf Trønnes wrote:
> 
> 
> Den 16.05.2019 15.07, skrev Sam Ravnborg:
> > Hi Noralf.
> > 
> > See few comments in the following.
> > 
> > Sam
> > 
> > On Mon, May 06, 2019 at 08:01:36PM +0200, Noralf Trønnes wrote:
> >> All drivers add all their connectors so there's no need to keep around an
> >> array of available connectors.
> 
> I could expand on this text a little:
> 
> All drivers add all their connectors so there's no need to keep around an
> array of available connectors. Instead we just put the useable (not
> writeback) connectors in a temporary array using
> drm_client_for_each_connector_iter() everytime we probe the outputs.
> Other places where it's necessary to look at the connectors, we just
> iterate over them using the same iterator function.
Better, thanks.
After you clarified things looks good to me and you can add my:
Reviewed-by: Sam Ravnborg 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH v5 10/11] drm/fb-helper: Move out modeset config code

2019-05-16 Thread Sam Ravnborg
Hi Noralf.

After clarifying patch 8 this looks good (moved code touched n patch 8).
So I consider this:
Reviewed-by: Sam Ravnborg 
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH 1/2] drm/i915: Re-add enable_rc6 modparam

2019-05-16 Thread Jani Nikula
On Thu, 16 May 2019, "Summers, Stuart"  wrote:
> On Thu, 2019-05-16 at 12:59 +0300, Jani Nikula wrote:
>> On Tue, 14 May 2019, Rodrigo Vivi  wrote:
>> > One possibility that just came to my mind now is, what if we make
>> > this only for platforms that are still protected by
>> > is_alpha_support=1
>> > (soon becoming require_force_probe=1)
>> 
>> Please don't conflate alpha_support or force_probe with *anything*
>> else.
>> 
>> > But this is just one side of the coin... when product is out there
>> > and we want the user to debug the issue to see if it is a RC6 bug
>> > we have no way to verify that. :/
>> 
>> The problem is, if it works with rc6 disabled, it doesn't prove it's
>> an
>> rc6 bug either.
>
> Good point. I'm not saying we should enforce a process of disabling RC6
> for the platform if enable_rc6=0 results in success. I'm just saying
> having the option is useful from a debug perspective. We will still
> need to do the appropriate full analysis, including the normal code
> review process on a pre-case basis when debug involves this parameter.
> But the parameter itself is still useful.

The trouble starts when users figure out that enable_rc6=0 works around
a particular problem they have (likely by way of disabling runtime pm,
not directly related to rc6). You could argue this is a good thing, but
unfortunately we generally never hear from them again, and the root
cause remains unsolved, with degraded user experience wrt power
management.

BR,
Jani.


-- 
Jani Nikula, Intel Open Source Graphics Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH v5 00/11] drm/fb-helper: Move modesetting code to drm_client

2019-05-16 Thread Sam Ravnborg
Hi Noralf.

> >   drm/fb-helper: Remove drm_fb_helper_crtc
> >   drm/fb-helper: Prepare to move out commit code
> >   drm/fb-helper: Move out commit code
> >   drm/fb-helper: Remove drm_fb_helper_connector
> 
> Patches 5-8 are still in need of review...
With the improved changelogs the remaining patches are all good to go
as far as I am concerned.
(Not the bootsplash hack - but thats kind of obvious)

Nice series!

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

Re: [Intel-gfx] [PATCH 1/1] drm/i915: skip the second CRC even for GEN 7 GPUs

2019-05-16 Thread Jani Nikula
On Thu, 16 May 2019, Ville Syrjälä  wrote:
> On Thu, May 16, 2019 at 03:55:25PM +0300, Jani Nikula wrote:
>> On Thu, 16 May 2019, Maarten Lankhorst  
>> wrote:
>> > Op 16-05-2019 om 07:58 schreef Harish Chegondi:
>> >> display_pipe_crc_irq_handler() skips the first CRC for all GPUs and the
>> >> second CRC for GEN8+ GPUs. The second CRC is invalid even for BYT which
>> >> is a GEN7 GPU. So, skip the second CRC even for GEN7 GPUs.
>> >>
>> >> Cc: Jani Nikula 
>> >> Cc: Tomi Sarvela 
>> >> Cc: Petri Latvala 
>> >> Cc: Ville Syrjälä 
>> >> Cc: Maarten Lankhorst 
>> >> Signed-off-by: Harish Chegondi 
>> >> References: https://bugs.freedesktop.org/show_bug.cgi?id=103191
>> >> ---
>> >>  drivers/gpu/drm/i915/i915_irq.c | 4 ++--
>> >>  1 file changed, 2 insertions(+), 2 deletions(-)
>> >>
>> >> diff --git a/drivers/gpu/drm/i915/i915_irq.c 
>> >> b/drivers/gpu/drm/i915/i915_irq.c
>> >> index 233211fde0ea..3809e9f7fae2 100644
>> >> --- a/drivers/gpu/drm/i915/i915_irq.c
>> >> +++ b/drivers/gpu/drm/i915/i915_irq.c
>> >> @@ -1775,11 +1775,11 @@ static void display_pipe_crc_irq_handler(struct 
>> >> drm_i915_private *dev_priv,
>> >>* bonkers. So let's just wait for the next vblank and read
>> >>* out the buggy result.
>> >>*
>> >> -  * On GEN8+ sometimes the second CRC is bonkers as well, so
>> >> +  * On GEN7+ sometimes the second CRC is bonkers as well, so
>> >>* don't trust that one either.
>> >>*/
>> >>   if (pipe_crc->skipped <= 0 ||
>> >> - (INTEL_GEN(dev_priv) >= 8 && pipe_crc->skipped == 1)) {
>> >> + (INTEL_GEN(dev_priv) >= 7 && pipe_crc->skipped == 1)) {
>> >>   pipe_crc->skipped++;
>> >>   spin_unlock(&pipe_crc->lock);
>> >>   return;
>> >
>> > I would be interested in the results, haswell is different from
>> > VLV. Has it ever been observed on that platform?
>> 
>> Good point. I looked at [1] which I presumed was on VLV, but it says
>> nothing about HSW.
>
> This whole thing is just a pile of duct tape anyway. The reason(s)
> for these funky crcs has never been properly analysed.

I don't disagree. And this is partially why I was so eager to ack the
patch at hand. Another strip of duct tape does no harm when you already
have so much, and we can't hold this particular issue hostage to root
cause the issues.

BR,
Jani.


-- 
Jani Nikula, Intel Open Source Graphics Center
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH 1/2] drm/i915: Re-add enable_rc6 modparam

2019-05-16 Thread Summers, Stuart
On Thu, 2019-05-16 at 18:42 +0300, Jani Nikula wrote:
> On Thu, 16 May 2019, "Summers, Stuart" 
> wrote:
> > On Thu, 2019-05-16 at 12:59 +0300, Jani Nikula wrote:
> > > On Tue, 14 May 2019, Rodrigo Vivi  wrote:
> > > > One possibility that just came to my mind now is, what if we
> > > > make
> > > > this only for platforms that are still protected by
> > > > is_alpha_support=1
> > > > (soon becoming require_force_probe=1)
> > > 
> > > Please don't conflate alpha_support or force_probe with
> > > *anything*
> > > else.
> > > 
> > > > But this is just one side of the coin... when product is out
> > > > there
> > > > and we want the user to debug the issue to see if it is a RC6
> > > > bug
> > > > we have no way to verify that. :/
> > > 
> > > The problem is, if it works with rc6 disabled, it doesn't prove
> > > it's
> > > an
> > > rc6 bug either.
> > 
> > Good point. I'm not saying we should enforce a process of disabling
> > RC6
> > for the platform if enable_rc6=0 results in success. I'm just
> > saying
> > having the option is useful from a debug perspective. We will still
> > need to do the appropriate full analysis, including the normal code
> > review process on a pre-case basis when debug involves this
> > parameter.
> > But the parameter itself is still useful.
> 
> The trouble starts when users figure out that enable_rc6=0 works
> around
> a particular problem they have (likely by way of disabling runtime
> pm,
> not directly related to rc6). You could argue this is a good thing,
> but
> unfortunately we generally never hear from them again, and the root
> cause remains unsolved, with degraded user experience wrt power
> management.

So I understand the reasoning here, and agree that isn't an ideal
situation. I'd also like a way to debug more efficiently. What did you
think about the suggestion from Tvrtko to only apply on
CONFIG_DRM_I915_DEBUG?

Or we could even wrap this entirely with a CONFIG_I915_DEBUG_PM -
although I'd like to suggest we still use the module parameter, we
could just use the config option to hide the modparam under normal
operation.

Thanks,
Stuart

> 
> BR,
> Jani.
> 
> 


smime.p7s
Description: S/MIME cryptographic signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH v4 8/8] drm/i915: Bump gen7+ fb size limits to 16kx16k

2019-05-16 Thread Maarten Lankhorst
Op 09-05-2019 om 14:21 schreef Ville Syrjala:
> From: Ville Syrjälä 
>
> With gtt remapping in place we can use arbitrarily large
> framebuffers. Let's bump the limits to 16kx16k on gen7+.
> The limit was chosen to match the maximum 2D surface size
> of the 3D engine.
>
> With the remapping we could easily go higher than that for the
> display engine. However the modesetting ddx will blindly assume
> it can handle whatever is reported via kms. The oversized
> buffer dimensions are not caught by glamor nor Mesa until
> finally an assert will trip when genxml attempts to pack the
> SURFACE_STATE. So we pick a safe limit to avoid the X server
> from crashing (or potentially misbehaving if the genxml asserts
> are compiled out).
>
> Reviewed-by: Daniel Vetter 
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110187
> Signed-off-by: Ville Syrjälä 
> ---
>  drivers/gpu/drm/i915/intel_display.c | 18 --
>  1 file changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_display.c 
> b/drivers/gpu/drm/i915/intel_display.c
> index a2e4ef938d53..a495fd2dcaa3 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -15783,16 +15783,22 @@ int intel_modeset_init(struct drm_device *dev)
>   }
>   }
>  
> - /* maximum framebuffer dimensions */
> - if (IS_GEN(dev_priv, 2)) {
> - dev->mode_config.max_width = 2048;
> - dev->mode_config.max_height = 2048;
> + /*
> +  * Maximum framebuffer dimensions, chosen to match
> +  * the maximum render engine surface size on gen4+.
> +  */
> + if (INTEL_GEN(dev_priv) >= 7) {
> + dev->mode_config.max_width = 16384;
> + dev->mode_config.max_height = 16384;
> + } else if (INTEL_GEN(dev_priv) >= 4) {
> + dev->mode_config.max_width = 8192;
> + dev->mode_config.max_height = 8192;
>   } else if (IS_GEN(dev_priv, 3)) {
>   dev->mode_config.max_width = 4096;
>   dev->mode_config.max_height = 4096;
>   } else {
> - dev->mode_config.max_width = 8192;
> - dev->mode_config.max_height = 8192;
> + dev->mode_config.max_width = 2048;
> + dev->mode_config.max_height = 2048;
>   }
>  
>   if (IS_I845G(dev_priv) || IS_I865G(dev_priv)) {

Should be good enough, lets not go too crazy. :)

For whole series:

Reviewed-by: Maarten Lankhorst 

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

[Intel-gfx] [PATCH] Revert "ICL HACK: Disable ACPI idle driver"

2019-05-16 Thread Anshuman Gupta
This reverts commit 99b69db57544ec7ed427607f1a2a1858a7d43b61
Core-for-CI:ICL_only  Disable ACPI idle driver.

This hack has been provided considering the Bug assessment
that ACPI idle driver page fault causes below bug.
FDO https://bugs.freedesktop.org/show_bug.cgi?id=108840
But this bug is still reproducible after disabling ACPI idle driver.

It looks "rcu_preempt self-detected stall on CPU" causes to
hung kworker and followed by panic resulted this bug.

Hence it make sense to revert this patch.

Cc: martin.pe...@intel.com
Cc: daniel.vet...@intel.com
Cc: ville.syrj...@intel.com
Signed-off-by: Anshuman Gupta 
---
 drivers/acpi/processor_driver.c | 18 +-
 1 file changed, 1 insertion(+), 17 deletions(-)

diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c
index ee842a2f..9d6aff2 100644
--- a/drivers/acpi/processor_driver.c
+++ b/drivers/acpi/processor_driver.c
@@ -35,12 +35,6 @@
 
 #include 
 
-/* Only for Core-for-CI so don't want ia64 to fail compilation.*/
-#ifdef CONFIG_X86
-#include 
-#include 
-#endif
-
 #include "internal.h"
 
 #define ACPI_PROCESSOR_NOTIFY_PERFORMANCE 0x80
@@ -64,13 +58,6 @@ static const struct acpi_device_id processor_device_ids[] = {
 };
 MODULE_DEVICE_TABLE(acpi, processor_device_ids);
 
-#define ICPU(model){ X86_VENDOR_INTEL, 6, model, X86_FEATURE_ANY, }
-static const struct x86_cpu_id intel_cpu_ids[] = {
-   ICPU(INTEL_FAM6_ICELAKE_MOBILE),/* ICL */
-   {}
-};
-MODULE_DEVICE_TABLE(x86cpu, intel_cpu_ids);
-
 static struct device_driver acpi_processor_driver = {
.name = "processor",
.bus = &cpu_subsys,
@@ -239,7 +226,6 @@ static inline void acpi_pss_perf_exit(struct acpi_processor 
*pr,
 static int __acpi_processor_start(struct acpi_device *device)
 {
struct acpi_processor *pr = acpi_driver_data(device);
-   const struct x86_cpu_id *id;
acpi_status status;
int result = 0;
 
@@ -253,9 +239,7 @@ static int __acpi_processor_start(struct acpi_device 
*device)
if (result && !IS_ENABLED(CONFIG_ACPI_CPU_FREQ_PSS))
dev_dbg(&device->dev, "CPPC data invalid or not present\n");
 
-   id = x86_match_cpu(intel_cpu_ids);
-   if (!id && (!cpuidle_get_driver() || cpuidle_get_driver() ==
-   &acpi_idle_driver))
+   if (!cpuidle_get_driver() || cpuidle_get_driver() == &acpi_idle_driver)
acpi_processor_power_init(pr);
 
result = acpi_pss_perf_init(pr, device);
-- 
2.7.4

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

[Intel-gfx] ✓ Fi.CI.BAT: success for Revert "ICL HACK: Disable ACPI idle driver"

2019-05-16 Thread Patchwork
== Series Details ==

Series: Revert "ICL HACK: Disable ACPI idle driver"
URL   : https://patchwork.freedesktop.org/series/60731/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6091 -> Patchwork_13026


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_exec_suspend@basic-s3:
- fi-blb-e6850:   [PASS][1] -> [INCOMPLETE][2] ([fdo#107718])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-blb-e6850/igt@gem_exec_susp...@basic-s3.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/fi-blb-e6850/igt@gem_exec_susp...@basic-s3.html

  * igt@i915_selftest@live_contexts:
- fi-skl-gvtdvm:  [PASS][3] -> [DMESG-FAIL][4] ([fdo#110235])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-skl-gvtdvm/igt@i915_selftest@live_contexts.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/fi-skl-gvtdvm/igt@i915_selftest@live_contexts.html

  * igt@i915_selftest@live_guc:
- fi-apl-guc: [PASS][5] -> [INCOMPLETE][6] ([fdo#103927])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-apl-guc/igt@i915_selftest@live_guc.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/fi-apl-guc/igt@i915_selftest@live_guc.html

  * igt@i915_selftest@live_hangcheck:
- fi-apl-guc: [PASS][7] -> [DMESG-FAIL][8] ([fdo#110620])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-apl-guc/igt@i915_selftest@live_hangcheck.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/fi-apl-guc/igt@i915_selftest@live_hangcheck.html

  * igt@kms_frontbuffer_tracking@basic:
- fi-icl-u2:  [PASS][9] -> [FAIL][10] ([fdo#103167])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-icl-u2/igt@kms_frontbuffer_track...@basic.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/fi-icl-u2/igt@kms_frontbuffer_track...@basic.html

  
 Possible fixes 

  * igt@i915_pm_rpm@module-reload:
- fi-skl-6770hq:  [FAIL][11] ([fdo#108511]) -> [PASS][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-skl-6770hq/igt@i915_pm_...@module-reload.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/fi-skl-6770hq/igt@i915_pm_...@module-reload.html

  * igt@i915_selftest@live_contexts:
- fi-bdw-gvtdvm:  [DMESG-FAIL][13] ([fdo#110235]) -> [PASS][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html

  * igt@kms_frontbuffer_tracking@basic:
- fi-hsw-peppy:   [DMESG-WARN][15] ([fdo#102614]) -> [PASS][16]
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-hsw-peppy/igt@kms_frontbuffer_track...@basic.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/fi-hsw-peppy/igt@kms_frontbuffer_track...@basic.html

  * igt@prime_vgem@basic-fence-flip:
- fi-ilk-650: [DMESG-WARN][17] ([fdo#106387]) -> [PASS][18] +1 
similar issue
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-ilk-650/igt@prime_v...@basic-fence-flip.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/fi-ilk-650/igt@prime_v...@basic-fence-flip.html

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

  [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#106387]: https://bugs.freedesktop.org/show_bug.cgi?id=106387
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#108511]: https://bugs.freedesktop.org/show_bug.cgi?id=108511
  [fdo#108569]: https://bugs.freedesktop.org/show_bug.cgi?id=108569
  [fdo#110235]: https://bugs.freedesktop.org/show_bug.cgi?id=110235
  [fdo#110620]: https://bugs.freedesktop.org/show_bug.cgi?id=110620


Participating hosts (50 -> 44)
--

  Additional (2): fi-bsw-n3050 fi-pnv-d510 
  Missing(8): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks 
fi-bsw-cyan fi-gdg-551 fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_6091 -> Patchwork_13026

  CI_DRM_6091: 0ad895242a8e957336088625a9a6ba48ab838ec9 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4994: 555019f862c35f1619627761d6da21385be40920 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_13026: 90b04825a71257

[Intel-gfx] [PATCH i-g-t] benchmarks/gem_wsim: Randomise random seed

2019-05-16 Thread Chris Wilson
To avoid hitting the same rut on each benchmark run, start with a new
random seed. To allow hitting the same rut again, let it be specified
by the user.

Signed-off-by: Chris Wilson 
Cc: Tvrtko Ursulin 
---
 benchmarks/gem_wsim.c | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/benchmarks/gem_wsim.c b/benchmarks/gem_wsim.c
index 48568ce40..cf2a44746 100644
--- a/benchmarks/gem_wsim.c
+++ b/benchmarks/gem_wsim.c
@@ -2282,8 +2282,9 @@ int main(int argc, char **argv)
igt_require(fd);
 
init_clocks();
+   srand(time(NULL));
 
-   while ((c = getopt(argc, argv, "hqv2RSHxGdc:n:r:w:W:a:t:b:p:")) != -1) {
+   while ((c = getopt(argc, argv, "hqv2RSHxGdc:n:r:w:W:a:t:b:p:s:")) != 
-1) {
switch (c) {
case 'W':
if (master_workload >= 0) {
@@ -2300,6 +2301,9 @@ int main(int argc, char **argv)
case 'p':
prio = atoi(optarg);
break;
+   case 's':
+   srand(atoi(optarg));
+   break;
case 'a':
if (append_workload_arg) {
if (verbose)
-- 
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: success for Add HDR Metadata Parsing and handling in DRM layer (rev11)

2019-05-16 Thread Patchwork
== Series Details ==

Series: Add HDR Metadata Parsing and handling in DRM layer (rev11)
URL   : https://patchwork.freedesktop.org/series/25091/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6090_full -> Patchwork_13025_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_ctx_isolation@rcs0-s3:
- shard-apl:  [PASS][1] -> [DMESG-WARN][2] ([fdo#108566]) +1 
similar issue
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/shard-apl7/igt@gem_ctx_isolat...@rcs0-s3.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/shard-apl1/igt@gem_ctx_isolat...@rcs0-s3.html

  * igt@i915_pm_rpm@legacy-planes-dpms:
- shard-skl:  [PASS][3] -> [INCOMPLETE][4] ([fdo#107807])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/shard-skl6/igt@i915_pm_...@legacy-planes-dpms.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/shard-skl1/igt@i915_pm_...@legacy-planes-dpms.html

  * igt@i915_pm_rpm@system-suspend:
- shard-iclb: [PASS][5] -> [INCOMPLETE][6] ([fdo#107713] / 
[fdo#108840])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/shard-iclb2/igt@i915_pm_...@system-suspend.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/shard-iclb7/igt@i915_pm_...@system-suspend.html

  * igt@i915_pm_rpm@system-suspend-execbuf:
- shard-skl:  [PASS][7] -> [INCOMPLETE][8] ([fdo#104108] / 
[fdo#107807])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/shard-skl8/igt@i915_pm_...@system-suspend-execbuf.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/shard-skl10/igt@i915_pm_...@system-suspend-execbuf.html

  * igt@i915_suspend@sysfs-reader:
- shard-skl:  [PASS][9] -> [INCOMPLETE][10] ([fdo#104108])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/shard-skl9/igt@i915_susp...@sysfs-reader.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/shard-skl4/igt@i915_susp...@sysfs-reader.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-shrfb-msflip-blt:
- shard-iclb: [PASS][11] -> [FAIL][12] ([fdo#103167]) +5 similar 
issues
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/shard-iclb7/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-shrfb-msflip-blt.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/shard-iclb5/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-shrfb-msflip-blt.html

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-skl:  [PASS][13] -> [FAIL][14] ([fdo#108145] / [fdo#110403])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/shard-skl4/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/shard-skl9/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html

  * igt@kms_psr@psr2_cursor_plane_onoff:
- shard-iclb: [PASS][15] -> [SKIP][16] ([fdo#109441]) +3 similar 
issues
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/shard-iclb2/igt@kms_psr@psr2_cursor_plane_onoff.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/shard-iclb7/igt@kms_psr@psr2_cursor_plane_onoff.html

  
 Possible fixes 

  * igt@gem_eio@in-flight-suspend:
- shard-kbl:  [FAIL][17] ([fdo#110667]) -> [PASS][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/shard-kbl3/igt@gem_...@in-flight-suspend.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/shard-kbl1/igt@gem_...@in-flight-suspend.html

  * igt@gem_eio@unwedge-stress:
- shard-glk:  [FAIL][19] ([fdo#109661]) -> [PASS][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/shard-glk1/igt@gem_...@unwedge-stress.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/shard-glk6/igt@gem_...@unwedge-stress.html

  * igt@gem_exec_suspend@basic-s3:
- shard-snb:  [DMESG-WARN][21] ([fdo#102365]) -> [PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/shard-snb7/igt@gem_exec_susp...@basic-s3.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/shard-snb7/igt@gem_exec_susp...@basic-s3.html

  * igt@i915_pm_rpm@fences:
- shard-skl:  [INCOMPLETE][23] ([fdo#107807]) -> [PASS][24] +1 
similar issue
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/shard-skl2/igt@i915_pm_...@fences.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13025/shard-skl2/igt@i915_pm_...@fences.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
- shard-apl:  [DMESG-WARN][25] ([fdo#108566]) -> [PASS][26] +5 
similar issues
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6090/shard-apl6/igt@i915_susp

Re: [Intel-gfx] [PATCH xf86-video-intel v2 1/2] sna: Refactor property parsing

2019-05-16 Thread Mario Kleiner
On Fri, Apr 26, 2019 at 6:32 PM Ville Syrjala
 wrote:
>
> From: Ville Syrjälä 
>
> Generalize the code that parses the plane properties to be useable
> for crtc (or any kms object) properties as well.
>
> v2: plane 'type' prop is enum not range!
>
> Cc: Mario Kleiner 
> Signed-off-by: Ville Syrjälä 
> ---

This patch is

Reviewed-and-tested-by: Mario Kleiner 

-mario

>  src/sna/sna_display.c | 69 ++-
>  1 file changed, 49 insertions(+), 20 deletions(-)
>
> diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
> index 119ea981d243..41edfec12839 100644
> --- a/src/sna/sna_display.c
> +++ b/src/sna/sna_display.c
> @@ -215,6 +215,7 @@ struct sna_crtc {
> uint32_t rotation;
> struct plane {
> uint32_t id;
> +   uint32_t type;
> struct {
> uint32_t prop;
> uint32_t supported;
> @@ -3391,33 +3392,40 @@ void sna_crtc_set_sprite_colorspace(xf86CrtcPtr crtc,
>  p->color_encoding.values[colorspace]);
>  }
>
> -static int plane_details(struct sna *sna, struct plane *p)
> +typedef void (*parse_prop_func)(struct sna *sna,
> +   struct drm_mode_get_property *prop,
> +   uint64_t value,
> +   void *data);
> +static void parse_props(struct sna *sna,
> +  uint32_t obj_type, uint32_t obj_id,
> +  parse_prop_func parse_prop,
> +  void *data)
>  {
>  #define N_STACK_PROPS 32 /* must be a multiple of 2 */
> struct local_mode_obj_get_properties arg;
> uint64_t stack[N_STACK_PROPS + N_STACK_PROPS/2];
> uint64_t *values = stack;
> uint32_t *props = (uint32_t *)(values + N_STACK_PROPS);
> -   int i, type = DRM_PLANE_TYPE_OVERLAY;
> +   int i;
>
> memset(&arg, 0, sizeof(struct local_mode_obj_get_properties));
> -   arg.obj_id = p->id;
> -   arg.obj_type = LOCAL_MODE_OBJECT_PLANE;
> +   arg.obj_id = obj_id;
> +   arg.obj_type = obj_type;
>
> arg.props_ptr = (uintptr_t)props;
> arg.prop_values_ptr = (uintptr_t)values;
> arg.count_props = N_STACK_PROPS;
>
> if (drmIoctl(sna->kgem.fd, LOCAL_IOCTL_MODE_OBJ_GETPROPERTIES, &arg))
> -   return -1;
> +   return;
>
> DBG(("%s: object %d (type %x) has %d props\n", __FUNCTION__,
> -p->id, LOCAL_MODE_OBJECT_PLANE, arg.count_props));
> +obj_id, obj_type, arg.count_props));
>
> if (arg.count_props > N_STACK_PROPS) {
> values = malloc(2*sizeof(uint64_t)*arg.count_props);
> if (values == NULL)
> -   return -1;
> +   return;
>
> props = (uint32_t *)(values + arg.count_props);
>
> @@ -3444,27 +3452,48 @@ static int plane_details(struct sna *sna, struct 
> plane *p)
> DBG(("%s: prop[%d] .id=%ld, .name=%s, .flags=%x, 
> .value=%ld\n", __FUNCTION__, i,
>  (long)props[i], prop.name, (unsigned)prop.flags, 
> (long)values[i]));
>
> -   if (strcmp(prop.name, "type") == 0) {
> -   type = values[i];
> -   } else if (prop_is_rotation(&prop)) {
> -   parse_rotation_prop(sna, p, &prop, values[i]);
> -   } else if (prop_is_color_encoding(&prop)) {
> -   parse_color_encoding_prop(sna, p, &prop, values[i]);
> -   }
> +   parse_prop(sna, &prop, values[i], data);
> }
>
> -   p->rotation.supported &= DBG_NATIVE_ROTATION;
> -   if (!xf86ReturnOptValBool(sna->Options, OPTION_ROTATION, TRUE))
> -   p->rotation.supported = RR_Rotate_0;
> -
> if (values != stack)
> free(values);
>
> -   DBG(("%s: plane=%d type=%d\n", __FUNCTION__, p->id, type));
> -   return type;
>  #undef N_STACK_PROPS
>  }
>
> +static bool prop_is_type(const struct drm_mode_get_property *prop)
> +{
> +   return prop_has_type_and_name(prop, 3, "type");
> +}
> +
> +static void plane_parse_prop(struct sna *sna,
> +struct drm_mode_get_property *prop,
> +uint64_t value, void *data)
> +{
> +   struct plane *p = data;
> +
> +   if (prop_is_type(prop))
> +   p->type = value;
> +   else if (prop_is_rotation(prop))
> +   parse_rotation_prop(sna, p, prop, value);
> +   else if (prop_is_color_encoding(prop))
> +   parse_color_encoding_prop(sna, p, prop, value);
> +}
> +
> +static int plane_details(struct sna *sna, struct plane *p)
> +{
> +   parse_props(sna, LOCAL_MODE_OBJECT_PLANE, p->id,
> +   plane_parse_prop, p);
> +
> +   p->rotation.supported &= DBG_NATIVE_ROTATION;
> +   if (!xf86ReturnOptValBool(sna->Options, OPTION_ROTATION, TRUE))
> +  

[Intel-gfx] [PATCH i-g-t] benchmarks/gem_wsim: Measure nop latency on all engines

2019-05-16 Thread Chris Wilson
Different engines take different number of cycles for MI_NOOP. As we
specify workloads in us, we need to take into account the different
calibration values so that the workloads behave as expected.

Signed-off-by: Chris Wilson 
Cc: Tvrtko Ursulin 
---
 benchmarks/gem_wsim.c | 72 +++
 1 file changed, 52 insertions(+), 20 deletions(-)

diff --git a/benchmarks/gem_wsim.c b/benchmarks/gem_wsim.c
index 9564dcb70..50a062f0e 100644
--- a/benchmarks/gem_wsim.c
+++ b/benchmarks/gem_wsim.c
@@ -238,7 +238,7 @@ struct workload
 };
 
 static const unsigned int nop_calibration_us = 1000;
-static unsigned long nop_calibration;
+static unsigned long nop_calibration[NUM_ENGINES];
 
 static unsigned int context_vcs_rr;
 
@@ -808,9 +808,9 @@ static unsigned int get_duration(struct w_step *w)
   (dur->max + 1 - dur->min);
 }
 
-static unsigned long get_bb_sz(unsigned int duration)
+static unsigned long get_bb_sz(unsigned int engine, unsigned int duration)
 {
-   return ALIGN(duration * nop_calibration * sizeof(uint32_t) /
+   return ALIGN(duration * nop_calibration[engine] * sizeof(uint32_t) /
 nop_calibration_us, sizeof(uint32_t));
 }
 
@@ -818,7 +818,7 @@ static void
 init_bb(struct w_step *w, unsigned int flags)
 {
const unsigned int arb_period =
-   get_bb_sz(w->preempt_us) / sizeof(uint32_t);
+   get_bb_sz(w->engine, w->preempt_us) / sizeof(uint32_t);
const unsigned int mmap_len = ALIGN(w->bb_sz, 4096);
unsigned int i;
uint32_t *ptr;
@@ -1043,10 +1043,10 @@ alloc_step_batch(struct workload *wrk, struct w_step 
*w, unsigned int flags)
 
if (w->unbound_duration)
/* nops + MI_ARB_CHK + MI_BATCH_BUFFER_START */
-   w->bb_sz = max(64, get_bb_sz(w->preempt_us)) +
+   w->bb_sz = max(64, get_bb_sz(w->engine, w->preempt_us)) +
   (1 + 3) * sizeof(uint32_t);
else
-   w->bb_sz = get_bb_sz(w->duration.max);
+   w->bb_sz = get_bb_sz(w->engine, w->duration.max);
w->bb_handle = w->obj[j].handle = gem_create(fd, w->bb_sz + 
(w->unbound_duration ? 4096 : 0));
init_bb(w, flags);
terminate_bb(w, flags);
@@ -2300,7 +2300,7 @@ do_eb(struct workload *wrk, struct w_step *w, enum 
intel_engine_id engine,
w->eb.batch_start_offset =
w->unbound_duration ?
0 :
-   ALIGN(w->bb_sz - get_bb_sz(get_duration(w)),
+   ALIGN(w->bb_sz - get_bb_sz(engine, get_duration(w)),
  2 * sizeof(uint32_t));
 
for (i = 0; i < w->fence_deps.nr; i++) {
@@ -2580,17 +2580,23 @@ static void fini_workload(struct workload *wrk)
free(wrk);
 }
 
-static unsigned long calibrate_nop(unsigned int tolerance_pct)
+static unsigned long calibrate_nop(unsigned int engine, double tolerance_pct)
 {
const uint32_t bbe = 0xa << 23;
unsigned int loops = 17;
unsigned int usecs = nop_calibration_us;
struct drm_i915_gem_exec_object2 obj = {};
-   struct drm_i915_gem_execbuffer2 eb =
-   { .buffer_count = 1, .buffers_ptr = (uintptr_t)&obj};
+   struct drm_i915_gem_execbuffer2 eb = {
+   .buffer_count = 1,
+   .buffers_ptr = (uintptr_t)&obj,
+   .flags = eb_engine_map[engine],
+   };
long size, last_size;
struct timespec t_0, t_end;
 
+   if (__gem_execbuf(fd, &eb) != -ENOENT)
+   return 0;
+
clock_gettime(CLOCK_MONOTONIC, &t_0);
 
size = 256 * 1024;
@@ -2803,8 +2809,8 @@ int main(int argc, char **argv)
int master_workload = -1;
char *append_workload_arg = NULL;
struct w_arg *w_args = NULL;
-   unsigned int tolerance_pct = 1;
const struct workload_balancer *balancer = NULL;
+   double tolerance_pct = 1;
char *endptr = NULL;
int prio = 0;
double t;
@@ -2852,10 +2858,28 @@ int main(int argc, char **argv)
clients = strtol(optarg, NULL, 0);
break;
case 't':
-   tolerance_pct = strtol(optarg, NULL, 0);
+   tolerance_pct = strtod(optarg, NULL);
break;
case 'n':
-   nop_calibration = strtol(optarg, NULL, 0);
+   if (strchr(optarg, ',')) {
+   char *ctx = NULL;
+   char *str = optarg;
+   char *token;
+
+   while ((token = strtok_r(str, ",", &ctx)) != 
NULL) {
+   unsigned long nop;
+   int engine;
+
+   str = NULL;
+   if (sscanf(token, "%d:%lu",
+  

[Intel-gfx] [RFC 1/3] kbuild: add support for ensuring headers are self-contained

2019-05-16 Thread Jani Nikula
Sometimes it's useful to be able to explicitly ensure certain headers
remain self-contained, i.e. that they are compilable as standalone
units, by including and/or forward declaring everything they depend on.

Add special target header-test-y where individual Makefiles can add
headers to be tested if CONFIG_HEADER_TEST is enabled. This will
generate a dummy C file per header that gets built as part of extra-y.

Cc: Chris Wilson 
Cc: Masahiro Yamada 
Cc: Michal Marek 
Signed-off-by: Jani Nikula 
---
 Documentation/kbuild/makefiles.txt |  7 +++
 init/Kconfig   |  9 +
 scripts/Makefile.build | 10 ++
 scripts/Makefile.lib   |  3 +++
 4 files changed, 29 insertions(+)

diff --git a/Documentation/kbuild/makefiles.txt 
b/Documentation/kbuild/makefiles.txt
index 03c065855eaf..73df58e5ea0c 100644
--- a/Documentation/kbuild/makefiles.txt
+++ b/Documentation/kbuild/makefiles.txt
@@ -1036,6 +1036,13 @@ When kbuild executes, the following steps are followed 
(roughly):
In this example, extra-y is used to list object files that
shall be built, but shall not be linked as part of built-in.a.
 
+header-test-y
+
+   header-test-y specifies headers (*.h) in the current directory that
+   should be compile tested to ensure they are self-contained,
+   i.e. compilable as standalone units. If CONFIG_HEADER_TEST is enabled,
+   this autogenerates dummy sources to include the headers, and builds them
+   as part of extra-y.
 
 --- 6.7 Commands useful for building a boot image
 
diff --git a/init/Kconfig b/init/Kconfig
index 4592bf7997c0..d91b157201b1 100644
--- a/init/Kconfig
+++ b/init/Kconfig
@@ -95,6 +95,15 @@ config COMPILE_TEST
  here. If you are a user/distributor, say N here to exclude useless
  drivers to be distributed.
 
+config HEADER_TEST
+   bool "Compile test headers that should be standalone compilable"
+   help
+ Compile test headers listed in header-test-y target to ensure they are
+ self-contained, i.e. compilable as standalone units.
+
+ If you are a developer or tester and want to ensure the requested
+ headers are self-contained, say Y here. Otherwise, choose N.
+
 config LOCALVERSION
string "Local version - append to kernel release"
help
diff --git a/scripts/Makefile.build b/scripts/Makefile.build
index 76ca30cc4791..4d4bf698467a 100644
--- a/scripts/Makefile.build
+++ b/scripts/Makefile.build
@@ -291,6 +291,16 @@ quiet_cmd_cc_lst_c = MKLST   $@
 $(obj)/%.lst: $(src)/%.c FORCE
$(call if_changed_dep,cc_lst_c)
 
+# Dummy C sources for header test (header-test-y target)
+# ---
+
+quiet_cmd_header_test = HDRTEST $@
+  cmd_header_test = echo "\#include \"$( $@
+
+# FIXME: would be nice to be able to limit this implicit rule to header-test-y
+$(obj)/%.header_test.c: $(src)/%.h FORCE
+   $(call if_changed,header_test)
+
 # Compile assembler sources (.S)
 # ---
 
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 8a1f64f17740..c2839de06485 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -66,6 +66,9 @@ extra-y += $(patsubst %.dtb,%.dt.yaml, $(dtb-y))
 extra-$(CONFIG_OF_ALL_DTBS) += $(patsubst %.dtb,%.dt.yaml, $(dtb-))
 endif
 
+# Test self-contained headers
+extra-$(CONFIG_HEADER_TEST) += $(patsubst %.h,%.header_test.o,$(header-test-y))
+
 # Add subdir path
 
 extra-y:= $(addprefix $(obj)/,$(extra-y))
-- 
2.20.1

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

Re: [Intel-gfx] [PATCH xf86-video-intel v2 2/2] sna: Support 10bpc gamma via the GAMMA_LUT crtc property

2019-05-16 Thread Mario Kleiner
On Fri, Apr 26, 2019 at 6:32 PM Ville Syrjala
 wrote:
>
> From: Ville Syrjälä 
>
> Probe the GAMMA_LUT/GAMMA_LUT_SIZE props and utilize them when
> the running with > 8bpc.
>
> v2: s/sna_crtc_id/__sna_crtc_id/ in DBG since we have a sna_crtc
>
> Cc: Mario Kleiner 
> Signed-off-by: Ville Syrjälä 
> ---
>  src/sna/sna_display.c | 245 +++---
>  1 file changed, 207 insertions(+), 38 deletions(-)
>
> diff --git a/src/sna/sna_display.c b/src/sna/sna_display.c
> index 41edfec12839..6d671dce8c14 100644
> --- a/src/sna/sna_display.c
> +++ b/src/sna/sna_display.c
> @@ -127,6 +127,7 @@ struct local_mode_obj_get_properties {
> uint32_t obj_type;
> uint32_t pad;
>  };
> +#define LOCAL_MODE_OBJECT_CRTC 0x
>  #define LOCAL_MODE_OBJECT_PLANE 0x
>
>  struct local_mode_set_plane {
> @@ -229,6 +230,11 @@ struct sna_crtc {
> } primary;
> struct list sprites;
>
> +   struct drm_color_lut *gamma_lut;
> +   uint64_t gamma_lut_prop;
> +   uint64_t gamma_lut_blob;
> +   uint32_t gamma_lut_size;
> +
> uint32_t mode_serial, flip_serial;
>
> uint32_t last_seq, wrap_seq;
> @@ -317,6 +323,9 @@ static void __sna_output_dpms(xf86OutputPtr output, int 
> dpms, int fixup);
>  static void sna_crtc_disable_cursor(struct sna *sna, struct sna_crtc *crtc);
>  static bool sna_crtc_flip(struct sna *sna, struct sna_crtc *crtc,
>   struct kgem_bo *bo, int x, int y);
> +static void sna_crtc_gamma_set(xf86CrtcPtr crtc,
> +  CARD16 *red, CARD16 *green,
> +  CARD16 *blue, int size);
>
>  static bool is_zaphod(ScrnInfoPtr scrn)
>  {
> @@ -3150,11 +3159,9 @@ sna_crtc_set_mode_major(xf86CrtcPtr crtc, 
> DisplayModePtr mode,
>mode->VDisplay <= sna->mode.max_crtc_height);
>
>  #if HAS_GAMMA
> -   drmModeCrtcSetGamma(sna->kgem.fd, __sna_crtc_id(sna_crtc),
> -   crtc->gamma_size,
> -   crtc->gamma_red,
> -   crtc->gamma_green,
> -   crtc->gamma_blue);
> +   sna_crtc_gamma_set(crtc,
> +  crtc->gamma_red, crtc->gamma_green,
> +  crtc->gamma_blue, crtc->gamma_size);
>  #endif
>
> saved_kmode = sna_crtc->kmode;
> @@ -3212,12 +3219,44 @@ void sna_mode_adjust_frame(struct sna *sna, int x, 
> int y)
>
>  static void
>  sna_crtc_gamma_set(xf86CrtcPtr crtc,
> -  CARD16 *red, CARD16 *green, CARD16 *blue, int size)
> +  CARD16 *red, CARD16 *green, CARD16 *blue, int size)
>  {
> -   assert(to_sna_crtc(crtc));
> -   drmModeCrtcSetGamma(to_sna(crtc->scrn)->kgem.fd,
> -   sna_crtc_id(crtc),
> -   size, red, green, blue);
> +   struct sna *sna = to_sna(crtc->scrn);
> +   struct sna_crtc *sna_crtc = to_sna_crtc(crtc);
> +   struct drm_color_lut *lut = sna_crtc->gamma_lut;
> +   uint32_t blob_size = size * sizeof(lut[0]);
> +   uint32_t blob_id;
> +   int ret, i;
> +
> +   DBG(("%s: gamma_size %d\n", __FUNCTION__, size));
> +
> +   if (!lut) {
> +   assert(size == 256);
> +
> +   drmModeCrtcSetGamma(to_sna(crtc->scrn)->kgem.fd,
> +   sna_crtc_id(crtc),
> +   size, red, green, blue);
> +   return;
> +   }
> +
> +   assert(size == sna_crtc->gamma_lut_size);
> +
> +   for (i = 0; i < size; i++) {
> +   lut[i].red = red[i];
> +   lut[i].green = green[i];
> +   lut[i].blue = blue[i];
> +   }
> +
> +   ret = drmModeCreatePropertyBlob(sna->kgem.fd, lut, blob_size, 
> &blob_id);
> +   if (ret)
> +   return;
> +
> +   ret = drmModeObjectSetProperty(sna->kgem.fd,
> +  sna_crtc->id, DRM_MODE_OBJECT_CRTC,
> +  sna_crtc->gamma_lut_prop,
> +  blob_id);
> +
> +   drmModeDestroyPropertyBlob(sna->kgem.fd, blob_id);
>  }
>
>  static void
> @@ -3229,6 +3268,8 @@ sna_crtc_destroy(xf86CrtcPtr crtc)
> if (sna_crtc == NULL)
> return;
>
> +   free(sna_crtc->gamma_lut);
> +
> list_for_each_entry_safe(sprite, sn, &sna_crtc->sprites, link)
> free(sprite);
>
> @@ -3663,6 +3704,55 @@ bool sna_has_sprite_format(struct sna *sna, uint32_t 
> format)
> return false;
>  }
>
> +inline static bool prop_is_gamma_lut(const struct drm_mode_get_property 
> *prop)
> +{
> +   return prop_has_type_and_name(prop, 4, "GAMMA_LUT");
> +}
> +
> +inline static bool prop_is_gamma_lut_size(const struct drm_mode_get_property 
> *prop)
> +{
> +   return prop_has_type_and_name(prop, 1, "GAMMA_LUT_SIZE");
> +}
> +
> +static void sna_crtc_parse_prop(struct sna *sna,
> +   

[Intel-gfx] [RFC 3/3] DO NOT MERGE: drm/i915: add failing header to header-test-y

2019-05-16 Thread Jani Nikula
Demonstrate build failure on a header that is not self-contained.

Cc: Chris Wilson 
Cc: Masahiro Yamada 
Cc: Michal Marek 
Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/Makefile | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 05d01a3830d0..fcebf453c9ed 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -206,4 +206,5 @@ obj-$(CONFIG_DRM_I915) += i915.o
 obj-$(CONFIG_DRM_I915_GVT_KVMGT) += gvt/kvmgt.o
 
 header-test-y := \
+   i915_fixed.h \
i915_drv.h
-- 
2.20.1

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

[Intel-gfx] ✗ Fi.CI.BAT: failure for benchmarks/gem_wsim: Measure nop latency on all engines

2019-05-16 Thread Patchwork
== Series Details ==

Series: benchmarks/gem_wsim: Measure nop latency on all engines
URL   : https://patchwork.freedesktop.org/series/60737/
State : failure

== Summary ==

Applying: benchmarks/gem_wsim: Measure nop latency on all engines
Patch failed at 0001 benchmarks/gem_wsim: Measure nop latency on all engines
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, run "git am --abort".

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

[Intel-gfx] [RFC 2/3] drm/i915: ensure headers remain self-contained

2019-05-16 Thread Jani Nikula
Use the new header test facility.

Cc: Chris Wilson 
Cc: Masahiro Yamada 
Cc: Michal Marek 
Signed-off-by: Jani Nikula 
---
 drivers/gpu/drm/i915/Makefile | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile
index 1787e1299b1b..05d01a3830d0 100644
--- a/drivers/gpu/drm/i915/Makefile
+++ b/drivers/gpu/drm/i915/Makefile
@@ -204,3 +204,6 @@ i915-y += intel_lpe_audio.o
 
 obj-$(CONFIG_DRM_I915) += i915.o
 obj-$(CONFIG_DRM_I915_GVT_KVMGT) += gvt/kvmgt.o
+
+header-test-y := \
+   i915_drv.h
-- 
2.20.1

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

[Intel-gfx] ✗ Fi.CI.SPARSE: warning for series starting with [RFC,1/3] kbuild: add support for ensuring headers are self-contained

2019-05-16 Thread Patchwork
== Series Details ==

Series: series starting with [RFC,1/3] kbuild: add support for ensuring headers 
are self-contained
URL   : https://patchwork.freedesktop.org/series/60738/
State : warning

== Summary ==

$ dim sparse origin/drm-tip
Sparse version: v0.5.2
Commit: kbuild: add support for ensuring headers are self-contained
+Error in reading or end of file.

Commit: drm/i915: ensure headers remain self-contained
Okay!

Commit: DO NOT MERGE: drm/i915: add failing header to header-test-y
Okay!

___
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 [RFC,1/3] kbuild: add support for ensuring headers are self-contained

2019-05-16 Thread Patchwork
== Series Details ==

Series: series starting with [RFC,1/3] kbuild: add support for ensuring headers 
are self-contained
URL   : https://patchwork.freedesktop.org/series/60738/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6091 -> Patchwork_13027


Summary
---

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/

Possible new issues
---

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

### IGT changes ###

 Suppressed 

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

  * igt@gem_exec_basic@basic-blt:
- {fi-cml-u}: [PASS][1] -> [INCOMPLETE][2]
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-cml-u/igt@gem_exec_ba...@basic-blt.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/fi-cml-u/igt@gem_exec_ba...@basic-blt.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@amdgpu/amd_basic@userptr:
- fi-kbl-8809g:   [PASS][3] -> [DMESG-WARN][4] ([fdo#108965])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-kbl-8809g/igt@amdgpu/amd_ba...@userptr.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/fi-kbl-8809g/igt@amdgpu/amd_ba...@userptr.html

  * igt@gem_exec_suspend@basic-s4-devices:
- fi-blb-e6850:   [PASS][5] -> [INCOMPLETE][6] ([fdo#107718])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-blb-e6850/igt@gem_exec_susp...@basic-s4-devices.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/fi-blb-e6850/igt@gem_exec_susp...@basic-s4-devices.html

  * igt@i915_selftest@live_hangcheck:
- fi-apl-guc: [PASS][7] -> [INCOMPLETE][8] ([fdo#103927] / 
[fdo#110624])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-apl-guc/igt@i915_selftest@live_hangcheck.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/fi-apl-guc/igt@i915_selftest@live_hangcheck.html

  
 Possible fixes 

  * igt@i915_pm_rpm@module-reload:
- fi-skl-6770hq:  [FAIL][9] ([fdo#108511]) -> [PASS][10]
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-skl-6770hq/igt@i915_pm_...@module-reload.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/fi-skl-6770hq/igt@i915_pm_...@module-reload.html

  * igt@i915_selftest@live_contexts:
- fi-bdw-gvtdvm:  [DMESG-FAIL][11] ([fdo#110235]) -> [PASS][12]
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html

  * igt@kms_frontbuffer_tracking@basic:
- fi-hsw-peppy:   [DMESG-WARN][13] ([fdo#102614]) -> [PASS][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-hsw-peppy/igt@kms_frontbuffer_track...@basic.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/fi-hsw-peppy/igt@kms_frontbuffer_track...@basic.html

  * igt@prime_vgem@basic-fence-flip:
- fi-ilk-650: [DMESG-WARN][15] ([fdo#106387]) -> [PASS][16] +1 
similar issue
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-ilk-650/igt@prime_v...@basic-fence-flip.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/fi-ilk-650/igt@prime_v...@basic-fence-flip.html

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

  [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#106387]: https://bugs.freedesktop.org/show_bug.cgi?id=106387
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#108511]: https://bugs.freedesktop.org/show_bug.cgi?id=108511
  [fdo#108965]: https://bugs.freedesktop.org/show_bug.cgi?id=108965
  [fdo#110235]: https://bugs.freedesktop.org/show_bug.cgi?id=110235
  [fdo#110624]: https://bugs.freedesktop.org/show_bug.cgi?id=110624


Participating hosts (50 -> 43)
--

  Additional (1): fi-pnv-d510 
  Missing(8): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks 
fi-bsw-cyan fi-icl-y fi-byt-clapper fi-bdw-samus 


Build changes
-

  * Linux: CI_DRM_6091 -> Patchwork_13027

  CI_DRM_6091: 0ad895242a8e957336088625a9a6ba48ab838ec9 @ 
git://anongit.freedesktop.org/gfx-ci/linux
  IGT_4994: 555019f862c35f1619627761d6da21385be40920 @ 
git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  Patchwork_13027: 01f606aff618932547f3d16320d0334dd8cf2989 @ 
git://anongit.freedesktop.org/gfx-ci/linux


== Linux commits ==

01f606aff618 DO NOT MERGE: drm/i915: add fa

Re: [Intel-gfx] [PATCH 1/1] drm/i915: skip the second CRC even for GEN 7 GPUs

2019-05-16 Thread Chegondi, Harish
On Thu, 2019-05-16 at 15:55 +0300, Jani Nikula wrote:
> On Thu, 16 May 2019, Maarten Lankhorst <
> maarten.lankho...@linux.intel.com> wrote:
> > Op 16-05-2019 om 07:58 schreef Harish Chegondi:
> > > display_pipe_crc_irq_handler() skips the first CRC for all GPUs
> > > and the
> > > second CRC for GEN8+ GPUs. The second CRC is invalid even for BYT
> > > which
> > > is a GEN7 GPU. So, skip the second CRC even for GEN7 GPUs.
> > > 
> > > Cc: Jani Nikula 
> > > Cc: Tomi Sarvela 
> > > Cc: Petri Latvala 
> > > Cc: Ville Syrjälä 
> > > Cc: Maarten Lankhorst 
> > > Signed-off-by: Harish Chegondi 
> > > References: https://bugs.freedesktop.org/show_bug.cgi?id=103191
> > > ---
> > >  drivers/gpu/drm/i915/i915_irq.c | 4 ++--
> > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/i915_irq.c
> > > b/drivers/gpu/drm/i915/i915_irq.c
> > > index 233211fde0ea..3809e9f7fae2 100644
> > > --- a/drivers/gpu/drm/i915/i915_irq.c
> > > +++ b/drivers/gpu/drm/i915/i915_irq.c
> > > @@ -1775,11 +1775,11 @@ static void
> > > display_pipe_crc_irq_handler(struct drm_i915_private *dev_priv,
> > >* bonkers. So let's just wait for the next vblank and read
> > >* out the buggy result.
> > >*
> > > -  * On GEN8+ sometimes the second CRC is bonkers as well, so
> > > +  * On GEN7+ sometimes the second CRC is bonkers as well, so
> > >* don't trust that one either.
> > >*/
> > >   if (pipe_crc->skipped <= 0 ||
> > > - (INTEL_GEN(dev_priv) >= 8 && pipe_crc->skipped == 1)) {
> > > + (INTEL_GEN(dev_priv) >= 7 && pipe_crc->skipped == 1)) {
> > >   pipe_crc->skipped++;
> > >   spin_unlock(&pipe_crc->lock);
> > >   return;
> > 
> > I would be interested in the results, haswell is different from
> > VLV. Has it ever been observed on that platform?
> 
> Good point. I looked at [1] which I presumed was on VLV, but it says
> nothing about HSW.

In fdo # 103191, CRC mismatch failures in igt@kms_pipe_crc_basic@*
tests have not been observed on HSW. These tests have been very
consistently failing on CI fi-byt-squawks system which is a chromebook,
sporadically failing on CI fi-byt-clapper system which is also a
chromebook. However the tests are passing on other CI BYT systems like
fi-byt-n2820 and fi-byt-j1900 which are not chromebooks and the display
is not eDP. I haven't seen these failures happening on other GEN7 GPUs.
Instead of skipping the second CRC just for BYT, I thought it may be a
better idea to skip the second CRC on all GEN7 GPUs as the current code
is already skipping the second CRC on all GEN8+ GPUs.

Thanks!
Harish.

> 
> BR,
> Jani.
> 
> 
> 
> [1] https://bugs.freedesktop.org/show_bug.cgi?id=103191#c34
> 
> 


smime.p7s
Description: S/MIME cryptographic signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [PATCH 1/1] drm/i915: skip the second CRC even for GEN 7 GPUs

2019-05-16 Thread Chegondi, Harish
On Thu, 2019-05-16 at 16:30 +0300, Ville Syrjälä wrote:
> On Thu, May 16, 2019 at 03:55:25PM +0300, Jani Nikula wrote:
> > On Thu, 16 May 2019, Maarten Lankhorst <
> > maarten.lankho...@linux.intel.com> wrote:
> > > Op 16-05-2019 om 07:58 schreef Harish Chegondi:
> > > > display_pipe_crc_irq_handler() skips the first CRC for all GPUs
> > > > and the
> > > > second CRC for GEN8+ GPUs. The second CRC is invalid even for
> > > > BYT which
> > > > is a GEN7 GPU. So, skip the second CRC even for GEN7 GPUs.
> > > > 
> > > > Cc: Jani Nikula 
> > > > Cc: Tomi Sarvela 
> > > > Cc: Petri Latvala 
> > > > Cc: Ville Syrjälä 
> > > > Cc: Maarten Lankhorst 
> > > > Signed-off-by: Harish Chegondi 
> > > > References: https://bugs.freedesktop.org/show_bug.cgi?id=103191
> > > > ---
> > > >  drivers/gpu/drm/i915/i915_irq.c | 4 ++--
> > > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/i915_irq.c
> > > > b/drivers/gpu/drm/i915/i915_irq.c
> > > > index 233211fde0ea..3809e9f7fae2 100644
> > > > --- a/drivers/gpu/drm/i915/i915_irq.c
> > > > +++ b/drivers/gpu/drm/i915/i915_irq.c
> > > > @@ -1775,11 +1775,11 @@ static void
> > > > display_pipe_crc_irq_handler(struct drm_i915_private *dev_priv,
> > > >  * bonkers. So let's just wait for the next vblank and
> > > > read
> > > >  * out the buggy result.
> > > >  *
> > > > -* On GEN8+ sometimes the second CRC is bonkers as
> > > > well, so
> > > > +* On GEN7+ sometimes the second CRC is bonkers as
> > > > well, so
> > > >  * don't trust that one either.
> > > >  */
> > > > if (pipe_crc->skipped <= 0 ||
> > > > -   (INTEL_GEN(dev_priv) >= 8 && pipe_crc->skipped ==
> > > > 1)) {
> > > > +   (INTEL_GEN(dev_priv) >= 7 && pipe_crc->skipped ==
> > > > 1)) {
> > > > pipe_crc->skipped++;
> > > > spin_unlock(&pipe_crc->lock);
> > > > return;
> > > 
> > > I would be interested in the results, haswell is different from
> > > VLV. Has it ever been observed on that platform?
> > 
> > Good point. I looked at [1] which I presumed was on VLV, but it
> > says
> > nothing about HSW.
> 
> This whole thing is just a pile of duct tape anyway. The reason(s)
> for these funky crcs has never been properly analysed.

Ville,
Are the patches in your branch :
git://github.com/vsyrjala/linux.git g4x_fixes_4
related to fixing these invalid CRCs ?

Thanks!
Harish


smime.p7s
Description: S/MIME cryptographic signature
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

[Intel-gfx] [RFC 2/7] drm/i915: Remove rpm asserts that use i915

2019-05-16 Thread Daniele Ceraolo Spurio
Quite a few of the call points have already switched to the version
working directly on the runtime_pm structure, so let's switch over the
rest and kill the i915-based asserts.

Signed-off-by: Daniele Ceraolo Spurio 
---
 drivers/gpu/drm/i915/gvt/aperture_gm.c|  2 +-
 drivers/gpu/drm/i915/i915_gem.c   |  2 +-
 drivers/gpu/drm/i915/i915_gem_fence_reg.c |  2 +-
 drivers/gpu/drm/i915/i915_irq.c   |  6 +++---
 drivers/gpu/drm/i915/i915_vma.c   |  2 +-
 drivers/gpu/drm/i915/intel_csr.c  |  2 +-
 drivers/gpu/drm/i915/intel_drv.h  | 26 ++-
 drivers/gpu/drm/i915/intel_runtime_pm.c   | 14 ++--
 drivers/gpu/drm/i915/intel_uncore.c   | 12 +--
 9 files changed, 28 insertions(+), 40 deletions(-)

diff --git a/drivers/gpu/drm/i915/gvt/aperture_gm.c 
b/drivers/gpu/drm/i915/gvt/aperture_gm.c
index 1fa2f65c3cd1..7f4e3456ce11 100644
--- a/drivers/gpu/drm/i915/gvt/aperture_gm.c
+++ b/drivers/gpu/drm/i915/gvt/aperture_gm.c
@@ -131,7 +131,7 @@ void intel_vgpu_write_fence(struct intel_vgpu *vgpu,
struct drm_i915_fence_reg *reg;
i915_reg_t fence_reg_lo, fence_reg_hi;
 
-   assert_rpm_wakelock_held(dev_priv);
+   assert_rpm_wakelock_held(&dev_priv->runtime_pm);
 
if (WARN_ON(fence >= vgpu_fence_sz(vgpu)))
return;
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 2fcec1bfb038..5bccf7955285 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1807,7 +1807,7 @@ vm_fault_t i915_gem_fault(struct vm_fault *vmf)
goto err_fence;
 
/* Mark as being mmapped into userspace for later revocation */
-   assert_rpm_wakelock_held(dev_priv);
+   assert_rpm_wakelock_held(&dev_priv->runtime_pm);
if (!i915_vma_set_userfault(vma) && !obj->userfault_count++)
list_add(&obj->userfault_link, &dev_priv->mm.userfault_list);
GEM_BUG_ON(!obj->userfault_count);
diff --git a/drivers/gpu/drm/i915/i915_gem_fence_reg.c 
b/drivers/gpu/drm/i915/i915_gem_fence_reg.c
index 3084f52e3372..50f52264b163 100644
--- a/drivers/gpu/drm/i915/i915_gem_fence_reg.c
+++ b/drivers/gpu/drm/i915/i915_gem_fence_reg.c
@@ -354,7 +354,7 @@ i915_vma_pin_fence(struct i915_vma *vma)
/* Note that we revoke fences on runtime suspend. Therefore the user
 * must keep the device awake whilst using the fence.
 */
-   assert_rpm_wakelock_held(vma->vm->i915);
+   assert_rpm_wakelock_held(&vma->vm->i915->runtime_pm);
 
/* Just update our place in the LRU if our fence is getting reused. */
if (vma->fence) {
diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 233211fde0ea..32f56dd68ac9 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -588,7 +588,7 @@ void gen6_disable_rps_interrupts(struct drm_i915_private 
*dev_priv)
 
 void gen9_reset_guc_interrupts(struct drm_i915_private *dev_priv)
 {
-   assert_rpm_wakelock_held(dev_priv);
+   assert_rpm_wakelock_held(&dev_priv->runtime_pm);
 
spin_lock_irq(&dev_priv->irq_lock);
gen6_reset_pm_iir(dev_priv, dev_priv->pm_guc_events);
@@ -597,7 +597,7 @@ void gen9_reset_guc_interrupts(struct drm_i915_private 
*dev_priv)
 
 void gen9_enable_guc_interrupts(struct drm_i915_private *dev_priv)
 {
-   assert_rpm_wakelock_held(dev_priv);
+   assert_rpm_wakelock_held(&dev_priv->runtime_pm);
 
spin_lock_irq(&dev_priv->irq_lock);
if (!dev_priv->guc.interrupts_enabled) {
@@ -611,7 +611,7 @@ void gen9_enable_guc_interrupts(struct drm_i915_private 
*dev_priv)
 
 void gen9_disable_guc_interrupts(struct drm_i915_private *dev_priv)
 {
-   assert_rpm_wakelock_held(dev_priv);
+   assert_rpm_wakelock_held(&dev_priv->runtime_pm);
 
spin_lock_irq(&dev_priv->irq_lock);
dev_priv->guc.interrupts_enabled = false;
diff --git a/drivers/gpu/drm/i915/i915_vma.c b/drivers/gpu/drm/i915/i915_vma.c
index d4d308b6d1d8..07c84b8e2560 100644
--- a/drivers/gpu/drm/i915/i915_vma.c
+++ b/drivers/gpu/drm/i915/i915_vma.c
@@ -364,7 +364,7 @@ void __iomem *i915_vma_pin_iomap(struct i915_vma *vma)
int err;
 
/* Access through the GTT requires the device to be awake. */
-   assert_rpm_wakelock_held(vma->vm->i915);
+   assert_rpm_wakelock_held(&vma->vm->i915->runtime_pm);
 
lockdep_assert_held(&vma->vm->i915->drm.struct_mutex);
if (WARN_ON(!i915_vma_is_map_and_fenceable(vma))) {
diff --git a/drivers/gpu/drm/i915/intel_csr.c b/drivers/gpu/drm/i915/intel_csr.c
index 4527b9662330..ade1a3bd75bc 100644
--- a/drivers/gpu/drm/i915/intel_csr.c
+++ b/drivers/gpu/drm/i915/intel_csr.c
@@ -273,7 +273,7 @@ void intel_csr_load_program(struct drm_i915_private 
*dev_priv)
}
 
fw_size = dev_priv->csr.dmc_fw_size;
-   assert_rpm_wakelock_held(dev_priv);
+   assert_rpm_wakelock_held(&dev_priv->runtime_pm);
 
pree

[Intel-gfx] [RFC 1/7] drm/i915: prefer i915_runtime_pm in intel_runtime function

2019-05-16 Thread Daniele Ceraolo Spurio
As a first step towards updating the code to work on the runtime_pm
structure instead of i915, rework all the internals to use and pass
around that.

Signed-off-by: Daniele Ceraolo Spurio 
---
 drivers/gpu/drm/i915/i915_drv.h |   2 +
 drivers/gpu/drm/i915/intel_drv.h|  10 +-
 drivers/gpu/drm/i915/intel_runtime_pm.c | 152 
 3 files changed, 82 insertions(+), 82 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 5801f5407589..474074c7f395 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1177,6 +1177,8 @@ struct skl_wm_params {
  */
 struct i915_runtime_pm {
atomic_t wakeref_count;
+   struct device *kdev;
+   bool available;
bool suspended;
bool irqs_enabled;
 
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index 30b2d6ed2d53..bd04f394fbd3 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -1662,13 +1662,17 @@ assert_rpm_wakelock_held(struct i915_runtime_pm 
*rpm, int wakeref_count)
 }
 
 static inline void
-assert_rpm_raw_wakeref_held(struct drm_i915_private *i915)
+__assert_rpm_raw_wakeref_held(struct i915_runtime_pm *rpm)
 {
-   struct i915_runtime_pm *rpm = &i915->runtime_pm;
-
assert_rpm_raw_wakeref_held(rpm, atomic_read(&rpm->wakeref_count));
 }
 
+static inline void
+assert_rpm_raw_wakeref_held(struct drm_i915_private *i915)
+{
+   __assert_rpm_raw_wakeref_held(&i915->runtime_pm);
+}
+
 static inline void
 __assert_rpm_wakelock_held(struct i915_runtime_pm *rpm)
 {
diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c 
b/drivers/gpu/drm/i915/intel_runtime_pm.c
index b4abababdf6c..2e21f562df44 100644
--- a/drivers/gpu/drm/i915/intel_runtime_pm.c
+++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
@@ -60,19 +60,19 @@
  * present for a given platform.
  */
 
-static intel_wakeref_t intel_runtime_pm_get_raw(struct drm_i915_private *i915);
+static intel_wakeref_t intel_runtime_pm_get_raw(struct i915_runtime_pm *rpm);
 static void
-__intel_runtime_pm_put(struct drm_i915_private *i915, intel_wakeref_t wref,
+__intel_runtime_pm_put(struct i915_runtime_pm *rpm, intel_wakeref_t wref,
   bool wakelock);
 
 #if IS_ENABLED(CONFIG_DRM_I915_DEBUG_RUNTIME_PM)
 static void
-intel_runtime_pm_put_raw(struct drm_i915_private *i915, intel_wakeref_t wref);
+intel_runtime_pm_put_raw(struct i915_runtime_pm *rpm, intel_wakeref_t wref);
 #else
-static inline void intel_runtime_pm_put_raw(struct drm_i915_private *i915,
+static inline void intel_runtime_pm_put_raw(struct i915_runtime_pm *rpm,
intel_wakeref_t wref)
 {
-   __intel_runtime_pm_put(i915, -1, false);
+   __intel_runtime_pm_put(rpm, -1, false);
 }
 #endif
 
@@ -112,21 +112,18 @@ static void __print_depot_stack(depot_stack_handle_t 
stack,
snprint_stack_trace(buf, sz, &trace, indent);
 }
 
-static void init_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
+static void init_intel_runtime_pm_wakeref(struct i915_runtime_pm *rpm)
 {
-   struct i915_runtime_pm *rpm = &i915->runtime_pm;
-
spin_lock_init(&rpm->debug.lock);
 }
 
 static noinline depot_stack_handle_t
-track_intel_runtime_pm_wakeref(struct drm_i915_private *i915)
+track_intel_runtime_pm_wakeref(struct i915_runtime_pm *rpm)
 {
-   struct i915_runtime_pm *rpm = &i915->runtime_pm;
depot_stack_handle_t stack, *stacks;
unsigned long flags;
 
-   if (!HAS_RUNTIME_PM(i915))
+   if (!rpm->available)
return -1;
 
stack = __save_depot_stack();
@@ -153,10 +150,9 @@ track_intel_runtime_pm_wakeref(struct drm_i915_private 
*i915)
return stack;
 }
 
-static void untrack_intel_runtime_pm_wakeref(struct drm_i915_private *i915,
+static void untrack_intel_runtime_pm_wakeref(struct i915_runtime_pm *rpm,
 depot_stack_handle_t stack)
 {
-   struct i915_runtime_pm *rpm = &i915->runtime_pm;
unsigned long flags, n;
bool found = false;
 
@@ -274,9 +270,8 @@ dump_and_free_wakeref_tracking(struct 
intel_runtime_pm_debug *debug)
 }
 
 static noinline void
-__intel_wakeref_dec_and_check_tracking(struct drm_i915_private *i915)
+__intel_wakeref_dec_and_check_tracking(struct i915_runtime_pm *rpm)
 {
-   struct i915_runtime_pm *rpm = &i915->runtime_pm;
struct intel_runtime_pm_debug dbg = {};
unsigned long flags;
 
@@ -292,9 +287,8 @@ __intel_wakeref_dec_and_check_tracking(struct 
drm_i915_private *i915)
 }
 
 static noinline void
-untrack_all_intel_runtime_pm_wakerefs(struct drm_i915_private *i915)
+untrack_all_intel_runtime_pm_wakerefs(struct i915_runtime_pm *rpm)
 {
-   struct i915_runtime_pm *rpm = &i915->runtime_pm;
struct intel_runtime_pm_debug dbg = {};
unsigned long flags;
 
@@ -345,61 +339,57 @@ void print_intel_runtime_pm_wakeref(struct 
d

[Intel-gfx] [RFC 3/7] drm/i915: make enable/disable rpm assert function use the rpm structure

2019-05-16 Thread Daniele Ceraolo Spurio
With this all the rpm assert-related functions consistently work on
the i915_runtime_pm structure

Signed-off-by: Daniele Ceraolo Spurio 
---
 drivers/gpu/drm/i915/i915_drv.c | 44 +++--
 drivers/gpu/drm/i915/i915_irq.c | 32 ++---
 drivers/gpu/drm/i915/intel_drv.h| 12 
 drivers/gpu/drm/i915/intel_guc.c|  4 +--
 drivers/gpu/drm/i915/intel_uncore.c | 12 
 5 files changed, 53 insertions(+), 51 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 2c7a4318d13c..8b9e5b042e70 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -1884,7 +1884,7 @@ int i915_driver_load(struct pci_dev *pdev, const struct 
pci_device_id *ent)
if (ret < 0)
goto out_pci_disable;
 
-   disable_rpm_wakeref_asserts(dev_priv);
+   disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
 
ret = i915_driver_init_mmio(dev_priv);
if (ret < 0)
@@ -1900,7 +1900,7 @@ int i915_driver_load(struct pci_dev *pdev, const struct 
pci_device_id *ent)
 
i915_driver_register(dev_priv);
 
-   enable_rpm_wakeref_asserts(dev_priv);
+   enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
 
i915_welcome_messages(dev_priv);
 
@@ -1911,7 +1911,7 @@ int i915_driver_load(struct pci_dev *pdev, const struct 
pci_device_id *ent)
 out_cleanup_mmio:
i915_driver_cleanup_mmio(dev_priv);
 out_runtime_pm_put:
-   enable_rpm_wakeref_asserts(dev_priv);
+   enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
i915_driver_cleanup_early(dev_priv);
 out_pci_disable:
pci_disable_device(pdev);
@@ -1926,7 +1926,7 @@ void i915_driver_unload(struct drm_device *dev)
struct drm_i915_private *dev_priv = to_i915(dev);
struct pci_dev *pdev = dev_priv->drm.pdev;
 
-   disable_rpm_wakeref_asserts(dev_priv);
+   disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
 
i915_driver_unregister(dev_priv);
 
@@ -1966,7 +1966,7 @@ void i915_driver_unload(struct drm_device *dev)
i915_driver_cleanup_hw(dev_priv);
i915_driver_cleanup_mmio(dev_priv);
 
-   enable_rpm_wakeref_asserts(dev_priv);
+   enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
intel_runtime_pm_cleanup(dev_priv);
 }
 
@@ -2066,7 +2066,7 @@ static int i915_drm_suspend(struct drm_device *dev)
struct pci_dev *pdev = dev_priv->drm.pdev;
pci_power_t opregion_target_state;
 
-   disable_rpm_wakeref_asserts(dev_priv);
+   disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
 
/* We do a lot of poking in a lot of registers, make sure they work
 * properly. */
@@ -2100,7 +2100,7 @@ static int i915_drm_suspend(struct drm_device *dev)
 
intel_csr_ucode_suspend(dev_priv);
 
-   enable_rpm_wakeref_asserts(dev_priv);
+   enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
 
return 0;
 }
@@ -2123,7 +2123,7 @@ static int i915_drm_suspend_late(struct drm_device *dev, 
bool hibernation)
struct pci_dev *pdev = dev_priv->drm.pdev;
int ret;
 
-   disable_rpm_wakeref_asserts(dev_priv);
+   disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
 
i915_gem_suspend_late(dev_priv);
 
@@ -2164,7 +2164,7 @@ static int i915_drm_suspend_late(struct drm_device *dev, 
bool hibernation)
pci_set_power_state(pdev, PCI_D3hot);
 
 out:
-   enable_rpm_wakeref_asserts(dev_priv);
+   enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
if (!dev_priv->uncore.user_forcewake.count)
intel_runtime_pm_cleanup(dev_priv);
 
@@ -2200,7 +2200,7 @@ static int i915_drm_resume(struct drm_device *dev)
struct drm_i915_private *dev_priv = to_i915(dev);
int ret;
 
-   disable_rpm_wakeref_asserts(dev_priv);
+   disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
intel_sanitize_gt_powersave(dev_priv);
 
i915_gem_sanitize(dev_priv);
@@ -2260,7 +2260,7 @@ static int i915_drm_resume(struct drm_device *dev)
 
intel_power_domains_enable(dev_priv);
 
-   enable_rpm_wakeref_asserts(dev_priv);
+   enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
 
return 0;
 }
@@ -2315,7 +2315,7 @@ static int i915_drm_resume_early(struct drm_device *dev)
 
pci_set_master(pdev);
 
-   disable_rpm_wakeref_asserts(dev_priv);
+   disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
 
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
ret = vlv_resume_prepare(dev_priv, false);
@@ -2340,7 +2340,7 @@ static int i915_drm_resume_early(struct drm_device *dev)
 
intel_gt_sanitize(dev_priv, true);
 
-   enable_rpm_wakeref_asserts(dev_priv);
+   enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
 
return ret;
 }
@@ -2873,6 +2873,7 @@ static int intel_runtime_suspend(struct device *kdev)
struct pci_dev *pdev = to_pci_dev(kdev);
struct drm_device

[Intel-gfx] [RFC 0/7] Runtime PM encapsulation

2019-05-16 Thread Daniele Ceraolo Spurio
While reworking other parts of the code to rely less on i915 and use the
new uncore logic for register access, I've noticed that, after the
conversion, in a few places the i915 structure is required only for the
rpm_get/put calls. We do have a reference to the rpm structure in the
uncore one, so, since we're relying on the latter more, having the rpm
code work directly on its own sub-structure will allow us to ditch
dev_priv in a few more places. Also, having a section of the code work on
its own logic sub-structure instead getting it out of dev_priv every time
makes the flow generally cleaner IMO.

This series grows the code slightly due to flipping all the get/put call
points derive the rpm structure from dev_priv, but we should recoup that
over time while we complete the rework.

While applying the changes I noticed that there is also a lot of
potential for refactoring/encapsuliation around the display power
functions. I experimented a bit with splitting these functions to their
own file and moving most of the logic to work on i915_power_domains since
we keep getting that structure out of i915, but the code is not as easy
to update due to frequent calls to other areas in the display domain,
so I gave up for now.

Series very lightly tested.

Cc: Imre Deak 
Cc: Chris Wilson 

Daniele Ceraolo Spurio (7):
  drm/i915: prefer i915_runtime_pm in intel_runtime function
  drm/i915: Remove rpm asserts that use i915
  drm/i915: make enable/disable rpm assert function use the rpm
structure
  drm/i915: move and rename i915_runtime_pm
  drm/i915: move a few more functions to accept the rpm structure
  drm/i915: update rpm_get/put to use the rpm structure
  drm/i915: update with_intel_runtime_pm to use the rpm structure

 drivers/gpu/drm/i915/gt/intel_context.c   |   2 +-
 drivers/gpu/drm/i915/gt/intel_engine_cs.c |   8 +-
 drivers/gpu/drm/i915/gt/intel_hangcheck.c |   4 +-
 drivers/gpu/drm/i915/gt/intel_reset.c |   6 +-
 drivers/gpu/drm/i915/gt/selftest_hangcheck.c  |  20 +-
 drivers/gpu/drm/i915/gt/selftest_lrc.c|  36 +--
 .../gpu/drm/i915/gt/selftest_workarounds.c|  16 +-
 drivers/gpu/drm/i915/gvt/aperture_gm.c|  17 +-
 drivers/gpu/drm/i915/gvt/gvt.h|   4 +-
 drivers/gpu/drm/i915/gvt/sched_policy.c   |   4 +-
 drivers/gpu/drm/i915/gvt/scheduler.c  |   4 +-
 drivers/gpu/drm/i915/i915_debugfs.c   |  79 +++
 drivers/gpu/drm/i915/i915_drv.c   |  57 ++---
 drivers/gpu/drm/i915/i915_drv.h   |  50 +
 drivers/gpu/drm/i915/i915_gem.c   |  30 +--
 drivers/gpu/drm/i915/i915_gem_fence_reg.c |   6 +-
 drivers/gpu/drm/i915/i915_gem_gtt.c   |   8 +-
 drivers/gpu/drm/i915/i915_gem_shrinker.c  |  12 +-
 drivers/gpu/drm/i915/i915_irq.c   |  38 ++--
 drivers/gpu/drm/i915/i915_perf.c  |   6 +-
 drivers/gpu/drm/i915/i915_pmu.c   |  11 +-
 drivers/gpu/drm/i915/i915_sysfs.c |  14 +-
 drivers/gpu/drm/i915/i915_vma.c   |   2 +-
 drivers/gpu/drm/i915/intel_csr.c  |   2 +-
 drivers/gpu/drm/i915/intel_display.c  |   4 +-
 drivers/gpu/drm/i915/intel_drv.h  | 105 -
 drivers/gpu/drm/i915/intel_fbdev.c|   6 +-
 drivers/gpu/drm/i915/intel_guc.c  |   4 +-
 drivers/gpu/drm/i915/intel_guc_log.c  |   6 +-
 drivers/gpu/drm/i915/intel_hotplug.c  |   4 +-
 drivers/gpu/drm/i915/intel_huc.c  |   2 +-
 drivers/gpu/drm/i915/intel_panel.c|   2 +-
 drivers/gpu/drm/i915/intel_pm.c   |   8 +-
 drivers/gpu/drm/i915/intel_runtime_pm.c   | 205 --
 drivers/gpu/drm/i915/intel_runtime_pm.h   | 185 ++--
 drivers/gpu/drm/i915/intel_uc.c   |   2 +-
 drivers/gpu/drm/i915/intel_uncore.c   |  26 +--
 drivers/gpu/drm/i915/intel_uncore.h   |   4 +-
 drivers/gpu/drm/i915/intel_wakeref.c  |   4 +-
 drivers/gpu/drm/i915/selftests/huge_pages.c   |   4 +-
 drivers/gpu/drm/i915/selftests/i915_active.c  |   8 +-
 drivers/gpu/drm/i915/selftests/i915_gem.c |  10 +-
 .../drm/i915/selftests/i915_gem_coherency.c   |   4 +-
 .../gpu/drm/i915/selftests/i915_gem_context.c |  18 +-
 .../gpu/drm/i915/selftests/i915_gem_evict.c   |   6 +-
 drivers/gpu/drm/i915/selftests/i915_gem_gtt.c |   8 +-
 .../gpu/drm/i915/selftests/i915_gem_object.c  |   6 +-
 drivers/gpu/drm/i915/selftests/i915_request.c |  22 +-
 .../gpu/drm/i915/selftests/i915_timeline.c|  16 +-
 drivers/gpu/drm/i915/selftests/intel_guc.c|   8 +-
 drivers/gpu/drm/i915/selftests/intel_uncore.c |   4 +-
 .../gpu/drm/i915/selftests/mock_gem_device.c  |   2 +-
 52 files changed, 553 insertions(+), 566 deletions(-)

-- 
2.20.1

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

[Intel-gfx] [RFC 4/7] drm/i915: move and rename i915_runtime_pm

2019-05-16 Thread Daniele Ceraolo Spurio
Asserts aside, all the code working on this structure is in
intel_runtime_pm.c and uses the intel_ prefix, so move the
structure to intel_runtime_pm.h and adopt the same prefix.

Since all the asserts are now working on the runtime_pm structure,
bring them across as well.

Signed-off-by: Daniele Ceraolo Spurio 
---
 drivers/gpu/drm/i915/i915_debugfs.c |   4 +-
 drivers/gpu/drm/i915/i915_drv.c |   4 +-
 drivers/gpu/drm/i915/i915_drv.h |  52 +
 drivers/gpu/drm/i915/intel_drv.h|  97 
 drivers/gpu/drm/i915/intel_runtime_pm.c |  58 +-
 drivers/gpu/drm/i915/intel_runtime_pm.h | 147 
 drivers/gpu/drm/i915/intel_uncore.h |   4 +-
 7 files changed, 183 insertions(+), 183 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c 
b/drivers/gpu/drm/i915/i915_debugfs.c
index 072464a18050..227a1cdf4f02 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -2636,7 +2636,7 @@ static int i915_energy_uJ(struct seq_file *m, void *data)
return 0;
 }
 
-static int i915_runtime_pm_status(struct seq_file *m, void *unused)
+static int intel_runtime_pm_status(struct seq_file *m, void *unused)
 {
struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct pci_dev *pdev = dev_priv->drm.pdev;
@@ -4600,7 +4600,7 @@ static const struct drm_info_list i915_debugfs_list[] = {
{"i915_llc", i915_llc, 0},
{"i915_edp_psr_status", i915_edp_psr_status, 0},
{"i915_energy_uJ", i915_energy_uJ, 0},
-   {"i915_runtime_pm_status", i915_runtime_pm_status, 0},
+   {"intel_runtime_pm_status", intel_runtime_pm_status, 0},
{"i915_power_domain_info", i915_power_domain_info, 0},
{"i915_dmc_info", i915_dmc_info, 0},
{"i915_display_info", i915_display_info, 0},
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 8b9e5b042e70..7938906f5b1d 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -2873,7 +2873,7 @@ static int intel_runtime_suspend(struct device *kdev)
struct pci_dev *pdev = to_pci_dev(kdev);
struct drm_device *dev = pci_get_drvdata(pdev);
struct drm_i915_private *dev_priv = to_i915(dev);
-   struct i915_runtime_pm *rpm = &dev_priv->runtime_pm;
+   struct intel_runtime_pm *rpm = &dev_priv->runtime_pm;
int ret;
 
if (WARN_ON_ONCE(!(dev_priv->gt_pm.rc6.enabled && HAS_RC6(dev_priv
@@ -2972,7 +2972,7 @@ static int intel_runtime_resume(struct device *kdev)
struct pci_dev *pdev = to_pci_dev(kdev);
struct drm_device *dev = pci_get_drvdata(pdev);
struct drm_i915_private *dev_priv = to_i915(dev);
-   struct i915_runtime_pm *rpm = &dev_priv->runtime_pm;
+   struct intel_runtime_pm *rpm = &dev_priv->runtime_pm;
int ret = 0;
 
if (WARN_ON_ONCE(!HAS_RUNTIME_PM(dev_priv)))
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 474074c7f395..195ba437835f 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1152,56 +1152,6 @@ struct skl_wm_params {
u32 dbuf_block_size;
 };
 
-/*
- * This struct helps tracking the state needed for runtime PM, which puts the
- * device in PCI D3 state. Notice that when this happens, nothing on the
- * graphics device works, even register access, so we don't get interrupts nor
- * anything else.
- *
- * Every piece of our code that needs to actually touch the hardware needs to
- * either call intel_runtime_pm_get or call intel_display_power_get with the
- * appropriate power domain.
- *
- * Our driver uses the autosuspend delay feature, which means we'll only really
- * suspend if we stay with zero refcount for a certain amount of time. The
- * default value is currently very conservative (see intel_runtime_pm_enable), 
but
- * it can be changed with the standard runtime PM files from sysfs.
- *
- * The irqs_disabled variable becomes true exactly after we disable the IRQs 
and
- * goes back to false exactly before we reenable the IRQs. We use this variable
- * to check if someone is trying to enable/disable IRQs while they're supposed
- * to be disabled. This shouldn't happen and we'll print some error messages in
- * case it happens.
- *
- * For more, read the Documentation/power/runtime_pm.txt.
- */
-struct i915_runtime_pm {
-   atomic_t wakeref_count;
-   struct device *kdev;
-   bool available;
-   bool suspended;
-   bool irqs_enabled;
-
-#if IS_ENABLED(CONFIG_DRM_I915_DEBUG_RUNTIME_PM)
-   /*
-* To aide detection of wakeref leaks and general misuse, we
-* track all wakeref holders. With manual markup (i.e. returning
-* a cookie to each rpm_get caller which they then supply to their
-* paired rpm_put) we can remove corresponding pairs of and keep
-* the array trimmed to active wakerefs.
-*/
-   struct i

[Intel-gfx] [RFC 7/7] drm/i915: update with_intel_runtime_pm to use the rpm structure

2019-05-16 Thread Daniele Ceraolo Spurio
Matching the underlying get/put functions.

Signed-off-by: Daniele Ceraolo Spurio 
---
 drivers/gpu/drm/i915/gt/intel_context.c   |  2 +-
 drivers/gpu/drm/i915/gt/intel_reset.c |  2 +-
 .../gpu/drm/i915/gt/selftest_workarounds.c|  4 ++--
 drivers/gpu/drm/i915/i915_debugfs.c   | 24 +--
 drivers/gpu/drm/i915/i915_gem.c   |  2 +-
 drivers/gpu/drm/i915/i915_gem_gtt.c   |  8 +++
 drivers/gpu/drm/i915/i915_gem_shrinker.c  |  8 +++
 drivers/gpu/drm/i915/i915_pmu.c   |  3 ++-
 drivers/gpu/drm/i915/i915_sysfs.c |  2 +-
 drivers/gpu/drm/i915/intel_guc_log.c  |  6 ++---
 drivers/gpu/drm/i915/intel_huc.c  |  2 +-
 drivers/gpu/drm/i915/intel_panel.c|  2 +-
 drivers/gpu/drm/i915/intel_pm.c   |  8 +++
 drivers/gpu/drm/i915/intel_runtime_pm.h   | 12 +-
 drivers/gpu/drm/i915/intel_uc.c   |  2 +-
 drivers/gpu/drm/i915/intel_uncore.c   |  2 +-
 drivers/gpu/drm/i915/selftests/i915_gem.c |  6 ++---
 .../gpu/drm/i915/selftests/i915_gem_context.c |  6 ++---
 .../gpu/drm/i915/selftests/i915_gem_evict.c   |  2 +-
 .../gpu/drm/i915/selftests/i915_gem_object.c  |  2 +-
 drivers/gpu/drm/i915/selftests/i915_request.c |  2 +-
 21 files changed, 54 insertions(+), 53 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_context.c 
b/drivers/gpu/drm/i915/gt/intel_context.c
index 5b31e1e05ddd..21892683a804 100644
--- a/drivers/gpu/drm/i915/gt/intel_context.c
+++ b/drivers/gpu/drm/i915/gt/intel_context.c
@@ -52,7 +52,7 @@ int __intel_context_do_pin(struct intel_context *ce)
intel_wakeref_t wakeref;
 
err = 0;
-   with_intel_runtime_pm(ce->engine->i915, wakeref)
+   with_intel_runtime_pm(&ce->engine->i915->runtime_pm, wakeref)
err = ce->ops->pin(ce);
if (err)
goto err;
diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c 
b/drivers/gpu/drm/i915/gt/intel_reset.c
index ad943810eded..4e0a56c36a2a 100644
--- a/drivers/gpu/drm/i915/gt/intel_reset.c
+++ b/drivers/gpu/drm/i915/gt/intel_reset.c
@@ -849,7 +849,7 @@ void i915_gem_set_wedged(struct drm_i915_private *i915)
intel_wakeref_t wakeref;
 
mutex_lock(&error->wedge_mutex);
-   with_intel_runtime_pm(i915, wakeref)
+   with_intel_runtime_pm(&i915->runtime_pm, wakeref)
__i915_gem_set_wedged(i915);
mutex_unlock(&error->wedge_mutex);
 }
diff --git a/drivers/gpu/drm/i915/gt/selftest_workarounds.c 
b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
index 6c1db2e403ba..1669f0016893 100644
--- a/drivers/gpu/drm/i915/gt/selftest_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
@@ -246,7 +246,7 @@ switch_to_scratch_context(struct intel_engine_cs *engine,
GEM_BUG_ON(i915_gem_context_is_bannable(ctx));
 
rq = ERR_PTR(-ENODEV);
-   with_intel_runtime_pm(engine->i915, wakeref)
+   with_intel_runtime_pm(&engine->i915->runtime_pm, wakeref)
rq = igt_spinner_create_request(spin, ctx, engine, MI_NOOP);
 
kernel_context_close(ctx);
@@ -302,7 +302,7 @@ static int check_whitelist_across_reset(struct 
intel_engine_cs *engine,
if (err)
goto out;
 
-   with_intel_runtime_pm(i915, wakeref)
+   with_intel_runtime_pm(&i915->runtime_pm, wakeref)
err = reset(engine);
 
igt_spinner_end(&spin);
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c 
b/drivers/gpu/drm/i915/i915_debugfs.c
index e58a0152b25f..4e8cd1e01e57 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -976,7 +976,7 @@ static int i915_gpu_info_open(struct inode *inode, struct 
file *file)
intel_wakeref_t wakeref;
 
gpu = NULL;
-   with_intel_runtime_pm(i915, wakeref)
+   with_intel_runtime_pm(&i915->runtime_pm, wakeref)
gpu = i915_capture_gpu_state(i915);
if (IS_ERR(gpu))
return PTR_ERR(gpu);
@@ -1303,7 +1303,7 @@ static int i915_hangcheck_info(struct seq_file *m, void 
*unused)
return 0;
}
 
-   with_intel_runtime_pm(dev_priv, wakeref) {
+   with_intel_runtime_pm(&dev_priv->runtime_pm, wakeref) {
for_each_engine(engine, dev_priv, id)
acthd[id] = intel_engine_get_active_head(engine);
 
@@ -1562,7 +1562,7 @@ static int i915_drpc_info(struct seq_file *m, void 
*unused)
intel_wakeref_t wakeref;
int err = -ENODEV;
 
-   with_intel_runtime_pm(dev_priv, wakeref) {
+   with_intel_runtime_pm(&dev_priv->runtime_pm, wakeref) {
if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
err = vlv_drpc_info(m);
else if (INTEL_GEN(dev_priv) >= 6)
@@ -1729,7 +1729,7 @@ static int i915_emon_status(struct seq_file *m, void 
*unused)
if (!IS_GEN(i915, 5))
 

[Intel-gfx] [RFC 5/7] drm/i915: move a few more functions to accept the rpm structure

2019-05-16 Thread Daniele Ceraolo Spurio
Focusing on the functions called in few places.

Signed-off-by: Daniele Ceraolo Spurio 
---
 drivers/gpu/drm/i915/i915_debugfs.c   |  2 +-
 drivers/gpu/drm/i915/i915_drv.c   | 17 +
 drivers/gpu/drm/i915/intel_runtime_pm.c   | 19 ---
 drivers/gpu/drm/i915/intel_runtime_pm.h   | 12 ++--
 .../gpu/drm/i915/selftests/mock_gem_device.c  |  2 +-
 5 files changed, 25 insertions(+), 27 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_debugfs.c 
b/drivers/gpu/drm/i915/i915_debugfs.c
index 227a1cdf4f02..011537632c4f 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -2663,7 +2663,7 @@ static int intel_runtime_pm_status(struct seq_file *m, 
void *unused)
if (IS_ENABLED(CONFIG_DRM_I915_DEBUG_RUNTIME_PM)) {
struct drm_printer p = drm_seq_file_printer(m);
 
-   print_intel_runtime_pm_wakeref(dev_priv, &p);
+   print_intel_runtime_pm_wakeref(&dev_priv->runtime_pm, &p);
}
 
return 0;
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 7938906f5b1d..4ce41083313b 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -903,7 +903,7 @@ static int i915_driver_init_early(struct drm_i915_private 
*dev_priv)
mutex_init(&dev_priv->hdcp_comp_mutex);
 
i915_memcpy_init_early(dev_priv);
-   intel_runtime_pm_init_early(dev_priv);
+   intel_runtime_pm_init_early(&dev_priv->runtime_pm);
 
ret = i915_workqueues_init(dev_priv);
if (ret < 0)
@@ -1746,7 +1746,7 @@ static void i915_driver_register(struct drm_i915_private 
*dev_priv)
drm_kms_helper_poll_init(dev);
 
intel_power_domains_enable(dev_priv);
-   intel_runtime_pm_enable(dev_priv);
+   intel_runtime_pm_enable(&dev_priv->runtime_pm);
 }
 
 /**
@@ -1755,7 +1755,7 @@ static void i915_driver_register(struct drm_i915_private 
*dev_priv)
  */
 static void i915_driver_unregister(struct drm_i915_private *dev_priv)
 {
-   intel_runtime_pm_disable(dev_priv);
+   intel_runtime_pm_disable(&dev_priv->runtime_pm);
intel_power_domains_disable(dev_priv);
 
intel_fbdev_unregister(dev_priv);
@@ -1967,7 +1967,7 @@ void i915_driver_unload(struct drm_device *dev)
i915_driver_cleanup_mmio(dev_priv);
 
enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
-   intel_runtime_pm_cleanup(dev_priv);
+   intel_runtime_pm_cleanup(&dev_priv->runtime_pm);
 }
 
 static void i915_driver_release(struct drm_device *dev)
@@ -2121,9 +2121,10 @@ static int i915_drm_suspend_late(struct drm_device *dev, 
bool hibernation)
 {
struct drm_i915_private *dev_priv = to_i915(dev);
struct pci_dev *pdev = dev_priv->drm.pdev;
+   struct intel_runtime_pm *rpm = &dev_priv->runtime_pm;
int ret;
 
-   disable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
+   disable_rpm_wakeref_asserts(rpm);
 
i915_gem_suspend_late(dev_priv);
 
@@ -2164,9 +2165,9 @@ static int i915_drm_suspend_late(struct drm_device *dev, 
bool hibernation)
pci_set_power_state(pdev, PCI_D3hot);
 
 out:
-   enable_rpm_wakeref_asserts(&dev_priv->runtime_pm);
+   enable_rpm_wakeref_asserts(rpm);
if (!dev_priv->uncore.user_forcewake.count)
-   intel_runtime_pm_cleanup(dev_priv);
+   intel_runtime_pm_cleanup(rpm);
 
return ret;
 }
@@ -2928,7 +2929,7 @@ static int intel_runtime_suspend(struct device *kdev)
}
 
enable_rpm_wakeref_asserts(rpm);
-   intel_runtime_pm_cleanup(dev_priv);
+   intel_runtime_pm_cleanup(rpm);
 
if (intel_uncore_arm_unclaimed_mmio_detection(&dev_priv->uncore))
DRM_ERROR("Unclaimed access detected prior to suspending\n");
diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.c 
b/drivers/gpu/drm/i915/intel_runtime_pm.c
index f669688c32c9..3150dbe4d1c3 100644
--- a/drivers/gpu/drm/i915/intel_runtime_pm.c
+++ b/drivers/gpu/drm/i915/intel_runtime_pm.c
@@ -299,13 +299,12 @@ untrack_all_intel_runtime_pm_wakerefs(struct 
intel_runtime_pm *rpm)
dump_and_free_wakeref_tracking(&dbg);
 }
 
-void print_intel_runtime_pm_wakeref(struct drm_i915_private *i915,
+void print_intel_runtime_pm_wakeref(struct intel_runtime_pm *rpm,
struct drm_printer *p)
 {
struct intel_runtime_pm_debug dbg = {};
 
do {
-   struct intel_runtime_pm *rpm = &i915->runtime_pm;
unsigned long alloc = dbg.count;
depot_stack_handle_t *s;
 
@@ -5145,7 +5144,7 @@ void intel_runtime_pm_put(struct drm_i915_private *i915, 
intel_wakeref_t wref)
 
 /**
  * intel_runtime_pm_enable - enable runtime pm
- * @i915: i915 device instance
+ * @rpm: the intel_runtime_pm structure
  *
  * This function enables runtime pm at the end of the driver load sequence.
  *
@@ -5153,9 +5152,8 @@ void intel_runtime_pm_put(

[Intel-gfx] [RFC 6/7] drm/i915: update rpm_get/put to use the rpm structure

2019-05-16 Thread Daniele Ceraolo Spurio
The functions are internally already only using the structure, so we
need to just flip the interface.

Signed-off-by: Daniele Ceraolo Spurio 
---
 drivers/gpu/drm/i915/gt/intel_engine_cs.c |  8 +--
 drivers/gpu/drm/i915/gt/intel_hangcheck.c |  4 +-
 drivers/gpu/drm/i915/gt/intel_reset.c |  4 +-
 drivers/gpu/drm/i915/gt/selftest_hangcheck.c  | 20 
 drivers/gpu/drm/i915/gt/selftest_lrc.c| 36 +++---
 .../gpu/drm/i915/gt/selftest_workarounds.c| 12 ++---
 drivers/gpu/drm/i915/gvt/aperture_gm.c| 15 +++---
 drivers/gpu/drm/i915/gvt/gvt.h|  4 +-
 drivers/gpu/drm/i915/gvt/sched_policy.c   |  4 +-
 drivers/gpu/drm/i915/gvt/scheduler.c  |  4 +-
 drivers/gpu/drm/i915/i915_debugfs.c   | 49 ++-
 drivers/gpu/drm/i915/i915_gem.c   | 26 +-
 drivers/gpu/drm/i915/i915_gem_fence_reg.c |  4 +-
 drivers/gpu/drm/i915/i915_gem_shrinker.c  |  4 +-
 drivers/gpu/drm/i915/i915_perf.c  |  6 +--
 drivers/gpu/drm/i915/i915_pmu.c   |  8 +--
 drivers/gpu/drm/i915/i915_sysfs.c | 12 ++---
 drivers/gpu/drm/i915/intel_display.c  |  4 +-
 drivers/gpu/drm/i915/intel_fbdev.c|  6 +--
 drivers/gpu/drm/i915/intel_hotplug.c  |  4 +-
 drivers/gpu/drm/i915/intel_runtime_pm.c   | 48 +-
 drivers/gpu/drm/i915/intel_runtime_pm.h   | 22 -
 drivers/gpu/drm/i915/intel_wakeref.c  |  4 +-
 drivers/gpu/drm/i915/selftests/huge_pages.c   |  4 +-
 drivers/gpu/drm/i915/selftests/i915_active.c  |  8 +--
 drivers/gpu/drm/i915/selftests/i915_gem.c |  4 +-
 .../drm/i915/selftests/i915_gem_coherency.c   |  4 +-
 .../gpu/drm/i915/selftests/i915_gem_context.c | 12 ++---
 .../gpu/drm/i915/selftests/i915_gem_evict.c   |  4 +-
 drivers/gpu/drm/i915/selftests/i915_gem_gtt.c |  8 +--
 .../gpu/drm/i915/selftests/i915_gem_object.c  |  4 +-
 drivers/gpu/drm/i915/selftests/i915_request.c | 20 
 .../gpu/drm/i915/selftests/i915_timeline.c| 16 +++---
 drivers/gpu/drm/i915/selftests/intel_guc.c|  8 +--
 drivers/gpu/drm/i915/selftests/intel_uncore.c |  4 +-
 35 files changed, 201 insertions(+), 203 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c 
b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
index 4c3753c1b573..26f3b68ab7d6 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -1059,7 +1059,7 @@ static bool ring_is_idle(struct intel_engine_cs *engine)
return true;
 
/* If the whole device is asleep, the engine must be idle */
-   wakeref = intel_runtime_pm_get_if_in_use(dev_priv);
+   wakeref = intel_runtime_pm_get_if_in_use(&dev_priv->runtime_pm);
if (!wakeref)
return true;
 
@@ -1073,7 +1073,7 @@ static bool ring_is_idle(struct intel_engine_cs *engine)
!(ENGINE_READ(engine, RING_MI_MODE) & MODE_IDLE))
idle = false;
 
-   intel_runtime_pm_put(dev_priv, wakeref);
+   intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref);
 
return idle;
 }
@@ -1487,10 +1487,10 @@ void intel_engine_dump(struct intel_engine_cs *engine,
 
rcu_read_unlock();
 
-   wakeref = intel_runtime_pm_get_if_in_use(engine->i915);
+   wakeref = intel_runtime_pm_get_if_in_use(&engine->i915->runtime_pm);
if (wakeref) {
intel_engine_print_registers(engine, m);
-   intel_runtime_pm_put(engine->i915, wakeref);
+   intel_runtime_pm_put(&engine->i915->runtime_pm, wakeref);
} else {
drm_printf(m, "\tDevice is asleep; skipping register dump\n");
}
diff --git a/drivers/gpu/drm/i915/gt/intel_hangcheck.c 
b/drivers/gpu/drm/i915/gt/intel_hangcheck.c
index 3a4d09b80fa0..d5a76b66b91b 100644
--- a/drivers/gpu/drm/i915/gt/intel_hangcheck.c
+++ b/drivers/gpu/drm/i915/gt/intel_hangcheck.c
@@ -273,7 +273,7 @@ static void i915_hangcheck_elapsed(struct work_struct *work)
if (i915_terminally_wedged(dev_priv))
return;
 
-   wakeref = intel_runtime_pm_get_if_in_use(dev_priv);
+   wakeref = intel_runtime_pm_get_if_in_use(&dev_priv->runtime_pm);
if (!wakeref)
return;
 
@@ -324,7 +324,7 @@ static void i915_hangcheck_elapsed(struct work_struct *work)
if (hung)
hangcheck_declare_hang(dev_priv, hung, stuck);
 
-   intel_runtime_pm_put(dev_priv, wakeref);
+   intel_runtime_pm_put(&dev_priv->runtime_pm, wakeref);
 
/* Reset timer in case GPU hangs without another request being added */
i915_queue_hangcheck(dev_priv);
diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c 
b/drivers/gpu/drm/i915/gt/intel_reset.c
index 464369bc55ad..ad943810eded 100644
--- a/drivers/gpu/drm/i915/gt/intel_reset.c
+++ b/drivers/gpu/drm/i915/gt/intel_reset.c
@@ -1242,7 +1242,7 @@ void i915_handle_error(struct drm_i915_private *i915,
 * isn't the case at l

Re: [Intel-gfx] [RFC 4/7] drm/i915: move and rename i915_runtime_pm

2019-05-16 Thread Chris Wilson
Quoting Chris Wilson (2019-05-16 23:07:43)
> Quoting Daniele Ceraolo Spurio (2019-05-16 22:56:31)
> > diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.h 
> > b/drivers/gpu/drm/i915/intel_runtime_pm.h
> > index b964ca7af9c8..0e3817f9785e 100644
> > --- a/drivers/gpu/drm/i915/intel_runtime_pm.h
> > +++ b/drivers/gpu/drm/i915/intel_runtime_pm.h
> > @@ -6,6 +6,7 @@
> >  #ifndef __INTEL_RUNTIME_PM_H__
> >  #define __INTEL_RUNTIME_PM_H__
> >  
> > +#include 
> 
> There doesn't seem to be any peeking into struct device, so do we not
> just need the struct device forward decl here?

And add it to Makefile.headers_test
-Chris
___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Re: [Intel-gfx] [RFC 4/7] drm/i915: move and rename i915_runtime_pm

2019-05-16 Thread Chris Wilson
Quoting Daniele Ceraolo Spurio (2019-05-16 22:56:31)
> diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.h 
> b/drivers/gpu/drm/i915/intel_runtime_pm.h
> index b964ca7af9c8..0e3817f9785e 100644
> --- a/drivers/gpu/drm/i915/intel_runtime_pm.h
> +++ b/drivers/gpu/drm/i915/intel_runtime_pm.h
> @@ -6,6 +6,7 @@
>  #ifndef __INTEL_RUNTIME_PM_H__
>  #define __INTEL_RUNTIME_PM_H__
>  
> +#include 

There doesn't seem to be any peeking into struct device, so do we not
just need the struct device forward decl here?

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

[Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for Runtime PM encapsulation

2019-05-16 Thread Patchwork
== Series Details ==

Series: Runtime PM encapsulation
URL   : https://patchwork.freedesktop.org/series/60751/
State : warning

== Summary ==

$ dim checkpatch origin/drm-tip
6abe6de9d69c drm/i915: prefer i915_runtime_pm in intel_runtime function
459ce16ea796 drm/i915: Remove rpm asserts that use i915
3786ba59fb44 drm/i915: make enable/disable rpm assert function use the rpm 
structure
f9fd0f317814 drm/i915: move and rename i915_runtime_pm
-:527: CHECK:UNCOMMENTED_DEFINITION: spinlock_t definition without comment
#527: FILE: drivers/gpu/drm/i915/intel_runtime_pm.h:62:
+   spinlock_t lock;

total: 0 errors, 0 warnings, 1 checks, 585 lines checked
5fade456b0bf drm/i915: move a few more functions to accept the rpm structure
14c3a5f20ed6 drm/i915: update rpm_get/put to use the rpm structure
2701026b6f98 drm/i915: update with_intel_runtime_pm to use the rpm structure
-:399: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'rpm' - possible 
side-effects?
#399: FILE: drivers/gpu/drm/i915/intel_runtime_pm.h:253:
+#define with_intel_runtime_pm(rpm, wf) \
+   for ((wf) = intel_runtime_pm_get(rpm); (wf); \
+intel_runtime_pm_put((rpm), (wf)), (wf) = 0)

-:399: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'wf' - possible side-effects?
#399: FILE: drivers/gpu/drm/i915/intel_runtime_pm.h:253:
+#define with_intel_runtime_pm(rpm, wf) \
+   for ((wf) = intel_runtime_pm_get(rpm); (wf); \
+intel_runtime_pm_put((rpm), (wf)), (wf) = 0)

-:406: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'rpm' - possible 
side-effects?
#406: FILE: drivers/gpu/drm/i915/intel_runtime_pm.h:257:
+#define with_intel_runtime_pm_if_in_use(rpm, wf) \
+   for ((wf) = intel_runtime_pm_get_if_in_use(rpm); (wf); \
+intel_runtime_pm_put((rpm), (wf)), (wf) = 0)

-:406: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'wf' - possible side-effects?
#406: FILE: drivers/gpu/drm/i915/intel_runtime_pm.h:257:
+#define with_intel_runtime_pm_if_in_use(rpm, wf) \
+   for ((wf) = intel_runtime_pm_get_if_in_use(rpm); (wf); \
+intel_runtime_pm_put((rpm), (wf)), (wf) = 0)

total: 0 errors, 0 warnings, 4 checks, 396 lines checked

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

[Intel-gfx] ✗ Fi.CI.SPARSE: warning for Runtime PM encapsulation

2019-05-16 Thread Patchwork
== Series Details ==

Series: Runtime PM encapsulation
URL   : https://patchwork.freedesktop.org/series/60751/
State : warning

== Summary ==

$ dim sparse origin/drm-tip
Sparse version: v0.5.2
Commit: drm/i915: prefer i915_runtime_pm in intel_runtime function
Okay!

Commit: drm/i915: Remove rpm asserts that use i915
Okay!

Commit: drm/i915: make enable/disable rpm assert function use the rpm structure
Okay!

Commit: drm/i915: move and rename i915_runtime_pm
Okay!

Commit: drm/i915: move a few more functions to accept the rpm structure
Okay!

Commit: drm/i915: update rpm_get/put to use the rpm structure
-O:drivers/gpu/drm/i915/gt/intel_reset.c:1311:5: warning: context imbalance in 
'i915_reset_trylock' - different lock contexts for basic block
+drivers/gpu/drm/i915/gt/intel_reset.c:1311:5: warning: context imbalance in 
'i915_reset_trylock' - different lock contexts for basic block

Commit: drm/i915: update with_intel_runtime_pm to use the rpm structure
Okay!

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

Re: [Intel-gfx] [PATCH 5/5] drm/i915: Expand subslice mask

2019-05-16 Thread Daniele Ceraolo Spurio




--- a/drivers/gpu/drm/i915/gt/intel_sseu.h
+++ b/drivers/gpu/drm/i915/gt/intel_sseu.h
@@ -9,16 +9,18 @@
  
  #include 

  #include 
+#include 


AFAICS this header is not needed anymore. With it removed:

Reviewed-by: Daniele Ceraolo Spurio 

Daniele

  
  struct drm_i915_private;
  
  #define GEN_MAX_SLICES		(6) /* CNL upper bound */

  #define GEN_MAX_SUBSLICES (8) /* ICL upper bound */
  #define GEN_SSEU_STRIDE(max_entries) DIV_ROUND_UP(max_entries, BITS_PER_BYTE)
+#define GEN_MAX_SUBSLICE_STRIDE GEN_SSEU_STRIDE(GEN_MAX_SUBSLICES)
  
  struct sseu_dev_info {

u8 slice_mask;
-   u8 subslice_mask[GEN_MAX_SLICES];
+   u8 subslice_mask[GEN_MAX_SLICES * GEN_MAX_SUBSLICE_STRIDE];
u16 eu_total;
u8 eu_per_subslice;
u8 min_eu_in_pool;
@@ -33,6 +35,9 @@ struct sseu_dev_info {
u8 max_subslices;
u8 max_eus_per_subslice;
  
+	u8 ss_stride;

+   u8 eu_stride;
+
/* We don't have more than 8 eus per subslice at the moment and as we
 * store eus enabled using bits, no need to multiply by eus per
 * subslice.
@@ -63,12 +68,33 @@ intel_sseu_from_device_info(const struct sseu_dev_info 
*sseu)
return value;
  }
  
+static inline bool

+intel_sseu_has_subslice(const struct sseu_dev_info *sseu, int slice,
+   int subslice)
+{
+   u8 mask = sseu->subslice_mask[slice * sseu->ss_stride +
+ subslice / BITS_PER_BYTE];
+
+   return mask & BIT(subslice % BITS_PER_BYTE);
+}
+
+void intel_sseu_set_info(struct sseu_dev_info *sseu, u8 max_slices,
+u8 max_subslices, u8 max_eus_per_subslice);
+
  unsigned int
  intel_sseu_subslice_total(const struct sseu_dev_info *sseu);
  
  unsigned int

  intel_sseu_subslices_per_slice(const struct sseu_dev_info *sseu, u8 slice);
  
+void intel_sseu_copy_subslices(const struct sseu_dev_info *sseu, int slice,

+  u8 *to_mask);
+
+u32  intel_sseu_get_subslices(const struct sseu_dev_info *sseu, u8 slice);
+
+void intel_sseu_set_subslices(struct sseu_dev_info *sseu, int slice,
+ u32 ss_mask);
+
  u32 intel_sseu_make_rpcs(struct drm_i915_private *i915,
 const struct intel_sseu *req_sseu);
  
diff --git a/drivers/gpu/drm/i915/gt/intel_workarounds.c b/drivers/gpu/drm/i915/gt/intel_workarounds.c

index 43e290306551..8437f9d918ec 100644
--- a/drivers/gpu/drm/i915/gt/intel_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/intel_workarounds.c
@@ -767,7 +767,7 @@ wa_init_mcr(struct drm_i915_private *i915, struct 
i915_wa_list *wal)
u32 slice = fls(sseu->slice_mask);
u32 fuse3 =
intel_uncore_read(&i915->uncore, GEN10_MIRROR_FUSE3);
-   u8 ss_mask = sseu->subslice_mask[slice];
+   u32 ss_mask = intel_sseu_get_subslices(sseu, slice);
  
  		u8 enabled_mask = (ss_mask | ss_mask >>

   GEN10_L3BANK_PAIR_COUNT) & GEN10_L3BANK_MASK;
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c 
b/drivers/gpu/drm/i915/i915_debugfs.c
index a26015722405..46365ab957e6 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -1259,6 +1259,7 @@ static void i915_instdone_info(struct drm_i915_private 
*dev_priv,
   struct seq_file *m,
   struct intel_instdone *instdone)
  {
+   struct sseu_dev_info *sseu = &RUNTIME_INFO(dev_priv)->sseu;
int slice;
int subslice;
  
@@ -1274,11 +1275,11 @@ static void i915_instdone_info(struct drm_i915_private *dev_priv,

if (INTEL_GEN(dev_priv) <= 6)
return;
  
-	for_each_instdone_slice_subslice(dev_priv, slice, subslice)

+   for_each_instdone_slice_subslice(dev_priv, sseu, slice, subslice)
seq_printf(m, "\t\tSAMPLER_INSTDONE[%d][%d]: 0x%08x\n",
   slice, subslice, instdone->sampler[slice][subslice]);
  
-	for_each_instdone_slice_subslice(dev_priv, slice, subslice)

+   for_each_instdone_slice_subslice(dev_priv, sseu, slice, subslice)
seq_printf(m, "\t\tROW_INSTDONE[%d][%d]: 0x%08x\n",
   slice, subslice, instdone->row[slice][subslice]);
  }
@@ -4072,7 +4073,7 @@ static void gen10_sseu_device_status(struct 
drm_i915_private *dev_priv,
continue;
  
  		sseu->slice_mask |= BIT(s);

-   sseu->subslice_mask[s] = info->sseu.subslice_mask[s];
+   intel_sseu_copy_subslices(&info->sseu, s, sseu->subslice_mask);
  
  		for (ss = 0; ss < info->sseu.max_subslices; ss++) {

unsigned int eu_cnt;
@@ -4123,18 +4124,21 @@ static void gen9_sseu_device_status(struct 
drm_i915_private *dev_priv,
sseu->slice_mask |= BIT(s);
  
  		if (IS_GEN9_BC(dev_priv))

-   sseu->subslice_mask[s] =
-   RUNTIME_INFO(dev_

Re: [Intel-gfx] [RFC 4/7] drm/i915: move and rename i915_runtime_pm

2019-05-16 Thread Chris Wilson
Quoting Chris Wilson (2019-05-16 23:10:10)
> Quoting Chris Wilson (2019-05-16 23:07:43)
> > Quoting Daniele Ceraolo Spurio (2019-05-16 22:56:31)
> > > diff --git a/drivers/gpu/drm/i915/intel_runtime_pm.h 
> > > b/drivers/gpu/drm/i915/intel_runtime_pm.h
> > > index b964ca7af9c8..0e3817f9785e 100644
> > > --- a/drivers/gpu/drm/i915/intel_runtime_pm.h
> > > +++ b/drivers/gpu/drm/i915/intel_runtime_pm.h
> > > @@ -6,6 +6,7 @@
> > >  #ifndef __INTEL_RUNTIME_PM_H__
> > >  #define __INTEL_RUNTIME_PM_H__
> > >  
> > > +#include 
> > 
> > There doesn't seem to be any peeking into struct device, so do we not
> > just need the struct device forward decl here?
> 
> And add it to Makefile.headers_test

Hint: we may need to split out intel_display_power.[ch]
-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 Runtime PM encapsulation

2019-05-16 Thread Patchwork
== Series Details ==

Series: Runtime PM encapsulation
URL   : https://patchwork.freedesktop.org/series/60751/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_6091 -> Patchwork_13028


Summary
---

  **FAILURE**

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

Possible new issues
---

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

### IGT changes ###

 Possible regressions 

  * igt@i915_pm_rpm@basic-rte:
- fi-hsw-peppy:   [PASS][1] -> [FAIL][2] +2 similar issues
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-hsw-peppy/igt@i915_pm_...@basic-rte.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13028/fi-hsw-peppy/igt@i915_pm_...@basic-rte.html

  
Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_exec_basic@basic-blt:
- fi-icl-u2:  [PASS][3] -> [INCOMPLETE][4] ([fdo#107713] / 
[fdo#110246])
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-icl-u2/igt@gem_exec_ba...@basic-blt.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13028/fi-icl-u2/igt@gem_exec_ba...@basic-blt.html

  * igt@gem_exec_suspend@basic-s3:
- fi-blb-e6850:   [PASS][5] -> [INCOMPLETE][6] ([fdo#107718])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-blb-e6850/igt@gem_exec_susp...@basic-s3.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13028/fi-blb-e6850/igt@gem_exec_susp...@basic-s3.html

  * igt@i915_selftest@live_guc:
- fi-apl-guc: [PASS][7] -> [INCOMPLETE][8] ([fdo#103927])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-apl-guc/igt@i915_selftest@live_guc.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13028/fi-apl-guc/igt@i915_selftest@live_guc.html

  * igt@i915_selftest@live_hangcheck:
- fi-skl-iommu:   [PASS][9] -> [INCOMPLETE][10] ([fdo#108602] / 
[fdo#108744])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-skl-iommu/igt@i915_selftest@live_hangcheck.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13028/fi-skl-iommu/igt@i915_selftest@live_hangcheck.html
- fi-apl-guc: [PASS][11] -> [DMESG-FAIL][12] ([fdo#110620])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-apl-guc/igt@i915_selftest@live_hangcheck.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13028/fi-apl-guc/igt@i915_selftest@live_hangcheck.html

  
 Possible fixes 

  * igt@i915_pm_rpm@module-reload:
- fi-skl-6770hq:  [FAIL][13] ([fdo#108511]) -> [PASS][14]
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-skl-6770hq/igt@i915_pm_...@module-reload.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13028/fi-skl-6770hq/igt@i915_pm_...@module-reload.html

  * igt@i915_selftest@live_contexts:
- fi-bdw-gvtdvm:  [DMESG-FAIL][15] ([fdo#110235]) -> [PASS][16]
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13028/fi-bdw-gvtdvm/igt@i915_selftest@live_contexts.html

  * igt@kms_frontbuffer_tracking@basic:
- fi-hsw-peppy:   [DMESG-WARN][17] ([fdo#102614]) -> [PASS][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-hsw-peppy/igt@kms_frontbuffer_track...@basic.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13028/fi-hsw-peppy/igt@kms_frontbuffer_track...@basic.html

  * igt@prime_vgem@basic-fence-flip:
- fi-ilk-650: [DMESG-WARN][19] ([fdo#106387]) -> [PASS][20] +1 
similar issue
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/fi-ilk-650/igt@prime_v...@basic-fence-flip.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13028/fi-ilk-650/igt@prime_v...@basic-fence-flip.html

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

  [fdo#102614]: https://bugs.freedesktop.org/show_bug.cgi?id=102614
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#106387]: https://bugs.freedesktop.org/show_bug.cgi?id=106387
  [fdo#107713]: https://bugs.freedesktop.org/show_bug.cgi?id=107713
  [fdo#107718]: https://bugs.freedesktop.org/show_bug.cgi?id=107718
  [fdo#108511]: https://bugs.freedesktop.org/show_bug.cgi?id=108511
  [fdo#108602]: https://bugs.freedesktop.org/show_bug.cgi?id=108

[Intel-gfx] ✓ Fi.CI.IGT: success for Revert "ICL HACK: Disable ACPI idle driver"

2019-05-16 Thread Patchwork
== Series Details ==

Series: Revert "ICL HACK: Disable ACPI idle driver"
URL   : https://patchwork.freedesktop.org/series/60731/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6091_full -> Patchwork_13026_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@gem_eio@in-flight-suspend:
- shard-skl:  [PASS][1] -> [INCOMPLETE][2] ([fdo#104108] / 
[fdo#107773])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-skl8/igt@gem_...@in-flight-suspend.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/shard-skl3/igt@gem_...@in-flight-suspend.html

  * igt@i915_suspend@fence-restore-tiled2untiled:
- shard-apl:  [PASS][3] -> [DMESG-WARN][4] ([fdo#108566]) +8 
similar issues
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-apl3/igt@i915_susp...@fence-restore-tiled2untiled.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/shard-apl3/igt@i915_susp...@fence-restore-tiled2untiled.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-pri-shrfb-draw-render:
- shard-iclb: [PASS][5] -> [FAIL][6] ([fdo#103167]) +3 similar 
issues
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-iclb6/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-shrfb-draw-render.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/shard-iclb1/igt@kms_frontbuffer_track...@fbcpsr-1p-primscrn-pri-shrfb-draw-render.html

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-skl:  [PASS][7] -> [FAIL][8] ([fdo#108145] / [fdo#110403])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-skl1/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/shard-skl6/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html

  * igt@kms_plane_lowres@pipe-a-tiling-x:
- shard-iclb: [PASS][9] -> [FAIL][10] ([fdo#103166])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-iclb5/igt@kms_plane_low...@pipe-a-tiling-x.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/shard-iclb8/igt@kms_plane_low...@pipe-a-tiling-x.html

  * igt@kms_psr@no_drrs:
- shard-iclb: [PASS][11] -> [FAIL][12] ([fdo#108341])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-iclb7/igt@kms_psr@no_drrs.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/shard-iclb1/igt@kms_psr@no_drrs.html

  * igt@kms_psr@psr2_no_drrs:
- shard-iclb: [PASS][13] -> [SKIP][14] ([fdo#109441])
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-iclb2/igt@kms_psr@psr2_no_drrs.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/shard-iclb7/igt@kms_psr@psr2_no_drrs.html

  * igt@tools_test@tools_test:
- shard-skl:  [PASS][15] -> [SKIP][16] ([fdo#109271])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-skl6/igt@tools_test@tools_test.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/shard-skl8/igt@tools_test@tools_test.html

  
 Possible fixes 

  * igt@i915_pm_rpm@gem-mmap-gtt:
- shard-iclb: [INCOMPLETE][17] ([fdo#107713] / [fdo#108840]) -> 
[PASS][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-iclb7/igt@i915_pm_...@gem-mmap-gtt.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/shard-iclb8/igt@i915_pm_...@gem-mmap-gtt.html

  * igt@i915_pm_rpm@reg-read-ioctl:
- shard-skl:  [INCOMPLETE][19] ([fdo#107807]) -> [PASS][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-skl5/igt@i915_pm_...@reg-read-ioctl.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/shard-skl9/igt@i915_pm_...@reg-read-ioctl.html

  * igt@i915_pm_rpm@system-suspend-execbuf:
- shard-skl:  [INCOMPLETE][21] ([fdo#104108] / [fdo#107807]) -> 
[PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-skl5/igt@i915_pm_...@system-suspend-execbuf.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/shard-skl3/igt@i915_pm_...@system-suspend-execbuf.html

  * igt@i915_suspend@forcewake:
- shard-skl:  [INCOMPLETE][23] ([fdo#104108] / [fdo#107773]) -> 
[PASS][24]
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-skl9/igt@i915_susp...@forcewake.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13026/shard-skl5/igt@i915_susp...@forcewake.html

  * igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite:
- shard-iclb: [FAIL][25] ([fdo#103167]) -> [PASS][26] +2 similar 
issues
   [25]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-iclb2/igt@kms_frontbuffer_trac

Re: [Intel-gfx] [PATCH] drm/i915: Engine relative MMIO

2019-05-16 Thread John Harrison

On 5/15/2019 01:52, Tvrtko Ursulin wrote:


On 13/05/2019 20:45, john.c.harri...@intel.com wrote:

From: John Harrison 

With virtual engines, it is no longer possible to know which specific
physical engine a given request will be executed on at the time that
request is generated. This means that the request itself must be engine
agnostic - any direct register writes must be relative to the engine
and not absolute addresses.

The LRI command has support for engine relative addressing. However,
the mechanism is not transparent to the driver. The scheme for Gen11
(MI_LRI_ADD_CS_MMIO_START) requires the LRI address to have no
absolute engine base component. The hardware then adds on the correct
engine offset at execution time.

Due to the non-trivial and differing schemes on different hardware, it
is not possible to simply update the code that creates the LRI
commands to set a remap flag and let the hardware get on with it.
Instead, this patch adds function wrappers for generating the LRI
command itself and then for constructing the correct address to use
with the LRI.

v2: Fix build break in GVT. Remove flags parameter [review feedback
from Chris W].

v3: Fix build break in selftest. Rebase to newer base tree and fix
merge conflict.

v4: More rebasing. Rmoved relative addressing support from Gen7-9 only
code paths [review feedback from Chris W].

v5: More rebasing (new 'gt' directory). Fix white space issue. Use
COPY class rather than BCS0 id for checking against BCS engine.

Signed-off-by: John Harrison 
CC: Rodrigo Vivi 
CC: Tvrtko Ursulin 
CC: Wilson, Chris P 
---
  drivers/gpu/drm/i915/gt/intel_engine.h    |  4 +
  drivers/gpu/drm/i915/gt/intel_engine_cs.c | 11 +++
  drivers/gpu/drm/i915/gt/intel_gpu_commands.h  |  6 +-
  drivers/gpu/drm/i915/gt/intel_lrc.c   | 79 ++-
  drivers/gpu/drm/i915/gt/intel_lrc_reg.h   |  4 +-
  drivers/gpu/drm/i915/gt/intel_mocs.c  | 17 ++--
  drivers/gpu/drm/i915/gt/intel_ringbuffer.c    | 45 +--
  drivers/gpu/drm/i915/gt/intel_workarounds.c   |  4 +-
  .../gpu/drm/i915/gt/selftest_workarounds.c    |  9 ++-
  drivers/gpu/drm/i915/gvt/mmio_context.c   | 16 +++-
  drivers/gpu/drm/i915/i915_cmd_parser.c    |  4 +-
  drivers/gpu/drm/i915/i915_gem_context.c   | 12 +--
  drivers/gpu/drm/i915/i915_gem_execbuffer.c    |  3 +-
  drivers/gpu/drm/i915/i915_perf.c  | 19 +++--
  14 files changed, 154 insertions(+), 79 deletions(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_engine.h 
b/drivers/gpu/drm/i915/gt/intel_engine.h

index 9359b3a7ad9c..3506c992182c 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine.h
+++ b/drivers/gpu/drm/i915/gt/intel_engine.h
@@ -546,4 +546,8 @@ static inline bool inject_preempt_hang(struct 
intel_engine_execlists *execlists)

    #endif
  +bool i915_engine_has_relative_lri(const struct intel_engine_cs 
*engine);
+u32 i915_get_lri_cmd(const struct intel_engine_cs *engine, u32 
word_count);
+u32 i915_get_lri_reg(const struct intel_engine_cs *engine, 
i915_reg_t reg);

+
  #endif /* _INTEL_RINGBUFFER_H_ */
diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c 
b/drivers/gpu/drm/i915/gt/intel_engine_cs.c

index 4c3753c1b573..233295d689d2 100644
--- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
@@ -253,6 +253,17 @@ static u32 __engine_mmio_base(struct 
drm_i915_private *i915,

  return bases[i].base;
  }
  +bool i915_engine_has_relative_lri(const struct intel_engine_cs 
*engine)

+{
+    if (INTEL_GEN(engine->i915) < 11)
+    return false;
+
+    if (engine->class == COPY_ENGINE_CLASS)
+    return false;
+
+    return true;


I think engine->flags would be better. At least it is one conditional 
instead of two at runtime, even one too many for something that is 
invariant.



+}
+
  static void __sprint_engine_name(char *name, const struct 
engine_info *info)

  {
  WARN_ON(snprintf(name, INTEL_ENGINE_CS_MAX_NAME, "%s%u",
diff --git a/drivers/gpu/drm/i915/gt/intel_gpu_commands.h 
b/drivers/gpu/drm/i915/gt/intel_gpu_commands.h

index a34ece53a771..e7784b3fb759 100644
--- a/drivers/gpu/drm/i915/gt/intel_gpu_commands.h
+++ b/drivers/gpu/drm/i915/gt/intel_gpu_commands.h
@@ -123,9 +123,13 @@
   *   simply ignores the register load under certain conditions.
   * - One can actually load arbitrary many arbitrary registers: 
Simply issue x
   *   address/value pairs. Don't overdue it, though, x <= 2^4 must 
hold!
+ * - Newer hardware supports engine relative addresses but older 
hardware does
+ *   not. So never call MI_LRI directly, always use the 
i915_get_lri_cmd()

+ *   and i915_get_lri_reg() helper functions.
   */
-#define MI_LOAD_REGISTER_IMM(x)    MI_INSTR(0x22, 2*(x)-1)
+#define __MI_LOAD_REGISTER_IMM(x)    MI_INSTR(0x22, 2*(x)-1)


So we end up with code using __MI_LOAD_REGISTER_IMM for absolute, and 
i915_get_lri_cmd for relative addressing. One is a macro, another is a 
function call, and naming/case is different.


No. The _

[Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [RFC,1/3] kbuild: add support for ensuring headers are self-contained

2019-05-16 Thread Patchwork
== Series Details ==

Series: series starting with [RFC,1/3] kbuild: add support for ensuring headers 
are self-contained
URL   : https://patchwork.freedesktop.org/series/60738/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_6091_full -> Patchwork_13027_full


Summary
---

  **SUCCESS**

  No regressions found.

  

Known issues


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

### IGT changes ###

 Issues hit 

  * igt@kms_flip@flip-vs-expired-vblank:
- shard-glk:  [PASS][1] -> [FAIL][2] ([fdo#105363])
   [1]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-glk9/igt@kms_f...@flip-vs-expired-vblank.html
   [2]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/shard-glk9/igt@kms_f...@flip-vs-expired-vblank.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-pri-indfb-multidraw:
- shard-iclb: [PASS][3] -> [FAIL][4] ([fdo#103167]) +4 similar 
issues
   [3]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-iclb7/igt@kms_frontbuffer_track...@fbcpsr-1p-pri-indfb-multidraw.html
   [4]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/shard-iclb2/igt@kms_frontbuffer_track...@fbcpsr-1p-pri-indfb-multidraw.html

  * igt@kms_plane_alpha_blend@pipe-c-coverage-7efc:
- shard-skl:  [PASS][5] -> [FAIL][6] ([fdo#108145] / [fdo#110403])
   [5]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-skl1/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html
   [6]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/shard-skl7/igt@kms_plane_alpha_bl...@pipe-c-coverage-7efc.html

  * igt@kms_plane_lowres@pipe-a-tiling-y:
- shard-iclb: [PASS][7] -> [FAIL][8] ([fdo#103166])
   [7]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-iclb7/igt@kms_plane_low...@pipe-a-tiling-y.html
   [8]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/shard-iclb1/igt@kms_plane_low...@pipe-a-tiling-y.html

  * igt@kms_psr@no_drrs:
- shard-iclb: [PASS][9] -> [FAIL][10] ([fdo#108341])
   [9]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-iclb7/igt@kms_psr@no_drrs.html
   [10]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/shard-iclb1/igt@kms_psr@no_drrs.html

  * igt@kms_psr@psr2_no_drrs:
- shard-iclb: [PASS][11] -> [SKIP][12] ([fdo#109441])
   [11]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-iclb2/igt@kms_psr@psr2_no_drrs.html
   [12]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/shard-iclb7/igt@kms_psr@psr2_no_drrs.html

  * igt@kms_vblank@pipe-c-ts-continuation-suspend:
- shard-apl:  [PASS][13] -> [DMESG-WARN][14] ([fdo#108566]) +4 
similar issues
   [13]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-apl1/igt@kms_vbl...@pipe-c-ts-continuation-suspend.html
   [14]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/shard-apl8/igt@kms_vbl...@pipe-c-ts-continuation-suspend.html
- shard-kbl:  [PASS][15] -> [DMESG-WARN][16] ([fdo#108566])
   [15]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-kbl1/igt@kms_vbl...@pipe-c-ts-continuation-suspend.html
   [16]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/shard-kbl7/igt@kms_vbl...@pipe-c-ts-continuation-suspend.html

  
 Possible fixes 

  * igt@i915_pm_rpm@gem-mmap-gtt:
- shard-iclb: [INCOMPLETE][17] ([fdo#107713] / [fdo#108840]) -> 
[PASS][18]
   [17]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-iclb7/igt@i915_pm_...@gem-mmap-gtt.html
   [18]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/shard-iclb6/igt@i915_pm_...@gem-mmap-gtt.html

  * igt@i915_pm_rpm@reg-read-ioctl:
- shard-skl:  [INCOMPLETE][19] ([fdo#107807]) -> [PASS][20]
   [19]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-skl5/igt@i915_pm_...@reg-read-ioctl.html
   [20]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/shard-skl3/igt@i915_pm_...@reg-read-ioctl.html

  * igt@i915_suspend@forcewake:
- shard-skl:  [INCOMPLETE][21] ([fdo#104108] / [fdo#107773]) -> 
[PASS][22]
   [21]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-skl9/igt@i915_susp...@forcewake.html
   [22]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/shard-skl3/igt@i915_susp...@forcewake.html

  * igt@kms_frontbuffer_tracking@fbc-rgb565-draw-pwrite:
- shard-iclb: [FAIL][23] ([fdo#103167]) -> [PASS][24] +2 similar 
issues
   [23]: 
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6091/shard-iclb2/igt@kms_frontbuffer_track...@fbc-rgb565-draw-pwrite.html
   [24]: 
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13027/shard-iclb5/igt@kms_frontbuffer_track...@fbc-rgb565-draw-pwrite.html

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-b:
- shard-apl:  [DMESG-WARN][25] ([fdo#108566]) -> [PASS][26] +1 
similar issue
   [25]: 
https://intel-gfx-ci.01

Re: [Intel-gfx] ✓ Fi.CI.IGT: success for CI: Revert "net/sch_generic: Shut up noise"

2019-05-16 Thread Daniel Vetter
On Thu, May 16, 2019 at 08:48:53AM -, Patchwork wrote:
> == Series Details ==
> 
> Series: CI: Revert "net/sch_generic: Shut up noise"
> URL   : https://patchwork.freedesktop.org/series/60699/
> State : success

Hm no boom at all, I'll try the full revert and see what happens. Maybe we
hit a few more igt@aborted ...
-Daniel

> 
> == Summary ==
> 
> CI Bug Log - changes from CI_DRM_6089_full -> Patchwork_13024_full
> 
> 
> Summary
> ---
> 
>   **SUCCESS**
> 
>   No regressions found.
> 
>   
> 
> Known issues
> 
> 
>   Here are the changes found in Patchwork_13024_full that come from known 
> issues:
> 
> ### IGT changes ###
> 
>  Issues hit 
> 
>   * igt@gem_ctx_isolation@vcs1-s3:
> - shard-kbl:  [PASS][1] -> [DMESG-WARN][2] ([fdo#108566])
>[1]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-kbl3/igt@gem_ctx_isolat...@vcs1-s3.html
>[2]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-kbl7/igt@gem_ctx_isolat...@vcs1-s3.html
> 
>   * igt@gem_tiled_swapping@non-threaded:
> - shard-hsw:  [PASS][3] -> [FAIL][4] ([fdo#108686])
>[3]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-hsw7/igt@gem_tiled_swapp...@non-threaded.html
>[4]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-hsw5/igt@gem_tiled_swapp...@non-threaded.html
> 
>   * igt@gem_workarounds@suspend-resume-context:
> - shard-apl:  [PASS][5] -> [DMESG-WARN][6] ([fdo#108566]) +4 
> similar issues
>[5]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-apl7/igt@gem_workarou...@suspend-resume-context.html
>[6]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-apl7/igt@gem_workarou...@suspend-resume-context.html
> 
>   * igt@i915_pm_rpm@dpms-lpsp:
> - shard-skl:  [PASS][7] -> [INCOMPLETE][8] ([fdo#107807])
>[7]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-skl10/igt@i915_pm_...@dpms-lpsp.html
>[8]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-skl10/igt@i915_pm_...@dpms-lpsp.html
> 
>   * igt@kms_flip_tiling@flip-x-tiled:
> - shard-iclb: [PASS][9] -> [FAIL][10] ([fdo#108303])
>[9]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-iclb7/igt@kms_flip_til...@flip-x-tiled.html
>[10]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-iclb4/igt@kms_flip_til...@flip-x-tiled.html
> 
>   * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-blt:
> - shard-iclb: [PASS][11] -> [FAIL][12] ([fdo#103167]) +5 similar 
> issues
>[11]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-iclb2/igt@kms_frontbuffer_track...@fbc-1p-primscrn-cur-indfb-draw-blt.html
>[12]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-iclb6/igt@kms_frontbuffer_track...@fbc-1p-primscrn-cur-indfb-draw-blt.html
> 
>   * igt@kms_psr@psr2_sprite_plane_move:
> - shard-iclb: [PASS][13] -> [SKIP][14] ([fdo#109441]) +3 similar 
> issues
>[13]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
>[14]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-iclb6/igt@kms_psr@psr2_sprite_plane_move.html
> 
>   * igt@kms_setmode@basic:
> - shard-kbl:  [PASS][15] -> [FAIL][16] ([fdo#99912])
>[15]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-kbl2/igt@kms_setm...@basic.html
>[16]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-kbl2/igt@kms_setm...@basic.html
> 
>   * igt@perf_pmu@rc6:
> - shard-kbl:  [PASS][17] -> [SKIP][18] ([fdo#109271])
>[17]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-kbl6/igt@perf_...@rc6.html
>[18]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-kbl7/igt@perf_...@rc6.html
> 
>   
>  Possible fixes 
> 
>   * igt@gem_ctx_isolation@bcs0-s3:
> - shard-kbl:  [DMESG-WARN][19] ([fdo#108566]) -> [PASS][20]
>[19]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-kbl7/igt@gem_ctx_isolat...@bcs0-s3.html
>[20]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-kbl3/igt@gem_ctx_isolat...@bcs0-s3.html
> 
>   * igt@gem_tiled_swapping@non-threaded:
> - shard-iclb: [FAIL][21] ([fdo#108686]) -> [PASS][22]
>[21]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-iclb5/igt@gem_tiled_swapp...@non-threaded.html
>[22]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/shard-iclb8/igt@gem_tiled_swapp...@non-threaded.html
> 
>   * igt@i915_pm_rpm@basic-rte:
> - shard-skl:  [INCOMPLETE][23] ([fdo#107807]) -> [PASS][24] +1 
> similar issue
>[23]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_6089/shard-skl3/igt@i915_pm_...@basic-rte.html
>[24]: 
> https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_13024/sh

[Intel-gfx] [PATCH] C: Revert "net/sch_generic: Shut up noise"

2019-05-16 Thread Daniel Vetter
This reverts commit a9f840bdd2fd4cb07a669f1c3112b804218b4aba.

A quick test patch didn't seem to have hit this, so let's try what
happens when we reinstate the full WARNING again.

Cc: Martin Peres 
---
 net/sched/sch_generic.c | 7 +--
 1 file changed, 1 insertion(+), 6 deletions(-)

diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
index cf96149d7b5e..a117d9260558 100644
--- a/net/sched/sch_generic.c
+++ b/net/sched/sch_generic.c
@@ -456,12 +456,7 @@ static void dev_watchdog(struct timer_list *t)
}
}
 
-   /* The noise is pissing off our CI and upstream doesn't
-* move on the bug report:
-*
-* https://bugzilla.kernel.org/show_bug.cgi?id=196399
-*/
-   if (some_queue_timedout && 0) {
+   if (some_queue_timedout) {
WARN_ONCE(1, KERN_INFO "NETDEV WATCHDOG: %s 
(%s): transmit queue %u timed out\n",
   dev->name, netdev_drivername(dev), i);
dev->netdev_ops->ndo_tx_timeout(dev);
-- 
2.20.1

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