Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v8 0/5] pm_pme support on display hotplug
@ 2026-09-15  9:25 Vinod Govindapillai
  2026-09-15  9:25 ` [PATCH v8 1/5] drm/xe/pm: introduce PM PME support Vinod Govindapillai
                   ` (8 more replies)
  0 siblings, 9 replies; 17+ messages in thread
From: Vinod Govindapillai @ 2026-09-15  9:25 UTC (permalink / raw)
  To: intel-xe, intel-gfx; +Cc: jouni.hogander, vinod.govindapillai

Introduce PME support for PME capable devices and avoid
HPD polling on runtime suspend. For PME capable devices
HPD will trigger PME which will wakeup the system. And
rest of the runtime resume call is same as before.

v2: Instead of plumbing keep_hpd and pme_capability to
    the existing interfaces, a separate helper function to
    set and get pme capability is added.

    HPD polling is handled directly inside the
    intel_hpd_poll_enable() based on the pme capability
    flag

v3: Lockdep related splats were observed during some rare testing
    scenarios. The PCI PME api to enable wake internally use kmalloc
    and can trigger deadlocks. So the calls to the PCI PME APIs are
    updated and placed within the no reclaim loop. Also any display
    specific calls are isolated within xe / i915 blocks and display
    parent interface is used to tackle the inter dependencies to
    keep the display module design clean. 

v4: No need to maintaining another variable to keep track of PME
    can be generated from HPD in intel_hotplug. Instead the parent
    interface function can be used directly to get the xe.pme.enabled
    to know PME is enabled and configure the IRQ resets and HPD polling

v5: Rebased

v6: Avoid "wakeup" false reporting platforms where PME is not supported

Vinod Govindapillai (5):
  drm/xe/pm: introduce PM PME support
  drm/i915: add pme_enabled() to the parent interface
  drm/i915/xe: plug the pme_enabed implementation for xe
  drm/i915/irq: conditional HPD IRQ resets based on PME capability
  drm/i915/hotplug: avoid HPD polling if the device is PME capable

 .../gpu/drm/i915/display/intel_display_irq.c  | 18 +++++---
 .../gpu/drm/i915/display/intel_display_rpm.c  |  7 +++
 .../gpu/drm/i915/display/intel_display_rpm.h  |  1 +
 drivers/gpu/drm/i915/display/intel_hotplug.c  |  5 +++
 drivers/gpu/drm/xe/display/xe_display_rpm.c   |  6 +++
 drivers/gpu/drm/xe/xe_device_types.h          | 13 ++++++
 drivers/gpu/drm/xe/xe_pci.c                   | 22 ++++++++-
 drivers/gpu/drm/xe/xe_pm.c                    | 45 +++++++++++++++++++
 drivers/gpu/drm/xe/xe_pm.h                    |  2 +
 include/drm/intel/display_parent_interface.h  |  1 +
 10 files changed, 112 insertions(+), 8 deletions(-)

-- 
2.43.0


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

* [PATCH v8 1/5] drm/xe/pm: introduce PM PME support
  2026-09-15  9:25 [PATCH v8 0/5] pm_pme support on display hotplug Vinod Govindapillai
@ 2026-09-15  9:25 ` Vinod Govindapillai
  2026-09-15 12:27   ` Hogander, Jouni
  2026-09-15  9:25 ` [PATCH v8 2/5] drm/i915: add pme_enabled() to the parent interface Vinod Govindapillai
                   ` (7 subsequent siblings)
  8 siblings, 1 reply; 17+ messages in thread
From: Vinod Govindapillai @ 2026-09-15  9:25 UTC (permalink / raw)
  To: intel-xe, intel-gfx; +Cc: jouni.hogander, vinod.govindapillai

Introduce PME support for PME capable devices. Whether device is
PME capable is assessed during PCI probe routine. And the whether
PME is enabled for a specific context is assessed during the PM
runtime suspend call if the device is PME capable.

If the PME is enabled, HPDs can generate PME which in turn call
the runtime resume call and do the wakeup routines. Till now
the driver was relying on HPD polling to wakeup in case of any
HPDs. HPD polling can be avoided in platforms with PME support
and instead rely on this PCI PME for HPD induced wakeup.

v2: access functions for xe.pme.enabled status and clear the pme.
    enabled in case of error in xe_pm_runtime_suspend()

v3: use the local pme_enabled flag to clear the device wakeup
    incase of error

v4: call the devm_device_init_wakeup() only if device is PME
    capable to avoid false wakeup capable reporting in platforms
    where PME is not supported.
    Squash the patch which handled the lockdep deadlock handling

Bspec: 52979, 52980, 68857, 68867, 68970
Assisted-by: GitHub_Copilot:claude-opus-5
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
---
 drivers/gpu/drm/xe/xe_device_types.h | 13 ++++++++
 drivers/gpu/drm/xe/xe_pci.c          | 22 +++++++++++++-
 drivers/gpu/drm/xe/xe_pm.c           | 45 ++++++++++++++++++++++++++++
 drivers/gpu/drm/xe/xe_pm.h           |  2 ++
 4 files changed, 81 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 4661bfce2f4e..bb4234f00453 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -460,6 +460,19 @@ struct xe_device {
 		struct mutex lock;
 	} d3cold;
 
+	/** @pme: Encapsulate pme related stuff */
+	struct {
+		/** @pme.capable: Indicates if device is PME capable */
+		bool capable;
+
+		/** @pme.enabled:
+		 *
+		 * Indicates if PME is enabled - depends on user controllable
+		 * sysfs interface as well
+		 */
+		bool enabled;
+	} pme;
+
 	/** @pm_notifier: Our PM notifier to perform actions in response to various PM events. */
 	struct notifier_block pm_notifier;
 	/** @pm_block: Completion to block validating tasks on suspend / hibernate prepare */
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index c401c8803796..d10633f74aa4 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -1380,6 +1380,8 @@ static int xe_pci_runtime_suspend(struct device *dev)
 {
 	struct pci_dev *pdev = to_pci_dev(dev);
 	struct xe_device *xe = pdev_to_xe_device(pdev);
+	unsigned int flags;
+	bool pme_enabled;
 	int err;
 
 	/*
@@ -1391,9 +1393,25 @@ static int xe_pci_runtime_suspend(struct device *dev)
 	xe_assert(xe, !IS_SRIOV_VF(xe));
 	xe_assert(xe, !pci_num_vf(pdev));
 
+	flags = memalloc_noreclaim_save();
+	pme_enabled = xe->pme.capable && !xe->d3cold.allowed &&
+		      pci_enable_wake(pdev, PCI_D3hot, true) == 0;
+	memalloc_noreclaim_restore(flags);
+
+	xe_pm_update_pme_enabled(xe, pme_enabled);
+
 	err = xe_pm_runtime_suspend(xe);
-	if (err)
+	if (err) {
+		if (pme_enabled) {
+			flags = memalloc_noreclaim_save();
+			pci_enable_wake(pdev, PCI_D3hot, false);
+			memalloc_noreclaim_restore(flags);
+
+			xe_pm_update_pme_enabled(xe, false);
+		}
+
 		return err;
+	}
 
 	pci_save_state(pdev);
 
@@ -1422,6 +1440,8 @@ static int xe_pci_runtime_resume(struct device *dev)
 
 	pci_restore_state(pdev);
 
+	xe_pm_update_pme_enabled(xe, false);
+
 	if (xe->d3cold.allowed) {
 		err = pci_enable_device(pdev);
 		if (err)
diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
index f517bf453b54..e71bb90c9b80 100644
--- a/drivers/gpu/drm/xe/xe_pm.c
+++ b/drivers/gpu/drm/xe/xe_pm.c
@@ -78,6 +78,8 @@
  * management (RPS).
  */
 
+#define HAS_PM_PME_SUPPORT(xe) (GRAPHICS_VERx100(xe) >= 3500)
+
 #ifdef CONFIG_LOCKDEP
 static struct lockdep_map xe_pm_runtime_d3cold_map = {
 	.name = "xe_rpm_d3cold_map"
@@ -384,6 +386,14 @@ int xe_pm_init_early(struct xe_device *xe)
 }
 ALLOW_ERROR_INJECTION(xe_pm_init_early, ERRNO); /* See xe_pci_probe() */
 
+static bool xe_pm_pci_pme_capable(struct xe_device *xe)
+{
+	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
+
+	return HAS_PM_PME_SUPPORT(xe) ?
+		pci_pme_capable(pdev, PCI_D3hot) : false;
+}
+
 /**
  * xe_pm_probe() - Initialize Xe Power Management
  * @xe: the &xe_device instance
@@ -397,6 +407,16 @@ int xe_pm_probe(struct xe_device *xe)
 	xe->d3cold.capable = xe_pm_pci_d3cold_capable(xe);
 	xe_dbg(xe, "d3cold: capable=%s\n", str_yes_no(xe->d3cold.capable));
 
+	xe->pme.capable = xe_pm_pci_pme_capable(xe);
+	xe_dbg(xe, "pme: capable=%s\n", str_yes_no(xe->pme.capable));
+
+	if (xe->pme.capable) {
+		int err = devm_device_init_wakeup(xe->drm.dev);
+
+		if (err)
+			return err;
+	}
+
 	return 0;
 }
 
@@ -650,6 +670,7 @@ int xe_pm_runtime_suspend(struct xe_device *xe)
 	return 0;
 
 out_resume:
+	xe_pm_update_pme_enabled(xe, false);
 	xe_display_pm_runtime_resume(xe);
 	xe_pxp_pm_resume(xe->pxp);
 out:
@@ -993,6 +1014,30 @@ int xe_pm_set_vram_threshold(struct xe_device *xe, u32 threshold)
 	return 0;
 }
 
+/**
+ * xe_pm_pme_enabled - get the current status of PME enabled
+ * @xe: xe device instance
+ *
+ * Returns: True if PME is enabled, false otherwise.
+ */
+bool xe_pm_pme_enabled(struct xe_device *xe)
+{
+	return xe->pme.enabled;
+}
+
+/**
+ * xe_pm_update_pme_enabled - Update the PME enabled state
+ * @xe: xe device instance
+ * @status: New PME enabled status
+ *
+ * Called during runtime suspend / resume. Status is set to True if PME is
+ * enabled during runtime_suspend. Cleared on runtime_resume.
+ */
+void xe_pm_update_pme_enabled(struct xe_device *xe, bool status)
+{
+	xe->pme.enabled = status;
+}
+
 /**
  * xe_pm_d3cold_allowed_toggle - Check conditions to toggle d3cold.allowed
  * @xe: xe device instance
diff --git a/drivers/gpu/drm/xe/xe_pm.h b/drivers/gpu/drm/xe/xe_pm.h
index 6d5ab09cb769..037c73ea4342 100644
--- a/drivers/gpu/drm/xe/xe_pm.h
+++ b/drivers/gpu/drm/xe/xe_pm.h
@@ -33,6 +33,8 @@ bool xe_pm_runtime_resume_and_get(struct xe_device *xe);
 void xe_pm_assert_unbounded_bridge(struct xe_device *xe);
 int xe_pm_set_vram_threshold(struct xe_device *xe, u32 threshold);
 void xe_pm_d3cold_allowed_toggle(struct xe_device *xe);
+bool xe_pm_pme_enabled(struct xe_device *xe);
+void xe_pm_update_pme_enabled(struct xe_device *xe, bool status);
 bool xe_rpm_reclaim_safe(const struct xe_device *xe);
 struct task_struct *xe_pm_read_callback_task(struct xe_device *xe);
 int xe_pm_block_on_suspend(struct xe_device *xe);
-- 
2.43.0


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

* [PATCH v8 2/5] drm/i915: add pme_enabled() to the parent interface
  2026-09-15  9:25 [PATCH v8 0/5] pm_pme support on display hotplug Vinod Govindapillai
  2026-09-15  9:25 ` [PATCH v8 1/5] drm/xe/pm: introduce PM PME support Vinod Govindapillai
@ 2026-09-15  9:25 ` Vinod Govindapillai
  2026-09-15 12:38   ` Hogander, Jouni
  2026-09-15  9:25 ` [PATCH v8 3/5] drm/i915/xe: plug the pme_enabed implementation for xe Vinod Govindapillai
                   ` (6 subsequent siblings)
  8 siblings, 1 reply; 17+ messages in thread
From: Vinod Govindapillai @ 2026-09-15  9:25 UTC (permalink / raw)
  To: intel-xe, intel-gfx; +Cc: jouni.hogander, vinod.govindapillai

PME capabiliy need to be assessed very early during runtime suspend
routine to avoid resetting HPDs during IRQ resets. As display
runtime pm routines are being executed in the independent intel
display driver entry points, we need to have independent access
to the pme status as well. Add a provision to query the optional
pme_enabled to the parent interface so that it could be called
independently based on xe/i915's pme_enabled() implementation.

Assisted-by: GitHub_Copilot:claude-opus-5
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
---
 drivers/gpu/drm/i915/display/intel_display_rpm.c | 7 +++++++
 drivers/gpu/drm/i915/display/intel_display_rpm.h | 1 +
 include/drm/intel/display_parent_interface.h     | 1 +
 3 files changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display_rpm.c b/drivers/gpu/drm/i915/display/intel_display_rpm.c
index 0a331f89b4db..9927119a0fd1 100644
--- a/drivers/gpu/drm/i915/display/intel_display_rpm.c
+++ b/drivers/gpu/drm/i915/display/intel_display_rpm.c
@@ -46,6 +46,13 @@ bool intel_display_rpm_suspended(struct intel_display *display)
 	return display->parent->rpm->suspended(display->drm);
 }
 
+bool intel_display_rpm_pme_enabled(struct intel_display *display)
+{
+	const struct intel_display_rpm_interface *rpm = display->parent->rpm;
+
+	return rpm->pme_enabled && rpm->pme_enabled(display->drm);
+}
+
 void assert_display_rpm_held(struct intel_display *display)
 {
 	display->parent->rpm->assert_held(display->drm);
diff --git a/drivers/gpu/drm/i915/display/intel_display_rpm.h b/drivers/gpu/drm/i915/display/intel_display_rpm.h
index 6ef48515f84b..5d9a1cdddfa7 100644
--- a/drivers/gpu/drm/i915/display/intel_display_rpm.h
+++ b/drivers/gpu/drm/i915/display/intel_display_rpm.h
@@ -21,6 +21,7 @@ void intel_display_rpm_put(struct intel_display *display, struct ref_tracker *wa
 
 /* Only for special cases. */
 bool intel_display_rpm_suspended(struct intel_display *display);
+bool intel_display_rpm_pme_enabled(struct intel_display *display);
 
 void assert_display_rpm_held(struct intel_display *display);
 void intel_display_rpm_assert_block(struct intel_display *display);
diff --git a/include/drm/intel/display_parent_interface.h b/include/drm/intel/display_parent_interface.h
index 5e44c022d1ae..f36134e89cb6 100644
--- a/include/drm/intel/display_parent_interface.h
+++ b/include/drm/intel/display_parent_interface.h
@@ -196,6 +196,7 @@ struct intel_display_rpm_interface {
 	void (*put_unchecked)(const struct drm_device *drm);
 
 	bool (*suspended)(const struct drm_device *drm);
+	bool (*pme_enabled)(const struct drm_device *drm); /* Optional */
 	void (*assert_held)(const struct drm_device *drm);
 	void (*assert_block)(const struct drm_device *drm);
 	void (*assert_unblock)(const struct drm_device *drm);
-- 
2.43.0


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

* [PATCH v8 3/5] drm/i915/xe: plug the pme_enabed implementation for xe
  2026-09-15  9:25 [PATCH v8 0/5] pm_pme support on display hotplug Vinod Govindapillai
  2026-09-15  9:25 ` [PATCH v8 1/5] drm/xe/pm: introduce PM PME support Vinod Govindapillai
  2026-09-15  9:25 ` [PATCH v8 2/5] drm/i915: add pme_enabled() to the parent interface Vinod Govindapillai
@ 2026-09-15  9:25 ` Vinod Govindapillai
  2026-09-15 12:39   ` Hogander, Jouni
  2026-09-15  9:25 ` [PATCH v8 4/5] drm/i915/irq: conditional HPD IRQ resets based on PME capability Vinod Govindapillai
                   ` (5 subsequent siblings)
  8 siblings, 1 reply; 17+ messages in thread
From: Vinod Govindapillai @ 2026-09-15  9:25 UTC (permalink / raw)
  To: intel-xe, intel-gfx; +Cc: jouni.hogander, vinod.govindapillai

Plug the pme_enabled query for xe. It will return the current
PME status for the device. For supported platforms, PME is
enabled during runtime suspend calls if the device is PME is capable.

v2: use the xe_pm_pme_enabled()

Assisted-by: GitHub_Copilot:claude-opus-5
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
---
 drivers/gpu/drm/xe/display/xe_display_rpm.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/gpu/drm/xe/display/xe_display_rpm.c b/drivers/gpu/drm/xe/display/xe_display_rpm.c
index 548b503aa024..57bcfb41bdda 100644
--- a/drivers/gpu/drm/xe/display/xe_display_rpm.c
+++ b/drivers/gpu/drm/xe/display/xe_display_rpm.c
@@ -45,6 +45,11 @@ static bool xe_display_rpm_suspended(const struct drm_device *drm)
 	return pm_runtime_suspended(xe->drm.dev);
 }
 
+static bool xe_display_rpm_pme_enabled(const struct drm_device *drm)
+{
+	return xe_pm_pme_enabled(to_xe_device(drm));
+}
+
 static void xe_display_rpm_assert_held(const struct drm_device *drm)
 {
 	/* FIXME */
@@ -69,6 +74,7 @@ const struct intel_display_rpm_interface xe_display_rpm_interface = {
 	.put_raw = xe_display_rpm_put,
 	.put_unchecked = xe_display_rpm_put_unchecked,
 	.suspended = xe_display_rpm_suspended,
+	.pme_enabled = xe_display_rpm_pme_enabled,
 	.assert_held = xe_display_rpm_assert_held,
 	.assert_block = xe_display_rpm_assert_block,
 	.assert_unblock = xe_display_rpm_assert_unblock
-- 
2.43.0


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

* [PATCH v8 4/5] drm/i915/irq: conditional HPD IRQ resets based on PME capability
  2026-09-15  9:25 [PATCH v8 0/5] pm_pme support on display hotplug Vinod Govindapillai
                   ` (2 preceding siblings ...)
  2026-09-15  9:25 ` [PATCH v8 3/5] drm/i915/xe: plug the pme_enabed implementation for xe Vinod Govindapillai
@ 2026-09-15  9:25 ` Vinod Govindapillai
  2026-09-15  9:43   ` sashiko-bot
  2026-09-15 12:55   ` Hogander, Jouni
  2026-09-15  9:25 ` [PATCH v8 5/5] drm/i915/hotplug: avoid HPD polling if the device is PME capable Vinod Govindapillai
                   ` (4 subsequent siblings)
  8 siblings, 2 replies; 17+ messages in thread
From: Vinod Govindapillai @ 2026-09-15  9:25 UTC (permalink / raw)
  To: intel-xe, intel-gfx; +Cc: jouni.hogander, vinod.govindapillai

If a device supports generating PME from HPDs, resetting HPD IRQs
will be counter productive as HPDs itself will be lost. During
suspend routines, all the IRQs are reset. So if the device is
capable of generating PME rom HPDs, keep the HPD related IRQs from
reset based on the PME capability of the device on a target power
state. PME capability will be assessed and updated separately.

v2: change keep_hpd to reset_hpd

v3: use intel_display_rpm_pme_enabled() directly (JaniN)

v4: remove the unused include file from the previous revision

Bspec: 52979, 52980, 68857, 68867, 68970
Assisted-by: GitHub_Copilot:claude-opus-5
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
---
 .../gpu/drm/i915/display/intel_display_irq.c   | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c b/drivers/gpu/drm/i915/display/intel_display_irq.c
index a59b75830bd1..8ce30112de97 100644
--- a/drivers/gpu/drm/i915/display/intel_display_irq.c
+++ b/drivers/gpu/drm/i915/display/intel_display_irq.c
@@ -2217,8 +2217,10 @@ static void gen11_display_irq_reset(struct intel_display *display)
 	enum pipe pipe;
 	u32 trans_mask = BIT(TRANSCODER_A) | BIT(TRANSCODER_B) |
 		BIT(TRANSCODER_C) | BIT(TRANSCODER_D);
+	bool reset_hpd = !intel_display_rpm_pme_enabled(display);
 
-	intel_de_write(display, GEN11_DISPLAY_INT_CTL, 0);
+	if (reset_hpd)
+		intel_de_write(display, GEN11_DISPLAY_INT_CTL, 0);
 
 	if (DISPLAY_VER(display) >= 12) {
 		enum transcoder trans;
@@ -2250,13 +2252,15 @@ static void gen11_display_irq_reset(struct intel_display *display)
 	irq_reset(display, GEN8_DE_PORT_IRQ_REGS);
 	irq_reset(display, GEN8_DE_MISC_IRQ_REGS);
 
-	if (DISPLAY_VER(display) >= 14)
-		irq_reset(display, PICAINTERRUPT_IRQ_REGS);
-	else
-		irq_reset(display, GEN11_DE_HPD_IRQ_REGS);
+	if (reset_hpd) {
+		if (DISPLAY_VER(display) >= 14)
+			irq_reset(display, PICAINTERRUPT_IRQ_REGS);
+		else
+			irq_reset(display, GEN11_DE_HPD_IRQ_REGS);
 
-	if (INTEL_PCH_TYPE(display) >= PCH_ICP)
-		irq_reset(display, SDE_IRQ_REGS);
+		if (INTEL_PCH_TYPE(display) >= PCH_ICP)
+			irq_reset(display, SDE_IRQ_REGS);
+	}
 }
 
 void gen8_irq_power_well_post_enable(struct intel_display *display,
-- 
2.43.0


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

* [PATCH v8 5/5] drm/i915/hotplug: avoid HPD polling if the device is PME capable
  2026-09-15  9:25 [PATCH v8 0/5] pm_pme support on display hotplug Vinod Govindapillai
                   ` (3 preceding siblings ...)
  2026-09-15  9:25 ` [PATCH v8 4/5] drm/i915/irq: conditional HPD IRQ resets based on PME capability Vinod Govindapillai
@ 2026-09-15  9:25 ` Vinod Govindapillai
  2026-09-15 12:55   ` Hogander, Jouni
  2026-09-15  9:34 ` ✓ CI.KUnit: success for pm_pme support on display hotplug (rev8) Patchwork
                   ` (3 subsequent siblings)
  8 siblings, 1 reply; 17+ messages in thread
From: Vinod Govindapillai @ 2026-09-15  9:25 UTC (permalink / raw)
  To: intel-xe, intel-gfx; +Cc: jouni.hogander, vinod.govindapillai

In supported devices, HPDs can generate PME and which in turn
can invoke runtime resume calls for xe. No need to keep the
HPD polling in such PME capable devices.

v2: use intel_display_rpm_pme_enabled() directly (JaniN)

Bspec: 52979, 52980, 68857, 68867, 68970
Assisted-by: GitHub_Copilot:claude-opus-5
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
---
 drivers/gpu/drm/i915/display/intel_hotplug.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.c b/drivers/gpu/drm/i915/display/intel_hotplug.c
index 970aa95ee344..d095eb13dc06 100644
--- a/drivers/gpu/drm/i915/display/intel_hotplug.c
+++ b/drivers/gpu/drm/i915/display/intel_hotplug.c
@@ -867,6 +867,11 @@ void intel_hpd_poll_enable(struct intel_display *display)
 	if (!HAS_DISPLAY(display) || !intel_display_device_enabled(display))
 		return;
 
+	if (intel_display_rpm_pme_enabled(display)) {
+		drm_dbg_kms(display->drm, "PME wake capable device, skipping HPD polling.\n");
+		return;
+	}
+
 	WRITE_ONCE(display->hotplug.poll_enabled, true);
 
 	/*
-- 
2.43.0


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

* ✓ CI.KUnit: success for pm_pme support on display hotplug (rev8)
  2026-09-15  9:25 [PATCH v8 0/5] pm_pme support on display hotplug Vinod Govindapillai
                   ` (4 preceding siblings ...)
  2026-09-15  9:25 ` [PATCH v8 5/5] drm/i915/hotplug: avoid HPD polling if the device is PME capable Vinod Govindapillai
@ 2026-09-15  9:34 ` Patchwork
  2026-09-15  9:50 ` ✗ CI.checksparse: warning " Patchwork
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-09-15  9:34 UTC (permalink / raw)
  To: Vinod Govindapillai; +Cc: intel-xe

== Series Details ==

Series: pm_pme support on display hotplug (rev8)
URL   : https://patchwork.freedesktop.org/series/172305/
State : success

== Summary ==

+ trap cleanup EXIT
+ kunitconfigs=('/kernel/drivers/gpu/tests/.kunitconfig' '/kernel/drivers/gpu/drm/xe/.kunitconfig' '/kernel/drivers/gpu/drm/tests/.kunitconfig' '/kernel/drivers/gpu/drm/ttm/tests/.kunitconfig' '/kernel/drivers/dma-buf/.kunitconfig')
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/tests/.kunitconfig
[09:32:50] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:32:54] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[09:33:14] Starting KUnit Kernel (1/1)...
[09:33:14] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:33:15] ============= refcount_interrupt (4 subtests) ==============
[09:33:15] [PASSED] test_single_irq_change
[09:33:15] [PASSED] test_nested_irq_change
[09:33:15] [PASSED] test_multiple_irq_change
[09:33:15] [PASSED] test_irq_save
[09:33:15] =============== [PASSED] refcount_interrupt ================
[09:33:15] ================= gpu_buddy (14 subtests) ==================
[09:33:15] [PASSED] gpu_test_buddy_alloc_limit
[09:33:15] [PASSED] gpu_test_buddy_alloc_optimistic
[09:33:15] [PASSED] gpu_test_buddy_alloc_pessimistic
[09:33:15] [PASSED] gpu_test_buddy_alloc_pathological
[09:33:15] [PASSED] gpu_test_buddy_alloc_contiguous
[09:33:15] [PASSED] gpu_test_buddy_alloc_clear
[09:33:15] [PASSED] gpu_test_buddy_alloc_range
[09:33:15] [PASSED] gpu_test_buddy_alloc_range_bias
[09:33:16] [PASSED] gpu_test_buddy_fragmentation_performance
[09:33:16] [PASSED] gpu_test_buddy_dirty_tracker_performance
[09:33:16] [PASSED] gpu_test_buddy_alloc_exceeds_max_order
[09:33:16] [PASSED] gpu_test_buddy_offset_aligned_allocation
[09:33:16] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress
[09:33:16] [PASSED] gpu_test_buddy_addr_to_block
[09:33:16] ==================== [PASSED] gpu_buddy ====================
[09:33:16] ============================================================
[09:33:16] Testing complete. Ran 18 tests: passed: 18
[09:33:16] Elapsed time: 26.621s total, 4.469s configuring, 20.234s building, 1.869s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/xe/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[09:33:17] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:33:18] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
../drivers/gpu/drm/drm_bridge.c: In function ‘drm_bridge_atomic_print_priv_state’:
../drivers/gpu/drm/drm_bridge.c:556:73: warning: passing argument 1 of ‘drm_priv_to_bridge_state’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  556 |         const struct drm_bridge_state *state = drm_priv_to_bridge_state(s);
      |                                                                         ^
In file included from ../include/drm/drm_bridge.h:31,
                 from ../drivers/gpu/drm/drm_bridge.c:33:
../include/drm/drm_atomic.h:1401:52: note: expected ‘struct drm_private_state *’ but argument is of type ‘const struct drm_private_state *’
 1401 | drm_priv_to_bridge_state(struct drm_private_state *priv)
      |                          ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~

[09:33:52] Starting KUnit Kernel (1/1)...
[09:33:52] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:33:52] ============= refcount_interrupt (4 subtests) ==============
[09:33:52] [PASSED] test_single_irq_change
[09:33:52] [PASSED] test_nested_irq_change
[09:33:52] [PASSED] test_multiple_irq_change
[09:33:52] [PASSED] test_irq_save
[09:33:52] =============== [PASSED] refcount_interrupt ================
[09:33:52] ================== guc_buf (11 subtests) ===================
[09:33:52] [PASSED] test_smallest
[09:33:52] [PASSED] test_largest
[09:33:52] [PASSED] test_granular
[09:33:52] [PASSED] test_unique
[09:33:52] [PASSED] test_overlap
[09:33:52] [PASSED] test_reusable
[09:33:52] [PASSED] test_too_big
[09:33:52] [PASSED] test_flush
[09:33:52] [PASSED] test_lookup
[09:33:52] [PASSED] test_data
[09:33:52] [PASSED] test_class
[09:33:52] ===================== [PASSED] guc_buf =====================
[09:33:52] =================== guc_dbm (7 subtests) ===================
[09:33:52] [PASSED] test_empty
[09:33:52] [PASSED] test_default
[09:33:52] ======================== test_size  ========================
[09:33:52] [PASSED] 4
[09:33:52] [PASSED] 8
[09:33:52] [PASSED] 32
[09:33:52] [PASSED] 256
[09:33:52] ==================== [PASSED] test_size ====================
[09:33:52] ======================= test_reuse  ========================
[09:33:52] [PASSED] 4
[09:33:52] [PASSED] 8
[09:33:52] [PASSED] 32
[09:33:52] [PASSED] 256
[09:33:52] =================== [PASSED] test_reuse ====================
[09:33:52] =================== test_range_overlap  ====================
[09:33:52] [PASSED] 4
[09:33:52] [PASSED] 8
[09:33:52] [PASSED] 32
[09:33:52] [PASSED] 256
[09:33:52] =============== [PASSED] test_range_overlap ================
[09:33:52] =================== test_range_compact  ====================
[09:33:52] [PASSED] 4
[09:33:52] [PASSED] 8
[09:33:52] [PASSED] 32
[09:33:52] [PASSED] 256
[09:33:52] =============== [PASSED] test_range_compact ================
[09:33:52] ==================== test_range_spare  =====================
[09:33:52] [PASSED] 4
[09:33:52] [PASSED] 8
[09:33:52] [PASSED] 32
[09:33:52] [PASSED] 256
[09:33:52] ================ [PASSED] test_range_spare =================
[09:33:52] ===================== [PASSED] guc_dbm =====================
[09:33:52] =================== guc_idm (6 subtests) ===================
[09:33:52] [PASSED] bad_init
[09:33:52] [PASSED] no_init
[09:33:52] [PASSED] init_fini
[09:33:52] [PASSED] check_used
[09:33:52] [PASSED] check_quota
[09:33:52] [PASSED] check_all
[09:33:52] ===================== [PASSED] guc_idm =====================
[09:33:52] =============== guc_klv_helpers (9 subtests) ===============
[09:33:52] [PASSED] test_count
[09:33:52] [PASSED] test_encode_u32
[09:33:52] [PASSED] test_encode_u64
[09:33:52] [PASSED] test_encode_string
[09:33:52] [PASSED] test_encode_object_raw
[09:33:52] [PASSED] test_encode_object_klv
[09:33:52] [PASSED] test_encode_object_nested
[09:33:52] [PASSED] test_encode_object_basic
[09:33:52] [PASSED] test_print
[09:33:52] ================= [PASSED] guc_klv_helpers =================
[09:33:52] =================== xe_log (4 subtests) ====================
[09:33:52] [PASSED] demo_cper
[09:33:52] [PASSED] demo_dmesg
[09:33:52] ======================= test_dmesg  ========================
[09:33:52] [PASSED] test_fatal
[09:33:52] [PASSED] test_fatal_tile
[09:33:52] [PASSED] test_fatal_gt
[09:33:52] [PASSED] test_fatal_comp
[09:33:52] [PASSED] test_fatal_comp_tile
[09:33:52] [PASSED] test_fatal_comp_gt
[09:33:52] [PASSED] test_fatal_all
[09:33:52] [PASSED] test_recoverable
[09:33:52] [PASSED] test_recoverable_tile
[09:33:52] [PASSED] test_recoverable_gt
[09:33:52] [PASSED] test_recoverable_comp
[09:33:52] [PASSED] test_recoverable_comp_tile
[09:33:52] [PASSED] test_recoverable_comp_gt
[09:33:52] [PASSED] test_recoverable_all
[09:33:52] [PASSED] test_info
[09:33:52] [PASSED] test_info_tile
[09:33:52] [PASSED] test_info_gt
[09:33:52] [PASSED] test_info_err
[09:33:52] [PASSED] test_info_comp
[09:33:52] [PASSED] test_info_comp_tile
[09:33:52] [PASSED] test_info_comp_gt
[09:33:52] [PASSED] test_info_all
[09:33:52] [PASSED] test_hw_fatal
[09:33:52] [PASSED] test_hw_recoverable
[09:33:52] [PASSED] test_hw_corrected
[09:33:52] [PASSED] test_hw_informational
[09:33:52] =================== [PASSED] test_dmesg ====================
[09:33:52] ====================== test_invalid  =======================
[09:33:52] [SKIPPED] no-component no-location no-warn (requires CONFIG_DRM_XE_DEBUG)
[09:33:52] [SKIPPED] reserved location (requires CONFIG_DRM_XE_DEBUG)
[09:33:52] [SKIPPED] unknown location (requires CONFIG_DRM_XE_DEBUG)
[09:33:52] [SKIPPED] nonzero-device-id location (requires CONFIG_DRM_XE_DEBUG)
[09:33:52] [SKIPPED] invalid-tile-id location (requires CONFIG_DRM_XE_DEBUG)
[09:33:52] [SKIPPED] invalid-gt-id location (requires CONFIG_DRM_XE_DEBUG)
[09:33:52] [SKIPPED] unknown component class (requires CONFIG_DRM_XE_DEBUG)
[09:33:52] [SKIPPED] unknown system component (requires CONFIG_DRM_XE_DEBUG)
[09:33:52] [SKIPPED] unknown hardware component (requires CONFIG_DRM_XE_DEBUG)
[09:33:52] [SKIPPED] unknown component and location (requires CONFIG_DRM_XE_DEBUG)
[09:33:52] ================== [SKIPPED] test_invalid ==================
[09:33:52] ===================== [PASSED] xe_log ======================
[09:33:52] ================== no_relay (3 subtests) ===================
[09:33:52] [PASSED] xe_drops_guc2pf_if_not_ready
[09:33:52] [PASSED] xe_drops_guc2vf_if_not_ready
[09:33:52] [PASSED] xe_rejects_send_if_not_ready
[09:33:52] ==================== [PASSED] no_relay =====================
[09:33:52] ================== pf_relay (14 subtests) ==================
[09:33:52] [PASSED] pf_rejects_guc2pf_too_short
[09:33:52] [PASSED] pf_rejects_guc2pf_too_long
[09:33:52] [PASSED] pf_rejects_guc2pf_no_payload
[09:33:52] [PASSED] pf_fails_no_payload
[09:33:52] [PASSED] pf_fails_bad_origin
[09:33:52] [PASSED] pf_fails_bad_type
[09:33:52] [PASSED] pf_txn_reports_error
[09:33:52] [PASSED] pf_txn_sends_pf2guc
[09:33:52] [PASSED] pf_sends_pf2guc
[09:33:52] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[09:33:52] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[09:33:52] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[09:33:52] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[09:33:52] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[09:33:52] ==================== [PASSED] pf_relay =====================
[09:33:52] ================== vf_relay (3 subtests) ===================
[09:33:52] [PASSED] vf_rejects_guc2vf_too_short
[09:33:52] [PASSED] vf_rejects_guc2vf_too_long
[09:33:52] [PASSED] vf_rejects_guc2vf_no_payload
[09:33:52] ==================== [PASSED] vf_relay =====================
[09:33:52] ================ pf_gt_config (9 subtests) =================
[09:33:52] [PASSED] fair_contexts_1vf
[09:33:52] [PASSED] fair_doorbells_1vf
[09:33:52] [PASSED] fair_ggtt_1vf
[09:33:52] ====================== fair_vram_1vf  ======================
[09:33:52] [PASSED] 3.50 GiB
[09:33:52] [PASSED] 11.5 GiB
[09:33:52] [PASSED] 15.5 GiB
[09:33:52] [PASSED] 31.5 GiB
[09:33:52] [PASSED] 63.5 GiB
[09:33:52] [PASSED] 1.91 GiB
[09:33:52] ================== [PASSED] fair_vram_1vf ==================
[09:33:52] ================ fair_vram_1vf_admin_only  =================
[09:33:52] [PASSED] 3.50 GiB
[09:33:52] [PASSED] 11.5 GiB
[09:33:52] [PASSED] 15.5 GiB
[09:33:52] [PASSED] 31.5 GiB
[09:33:52] [PASSED] 63.5 GiB
[09:33:52] [PASSED] 1.91 GiB
[09:33:52] ============ [PASSED] fair_vram_1vf_admin_only =============
[09:33:52] ====================== fair_contexts  ======================
[09:33:52] [PASSED] 1 VF
[09:33:52] [PASSED] 2 VFs
[09:33:52] [PASSED] 3 VFs
[09:33:52] [PASSED] 4 VFs
[09:33:52] [PASSED] 5 VFs
[09:33:52] [PASSED] 6 VFs
[09:33:52] [PASSED] 7 VFs
[09:33:52] [PASSED] 8 VFs
[09:33:52] [PASSED] 9 VFs
[09:33:52] [PASSED] 10 VFs
[09:33:52] [PASSED] 11 VFs
[09:33:52] [PASSED] 12 VFs
[09:33:52] [PASSED] 13 VFs
[09:33:52] [PASSED] 14 VFs
[09:33:52] [PASSED] 15 VFs
[09:33:52] [PASSED] 16 VFs
[09:33:52] [PASSED] 17 VFs
[09:33:52] [PASSED] 18 VFs
[09:33:52] [PASSED] 19 VFs
[09:33:52] [PASSED] 20 VFs
[09:33:52] [PASSED] 21 VFs
[09:33:52] [PASSED] 22 VFs
[09:33:52] [PASSED] 23 VFs
[09:33:52] [PASSED] 24 VFs
[09:33:52] [PASSED] 25 VFs
[09:33:52] [PASSED] 26 VFs
[09:33:52] [PASSED] 27 VFs
[09:33:52] [PASSED] 28 VFs
[09:33:52] [PASSED] 29 VFs
[09:33:52] [PASSED] 30 VFs
[09:33:52] [PASSED] 31 VFs
[09:33:52] [PASSED] 32 VFs
[09:33:52] [PASSED] 33 VFs
[09:33:52] [PASSED] 34 VFs
[09:33:52] [PASSED] 35 VFs
[09:33:52] [PASSED] 36 VFs
[09:33:52] [PASSED] 37 VFs
[09:33:52] [PASSED] 38 VFs
[09:33:52] [PASSED] 39 VFs
[09:33:52] [PASSED] 40 VFs
[09:33:52] [PASSED] 41 VFs
[09:33:52] [PASSED] 42 VFs
[09:33:52] [PASSED] 43 VFs
[09:33:52] [PASSED] 44 VFs
[09:33:52] [PASSED] 45 VFs
[09:33:52] [PASSED] 46 VFs
[09:33:52] [PASSED] 47 VFs
[09:33:52] [PASSED] 48 VFs
[09:33:52] [PASSED] 49 VFs
[09:33:52] [PASSED] 50 VFs
[09:33:52] [PASSED] 51 VFs
[09:33:52] [PASSED] 52 VFs
[09:33:52] [PASSED] 53 VFs
[09:33:52] [PASSED] 54 VFs
[09:33:52] [PASSED] 55 VFs
[09:33:52] [PASSED] 56 VFs
[09:33:52] [PASSED] 57 VFs
[09:33:52] [PASSED] 58 VFs
[09:33:52] [PASSED] 59 VFs
[09:33:52] [PASSED] 60 VFs
[09:33:52] [PASSED] 61 VFs
[09:33:52] [PASSED] 62 VFs
[09:33:52] [PASSED] 63 VFs
[09:33:52] ================== [PASSED] fair_contexts ==================
[09:33:52] ===================== fair_doorbells  ======================
[09:33:52] [PASSED] 1 VF
[09:33:52] [PASSED] 2 VFs
[09:33:52] [PASSED] 3 VFs
[09:33:52] [PASSED] 4 VFs
[09:33:52] [PASSED] 5 VFs
[09:33:52] [PASSED] 6 VFs
[09:33:52] [PASSED] 7 VFs
[09:33:52] [PASSED] 8 VFs
[09:33:52] [PASSED] 9 VFs
[09:33:52] [PASSED] 10 VFs
[09:33:52] [PASSED] 11 VFs
[09:33:52] [PASSED] 12 VFs
[09:33:52] [PASSED] 13 VFs
[09:33:52] [PASSED] 14 VFs
[09:33:52] [PASSED] 15 VFs
[09:33:52] [PASSED] 16 VFs
[09:33:52] [PASSED] 17 VFs
[09:33:52] [PASSED] 18 VFs
[09:33:52] [PASSED] 19 VFs
[09:33:52] [PASSED] 20 VFs
[09:33:52] [PASSED] 21 VFs
[09:33:52] [PASSED] 22 VFs
[09:33:52] [PASSED] 23 VFs
[09:33:52] [PASSED] 24 VFs
[09:33:52] [PASSED] 25 VFs
[09:33:52] [PASSED] 26 VFs
[09:33:52] [PASSED] 27 VFs
[09:33:52] [PASSED] 28 VFs
[09:33:52] [PASSED] 29 VFs
[09:33:52] [PASSED] 30 VFs
[09:33:52] [PASSED] 31 VFs
[09:33:52] [PASSED] 32 VFs
[09:33:52] [PASSED] 33 VFs
[09:33:52] [PASSED] 34 VFs
[09:33:52] [PASSED] 35 VFs
[09:33:52] [PASSED] 36 VFs
[09:33:52] [PASSED] 37 VFs
[09:33:52] [PASSED] 38 VFs
[09:33:52] [PASSED] 39 VFs
[09:33:52] [PASSED] 40 VFs
[09:33:52] [PASSED] 41 VFs
[09:33:52] [PASSED] 42 VFs
[09:33:52] [PASSED] 43 VFs
[09:33:52] [PASSED] 44 VFs
[09:33:52] [PASSED] 45 VFs
[09:33:52] [PASSED] 46 VFs
[09:33:52] [PASSED] 47 VFs
[09:33:52] [PASSED] 48 VFs
[09:33:52] [PASSED] 49 VFs
[09:33:52] [PASSED] 50 VFs
[09:33:52] [PASSED] 51 VFs
[09:33:52] [PASSED] 52 VFs
[09:33:52] [PASSED] 53 VFs
[09:33:52] [PASSED] 54 VFs
[09:33:52] [PASSED] 55 VFs
[09:33:52] [PASSED] 56 VFs
[09:33:52] [PASSED] 57 VFs
[09:33:52] [PASSED] 58 VFs
[09:33:52] [PASSED] 59 VFs
[09:33:52] [PASSED] 60 VFs
[09:33:52] [PASSED] 61 VFs
[09:33:52] [PASSED] 62 VFs
[09:33:52] [PASSED] 63 VFs
[09:33:52] ================= [PASSED] fair_doorbells ==================
[09:33:52] ======================== fair_ggtt  ========================
[09:33:52] [PASSED] 1 VF
[09:33:52] [PASSED] 2 VFs
[09:33:52] [PASSED] 3 VFs
[09:33:52] [PASSED] 4 VFs
[09:33:52] [PASSED] 5 VFs
[09:33:52] [PASSED] 6 VFs
[09:33:52] [PASSED] 7 VFs
[09:33:52] [PASSED] 8 VFs
[09:33:52] [PASSED] 9 VFs
[09:33:52] [PASSED] 10 VFs
[09:33:52] [PASSED] 11 VFs
[09:33:52] [PASSED] 12 VFs
[09:33:52] [PASSED] 13 VFs
[09:33:52] [PASSED] 14 VFs
[09:33:52] [PASSED] 15 VFs
[09:33:52] [PASSED] 16 VFs
[09:33:52] [PASSED] 17 VFs
[09:33:52] [PASSED] 18 VFs
[09:33:52] [PASSED] 19 VFs
[09:33:52] [PASSED] 20 VFs
[09:33:52] [PASSED] 21 VFs
[09:33:52] [PASSED] 22 VFs
[09:33:52] [PASSED] 23 VFs
[09:33:52] [PASSED] 24 VFs
[09:33:52] [PASSED] 25 VFs
[09:33:52] [PASSED] 26 VFs
[09:33:52] [PASSED] 27 VFs
[09:33:52] [PASSED] 28 VFs
[09:33:52] [PASSED] 29 VFs
[09:33:52] [PASSED] 30 VFs
[09:33:52] [PASSED] 31 VFs
[09:33:52] [PASSED] 32 VFs
[09:33:52] [PASSED] 33 VFs
[09:33:52] [PASSED] 34 VFs
[09:33:52] [PASSED] 35 VFs
[09:33:52] [PASSED] 36 VFs
[09:33:52] [PASSED] 37 VFs
[09:33:52] [PASSED] 38 VFs
[09:33:52] [PASSED] 39 VFs
[09:33:52] [PASSED] 40 VFs
[09:33:52] [PASSED] 41 VFs
[09:33:52] [PASSED] 42 VFs
[09:33:52] [PASSED] 43 VFs
[09:33:52] [PASSED] 44 VFs
[09:33:52] [PASSED] 45 VFs
[09:33:52] [PASSED] 46 VFs
[09:33:52] [PASSED] 47 VFs
[09:33:52] [PASSED] 48 VFs
[09:33:52] [PASSED] 49 VFs
[09:33:52] [PASSED] 50 VFs
[09:33:52] [PASSED] 51 VFs
[09:33:52] [PASSED] 52 VFs
[09:33:52] [PASSED] 53 VFs
[09:33:52] [PASSED] 54 VFs
[09:33:52] [PASSED] 55 VFs
[09:33:52] [PASSED] 56 VFs
[09:33:52] [PASSED] 57 VFs
[09:33:52] [PASSED] 58 VFs
[09:33:52] [PASSED] 59 VFs
[09:33:52] [PASSED] 60 VFs
[09:33:52] [PASSED] 61 VFs
[09:33:52] [PASSED] 62 VFs
[09:33:52] [PASSED] 63 VFs
[09:33:52] ==================== [PASSED] fair_ggtt ====================
[09:33:52] ======================== fair_vram  ========================
[09:33:52] [PASSED] 1 VF
[09:33:52] [PASSED] 2 VFs
[09:33:52] [PASSED] 3 VFs
[09:33:52] [PASSED] 4 VFs
[09:33:52] [PASSED] 5 VFs
[09:33:52] [PASSED] 6 VFs
[09:33:52] [PASSED] 7 VFs
[09:33:52] [PASSED] 8 VFs
[09:33:52] [PASSED] 9 VFs
[09:33:52] [PASSED] 10 VFs
[09:33:52] [PASSED] 11 VFs
[09:33:52] [PASSED] 12 VFs
[09:33:52] [PASSED] 13 VFs
[09:33:52] [PASSED] 14 VFs
[09:33:52] [PASSED] 15 VFs
[09:33:52] [PASSED] 16 VFs
[09:33:52] [PASSED] 17 VFs
[09:33:52] [PASSED] 18 VFs
[09:33:52] [PASSED] 19 VFs
[09:33:52] [PASSED] 20 VFs
[09:33:52] [PASSED] 21 VFs
[09:33:52] [PASSED] 22 VFs
[09:33:52] [PASSED] 23 VFs
[09:33:52] [PASSED] 24 VFs
[09:33:52] [PASSED] 25 VFs
[09:33:52] [PASSED] 26 VFs
[09:33:52] [PASSED] 27 VFs
[09:33:52] [PASSED] 28 VFs
[09:33:52] [PASSED] 29 VFs
[09:33:52] [PASSED] 30 VFs
[09:33:52] [PASSED] 31 VFs
[09:33:52] [PASSED] 32 VFs
[09:33:52] [PASSED] 33 VFs
[09:33:52] [PASSED] 34 VFs
[09:33:52] [PASSED] 35 VFs
[09:33:52] [PASSED] 36 VFs
[09:33:52] [PASSED] 37 VFs
[09:33:52] [PASSED] 38 VFs
[09:33:52] [PASSED] 39 VFs
[09:33:52] [PASSED] 40 VFs
[09:33:52] [PASSED] 41 VFs
[09:33:52] [PASSED] 42 VFs
[09:33:52] [PASSED] 43 VFs
[09:33:52] [PASSED] 44 VFs
[09:33:52] [PASSED] 45 VFs
[09:33:52] [PASSED] 46 VFs
[09:33:52] [PASSED] 47 VFs
[09:33:52] [PASSED] 48 VFs
[09:33:52] [PASSED] 49 VFs
[09:33:52] [PASSED] 50 VFs
[09:33:52] [PASSED] 51 VFs
[09:33:52] [PASSED] 52 VFs
[09:33:52] [PASSED] 53 VFs
[09:33:52] [PASSED] 54 VFs
[09:33:52] [PASSED] 55 VFs
[09:33:52] [PASSED] 56 VFs
[09:33:52] [PASSED] 57 VFs
[09:33:52] [PASSED] 58 VFs
[09:33:52] [PASSED] 59 VFs
[09:33:52] [PASSED] 60 VFs
[09:33:52] [PASSED] 61 VFs
[09:33:52] [PASSED] 62 VFs
[09:33:52] [PASSED] 63 VFs
[09:33:52] ==================== [PASSED] fair_vram ====================
[09:33:52] ================== [PASSED] pf_gt_config ===================
[09:33:52] ===================== lmtt (1 subtest) =====================
[09:33:52] ======================== test_ops  =========================
[09:33:52] [PASSED] 2-level
[09:33:52] [PASSED] multi-level
[09:33:52] ==================== [PASSED] test_ops =====================
[09:33:52] ====================== [PASSED] lmtt =======================
[09:33:52] ================= sriov_packet (1 subtest) =================
[09:33:52] [PASSED] test_descriptor_init
[09:33:52] ================== [PASSED] sriov_packet ===================
[09:33:52] ================= pf_service (11 subtests) =================
[09:33:52] [PASSED] pf_negotiate_any
[09:33:52] [PASSED] pf_negotiate_base_match
[09:33:52] [PASSED] pf_negotiate_base_newer
[09:33:52] [PASSED] pf_negotiate_base_next
[09:33:52] [SKIPPED] pf_negotiate_base_older (no older minor)
[09:33:52] [PASSED] pf_negotiate_base_prev
[09:33:52] [PASSED] pf_negotiate_latest_match
[09:33:52] [PASSED] pf_negotiate_latest_newer
[09:33:52] [PASSED] pf_negotiate_latest_next
[09:33:52] [SKIPPED] pf_negotiate_latest_older (no older minor)
[09:33:52] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[09:33:52] =================== [PASSED] pf_service ====================
[09:33:52] ================= xe_guc_g2g (2 subtests) ==================
[09:33:52] ============== xe_live_guc_g2g_kunit_default  ==============
[09:33:52] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[09:33:52] ============== xe_live_guc_g2g_kunit_allmem  ===============
[09:33:52] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[09:33:52] =================== [SKIPPED] xe_guc_g2g ===================
[09:33:52] =================== xe_mocs (2 subtests) ===================
[09:33:52] ================ xe_live_mocs_kernel_kunit  ================
[09:33:52] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[09:33:52] ================ xe_live_mocs_reset_kunit  =================
[09:33:52] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[09:33:52] ==================== [SKIPPED] xe_mocs =====================
[09:33:52] ================= xe_migrate (2 subtests) ==================
[09:33:52] ================= xe_migrate_sanity_kunit  =================
[09:33:52] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[09:33:52] ================== xe_validate_ccs_kunit  ==================
[09:33:52] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[09:33:52] =================== [SKIPPED] xe_migrate ===================
[09:33:52] ================== xe_dma_buf (1 subtest) ==================
[09:33:52] ==================== xe_dma_buf_kunit  =====================
[09:33:52] ================ [SKIPPED] xe_dma_buf_kunit ================
[09:33:52] =================== [SKIPPED] xe_dma_buf ===================
[09:33:52] ================= xe_bo_shrink (1 subtest) =================
[09:33:52] =================== xe_bo_shrink_kunit  ====================
[09:33:52] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[09:33:52] ================== [SKIPPED] xe_bo_shrink ==================
[09:33:52] ==================== xe_bo (2 subtests) ====================
[09:33:52] ================== xe_ccs_migrate_kunit  ===================
[09:33:52] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[09:33:52] ==================== xe_bo_evict_kunit  ====================
[09:33:52] =============== [SKIPPED] xe_bo_evict_kunit ================
[09:33:52] ===================== [SKIPPED] xe_bo ======================
[09:33:52] =================== xe_any (9 subtests) ====================
[09:33:52] [PASSED] test_to_xe
[09:33:53] [PASSED] test_to_dev
[09:33:53] [PASSED] test_to_pdev
[09:33:53] [PASSED] test_to_drm
[09:33:53] [PASSED] test_if_pdev
[09:33:53] [PASSED] test_if_xe
[09:33:53] [PASSED] test_if_tile
[09:33:53] [PASSED] test_if_gt
[09:33:53] [PASSED] test_to_id
[09:33:53] ===================== [PASSED] xe_any ======================
[09:33:53] ==================== args (13 subtests) ====================
[09:33:53] [PASSED] count_args_test
[09:33:53] [PASSED] call_args_example
[09:33:53] [PASSED] call_args_test
[09:33:53] [PASSED] drop_first_arg_example
[09:33:53] [PASSED] drop_first_arg_test
[09:33:53] [PASSED] first_arg_example
[09:33:53] [PASSED] first_arg_test
[09:33:53] [PASSED] last_arg_example
[09:33:53] [PASSED] last_arg_test
[09:33:53] [PASSED] pick_arg_example
[09:33:53] [PASSED] if_args_example
[09:33:53] [PASSED] if_args_test
[09:33:53] [PASSED] sep_comma_example
[09:33:53] ====================== [PASSED] args =======================
[09:33:53] =================== xe_pci (3 subtests) ====================
[09:33:53] ==================== check_graphics_ip  ====================
[09:33:53] [PASSED] 12.00 Xe_LP
[09:33:53] [PASSED] 12.10 Xe_LP+
[09:33:53] [PASSED] 12.55 Xe_HPG
[09:33:53] [PASSED] 12.60 Xe_HPC
[09:33:53] [PASSED] 12.70 Xe_LPG
[09:33:53] [PASSED] 12.71 Xe_LPG
[09:33:53] [PASSED] 12.74 Xe_LPG+
[09:33:53] [PASSED] 20.01 Xe2_HPG
[09:33:53] [PASSED] 20.02 Xe2_HPG
[09:33:53] [PASSED] 20.04 Xe2_LPG
[09:33:53] [PASSED] 30.00 Xe3_LPG
[09:33:53] [PASSED] 30.01 Xe3_LPG
[09:33:53] [PASSED] 30.03 Xe3_LPG
[09:33:53] [PASSED] 30.04 Xe3_LPG
[09:33:53] [PASSED] 30.05 Xe3_LPG
[09:33:53] [PASSED] 35.10 Xe3p_LPG
[09:33:53] [PASSED] 35.11 Xe3p_XPC
[09:33:53] ================ [PASSED] check_graphics_ip ================
[09:33:53] ===================== check_media_ip  ======================
[09:33:53] [PASSED] 12.00 Xe_M
[09:33:53] [PASSED] 12.55 Xe_HPM
[09:33:53] [PASSED] 13.00 Xe_LPM+
[09:33:53] [PASSED] 13.01 Xe2_HPM
[09:33:53] [PASSED] 20.00 Xe2_LPM
[09:33:53] [PASSED] 30.00 Xe3_LPM
[09:33:53] [PASSED] 30.02 Xe3_LPM
[09:33:53] [PASSED] 35.00 Xe3p_LPM
[09:33:53] [PASSED] 35.03 Xe3p_HPM
[09:33:53] ================= [PASSED] check_media_ip ==================
[09:33:53] =================== check_platform_desc  ===================
[09:33:53] [PASSED] 0x9A60 (TIGERLAKE)
[09:33:53] [PASSED] 0x9A68 (TIGERLAKE)
[09:33:53] [PASSED] 0x9A70 (TIGERLAKE)
[09:33:53] [PASSED] 0x9A40 (TIGERLAKE)
[09:33:53] [PASSED] 0x9A49 (TIGERLAKE)
[09:33:53] [PASSED] 0x9A59 (TIGERLAKE)
[09:33:53] [PASSED] 0x9A78 (TIGERLAKE)
[09:33:53] [PASSED] 0x9AC0 (TIGERLAKE)
[09:33:53] [PASSED] 0x9AC9 (TIGERLAKE)
[09:33:53] [PASSED] 0x9AD9 (TIGERLAKE)
[09:33:53] [PASSED] 0x9AF8 (TIGERLAKE)
[09:33:53] [PASSED] 0x4C80 (ROCKETLAKE)
[09:33:53] [PASSED] 0x4C8A (ROCKETLAKE)
[09:33:53] [PASSED] 0x4C8B (ROCKETLAKE)
[09:33:53] [PASSED] 0x4C8C (ROCKETLAKE)
[09:33:53] [PASSED] 0x4C90 (ROCKETLAKE)
[09:33:53] [PASSED] 0x4C9A (ROCKETLAKE)
[09:33:53] [PASSED] 0x4680 (ALDERLAKE_S)
[09:33:53] [PASSED] 0x4682 (ALDERLAKE_S)
[09:33:53] [PASSED] 0x4688 (ALDERLAKE_S)
[09:33:53] [PASSED] 0x468A (ALDERLAKE_S)
[09:33:53] [PASSED] 0x468B (ALDERLAKE_S)
[09:33:53] [PASSED] 0x4690 (ALDERLAKE_S)
[09:33:53] [PASSED] 0x4692 (ALDERLAKE_S)
[09:33:53] [PASSED] 0x4693 (ALDERLAKE_S)
[09:33:53] [PASSED] 0x46A0 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46A1 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46A2 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46A3 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46A6 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46A8 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46AA (ALDERLAKE_P)
[09:33:53] [PASSED] 0x462A (ALDERLAKE_P)
[09:33:53] [PASSED] 0x4626 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x4628 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46B0 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46B1 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46B2 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46B3 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46C0 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46C1 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46C2 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46C3 (ALDERLAKE_P)
[09:33:53] [PASSED] 0x46D0 (ALDERLAKE_N)
[09:33:53] [PASSED] 0x46D1 (ALDERLAKE_N)
[09:33:53] [PASSED] 0x46D2 (ALDERLAKE_N)
[09:33:53] [PASSED] 0x46D3 (ALDERLAKE_N)
[09:33:53] [PASSED] 0x46D4 (ALDERLAKE_N)
[09:33:53] [PASSED] 0xA721 (ALDERLAKE_P)
[09:33:53] [PASSED] 0xA7A1 (ALDERLAKE_P)
[09:33:53] [PASSED] 0xA7A9 (ALDERLAKE_P)
[09:33:53] [PASSED] 0xA7AC (ALDERLAKE_P)
[09:33:53] [PASSED] 0xA7AD (ALDERLAKE_P)
[09:33:53] [PASSED] 0xA720 (ALDERLAKE_P)
[09:33:53] [PASSED] 0xA7A0 (ALDERLAKE_P)
[09:33:53] [PASSED] 0xA7A8 (ALDERLAKE_P)
[09:33:53] [PASSED] 0xA7AA (ALDERLAKE_P)
[09:33:53] [PASSED] 0xA7AB (ALDERLAKE_P)
[09:33:53] [PASSED] 0xA780 (ALDERLAKE_S)
[09:33:53] [PASSED] 0xA781 (ALDERLAKE_S)
[09:33:53] [PASSED] 0xA782 (ALDERLAKE_S)
[09:33:53] [PASSED] 0xA783 (ALDERLAKE_S)
[09:33:53] [PASSED] 0xA788 (ALDERLAKE_S)
[09:33:53] [PASSED] 0xA789 (ALDERLAKE_S)
[09:33:53] [PASSED] 0xA78A (ALDERLAKE_S)
[09:33:53] [PASSED] 0xA78B (ALDERLAKE_S)
[09:33:53] [PASSED] 0x4905 (DG1)
[09:33:53] [PASSED] 0x4906 (DG1)
[09:33:53] [PASSED] 0x4907 (DG1)
[09:33:53] [PASSED] 0x4908 (DG1)
[09:33:53] [PASSED] 0x4909 (DG1)
[09:33:53] [PASSED] 0x56C0 (DG2)
[09:33:53] [PASSED] 0x56C2 (DG2)
[09:33:53] [PASSED] 0x56C1 (DG2)
[09:33:53] [PASSED] 0x7D51 (METEORLAKE)
[09:33:53] [PASSED] 0x7DD1 (METEORLAKE)
[09:33:53] [PASSED] 0x7D41 (METEORLAKE)
[09:33:53] [PASSED] 0x7D67 (METEORLAKE)
[09:33:53] [PASSED] 0xB640 (METEORLAKE)
[09:33:53] [PASSED] 0x56A0 (DG2)
[09:33:53] [PASSED] 0x56A1 (DG2)
[09:33:53] [PASSED] 0x56A2 (DG2)
[09:33:53] [PASSED] 0x56BE (DG2)
[09:33:53] [PASSED] 0x56BF (DG2)
[09:33:53] [PASSED] 0x5690 (DG2)
[09:33:53] [PASSED] 0x5691 (DG2)
[09:33:53] [PASSED] 0x5692 (DG2)
[09:33:53] [PASSED] 0x56A5 (DG2)
[09:33:53] [PASSED] 0x56A6 (DG2)
[09:33:53] [PASSED] 0x56B0 (DG2)
[09:33:53] [PASSED] 0x56B1 (DG2)
[09:33:53] [PASSED] 0x56BA (DG2)
[09:33:53] [PASSED] 0x56BB (DG2)
[09:33:53] [PASSED] 0x56BC (DG2)
[09:33:53] [PASSED] 0x56BD (DG2)
[09:33:53] [PASSED] 0x5693 (DG2)
[09:33:53] [PASSED] 0x5694 (DG2)
[09:33:53] [PASSED] 0x5695 (DG2)
[09:33:53] [PASSED] 0x56A3 (DG2)
[09:33:53] [PASSED] 0x56A4 (DG2)
[09:33:53] [PASSED] 0x56B2 (DG2)
[09:33:53] [PASSED] 0x56B3 (DG2)
[09:33:53] [PASSED] 0x5696 (DG2)
[09:33:53] [PASSED] 0x5697 (DG2)
[09:33:53] [PASSED] 0xB69 (PVC)
[09:33:53] [PASSED] 0xB6E (PVC)
[09:33:53] [PASSED] 0xBD4 (PVC)
[09:33:53] [PASSED] 0xBD5 (PVC)
[09:33:53] [PASSED] 0xBD6 (PVC)
[09:33:53] [PASSED] 0xBD7 (PVC)
[09:33:53] [PASSED] 0xBD8 (PVC)
[09:33:53] [PASSED] 0xBD9 (PVC)
[09:33:53] [PASSED] 0xBDA (PVC)
[09:33:53] [PASSED] 0xBDB (PVC)
[09:33:53] [PASSED] 0xBE0 (PVC)
[09:33:53] [PASSED] 0xBE1 (PVC)
[09:33:53] [PASSED] 0xBE5 (PVC)
[09:33:53] [PASSED] 0x7D40 (METEORLAKE)
[09:33:53] [PASSED] 0x7D45 (METEORLAKE)
[09:33:53] [PASSED] 0x7D55 (METEORLAKE)
[09:33:53] [PASSED] 0x7D60 (METEORLAKE)
[09:33:53] [PASSED] 0x7DD5 (METEORLAKE)
[09:33:53] [PASSED] 0x6420 (LUNARLAKE)
[09:33:53] [PASSED] 0x64A0 (LUNARLAKE)
[09:33:53] [PASSED] 0x64B0 (LUNARLAKE)
[09:33:53] [PASSED] 0xE202 (BATTLEMAGE)
[09:33:53] [PASSED] 0xE209 (BATTLEMAGE)
[09:33:53] [PASSED] 0xE20B (BATTLEMAGE)
[09:33:53] [PASSED] 0xE20C (BATTLEMAGE)
[09:33:53] [PASSED] 0xE20D (BATTLEMAGE)
[09:33:53] [PASSED] 0xE210 (BATTLEMAGE)
[09:33:53] [PASSED] 0xE211 (BATTLEMAGE)
[09:33:53] [PASSED] 0xE212 (BATTLEMAGE)
[09:33:53] [PASSED] 0xE216 (BATTLEMAGE)
[09:33:53] [PASSED] 0xE220 (BATTLEMAGE)
[09:33:53] [PASSED] 0xE221 (BATTLEMAGE)
[09:33:53] [PASSED] 0xE222 (BATTLEMAGE)
[09:33:53] [PASSED] 0xE223 (BATTLEMAGE)
[09:33:53] [PASSED] 0xB080 (PANTHERLAKE)
[09:33:53] [PASSED] 0xB081 (PANTHERLAKE)
[09:33:53] [PASSED] 0xB082 (PANTHERLAKE)
[09:33:53] [PASSED] 0xB083 (PANTHERLAKE)
[09:33:53] [PASSED] 0xB084 (PANTHERLAKE)
[09:33:53] [PASSED] 0xB085 (PANTHERLAKE)
[09:33:53] [PASSED] 0xB086 (PANTHERLAKE)
[09:33:53] [PASSED] 0xB087 (PANTHERLAKE)
[09:33:53] [PASSED] 0xB08F (PANTHERLAKE)
[09:33:53] [PASSED] 0xB090 (PANTHERLAKE)
[09:33:53] [PASSED] 0xB0A0 (PANTHERLAKE)
[09:33:53] [PASSED] 0xB0B0 (PANTHERLAKE)
[09:33:53] [PASSED] 0xFD80 (PANTHERLAKE)
[09:33:53] [PASSED] 0xFD81 (PANTHERLAKE)
[09:33:53] [PASSED] 0xD740 (NOVALAKE_S)
[09:33:53] [PASSED] 0xD741 (NOVALAKE_S)
[09:33:53] [PASSED] 0xD742 (NOVALAKE_S)
[09:33:53] [PASSED] 0xD743 (NOVALAKE_S)
[09:33:53] [PASSED] 0xD745 (NOVALAKE_S)
[09:33:53] [PASSED] 0xD74A (NOVALAKE_S)
[09:33:53] [PASSED] 0xD74B (NOVALAKE_S)
[09:33:53] [PASSED] 0x674C (CRESCENTISLAND)
[09:33:53] [PASSED] 0x674D (CRESCENTISLAND)
[09:33:53] [PASSED] 0x674E (CRESCENTISLAND)
[09:33:53] [PASSED] 0x674F (CRESCENTISLAND)
[09:33:53] [PASSED] 0x6750 (CRESCENTISLAND)
[09:33:53] [PASSED] 0xD750 (NOVALAKE_P)
[09:33:53] [PASSED] 0xD751 (NOVALAKE_P)
[09:33:53] [PASSED] 0xD752 (NOVALAKE_P)
[09:33:53] [PASSED] 0xD753 (NOVALAKE_P)
[09:33:53] [PASSED] 0xD754 (NOVALAKE_P)
[09:33:53] [PASSED] 0xD755 (NOVALAKE_P)
[09:33:53] [PASSED] 0xD756 (NOVALAKE_P)
[09:33:53] [PASSED] 0xD757 (NOVALAKE_P)
[09:33:53] [PASSED] 0xD75F (NOVALAKE_P)
[09:33:53] =============== [PASSED] check_platform_desc ===============
[09:33:53] ===================== [PASSED] xe_pci ======================
[09:33:53] ============= xe_rtp_tables_test (5 subtests) ==============
[09:33:53] ================== xe_rtp_table_gt_test  ===================
[09:33:53] [PASSED] gt_was/14011060649
[09:33:53] [PASSED] gt_was/14011059788
[09:33:53] [PASSED] gt_was/14015795083
[09:33:53] [PASSED] gt_was/16021867713
[09:33:53] [PASSED] gt_was/14019449301
[09:33:53] [PASSED] gt_was/16028005424
[09:33:53] [PASSED] gt_was/14026578760
[09:33:53] [PASSED] gt_was/1409420604
[09:33:53] [PASSED] gt_was/1408615072
[09:33:53] [PASSED] gt_was/22010523718
[09:33:53] [PASSED] gt_was/14011006942
[09:33:53] [PASSED] gt_was/14014830051
[09:33:53] [PASSED] gt_was/18018781329
[09:33:53] [PASSED] gt_was/1509235366
[09:33:53] [PASSED] gt_was/18018781329
[09:33:53] [PASSED] gt_was/16016694945
[09:33:53] [PASSED] gt_was/14018575942
[09:33:53] [PASSED] gt_was/22016670082
[09:33:53] [PASSED] gt_was/22016670082
[09:33:53] [PASSED] gt_was/14017421178
[09:33:53] [PASSED] gt_was/16025250150
[09:33:53] [PASSED] gt_was/14021871409
[09:33:53] [PASSED] gt_was/16021865536
[09:33:53] [PASSED] gt_was/14021486841
[09:33:53] [PASSED] gt_was/14025160223
[09:33:53] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[09:33:53] [PASSED] gt_was/14025635424
[09:33:53] [PASSED] gt_was/16028005424
[09:33:53] ============== [PASSED] xe_rtp_table_gt_test ===============
[09:33:53] ================== xe_rtp_table_gt_test  ===================
[09:33:53] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[09:33:53] [PASSED] gt_tunings/Tuning: 32B Access Enable
[09:33:53] [PASSED] gt_tunings/Tuning: L3 cache
[09:33:53] [PASSED] gt_tunings/Tuning: L3 cache - media
[09:33:53] [PASSED] gt_tunings/Tuning: Compression Overfetch
[09:33:53] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[09:33:53] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[09:33:53] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[09:33:53] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[09:33:53] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[09:33:53] [PASSED] gt_tunings/Tuning: Stateless compression control
[09:33:53] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[09:33:53] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[09:33:53] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[09:33:53] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[09:33:53] ============== [PASSED] xe_rtp_table_gt_test ===============
[09:33:53] ================== xe_rtp_table_oob_test  ==================
[09:33:53] [PASSED] oob_was/1607983814
[09:33:53] [PASSED] oob_was/16010904313
[09:33:53] [PASSED] oob_was/18022495364
[09:33:53] [PASSED] oob_was/22012773006
[09:33:53] [PASSED] oob_was/14014475959
[09:33:53] [PASSED] oob_was/22011391025
[09:33:53] [PASSED] oob_was/22012727170
[09:33:53] [PASSED] oob_was/22012727685
[09:33:53] [PASSED] oob_was/22016596838
[09:33:53] [PASSED] oob_was/18020744125
[09:33:53] [PASSED] oob_was/1409600907
[09:33:53] [PASSED] oob_was/22014953428
[09:33:53] [PASSED] oob_was/16017236439
[09:33:53] [PASSED] oob_was/14019821291
[09:33:53] [PASSED] oob_was/14015076503
[09:33:53] [PASSED] oob_was/14018913170
[09:33:53] [PASSED] oob_was/14018094691
[09:33:53] [PASSED] oob_was/18024947630
[09:33:53] [PASSED] oob_was/16022287689
[09:33:53] [PASSED] oob_was/13011645652
[09:33:53] [PASSED] oob_was/14022293748
[09:33:53] [PASSED] oob_was/22019794406
[09:33:53] [PASSED] oob_was/22019338487
[09:33:53] [PASSED] oob_was/16023588340
[09:33:53] [PASSED] oob_was/14019789679
[09:33:53] [PASSED] oob_was/14022866841
[09:33:53] [PASSED] oob_was/16021333562
[09:33:53] [PASSED] oob_was/14016712196
[09:33:53] [PASSED] oob_was/14015568240
[09:33:53] [PASSED] oob_was/18013179988
[09:33:53] [PASSED] oob_was/1508761755
[09:33:53] [PASSED] oob_was/16023105232
[09:33:53] [PASSED] oob_was/16026508708
[09:33:53] [PASSED] oob_was/14020001231
[09:33:53] [PASSED] oob_was/16023683509
[09:33:53] [PASSED] oob_was/14025515070
[09:33:53] [PASSED] oob_was/15015404425_disable
[09:33:53] [PASSED] oob_was/16026007364
[09:33:53] [PASSED] oob_was/14020316580
[09:33:53] [PASSED] oob_was/14025883347
[09:33:53] [PASSED] oob_was/16029380221
[09:33:53] [PASSED] oob_was/22022079272
[09:33:53] [PASSED] oob_was/16029897822
[09:33:53] [PASSED] oob_was/14027054324
[09:33:53] ============== [PASSED] xe_rtp_table_oob_test ==============
[09:33:53] ================ xe_rtp_table_dev_oob_test  ================
[09:33:53] [PASSED] device_oob_was/22010954014
[09:33:53] [PASSED] device_oob_was/15015404425
[09:33:53] [PASSED] device_oob_was/22019338487_display
[09:33:53] [PASSED] device_oob_was/14022085890
[09:33:53] [PASSED] device_oob_was/14026539277
[09:33:53] [PASSED] device_oob_was/14026633728
[09:33:53] [PASSED] device_oob_was/14026746987
[09:33:53] [PASSED] device_oob_was/14026779378
[09:33:53] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[09:33:53] ========== xe_rtp_table_missing_upper_bound_test  ==========
[09:33:53] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[09:33:53] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[09:33:53] [PASSED] register_whitelist/1806527549
[09:33:53] [PASSED] register_whitelist/allow_read_ctx_timestamp
[09:33:53] [PASSED] register_whitelist/allow_read_queue_timestamp
[09:33:53] [PASSED] register_whitelist/16014440446
[09:33:53] [PASSED] register_whitelist/16017236439
[09:33:53] [PASSED] register_whitelist/16020183090
[09:33:53] [PASSED] register_whitelist/14024997852
[09:33:53] [PASSED] register_whitelist/14024997852
[09:33:53] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[09:33:53] =============== [PASSED] xe_rtp_tables_test ================
[09:33:53] =================== xe_rtp (3 subtests) ====================
[09:33:53] =================== xe_rtp_rules_tests  ====================
[09:33:53] [PASSED] no
[09:33:53] [PASSED] yes
[09:33:53] [PASSED] no-and-no
[09:33:53] [PASSED] no-and-yes
[09:33:53] [PASSED] yes-and-no
[09:33:53] [PASSED] yes-and-yes
[09:33:53] [PASSED] no-or-no
[09:33:53] [PASSED] no-or-yes
[09:33:53] [PASSED] yes-or-no
[09:33:53] [PASSED] yes-or-yes
[09:33:53] [PASSED] no-yes-or-yes-no
[09:33:53] [PASSED] no-yes-or-yes-yes
[09:33:53] [PASSED] yes-yes-or-no-yes
[09:33:53] [PASSED] yes-yes-or-yes-yes
[09:33:53] [PASSED] no-no-or-yes-or-no
[09:33:53] [PASSED] or
[09:33:53] [PASSED] or-yes
[09:33:53] [PASSED] or-no
[09:33:53] [PASSED] yes-or
[09:33:53] [PASSED] no-or
[09:33:53] [PASSED] no-or-or-yes
[09:33:53] [PASSED] yes-or-or-no
[09:33:53] [PASSED] no-or-or-no
[09:33:53] [PASSED] missing-context-engine-class
[09:33:53] [PASSED] missing-context-engine-class-or-yes
[09:33:53] [PASSED] missing-context-engine-class-or-or-yes
[09:33:53] =============== [PASSED] xe_rtp_rules_tests ================
[09:33:53] =============== xe_rtp_process_to_sr_tests  ================
[09:33:53] [PASSED] coalesce-same-reg
[09:33:53] [PASSED] coalesce-same-reg-literal-and-func
[09:33:53] [PASSED] no-match-no-add
[09:33:53] [PASSED] two-regs-two-entries
[09:33:53] [PASSED] clr-one-set-other
[09:33:53] [PASSED] set-field
[09:33:53] [PASSED] conflict-duplicate
[09:33:53] [PASSED] conflict-not-disjoint
[09:33:53] [PASSED] conflict-not-disjoint-literal-and-func
[09:33:53] [PASSED] conflict-reg-type
[09:33:53] [PASSED] bad-mcr-reg-forced-to-regular
[09:33:53] [PASSED] bad-regular-reg-forced-to-mcr
[09:33:53] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[09:33:53] ================== xe_rtp_process_tests  ===================
[09:33:53] [PASSED] active1
[09:33:53] [PASSED] active2
[09:33:53] [PASSED] active-inactive
[09:33:53] [PASSED] inactive-active
[09:33:53] [PASSED] inactive-active-inactive
[09:33:53] [PASSED] inactive-inactive-inactive
[09:33:53] ============== [PASSED] xe_rtp_process_tests ===============
[09:33:53] ===================== [PASSED] xe_rtp ======================
[09:33:53] ==================== xe_wa (1 subtest) =====================
[09:33:53] ======================== xe_wa_gt  =========================
[09:33:53] [PASSED] TIGERLAKE B0
[09:33:53] [PASSED] DG1 A0
[09:33:53] [PASSED] DG1 B0
[09:33:53] [PASSED] ALDERLAKE_S A0
[09:33:53] [PASSED] ALDERLAKE_S B0
[09:33:53] [PASSED] ALDERLAKE_S C0
[09:33:53] [PASSED] ALDERLAKE_S D0
[09:33:53] [PASSED] ALDERLAKE_P A0
[09:33:53] [PASSED] ALDERLAKE_P B0
[09:33:53] [PASSED] ALDERLAKE_P C0
[09:33:53] [PASSED] ALDERLAKE_S RPLS D0
[09:33:53] [PASSED] ALDERLAKE_P RPLU E0
[09:33:53] [PASSED] DG2 G10 C0
[09:33:53] [PASSED] DG2 G11 B1
[09:33:53] [PASSED] DG2 G12 A1
[09:33:53] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[09:33:53] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[09:33:53] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[09:33:53] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[09:33:53] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[09:33:53] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[09:33:53] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[09:33:53] ==================== [PASSED] xe_wa_gt =====================
[09:33:53] ====================== [PASSED] xe_wa ======================
[09:33:53] ============================================================
[09:33:53] Testing complete. Ran 793 tests: passed: 765, skipped: 28
[09:33:53] Elapsed time: 36.074s total, 1.858s configuring, 33.499s building, 0.707s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[09:33:53] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:33:55] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
../drivers/gpu/drm/drm_bridge.c: In function ‘drm_bridge_atomic_print_priv_state’:
../drivers/gpu/drm/drm_bridge.c:556:73: warning: passing argument 1 of ‘drm_priv_to_bridge_state’ discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
  556 |         const struct drm_bridge_state *state = drm_priv_to_bridge_state(s);
      |                                                                         ^
In file included from ../include/drm/drm_bridge.h:31,
                 from ../drivers/gpu/drm/drm_bridge.c:33:
../include/drm/drm_atomic.h:1401:52: note: expected ‘struct drm_private_state *’ but argument is of type ‘const struct drm_private_state *’
 1401 | drm_priv_to_bridge_state(struct drm_private_state *priv)
      |                          ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~

[09:34:20] Starting KUnit Kernel (1/1)...
[09:34:20] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:34:20] ============= refcount_interrupt (4 subtests) ==============
[09:34:20] [PASSED] test_single_irq_change
[09:34:20] [PASSED] test_nested_irq_change
[09:34:20] [PASSED] test_multiple_irq_change
[09:34:20] [PASSED] test_irq_save
[09:34:20] =============== [PASSED] refcount_interrupt ================
[09:34:20] ============ drm_test_pick_cmdline (2 subtests) ============
[09:34:20] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[09:34:20] =============== drm_test_pick_cmdline_named  ===============
[09:34:20] [PASSED] NTSC
[09:34:20] [PASSED] NTSC-J
[09:34:20] [PASSED] PAL
[09:34:20] [PASSED] PAL-M
[09:34:20] =========== [PASSED] drm_test_pick_cmdline_named ===========
[09:34:20] ============== [PASSED] drm_test_pick_cmdline ==============
[09:34:20] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[09:34:20] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[09:34:20] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[09:34:20] =========== drm_validate_clone_mode (2 subtests) ===========
[09:34:20] ============== drm_test_check_in_clone_mode  ===============
[09:34:20] [PASSED] in_clone_mode
[09:34:20] [PASSED] not_in_clone_mode
[09:34:20] ========== [PASSED] drm_test_check_in_clone_mode ===========
[09:34:20] =============== drm_test_check_valid_clones  ===============
[09:34:20] [PASSED] not_in_clone_mode
[09:34:20] [PASSED] valid_clone
[09:34:20] [PASSED] invalid_clone
[09:34:20] =========== [PASSED] drm_test_check_valid_clones ===========
[09:34:20] ============= [PASSED] drm_validate_clone_mode =============
[09:34:20] ============= drm_validate_modeset (1 subtest) =============
[09:34:20] [PASSED] drm_test_check_connector_changed_modeset
[09:34:20] ============== [PASSED] drm_validate_modeset ===============
[09:34:20] ====== drm_test_bridge_get_current_state (1 subtest) =======
[09:34:20] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[09:34:20] ======== [PASSED] drm_test_bridge_get_current_state ========
[09:34:20] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[09:34:20] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[09:34:20] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[09:34:20] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts
[09:34:20] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[09:34:20] ============== drm_bridge_alloc (2 subtests) ===============
[09:34:20] [PASSED] drm_test_drm_bridge_alloc_basic
[09:34:20] [PASSED] drm_test_drm_bridge_alloc_get_put
[09:34:20] ================ [PASSED] drm_bridge_alloc =================
[09:34:20] ============= drm_bridge_bus_fmt (5 subtests) ==============
[09:34:20] [PASSED] drm_test_bridge_rgb_yuv_rgb
[09:34:20] [PASSED] drm_test_bridge_must_convert_to_yuv444
[09:34:20] [PASSED] drm_test_bridge_hdmi_auto_rgb
[09:34:20] [PASSED] drm_test_bridge_auto_first
[09:34:20] [PASSED] drm_test_bridge_rgb_yuv_no_path
[09:34:20] =============== [PASSED] drm_bridge_bus_fmt ================
[09:34:20] ============= drm_cmdline_parser (40 subtests) =============
[09:34:20] [PASSED] drm_test_cmdline_force_d_only
[09:34:20] [PASSED] drm_test_cmdline_force_D_only_dvi
[09:34:20] [PASSED] drm_test_cmdline_force_D_only_hdmi
[09:34:20] [PASSED] drm_test_cmdline_force_D_only_not_digital
[09:34:20] [PASSED] drm_test_cmdline_force_e_only
[09:34:20] [PASSED] drm_test_cmdline_res
[09:34:20] [PASSED] drm_test_cmdline_res_vesa
[09:34:20] [PASSED] drm_test_cmdline_res_vesa_rblank
[09:34:20] [PASSED] drm_test_cmdline_res_rblank
[09:34:20] [PASSED] drm_test_cmdline_res_bpp
[09:34:20] [PASSED] drm_test_cmdline_res_refresh
[09:34:20] [PASSED] drm_test_cmdline_res_bpp_refresh
[09:34:20] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[09:34:20] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[09:34:20] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[09:34:20] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[09:34:20] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[09:34:20] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[09:34:20] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[09:34:20] [PASSED] drm_test_cmdline_res_margins_force_on
[09:34:20] [PASSED] drm_test_cmdline_res_vesa_margins
[09:34:20] [PASSED] drm_test_cmdline_name
[09:34:20] [PASSED] drm_test_cmdline_name_bpp
[09:34:20] [PASSED] drm_test_cmdline_name_option
[09:34:20] [PASSED] drm_test_cmdline_name_bpp_option
[09:34:20] [PASSED] drm_test_cmdline_rotate_0
[09:34:20] [PASSED] drm_test_cmdline_rotate_90
[09:34:20] [PASSED] drm_test_cmdline_rotate_180
[09:34:20] [PASSED] drm_test_cmdline_rotate_270
[09:34:20] [PASSED] drm_test_cmdline_hmirror
[09:34:20] [PASSED] drm_test_cmdline_vmirror
[09:34:20] [PASSED] drm_test_cmdline_margin_options
[09:34:20] [PASSED] drm_test_cmdline_multiple_options
[09:34:20] [PASSED] drm_test_cmdline_bpp_extra_and_option
[09:34:20] [PASSED] drm_test_cmdline_extra_and_option
[09:34:20] [PASSED] drm_test_cmdline_freestanding_options
[09:34:20] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[09:34:20] [PASSED] drm_test_cmdline_panel_orientation
[09:34:20] ================ drm_test_cmdline_invalid  =================
[09:34:20] [PASSED] margin_only
[09:34:20] [PASSED] interlace_only
[09:34:20] [PASSED] res_missing_x
[09:34:20] [PASSED] res_missing_y
[09:34:20] [PASSED] res_bad_y
[09:34:20] [PASSED] res_missing_y_bpp
[09:34:20] [PASSED] res_bad_bpp
[09:34:20] [PASSED] res_bad_refresh
[09:34:20] [PASSED] res_bpp_refresh_force_on_off
[09:34:20] [PASSED] res_invalid_mode
[09:34:20] [PASSED] res_bpp_wrong_place_mode
[09:34:20] [PASSED] name_bpp_refresh
[09:34:20] [PASSED] name_refresh
[09:34:20] [PASSED] name_refresh_wrong_mode
[09:34:20] [PASSED] name_refresh_invalid_mode
[09:34:20] [PASSED] rotate_multiple
[09:34:20] [PASSED] rotate_invalid_val
[09:34:20] [PASSED] rotate_truncated
[09:34:20] [PASSED] invalid_option
[09:34:20] [PASSED] invalid_tv_option
[09:34:20] [PASSED] truncated_tv_option
[09:34:20] ============ [PASSED] drm_test_cmdline_invalid =============
[09:34:20] =============== drm_test_cmdline_tv_options  ===============
[09:34:20] [PASSED] NTSC
[09:34:20] [PASSED] NTSC_443
[09:34:20] [PASSED] NTSC_J
[09:34:20] [PASSED] PAL
[09:34:20] [PASSED] PAL_M
[09:34:20] [PASSED] PAL_N
[09:34:20] [PASSED] SECAM
[09:34:20] [PASSED] MONO_525
[09:34:20] [PASSED] MONO_625
[09:34:20] =========== [PASSED] drm_test_cmdline_tv_options ===========
[09:34:20] =============== [PASSED] drm_cmdline_parser ================
[09:34:20] ========== drmm_connector_hdmi_init (20 subtests) ==========
[09:34:20] [PASSED] drm_test_connector_hdmi_init_valid
[09:34:20] [PASSED] drm_test_connector_hdmi_init_bpc_8
[09:34:20] [PASSED] drm_test_connector_hdmi_init_bpc_10
[09:34:20] [PASSED] drm_test_connector_hdmi_init_bpc_12
[09:34:20] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[09:34:20] [PASSED] drm_test_connector_hdmi_init_bpc_null
[09:34:20] [PASSED] drm_test_connector_hdmi_init_formats_empty
[09:34:20] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[09:34:20] === drm_test_connector_hdmi_init_formats_yuv420_allowed  ===
[09:34:20] [PASSED] supported_formats=0x9 yuv420_allowed=1
[09:34:20] [PASSED] supported_formats=0x9 yuv420_allowed=0
[09:34:20] [PASSED] supported_formats=0x5 yuv420_allowed=1
[09:34:20] [PASSED] supported_formats=0x5 yuv420_allowed=0
[09:34:20] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[09:34:20] [PASSED] drm_test_connector_hdmi_init_null_ddc
[09:34:20] [PASSED] drm_test_connector_hdmi_init_null_product
[09:34:20] [PASSED] drm_test_connector_hdmi_init_null_vendor
[09:34:20] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[09:34:20] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[09:34:20] [PASSED] drm_test_connector_hdmi_init_product_valid
[09:34:20] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[09:34:20] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[09:34:20] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[09:34:20] ========= drm_test_connector_hdmi_init_type_valid  =========
[09:34:20] [PASSED] HDMI-A
[09:34:20] [PASSED] HDMI-B
[09:34:20] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[09:34:20] ======== drm_test_connector_hdmi_init_type_invalid  ========
[09:34:20] [PASSED] Unknown
[09:34:20] [PASSED] VGA
[09:34:20] [PASSED] DVI-I
[09:34:20] [PASSED] DVI-D
[09:34:20] [PASSED] DVI-A
[09:34:20] [PASSED] Composite
[09:34:20] [PASSED] SVIDEO
[09:34:20] [PASSED] LVDS
[09:34:20] [PASSED] Component
[09:34:20] [PASSED] DIN
[09:34:20] [PASSED] DP
[09:34:20] [PASSED] TV
[09:34:20] [PASSED] eDP
[09:34:20] [PASSED] Virtual
[09:34:20] [PASSED] DSI
[09:34:20] [PASSED] DPI
[09:34:20] [PASSED] Writeback
[09:34:20] [PASSED] SPI
[09:34:20] [PASSED] USB
[09:34:20] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[09:34:20] ============ [PASSED] drmm_connector_hdmi_init =============
[09:34:20] ============= drmm_connector_init (3 subtests) =============
[09:34:20] [PASSED] drm_test_drmm_connector_init
[09:34:20] [PASSED] drm_test_drmm_connector_init_null_ddc
[09:34:20] ========= drm_test_drmm_connector_init_type_valid  =========
[09:34:20] [PASSED] Unknown
[09:34:20] [PASSED] VGA
[09:34:20] [PASSED] DVI-I
[09:34:20] [PASSED] DVI-D
[09:34:20] [PASSED] DVI-A
[09:34:20] [PASSED] Composite
[09:34:20] [PASSED] SVIDEO
[09:34:20] [PASSED] LVDS
[09:34:20] [PASSED] Component
[09:34:20] [PASSED] DIN
[09:34:20] [PASSED] DP
[09:34:20] [PASSED] HDMI-A
[09:34:20] [PASSED] HDMI-B
[09:34:20] [PASSED] TV
[09:34:20] [PASSED] eDP
[09:34:20] [PASSED] Virtual
[09:34:20] [PASSED] DSI
[09:34:20] [PASSED] DPI
[09:34:20] [PASSED] Writeback
[09:34:20] [PASSED] SPI
[09:34:20] [PASSED] USB
[09:34:20] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[09:34:20] =============== [PASSED] drmm_connector_init ===============
[09:34:20] ========= drm_connector_dynamic_init (6 subtests) ==========
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_init
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_init_properties
[09:34:20] ===== drm_test_drm_connector_dynamic_init_type_valid  ======
[09:34:20] [PASSED] Unknown
[09:34:20] [PASSED] VGA
[09:34:20] [PASSED] DVI-I
[09:34:20] [PASSED] DVI-D
[09:34:20] [PASSED] DVI-A
[09:34:20] [PASSED] Composite
[09:34:20] [PASSED] SVIDEO
[09:34:20] [PASSED] LVDS
[09:34:20] [PASSED] Component
[09:34:20] [PASSED] DIN
[09:34:20] [PASSED] DP
[09:34:20] [PASSED] HDMI-A
[09:34:20] [PASSED] HDMI-B
[09:34:20] [PASSED] TV
[09:34:20] [PASSED] eDP
[09:34:20] [PASSED] Virtual
[09:34:20] [PASSED] DSI
[09:34:20] [PASSED] DPI
[09:34:20] [PASSED] Writeback
[09:34:20] [PASSED] SPI
[09:34:20] [PASSED] USB
[09:34:20] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[09:34:20] ======== drm_test_drm_connector_dynamic_init_name  =========
[09:34:20] [PASSED] Unknown
[09:34:20] [PASSED] VGA
[09:34:20] [PASSED] DVI-I
[09:34:20] [PASSED] DVI-D
[09:34:20] [PASSED] DVI-A
[09:34:20] [PASSED] Composite
[09:34:20] [PASSED] SVIDEO
[09:34:20] [PASSED] LVDS
[09:34:20] [PASSED] Component
[09:34:20] [PASSED] DIN
[09:34:20] [PASSED] DP
[09:34:20] [PASSED] HDMI-A
[09:34:20] [PASSED] HDMI-B
[09:34:20] [PASSED] TV
[09:34:20] [PASSED] eDP
[09:34:20] [PASSED] Virtual
[09:34:20] [PASSED] DSI
[09:34:20] [PASSED] DPI
[09:34:20] [PASSED] Writeback
[09:34:20] [PASSED] SPI
[09:34:20] [PASSED] USB
[09:34:20] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[09:34:20] =========== [PASSED] drm_connector_dynamic_init ============
[09:34:20] ==== drm_connector_dynamic_register_early (4 subtests) =====
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[09:34:20] ====== [PASSED] drm_connector_dynamic_register_early =======
[09:34:20] ======= drm_connector_dynamic_register (7 subtests) ========
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[09:34:20] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[09:34:20] ========= [PASSED] drm_connector_dynamic_register ==========
[09:34:20] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[09:34:20] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[09:34:20] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[09:34:20] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[09:34:20] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[09:34:20] ========== drm_test_get_tv_mode_from_name_valid  ===========
[09:34:20] [PASSED] NTSC
[09:34:20] [PASSED] NTSC-443
[09:34:20] [PASSED] NTSC-J
[09:34:20] [PASSED] PAL
[09:34:20] [PASSED] PAL-M
[09:34:20] [PASSED] PAL-N
[09:34:20] [PASSED] SECAM
[09:34:20] [PASSED] Mono
[09:34:20] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[09:34:20] [PASSED] drm_test_get_tv_mode_from_name_truncated
[09:34:20] ============ [PASSED] drm_get_tv_mode_from_name ============
[09:34:20] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[09:34:20] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[09:34:20] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[09:34:20] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[09:34:20] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[09:34:20] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[09:34:20] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[09:34:20] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid  =
[09:34:20] [PASSED] VIC 96
[09:34:20] [PASSED] VIC 97
[09:34:20] [PASSED] VIC 101
[09:34:20] [PASSED] VIC 102
[09:34:20] [PASSED] VIC 106
[09:34:20] [PASSED] VIC 107
[09:34:20] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[09:34:20] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[09:34:20] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[09:34:20] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[09:34:20] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[09:34:20] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[09:34:20] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[09:34:20] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[09:34:20] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name  ====
[09:34:20] [PASSED] Automatic
[09:34:20] [PASSED] Full
[09:34:20] [PASSED] Limited 16:235
[09:34:20] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[09:34:20] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[09:34:20] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[09:34:20] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[09:34:20] === drm_test_drm_hdmi_connector_get_output_format_name  ====
[09:34:20] [PASSED] RGB
[09:34:20] [PASSED] YUV 4:2:0
[09:34:20] [PASSED] YUV 4:2:2
[09:34:20] [PASSED] YUV 4:4:4
[09:34:20] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[09:34:20] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[09:34:20] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[09:34:20] ============= drm_damage_helper (21 subtests) ==============
[09:34:20] [PASSED] drm_test_damage_iter_no_damage
[09:34:20] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[09:34:20] [PASSED] drm_test_damage_iter_no_damage_src_moved
[09:34:20] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[09:34:20] [PASSED] drm_test_damage_iter_no_damage_not_visible
[09:34:20] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[09:34:20] [PASSED] drm_test_damage_iter_no_damage_no_fb
[09:34:20] [PASSED] drm_test_damage_iter_simple_damage
[09:34:20] [PASSED] drm_test_damage_iter_single_damage
[09:34:20] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[09:34:20] [PASSED] drm_test_damage_iter_single_damage_outside_src
[09:34:20] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[09:34:20] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[09:34:20] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[09:34:20] [PASSED] drm_test_damage_iter_single_damage_src_moved
[09:34:20] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[09:34:20] [PASSED] drm_test_damage_iter_damage
[09:34:20] [PASSED] drm_test_damage_iter_damage_one_intersect
[09:34:20] [PASSED] drm_test_damage_iter_damage_one_outside
[09:34:20] [PASSED] drm_test_damage_iter_damage_src_moved
[09:34:20] [PASSED] drm_test_damage_iter_damage_not_visible
[09:34:20] ================ [PASSED] drm_damage_helper ================
[09:34:20] ============== drm_dp_mst_helper (3 subtests) ==============
[09:34:20] ============== drm_test_dp_mst_calc_pbn_mode  ==============
[09:34:20] [PASSED] Clock 154000 BPP 30 DSC disabled
[09:34:20] [PASSED] Clock 234000 BPP 30 DSC disabled
[09:34:20] [PASSED] Clock 297000 BPP 24 DSC disabled
[09:34:20] [PASSED] Clock 332880 BPP 24 DSC enabled
[09:34:20] [PASSED] Clock 324540 BPP 24 DSC enabled
[09:34:20] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[09:34:20] ============== drm_test_dp_mst_calc_pbn_div  ===============
[09:34:20] [PASSED] Link rate 2000000 lane count 4
[09:34:20] [PASSED] Link rate 2000000 lane count 2
[09:34:20] [PASSED] Link rate 2000000 lane count 1
[09:34:20] [PASSED] Link rate 1350000 lane count 4
[09:34:20] [PASSED] Link rate 1350000 lane count 2
[09:34:20] [PASSED] Link rate 1350000 lane count 1
[09:34:20] [PASSED] Link rate 1000000 lane count 4
[09:34:20] [PASSED] Link rate 1000000 lane count 2
[09:34:20] [PASSED] Link rate 1000000 lane count 1
[09:34:20] [PASSED] Link rate 810000 lane count 4
[09:34:20] [PASSED] Link rate 810000 lane count 2
[09:34:20] [PASSED] Link rate 810000 lane count 1
[09:34:20] [PASSED] Link rate 540000 lane count 4
[09:34:20] [PASSED] Link rate 540000 lane count 2
[09:34:20] [PASSED] Link rate 540000 lane count 1
[09:34:20] [PASSED] Link rate 270000 lane count 4
[09:34:20] [PASSED] Link rate 270000 lane count 2
[09:34:20] [PASSED] Link rate 270000 lane count 1
[09:34:20] [PASSED] Link rate 162000 lane count 4
[09:34:20] [PASSED] Link rate 162000 lane count 2
[09:34:20] [PASSED] Link rate 162000 lane count 1
[09:34:20] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[09:34:20] ========= drm_test_dp_mst_sideband_msg_req_decode  =========
[09:34:20] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[09:34:20] [PASSED] DP_POWER_UP_PHY with port number
[09:34:20] [PASSED] DP_POWER_DOWN_PHY with port number
[09:34:20] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[09:34:20] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[09:34:20] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[09:34:20] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[09:34:20] [PASSED] DP_QUERY_PAYLOAD with port number
[09:34:20] [PASSED] DP_QUERY_PAYLOAD with VCPI
[09:34:20] [PASSED] DP_REMOTE_DPCD_READ with port number
[09:34:20] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[09:34:20] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[09:34:20] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[09:34:20] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[09:34:20] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[09:34:20] [PASSED] DP_REMOTE_I2C_READ with port number
[09:34:20] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[09:34:20] [PASSED] DP_REMOTE_I2C_READ with transactions array
[09:34:20] [PASSED] DP_REMOTE_I2C_WRITE with port number
[09:34:20] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[09:34:20] [PASSED] DP_REMOTE_I2C_WRITE with data array
[09:34:20] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[09:34:20] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[09:34:20] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[09:34:20] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[09:34:20] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[09:34:20] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[09:34:20] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[09:34:20] ================ [PASSED] drm_dp_mst_helper ================
[09:34:20] ================== drm_exec (7 subtests) ===================
[09:34:20] [PASSED] sanitycheck
[09:34:20] [PASSED] test_lock
[09:34:20] [PASSED] test_lock_unlock
[09:34:20] [PASSED] test_duplicates
[09:34:20] [PASSED] test_prepare
[09:34:20] [PASSED] test_prepare_array
[09:34:20] [PASSED] test_multiple_loops
[09:34:20] ==================== [PASSED] drm_exec =====================
[09:34:20] =========== drm_format_helper_test (17 subtests) ===========
[09:34:20] ============== drm_test_fb_xrgb8888_to_gray8  ==============
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[09:34:20] ============= drm_test_fb_xrgb8888_to_rgb332  ==============
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[09:34:20] ============= drm_test_fb_xrgb8888_to_rgb565  ==============
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[09:34:20] ============ drm_test_fb_xrgb8888_to_xrgb1555  =============
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[09:34:20] ============ drm_test_fb_xrgb8888_to_argb1555  =============
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[09:34:20] ============ drm_test_fb_xrgb8888_to_rgba5551  =============
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[09:34:20] ============= drm_test_fb_xrgb8888_to_rgb888  ==============
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[09:34:20] ============= drm_test_fb_xrgb8888_to_bgr888  ==============
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[09:34:20] ============ drm_test_fb_xrgb8888_to_argb8888  =============
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[09:34:20] =========== drm_test_fb_xrgb8888_to_xrgb2101010  ===========
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[09:34:20] =========== drm_test_fb_xrgb8888_to_argb2101010  ===========
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[09:34:20] ============== drm_test_fb_xrgb8888_to_mono  ===============
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[09:34:20] ==================== drm_test_fb_swab  =====================
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ================ [PASSED] drm_test_fb_swab =================
[09:34:20] ============ drm_test_fb_xrgb8888_to_xbgr8888  =============
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[09:34:20] ============ drm_test_fb_xrgb8888_to_abgr8888  =============
[09:34:20] [PASSED] single_pixel_source_buffer
[09:34:20] [PASSED] single_pixel_clip_rectangle
[09:34:20] [PASSED] well_known_colors
[09:34:20] [PASSED] destination_pitch
[09:34:20] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[09:34:20] ================= drm_test_fb_clip_offset  =================
[09:34:20] [PASSED] pass through
[09:34:20] [PASSED] horizontal offset
[09:34:20] [PASSED] vertical offset
[09:34:20] [PASSED] horizontal and vertical offset
[09:34:20] [PASSED] horizontal offset (custom pitch)
[09:34:20] [PASSED] vertical offset (custom pitch)
[09:34:20] [PASSED] horizontal and vertical offset (custom pitch)
[09:34:20] ============= [PASSED] drm_test_fb_clip_offset =============
[09:34:20] =================== drm_test_fb_memcpy  ====================
[09:34:20] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[09:34:20] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[09:34:20] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[09:34:20] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[09:34:20] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[09:34:20] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[09:34:20] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[09:34:20] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[09:34:20] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[09:34:20] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[09:34:20] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[09:34:20] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[09:34:20] =============== [PASSED] drm_test_fb_memcpy ================
[09:34:20] ============= [PASSED] drm_format_helper_test ==============
[09:34:20] ================= drm_format (18 subtests) =================
[09:34:20] [PASSED] drm_test_format_block_width_invalid
[09:34:20] [PASSED] drm_test_format_block_width_one_plane
[09:34:20] [PASSED] drm_test_format_block_width_two_plane
[09:34:20] [PASSED] drm_test_format_block_width_three_plane
[09:34:20] [PASSED] drm_test_format_block_width_tiled
[09:34:20] [PASSED] drm_test_format_block_height_invalid
[09:34:20] [PASSED] drm_test_format_block_height_one_plane
[09:34:20] [PASSED] drm_test_format_block_height_two_plane
[09:34:20] [PASSED] drm_test_format_block_height_three_plane
[09:34:20] [PASSED] drm_test_format_block_height_tiled
[09:34:20] [PASSED] drm_test_format_min_pitch_invalid
[09:34:20] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[09:34:20] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[09:34:20] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[09:34:20] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[09:34:20] [PASSED] drm_test_format_min_pitch_two_plane
[09:34:20] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[09:34:20] [PASSED] drm_test_format_min_pitch_tiled
[09:34:20] =================== [PASSED] drm_format ====================
[09:34:20] ============== drm_framebuffer (10 subtests) ===============
[09:34:20] ========== drm_test_framebuffer_check_src_coords  ==========
[09:34:20] [PASSED] Success: source fits into fb
[09:34:20] [PASSED] Fail: overflowing fb with x-axis coordinate
[09:34:20] [PASSED] Fail: overflowing fb with y-axis coordinate
[09:34:20] [PASSED] Fail: overflowing fb with source width
[09:34:20] [PASSED] Fail: overflowing fb with source height
[09:34:20] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[09:34:20] [PASSED] drm_test_framebuffer_cleanup
[09:34:20] =============== drm_test_framebuffer_create  ===============
[09:34:20] [PASSED] ABGR8888 normal sizes
[09:34:20] [PASSED] ABGR8888 max sizes
[09:34:20] [PASSED] ABGR8888 pitch greater than min required
[09:34:20] [PASSED] ABGR8888 pitch less than min required
[09:34:20] [PASSED] ABGR8888 Invalid width
[09:34:20] [PASSED] ABGR8888 Invalid buffer handle
[09:34:20] [PASSED] No pixel format
[09:34:20] [PASSED] ABGR8888 Width 0
[09:34:20] [PASSED] ABGR8888 Height 0
[09:34:20] [PASSED] ABGR8888 Out of bound height * pitch combination
[09:34:20] [PASSED] ABGR8888 Large buffer offset
[09:34:20] [PASSED] ABGR8888 Buffer offset for inexistent plane
[09:34:20] [PASSED] ABGR8888 Invalid flag
[09:34:20] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[09:34:20] [PASSED] ABGR8888 Valid buffer modifier
[09:34:20] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[09:34:20] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[09:34:20] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[09:34:20] [PASSED] NV12 Normal sizes
[09:34:20] [PASSED] NV12 Max sizes
[09:34:20] [PASSED] NV12 Invalid pitch
[09:34:20] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[09:34:20] [PASSED] NV12 different  modifier per-plane
[09:34:20] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[09:34:20] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[09:34:20] [PASSED] NV12 Modifier for inexistent plane
[09:34:20] [PASSED] NV12 Handle for inexistent plane
[09:34:20] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[09:34:20] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[09:34:20] [PASSED] YVU420 Normal sizes
[09:34:20] [PASSED] YVU420 Max sizes
[09:34:20] [PASSED] YVU420 Invalid pitch
[09:34:20] [PASSED] YVU420 Different pitches
[09:34:20] [PASSED] YVU420 Different buffer offsets/pitches
[09:34:20] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[09:34:20] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[09:34:20] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[09:34:20] [PASSED] YVU420 Valid modifier
[09:34:20] [PASSED] YVU420 Different modifiers per plane
[09:34:20] [PASSED] YVU420 Modifier for inexistent plane
[09:34:20] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[09:34:20] [PASSED] X0L2 Normal sizes
[09:34:20] [PASSED] X0L2 Max sizes
[09:34:20] [PASSED] X0L2 Invalid pitch
[09:34:20] [PASSED] X0L2 Pitch greater than minimum required
[09:34:20] [PASSED] X0L2 Handle for inexistent plane
[09:34:20] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[09:34:20] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[09:34:20] [PASSED] X0L2 Valid modifier
[09:34:20] [PASSED] X0L2 Modifier for inexistent plane
[09:34:20] =========== [PASSED] drm_test_framebuffer_create ===========
[09:34:20] [PASSED] drm_test_framebuffer_free
[09:34:20] [PASSED] drm_test_framebuffer_init
[09:34:20] [PASSED] drm_test_framebuffer_init_bad_format
[09:34:20] [PASSED] drm_test_framebuffer_init_dev_mismatch
[09:34:20] [PASSED] drm_test_framebuffer_lookup
[09:34:20] [PASSED] drm_test_framebuffer_lookup_inexistent
[09:34:20] [PASSED] drm_test_framebuffer_modifiers_not_supported
[09:34:20] ================= [PASSED] drm_framebuffer =================
[09:34:20] ================ drm_gem_shmem (8 subtests) ================
[09:34:20] [PASSED] drm_gem_shmem_test_obj_create
[09:34:20] [PASSED] drm_gem_shmem_test_obj_create_private
[09:34:20] [PASSED] drm_gem_shmem_test_pin_pages
[09:34:20] [PASSED] drm_gem_shmem_test_vmap
[09:34:20] [PASSED] drm_gem_shmem_test_get_sg_table
[09:34:20] [PASSED] drm_gem_shmem_test_get_pages_sgt
[09:34:20] [PASSED] drm_gem_shmem_test_madvise
[09:34:20] [PASSED] drm_gem_shmem_test_purge
[09:34:20] ================== [PASSED] drm_gem_shmem ==================
[09:34:20] === drm_atomic_helper_connector_hdmi_check (29 subtests) ===
[09:34:20] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[09:34:20] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[09:34:20] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[09:34:20] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[09:34:20] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[09:34:20] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[09:34:20] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420  =======
[09:34:20] [PASSED] Automatic
[09:34:20] [PASSED] Full
[09:34:20] [PASSED] Limited 16:235
[09:34:20] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[09:34:20] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[09:34:20] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[09:34:20] [PASSED] drm_test_check_disable_connector
[09:34:20] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[09:34:20] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[09:34:20] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[09:34:20] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[09:34:20] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[09:34:20] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[09:34:20] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[09:34:20] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[09:34:20] [PASSED] drm_test_check_output_bpc_dvi
[09:34:20] [PASSED] drm_test_check_output_bpc_format_vic_1
[09:34:20] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[09:34:20] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[09:34:20] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[09:34:20] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[09:34:20] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[09:34:20] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[09:34:20] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[09:34:20] ============ drm_test_check_hdmi_color_format  =============
[09:34:20] [PASSED] AUTO -> RGB
[09:34:20] [PASSED] YCBCR422 -> YUV422
[09:34:20] [PASSED] YCBCR420 -> YUV420
[09:34:20] [PASSED] YCBCR444 -> YUV444
[09:34:20] [PASSED] RGB -> RGB
[09:34:20] ======== [PASSED] drm_test_check_hdmi_color_format =========
[09:34:20] ======== drm_test_check_hdmi_color_format_420_only  ========
[09:34:20] [PASSED] RGB should fail
[09:34:20] [PASSED] YUV444 should fail
[09:34:20] [PASSED] YUV422 should fail
[09:34:20] [PASSED] YUV420 should work
[09:34:20] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ====
[09:34:20] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[09:34:20] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[09:34:20] [PASSED] drm_test_check_broadcast_rgb_value
[09:34:20] [PASSED] drm_test_check_bpc_8_value
[09:34:20] [PASSED] drm_test_check_bpc_10_value
[09:34:20] [PASSED] drm_test_check_bpc_12_value
[09:34:20] [PASSED] drm_test_check_format_value
[09:34:20] [PASSED] drm_test_check_tmds_char_value
[09:34:20] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[09:34:20] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) =
[09:34:20] [PASSED] drm_test_check_mode_valid
[09:34:20] [PASSED] drm_test_check_mode_valid_reject
[09:34:20] [PASSED] drm_test_check_mode_valid_reject_rate
[09:34:20] [PASSED] drm_test_check_mode_valid_reject_max_clock
[09:34:20] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock
[09:34:20] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector
[09:34:20] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb
[09:34:20] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[09:34:20] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[09:34:20] [PASSED] drm_test_check_infoframes
[09:34:20] [PASSED] drm_test_check_reject_avi_infoframe
[09:34:20] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[09:34:20] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[09:34:20] [PASSED] drm_test_check_reject_audio_infoframe
[09:34:20] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[09:34:20] ================= drm_managed (2 subtests) =================
[09:34:20] [PASSED] drm_test_managed_release_action
[09:34:20] [PASSED] drm_test_managed_run_action
[09:34:20] =================== [PASSED] drm_managed ===================
[09:34:20] =================== drm_mm (6 subtests) ====================
[09:34:20] [PASSED] drm_test_mm_init
[09:34:20] [PASSED] drm_test_mm_debug
[09:34:20] [PASSED] drm_test_mm_align32
[09:34:20] [PASSED] drm_test_mm_align64
[09:34:20] [PASSED] drm_test_mm_lowest
[09:34:20] [PASSED] drm_test_mm_highest
[09:34:20] ===================== [PASSED] drm_mm ======================
[09:34:20] ============= drm_modes_analog_tv (5 subtests) =============
[09:34:20] [PASSED] drm_test_modes_analog_tv_mono_576i
[09:34:20] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[09:34:20] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[09:34:20] [PASSED] drm_test_modes_analog_tv_pal_576i
[09:34:20] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[09:34:20] =============== [PASSED] drm_modes_analog_tv ===============
[09:34:20] ============== drm_plane_helper (2 subtests) ===============
[09:34:20] =============== drm_test_check_plane_state  ================
[09:34:20] [PASSED] clipping_simple
[09:34:20] [PASSED] clipping_rotate_reflect
[09:34:20] [PASSED] positioning_simple
[09:34:20] [PASSED] upscaling
[09:34:20] [PASSED] downscaling
[09:34:20] [PASSED] rounding1
[09:34:20] [PASSED] rounding2
[09:34:20] [PASSED] rounding3
[09:34:20] [PASSED] rounding4
[09:34:20] =========== [PASSED] drm_test_check_plane_state ============
[09:34:20] =========== drm_test_check_invalid_plane_state  ============
[09:34:20] [PASSED] positioning_invalid
[09:34:20] [PASSED] upscaling_invalid
[09:34:20] [PASSED] downscaling_invalid
[09:34:20] ======= [PASSED] drm_test_check_invalid_plane_state ========
[09:34:20] ================ [PASSED] drm_plane_helper =================
[09:34:20] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[09:34:20] ====== drm_test_connector_helper_tv_get_modes_check  =======
[09:34:20] [PASSED] None
[09:34:20] [PASSED] PAL
[09:34:20] [PASSED] NTSC
[09:34:20] [PASSED] Both, NTSC Default
[09:34:20] [PASSED] Both, PAL Default
[09:34:20] [PASSED] Both, NTSC Default, with PAL on command-line
[09:34:20] [PASSED] Both, PAL Default, with NTSC on command-line
[09:34:20] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[09:34:20] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[09:34:20] ================== drm_rect (9 subtests) ===================
[09:34:20] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[09:34:20] [PASSED] drm_test_rect_clip_scaled_not_clipped
[09:34:20] [PASSED] drm_test_rect_clip_scaled_clipped
[09:34:20] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[09:34:20] ================= drm_test_rect_intersect  =================
[09:34:20] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[09:34:20] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[09:34:20] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[09:34:20] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[09:34:20] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[09:34:20] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[09:34:20] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[09:34:20] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[09:34:20] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[09:34:20] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[09:34:20] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[09:34:20] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[09:34:20] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[09:34:20] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[09:34:20] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[09:34:20] ============= [PASSED] drm_test_rect_intersect =============
[09:34:20] ================ drm_test_rect_calc_hscale  ================
[09:34:20] [PASSED] normal use
[09:34:20] [PASSED] out of max range
[09:34:20] [PASSED] out of min range
[09:34:20] [PASSED] zero dst
[09:34:20] [PASSED] negative src
[09:34:20] [PASSED] negative dst
[09:34:20] ============ [PASSED] drm_test_rect_calc_hscale ============
[09:34:20] ================ drm_test_rect_calc_vscale  ================
[09:34:20] [PASSED] normal use
[09:34:20] [PASSED] out of max range
[09:34:20] [PASSED] out of min range
[09:34:20] [PASSED] zero dst
[09:34:20] [PASSED] negative src
[09:34:20] [PASSED] negative dst
[09:34:20] ============ [PASSED] drm_test_rect_calc_vscale ============
[09:34:20] ================== drm_test_rect_rotate  ===================
[09:34:20] [PASSED] reflect-x
[09:34:20] [PASSED] reflect-y
[09:34:20] [PASSED] rotate-0
[09:34:20] [PASSED] rotate-90
[09:34:20] [PASSED] rotate-180
[09:34:20] [PASSED] rotate-270
[09:34:20] ============== [PASSED] drm_test_rect_rotate ===============
[09:34:20] ================ drm_test_rect_rotate_inv  =================
[09:34:20] [PASSED] reflect-x
[09:34:20] [PASSED] reflect-y
[09:34:20] [PASSED] rotate-0
[09:34:20] [PASSED] rotate-90
[09:34:20] [PASSED] rotate-180
[09:34:20] [PASSED] rotate-270
[09:34:20] ============ [PASSED] drm_test_rect_rotate_inv =============
[09:34:20] ==================== [PASSED] drm_rect =====================
[09:34:20] ============ drm_sysfb_modeset_test (1 subtest) ============
[09:34:20] ============ drm_test_sysfb_build_fourcc_list  =============
[09:34:20] [PASSED] no native formats
[09:34:20] [PASSED] XRGB8888 as native format
[09:34:20] [PASSED] remove duplicates
[09:34:20] [PASSED] convert alpha formats
[09:34:20] [PASSED] random formats
[09:34:20] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[09:34:20] ============= [PASSED] drm_sysfb_modeset_test ==============
[09:34:20] ================== drm_fixp (2 subtests) ===================
[09:34:20] [PASSED] drm_test_int2fixp
[09:34:20] [PASSED] drm_test_sm2fixp
[09:34:20] ==================== [PASSED] drm_fixp =====================
[09:34:20] ============================================================
[09:34:20] Testing complete. Ran 641 tests: passed: 641
[09:34:20] Elapsed time: 27.040s total, 1.819s configuring, 25.006s building, 0.179s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[09:34:20] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:34:22] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[09:34:32] Starting KUnit Kernel (1/1)...
[09:34:32] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:34:32] ============= refcount_interrupt (4 subtests) ==============
[09:34:32] [PASSED] test_single_irq_change
[09:34:32] [PASSED] test_nested_irq_change
[09:34:32] [PASSED] test_multiple_irq_change
[09:34:32] [PASSED] test_irq_save
[09:34:32] =============== [PASSED] refcount_interrupt ================
[09:34:32] ================= ttm_device (5 subtests) ==================
[09:34:32] [PASSED] ttm_device_init_basic
[09:34:32] [PASSED] ttm_device_init_multiple
[09:34:32] [PASSED] ttm_device_fini_basic
[09:34:32] [PASSED] ttm_device_init_no_vma_man
[09:34:32] ================== ttm_device_init_pools  ==================
[09:34:32] [PASSED] No DMA allocations, no DMA32 required
[09:34:32] [PASSED] DMA allocations, DMA32 required
[09:34:32] [PASSED] No DMA allocations, DMA32 required
[09:34:32] [PASSED] DMA allocations, no DMA32 required
[09:34:32] ============== [PASSED] ttm_device_init_pools ==============
[09:34:32] =================== [PASSED] ttm_device ====================
[09:34:32] ================== ttm_pool (8 subtests) ===================
[09:34:32] ================== ttm_pool_alloc_basic  ===================
[09:34:32] [PASSED] One page
[09:34:32] [PASSED] More than one page
[09:34:32] [PASSED] Above the allocation limit
[09:34:32] [PASSED] One page, with coherent DMA mappings enabled
[09:34:32] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[09:34:32] ============== [PASSED] ttm_pool_alloc_basic ===============
[09:34:32] ============== ttm_pool_alloc_basic_dma_addr  ==============
[09:34:32] [PASSED] One page
[09:34:32] [PASSED] More than one page
[09:34:32] [PASSED] Above the allocation limit
[09:34:32] [PASSED] One page, with coherent DMA mappings enabled
[09:34:32] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[09:34:32] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[09:34:32] [PASSED] ttm_pool_alloc_order_caching_match
[09:34:32] [PASSED] ttm_pool_alloc_caching_mismatch
[09:34:32] [PASSED] ttm_pool_alloc_order_mismatch
[09:34:32] [PASSED] ttm_pool_free_dma_alloc
[09:34:32] [PASSED] ttm_pool_free_no_dma_alloc
[09:34:32] [PASSED] ttm_pool_fini_basic
[09:34:32] ==================== [PASSED] ttm_pool =====================
[09:34:32] ================ ttm_resource (8 subtests) =================
[09:34:32] ================= ttm_resource_init_basic  =================
[09:34:32] [PASSED] Init resource in TTM_PL_SYSTEM
[09:34:32] [PASSED] Init resource in TTM_PL_VRAM
[09:34:32] [PASSED] Init resource in a private placement
[09:34:32] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[09:34:32] ============= [PASSED] ttm_resource_init_basic =============
[09:34:32] [PASSED] ttm_resource_init_pinned
[09:34:32] [PASSED] ttm_resource_fini_basic
[09:34:32] [PASSED] ttm_resource_manager_init_basic
[09:34:32] [PASSED] ttm_resource_manager_usage_basic
[09:34:32] [PASSED] ttm_resource_manager_set_used_basic
[09:34:32] [PASSED] ttm_sys_man_alloc_basic
[09:34:32] [PASSED] ttm_sys_man_free_basic
[09:34:32] ================== [PASSED] ttm_resource ===================
[09:34:32] =================== ttm_tt (15 subtests) ===================
[09:34:32] ==================== ttm_tt_init_basic  ====================
[09:34:32] [PASSED] Page-aligned size
[09:34:32] [PASSED] Extra pages requested
[09:34:32] ================ [PASSED] ttm_tt_init_basic ================
[09:34:32] [PASSED] ttm_tt_init_misaligned
[09:34:32] [PASSED] ttm_tt_fini_basic
[09:34:32] [PASSED] ttm_tt_fini_sg
[09:34:32] [PASSED] ttm_tt_fini_shmem
[09:34:32] [PASSED] ttm_tt_create_basic
[09:34:32] [PASSED] ttm_tt_create_invalid_bo_type
[09:34:32] [PASSED] ttm_tt_create_ttm_exists
[09:34:32] [PASSED] ttm_tt_create_failed
[09:34:32] [PASSED] ttm_tt_destroy_basic
[09:34:32] [PASSED] ttm_tt_populate_null_ttm
[09:34:32] [PASSED] ttm_tt_populate_populated_ttm
[09:34:32] [PASSED] ttm_tt_unpopulate_basic
[09:34:32] [PASSED] ttm_tt_unpopulate_empty_ttm
[09:34:32] [PASSED] ttm_tt_swapin_basic
[09:34:32] ===================== [PASSED] ttm_tt ======================
[09:34:32] =================== ttm_bo (14 subtests) ===================
[09:34:32] =========== ttm_bo_reserve_optimistic_no_ticket  ===========
[09:34:32] [PASSED] Cannot be interrupted and sleeps
[09:34:32] [PASSED] Cannot be interrupted, locks straight away
[09:34:32] [PASSED] Can be interrupted, sleeps
[09:34:32] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[09:34:32] [PASSED] ttm_bo_reserve_locked_no_sleep
[09:34:32] [PASSED] ttm_bo_reserve_no_wait_ticket
[09:34:32] [PASSED] ttm_bo_reserve_double_resv
[09:34:32] [PASSED] ttm_bo_reserve_interrupted
[09:34:32] [PASSED] ttm_bo_reserve_deadlock
[09:34:32] [PASSED] ttm_bo_unreserve_basic
[09:34:32] [PASSED] ttm_bo_unreserve_pinned
[09:34:32] [PASSED] ttm_bo_unreserve_bulk
[09:34:32] [PASSED] ttm_bo_fini_basic
[09:34:32] [PASSED] ttm_bo_fini_shared_resv
[09:34:32] [PASSED] ttm_bo_pin_basic
[09:34:32] [PASSED] ttm_bo_pin_unpin_resource
[09:34:32] [PASSED] ttm_bo_multiple_pin_one_unpin
[09:34:32] ===================== [PASSED] ttm_bo ======================
[09:34:32] ============== ttm_bo_validate (22 subtests) ===============
[09:34:32] ============== ttm_bo_init_reserved_sys_man  ===============
[09:34:32] [PASSED] Buffer object for userspace
[09:34:32] [PASSED] Kernel buffer object
[09:34:32] [PASSED] Shared buffer object
[09:34:32] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[09:34:32] ============== ttm_bo_init_reserved_mock_man  ==============
[09:34:32] [PASSED] Buffer object for userspace
[09:34:32] [PASSED] Kernel buffer object
[09:34:32] [PASSED] Shared buffer object
[09:34:32] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[09:34:32] [PASSED] ttm_bo_init_reserved_resv
[09:34:32] ================== ttm_bo_validate_basic  ==================
[09:34:32] [PASSED] Buffer object for userspace
[09:34:32] [PASSED] Kernel buffer object
[09:34:32] [PASSED] Shared buffer object
[09:34:32] ============== [PASSED] ttm_bo_validate_basic ==============
[09:34:32] [PASSED] ttm_bo_validate_invalid_placement
[09:34:32] ============= ttm_bo_validate_same_placement  ==============
[09:34:32] [PASSED] System manager
[09:34:32] [PASSED] VRAM manager
[09:34:32] ========= [PASSED] ttm_bo_validate_same_placement ==========
[09:34:32] [PASSED] ttm_bo_validate_failed_alloc
[09:34:32] [PASSED] ttm_bo_validate_pinned
[09:34:32] [PASSED] ttm_bo_validate_busy_placement
[09:34:32] ================ ttm_bo_validate_multihop  =================
[09:34:32] [PASSED] Buffer object for userspace
[09:34:32] [PASSED] Kernel buffer object
[09:34:32] [PASSED] Shared buffer object
[09:34:32] ============ [PASSED] ttm_bo_validate_multihop =============
[09:34:32] ========== ttm_bo_validate_no_placement_signaled  ==========
[09:34:32] [PASSED] Buffer object in system domain, no page vector
[09:34:32] [PASSED] Buffer object in system domain with an existing page vector
[09:34:32] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[09:34:32] ======== ttm_bo_validate_no_placement_not_signaled  ========
[09:34:32] [PASSED] Buffer object for userspace
[09:34:32] [PASSED] Kernel buffer object
[09:34:32] [PASSED] Shared buffer object
[09:34:32] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[09:34:32] [PASSED] ttm_bo_validate_move_fence_signaled
[09:34:32] ========= ttm_bo_validate_move_fence_not_signaled  =========
[09:34:32] [PASSED] Waits for GPU
[09:34:32] [PASSED] Tries to lock straight away
[09:34:32] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[09:34:32] [PASSED] ttm_bo_validate_swapout
[09:34:32] [PASSED] ttm_bo_validate_happy_evict
[09:34:32] [PASSED] ttm_bo_validate_all_pinned_evict
[09:34:32] [PASSED] ttm_bo_validate_allowed_only_evict
[09:34:32] [PASSED] ttm_bo_validate_deleted_evict
[09:34:32] [PASSED] ttm_bo_validate_busy_domain_evict
[09:34:32] [PASSED] ttm_bo_validate_evict_gutting
[09:34:32] [PASSED] ttm_bo_validate_recrusive_evict
[09:34:32] ================= [PASSED] ttm_bo_validate =================
[09:34:32] ============================================================
[09:34:32] Testing complete. Ran 106 tests: passed: 106
[09:34:32] Elapsed time: 11.925s total, 1.816s configuring, 9.894s building, 0.184s running

+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/dma-buf/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[09:34:32] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[09:34:34] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[09:34:42] Starting KUnit Kernel (1/1)...
[09:34:42] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[09:34:42] ============= refcount_interrupt (4 subtests) ==============
[09:34:42] [PASSED] test_single_irq_change
[09:34:42] [PASSED] test_nested_irq_change
[09:34:42] [PASSED] test_multiple_irq_change
[09:34:42] [PASSED] test_irq_save
[09:34:42] =============== [PASSED] refcount_interrupt ================
[09:34:42] =============== dma-buf-fence (12 subtests) ================
[09:34:42] [PASSED] test_sanitycheck
[09:34:42] [PASSED] test_signaling
[09:34:42] [PASSED] test_add_callback
[09:34:42] [PASSED] test_late_add_callback
[09:34:42] [PASSED] test_rm_callback
[09:34:42] [PASSED] test_late_rm_callback
[09:34:42] [PASSED] test_status
[09:34:42] [PASSED] test_error
[09:34:42] [PASSED] test_wait
[09:34:42] [PASSED] test_wait_timeout
[09:34:42] [PASSED] test_stub
[09:34:42] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[09:34:42] ================== [PASSED] dma-buf-fence ==================
[09:34:42] ============ dma-buf-fence-chain (11 subtests) =============
[09:34:42] [PASSED] test_sanitycheck
[09:34:42] [PASSED] test_find_seqno
[09:34:42] [PASSED] test_find_signaled
[09:34:42] [PASSED] test_find_out_of_order
[09:34:48] [PASSED] test_find_gap
[09:34:48] [PASSED] test_find_race
[09:34:48] [PASSED] test_signal_forward
[09:34:48] [PASSED] test_signal_backward
[09:34:48] [PASSED] test_wait_forward
[09:34:48] [PASSED] test_wait_backward
[09:34:48] [PASSED] test_wait_random
[09:34:48] =============== [PASSED] dma-buf-fence-chain ===============
[09:34:48] ============ dma-buf-fence-unwrap (10 subtests) ============
[09:34:48] [PASSED] test_sanitycheck
[09:34:48] [PASSED] test_unwrap_array
[09:34:48] [PASSED] test_unwrap_chain
[09:34:48] [PASSED] test_unwrap_chain_array
[09:34:48] [PASSED] test_unwrap_merge
[09:34:48] [PASSED] test_unwrap_merge_duplicate
[09:34:48] [PASSED] test_unwrap_merge_seqno
[09:34:48] [PASSED] test_unwrap_merge_order
[09:34:48] [PASSED] test_unwrap_merge_complex
[09:34:48] [PASSED] test_unwrap_merge_complex_seqno
[09:34:48] ============== [PASSED] dma-buf-fence-unwrap ===============
[09:34:48] ================ dma-buf-resv (5 subtests) =================
[09:34:48] [PASSED] test_sanitycheck
[09:34:48] ===================== test_signaling  ======================
[09:34:48] [PASSED] kernel
[09:34:48] [PASSED] write
[09:34:48] [PASSED] read
[09:34:48] [PASSED] bookkeep
[09:34:48] ================= [PASSED] test_signaling ==================
[09:34:48] ====================== test_for_each  ======================
[09:34:48] [PASSED] kernel
[09:34:48] [PASSED] write
[09:34:48] [PASSED] read
[09:34:48] [PASSED] bookkeep
[09:34:48] ================== [PASSED] test_for_each ==================
[09:34:48] ================= test_for_each_unlocked  ==================
[09:34:48] [PASSED] kernel
[09:34:48] [PASSED] write
[09:34:48] [PASSED] read
[09:34:48] [PASSED] bookkeep
[09:34:48] ============= [PASSED] test_for_each_unlocked ==============
[09:34:48] ===================== test_get_fences  =====================
[09:34:48] [PASSED] kernel
[09:34:48] [PASSED] write
[09:34:48] [PASSED] read
[09:34:48] [PASSED] bookkeep
[09:34:48] ================= [PASSED] test_get_fences =================
[09:34:48] ================== [PASSED] dma-buf-resv ===================
[09:34:48] ============================================================
[09:34:48] Testing complete. Ran 54 tests: passed: 53, skipped: 1
[09:34:48] Elapsed time: 15.678s total, 1.816s configuring, 8.589s building, 5.261s running

+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* Re: [PATCH v8 4/5] drm/i915/irq: conditional HPD IRQ resets based on PME capability
  2026-09-15  9:25 ` [PATCH v8 4/5] drm/i915/irq: conditional HPD IRQ resets based on PME capability Vinod Govindapillai
@ 2026-09-15  9:43   ` sashiko-bot
  2026-09-15 12:55   ` Hogander, Jouni
  1 sibling, 0 replies; 17+ messages in thread
From: sashiko-bot @ 2026-09-15  9:43 UTC (permalink / raw)
  To: Vinod Govindapillai; +Cc: intel-xe, intel-gfx

Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [High] irq: HPD events lost during runtime resume due to cleared IIR
- [High] pm: violating context separation by using runtime PM flag in system PM
- [Medium] irq: spurious wakeups due to unmasked GMBUS and AUX interrupts
- [Medium] pm: missing pme_enabled callback renders feature inactive on i915
--

commit 726361eac47c46981fd133dfd6565522bf0f1000
Author: Vinod Govindapillai <vinod.govindapillai@intel.com>

drm/i915/irq: conditional HPD IRQ resets based on PME capability

This commit skips resetting HPD-related IRQs during suspend if the device
is capable of generating PME from HPDs. This prevents dropping hotplug
events that should wake the system, as a full reset would clear them.

> diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c b/drivers/gpu/drm/i915/display/intel_display_irq.c
> index a59b75830bd13..8ce30112de974 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_irq.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c
> @@ -2217,8 +2217,10 @@ static void gen11_display_irq_reset(struct intel_display *display)
>  	enum pipe pipe;
>  	u32 trans_mask = BIT(TRANSCODER_A) | BIT(TRANSCODER_B) |
>  		BIT(TRANSCODER_C) | BIT(TRANSCODER_D);
> +	bool reset_hpd = !intel_display_rpm_pme_enabled(display);

[Severity: Medium]
Will this feature ever be active on i915?

intel_display_rpm_pme_enabled() checks rpm->pme_enabled. While xe implements
this callback, i915_display_rpm_interface (in intel_runtime_pm.c) does not:

const struct intel_display_rpm_interface i915_display_rpm_interface = {
	.get = i915_display_rpm_get,
        ...

This means intel_display_rpm_pme_enabled() will unconditionally return false on
all i915 platforms, causing reset_hpd to always be true.

[Severity: High]
Does this violate PM context separation by using a runtime PM flag in a
system PM path?

gen11_display_irq_reset() is a shared IRQ reset function called by both runtime
PM and system PM. The xe->pme.enabled flag queried by
intel_display_rpm_pme_enabled() is a runtime PM flag.

If this evaluates to true during a system PM resume, gen11_display_irq_reset()
will skip zeroing GEN11_DISPLAY_INT_CTL and resetting HPD IRQs, leaving the
hardware in an undefined power-on state since system suspend always loses
power and requires full reinitialization.

[Severity: High]
Does this logic inadvertently clear the HPD event that woke up the system?

When a PME wakes the system, xe_pci_runtime_resume() immediately disables PME
before resuming:

xe_pci_runtime_resume()
    xe_pm_update_pme_enabled(xe, false);
    xe_pm_runtime_resume(xe);
        ... -> gen11_display_irq_reset()

Since PME is now false, reset_hpd evaluates to true during the resume phase.
This causes irq_reset() to write 0xffffffff to the IIR for the HPD registers
later in this function, completely clearing the pending hardware HPD event
before the interrupt handler can be installed and process it.

>  
> -	intel_de_write(display, GEN11_DISPLAY_INT_CTL, 0);
> +	if (reset_hpd)
> +		intel_de_write(display, GEN11_DISPLAY_INT_CTL, 0);
>  
>  	if (DISPLAY_VER(display) >= 12) {
>  		enum transcoder trans;

[ ... ]

> @@ -2250,13 +2252,15 @@ static void gen11_display_irq_reset(struct intel_display *display)
>  	irq_reset(display, GEN8_DE_PORT_IRQ_REGS);
>  	irq_reset(display, GEN8_DE_MISC_IRQ_REGS);
>  
> -	if (DISPLAY_VER(display) >= 14)
> -		irq_reset(display, PICAINTERRUPT_IRQ_REGS);
> -	else
> -		irq_reset(display, GEN11_DE_HPD_IRQ_REGS);
> +	if (reset_hpd) {
> +		if (DISPLAY_VER(display) >= 14)
> +			irq_reset(display, PICAINTERRUPT_IRQ_REGS);
> +		else
> +			irq_reset(display, GEN11_DE_HPD_IRQ_REGS);
>  
> -	if (INTEL_PCH_TYPE(display) >= PCH_ICP)
> -		irq_reset(display, SDE_IRQ_REGS);
> +		if (INTEL_PCH_TYPE(display) >= PCH_ICP)
> +			irq_reset(display, SDE_IRQ_REGS);
> +	}

[Severity: Medium]
Will bypassing irq_reset() for these registers cause spurious wakeups?

The PICAINTERRUPT_IRQ_REGS and SDE_IRQ_REGS control multiple interrupts, not
just HPD. For instance, SDE_IRQ_REGS enables SDE_GMBUS_ICP (GMBUS/I2C), and
PICAINTERRUPT_IRQ_REGS enables TC AUX interrupts.

By completely skipping the register reset instead of explicitly preserving just
the HPD bits, GMBUS and AUX interrupts remain unmasked while the device is in
D3hot. Any activity or electrical noise on these buses could trigger an
interrupt, generating a PME and waking the system spuriously, causing unwanted
power consumption.

>  }
>  
>  void gen8_irq_power_well_post_enable(struct intel_display *display,

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260915092518.639448-1-vinod.govindapillai@intel.com?part=4

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

* ✗ CI.checksparse: warning for pm_pme support on display hotplug (rev8)
  2026-09-15  9:25 [PATCH v8 0/5] pm_pme support on display hotplug Vinod Govindapillai
                   ` (5 preceding siblings ...)
  2026-09-15  9:34 ` ✓ CI.KUnit: success for pm_pme support on display hotplug (rev8) Patchwork
@ 2026-09-15  9:50 ` Patchwork
  2026-09-15 10:11 ` ✓ Xe.CI.BAT: success " Patchwork
  2026-09-15 12:34 ` ✗ Xe.CI.FULL: failure " Patchwork
  8 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-09-15  9:50 UTC (permalink / raw)
  To: Vinod Govindapillai; +Cc: intel-xe

== Series Details ==

Series: pm_pme support on display hotplug (rev8)
URL   : https://patchwork.freedesktop.org/series/172305/
State : warning

== Summary ==

+ trap cleanup EXIT
+ KERNEL=/kernel
+ MT=/root/linux/maintainer-tools
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools /root/linux/maintainer-tools
Cloning into '/root/linux/maintainer-tools'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ make -C /root/linux/maintainer-tools
make: Entering directory '/root/linux/maintainer-tools'
cc -O2 -g -Wextra -o remap-log remap-log.c
make: Leaving directory '/root/linux/maintainer-tools'
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ /root/linux/maintainer-tools/dim sparse --fast 885e7996176ebe07c2cc143c1ee067591e49fa66
Sparse version: 0.6.4 (Ubuntu: 0.6.4-4ubuntu3)
Failed building baseline commit 885e7996176e ("drm-tip: 2026y-09m-15d-08h-05m-37s UTC integration manifest")
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel



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

* ✓ Xe.CI.BAT: success for pm_pme support on display hotplug (rev8)
  2026-09-15  9:25 [PATCH v8 0/5] pm_pme support on display hotplug Vinod Govindapillai
                   ` (6 preceding siblings ...)
  2026-09-15  9:50 ` ✗ CI.checksparse: warning " Patchwork
@ 2026-09-15 10:11 ` Patchwork
  2026-09-15 12:34 ` ✗ Xe.CI.FULL: failure " Patchwork
  8 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-09-15 10:11 UTC (permalink / raw)
  To: Vinod Govindapillai; +Cc: intel-xe

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

== Series Details ==

Series: pm_pme support on display hotplug (rev8)
URL   : https://patchwork.freedesktop.org/series/172305/
State : success

== Summary ==

CI Bug Log - changes from xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66_BAT -> xe-pw-172305v8_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (15 -> 15)
------------------------------

  No changes in participating hosts

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

  Here are the changes found in xe-pw-172305v8_BAT that come from known issues:

### IGT changes ###

#### Possible fixes ####

  * igt@core_hotunplug@unbind-rebind:
    - bat-bmg-2:          [ABORT][1] ([Intel XE#8007]) -> [PASS][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66/bat-bmg-2/igt@core_hotunplug@unbind-rebind.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/bat-bmg-2/igt@core_hotunplug@unbind-rebind.html

  
  [Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007


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

  * Linux: xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66 -> xe-pw-172305v8

  IGT_9095: 9095
  xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66: 885e7996176ebe07c2cc143c1ee067591e49fa66
  xe-pw-172305v8: 172305v8

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/index.html

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

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

* Re: [PATCH v8 1/5] drm/xe/pm: introduce PM PME support
  2026-09-15  9:25 ` [PATCH v8 1/5] drm/xe/pm: introduce PM PME support Vinod Govindapillai
@ 2026-09-15 12:27   ` Hogander, Jouni
  2026-09-16 14:16     ` Rodrigo Vivi
  0 siblings, 1 reply; 17+ messages in thread
From: Hogander, Jouni @ 2026-09-15 12:27 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Govindapillai, Vinod

On Tue, 2026-09-15 at 12:25 +0300, Vinod Govindapillai wrote:
> Introduce PME support for PME capable devices. Whether device is
> PME capable is assessed during PCI probe routine. And the whether
> PME is enabled for a specific context is assessed during the PM
> runtime suspend call if the device is PME capable.
> 
> If the PME is enabled, HPDs can generate PME which in turn call
> the runtime resume call and do the wakeup routines. Till now
> the driver was relying on HPD polling to wakeup in case of any
> HPDs. HPD polling can be avoided in platforms with PME support
> and instead rely on this PCI PME for HPD induced wakeup.
> 
> v2: access functions for xe.pme.enabled status and clear the pme.
>     enabled in case of error in xe_pm_runtime_suspend()
> 
> v3: use the local pme_enabled flag to clear the device wakeup
>     incase of error
> 
> v4: call the devm_device_init_wakeup() only if device is PME
>     capable to avoid false wakeup capable reporting in platforms
>     where PME is not supported.
>     Squash the patch which handled the lockdep deadlock handling
> 
> Bspec: 52979, 52980, 68857, 68867, 68970
> Assisted-by: GitHub_Copilot:claude-opus-5
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>

Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/xe/xe_device_types.h | 13 ++++++++
>  drivers/gpu/drm/xe/xe_pci.c          | 22 +++++++++++++-
>  drivers/gpu/drm/xe/xe_pm.c           | 45
> ++++++++++++++++++++++++++++
>  drivers/gpu/drm/xe/xe_pm.h           |  2 ++
>  4 files changed, 81 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h
> b/drivers/gpu/drm/xe/xe_device_types.h
> index 4661bfce2f4e..bb4234f00453 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -460,6 +460,19 @@ struct xe_device {
>  		struct mutex lock;
>  	} d3cold;
>  
> +	/** @pme: Encapsulate pme related stuff */
> +	struct {
> +		/** @pme.capable: Indicates if device is PME capable
> */
> +		bool capable;
> +
> +		/** @pme.enabled:
> +		 *
> +		 * Indicates if PME is enabled - depends on user
> controllable
> +		 * sysfs interface as well
> +		 */
> +		bool enabled;
> +	} pme;
> +
>  	/** @pm_notifier: Our PM notifier to perform actions in
> response to various PM events. */
>  	struct notifier_block pm_notifier;
>  	/** @pm_block: Completion to block validating tasks on
> suspend / hibernate prepare */
> diff --git a/drivers/gpu/drm/xe/xe_pci.c
> b/drivers/gpu/drm/xe/xe_pci.c
> index c401c8803796..d10633f74aa4 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -1380,6 +1380,8 @@ static int xe_pci_runtime_suspend(struct device
> *dev)
>  {
>  	struct pci_dev *pdev = to_pci_dev(dev);
>  	struct xe_device *xe = pdev_to_xe_device(pdev);
> +	unsigned int flags;
> +	bool pme_enabled;
>  	int err;
>  
>  	/*
> @@ -1391,9 +1393,25 @@ static int xe_pci_runtime_suspend(struct
> device *dev)
>  	xe_assert(xe, !IS_SRIOV_VF(xe));
>  	xe_assert(xe, !pci_num_vf(pdev));
>  
> +	flags = memalloc_noreclaim_save();
> +	pme_enabled = xe->pme.capable && !xe->d3cold.allowed &&
> +		      pci_enable_wake(pdev, PCI_D3hot, true) == 0;
> +	memalloc_noreclaim_restore(flags);
> +
> +	xe_pm_update_pme_enabled(xe, pme_enabled);
> +
>  	err = xe_pm_runtime_suspend(xe);
> -	if (err)
> +	if (err) {
> +		if (pme_enabled) {
> +			flags = memalloc_noreclaim_save();
> +			pci_enable_wake(pdev, PCI_D3hot, false);
> +			memalloc_noreclaim_restore(flags);
> +
> +			xe_pm_update_pme_enabled(xe, false);
> +		}
> +
>  		return err;
> +	}
>  
>  	pci_save_state(pdev);
>  
> @@ -1422,6 +1440,8 @@ static int xe_pci_runtime_resume(struct device
> *dev)
>  
>  	pci_restore_state(pdev);
>  
> +	xe_pm_update_pme_enabled(xe, false);
> +
>  	if (xe->d3cold.allowed) {
>  		err = pci_enable_device(pdev);
>  		if (err)
> diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> index f517bf453b54..e71bb90c9b80 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -78,6 +78,8 @@
>   * management (RPS).
>   */
>  
> +#define HAS_PM_PME_SUPPORT(xe) (GRAPHICS_VERx100(xe) >= 3500)
> +
>  #ifdef CONFIG_LOCKDEP
>  static struct lockdep_map xe_pm_runtime_d3cold_map = {
>  	.name = "xe_rpm_d3cold_map"
> @@ -384,6 +386,14 @@ int xe_pm_init_early(struct xe_device *xe)
>  }
>  ALLOW_ERROR_INJECTION(xe_pm_init_early, ERRNO); /* See
> xe_pci_probe() */
>  
> +static bool xe_pm_pci_pme_capable(struct xe_device *xe)
> +{
> +	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
> +
> +	return HAS_PM_PME_SUPPORT(xe) ?
> +		pci_pme_capable(pdev, PCI_D3hot) : false;
> +}
> +
>  /**
>   * xe_pm_probe() - Initialize Xe Power Management
>   * @xe: the &xe_device instance
> @@ -397,6 +407,16 @@ int xe_pm_probe(struct xe_device *xe)
>  	xe->d3cold.capable = xe_pm_pci_d3cold_capable(xe);
>  	xe_dbg(xe, "d3cold: capable=%s\n", str_yes_no(xe-
> >d3cold.capable));
>  
> +	xe->pme.capable = xe_pm_pci_pme_capable(xe);
> +	xe_dbg(xe, "pme: capable=%s\n", str_yes_no(xe-
> >pme.capable));
> +
> +	if (xe->pme.capable) {
> +		int err = devm_device_init_wakeup(xe->drm.dev);
> +
> +		if (err)
> +			return err;
> +	}
> +
>  	return 0;
>  }
>  
> @@ -650,6 +670,7 @@ int xe_pm_runtime_suspend(struct xe_device *xe)
>  	return 0;
>  
>  out_resume:
> +	xe_pm_update_pme_enabled(xe, false);
>  	xe_display_pm_runtime_resume(xe);
>  	xe_pxp_pm_resume(xe->pxp);
>  out:
> @@ -993,6 +1014,30 @@ int xe_pm_set_vram_threshold(struct xe_device
> *xe, u32 threshold)
>  	return 0;
>  }
>  
> +/**
> + * xe_pm_pme_enabled - get the current status of PME enabled
> + * @xe: xe device instance
> + *
> + * Returns: True if PME is enabled, false otherwise.
> + */
> +bool xe_pm_pme_enabled(struct xe_device *xe)
> +{
> +	return xe->pme.enabled;
> +}
> +
> +/**
> + * xe_pm_update_pme_enabled - Update the PME enabled state
> + * @xe: xe device instance
> + * @status: New PME enabled status
> + *
> + * Called during runtime suspend / resume. Status is set to True if
> PME is
> + * enabled during runtime_suspend. Cleared on runtime_resume.
> + */
> +void xe_pm_update_pme_enabled(struct xe_device *xe, bool status)
> +{
> +	xe->pme.enabled = status;
> +}
> +
>  /**
>   * xe_pm_d3cold_allowed_toggle - Check conditions to toggle
> d3cold.allowed
>   * @xe: xe device instance
> diff --git a/drivers/gpu/drm/xe/xe_pm.h b/drivers/gpu/drm/xe/xe_pm.h
> index 6d5ab09cb769..037c73ea4342 100644
> --- a/drivers/gpu/drm/xe/xe_pm.h
> +++ b/drivers/gpu/drm/xe/xe_pm.h
> @@ -33,6 +33,8 @@ bool xe_pm_runtime_resume_and_get(struct xe_device
> *xe);
>  void xe_pm_assert_unbounded_bridge(struct xe_device *xe);
>  int xe_pm_set_vram_threshold(struct xe_device *xe, u32 threshold);
>  void xe_pm_d3cold_allowed_toggle(struct xe_device *xe);
> +bool xe_pm_pme_enabled(struct xe_device *xe);
> +void xe_pm_update_pme_enabled(struct xe_device *xe, bool status);
>  bool xe_rpm_reclaim_safe(const struct xe_device *xe);
>  struct task_struct *xe_pm_read_callback_task(struct xe_device *xe);
>  int xe_pm_block_on_suspend(struct xe_device *xe);


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

* ✗ Xe.CI.FULL: failure for pm_pme support on display hotplug (rev8)
  2026-09-15  9:25 [PATCH v8 0/5] pm_pme support on display hotplug Vinod Govindapillai
                   ` (7 preceding siblings ...)
  2026-09-15 10:11 ` ✓ Xe.CI.BAT: success " Patchwork
@ 2026-09-15 12:34 ` Patchwork
  8 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-09-15 12:34 UTC (permalink / raw)
  To: Vinod Govindapillai; +Cc: intel-xe

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

== Series Details ==

Series: pm_pme support on display hotplug (rev8)
URL   : https://patchwork.freedesktop.org/series/172305/
State : failure

== Summary ==

CI Bug Log - changes from xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66_FULL -> xe-pw-172305v8_FULL
====================================================

Summary
-------

  **WARNING**

  Minor unknown changes coming with xe-pw-172305v8_FULL need to be verified
  manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in xe-pw-172305v8_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (2 -> 2)
------------------------------

  No changes in participating hosts

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

  Here are the unknown changes that may have been introduced in xe-pw-172305v8_FULL:

### IGT changes ###

#### Warnings ####

  * igt@xe_pm@d3cold-mocs:
    - shard-bmg:          [ABORT][1] ([Intel XE#1727] / [Intel XE#4760]) -> [ABORT][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66/shard-bmg-3/igt@xe_pm@d3cold-mocs.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@xe_pm@d3cold-mocs.html

  
New tests
---------

  New tests have been introduced between xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66_FULL and xe-pw-172305v8_FULL:

### New IGT tests (6) ###

  * igt@kms_color_pipeline@plane-ctm3x4-lut1d@pipe-d-plane-3:
    - Statuses : 1 skip(s)
    - Exec time: [0.03] s

  * igt@kms_color_pipeline@plane-ctm3x4-lut1d@pipe-d-plane-4:
    - Statuses : 1 skip(s)
    - Exec time: [0.03] s

  * igt@kms_pm_rpm@universal-planes@plane-105:
    - Statuses : 2 pass(s)
    - Exec time: [2.80, 8.09] s

  * igt@kms_pm_rpm@universal-planes@plane-140:
    - Statuses : 2 pass(s)
    - Exec time: [2.89, 8.02] s

  * igt@kms_pm_rpm@universal-planes@plane-186:
    - Statuses : 2 pass(s)
    - Exec time: [2.75, 8.05] s

  * igt@kms_pm_rpm@universal-planes@plane-70:
    - Statuses : 2 pass(s)
    - Exec time: [2.79, 7.93] s

  

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

  Here are the changes found in xe-pw-172305v8_FULL that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@intel_hwmon@hwmon-read:
    - shard-lnl:          NOTRUN -> [SKIP][3] ([Intel XE#1125] / [Intel XE#7312])
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@intel_hwmon@hwmon-read.html

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - shard-bmg:          NOTRUN -> [SKIP][4] ([Intel XE#2233])
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-9/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_big_fb@linear-8bpp-rotate-270:
    - shard-bmg:          NOTRUN -> [SKIP][5] ([Intel XE#2327]) +1 other test skip
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_big_fb@linear-8bpp-rotate-270.html

  * igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-180-hflip:
    - shard-bmg:          NOTRUN -> [SKIP][6] ([Intel XE#7059] / [Intel XE#7085])
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-7/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-180-hflip.html
    - shard-lnl:          NOTRUN -> [SKIP][7] ([Intel XE#7059] / [Intel XE#7085]) +1 other test skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-180-hflip.html

  * igt@kms_big_fb@y-tiled-64bpp-rotate-270:
    - shard-lnl:          NOTRUN -> [SKIP][8] ([Intel XE#1124]) +6 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_big_fb@y-tiled-64bpp-rotate-270.html

  * igt@kms_big_fb@yf-tiled-8bpp-rotate-180:
    - shard-bmg:          NOTRUN -> [SKIP][9] ([Intel XE#1124]) +7 other tests skip
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_big_fb@yf-tiled-8bpp-rotate-180.html

  * igt@kms_big_fb@yf-tiled-addfb:
    - shard-lnl:          NOTRUN -> [SKIP][10] ([Intel XE#1467] / [Intel XE#7367])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_big_fb@yf-tiled-addfb.html

  * igt@kms_bw@connected-linear-tiling-3-displays-target-1920x1080p:
    - shard-bmg:          NOTRUN -> [SKIP][11] ([Intel XE#7679])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_bw@connected-linear-tiling-3-displays-target-1920x1080p.html

  * igt@kms_bw@linear-tiling-1-displays-target-3840x2160p:
    - shard-bmg:          NOTRUN -> [SKIP][12] ([Intel XE#367])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-10/igt@kms_bw@linear-tiling-1-displays-target-3840x2160p.html

  * igt@kms_bw@linear-tiling-2-displays-target-2560x1440p:
    - shard-lnl:          NOTRUN -> [SKIP][13] ([Intel XE#367])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_bw@linear-tiling-2-displays-target-2560x1440p.html

  * igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc:
    - shard-lnl:          NOTRUN -> [SKIP][14] ([Intel XE#2887]) +12 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_ccs@bad-pixel-format-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-b-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][15] ([Intel XE#2669] / [Intel XE#7389]) +3 other tests skip
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@kms_ccs@crc-primary-rotation-180-4-tiled-bmg-ccs@pipe-b-edp-1.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs:
    - shard-lnl:          NOTRUN -> [SKIP][16] ([Intel XE#3432])
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-mc-ccs.html

  * igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][17] ([Intel XE#2887]) +11 other tests skip
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html

  * igt@kms_cdclk@mode-transition-all-outputs:
    - shard-bmg:          NOTRUN -> [SKIP][18] ([Intel XE#2724] / [Intel XE#7449])
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-7/igt@kms_cdclk@mode-transition-all-outputs.html
    - shard-lnl:          NOTRUN -> [SKIP][19] ([Intel XE#7008])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@kms_cdclk@mode-transition-all-outputs.html

  * igt@kms_chamelium_audio@hdmi-audio-after-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][20] ([Intel XE#2252]) +4 other tests skip
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-7/igt@kms_chamelium_audio@hdmi-audio-after-suspend.html
    - shard-lnl:          NOTRUN -> [SKIP][21] ([Intel XE#2252])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@kms_chamelium_audio@hdmi-audio-after-suspend.html

  * igt@kms_chamelium_color@ctm-0-50:
    - shard-bmg:          NOTRUN -> [SKIP][22] ([Intel XE#2325] / [Intel XE#7358])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_chamelium_color@ctm-0-50.html

  * igt@kms_chamelium_color@ctm-red-to-blue:
    - shard-lnl:          NOTRUN -> [SKIP][23] ([Intel XE#306] / [Intel XE#7358])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_chamelium_color@ctm-red-to-blue.html

  * igt@kms_chamelium_color_pipeline@plane-lut1d-ctm3x4-lut1d:
    - shard-lnl:          NOTRUN -> [SKIP][24] ([Intel XE#7358])
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_chamelium_color_pipeline@plane-lut1d-ctm3x4-lut1d.html

  * igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe:
    - shard-lnl:          NOTRUN -> [SKIP][25] ([Intel XE#373]) +4 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_chamelium_hpd@hdmi-hpd-for-each-pipe.html

  * igt@kms_color_pipeline@plane-ctm3x4-lut1d@pipe-b-plane-4:
    - shard-bmg:          NOTRUN -> [SKIP][26] ([Intel XE#6969]) +7 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-10/igt@kms_color_pipeline@plane-ctm3x4-lut1d@pipe-b-plane-4.html

  * igt@kms_color_pipeline@plane-lut1d-pre-ctm3x4@pipe-c-plane-4:
    - shard-lnl:          NOTRUN -> [SKIP][27] ([Intel XE#6969]) +5 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_color_pipeline@plane-lut1d-pre-ctm3x4@pipe-c-plane-4.html

  * igt@kms_content_protection@atomic-hdcp14:
    - shard-bmg:          NOTRUN -> [FAIL][28] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +1 other test fail
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_content_protection@atomic-hdcp14.html

  * igt@kms_content_protection@lic-type-0-hdcp14:
    - shard-lnl:          NOTRUN -> [SKIP][29] ([Intel XE#7642])
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_content_protection@lic-type-0-hdcp14.html

  * igt@kms_cursor_crc@cursor-offscreen-256x85:
    - shard-bmg:          NOTRUN -> [SKIP][30] ([Intel XE#2320]) +3 other tests skip
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-7/igt@kms_cursor_crc@cursor-offscreen-256x85.html

  * igt@kms_cursor_crc@cursor-sliding-64x21:
    - shard-lnl:          NOTRUN -> [SKIP][31] ([Intel XE#1424]) +4 other tests skip
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@kms_cursor_crc@cursor-sliding-64x21.html

  * igt@kms_cursor_edge_walk@256x256-right-edge:
    - shard-bmg:          [PASS][32] -> [FAIL][33] ([Intel XE#9043]) +1 other test fail
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66/shard-bmg-3/igt@kms_cursor_edge_walk@256x256-right-edge.html
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-5/igt@kms_cursor_edge_walk@256x256-right-edge.html

  * igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy:
    - shard-lnl:          NOTRUN -> [SKIP][34] ([Intel XE#309] / [Intel XE#7343]) +1 other test skip
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_cursor_legacy@2x-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size:
    - shard-lnl:          NOTRUN -> [SKIP][35] ([Intel XE#323] / [Intel XE#6035])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_cursor_legacy@short-busy-flip-before-cursor-atomic-transitions-varying-size.html

  * igt@kms_dirtyfb@psr-dirtyfb-ioctl:
    - shard-bmg:          NOTRUN -> [SKIP][36] ([Intel XE#1508])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-7/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html

  * igt@kms_dsc@dsc-with-output-formats-bigjoiner:
    - shard-lnl:          NOTRUN -> [SKIP][37] ([Intel XE#8265]) +2 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_dsc@dsc-with-output-formats-bigjoiner.html

  * igt@kms_dsc@dsc-with-output-formats-with-bpc:
    - shard-bmg:          NOTRUN -> [SKIP][38] ([Intel XE#8265]) +1 other test skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-9/igt@kms_dsc@dsc-with-output-formats-with-bpc.html

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests:
    - shard-bmg:          NOTRUN -> [SKIP][39] ([Intel XE#4422] / [Intel XE#7442])
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-7/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-dirtyfb-tests.html

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
    - shard-lnl:          NOTRUN -> [SKIP][40] ([Intel XE#4422] / [Intel XE#7442]) +1 other test skip
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html

  * igt@kms_flip@2x-flip-vs-suspend-interruptible:
    - shard-lnl:          NOTRUN -> [SKIP][41] ([Intel XE#1421]) +4 other tests skip
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_flip@2x-flip-vs-suspend-interruptible.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
    - shard-lnl:          NOTRUN -> [SKIP][42] ([Intel XE#7178] / [Intel XE#7351]) +2 other tests skip
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling:
    - shard-lnl:          NOTRUN -> [SKIP][43] ([Intel XE#7178] / [Intel XE#7349]) +1 other test skip
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-upscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling:
    - shard-bmg:          NOTRUN -> [SKIP][44] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-downscaling.html

  * igt@kms_flip_scaled_crc@flip-p016-linear-to-p016-linear-reflect-x:
    - shard-bmg:          NOTRUN -> [SKIP][45] ([Intel XE#7179])
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-7/igt@kms_flip_scaled_crc@flip-p016-linear-to-p016-linear-reflect-x.html
    - shard-lnl:          NOTRUN -> [SKIP][46] ([Intel XE#7179])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@kms_flip_scaled_crc@flip-p016-linear-to-p016-linear-reflect-x.html

  * igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-plflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][47] ([Intel XE#656] / [Intel XE#7905]) +30 other tests skip
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-blt:
    - shard-bmg:          NOTRUN -> [SKIP][48] ([Intel XE#4141]) +10 other tests skip
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-10/igt@kms_frontbuffer_tracking@fbc-1p-offscreen-pri-shrfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-mmap-wc:
    - shard-lnl:          NOTRUN -> [SKIP][49] ([Intel XE#7061] / [Intel XE#7356]) +3 other tests skip
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@kms_frontbuffer_tracking@fbc-abgr161616f-draw-mmap-wc.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-1p-rte:
    - shard-lnl:          NOTRUN -> [SKIP][50] ([Intel XE#6312] / [Intel XE#651]) +5 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_frontbuffer_tracking@fbcdrrs-1p-rte.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][51] ([Intel XE#2311]) +32 other tests skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcdrrs-2p-scndscrn-pri-shrfb-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-argb161616f-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][52] ([Intel XE#7061] / [Intel XE#7356]) +4 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-9/igt@kms_frontbuffer_tracking@fbcdrrs-argb161616f-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcdrrshdr-modesetfrombusy:
    - shard-lnl:          NOTRUN -> [SKIP][53] ([Intel XE#6312]) +15 other tests skip
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-3/igt@kms_frontbuffer_tracking@fbcdrrshdr-modesetfrombusy.html

  * igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-shrfb-plflip-blt:
    - shard-lnl:          NOTRUN -> [SKIP][54] ([Intel XE#7865]) +21 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_frontbuffer_tracking@fbchdr-1p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][55] ([Intel XE#2313]) +33 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsr-2p-primscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-rte:
    - shard-lnl:          NOTRUN -> [SKIP][56] ([Intel XE#7905]) +36 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_frontbuffer_tracking@fbcpsrhdr-2p-rte.html

  * igt@kms_frontbuffer_tracking@fbcpsrhdr-argb161616f-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][57] ([Intel XE#7061]) +1 other test skip
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsrhdr-argb161616f-draw-render.html

  * igt@kms_frontbuffer_tracking@plane-fbc-rte:
    - shard-bmg:          NOTRUN -> [SKIP][58] ([Intel XE#2350] / [Intel XE#7503])
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_frontbuffer_tracking@plane-fbc-rte.html

  * igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-blt:
    - shard-lnl:          NOTRUN -> [SKIP][59] ([Intel XE#7061]) +3 other tests skip
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-blt.html

  * igt@kms_hdr@brightness-with-hdr:
    - shard-bmg:          NOTRUN -> [SKIP][60] ([Intel XE#3544])
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-9/igt@kms_hdr@brightness-with-hdr.html

  * igt@kms_hdr@static-toggle:
    - shard-lnl:          NOTRUN -> [SKIP][61] ([Intel XE#1503])
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@kms_hdr@static-toggle.html

  * igt@kms_joiner@invalid-modeset-big-joiner:
    - shard-lnl:          NOTRUN -> [SKIP][62] ([Intel XE#6901])
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_joiner@invalid-modeset-big-joiner.html

  * igt@kms_joiner@invalid-modeset-force-ultra-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][63] ([Intel XE#6911] / [Intel XE#7466])
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_joiner@invalid-modeset-force-ultra-joiner.html

  * igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][64] ([Intel XE#4090] / [Intel XE#7443])
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-10/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html

  * igt@kms_panel_fitting@atomic-fastset:
    - shard-bmg:          NOTRUN -> [SKIP][65] ([Intel XE#2486])
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_panel_fitting@atomic-fastset.html

  * igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier:
    - shard-lnl:          NOTRUN -> [SKIP][66] ([Intel XE#7283]) +3 other tests skip
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@kms_plane@pixel-format-4-tiled-dg2-rc-ccs-modifier.html

  * igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping:
    - shard-bmg:          NOTRUN -> [SKIP][67] ([Intel XE#7283]) +3 other tests skip
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_plane@pixel-format-y-tiled-gen12-mc-ccs-modifier-source-clamping.html

  * igt@kms_plane_lowres@tiling-y:
    - shard-bmg:          NOTRUN -> [SKIP][68] ([Intel XE#2393])
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-10/igt@kms_plane_lowres@tiling-y.html

  * igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-c:
    - shard-lnl:          NOTRUN -> [SKIP][69] ([Intel XE#2763] / [Intel XE#6886]) +7 other tests skip
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_plane_scaling@plane-downscale-factor-0-5-with-pixel-format@pipe-c.html

  * igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-c:
    - shard-bmg:          NOTRUN -> [SKIP][70] ([Intel XE#2763] / [Intel XE#6886]) +4 other tests skip
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-10/igt@kms_plane_scaling@planes-downscale-factor-0-5@pipe-c.html

  * igt@kms_pm_dc@dc3co-framedrop-check:
    - shard-lnl:          NOTRUN -> [SKIP][71] ([Intel XE#8395] / [Intel XE#8396]) +1 other test skip
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_pm_dc@dc3co-framedrop-check.html

  * igt@kms_pm_dc@dc3co-framedrop-check@psr2-xrgb8888:
    - shard-lnl:          NOTRUN -> [SKIP][72] ([Intel XE#8396]) +1 other test skip
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_pm_dc@dc3co-framedrop-check@psr2-xrgb8888.html

  * igt@kms_pm_dc@dc6-psr:
    - shard-bmg:          NOTRUN -> [SKIP][73] ([Intel XE#7794])
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-7/igt@kms_pm_dc@dc6-psr.html

  * igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf:
    - shard-lnl:          NOTRUN -> [SKIP][74] ([Intel XE#2893] / [Intel XE#7304]) +3 other tests skip
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_psr2_sf@fbc-pr-cursor-plane-update-sf.html

  * igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area:
    - shard-lnl:          NOTRUN -> [SKIP][75] ([Intel XE#2893] / [Intel XE#4608] / [Intel XE#7304])
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area.html

  * igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-a-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][76] ([Intel XE#4608])
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-a-edp-1.html

  * igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-b-edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][77] ([Intel XE#4608] / [Intel XE#7304])
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_psr2_sf@fbc-psr2-plane-move-sf-dmg-area@pipe-b-edp-1.html

  * igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb:
    - shard-bmg:          NOTRUN -> [SKIP][78] ([Intel XE#1489]) +5 other tests skip
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-10/igt@kms_psr2_sf@psr2-primary-plane-update-sf-dmg-area-big-fb.html

  * igt@kms_psr2_su@page_flip-p010:
    - shard-lnl:          NOTRUN -> [SKIP][79] ([Intel XE#1128] / [Intel XE#7413])
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_psr2_su@page_flip-p010.html

  * igt@kms_psr@fbc-psr-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][80] ([Intel XE#2234] / [Intel XE#2850]) +7 other tests skip
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-7/igt@kms_psr@fbc-psr-suspend.html

  * igt@kms_psr@fbc-psr2-sprite-plane-move:
    - shard-lnl:          NOTRUN -> [SKIP][81] ([Intel XE#1406] / [Intel XE#7345]) +2 other tests skip
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_psr@fbc-psr2-sprite-plane-move.html

  * igt@kms_psr@fbc-psr2-sprite-plane-move@edp-1:
    - shard-lnl:          NOTRUN -> [SKIP][82] ([Intel XE#1406] / [Intel XE#4609] / [Intel XE#7345]) +2 other tests skip
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_psr@fbc-psr2-sprite-plane-move@edp-1.html

  * igt@kms_psr@pr-cursor-plane-move:
    - shard-lnl:          NOTRUN -> [SKIP][83] ([Intel XE#1406]) +2 other tests skip
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@kms_psr@pr-cursor-plane-move.html

  * igt@kms_rotation_crc@bad-tiling:
    - shard-bmg:          NOTRUN -> [SKIP][84] ([Intel XE#3904] / [Intel XE#7342])
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_rotation_crc@bad-tiling.html

  * igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
    - shard-bmg:          NOTRUN -> [SKIP][85] ([Intel XE#2330] / [Intel XE#5813])
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html

  * igt@kms_rotation_crc@sprite-rotation-90-pos-100-0:
    - shard-lnl:          NOTRUN -> [SKIP][86] ([Intel XE#3414] / [Intel XE#3904] / [Intel XE#7342]) +2 other tests skip
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-3/igt@kms_rotation_crc@sprite-rotation-90-pos-100-0.html

  * igt@kms_setmode@invalid-clone-single-crtc-stealing:
    - shard-lnl:          NOTRUN -> [SKIP][87] ([Intel XE#1435] / [Intel XE#9142])
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@kms_setmode@invalid-clone-single-crtc-stealing.html

  * igt@kms_sharpness_filter@invalid-filter-with-scaling-mode:
    - shard-bmg:          NOTRUN -> [SKIP][88] ([Intel XE#6503]) +2 other tests skip
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-7/igt@kms_sharpness_filter@invalid-filter-with-scaling-mode.html

  * igt@kms_tv_load_detect@load-detect:
    - shard-bmg:          NOTRUN -> [SKIP][89] ([Intel XE#2450] / [Intel XE#5857])
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-9/igt@kms_tv_load_detect@load-detect.html

  * igt@kms_vblank@ts-continuation-dpms-suspend@pipe-d-dp-2:
    - shard-bmg:          [PASS][90] -> [ABORT][91] ([Intel XE#9093]) +1 other test abort
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66/shard-bmg-9/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-d-dp-2.html
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-2/igt@kms_vblank@ts-continuation-dpms-suspend@pipe-d-dp-2.html

  * igt@kms_vrr@flip-basic:
    - shard-bmg:          NOTRUN -> [SKIP][92] ([Intel XE#1499])
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-9/igt@kms_vrr@flip-basic.html

  * igt@sriov_basic@pf-unbind-with-vf-probed:
    - shard-lnl:          NOTRUN -> [SKIP][93] ([Intel XE#8866])
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@sriov_basic@pf-unbind-with-vf-probed.html

  * igt@xe_ccs@vm-bind-fault-mode-decompress:
    - shard-lnl:          NOTRUN -> [SKIP][94] ([Intel XE#7644])
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@xe_ccs@vm-bind-fault-mode-decompress.html

  * igt@xe_configfs@survivability-mode:
    - shard-lnl:          NOTRUN -> [SKIP][95] ([Intel XE#8428])
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@xe_configfs@survivability-mode.html

  * igt@xe_evict@evict-beng-mixed-many-threads-small:
    - shard-bmg:          NOTRUN -> [INCOMPLETE][96] ([Intel XE#6321] / [Intel XE#8355])
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@xe_evict@evict-beng-mixed-many-threads-small.html

  * igt@xe_evict@evict-large-multi-vm:
    - shard-lnl:          NOTRUN -> [SKIP][97] ([Intel XE#6540] / [Intel XE#688]) +8 other tests skip
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@xe_evict@evict-large-multi-vm.html

  * igt@xe_evict@evict-mixed-many-threads-small:
    - shard-bmg:          [PASS][98] -> [INCOMPLETE][99] ([Intel XE#6321] / [Intel XE#8355])
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66/shard-bmg-6/igt@xe_evict@evict-mixed-many-threads-small.html
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-6/igt@xe_evict@evict-mixed-many-threads-small.html

  * igt@xe_evict@evict-small-multi-queue-priority:
    - shard-bmg:          NOTRUN -> [SKIP][100] ([Intel XE#8370])
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@xe_evict@evict-small-multi-queue-priority.html

  * igt@xe_exec_balancer@many-cm-virtual-userptr-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][101] ([Intel XE#7482]) +15 other tests skip
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@xe_exec_balancer@many-cm-virtual-userptr-rebind.html

  * igt@xe_exec_basic@multigpu-no-exec-userptr:
    - shard-bmg:          NOTRUN -> [SKIP][102] ([Intel XE#2322] / [Intel XE#7372]) +3 other tests skip
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-9/igt@xe_exec_basic@multigpu-no-exec-userptr.html

  * igt@xe_exec_basic@multigpu-once-null-defer-bind:
    - shard-lnl:          NOTRUN -> [SKIP][103] ([Intel XE#1392]) +5 other tests skip
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@xe_exec_basic@multigpu-once-null-defer-bind.html

  * igt@xe_exec_fault_mode@twice-multi-queue-userptr:
    - shard-bmg:          NOTRUN -> [SKIP][104] ([Intel XE#8374]) +8 other tests skip
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@xe_exec_fault_mode@twice-multi-queue-userptr.html

  * igt@xe_exec_fault_mode@twice-multi-queue-userptr-invalidate:
    - shard-lnl:          NOTRUN -> [SKIP][105] ([Intel XE#8374]) +11 other tests skip
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@xe_exec_fault_mode@twice-multi-queue-userptr-invalidate.html

  * igt@xe_exec_multi_queue@few-execs-preempt-mode-basic:
    - shard-bmg:          NOTRUN -> [SKIP][106] ([Intel XE#8364]) +14 other tests skip
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@xe_exec_multi_queue@few-execs-preempt-mode-basic.html

  * igt@xe_exec_multi_queue@many-queues-preempt-mode-userptr:
    - shard-lnl:          NOTRUN -> [SKIP][107] ([Intel XE#8364]) +21 other tests skip
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@xe_exec_multi_queue@many-queues-preempt-mode-userptr.html

  * igt@xe_exec_reset@cm-multi-queue-cat-error-on-secondary:
    - shard-bmg:          NOTRUN -> [SKIP][108] ([Intel XE#8369])
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@xe_exec_reset@cm-multi-queue-cat-error-on-secondary.html

  * igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-rebind:
    - shard-lnl:          NOTRUN -> [SKIP][109] ([Intel XE#8378]) +8 other tests skip
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-rebind.html

  * igt@xe_exec_threads@threads-multi-queue-mixed-userptr-rebind:
    - shard-bmg:          NOTRUN -> [SKIP][110] ([Intel XE#8378]) +7 other tests skip
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@xe_exec_threads@threads-multi-queue-mixed-userptr-rebind.html

  * igt@xe_gt_freq@freq_suspend:
    - shard-lnl:          NOTRUN -> [SKIP][111] ([Intel XE#584] / [Intel XE#7369])
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@xe_gt_freq@freq_suspend.html

  * igt@xe_mmap@small-bar:
    - shard-lnl:          NOTRUN -> [SKIP][112] ([Intel XE#512] / [Intel XE#7323] / [Intel XE#7384])
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@xe_mmap@small-bar.html

  * igt@xe_multigpu_svm@mgpu-atomic-op-prefetch:
    - shard-bmg:          NOTRUN -> [SKIP][113] ([Intel XE#6964]) +1 other test skip
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-7/igt@xe_multigpu_svm@mgpu-atomic-op-prefetch.html

  * igt@xe_multigpu_svm@mgpu-pagefault-prefetch:
    - shard-lnl:          NOTRUN -> [SKIP][114] ([Intel XE#6964]) +2 other tests skip
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@xe_multigpu_svm@mgpu-pagefault-prefetch.html

  * igt@xe_page_reclaim@pat-index-xd:
    - shard-lnl:          NOTRUN -> [SKIP][115] ([Intel XE#7793]) +1 other test skip
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@xe_page_reclaim@pat-index-xd.html

  * igt@xe_page_reclaim@prl-max-entries:
    - shard-bmg:          NOTRUN -> [SKIP][116] ([Intel XE#7793])
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-9/igt@xe_page_reclaim@prl-max-entries.html

  * igt@xe_pat@pat-index-xelpg:
    - shard-lnl:          NOTRUN -> [SKIP][117] ([Intel XE#7590] / [Intel XE#979])
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-7/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_pat@pat-sw-hw-compare:
    - shard-bmg:          NOTRUN -> [FAIL][118] ([Intel XE#7695])
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@xe_pat@pat-sw-hw-compare.html

  * igt@xe_pmu@all-fn-engine-activity-load:
    - shard-lnl:          NOTRUN -> [SKIP][119] ([Intel XE#4650] / [Intel XE#7347])
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-1/igt@xe_pmu@all-fn-engine-activity-load.html

  * igt@xe_pxp@display-black-pxp-fb:
    - shard-bmg:          NOTRUN -> [SKIP][120] ([Intel XE#4733] / [Intel XE#7417]) +2 other tests skip
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@xe_pxp@display-black-pxp-fb.html

  * igt@xe_query@multigpu-query-gt-list:
    - shard-lnl:          NOTRUN -> [SKIP][121] ([Intel XE#944]) +1 other test skip
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@xe_query@multigpu-query-gt-list.html

  * igt@xe_query@multigpu-query-invalid-extension:
    - shard-bmg:          NOTRUN -> [SKIP][122] ([Intel XE#944]) +1 other test skip
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-1/igt@xe_query@multigpu-query-invalid-extension.html

  * igt@xe_sriov_admin@exec-quantum-write-readback-vfs-disabled:
    - shard-lnl:          NOTRUN -> [SKIP][123] ([Intel XE#7174])
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@xe_sriov_admin@exec-quantum-write-readback-vfs-disabled.html

  * igt@xe_sriov_auto_provisioning@exclusive-ranges:
    - shard-lnl:          NOTRUN -> [SKIP][124] ([Intel XE#4130] / [Intel XE#7366])
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-7/igt@xe_sriov_auto_provisioning@exclusive-ranges.html

  * igt@xe_sriov_flr@flr-vfs-parallel:
    - shard-lnl:          NOTRUN -> [SKIP][125] ([Intel XE#4273])
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-8/igt@xe_sriov_flr@flr-vfs-parallel.html

  * igt@xe_sriov_scheduling@nonpreempt-engine-resets-low-priority:
    - shard-lnl:          NOTRUN -> [SKIP][126] ([Intel XE#8339])
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-5/igt@xe_sriov_scheduling@nonpreempt-engine-resets-low-priority.html

  * igt@xe_wedged@wedged-at-any-timeout:
    - shard-bmg:          NOTRUN -> [DMESG-WARN][127] ([Intel XE#8963])
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-9/igt@xe_wedged@wedged-at-any-timeout.html

  
#### Possible fixes ####

  * igt@kms_fbcon_fbt@psr-suspend:
    - shard-lnl:          [ABORT][128] ([Intel XE#9154]) -> [PASS][129]
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66/shard-lnl-7/igt@kms_fbcon_fbt@psr-suspend.html
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-3/igt@kms_fbcon_fbt@psr-suspend.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible:
    - shard-lnl:          [FAIL][130] ([Intel XE#301]) -> [PASS][131] +1 other test pass
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank-interruptible.html

  * igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a:
    - shard-bmg:          [INCOMPLETE][132] ([Intel XE#1035]) -> [PASS][133] +1 other test pass
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66/shard-bmg-6/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a.html
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-7/igt@kms_plane@plane-panning-bottom-right-suspend@pipe-a.html

  * igt@xe_fault_injection@inject-fault-probe-function-xe_ggtt_init_early:
    - shard-bmg:          [ABORT][134] ([Intel XE#8007]) -> [PASS][135] +1 other test pass
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66/shard-bmg-10/igt@xe_fault_injection@inject-fault-probe-function-xe_ggtt_init_early.html
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-10/igt@xe_fault_injection@inject-fault-probe-function-xe_ggtt_init_early.html

  
#### Warnings ####

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-bmg:          [SKIP][136] ([Intel XE#2509] / [Intel XE#7437]) -> [SKIP][137] ([Intel XE#2426] / [Intel XE#5848])
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66/shard-bmg-1/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-8/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

  * igt@sriov_basic@pf-unbind-with-vf-probed:
    - shard-bmg:          [ABORT][138] ([Intel XE#8868]) -> [ABORT][139] ([Intel XE#8007] / [Intel XE#8868])
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66/shard-bmg-4/igt@sriov_basic@pf-unbind-with-vf-probed.html
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/shard-bmg-2/igt@sriov_basic@pf-unbind-with-vf-probed.html

  
  [Intel XE#1035]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1035
  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1125]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1125
  [Intel XE#1128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1128
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
  [Intel XE#1424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1424
  [Intel XE#1435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1435
  [Intel XE#1467]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1467
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
  [Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
  [Intel XE#1508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1508
  [Intel XE#1727]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1727
  [Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330
  [Intel XE#2350]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2350
  [Intel XE#2393]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2393
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#2450]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2450
  [Intel XE#2486]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2486
  [Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
  [Intel XE#2669]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2669
  [Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
  [Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
  [Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
  [Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
  [Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
  [Intel XE#323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/323
  [Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
  [Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#3544]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3544
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
  [Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
  [Intel XE#4090]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4090
  [Intel XE#4130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4130
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4273]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4273
  [Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
  [Intel XE#4608]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4608
  [Intel XE#4609]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4609
  [Intel XE#4650]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4650
  [Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
  [Intel XE#4760]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4760
  [Intel XE#512]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/512
  [Intel XE#5813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5813
  [Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
  [Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
  [Intel XE#5857]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5857
  [Intel XE#6035]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6035
  [Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
  [Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
  [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
  [Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
  [Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
  [Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
  [Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
  [Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
  [Intel XE#6901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6901
  [Intel XE#6911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6911
  [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [Intel XE#6969]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6969
  [Intel XE#7008]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7008
  [Intel XE#7059]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7059
  [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
  [Intel XE#7085]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7085
  [Intel XE#7174]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7174
  [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
  [Intel XE#7179]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7179
  [Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
  [Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
  [Intel XE#7312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7312
  [Intel XE#7323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7323
  [Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
  [Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
  [Intel XE#7345]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7345
  [Intel XE#7347]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7347
  [Intel XE#7349]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7349
  [Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
  [Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
  [Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
  [Intel XE#7366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7366
  [Intel XE#7367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7367
  [Intel XE#7369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7369
  [Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
  [Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
  [Intel XE#7384]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7384
  [Intel XE#7389]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7389
  [Intel XE#7413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7413
  [Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
  [Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
  [Intel XE#7442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7442
  [Intel XE#7443]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7443
  [Intel XE#7449]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7449
  [Intel XE#7466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7466
  [Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
  [Intel XE#7503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7503
  [Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
  [Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
  [Intel XE#7644]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7644
  [Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
  [Intel XE#7695]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7695
  [Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
  [Intel XE#7794]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7794
  [Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
  [Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
  [Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
  [Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
  [Intel XE#8339]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8339
  [Intel XE#8355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8355
  [Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
  [Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369
  [Intel XE#8370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8370
  [Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
  [Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
  [Intel XE#8395]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8395
  [Intel XE#8396]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8396
  [Intel XE#8428]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8428
  [Intel XE#8866]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8866
  [Intel XE#8868]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8868
  [Intel XE#8963]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8963
  [Intel XE#9043]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9043
  [Intel XE#9093]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9093
  [Intel XE#9142]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9142
  [Intel XE#9154]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9154
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
  [Intel XE#979]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/979


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

  * Linux: xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66 -> xe-pw-172305v8

  IGT_9095: 9095
  xe-5751-885e7996176ebe07c2cc143c1ee067591e49fa66: 885e7996176ebe07c2cc143c1ee067591e49fa66
  xe-pw-172305v8: 172305v8

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172305v8/index.html

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

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

* Re: [PATCH v8 2/5] drm/i915: add pme_enabled() to the parent interface
  2026-09-15  9:25 ` [PATCH v8 2/5] drm/i915: add pme_enabled() to the parent interface Vinod Govindapillai
@ 2026-09-15 12:38   ` Hogander, Jouni
  0 siblings, 0 replies; 17+ messages in thread
From: Hogander, Jouni @ 2026-09-15 12:38 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Govindapillai, Vinod

On Tue, 2026-09-15 at 12:25 +0300, Vinod Govindapillai wrote:
> PME capabiliy need to be assessed very early during runtime suspend
> routine to avoid resetting HPDs during IRQ resets. As display
> runtime pm routines are being executed in the independent intel
> display driver entry points, we need to have independent access
> to the pme status as well. Add a provision to query the optional
> pme_enabled to the parent interface so that it could be called
> independently based on xe/i915's pme_enabled() implementation.
> 
> Assisted-by: GitHub_Copilot:claude-opus-5
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>

Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_display_rpm.c | 7 +++++++
>  drivers/gpu/drm/i915/display/intel_display_rpm.h | 1 +
>  include/drm/intel/display_parent_interface.h     | 1 +
>  3 files changed, 9 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_rpm.c
> b/drivers/gpu/drm/i915/display/intel_display_rpm.c
> index 0a331f89b4db..9927119a0fd1 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_rpm.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_rpm.c
> @@ -46,6 +46,13 @@ bool intel_display_rpm_suspended(struct
> intel_display *display)
>  	return display->parent->rpm->suspended(display->drm);
>  }
>  
> +bool intel_display_rpm_pme_enabled(struct intel_display *display)
> +{
> +	const struct intel_display_rpm_interface *rpm = display-
> >parent->rpm;
> +
> +	return rpm->pme_enabled && rpm->pme_enabled(display->drm);
> +}
> +
>  void assert_display_rpm_held(struct intel_display *display)
>  {
>  	display->parent->rpm->assert_held(display->drm);
> diff --git a/drivers/gpu/drm/i915/display/intel_display_rpm.h
> b/drivers/gpu/drm/i915/display/intel_display_rpm.h
> index 6ef48515f84b..5d9a1cdddfa7 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_rpm.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_rpm.h
> @@ -21,6 +21,7 @@ void intel_display_rpm_put(struct intel_display
> *display, struct ref_tracker *wa
>  
>  /* Only for special cases. */
>  bool intel_display_rpm_suspended(struct intel_display *display);
> +bool intel_display_rpm_pme_enabled(struct intel_display *display);
>  
>  void assert_display_rpm_held(struct intel_display *display);
>  void intel_display_rpm_assert_block(struct intel_display *display);
> diff --git a/include/drm/intel/display_parent_interface.h
> b/include/drm/intel/display_parent_interface.h
> index 5e44c022d1ae..f36134e89cb6 100644
> --- a/include/drm/intel/display_parent_interface.h
> +++ b/include/drm/intel/display_parent_interface.h
> @@ -196,6 +196,7 @@ struct intel_display_rpm_interface {
>  	void (*put_unchecked)(const struct drm_device *drm);
>  
>  	bool (*suspended)(const struct drm_device *drm);
> +	bool (*pme_enabled)(const struct drm_device *drm); /*
> Optional */
>  	void (*assert_held)(const struct drm_device *drm);
>  	void (*assert_block)(const struct drm_device *drm);
>  	void (*assert_unblock)(const struct drm_device *drm);


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

* Re: [PATCH v8 3/5] drm/i915/xe: plug the pme_enabed implementation for xe
  2026-09-15  9:25 ` [PATCH v8 3/5] drm/i915/xe: plug the pme_enabed implementation for xe Vinod Govindapillai
@ 2026-09-15 12:39   ` Hogander, Jouni
  0 siblings, 0 replies; 17+ messages in thread
From: Hogander, Jouni @ 2026-09-15 12:39 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Govindapillai, Vinod

On Tue, 2026-09-15 at 12:25 +0300, Vinod Govindapillai wrote:
> Plug the pme_enabled query for xe. It will return the current
> PME status for the device. For supported platforms, PME is
> enabled during runtime suspend calls if the device is PME is capable.
> 
> v2: use the xe_pm_pme_enabled()
> 
> Assisted-by: GitHub_Copilot:claude-opus-5
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>

Reviewed-by: Jouni Högander <jouni.hogander@intel.com>

> ---
>  drivers/gpu/drm/xe/display/xe_display_rpm.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/gpu/drm/xe/display/xe_display_rpm.c
> b/drivers/gpu/drm/xe/display/xe_display_rpm.c
> index 548b503aa024..57bcfb41bdda 100644
> --- a/drivers/gpu/drm/xe/display/xe_display_rpm.c
> +++ b/drivers/gpu/drm/xe/display/xe_display_rpm.c
> @@ -45,6 +45,11 @@ static bool xe_display_rpm_suspended(const struct
> drm_device *drm)
>  	return pm_runtime_suspended(xe->drm.dev);
>  }
>  
> +static bool xe_display_rpm_pme_enabled(const struct drm_device *drm)
> +{
> +	return xe_pm_pme_enabled(to_xe_device(drm));
> +}
> +
>  static void xe_display_rpm_assert_held(const struct drm_device *drm)
>  {
>  	/* FIXME */
> @@ -69,6 +74,7 @@ const struct intel_display_rpm_interface
> xe_display_rpm_interface = {
>  	.put_raw = xe_display_rpm_put,
>  	.put_unchecked = xe_display_rpm_put_unchecked,
>  	.suspended = xe_display_rpm_suspended,
> +	.pme_enabled = xe_display_rpm_pme_enabled,
>  	.assert_held = xe_display_rpm_assert_held,
>  	.assert_block = xe_display_rpm_assert_block,
>  	.assert_unblock = xe_display_rpm_assert_unblock


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

* Re: [PATCH v8 4/5] drm/i915/irq: conditional HPD IRQ resets based on PME capability
  2026-09-15  9:25 ` [PATCH v8 4/5] drm/i915/irq: conditional HPD IRQ resets based on PME capability Vinod Govindapillai
  2026-09-15  9:43   ` sashiko-bot
@ 2026-09-15 12:55   ` Hogander, Jouni
  1 sibling, 0 replies; 17+ messages in thread
From: Hogander, Jouni @ 2026-09-15 12:55 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Govindapillai, Vinod

On Tue, 2026-09-15 at 12:25 +0300, Vinod Govindapillai wrote:
> If a device supports generating PME from HPDs, resetting HPD IRQs
> will be counter productive as HPDs itself will be lost. During
> suspend routines, all the IRQs are reset. So if the device is
> capable of generating PME rom HPDs, keep the HPD related IRQs from
> reset based on the PME capability of the device on a target power
> state. PME capability will be assessed and updated separately.
> 
> v2: change keep_hpd to reset_hpd
> 
> v3: use intel_display_rpm_pme_enabled() directly (JaniN)
> 
> v4: remove the unused include file from the previous revision
> 
> Bspec: 52979, 52980, 68857, 68867, 68970
> Assisted-by: GitHub_Copilot:claude-opus-5
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>

Reviewed-by: Jouni Högander <jouni.hogander@intel.com>

> ---
>  .../gpu/drm/i915/display/intel_display_irq.c   | 18 +++++++++++-----
> --
>  1 file changed, 11 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_display_irq.c
> b/drivers/gpu/drm/i915/display/intel_display_irq.c
> index a59b75830bd1..8ce30112de97 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_irq.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_irq.c
> @@ -2217,8 +2217,10 @@ static void gen11_display_irq_reset(struct
> intel_display *display)
>  	enum pipe pipe;
>  	u32 trans_mask = BIT(TRANSCODER_A) | BIT(TRANSCODER_B) |
>  		BIT(TRANSCODER_C) | BIT(TRANSCODER_D);
> +	bool reset_hpd = !intel_display_rpm_pme_enabled(display);
>  
> -	intel_de_write(display, GEN11_DISPLAY_INT_CTL, 0);
> +	if (reset_hpd)
> +		intel_de_write(display, GEN11_DISPLAY_INT_CTL, 0);
>  
>  	if (DISPLAY_VER(display) >= 12) {
>  		enum transcoder trans;
> @@ -2250,13 +2252,15 @@ static void gen11_display_irq_reset(struct
> intel_display *display)
>  	irq_reset(display, GEN8_DE_PORT_IRQ_REGS);
>  	irq_reset(display, GEN8_DE_MISC_IRQ_REGS);
>  
> -	if (DISPLAY_VER(display) >= 14)
> -		irq_reset(display, PICAINTERRUPT_IRQ_REGS);
> -	else
> -		irq_reset(display, GEN11_DE_HPD_IRQ_REGS);
> +	if (reset_hpd) {
> +		if (DISPLAY_VER(display) >= 14)
> +			irq_reset(display, PICAINTERRUPT_IRQ_REGS);
> +		else
> +			irq_reset(display, GEN11_DE_HPD_IRQ_REGS);
>  
> -	if (INTEL_PCH_TYPE(display) >= PCH_ICP)
> -		irq_reset(display, SDE_IRQ_REGS);
> +		if (INTEL_PCH_TYPE(display) >= PCH_ICP)
> +			irq_reset(display, SDE_IRQ_REGS);
> +	}
>  }
>  
>  void gen8_irq_power_well_post_enable(struct intel_display *display,


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

* Re: [PATCH v8 5/5] drm/i915/hotplug: avoid HPD polling if the device is PME capable
  2026-09-15  9:25 ` [PATCH v8 5/5] drm/i915/hotplug: avoid HPD polling if the device is PME capable Vinod Govindapillai
@ 2026-09-15 12:55   ` Hogander, Jouni
  0 siblings, 0 replies; 17+ messages in thread
From: Hogander, Jouni @ 2026-09-15 12:55 UTC (permalink / raw)
  To: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Govindapillai, Vinod

On Tue, 2026-09-15 at 12:25 +0300, Vinod Govindapillai wrote:
> In supported devices, HPDs can generate PME and which in turn
> can invoke runtime resume calls for xe. No need to keep the
> HPD polling in such PME capable devices.
> 
> v2: use intel_display_rpm_pme_enabled() directly (JaniN)
> 
> Bspec: 52979, 52980, 68857, 68867, 68970
> Assisted-by: GitHub_Copilot:claude-opus-5
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>

Reviewed-by: Jouni Högander <jouni.hogander@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_hotplug.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_hotplug.c
> b/drivers/gpu/drm/i915/display/intel_hotplug.c
> index 970aa95ee344..d095eb13dc06 100644
> --- a/drivers/gpu/drm/i915/display/intel_hotplug.c
> +++ b/drivers/gpu/drm/i915/display/intel_hotplug.c
> @@ -867,6 +867,11 @@ void intel_hpd_poll_enable(struct intel_display
> *display)
>  	if (!HAS_DISPLAY(display) ||
> !intel_display_device_enabled(display))
>  		return;
>  
> +	if (intel_display_rpm_pme_enabled(display)) {
> +		drm_dbg_kms(display->drm, "PME wake capable device,
> skipping HPD polling.\n");
> +		return;
> +	}
> +
>  	WRITE_ONCE(display->hotplug.poll_enabled, true);
>  
>  	/*


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

* Re: [PATCH v8 1/5] drm/xe/pm: introduce PM PME support
  2026-09-15 12:27   ` Hogander, Jouni
@ 2026-09-16 14:16     ` Rodrigo Vivi
  0 siblings, 0 replies; 17+ messages in thread
From: Rodrigo Vivi @ 2026-09-16 14:16 UTC (permalink / raw)
  To: Hogander, Jouni
  Cc: intel-xe@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
	Govindapillai, Vinod

On Tue, Sep 15, 2026 at 12:27:11PM +0000, Hogander, Jouni wrote:
> On Tue, 2026-09-15 at 12:25 +0300, Vinod Govindapillai wrote:
> > Introduce PME support for PME capable devices. Whether device is
> > PME capable is assessed during PCI probe routine. And the whether
> > PME is enabled for a specific context is assessed during the PM
> > runtime suspend call if the device is PME capable.
> > 
> > If the PME is enabled, HPDs can generate PME which in turn call
> > the runtime resume call and do the wakeup routines. Till now
> > the driver was relying on HPD polling to wakeup in case of any
> > HPDs. HPD polling can be avoided in platforms with PME support
> > and instead rely on this PCI PME for HPD induced wakeup.
> > 
> > v2: access functions for xe.pme.enabled status and clear the pme.
> >     enabled in case of error in xe_pm_runtime_suspend()
> > 
> > v3: use the local pme_enabled flag to clear the device wakeup
> >     incase of error
> > 
> > v4: call the devm_device_init_wakeup() only if device is PME
> >     capable to avoid false wakeup capable reporting in platforms
> >     where PME is not supported.
> >     Squash the patch which handled the lockdep deadlock handling
> > 
> > Bspec: 52979, 52980, 68857, 68867, 68970
> > Assisted-by: GitHub_Copilot:claude-opus-5
> > Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
> 
> Reviewed-by: Jouni Högander <jouni.hogander@intel.com>

pushed to drm-intel-next

Thanks for the patches and reviews

> > ---
> >  drivers/gpu/drm/xe/xe_device_types.h | 13 ++++++++
> >  drivers/gpu/drm/xe/xe_pci.c          | 22 +++++++++++++-
> >  drivers/gpu/drm/xe/xe_pm.c           | 45
> > ++++++++++++++++++++++++++++
> >  drivers/gpu/drm/xe/xe_pm.h           |  2 ++
> >  4 files changed, 81 insertions(+), 1 deletion(-)
> > 
> > diff --git a/drivers/gpu/drm/xe/xe_device_types.h
> > b/drivers/gpu/drm/xe/xe_device_types.h
> > index 4661bfce2f4e..bb4234f00453 100644
> > --- a/drivers/gpu/drm/xe/xe_device_types.h
> > +++ b/drivers/gpu/drm/xe/xe_device_types.h
> > @@ -460,6 +460,19 @@ struct xe_device {
> >  		struct mutex lock;
> >  	} d3cold;
> >  
> > +	/** @pme: Encapsulate pme related stuff */
> > +	struct {
> > +		/** @pme.capable: Indicates if device is PME capable
> > */
> > +		bool capable;
> > +
> > +		/** @pme.enabled:
> > +		 *
> > +		 * Indicates if PME is enabled - depends on user
> > controllable
> > +		 * sysfs interface as well
> > +		 */
> > +		bool enabled;
> > +	} pme;
> > +
> >  	/** @pm_notifier: Our PM notifier to perform actions in
> > response to various PM events. */
> >  	struct notifier_block pm_notifier;
> >  	/** @pm_block: Completion to block validating tasks on
> > suspend / hibernate prepare */
> > diff --git a/drivers/gpu/drm/xe/xe_pci.c
> > b/drivers/gpu/drm/xe/xe_pci.c
> > index c401c8803796..d10633f74aa4 100644
> > --- a/drivers/gpu/drm/xe/xe_pci.c
> > +++ b/drivers/gpu/drm/xe/xe_pci.c
> > @@ -1380,6 +1380,8 @@ static int xe_pci_runtime_suspend(struct device
> > *dev)
> >  {
> >  	struct pci_dev *pdev = to_pci_dev(dev);
> >  	struct xe_device *xe = pdev_to_xe_device(pdev);
> > +	unsigned int flags;
> > +	bool pme_enabled;
> >  	int err;
> >  
> >  	/*
> > @@ -1391,9 +1393,25 @@ static int xe_pci_runtime_suspend(struct
> > device *dev)
> >  	xe_assert(xe, !IS_SRIOV_VF(xe));
> >  	xe_assert(xe, !pci_num_vf(pdev));
> >  
> > +	flags = memalloc_noreclaim_save();
> > +	pme_enabled = xe->pme.capable && !xe->d3cold.allowed &&
> > +		      pci_enable_wake(pdev, PCI_D3hot, true) == 0;
> > +	memalloc_noreclaim_restore(flags);
> > +
> > +	xe_pm_update_pme_enabled(xe, pme_enabled);
> > +
> >  	err = xe_pm_runtime_suspend(xe);
> > -	if (err)
> > +	if (err) {
> > +		if (pme_enabled) {
> > +			flags = memalloc_noreclaim_save();
> > +			pci_enable_wake(pdev, PCI_D3hot, false);
> > +			memalloc_noreclaim_restore(flags);
> > +
> > +			xe_pm_update_pme_enabled(xe, false);
> > +		}
> > +
> >  		return err;
> > +	}
> >  
> >  	pci_save_state(pdev);
> >  
> > @@ -1422,6 +1440,8 @@ static int xe_pci_runtime_resume(struct device
> > *dev)
> >  
> >  	pci_restore_state(pdev);
> >  
> > +	xe_pm_update_pme_enabled(xe, false);
> > +
> >  	if (xe->d3cold.allowed) {
> >  		err = pci_enable_device(pdev);
> >  		if (err)
> > diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> > index f517bf453b54..e71bb90c9b80 100644
> > --- a/drivers/gpu/drm/xe/xe_pm.c
> > +++ b/drivers/gpu/drm/xe/xe_pm.c
> > @@ -78,6 +78,8 @@
> >   * management (RPS).
> >   */
> >  
> > +#define HAS_PM_PME_SUPPORT(xe) (GRAPHICS_VERx100(xe) >= 3500)
> > +
> >  #ifdef CONFIG_LOCKDEP
> >  static struct lockdep_map xe_pm_runtime_d3cold_map = {
> >  	.name = "xe_rpm_d3cold_map"
> > @@ -384,6 +386,14 @@ int xe_pm_init_early(struct xe_device *xe)
> >  }
> >  ALLOW_ERROR_INJECTION(xe_pm_init_early, ERRNO); /* See
> > xe_pci_probe() */
> >  
> > +static bool xe_pm_pci_pme_capable(struct xe_device *xe)
> > +{
> > +	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
> > +
> > +	return HAS_PM_PME_SUPPORT(xe) ?
> > +		pci_pme_capable(pdev, PCI_D3hot) : false;
> > +}
> > +
> >  /**
> >   * xe_pm_probe() - Initialize Xe Power Management
> >   * @xe: the &xe_device instance
> > @@ -397,6 +407,16 @@ int xe_pm_probe(struct xe_device *xe)
> >  	xe->d3cold.capable = xe_pm_pci_d3cold_capable(xe);
> >  	xe_dbg(xe, "d3cold: capable=%s\n", str_yes_no(xe-
> > >d3cold.capable));
> >  
> > +	xe->pme.capable = xe_pm_pci_pme_capable(xe);
> > +	xe_dbg(xe, "pme: capable=%s\n", str_yes_no(xe-
> > >pme.capable));
> > +
> > +	if (xe->pme.capable) {
> > +		int err = devm_device_init_wakeup(xe->drm.dev);
> > +
> > +		if (err)
> > +			return err;
> > +	}
> > +
> >  	return 0;
> >  }
> >  
> > @@ -650,6 +670,7 @@ int xe_pm_runtime_suspend(struct xe_device *xe)
> >  	return 0;
> >  
> >  out_resume:
> > +	xe_pm_update_pme_enabled(xe, false);
> >  	xe_display_pm_runtime_resume(xe);
> >  	xe_pxp_pm_resume(xe->pxp);
> >  out:
> > @@ -993,6 +1014,30 @@ int xe_pm_set_vram_threshold(struct xe_device
> > *xe, u32 threshold)
> >  	return 0;
> >  }
> >  
> > +/**
> > + * xe_pm_pme_enabled - get the current status of PME enabled
> > + * @xe: xe device instance
> > + *
> > + * Returns: True if PME is enabled, false otherwise.
> > + */
> > +bool xe_pm_pme_enabled(struct xe_device *xe)
> > +{
> > +	return xe->pme.enabled;
> > +}
> > +
> > +/**
> > + * xe_pm_update_pme_enabled - Update the PME enabled state
> > + * @xe: xe device instance
> > + * @status: New PME enabled status
> > + *
> > + * Called during runtime suspend / resume. Status is set to True if
> > PME is
> > + * enabled during runtime_suspend. Cleared on runtime_resume.
> > + */
> > +void xe_pm_update_pme_enabled(struct xe_device *xe, bool status)
> > +{
> > +	xe->pme.enabled = status;
> > +}
> > +
> >  /**
> >   * xe_pm_d3cold_allowed_toggle - Check conditions to toggle
> > d3cold.allowed
> >   * @xe: xe device instance
> > diff --git a/drivers/gpu/drm/xe/xe_pm.h b/drivers/gpu/drm/xe/xe_pm.h
> > index 6d5ab09cb769..037c73ea4342 100644
> > --- a/drivers/gpu/drm/xe/xe_pm.h
> > +++ b/drivers/gpu/drm/xe/xe_pm.h
> > @@ -33,6 +33,8 @@ bool xe_pm_runtime_resume_and_get(struct xe_device
> > *xe);
> >  void xe_pm_assert_unbounded_bridge(struct xe_device *xe);
> >  int xe_pm_set_vram_threshold(struct xe_device *xe, u32 threshold);
> >  void xe_pm_d3cold_allowed_toggle(struct xe_device *xe);
> > +bool xe_pm_pme_enabled(struct xe_device *xe);
> > +void xe_pm_update_pme_enabled(struct xe_device *xe, bool status);
> >  bool xe_rpm_reclaim_safe(const struct xe_device *xe);
> >  struct task_struct *xe_pm_read_callback_task(struct xe_device *xe);
> >  int xe_pm_block_on_suspend(struct xe_device *xe);
> 

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

end of thread, other threads:[~2026-09-16 14:16 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-15  9:25 [PATCH v8 0/5] pm_pme support on display hotplug Vinod Govindapillai
2026-09-15  9:25 ` [PATCH v8 1/5] drm/xe/pm: introduce PM PME support Vinod Govindapillai
2026-09-15 12:27   ` Hogander, Jouni
2026-09-16 14:16     ` Rodrigo Vivi
2026-09-15  9:25 ` [PATCH v8 2/5] drm/i915: add pme_enabled() to the parent interface Vinod Govindapillai
2026-09-15 12:38   ` Hogander, Jouni
2026-09-15  9:25 ` [PATCH v8 3/5] drm/i915/xe: plug the pme_enabed implementation for xe Vinod Govindapillai
2026-09-15 12:39   ` Hogander, Jouni
2026-09-15  9:25 ` [PATCH v8 4/5] drm/i915/irq: conditional HPD IRQ resets based on PME capability Vinod Govindapillai
2026-09-15  9:43   ` sashiko-bot
2026-09-15 12:55   ` Hogander, Jouni
2026-09-15  9:25 ` [PATCH v8 5/5] drm/i915/hotplug: avoid HPD polling if the device is PME capable Vinod Govindapillai
2026-09-15 12:55   ` Hogander, Jouni
2026-09-15  9:34 ` ✓ CI.KUnit: success for pm_pme support on display hotplug (rev8) Patchwork
2026-09-15  9:50 ` ✗ CI.checksparse: warning " Patchwork
2026-09-15 10:11 ` ✓ Xe.CI.BAT: success " Patchwork
2026-09-15 12:34 ` ✗ Xe.CI.FULL: failure " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox