All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH 0/2] Disable connector polling for a headless sku
@ 2022-06-03 10:14 Jouni Högander
  2022-06-03 10:14 ` [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if " Jouni Högander
                   ` (4 more replies)
  0 siblings, 5 replies; 17+ messages in thread
From: Jouni Högander @ 2022-06-03 10:14 UTC (permalink / raw)
  To: intel-gfx

This patch set disables connector polling when entering runtime
suspend for headless sku to prevent waking it up again when poll
is performed.

Cc: Imre Deak <imre.deak@intel.com>
Cc: Anshuman Gupta <anshuman.gupta@intel.com>

Jouni Högander (2):
  drm/i915/opregion: add function to check if headless sku
  drm/i915: do not start connector polling when headless sku

 drivers/gpu/drm/i915/display/intel_hotplug.c  |  3 ++-
 drivers/gpu/drm/i915/display/intel_opregion.c | 12 ++++++++++++
 drivers/gpu/drm/i915/display/intel_opregion.h |  7 +++++++
 3 files changed, 21 insertions(+), 1 deletion(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if headless sku
  2022-06-03 10:14 [Intel-gfx] [PATCH 0/2] Disable connector polling for a headless sku Jouni Högander
@ 2022-06-03 10:14 ` Jouni Högander
  2022-06-03 12:43   ` Jani Nikula
  2022-06-03 10:14 ` [Intel-gfx] [PATCH 2/2] drm/i915: do not start connector polling when " Jouni Högander
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 17+ messages in thread
From: Jouni Högander @ 2022-06-03 10:14 UTC (permalink / raw)
  To: intel-gfx

Export headless sku bit (bit 13) from opregion->header->pcon as an
interface to check if our device is headless configuration.

Bspec: 53441
Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/i915/display/intel_opregion.c | 12 ++++++++++++
 drivers/gpu/drm/i915/display/intel_opregion.h |  7 +++++++
 2 files changed, 19 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c b/drivers/gpu/drm/i915/display/intel_opregion.c
index f31e8c3f8ce0..eab3f2e6b786 100644
--- a/drivers/gpu/drm/i915/display/intel_opregion.c
+++ b/drivers/gpu/drm/i915/display/intel_opregion.c
@@ -53,6 +53,8 @@
 #define MBOX_ASLE_EXT		BIT(4)	/* Mailbox #5 */
 #define MBOX_BACKLIGHT		BIT(5)	/* Mailbox #2 (valid from v3.x) */
 
+#define PCON_HEADLESS_SKU	BIT(13)
+
 struct opregion_header {
 	u8 signature[16];
 	u32 size;
@@ -1135,6 +1137,16 @@ struct edid *intel_opregion_get_edid(struct intel_connector *intel_connector)
 	return new_edid;
 }
 
+bool intel_opregion_headless_sku(struct drm_i915_private *i915)
+{
+	struct intel_opregion *opregion = &i915->opregion;
+
+	if (!opregion->header)
+		return false;
+
+	return opregion->header->pcon & PCON_HEADLESS_SKU;
+}
+
 void intel_opregion_register(struct drm_i915_private *i915)
 {
 	struct intel_opregion *opregion = &i915->opregion;
diff --git a/drivers/gpu/drm/i915/display/intel_opregion.h b/drivers/gpu/drm/i915/display/intel_opregion.h
index 82cc0ba34af7..5ad96e1d8278 100644
--- a/drivers/gpu/drm/i915/display/intel_opregion.h
+++ b/drivers/gpu/drm/i915/display/intel_opregion.h
@@ -76,6 +76,8 @@ int intel_opregion_notify_adapter(struct drm_i915_private *dev_priv,
 int intel_opregion_get_panel_type(struct drm_i915_private *dev_priv);
 struct edid *intel_opregion_get_edid(struct intel_connector *connector);
 
+bool intel_opregion_headless_sku(struct drm_i915_private *i915);
+
 #else /* CONFIG_ACPI*/
 
 static inline int intel_opregion_setup(struct drm_i915_private *dev_priv)
@@ -127,6 +129,11 @@ intel_opregion_get_edid(struct intel_connector *connector)
 	return NULL;
 }
 
+bool intel_opregion_headless_sku(struct drm_i915_private *i915)
+{
+	return false;
+}
+
 #endif /* CONFIG_ACPI */
 
 #endif
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Intel-gfx] [PATCH 2/2] drm/i915: do not start connector polling when headless sku
  2022-06-03 10:14 [Intel-gfx] [PATCH 0/2] Disable connector polling for a headless sku Jouni Högander
  2022-06-03 10:14 ` [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if " Jouni Högander
@ 2022-06-03 10:14 ` Jouni Högander
  2022-06-03 11:01 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Disable connector polling for a " Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 17+ messages in thread
From: Jouni Högander @ 2022-06-03 10:14 UTC (permalink / raw)
  To: intel-gfx

Connector polling is waking up the polled device. Polling
is unnecessary if our device is known to not have display.

Fix this and Save some power by disabling starting connector
polling when we are having headless sku. Use information from
opregion.

Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hotplug.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.c b/drivers/gpu/drm/i915/display/intel_hotplug.c
index 8204126d17f9..555278ec7667 100644
--- a/drivers/gpu/drm/i915/display/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/display/intel_hotplug.c
@@ -668,7 +668,8 @@ static void i915_hpd_poll_init_work(struct work_struct *work)
  */
 void intel_hpd_poll_enable(struct drm_i915_private *dev_priv)
 {
-	if (!HAS_DISPLAY(dev_priv))
+	if (!HAS_DISPLAY(dev_priv) ||
+	    intel_opregion_headless_sku(dev_priv))
 		return;
 
 	WRITE_ONCE(dev_priv->hotplug.poll_enabled, true);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

* [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Disable connector polling for a headless sku
  2022-06-03 10:14 [Intel-gfx] [PATCH 0/2] Disable connector polling for a headless sku Jouni Högander
  2022-06-03 10:14 ` [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if " Jouni Högander
  2022-06-03 10:14 ` [Intel-gfx] [PATCH 2/2] drm/i915: do not start connector polling when " Jouni Högander
@ 2022-06-03 11:01 ` Patchwork
  2022-06-03 13:01 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
  2022-06-03 15:38 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
  4 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2022-06-03 11:01 UTC (permalink / raw)
  To: Jouni Högander; +Cc: intel-gfx

== Series Details ==

Series: Disable connector polling for a headless sku
URL   : https://patchwork.freedesktop.org/series/104711/
State : warning

== Summary ==

Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.



^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if headless sku
  2022-06-03 10:14 ` [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if " Jouni Högander
@ 2022-06-03 12:43   ` Jani Nikula
  2022-06-03 13:14     ` Hogander, Jouni
  0 siblings, 1 reply; 17+ messages in thread
From: Jani Nikula @ 2022-06-03 12:43 UTC (permalink / raw)
  To: Jouni Högander, intel-gfx

On Fri, 03 Jun 2022, Jouni Högander <jouni.hogander@intel.com> wrote:
> Export headless sku bit (bit 13) from opregion->header->pcon as an
> interface to check if our device is headless configuration.
>
> Bspec: 53441
> Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_opregion.c | 12 ++++++++++++
>  drivers/gpu/drm/i915/display/intel_opregion.h |  7 +++++++
>  2 files changed, 19 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c b/drivers/gpu/drm/i915/display/intel_opregion.c
> index f31e8c3f8ce0..eab3f2e6b786 100644
> --- a/drivers/gpu/drm/i915/display/intel_opregion.c
> +++ b/drivers/gpu/drm/i915/display/intel_opregion.c
> @@ -53,6 +53,8 @@
>  #define MBOX_ASLE_EXT		BIT(4)	/* Mailbox #5 */
>  #define MBOX_BACKLIGHT		BIT(5)	/* Mailbox #2 (valid from v3.x) */
>  
> +#define PCON_HEADLESS_SKU	BIT(13)

Here we go again.

What does headless mean here? The spec does not say. Does it have
display hardware? Apparently yes, since otherwise we wouldn't be here.

We have INTEL_DISPLAY_ENABLED() which should do the right thing when you
do have display hardware and have done output setup etc. but want to
force them disconnected, i.e. you take the hardware over properly, but
put it to sleep for power savings.

Maybe we should bolt this opregion check in that macro?

Maybe we need to use INTEL_DISPLAY_ENABLED() also to prevent polling.

I certainly would not want to add another mode that's separate from
HAS_DISPLAY() and INTEL_DISPLAY_ENABLED().

> +
>  struct opregion_header {
>  	u8 signature[16];
>  	u32 size;
> @@ -1135,6 +1137,16 @@ struct edid *intel_opregion_get_edid(struct intel_connector *intel_connector)
>  	return new_edid;
>  }
>  
> +bool intel_opregion_headless_sku(struct drm_i915_private *i915)
> +{
> +	struct intel_opregion *opregion = &i915->opregion;
> +
> +	if (!opregion->header)
> +		return false;
> +
> +	return opregion->header->pcon & PCON_HEADLESS_SKU;

We should probably start checking for opregion version for this stuff
too.


BR,
Jani.

> +}
> +
>  void intel_opregion_register(struct drm_i915_private *i915)
>  {
>  	struct intel_opregion *opregion = &i915->opregion;
> diff --git a/drivers/gpu/drm/i915/display/intel_opregion.h b/drivers/gpu/drm/i915/display/intel_opregion.h
> index 82cc0ba34af7..5ad96e1d8278 100644
> --- a/drivers/gpu/drm/i915/display/intel_opregion.h
> +++ b/drivers/gpu/drm/i915/display/intel_opregion.h
> @@ -76,6 +76,8 @@ int intel_opregion_notify_adapter(struct drm_i915_private *dev_priv,
>  int intel_opregion_get_panel_type(struct drm_i915_private *dev_priv);
>  struct edid *intel_opregion_get_edid(struct intel_connector *connector);
>  
> +bool intel_opregion_headless_sku(struct drm_i915_private *i915);
> +
>  #else /* CONFIG_ACPI*/
>  
>  static inline int intel_opregion_setup(struct drm_i915_private *dev_priv)
> @@ -127,6 +129,11 @@ intel_opregion_get_edid(struct intel_connector *connector)
>  	return NULL;
>  }
>  
> +bool intel_opregion_headless_sku(struct drm_i915_private *i915)
> +{
> +	return false;
> +}
> +
>  #endif /* CONFIG_ACPI */
>  
>  #endif

-- 
Jani Nikula, Intel Open Source Graphics Center

^ permalink raw reply	[flat|nested] 17+ messages in thread

* [Intel-gfx] ✓ Fi.CI.BAT: success for Disable connector polling for a headless sku
  2022-06-03 10:14 [Intel-gfx] [PATCH 0/2] Disable connector polling for a headless sku Jouni Högander
                   ` (2 preceding siblings ...)
  2022-06-03 11:01 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Disable connector polling for a " Patchwork
@ 2022-06-03 13:01 ` Patchwork
  2022-06-03 15:38 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork
  4 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2022-06-03 13:01 UTC (permalink / raw)
  To: Jouni Högander; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 8534 bytes --]

== Series Details ==

Series: Disable connector polling for a headless sku
URL   : https://patchwork.freedesktop.org/series/104711/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_11726 -> Patchwork_104711v1
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (43 -> 45)
------------------------------

  Additional (4): bat-adln-1 fi-kbl-x1275 bat-dg2-9 bat-atsm-1 
  Missing    (2): bat-dg2-8 bat-jsl-2 

Possible new issues
-------------------

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

### IGT changes ###

#### Suppressed ####

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

  * igt@gem_exec_suspend@basic-s3@smem:
    - {bat-adln-1}:       NOTRUN -> [DMESG-WARN][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/bat-adln-1/igt@gem_exec_suspend@basic-s3@smem.html

  * igt@kms_frontbuffer_tracking@basic:
    - {bat-adln-1}:       NOTRUN -> [SKIP][2] +19 similar issues
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/bat-adln-1/igt@kms_frontbuffer_tracking@basic.html

  
Known issues
------------

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_huc_copy@huc-copy:
    - fi-kbl-x1275:       NOTRUN -> [SKIP][3] ([fdo#109271] / [i915#2190])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/fi-kbl-x1275/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@verify-random:
    - fi-kbl-x1275:       NOTRUN -> [SKIP][4] ([fdo#109271] / [i915#4613]) +3 similar issues
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/fi-kbl-x1275/igt@gem_lmem_swapping@verify-random.html

  * igt@i915_selftest@live@gem:
    - fi-pnv-d510:        NOTRUN -> [DMESG-FAIL][5] ([i915#4528])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/fi-pnv-d510/igt@i915_selftest@live@gem.html

  * igt@i915_selftest@live@gt_engines:
    - bat-dg1-5:          [PASS][6] -> [INCOMPLETE][7] ([i915#4418])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/bat-dg1-5/igt@i915_selftest@live@gt_engines.html
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/bat-dg1-5/igt@i915_selftest@live@gt_engines.html

  * igt@i915_selftest@live@requests:
    - fi-blb-e6850:       [PASS][8] -> [DMESG-FAIL][9] ([i915#4528])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/fi-blb-e6850/igt@i915_selftest@live@requests.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/fi-blb-e6850/igt@i915_selftest@live@requests.html

  * igt@kms_chamelium@dp-hpd-fast:
    - fi-kbl-x1275:       NOTRUN -> [SKIP][10] ([fdo#109271] / [fdo#111827]) +8 similar issues
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/fi-kbl-x1275/igt@kms_chamelium@dp-hpd-fast.html

  * igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d:
    - fi-kbl-x1275:       NOTRUN -> [SKIP][11] ([fdo#109271] / [i915#533])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/fi-kbl-x1275/igt@kms_pipe_crc_basic@compare-crc-sanitycheck-pipe-d.html

  * igt@prime_vgem@basic-userptr:
    - fi-kbl-x1275:       NOTRUN -> [SKIP][12] ([fdo#109271]) +12 similar issues
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/fi-kbl-x1275/igt@prime_vgem@basic-userptr.html

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s0@smem:
    - {fi-ehl-2}:         [DMESG-WARN][13] ([i915#5122]) -> [PASS][14]
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/fi-ehl-2/igt@gem_exec_suspend@basic-s0@smem.html
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/fi-ehl-2/igt@gem_exec_suspend@basic-s0@smem.html

  * igt@i915_selftest@live@requests:
    - fi-pnv-d510:        [DMESG-FAIL][15] ([i915#4528]) -> [PASS][16]
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/fi-pnv-d510/igt@i915_selftest@live@requests.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/fi-pnv-d510/igt@i915_selftest@live@requests.html

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

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1155]: https://gitlab.freedesktop.org/drm/intel/issues/1155
  [i915#1836]: https://gitlab.freedesktop.org/drm/intel/issues/1836
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3595]: https://gitlab.freedesktop.org/drm/intel/issues/3595
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4213]: https://gitlab.freedesktop.org/drm/intel/issues/4213
  [i915#4215]: https://gitlab.freedesktop.org/drm/intel/issues/4215
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#4418]: https://gitlab.freedesktop.org/drm/intel/issues/4418
  [i915#4528]: https://gitlab.freedesktop.org/drm/intel/issues/4528
  [i915#4579]: https://gitlab.freedesktop.org/drm/intel/issues/4579
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4873]: https://gitlab.freedesktop.org/drm/intel/issues/4873
  [i915#5122]: https://gitlab.freedesktop.org/drm/intel/issues/5122
  [i915#5174]: https://gitlab.freedesktop.org/drm/intel/issues/5174
  [i915#5190]: https://gitlab.freedesktop.org/drm/intel/issues/5190
  [i915#5274]: https://gitlab.freedesktop.org/drm/intel/issues/5274
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5763]: https://gitlab.freedesktop.org/drm/intel/issues/5763
  [i915#5874]: https://gitlab.freedesktop.org/drm/intel/issues/5874
  [i915#5885]: https://gitlab.freedesktop.org/drm/intel/issues/5885
  [i915#5903]: https://gitlab.freedesktop.org/drm/intel/issues/5903
  [i915#6077]: https://gitlab.freedesktop.org/drm/intel/issues/6077
  [i915#6092]: https://gitlab.freedesktop.org/drm/intel/issues/6092
  [i915#6093]: https://gitlab.freedesktop.org/drm/intel/issues/6093
  [i915#6094]: https://gitlab.freedesktop.org/drm/intel/issues/6094
  [i915#6099]: https://gitlab.freedesktop.org/drm/intel/issues/6099
  [i915#6133]: https://gitlab.freedesktop.org/drm/intel/issues/6133
  [i915#6134]: https://gitlab.freedesktop.org/drm/intel/issues/6134
  [i915#6135]: https://gitlab.freedesktop.org/drm/intel/issues/6135
  [i915#6136]: https://gitlab.freedesktop.org/drm/intel/issues/6136
  [i915#6137]: https://gitlab.freedesktop.org/drm/intel/issues/6137
  [i915#6138]: https://gitlab.freedesktop.org/drm/intel/issues/6138
  [i915#6166]: https://gitlab.freedesktop.org/drm/intel/issues/6166


Build changes
-------------

  * Linux: CI_DRM_11726 -> Patchwork_104711v1

  CI-20190529: 20190529
  CI_DRM_11726: 74ea63ad8ffc71b8345436147517253dcabd4793 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_6505: edb1a467fb622b23b927e28ff603fa43851fea97 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_104711v1: 74ea63ad8ffc71b8345436147517253dcabd4793 @ git://anongit.freedesktop.org/gfx-ci/linux


### Linux commits

2b94b34a3ee6 drm/i915: do not start connector polling when headless sku
c3a38221f84a drm/i915/opregion: add function to check if headless sku

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/index.html

[-- Attachment #2: Type: text/html, Size: 7012 bytes --]

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if headless sku
  2022-06-03 12:43   ` Jani Nikula
@ 2022-06-03 13:14     ` Hogander, Jouni
  2022-06-03 16:32       ` Souza, Jose
  0 siblings, 1 reply; 17+ messages in thread
From: Hogander, Jouni @ 2022-06-03 13:14 UTC (permalink / raw)
  To: intel-gfx, jani.nikula

On Fri, 2022-06-03 at 15:43 +0300, Jani Nikula wrote:
> On Fri, 03 Jun 2022, Jouni Högander <jouni.hogander@intel.com> wrote:
> > Export headless sku bit (bit 13) from opregion->header->pcon as an
> > interface to check if our device is headless configuration.
> > 
> > Bspec: 53441
> > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > ---
> >  drivers/gpu/drm/i915/display/intel_opregion.c | 12 ++++++++++++
> >  drivers/gpu/drm/i915/display/intel_opregion.h |  7 +++++++
> >  2 files changed, 19 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c
> > b/drivers/gpu/drm/i915/display/intel_opregion.c
> > index f31e8c3f8ce0..eab3f2e6b786 100644
> > --- a/drivers/gpu/drm/i915/display/intel_opregion.c
> > +++ b/drivers/gpu/drm/i915/display/intel_opregion.c
> > @@ -53,6 +53,8 @@
> >  #define MBOX_ASLE_EXT		BIT(4)	/* Mailbox #5 */
> >  #define MBOX_BACKLIGHT		BIT(5)	/* Mailbox #2
> > (valid from v3.x) */
> >  
> > +#define PCON_HEADLESS_SKU	BIT(13)
> 
> Here we go again.
> 
> What does headless mean here? The spec does not say. Does it have
> display hardware? Apparently yes, since otherwise we wouldn't be
> here.

This is for hybrid setup with several display hw and the panel wont be
connected into device driven by i915 driver.

> We have INTEL_DISPLAY_ENABLED() which should do the right thing when
> you
> do have display hardware and have done output setup etc. but want to
> force them disconnected, i.e. you take the hardware over properly,
> but
> put it to sleep for power savings.
> 
> Maybe we should bolt this opregion check in that macro?
> 
> Maybe we need to use INTEL_DISPLAY_ENABLED() also to prevent polling.

Thank you for pointing this out. HAS_DISPLAY I already notice and it's
not suitable for what we want here. I think bolting this check into
INTEL_DISPLAY_ENABLED as you suggested is enough. That will prevent
waking up the hw into D0 state for polling.

> 
> I certainly would not want to add another mode that's separate from
> HAS_DISPLAY() and INTEL_DISPLAY_ENABLED().

No need for this. I think we can go with INTEL_DISPLAY_ENABLED.
> 
> > +
> >  struct opregion_header {
> >  	u8 signature[16];
> >  	u32 size;
> > @@ -1135,6 +1137,16 @@ struct edid *intel_opregion_get_edid(struct
> > intel_connector *intel_connector)
> >  	return new_edid;
> >  }
> >  
> > +bool intel_opregion_headless_sku(struct drm_i915_private *i915)
> > +{
> > +	struct intel_opregion *opregion = &i915->opregion;
> > +
> > +	if (!opregion->header)
> > +		return false;
> > +
> > +	return opregion->header->pcon & PCON_HEADLESS_SKU;
> 
> We should probably start checking for opregion version for this stuff
> too.
> 

Yes, I will do this change.

> 
> BR,
> Jani.
> 
> > +}
> > +
> >  void intel_opregion_register(struct drm_i915_private *i915)
> >  {
> >  	struct intel_opregion *opregion = &i915->opregion;
> > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.h
> > b/drivers/gpu/drm/i915/display/intel_opregion.h
> > index 82cc0ba34af7..5ad96e1d8278 100644
> > --- a/drivers/gpu/drm/i915/display/intel_opregion.h
> > +++ b/drivers/gpu/drm/i915/display/intel_opregion.h
> > @@ -76,6 +76,8 @@ int intel_opregion_notify_adapter(struct
> > drm_i915_private *dev_priv,
> >  int intel_opregion_get_panel_type(struct drm_i915_private
> > *dev_priv);
> >  struct edid *intel_opregion_get_edid(struct intel_connector
> > *connector);
> >  
> > +bool intel_opregion_headless_sku(struct drm_i915_private *i915);
> > +
> >  #else /* CONFIG_ACPI*/
> >  
> >  static inline int intel_opregion_setup(struct drm_i915_private
> > *dev_priv)
> > @@ -127,6 +129,11 @@ intel_opregion_get_edid(struct intel_connector
> > *connector)
> >  	return NULL;
> >  }
> >  
> > +bool intel_opregion_headless_sku(struct drm_i915_private *i915)
> > +{
> > +	return false;
> > +}
> > +
> >  #endif /* CONFIG_ACPI */
> >  
> >  #endif


^ permalink raw reply	[flat|nested] 17+ messages in thread

* [Intel-gfx] ✗ Fi.CI.IGT: failure for Disable connector polling for a headless sku
  2022-06-03 10:14 [Intel-gfx] [PATCH 0/2] Disable connector polling for a headless sku Jouni Högander
                   ` (3 preceding siblings ...)
  2022-06-03 13:01 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
@ 2022-06-03 15:38 ` Patchwork
  4 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2022-06-03 15:38 UTC (permalink / raw)
  To: Hogander, Jouni; +Cc: intel-gfx

[-- Attachment #1: Type: text/plain, Size: 41837 bytes --]

== Series Details ==

Series: Disable connector polling for a headless sku
URL   : https://patchwork.freedesktop.org/series/104711/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_11726_full -> Patchwork_104711v1_full
====================================================

Summary
-------

  **FAILURE**

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

  

Participating hosts (13 -> 13)
------------------------------

  No changes in participating hosts

Possible new issues
-------------------

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

### IGT changes ###

#### Possible regressions ####

  * igt@gem_ctx_persistence@many-contexts:
    - shard-tglb:         [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-tglb5/igt@gem_ctx_persistence@many-contexts.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-tglb5/igt@gem_ctx_persistence@many-contexts.html

  * igt@gem_exec_suspend@basic-s4-devices@smem:
    - shard-snb:          [PASS][3] -> [INCOMPLETE][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-snb2/igt@gem_exec_suspend@basic-s4-devices@smem.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-snb5/igt@gem_exec_suspend@basic-s4-devices@smem.html

  * igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-1:
    - shard-kbl:          [PASS][5] -> [FAIL][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-kbl6/igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-1.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl4/igt@kms_hdr@bpc-switch-dpms@pipe-a-dp-1.html

  
#### Suppressed ####

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

  * igt@kms_flip@wf_vblank-ts-check@a-edp1:
    - {shard-rkl}:        NOTRUN -> [FAIL][7] +1 similar issue
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@kms_flip@wf_vblank-ts-check@a-edp1.html

  
Known issues
------------

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_ctx_persistence@engines-hang@bcs0:
    - shard-skl:          NOTRUN -> [SKIP][8] ([fdo#109271]) +111 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl7/igt@gem_ctx_persistence@engines-hang@bcs0.html

  * igt@gem_ctx_persistence@idempotent:
    - shard-snb:          NOTRUN -> [SKIP][9] ([fdo#109271] / [i915#1099])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-snb4/igt@gem_ctx_persistence@idempotent.html

  * igt@gem_eio@unwedge-stress:
    - shard-iclb:         [PASS][10] -> [TIMEOUT][11] ([i915#3070])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb4/igt@gem_eio@unwedge-stress.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb2/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_balancer@parallel-bb-first:
    - shard-iclb:         [PASS][12] -> [SKIP][13] ([i915#4525])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb1/igt@gem_exec_balancer@parallel-bb-first.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb3/igt@gem_exec_balancer@parallel-bb-first.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-apl:          NOTRUN -> [FAIL][14] ([i915#6141])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-apl2/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-flow@rcs0:
    - shard-tglb:         [PASS][15] -> [FAIL][16] ([i915#2842]) +1 similar issue
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-tglb1/igt@gem_exec_fair@basic-flow@rcs0.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-tglb2/igt@gem_exec_fair@basic-flow@rcs0.html

  * igt@gem_exec_fair@basic-pace-solo@rcs0:
    - shard-iclb:         [PASS][17] -> [FAIL][18] ([i915#2842]) +1 similar issue
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb8/igt@gem_exec_fair@basic-pace-solo@rcs0.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb7/igt@gem_exec_fair@basic-pace-solo@rcs0.html

  * igt@gem_exec_flush@basic-uc-ro-default:
    - shard-snb:          [PASS][19] -> [SKIP][20] ([fdo#109271]) +2 similar issues
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-snb5/igt@gem_exec_flush@basic-uc-ro-default.html
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-snb6/igt@gem_exec_flush@basic-uc-ro-default.html

  * igt@gem_huc_copy@huc-copy:
    - shard-skl:          NOTRUN -> [SKIP][21] ([fdo#109271] / [i915#2190])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl4/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@parallel-random-verify-ccs:
    - shard-kbl:          NOTRUN -> [SKIP][22] ([fdo#109271] / [i915#4613])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl4/igt@gem_lmem_swapping@parallel-random-verify-ccs.html

  * igt@gem_lmem_swapping@verify-ccs:
    - shard-skl:          NOTRUN -> [SKIP][23] ([fdo#109271] / [i915#4613])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl7/igt@gem_lmem_swapping@verify-ccs.html

  * igt@gem_pread@exhaustion:
    - shard-kbl:          NOTRUN -> [WARN][24] ([i915#2658])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl3/igt@gem_pread@exhaustion.html

  * igt@gem_userptr_blits@dmabuf-sync:
    - shard-skl:          NOTRUN -> [SKIP][25] ([fdo#109271] / [i915#3323])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl7/igt@gem_userptr_blits@dmabuf-sync.html

  * igt@gem_userptr_blits@input-checking:
    - shard-apl:          NOTRUN -> [DMESG-WARN][26] ([i915#4991])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-apl7/igt@gem_userptr_blits@input-checking.html

  * igt@gem_userptr_blits@vma-merge:
    - shard-apl:          NOTRUN -> [FAIL][27] ([i915#3318])
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-apl2/igt@gem_userptr_blits@vma-merge.html

  * igt@gen9_exec_parse@allowed-single:
    - shard-skl:          [PASS][28] -> [DMESG-WARN][29] ([i915#5566] / [i915#716])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-skl3/igt@gen9_exec_parse@allowed-single.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl1/igt@gen9_exec_parse@allowed-single.html

  * igt@i915_selftest@mock@requests:
    - shard-skl:          [PASS][30] -> [INCOMPLETE][31] ([i915#5183])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-skl7/igt@i915_selftest@mock@requests.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl6/igt@i915_selftest@mock@requests.html

  * igt@i915_suspend@sysfs-reader:
    - shard-apl:          [PASS][32] -> [DMESG-WARN][33] ([i915#180]) +1 similar issue
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-apl8/igt@i915_suspend@sysfs-reader.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-apl1/igt@i915_suspend@sysfs-reader.html

  * igt@kms_big_fb@4-tiled-32bpp-rotate-90:
    - shard-apl:          NOTRUN -> [SKIP][34] ([fdo#109271]) +33 similar issues
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-apl7/igt@kms_big_fb@4-tiled-32bpp-rotate-90.html

  * igt@kms_ccs@pipe-a-random-ccs-data-y_tiled_gen12_rc_ccs_cc:
    - shard-kbl:          NOTRUN -> [SKIP][35] ([fdo#109271] / [i915#3886]) +1 similar issue
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl3/igt@kms_ccs@pipe-a-random-ccs-data-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-b-missing-ccs-buffer-y_tiled_gen12_mc_ccs:
    - shard-apl:          NOTRUN -> [SKIP][36] ([fdo#109271] / [i915#3886]) +2 similar issues
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-apl7/igt@kms_ccs@pipe-b-missing-ccs-buffer-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-c-bad-rotation-90-y_tiled_gen12_rc_ccs_cc:
    - shard-skl:          NOTRUN -> [SKIP][37] ([fdo#109271] / [i915#3886]) +3 similar issues
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl7/igt@kms_ccs@pipe-c-bad-rotation-90-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_chamelium@vga-hpd-without-ddc:
    - shard-snb:          NOTRUN -> [SKIP][38] ([fdo#109271] / [fdo#111827]) +1 similar issue
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-snb4/igt@kms_chamelium@vga-hpd-without-ddc.html

  * igt@kms_color_chamelium@pipe-a-ctm-negative:
    - shard-apl:          NOTRUN -> [SKIP][39] ([fdo#109271] / [fdo#111827]) +1 similar issue
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-apl7/igt@kms_color_chamelium@pipe-a-ctm-negative.html

  * igt@kms_color_chamelium@pipe-c-ctm-blue-to-red:
    - shard-kbl:          NOTRUN -> [SKIP][40] ([fdo#109271] / [fdo#111827]) +7 similar issues
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl4/igt@kms_color_chamelium@pipe-c-ctm-blue-to-red.html

  * igt@kms_color_chamelium@pipe-c-ctm-green-to-red:
    - shard-skl:          NOTRUN -> [SKIP][41] ([fdo#109271] / [fdo#111827]) +9 similar issues
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl7/igt@kms_color_chamelium@pipe-c-ctm-green-to-red.html

  * igt@kms_content_protection@srm:
    - shard-kbl:          NOTRUN -> [TIMEOUT][42] ([i915#1319]) +1 similar issue
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl3/igt@kms_content_protection@srm.html

  * igt@kms_cursor_crc@pipe-b-cursor-suspend:
    - shard-skl:          [PASS][43] -> [INCOMPLETE][44] ([i915#5713])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-skl2/igt@kms_cursor_crc@pipe-b-cursor-suspend.html
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl9/igt@kms_cursor_crc@pipe-b-cursor-suspend.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions:
    - shard-glk:          [PASS][45] -> [FAIL][46] ([i915#2346])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-glk6/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-glk5/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html
    - shard-skl:          NOTRUN -> [FAIL][47] ([i915#2346])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl7/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions.html

  * igt@kms_cursor_legacy@pipe-d-single-bo:
    - shard-skl:          NOTRUN -> [SKIP][48] ([fdo#109271] / [i915#533]) +1 similar issue
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl7/igt@kms_cursor_legacy@pipe-d-single-bo.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
    - shard-skl:          [PASS][49] -> [FAIL][50] ([i915#2122]) +2 similar issues
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-skl10/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl2/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html

  * igt@kms_flip@flip-vs-suspend@c-edp1:
    - shard-skl:          NOTRUN -> [INCOMPLETE][51] ([i915#4839])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl9/igt@kms_flip@flip-vs-suspend@c-edp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling:
    - shard-iclb:         [PASS][52] -> [SKIP][53] ([i915#3701]) +1 similar issue
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb4/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb2/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile-downscaling.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff:
    - shard-kbl:          NOTRUN -> [SKIP][54] ([fdo#109271]) +122 similar issues
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-spr-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt:
    - shard-snb:          NOTRUN -> [SKIP][55] ([fdo#109271]) +88 similar issues
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-snb4/igt@kms_frontbuffer_tracking@fbcpsr-rgb101010-draw-blt.html

  * igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence:
    - shard-kbl:          NOTRUN -> [SKIP][56] ([fdo#109271] / [i915#533])
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl6/igt@kms_pipe_crc_basic@read-crc-pipe-d-frame-sequence.html

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c:
    - shard-kbl:          [PASS][57] -> [DMESG-WARN][58] ([i915#180]) +5 similar issues
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-kbl3/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl7/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c.html

  * igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb:
    - shard-apl:          NOTRUN -> [FAIL][59] ([fdo#108145] / [i915#265])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-apl7/igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb.html

  * igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb:
    - shard-skl:          NOTRUN -> [FAIL][60] ([i915#265])
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl7/igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb.html

  * igt@kms_plane_alpha_blend@pipe-b-alpha-opaque-fb:
    - shard-kbl:          NOTRUN -> [FAIL][61] ([fdo#108145] / [i915#265])
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl3/igt@kms_plane_alpha_blend@pipe-b-alpha-opaque-fb.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-a-edp-1:
    - shard-iclb:         [PASS][62] -> [SKIP][63] ([i915#5235]) +2 similar issues
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb1/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-a-edp-1.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb2/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-a-edp-1.html

  * igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf:
    - shard-skl:          NOTRUN -> [SKIP][64] ([fdo#109271] / [i915#658])
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl4/igt@kms_psr2_sf@cursor-plane-move-continuous-exceed-sf.html

  * igt@kms_psr2_su@frontbuffer-xrgb8888:
    - shard-kbl:          NOTRUN -> [SKIP][65] ([fdo#109271] / [i915#658]) +1 similar issue
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl7/igt@kms_psr2_su@frontbuffer-xrgb8888.html
    - shard-apl:          NOTRUN -> [SKIP][66] ([fdo#109271] / [i915#658])
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-apl2/igt@kms_psr2_su@frontbuffer-xrgb8888.html

  * igt@kms_psr2_su@page_flip-xrgb8888:
    - shard-iclb:         [PASS][67] -> [SKIP][68] ([fdo#109642] / [fdo#111068] / [i915#658])
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb2/igt@kms_psr2_su@page_flip-xrgb8888.html
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb4/igt@kms_psr2_su@page_flip-xrgb8888.html

  * igt@kms_psr@psr2_sprite_plane_move:
    - shard-iclb:         [PASS][69] -> [SKIP][70] ([fdo#109441]) +2 similar issues
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb3/igt@kms_psr@psr2_sprite_plane_move.html

  * igt@kms_vblank@pipe-b-ts-continuation-suspend:
    - shard-kbl:          NOTRUN -> [DMESG-WARN][71] ([i915#180]) +1 similar issue
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl4/igt@kms_vblank@pipe-b-ts-continuation-suspend.html

  * igt@perf@short-reads:
    - shard-skl:          [PASS][72] -> [FAIL][73] ([i915#51])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-skl6/igt@perf@short-reads.html
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl4/igt@perf@short-reads.html

  * igt@sw_sync@sync_multi_timeline_wait:
    - shard-snb:          NOTRUN -> [FAIL][74] ([i915#6140])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-snb4/igt@sw_sync@sync_multi_timeline_wait.html

  * igt@sysfs_clients@pidname:
    - shard-skl:          NOTRUN -> [SKIP][75] ([fdo#109271] / [i915#2994])
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl7/igt@sysfs_clients@pidname.html

  * igt@sysfs_clients@sema-25:
    - shard-kbl:          NOTRUN -> [SKIP][76] ([fdo#109271] / [i915#2994])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl3/igt@sysfs_clients@sema-25.html

  
#### Possible fixes ####

  * igt@device_reset@unbind-reset-rebind:
    - shard-iclb:         [DMESG-WARN][77] ([i915#2867]) -> [PASS][78]
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb6/igt@device_reset@unbind-reset-rebind.html
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb6/igt@device_reset@unbind-reset-rebind.html

  * igt@fbdev@eof:
    - {shard-rkl}:        [SKIP][79] ([i915#2582]) -> [PASS][80]
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-1/igt@fbdev@eof.html
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@fbdev@eof.html

  * igt@gem_ctx_isolation@preservation-s3@vcs0:
    - shard-kbl:          [DMESG-WARN][81] ([i915#180]) -> [PASS][82] +7 similar issues
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-kbl4/igt@gem_ctx_isolation@preservation-s3@vcs0.html
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-kbl6/igt@gem_ctx_isolation@preservation-s3@vcs0.html

  * igt@gem_exec_balancer@parallel-contexts:
    - shard-iclb:         [SKIP][83] ([i915#4525]) -> [PASS][84]
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb7/igt@gem_exec_balancer@parallel-contexts.html
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb1/igt@gem_exec_balancer@parallel-contexts.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - {shard-tglu}:       [FAIL][85] ([i915#2842]) -> [PASS][86]
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-tglu-1/igt@gem_exec_fair@basic-none-share@rcs0.html
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-tglu-3/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none@vcs0:
    - shard-apl:          [FAIL][87] ([i915#2842]) -> [PASS][88]
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-apl4/igt@gem_exec_fair@basic-none@vcs0.html
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-apl8/igt@gem_exec_fair@basic-none@vcs0.html

  * igt@gem_exec_flush@basic-uc-pro-default:
    - shard-snb:          [SKIP][89] ([fdo#109271]) -> [PASS][90] +5 similar issues
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-snb6/igt@gem_exec_flush@basic-uc-pro-default.html
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-snb2/igt@gem_exec_flush@basic-uc-pro-default.html

  * igt@i915_pm_backlight@fade:
    - {shard-rkl}:        [SKIP][91] ([i915#3012]) -> [PASS][92]
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-1/igt@i915_pm_backlight@fade.html
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@i915_pm_backlight@fade.html

  * igt@i915_pm_dc@dc6-psr:
    - shard-iclb:         [FAIL][93] ([i915#454]) -> [PASS][94]
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb3/igt@i915_pm_dc@dc6-psr.html
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb8/igt@i915_pm_dc@dc6-psr.html
    - {shard-rkl}:        [SKIP][95] ([i915#658]) -> [PASS][96]
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-1/igt@i915_pm_dc@dc6-psr.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@i915_pm_dc@dc6-psr.html

  * igt@kms_color@pipe-a-ctm-blue-to-red:
    - {shard-rkl}:        [SKIP][97] ([i915#1149] / [i915#1849] / [i915#4070] / [i915#4098]) -> [PASS][98] +2 similar issues
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-1/igt@kms_color@pipe-a-ctm-blue-to-red.html
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@kms_color@pipe-a-ctm-blue-to-red.html

  * igt@kms_color@pipe-a-legacy-gamma:
    - {shard-dg1}:        [SKIP][99] ([i915#1836]) -> [PASS][100] +10 similar issues
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-dg1-17/igt@kms_color@pipe-a-legacy-gamma.html
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-dg1-16/igt@kms_color@pipe-a-legacy-gamma.html

  * igt@kms_cursor_crc@pipe-a-cursor-64x21-offscreen:
    - {shard-rkl}:        [SKIP][101] ([fdo#112022] / [i915#4070]) -> [PASS][102] +1 similar issue
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-1/igt@kms_cursor_crc@pipe-a-cursor-64x21-offscreen.html
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@kms_cursor_crc@pipe-a-cursor-64x21-offscreen.html

  * igt@kms_cursor_legacy@flip-vs-cursor-toggle:
    - shard-iclb:         [FAIL][103] ([i915#2346]) -> [PASS][104]
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb7/igt@kms_cursor_legacy@flip-vs-cursor-toggle.html
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb8/igt@kms_cursor_legacy@flip-vs-cursor-toggle.html

  * igt@kms_cursor_legacy@pipe-c-forked-bo:
    - {shard-rkl}:        [SKIP][105] ([i915#4070]) -> [PASS][106]
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-6/igt@kms_cursor_legacy@pipe-c-forked-bo.html
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-5/igt@kms_cursor_legacy@pipe-c-forked-bo.html

  * igt@kms_draw_crc@draw-method-rgb565-pwrite-xtiled:
    - {shard-rkl}:        [SKIP][107] ([fdo#111314] / [i915#4098] / [i915#4369]) -> [PASS][108]
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-1/igt@kms_draw_crc@draw-method-rgb565-pwrite-xtiled.html
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@kms_draw_crc@draw-method-rgb565-pwrite-xtiled.html

  * igt@kms_flip@flip-vs-absolute-wf_vblank@a-edp1:
    - shard-skl:          [FAIL][109] ([i915#2122]) -> [PASS][110] +1 similar issue
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-skl9/igt@kms_flip@flip-vs-absolute-wf_vblank@a-edp1.html
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl3/igt@kms_flip@flip-vs-absolute-wf_vblank@a-edp1.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling:
    - shard-glk:          [FAIL][111] ([i915#4911]) -> [PASS][112]
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-glk8/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling.html
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-glk9/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytileccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
    - {shard-rkl}:        [SKIP][113] ([i915#3701]) -> [PASS][114]
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-1/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling:
    - shard-iclb:         [SKIP][115] ([i915#3701]) -> [PASS][116]
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb2/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling.html
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb1/igt@kms_flip_scaled_crc@flip-64bpp-ytile-to-16bpp-ytile-downscaling.html

  * igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw:
    - {shard-dg1}:        [SKIP][117] ([i915#5721]) -> [PASS][118]
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-dg1-17/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-dg1-16/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt:
    - shard-glk:          [FAIL][119] ([i915#1888] / [i915#2546]) -> [PASS][120]
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-glk1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt.html
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-glk1/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-1p-rte:
    - {shard-rkl}:        [SKIP][121] ([i915#1849] / [i915#4098]) -> [PASS][122] +14 similar issues
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-1/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@kms_frontbuffer_tracking@fbcpsr-1p-rte.html

  * igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1:
    - shard-apl:          [DMESG-WARN][123] ([i915#180]) -> [PASS][124] +3 similar issues
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-apl8/igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1.html
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-apl7/igt@kms_hdr@bpc-switch-suspend@pipe-a-dp-1.html

  * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a:
    - shard-skl:          [INCOMPLETE][125] ([i915#4444]) -> [PASS][126]
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-skl4/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a.html
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl7/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-a.html

  * igt@kms_plane@plane-panning-top-left@pipe-b-planes:
    - {shard-rkl}:        [SKIP][127] ([i915#3558]) -> [PASS][128] +1 similar issue
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-1/igt@kms_plane@plane-panning-top-left@pipe-b-planes.html
   [128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@kms_plane@plane-panning-top-left@pipe-b-planes.html

  * igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb:
    - {shard-rkl}:        [SKIP][129] ([i915#1849] / [i915#4070] / [i915#4098]) -> [PASS][130] +1 similar issue
   [129]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-1/igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb.html
   [130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb.html

  * igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-a-edp-1:
    - shard-iclb:         [SKIP][131] ([i915#5235]) -> [PASS][132] +2 similar issues
   [131]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb2/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-a-edp-1.html
   [132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb3/igt@kms_plane_scaling@planes-unity-scaling-downscale-factor-0-5@pipe-a-edp-1.html

  * igt@kms_psr@cursor_render:
    - {shard-rkl}:        [SKIP][133] ([i915#1072]) -> [PASS][134]
   [133]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-1/igt@kms_psr@cursor_render.html
   [134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@kms_psr@cursor_render.html

  * igt@kms_psr@psr2_primary_blt:
    - shard-iclb:         [SKIP][135] ([fdo#109441]) -> [PASS][136]
   [135]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb4/igt@kms_psr@psr2_primary_blt.html
   [136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb2/igt@kms_psr@psr2_primary_blt.html

  * igt@kms_sequence@get-forked-busy@hdmi-a-1-pipe-b:
    - {shard-dg1}:        [FAIL][137] -> [PASS][138] +3 similar issues
   [137]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-dg1-17/igt@kms_sequence@get-forked-busy@hdmi-a-1-pipe-b.html
   [138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-dg1-16/igt@kms_sequence@get-forked-busy@hdmi-a-1-pipe-b.html

  * igt@kms_vblank@pipe-a-wait-forked-busy-hang:
    - {shard-rkl}:        [SKIP][139] ([i915#1845] / [i915#4098]) -> [PASS][140] +10 similar issues
   [139]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-1/igt@kms_vblank@pipe-a-wait-forked-busy-hang.html
   [140]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@kms_vblank@pipe-a-wait-forked-busy-hang.html

  * igt@kms_vblank@pipe-b-wait-busy:
    - {shard-dg1}:        [FAIL][141] ([i915#4241]) -> [PASS][142] +1 similar issue
   [141]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-dg1-17/igt@kms_vblank@pipe-b-wait-busy.html
   [142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-dg1-16/igt@kms_vblank@pipe-b-wait-busy.html

  * igt@prime_vgem@basic-fence-flip:
    - {shard-rkl}:        [SKIP][143] ([fdo#109295] / [i915#3708] / [i915#4098]) -> [PASS][144]
   [143]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-rkl-1/igt@prime_vgem@basic-fence-flip.html
   [144]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-rkl-6/igt@prime_vgem@basic-fence-flip.html

  
#### Warnings ####

  * igt@gem_exec_fair@basic-none-rrul@rcs0:
    - shard-iclb:         [FAIL][145] ([i915#2852]) -> [FAIL][146] ([i915#2842])
   [145]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb2/igt@gem_exec_fair@basic-none-rrul@rcs0.html
   [146]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb3/igt@gem_exec_fair@basic-none-rrul@rcs0.html

  * igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt:
    - shard-skl:          [SKIP][147] ([fdo#109271] / [i915#1888]) -> [SKIP][148] ([fdo#109271]) +1 similar issue
   [147]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-skl7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt.html
   [148]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl9/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-draw-blt.html

  * igt@kms_psr2_sf@cursor-plane-update-sf:
    - shard-iclb:         [SKIP][149] ([fdo#111068] / [i915#658]) -> [SKIP][150] ([i915#2920])
   [149]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb1/igt@kms_psr2_sf@cursor-plane-update-sf.html
   [150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb2/igt@kms_psr2_sf@cursor-plane-update-sf.html

  * igt@kms_psr2_sf@overlay-plane-move-continuous-sf:
    - shard-iclb:         [SKIP][151] ([i915#2920]) -> [SKIP][152] ([i915#658])
   [151]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb2/igt@kms_psr2_sf@overlay-plane-move-continuous-sf.html
   [152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb1/igt@kms_psr2_sf@overlay-plane-move-continuous-sf.html

  * igt@kms_psr2_sf@plane-move-sf-dmg-area:
    - shard-iclb:         [SKIP][153] ([i915#2920]) -> [SKIP][154] ([fdo#111068] / [i915#658])
   [153]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb2/igt@kms_psr2_sf@plane-move-sf-dmg-area.html
   [154]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb3/igt@kms_psr2_sf@plane-move-sf-dmg-area.html

  * igt@kms_psr2_su@page_flip-p010:
    - shard-iclb:         [SKIP][155] ([fdo#109642] / [fdo#111068] / [i915#658]) -> [FAIL][156] ([i915#5939])
   [155]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-iclb4/igt@kms_psr2_su@page_flip-p010.html
   [156]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-iclb2/igt@kms_psr2_su@page_flip-p010.html

  * igt@runner@aborted:
    - shard-skl:          ([FAIL][157], [FAIL][158]) ([i915#3002] / [i915#4312] / [i915#5257]) -> ([FAIL][159], [FAIL][160], [FAIL][161], [FAIL][162]) ([i915#2029] / [i915#3002] / [i915#4312] / [i915#5257])
   [157]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-skl10/igt@runner@aborted.html
   [158]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_11726/shard-skl9/igt@runner@aborted.html
   [159]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl1/igt@runner@aborted.html
   [160]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl10/igt@runner@aborted.html
   [161]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl2/igt@runner@aborted.html
   [162]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/shard-skl6/igt@runner@aborted.html

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

  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279
  [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109300]: https://bugs.freedesktop.org/show_bug.cgi?id=109300
  [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110254]: https://bugs.freedesktop.org/show_bug.cgi?id=110254
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111314]: https://bugs.freedesktop.org/show_bug.cgi?id=111314
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112022]: https://bugs.freedesktop.org/show_bug.cgi?id=112022
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
  [i915#1149]: https://gitlab.freedesktop.org/drm/intel/issues/1149
  [i915#1257]: https://gitlab.freedesktop.org/drm/intel/issues/1257
  [i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1836]: https://gitlab.freedesktop.org/drm/intel/issues/1836
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888
  [i915#1911]: https://gitlab.freedesktop.org/drm/intel/issues/1911
  [i915#2029]: https://gitlab.freedesktop.org/drm/intel/issues/2029
  [i915#2122]: https://gitlab.freedesktop.org/drm/intel/issues/2122
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2546]: https://gitlab.freedesktop.org/drm/intel/issues/2546
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265
  [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2852]: https://gitlab.freedesktop.org/drm/intel/issues/2852
  [i915#2867]: https://gitlab.freedesktop.org/drm/intel/issues/2867
  [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
  [i915#2994]: https://gitlab.freedesktop.org/drm/intel/issues/2994
  [i915#3002]: https://gitlab.freedesktop.org/drm/intel/issues/3002
  [i915#3012]: https://gitlab.freedesktop.org/drm/intel/issues/3012
  [i915#3070]: https://gitlab.freedesktop.org/drm/intel/issues/3070
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318
  [i915#3319]: https://gitlab.freedesktop.org/drm/intel/issues/3319
  [i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3536]: https://gitlab.freedesktop.org/drm/intel/issues/3536
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3558]: https://gitlab.freedesktop.org/drm/intel/issues/3558
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3701]: https://gitlab.freedesktop.org/drm/intel/issues/3701
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3963]: https://gitlab.freedesktop.org/drm/intel/issues/3963
  [i915#3989]: https://gitlab.freedesktop.org/drm/intel/issues/3989
  [i915#4016]: https://gitlab.freedesktop.org/drm/intel/issues/4016
  [i915#4032]: https://gitlab.freedesktop.org/drm/intel/issues/4032
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4241]: https://gitlab.freedesktop.org/drm/intel/issues/4241
  [i915#4258]: https://gitlab.freedesktop.org/drm/intel/issues/4258
  [i915#4278]: https://gitlab.freedesktop.org/drm/intel/issues/4278
  [i915#4312]: https://gitlab.freedesktop.org/drm/intel/issues/4312
  [i915#433]: https://gitlab.freedesktop.org/drm/intel/issues/433
  [i915#4369]: https://gitlab.freedesktop.org/drm/intel/issues/4369
  [i915#4444]: https://gitlab.freedesktop.org/drm/intel/issues/4444
  [i915#4494]: https://gitlab.freedesktop.org/drm/intel/issues/4494
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4839]: https://gitlab.freedesktop.org/drm/intel/issues/4839
  [i915#4911]: https://gitlab.freedesktop.org/drm/intel/issues/4911
  [i915#4957]: https://gitlab.freedesktop.org/drm/intel/issues/4957
  [i915#4991]: https://gitlab.freedesktop.org/drm/intel/issues/4991
  [i915#51]: https://gitlab.freedesktop.org/drm/intel/issues/51
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5183]: https://gitlab.freedesktop.org/drm/intel/issues/5183
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5257]: https://gitlab.freedesktop.org/drm/intel/issues/5257
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5287]: https://gitlab.freedesktop.org/drm/intel/issues/5287
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5566]: https://gitlab.freedesktop.org/drm/intel/issues/5566
  [i915#5713]: https://gitlab.freedesktop.org/drm/intel/issues/5713
  [i915#5721]: https://gitlab.freedesktop.org/drm/intel/issues/5721
  [i915#5939]: https://gitlab.freedesktop.org/drm/intel/issues/5939
  [i915#6140]: https://gitlab.freedesktop.org/drm/intel/issues/6140
  [i915#6141]: https://gitlab.freedesktop.org/drm/intel/issues/6141
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716


Build changes
-------------

  * Linux: CI_DRM_11726 -> Patchwork_104711v1

  CI-20190529: 20190529
  CI_DRM_11726: 74ea63ad8ffc71b8345436147517253dcabd4793 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_6505: edb1a467fb622b23b927e28ff603fa43851fea97 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_104711v1: 74ea63ad8ffc71b8345436147517253dcabd4793 @ git://anongit.freedesktop.org/gfx-ci/linux
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_104711v1/index.html

[-- Attachment #2: Type: text/html, Size: 48021 bytes --]

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if headless sku
  2022-06-03 13:14     ` Hogander, Jouni
@ 2022-06-03 16:32       ` Souza, Jose
  2022-06-06  8:03         ` Hogander, Jouni
  0 siblings, 1 reply; 17+ messages in thread
From: Souza, Jose @ 2022-06-03 16:32 UTC (permalink / raw)
  To: intel-gfx, Hogander, Jouni, jani.nikula

On Fri, 2022-06-03 at 13:14 +0000, Hogander, Jouni wrote:
> On Fri, 2022-06-03 at 15:43 +0300, Jani Nikula wrote:
> > On Fri, 03 Jun 2022, Jouni Högander <jouni.hogander@intel.com> wrote:
> > > Export headless sku bit (bit 13) from opregion->header->pcon as an
> > > interface to check if our device is headless configuration.
> > > 
> > > Bspec: 53441
> > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > > ---
> > >  drivers/gpu/drm/i915/display/intel_opregion.c | 12 ++++++++++++
> > >  drivers/gpu/drm/i915/display/intel_opregion.h |  7 +++++++
> > >  2 files changed, 19 insertions(+)
> > > 
> > > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > index f31e8c3f8ce0..eab3f2e6b786 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > @@ -53,6 +53,8 @@
> > >  #define MBOX_ASLE_EXT		BIT(4)	/* Mailbox #5 */
> > >  #define MBOX_BACKLIGHT		BIT(5)	/* Mailbox #2
> > > (valid from v3.x) */
> > >  
> > > +#define PCON_HEADLESS_SKU	BIT(13)
> > 
> > Here we go again.
> > 
> > What does headless mean here? The spec does not say. Does it have
> > display hardware? Apparently yes, since otherwise we wouldn't be
> > here.
> 
> This is for hybrid setup with several display hw and the panel wont be
> connected into device driven by i915 driver.
> 
> > We have INTEL_DISPLAY_ENABLED() which should do the right thing when
> > you
> > do have display hardware and have done output setup etc. but want to
> > force them disconnected, i.e. you take the hardware over properly,
> > but
> > put it to sleep for power savings.
> > 
> > Maybe we should bolt this opregion check in that macro?
> > 
> > Maybe we need to use INTEL_DISPLAY_ENABLED() also to prevent polling.
> 
> Thank you for pointing this out. HAS_DISPLAY I already notice and it's
> not suitable for what we want here. I think bolting this check into
> INTEL_DISPLAY_ENABLED as you suggested is enough. That will prevent
> waking up the hw into D0 state for polling.

A headless sku should not have any DDI ports enabled, much easier check for that.

> 
> > 
> > I certainly would not want to add another mode that's separate from
> > HAS_DISPLAY() and INTEL_DISPLAY_ENABLED().
> 
> No need for this. I think we can go with INTEL_DISPLAY_ENABLED.
> > 
> > > +
> > >  struct opregion_header {
> > >  	u8 signature[16];
> > >  	u32 size;
> > > @@ -1135,6 +1137,16 @@ struct edid *intel_opregion_get_edid(struct
> > > intel_connector *intel_connector)
> > >  	return new_edid;
> > >  }
> > >  
> > > +bool intel_opregion_headless_sku(struct drm_i915_private *i915)
> > > +{
> > > +	struct intel_opregion *opregion = &i915->opregion;
> > > +
> > > +	if (!opregion->header)
> > > +		return false;
> > > +
> > > +	return opregion->header->pcon & PCON_HEADLESS_SKU;
> > 
> > We should probably start checking for opregion version for this stuff
> > too.
> > 
> 
> Yes, I will do this change.
> 
> > 
> > BR,
> > Jani.
> > 
> > > +}
> > > +
> > >  void intel_opregion_register(struct drm_i915_private *i915)
> > >  {
> > >  	struct intel_opregion *opregion = &i915->opregion;
> > > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.h
> > > b/drivers/gpu/drm/i915/display/intel_opregion.h
> > > index 82cc0ba34af7..5ad96e1d8278 100644
> > > --- a/drivers/gpu/drm/i915/display/intel_opregion.h
> > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.h
> > > @@ -76,6 +76,8 @@ int intel_opregion_notify_adapter(struct
> > > drm_i915_private *dev_priv,
> > >  int intel_opregion_get_panel_type(struct drm_i915_private
> > > *dev_priv);
> > >  struct edid *intel_opregion_get_edid(struct intel_connector
> > > *connector);
> > >  
> > > +bool intel_opregion_headless_sku(struct drm_i915_private *i915);
> > > +
> > >  #else /* CONFIG_ACPI*/
> > >  
> > >  static inline int intel_opregion_setup(struct drm_i915_private
> > > *dev_priv)
> > > @@ -127,6 +129,11 @@ intel_opregion_get_edid(struct intel_connector
> > > *connector)
> > >  	return NULL;
> > >  }
> > >  
> > > +bool intel_opregion_headless_sku(struct drm_i915_private *i915)
> > > +{
> > > +	return false;
> > > +}
> > > +
> > >  #endif /* CONFIG_ACPI */
> > >  
> > >  #endif
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if headless sku
  2022-06-03 16:32       ` Souza, Jose
@ 2022-06-06  8:03         ` Hogander, Jouni
  2022-06-06  8:16           ` Jani Nikula
  0 siblings, 1 reply; 17+ messages in thread
From: Hogander, Jouni @ 2022-06-06  8:03 UTC (permalink / raw)
  To: intel-gfx, jani.nikula, Souza, Jose

On Fri, 2022-06-03 at 16:32 +0000, Souza, Jose wrote:
> On Fri, 2022-06-03 at 13:14 +0000, Hogander, Jouni wrote:
> > On Fri, 2022-06-03 at 15:43 +0300, Jani Nikula wrote:
> > > On Fri, 03 Jun 2022, Jouni Högander <jouni.hogander@intel.com>
> > > wrote:
> > > > Export headless sku bit (bit 13) from opregion->header->pcon as
> > > > an
> > > > interface to check if our device is headless configuration.
> > > > 
> > > > Bspec: 53441
> > > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > > > ---
> > > >  drivers/gpu/drm/i915/display/intel_opregion.c | 12
> > > > ++++++++++++
> > > >  drivers/gpu/drm/i915/display/intel_opregion.h |  7 +++++++
> > > >  2 files changed, 19 insertions(+)
> > > > 
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > index f31e8c3f8ce0..eab3f2e6b786 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > @@ -53,6 +53,8 @@
> > > >  #define MBOX_ASLE_EXTBIT(4)/* Mailbox #5 */
> > > >  #define MBOX_BACKLIGHTBIT(5)/* Mailbox #2
> > > > (valid from v3.x) */
> > > > 
> > > > +#define PCON_HEADLESS_SKUBIT(13)
> > > 
> > > Here we go again.
> > > 
> > > What does headless mean here? The spec does not say. Does it have
> > > display hardware? Apparently yes, since otherwise we wouldn't be
> > > here.
> > 
> > This is for hybrid setup with several display hw and the panel wont
> > be
> > connected into device driven by i915 driver.
> > 
> > > We have INTEL_DISPLAY_ENABLED() which should do the right thing
> > > when
> > > you
> > > do have display hardware and have done output setup etc. but want
> > > to
> > > force them disconnected, i.e. you take the hardware over
> > > properly,
> > > but
> > > put it to sleep for power savings.
> > > 
> > > Maybe we should bolt this opregion check in that macro?
> > > 
> > > Maybe we need to use INTEL_DISPLAY_ENABLED() also to prevent
> > > polling.
> > 
> > Thank you for pointing this out. HAS_DISPLAY I already notice and
> > it's
> > not suitable for what we want here. I think bolting this check into
> > INTEL_DISPLAY_ENABLED as you suggested is enough. That will prevent
> > waking up the hw into D0 state for polling.
> 
> A headless sku should not have any DDI ports enabled, much easier
> check for that.

Could you please clarify this a bit? What exactly you are thinking
should be checked? Aren't DDI port also disabled when non-headless
setup is in runtime suspend?
 
> 
> > > I certainly would not want to add another mode that's separate
> > > from
> > > HAS_DISPLAY() and INTEL_DISPLAY_ENABLED().
> > 
> > No need for this. I think we can go with INTEL_DISPLAY_ENABLED.
> > > > +
> > > >  struct opregion_header {
> > > >  u8 signature[16];
> > > >  u32 size;
> > > > @@ -1135,6 +1137,16 @@ struct edid
> > > > *intel_opregion_get_edid(struct
> > > > intel_connector *intel_connector)
> > > >  return new_edid;
> > > >  }
> > > > 
> > > > +bool intel_opregion_headless_sku(struct drm_i915_private
> > > > *i915)
> > > > +{
> > > > +struct intel_opregion *opregion = &i915->opregion;
> > > > +
> > > > +if (!opregion->header)
> > > > +return false;
> > > > +
> > > > +return opregion->header->pcon & PCON_HEADLESS_SKU;
> > > 
> > > We should probably start checking for opregion version for this
> > > stuff
> > > too.
> > > 
> > 
> > Yes, I will do this change.
> > 
> > > BR,
> > > Jani.
> > > 
> > > > +}
> > > > +
> > > >  void intel_opregion_register(struct drm_i915_private *i915)
> > > >  {
> > > >  struct intel_opregion *opregion = &i915->opregion;
> > > > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > b/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > index 82cc0ba34af7..5ad96e1d8278 100644
> > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > @@ -76,6 +76,8 @@ int intel_opregion_notify_adapter(struct
> > > > drm_i915_private *dev_priv,
> > > >  int intel_opregion_get_panel_type(struct drm_i915_private
> > > > *dev_priv);
> > > >  struct edid *intel_opregion_get_edid(struct intel_connector
> > > > *connector);
> > > > 
> > > > +bool intel_opregion_headless_sku(struct drm_i915_private
> > > > *i915);
> > > > +
> > > >  #else /* CONFIG_ACPI*/
> > > > 
> > > >  static inline int intel_opregion_setup(struct drm_i915_private
> > > > *dev_priv)
> > > > @@ -127,6 +129,11 @@ intel_opregion_get_edid(struct
> > > > intel_connector
> > > > *connector)
> > > >  return NULL;
> > > >  }
> > > > 
> > > > +bool intel_opregion_headless_sku(struct drm_i915_private
> > > > *i915)
> > > > +{
> > > > +return false;
> > > > +}
> > > > +
> > > >  #endif /* CONFIG_ACPI */
> > > > 
> > > >  #endif


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if headless sku
  2022-06-06  8:03         ` Hogander, Jouni
@ 2022-06-06  8:16           ` Jani Nikula
  2022-06-06 13:15             ` Souza, Jose
  0 siblings, 1 reply; 17+ messages in thread
From: Jani Nikula @ 2022-06-06  8:16 UTC (permalink / raw)
  To: Hogander, Jouni, intel-gfx, Souza, Jose

On Mon, 06 Jun 2022, "Hogander, Jouni" <jouni.hogander@intel.com> wrote:
> On Fri, 2022-06-03 at 16:32 +0000, Souza, Jose wrote:
>> On Fri, 2022-06-03 at 13:14 +0000, Hogander, Jouni wrote:
>> > On Fri, 2022-06-03 at 15:43 +0300, Jani Nikula wrote:
>> > > On Fri, 03 Jun 2022, Jouni Högander <jouni.hogander@intel.com>
>> > > wrote:
>> > > > Export headless sku bit (bit 13) from opregion->header->pcon as
>> > > > an
>> > > > interface to check if our device is headless configuration.
>> > > > 
>> > > > Bspec: 53441
>> > > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
>> > > > ---
>> > > >  drivers/gpu/drm/i915/display/intel_opregion.c | 12
>> > > > ++++++++++++
>> > > >  drivers/gpu/drm/i915/display/intel_opregion.h |  7 +++++++
>> > > >  2 files changed, 19 insertions(+)
>> > > > 
>> > > > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c
>> > > > b/drivers/gpu/drm/i915/display/intel_opregion.c
>> > > > index f31e8c3f8ce0..eab3f2e6b786 100644
>> > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.c
>> > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.c
>> > > > @@ -53,6 +53,8 @@
>> > > >  #define MBOX_ASLE_EXTBIT(4)/* Mailbox #5 */
>> > > >  #define MBOX_BACKLIGHTBIT(5)/* Mailbox #2
>> > > > (valid from v3.x) */
>> > > > 
>> > > > +#define PCON_HEADLESS_SKUBIT(13)
>> > > 
>> > > Here we go again.
>> > > 
>> > > What does headless mean here? The spec does not say. Does it have
>> > > display hardware? Apparently yes, since otherwise we wouldn't be
>> > > here.
>> > 
>> > This is for hybrid setup with several display hw and the panel wont
>> > be
>> > connected into device driven by i915 driver.
>> > 
>> > > We have INTEL_DISPLAY_ENABLED() which should do the right thing
>> > > when
>> > > you
>> > > do have display hardware and have done output setup etc. but want
>> > > to
>> > > force them disconnected, i.e. you take the hardware over
>> > > properly,
>> > > but
>> > > put it to sleep for power savings.
>> > > 
>> > > Maybe we should bolt this opregion check in that macro?
>> > > 
>> > > Maybe we need to use INTEL_DISPLAY_ENABLED() also to prevent
>> > > polling.
>> > 
>> > Thank you for pointing this out. HAS_DISPLAY I already notice and
>> > it's
>> > not suitable for what we want here. I think bolting this check into
>> > INTEL_DISPLAY_ENABLED as you suggested is enough. That will prevent
>> > waking up the hw into D0 state for polling.
>> 
>> A headless sku should not have any DDI ports enabled, much easier
>> check for that.
>
> Could you please clarify this a bit? What exactly you are thinking
> should be checked? Aren't DDI port also disabled when non-headless
> setup is in runtime suspend?

I also think "headless" and "DDI ports enabled" need clarification. They
are overloaded terms.

Seems to me the use case here could be the same as
INTEL_DISPLAY_ENABLED(), and that could benefit from polling disable.

BR,
Jani.


>  
>> 
>> > > I certainly would not want to add another mode that's separate
>> > > from
>> > > HAS_DISPLAY() and INTEL_DISPLAY_ENABLED().
>> > 
>> > No need for this. I think we can go with INTEL_DISPLAY_ENABLED.
>> > > > +
>> > > >  struct opregion_header {
>> > > >  u8 signature[16];
>> > > >  u32 size;
>> > > > @@ -1135,6 +1137,16 @@ struct edid
>> > > > *intel_opregion_get_edid(struct
>> > > > intel_connector *intel_connector)
>> > > >  return new_edid;
>> > > >  }
>> > > > 
>> > > > +bool intel_opregion_headless_sku(struct drm_i915_private
>> > > > *i915)
>> > > > +{
>> > > > +struct intel_opregion *opregion = &i915->opregion;
>> > > > +
>> > > > +if (!opregion->header)
>> > > > +return false;
>> > > > +
>> > > > +return opregion->header->pcon & PCON_HEADLESS_SKU;
>> > > 
>> > > We should probably start checking for opregion version for this
>> > > stuff
>> > > too.
>> > > 
>> > 
>> > Yes, I will do this change.
>> > 
>> > > BR,
>> > > Jani.
>> > > 
>> > > > +}
>> > > > +
>> > > >  void intel_opregion_register(struct drm_i915_private *i915)
>> > > >  {
>> > > >  struct intel_opregion *opregion = &i915->opregion;
>> > > > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.h
>> > > > b/drivers/gpu/drm/i915/display/intel_opregion.h
>> > > > index 82cc0ba34af7..5ad96e1d8278 100644
>> > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.h
>> > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.h
>> > > > @@ -76,6 +76,8 @@ int intel_opregion_notify_adapter(struct
>> > > > drm_i915_private *dev_priv,
>> > > >  int intel_opregion_get_panel_type(struct drm_i915_private
>> > > > *dev_priv);
>> > > >  struct edid *intel_opregion_get_edid(struct intel_connector
>> > > > *connector);
>> > > > 
>> > > > +bool intel_opregion_headless_sku(struct drm_i915_private
>> > > > *i915);
>> > > > +
>> > > >  #else /* CONFIG_ACPI*/
>> > > > 
>> > > >  static inline int intel_opregion_setup(struct drm_i915_private
>> > > > *dev_priv)
>> > > > @@ -127,6 +129,11 @@ intel_opregion_get_edid(struct
>> > > > intel_connector
>> > > > *connector)
>> > > >  return NULL;
>> > > >  }
>> > > > 
>> > > > +bool intel_opregion_headless_sku(struct drm_i915_private
>> > > > *i915)
>> > > > +{
>> > > > +return false;
>> > > > +}
>> > > > +
>> > > >  #endif /* CONFIG_ACPI */
>> > > > 
>> > > >  #endif
>

-- 
Jani Nikula, Intel Open Source Graphics Center

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if headless sku
  2022-06-06  8:16           ` Jani Nikula
@ 2022-06-06 13:15             ` Souza, Jose
  2022-06-07  7:36               ` Jani Nikula
                                 ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: Souza, Jose @ 2022-06-06 13:15 UTC (permalink / raw)
  To: intel-gfx, jani.nikula, Hogander, Jouni

On Mon, 2022-06-06 at 11:16 +0300, Jani Nikula wrote:
> On Mon, 06 Jun 2022, "Hogander, Jouni" <jouni.hogander@intel.com> wrote:
> > On Fri, 2022-06-03 at 16:32 +0000, Souza, Jose wrote:
> > > On Fri, 2022-06-03 at 13:14 +0000, Hogander, Jouni wrote:
> > > > On Fri, 2022-06-03 at 15:43 +0300, Jani Nikula wrote:
> > > > > On Fri, 03 Jun 2022, Jouni Högander <jouni.hogander@intel.com>
> > > > > wrote:
> > > > > > Export headless sku bit (bit 13) from opregion->header->pcon as
> > > > > > an
> > > > > > interface to check if our device is headless configuration.
> > > > > > 
> > > > > > Bspec: 53441
> > > > > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > > > > > ---
> > > > > >  drivers/gpu/drm/i915/display/intel_opregion.c | 12
> > > > > > ++++++++++++
> > > > > >  drivers/gpu/drm/i915/display/intel_opregion.h |  7 +++++++
> > > > > >  2 files changed, 19 insertions(+)
> > > > > > 
> > > > > > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > index f31e8c3f8ce0..eab3f2e6b786 100644
> > > > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > @@ -53,6 +53,8 @@
> > > > > >  #define MBOX_ASLE_EXTBIT(4)/* Mailbox #5 */
> > > > > >  #define MBOX_BACKLIGHTBIT(5)/* Mailbox #2
> > > > > > (valid from v3.x) */
> > > > > > 
> > > > > > +#define PCON_HEADLESS_SKUBIT(13)
> > > > > 
> > > > > Here we go again.
> > > > > 
> > > > > What does headless mean here? The spec does not say. Does it have
> > > > > display hardware? Apparently yes, since otherwise we wouldn't be
> > > > > here.
> > > > 
> > > > This is for hybrid setup with several display hw and the panel wont
> > > > be
> > > > connected into device driven by i915 driver.
> > > > 
> > > > > We have INTEL_DISPLAY_ENABLED() which should do the right thing
> > > > > when
> > > > > you
> > > > > do have display hardware and have done output setup etc. but want
> > > > > to
> > > > > force them disconnected, i.e. you take the hardware over
> > > > > properly,
> > > > > but
> > > > > put it to sleep for power savings.
> > > > > 
> > > > > Maybe we should bolt this opregion check in that macro?
> > > > > 
> > > > > Maybe we need to use INTEL_DISPLAY_ENABLED() also to prevent
> > > > > polling.
> > > > 
> > > > Thank you for pointing this out. HAS_DISPLAY I already notice and
> > > > it's
> > > > not suitable for what we want here. I think bolting this check into
> > > > INTEL_DISPLAY_ENABLED as you suggested is enough. That will prevent
> > > > waking up the hw into D0 state for polling.
> > > 
> > > A headless sku should not have any DDI ports enabled, much easier
> > > check for that.
> > 
> > Could you please clarify this a bit? What exactly you are thinking
> > should be checked? Aren't DDI port also disabled when non-headless
> > setup is in runtime suspend?
> 
> I also think "headless" and "DDI ports enabled" need clarification. They
> are overloaded terms.

In a properly setup headless sku, VBT should have all ports marked as disabled.

intel_ddi_init() {
	...

	if (!init_dp && !init_hdmi) {
		drm_dbg_kms(&dev_priv->drm,
			    "VBT says port %c is not DVI/HDMI/DP compatible, respect it\n",
			    port_name(port));
		return;
	}


All DDI should return earlier in the above.
So you can use the number of enabled connectors to know if it is a headless sku or not.

So you can skip the pooling in case there is no connectors.

> 
> Seems to me the use case here could be the same as
> INTEL_DISPLAY_ENABLED(), and that could benefit from polling disable.
> 
> BR,
> Jani.
> 
> 
> >  
> > > 
> > > > > I certainly would not want to add another mode that's separate
> > > > > from
> > > > > HAS_DISPLAY() and INTEL_DISPLAY_ENABLED().
> > > > 
> > > > No need for this. I think we can go with INTEL_DISPLAY_ENABLED.
> > > > > > +
> > > > > >  struct opregion_header {
> > > > > >  u8 signature[16];
> > > > > >  u32 size;
> > > > > > @@ -1135,6 +1137,16 @@ struct edid
> > > > > > *intel_opregion_get_edid(struct
> > > > > > intel_connector *intel_connector)
> > > > > >  return new_edid;
> > > > > >  }
> > > > > > 
> > > > > > +bool intel_opregion_headless_sku(struct drm_i915_private
> > > > > > *i915)
> > > > > > +{
> > > > > > +struct intel_opregion *opregion = &i915->opregion;
> > > > > > +
> > > > > > +if (!opregion->header)
> > > > > > +return false;
> > > > > > +
> > > > > > +return opregion->header->pcon & PCON_HEADLESS_SKU;
> > > > > 
> > > > > We should probably start checking for opregion version for this
> > > > > stuff
> > > > > too.
> > > > > 
> > > > 
> > > > Yes, I will do this change.
> > > > 
> > > > > BR,
> > > > > Jani.
> > > > > 
> > > > > > +}
> > > > > > +
> > > > > >  void intel_opregion_register(struct drm_i915_private *i915)
> > > > > >  {
> > > > > >  struct intel_opregion *opregion = &i915->opregion;
> > > > > > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > b/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > index 82cc0ba34af7..5ad96e1d8278 100644
> > > > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > @@ -76,6 +76,8 @@ int intel_opregion_notify_adapter(struct
> > > > > > drm_i915_private *dev_priv,
> > > > > >  int intel_opregion_get_panel_type(struct drm_i915_private
> > > > > > *dev_priv);
> > > > > >  struct edid *intel_opregion_get_edid(struct intel_connector
> > > > > > *connector);
> > > > > > 
> > > > > > +bool intel_opregion_headless_sku(struct drm_i915_private
> > > > > > *i915);
> > > > > > +
> > > > > >  #else /* CONFIG_ACPI*/
> > > > > > 
> > > > > >  static inline int intel_opregion_setup(struct drm_i915_private
> > > > > > *dev_priv)
> > > > > > @@ -127,6 +129,11 @@ intel_opregion_get_edid(struct
> > > > > > intel_connector
> > > > > > *connector)
> > > > > >  return NULL;
> > > > > >  }
> > > > > > 
> > > > > > +bool intel_opregion_headless_sku(struct drm_i915_private
> > > > > > *i915)
> > > > > > +{
> > > > > > +return false;
> > > > > > +}
> > > > > > +
> > > > > >  #endif /* CONFIG_ACPI */
> > > > > > 
> > > > > >  #endif
> > 
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if headless sku
  2022-06-06 13:15             ` Souza, Jose
@ 2022-06-07  7:36               ` Jani Nikula
  2022-06-07 13:05                 ` Hogander, Jouni
  2022-06-08  9:41               ` Hogander, Jouni
  2022-06-10  7:25               ` Hogander, Jouni
  2 siblings, 1 reply; 17+ messages in thread
From: Jani Nikula @ 2022-06-07  7:36 UTC (permalink / raw)
  To: Souza, Jose, intel-gfx, Hogander, Jouni

On Mon, 06 Jun 2022, "Souza, Jose" <jose.souza@intel.com> wrote:
> On Mon, 2022-06-06 at 11:16 +0300, Jani Nikula wrote:
>> On Mon, 06 Jun 2022, "Hogander, Jouni" <jouni.hogander@intel.com> wrote:
>> > On Fri, 2022-06-03 at 16:32 +0000, Souza, Jose wrote:
>> > > On Fri, 2022-06-03 at 13:14 +0000, Hogander, Jouni wrote:
>> > > > On Fri, 2022-06-03 at 15:43 +0300, Jani Nikula wrote:
>> > > > > On Fri, 03 Jun 2022, Jouni Högander <jouni.hogander@intel.com>
>> > > > > wrote:
>> > > > > > Export headless sku bit (bit 13) from opregion->header->pcon as
>> > > > > > an
>> > > > > > interface to check if our device is headless configuration.
>> > > > > > 
>> > > > > > Bspec: 53441
>> > > > > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
>> > > > > > ---
>> > > > > >  drivers/gpu/drm/i915/display/intel_opregion.c | 12
>> > > > > > ++++++++++++
>> > > > > >  drivers/gpu/drm/i915/display/intel_opregion.h |  7 +++++++
>> > > > > >  2 files changed, 19 insertions(+)
>> > > > > > 
>> > > > > > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.c
>> > > > > > b/drivers/gpu/drm/i915/display/intel_opregion.c
>> > > > > > index f31e8c3f8ce0..eab3f2e6b786 100644
>> > > > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.c
>> > > > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.c
>> > > > > > @@ -53,6 +53,8 @@
>> > > > > >  #define MBOX_ASLE_EXTBIT(4)/* Mailbox #5 */
>> > > > > >  #define MBOX_BACKLIGHTBIT(5)/* Mailbox #2
>> > > > > > (valid from v3.x) */
>> > > > > > 
>> > > > > > +#define PCON_HEADLESS_SKUBIT(13)
>> > > > > 
>> > > > > Here we go again.
>> > > > > 
>> > > > > What does headless mean here? The spec does not say. Does it have
>> > > > > display hardware? Apparently yes, since otherwise we wouldn't be
>> > > > > here.
>> > > > 
>> > > > This is for hybrid setup with several display hw and the panel wont
>> > > > be
>> > > > connected into device driven by i915 driver.
>> > > > 
>> > > > > We have INTEL_DISPLAY_ENABLED() which should do the right thing
>> > > > > when
>> > > > > you
>> > > > > do have display hardware and have done output setup etc. but want
>> > > > > to
>> > > > > force them disconnected, i.e. you take the hardware over
>> > > > > properly,
>> > > > > but
>> > > > > put it to sleep for power savings.
>> > > > > 
>> > > > > Maybe we should bolt this opregion check in that macro?
>> > > > > 
>> > > > > Maybe we need to use INTEL_DISPLAY_ENABLED() also to prevent
>> > > > > polling.
>> > > > 
>> > > > Thank you for pointing this out. HAS_DISPLAY I already notice and
>> > > > it's
>> > > > not suitable for what we want here. I think bolting this check into
>> > > > INTEL_DISPLAY_ENABLED as you suggested is enough. That will prevent
>> > > > waking up the hw into D0 state for polling.
>> > > 
>> > > A headless sku should not have any DDI ports enabled, much easier
>> > > check for that.
>> > 
>> > Could you please clarify this a bit? What exactly you are thinking
>> > should be checked? Aren't DDI port also disabled when non-headless
>> > setup is in runtime suspend?
>> 
>> I also think "headless" and "DDI ports enabled" need clarification. They
>> are overloaded terms.
>
> In a properly setup headless sku, VBT should have all ports marked as disabled.

This is what I mean with overloaded terms. Now we're at "properly setup
headless sku", and we're none the wiser. ;)

Is the hardware there?

If not, okay, but why aren't the pipes fused then? Why a different flag
in opregion?

If yes, has the GOP taken over the hardware and put it into power save?

BR,
Jani.


>
> intel_ddi_init() {
> 	...
>
> 	if (!init_dp && !init_hdmi) {
> 		drm_dbg_kms(&dev_priv->drm,
> 			    "VBT says port %c is not DVI/HDMI/DP compatible, respect it\n",
> 			    port_name(port));
> 		return;
> 	}
>
>
> All DDI should return earlier in the above.
> So you can use the number of enabled connectors to know if it is a headless sku or not.
>
> So you can skip the pooling in case there is no connectors.
>
>> 
>> Seems to me the use case here could be the same as
>> INTEL_DISPLAY_ENABLED(), and that could benefit from polling disable.
>> 
>> BR,
>> Jani.
>> 
>> 
>> >  
>> > > 
>> > > > > I certainly would not want to add another mode that's separate
>> > > > > from
>> > > > > HAS_DISPLAY() and INTEL_DISPLAY_ENABLED().
>> > > > 
>> > > > No need for this. I think we can go with INTEL_DISPLAY_ENABLED.
>> > > > > > +
>> > > > > >  struct opregion_header {
>> > > > > >  u8 signature[16];
>> > > > > >  u32 size;
>> > > > > > @@ -1135,6 +1137,16 @@ struct edid
>> > > > > > *intel_opregion_get_edid(struct
>> > > > > > intel_connector *intel_connector)
>> > > > > >  return new_edid;
>> > > > > >  }
>> > > > > > 
>> > > > > > +bool intel_opregion_headless_sku(struct drm_i915_private
>> > > > > > *i915)
>> > > > > > +{
>> > > > > > +struct intel_opregion *opregion = &i915->opregion;
>> > > > > > +
>> > > > > > +if (!opregion->header)
>> > > > > > +return false;
>> > > > > > +
>> > > > > > +return opregion->header->pcon & PCON_HEADLESS_SKU;
>> > > > > 
>> > > > > We should probably start checking for opregion version for this
>> > > > > stuff
>> > > > > too.
>> > > > > 
>> > > > 
>> > > > Yes, I will do this change.
>> > > > 
>> > > > > BR,
>> > > > > Jani.
>> > > > > 
>> > > > > > +}
>> > > > > > +
>> > > > > >  void intel_opregion_register(struct drm_i915_private *i915)
>> > > > > >  {
>> > > > > >  struct intel_opregion *opregion = &i915->opregion;
>> > > > > > diff --git a/drivers/gpu/drm/i915/display/intel_opregion.h
>> > > > > > b/drivers/gpu/drm/i915/display/intel_opregion.h
>> > > > > > index 82cc0ba34af7..5ad96e1d8278 100644
>> > > > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.h
>> > > > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.h
>> > > > > > @@ -76,6 +76,8 @@ int intel_opregion_notify_adapter(struct
>> > > > > > drm_i915_private *dev_priv,
>> > > > > >  int intel_opregion_get_panel_type(struct drm_i915_private
>> > > > > > *dev_priv);
>> > > > > >  struct edid *intel_opregion_get_edid(struct intel_connector
>> > > > > > *connector);
>> > > > > > 
>> > > > > > +bool intel_opregion_headless_sku(struct drm_i915_private
>> > > > > > *i915);
>> > > > > > +
>> > > > > >  #else /* CONFIG_ACPI*/
>> > > > > > 
>> > > > > >  static inline int intel_opregion_setup(struct drm_i915_private
>> > > > > > *dev_priv)
>> > > > > > @@ -127,6 +129,11 @@ intel_opregion_get_edid(struct
>> > > > > > intel_connector
>> > > > > > *connector)
>> > > > > >  return NULL;
>> > > > > >  }
>> > > > > > 
>> > > > > > +bool intel_opregion_headless_sku(struct drm_i915_private
>> > > > > > *i915)
>> > > > > > +{
>> > > > > > +return false;
>> > > > > > +}
>> > > > > > +
>> > > > > >  #endif /* CONFIG_ACPI */
>> > > > > > 
>> > > > > >  #endif
>> > 
>> 
>

-- 
Jani Nikula, Intel Open Source Graphics Center

^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if headless sku
  2022-06-07  7:36               ` Jani Nikula
@ 2022-06-07 13:05                 ` Hogander, Jouni
  2022-06-07 13:26                   ` Souza, Jose
  0 siblings, 1 reply; 17+ messages in thread
From: Hogander, Jouni @ 2022-06-07 13:05 UTC (permalink / raw)
  To: intel-gfx, jani.nikula, Souza, Jose

On Tue, 2022-06-07 at 10:36 +0300, Jani Nikula wrote:
> On Mon, 06 Jun 2022, "Souza, Jose" <jose.souza@intel.com> wrote:
> > On Mon, 2022-06-06 at 11:16 +0300, Jani Nikula wrote:
> > > On Mon, 06 Jun 2022, "Hogander, Jouni" <jouni.hogander@intel.com>
> > > wrote:
> > > > On Fri, 2022-06-03 at 16:32 +0000, Souza, Jose wrote:
> > > > > On Fri, 2022-06-03 at 13:14 +0000, Hogander, Jouni wrote:
> > > > > > On Fri, 2022-06-03 at 15:43 +0300, Jani Nikula wrote:
> > > > > > > On Fri, 03 Jun 2022, Jouni Högander <
> > > > > > > jouni.hogander@intel.com>
> > > > > > > wrote:
> > > > > > > > Export headless sku bit (bit 13) from opregion->header-
> > > > > > > > >pcon as
> > > > > > > > an
> > > > > > > > interface to check if our device is headless
> > > > > > > > configuration.
> > > > > > > > 
> > > > > > > > Bspec: 53441
> > > > > > > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com
> > > > > > > > >
> > > > > > > > ---
> > > > > > > >  drivers/gpu/drm/i915/display/intel_opregion.c | 12
> > > > > > > > ++++++++++++
> > > > > > > >  drivers/gpu/drm/i915/display/intel_opregion.h |  7
> > > > > > > > +++++++
> > > > > > > >  2 files changed, 19 insertions(+)
> > > > > > > > 
> > > > > > > > diff --git
> > > > > > > > a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > > b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > > index f31e8c3f8ce0..eab3f2e6b786 100644
> > > > > > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > > @@ -53,6 +53,8 @@
> > > > > > > >  #define MBOX_ASLE_EXTBIT(4)/* Mailbox #5 */
> > > > > > > >  #define MBOX_BACKLIGHTBIT(5)/* Mailbox #2
> > > > > > > > (valid from v3.x) */
> > > > > > > > 
> > > > > > > > +#define PCON_HEADLESS_SKUBIT(13)
> > > > > > > 
> > > > > > > Here we go again.
> > > > > > > 
> > > > > > > What does headless mean here? The spec does not say. Does
> > > > > > > it have
> > > > > > > display hardware? Apparently yes, since otherwise we
> > > > > > > wouldn't be
> > > > > > > here.
> > > > > > 
> > > > > > This is for hybrid setup with several display hw and the
> > > > > > panel wont
> > > > > > be
> > > > > > connected into device driven by i915 driver.
> > > > > > 
> > > > > > > We have INTEL_DISPLAY_ENABLED() which should do the right
> > > > > > > thing
> > > > > > > when
> > > > > > > you
> > > > > > > do have display hardware and have done output setup etc.
> > > > > > > but want
> > > > > > > to
> > > > > > > force them disconnected, i.e. you take the hardware over
> > > > > > > properly,
> > > > > > > but
> > > > > > > put it to sleep for power savings.
> > > > > > > 
> > > > > > > Maybe we should bolt this opregion check in that macro?
> > > > > > > 
> > > > > > > Maybe we need to use INTEL_DISPLAY_ENABLED() also to
> > > > > > > prevent
> > > > > > > polling.
> > > > > > 
> > > > > > Thank you for pointing this out. HAS_DISPLAY I already
> > > > > > notice and
> > > > > > it's
> > > > > > not suitable for what we want here. I think bolting this
> > > > > > check into
> > > > > > INTEL_DISPLAY_ENABLED as you suggested is enough. That will
> > > > > > prevent
> > > > > > waking up the hw into D0 state for polling.
> > > > > 
> > > > > A headless sku should not have any DDI ports enabled, much
> > > > > easier
> > > > > check for that.
> > > > 
> > > > Could you please clarify this a bit? What exactly you are
> > > > thinking
> > > > should be checked? Aren't DDI port also disabled when non-
> > > > headless
> > > > setup is in runtime suspend?
> > > 
> > > I also think "headless" and "DDI ports enabled" need
> > > clarification. They
> > > are overloaded terms.
> > 
> > In a properly setup headless sku, VBT should have all ports marked
> > as disabled.
> 
> This is what I mean with overloaded terms. Now we're at "properly
> setup
> headless sku", and we're none the wiser. ;)
> 
> Is the hardware there?
> 
> If not, okay, but why aren't the pipes fused then? Why a different
> flag
> in opregion?

I understand it as a "master" bit to disable having any display
connected to this hardware. To my understanding target use for
operegion headless bit is hybrid graphics setup.

> 
> If yes, has the GOP taken over the hardware and put it into power
> save?
> 
> BR,
> Jani.
> 
> 
> > intel_ddi_init() {
> > 	...
> > 
> > 	if (!init_dp && !init_hdmi) {
> > 		drm_dbg_kms(&dev_priv->drm,
> > 			    "VBT says port %c is not DVI/HDMI/DP
> > compatible, respect it\n",
> > 			    port_name(port));
> > 		return;
> > 	}
> > 
> > 
> > All DDI should return earlier in the above.
> > So you can use the number of enabled connectors to know if it is a
> > headless sku or not.
> > 
> > So you can skip the pooling in case there is no connectors.
> > 
> > > Seems to me the use case here could be the same as
> > > INTEL_DISPLAY_ENABLED(), and that could benefit from polling
> > > disable.
> > > 
> > > BR,
> > > Jani.
> > > 
> > > 
> > > >  
> > > > > > > I certainly would not want to add another mode that's
> > > > > > > separate
> > > > > > > from
> > > > > > > HAS_DISPLAY() and INTEL_DISPLAY_ENABLED().
> > > > > > 
> > > > > > No need for this. I think we can go with
> > > > > > INTEL_DISPLAY_ENABLED.
> > > > > > > > +
> > > > > > > >  struct opregion_header {
> > > > > > > >  u8 signature[16];
> > > > > > > >  u32 size;
> > > > > > > > @@ -1135,6 +1137,16 @@ struct edid
> > > > > > > > *intel_opregion_get_edid(struct
> > > > > > > > intel_connector *intel_connector)
> > > > > > > >  return new_edid;
> > > > > > > >  }
> > > > > > > > 
> > > > > > > > +bool intel_opregion_headless_sku(struct
> > > > > > > > drm_i915_private
> > > > > > > > *i915)
> > > > > > > > +{
> > > > > > > > +struct intel_opregion *opregion = &i915->opregion;
> > > > > > > > +
> > > > > > > > +if (!opregion->header)
> > > > > > > > +return false;
> > > > > > > > +
> > > > > > > > +return opregion->header->pcon & PCON_HEADLESS_SKU;
> > > > > > > 
> > > > > > > We should probably start checking for opregion version
> > > > > > > for this
> > > > > > > stuff
> > > > > > > too.
> > > > > > > 
> > > > > > 
> > > > > > Yes, I will do this change.
> > > > > > 
> > > > > > > BR,
> > > > > > > Jani.
> > > > > > > 
> > > > > > > > +}
> > > > > > > > +
> > > > > > > >  void intel_opregion_register(struct drm_i915_private
> > > > > > > > *i915)
> > > > > > > >  {
> > > > > > > >  struct intel_opregion *opregion = &i915->opregion;
> > > > > > > > diff --git
> > > > > > > > a/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > > > b/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > > > index 82cc0ba34af7..5ad96e1d8278 100644
> > > > > > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > > > @@ -76,6 +76,8 @@ int
> > > > > > > > intel_opregion_notify_adapter(struct
> > > > > > > > drm_i915_private *dev_priv,
> > > > > > > >  int intel_opregion_get_panel_type(struct
> > > > > > > > drm_i915_private
> > > > > > > > *dev_priv);
> > > > > > > >  struct edid *intel_opregion_get_edid(struct
> > > > > > > > intel_connector
> > > > > > > > *connector);
> > > > > > > > 
> > > > > > > > +bool intel_opregion_headless_sku(struct
> > > > > > > > drm_i915_private
> > > > > > > > *i915);
> > > > > > > > +
> > > > > > > >  #else /* CONFIG_ACPI*/
> > > > > > > > 
> > > > > > > >  static inline int intel_opregion_setup(struct
> > > > > > > > drm_i915_private
> > > > > > > > *dev_priv)
> > > > > > > > @@ -127,6 +129,11 @@ intel_opregion_get_edid(struct
> > > > > > > > intel_connector
> > > > > > > > *connector)
> > > > > > > >  return NULL;
> > > > > > > >  }
> > > > > > > > 
> > > > > > > > +bool intel_opregion_headless_sku(struct
> > > > > > > > drm_i915_private
> > > > > > > > *i915)
> > > > > > > > +{
> > > > > > > > +return false;
> > > > > > > > +}
> > > > > > > > +
> > > > > > > >  #endif /* CONFIG_ACPI */
> > > > > > > > 
> > > > > > > >  #endif


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if headless sku
  2022-06-07 13:05                 ` Hogander, Jouni
@ 2022-06-07 13:26                   ` Souza, Jose
  0 siblings, 0 replies; 17+ messages in thread
From: Souza, Jose @ 2022-06-07 13:26 UTC (permalink / raw)
  To: intel-gfx, Hogander, Jouni, jani.nikula

On Tue, 2022-06-07 at 13:05 +0000, Hogander, Jouni wrote:
> On Tue, 2022-06-07 at 10:36 +0300, Jani Nikula wrote:
> > On Mon, 06 Jun 2022, "Souza, Jose" <jose.souza@intel.com> wrote:
> > > On Mon, 2022-06-06 at 11:16 +0300, Jani Nikula wrote:
> > > > On Mon, 06 Jun 2022, "Hogander, Jouni" <jouni.hogander@intel.com>
> > > > wrote:
> > > > > On Fri, 2022-06-03 at 16:32 +0000, Souza, Jose wrote:
> > > > > > On Fri, 2022-06-03 at 13:14 +0000, Hogander, Jouni wrote:
> > > > > > > On Fri, 2022-06-03 at 15:43 +0300, Jani Nikula wrote:
> > > > > > > > On Fri, 03 Jun 2022, Jouni Högander <
> > > > > > > > jouni.hogander@intel.com>
> > > > > > > > wrote:
> > > > > > > > > Export headless sku bit (bit 13) from opregion->header-
> > > > > > > > > > pcon as
> > > > > > > > > an
> > > > > > > > > interface to check if our device is headless
> > > > > > > > > configuration.
> > > > > > > > > 
> > > > > > > > > Bspec: 53441
> > > > > > > > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com
> > > > > > > > > > 
> > > > > > > > > ---
> > > > > > > > >  drivers/gpu/drm/i915/display/intel_opregion.c | 12
> > > > > > > > > ++++++++++++
> > > > > > > > >  drivers/gpu/drm/i915/display/intel_opregion.h |  7
> > > > > > > > > +++++++
> > > > > > > > >  2 files changed, 19 insertions(+)
> > > > > > > > > 
> > > > > > > > > diff --git
> > > > > > > > > a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > > > b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > > > index f31e8c3f8ce0..eab3f2e6b786 100644
> > > > > > > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > > > @@ -53,6 +53,8 @@
> > > > > > > > >  #define MBOX_ASLE_EXTBIT(4)/* Mailbox #5 */
> > > > > > > > >  #define MBOX_BACKLIGHTBIT(5)/* Mailbox #2
> > > > > > > > > (valid from v3.x) */
> > > > > > > > > 
> > > > > > > > > +#define PCON_HEADLESS_SKUBIT(13)
> > > > > > > > 
> > > > > > > > Here we go again.
> > > > > > > > 
> > > > > > > > What does headless mean here? The spec does not say. Does
> > > > > > > > it have
> > > > > > > > display hardware? Apparently yes, since otherwise we
> > > > > > > > wouldn't be
> > > > > > > > here.
> > > > > > > 
> > > > > > > This is for hybrid setup with several display hw and the
> > > > > > > panel wont
> > > > > > > be
> > > > > > > connected into device driven by i915 driver.
> > > > > > > 
> > > > > > > > We have INTEL_DISPLAY_ENABLED() which should do the right
> > > > > > > > thing
> > > > > > > > when
> > > > > > > > you
> > > > > > > > do have display hardware and have done output setup etc.
> > > > > > > > but want
> > > > > > > > to
> > > > > > > > force them disconnected, i.e. you take the hardware over
> > > > > > > > properly,
> > > > > > > > but
> > > > > > > > put it to sleep for power savings.
> > > > > > > > 
> > > > > > > > Maybe we should bolt this opregion check in that macro?
> > > > > > > > 
> > > > > > > > Maybe we need to use INTEL_DISPLAY_ENABLED() also to
> > > > > > > > prevent
> > > > > > > > polling.
> > > > > > > 
> > > > > > > Thank you for pointing this out. HAS_DISPLAY I already
> > > > > > > notice and
> > > > > > > it's
> > > > > > > not suitable for what we want here. I think bolting this
> > > > > > > check into
> > > > > > > INTEL_DISPLAY_ENABLED as you suggested is enough. That will
> > > > > > > prevent
> > > > > > > waking up the hw into D0 state for polling.
> > > > > > 
> > > > > > A headless sku should not have any DDI ports enabled, much
> > > > > > easier
> > > > > > check for that.
> > > > > 
> > > > > Could you please clarify this a bit? What exactly you are
> > > > > thinking
> > > > > should be checked? Aren't DDI port also disabled when non-
> > > > > headless
> > > > > setup is in runtime suspend?
> > > > 
> > > > I also think "headless" and "DDI ports enabled" need
> > > > clarification. They
> > > > are overloaded terms.
> > > 
> > > In a properly setup headless sku, VBT should have all ports marked
> > > as disabled.
> > 
> > This is what I mean with overloaded terms. Now we're at "properly
> > setup
> > headless sku", and we're none the wiser. ;)
> > 
> > Is the hardware there?

All the display hardware it there but none of the DDI ports are connected to physical(DP, HDMI, TC) ports.
Display can still be used with Wireless Display in Windows and maybe in future with Linux!

> > 
> > If not, okay, but why aren't the pipes fused then? Why a different
> > flag
> > in opregion?
> 
> I understand it as a "master" bit to disable having any display
> connected to this hardware. To my understanding target use for
> operegion headless bit is hybrid graphics setup.
> 
> > 
> > If yes, has the GOP taken over the hardware and put it into power
> > save?

This was not happening in a notebook design that I fixed some issues, i915 it the one that needs to do that.

> > 
> > BR,
> > Jani.
> > 
> > 
> > > intel_ddi_init() {
> > >     ...
> > > 
> > >     if (!init_dp && !init_hdmi) {
> > >             drm_dbg_kms(&dev_priv->drm,
> > >                         "VBT says port %c is not DVI/HDMI/DP
> > > compatible, respect it\n",
> > >                         port_name(port));
> > >             return;
> > >     }
> > > 
> > > 
> > > All DDI should return earlier in the above.
> > > So you can use the number of enabled connectors to know if it is a
> > > headless sku or not.
> > > 
> > > So you can skip the pooling in case there is no connectors.
> > > 
> > > > Seems to me the use case here could be the same as
> > > > INTEL_DISPLAY_ENABLED(), and that could benefit from polling
> > > > disable.
> > > > 
> > > > BR,
> > > > Jani.
> > > > 
> > > > 
> > > > > 
> > > > > > > > I certainly would not want to add another mode that's
> > > > > > > > separate
> > > > > > > > from
> > > > > > > > HAS_DISPLAY() and INTEL_DISPLAY_ENABLED().
> > > > > > > 
> > > > > > > No need for this. I think we can go with
> > > > > > > INTEL_DISPLAY_ENABLED.
> > > > > > > > > +
> > > > > > > > >  struct opregion_header {
> > > > > > > > >  u8 signature[16];
> > > > > > > > >  u32 size;
> > > > > > > > > @@ -1135,6 +1137,16 @@ struct edid
> > > > > > > > > *intel_opregion_get_edid(struct
> > > > > > > > > intel_connector *intel_connector)
> > > > > > > > >  return new_edid;
> > > > > > > > >  }
> > > > > > > > > 
> > > > > > > > > +bool intel_opregion_headless_sku(struct
> > > > > > > > > drm_i915_private
> > > > > > > > > *i915)
> > > > > > > > > +{
> > > > > > > > > +struct intel_opregion *opregion = &i915->opregion;
> > > > > > > > > +
> > > > > > > > > +if (!opregion->header)
> > > > > > > > > +return false;
> > > > > > > > > +
> > > > > > > > > +return opregion->header->pcon & PCON_HEADLESS_SKU;
> > > > > > > > 
> > > > > > > > We should probably start checking for opregion version
> > > > > > > > for this
> > > > > > > > stuff
> > > > > > > > too.
> > > > > > > > 
> > > > > > > 
> > > > > > > Yes, I will do this change.
> > > > > > > 
> > > > > > > > BR,
> > > > > > > > Jani.
> > > > > > > > 
> > > > > > > > > +}
> > > > > > > > > +
> > > > > > > > >  void intel_opregion_register(struct drm_i915_private
> > > > > > > > > *i915)
> > > > > > > > >  {
> > > > > > > > >  struct intel_opregion *opregion = &i915->opregion;
> > > > > > > > > diff --git
> > > > > > > > > a/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > > > > b/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > > > > index 82cc0ba34af7..5ad96e1d8278 100644
> > > > > > > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > > > > @@ -76,6 +76,8 @@ int
> > > > > > > > > intel_opregion_notify_adapter(struct
> > > > > > > > > drm_i915_private *dev_priv,
> > > > > > > > >  int intel_opregion_get_panel_type(struct
> > > > > > > > > drm_i915_private
> > > > > > > > > *dev_priv);
> > > > > > > > >  struct edid *intel_opregion_get_edid(struct
> > > > > > > > > intel_connector
> > > > > > > > > *connector);
> > > > > > > > > 
> > > > > > > > > +bool intel_opregion_headless_sku(struct
> > > > > > > > > drm_i915_private
> > > > > > > > > *i915);
> > > > > > > > > +
> > > > > > > > >  #else /* CONFIG_ACPI*/
> > > > > > > > > 
> > > > > > > > >  static inline int intel_opregion_setup(struct
> > > > > > > > > drm_i915_private
> > > > > > > > > *dev_priv)
> > > > > > > > > @@ -127,6 +129,11 @@ intel_opregion_get_edid(struct
> > > > > > > > > intel_connector
> > > > > > > > > *connector)
> > > > > > > > >  return NULL;
> > > > > > > > >  }
> > > > > > > > > 
> > > > > > > > > +bool intel_opregion_headless_sku(struct
> > > > > > > > > drm_i915_private
> > > > > > > > > *i915)
> > > > > > > > > +{
> > > > > > > > > +return false;
> > > > > > > > > +}
> > > > > > > > > +
> > > > > > > > >  #endif /* CONFIG_ACPI */
> > > > > > > > > 
> > > > > > > > >  #endif
> 


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if headless sku
  2022-06-06 13:15             ` Souza, Jose
  2022-06-07  7:36               ` Jani Nikula
@ 2022-06-08  9:41               ` Hogander, Jouni
  2022-06-10  7:25               ` Hogander, Jouni
  2 siblings, 0 replies; 17+ messages in thread
From: Hogander, Jouni @ 2022-06-08  9:41 UTC (permalink / raw)
  To: intel-gfx, jani.nikula, Souza, Jose

On Mon, 2022-06-06 at 13:15 +0000, Souza, Jose wrote:
> On Mon, 2022-06-06 at 11:16 +0300, Jani Nikula wrote:
> > On Mon, 06 Jun 2022, "Hogander, Jouni" <jouni.hogander@intel.com>
> > wrote:
> > > On Fri, 2022-06-03 at 16:32 +0000, Souza, Jose wrote:
> > > > On Fri, 2022-06-03 at 13:14 +0000, Hogander, Jouni wrote:
> > > > > On Fri, 2022-06-03 at 15:43 +0300, Jani Nikula wrote:
> > > > > > On Fri, 03 Jun 2022, Jouni Högander <
> > > > > > jouni.hogander@intel.com>
> > > > > > wrote:
> > > > > > > Export headless sku bit (bit 13) from opregion->header-
> > > > > > > >pcon as
> > > > > > > an
> > > > > > > interface to check if our device is headless
> > > > > > > configuration.
> > > > > > > 
> > > > > > > Bspec: 53441
> > > > > > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > > > > > > ---
> > > > > > >  drivers/gpu/drm/i915/display/intel_opregion.c | 12
> > > > > > > ++++++++++++
> > > > > > >  drivers/gpu/drm/i915/display/intel_opregion.h |  7
> > > > > > > +++++++
> > > > > > >  2 files changed, 19 insertions(+)
> > > > > > > 
> > > > > > > diff --git
> > > > > > > a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > index f31e8c3f8ce0..eab3f2e6b786 100644
> > > > > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > @@ -53,6 +53,8 @@
> > > > > > >  #define MBOX_ASLE_EXTBIT(4)/* Mailbox #5 */
> > > > > > >  #define MBOX_BACKLIGHTBIT(5)/* Mailbox #2
> > > > > > > (valid from v3.x) */
> > > > > > > 
> > > > > > > +#define PCON_HEADLESS_SKUBIT(13)
> > > > > > 
> > > > > > Here we go again.
> > > > > > 
> > > > > > What does headless mean here? The spec does not say. Does
> > > > > > it have
> > > > > > display hardware? Apparently yes, since otherwise we
> > > > > > wouldn't be
> > > > > > here.
> > > > > 
> > > > > This is for hybrid setup with several display hw and the
> > > > > panel wont
> > > > > be
> > > > > connected into device driven by i915 driver.
> > > > > 
> > > > > > We have INTEL_DISPLAY_ENABLED() which should do the right
> > > > > > thing
> > > > > > when
> > > > > > you
> > > > > > do have display hardware and have done output setup etc.
> > > > > > but want
> > > > > > to
> > > > > > force them disconnected, i.e. you take the hardware over
> > > > > > properly,
> > > > > > but
> > > > > > put it to sleep for power savings.
> > > > > > 
> > > > > > Maybe we should bolt this opregion check in that macro?
> > > > > > 
> > > > > > Maybe we need to use INTEL_DISPLAY_ENABLED() also to
> > > > > > prevent
> > > > > > polling.
> > > > > 
> > > > > Thank you for pointing this out. HAS_DISPLAY I already notice
> > > > > and
> > > > > it's
> > > > > not suitable for what we want here. I think bolting this
> > > > > check into
> > > > > INTEL_DISPLAY_ENABLED as you suggested is enough. That will
> > > > > prevent
> > > > > waking up the hw into D0 state for polling.
> > > > 
> > > > A headless sku should not have any DDI ports enabled, much
> > > > easier
> > > > check for that.
> > > 
> > > Could you please clarify this a bit? What exactly you are
> > > thinking
> > > should be checked? Aren't DDI port also disabled when non-
> > > headless
> > > setup is in runtime suspend?
> > 
> > I also think "headless" and "DDI ports enabled" need clarification.
> > They
> > are overloaded terms.
> 
> In a properly setup headless sku, VBT should have all ports marked as
> disabled.

Should we take into account headless bit in opregion possibly
conflicting with VBT contents?

Now as you pointed out this I started to think
intel_opregion_headless_sku check could be also in here as additional
check:

if (!init_dp && !init_hdmi || intel_opregion_headless_sku()) {

This would prevent initializing any connector including setting them up
for polling?

> 
> intel_ddi_init() {
> ...
> 
> if (!init_dp && !init_hdmi) {
> drm_dbg_kms(&dev_priv->drm,
>     "VBT says port %c is not DVI/HDMI/DP compatible, respect it\n",
>     port_name(port));
> return;
> }
> 
> 
> All DDI should return earlier in the above.
> So you can use the number of enabled connectors to know if it is a
> headless sku or not.
> 
> So you can skip the pooling in case there is no connectors.
> 
> > Seems to me the use case here could be the same as
> > INTEL_DISPLAY_ENABLED(), and that could benefit from polling
> > disable.
> > 
> > BR,
> > Jani.
> > 
> > 
> > > > > > I certainly would not want to add another mode that's
> > > > > > separate
> > > > > > from
> > > > > > HAS_DISPLAY() and INTEL_DISPLAY_ENABLED().
> > > > > 
> > > > > No need for this. I think we can go with
> > > > > INTEL_DISPLAY_ENABLED.
> > > > > > > +
> > > > > > >  struct opregion_header {
> > > > > > >  u8 signature[16];
> > > > > > >  u32 size;
> > > > > > > @@ -1135,6 +1137,16 @@ struct edid
> > > > > > > *intel_opregion_get_edid(struct
> > > > > > > intel_connector *intel_connector)
> > > > > > >  return new_edid;
> > > > > > >  }
> > > > > > > 
> > > > > > > +bool intel_opregion_headless_sku(struct drm_i915_private
> > > > > > > *i915)
> > > > > > > +{
> > > > > > > +struct intel_opregion *opregion = &i915->opregion;
> > > > > > > +
> > > > > > > +if (!opregion->header)
> > > > > > > +return false;
> > > > > > > +
> > > > > > > +return opregion->header->pcon & PCON_HEADLESS_SKU;
> > > > > > 
> > > > > > We should probably start checking for opregion version for
> > > > > > this
> > > > > > stuff
> > > > > > too.
> > > > > > 
> > > > > 
> > > > > Yes, I will do this change.
> > > > > 
> > > > > > BR,
> > > > > > Jani.
> > > > > > 
> > > > > > > +}
> > > > > > > +
> > > > > > >  void intel_opregion_register(struct drm_i915_private
> > > > > > > *i915)
> > > > > > >  {
> > > > > > >  struct intel_opregion *opregion = &i915->opregion;
> > > > > > > diff --git
> > > > > > > a/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > > b/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > > index 82cc0ba34af7..5ad96e1d8278 100644
> > > > > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.h
> > > > > > > @@ -76,6 +76,8 @@ int
> > > > > > > intel_opregion_notify_adapter(struct
> > > > > > > drm_i915_private *dev_priv,
> > > > > > >  int intel_opregion_get_panel_type(struct
> > > > > > > drm_i915_private
> > > > > > > *dev_priv);
> > > > > > >  struct edid *intel_opregion_get_edid(struct
> > > > > > > intel_connector
> > > > > > > *connector);
> > > > > > > 
> > > > > > > +bool intel_opregion_headless_sku(struct drm_i915_private
> > > > > > > *i915);
> > > > > > > +
> > > > > > >  #else /* CONFIG_ACPI*/
> > > > > > > 
> > > > > > >  static inline int intel_opregion_setup(struct
> > > > > > > drm_i915_private
> > > > > > > *dev_priv)
> > > > > > > @@ -127,6 +129,11 @@ intel_opregion_get_edid(struct
> > > > > > > intel_connector
> > > > > > > *connector)
> > > > > > >  return NULL;
> > > > > > >  }
> > > > > > > 
> > > > > > > +bool intel_opregion_headless_sku(struct drm_i915_private
> > > > > > > *i915)
> > > > > > > +{
> > > > > > > +return false;
> > > > > > > +}
> > > > > > > +
> > > > > > >  #endif /* CONFIG_ACPI */
> > > > > > > 
> > > > > > >  #endif


^ permalink raw reply	[flat|nested] 17+ messages in thread

* Re: [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if headless sku
  2022-06-06 13:15             ` Souza, Jose
  2022-06-07  7:36               ` Jani Nikula
  2022-06-08  9:41               ` Hogander, Jouni
@ 2022-06-10  7:25               ` Hogander, Jouni
  2 siblings, 0 replies; 17+ messages in thread
From: Hogander, Jouni @ 2022-06-10  7:25 UTC (permalink / raw)
  To: intel-gfx, jani.nikula, Souza, Jose

On Mon, 2022-06-06 at 13:15 +0000, Souza, Jose wrote:
> On Mon, 2022-06-06 at 11:16 +0300, Jani Nikula wrote:
> > On Mon, 06 Jun 2022, "Hogander, Jouni" <jouni.hogander@intel.com>
> > wrote:
> > > On Fri, 2022-06-03 at 16:32 +0000, Souza, Jose wrote:
> > > > On Fri, 2022-06-03 at 13:14 +0000, Hogander, Jouni wrote:
> > > > > On Fri, 2022-06-03 at 15:43 +0300, Jani Nikula wrote:
> > > > > > On Fri, 03 Jun 2022, Jouni Högander <
> > > > > > jouni.hogander@intel.com>
> > > > > > wrote:
> > > > > > > Export headless sku bit (bit 13) from opregion->header-
> > > > > > > >pcon as
> > > > > > > an
> > > > > > > interface to check if our device is headless
> > > > > > > configuration.
> > > > > > > 
> > > > > > > Bspec: 53441
> > > > > > > Signed-off-by: Jouni Högander <jouni.hogander@intel.com>
> > > > > > > ---
> > > > > > >  drivers/gpu/drm/i915/display/intel_opregion.c | 12
> > > > > > > ++++++++++++
> > > > > > >  drivers/gpu/drm/i915/display/intel_opregion.h |  7
> > > > > > > +++++++
> > > > > > >  2 files changed, 19 insertions(+)
> > > > > > > 
> > > > > > > diff --git
> > > > > > > a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > index f31e8c3f8ce0..eab3f2e6b786 100644
> > > > > > > --- a/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > +++ b/drivers/gpu/drm/i915/display/intel_opregion.c
> > > > > > > @@ -53,6 +53,8 @@
> > > > > > >  #define MBOX_ASLE_EXTBIT(4)/* Mailbox #5 */
> > > > > > >  #define MBOX_BACKLIGHTBIT(5)/* Mailbox #2
> > > > > > > (valid from v3.x) */
> > > > > > > 
> > > > > > > +#define PCON_HEADLESS_SKUBIT(13)
> > > > > > 
> > > > > > Here we go again.
> > > > > > 
> > > > > > What does headless mean here? The spec does not say. Does
> > > > > > it have
> > > > > > display hardware? Apparently yes, since otherwise we
> > > > > > wouldn't be
> > > > > > here.
> > > > > 
> > > > > This is for hybrid setup with several display hw and the
> > > > > panel wont
> > > > > be
> > > > > connected into device driven by i915 driver.
> > > > > 
> > > > > > We have INTEL_DISPLAY_ENABLED() which should do the right
> > > > > > thing
> > > > > > when
> > > > > > you
> > > > > > do have display hardware and have done output setup etc.
> > > > > > but want
> > > > > > to
> > > > > > force them disconnected, i.e. you take the hardware over
> > > > > > properly,
> > > > > > but
> > > > > > put it to sleep for power savings.
> > > > > > 
> > > > > > Maybe we should bolt this opregion check in that macro?
> > > > > > 
> > > > > > Maybe we need to use INTEL_DISPLAY_ENABLED() also to
> > > > > > prevent
> > > > > > polling.
> > > > > 
> > > > > Thank you for pointing this out. HAS_DISPLAY I already notice
> > > > > and
> > > > > it's
> > > > > not suitable for what we want here. I think bolting this
> > > > > check into
> > > > > INTEL_DISPLAY_ENABLED as you suggested is enough. That will
> > > > > prevent
> > > > > waking up the hw into D0 state for polling.
> > > > 
> > > > A headless sku should not have any DDI ports enabled, much
> > > > easier
> > > > check for that.
> > > 
> > > Could you please clarify this a bit? What exactly you are
> > > thinking
> > > should be checked? Aren't DDI port also disabled when non-
> > > headless
> > > setup is in runtime suspend?
> > 
> > I also think "headless" and "DDI ports enabled" need clarification.
> > They
> > are overloaded terms.
> 
> In a properly setup headless sku, VBT should have all ports marked as
> disabled.
> 
> intel_ddi_init() {
> ...
> 
> if (!init_dp && !init_hdmi) {
> drm_dbg_kms(&dev_priv->drm,
>     "VBT says port %c is not DVI/HDMI/DP compatible, respect it\n",
>     port_name(port));
> return;
> }
> 
> 
> All DDI should return earlier in the above.
> So you can use the number of enabled connectors to know if it is a
> headless sku or not.
> 
> So you can skip the pooling in case there is no connectors.

I went through this and to my understanding this polling doesn't happen
in setup where all ports are marked as disabled in VBT. Connector is
not initialized at all -> polling is not enabled when runtime suspend
happens.

BR,

Jouni Högander

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2022-06-10  7:25 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-03 10:14 [Intel-gfx] [PATCH 0/2] Disable connector polling for a headless sku Jouni Högander
2022-06-03 10:14 ` [Intel-gfx] [PATCH 1/2] drm/i915/opregion: add function to check if " Jouni Högander
2022-06-03 12:43   ` Jani Nikula
2022-06-03 13:14     ` Hogander, Jouni
2022-06-03 16:32       ` Souza, Jose
2022-06-06  8:03         ` Hogander, Jouni
2022-06-06  8:16           ` Jani Nikula
2022-06-06 13:15             ` Souza, Jose
2022-06-07  7:36               ` Jani Nikula
2022-06-07 13:05                 ` Hogander, Jouni
2022-06-07 13:26                   ` Souza, Jose
2022-06-08  9:41               ` Hogander, Jouni
2022-06-10  7:25               ` Hogander, Jouni
2022-06-03 10:14 ` [Intel-gfx] [PATCH 2/2] drm/i915: do not start connector polling when " Jouni Högander
2022-06-03 11:01 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for Disable connector polling for a " Patchwork
2022-06-03 13:01 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2022-06-03 15:38 ` [Intel-gfx] ✗ Fi.CI.IGT: failure " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.