Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH 2/2] drm/xe/i2c: Expose AMC Alert reason sysfs
  2026-08-23 10:35 ` [PATCH 2/2] drm/xe/i2c: Expose AMC Alert reason sysfs Badal Nilawar
@ 2026-08-23 10:29   ` sashiko-bot
  2026-08-24 19:26   ` Rodrigo Vivi
  1 sibling, 0 replies; 12+ messages in thread
From: sashiko-bot @ 2026-08-23 10:29 UTC (permalink / raw)
  To: Badal Nilawar; +Cc: intel-xe

Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:

New issues:
- [High] NULL or ERR_PTR dereference in `xe_amc_exit` causing kernel panic.
- [Medium] Race condition (TOCTOU) between uevent emission and sysfs attribute creation.
- [Low] Spurious error message logged on successful sysfs file creation due to a missing return.

Pre-existing issues:
- [High] Use-After-Free (UAF) due to un-canceled asynchronous work during teardown.
--

--- Patch [2]: [PATCH 2/2] drm/xe/i2c: Expose AMC Alert reason sysfs ---
commit c923eec141de210a872cc999c40aa460aad20d6f
Author: Badal Nilawar <badal.nilawar@intel.com>

drm/xe/i2c: Expose AMC Alert reason sysfs

AMC raises an SMBUS alert before performing a power removal or power-cycle
operation, and the driver places the device into vendor-specific wedge mode.
This commit exposes a read-only xe_amc_alert_reason sysfs attribute to help
users identify the required recovery action.

> diff --git a/drivers/gpu/drm/xe/xe_amc.c b/drivers/gpu/drm/xe/xe_amc.c
> index 8ecadee6eea39..ceb2c4d618fef 100644
> --- a/drivers/gpu/drm/xe/xe_amc.c
> +++ b/drivers/gpu/drm/xe/xe_amc.c
[ ... ]
> @@ -104,6 +107,54 @@ static const struct amc_request amc_get_alert_reason = {
[ ... ]
> +static void xe_create_amc_alert_sysfs(struct xe_device *xe)
> +{
> +	struct device *dev = xe->drm.dev;
> +	int ret;
> +
> +	if (xe->i2c->amc->sysfs_created)
> +		return;
> +
> +	ret = device_create_file(dev, &dev_attr_xe_amc_alert_reason);
> +	if (ret)
> +		goto failed;
> +
> +	xe->i2c->amc->sysfs_created = true;
> +failed:
> +	dev_err(dev, "Failed to create sysfs file for amc alert reason\n");
> +}

[Severity: Low]
Is this error message printed even when the sysfs file is successfully created?
It looks like there is a missing return statement before the failed label,
causing the code to fall through to dev_err() on success.

[ ... ]
> @@ -158,10 +209,16 @@ static void xe_amc_work(struct work_struct *work)
>  	case AMC_ALERT_THERMAL_TRIP:
>  	case AMC_ALERT_OOB_REQUEST:
>  	case AMC_ALERT_OOB_RESET:
> -	case AMC_ALERT_CATERR:
> +	case AMC_ALERT_CATERR: {
> +		struct xe_device *xe = i2c_client_to_xe_device(client);
> +
>  		dev_warn(amc->i2c->drm_dev, "AMC Alert: %s\n", amc_alert[alert_reason]);
> -		xe_device_declare_wedged(i2c_client_to_xe_device(client));
> +		amc->alert_reason = alert_reason;
> +		xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_VENDOR);
> +		xe_device_declare_wedged(xe);
> +		xe_create_amc_alert_sysfs(xe);

[Severity: Medium]
Could this create a race condition with userspace?

xe_device_declare_wedged() emits a KOBJ_CHANGE uevent. If userspace reacts
to the uevent instantly, it might check the sysfs directory before
xe_create_amc_alert_sysfs() completes, resulting in a -ENOENT error when
trying to read the alert reason.

>  		break;
> +	}
>  	default:
>  		dev_warn(amc->i2c->drm_dev, "unknown AMC alert: %d\n", alert_reason);
>  		break;
> @@ -190,8 +247,12 @@ int xe_amc_init(struct xe_i2c *i2c)
>  
>  void xe_amc_exit(struct xe_i2c *i2c)
>  {
> +	struct xe_device *xe;
> +
>  	if (i2c->amc) {
>  		cancel_work_sync(&i2c->amc->work);
> +		xe = i2c_client_to_xe_device(i2c->client[XE_I2C_CLIENT_AMC]);

[Severity: High]
Can i2c->client[XE_I2C_CLIENT_AMC] be NULL or an ERR_PTR here?

The I2C client is populated asynchronously in xe_i2c_client_work(). If
xe_amc_exit() is called before this work executes, or if the client creation
failed, i2c_client_to_xe_device() will unconditionally dereference an invalid
pointer when it accesses client->adapter.

> +		xe_remove_amc_alert_sysfs(xe);
>  		kfree(i2c->amc);
>  	}
>  }

[Severity: High]
This is a pre-existing issue, but looking at the driver teardown path in
drivers/gpu/drm/xe/xe_i2c.c:

static void xe_i2c_remove(void *data)
{
	struct xe_i2c *i2c = data;
	unsigned int i;

	xe_amc_exit(i2c);

	for (i = 0; i < XE_I2C_MAX_CLIENTS; i++) {
		i2c_unregister_device(i2c->client[i]);
		i2c->client[i] = NULL;
	}

	bus_unregister_notifier(&i2c_bus_type, &i2c->bus_notifier);
	xe_i2c_unregister_adapter(i2c);
}

Is there a missing cancel_work_sync(&i2c->work) here? 

The teardown path unregisters the notifier and xe_amc_exit() cancels amc->work,
but it appears to leave i2c->work unmanaged. If this asynchronous work executes
concurrently or after the devm-managed i2c structure is freed, could it lead
to a use-after-free?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260823103523.554184-4-badal.nilawar@intel.com?part=2

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

* Re: [PATCH 1/2] drm/xe/i2c: Not for review, Squash of I2C/AMC series
  2026-08-23 10:35 ` [PATCH 1/2] drm/xe/i2c: Not for review, Squash of I2C/AMC series Badal Nilawar
@ 2026-08-23 10:30   ` sashiko-bot
  2026-08-24 12:27   ` Heikki Krogerus
  1 sibling, 0 replies; 12+ messages in thread
From: sashiko-bot @ 2026-08-23 10:30 UTC (permalink / raw)
  To: Badal Nilawar; +Cc: intel-xe

Thank you for your contribution! Sashiko AI review found 6 potential issue(s) to consider:

New issues:
- [High] Interrupt storm due to missing IRQ masking for SMBus Alert.
- [High] Use-After-Free due to dangling pointer and missing synchronization in `xe_amc_exit`.
- [High] `xe_i2c_write` forces `DW_IC_ENABLE` to remain enabled, silently breaking I2C timing configuration.
- [High] Data race on I2C_CONFIG_CMD MMIO register due to non-atomic read-modify-write across contexts.

Pre-existing issues:
- [High] Use-After-Free due to uncancelled asynchronous work during I2C teardown.
- [High] Missing SR-IOV VF guard in I2C probe allows Virtual Functions to access PF-only resources.
--

--- Patch [1]: [PATCH 1/2] drm/xe/i2c: Not for review, Squash of I2C/AMC series ---
commit 067320578064c382a7fa5cb790273a2f63391cd5
Author: Heikki Krogerus <heikki.krogerus@linux.intel.com>

drm/xe/i2c: Not for review, Squash of I2C/AMC series

This commit squashes the I2C and AMC patch series for the Intel Xe driver.
It introduces the Add-In Management Controller (AMC) alert handler and
integrates DesignWare I2C register definitions.

Link: https://patchwork.freedesktop.org/series/168930/

> diff --git a/drivers/gpu/drm/xe/xe_amc.c b/drivers/gpu/drm/xe/xe_amc.c
> new file mode 100644
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_amc.c
[ ... ]
> +static void xe_amc_work(struct work_struct *work)
> +{
[ ... ]
> +	alert_reason = response.value;
> +	dev_dbg(&client->dev, "Alert reason: %d\n", alert_reason);
> +
> +out_reassert_interrupt:
> +	xe_mmio_rmw32(amc->i2c->mmio, I2C_CONFIG_CMD, PCI_COMMAND_INTX_DISABLE, 0);

[Severity: High]
Does this introduce a data race regression with the hardirq handler?
xe_amc_work() executes in process context, while
xe_i2c_handle_smbus_alert() executes in hardirq context. Both perform an
unprotected xe_mmio_rmw32() on the I2C_CONFIG_CMD register.

Because xe_mmio_rmw32() performs a non-atomic read, bitwise modify, and
write sequence, if the hardirq preempts the workqueue exactly between the
read and write steps, the hardirq's modifications will be clobbered when
the workqueue resumes and writes back its stale value. Does this need
locking or atomic bit operations?

[ ... ]
> +void xe_amc_exit(struct xe_i2c *i2c)
> +{
> +	if (i2c->amc) {
> +		cancel_work_sync(&i2c->amc->work);
> +		kfree(i2c->amc);
> +	}
> +}

[Severity: High]
Can this code leave a dangling pointer that causes a use-after-free
regression? When i2c->amc is freed, the pointer is not set to NULL, and
there is no synchronization with the active IRQ handler.

If an I2C interrupt fires concurrently, xe_i2c_handle_smbus_alert() will
observe i2c->amc as non-NULL and call xe_amc_handle_alert(), which will
execute queue_work() on the freed memory. Should i2c->amc be set to NULL
here, combined with proper IRQ synchronization?

> diff --git a/drivers/gpu/drm/xe/xe_i2c.c b/drivers/gpu/drm/xe/xe_i2c.c
> --- a/drivers/gpu/drm/xe/xe_i2c.c
> +++ b/drivers/gpu/drm/xe/xe_i2c.c
[ ... ]
> +static void xe_i2c_handle_smbus_alert(struct xe_i2c *i2c)
> +{
> +	u32 stat;
> +
> +	stat = xe_mmio_read32(i2c->mmio, I2C_REG(DW_IC_SMBUS_INTR_STAT));
> +	if (!stat)
> +		return;
> +
> +	xe_mmio_write32(i2c->mmio, I2C_REG(DW_IC_CLR_SMBUS_INTR), stat);
> +
> +	if (stat & DW_IC_SMBUS_INTR_ALERT && i2c->amc)
> +		xe_amc_handle_alert(i2c);
> +	else
> +		xe_mmio_rmw32(i2c->mmio, I2C_CONFIG_CMD, PCI_COMMAND_INTX_DISABLE, 0);
> +}

[Severity: High]
Can this branch cause an interrupt storm regression? The AMC asserts the
level-triggered SMBus Alert line. When the alert is present, this handler
queues a work item via xe_amc_handle_alert(), but does not set
PCI_COMMAND_INTX_DISABLE to mask the INTx at the PCI level.

Since the AMC holds the physical line low until the workqueue runs,
returning from this handler without masking the interrupt will cause the
DW I2C controller to immediately re-assert the interrupt. Would it be safer
to mask the interrupt before returning?

[ ... ]
> @@ -267,8 +258,33 @@ static int xe_i2c_write(void *context, unsigned int reg, unsigned int val)
>  {
>  	struct xe_i2c *i2c = context;
>  
> -	xe_mmio_write32(i2c->mmio, XE_REG(reg + I2C_MEM_SPACE_OFFSET), val);
> +	switch (reg) {
[ ... ]
> +	case DW_IC_ENABLE:
> +		i2c->ic_enable = val;
> +		/* Other fields can be updated except the enable bit. */
> +		val |= DW_IC_ENABLE_ENABLE;
> +		break;

[Severity: High]
Does forcing this enable bit to 1 introduce a regression that silently
breaks the I2C timing configuration?

The DesignWare core driver configures I2C timings (such as
DW_IC_SS_SCL_HCNT), which strictly requires the controller to be disabled
first. It attempts to disable the controller by writing 0 to DW_IC_ENABLE.

However, by intercepting this write and forcing DW_IC_ENABLE_ENABLE to 1,
the controller remains enabled. Will the hardware silently ignore all
subsequent writes to the timing registers because of this?

[ ... ]
> @@ -310,12 +326,15 @@ static void xe_i2c_remove(void *data)
>  	struct xe_i2c *i2c = data;
>  	unsigned int i;
>  
> -	for (i = 0; i < XE_I2C_MAX_CLIENTS; i++)
> +	xe_amc_exit(i2c);
> +
> +	for (i = 0; i < XE_I2C_MAX_CLIENTS; i++) {
>  		i2c_unregister_device(i2c->client[i]);
> +		i2c->client[i] = NULL;
> +	}
>  
>  	bus_unregister_notifier(&i2c_bus_type, &i2c->bus_notifier);
>  	xe_i2c_unregister_adapter(i2c);
> -	xe_i2c_remove_irq(i2c);
>  }

[Severity: High]
This isn't a regression introduced by this patch, but does this function
leave asynchronous work uncancelled during I2C teardown?

The I2C bus notifier schedules i2c->work (xe_i2c_client_work)
asynchronously, but this teardown function unregisters the notifier and
adapter without calling cancel_work_sync(&i2c->work). Since the devres
managed i2c structure is freed shortly after, could a pending work
execution access freed memory if it runs after this completes?

[ ... ]
> @@ -363,22 +382,18 @@ int xe_i2c_probe(struct xe_device *xe)
>  	if (ret)
>  		return ret;
>  
> -	ret = xe_i2c_create_irq(xe);
> -	if (ret)
> -		goto err_unregister_notifier;
> -
>  	ret = xe_i2c_register_adapter(i2c);

[Severity: High]
This isn't a regression introduced by this patch, but does this function
lack the required SR-IOV Virtual Function (VF) guard before accessing
hardware?

A Virtual Function attempting to load the driver will call xe_i2c_probe(),
which accesses PF-only I2C controller MMIO resources and registers devices.
Without an IS_SRIOV_VF(xe) early return check, can this lead to hardware
failures, MMIO timeouts, or incorrect driver behavior in an unprivileged
VF context?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260823103523.554184-4-badal.nilawar@intel.com?part=1

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

* [PATCH 0/2] Expose AMC alert reason sysfs
@ 2026-08-23 10:35 Badal Nilawar
  2026-08-23 10:35 ` [PATCH 1/2] drm/xe/i2c: Not for review, Squash of I2C/AMC series Badal Nilawar
                   ` (4 more replies)
  0 siblings, 5 replies; 12+ messages in thread
From: Badal Nilawar @ 2026-08-23 10:35 UTC (permalink / raw)
  To: intel-xe
  Cc: anshuman.gupta, rodrigo.vivi, raag.jadav, riana.tauro,
	mallesh.koujalagi, aravind.iddamsetty, heikki.krogerus,
	himal.prasad.ghimiray

Expose AMC alert reason sysfs.

Badal Nilawar (1):
  drm/xe/i2c: Expose AMC Alert reason sysfs

Heikki Krogerus (1):
  drm/xe/i2c: Not for review, Squash of I2C/AMC series

 .../ABI/testing/sysfs-driver-intel-xe-amc     |  21 ++
 MAINTAINERS                                   |   1 +
 drivers/gpu/drm/xe/Makefile                   |   4 +-
 drivers/gpu/drm/xe/regs/xe_i2c_regs.h         |   2 +
 drivers/gpu/drm/xe/xe_amc.c                   | 258 ++++++++++++++++++
 drivers/gpu/drm/xe/xe_amc.h                   |  25 ++
 drivers/gpu/drm/xe/xe_i2c.c                   | 165 ++++++-----
 drivers/gpu/drm/xe/xe_i2c.h                   |  14 +-
 drivers/i2c/busses/i2c-designware-common.c    |   2 +
 drivers/i2c/busses/i2c-designware-core.h      |  85 +-----
 drivers/i2c/busses/i2c-designware-master.c    |   2 +
 drivers/i2c/busses/i2c-designware-slave.c     |   2 +
 include/linux/designware_i2c.h                | 107 ++++++++
 13 files changed, 523 insertions(+), 165 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-driver-intel-xe-amc
 create mode 100644 drivers/gpu/drm/xe/xe_amc.c
 create mode 100644 drivers/gpu/drm/xe/xe_amc.h
 create mode 100644 include/linux/designware_i2c.h

-- 
2.54.0


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

* [PATCH 1/2] drm/xe/i2c: Not for review, Squash of I2C/AMC series
  2026-08-23 10:35 [PATCH 0/2] Expose AMC alert reason sysfs Badal Nilawar
@ 2026-08-23 10:35 ` Badal Nilawar
  2026-08-23 10:30   ` sashiko-bot
  2026-08-24 12:27   ` Heikki Krogerus
  2026-08-23 10:35 ` [PATCH 2/2] drm/xe/i2c: Expose AMC Alert reason sysfs Badal Nilawar
                   ` (3 subsequent siblings)
  4 siblings, 2 replies; 12+ messages in thread
From: Badal Nilawar @ 2026-08-23 10:35 UTC (permalink / raw)
  To: intel-xe
  Cc: anshuman.gupta, rodrigo.vivi, raag.jadav, riana.tauro,
	mallesh.koujalagi, aravind.iddamsetty, heikki.krogerus,
	himal.prasad.ghimiray

From: Heikki Krogerus <heikki.krogerus@linux.intel.com>

Squash of https://patchwork.freedesktop.org/series/168930/

Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
---
 MAINTAINERS                                |   1 +
 drivers/gpu/drm/xe/Makefile                |   4 +-
 drivers/gpu/drm/xe/regs/xe_i2c_regs.h      |   2 +
 drivers/gpu/drm/xe/xe_amc.c                | 197 +++++++++++++++++++++
 drivers/gpu/drm/xe/xe_amc.h                |  25 +++
 drivers/gpu/drm/xe/xe_i2c.c                | 165 +++++++++--------
 drivers/gpu/drm/xe/xe_i2c.h                |  14 +-
 drivers/i2c/busses/i2c-designware-common.c |   2 +
 drivers/i2c/busses/i2c-designware-core.h   |  85 +--------
 drivers/i2c/busses/i2c-designware-master.c |   2 +
 drivers/i2c/busses/i2c-designware-slave.c  |   2 +
 include/linux/designware_i2c.h             | 107 +++++++++++
 12 files changed, 441 insertions(+), 165 deletions(-)
 create mode 100644 drivers/gpu/drm/xe/xe_amc.c
 create mode 100644 drivers/gpu/drm/xe/xe_amc.h
 create mode 100644 include/linux/designware_i2c.h

diff --git a/MAINTAINERS b/MAINTAINERS
index 3c508bda61d5..6ff23846f456 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -26266,6 +26266,7 @@ R:	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 L:	linux-i2c@vger.kernel.org
 S:	Supported
 F:	drivers/i2c/busses/i2c-designware-*
+F:	include/linux/designware_i2c.h
 
 SYNOPSYS DESIGNWARE I2C DRIVER - AMDISP
 M:	Nirujogi Pratap <pratap.nirujogi@amd.com>
diff --git a/drivers/gpu/drm/xe/Makefile b/drivers/gpu/drm/xe/Makefile
index 92134709d998..67b8b5477639 100644
--- a/drivers/gpu/drm/xe/Makefile
+++ b/drivers/gpu/drm/xe/Makefile
@@ -154,7 +154,9 @@ xe-y += xe_bb.o \
 	xe_wait_user_fence.o \
 	xe_wopcm.o
 
-xe-$(CONFIG_I2C)	+= xe_i2c.o
+xe-$(CONFIG_I2C)	+= xe_i2c.o \
+			   xe_amc.o
+
 xe-$(CONFIG_DRM_XE_GPUSVM) += xe_svm.o
 xe-$(CONFIG_DRM_GPUSVM) += xe_userptr.o
 
diff --git a/drivers/gpu/drm/xe/regs/xe_i2c_regs.h b/drivers/gpu/drm/xe/regs/xe_i2c_regs.h
index f2e455e2bfe4..37550e4a20f8 100644
--- a/drivers/gpu/drm/xe/regs/xe_i2c_regs.h
+++ b/drivers/gpu/drm/xe/regs/xe_i2c_regs.h
@@ -20,4 +20,6 @@
 #define I2C_CONFIG_CMD			XE_REG(I2C_CONFIG_SPACE_OFFSET + PCI_COMMAND)
 #define I2C_CONFIG_PMCSR		XE_REG(I2C_CONFIG_SPACE_OFFSET + 0x84)
 
+#define I2C_REG(reg)			XE_REG((reg) + I2C_MEM_SPACE_OFFSET)
+
 #endif /* _XE_I2C_REGS_H_ */
diff --git a/drivers/gpu/drm/xe/xe_amc.c b/drivers/gpu/drm/xe/xe_amc.c
new file mode 100644
index 000000000000..8ecadee6eea3
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_amc.c
@@ -0,0 +1,197 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2026 Intel Corporation.
+ */
+
+#include <linux/delay.h>
+#include <linux/dev_printk.h>
+#include <linux/err.h>
+#include <linux/i2c.h>
+#include <linux/pci_ids.h>
+#include <linux/slab.h>
+#include <linux/string.h>
+#include <linux/workqueue.h>
+
+#include "regs/xe_i2c_regs.h"
+
+#include "xe_amc.h"
+#include "xe_device.h"
+#include "xe_i2c.h"
+#include "xe_mmio.h"
+
+/**
+ * DOC: Add-In Management Controller (AMC)
+ *
+ * Handler for the SMBus Alerts from the AMC. All the alerts from AMC will cause
+ * the device to be declared wedged.
+ */
+
+#define AMC_COMMAND		0x0f
+#define AMC_GPU_I2C_ADDR	0x8f
+#define AMC_VERSION_V1		0x01
+#define AMC_DESTINATION_ID	12
+#define AMC_SOURCE_ID		8
+#define AMC_FLAGS		0xc8
+
+#define AMC_MSG_TYPE		0x7e
+#define AMC_GET_ALERT_REASON	0x01
+
+enum xe_amc_alert {
+	AMC_ALERT_UNKNOWN,
+	AMC_ALERT_FW_DOWNLOAD,
+	AMC_ALERT_THERMAL_TRIP,
+	AMC_ALERT_OOB_REQUEST,
+	AMC_ALERT_OOB_RESET,
+	AMC_ALERT_CATERR,
+};
+
+static const char * const amc_alert[] = {
+	[AMC_ALERT_FW_DOWNLOAD]		= "Firmware Download",
+	[AMC_ALERT_THERMAL_TRIP]	= "Thermal Trip",
+	[AMC_ALERT_OOB_REQUEST]		= "OOB Request",
+	[AMC_ALERT_OOB_RESET]		= "OOB Reset",
+	[AMC_ALERT_CATERR]		= "Catastrophic",
+};
+
+struct xe_amc {
+	struct xe_i2c *i2c;
+	struct work_struct work;
+};
+
+struct amc_header {
+	u8 command;
+	u8 len;
+	u8 address;
+	u8 version;
+	u8 destination;
+	u8 source;
+	u8 flags;
+} __packed;
+
+struct amc_message {
+	u8 type;
+	u16 vendor;
+	u8 command;
+} __packed;
+
+struct amc_request {
+	struct amc_header header;
+	struct amc_message message;
+	u32 reserved;
+} __packed;
+
+struct amc_response {
+	struct amc_header header;
+	struct amc_message message;
+	u8 error;
+	u8 value;
+} __packed;
+
+static const struct amc_request amc_get_alert_reason = {
+	.header = {
+		.command	= AMC_COMMAND,
+		.len		= sizeof(struct amc_request) - 2,
+		.address	= AMC_GPU_I2C_ADDR,
+		.version	= AMC_VERSION_V1,
+		.destination	= AMC_DESTINATION_ID,
+		.source		= AMC_SOURCE_ID,
+		.flags		= AMC_FLAGS,
+	},
+	.message = {
+		.type		= AMC_MSG_TYPE,
+		.vendor		= htons(PCI_VENDOR_ID_INTEL),
+		.command	= AMC_GET_ALERT_REASON,
+	},
+};
+
+static void xe_amc_work(struct work_struct *work)
+{
+	const struct amc_request *request = &amc_get_alert_reason;
+	struct xe_amc *amc = from_work(amc, work, work);
+	u8 alert_reason = AMC_ALERT_UNKNOWN;
+	struct amc_response response;
+	struct i2c_client *client;
+	int ret;
+
+	client = amc->i2c->client[XE_I2C_CLIENT_AMC];
+	if (IS_ERR_OR_NULL(client))
+		goto out_reassert_interrupt;
+
+	ret = i2c_master_send(client, (u8 *)request, sizeof(*request));
+	if (ret < 0) {
+		dev_err(&client->dev, "failed to send request (%d)\n", ret);
+		goto out_reassert_interrupt;
+	}
+
+	/* AMC needs 20ms to generate the response. */
+	fsleep(20 * USEC_PER_MSEC);
+
+	ret = i2c_master_recv(client, (u8 *)&response, sizeof(response));
+	if (ret < 0) {
+		dev_err(&client->dev, "failed to read response (%d)\n", ret);
+		goto out_reassert_interrupt;
+	}
+
+	if (!response.header.len) {
+		dev_err(&client->dev, "empty response from AMC\n");
+		goto out_reassert_interrupt;
+	}
+
+	if (memcmp(&response.message, &request->message, sizeof(struct amc_message))) {
+		dev_err(&client->dev, "response does not match the request\n");
+		goto out_reassert_interrupt;
+	}
+
+	if (response.error) {
+		dev_err(&client->dev, "AMC error 0x%02x\n", response.error);
+		goto out_reassert_interrupt;
+	}
+
+	alert_reason = response.value;
+	dev_dbg(&client->dev, "Alert reason: %d\n", alert_reason);
+
+out_reassert_interrupt:
+	xe_mmio_rmw32(amc->i2c->mmio, I2C_CONFIG_CMD, PCI_COMMAND_INTX_DISABLE, 0);
+
+	switch (alert_reason) {
+	case AMC_ALERT_FW_DOWNLOAD:
+	case AMC_ALERT_THERMAL_TRIP:
+	case AMC_ALERT_OOB_REQUEST:
+	case AMC_ALERT_OOB_RESET:
+	case AMC_ALERT_CATERR:
+		dev_warn(amc->i2c->drm_dev, "AMC Alert: %s\n", amc_alert[alert_reason]);
+		xe_device_declare_wedged(i2c_client_to_xe_device(client));
+		break;
+	default:
+		dev_warn(amc->i2c->drm_dev, "unknown AMC alert: %d\n", alert_reason);
+		break;
+	}
+}
+
+void xe_amc_handle_alert(struct xe_i2c *i2c)
+{
+	queue_work(system_long_wq, &i2c->amc->work);
+}
+
+int xe_amc_init(struct xe_i2c *i2c)
+{
+	struct xe_amc *amc;
+
+	amc = kzalloc(sizeof(*amc), GFP_KERNEL);
+	if (!amc)
+		return -ENOMEM;
+
+	INIT_WORK(&amc->work, xe_amc_work);
+	i2c->amc = amc;
+	amc->i2c = i2c;
+
+	return 0;
+}
+
+void xe_amc_exit(struct xe_i2c *i2c)
+{
+	if (i2c->amc) {
+		cancel_work_sync(&i2c->amc->work);
+		kfree(i2c->amc);
+	}
+}
diff --git a/drivers/gpu/drm/xe/xe_amc.h b/drivers/gpu/drm/xe/xe_amc.h
new file mode 100644
index 000000000000..b1d5311fee53
--- /dev/null
+++ b/drivers/gpu/drm/xe/xe_amc.h
@@ -0,0 +1,25 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+#ifndef _XE_AMC_H_
+#define _XE_AMC_H_
+
+#include <linux/i2c.h>
+
+#include "xe_device.h"
+
+struct xe_i2c;
+
+static inline struct xe_device *i2c_adapter_to_xe_device(struct i2c_adapter *adapter)
+{
+	return kdev_to_xe_device(adapter->dev.parent->parent);
+}
+
+static inline struct xe_device *i2c_client_to_xe_device(struct i2c_client *client)
+{
+	return i2c_adapter_to_xe_device(client->adapter);
+}
+
+int xe_amc_init(struct xe_i2c *i2c);
+void xe_amc_exit(struct xe_i2c *i2c);
+void xe_amc_handle_alert(struct xe_i2c *i2c);
+
+#endif /* _XE_AMC_H_ */
diff --git a/drivers/gpu/drm/xe/xe_i2c.c b/drivers/gpu/drm/xe/xe_i2c.c
index a26c38bb17a1..d8fa68206f41 100644
--- a/drivers/gpu/drm/xe/xe_i2c.c
+++ b/drivers/gpu/drm/xe/xe_i2c.c
@@ -8,12 +8,11 @@
 #include <drm/drm_print.h>
 #include <linux/array_size.h>
 #include <linux/container_of.h>
+#include <linux/delay.h>
 #include <linux/device.h>
 #include <linux/err.h>
 #include <linux/i2c.h>
 #include <linux/ioport.h>
-#include <linux/irq.h>
-#include <linux/irqdomain.h>
 #include <linux/notifier.h>
 #include <linux/pci.h>
 #include <linux/platform_device.h>
@@ -24,9 +23,12 @@
 #include <linux/types.h>
 #include <linux/workqueue.h>
 
+#include <linux/designware_i2c.h>
+
 #include "regs/xe_i2c_regs.h"
 #include "regs/xe_irq_regs.h"
 
+#include "xe_amc.h"
 #include "xe_device.h"
 #include "xe_i2c.h"
 #include "xe_mmio.h"
@@ -61,16 +63,32 @@ static inline void xe_i2c_read_endpoint(struct xe_mmio *mmio, void *ep)
 	val[1] = xe_mmio_read32(mmio, REG_SG_REMAP_ADDR_POSTFIX);
 }
 
+static void xe_i2c_handle_smbus_alert(struct xe_i2c *i2c)
+{
+	u32 stat;
+
+	stat = xe_mmio_read32(i2c->mmio, I2C_REG(DW_IC_SMBUS_INTR_STAT));
+	if (!stat)
+		return;
+
+	xe_mmio_write32(i2c->mmio, I2C_REG(DW_IC_CLR_SMBUS_INTR), stat);
+
+	if (stat & DW_IC_SMBUS_INTR_ALERT && i2c->amc)
+		xe_amc_handle_alert(i2c);
+	else
+		xe_mmio_rmw32(i2c->mmio, I2C_CONFIG_CMD, PCI_COMMAND_INTX_DISABLE, 0);
+}
+
 static void xe_i2c_client_work(struct work_struct *work)
 {
 	struct xe_i2c *i2c = container_of(work, struct xe_i2c, work);
 	struct i2c_board_info info = {
 		.type	= "amc",
 		.flags	= I2C_CLIENT_HOST_NOTIFY,
-		.addr	= i2c->ep.addr[1],
+		.addr	= i2c->ep.addr[XE_I2C_CLIENT_AMC],
 	};
 
-	i2c->client[0] = i2c_new_client_device(i2c->adapter, &info);
+	i2c->client[XE_I2C_CLIENT_AMC] = i2c_new_client_device(i2c->adapter, &info);
 }
 
 static int xe_i2c_notifier(struct notifier_block *nb, unsigned long action, void *data)
@@ -115,16 +133,6 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c)
 		goto err_fwnode_remove;
 	}
 
-	if (i2c->adapter_irq) {
-		struct resource res;
-
-		res = DEFINE_RES_IRQ_NAMED(i2c->adapter_irq, "xe_i2c");
-
-		ret = platform_device_add_resources(pdev, &res, 1);
-		if (ret)
-			goto err_pdev_put;
-	}
-
 	pdev->dev.parent = i2c->drm_dev;
 	pdev->dev.fwnode = fwnode;
 	i2c->adapter_node = fwnode;
@@ -166,7 +174,8 @@ bool xe_i2c_present(struct xe_device *xe)
 
 static bool xe_i2c_irq_present(struct xe_device *xe)
 {
-	return xe->i2c && xe->i2c->adapter_irq;
+	return xe->i2c && xe->i2c->ep.capabilities & XE_I2C_EP_CAP_IRQ &&
+		!xe_survivability_mode_is_boot_enabled(xe);
 }
 
 /**
@@ -179,18 +188,10 @@ static bool xe_i2c_irq_present(struct xe_device *xe)
  */
 void xe_i2c_irq_handler(struct xe_device *xe, u32 master_ctl)
 {
-	struct xe_mmio *mmio = xe_root_tile_mmio(xe);
-
 	if (!(master_ctl & I2C_IRQ) || !xe_i2c_irq_present(xe))
 		return;
 
-	/* Forward interrupt to I2C adapter */
-	generic_handle_irq_safe(xe->i2c->adapter_irq);
-
-	/* Deassert after I2C adapter clears the interrupt */
-	xe_mmio_rmw32(mmio, I2C_CONFIG_CMD, 0, PCI_COMMAND_INTX_DISABLE);
-	/* Reassert to allow subsequent interrupt generation */
-	xe_mmio_rmw32(mmio, I2C_CONFIG_CMD, PCI_COMMAND_INTX_DISABLE, 0);
+	xe_i2c_handle_smbus_alert(xe->i2c);
 }
 
 void xe_i2c_irq_reset(struct xe_device *xe)
@@ -215,50 +216,40 @@ void xe_i2c_irq_postinstall(struct xe_device *xe)
 	xe_mmio_rmw32(mmio, I2C_CONFIG_CMD, PCI_COMMAND_INTX_DISABLE, 0);
 }
 
-static int xe_i2c_irq_map(struct irq_domain *h, unsigned int virq,
-			  irq_hw_number_t hw_irq_num)
+/* See "Disabling DW_apb_i2c" in the DesignWare DW_abp_i2c databook. */
+static void xe_i2c_disable(struct xe_i2c *i2c)
 {
-	irq_set_chip_and_handler(virq, &dummy_irq_chip, handle_simple_irq);
-	return 0;
-}
+	int timeout = 100;
+	u32 status;
 
-static const struct irq_domain_ops xe_i2c_irq_ops = {
-	.map = xe_i2c_irq_map,
-};
+	xe_mmio_rmw32(i2c->mmio, I2C_REG(DW_IC_ENABLE), DW_IC_ENABLE_ENABLE, 0);
 
-static int xe_i2c_create_irq(struct xe_device *xe)
-{
-	struct xe_i2c *i2c = xe->i2c;
-	struct irq_domain *domain;
+	do {
+		status = xe_mmio_read32(i2c->mmio, I2C_REG(DW_IC_ENABLE_STATUS));
+		if (!(status & DW_IC_ENABLE_ENABLE))
+			return;
+		/* Can't sleep here. */
+		udelay(25);
+	} while (timeout--);
 
-	if (!(i2c->ep.capabilities & XE_I2C_EP_CAP_IRQ) ||
-	    xe_survivability_mode_is_boot_enabled(xe))
-		return 0;
-
-	domain = irq_domain_create_linear(dev_fwnode(i2c->drm_dev), 1, &xe_i2c_irq_ops, NULL);
-	if (!domain)
-		return -ENOMEM;
-
-	i2c->adapter_irq = irq_create_mapping(domain, 0);
-	i2c->irqdomain = domain;
-
-	return 0;
-}
-
-static void xe_i2c_remove_irq(struct xe_i2c *i2c)
-{
-	if (!i2c->irqdomain)
-		return;
-
-	irq_dispose_mapping(i2c->adapter_irq);
-	irq_domain_remove(i2c->irqdomain);
+	dev_warn(i2c->drm_dev, "timeout in disabling i2c adapter\n");
 }
 
 static int xe_i2c_read(void *context, unsigned int reg, unsigned int *val)
 {
 	struct xe_i2c *i2c = context;
 
-	*val = xe_mmio_read32(i2c->mmio, XE_REG(reg + I2C_MEM_SPACE_OFFSET));
+	*val = xe_mmio_read32(i2c->mmio, I2C_REG(reg));
+
+	switch (reg) {
+	case DW_IC_ENABLE:
+	case DW_IC_ENABLE_STATUS:
+		FIELD_MODIFY(DW_IC_ENABLE_ENABLE, val,
+			     i2c->ic_enable & DW_IC_ENABLE_ENABLE);
+		break;
+	default:
+		break;
+	}
 
 	return 0;
 }
@@ -267,8 +258,33 @@ static int xe_i2c_write(void *context, unsigned int reg, unsigned int val)
 {
 	struct xe_i2c *i2c = context;
 
-	xe_mmio_write32(i2c->mmio, XE_REG(reg + I2C_MEM_SPACE_OFFSET), val);
+	switch (reg) {
+	case DW_IC_CON:
+	case DW_IC_TAR:
+	case DW_IC_SAR:
+		/* Disable the controller. */
+		xe_i2c_disable(i2c);
 
+		/* Write the register. */
+		xe_mmio_write32(i2c->mmio, I2C_REG(reg), val);
+
+		/* Enable the controller. */
+		xe_mmio_rmw32(i2c->mmio, I2C_REG(DW_IC_ENABLE), 0, DW_IC_ENABLE_ENABLE);
+		return 0;
+	case DW_IC_ENABLE:
+		i2c->ic_enable = val;
+		/* Other fields can be updated except the enable bit. */
+		val |= DW_IC_ENABLE_ENABLE;
+		break;
+	case DW_IC_SMBUS_INTR_MASK:
+		/* Make sure the Alert is never masked. */
+		val |= DW_IC_SMBUS_INTR_ALERT;
+		break;
+	default:
+		break;
+	}
+
+	xe_mmio_write32(i2c->mmio, I2C_REG(reg), val);
 	return 0;
 }
 
@@ -310,12 +326,15 @@ static void xe_i2c_remove(void *data)
 	struct xe_i2c *i2c = data;
 	unsigned int i;
 
-	for (i = 0; i < XE_I2C_MAX_CLIENTS; i++)
+	xe_amc_exit(i2c);
+
+	for (i = 0; i < XE_I2C_MAX_CLIENTS; i++) {
 		i2c_unregister_device(i2c->client[i]);
+		i2c->client[i] = NULL;
+	}
 
 	bus_unregister_notifier(&i2c_bus_type, &i2c->bus_notifier);
 	xe_i2c_unregister_adapter(i2c);
-	xe_i2c_remove_irq(i2c);
 }
 
 /**
@@ -363,22 +382,18 @@ int xe_i2c_probe(struct xe_device *xe)
 	if (ret)
 		return ret;
 
-	ret = xe_i2c_create_irq(xe);
-	if (ret)
-		goto err_unregister_notifier;
-
 	ret = xe_i2c_register_adapter(i2c);
-	if (ret)
-		goto err_remove_irq;
+	if (ret) {
+		bus_unregister_notifier(&i2c_bus_type, &i2c->bus_notifier);
+		return ret;
+	}
+
+	ret = xe_amc_init(i2c);
+	if (ret) {
+		xe_i2c_remove(i2c);
+		return ret;
+	}
 
 	xe_i2c_irq_postinstall(xe);
 	return devm_add_action_or_reset(drm_dev, xe_i2c_remove, i2c);
-
-err_remove_irq:
-	xe_i2c_remove_irq(i2c);
-
-err_unregister_notifier:
-	bus_unregister_notifier(&i2c_bus_type, &i2c->bus_notifier);
-
-	return ret;
 }
diff --git a/drivers/gpu/drm/xe/xe_i2c.h b/drivers/gpu/drm/xe/xe_i2c.h
index 425d8160835f..d63adacfefe7 100644
--- a/drivers/gpu/drm/xe/xe_i2c.h
+++ b/drivers/gpu/drm/xe/xe_i2c.h
@@ -11,18 +11,21 @@ struct device;
 struct fwnode_handle;
 struct i2c_adapter;
 struct i2c_client;
-struct irq_domain;
 struct platform_device;
+struct xe_amc;
 struct xe_device;
 struct xe_mmio;
 
-#define XE_I2C_MAX_CLIENTS		3
-
 #define XE_I2C_EP_COOKIE_DEVICE		0xde
 
 /* Endpoint Capabilities */
 #define XE_I2C_EP_CAP_IRQ		BIT(0)
 
+enum XE_I2C_CLIENT {
+	XE_I2C_CLIENT_AMC = 1,
+	XE_I2C_MAX_CLIENTS = 3,
+};
+
 struct xe_i2c_endpoint {
 	u8 cookie;
 	u8 capabilities;
@@ -34,17 +37,16 @@ struct xe_i2c {
 	struct platform_device *pdev;
 	struct i2c_adapter *adapter;
 	struct i2c_client *client[XE_I2C_MAX_CLIENTS];
+	unsigned int ic_enable;
 
 	struct notifier_block bus_notifier;
 	struct work_struct work;
 
-	struct irq_domain *irqdomain;
-	int adapter_irq;
-
 	struct xe_i2c_endpoint ep;
 	struct device *drm_dev;
 
 	struct xe_mmio *mmio;
+	struct xe_amc *amc;
 };
 
 #if IS_ENABLED(CONFIG_I2C)
diff --git a/drivers/i2c/busses/i2c-designware-common.c b/drivers/i2c/busses/i2c-designware-common.c
index e4dfa2ec58bb..a1eca6cd4b75 100644
--- a/drivers/i2c/busses/i2c-designware-common.c
+++ b/drivers/i2c/busses/i2c-designware-common.c
@@ -33,6 +33,8 @@
 #include <linux/types.h>
 #include <linux/units.h>
 
+#include <linux/designware_i2c.h>
+
 #include "i2c-designware-core.h"
 
 #define DW_IC_DEFAULT_BUS_CAPACITANCE_pF	100
diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h
index c71aa2dd368d..2c929a6e8da2 100644
--- a/drivers/i2c/busses/i2c-designware-core.h
+++ b/drivers/i2c/busses/i2c-designware-core.h
@@ -18,6 +18,8 @@
 #include <linux/regmap.h>
 #include <linux/types.h>
 
+#include <linux/designware_i2c.h>
+
 #define DW_IC_DEFAULT_FUNCTIONALITY		(I2C_FUNC_I2C | \
 						 I2C_FUNC_SMBUS_BYTE | \
 						 I2C_FUNC_SMBUS_BYTE_DATA | \
@@ -25,23 +27,6 @@
 						 I2C_FUNC_SMBUS_BLOCK_DATA | \
 						 I2C_FUNC_SMBUS_I2C_BLOCK)
 
-#define DW_IC_CON_MASTER			BIT(0)
-#define DW_IC_CON_SPEED_STD			(1 << 1)
-#define DW_IC_CON_SPEED_FAST			(2 << 1)
-#define DW_IC_CON_SPEED_HIGH			(3 << 1)
-#define DW_IC_CON_SPEED_MASK			GENMASK(2, 1)
-#define DW_IC_CON_10BITADDR_SLAVE		BIT(3)
-#define DW_IC_CON_10BITADDR_MASTER		BIT(4)
-#define DW_IC_CON_RESTART_EN			BIT(5)
-#define DW_IC_CON_SLAVE_DISABLE			BIT(6)
-#define DW_IC_CON_STOP_DET_IFADDRESSED		BIT(7)
-#define DW_IC_CON_TX_EMPTY_CTRL			BIT(8)
-#define DW_IC_CON_RX_FIFO_FULL_HLD_CTRL		BIT(9)
-#define DW_IC_CON_BUS_CLEAR_CTRL		BIT(11)
-
-#define DW_IC_DATA_CMD_DAT			GENMASK(7, 0)
-#define DW_IC_DATA_CMD_FIRST_DATA_BYTE		BIT(11)
-
 /*
  * Register access parameters
  */
@@ -55,65 +40,9 @@
 #define DW_IC_FIFO_RX_FIELD			GENMASK(15, 8)
 #define DW_IC_FIFO_MIN_DEPTH			2
 
-/*
- * Registers offset
- */
-#define DW_IC_CON				0x00
-#define DW_IC_TAR				0x04
-#define DW_IC_SAR				0x08
-#define DW_IC_DATA_CMD				0x10
-#define DW_IC_SS_SCL_HCNT			0x14
-#define DW_IC_SS_SCL_LCNT			0x18
-#define DW_IC_FS_SCL_HCNT			0x1c
-#define DW_IC_FS_SCL_LCNT			0x20
-#define DW_IC_HS_SCL_HCNT			0x24
-#define DW_IC_HS_SCL_LCNT			0x28
-#define DW_IC_INTR_STAT				0x2c
-#define DW_IC_INTR_MASK				0x30
-#define DW_IC_RAW_INTR_STAT			0x34
-#define DW_IC_RX_TL				0x38
-#define DW_IC_TX_TL				0x3c
-#define DW_IC_CLR_INTR				0x40
-#define DW_IC_CLR_RX_UNDER			0x44
-#define DW_IC_CLR_RX_OVER			0x48
-#define DW_IC_CLR_TX_OVER			0x4c
-#define DW_IC_CLR_RD_REQ			0x50
-#define DW_IC_CLR_TX_ABRT			0x54
-#define DW_IC_CLR_RX_DONE			0x58
-#define DW_IC_CLR_ACTIVITY			0x5c
-#define DW_IC_CLR_STOP_DET			0x60
-#define DW_IC_CLR_START_DET			0x64
-#define DW_IC_CLR_GEN_CALL			0x68
-#define DW_IC_ENABLE				0x6c
-#define DW_IC_STATUS				0x70
-#define DW_IC_TXFLR				0x74
-#define DW_IC_RXFLR				0x78
-#define DW_IC_SDA_HOLD				0x7c
-#define DW_IC_TX_ABRT_SOURCE			0x80
-#define DW_IC_ENABLE_STATUS			0x9c
-#define DW_IC_CLR_RESTART_DET			0xa8
-#define DW_IC_SMBUS_INTR_MASK			0xcc
-#define DW_IC_COMP_PARAM_1			0xf4
-#define DW_IC_COMP_VERSION			0xf8
 #define DW_IC_SDA_HOLD_MIN_VERS			0x3131312A /* "111*" == v1.11* */
-#define DW_IC_COMP_TYPE				0xfc
 #define DW_IC_COMP_TYPE_VALUE			0x44570140 /* "DW" + 0x0140 */
 
-#define DW_IC_INTR_RX_UNDER			BIT(0)
-#define DW_IC_INTR_RX_OVER			BIT(1)
-#define DW_IC_INTR_RX_FULL			BIT(2)
-#define DW_IC_INTR_TX_OVER			BIT(3)
-#define DW_IC_INTR_TX_EMPTY			BIT(4)
-#define DW_IC_INTR_RD_REQ			BIT(5)
-#define DW_IC_INTR_TX_ABRT			BIT(6)
-#define DW_IC_INTR_RX_DONE			BIT(7)
-#define DW_IC_INTR_ACTIVITY			BIT(8)
-#define DW_IC_INTR_STOP_DET			BIT(9)
-#define DW_IC_INTR_START_DET			BIT(10)
-#define DW_IC_INTR_GEN_CALL			BIT(11)
-#define DW_IC_INTR_RESTART_DET			BIT(12)
-#define DW_IC_INTR_MST_ON_HOLD			BIT(13)
-
 #define DW_IC_INTR_DEFAULT_MASK			(DW_IC_INTR_RX_FULL | \
 						 DW_IC_INTR_TX_ABRT | \
 						 DW_IC_INTR_STOP_DET)
@@ -123,16 +52,6 @@
 						 DW_IC_INTR_RX_UNDER | \
 						 DW_IC_INTR_RD_REQ)
 
-#define DW_IC_ENABLE_ENABLE			BIT(0)
-#define DW_IC_ENABLE_ABORT			BIT(1)
-
-#define DW_IC_STATUS_ACTIVITY			BIT(0)
-#define DW_IC_STATUS_TFE			BIT(2)
-#define DW_IC_STATUS_RFNE			BIT(3)
-#define DW_IC_STATUS_MASTER_ACTIVITY		BIT(5)
-#define DW_IC_STATUS_SLAVE_ACTIVITY		BIT(6)
-#define DW_IC_STATUS_MASTER_HOLD_TX_FIFO_EMPTY	BIT(7)
-
 #define DW_IC_SDA_HOLD_RX_SHIFT			16
 #define DW_IC_SDA_HOLD_RX_MASK			GENMASK(23, 16)
 
diff --git a/drivers/i2c/busses/i2c-designware-master.c b/drivers/i2c/busses/i2c-designware-master.c
index 7a301c8b604e..a1bcc3797e4f 100644
--- a/drivers/i2c/busses/i2c-designware-master.c
+++ b/drivers/i2c/busses/i2c-designware-master.c
@@ -25,6 +25,8 @@
 #include <linux/regmap.h>
 #include <linux/reset.h>
 
+#include <linux/designware_i2c.h>
+
 #include "i2c-designware-core.h"
 
 #define AMD_TIMEOUT_MIN_US	25
diff --git a/drivers/i2c/busses/i2c-designware-slave.c b/drivers/i2c/busses/i2c-designware-slave.c
index ad0d5fbfa6d5..0abcc7757b23 100644
--- a/drivers/i2c/busses/i2c-designware-slave.c
+++ b/drivers/i2c/busses/i2c-designware-slave.c
@@ -19,6 +19,8 @@
 #include <linux/pm_runtime.h>
 #include <linux/regmap.h>
 
+#include <linux/designware_i2c.h>
+
 #include "i2c-designware-core.h"
 
 int i2c_dw_reg_slave(struct i2c_client *slave)
diff --git a/include/linux/designware_i2c.h b/include/linux/designware_i2c.h
new file mode 100644
index 000000000000..53f37f18a722
--- /dev/null
+++ b/include/linux/designware_i2c.h
@@ -0,0 +1,107 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Synopsys DesignWare I2C register definitions
+ *
+ * Copyright (C) 2026, Intel Corporation
+ */
+
+#ifndef __LINUX_DESIGNWARE_I2C_H
+#define __LINUX_DESIGNWARE_I2C_H
+
+#include <linux/bits.h>
+
+/*
+ * Registers offset
+ */
+#define DW_IC_CON				0x00
+#define DW_IC_TAR				0x04
+#define DW_IC_SAR				0x08
+#define DW_IC_DATA_CMD				0x10
+#define DW_IC_SS_SCL_HCNT			0x14
+#define DW_IC_SS_SCL_LCNT			0x18
+#define DW_IC_FS_SCL_HCNT			0x1c
+#define DW_IC_FS_SCL_LCNT			0x20
+#define DW_IC_HS_SCL_HCNT			0x24
+#define DW_IC_HS_SCL_LCNT			0x28
+#define DW_IC_INTR_STAT				0x2c
+#define DW_IC_INTR_MASK				0x30
+#define DW_IC_RAW_INTR_STAT			0x34
+#define DW_IC_RX_TL				0x38
+#define DW_IC_TX_TL				0x3c
+#define DW_IC_CLR_INTR				0x40
+#define DW_IC_CLR_RX_UNDER			0x44
+#define DW_IC_CLR_RX_OVER			0x48
+#define DW_IC_CLR_TX_OVER			0x4c
+#define DW_IC_CLR_RD_REQ			0x50
+#define DW_IC_CLR_TX_ABRT			0x54
+#define DW_IC_CLR_RX_DONE			0x58
+#define DW_IC_CLR_ACTIVITY			0x5c
+#define DW_IC_CLR_STOP_DET			0x60
+#define DW_IC_CLR_START_DET			0x64
+#define DW_IC_CLR_GEN_CALL			0x68
+#define DW_IC_ENABLE				0x6c
+#define DW_IC_STATUS				0x70
+#define DW_IC_TXFLR				0x74
+#define DW_IC_RXFLR				0x78
+#define DW_IC_SDA_HOLD				0x7c
+#define DW_IC_TX_ABRT_SOURCE			0x80
+#define DW_IC_ENABLE_STATUS			0x9c
+#define DW_IC_CLR_RESTART_DET			0xa8
+#define DW_IC_SMBUS_INTR_STAT			0xc8
+#define DW_IC_SMBUS_INTR_MASK			0xcc
+#define DW_IC_CLR_SMBUS_INTR			0xd4
+#define DW_IC_COMP_PARAM_1			0xf4
+#define DW_IC_COMP_VERSION			0xf8
+#define DW_IC_COMP_TYPE				0xfc
+
+/* DW_IC_CON bits */
+#define DW_IC_CON_MASTER			BIT(0)
+#define DW_IC_CON_SPEED_STD			(1 << 1)
+#define DW_IC_CON_SPEED_FAST			(2 << 1)
+#define DW_IC_CON_SPEED_HIGH			(3 << 1)
+#define DW_IC_CON_SPEED_MASK			GENMASK(2, 1)
+#define DW_IC_CON_10BITADDR_SLAVE		BIT(3)
+#define DW_IC_CON_10BITADDR_MASTER		BIT(4)
+#define DW_IC_CON_RESTART_EN			BIT(5)
+#define DW_IC_CON_SLAVE_DISABLE			BIT(6)
+#define DW_IC_CON_STOP_DET_IFADDRESSED		BIT(7)
+#define DW_IC_CON_TX_EMPTY_CTRL			BIT(8)
+#define DW_IC_CON_RX_FIFO_FULL_HLD_CTRL		BIT(9)
+#define DW_IC_CON_BUS_CLEAR_CTRL		BIT(11)
+
+/* DW_IC_DATA_CMD bits */
+#define DW_IC_DATA_CMD_DAT			GENMASK(7, 0)
+#define DW_IC_DATA_CMD_FIRST_DATA_BYTE		BIT(11)
+
+/* DW_IC_INTR_* bits */
+#define DW_IC_INTR_RX_UNDER			BIT(0)
+#define DW_IC_INTR_RX_OVER			BIT(1)
+#define DW_IC_INTR_RX_FULL			BIT(2)
+#define DW_IC_INTR_TX_OVER			BIT(3)
+#define DW_IC_INTR_TX_EMPTY			BIT(4)
+#define DW_IC_INTR_RD_REQ			BIT(5)
+#define DW_IC_INTR_TX_ABRT			BIT(6)
+#define DW_IC_INTR_RX_DONE			BIT(7)
+#define DW_IC_INTR_ACTIVITY			BIT(8)
+#define DW_IC_INTR_STOP_DET			BIT(9)
+#define DW_IC_INTR_START_DET			BIT(10)
+#define DW_IC_INTR_GEN_CALL			BIT(11)
+#define DW_IC_INTR_RESTART_DET			BIT(12)
+#define DW_IC_INTR_MST_ON_HOLD			BIT(13)
+
+/* DW_IC_ENABLE bits */
+#define DW_IC_ENABLE_ENABLE			BIT(0)
+#define DW_IC_ENABLE_ABORT			BIT(1)
+
+/* DW_IC_STATUS bits */
+#define DW_IC_STATUS_ACTIVITY			BIT(0)
+#define DW_IC_STATUS_TFE			BIT(2)
+#define DW_IC_STATUS_RFNE			BIT(3)
+#define DW_IC_STATUS_MASTER_ACTIVITY		BIT(5)
+#define DW_IC_STATUS_SLAVE_ACTIVITY		BIT(6)
+#define DW_IC_STATUS_MASTER_HOLD_TX_FIFO_EMPTY	BIT(7)
+
+/* DW_IC_SMBUS_INTR_* bits */
+#define DW_IC_SMBUS_INTR_ALERT			BIT(10)
+
+#endif /* __LINUX_DESIGNWARE_I2C_H */
-- 
2.54.0


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

* [PATCH 2/2] drm/xe/i2c: Expose AMC Alert reason sysfs
  2026-08-23 10:35 [PATCH 0/2] Expose AMC alert reason sysfs Badal Nilawar
  2026-08-23 10:35 ` [PATCH 1/2] drm/xe/i2c: Not for review, Squash of I2C/AMC series Badal Nilawar
@ 2026-08-23 10:35 ` Badal Nilawar
  2026-08-23 10:29   ` sashiko-bot
  2026-08-24 19:26   ` Rodrigo Vivi
  2026-08-24  7:33 ` ✗ CI.checkpatch: warning for Expose AMC alert " Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 2 replies; 12+ messages in thread
From: Badal Nilawar @ 2026-08-23 10:35 UTC (permalink / raw)
  To: intel-xe
  Cc: anshuman.gupta, rodrigo.vivi, raag.jadav, riana.tauro,
	mallesh.koujalagi, aravind.iddamsetty, heikki.krogerus,
	himal.prasad.ghimiray

AMC raises an SMBUS alert before performing a power removal or
power-cycle operation. The xe driver then places the device into
vendor-specific wedge mode until the recovery is performed.

Expose a read-only xe_amc_alert_reason sysfs attribute to help users
identify the required recovery action.

Assisted-by: Claude:claude-opus-4.8
Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
---
 .../ABI/testing/sysfs-driver-intel-xe-amc     | 21 ++++++
 drivers/gpu/drm/xe/xe_amc.c                   | 65 ++++++++++++++++++-
 2 files changed, 84 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-driver-intel-xe-amc

diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-amc b/Documentation/ABI/testing/sysfs-driver-intel-xe-amc
new file mode 100644
index 000000000000..b3de933efe11
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-amc
@@ -0,0 +1,21 @@
+What:		/sys/bus/pci/drivers/xe/.../xe_amc_alert_reason
+Date:		August 2026
+KernelVersion:	7.3
+Contact:	intel-xe@lists.freedesktop.org
+Description:
+		This file exposes the reason for the most recent Add-In
+		Management Controller (AMC) alert on Intel Xe platforms.
+
+		An AMC alert is delivered via an SMBUS interrupt and causes the
+		device to be wedged, requiring vendor-specific recovery. This
+		attribute is created when such an alert is handled and is
+		available to all users as read-only.
+
+		Read returns a single line containing one of the following
+		alert reasons:
+
+			Firmware Download
+			Thermal Trip
+			OOB Request
+			OOB Reset
+			Catastrophic
diff --git a/drivers/gpu/drm/xe/xe_amc.c b/drivers/gpu/drm/xe/xe_amc.c
index 8ecadee6eea3..ceb2c4d618fe 100644
--- a/drivers/gpu/drm/xe/xe_amc.c
+++ b/drivers/gpu/drm/xe/xe_amc.c
@@ -18,6 +18,7 @@
 #include "xe_device.h"
 #include "xe_i2c.h"
 #include "xe_mmio.h"
+#include "xe_printk.h"
 
 /**
  * DOC: Add-In Management Controller (AMC)
@@ -56,6 +57,8 @@ static const char * const amc_alert[] = {
 struct xe_amc {
 	struct xe_i2c *i2c;
 	struct work_struct work;
+	u8 alert_reason;
+	bool sysfs_created;
 };
 
 struct amc_header {
@@ -104,6 +107,54 @@ static const struct amc_request amc_get_alert_reason = {
 	},
 };
 
+/**
+ * DOC: AMC Alert Reason
+ *
+ * On Intel Xe platforms, AMC sends an alert notification via an SMBUS interrupt
+ * to notify events such as firmware download, thermal trip or a
+ * catastrophic error. See enum xe_amc_alert for the full list of reasons.
+ * Upon an AMC alert the device is wedged and requires vendor-specific recovery.
+ *
+ * The alert reason is exposed through
+ * /sys/bus/pci/drivers/xe/.../xe_amc_alert_reason
+ *
+ * See Documentation/ABI/testing/sysfs-driver-intel-xe-amc for the ABI
+ * specification.
+ */
+
+static ssize_t xe_amc_alert_reason_show(struct device *dev,
+					struct device_attribute *attr, char *buff)
+{
+	struct xe_device *xe = pdev_to_xe_device(to_pci_dev(dev));
+	struct xe_amc *amc = xe->i2c->amc;
+
+	return sysfs_emit(buff, "%s\n", amc_alert[amc->alert_reason]);
+}
+static DEVICE_ATTR_RO(xe_amc_alert_reason);
+
+static void xe_remove_amc_alert_sysfs(struct xe_device *xe)
+{
+	if (xe->i2c->amc->sysfs_created)
+		device_remove_file(xe->drm.dev, &dev_attr_xe_amc_alert_reason);
+}
+
+static void xe_create_amc_alert_sysfs(struct xe_device *xe)
+{
+	struct device *dev = xe->drm.dev;
+	int ret;
+
+	if (xe->i2c->amc->sysfs_created)
+		return;
+
+	ret = device_create_file(dev, &dev_attr_xe_amc_alert_reason);
+	if (ret)
+		goto failed;
+
+	xe->i2c->amc->sysfs_created = true;
+failed:
+	dev_err(dev, "Failed to create sysfs file for amc alert reason\n");
+}
+
 static void xe_amc_work(struct work_struct *work)
 {
 	const struct amc_request *request = &amc_get_alert_reason;
@@ -158,10 +209,16 @@ static void xe_amc_work(struct work_struct *work)
 	case AMC_ALERT_THERMAL_TRIP:
 	case AMC_ALERT_OOB_REQUEST:
 	case AMC_ALERT_OOB_RESET:
-	case AMC_ALERT_CATERR:
+	case AMC_ALERT_CATERR: {
+		struct xe_device *xe = i2c_client_to_xe_device(client);
+
 		dev_warn(amc->i2c->drm_dev, "AMC Alert: %s\n", amc_alert[alert_reason]);
-		xe_device_declare_wedged(i2c_client_to_xe_device(client));
+		amc->alert_reason = alert_reason;
+		xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_VENDOR);
+		xe_device_declare_wedged(xe);
+		xe_create_amc_alert_sysfs(xe);
 		break;
+	}
 	default:
 		dev_warn(amc->i2c->drm_dev, "unknown AMC alert: %d\n", alert_reason);
 		break;
@@ -190,8 +247,12 @@ int xe_amc_init(struct xe_i2c *i2c)
 
 void xe_amc_exit(struct xe_i2c *i2c)
 {
+	struct xe_device *xe;
+
 	if (i2c->amc) {
 		cancel_work_sync(&i2c->amc->work);
+		xe = i2c_client_to_xe_device(i2c->client[XE_I2C_CLIENT_AMC]);
+		xe_remove_amc_alert_sysfs(xe);
 		kfree(i2c->amc);
 	}
 }
-- 
2.54.0


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

* ✗ CI.checkpatch: warning for Expose AMC alert reason sysfs
  2026-08-23 10:35 [PATCH 0/2] Expose AMC alert reason sysfs Badal Nilawar
  2026-08-23 10:35 ` [PATCH 1/2] drm/xe/i2c: Not for review, Squash of I2C/AMC series Badal Nilawar
  2026-08-23 10:35 ` [PATCH 2/2] drm/xe/i2c: Expose AMC Alert reason sysfs Badal Nilawar
@ 2026-08-24  7:33 ` Patchwork
  2026-08-24  7:35 ` ✓ CI.KUnit: success " Patchwork
  2026-08-24  8:13 ` ✓ Xe.CI.BAT: " Patchwork
  4 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-08-24  7:33 UTC (permalink / raw)
  To: Badal Nilawar; +Cc: intel-xe

== Series Details ==

Series: Expose AMC alert reason sysfs
URL   : https://patchwork.freedesktop.org/series/172639/
State : warning

== Summary ==

+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
061140b9bc586ae7f40abc1249c97e1cc72d1b9d
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 4b7f3a01dc389f9a2ec96cbb0477b9af3b109683
Author: Badal Nilawar <badal.nilawar@intel.com>
Date:   Sun Aug 23 16:05:26 2026 +0530

    drm/xe/i2c: Expose AMC Alert reason sysfs
    
    AMC raises an SMBUS alert before performing a power removal or
    power-cycle operation. The xe driver then places the device into
    vendor-specific wedge mode until the recovery is performed.
    
    Expose a read-only xe_amc_alert_reason sysfs attribute to help users
    identify the required recovery action.
    
    Assisted-by: Claude:claude-opus-4.8
    Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
+ /mt/dim checkpatch 5be31107a16ff0c0b64ae39a48854d7cac22fc2b drm-intel
d31c33aabd37 drm/xe/i2c: Not for review, Squash of I2C/AMC series
-:49: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#49: 
new file mode 100644

-:233: WARNING:ALLOC_WITH_SIZEOF: Prefer kzalloc_obj over kzalloc with sizeof
#233: FILE: drivers/gpu/drm/xe/xe_amc.c:180:
+	amc = kzalloc(sizeof(*amc), GFP_KERNEL);

-:424: CHECK:USLEEP_RANGE: usleep_range is preferred over udelay; see function description of usleep_range() and udelay().
#424: FILE: drivers/gpu/drm/xe/xe_i2c.c:232:
+		udelay(25);

total: 0 errors, 2 warnings, 1 checks, 791 lines checked
4b7f3a01dc38 drm/xe/i2c: Expose AMC Alert reason sysfs
-:17: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#17: 
new file mode 100644

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



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

* ✓ CI.KUnit: success for Expose AMC alert reason sysfs
  2026-08-23 10:35 [PATCH 0/2] Expose AMC alert reason sysfs Badal Nilawar
                   ` (2 preceding siblings ...)
  2026-08-24  7:33 ` ✗ CI.checkpatch: warning for Expose AMC alert " Patchwork
@ 2026-08-24  7:35 ` Patchwork
  2026-08-24  8:13 ` ✓ Xe.CI.BAT: " Patchwork
  4 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-08-24  7:35 UTC (permalink / raw)
  To: Badal Nilawar; +Cc: intel-xe

== Series Details ==

Series: Expose AMC alert reason sysfs
URL   : https://patchwork.freedesktop.org/series/172639/
State : success

== Summary ==

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

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

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

+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[07:34:54] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[07:34:56] 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
[07:35:04] Starting KUnit Kernel (1/1)...
[07:35:04] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[07:35:04] =============== dma-buf-fence (12 subtests) ================
[07:35:04] [PASSED] test_sanitycheck
[07:35:04] [PASSED] test_signaling
[07:35:04] [PASSED] test_add_callback
[07:35:04] [PASSED] test_late_add_callback
[07:35:04] [PASSED] test_rm_callback
[07:35:04] [PASSED] test_late_rm_callback
[07:35:04] [PASSED] test_status
[07:35:04] [PASSED] test_error
[07:35:04] [PASSED] test_wait
[07:35:04] [PASSED] test_wait_timeout
[07:35:04] [PASSED] test_stub
[07:35:04] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[07:35:04] ================== [PASSED] dma-buf-fence ==================
[07:35:04] ============ dma-buf-fence-chain (11 subtests) =============
[07:35:04] [PASSED] test_sanitycheck
[07:35:04] [PASSED] test_find_seqno
[07:35:04] [PASSED] test_find_signaled
[07:35:04] [PASSED] test_find_out_of_order
[07:35:10] [PASSED] test_find_gap
[07:35:10] [PASSED] test_find_race
[07:35:10] [PASSED] test_signal_forward
[07:35:10] [PASSED] test_signal_backward
[07:35:10] [PASSED] test_wait_forward
[07:35:10] [PASSED] test_wait_backward
[07:35:10] [PASSED] test_wait_random
[07:35:10] =============== [PASSED] dma-buf-fence-chain ===============
[07:35:10] ============ dma-buf-fence-unwrap (10 subtests) ============
[07:35:10] [PASSED] test_sanitycheck
[07:35:10] [PASSED] test_unwrap_array
[07:35:10] [PASSED] test_unwrap_chain
[07:35:10] [PASSED] test_unwrap_chain_array
[07:35:10] [PASSED] test_unwrap_merge
[07:35:10] [PASSED] test_unwrap_merge_duplicate
[07:35:10] [PASSED] test_unwrap_merge_seqno
[07:35:10] [PASSED] test_unwrap_merge_order
[07:35:10] [PASSED] test_unwrap_merge_complex
[07:35:10] [PASSED] test_unwrap_merge_complex_seqno
[07:35:10] ============== [PASSED] dma-buf-fence-unwrap ===============
[07:35:10] ================ dma-buf-resv (5 subtests) =================
[07:35:10] [PASSED] test_sanitycheck
[07:35:10] ===================== test_signaling  ======================
[07:35:10] [PASSED] kernel
[07:35:10] [PASSED] write
[07:35:10] [PASSED] read
[07:35:10] [PASSED] bookkeep
[07:35:10] ================= [PASSED] test_signaling ==================
[07:35:10] ====================== test_for_each  ======================
[07:35:10] [PASSED] kernel
[07:35:10] [PASSED] write
[07:35:10] [PASSED] read
[07:35:10] [PASSED] bookkeep
[07:35:10] ================== [PASSED] test_for_each ==================
[07:35:10] ================= test_for_each_unlocked  ==================
[07:35:10] [PASSED] kernel
[07:35:10] [PASSED] write
[07:35:10] [PASSED] read
[07:35:10] [PASSED] bookkeep
[07:35:10] ============= [PASSED] test_for_each_unlocked ==============
[07:35:10] ===================== test_get_fences  =====================
[07:35:10] [PASSED] kernel
[07:35:10] [PASSED] write
[07:35:10] [PASSED] read
[07:35:10] [PASSED] bookkeep
[07:35:10] ================= [PASSED] test_get_fences =================
[07:35:10] ================== [PASSED] dma-buf-resv ===================
[07:35:10] ============================================================
[07:35:10] Testing complete. Ran 50 tests: passed: 49, skipped: 1
[07:35:10] Elapsed time: 15.735s total, 1.830s configuring, 8.584s building, 5.284s running

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



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

* ✓ Xe.CI.BAT: success for Expose AMC alert reason sysfs
  2026-08-23 10:35 [PATCH 0/2] Expose AMC alert reason sysfs Badal Nilawar
                   ` (3 preceding siblings ...)
  2026-08-24  7:35 ` ✓ CI.KUnit: success " Patchwork
@ 2026-08-24  8:13 ` Patchwork
  4 siblings, 0 replies; 12+ messages in thread
From: Patchwork @ 2026-08-24  8:13 UTC (permalink / raw)
  To: Badal Nilawar; +Cc: intel-xe

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

== Series Details ==

Series: Expose AMC alert reason sysfs
URL   : https://patchwork.freedesktop.org/series/172639/
State : success

== Summary ==

CI Bug Log - changes from xe-5636-5be31107a16ff0c0b64ae39a48854d7cac22fc2b_BAT -> xe-pw-172639v1_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

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

  Additional (1): bat-nvls-1 

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

  Here are the changes found in xe-pw-172639v1_BAT that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
    - bat-nvls-1:         NOTRUN -> [SKIP][1] ([Intel XE#8757])
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-nvls-1:         NOTRUN -> [SKIP][2] ([Intel XE#8759])
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@kms_dsc@dsc-basic.html

  * igt@xe_evict@evict-small-multi-vm:
    - bat-nvls-1:         NOTRUN -> [SKIP][3] ([Intel XE#8777]) +9 other tests skip
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@xe_evict@evict-small-multi-vm.html

  * igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd:
    - bat-nvls-1:         NOTRUN -> [SKIP][4] ([Intel XE#8744]) +1 other test skip
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@xe_evict_ccs@evict-overcommit-parallel-nofree-samefd.html

  * igt@xe_exec_balancer@twice-virtual-userptr-invalidate:
    - bat-nvls-1:         NOTRUN -> [SKIP][5] ([Intel XE#8741]) +17 other tests skip
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@xe_exec_balancer@twice-virtual-userptr-invalidate.html

  * igt@xe_exec_multi_queue@many-queues-userptr-invalidate:
    - bat-nvls-1:         NOTRUN -> [SKIP][6] ([Intel XE#8377]) +13 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@xe_exec_multi_queue@many-queues-userptr-invalidate.html

  * igt@xe_huc_copy@huc_copy:
    - bat-nvls-1:         NOTRUN -> [SKIP][7] ([Intel XE#8746])
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@xe_huc_copy@huc_copy.html

  * igt@xe_live_ktest@xe_bo:
    - bat-nvls-1:         NOTRUN -> [SKIP][8] ([Intel XE#8792])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@xe_live_ktest@xe_bo.html

  * igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit:
    - bat-nvls-1:         NOTRUN -> [SKIP][9] ([Intel XE#8791] / [Intel XE#8792])
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@xe_live_ktest@xe_bo@xe_bo_evict_kunit.html

  * igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit:
    - bat-nvls-1:         NOTRUN -> [SKIP][10] ([Intel XE#8791])
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@xe_live_ktest@xe_migrate@xe_validate_ccs_kunit.html

  * igt@xe_mmap@vram:
    - bat-nvls-1:         NOTRUN -> [SKIP][11] ([Intel XE#8747])
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@xe_mmap@vram.html

  * igt@xe_pat@pat-index-xehpc:
    - bat-nvls-1:         NOTRUN -> [SKIP][12] ([Intel XE#8748])
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@xe_pat@pat-index-xehpc.html

  * igt@xe_pat@pat-index-xelp:
    - bat-nvls-1:         NOTRUN -> [SKIP][13] ([Intel XE#8743])
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@xe_pat@pat-index-xelp.html

  * igt@xe_pat@pat-index-xelpg:
    - bat-nvls-1:         NOTRUN -> [SKIP][14] ([Intel XE#8745])
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-172639v1/bat-nvls-1/igt@xe_pat@pat-index-xelpg.html

  
  [Intel XE#8377]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8377
  [Intel XE#8741]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8741
  [Intel XE#8743]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8743
  [Intel XE#8744]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8744
  [Intel XE#8745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8745
  [Intel XE#8746]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8746
  [Intel XE#8747]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8747
  [Intel XE#8748]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8748
  [Intel XE#8757]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8757
  [Intel XE#8759]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8759
  [Intel XE#8777]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8777
  [Intel XE#8791]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8791
  [Intel XE#8792]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8792


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

  * Linux: xe-5636-5be31107a16ff0c0b64ae39a48854d7cac22fc2b -> xe-pw-172639v1

  IGT_9070: 80b6e4c9b9cb853c63a9bcaa4784e0306d1f7fca @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  xe-5636-5be31107a16ff0c0b64ae39a48854d7cac22fc2b: 5be31107a16ff0c0b64ae39a48854d7cac22fc2b
  xe-pw-172639v1: 172639v1

== Logs ==

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

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

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

* Re: [PATCH 1/2] drm/xe/i2c: Not for review, Squash of I2C/AMC series
  2026-08-23 10:35 ` [PATCH 1/2] drm/xe/i2c: Not for review, Squash of I2C/AMC series Badal Nilawar
  2026-08-23 10:30   ` sashiko-bot
@ 2026-08-24 12:27   ` Heikki Krogerus
  2026-08-24 17:03     ` Nilawar, Badal
  1 sibling, 1 reply; 12+ messages in thread
From: Heikki Krogerus @ 2026-08-24 12:27 UTC (permalink / raw)
  To: Badal Nilawar
  Cc: intel-xe, anshuman.gupta, rodrigo.vivi, raag.jadav, riana.tauro,
	mallesh.koujalagi, aravind.iddamsetty, himal.prasad.ghimiray

On Sun, Aug 23, 2026 at 04:05:25PM +0530, Badal Nilawar wrote:
> From: Heikki Krogerus <heikki.krogerus@linux.intel.com>

This patch is not from me.

> Squash of https://patchwork.freedesktop.org/series/168930/

Why? What are you trying to achieve with this patch??????

> Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>

Do not use my signature!

It does not matter that the code originates from me - you can express
that in a different way in the commit message. You don't use other
peoples' signature even if the patch was intended for development
purposes only.

Thanks,

-- 
heikki

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

* Re: [PATCH 1/2] drm/xe/i2c: Not for review, Squash of I2C/AMC series
  2026-08-24 12:27   ` Heikki Krogerus
@ 2026-08-24 17:03     ` Nilawar, Badal
  2026-08-24 19:29       ` Rodrigo Vivi
  0 siblings, 1 reply; 12+ messages in thread
From: Nilawar, Badal @ 2026-08-24 17:03 UTC (permalink / raw)
  To: Heikki Krogerus
  Cc: intel-xe, anshuman.gupta, rodrigo.vivi, raag.jadav, riana.tauro,
	mallesh.koujalagi, aravind.iddamsetty, himal.prasad.ghimiray


On 24-08-2026 17:57, Heikki Krogerus wrote:
> On Sun, Aug 23, 2026 at 04:05:25PM +0530, Badal Nilawar wrote:
>> From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> This patch is not from me.
>
>> Squash of https://patchwork.freedesktop.org/series/168930/
> Why? What are you trying to achieve with this patch??????
To unblock the development I squashed your patches and built patch 2 on 
the top of it.
>
>> Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> Do not use my signature!
>
> It does not matter that the code originates from me - you can express
> that in a different way in the commit message. You don't use other
> peoples' signature even if the patch was intended for development
> purposes only.

Sure, understood. I did not think it was appropriate to change the 
authorship, so I kept the original authorship intact and explicitly 
marked the series as "Not for review" in the commit message.

I think I should have dropped your Signed-off-by.

Thanks,
Badal

>
> Thanks,
>

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

* Re: [PATCH 2/2] drm/xe/i2c: Expose AMC Alert reason sysfs
  2026-08-23 10:35 ` [PATCH 2/2] drm/xe/i2c: Expose AMC Alert reason sysfs Badal Nilawar
  2026-08-23 10:29   ` sashiko-bot
@ 2026-08-24 19:26   ` Rodrigo Vivi
  1 sibling, 0 replies; 12+ messages in thread
From: Rodrigo Vivi @ 2026-08-24 19:26 UTC (permalink / raw)
  To: Badal Nilawar
  Cc: intel-xe, anshuman.gupta, raag.jadav, riana.tauro,
	mallesh.koujalagi, aravind.iddamsetty, heikki.krogerus,
	himal.prasad.ghimiray

On Sun, Aug 23, 2026 at 04:05:26PM +0530, Badal Nilawar wrote:
> AMC raises an SMBUS alert before performing a power removal or
> power-cycle operation. The xe driver then places the device into
> vendor-specific wedge mode until the recovery is performed.
> 
> Expose a read-only xe_amc_alert_reason sysfs attribute to help users
> identify the required recovery action.
> 
> Assisted-by: Claude:claude-opus-4.8
> Signed-off-by: Badal Nilawar <badal.nilawar@intel.com>
> ---
>  .../ABI/testing/sysfs-driver-intel-xe-amc     | 21 ++++++
>  drivers/gpu/drm/xe/xe_amc.c                   | 65 ++++++++++++++++++-
>  2 files changed, 84 insertions(+), 2 deletions(-)
>  create mode 100644 Documentation/ABI/testing/sysfs-driver-intel-xe-amc
> 
> diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-amc b/Documentation/ABI/testing/sysfs-driver-intel-xe-amc
> new file mode 100644
> index 000000000000..b3de933efe11
> --- /dev/null
> +++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-amc
> @@ -0,0 +1,21 @@
> +What:		/sys/bus/pci/drivers/xe/.../xe_amc_alert_reason

Should we do <bdf> instead of ... ?!

> +Date:		August 2026
> +KernelVersion:	7.3

this will be 7.4

> +Contact:	intel-xe@lists.freedesktop.org
> +Description:
> +		This file exposes the reason for the most recent Add-In
> +		Management Controller (AMC) alert on Intel Xe platforms.
> +
> +		An AMC alert is delivered via an SMBUS interrupt and causes the
> +		device to be wedged, requiring vendor-specific recovery. This
> +		attribute is created when such an alert is handled and is
> +		available to all users as read-only.
> +
> +		Read returns a single line containing one of the following
> +		alert reasons:
> +
> +			Firmware Download
> +			Thermal Trip
> +			OOB Request
> +			OOB Reset
> +			Catastrophic
> diff --git a/drivers/gpu/drm/xe/xe_amc.c b/drivers/gpu/drm/xe/xe_amc.c
> index 8ecadee6eea3..ceb2c4d618fe 100644
> --- a/drivers/gpu/drm/xe/xe_amc.c
> +++ b/drivers/gpu/drm/xe/xe_amc.c
> @@ -18,6 +18,7 @@
>  #include "xe_device.h"
>  #include "xe_i2c.h"
>  #include "xe_mmio.h"
> +#include "xe_printk.h"
>  
>  /**
>   * DOC: Add-In Management Controller (AMC)
> @@ -56,6 +57,8 @@ static const char * const amc_alert[] = {
>  struct xe_amc {
>  	struct xe_i2c *i2c;
>  	struct work_struct work;
> +	u8 alert_reason;
> +	bool sysfs_created;
>  };
>  
>  struct amc_header {
> @@ -104,6 +107,54 @@ static const struct amc_request amc_get_alert_reason = {
>  	},
>  };
>  
> +/**
> + * DOC: AMC Alert Reason
> + *
> + * On Intel Xe platforms, AMC sends an alert notification via an SMBUS interrupt
> + * to notify events such as firmware download, thermal trip or a
> + * catastrophic error. See enum xe_amc_alert for the full list of reasons.
> + * Upon an AMC alert the device is wedged and requires vendor-specific recovery.
> + *
> + * The alert reason is exposed through
> + * /sys/bus/pci/drivers/xe/.../xe_amc_alert_reason

ditto

> + *
> + * See Documentation/ABI/testing/sysfs-driver-intel-xe-amc for the ABI
> + * specification.
> + */
> +
> +static ssize_t xe_amc_alert_reason_show(struct device *dev,
> +					struct device_attribute *attr, char *buff)
> +{
> +	struct xe_device *xe = pdev_to_xe_device(to_pci_dev(dev));
> +	struct xe_amc *amc = xe->i2c->amc;
> +
> +	return sysfs_emit(buff, "%s\n", amc_alert[amc->alert_reason]);
> +}
> +static DEVICE_ATTR_RO(xe_amc_alert_reason);
> +
> +static void xe_remove_amc_alert_sysfs(struct xe_device *xe)
> +{
> +	if (xe->i2c->amc->sysfs_created)
> +		device_remove_file(xe->drm.dev, &dev_attr_xe_amc_alert_reason);
> +}
> +
> +static void xe_create_amc_alert_sysfs(struct xe_device *xe)
> +{
> +	struct device *dev = xe->drm.dev;
> +	int ret;
> +
> +	if (xe->i2c->amc->sysfs_created)
> +		return;

Why do you need to track this?!
if this can be called from multiple places shoulnd't you protect with lock?

But I prefer that you ensure this is absolutely called only once and
remove this check.

> +
> +	ret = device_create_file(dev, &dev_attr_xe_amc_alert_reason);
> +	if (ret)
> +		goto failed;
> +
> +	xe->i2c->amc->sysfs_created = true;
> +failed:
> +	dev_err(dev, "Failed to create sysfs file for amc alert reason\n");
> +}
> +
>  static void xe_amc_work(struct work_struct *work)
>  {
>  	const struct amc_request *request = &amc_get_alert_reason;
> @@ -158,10 +209,16 @@ static void xe_amc_work(struct work_struct *work)
>  	case AMC_ALERT_THERMAL_TRIP:
>  	case AMC_ALERT_OOB_REQUEST:
>  	case AMC_ALERT_OOB_RESET:
> -	case AMC_ALERT_CATERR:
> +	case AMC_ALERT_CATERR: {
> +		struct xe_device *xe = i2c_client_to_xe_device(client);
> +
>  		dev_warn(amc->i2c->drm_dev, "AMC Alert: %s\n", amc_alert[alert_reason]);
> -		xe_device_declare_wedged(i2c_client_to_xe_device(client));
> +		amc->alert_reason = alert_reason;
> +		xe_device_set_wedged_method(xe, DRM_WEDGE_RECOVERY_VENDOR);
> +		xe_device_declare_wedged(xe);
> +		xe_create_amc_alert_sysfs(xe);
>  		break;
> +	}
>  	default:
>  		dev_warn(amc->i2c->drm_dev, "unknown AMC alert: %d\n", alert_reason);
>  		break;
> @@ -190,8 +247,12 @@ int xe_amc_init(struct xe_i2c *i2c)
>  
>  void xe_amc_exit(struct xe_i2c *i2c)
>  {
> +	struct xe_device *xe;
> +
>  	if (i2c->amc) {
>  		cancel_work_sync(&i2c->amc->work);
> +		xe = i2c_client_to_xe_device(i2c->client[XE_I2C_CLIENT_AMC]);
> +		xe_remove_amc_alert_sysfs(xe);
>  		kfree(i2c->amc);
>  	}
>  }
> -- 
> 2.54.0
> 

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

* Re: [PATCH 1/2] drm/xe/i2c: Not for review, Squash of I2C/AMC series
  2026-08-24 17:03     ` Nilawar, Badal
@ 2026-08-24 19:29       ` Rodrigo Vivi
  0 siblings, 0 replies; 12+ messages in thread
From: Rodrigo Vivi @ 2026-08-24 19:29 UTC (permalink / raw)
  To: Nilawar, Badal
  Cc: Heikki Krogerus, intel-xe, anshuman.gupta, raag.jadav,
	riana.tauro, mallesh.koujalagi, aravind.iddamsetty,
	himal.prasad.ghimiray

On Mon, Aug 24, 2026 at 10:33:23PM +0530, Nilawar, Badal wrote:
> 
> On 24-08-2026 17:57, Heikki Krogerus wrote:
> > On Sun, Aug 23, 2026 at 04:05:25PM +0530, Badal Nilawar wrote:
> > > From: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> > This patch is not from me.
> > 
> > > Squash of https://patchwork.freedesktop.org/series/168930/
> > Why? What are you trying to achieve with this patch??????
> To unblock the development I squashed your patches and built patch 2 on the
> top of it.
> > 
> > > Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
> > Do not use my signature!
> > 
> > It does not matter that the code originates from me - you can express
> > that in a different way in the commit message. You don't use other
> > peoples' signature even if the patch was intended for development
> > purposes only.
> 
> Sure, understood. I did not think it was appropriate to change the
> authorship, so I kept the original authorship intact and explicitly marked
> the series as "Not for review" in the commit message.
> 
> I think I should have dropped your Signed-off-by.

Please always remember that sign-off != authorship! A pretty common misunderstood.

And whenever doing this kind of squash for CI make sure that the commit message
needs to be pretty clear of the intent and with lore URLs for the original work
where the review of that needs to continue.

Thanks,
Rodrigo.

> 
> Thanks,
> Badal
> 
> > 
> > Thanks,
> > 

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

end of thread, other threads:[~2026-08-24 19:29 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-23 10:35 [PATCH 0/2] Expose AMC alert reason sysfs Badal Nilawar
2026-08-23 10:35 ` [PATCH 1/2] drm/xe/i2c: Not for review, Squash of I2C/AMC series Badal Nilawar
2026-08-23 10:30   ` sashiko-bot
2026-08-24 12:27   ` Heikki Krogerus
2026-08-24 17:03     ` Nilawar, Badal
2026-08-24 19:29       ` Rodrigo Vivi
2026-08-23 10:35 ` [PATCH 2/2] drm/xe/i2c: Expose AMC Alert reason sysfs Badal Nilawar
2026-08-23 10:29   ` sashiko-bot
2026-08-24 19:26   ` Rodrigo Vivi
2026-08-24  7:33 ` ✗ CI.checkpatch: warning for Expose AMC alert " Patchwork
2026-08-24  7:35 ` ✓ CI.KUnit: success " Patchwork
2026-08-24  8:13 ` ✓ Xe.CI.BAT: " Patchwork

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