* [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
@ 2021-04-26 15:24 ` Kai-Heng Feng
0 siblings, 0 replies; 18+ messages in thread
From: Kai-Heng Feng @ 2021-04-26 15:24 UTC (permalink / raw)
To: jani.nikula, joonas.lahtinen, rodrigo.vivi, ville.syrjala
Cc: Kai-Heng Feng, David Airlie, Daniel Vetter, Takashi Iwai,
Manasi Navare, José Roberto de Souza, Chris Wilson,
Imre Deak, Dave Airlie, Maarten Lankhorst, Karthik B S,
Matt Roper, intel-gfx, open list:DRM DRIVERS, open list
On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
to discrete GFX after S3. This is not desirable, because userspace will
treat connected display as a new one, losing display settings.
The expected behavior is to let discrete GFX drives all external
displays.
The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
The method is inside the another _DSM, so add the _DSM and call it
accordingly.
I also tested some MUX-less and iGPU only laptops with that _DSM, no
regression was found.
v3:
- Remove BXT from names.
- Change the parameter type.
- Fold the function into intel_modeset_init_hw().
v2:
- Forward declare struct pci_dev.
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
drivers/gpu/drm/i915/display/intel_display.c | 2 ++
3 files changed, 23 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
index 833d0c1be4f1..d008d3976261 100644
--- a/drivers/gpu/drm/i915/display/intel_acpi.c
+++ b/drivers/gpu/drm/i915/display/intel_acpi.c
@@ -13,12 +13,17 @@
#include "intel_display_types.h"
#define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
+#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
#define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
static const guid_t intel_dsm_guid =
GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
+static const guid_t intel_dsm_guid2 =
+ GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
+ 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
+
static char *intel_dsm_port_name(u8 id)
{
switch (id) {
@@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
{
}
+void intel_dsm_enable_mux(struct drm_i915_private *i915)
+{
+ struct pci_dev *pdev = i915->drm.pdev;
+ acpi_handle dhandle;
+
+ dhandle = ACPI_HANDLE(&pdev->dev);
+ if (!dhandle)
+ return;
+
+ acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
+ INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
+}
+
/*
* ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
* Attached to the Display Adapter).
diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
index e8b068661d22..def013cf6308 100644
--- a/drivers/gpu/drm/i915/display/intel_acpi.h
+++ b/drivers/gpu/drm/i915/display/intel_acpi.h
@@ -11,11 +11,14 @@ struct drm_i915_private;
#ifdef CONFIG_ACPI
void intel_register_dsm_handler(void);
void intel_unregister_dsm_handler(void);
+void intel_dsm_enable_mux(struct drm_i915_private *i915);
void intel_acpi_device_id_update(struct drm_i915_private *i915);
#else
static inline void intel_register_dsm_handler(void) { return; }
static inline void intel_unregister_dsm_handler(void) { return; }
static inline
+void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
+static inline
void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
#endif /* CONFIG_ACPI */
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index a10e26380ef3..d79dae370b20 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
{
struct intel_cdclk_state *cdclk_state;
+ intel_dsm_enable_mux(i915);
+
if (!HAS_DISPLAY(i915))
return;
--
2.30.2
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
@ 2021-04-26 15:24 ` Kai-Heng Feng
0 siblings, 0 replies; 18+ messages in thread
From: Kai-Heng Feng @ 2021-04-26 15:24 UTC (permalink / raw)
To: jani.nikula, joonas.lahtinen, rodrigo.vivi, ville.syrjala
Cc: David Airlie, Karthik B S, open list, José Roberto de Souza,
Chris Wilson, Manasi Navare, Kai-Heng Feng,
open list:DRM DRIVERS, Dave Airlie, intel-gfx
On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
to discrete GFX after S3. This is not desirable, because userspace will
treat connected display as a new one, losing display settings.
The expected behavior is to let discrete GFX drives all external
displays.
The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
The method is inside the another _DSM, so add the _DSM and call it
accordingly.
I also tested some MUX-less and iGPU only laptops with that _DSM, no
regression was found.
v3:
- Remove BXT from names.
- Change the parameter type.
- Fold the function into intel_modeset_init_hw().
v2:
- Forward declare struct pci_dev.
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
drivers/gpu/drm/i915/display/intel_display.c | 2 ++
3 files changed, 23 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
index 833d0c1be4f1..d008d3976261 100644
--- a/drivers/gpu/drm/i915/display/intel_acpi.c
+++ b/drivers/gpu/drm/i915/display/intel_acpi.c
@@ -13,12 +13,17 @@
#include "intel_display_types.h"
#define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
+#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
#define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
static const guid_t intel_dsm_guid =
GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
+static const guid_t intel_dsm_guid2 =
+ GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
+ 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
+
static char *intel_dsm_port_name(u8 id)
{
switch (id) {
@@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
{
}
+void intel_dsm_enable_mux(struct drm_i915_private *i915)
+{
+ struct pci_dev *pdev = i915->drm.pdev;
+ acpi_handle dhandle;
+
+ dhandle = ACPI_HANDLE(&pdev->dev);
+ if (!dhandle)
+ return;
+
+ acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
+ INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
+}
+
/*
* ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
* Attached to the Display Adapter).
diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
index e8b068661d22..def013cf6308 100644
--- a/drivers/gpu/drm/i915/display/intel_acpi.h
+++ b/drivers/gpu/drm/i915/display/intel_acpi.h
@@ -11,11 +11,14 @@ struct drm_i915_private;
#ifdef CONFIG_ACPI
void intel_register_dsm_handler(void);
void intel_unregister_dsm_handler(void);
+void intel_dsm_enable_mux(struct drm_i915_private *i915);
void intel_acpi_device_id_update(struct drm_i915_private *i915);
#else
static inline void intel_register_dsm_handler(void) { return; }
static inline void intel_unregister_dsm_handler(void) { return; }
static inline
+void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
+static inline
void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
#endif /* CONFIG_ACPI */
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index a10e26380ef3..d79dae370b20 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
{
struct intel_cdclk_state *cdclk_state;
+ intel_dsm_enable_mux(i915);
+
if (!HAS_DISPLAY(i915))
return;
--
2.30.2
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Intel-gfx] [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
@ 2021-04-26 15:24 ` Kai-Heng Feng
0 siblings, 0 replies; 18+ messages in thread
From: Kai-Heng Feng @ 2021-04-26 15:24 UTC (permalink / raw)
To: jani.nikula, joonas.lahtinen, rodrigo.vivi, ville.syrjala
Cc: David Airlie, open list, Chris Wilson, Takashi Iwai,
Kai-Heng Feng, open list:DRM DRIVERS, Dave Airlie, intel-gfx
On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
to discrete GFX after S3. This is not desirable, because userspace will
treat connected display as a new one, losing display settings.
The expected behavior is to let discrete GFX drives all external
displays.
The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
The method is inside the another _DSM, so add the _DSM and call it
accordingly.
I also tested some MUX-less and iGPU only laptops with that _DSM, no
regression was found.
v3:
- Remove BXT from names.
- Change the parameter type.
- Fold the function into intel_modeset_init_hw().
v2:
- Forward declare struct pci_dev.
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
drivers/gpu/drm/i915/display/intel_display.c | 2 ++
3 files changed, 23 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
index 833d0c1be4f1..d008d3976261 100644
--- a/drivers/gpu/drm/i915/display/intel_acpi.c
+++ b/drivers/gpu/drm/i915/display/intel_acpi.c
@@ -13,12 +13,17 @@
#include "intel_display_types.h"
#define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
+#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
#define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
static const guid_t intel_dsm_guid =
GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
+static const guid_t intel_dsm_guid2 =
+ GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
+ 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
+
static char *intel_dsm_port_name(u8 id)
{
switch (id) {
@@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
{
}
+void intel_dsm_enable_mux(struct drm_i915_private *i915)
+{
+ struct pci_dev *pdev = i915->drm.pdev;
+ acpi_handle dhandle;
+
+ dhandle = ACPI_HANDLE(&pdev->dev);
+ if (!dhandle)
+ return;
+
+ acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
+ INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
+}
+
/*
* ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
* Attached to the Display Adapter).
diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
index e8b068661d22..def013cf6308 100644
--- a/drivers/gpu/drm/i915/display/intel_acpi.h
+++ b/drivers/gpu/drm/i915/display/intel_acpi.h
@@ -11,11 +11,14 @@ struct drm_i915_private;
#ifdef CONFIG_ACPI
void intel_register_dsm_handler(void);
void intel_unregister_dsm_handler(void);
+void intel_dsm_enable_mux(struct drm_i915_private *i915);
void intel_acpi_device_id_update(struct drm_i915_private *i915);
#else
static inline void intel_register_dsm_handler(void) { return; }
static inline void intel_unregister_dsm_handler(void) { return; }
static inline
+void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
+static inline
void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
#endif /* CONFIG_ACPI */
diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
index a10e26380ef3..d79dae370b20 100644
--- a/drivers/gpu/drm/i915/display/intel_display.c
+++ b/drivers/gpu/drm/i915/display/intel_display.c
@@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
{
struct intel_cdclk_state *cdclk_state;
+ intel_dsm_enable_mux(i915);
+
if (!HAS_DISPLAY(i915))
return;
--
2.30.2
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
2021-04-26 15:24 ` Kai-Heng Feng
(?)
(?)
@ 2021-04-26 19:22 ` Patchwork
-1 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2021-04-26 19:22 UTC (permalink / raw)
To: Kai-Heng Feng; +Cc: intel-gfx
== Series Details ==
Series: drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
URL : https://patchwork.freedesktop.org/series/89503/
State : warning
== Summary ==
$ dim checkpatch origin/drm-tip
16d0229a8c52 drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
-:30: WARNING:COMMIT_LOG_LONG_LINE: Possible unwrapped commit description (prefer a maximum 75 chars per line)
#30:
References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
total: 0 errors, 1 warnings, 0 checks, 58 lines checked
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
2021-04-26 15:24 ` Kai-Heng Feng
` (2 preceding siblings ...)
(?)
@ 2021-04-26 19:53 ` Patchwork
-1 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2021-04-26 19:53 UTC (permalink / raw)
To: Kai-Heng Feng; +Cc: intel-gfx
[-- Attachment #1.1: Type: text/plain, Size: 2983 bytes --]
== Series Details ==
Series: drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
URL : https://patchwork.freedesktop.org/series/89503/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_10011 -> Patchwork_19994
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/index.html
Known issues
------------
Here are the changes found in Patchwork_19994 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@amdgpu/amd_basic@query-info:
- fi-bsw-kefka: NOTRUN -> [SKIP][1] ([fdo#109271]) +17 similar issues
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/fi-bsw-kefka/igt@amdgpu/amd_basic@query-info.html
* igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic:
- fi-kbl-soraka: [PASS][2] -> [DMESG-WARN][3] ([i915#1982])
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/fi-kbl-soraka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/fi-kbl-soraka/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-atomic.html
#### Possible fixes ####
* igt@i915_selftest@live@execlists:
- fi-bsw-kefka: [INCOMPLETE][4] ([i915#2782] / [i915#2940]) -> [PASS][5]
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/fi-bsw-kefka/igt@i915_selftest@live@execlists.html
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/fi-bsw-kefka/igt@i915_selftest@live@execlists.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
[i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
[i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
[i915#2782]: https://gitlab.freedesktop.org/drm/intel/issues/2782
[i915#2940]: https://gitlab.freedesktop.org/drm/intel/issues/2940
[i915#3180]: https://gitlab.freedesktop.org/drm/intel/issues/3180
[i915#3303]: https://gitlab.freedesktop.org/drm/intel/issues/3303
Participating hosts (40 -> 38)
------------------------------
Missing (2): fi-bsw-cyan fi-bdw-samus
Build changes
-------------
* Linux: CI_DRM_10011 -> Patchwork_19994
CI-20190529: 20190529
CI_DRM_10011: 7e185a8c4fb2230187a8637e3885be57123cb7eb @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_6075: ccf602c569257291045415ff504a6d2460986c28 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
Patchwork_19994: 16d0229a8c5231354f4a26702ceaa9a2367843e7 @ git://anongit.freedesktop.org/gfx-ci/linux
== Linux commits ==
16d0229a8c52 drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/index.html
[-- Attachment #1.2: Type: text/html, Size: 3440 bytes --]
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Intel-gfx] ✓ Fi.CI.IGT: success for drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
2021-04-26 15:24 ` Kai-Heng Feng
` (3 preceding siblings ...)
(?)
@ 2021-04-27 4:10 ` Patchwork
-1 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2021-04-27 4:10 UTC (permalink / raw)
To: Kai-Heng Feng; +Cc: intel-gfx
[-- Attachment #1.1: Type: text/plain, Size: 30289 bytes --]
== Series Details ==
Series: drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
URL : https://patchwork.freedesktop.org/series/89503/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_10011_full -> Patchwork_19994_full
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Known issues
------------
Here are the changes found in Patchwork_19994_full that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@gem_ctx_exec@basic-close-race:
- shard-iclb: [PASS][1] -> [INCOMPLETE][2] ([i915#1895])
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb3/igt@gem_ctx_exec@basic-close-race.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb2/igt@gem_ctx_exec@basic-close-race.html
* igt@gem_ctx_persistence@legacy-engines-queued:
- shard-snb: NOTRUN -> [SKIP][3] ([fdo#109271] / [i915#1099]) +2 similar issues
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-snb2/igt@gem_ctx_persistence@legacy-engines-queued.html
* igt@gem_ctx_ringsize@idle@bcs0:
- shard-skl: NOTRUN -> [INCOMPLETE][4] ([i915#3316])
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl1/igt@gem_ctx_ringsize@idle@bcs0.html
* igt@gem_eio@unwedge-stress:
- shard-tglb: [PASS][5] -> [TIMEOUT][6] ([i915#2369] / [i915#3063])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-tglb5/igt@gem_eio@unwedge-stress.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-tglb5/igt@gem_eio@unwedge-stress.html
* igt@gem_exec_fair@basic-flow@rcs0:
- shard-skl: NOTRUN -> [SKIP][7] ([fdo#109271]) +87 similar issues
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl1/igt@gem_exec_fair@basic-flow@rcs0.html
* igt@gem_exec_fair@basic-none@vcs0:
- shard-apl: [PASS][8] -> [FAIL][9] ([i915#2842]) +1 similar issue
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-apl8/igt@gem_exec_fair@basic-none@vcs0.html
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl8/igt@gem_exec_fair@basic-none@vcs0.html
* igt@gem_exec_fair@basic-pace@vcs1:
- shard-kbl: [PASS][10] -> [SKIP][11] ([fdo#109271])
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl1/igt@gem_exec_fair@basic-pace@vcs1.html
[11]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl1/igt@gem_exec_fair@basic-pace@vcs1.html
* igt@gem_exec_fair@basic-throttle@rcs0:
- shard-iclb: [PASS][12] -> [FAIL][13] ([i915#2849])
[12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb2/igt@gem_exec_fair@basic-throttle@rcs0.html
[13]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb4/igt@gem_exec_fair@basic-throttle@rcs0.html
* igt@gem_exec_reloc@basic-wide-active@vcs1:
- shard-iclb: NOTRUN -> [FAIL][14] ([i915#2389])
[14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb2/igt@gem_exec_reloc@basic-wide-active@vcs1.html
* igt@gem_mmap_gtt@cpuset-medium-copy:
- shard-iclb: [PASS][15] -> [FAIL][16] ([i915#307])
[15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb8/igt@gem_mmap_gtt@cpuset-medium-copy.html
[16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb6/igt@gem_mmap_gtt@cpuset-medium-copy.html
* igt@gem_pwrite@basic-exhaustion:
- shard-kbl: NOTRUN -> [WARN][17] ([i915#2658])
[17]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl4/igt@gem_pwrite@basic-exhaustion.html
* igt@gem_render_copy@x-tiled-to-vebox-yf-tiled:
- shard-kbl: NOTRUN -> [SKIP][18] ([fdo#109271]) +81 similar issues
[18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl3/igt@gem_render_copy@x-tiled-to-vebox-yf-tiled.html
* igt@gem_userptr_blits@set-cache-level:
- shard-snb: NOTRUN -> [FAIL][19] ([i915#3324])
[19]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-snb2/igt@gem_userptr_blits@set-cache-level.html
* igt@gem_userptr_blits@vma-merge:
- shard-apl: NOTRUN -> [FAIL][20] ([i915#3318])
[20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl8/igt@gem_userptr_blits@vma-merge.html
* igt@gem_workarounds@suspend-resume:
- shard-kbl: NOTRUN -> [DMESG-WARN][21] ([i915#180])
[21]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl3/igt@gem_workarounds@suspend-resume.html
* igt@gen9_exec_parse@batch-invalid-length:
- shard-snb: NOTRUN -> [SKIP][22] ([fdo#109271]) +193 similar issues
[22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-snb2/igt@gen9_exec_parse@batch-invalid-length.html
* igt@i915_pm_dc@dc6-psr:
- shard-skl: NOTRUN -> [FAIL][23] ([i915#454])
[23]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl1/igt@i915_pm_dc@dc6-psr.html
* igt@i915_suspend@forcewake:
- shard-kbl: [PASS][24] -> [INCOMPLETE][25] ([i915#636])
[24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl6/igt@i915_suspend@forcewake.html
[25]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl3/igt@i915_suspend@forcewake.html
* igt@kms_chamelium@hdmi-hpd-storm-disable:
- shard-skl: NOTRUN -> [SKIP][26] ([fdo#109271] / [fdo#111827]) +6 similar issues
[26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl1/igt@kms_chamelium@hdmi-hpd-storm-disable.html
* igt@kms_chamelium@hdmi-mode-timings:
- shard-snb: NOTRUN -> [SKIP][27] ([fdo#109271] / [fdo#111827]) +11 similar issues
[27]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-snb2/igt@kms_chamelium@hdmi-mode-timings.html
* igt@kms_chamelium@vga-hpd-for-each-pipe:
- shard-kbl: NOTRUN -> [SKIP][28] ([fdo#109271] / [fdo#111827]) +9 similar issues
[28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl3/igt@kms_chamelium@vga-hpd-for-each-pipe.html
* igt@kms_color_chamelium@pipe-a-ctm-limited-range:
- shard-apl: NOTRUN -> [SKIP][29] ([fdo#109271] / [fdo#111827]) +17 similar issues
[29]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl7/igt@kms_color_chamelium@pipe-a-ctm-limited-range.html
* igt@kms_content_protection@lic:
- shard-apl: NOTRUN -> [TIMEOUT][30] ([i915#1319]) +1 similar issue
[30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl8/igt@kms_content_protection@lic.html
* igt@kms_content_protection@uevent:
- shard-apl: NOTRUN -> [FAIL][31] ([i915#2105])
[31]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl7/igt@kms_content_protection@uevent.html
* igt@kms_cursor_crc@pipe-c-cursor-128x42-offscreen:
- shard-skl: NOTRUN -> [FAIL][32] ([i915#54])
[32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl8/igt@kms_cursor_crc@pipe-c-cursor-128x42-offscreen.html
* igt@kms_fbcon_fbt@fbc-suspend:
- shard-kbl: [PASS][33] -> [INCOMPLETE][34] ([i915#155] / [i915#180] / [i915#636])
[33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl2/igt@kms_fbcon_fbt@fbc-suspend.html
[34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl7/igt@kms_fbcon_fbt@fbc-suspend.html
* igt@kms_flip@flip-vs-suspend-interruptible@a-dp1:
- shard-kbl: [PASS][35] -> [DMESG-WARN][36] ([i915#180]) +7 similar issues
[35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl2/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html
[36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl4/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html
* igt@kms_flip@plain-flip-fb-recreate-interruptible@c-edp1:
- shard-skl: [PASS][37] -> [FAIL][38] ([i915#2122])
[37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl10/igt@kms_flip@plain-flip-fb-recreate-interruptible@c-edp1.html
[38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl2/igt@kms_flip@plain-flip-fb-recreate-interruptible@c-edp1.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render:
- shard-iclb: [PASS][39] -> [FAIL][40] ([i915#49])
[39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb2/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render.html
[40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb7/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-pri-shrfb-draw-render.html
* igt@kms_pipe_crc_basic@hang-read-crc-pipe-d:
- shard-apl: NOTRUN -> [SKIP][41] ([fdo#109271] / [i915#533])
[41]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl3/igt@kms_pipe_crc_basic@hang-read-crc-pipe-d.html
* igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:
- shard-kbl: [PASS][42] -> [DMESG-WARN][43] ([i915#180] / [i915#533])
[42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl7/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes.html
[43]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl7/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes.html
* igt@kms_plane_alpha_blend@pipe-a-alpha-opaque-fb:
- shard-skl: NOTRUN -> [FAIL][44] ([fdo#108145] / [i915#265]) +1 similar issue
[44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl1/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][45] ([i915#265])
[45]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl1/igt@kms_plane_alpha_blend@pipe-a-alpha-transparent-fb.html
* igt@kms_plane_alpha_blend@pipe-c-alpha-basic:
- shard-apl: NOTRUN -> [FAIL][46] ([fdo#108145] / [i915#265]) +2 similar issues
[46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl7/igt@kms_plane_alpha_blend@pipe-c-alpha-basic.html
* igt@kms_plane_scaling@scaler-with-clipping-clamping@pipe-c-scaler-with-clipping-clamping:
- shard-skl: NOTRUN -> [SKIP][47] ([fdo#109271] / [i915#2733])
[47]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl1/igt@kms_plane_scaling@scaler-with-clipping-clamping@pipe-c-scaler-with-clipping-clamping.html
* igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area-5:
- shard-apl: NOTRUN -> [SKIP][48] ([fdo#109271] / [i915#658]) +2 similar issues
[48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl7/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area-5.html
* igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area-3:
- shard-kbl: NOTRUN -> [SKIP][49] ([fdo#109271] / [i915#658]) +1 similar issue
[49]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl4/igt@kms_psr2_sf@overlay-primary-update-sf-dmg-area-3.html
* igt@kms_psr2_sf@plane-move-sf-dmg-area-3:
- shard-skl: NOTRUN -> [SKIP][50] ([fdo#109271] / [i915#658])
[50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl1/igt@kms_psr2_sf@plane-move-sf-dmg-area-3.html
* igt@kms_psr@psr2_suspend:
- shard-iclb: [PASS][51] -> [SKIP][52] ([fdo#109441]) +2 similar issues
[51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb2/igt@kms_psr@psr2_suspend.html
[52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb4/igt@kms_psr@psr2_suspend.html
* igt@kms_sysfs_edid_timing:
- shard-apl: NOTRUN -> [FAIL][53] ([IGT#2])
[53]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl7/igt@kms_sysfs_edid_timing.html
* igt@kms_vblank@pipe-d-wait-idle:
- shard-kbl: NOTRUN -> [SKIP][54] ([fdo#109271] / [i915#533]) +1 similar issue
[54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl1/igt@kms_vblank@pipe-d-wait-idle.html
- shard-skl: NOTRUN -> [SKIP][55] ([fdo#109271] / [i915#533])
[55]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl1/igt@kms_vblank@pipe-d-wait-idle.html
* igt@kms_writeback@writeback-check-output:
- shard-apl: NOTRUN -> [SKIP][56] ([fdo#109271] / [i915#2437])
[56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl3/igt@kms_writeback@writeback-check-output.html
* igt@kms_writeback@writeback-fb-id:
- shard-skl: NOTRUN -> [SKIP][57] ([fdo#109271] / [i915#2437])
[57]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl1/igt@kms_writeback@writeback-fb-id.html
* igt@prime_nv_api@i915_nv_reimport_twice_check_flink_name:
- shard-apl: NOTRUN -> [SKIP][58] ([fdo#109271]) +188 similar issues
[58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl7/igt@prime_nv_api@i915_nv_reimport_twice_check_flink_name.html
* igt@sysfs_clients@fair-0:
- shard-apl: NOTRUN -> [SKIP][59] ([fdo#109271] / [i915#2994]) +2 similar issues
[59]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl7/igt@sysfs_clients@fair-0.html
* igt@sysfs_clients@fair-1:
- shard-kbl: NOTRUN -> [SKIP][60] ([fdo#109271] / [i915#2994])
[60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl1/igt@sysfs_clients@fair-1.html
* igt@sysfs_clients@pidname:
- shard-skl: NOTRUN -> [SKIP][61] ([fdo#109271] / [i915#2994]) +1 similar issue
[61]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl1/igt@sysfs_clients@pidname.html
* igt@sysfs_heartbeat_interval@mixed@vecs0:
- shard-skl: [PASS][62] -> [FAIL][63] ([i915#1731])
[62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl4/igt@sysfs_heartbeat_interval@mixed@vecs0.html
[63]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl9/igt@sysfs_heartbeat_interval@mixed@vecs0.html
* igt@sysfs_timeslice_duration@timeout@vcs0:
- shard-skl: [PASS][64] -> [FAIL][65] ([i915#3259])
[64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl4/igt@sysfs_timeslice_duration@timeout@vcs0.html
[65]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl7/igt@sysfs_timeslice_duration@timeout@vcs0.html
#### Possible fixes ####
* igt@gem_create@create-clear:
- shard-glk: [FAIL][66] ([i915#1888] / [i915#3160]) -> [PASS][67]
[66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-glk3/igt@gem_create@create-clear.html
[67]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-glk7/igt@gem_create@create-clear.html
* igt@gem_ctx_persistence@many-contexts:
- shard-tglb: [FAIL][68] ([i915#2410]) -> [PASS][69]
[68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-tglb1/igt@gem_ctx_persistence@many-contexts.html
[69]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-tglb2/igt@gem_ctx_persistence@many-contexts.html
* igt@gem_ctx_ringsize@active@bcs0:
- shard-skl: [INCOMPLETE][70] ([i915#3316]) -> [PASS][71]
[70]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl4/igt@gem_ctx_ringsize@active@bcs0.html
[71]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl9/igt@gem_ctx_ringsize@active@bcs0.html
* igt@gem_exec_fair@basic-deadline:
- shard-kbl: [FAIL][72] ([i915#2846]) -> [PASS][73]
[72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl4/igt@gem_exec_fair@basic-deadline.html
[73]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl1/igt@gem_exec_fair@basic-deadline.html
- shard-glk: [FAIL][74] ([i915#2846]) -> [PASS][75]
[74]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-glk2/igt@gem_exec_fair@basic-deadline.html
[75]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-glk3/igt@gem_exec_fair@basic-deadline.html
* igt@gem_exec_fair@basic-none@vcs0:
- shard-kbl: [FAIL][76] ([i915#2842]) -> [PASS][77] +1 similar issue
[76]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl4/igt@gem_exec_fair@basic-none@vcs0.html
[77]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl1/igt@gem_exec_fair@basic-none@vcs0.html
* igt@gem_exec_fair@basic-pace@rcs0:
- shard-kbl: [SKIP][78] ([fdo#109271]) -> [PASS][79] +1 similar issue
[78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl1/igt@gem_exec_fair@basic-pace@rcs0.html
[79]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl1/igt@gem_exec_fair@basic-pace@rcs0.html
- shard-tglb: [FAIL][80] ([i915#2842]) -> [PASS][81]
[80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-tglb1/igt@gem_exec_fair@basic-pace@rcs0.html
[81]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-tglb2/igt@gem_exec_fair@basic-pace@rcs0.html
* igt@gem_exec_whisper@basic-normal-all:
- shard-glk: [DMESG-WARN][82] ([i915#118] / [i915#95]) -> [PASS][83]
[82]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-glk4/igt@gem_exec_whisper@basic-normal-all.html
[83]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-glk1/igt@gem_exec_whisper@basic-normal-all.html
* igt@gem_mmap_gtt@cpuset-big-copy:
- shard-iclb: [FAIL][84] ([i915#307]) -> [PASS][85]
[84]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb7/igt@gem_mmap_gtt@cpuset-big-copy.html
[85]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb4/igt@gem_mmap_gtt@cpuset-big-copy.html
* igt@gem_mmap_gtt@cpuset-big-copy-odd:
- shard-iclb: [FAIL][86] ([i915#2428]) -> [PASS][87]
[86]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb3/igt@gem_mmap_gtt@cpuset-big-copy-odd.html
[87]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb3/igt@gem_mmap_gtt@cpuset-big-copy-odd.html
* igt@i915_selftest@mock@requests:
- shard-skl: [INCOMPLETE][88] ([i915#198]) -> [PASS][89]
[88]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl6/igt@i915_selftest@mock@requests.html
[89]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl8/igt@i915_selftest@mock@requests.html
* igt@i915_suspend@fence-restore-tiled2untiled:
- shard-glk: [FAIL][90] -> [PASS][91]
[90]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-glk3/igt@i915_suspend@fence-restore-tiled2untiled.html
[91]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-glk6/igt@i915_suspend@fence-restore-tiled2untiled.html
* igt@kms_cursor_crc@pipe-c-cursor-suspend:
- shard-kbl: [DMESG-WARN][92] ([i915#180]) -> [PASS][93] +5 similar issues
[92]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl4/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
[93]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl6/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-skl: [FAIL][94] ([i915#2346]) -> [PASS][95] +2 similar issues
[94]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl6/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[95]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl9/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1:
- shard-skl: [FAIL][96] ([i915#2122]) -> [PASS][97]
[96]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl7/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
[97]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl6/igt@kms_flip@flip-vs-expired-vblank-interruptible@b-edp1.html
* igt@kms_flip@flip-vs-suspend-interruptible@a-edp1:
- shard-skl: [DMESG-WARN][98] ([i915#1982]) -> [PASS][99]
[98]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl4/igt@kms_flip@flip-vs-suspend-interruptible@a-edp1.html
[99]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl6/igt@kms_flip@flip-vs-suspend-interruptible@a-edp1.html
* igt@kms_hdr@bpc-switch-dpms:
- shard-skl: [FAIL][100] ([i915#1188]) -> [PASS][101] +1 similar issue
[100]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl1/igt@kms_hdr@bpc-switch-dpms.html
[101]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl4/igt@kms_hdr@bpc-switch-dpms.html
* igt@kms_psr@psr2_sprite_plane_move:
- shard-iclb: [SKIP][102] ([fdo#109441]) -> [PASS][103] +2 similar issues
[102]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb3/igt@kms_psr@psr2_sprite_plane_move.html
[103]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html
* igt@perf@polling-parameterized:
- shard-iclb: [FAIL][104] ([i915#1542]) -> [PASS][105]
[104]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb5/igt@perf@polling-parameterized.html
[105]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb2/igt@perf@polling-parameterized.html
#### Warnings ####
* igt@i915_pm_rc6_residency@rc6-fence:
- shard-iclb: [WARN][106] ([i915#2681] / [i915#2684]) -> [WARN][107] ([i915#1804] / [i915#2684])
[106]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb1/igt@i915_pm_rc6_residency@rc6-fence.html
[107]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb3/igt@i915_pm_rc6_residency@rc6-fence.html
* igt@i915_pm_rc6_residency@rc6-idle:
- shard-iclb: [WARN][108] ([i915#2684]) -> [WARN][109] ([i915#1804] / [i915#2684])
[108]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb2/igt@i915_pm_rc6_residency@rc6-idle.html
[109]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb7/igt@i915_pm_rc6_residency@rc6-idle.html
* igt@kms_dp_dsc@basic-dsc-enable-edp:
- shard-iclb: [DMESG-WARN][110] ([i915#1226]) -> [SKIP][111] ([fdo#109349])
[110]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb2/igt@kms_dp_dsc@basic-dsc-enable-edp.html
[111]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb7/igt@kms_dp_dsc@basic-dsc-enable-edp.html
* igt@kms_psr2_sf@cursor-plane-update-sf:
- shard-iclb: [SKIP][112] ([i915#2920]) -> [SKIP][113] ([i915#658]) +2 similar issues
[112]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb2/igt@kms_psr2_sf@cursor-plane-update-sf.html
[113]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb4/igt@kms_psr2_sf@cursor-plane-update-sf.html
* igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area-1:
- shard-iclb: [SKIP][114] ([i915#658]) -> [SKIP][115] ([i915#2920]) +2 similar issues
[114]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-iclb3/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area-1.html
[115]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-iclb2/igt@kms_psr2_sf@overlay-plane-update-sf-dmg-area-1.html
* igt@runner@aborted:
- shard-kbl: ([FAIL][116], [FAIL][117], [FAIL][118], [FAIL][119], [FAIL][120], [FAIL][121], [FAIL][122], [FAIL][123], [FAIL][124], [FAIL][125]) ([i915#1436] / [i915#180] / [i915#1814] / [i915#2292] / [i915#3002] / [i915#602]) -> ([FAIL][126], [FAIL][127], [FAIL][128], [FAIL][129], [FAIL][130], [FAIL][131], [FAIL][132], [FAIL][133], [FAIL][134], [FAIL][135], [FAIL][136], [FAIL][137], [FAIL][138]) ([i915#1436] / [i915#180] / [i915#1814] / [i915#3002] / [i915#92])
[116]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl7/igt@runner@aborted.html
[117]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl3/igt@runner@aborted.html
[118]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl3/igt@runner@aborted.html
[119]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl3/igt@runner@aborted.html
[120]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl7/igt@runner@aborted.html
[121]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl4/igt@runner@aborted.html
[122]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl3/igt@runner@aborted.html
[123]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl7/igt@runner@aborted.html
[124]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl1/igt@runner@aborted.html
[125]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-kbl7/igt@runner@aborted.html
[126]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl3/igt@runner@aborted.html
[127]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl4/igt@runner@aborted.html
[128]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl4/igt@runner@aborted.html
[129]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl4/igt@runner@aborted.html
[130]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl3/igt@runner@aborted.html
[131]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl1/igt@runner@aborted.html
[132]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl7/igt@runner@aborted.html
[133]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl4/igt@runner@aborted.html
[134]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl7/igt@runner@aborted.html
[135]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl2/igt@runner@aborted.html
[136]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl7/igt@runner@aborted.html
[137]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl3/igt@runner@aborted.html
[138]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-kbl7/igt@runner@aborted.html
- shard-apl: ([FAIL][139], [FAIL][140], [FAIL][141]) ([i915#1814] / [i915#3002]) -> ([FAIL][142], [FAIL][143]) ([i915#3002])
[139]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-apl6/igt@runner@aborted.html
[140]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-apl2/igt@runner@aborted.html
[141]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-apl8/igt@runner@aborted.html
[142]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl2/igt@runner@aborted.html
[143]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-apl1/igt@runner@aborted.html
- shard-skl: ([FAIL][144], [FAIL][145], [FAIL][146], [FAIL][147], [FAIL][148], [FAIL][149]) ([i915#1436] / [i915#1814] / [i915#2029] / [i915#2722] / [i915#3002]) -> ([FAIL][150], [FAIL][151], [FAIL][152]) ([i915#2029] / [i915#3002])
[144]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl2/igt@runner@aborted.html
[145]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl2/igt@runner@aborted.html
[146]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl6/igt@runner@aborted.html
[147]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl2/igt@runner@aborted.html
[148]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl9/igt@runner@aborted.html
[149]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10011/shard-skl2/igt@runner@aborted.html
[150]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl1/igt@runner@aborted.html
[151]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl9/igt@runner@aborted.html
[152]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/shard-skl2/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).
[IGT#2]: https://gitlab.freedesktop.org/drm/igt-gpu-tools/issues/2
[fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
[fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
[fdo#109349]: https://bugs.freedesktop.org/show_bug.cgi?id=109349
[fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441
[fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
[i915#1099]: https://gitlab.freedesktop.org/drm/intel/issues/1099
[i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118
[i915#1188]: https://gitlab.freedesktop.org/drm/intel/issues/1188
[i915#1226]: https://gitlab.freedesktop.org/drm/intel/issues/1226
[i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319
[i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436
[i915#1542]: https://gitlab.freedesktop.org/drm/intel/issues/1542
[i915#155]: https://gitlab.freedesktop.org/drm/intel/issues/155
[i915#1731]: https://gitlab.freedesktop.org/drm/intel/issues/1731
[i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
[i915#1804]: https://gitlab.freedesktop.org/drm/intel/issues/1804
[i915#1814]: https://gitlab.freedesktop.org/drm/intel/issues/1814
[i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888
[i915#1895]: https://gitlab.freedesktop.org/drm/intel/issues/1895
[i915#198]: https://gitlab.freedesktop.org/drm/intel/issues/198
[i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
[i915#2029]: https://gitlab.freedesktop.org/drm/intel/issues/2029
[i915#2105]: https://gitlab.freedesktop.org/drm/intel/issues/2105
[i915#2122]: https://gitlab.freedesktop.org/drm/intel/issues/2122
[i915#2292]: https://gitlab.freedesktop.org/drm/intel/issues/2292
[i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
[i915#2369]: https://gitlab.freedesktop.org/drm/intel/issues/2369
[i915#2389]: https://gitlab.freedesktop.org/drm/intel/issues/2389
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_19994/index.html
[-- Attachment #1.2: Type: text/html, Size: 35963 bytes --]
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
2021-04-26 15:24 ` Kai-Heng Feng
(?)
@ 2021-05-11 3:33 ` Kai-Heng Feng
-1 siblings, 0 replies; 18+ messages in thread
From: Kai-Heng Feng @ 2021-05-11 3:33 UTC (permalink / raw)
To: Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Ville Syrjälä
Cc: David Airlie, Daniel Vetter, Takashi Iwai, Manasi Navare,
José Roberto de Souza, Chris Wilson, Imre Deak, Dave Airlie,
Maarten Lankhorst, Karthik B S, Matt Roper, intel-gfx,
open list:DRM DRIVERS, open list
On Mon, Apr 26, 2021 at 11:24 PM Kai-Heng Feng
<kai.heng.feng@canonical.com> wrote:
>
> On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
> to discrete GFX after S3. This is not desirable, because userspace will
> treat connected display as a new one, losing display settings.
>
> The expected behavior is to let discrete GFX drives all external
> displays.
>
> The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
> The method is inside the another _DSM, so add the _DSM and call it
> accordingly.
>
> I also tested some MUX-less and iGPU only laptops with that _DSM, no
> regression was found.
>
> v3:
> - Remove BXT from names.
> - Change the parameter type.
> - Fold the function into intel_modeset_init_hw().
>
> v2:
> - Forward declare struct pci_dev.
>
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
> References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
A gentle ping...
> ---
> drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
> drivers/gpu/drm/i915/display/intel_display.c | 2 ++
> 3 files changed, 23 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
> index 833d0c1be4f1..d008d3976261 100644
> --- a/drivers/gpu/drm/i915/display/intel_acpi.c
> +++ b/drivers/gpu/drm/i915/display/intel_acpi.c
> @@ -13,12 +13,17 @@
> #include "intel_display_types.h"
>
> #define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
> +#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
> #define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
>
> static const guid_t intel_dsm_guid =
> GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
> 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
>
> +static const guid_t intel_dsm_guid2 =
> + GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
> + 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
> +
> static char *intel_dsm_port_name(u8 id)
> {
> switch (id) {
> @@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
> {
> }
>
> +void intel_dsm_enable_mux(struct drm_i915_private *i915)
> +{
> + struct pci_dev *pdev = i915->drm.pdev;
> + acpi_handle dhandle;
> +
> + dhandle = ACPI_HANDLE(&pdev->dev);
> + if (!dhandle)
> + return;
> +
> + acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
> + INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
> +}
> +
> /*
> * ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
> * Attached to the Display Adapter).
> diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
> index e8b068661d22..def013cf6308 100644
> --- a/drivers/gpu/drm/i915/display/intel_acpi.h
> +++ b/drivers/gpu/drm/i915/display/intel_acpi.h
> @@ -11,11 +11,14 @@ struct drm_i915_private;
> #ifdef CONFIG_ACPI
> void intel_register_dsm_handler(void);
> void intel_unregister_dsm_handler(void);
> +void intel_dsm_enable_mux(struct drm_i915_private *i915);
> void intel_acpi_device_id_update(struct drm_i915_private *i915);
> #else
> static inline void intel_register_dsm_handler(void) { return; }
> static inline void intel_unregister_dsm_handler(void) { return; }
> static inline
> +void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
> +static inline
> void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
> #endif /* CONFIG_ACPI */
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index a10e26380ef3..d79dae370b20 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
> {
> struct intel_cdclk_state *cdclk_state;
>
> + intel_dsm_enable_mux(i915);
> +
> if (!HAS_DISPLAY(i915))
> return;
>
> --
> 2.30.2
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
@ 2021-05-11 3:33 ` Kai-Heng Feng
0 siblings, 0 replies; 18+ messages in thread
From: Kai-Heng Feng @ 2021-05-11 3:33 UTC (permalink / raw)
To: Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Ville Syrjälä
Cc: David Airlie, Karthik B S, open list, José Roberto de Souza,
Chris Wilson, Manasi Navare, open list:DRM DRIVERS, Dave Airlie,
intel-gfx
On Mon, Apr 26, 2021 at 11:24 PM Kai-Heng Feng
<kai.heng.feng@canonical.com> wrote:
>
> On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
> to discrete GFX after S3. This is not desirable, because userspace will
> treat connected display as a new one, losing display settings.
>
> The expected behavior is to let discrete GFX drives all external
> displays.
>
> The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
> The method is inside the another _DSM, so add the _DSM and call it
> accordingly.
>
> I also tested some MUX-less and iGPU only laptops with that _DSM, no
> regression was found.
>
> v3:
> - Remove BXT from names.
> - Change the parameter type.
> - Fold the function into intel_modeset_init_hw().
>
> v2:
> - Forward declare struct pci_dev.
>
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
> References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
A gentle ping...
> ---
> drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
> drivers/gpu/drm/i915/display/intel_display.c | 2 ++
> 3 files changed, 23 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
> index 833d0c1be4f1..d008d3976261 100644
> --- a/drivers/gpu/drm/i915/display/intel_acpi.c
> +++ b/drivers/gpu/drm/i915/display/intel_acpi.c
> @@ -13,12 +13,17 @@
> #include "intel_display_types.h"
>
> #define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
> +#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
> #define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
>
> static const guid_t intel_dsm_guid =
> GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
> 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
>
> +static const guid_t intel_dsm_guid2 =
> + GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
> + 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
> +
> static char *intel_dsm_port_name(u8 id)
> {
> switch (id) {
> @@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
> {
> }
>
> +void intel_dsm_enable_mux(struct drm_i915_private *i915)
> +{
> + struct pci_dev *pdev = i915->drm.pdev;
> + acpi_handle dhandle;
> +
> + dhandle = ACPI_HANDLE(&pdev->dev);
> + if (!dhandle)
> + return;
> +
> + acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
> + INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
> +}
> +
> /*
> * ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
> * Attached to the Display Adapter).
> diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
> index e8b068661d22..def013cf6308 100644
> --- a/drivers/gpu/drm/i915/display/intel_acpi.h
> +++ b/drivers/gpu/drm/i915/display/intel_acpi.h
> @@ -11,11 +11,14 @@ struct drm_i915_private;
> #ifdef CONFIG_ACPI
> void intel_register_dsm_handler(void);
> void intel_unregister_dsm_handler(void);
> +void intel_dsm_enable_mux(struct drm_i915_private *i915);
> void intel_acpi_device_id_update(struct drm_i915_private *i915);
> #else
> static inline void intel_register_dsm_handler(void) { return; }
> static inline void intel_unregister_dsm_handler(void) { return; }
> static inline
> +void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
> +static inline
> void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
> #endif /* CONFIG_ACPI */
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index a10e26380ef3..d79dae370b20 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
> {
> struct intel_cdclk_state *cdclk_state;
>
> + intel_dsm_enable_mux(i915);
> +
> if (!HAS_DISPLAY(i915))
> return;
>
> --
> 2.30.2
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
@ 2021-05-11 3:33 ` Kai-Heng Feng
0 siblings, 0 replies; 18+ messages in thread
From: Kai-Heng Feng @ 2021-05-11 3:33 UTC (permalink / raw)
To: Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, Ville Syrjälä
Cc: David Airlie, open list, Chris Wilson, Takashi Iwai,
open list:DRM DRIVERS, Dave Airlie, intel-gfx
On Mon, Apr 26, 2021 at 11:24 PM Kai-Heng Feng
<kai.heng.feng@canonical.com> wrote:
>
> On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
> to discrete GFX after S3. This is not desirable, because userspace will
> treat connected display as a new one, losing display settings.
>
> The expected behavior is to let discrete GFX drives all external
> displays.
>
> The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
> The method is inside the another _DSM, so add the _DSM and call it
> accordingly.
>
> I also tested some MUX-less and iGPU only laptops with that _DSM, no
> regression was found.
>
> v3:
> - Remove BXT from names.
> - Change the parameter type.
> - Fold the function into intel_modeset_init_hw().
>
> v2:
> - Forward declare struct pci_dev.
>
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
> References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
A gentle ping...
> ---
> drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
> drivers/gpu/drm/i915/display/intel_display.c | 2 ++
> 3 files changed, 23 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
> index 833d0c1be4f1..d008d3976261 100644
> --- a/drivers/gpu/drm/i915/display/intel_acpi.c
> +++ b/drivers/gpu/drm/i915/display/intel_acpi.c
> @@ -13,12 +13,17 @@
> #include "intel_display_types.h"
>
> #define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
> +#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
> #define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
>
> static const guid_t intel_dsm_guid =
> GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
> 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
>
> +static const guid_t intel_dsm_guid2 =
> + GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
> + 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
> +
> static char *intel_dsm_port_name(u8 id)
> {
> switch (id) {
> @@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
> {
> }
>
> +void intel_dsm_enable_mux(struct drm_i915_private *i915)
> +{
> + struct pci_dev *pdev = i915->drm.pdev;
> + acpi_handle dhandle;
> +
> + dhandle = ACPI_HANDLE(&pdev->dev);
> + if (!dhandle)
> + return;
> +
> + acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
> + INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
> +}
> +
> /*
> * ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
> * Attached to the Display Adapter).
> diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
> index e8b068661d22..def013cf6308 100644
> --- a/drivers/gpu/drm/i915/display/intel_acpi.h
> +++ b/drivers/gpu/drm/i915/display/intel_acpi.h
> @@ -11,11 +11,14 @@ struct drm_i915_private;
> #ifdef CONFIG_ACPI
> void intel_register_dsm_handler(void);
> void intel_unregister_dsm_handler(void);
> +void intel_dsm_enable_mux(struct drm_i915_private *i915);
> void intel_acpi_device_id_update(struct drm_i915_private *i915);
> #else
> static inline void intel_register_dsm_handler(void) { return; }
> static inline void intel_unregister_dsm_handler(void) { return; }
> static inline
> +void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
> +static inline
> void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
> #endif /* CONFIG_ACPI */
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index a10e26380ef3..d79dae370b20 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
> {
> struct intel_cdclk_state *cdclk_state;
>
> + intel_dsm_enable_mux(i915);
> +
> if (!HAS_DISPLAY(i915))
> return;
>
> --
> 2.30.2
>
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
2021-04-26 15:24 ` Kai-Heng Feng
(?)
@ 2021-05-11 18:19 ` Ville Syrjälä
-1 siblings, 0 replies; 18+ messages in thread
From: Ville Syrjälä @ 2021-05-11 18:19 UTC (permalink / raw)
To: Kai-Heng Feng
Cc: jani.nikula, joonas.lahtinen, rodrigo.vivi, David Airlie,
Daniel Vetter, Takashi Iwai, Manasi Navare,
José Roberto de Souza, Chris Wilson, Imre Deak, Dave Airlie,
Maarten Lankhorst, Karthik B S, Matt Roper, intel-gfx,
open list:DRM DRIVERS, open list
On Mon, Apr 26, 2021 at 11:24:10PM +0800, Kai-Heng Feng wrote:
> On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
> to discrete GFX after S3. This is not desirable, because userspace will
> treat connected display as a new one, losing display settings.
>
> The expected behavior is to let discrete GFX drives all external
> displays.
>
> The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
> The method is inside the another _DSM, so add the _DSM and call it
> accordingly.
>
> I also tested some MUX-less and iGPU only laptops with that _DSM, no
> regression was found.
>
> v3:
> - Remove BXT from names.
> - Change the parameter type.
> - Fold the function into intel_modeset_init_hw().
>
> v2:
> - Forward declare struct pci_dev.
>
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
> References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> ---
> drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
> drivers/gpu/drm/i915/display/intel_display.c | 2 ++
> 3 files changed, 23 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
> index 833d0c1be4f1..d008d3976261 100644
> --- a/drivers/gpu/drm/i915/display/intel_acpi.c
> +++ b/drivers/gpu/drm/i915/display/intel_acpi.c
> @@ -13,12 +13,17 @@
> #include "intel_display_types.h"
>
> #define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
> +#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
This block of defines is for the other DSM. We don't want to
mix these up. We also want to name it according to the spec,
so something like GET_BIOS_DATA_FUNCS_SUPPORTED. Similarly
for the intel_dsm_enable_mux() wrapper function. + it needs
a comment to document that some BIOSes abuse it to do MUX
initialization and whatnot.
We should perhaps rename all the old DSM stuff to
something a bit less generic as well...
> #define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
>
> static const guid_t intel_dsm_guid =
> GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
> 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
>
> +static const guid_t intel_dsm_guid2 =
> + GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
> + 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
> +
> static char *intel_dsm_port_name(u8 id)
> {
> switch (id) {
> @@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
> {
> }
>
> +void intel_dsm_enable_mux(struct drm_i915_private *i915)
> +{
> + struct pci_dev *pdev = i915->drm.pdev;
> + acpi_handle dhandle;
> +
> + dhandle = ACPI_HANDLE(&pdev->dev);
> + if (!dhandle)
> + return;
> +
> + acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
> + INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
> +}
> +
> /*
> * ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
> * Attached to the Display Adapter).
> diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
> index e8b068661d22..def013cf6308 100644
> --- a/drivers/gpu/drm/i915/display/intel_acpi.h
> +++ b/drivers/gpu/drm/i915/display/intel_acpi.h
> @@ -11,11 +11,14 @@ struct drm_i915_private;
> #ifdef CONFIG_ACPI
> void intel_register_dsm_handler(void);
> void intel_unregister_dsm_handler(void);
> +void intel_dsm_enable_mux(struct drm_i915_private *i915);
> void intel_acpi_device_id_update(struct drm_i915_private *i915);
> #else
> static inline void intel_register_dsm_handler(void) { return; }
> static inline void intel_unregister_dsm_handler(void) { return; }
> static inline
> +void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
> +static inline
> void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
> #endif /* CONFIG_ACPI */
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index a10e26380ef3..d79dae370b20 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
> {
> struct intel_cdclk_state *cdclk_state;
>
> + intel_dsm_enable_mux(i915);
> +
This should probably be somewhere around where we do all the other
semi ACPI related init (OpRegion/etc.).
> if (!HAS_DISPLAY(i915))
> return;
>
> --
> 2.30.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
@ 2021-05-11 18:19 ` Ville Syrjälä
0 siblings, 0 replies; 18+ messages in thread
From: Ville Syrjälä @ 2021-05-11 18:19 UTC (permalink / raw)
To: Kai-Heng Feng
Cc: Karthik B S, open list:DRM DRIVERS, David Airlie, open list,
Chris Wilson, Manasi Navare, José Roberto de Souza,
rodrigo.vivi, Dave Airlie, intel-gfx
On Mon, Apr 26, 2021 at 11:24:10PM +0800, Kai-Heng Feng wrote:
> On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
> to discrete GFX after S3. This is not desirable, because userspace will
> treat connected display as a new one, losing display settings.
>
> The expected behavior is to let discrete GFX drives all external
> displays.
>
> The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
> The method is inside the another _DSM, so add the _DSM and call it
> accordingly.
>
> I also tested some MUX-less and iGPU only laptops with that _DSM, no
> regression was found.
>
> v3:
> - Remove BXT from names.
> - Change the parameter type.
> - Fold the function into intel_modeset_init_hw().
>
> v2:
> - Forward declare struct pci_dev.
>
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
> References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> ---
> drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
> drivers/gpu/drm/i915/display/intel_display.c | 2 ++
> 3 files changed, 23 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
> index 833d0c1be4f1..d008d3976261 100644
> --- a/drivers/gpu/drm/i915/display/intel_acpi.c
> +++ b/drivers/gpu/drm/i915/display/intel_acpi.c
> @@ -13,12 +13,17 @@
> #include "intel_display_types.h"
>
> #define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
> +#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
This block of defines is for the other DSM. We don't want to
mix these up. We also want to name it according to the spec,
so something like GET_BIOS_DATA_FUNCS_SUPPORTED. Similarly
for the intel_dsm_enable_mux() wrapper function. + it needs
a comment to document that some BIOSes abuse it to do MUX
initialization and whatnot.
We should perhaps rename all the old DSM stuff to
something a bit less generic as well...
> #define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
>
> static const guid_t intel_dsm_guid =
> GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
> 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
>
> +static const guid_t intel_dsm_guid2 =
> + GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
> + 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
> +
> static char *intel_dsm_port_name(u8 id)
> {
> switch (id) {
> @@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
> {
> }
>
> +void intel_dsm_enable_mux(struct drm_i915_private *i915)
> +{
> + struct pci_dev *pdev = i915->drm.pdev;
> + acpi_handle dhandle;
> +
> + dhandle = ACPI_HANDLE(&pdev->dev);
> + if (!dhandle)
> + return;
> +
> + acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
> + INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
> +}
> +
> /*
> * ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
> * Attached to the Display Adapter).
> diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
> index e8b068661d22..def013cf6308 100644
> --- a/drivers/gpu/drm/i915/display/intel_acpi.h
> +++ b/drivers/gpu/drm/i915/display/intel_acpi.h
> @@ -11,11 +11,14 @@ struct drm_i915_private;
> #ifdef CONFIG_ACPI
> void intel_register_dsm_handler(void);
> void intel_unregister_dsm_handler(void);
> +void intel_dsm_enable_mux(struct drm_i915_private *i915);
> void intel_acpi_device_id_update(struct drm_i915_private *i915);
> #else
> static inline void intel_register_dsm_handler(void) { return; }
> static inline void intel_unregister_dsm_handler(void) { return; }
> static inline
> +void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
> +static inline
> void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
> #endif /* CONFIG_ACPI */
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index a10e26380ef3..d79dae370b20 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
> {
> struct intel_cdclk_state *cdclk_state;
>
> + intel_dsm_enable_mux(i915);
> +
This should probably be somewhere around where we do all the other
semi ACPI related init (OpRegion/etc.).
> if (!HAS_DISPLAY(i915))
> return;
>
> --
> 2.30.2
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
@ 2021-05-11 18:19 ` Ville Syrjälä
0 siblings, 0 replies; 18+ messages in thread
From: Ville Syrjälä @ 2021-05-11 18:19 UTC (permalink / raw)
To: Kai-Heng Feng
Cc: open list:DRM DRIVERS, David Airlie, open list, Chris Wilson,
Takashi Iwai, Dave Airlie, intel-gfx
On Mon, Apr 26, 2021 at 11:24:10PM +0800, Kai-Heng Feng wrote:
> On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
> to discrete GFX after S3. This is not desirable, because userspace will
> treat connected display as a new one, losing display settings.
>
> The expected behavior is to let discrete GFX drives all external
> displays.
>
> The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
> The method is inside the another _DSM, so add the _DSM and call it
> accordingly.
>
> I also tested some MUX-less and iGPU only laptops with that _DSM, no
> regression was found.
>
> v3:
> - Remove BXT from names.
> - Change the parameter type.
> - Fold the function into intel_modeset_init_hw().
>
> v2:
> - Forward declare struct pci_dev.
>
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
> References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> ---
> drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
> drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
> drivers/gpu/drm/i915/display/intel_display.c | 2 ++
> 3 files changed, 23 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
> index 833d0c1be4f1..d008d3976261 100644
> --- a/drivers/gpu/drm/i915/display/intel_acpi.c
> +++ b/drivers/gpu/drm/i915/display/intel_acpi.c
> @@ -13,12 +13,17 @@
> #include "intel_display_types.h"
>
> #define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
> +#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
This block of defines is for the other DSM. We don't want to
mix these up. We also want to name it according to the spec,
so something like GET_BIOS_DATA_FUNCS_SUPPORTED. Similarly
for the intel_dsm_enable_mux() wrapper function. + it needs
a comment to document that some BIOSes abuse it to do MUX
initialization and whatnot.
We should perhaps rename all the old DSM stuff to
something a bit less generic as well...
> #define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
>
> static const guid_t intel_dsm_guid =
> GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
> 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
>
> +static const guid_t intel_dsm_guid2 =
> + GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
> + 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
> +
> static char *intel_dsm_port_name(u8 id)
> {
> switch (id) {
> @@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
> {
> }
>
> +void intel_dsm_enable_mux(struct drm_i915_private *i915)
> +{
> + struct pci_dev *pdev = i915->drm.pdev;
> + acpi_handle dhandle;
> +
> + dhandle = ACPI_HANDLE(&pdev->dev);
> + if (!dhandle)
> + return;
> +
> + acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
> + INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
> +}
> +
> /*
> * ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
> * Attached to the Display Adapter).
> diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
> index e8b068661d22..def013cf6308 100644
> --- a/drivers/gpu/drm/i915/display/intel_acpi.h
> +++ b/drivers/gpu/drm/i915/display/intel_acpi.h
> @@ -11,11 +11,14 @@ struct drm_i915_private;
> #ifdef CONFIG_ACPI
> void intel_register_dsm_handler(void);
> void intel_unregister_dsm_handler(void);
> +void intel_dsm_enable_mux(struct drm_i915_private *i915);
> void intel_acpi_device_id_update(struct drm_i915_private *i915);
> #else
> static inline void intel_register_dsm_handler(void) { return; }
> static inline void intel_unregister_dsm_handler(void) { return; }
> static inline
> +void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
> +static inline
> void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
> #endif /* CONFIG_ACPI */
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> index a10e26380ef3..d79dae370b20 100644
> --- a/drivers/gpu/drm/i915/display/intel_display.c
> +++ b/drivers/gpu/drm/i915/display/intel_display.c
> @@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
> {
> struct intel_cdclk_state *cdclk_state;
>
> + intel_dsm_enable_mux(i915);
> +
This should probably be somewhere around where we do all the other
semi ACPI related init (OpRegion/etc.).
> if (!HAS_DISPLAY(i915))
> return;
>
> --
> 2.30.2
--
Ville Syrjälä
Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
2021-05-11 18:19 ` Ville Syrjälä
(?)
@ 2021-05-14 9:38 ` Kai-Heng Feng
-1 siblings, 0 replies; 18+ messages in thread
From: Kai-Heng Feng @ 2021-05-14 9:38 UTC (permalink / raw)
To: Ville Syrjälä
Cc: Jani Nikula, Joonas Lahtinen, Rodrigo Vivi, David Airlie,
Daniel Vetter, Takashi Iwai, Manasi Navare,
José Roberto de Souza, Chris Wilson, Imre Deak, Dave Airlie,
Maarten Lankhorst, Karthik B S, Matt Roper, intel-gfx,
open list:DRM DRIVERS, open list
On Wed, May 12, 2021 at 2:19 AM Ville Syrjälä
<ville.syrjala@linux.intel.com> wrote:
>
> On Mon, Apr 26, 2021 at 11:24:10PM +0800, Kai-Heng Feng wrote:
> > On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
> > to discrete GFX after S3. This is not desirable, because userspace will
> > treat connected display as a new one, losing display settings.
> >
> > The expected behavior is to let discrete GFX drives all external
> > displays.
> >
> > The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
> > The method is inside the another _DSM, so add the _DSM and call it
> > accordingly.
> >
> > I also tested some MUX-less and iGPU only laptops with that _DSM, no
> > regression was found.
> >
> > v3:
> > - Remove BXT from names.
> > - Change the parameter type.
> > - Fold the function into intel_modeset_init_hw().
> >
> > v2:
> > - Forward declare struct pci_dev.
> >
> > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
> > References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
> > Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
> > drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
> > drivers/gpu/drm/i915/display/intel_display.c | 2 ++
> > 3 files changed, 23 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
> > index 833d0c1be4f1..d008d3976261 100644
> > --- a/drivers/gpu/drm/i915/display/intel_acpi.c
> > +++ b/drivers/gpu/drm/i915/display/intel_acpi.c
> > @@ -13,12 +13,17 @@
> > #include "intel_display_types.h"
> >
> > #define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
> > +#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
>
> This block of defines is for the other DSM. We don't want to
> mix these up. We also want to name it according to the spec,
> so something like GET_BIOS_DATA_FUNCS_SUPPORTED. Similarly
> for the intel_dsm_enable_mux() wrapper function. + it needs
> a comment to document that some BIOSes abuse it to do MUX
> initialization and whatnot.
Will do.
>
> We should perhaps rename all the old DSM stuff to
> something a bit less generic as well...
I can rename them as well. But what's the naming scheme you prefer?
>
> > #define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
> >
> > static const guid_t intel_dsm_guid =
> > GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
> > 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
> >
> > +static const guid_t intel_dsm_guid2 =
> > + GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
> > + 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
> > +
> > static char *intel_dsm_port_name(u8 id)
> > {
> > switch (id) {
> > @@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
> > {
> > }
> >
> > +void intel_dsm_enable_mux(struct drm_i915_private *i915)
> > +{
> > + struct pci_dev *pdev = i915->drm.pdev;
> > + acpi_handle dhandle;
> > +
> > + dhandle = ACPI_HANDLE(&pdev->dev);
> > + if (!dhandle)
> > + return;
> > +
> > + acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
> > + INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
> > +}
> > +
> > /*
> > * ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
> > * Attached to the Display Adapter).
> > diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
> > index e8b068661d22..def013cf6308 100644
> > --- a/drivers/gpu/drm/i915/display/intel_acpi.h
> > +++ b/drivers/gpu/drm/i915/display/intel_acpi.h
> > @@ -11,11 +11,14 @@ struct drm_i915_private;
> > #ifdef CONFIG_ACPI
> > void intel_register_dsm_handler(void);
> > void intel_unregister_dsm_handler(void);
> > +void intel_dsm_enable_mux(struct drm_i915_private *i915);
> > void intel_acpi_device_id_update(struct drm_i915_private *i915);
> > #else
> > static inline void intel_register_dsm_handler(void) { return; }
> > static inline void intel_unregister_dsm_handler(void) { return; }
> > static inline
> > +void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
> > +static inline
> > void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
> > #endif /* CONFIG_ACPI */
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > index a10e26380ef3..d79dae370b20 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > @@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
> > {
> > struct intel_cdclk_state *cdclk_state;
> >
> > + intel_dsm_enable_mux(i915);
> > +
>
> This should probably be somewhere around where we do all the other
> semi ACPI related init (OpRegion/etc.).
Hmm, but Jani prefers to put it inside intel_modeset_*() helpers. But
I don't see any opregion related functions are being called by
intel_modeset_*() helpers. Any suggestion?
Kai-Heng
>
> > if (!HAS_DISPLAY(i915))
> > return;
> >
> > --
> > 2.30.2
>
> --
> Ville Syrjälä
> Intel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
@ 2021-05-14 9:38 ` Kai-Heng Feng
0 siblings, 0 replies; 18+ messages in thread
From: Kai-Heng Feng @ 2021-05-14 9:38 UTC (permalink / raw)
To: Ville Syrjälä
Cc: Karthik B S, open list:DRM DRIVERS, David Airlie, open list,
Chris Wilson, Manasi Navare, José Roberto de Souza,
Rodrigo Vivi, Dave Airlie, intel-gfx
On Wed, May 12, 2021 at 2:19 AM Ville Syrjälä
<ville.syrjala@linux.intel.com> wrote:
>
> On Mon, Apr 26, 2021 at 11:24:10PM +0800, Kai-Heng Feng wrote:
> > On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
> > to discrete GFX after S3. This is not desirable, because userspace will
> > treat connected display as a new one, losing display settings.
> >
> > The expected behavior is to let discrete GFX drives all external
> > displays.
> >
> > The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
> > The method is inside the another _DSM, so add the _DSM and call it
> > accordingly.
> >
> > I also tested some MUX-less and iGPU only laptops with that _DSM, no
> > regression was found.
> >
> > v3:
> > - Remove BXT from names.
> > - Change the parameter type.
> > - Fold the function into intel_modeset_init_hw().
> >
> > v2:
> > - Forward declare struct pci_dev.
> >
> > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
> > References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
> > Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
> > drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
> > drivers/gpu/drm/i915/display/intel_display.c | 2 ++
> > 3 files changed, 23 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
> > index 833d0c1be4f1..d008d3976261 100644
> > --- a/drivers/gpu/drm/i915/display/intel_acpi.c
> > +++ b/drivers/gpu/drm/i915/display/intel_acpi.c
> > @@ -13,12 +13,17 @@
> > #include "intel_display_types.h"
> >
> > #define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
> > +#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
>
> This block of defines is for the other DSM. We don't want to
> mix these up. We also want to name it according to the spec,
> so something like GET_BIOS_DATA_FUNCS_SUPPORTED. Similarly
> for the intel_dsm_enable_mux() wrapper function. + it needs
> a comment to document that some BIOSes abuse it to do MUX
> initialization and whatnot.
Will do.
>
> We should perhaps rename all the old DSM stuff to
> something a bit less generic as well...
I can rename them as well. But what's the naming scheme you prefer?
>
> > #define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
> >
> > static const guid_t intel_dsm_guid =
> > GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
> > 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
> >
> > +static const guid_t intel_dsm_guid2 =
> > + GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
> > + 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
> > +
> > static char *intel_dsm_port_name(u8 id)
> > {
> > switch (id) {
> > @@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
> > {
> > }
> >
> > +void intel_dsm_enable_mux(struct drm_i915_private *i915)
> > +{
> > + struct pci_dev *pdev = i915->drm.pdev;
> > + acpi_handle dhandle;
> > +
> > + dhandle = ACPI_HANDLE(&pdev->dev);
> > + if (!dhandle)
> > + return;
> > +
> > + acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
> > + INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
> > +}
> > +
> > /*
> > * ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
> > * Attached to the Display Adapter).
> > diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
> > index e8b068661d22..def013cf6308 100644
> > --- a/drivers/gpu/drm/i915/display/intel_acpi.h
> > +++ b/drivers/gpu/drm/i915/display/intel_acpi.h
> > @@ -11,11 +11,14 @@ struct drm_i915_private;
> > #ifdef CONFIG_ACPI
> > void intel_register_dsm_handler(void);
> > void intel_unregister_dsm_handler(void);
> > +void intel_dsm_enable_mux(struct drm_i915_private *i915);
> > void intel_acpi_device_id_update(struct drm_i915_private *i915);
> > #else
> > static inline void intel_register_dsm_handler(void) { return; }
> > static inline void intel_unregister_dsm_handler(void) { return; }
> > static inline
> > +void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
> > +static inline
> > void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
> > #endif /* CONFIG_ACPI */
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > index a10e26380ef3..d79dae370b20 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > @@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
> > {
> > struct intel_cdclk_state *cdclk_state;
> >
> > + intel_dsm_enable_mux(i915);
> > +
>
> This should probably be somewhere around where we do all the other
> semi ACPI related init (OpRegion/etc.).
Hmm, but Jani prefers to put it inside intel_modeset_*() helpers. But
I don't see any opregion related functions are being called by
intel_modeset_*() helpers. Any suggestion?
Kai-Heng
>
> > if (!HAS_DISPLAY(i915))
> > return;
> >
> > --
> > 2.30.2
>
> --
> Ville Syrjälä
> Intel
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
@ 2021-05-14 9:38 ` Kai-Heng Feng
0 siblings, 0 replies; 18+ messages in thread
From: Kai-Heng Feng @ 2021-05-14 9:38 UTC (permalink / raw)
To: Ville Syrjälä
Cc: open list:DRM DRIVERS, David Airlie, open list, Chris Wilson,
Takashi Iwai, Dave Airlie, intel-gfx
On Wed, May 12, 2021 at 2:19 AM Ville Syrjälä
<ville.syrjala@linux.intel.com> wrote:
>
> On Mon, Apr 26, 2021 at 11:24:10PM +0800, Kai-Heng Feng wrote:
> > On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
> > to discrete GFX after S3. This is not desirable, because userspace will
> > treat connected display as a new one, losing display settings.
> >
> > The expected behavior is to let discrete GFX drives all external
> > displays.
> >
> > The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
> > The method is inside the another _DSM, so add the _DSM and call it
> > accordingly.
> >
> > I also tested some MUX-less and iGPU only laptops with that _DSM, no
> > regression was found.
> >
> > v3:
> > - Remove BXT from names.
> > - Change the parameter type.
> > - Fold the function into intel_modeset_init_hw().
> >
> > v2:
> > - Forward declare struct pci_dev.
> >
> > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
> > References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
> > Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
> > ---
> > drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
> > drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
> > drivers/gpu/drm/i915/display/intel_display.c | 2 ++
> > 3 files changed, 23 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
> > index 833d0c1be4f1..d008d3976261 100644
> > --- a/drivers/gpu/drm/i915/display/intel_acpi.c
> > +++ b/drivers/gpu/drm/i915/display/intel_acpi.c
> > @@ -13,12 +13,17 @@
> > #include "intel_display_types.h"
> >
> > #define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
> > +#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
>
> This block of defines is for the other DSM. We don't want to
> mix these up. We also want to name it according to the spec,
> so something like GET_BIOS_DATA_FUNCS_SUPPORTED. Similarly
> for the intel_dsm_enable_mux() wrapper function. + it needs
> a comment to document that some BIOSes abuse it to do MUX
> initialization and whatnot.
Will do.
>
> We should perhaps rename all the old DSM stuff to
> something a bit less generic as well...
I can rename them as well. But what's the naming scheme you prefer?
>
> > #define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
> >
> > static const guid_t intel_dsm_guid =
> > GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
> > 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
> >
> > +static const guid_t intel_dsm_guid2 =
> > + GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
> > + 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
> > +
> > static char *intel_dsm_port_name(u8 id)
> > {
> > switch (id) {
> > @@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
> > {
> > }
> >
> > +void intel_dsm_enable_mux(struct drm_i915_private *i915)
> > +{
> > + struct pci_dev *pdev = i915->drm.pdev;
> > + acpi_handle dhandle;
> > +
> > + dhandle = ACPI_HANDLE(&pdev->dev);
> > + if (!dhandle)
> > + return;
> > +
> > + acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
> > + INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
> > +}
> > +
> > /*
> > * ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
> > * Attached to the Display Adapter).
> > diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
> > index e8b068661d22..def013cf6308 100644
> > --- a/drivers/gpu/drm/i915/display/intel_acpi.h
> > +++ b/drivers/gpu/drm/i915/display/intel_acpi.h
> > @@ -11,11 +11,14 @@ struct drm_i915_private;
> > #ifdef CONFIG_ACPI
> > void intel_register_dsm_handler(void);
> > void intel_unregister_dsm_handler(void);
> > +void intel_dsm_enable_mux(struct drm_i915_private *i915);
> > void intel_acpi_device_id_update(struct drm_i915_private *i915);
> > #else
> > static inline void intel_register_dsm_handler(void) { return; }
> > static inline void intel_unregister_dsm_handler(void) { return; }
> > static inline
> > +void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
> > +static inline
> > void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
> > #endif /* CONFIG_ACPI */
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
> > index a10e26380ef3..d79dae370b20 100644
> > --- a/drivers/gpu/drm/i915/display/intel_display.c
> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
> > @@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
> > {
> > struct intel_cdclk_state *cdclk_state;
> >
> > + intel_dsm_enable_mux(i915);
> > +
>
> This should probably be somewhere around where we do all the other
> semi ACPI related init (OpRegion/etc.).
Hmm, but Jani prefers to put it inside intel_modeset_*() helpers. But
I don't see any opregion related functions are being called by
intel_modeset_*() helpers. Any suggestion?
Kai-Heng
>
> > if (!HAS_DISPLAY(i915))
> > return;
> >
> > --
> > 2.30.2
>
> --
> Ville Syrjälä
> Intel
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
2021-05-14 9:38 ` Kai-Heng Feng
(?)
@ 2021-05-17 12:15 ` Jani Nikula
-1 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2021-05-17 12:15 UTC (permalink / raw)
To: Kai-Heng Feng, Ville Syrjälä
Cc: Joonas Lahtinen, Rodrigo Vivi, David Airlie, Daniel Vetter,
Takashi Iwai, Manasi Navare, José Roberto de Souza,
Chris Wilson, Imre Deak, Dave Airlie, Maarten Lankhorst,
Karthik B S, Matt Roper, intel-gfx, open list:DRM DRIVERS,
open list
On Fri, 14 May 2021, Kai-Heng Feng <kai.heng.feng@canonical.com> wrote:
> On Wed, May 12, 2021 at 2:19 AM Ville Syrjälä
> <ville.syrjala@linux.intel.com> wrote:
>>
>> On Mon, Apr 26, 2021 at 11:24:10PM +0800, Kai-Heng Feng wrote:
>> > On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
>> > to discrete GFX after S3. This is not desirable, because userspace will
>> > treat connected display as a new one, losing display settings.
>> >
>> > The expected behavior is to let discrete GFX drives all external
>> > displays.
>> >
>> > The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
>> > The method is inside the another _DSM, so add the _DSM and call it
>> > accordingly.
>> >
>> > I also tested some MUX-less and iGPU only laptops with that _DSM, no
>> > regression was found.
>> >
>> > v3:
>> > - Remove BXT from names.
>> > - Change the parameter type.
>> > - Fold the function into intel_modeset_init_hw().
>> >
>> > v2:
>> > - Forward declare struct pci_dev.
>> >
>> > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
>> > References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
>> > Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
>> > ---
>> > drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
>> > drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
>> > drivers/gpu/drm/i915/display/intel_display.c | 2 ++
>> > 3 files changed, 23 insertions(+)
>> >
>> > diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
>> > index 833d0c1be4f1..d008d3976261 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_acpi.c
>> > +++ b/drivers/gpu/drm/i915/display/intel_acpi.c
>> > @@ -13,12 +13,17 @@
>> > #include "intel_display_types.h"
>> >
>> > #define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
>> > +#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
>>
>> This block of defines is for the other DSM. We don't want to
>> mix these up. We also want to name it according to the spec,
>> so something like GET_BIOS_DATA_FUNCS_SUPPORTED. Similarly
>> for the intel_dsm_enable_mux() wrapper function. + it needs
>> a comment to document that some BIOSes abuse it to do MUX
>> initialization and whatnot.
>
> Will do.
>
>
>>
>> We should perhaps rename all the old DSM stuff to
>> something a bit less generic as well...
>
> I can rename them as well. But what's the naming scheme you prefer?
>
>>
>> > #define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
>> >
>> > static const guid_t intel_dsm_guid =
>> > GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
>> > 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
>> >
>> > +static const guid_t intel_dsm_guid2 =
>> > + GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
>> > + 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
>> > +
>> > static char *intel_dsm_port_name(u8 id)
>> > {
>> > switch (id) {
>> > @@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
>> > {
>> > }
>> >
>> > +void intel_dsm_enable_mux(struct drm_i915_private *i915)
>> > +{
>> > + struct pci_dev *pdev = i915->drm.pdev;
>> > + acpi_handle dhandle;
>> > +
>> > + dhandle = ACPI_HANDLE(&pdev->dev);
>> > + if (!dhandle)
>> > + return;
>> > +
>> > + acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
>> > + INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
>> > +}
>> > +
>> > /*
>> > * ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
>> > * Attached to the Display Adapter).
>> > diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
>> > index e8b068661d22..def013cf6308 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_acpi.h
>> > +++ b/drivers/gpu/drm/i915/display/intel_acpi.h
>> > @@ -11,11 +11,14 @@ struct drm_i915_private;
>> > #ifdef CONFIG_ACPI
>> > void intel_register_dsm_handler(void);
>> > void intel_unregister_dsm_handler(void);
>> > +void intel_dsm_enable_mux(struct drm_i915_private *i915);
>> > void intel_acpi_device_id_update(struct drm_i915_private *i915);
>> > #else
>> > static inline void intel_register_dsm_handler(void) { return; }
>> > static inline void intel_unregister_dsm_handler(void) { return; }
>> > static inline
>> > +void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
>> > +static inline
>> > void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
>> > #endif /* CONFIG_ACPI */
>> >
>> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
>> > index a10e26380ef3..d79dae370b20 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_display.c
>> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
>> > @@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
>> > {
>> > struct intel_cdclk_state *cdclk_state;
>> >
>> > + intel_dsm_enable_mux(i915);
>> > +
>>
>> This should probably be somewhere around where we do all the other
>> semi ACPI related init (OpRegion/etc.).
>
> Hmm, but Jani prefers to put it inside intel_modeset_*() helpers. But
> I don't see any opregion related functions are being called by
> intel_modeset_*() helpers. Any suggestion?
I think I mainly wanted it in intel_display.c instead of at the driver
top level.
BR,
Jani.
>
> Kai-Heng
>
>>
>> > if (!HAS_DISPLAY(i915))
>> > return;
>> >
>> > --
>> > 2.30.2
>>
>> --
>> Ville Syrjälä
>> Intel
--
Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
@ 2021-05-17 12:15 ` Jani Nikula
0 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2021-05-17 12:15 UTC (permalink / raw)
To: Kai-Heng Feng, Ville Syrjälä
Cc: Karthik B S, David Airlie, open list, José Roberto de Souza,
Chris Wilson, Manasi Navare, open list:DRM DRIVERS, Rodrigo Vivi,
Dave Airlie, intel-gfx
On Fri, 14 May 2021, Kai-Heng Feng <kai.heng.feng@canonical.com> wrote:
> On Wed, May 12, 2021 at 2:19 AM Ville Syrjälä
> <ville.syrjala@linux.intel.com> wrote:
>>
>> On Mon, Apr 26, 2021 at 11:24:10PM +0800, Kai-Heng Feng wrote:
>> > On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
>> > to discrete GFX after S3. This is not desirable, because userspace will
>> > treat connected display as a new one, losing display settings.
>> >
>> > The expected behavior is to let discrete GFX drives all external
>> > displays.
>> >
>> > The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
>> > The method is inside the another _DSM, so add the _DSM and call it
>> > accordingly.
>> >
>> > I also tested some MUX-less and iGPU only laptops with that _DSM, no
>> > regression was found.
>> >
>> > v3:
>> > - Remove BXT from names.
>> > - Change the parameter type.
>> > - Fold the function into intel_modeset_init_hw().
>> >
>> > v2:
>> > - Forward declare struct pci_dev.
>> >
>> > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
>> > References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
>> > Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
>> > ---
>> > drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
>> > drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
>> > drivers/gpu/drm/i915/display/intel_display.c | 2 ++
>> > 3 files changed, 23 insertions(+)
>> >
>> > diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
>> > index 833d0c1be4f1..d008d3976261 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_acpi.c
>> > +++ b/drivers/gpu/drm/i915/display/intel_acpi.c
>> > @@ -13,12 +13,17 @@
>> > #include "intel_display_types.h"
>> >
>> > #define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
>> > +#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
>>
>> This block of defines is for the other DSM. We don't want to
>> mix these up. We also want to name it according to the spec,
>> so something like GET_BIOS_DATA_FUNCS_SUPPORTED. Similarly
>> for the intel_dsm_enable_mux() wrapper function. + it needs
>> a comment to document that some BIOSes abuse it to do MUX
>> initialization and whatnot.
>
> Will do.
>
>
>>
>> We should perhaps rename all the old DSM stuff to
>> something a bit less generic as well...
>
> I can rename them as well. But what's the naming scheme you prefer?
>
>>
>> > #define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
>> >
>> > static const guid_t intel_dsm_guid =
>> > GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
>> > 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
>> >
>> > +static const guid_t intel_dsm_guid2 =
>> > + GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
>> > + 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
>> > +
>> > static char *intel_dsm_port_name(u8 id)
>> > {
>> > switch (id) {
>> > @@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
>> > {
>> > }
>> >
>> > +void intel_dsm_enable_mux(struct drm_i915_private *i915)
>> > +{
>> > + struct pci_dev *pdev = i915->drm.pdev;
>> > + acpi_handle dhandle;
>> > +
>> > + dhandle = ACPI_HANDLE(&pdev->dev);
>> > + if (!dhandle)
>> > + return;
>> > +
>> > + acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
>> > + INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
>> > +}
>> > +
>> > /*
>> > * ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
>> > * Attached to the Display Adapter).
>> > diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
>> > index e8b068661d22..def013cf6308 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_acpi.h
>> > +++ b/drivers/gpu/drm/i915/display/intel_acpi.h
>> > @@ -11,11 +11,14 @@ struct drm_i915_private;
>> > #ifdef CONFIG_ACPI
>> > void intel_register_dsm_handler(void);
>> > void intel_unregister_dsm_handler(void);
>> > +void intel_dsm_enable_mux(struct drm_i915_private *i915);
>> > void intel_acpi_device_id_update(struct drm_i915_private *i915);
>> > #else
>> > static inline void intel_register_dsm_handler(void) { return; }
>> > static inline void intel_unregister_dsm_handler(void) { return; }
>> > static inline
>> > +void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
>> > +static inline
>> > void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
>> > #endif /* CONFIG_ACPI */
>> >
>> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
>> > index a10e26380ef3..d79dae370b20 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_display.c
>> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
>> > @@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
>> > {
>> > struct intel_cdclk_state *cdclk_state;
>> >
>> > + intel_dsm_enable_mux(i915);
>> > +
>>
>> This should probably be somewhere around where we do all the other
>> semi ACPI related init (OpRegion/etc.).
>
> Hmm, but Jani prefers to put it inside intel_modeset_*() helpers. But
> I don't see any opregion related functions are being called by
> intel_modeset_*() helpers. Any suggestion?
I think I mainly wanted it in intel_display.c instead of at the driver
top level.
BR,
Jani.
>
> Kai-Heng
>
>>
>> > if (!HAS_DISPLAY(i915))
>> > return;
>> >
>> > --
>> > 2.30.2
>>
>> --
>> Ville Syrjälä
>> Intel
--
Jani Nikula, Intel Open Source Graphics Center
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops
@ 2021-05-17 12:15 ` Jani Nikula
0 siblings, 0 replies; 18+ messages in thread
From: Jani Nikula @ 2021-05-17 12:15 UTC (permalink / raw)
To: Kai-Heng Feng, Ville Syrjälä
Cc: David Airlie, open list, Chris Wilson, Takashi Iwai,
open list:DRM DRIVERS, Dave Airlie, intel-gfx
On Fri, 14 May 2021, Kai-Heng Feng <kai.heng.feng@canonical.com> wrote:
> On Wed, May 12, 2021 at 2:19 AM Ville Syrjälä
> <ville.syrjala@linux.intel.com> wrote:
>>
>> On Mon, Apr 26, 2021 at 11:24:10PM +0800, Kai-Heng Feng wrote:
>> > On HP Fury G7 Workstations, graphics output is re-routed from Intel GFX
>> > to discrete GFX after S3. This is not desirable, because userspace will
>> > treat connected display as a new one, losing display settings.
>> >
>> > The expected behavior is to let discrete GFX drives all external
>> > displays.
>> >
>> > The platform in question uses ACPI method \_SB.PCI0.HGME to enable MUX.
>> > The method is inside the another _DSM, so add the _DSM and call it
>> > accordingly.
>> >
>> > I also tested some MUX-less and iGPU only laptops with that _DSM, no
>> > regression was found.
>> >
>> > v3:
>> > - Remove BXT from names.
>> > - Change the parameter type.
>> > - Fold the function into intel_modeset_init_hw().
>> >
>> > v2:
>> > - Forward declare struct pci_dev.
>> >
>> > Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3113
>> > References: https://lore.kernel.org/intel-gfx/1460040732-31417-4-git-send-email-animesh.manna@intel.com/
>> > Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
>> > ---
>> > drivers/gpu/drm/i915/display/intel_acpi.c | 18 ++++++++++++++++++
>> > drivers/gpu/drm/i915/display/intel_acpi.h | 3 +++
>> > drivers/gpu/drm/i915/display/intel_display.c | 2 ++
>> > 3 files changed, 23 insertions(+)
>> >
>> > diff --git a/drivers/gpu/drm/i915/display/intel_acpi.c b/drivers/gpu/drm/i915/display/intel_acpi.c
>> > index 833d0c1be4f1..d008d3976261 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_acpi.c
>> > +++ b/drivers/gpu/drm/i915/display/intel_acpi.c
>> > @@ -13,12 +13,17 @@
>> > #include "intel_display_types.h"
>> >
>> > #define INTEL_DSM_REVISION_ID 1 /* For Calpella anyway... */
>> > +#define INTEL_DSM_FN_PLATFORM_MUX_ENABLE 0 /* No args */
>>
>> This block of defines is for the other DSM. We don't want to
>> mix these up. We also want to name it according to the spec,
>> so something like GET_BIOS_DATA_FUNCS_SUPPORTED. Similarly
>> for the intel_dsm_enable_mux() wrapper function. + it needs
>> a comment to document that some BIOSes abuse it to do MUX
>> initialization and whatnot.
>
> Will do.
>
>
>>
>> We should perhaps rename all the old DSM stuff to
>> something a bit less generic as well...
>
> I can rename them as well. But what's the naming scheme you prefer?
>
>>
>> > #define INTEL_DSM_FN_PLATFORM_MUX_INFO 1 /* No args */
>> >
>> > static const guid_t intel_dsm_guid =
>> > GUID_INIT(0x7ed873d3, 0xc2d0, 0x4e4f,
>> > 0xa8, 0x54, 0x0f, 0x13, 0x17, 0xb0, 0x1c, 0x2c);
>> >
>> > +static const guid_t intel_dsm_guid2 =
>> > + GUID_INIT(0x3e5b41c6, 0xeb1d, 0x4260,
>> > + 0x9d, 0x15, 0xc7, 0x1f, 0xba, 0xda, 0xe4, 0x14);
>> > +
>> > static char *intel_dsm_port_name(u8 id)
>> > {
>> > switch (id) {
>> > @@ -176,6 +181,19 @@ void intel_unregister_dsm_handler(void)
>> > {
>> > }
>> >
>> > +void intel_dsm_enable_mux(struct drm_i915_private *i915)
>> > +{
>> > + struct pci_dev *pdev = i915->drm.pdev;
>> > + acpi_handle dhandle;
>> > +
>> > + dhandle = ACPI_HANDLE(&pdev->dev);
>> > + if (!dhandle)
>> > + return;
>> > +
>> > + acpi_evaluate_dsm(dhandle, &intel_dsm_guid2, INTEL_DSM_REVISION_ID,
>> > + INTEL_DSM_FN_PLATFORM_MUX_ENABLE, NULL);
>> > +}
>> > +
>> > /*
>> > * ACPI Specification, Revision 5.0, Appendix B.3.2 _DOD (Enumerate All Devices
>> > * Attached to the Display Adapter).
>> > diff --git a/drivers/gpu/drm/i915/display/intel_acpi.h b/drivers/gpu/drm/i915/display/intel_acpi.h
>> > index e8b068661d22..def013cf6308 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_acpi.h
>> > +++ b/drivers/gpu/drm/i915/display/intel_acpi.h
>> > @@ -11,11 +11,14 @@ struct drm_i915_private;
>> > #ifdef CONFIG_ACPI
>> > void intel_register_dsm_handler(void);
>> > void intel_unregister_dsm_handler(void);
>> > +void intel_dsm_enable_mux(struct drm_i915_private *i915);
>> > void intel_acpi_device_id_update(struct drm_i915_private *i915);
>> > #else
>> > static inline void intel_register_dsm_handler(void) { return; }
>> > static inline void intel_unregister_dsm_handler(void) { return; }
>> > static inline
>> > +void intel_dsm_enable_mux(struct drm_i915_private *i915) { return; }
>> > +static inline
>> > void intel_acpi_device_id_update(struct drm_i915_private *i915) { return; }
>> > #endif /* CONFIG_ACPI */
>> >
>> > diff --git a/drivers/gpu/drm/i915/display/intel_display.c b/drivers/gpu/drm/i915/display/intel_display.c
>> > index a10e26380ef3..d79dae370b20 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_display.c
>> > +++ b/drivers/gpu/drm/i915/display/intel_display.c
>> > @@ -11472,6 +11472,8 @@ void intel_modeset_init_hw(struct drm_i915_private *i915)
>> > {
>> > struct intel_cdclk_state *cdclk_state;
>> >
>> > + intel_dsm_enable_mux(i915);
>> > +
>>
>> This should probably be somewhere around where we do all the other
>> semi ACPI related init (OpRegion/etc.).
>
> Hmm, but Jani prefers to put it inside intel_modeset_*() helpers. But
> I don't see any opregion related functions are being called by
> intel_modeset_*() helpers. Any suggestion?
I think I mainly wanted it in intel_display.c instead of at the driver
top level.
BR,
Jani.
>
> Kai-Heng
>
>>
>> > if (!HAS_DISPLAY(i915))
>> > return;
>> >
>> > --
>> > 2.30.2
>>
>> --
>> Ville Syrjälä
>> Intel
--
Jani Nikula, Intel Open Source Graphics Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2021-05-17 12:16 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-26 15:24 [PATCH v3] drm/i915: Invoke another _DSM to enable MUX on HP Workstation laptops Kai-Heng Feng
2021-04-26 15:24 ` [Intel-gfx] " Kai-Heng Feng
2021-04-26 15:24 ` Kai-Heng Feng
2021-04-26 19:22 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for " Patchwork
2021-04-26 19:53 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-04-27 4:10 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2021-05-11 3:33 ` [PATCH v3] " Kai-Heng Feng
2021-05-11 3:33 ` [Intel-gfx] " Kai-Heng Feng
2021-05-11 3:33 ` Kai-Heng Feng
2021-05-11 18:19 ` Ville Syrjälä
2021-05-11 18:19 ` [Intel-gfx] " Ville Syrjälä
2021-05-11 18:19 ` Ville Syrjälä
2021-05-14 9:38 ` Kai-Heng Feng
2021-05-14 9:38 ` [Intel-gfx] " Kai-Heng Feng
2021-05-14 9:38 ` Kai-Heng Feng
2021-05-17 12:15 ` Jani Nikula
2021-05-17 12:15 ` [Intel-gfx] " Jani Nikula
2021-05-17 12:15 ` Jani Nikula
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.