* [PATCH v9 00/20] Crescent Island PMT support
@ 2026-09-16 20:11 Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 01/20] platform/x86/intel/pmt: complete pcidev to device update Michael J. Ruhl
` (23 more replies)
0 siblings, 24 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
The Crescent Island (CRI) GPU supports PMT via Xe driver
registration.
The CRI PMT MMIO mapping is shared for each PMT feature and it is
necessary to set an index register value to access the correct memory
space.
The PMT driver has a callback infrastructure to access data areas with
driver specific access. It is does not support the PMT control access.
CRI discovery/control spaces are part of the access window so a driver
callback is necessary to allow for the correct window to be exposed.
Add control path callback support to the PMT driver.
Add CRI PMT discovery information.
Update the Xe driver to support the CRI PMT access.
The crashlog access needs to be done with power enabled (telem is only
available when the device is powered).
Determine which access is requested, and do the appropriate power
request.
CRI FW is loaded at device power. Support the late-binding API to
wait for FW readiness. (pending sysctl patch set implements the API).
v2:
Address AI feedback:
- add missing entry->cb check
- address SRIOV VF concerns
- use xe_pm_runtime_put instead of _get in error path
Address review comments:
- redo power/lock sequencing
- support device hotplug events
v3:
- cleanup power manangement flow
- fixed an out of order power management locking issue
- add a GUID caching mechanism, for GUID read
- removed unused parameter (mmio)
v4:
- address various review comments
- refactor crashlog to allow for return values
- for callback usage, decouple PMT remap of data areas
- use IS_SRIOV_VF() rather than expose soc-remapper internals
- separate locking fixes intos distinct steps
- refactor define update patches to seperate BMG and CRI updates
- separate internal GUID into separate steps
v5:
- removed callback helpers
- do not return error message with sysfs
- fix missed return code check in trigger_store
- return error value not false
- use DEFINE_RES_MEM
- document when base is unused
- return error on invalid GUID request
v6:
- fix enabled/disabled inversion
- fix missing DOC reference
- change memcpy_to/fromio to readl/writel for register read
- guid cache comment and update on valid guid
v7:
- reordered to have BMG updates followed by CRI support
- separate base_offset usage for clarity
- added EAGAIN usage to block uninitialized use of the API
v8:
- fix punit crashlog offset (should be 0xE60 not 0xE78)
- remove EAGAIN support and re-order probe steps to initialize
VSEC before other features use it
v9:
- added appropriate reviewed-bys
- use dev_err instead of pr_err
- enforce defined base usage when callbacks are in plcace
- move SRIOV check to get_platform_info
- assert SRIOV for API check
- use scoped_guard() where possible
- update to use correct sysctrl helper
Michael J. Ruhl (18):
platform/x86/intel/pmt: complete pcidev to device update
platform/x86/intel/pmt: refactor rmw with a return value
platform/x86/intel/pmt: refactor rc with a return value
platform/x86/intel/pmt: Add register access callbacks
platform/x86/intel/pmt: Do not remap when using callbacks
drm/xe/vsec: Do not register BMG PMT for VF
drm/xe/vsec: Correct locking order
drm/xe/vsec: Use correct pm state get
drm/xe/vsec: Add DOC text for VSEC
drm/xe/vsec: Support possible hotplug exit
drm/xe/vsec: Refactor BattleMage PMT defines
drm/xe/vsec: Update VSEC probe order
drm/xe/vsec: Add base_offset to allow for more flexibilty
drm/xe/vsec: Support Crescent Island PMT
drm/xe/vsec: Crescent Island PMT decode
drm/xe/vsec: Crescent Island PMT callbacks
drm/xe/vsec: Support late bind fw information
drm/xe/vsec: Add PMT GUID internal access
drm/xe/vsec: Update PMT internal access
drm/xe/vsec: Refactor platform check
Documentation/gpu/xe/index.rst | 1 +
Documentation/gpu/xe/xe_vsec.rst | 14 +
drivers/gpu/drm/xe/regs/xe_pmt.h | 12 +-
drivers/gpu/drm/xe/xe_debugfs.c | 45 +-
drivers/gpu/drm/xe/xe_device.c | 6 +-
drivers/gpu/drm/xe/xe_device_types.h | 9 +
drivers/gpu/drm/xe/xe_hwmon.c | 10 +-
drivers/gpu/drm/xe/xe_pcode.c | 10 +-
drivers/gpu/drm/xe/xe_vsec.c | 552 +++++++++++++++++++--
drivers/gpu/drm/xe/xe_vsec.h | 3 +-
drivers/platform/x86/intel/pmt/class.c | 26 +-
drivers/platform/x86/intel/pmt/class.h | 5 +-
drivers/platform/x86/intel/pmt/crashlog.c | 237 ++++++---
drivers/platform/x86/intel/pmt/discovery.c | 2 +-
drivers/platform/x86/intel/pmt/telemetry.c | 3 +
include/linux/intel_vsec.h | 14 +-
16 files changed, 782 insertions(+), 167 deletions(-)
create mode 100644 Documentation/gpu/xe/xe_vsec.rst
--
2.43.0
^ permalink raw reply [flat|nested] 34+ messages in thread
* [PATCH v9 01/20] platform/x86/intel/pmt: complete pcidev to device update
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 02/20] platform/x86/intel/pmt: refactor rmw with a return value Michael J. Ruhl
` (22 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
The update that moved struct pci_dev usage to struct device is
incomplete. Only telemetry endpoints are covered.
Other PMT features (crashlog) are now blocked from using the callback
mechanism.
Change struct intel_pmt_entry pci_dev member to device.
Update callback usage to use the intel_pmt_entry rather than the
telemetry endpoint.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Fixes: 353042d54d82 ("platform/x86/intel/vsec: Switch exported helpers from pci_dev to device")
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/platform/x86/intel/pmt/class.c | 5 ++---
drivers/platform/x86/intel/pmt/class.h | 3 +--
drivers/platform/x86/intel/pmt/discovery.c | 2 +-
3 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/drivers/platform/x86/intel/pmt/class.c b/drivers/platform/x86/intel/pmt/class.c
index d0ab8e33c62a..402d51df834a 100644
--- a/drivers/platform/x86/intel/pmt/class.c
+++ b/drivers/platform/x86/intel/pmt/class.c
@@ -100,7 +100,7 @@ intel_pmt_read(struct file *filp, struct kobject *kobj,
if (count > entry->size - off)
count = entry->size - off;
- count = pmt_telem_read_mmio(entry->ep->dev, entry->cb, entry->header.guid, buf,
+ count = pmt_telem_read_mmio(entry->dev, entry->cb, entry->header.guid, buf,
entry->base, off, count);
return count;
@@ -286,8 +286,6 @@ static int pmt_resolve_access_pci(struct intel_pmt_entry *entry,
return -EINVAL;
}
- entry->pcidev = pci_dev;
-
return 0;
}
@@ -365,6 +363,7 @@ static int intel_pmt_populate_entry(struct intel_pmt_entry *entry,
entry->guid = header->guid;
entry->size = header->size;
entry->cb = ivdev->priv_data;
+ entry->dev = ivdev->dev;
return 0;
}
diff --git a/drivers/platform/x86/intel/pmt/class.h b/drivers/platform/x86/intel/pmt/class.h
index a0ece4fc3837..258cb460e61c 100644
--- a/drivers/platform/x86/intel/pmt/class.h
+++ b/drivers/platform/x86/intel/pmt/class.h
@@ -20,7 +20,6 @@
#define GET_ADDRESS(v) ((v) & GENMASK(31, 3))
struct device;
-struct pci_dev;
extern struct class intel_pmt_class;
struct telem_endpoint {
@@ -42,7 +41,7 @@ struct intel_pmt_header {
struct intel_pmt_entry {
struct telem_endpoint *ep;
- struct pci_dev *pcidev;
+ struct device *dev;
struct intel_pmt_header header;
u32 disc_header[PMT_DISC_DWORDS];
struct bin_attribute pmt_bin_attr;
diff --git a/drivers/platform/x86/intel/pmt/discovery.c b/drivers/platform/x86/intel/pmt/discovery.c
index c482368bfaae..f4203d240f54 100644
--- a/drivers/platform/x86/intel/pmt/discovery.c
+++ b/drivers/platform/x86/intel/pmt/discovery.c
@@ -609,7 +609,7 @@ void intel_pmt_get_features(struct intel_pmt_entry *entry)
mutex_lock(&feature_list_lock);
list_for_each_entry(feature, &pmt_feature_list, list) {
- if (feature->priv->parent != entry->ep->dev)
+ if (feature->priv->parent != entry->dev)
continue;
pmt_get_features(entry, feature);
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 02/20] platform/x86/intel/pmt: refactor rmw with a return value
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 01/20] platform/x86/intel/pmt: complete pcidev to device update Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 03/20] platform/x86/intel/pmt: refactor rc " Michael J. Ruhl
` (21 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
Upcoming changes will include possible failures from HW accesses.
Refactor pmt_crashlog_rwm() with a return value.
Update all necessary usage to use the return code.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/platform/x86/intel/pmt/crashlog.c | 90 ++++++++++++-----------
1 file changed, 46 insertions(+), 44 deletions(-)
diff --git a/drivers/platform/x86/intel/pmt/crashlog.c b/drivers/platform/x86/intel/pmt/crashlog.c
index f936daf99e4d..831cff743803 100644
--- a/drivers/platform/x86/intel/pmt/crashlog.c
+++ b/drivers/platform/x86/intel/pmt/crashlog.c
@@ -125,7 +125,7 @@ struct pmt_crashlog_priv {
*/
/* Read, modify, write the control register, setting or clearing @bit based on @set */
-static void pmt_crashlog_rmw(struct crashlog_entry *crashlog, u32 bit, bool set)
+static int pmt_crashlog_rmw(struct crashlog_entry *crashlog, u32 bit, bool set)
{
const struct crashlog_control *control = &crashlog->info->control;
struct intel_pmt_entry *entry = &crashlog->entry;
@@ -139,6 +139,8 @@ static void pmt_crashlog_rmw(struct crashlog_entry *crashlog, u32 bit, bool set)
reg &= ~bit;
writel(reg, entry->disc_table + control->offset);
+
+ return 0;
}
/* Read the status register and see if the specified @bit is set */
@@ -181,20 +183,20 @@ static bool pmt_crashlog_supported(struct intel_pmt_entry *entry, u32 *crash_typ
return false;
}
-static void pmt_crashlog_set_disable(struct crashlog_entry *crashlog,
- bool disable)
+static int pmt_crashlog_set_disable(struct crashlog_entry *crashlog,
+ bool disable)
{
- pmt_crashlog_rmw(crashlog, crashlog->info->control.disable, disable);
+ return pmt_crashlog_rmw(crashlog, crashlog->info->control.disable, disable);
}
-static void pmt_crashlog_set_clear(struct crashlog_entry *crashlog)
+static int pmt_crashlog_set_clear(struct crashlog_entry *crashlog)
{
- pmt_crashlog_rmw(crashlog, crashlog->info->control.clear, true);
+ return pmt_crashlog_rmw(crashlog, crashlog->info->control.clear, true);
}
-static void pmt_crashlog_set_execute(struct crashlog_entry *crashlog)
+static int pmt_crashlog_set_execute(struct crashlog_entry *crashlog)
{
- pmt_crashlog_rmw(crashlog, crashlog->info->control.manual, true);
+ return pmt_crashlog_rmw(crashlog, crashlog->info->control.manual, true);
}
static bool pmt_crashlog_cleared(struct crashlog_entry *crashlog)
@@ -207,9 +209,9 @@ static bool pmt_crashlog_consumed(struct crashlog_entry *crashlog)
return pmt_crashlog_rc(crashlog, crashlog->info->status.consumed);
}
-static void pmt_crashlog_set_consumed(struct crashlog_entry *crashlog)
+static int pmt_crashlog_set_consumed(struct crashlog_entry *crashlog)
{
- pmt_crashlog_rmw(crashlog, crashlog->info->control.consume, true);
+ return pmt_crashlog_rmw(crashlog, crashlog->info->control.consume, true);
}
static bool pmt_crashlog_error(struct crashlog_entry *crashlog)
@@ -222,9 +224,9 @@ static bool pmt_crashlog_rearm(struct crashlog_entry *crashlog)
return pmt_crashlog_rc(crashlog, crashlog->info->status.rearmed);
}
-static void pmt_crashlog_set_rearm(struct crashlog_entry *crashlog)
+static int pmt_crashlog_set_rearm(struct crashlog_entry *crashlog)
{
- pmt_crashlog_rmw(crashlog, crashlog->info->control.rearm, true);
+ return pmt_crashlog_rmw(crashlog, crashlog->info->control.rearm, true);
}
/*
@@ -245,13 +247,13 @@ clear_store(struct device *dev, struct device_attribute *attr,
{
struct crashlog_entry *crashlog;
bool clear;
- int result;
+ int ret;
crashlog = dev_get_drvdata(dev);
- result = kstrtobool(buf, &clear);
- if (result)
- return result;
+ ret = kstrtobool(buf, &clear);
+ if (ret)
+ return ret;
/* set bit only */
if (!clear)
@@ -259,9 +261,9 @@ clear_store(struct device *dev, struct device_attribute *attr,
guard(mutex)(&crashlog->control_mutex);
- pmt_crashlog_set_clear(crashlog);
+ ret = pmt_crashlog_set_clear(crashlog);
- return count;
+ return ret ?: count;
}
static DEVICE_ATTR_RW(clear);
@@ -280,13 +282,13 @@ consumed_store(struct device *dev, struct device_attribute *attr, const char *bu
{
struct crashlog_entry *crashlog;
bool consumed;
- int result;
+ int ret;
crashlog = dev_get_drvdata(dev);
- result = kstrtobool(buf, &consumed);
- if (result)
- return result;
+ ret = kstrtobool(buf, &consumed);
+ if (ret)
+ return ret;
/* set bit only */
if (!consumed)
@@ -300,9 +302,9 @@ consumed_store(struct device *dev, struct device_attribute *attr, const char *bu
if (!pmt_crashlog_complete(crashlog))
return -EEXIST;
- pmt_crashlog_set_consumed(crashlog);
+ ret = pmt_crashlog_set_consumed(crashlog);
- return count;
+ return ret ?: count;
}
static DEVICE_ATTR_RW(consumed);
@@ -321,19 +323,19 @@ enable_store(struct device *dev, struct device_attribute *attr,
{
struct crashlog_entry *crashlog;
bool enabled;
- int result;
+ int ret;
crashlog = dev_get_drvdata(dev);
- result = kstrtobool(buf, &enabled);
- if (result)
- return result;
+ ret = kstrtobool(buf, &enabled);
+ if (ret)
+ return ret;
guard(mutex)(&crashlog->control_mutex);
- pmt_crashlog_set_disable(crashlog, !enabled);
+ ret = pmt_crashlog_set_disable(crashlog, !enabled);
- return count;
+ return ret ?: count;
}
static DEVICE_ATTR_RW(enable);
@@ -362,13 +364,13 @@ rearm_store(struct device *dev, struct device_attribute *attr, const char *buf,
{
struct crashlog_entry *crashlog;
bool rearm;
- int result;
+ int ret;
crashlog = dev_get_drvdata(dev);
- result = kstrtobool(buf, &rearm);
- if (result)
- return result;
+ ret = kstrtobool(buf, &rearm);
+ if (ret)
+ return ret;
/* set only */
if (!rearm)
@@ -376,9 +378,9 @@ rearm_store(struct device *dev, struct device_attribute *attr, const char *buf,
guard(mutex)(&crashlog->control_mutex);
- pmt_crashlog_set_rearm(crashlog);
+ ret = pmt_crashlog_set_rearm(crashlog);
- return count;
+ return ret ?: count;
}
static DEVICE_ATTR_RW(rearm);
@@ -400,13 +402,13 @@ trigger_store(struct device *dev, struct device_attribute *attr,
{
struct crashlog_entry *crashlog;
bool trigger;
- int result;
+ int ret;
crashlog = dev_get_drvdata(dev);
- result = kstrtobool(buf, &trigger);
- if (result)
- return result;
+ ret = kstrtobool(buf, &trigger);
+ if (ret)
+ return ret;
guard(mutex)(&crashlog->control_mutex);
@@ -415,17 +417,17 @@ trigger_store(struct device *dev, struct device_attribute *attr,
return -EBUSY;
if (!trigger) {
- pmt_crashlog_set_clear(crashlog);
- return count;
+ ret = pmt_crashlog_set_clear(crashlog);
+ return ret ?: count;
}
/* we cannot trigger a new crash if one is still pending */
if (pmt_crashlog_complete(crashlog))
return -EEXIST;
- pmt_crashlog_set_execute(crashlog);
+ ret = pmt_crashlog_set_execute(crashlog);
- return count;
+ return ret ?: count;
}
static DEVICE_ATTR_RW(trigger);
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 03/20] platform/x86/intel/pmt: refactor rc with a return value
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 01/20] platform/x86/intel/pmt: complete pcidev to device update Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 02/20] platform/x86/intel/pmt: refactor rmw with a return value Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:20 ` sashiko-bot
2026-09-17 9:55 ` Ilpo Järvinen
2026-09-16 20:11 ` [PATCH v9 04/20] platform/x86/intel/pmt: Add register access callbacks Michael J. Ruhl
` (20 subsequent siblings)
23 siblings, 2 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
Upcoming changes will include possible failures from HW accesses.
Refactor pmt_crashlog_rw() with a return value.
Update all necessary usage to use the return code.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/platform/x86/intel/pmt/crashlog.c | 101 ++++++++++++++++------
1 file changed, 74 insertions(+), 27 deletions(-)
diff --git a/drivers/platform/x86/intel/pmt/crashlog.c b/drivers/platform/x86/intel/pmt/crashlog.c
index 831cff743803..b6540f3a9a17 100644
--- a/drivers/platform/x86/intel/pmt/crashlog.c
+++ b/drivers/platform/x86/intel/pmt/crashlog.c
@@ -144,27 +144,29 @@ static int pmt_crashlog_rmw(struct crashlog_entry *crashlog, u32 bit, bool set)
}
/* Read the status register and see if the specified @bit is set */
-static bool pmt_crashlog_rc(struct crashlog_entry *crashlog, u32 bit)
+static int pmt_crashlog_rc(struct crashlog_entry *crashlog, u32 bit, bool *state)
{
const struct crashlog_status *status = &crashlog->info->status;
u32 reg = readl(crashlog->entry.disc_table + status->offset);
- return !!(reg & bit);
+ *state = !!(reg & bit);
+
+ return 0;
}
-static bool pmt_crashlog_complete(struct crashlog_entry *crashlog)
+static int pmt_crashlog_complete(struct crashlog_entry *crashlog, bool *state)
{
/* return current value of the crashlog complete flag */
- return pmt_crashlog_rc(crashlog, crashlog->info->status.complete);
+ return pmt_crashlog_rc(crashlog, crashlog->info->status.complete, state);
}
-static bool pmt_crashlog_disabled(struct crashlog_entry *crashlog)
+static int pmt_crashlog_disabled(struct crashlog_entry *crashlog, bool *state)
{
/* return current value of the crashlog disabled flag */
- return pmt_crashlog_rc(crashlog, crashlog->info->status.disabled);
+ return pmt_crashlog_rc(crashlog, crashlog->info->status.disabled, state);
}
-static bool pmt_crashlog_supported(struct intel_pmt_entry *entry, u32 *crash_type, u32 *version)
+static int pmt_crashlog_supported(struct intel_pmt_entry *entry, u32 *crash_type, u32 *version)
{
u32 discovery_header = readl(entry->disc_table + CONTROL_OFFSET);
@@ -199,14 +201,14 @@ static int pmt_crashlog_set_execute(struct crashlog_entry *crashlog)
return pmt_crashlog_rmw(crashlog, crashlog->info->control.manual, true);
}
-static bool pmt_crashlog_cleared(struct crashlog_entry *crashlog)
+static int pmt_crashlog_cleared(struct crashlog_entry *crashlog, bool *state)
{
- return pmt_crashlog_rc(crashlog, crashlog->info->status.cleared);
+ return pmt_crashlog_rc(crashlog, crashlog->info->status.cleared, state);
}
-static bool pmt_crashlog_consumed(struct crashlog_entry *crashlog)
+static int pmt_crashlog_consumed(struct crashlog_entry *crashlog, bool *state)
{
- return pmt_crashlog_rc(crashlog, crashlog->info->status.consumed);
+ return pmt_crashlog_rc(crashlog, crashlog->info->status.consumed, state);
}
static int pmt_crashlog_set_consumed(struct crashlog_entry *crashlog)
@@ -214,14 +216,14 @@ static int pmt_crashlog_set_consumed(struct crashlog_entry *crashlog)
return pmt_crashlog_rmw(crashlog, crashlog->info->control.consume, true);
}
-static bool pmt_crashlog_error(struct crashlog_entry *crashlog)
+static int pmt_crashlog_error(struct crashlog_entry *crashlog, bool *state)
{
- return pmt_crashlog_rc(crashlog, crashlog->info->status.error);
+ return pmt_crashlog_rc(crashlog, crashlog->info->status.error, state);
}
-static bool pmt_crashlog_rearm(struct crashlog_entry *crashlog)
+static int pmt_crashlog_rearm(struct crashlog_entry *crashlog, bool *state)
{
- return pmt_crashlog_rc(crashlog, crashlog->info->status.rearmed);
+ return pmt_crashlog_rc(crashlog, crashlog->info->status.rearmed, state);
}
static int pmt_crashlog_set_rearm(struct crashlog_entry *crashlog)
@@ -236,7 +238,12 @@ static ssize_t
clear_show(struct device *dev, struct device_attribute *attr, char *buf)
{
struct crashlog_entry *crashlog = dev_get_drvdata(dev);
- bool cleared = pmt_crashlog_cleared(crashlog);
+ bool cleared;
+ int ret;
+
+ ret = pmt_crashlog_cleared(crashlog, &cleared);
+ if (ret)
+ return ret;
return sysfs_emit(buf, "%d\n", cleared);
}
@@ -271,7 +278,12 @@ static ssize_t
consumed_show(struct device *dev, struct device_attribute *attr, char *buf)
{
struct crashlog_entry *crashlog = dev_get_drvdata(dev);
- bool consumed = pmt_crashlog_consumed(crashlog);
+ bool consumed;
+ int ret;
+
+ ret = pmt_crashlog_consumed(crashlog, &consumed);
+ if (ret)
+ return ret;
return sysfs_emit(buf, "%d\n", consumed);
}
@@ -281,7 +293,9 @@ consumed_store(struct device *dev, struct device_attribute *attr, const char *bu
size_t count)
{
struct crashlog_entry *crashlog;
+ bool complete;
bool consumed;
+ bool disabled;
int ret;
crashlog = dev_get_drvdata(dev);
@@ -296,10 +310,16 @@ consumed_store(struct device *dev, struct device_attribute *attr, const char *bu
guard(mutex)(&crashlog->control_mutex);
- if (pmt_crashlog_disabled(crashlog))
+ ret = pmt_crashlog_disabled(crashlog, &disabled);
+ if (ret)
+ return ret;
+ if (disabled)
return -EBUSY;
- if (!pmt_crashlog_complete(crashlog))
+ ret = pmt_crashlog_complete(crashlog, &complete);
+ if (ret)
+ return ret;
+ if (!complete)
return -EEXIST;
ret = pmt_crashlog_set_consumed(crashlog);
@@ -312,9 +332,14 @@ static ssize_t
enable_show(struct device *dev, struct device_attribute *attr, char *buf)
{
struct crashlog_entry *crashlog = dev_get_drvdata(dev);
- bool enabled = !pmt_crashlog_disabled(crashlog);
+ bool disabled;
+ int ret;
- return sprintf(buf, "%d\n", enabled);
+ ret = pmt_crashlog_disabled(crashlog, &disabled);
+ if (ret)
+ return ret;
+
+ return sysfs_emit(buf, "%d\n", !disabled);
}
static ssize_t
@@ -343,7 +368,12 @@ static ssize_t
error_show(struct device *dev, struct device_attribute *attr, char *buf)
{
struct crashlog_entry *crashlog = dev_get_drvdata(dev);
- bool error = pmt_crashlog_error(crashlog);
+ bool error;
+ int ret;
+
+ ret = pmt_crashlog_error(crashlog, &error);
+ if (ret)
+ return ret;
return sysfs_emit(buf, "%d\n", error);
}
@@ -353,7 +383,12 @@ static ssize_t
rearm_show(struct device *dev, struct device_attribute *attr, char *buf)
{
struct crashlog_entry *crashlog = dev_get_drvdata(dev);
- int rearmed = pmt_crashlog_rearm(crashlog);
+ bool rearmed;
+ int ret;
+
+ ret = pmt_crashlog_rearm(crashlog, &rearmed);
+ if (ret)
+ return ret;
return sysfs_emit(buf, "%d\n", rearmed);
}
@@ -389,11 +424,15 @@ trigger_show(struct device *dev, struct device_attribute *attr, char *buf)
{
struct crashlog_entry *crashlog;
bool trigger;
+ int ret;
crashlog = dev_get_drvdata(dev);
- trigger = pmt_crashlog_complete(crashlog);
- return sprintf(buf, "%d\n", trigger);
+ ret = pmt_crashlog_complete(crashlog, &trigger);
+ if (ret)
+ return ret;
+
+ return sysfs_emit(buf, "%d\n", trigger);
}
static ssize_t
@@ -401,6 +440,8 @@ trigger_store(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count)
{
struct crashlog_entry *crashlog;
+ bool complete;
+ bool disabled;
bool trigger;
int ret;
@@ -413,7 +454,10 @@ trigger_store(struct device *dev, struct device_attribute *attr,
guard(mutex)(&crashlog->control_mutex);
/* if device is currently disabled, return busy */
- if (pmt_crashlog_disabled(crashlog))
+ ret = pmt_crashlog_disabled(crashlog, &disabled);
+ if (ret)
+ return ret;
+ if (disabled)
return -EBUSY;
if (!trigger) {
@@ -422,7 +466,10 @@ trigger_store(struct device *dev, struct device_attribute *attr,
}
/* we cannot trigger a new crash if one is still pending */
- if (pmt_crashlog_complete(crashlog))
+ ret = pmt_crashlog_complete(crashlog, &complete);
+ if (ret)
+ return ret;
+ if (complete)
return -EEXIST;
ret = pmt_crashlog_set_execute(crashlog);
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 04/20] platform/x86/intel/pmt: Add register access callbacks
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (2 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 03/20] platform/x86/intel/pmt: refactor rc " Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 05/20] platform/x86/intel/pmt: Do not remap when using callbacks Michael J. Ruhl
` (19 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
Some HW does not have direct MMIO access to PMT control and data
features.
Augment the current callback infrastructure (data access) to allow
a registered driver to customize read/write access to the control
paths for PMT usage.
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/platform/x86/intel/pmt/crashlog.c | 46 +++++++++++++++++++++--
include/linux/intel_vsec.h | 14 ++++++-
2 files changed, 56 insertions(+), 4 deletions(-)
diff --git a/drivers/platform/x86/intel/pmt/crashlog.c b/drivers/platform/x86/intel/pmt/crashlog.c
index b6540f3a9a17..a69ee397e529 100644
--- a/drivers/platform/x86/intel/pmt/crashlog.c
+++ b/drivers/platform/x86/intel/pmt/crashlog.c
@@ -11,10 +11,12 @@
#include <linux/auxiliary_bus.h>
#include <linux/cleanup.h>
#include <linux/intel_vsec.h>
+#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/pci.h>
+#include <linux/printk.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#include <linux/overflow.h>
@@ -124,12 +126,36 @@ struct pmt_crashlog_priv {
* I/O
*/
+static int pmt_crashlog_read_reg(struct intel_pmt_entry *entry, u32 *reg, u32 offset)
+{
+ int ret;
+
+ *reg = 0;
+
+ if (entry->cb && entry->cb->read_reg) {
+ ret = entry->cb->read_reg(entry->dev, entry->header.guid, reg, offset);
+ if (ret) {
+ dev_err_ratelimited(entry->dev, "failed to read reg: %d\n", ret);
+ return ret;
+ }
+ } else {
+ *reg = readl(entry->disc_table + offset);
+ }
+
+ return 0;
+}
+
/* Read, modify, write the control register, setting or clearing @bit based on @set */
static int pmt_crashlog_rmw(struct crashlog_entry *crashlog, u32 bit, bool set)
{
const struct crashlog_control *control = &crashlog->info->control;
struct intel_pmt_entry *entry = &crashlog->entry;
- u32 reg = readl(entry->disc_table + control->offset);
+ u32 reg;
+ int ret;
+
+ ret = pmt_crashlog_read_reg(entry, ®, control->offset);
+ if (ret)
+ return ret;
reg &= ~control->trigger_mask;
@@ -138,7 +164,15 @@ static int pmt_crashlog_rmw(struct crashlog_entry *crashlog, u32 bit, bool set)
else
reg &= ~bit;
- writel(reg, entry->disc_table + control->offset);
+ if (entry->cb && entry->cb->write_reg) {
+ ret = entry->cb->write_reg(entry->dev, entry->header.guid, reg, control->offset);
+ if (ret) {
+ dev_err_ratelimited(entry->dev, "failed to write reg: %d\n", ret);
+ return ret;
+ }
+ } else {
+ writel(reg, entry->disc_table + control->offset);
+ }
return 0;
}
@@ -147,7 +181,13 @@ static int pmt_crashlog_rmw(struct crashlog_entry *crashlog, u32 bit, bool set)
static int pmt_crashlog_rc(struct crashlog_entry *crashlog, u32 bit, bool *state)
{
const struct crashlog_status *status = &crashlog->info->status;
- u32 reg = readl(crashlog->entry.disc_table + status->offset);
+ struct intel_pmt_entry *entry = &crashlog->entry;
+ u32 reg;
+ int ret;
+
+ ret = pmt_crashlog_read_reg(entry, ®, status->offset);
+ if (ret)
+ return ret;
*state = !!(reg & bit);
diff --git a/include/linux/intel_vsec.h b/include/linux/intel_vsec.h
index 843cda8f8644..917d9397a993 100644
--- a/include/linux/intel_vsec.h
+++ b/include/linux/intel_vsec.h
@@ -90,13 +90,25 @@ enum intel_vsec_quirks {
* @read_telem: when specified, called by client driver to access PMT
* data (instead of direct copy).
* * dev: device reference for the callback's use
- * * guid: ID of data to acccss
+ * * guid: ID of data to access
* * data: buffer for the data to be copied
* * off: offset into the requested buffer
* * count: size of buffer
+ * @read_reg: when specified called by client driver to read PMT state
+ * * dev: device reference for the callback's use
+ * * guid: ID of data to access
+ * * reg_data: register data
+ * * offset: offset of register to read
+ * @write_reg: when specified called by client driver to write PMT state
+ * * dev: device reference for the callback's use
+ * * guid: ID of data to access
+ * * reg_data: register data
+ * * offset: offset of register to write
*/
struct pmt_callbacks {
int (*read_telem)(struct device *dev, u32 guid, u64 *data, loff_t off, u32 count);
+ int (*read_reg)(struct device *dev, u32 guid, u32 *reg_data, u32 offset);
+ int (*write_reg)(struct device *dev, u32 guid, u32 reg_data, u32 offset);
};
struct vsec_feature_dependency {
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 05/20] platform/x86/intel/pmt: Do not remap when using callbacks
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (3 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 04/20] platform/x86/intel/pmt: Add register access callbacks Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 06/20] drm/xe/vsec: Do not register BMG PMT for VF Michael J. Ruhl
` (18 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
A callback indicates that the parent driver is responsible for accessing
the data area. Creating a PMT memory remap is redundant.
If a read_telem callback has been provided, do not create a remap.
Enforce API usage where necessary.
Clean up open coded resource usage.
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/platform/x86/intel/pmt/class.c | 21 +++++++++++++--------
drivers/platform/x86/intel/pmt/class.h | 2 +-
drivers/platform/x86/intel/pmt/telemetry.c | 3 +++
3 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/drivers/platform/x86/intel/pmt/class.c b/drivers/platform/x86/intel/pmt/class.c
index 402d51df834a..1c7a372b4fc4 100644
--- a/drivers/platform/x86/intel/pmt/class.c
+++ b/drivers/platform/x86/intel/pmt/class.c
@@ -12,6 +12,7 @@
#include <linux/log2.h>
#include <linux/intel_vsec.h>
#include <linux/io-64-nonatomic-lo-hi.h>
+#include <linux/ioport.h>
#include <linux/minmax.h>
#include <linux/module.h>
#include <linux/mm.h>
@@ -373,7 +374,6 @@ static int intel_pmt_dev_register(struct intel_pmt_entry *entry,
struct device *parent)
{
struct intel_vsec_device *ivdev = dev_to_ivdev(parent);
- struct resource res = {0};
struct device *dev;
int ret;
@@ -403,14 +403,19 @@ static int intel_pmt_dev_register(struct intel_pmt_entry *entry,
if (!entry->size)
return 0;
- res.start = entry->base_addr;
- res.end = res.start + entry->size - 1;
- res.flags = IORESOURCE_MEM;
+ /*
+ * The read_telem callback is responsible for this mapping, and may have
+ * different requirements for use. If the callback is present do not
+ * create the map.
+ */
+ if (!(entry->cb && entry->cb->read_telem)) {
+ struct resource res = DEFINE_RES_MEM(entry->base_addr, entry->size);
- entry->base = devm_ioremap_resource(dev, &res);
- if (IS_ERR(entry->base)) {
- ret = PTR_ERR(entry->base);
- goto fail_ioremap;
+ entry->base = devm_ioremap_resource(dev, &res);
+ if (IS_ERR(entry->base)) {
+ ret = PTR_ERR(entry->base);
+ goto fail_ioremap;
+ }
}
sysfs_bin_attr_init(&entry->pmt_bin_attr);
diff --git a/drivers/platform/x86/intel/pmt/class.h b/drivers/platform/x86/intel/pmt/class.h
index 258cb460e61c..aeb04afb67cf 100644
--- a/drivers/platform/x86/intel/pmt/class.h
+++ b/drivers/platform/x86/intel/pmt/class.h
@@ -48,7 +48,7 @@ struct intel_pmt_entry {
const struct attribute_group *attr_grp;
struct kobject *kobj;
void __iomem *disc_table;
- void __iomem *base;
+ void __iomem *base; /* unused if cb->read_telem is in use */
struct pmt_callbacks *cb;
unsigned long base_addr;
size_t size;
diff --git a/drivers/platform/x86/intel/pmt/telemetry.c b/drivers/platform/x86/intel/pmt/telemetry.c
index 953f35b6daec..5423a4dfce08 100644
--- a/drivers/platform/x86/intel/pmt/telemetry.c
+++ b/drivers/platform/x86/intel/pmt/telemetry.c
@@ -329,6 +329,9 @@ int pmt_telem_read32(struct telem_endpoint *ep, u32 id, u32 *data, u32 count)
if (!ep->present)
return -ENODEV;
+ if (!ep->base)
+ return -EIO;
+
offset = SAMPLE_ID_OFFSET32(id);
size = ep->header.size;
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 06/20] drm/xe/vsec: Do not register BMG PMT for VF
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (4 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 05/20] platform/x86/intel/pmt: Do not remap when using callbacks Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 07/20] drm/xe/vsec: Correct locking order Michael J. Ruhl
` (17 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
BMG PMT is not supported for VF nodes.
If IS_SRIOV_VF() is true, do NOT register with PMT.
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/xe_vsec.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index a9baf0bfe572..481bcbcc6372 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
@@ -149,6 +149,8 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
u32 offset;
int ret;
+ xe_assert(xe, !IS_SRIOV_VF(xe));
+
ret = xe_guid_decode(guid, &mem_region, &offset);
if (ret)
return ret;
@@ -157,9 +159,6 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
guard(mutex)(&xe->pmt.lock);
- if (!xe->soc_remapper.set_telem_region)
- return -ENODEV;
-
/* indicate that we are not at an appropriate power level */
if (!xe_pm_runtime_get_if_active(xe))
return -ENODATA;
@@ -186,6 +185,9 @@ static enum xe_vsec get_platform_info(struct xe_device *xe)
if (xe->info.platform > XE_BATTLEMAGE)
return XE_VSEC_UNKNOWN;
+ if (IS_SRIOV_VF(xe) && (xe->info.platform == XE_BATTLEMAGE))
+ return XE_VSEC_UNKNOWN;
+
return vsec_platforms[xe->info.platform];
}
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 07/20] drm/xe/vsec: Correct locking order
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (5 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 06/20] drm/xe/vsec: Do not register BMG PMT for VF Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 08/20] drm/xe/vsec: Use correct pm state get Michael J. Ruhl
` (16 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
Xe locking order is power state first, and then local locks.
Reorder locking for correct usage.
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/xe_vsec.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index 481bcbcc6372..1b88ac1d2448 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
@@ -157,16 +157,17 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
telem_addr += offset + user_offset;
- guard(mutex)(&xe->pmt.lock);
-
/* indicate that we are not at an appropriate power level */
if (!xe_pm_runtime_get_if_active(xe))
return -ENODATA;
- /* set SoC re-mapper index register based on GUID memory region */
- xe->soc_remapper.set_telem_region(xe, mem_region);
+ scoped_guard(mutex, &xe->pmt.lock) {
+ /* set SoC re-mapper index register based on GUID memory region */
+ xe->soc_remapper.set_telem_region(xe, mem_region);
+
+ memcpy_fromio(data, telem_addr, count);
+ }
- memcpy_fromio(data, telem_addr, count);
xe_pm_runtime_put(xe);
return count;
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 08/20] drm/xe/vsec: Use correct pm state get
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (6 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 07/20] drm/xe/vsec: Correct locking order Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 09/20] drm/xe/vsec: Add DOC text for VSEC Michael J. Ruhl
` (15 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
Crashlog needs to be collected at all times. The current pm check
assumes telemetry only.
Update read path to enable device for crashlog instances.
Include check of the WATCHER CAP_TYPE for completeness.
WATCHER is a possible type and needs to be accounted for, but is not
supported.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Fixes: 2c402a801c19 ("platform/x86/intel/pmt: support BMG crashlog")
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/xe_vsec.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index 1b88ac1d2448..1cb9a78ee0ef 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
@@ -145,6 +145,7 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
{
struct xe_device *xe = kdev_to_xe_device(dev);
void __iomem *telem_addr = xe->mmio.regs + BMG_TELEMETRY_OFFSET;
+ u32 cap_type = FIELD_GET(GUID_CAP_TYPE, guid);
u32 mem_region;
u32 offset;
int ret;
@@ -157,9 +158,18 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
telem_addr += offset + user_offset;
- /* indicate that we are not at an appropriate power level */
- if (!xe_pm_runtime_get_if_active(xe))
- return -ENODATA;
+ /* Always allow crashlog. Telemetry, only when powered */
+ switch (cap_type) {
+ case CRASHLOG:
+ xe_pm_runtime_get(xe);
+ break;
+ case TELEMETRY:
+ if (!xe_pm_runtime_get_if_active(xe))
+ return -ENODATA;
+ break;
+ case WATCHER:
+ return -EINVAL;
+ }
scoped_guard(mutex, &xe->pmt.lock) {
/* set SoC re-mapper index register based on GUID memory region */
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 09/20] drm/xe/vsec: Add DOC text for VSEC
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (7 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 08/20] drm/xe/vsec: Use correct pm state get Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:29 ` sashiko-bot
` (2 more replies)
2026-09-16 20:11 ` [PATCH v9 10/20] drm/xe/vsec: Support possible hotplug exit Michael J. Ruhl
` (14 subsequent siblings)
23 siblings, 3 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
Add the necessary files and text to use the DOC system.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
Documentation/gpu/xe/index.rst | 1 +
Documentation/gpu/xe/xe_vsec.rst | 14 ++++++++++++++
drivers/gpu/drm/xe/xe_vsec.c | 23 +++++++++++++++++++++++
3 files changed, 38 insertions(+)
create mode 100644 Documentation/gpu/xe/xe_vsec.rst
diff --git a/Documentation/gpu/xe/index.rst b/Documentation/gpu/xe/index.rst
index 0247a255f7e6..89f013418cf5 100644
--- a/Documentation/gpu/xe/index.rst
+++ b/Documentation/gpu/xe/index.rst
@@ -36,3 +36,4 @@ The display, or :ref:`drm-kms`, support for drm/xe is provided by
xe_configfs
xe_gt_stats
xe_sigid
+ xe_vsec
diff --git a/Documentation/gpu/xe/xe_vsec.rst b/Documentation/gpu/xe/xe_vsec.rst
new file mode 100644
index 000000000000..1a87548489ea
--- /dev/null
+++ b/Documentation/gpu/xe/xe_vsec.rst
@@ -0,0 +1,14 @@
+.. SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+
+=====
+VSEC
+=====
+
+.. kernel-doc:: drivers/gpu/drm/xe/xe_vsec.c
+ :doc: VSEC
+
+Internal API
+============
+
+.. kernel-doc:: drivers/gpu/drm/xe/xe_vsec.c
+ :internal:
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index 1cb9a78ee0ef..ca5d02dce818 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
@@ -19,6 +19,17 @@
#include "regs/xe_pmt.h"
+/**
+ * DOC: VSEC
+ *
+ * Some GPUs support the PMT feature. For those that do, this API provides
+ * probe, discovery and usage (control and access) for GPUs that have PMT.
+ *
+ * PMT is usually accessed through a PCI function. However, that is not always
+ * available, so the PMT intel_vsec_register() function can be used to setup up
+ * PMT usage.
+ */
+
/* PMT GUID value for BMG devices. NOTE: this is NOT a PCI id */
#define BMG_DEVICE_ID 0xE2F8
@@ -140,6 +151,18 @@ static int xe_guid_decode(u32 guid, int *index, u32 *offset)
return 0;
}
+/**
+ * xe_pmt_telem_read - Given a device and a PMT GUID, read data into a buffer
+ * @dev: valid Xe device
+ * @guid: PMT GUID (from the PMT discovery struct)
+ * @data: buffer to place data in
+ * @user_offset: a user offset relative to the beginning of the data to read
+ * @count: bytes to read
+ *
+ * Return:
+ * * -EINVAL for VF and PMT WATCHER requests
+ * * count number of bytes read on success
+ */
int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offset,
u32 count)
{
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 10/20] drm/xe/vsec: Support possible hotplug exit
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (8 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 09/20] drm/xe/vsec: Add DOC text for VSEC Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:21 ` sashiko-bot
2026-09-16 20:11 ` [PATCH v9 11/20] drm/xe/vsec: Refactor BattleMage PMT defines Michael J. Ruhl
` (13 subsequent siblings)
23 siblings, 1 reply; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
DRM has an API that will verify that a device is valid in the hotplug
context.
Verify device is valid before access in the VSEC callback API.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/xe_vsec.c | 29 +++++++++++++++++++++++------
1 file changed, 23 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index ca5d02dce818..c20cad9a4f1f 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
@@ -10,6 +10,8 @@
#include <linux/pci.h>
#include <linux/types.h>
+#include <drm/drm_drv.h>
+
#include "xe_device.h"
#include "xe_device_types.h"
#include "xe_mmio.h"
@@ -159,7 +161,12 @@ static int xe_guid_decode(u32 guid, int *index, u32 *offset)
* @user_offset: a user offset relative to the beginning of the data to read
* @count: bytes to read
*
+ * This is a callback API. I.e this can be accessed external to the XE driver
+ * (PMT driver scope). Because of this, DRM hotplug needs to be verified
+ * (drm_dev_enter()).
+ *
* Return:
+ * * -ENODEV device is not available (hotplug)
* * -EINVAL for VF and PMT WATCHER requests
* * count number of bytes read on success
*/
@@ -171,13 +178,17 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
u32 cap_type = FIELD_GET(GUID_CAP_TYPE, guid);
u32 mem_region;
u32 offset;
- int ret;
+ int ret = 0;
+ int idx;
xe_assert(xe, !IS_SRIOV_VF(xe));
+ if (!drm_dev_enter(&xe->drm, &idx))
+ return -ENODEV;
+
ret = xe_guid_decode(guid, &mem_region, &offset);
if (ret)
- return ret;
+ goto dev_exit;
telem_addr += offset + user_offset;
@@ -187,11 +198,14 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
xe_pm_runtime_get(xe);
break;
case TELEMETRY:
- if (!xe_pm_runtime_get_if_active(xe))
- return -ENODATA;
+ if (!xe_pm_runtime_get_if_active(xe)) {
+ ret = -ENODATA;
+ goto dev_exit;
+ }
break;
case WATCHER:
- return -EINVAL;
+ ret = -EINVAL;
+ goto dev_exit;
}
scoped_guard(mutex, &xe->pmt.lock) {
@@ -203,7 +217,10 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
xe_pm_runtime_put(xe);
- return count;
+dev_exit:
+ drm_dev_exit(idx);
+
+ return ret == 0 ? count : ret;
}
static struct pmt_callbacks xe_pmt_cb = {
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 11/20] drm/xe/vsec: Refactor BattleMage PMT defines
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (9 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 10/20] drm/xe/vsec: Support possible hotplug exit Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 12/20] drm/xe/vsec: Update VSEC probe order Michael J. Ruhl
` (12 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
Rename generic defines to be BMG specific.
Define several magic numbers.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/xe_vsec.c | 29 +++++++++++++++++------------
1 file changed, 17 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index c20cad9a4f1f..0bf727ed3b99 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
@@ -90,10 +90,15 @@ static struct intel_vsec_platform_info xe_vsec_info[] = {
#define GUID_CAP_TYPE GENMASK(29, 28)
#define GUID_RECORD_ID GENMASK(31, 30)
-#define PUNIT_TELEMETRY_OFFSET 0x0200
-#define PUNIT_WATCHER_OFFSET 0x14A0
-#define OOBMSM_0_WATCHER_OFFSET 0x18D8
-#define OOBMSM_1_TELEMETRY_OFFSET 0x1000
+#define BMG_IDX_TELEM_PUNIT 0x00
+#define BMG_IDX_TELEM_OOBMSM 0x01
+#define BMG_IDX_CRASHLOG_PUNIT 0x02
+#define BMG_IDX_CRASHLOG_OOBMSM 0x04
+
+#define BMG_PUNIT_TELEMETRY_OFFSET 0x0200
+#define BMG_PUNIT_WATCHER_OFFSET 0x14A0
+#define BMG_OOBMSM_0_WATCHER_OFFSET 0x18D8
+#define BMG_OOBMSM_1_TELEMETRY_OFFSET 0x1000
enum record_id {
PUNIT,
@@ -122,29 +127,29 @@ static int xe_guid_decode(u32 guid, int *index, u32 *offset)
*offset = 0;
if (cap_type == CRASHLOG) {
- *index = record_id == PUNIT ? 2 : 4;
+ *index = record_id == PUNIT ? BMG_IDX_CRASHLOG_PUNIT : BMG_IDX_CRASHLOG_OOBMSM;
return 0;
}
switch (record_id) {
case PUNIT:
- *index = 0;
+ *index = BMG_IDX_TELEM_PUNIT;
if (cap_type == TELEMETRY)
- *offset = PUNIT_TELEMETRY_OFFSET;
+ *offset = BMG_PUNIT_TELEMETRY_OFFSET;
else
- *offset = PUNIT_WATCHER_OFFSET;
+ *offset = BMG_PUNIT_WATCHER_OFFSET;
break;
case OOBMSM_0:
- *index = 1;
+ *index = BMG_IDX_TELEM_OOBMSM;
if (cap_type == WATCHER)
- *offset = OOBMSM_0_WATCHER_OFFSET;
+ *offset = BMG_OOBMSM_0_WATCHER_OFFSET;
break;
case OOBMSM_1:
- *index = 1;
+ *index = BMG_IDX_TELEM_OOBMSM;
if (cap_type == TELEMETRY)
- *offset = OOBMSM_1_TELEMETRY_OFFSET;
+ *offset = BMG_OOBMSM_1_TELEMETRY_OFFSET;
break;
default:
return -EINVAL;
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 12/20] drm/xe/vsec: Update VSEC probe order
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (10 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 11/20] drm/xe/vsec: Refactor BattleMage PMT defines Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 13/20] drm/xe/vsec: Add base_offset to allow for more flexibilty Michael J. Ruhl
` (11 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
Both debugfs and hwmon access the PMT data area before PMT is
initialized.
Hardwired offset usage allows this to work by accident.
Upcoming changes will break this usage.
Re-order the probe steps to initialize VSEC before the other
features are initialized.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 205cb4e7f9e8..3ec950606e67 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -1053,6 +1053,8 @@ int xe_device_probe(struct xe_device *xe)
if (err)
goto err_unregister_display;
+ xe_vsec_init(xe);
+
xe_debugfs_register(xe);
err = xe_hwmon_register(xe);
@@ -1066,8 +1068,6 @@ int xe_device_probe(struct xe_device *xe)
for_each_gt(gt, xe, id)
xe_gt_sanitize_freq(gt);
- xe_vsec_init(xe);
-
err = xe_sriov_init_late(xe);
if (err)
goto err_unregister_display;
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 13/20] drm/xe/vsec: Add base_offset to allow for more flexibilty
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (11 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 12/20] drm/xe/vsec: Update VSEC probe order Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 14/20] drm/xe/vsec: Support Crescent Island PMT Michael J. Ruhl
` (10 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
Current pmt_telem_read() usage is a fixed (for BMG) offset.
In order to support other devices this must be settable.
Add a base offset for more flexibility.
Add a check to verify that it has been set before allowing
device access.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/xe_device_types.h | 2 ++
drivers/gpu/drm/xe/xe_vsec.c | 9 ++++++++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index bb4234f00453..e08348a95b28 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -486,6 +486,8 @@ struct xe_device {
struct {
/** @pmt.lock: protect access for telemetry data */
struct mutex lock;
+ /** @pmt.base_offset: device specific base offset */
+ u64 base_offset;
} pmt;
/** @soc_remapper: SoC remapper object */
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index 0bf727ed3b99..47290726a4bf 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
@@ -173,14 +173,15 @@ static int xe_guid_decode(u32 guid, int *index, u32 *offset)
* Return:
* * -ENODEV device is not available (hotplug)
* * -EINVAL for VF and PMT WATCHER requests
+ * * -EAGAIN base_offset has not been set, so init path has not yet been done.
* * count number of bytes read on success
*/
int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offset,
u32 count)
{
struct xe_device *xe = kdev_to_xe_device(dev);
- void __iomem *telem_addr = xe->mmio.regs + BMG_TELEMETRY_OFFSET;
u32 cap_type = FIELD_GET(GUID_CAP_TYPE, guid);
+ void __iomem *telem_addr = xe->mmio.regs + xe->pmt.base_offset;
u32 mem_region;
u32 offset;
int ret = 0;
@@ -191,6 +192,11 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
if (!drm_dev_enter(&xe->drm, &idx))
return -ENODEV;
+ if (!xe->pmt.base_offset) {
+ ret = -EAGAIN;
+ goto dev_exit;
+ }
+
ret = xe_guid_decode(guid, &mem_region, &offset);
if (ret)
goto dev_exit;
@@ -268,6 +274,7 @@ void xe_vsec_init(struct xe_device *xe)
switch (platform) {
case XE_VSEC_BMG:
+ xe->pmt.base_offset = BMG_TELEMETRY_OFFSET;
info->priv_data = &xe_pmt_cb;
break;
default:
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 14/20] drm/xe/vsec: Support Crescent Island PMT
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (12 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 13/20] drm/xe/vsec: Add base_offset to allow for more flexibilty Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 15/20] drm/xe/vsec: Crescent Island PMT decode Michael J. Ruhl
` (9 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
Crescent Island (CRI) supports PMT telemetry and crashlog.
Add Crescent Island (CRI) discovery structure (DVSEC) information to
allow for Xe registration.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/regs/xe_pmt.h | 8 +++--
drivers/gpu/drm/xe/xe_vsec.c | 51 +++++++++++++++++++++++++++++---
2 files changed, 53 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/regs/xe_pmt.h b/drivers/gpu/drm/xe/regs/xe_pmt.h
index a62ab05c6b4c..2f6658395587 100644
--- a/drivers/gpu/drm/xe/regs/xe_pmt.h
+++ b/drivers/gpu/drm/xe/regs/xe_pmt.h
@@ -17,8 +17,12 @@
#define PUNIT_VERSION_OFFSET 0xA0
-#define BMG_TELEMETRY_BASE_OFFSET 0xE0000
-#define BMG_TELEMETRY_OFFSET (SOC_BASE + BMG_TELEMETRY_BASE_OFFSET)
+#define XE_PMT_BASE_OFFSET 0xE0000
+
+#define BMG_TELEMETRY_OFFSET (SOC_BASE + XE_PMT_BASE_OFFSET)
+
+/* for CRI discovery and telemetry are in an indexed window */
+#define CRI_PMT_OFFSET (SOC_BASE + XE_PMT_BASE_OFFSET)
#define BMG_MODS_RESIDENCY_OFFSET (0x4D0)
#define BMG_G2_RESIDENCY_OFFSET (0x530)
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index 47290726a4bf..1d815d764cf4 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
@@ -8,6 +8,7 @@
#include <linux/module.h>
#include <linux/mutex.h>
#include <linux/pci.h>
+#include <linux/sizes.h>
#include <linux/types.h>
#include <drm/drm_drv.h>
@@ -32,12 +33,23 @@
* PMT usage.
*/
-/* PMT GUID value for BMG devices. NOTE: this is NOT a PCI id */
+/* PMT GUID value for BMG and CRI devices. NOTE: this is NOT a PCI id */
#define BMG_DEVICE_ID 0xE2F8
+#define CRI_DEVICE_ID 0xE2FA
+
+/*
+ * sizeof(Crashlog Type1 Version2) = 0x18 (24) bytes
+ * For BMG and CRI PUNIT and OOBMSMS crashlogs are consecutive.
+ */
+#define BMG_CRASHLOG_PUNIT_DISC_OFFSET (0x60)
+#define BMG_CRASHLOG_OOBMSM_DISC_OFFSET (BMG_CRASHLOG_PUNIT_DISC_OFFSET + 0x18)
+
+#define CRI_CRASHLOG_PUNIT_DISC_OFFSET (0x80)
+#define CRI_CRASHLOG_OOBMSM_DISC_OFFSET (CRI_CRASHLOG_PUNIT_DISC_OFFSET + 0x18)
static struct intel_vsec_header bmg_telemetry = {
.rev = 1,
- .length = 0x10,
+ .length = SZ_16,
.id = VSEC_ID_TELEMETRY,
.num_entries = 2,
.entry_size = 4,
@@ -47,12 +59,12 @@ static struct intel_vsec_header bmg_telemetry = {
static struct intel_vsec_header bmg_crashlog = {
.rev = 1,
- .length = 0x10,
+ .length = SZ_16,
.id = VSEC_ID_CRASHLOG,
.num_entries = 2,
.entry_size = 6,
.tbir = 0,
- .offset = BMG_DISCOVERY_OFFSET + 0x60,
+ .offset = BMG_DISCOVERY_OFFSET + BMG_CRASHLOG_PUNIT_DISC_OFFSET,
};
static struct intel_vsec_header *bmg_capabilities[] = {
@@ -61,9 +73,36 @@ static struct intel_vsec_header *bmg_capabilities[] = {
NULL
};
+static struct intel_vsec_header cri_telemetry = {
+ .rev = 1,
+ .length = SZ_16,
+ .id = VSEC_ID_TELEMETRY,
+ .num_entries = 3,
+ .entry_size = 4,
+ .tbir = 0,
+ .offset = CRI_PMT_OFFSET,
+};
+
+static struct intel_vsec_header cri_crashlog = {
+ .rev = 1,
+ .length = SZ_16,
+ .id = VSEC_ID_CRASHLOG,
+ .num_entries = 2,
+ .entry_size = 6,
+ .tbir = 0,
+ .offset = CRI_PMT_OFFSET + CRI_CRASHLOG_PUNIT_DISC_OFFSET,
+};
+
+static struct intel_vsec_header *cri_capabilities[] = {
+ &cri_telemetry,
+ &cri_crashlog,
+ NULL
+};
+
enum xe_vsec {
XE_VSEC_UNKNOWN = 0,
XE_VSEC_BMG,
+ XE_VSEC_CRI,
};
static struct intel_vsec_platform_info xe_vsec_info[] = {
@@ -71,6 +110,10 @@ static struct intel_vsec_platform_info xe_vsec_info[] = {
.caps = VSEC_CAP_TELEMETRY | VSEC_CAP_CRASHLOG,
.headers = bmg_capabilities,
},
+ [XE_VSEC_CRI] = {
+ .caps = VSEC_CAP_TELEMETRY | VSEC_CAP_CRASHLOG,
+ .headers = cri_capabilities,
+ },
{ }
};
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 15/20] drm/xe/vsec: Crescent Island PMT decode
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (13 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 14/20] drm/xe/vsec: Support Crescent Island PMT Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 16/20] drm/xe/vsec: Crescent Island PMT callbacks Michael J. Ruhl
` (8 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
Crescent Island (CRI) has different index and offset values for
accessing the PMT data area.
Update the decode path to support the CRI device.
Update the data read callback so to support the CRI usage.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/xe_vsec.c | 100 +++++++++++++++++++++++++++++++----
1 file changed, 90 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index 1d815d764cf4..95d3150f701a 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
@@ -120,19 +120,25 @@ static struct intel_vsec_platform_info xe_vsec_info[] = {
/*
* The GUID will have the following bits to decode:
* [0:3] - {Telemetry space iteration number (0,1,..)}
- * [4:7] - Segment (SEGMENT_INDEPENDENT-0, Client-1, Server-2)
+ * [4:7] - BMG Segment (SEGMENT_INDEPENDENT-0, Client-1, Server-2)
+ * [4:5] - CRI Segment (SEGMENT_INDEPENDENT-0, Client-1, Server-2)
+ * [6:7] - CRI Instance
* [8:11] - SOC_SKU
* [12:27] – Device ID – changes for each down bin SKU’s
* [28:29] - Capability Type (Crashlog-0, Telemetry Aggregator-1, Watcher-2)
* [30:31] - Record-ID (0-PUNIT, 1-OOBMSM_0, 2-OOBMSM_1)
*/
#define GUID_TELEM_ITERATION GENMASK(3, 0)
-#define GUID_SEGMENT GENMASK(7, 4)
#define GUID_SOC_SKU GENMASK(11, 8)
#define GUID_DEVICE_ID GENMASK(27, 12)
#define GUID_CAP_TYPE GENMASK(29, 28)
#define GUID_RECORD_ID GENMASK(31, 30)
+#define BMG_GUID_SEGMENT GENMASK(7, 4)
+
+#define CRI_GUID_SEGMENT GENMASK(5, 4)
+#define CRI_GUID_INSTANCE GENMASK(7, 6)
+
#define BMG_IDX_TELEM_PUNIT 0x00
#define BMG_IDX_TELEM_OOBMSM 0x01
#define BMG_IDX_CRASHLOG_PUNIT 0x02
@@ -143,6 +149,18 @@ static struct intel_vsec_platform_info xe_vsec_info[] = {
#define BMG_OOBMSM_0_WATCHER_OFFSET 0x18D8
#define BMG_OOBMSM_1_TELEMETRY_OFFSET 0x1000
+#define CRI_IDX_TELEM_DISCOVERY 0x00
+#define CRI_IDX_TELEM_PUNIT 0x01
+#define CRI_IDX_TELEM_OOBMSM 0x02
+#define CRI_IDX_CRASHLOG_PUNIT 0x03
+#define CRI_IDX_WATCHER_OOBMSM 0x03 /* PUNIT and OOBMSM share this index */
+#define CRI_IDX_CRASHLOG_OOBMSM 0x04
+
+#define CRI_PUNIT_WATCHER_OFFSET 0x08A0
+#define CRI_OOBMSM_WATCHER_OFFSET 0x0CF8
+#define CRI_OOBMSM_GFSP_TELEMETRY_OFFSET 0x1600
+#define CRI_PUNIT_CRASHLOG_OFFSET 0x0E60
+
enum record_id {
PUNIT,
OOBMSM_0,
@@ -155,17 +173,10 @@ enum capability {
WATCHER,
};
-static int xe_guid_decode(u32 guid, int *index, u32 *offset)
+static int bmg_guid_decode(u32 guid, int *index, u32 *offset)
{
u32 record_id = FIELD_GET(GUID_RECORD_ID, guid);
u32 cap_type = FIELD_GET(GUID_CAP_TYPE, guid);
- u32 device_id = FIELD_GET(GUID_DEVICE_ID, guid);
-
- if (device_id != BMG_DEVICE_ID)
- return -ENODEV;
-
- if (cap_type > WATCHER)
- return -EINVAL;
*offset = 0;
@@ -201,6 +212,75 @@ static int xe_guid_decode(u32 guid, int *index, u32 *offset)
return 0;
}
+static int cri_guid_decode(u32 guid, int *index, u32 *offset)
+{
+ u32 record_id = FIELD_GET(GUID_RECORD_ID, guid);
+ u32 cap_type = FIELD_GET(GUID_CAP_TYPE, guid);
+ u32 instance = FIELD_GET(CRI_GUID_INSTANCE, guid);
+
+ *offset = 0;
+
+ if (cap_type == CRASHLOG) {
+ if (record_id == PUNIT) {
+ *index = CRI_IDX_CRASHLOG_PUNIT;
+ *offset = CRI_PUNIT_CRASHLOG_OFFSET;
+ } else {
+ *index = CRI_IDX_CRASHLOG_OOBMSM;
+ }
+ return 0;
+ }
+
+ switch (record_id) {
+ case PUNIT:
+ *index = CRI_IDX_TELEM_PUNIT;
+ if (cap_type == WATCHER)
+ *offset = CRI_PUNIT_WATCHER_OFFSET;
+ break;
+
+ case OOBMSM_0:
+ *index = CRI_IDX_TELEM_OOBMSM;
+ switch (instance) {
+ case 0:
+ if (cap_type == WATCHER) {
+ *index = CRI_IDX_WATCHER_OOBMSM;
+ *offset = CRI_OOBMSM_WATCHER_OFFSET;
+ }
+ break;
+
+ case 1:
+ if (cap_type == TELEMETRY)
+ *offset = CRI_OOBMSM_GFSP_TELEMETRY_OFFSET;
+ break;
+
+ default:
+ return -EINVAL;
+ }
+ break;
+
+ default:
+ return -EINVAL;
+ }
+
+ return 0;
+}
+
+static int xe_guid_decode(u32 guid, int *index, u32 *offset)
+{
+ u32 cap_type = FIELD_GET(GUID_CAP_TYPE, guid);
+ u32 device_id = FIELD_GET(GUID_DEVICE_ID, guid);
+
+ if (cap_type > WATCHER)
+ return -EINVAL;
+
+ if (device_id == BMG_DEVICE_ID)
+ return bmg_guid_decode(guid, index, offset);
+
+ if (device_id == CRI_DEVICE_ID)
+ return cri_guid_decode(guid, index, offset);
+
+ return -ENODEV;
+}
+
/**
* xe_pmt_telem_read - Given a device and a PMT GUID, read data into a buffer
* @dev: valid Xe device
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 16/20] drm/xe/vsec: Crescent Island PMT callbacks
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (14 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 15/20] drm/xe/vsec: Crescent Island PMT decode Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 17/20] drm/xe/vsec: Support late bind fw information Michael J. Ruhl
` (7 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
CRI PMT support requires callbacks to access the discovery status and
control areas. Access is a common MMIO area that requires an index to
be set before access is allowed.
Introduce the necessary callbacks to get the status and control
information for CRI PMT usage.
Add the glue logic to register the CRI PMT functionality.
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/xe_vsec.c | 115 +++++++++++++++++++++++++++++++++--
1 file changed, 111 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index 95d3150f701a..d1427ec50728 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
@@ -357,20 +357,120 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
return ret == 0 ? count : ret;
}
-static struct pmt_callbacks xe_pmt_cb = {
+/**
+ * xe_pmt_read_reg() - read a crashlog register
+ * @dev: the xe device that registered the callback
+ * @guid: PMT guid of the crashlog instance
+ * @reg: data read from the PMT data structure
+ * @offset: which data to read from the PMT data structure
+ *
+ * Read the requested PMT register based on the pcie device and guid. The
+ * supported struct is the Crashlog Type1 Version2.
+ *
+ * Currently this is for CRI only.
+ *
+ * Return:
+ * * -ENODEV device is not available (hotplug)
+ * * -EINVAL invalid guid
+ * * 0 success
+ */
+static int xe_pmt_read_reg(struct device *dev, u32 guid, u32 *reg, u32 offset)
+{
+ struct xe_device *xe = kdev_to_xe_device(dev);
+ void __iomem *disc_addr = xe->mmio.regs + xe->pmt.base_offset;
+ int ret = 0;
+ u32 inst;
+ int idx;
+
+ if (!drm_dev_enter(&xe->drm, &idx))
+ return -ENODEV;
+
+ if (FIELD_GET(GUID_DEVICE_ID, guid) != CRI_DEVICE_ID ||
+ FIELD_GET(GUID_CAP_TYPE, guid) != CRASHLOG) {
+ ret = -EINVAL;
+ goto dev_exit;
+ }
+
+ inst = FIELD_GET(GUID_RECORD_ID, guid) == PUNIT ?
+ CRI_CRASHLOG_PUNIT_DISC_OFFSET : CRI_CRASHLOG_OOBMSM_DISC_OFFSET;
+ disc_addr += inst + offset;
+
+ xe_pm_runtime_get(xe);
+
+ scoped_guard(mutex, &xe->pmt.lock) {
+ xe->soc_remapper.set_telem_region(xe, CRI_IDX_TELEM_DISCOVERY);
+
+ *reg = readl(disc_addr);
+ }
+
+ xe_pm_runtime_put(xe);
+
+dev_exit:
+ drm_dev_exit(idx);
+
+ return ret;
+}
+
+static int xe_pmt_write_reg(struct device *dev, u32 guid, u32 reg, u32 offset)
+{
+ struct xe_device *xe = kdev_to_xe_device(dev);
+ void __iomem *disc_addr = xe->mmio.regs + xe->pmt.base_offset;
+ int ret = 0;
+ u32 inst;
+ int idx;
+
+ if (!drm_dev_enter(&xe->drm, &idx))
+ return -ENODEV;
+
+ if (FIELD_GET(GUID_DEVICE_ID, guid) != CRI_DEVICE_ID ||
+ FIELD_GET(GUID_CAP_TYPE, guid) != CRASHLOG) {
+ ret = -EINVAL;
+ goto dev_exit;
+ }
+
+ inst = FIELD_GET(GUID_RECORD_ID, guid) == PUNIT ?
+ CRI_CRASHLOG_PUNIT_DISC_OFFSET : CRI_CRASHLOG_OOBMSM_DISC_OFFSET;
+ disc_addr += inst + offset;
+
+ xe_pm_runtime_get(xe);
+
+ scoped_guard(mutex, &xe->pmt.lock) {
+ xe->soc_remapper.set_telem_region(xe, CRI_IDX_TELEM_DISCOVERY);
+
+ writel(reg, disc_addr);
+ }
+
+ xe_pm_runtime_put(xe);
+
+dev_exit:
+ drm_dev_exit(idx);
+
+ return ret;
+}
+
+static struct pmt_callbacks xe_bmg_pmt_cb = {
+ .read_telem = xe_pmt_telem_read,
+};
+
+static struct pmt_callbacks xe_cri_pmt_cb = {
.read_telem = xe_pmt_telem_read,
+ .read_reg = xe_pmt_read_reg,
+ .write_reg = xe_pmt_write_reg,
};
static const int vsec_platforms[] = {
[XE_BATTLEMAGE] = XE_VSEC_BMG,
+ [XE_CRESCENTISLAND] = XE_VSEC_CRI,
};
static enum xe_vsec get_platform_info(struct xe_device *xe)
{
- if (xe->info.platform > XE_BATTLEMAGE)
+ if (xe->info.platform > XE_CRESCENTISLAND)
return XE_VSEC_UNKNOWN;
- if (IS_SRIOV_VF(xe) && (xe->info.platform == XE_BATTLEMAGE))
+ if (IS_SRIOV_VF(xe) &&
+ (xe->info.platform == XE_BATTLEMAGE ||
+ xe->info.platform == XE_CRESCENTISLAND))
return XE_VSEC_UNKNOWN;
return vsec_platforms[xe->info.platform];
@@ -398,8 +498,15 @@ void xe_vsec_init(struct xe_device *xe)
switch (platform) {
case XE_VSEC_BMG:
xe->pmt.base_offset = BMG_TELEMETRY_OFFSET;
- info->priv_data = &xe_pmt_cb;
+ info->priv_data = &xe_bmg_pmt_cb;
break;
+
+ case XE_VSEC_CRI:
+ xe->pmt.base_offset = CRI_PMT_OFFSET;
+ info->priv_data = &xe_cri_pmt_cb;
+ xe->soc_remapper.set_telem_region(xe, CRI_IDX_TELEM_DISCOVERY);
+ break;
+
default:
break;
}
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 17/20] drm/xe/vsec: Support late bind fw information
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (15 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 16/20] drm/xe/vsec: Crescent Island PMT callbacks Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:29 ` sashiko-bot
2026-09-16 20:11 ` [PATCH v9 18/20] drm/xe/vsec: Add PMT GUID internal access Michael J. Ruhl
` (6 subsequent siblings)
23 siblings, 1 reply; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
CRI FW is loaded on power on. Because of this, access to the FW cannot
be done until it is running.
Update the XE PMT probe and access to check for late bind devices,
verify, and wait for the appropriate FW state before probe or access.
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 4 +-
drivers/gpu/drm/xe/xe_device_types.h | 5 ++
drivers/gpu/drm/xe/xe_vsec.c | 129 ++++++++++++++++++++++++++-
drivers/gpu/drm/xe/xe_vsec.h | 2 +-
4 files changed, 134 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 3ec950606e67..a2c8c7909688 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -1053,7 +1053,9 @@ int xe_device_probe(struct xe_device *xe)
if (err)
goto err_unregister_display;
- xe_vsec_init(xe);
+ err = xe_vsec_init(xe);
+ if (err)
+ goto err_unregister_display;
xe_debugfs_register(xe);
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index e08348a95b28..8f5cc5d65419 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -7,6 +7,7 @@
#define _XE_DEVICE_TYPES_H_
#include <linux/pci.h>
+#include <linux/workqueue.h>
#include <drm/drm_device.h>
#include <drm/drm_file.h>
@@ -488,6 +489,10 @@ struct xe_device {
struct mutex lock;
/** @pmt.base_offset: device specific base offset */
u64 base_offset;
+ /** @pmt.work: support late-bind probe */
+ struct delayed_work work;
+ /** @pmt.retry_count: late-bind probe retry */
+ u32 retry_count;
} pmt;
/** @soc_remapper: SoC remapper object */
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index d1427ec50728..f905ef51df65 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
@@ -3,6 +3,7 @@
#include <linux/bitfield.h>
#include <linux/bits.h>
#include <linux/cleanup.h>
+#include <linux/delay.h>
#include <linux/errno.h>
#include <linux/intel_vsec.h>
#include <linux/module.h>
@@ -18,6 +19,7 @@
#include "xe_mmio.h"
#include "xe_platform_types.h"
#include "xe_pm.h"
+#include "xe_sysctrl.h"
#include "xe_vsec.h"
#include "regs/xe_pmt.h"
@@ -173,6 +175,14 @@ enum capability {
WATCHER,
};
+/*
+ * Late bind will delay 100msec for up to 20 seconds
+ */
+#define VSEC_LATE_BIND_DELAY_MSEC 100
+#define VSEC_LATE_BIND_RETRY 200
+
+static void cri_late_bind_probe(struct xe_device *xe);
+
static int bmg_guid_decode(u32 guid, int *index, u32 *offset)
{
u32 record_id = FIELD_GET(GUID_RECORD_ID, guid);
@@ -281,6 +291,48 @@ static int xe_guid_decode(u32 guid, int *index, u32 *offset)
return -ENODEV;
}
+static void cri_late_bind_probe_work(struct work_struct *work)
+{
+ struct xe_device *xe = container_of(work, struct xe_device, pmt.work.work);
+
+ if (xe_sysctrl_is_oobmsm_fw_ready(xe)) {
+ cri_late_bind_probe(xe);
+ xe_pm_runtime_put(xe);
+ return;
+ }
+
+ xe->pmt.retry_count++;
+
+ /* wait up to 20 seconds */
+ if (xe->pmt.retry_count == VSEC_LATE_BIND_RETRY) {
+ drm_warn(&xe->drm, "PMT probe: Late Binding failed to complete\n");
+ xe_pm_runtime_put(xe);
+ return;
+ }
+
+ if (!schedule_delayed_work(&xe->pmt.work, msecs_to_jiffies(VSEC_LATE_BIND_DELAY_MSEC)))
+ xe_pm_runtime_put(xe);
+}
+
+static bool wait_for_fw(struct xe_device *xe)
+{
+ int retries = VSEC_LATE_BIND_RETRY; /* wait up to 20 secs */
+
+ if (xe->info.platform != XE_CRESCENTISLAND)
+ return true;
+
+ while (retries--) {
+ if (xe_sysctrl_is_oobmsm_fw_ready(xe))
+ return true;
+
+ msleep(VSEC_LATE_BIND_DELAY_MSEC);
+ }
+
+ drm_warn(&xe->drm, "Late Binding failed to complete\n");
+
+ return false;
+}
+
/**
* xe_pmt_telem_read - Given a device and a PMT GUID, read data into a buffer
* @dev: valid Xe device
@@ -342,6 +394,11 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
goto dev_exit;
}
+ if (!wait_for_fw(xe)) {
+ ret = -ENODATA;
+ goto runtime_exit;
+ }
+
scoped_guard(mutex, &xe->pmt.lock) {
/* set SoC re-mapper index register based on GUID memory region */
xe->soc_remapper.set_telem_region(xe, mem_region);
@@ -349,6 +406,7 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
memcpy_fromio(data, telem_addr, count);
}
+runtime_exit:
xe_pm_runtime_put(xe);
dev_exit:
@@ -396,6 +454,10 @@ static int xe_pmt_read_reg(struct device *dev, u32 guid, u32 *reg, u32 offset)
disc_addr += inst + offset;
xe_pm_runtime_get(xe);
+ if (!wait_for_fw(xe)) {
+ ret = -ENODATA;
+ goto runtime_exit;
+ }
scoped_guard(mutex, &xe->pmt.lock) {
xe->soc_remapper.set_telem_region(xe, CRI_IDX_TELEM_DISCOVERY);
@@ -403,6 +465,7 @@ static int xe_pmt_read_reg(struct device *dev, u32 guid, u32 *reg, u32 offset)
*reg = readl(disc_addr);
}
+runtime_exit:
xe_pm_runtime_put(xe);
dev_exit:
@@ -433,6 +496,10 @@ static int xe_pmt_write_reg(struct device *dev, u32 guid, u32 reg, u32 offset)
disc_addr += inst + offset;
xe_pm_runtime_get(xe);
+ if (!wait_for_fw(xe)) {
+ ret = -ENODATA;
+ goto runtime_exit;
+ }
scoped_guard(mutex, &xe->pmt.lock) {
xe->soc_remapper.set_telem_region(xe, CRI_IDX_TELEM_DISCOVERY);
@@ -440,6 +507,7 @@ static int xe_pmt_write_reg(struct device *dev, u32 guid, u32 reg, u32 offset)
writel(reg, disc_addr);
}
+runtime_exit:
xe_pm_runtime_put(xe);
dev_exit:
@@ -476,12 +544,46 @@ static enum xe_vsec get_platform_info(struct xe_device *xe)
return vsec_platforms[xe->info.platform];
}
+static void cri_late_bind_probe(struct xe_device *xe)
+{
+ struct intel_vsec_platform_info *info;
+ struct device *dev = xe->drm.dev;
+ enum xe_vsec platform;
+
+ platform = get_platform_info(xe);
+ if (platform != XE_VSEC_CRI)
+ return;
+
+ info = &xe_vsec_info[platform];
+ if (!info->headers)
+ return;
+
+ guard(mutex)(&xe->pmt.lock);
+
+ info->priv_data = &xe_cri_pmt_cb;
+ xe->soc_remapper.set_telem_region(xe, CRI_IDX_TELEM_DISCOVERY);
+
+ intel_vsec_register(dev, info);
+}
+
+static void vsec_disable_late_bind_work(void *arg)
+{
+ struct xe_device *xe = arg;
+
+ /*
+ * If the queued work is canceled, the runtime reference needs to be
+ * released here.
+ */
+ if (disable_delayed_work_sync(&xe->pmt.work))
+ xe_pm_runtime_put(xe);
+}
+
/**
* xe_vsec_init - Initialize resources and add intel_vsec auxiliary
* interface
* @xe: valid xe instance
*/
-void xe_vsec_init(struct xe_device *xe)
+int xe_vsec_init(struct xe_device *xe)
{
struct intel_vsec_platform_info *info;
struct device *dev = xe->drm.dev;
@@ -489,11 +591,11 @@ void xe_vsec_init(struct xe_device *xe)
platform = get_platform_info(xe);
if (platform == XE_VSEC_UNKNOWN)
- return;
+ return 0;
info = &xe_vsec_info[platform];
if (!info->headers)
- return;
+ return 0;
switch (platform) {
case XE_VSEC_BMG:
@@ -503,12 +605,26 @@ void xe_vsec_init(struct xe_device *xe)
case XE_VSEC_CRI:
xe->pmt.base_offset = CRI_PMT_OFFSET;
+
+ xe->pmt.retry_count = 0;
+ INIT_DELAYED_WORK(&xe->pmt.work, cri_late_bind_probe_work);
+
+ xe_pm_runtime_get_noresume(xe);
+ if (!xe_sysctrl_is_oobmsm_fw_ready(xe)) {
+ schedule_delayed_work(&xe->pmt.work,
+ msecs_to_jiffies(VSEC_LATE_BIND_DELAY_MSEC));
+ return devm_add_action_or_reset(xe->drm.dev,
+ vsec_disable_late_bind_work,
+ xe);
+ }
+
info->priv_data = &xe_cri_pmt_cb;
xe->soc_remapper.set_telem_region(xe, CRI_IDX_TELEM_DISCOVERY);
break;
default:
- break;
+ drm_err(&xe->drm, "Unsupported platform: %u\n", platform);
+ return 0;
}
/*
@@ -516,5 +632,10 @@ void xe_vsec_init(struct xe_device *xe)
* resources.
*/
intel_vsec_register(dev, info);
+
+ if (platform == XE_VSEC_CRI)
+ xe_pm_runtime_put(xe);
+
+ return 0;
}
MODULE_IMPORT_NS("INTEL_VSEC");
diff --git a/drivers/gpu/drm/xe/xe_vsec.h b/drivers/gpu/drm/xe/xe_vsec.h
index a25b4e6e681b..c4a1e2fc67d8 100644
--- a/drivers/gpu/drm/xe/xe_vsec.h
+++ b/drivers/gpu/drm/xe/xe_vsec.h
@@ -9,7 +9,7 @@
struct device;
struct xe_device;
-void xe_vsec_init(struct xe_device *xe);
+int xe_vsec_init(struct xe_device *xe);
int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offset, u32 count);
#endif
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 18/20] drm/xe/vsec: Add PMT GUID internal access
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (16 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 17/20] drm/xe/vsec: Support late bind fw information Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 19/20] drm/xe/vsec: Update PMT " Michael J. Ruhl
` (5 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
Xe accesses the PMT infrastructure directly. The current usage is
supported ONLY by BMG devices.
CRI has further requirements for access.
Add the platform id to the GUID register define and use that for the
register access.
Add an API to allow access the GUID based on the platform.
Reviewed-by: Karthik Poosa <karthik.poosa@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/regs/xe_pmt.h | 4 ++-
drivers/gpu/drm/xe/xe_debugfs.c | 2 +-
drivers/gpu/drm/xe/xe_device_types.h | 2 ++
drivers/gpu/drm/xe/xe_hwmon.c | 2 +-
drivers/gpu/drm/xe/xe_pcode.c | 2 +-
drivers/gpu/drm/xe/xe_vsec.c | 46 ++++++++++++++++++++++++++++
drivers/gpu/drm/xe/xe_vsec.h | 1 +
7 files changed, 55 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/xe/regs/xe_pmt.h b/drivers/gpu/drm/xe/regs/xe_pmt.h
index 2f6658395587..fb5b5a8648ba 100644
--- a/drivers/gpu/drm/xe/regs/xe_pmt.h
+++ b/drivers/gpu/drm/xe/regs/xe_pmt.h
@@ -10,7 +10,7 @@
#define BMG_PMT_BASE_OFFSET 0xDB000
#define BMG_DISCOVERY_OFFSET (SOC_BASE + BMG_PMT_BASE_OFFSET)
-#define PUNIT_TELEMETRY_GUID XE_REG(BMG_DISCOVERY_OFFSET + 0x4)
+#define BMG_PUNIT_TELEMETRY_GUID XE_REG(BMG_DISCOVERY_OFFSET + 0x4)
#define BMG_ENERGY_STATUS_PMT_OFFSET (0x30)
#define ENERGY_PKG REG_GENMASK64(31, 0)
#define ENERGY_CARD REG_GENMASK64(63, 32)
@@ -24,6 +24,8 @@
/* for CRI discovery and telemetry are in an indexed window */
#define CRI_PMT_OFFSET (SOC_BASE + XE_PMT_BASE_OFFSET)
+#define CRI_PUNIT_TELEMETRY_GUID XE_REG(CRI_PMT_OFFSET + 0x4)
+
#define BMG_MODS_RESIDENCY_OFFSET (0x4D0)
#define BMG_G2_RESIDENCY_OFFSET (0x530)
#define BMG_G6_RESIDENCY_OFFSET (0x538)
diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
index 80f62634fae5..958fb717640a 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_debugfs.c
@@ -153,7 +153,7 @@ static void read_residency_counter(struct xe_device *xe, struct xe_mmio *mmio,
int ret;
ret = xe_pmt_telem_read(xe->drm.dev,
- xe_mmio_read32(mmio, PUNIT_TELEMETRY_GUID),
+ xe_mmio_read32(mmio, BMG_PUNIT_TELEMETRY_GUID),
&residency, offset, sizeof(residency));
if (ret != sizeof(residency)) {
drm_warn(&xe->drm, "%s counter failed to read, ret %d\n", name, ret);
diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index 8f5cc5d65419..ad6b4a5375ca 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -493,6 +493,8 @@ struct xe_device {
struct delayed_work work;
/** @pmt.retry_count: late-bind probe retry */
u32 retry_count;
+ /** @pmt.punit_guid_cache: cache of the PUINT GUID */
+ u32 punit_guid_cache;
} pmt;
/** @soc_remapper: SoC remapper object */
diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
index 5edeac961ec3..2032066d5f49 100644
--- a/drivers/gpu/drm/xe/xe_hwmon.c
+++ b/drivers/gpu/drm/xe/xe_hwmon.c
@@ -514,7 +514,7 @@ xe_hwmon_energy_get(struct xe_hwmon *hwmon, int channel, long *energy)
u64 pmt_val;
ret = xe_pmt_telem_read(hwmon->xe->drm.dev,
- xe_mmio_read32(mmio, PUNIT_TELEMETRY_GUID),
+ xe_mmio_read32(mmio, BMG_PUNIT_TELEMETRY_GUID),
&pmt_val, BMG_ENERGY_STATUS_PMT_OFFSET, sizeof(pmt_val));
if (ret != sizeof(pmt_val)) {
drm_warn(&hwmon->xe->drm, "energy read from pmt failed, ret %d\n", ret);
diff --git a/drivers/gpu/drm/xe/xe_pcode.c b/drivers/gpu/drm/xe/xe_pcode.c
index 266deecbb100..8c901e54f384 100644
--- a/drivers/gpu/drm/xe/xe_pcode.c
+++ b/drivers/gpu/drm/xe/xe_pcode.c
@@ -369,7 +369,7 @@ int xe_get_pcode_version(struct xe_device *xe, struct xe_pcode_version *version)
guard(xe_pm_runtime)(xe);
ret = xe_pmt_telem_read(xe->drm.dev,
- xe_mmio_read32(xe_root_tile_mmio(xe), PUNIT_TELEMETRY_GUID),
+ xe_mmio_read32(xe_root_tile_mmio(xe), BMG_PUNIT_TELEMETRY_GUID),
(u64 *)version, PUNIT_VERSION_OFFSET, sizeof(*version));
if (ret != sizeof(*version)) {
xe_warn(xe, "pcode version read from PMT failed, ret %pe\n", ERR_PTR(ret));
diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
index f905ef51df65..dd2965e7a162 100644
--- a/drivers/gpu/drm/xe/xe_vsec.c
+++ b/drivers/gpu/drm/xe/xe_vsec.c
@@ -578,6 +578,52 @@ static void vsec_disable_late_bind_work(void *arg)
xe_pm_runtime_put(xe);
}
+int xe_vsec_get_guid(struct xe_device *xe, u32 *guid)
+{
+ struct xe_mmio *mmio = xe_root_tile_mmio(xe);
+ int ret = 0;
+
+ if (IS_SRIOV_VF(xe))
+ return -EINVAL;
+
+ if (!xe_pm_runtime_get_if_active(xe))
+ return -ENODATA;
+
+ mutex_lock(&xe->pmt.lock);
+
+ if (xe->pmt.punit_guid_cache) {
+ *guid = xe->pmt.punit_guid_cache;
+ goto unlock;
+ }
+
+ switch (xe->info.platform) {
+ case XE_BATTLEMAGE:
+ *guid = xe_mmio_read32(mmio, BMG_PUNIT_TELEMETRY_GUID);
+ break;
+
+ case XE_CRESCENTISLAND:
+ xe->soc_remapper.set_telem_region(xe, CRI_IDX_TELEM_DISCOVERY);
+ *guid = xe_mmio_read32(mmio, CRI_PUNIT_TELEMETRY_GUID);
+ break;
+
+ default:
+ *guid = 0;
+ drm_err(&xe->drm, "Unsupported platform: %u\n", xe->info.platform);
+ ret = -EINVAL;
+ break;
+ }
+
+ /* the GUID is static, read once and cache for all requests */
+ if (*guid)
+ xe->pmt.punit_guid_cache = *guid;
+
+unlock:
+ mutex_unlock(&xe->pmt.lock);
+ xe_pm_runtime_put(xe);
+
+ return ret;
+}
+
/**
* xe_vsec_init - Initialize resources and add intel_vsec auxiliary
* interface
diff --git a/drivers/gpu/drm/xe/xe_vsec.h b/drivers/gpu/drm/xe/xe_vsec.h
index c4a1e2fc67d8..50187fdc1207 100644
--- a/drivers/gpu/drm/xe/xe_vsec.h
+++ b/drivers/gpu/drm/xe/xe_vsec.h
@@ -10,6 +10,7 @@ struct device;
struct xe_device;
int xe_vsec_init(struct xe_device *xe);
+int xe_vsec_get_guid(struct xe_device *xe, u32 *guid);
int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offset, u32 count);
#endif
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 19/20] drm/xe/vsec: Update PMT internal access
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (17 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 18/20] drm/xe/vsec: Add PMT GUID internal access Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 20/20] drm/xe/vsec: Refactor platform check Michael J. Ruhl
` (4 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
Current PMT internal access assumes BMG devices.
Use the new PMT GUID API to read the device specific guid.
Minor cleanup for a newly unused parameter (mmio).
Reviewed-by: Karthik Poosa <karthik.poosa@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/xe_debugfs.c | 26 ++++++++++++++------------
drivers/gpu/drm/xe/xe_hwmon.c | 10 ++++++++--
drivers/gpu/drm/xe/xe_pcode.c | 10 ++++++++--
3 files changed, 30 insertions(+), 16 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
index 958fb717640a..c56f0e4a9b90 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_debugfs.c
@@ -5,6 +5,7 @@
#include "xe_debugfs.h"
+#include <linux/array_size.h>
#include <linux/bits.h>
#include <linux/debugfs.h>
#include <linux/fault-inject.h>
@@ -21,7 +22,6 @@
#include "xe_gt_printk.h"
#include "xe_guc_ads.h"
#include "xe_hw_engine.h"
-#include "xe_mmio.h"
#include "xe_pagefault.h"
#include "xe_pcode.h"
#include "xe_pm.h"
@@ -146,15 +146,20 @@ static void xe_fault_inject_debugfs_register(struct xe_device *xe,
}
}
-static void read_residency_counter(struct xe_device *xe, struct xe_mmio *mmio,
- u32 offset, const char *name, struct drm_printer *p)
+static void read_residency_counter(struct xe_device *xe, u32 offset, const char *name,
+ struct drm_printer *p)
{
u64 residency = 0;
+ u32 guid;
int ret;
- ret = xe_pmt_telem_read(xe->drm.dev,
- xe_mmio_read32(mmio, BMG_PUNIT_TELEMETRY_GUID),
- &residency, offset, sizeof(residency));
+ ret = xe_vsec_get_guid(xe, &guid);
+ if (ret) {
+ drm_warn(&xe->drm, "PMT device is not available: %d\n", ret);
+ return;
+ }
+
+ ret = xe_pmt_telem_read(xe->drm.dev, guid, &residency, offset, sizeof(residency));
if (ret != sizeof(residency)) {
drm_warn(&xe->drm, "%s counter failed to read, ret %d\n", name, ret);
return;
@@ -293,13 +298,12 @@ static int pcode_info(struct seq_file *m, void *data)
static int dgfx_pkg_residencies_show(struct seq_file *m, void *data)
{
struct xe_device *xe;
- struct xe_mmio *mmio;
struct drm_printer p;
xe = node_to_xe(m->private);
p = drm_seq_file_printer(m);
guard(xe_pm_runtime)(xe);
- mmio = xe_root_tile_mmio(xe);
+
static const struct {
u32 offset;
const char *name;
@@ -313,7 +317,7 @@ static int dgfx_pkg_residencies_show(struct seq_file *m, void *data)
};
for (int i = 0; i < ARRAY_SIZE(residencies); i++)
- read_residency_counter(xe, mmio, residencies[i].offset, residencies[i].name, &p);
+ read_residency_counter(xe, residencies[i].offset, residencies[i].name, &p);
return 0;
}
@@ -321,13 +325,11 @@ static int dgfx_pkg_residencies_show(struct seq_file *m, void *data)
static int dgfx_pcie_link_residencies_show(struct seq_file *m, void *data)
{
struct xe_device *xe;
- struct xe_mmio *mmio;
struct drm_printer p;
xe = node_to_xe(m->private);
p = drm_seq_file_printer(m);
guard(xe_pm_runtime)(xe);
- mmio = xe_root_tile_mmio(xe);
static const struct {
u32 offset;
@@ -339,7 +341,7 @@ static int dgfx_pcie_link_residencies_show(struct seq_file *m, void *data)
};
for (int i = 0; i < ARRAY_SIZE(residencies); i++)
- read_residency_counter(xe, mmio, residencies[i].offset, residencies[i].name, &p);
+ read_residency_counter(xe, residencies[i].offset, residencies[i].name, &p);
return 0;
}
diff --git a/drivers/gpu/drm/xe/xe_hwmon.c b/drivers/gpu/drm/xe/xe_hwmon.c
index 2032066d5f49..57b2fbefa4c3 100644
--- a/drivers/gpu/drm/xe/xe_hwmon.c
+++ b/drivers/gpu/drm/xe/xe_hwmon.c
@@ -512,9 +512,15 @@ xe_hwmon_energy_get(struct xe_hwmon *hwmon, int channel, long *energy)
if (hwmon->xe->info.platform == XE_BATTLEMAGE) {
u64 pmt_val;
+ u32 guid;
- ret = xe_pmt_telem_read(hwmon->xe->drm.dev,
- xe_mmio_read32(mmio, BMG_PUNIT_TELEMETRY_GUID),
+ ret = xe_vsec_get_guid(hwmon->xe, &guid);
+ if (ret) {
+ drm_warn(&hwmon->xe->drm, "PMT device is not available: %d\n", ret);
+ *energy = 0;
+ return;
+ }
+ ret = xe_pmt_telem_read(hwmon->xe->drm.dev, guid,
&pmt_val, BMG_ENERGY_STATUS_PMT_OFFSET, sizeof(pmt_val));
if (ret != sizeof(pmt_val)) {
drm_warn(&hwmon->xe->drm, "energy read from pmt failed, ret %d\n", ret);
diff --git a/drivers/gpu/drm/xe/xe_pcode.c b/drivers/gpu/drm/xe/xe_pcode.c
index 8c901e54f384..fa9f45d565cb 100644
--- a/drivers/gpu/drm/xe/xe_pcode.c
+++ b/drivers/gpu/drm/xe/xe_pcode.c
@@ -365,11 +365,17 @@ ALLOW_ERROR_INJECTION(xe_pcode_probe_early, ERRNO); /* See xe_pci_probe */
int xe_get_pcode_version(struct xe_device *xe, struct xe_pcode_version *version)
{
int ret = 0;
+ u32 guid;
guard(xe_pm_runtime)(xe);
- ret = xe_pmt_telem_read(xe->drm.dev,
- xe_mmio_read32(xe_root_tile_mmio(xe), BMG_PUNIT_TELEMETRY_GUID),
+ ret = xe_vsec_get_guid(xe, &guid);
+ if (ret) {
+ xe_warn(xe, "PMT device is not available: %d\n", ret);
+ return ret;
+ }
+
+ ret = xe_pmt_telem_read(xe->drm.dev, guid,
(u64 *)version, PUNIT_VERSION_OFFSET, sizeof(*version));
if (ret != sizeof(*version)) {
xe_warn(xe, "pcode version read from PMT failed, ret %pe\n", ERR_PTR(ret));
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [PATCH v9 20/20] drm/xe/vsec: Refactor platform check
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (18 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 19/20] drm/xe/vsec: Update PMT " Michael J. Ruhl
@ 2026-09-16 20:11 ` Michael J. Ruhl
2026-09-16 20:44 ` ✗ CI.checkpatch: warning for Crescent Island PMT support (rev11) Patchwork
` (3 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Michael J. Ruhl @ 2026-09-16 20:11 UTC (permalink / raw)
To: platform-driver-x86, intel-xe, hansg, ilpo.jarvinen,
matthew.brost, rodrigo.vivi, thomas.hellstrom, airlied, simona,
david.e.box, anoop.c.vijay, badal.nilawar, matthew.d.roper,
james.ausmus, karthik.poosa
For debugfs, residencies and pcode_info are available on the BMG and
CRI (!SRIOV_VF) platforms.
Refactor to have one code path for adding the debugfs entries.
Reviewed-by: Karthik Poosa <karthik.poosa@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
---
drivers/gpu/drm/xe/xe_debugfs.c | 19 +++++++++----------
1 file changed, 9 insertions(+), 10 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_debugfs.c b/drivers/gpu/drm/xe/xe_debugfs.c
index c56f0e4a9b90..d90fa2dc6231 100644
--- a/drivers/gpu/drm/xe/xe_debugfs.c
+++ b/drivers/gpu/drm/xe/xe_debugfs.c
@@ -761,23 +761,22 @@ void xe_debugfs_register(struct xe_device *xe)
ARRAY_SIZE(debugfs_list),
root, minor);
- if (xe->info.platform == XE_BATTLEMAGE && !IS_SRIOV_VF(xe)) {
- drm_debugfs_create_files(debugfs_residencies,
- ARRAY_SIZE(debugfs_residencies),
- root, minor);
- }
-
/*
- * Pcode version read from PMT is currently only supported on CRI and BMG platforms in PF
- * mode, as both platforms support the necessary telemetry read mechanism and have a fixed
- * PUNIT_VERSION_OFFSET.
+ * Residencies and Pcode version read from PMT is currently only supported on CRI and BMG
+ * platforms in PF mode. Both platforms support the necessary telemetry read mechanism
+ * and have a fixed offsets for the required data.
* Attempting this access on other platforms must be verified before enabling support.
*/
if (!IS_SRIOV_VF(xe) &&
- (xe->info.platform == XE_CRESCENTISLAND || xe->info.platform == XE_BATTLEMAGE))
+ (xe->info.platform == XE_CRESCENTISLAND || xe->info.platform == XE_BATTLEMAGE)) {
+ drm_debugfs_create_files(debugfs_residencies,
+ ARRAY_SIZE(debugfs_residencies),
+ root, minor);
+
drm_debugfs_create_files(pcode_info_debugfs,
ARRAY_SIZE(pcode_info_debugfs),
root, minor);
+ }
debugfs_create_file("forcewake_all", 0400, root, xe,
&forcewake_all_fops);
--
2.43.0
^ permalink raw reply related [flat|nested] 34+ messages in thread
* Re: [PATCH v9 03/20] platform/x86/intel/pmt: refactor rc with a return value
2026-09-16 20:11 ` [PATCH v9 03/20] platform/x86/intel/pmt: refactor rc " Michael J. Ruhl
@ 2026-09-16 20:20 ` sashiko-bot
2026-09-17 9:55 ` Ilpo Järvinen
1 sibling, 0 replies; 34+ messages in thread
From: sashiko-bot @ 2026-09-16 20:20 UTC (permalink / raw)
To: Michael J. Ruhl; +Cc: intel-xe
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] pmt: incomplete refactoring of pmt_crashlog_supported return type
--
commit 6d60cc557787aac9b9d1c6b547f8f188b34dd10b
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
platform/x86/intel/pmt: refactor rc with a return value
Upcoming changes will include possible failures from HW accesses.
Refactor pmt_crashlog_rw() with a return value.
Update all necessary usage to use the return code.
> diff --git a/drivers/platform/x86/intel/pmt/crashlog.c b/drivers/platform/x86/intel/pmt/crashlog.c
> index 831cff743803e..b6540f3a9a17c 100644
> --- a/drivers/platform/x86/intel/pmt/crashlog.c
> +++ b/drivers/platform/x86/intel/pmt/crashlog.c
[ ... ]
> @@ -144,27 +144,29 @@ static int pmt_crashlog_rmw(struct crashlog_entry *crashlog, u32 bit, bool set)
[ ... ]
> -static bool pmt_crashlog_supported(struct intel_pmt_entry *entry, u32 *crash_type, u32 *version)
> +static int pmt_crashlog_supported(struct intel_pmt_entry *entry, u32 *crash_type, u32 *version)
> {
> u32 discovery_header = readl(entry->disc_table + CONTROL_OFFSET);
>
[Severity: Low]
Does this code leave pmt_crashlog_supported() returning boolean values
despite the return type change?
Looking at pmt_crashlog_supported(), it still returns true or false
instead of an error code:
if (*crash_type == CRASH_TYPE_OOBMSM && (*version == 0 || *version == 2))
return true;
return false;
If hardware access error codes like -EIO are later added as mentioned
in the commit message, will callers using !pmt_crashlog_supported()
incorrectly evaluate negative error codes as truthy and mask the error?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260916201139.2374531-22-michael.j.ruhl@intel.com?part=3
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v9 10/20] drm/xe/vsec: Support possible hotplug exit
2026-09-16 20:11 ` [PATCH v9 10/20] drm/xe/vsec: Support possible hotplug exit Michael J. Ruhl
@ 2026-09-16 20:21 ` sashiko-bot
0 siblings, 0 replies; 34+ messages in thread
From: sashiko-bot @ 2026-09-16 20:21 UTC (permalink / raw)
To: Michael J. Ruhl; +Cc: intel-xe
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] cleanup: mix of goto and scoped_guard() in xe_pmt_telem_read()
--
commit 5940c0b6f7d9cab3fae443cef41e2d74cd3f39e9
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
drm/xe/vsec: Support possible hotplug exit
This commit introduces DRM hotplug verification to the VSEC callback API.
It verifies that the device is valid using drm_dev_enter() and handles
cleanup on exit with drm_dev_exit().
> diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
> index ca5d02dce8189..c20cad9a4f1f2 100644
> --- a/drivers/gpu/drm/xe/xe_vsec.c
> +++ b/drivers/gpu/drm/xe/xe_vsec.c
[ ... ]
> @@ -171,13 +178,17 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
> u32 cap_type = FIELD_GET(GUID_CAP_TYPE, guid);
> u32 mem_region;
> u32 offset;
> - int ret;
> + int ret = 0;
> + int idx;
>
> xe_assert(xe, !IS_SRIOV_VF(xe));
>
> + if (!drm_dev_enter(&xe->drm, &idx))
> + return -ENODEV;
> +
> ret = xe_guid_decode(guid, &mem_region, &offset);
> if (ret)
> - return ret;
> + goto dev_exit;
>
> telem_addr += offset + user_offset;
>
> @@ -187,11 +198,14 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
> xe_pm_runtime_get(xe);
> break;
> case TELEMETRY:
> - if (!xe_pm_runtime_get_if_active(xe))
> - return -ENODATA;
> + if (!xe_pm_runtime_get_if_active(xe)) {
> + ret = -ENODATA;
> + goto dev_exit;
> + }
> break;
> case WATCHER:
> - return -EINVAL;
> + ret = -EINVAL;
> + goto dev_exit;
> }
>
> scoped_guard(mutex, &xe->pmt.lock) {
[Severity: Low]
Does mixing goto-based error handling and scoped_guard() in the same
function create an issue with the cleanup guidelines?
According to include/linux/cleanup.h, the expectation is that usage of
goto and cleanup helpers should never be mixed in the same function, as it
creates confusing ownership semantics.
Since xe_pmt_telem_read() now uses both a dev_exit goto label and
scoped_guard() for mutex management, could the drm_dev_exit() sequence be
converted to use a scope-based cleanup instead, or could the locking avoid
using scoped_guard() to keep the paradigms consistent?
> @@ -203,7 +217,10 @@ int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offse
>
> xe_pm_runtime_put(xe);
>
> - return count;
> +dev_exit:
> + drm_dev_exit(idx);
> +
> + return ret == 0 ? count : ret;
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260916201139.2374531-22-michael.j.ruhl@intel.com?part=10
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v9 17/20] drm/xe/vsec: Support late bind fw information
2026-09-16 20:11 ` [PATCH v9 17/20] drm/xe/vsec: Support late bind fw information Michael J. Ruhl
@ 2026-09-16 20:29 ` sashiko-bot
2026-09-17 12:30 ` Ruhl, Michael J
0 siblings, 1 reply; 34+ messages in thread
From: sashiko-bot @ 2026-09-16 20:29 UTC (permalink / raw)
To: Michael J. Ruhl; +Cc: intel-xe
Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [High] devres: memory leak and dangling devices due to worker racing with devres_release_all
- [High] pm: non-freezable delayed work accesses MMIO during system suspend
- [Medium] pm: asynchronous pm_runtime_put() during device removal causes incorrect power state
- [Medium] pm: uninterruptible msleep in wait_for_fw() blocks task freezer and system suspend
--
commit 2311d189c57553ad608d675783c5e664a010f6ef
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
drm/xe/vsec: Support late bind fw information
CRI FW is loaded on power on. Because of this, access to the FW cannot
be done until it is running.
Update the XE PMT probe and access to check for late bind devices,
verify, and wait for the appropriate FW state before probe or access.
> diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
> index d1427ec507285..f905ef51df656 100644
> --- a/drivers/gpu/drm/xe/xe_vsec.c
> +++ b/drivers/gpu/drm/xe/xe_vsec.c
[ ... ]
> @@ -281,6 +291,48 @@ static int xe_guid_decode(u32 guid, int *index, u32 *offset)
> return -ENODEV;
> }
>
> +static void cri_late_bind_probe_work(struct work_struct *work)
> +{
> + struct xe_device *xe = container_of(work, struct xe_device, pmt.work.work);
> +
> + if (xe_sysctrl_is_oobmsm_fw_ready(xe)) {
> + cri_late_bind_probe(xe);
> + xe_pm_runtime_put(xe);
> + return;
> + }
> +
> + xe->pmt.retry_count++;
> +
> + /* wait up to 20 seconds */
> + if (xe->pmt.retry_count == VSEC_LATE_BIND_RETRY) {
> + drm_warn(&xe->drm, "PMT probe: Late Binding failed to complete\n");
> + xe_pm_runtime_put(xe);
> + return;
> + }
> +
> + if (!schedule_delayed_work(&xe->pmt.work, msecs_to_jiffies(VSEC_LATE_BIND_DELAY_MSEC)))
> + xe_pm_runtime_put(xe);
> +}
[Severity: High]
Does scheduling this delayed work on the default non-freezable workqueue risk
MMIO access during system suspend?
If the system enters suspend (S3) while the worker is in its polling loop,
the PCI device is put into the D3 state. Because the worker is on a
non-freezable workqueue, it continues running and calls
xe_sysctrl_is_oobmsm_fw_ready(), which performs MMIO reads on powered-down
hardware.
> +
> +static bool wait_for_fw(struct xe_device *xe)
> +{
> + int retries = VSEC_LATE_BIND_RETRY; /* wait up to 20 secs */
> +
> + if (xe->info.platform != XE_CRESCENTISLAND)
> + return true;
> +
> + while (retries--) {
> + if (xe_sysctrl_is_oobmsm_fw_ready(xe))
> + return true;
> +
> + msleep(VSEC_LATE_BIND_DELAY_MSEC);
> + }
[Severity: Medium]
Could this uninterruptible sleep delay task freezing for up to 20 seconds
during system suspend?
If userspace initiates a read on the PMT telemetry sysfs file, calling
xe_pmt_telem_read(), it enters this wait_for_fw() loop. If a system suspend is
triggered concurrently, the uninterruptible msleep() loop prevents the task
from handling the freeze signal before the 20-second freezer timeout expires.
[ ... ]
> @@ -476,12 +544,46 @@ static enum xe_vsec get_platform_info(struct xe_device *xe)
> return vsec_platforms[xe->info.platform];
> }
>
> +static void cri_late_bind_probe(struct xe_device *xe)
> +{
> + struct intel_vsec_platform_info *info;
> + struct device *dev = xe->drm.dev;
> + enum xe_vsec platform;
> +
> + platform = get_platform_info(xe);
> + if (platform != XE_VSEC_CRI)
> + return;
> +
> + info = &xe_vsec_info[platform];
> + if (!info->headers)
> + return;
> +
> + guard(mutex)(&xe->pmt.lock);
> +
> + info->priv_data = &xe_cri_pmt_cb;
> + xe->soc_remapper.set_telem_region(xe, CRI_IDX_TELEM_DISCOVERY);
> +
> + intel_vsec_register(dev, info);
> +}
> +
> +static void vsec_disable_late_bind_work(void *arg)
> +{
> + struct xe_device *xe = arg;
> +
> + /*
> + * If the queued work is canceled, the runtime reference needs to be
> + * released here.
> + */
> + if (disable_delayed_work_sync(&xe->pmt.work))
> + xe_pm_runtime_put(xe);
> +}
[Severity: Medium]
Is it safe to use an asynchronous runtime put here during the device removal
path?
When device removal triggers this function via devres cleanup, the pending
async idle/suspend work can be cancelled by pm_runtime_disable(), leaving
the hardware in an active power state indefinitely. Should this be a
synchronous put (xe_pm_runtime_put_sync()) instead?
[ ... ]
> @@ -489,11 +591,11 @@ void xe_vsec_init(struct xe_device *xe)
[ ... ]
> case XE_VSEC_CRI:
> xe->pmt.base_offset = CRI_PMT_OFFSET;
> +
> + xe->pmt.retry_count = 0;
> + INIT_DELAYED_WORK(&xe->pmt.work, cri_late_bind_probe_work);
> +
> + xe_pm_runtime_get_noresume(xe);
> + if (!xe_sysctrl_is_oobmsm_fw_ready(xe)) {
> + schedule_delayed_work(&xe->pmt.work,
> + msecs_to_jiffies(VSEC_LATE_BIND_DELAY_MSEC));
> + return devm_add_action_or_reset(xe->drm.dev,
> + vsec_disable_late_bind_work,
> + xe);
> + }
> +
[Severity: High]
Can this worker thread race with devres_release_all() during device unbind?
If the driver is unbound while the worker is in its polling loop,
devres_release_all() splices the devres list and executes
vsec_disable_late_bind_work(), which waits for the worker to finish.
However, the worker calls intel_vsec_register() in cri_late_bind_probe(),
which adds new devres items to the device. Since devres_release_all() only
splices the list once before executing it, any devres items added by the
worker are permanently leaked.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260916201139.2374531-22-michael.j.ruhl@intel.com?part=17
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v9 09/20] drm/xe/vsec: Add DOC text for VSEC
2026-09-16 20:11 ` [PATCH v9 09/20] drm/xe/vsec: Add DOC text for VSEC Michael J. Ruhl
@ 2026-09-16 20:29 ` sashiko-bot
2026-09-17 9:56 ` Ilpo Järvinen
2026-09-17 9:57 ` Ilpo Järvinen
2 siblings, 0 replies; 34+ messages in thread
From: sashiko-bot @ 2026-09-16 20:29 UTC (permalink / raw)
To: Michael J. Ruhl; +Cc: intel-xe
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Low] drm/xe: documentation mismatch in xe_pmt_telem_read() returns
- [Low] drm/xe: typo 'setup up' in VSEC DOC text
--
commit 736841e08f59ea271b755582813f79005c246879
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
drm/xe/vsec: Add DOC text for VSEC
Add the necessary files and text to use the DOC system.
> diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
> index 1cb9a78ee0efd..ca5d02dce8189 100644
> --- a/drivers/gpu/drm/xe/xe_vsec.c
> +++ b/drivers/gpu/drm/xe/xe_vsec.c
> @@ -19,6 +19,17 @@
>
> #include "regs/xe_pmt.h"
>
> +/**
> + * DOC: VSEC
> + *
> + * Some GPUs support the PMT feature. For those that do, this API provides
> + * probe, discovery and usage (control and access) for GPUs that have PMT.
> + *
> + * PMT is usually accessed through a PCI function. However, that is not always
> + * available, so the PMT intel_vsec_register() function can be used to setup up
^^^^^^^^
[Severity: Low]
This isn't a bug, but there is a typo (setup up) in the newly added VSEC
documentation header.
> + * PMT usage.
> + */
> +
[ ... ]
> @@ -140,6 +151,18 @@ static int xe_guid_decode(u32 guid, int *index, u32 *offset)
> return 0;
> }
>
> +/**
> + * xe_pmt_telem_read - Given a device and a PMT GUID, read data into a buffer
> + * @dev: valid Xe device
> + * @guid: PMT GUID (from the PMT discovery struct)
> + * @data: buffer to place data in
> + * @user_offset: a user offset relative to the beginning of the data to read
> + * @count: bytes to read
> + *
> + * Return:
> + * * -EINVAL for VF and PMT WATCHER requests
> + * * count number of bytes read on success
> + */
[Severity: Low]
Is this documentation entirely accurate?
It claims to return -EINVAL for VF requests, but xe_pmt_telem_read() actually
uses an assertion (xe_assert) instead.
Additionally, the documentation completely omits the -ENODEV (from invalid
device IDs) and -ENODATA (from xe_pm_runtime_get_if_active failures) return
values.
> int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offset,
> u32 count)
> {
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260916201139.2374531-22-michael.j.ruhl@intel.com?part=9
^ permalink raw reply [flat|nested] 34+ messages in thread
* ✗ CI.checkpatch: warning for Crescent Island PMT support (rev11)
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (19 preceding siblings ...)
2026-09-16 20:11 ` [PATCH v9 20/20] drm/xe/vsec: Refactor platform check Michael J. Ruhl
@ 2026-09-16 20:44 ` Patchwork
2026-09-16 20:46 ` ✓ CI.KUnit: success " Patchwork
` (2 subsequent siblings)
23 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2026-09-16 20:44 UTC (permalink / raw)
To: Michael J. Ruhl; +Cc: intel-xe
== Series Details ==
Series: Crescent Island PMT support (rev11)
URL : https://patchwork.freedesktop.org/series/160717/
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
d875049d2b299159a272bd5151994970cdcd1e31
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 8f97867f96d880b8531ad15753a1efda34a679d6
Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
Date: Wed Sep 16 13:11:58 2026 -0700
drm/xe/vsec: Refactor platform check
For debugfs, residencies and pcode_info are available on the BMG and
CRI (!SRIOV_VF) platforms.
Refactor to have one code path for adding the debugfs entries.
Reviewed-by: Karthik Poosa <karthik.poosa@intel.com>
Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
+ /mt/dim checkpatch bb38af66c2f21340a7c081afbb7ace249357fbb5 drm-intel
4c26bbb89e96 platform/x86/intel/pmt: complete pcidev to device update
e6d2486d2b59 platform/x86/intel/pmt: refactor rmw with a return value
7053de2a17ae platform/x86/intel/pmt: refactor rc with a return value
3053eac3c446 platform/x86/intel/pmt: Add register access callbacks
0008275e6940 platform/x86/intel/pmt: Do not remap when using callbacks
ae8cc28a8e34 drm/xe/vsec: Do not register BMG PMT for VF
-:39: CHECK:UNNECESSARY_PARENTHESES: Unnecessary parentheses around 'xe->info.platform == XE_BATTLEMAGE'
#39: FILE: drivers/gpu/drm/xe/xe_vsec.c:188:
+ if (IS_SRIOV_VF(xe) && (xe->info.platform == XE_BATTLEMAGE))
total: 0 errors, 0 warnings, 1 checks, 26 lines checked
9ae8a70c4802 drm/xe/vsec: Correct locking order
e671b8ae4258 drm/xe/vsec: Use correct pm state get
106b5862ebfa drm/xe/vsec: Add DOC text for VSEC
-:21: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#21:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 53 lines checked
216a8d15dc21 drm/xe/vsec: Support possible hotplug exit
4f459d9c8f4f drm/xe/vsec: Refactor BattleMage PMT defines
5a57bede7285 drm/xe/vsec: Update VSEC probe order
751fe11da752 drm/xe/vsec: Add base_offset to allow for more flexibilty
574aa7b7d339 drm/xe/vsec: Support Crescent Island PMT
38e7e16e9d40 drm/xe/vsec: Crescent Island PMT decode
94089a3f736e drm/xe/vsec: Crescent Island PMT callbacks
7eb0e58d97f0 drm/xe/vsec: Support late bind fw information
36af95a6c3fe drm/xe/vsec: Add PMT GUID internal access
40631c0ad51a drm/xe/vsec: Update PMT internal access
8f97867f96d8 drm/xe/vsec: Refactor platform check
^ permalink raw reply [flat|nested] 34+ messages in thread
* ✓ CI.KUnit: success for Crescent Island PMT support (rev11)
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (20 preceding siblings ...)
2026-09-16 20:44 ` ✗ CI.checkpatch: warning for Crescent Island PMT support (rev11) Patchwork
@ 2026-09-16 20:46 ` Patchwork
2026-09-16 22:00 ` ✗ Xe.CI.BAT: failure " Patchwork
2026-09-17 1:39 ` ✗ Xe.CI.FULL: " Patchwork
23 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2026-09-16 20:46 UTC (permalink / raw)
To: Michael J. Ruhl; +Cc: intel-xe
== Series Details ==
Series: Crescent Island PMT support (rev11)
URL : https://patchwork.freedesktop.org/series/160717/
State : success
== Summary ==
+ trap cleanup EXIT
+ kunitconfigs=('/kernel/drivers/gpu/tests/.kunitconfig' '/kernel/drivers/gpu/drm/xe/.kunitconfig' '/kernel/drivers/gpu/drm/tests/.kunitconfig' '/kernel/drivers/gpu/drm/ttm/tests/.kunitconfig' '/kernel/drivers/dma-buf/.kunitconfig')
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/tests/.kunitconfig
[20:44:47] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:44:51] 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
[20:45:12] Starting KUnit Kernel (1/1)...
[20:45:12] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:45:12] ============= refcount_interrupt (4 subtests) ==============
[20:45:12] [PASSED] test_single_irq_change
[20:45:12] [PASSED] test_nested_irq_change
[20:45:12] [PASSED] test_multiple_irq_change
[20:45:12] [PASSED] test_irq_save
[20:45:12] =============== [PASSED] refcount_interrupt ================
[20:45:12] ================= gpu_buddy (14 subtests) ==================
[20:45:12] [PASSED] gpu_test_buddy_alloc_limit
[20:45:12] [PASSED] gpu_test_buddy_alloc_optimistic
[20:45:12] [PASSED] gpu_test_buddy_alloc_pessimistic
[20:45:12] [PASSED] gpu_test_buddy_alloc_pathological
[20:45:12] [PASSED] gpu_test_buddy_alloc_contiguous
[20:45:12] [PASSED] gpu_test_buddy_alloc_clear
[20:45:12] [PASSED] gpu_test_buddy_alloc_range
[20:45:12] [PASSED] gpu_test_buddy_alloc_range_bias
[20:45:13] [PASSED] gpu_test_buddy_fragmentation_performance
[20:45:13] [PASSED] gpu_test_buddy_dirty_tracker_performance
[20:45:13] [PASSED] gpu_test_buddy_alloc_exceeds_max_order
[20:45:13] [PASSED] gpu_test_buddy_offset_aligned_allocation
[20:45:13] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress
[20:45:13] [PASSED] gpu_test_buddy_addr_to_block
[20:45:13] ==================== [PASSED] gpu_buddy ====================
[20:45:13] ============================================================
[20:45:13] Testing complete. Ran 18 tests: passed: 18
[20:45:14] Elapsed time: 26.616s total, 4.357s configuring, 20.341s building, 1.873s running
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/xe/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[20:45:14] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:45:16] 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
[20:45:49] Starting KUnit Kernel (1/1)...
[20:45:49] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:45:49] ============= refcount_interrupt (4 subtests) ==============
[20:45:49] [PASSED] test_single_irq_change
[20:45:49] [PASSED] test_nested_irq_change
[20:45:49] [PASSED] test_multiple_irq_change
[20:45:49] [PASSED] test_irq_save
[20:45:49] =============== [PASSED] refcount_interrupt ================
[20:45:49] ================== guc_buf (11 subtests) ===================
[20:45:49] [PASSED] test_smallest
[20:45:49] [PASSED] test_largest
[20:45:49] [PASSED] test_granular
[20:45:49] [PASSED] test_unique
[20:45:49] [PASSED] test_overlap
[20:45:49] [PASSED] test_reusable
[20:45:49] [PASSED] test_too_big
[20:45:49] [PASSED] test_flush
[20:45:49] [PASSED] test_lookup
[20:45:49] [PASSED] test_data
[20:45:49] [PASSED] test_class
[20:45:49] ===================== [PASSED] guc_buf =====================
[20:45:49] =================== guc_dbm (7 subtests) ===================
[20:45:49] [PASSED] test_empty
[20:45:49] [PASSED] test_default
[20:45:49] ======================== test_size ========================
[20:45:49] [PASSED] 4
[20:45:49] [PASSED] 8
[20:45:49] [PASSED] 32
[20:45:49] [PASSED] 256
[20:45:49] ==================== [PASSED] test_size ====================
[20:45:49] ======================= test_reuse ========================
[20:45:49] [PASSED] 4
[20:45:49] [PASSED] 8
[20:45:49] [PASSED] 32
[20:45:49] [PASSED] 256
[20:45:49] =================== [PASSED] test_reuse ====================
[20:45:49] =================== test_range_overlap ====================
[20:45:49] [PASSED] 4
[20:45:49] [PASSED] 8
[20:45:49] [PASSED] 32
[20:45:49] [PASSED] 256
[20:45:49] =============== [PASSED] test_range_overlap ================
[20:45:49] =================== test_range_compact ====================
[20:45:49] [PASSED] 4
[20:45:49] [PASSED] 8
[20:45:49] [PASSED] 32
[20:45:49] [PASSED] 256
[20:45:49] =============== [PASSED] test_range_compact ================
[20:45:49] ==================== test_range_spare =====================
[20:45:49] [PASSED] 4
[20:45:49] [PASSED] 8
[20:45:49] [PASSED] 32
[20:45:49] [PASSED] 256
[20:45:49] ================ [PASSED] test_range_spare =================
[20:45:49] ===================== [PASSED] guc_dbm =====================
[20:45:49] =================== guc_idm (6 subtests) ===================
[20:45:49] [PASSED] bad_init
[20:45:49] [PASSED] no_init
[20:45:49] [PASSED] init_fini
[20:45:49] [PASSED] check_used
[20:45:49] [PASSED] check_quota
[20:45:49] [PASSED] check_all
[20:45:49] ===================== [PASSED] guc_idm =====================
[20:45:49] =============== guc_klv_helpers (9 subtests) ===============
[20:45:49] [PASSED] test_count
[20:45:49] [PASSED] test_encode_u32
[20:45:49] [PASSED] test_encode_u64
[20:45:49] [PASSED] test_encode_string
[20:45:49] [PASSED] test_encode_object_raw
[20:45:49] [PASSED] test_encode_object_klv
[20:45:49] [PASSED] test_encode_object_nested
[20:45:49] [PASSED] test_encode_object_basic
[20:45:49] [PASSED] test_print
[20:45:49] ================= [PASSED] guc_klv_helpers =================
[20:45:49] =================== xe_log (4 subtests) ====================
[20:45:49] [PASSED] demo_cper
[20:45:49] [PASSED] demo_dmesg
[20:45:49] ======================= test_dmesg ========================
[20:45:49] [PASSED] test_fatal
[20:45:49] [PASSED] test_fatal_tile
[20:45:49] [PASSED] test_fatal_gt
[20:45:49] [PASSED] test_fatal_comp
[20:45:49] [PASSED] test_fatal_comp_tile
[20:45:49] [PASSED] test_fatal_comp_gt
[20:45:49] [PASSED] test_fatal_all
[20:45:49] [PASSED] test_recoverable
[20:45:49] [PASSED] test_recoverable_tile
[20:45:49] [PASSED] test_recoverable_gt
[20:45:49] [PASSED] test_recoverable_comp
[20:45:49] [PASSED] test_recoverable_comp_tile
[20:45:49] [PASSED] test_recoverable_comp_gt
[20:45:49] [PASSED] test_recoverable_all
[20:45:49] [PASSED] test_info
[20:45:49] [PASSED] test_info_tile
[20:45:49] [PASSED] test_info_gt
[20:45:49] [PASSED] test_info_err
[20:45:49] [PASSED] test_info_comp
[20:45:49] [PASSED] test_info_comp_tile
[20:45:49] [PASSED] test_info_comp_gt
[20:45:49] [PASSED] test_info_all
[20:45:49] [PASSED] test_hw_fatal
[20:45:49] [PASSED] test_hw_recoverable
[20:45:49] [PASSED] test_hw_corrected
[20:45:49] [PASSED] test_hw_informational
[20:45:49] =================== [PASSED] test_dmesg ====================
[20:45:49] ====================== test_invalid =======================
[20:45:49] [SKIPPED] no-component no-location no-warn (requires CONFIG_DRM_XE_DEBUG)
[20:45:49] [SKIPPED] reserved location (requires CONFIG_DRM_XE_DEBUG)
[20:45:49] [SKIPPED] unknown location (requires CONFIG_DRM_XE_DEBUG)
[20:45:49] [SKIPPED] nonzero-device-id location (requires CONFIG_DRM_XE_DEBUG)
[20:45:49] [SKIPPED] invalid-tile-id location (requires CONFIG_DRM_XE_DEBUG)
[20:45:49] [SKIPPED] invalid-gt-id location (requires CONFIG_DRM_XE_DEBUG)
[20:45:49] [SKIPPED] unknown component class (requires CONFIG_DRM_XE_DEBUG)
[20:45:49] [SKIPPED] unknown system component (requires CONFIG_DRM_XE_DEBUG)
[20:45:49] [SKIPPED] unknown hardware component (requires CONFIG_DRM_XE_DEBUG)
[20:45:49] [SKIPPED] unknown component and location (requires CONFIG_DRM_XE_DEBUG)
[20:45:49] ================== [SKIPPED] test_invalid ==================
[20:45:49] ===================== [PASSED] xe_log ======================
[20:45:49] ================== no_relay (3 subtests) ===================
[20:45:49] [PASSED] xe_drops_guc2pf_if_not_ready
[20:45:49] [PASSED] xe_drops_guc2vf_if_not_ready
[20:45:49] [PASSED] xe_rejects_send_if_not_ready
[20:45:49] ==================== [PASSED] no_relay =====================
[20:45:49] ================== pf_relay (14 subtests) ==================
[20:45:49] [PASSED] pf_rejects_guc2pf_too_short
[20:45:49] [PASSED] pf_rejects_guc2pf_too_long
[20:45:49] [PASSED] pf_rejects_guc2pf_no_payload
[20:45:49] [PASSED] pf_fails_no_payload
[20:45:49] [PASSED] pf_fails_bad_origin
[20:45:49] [PASSED] pf_fails_bad_type
[20:45:49] [PASSED] pf_txn_reports_error
[20:45:49] [PASSED] pf_txn_sends_pf2guc
[20:45:49] [PASSED] pf_sends_pf2guc
[20:45:49] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:45:49] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:45:49] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:45:49] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:45:49] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[20:45:49] ==================== [PASSED] pf_relay =====================
[20:45:49] ================== vf_relay (3 subtests) ===================
[20:45:49] [PASSED] vf_rejects_guc2vf_too_short
[20:45:49] [PASSED] vf_rejects_guc2vf_too_long
[20:45:49] [PASSED] vf_rejects_guc2vf_no_payload
[20:45:49] ==================== [PASSED] vf_relay =====================
[20:45:49] ================ pf_gt_config (9 subtests) =================
[20:45:49] [PASSED] fair_contexts_1vf
[20:45:49] [PASSED] fair_doorbells_1vf
[20:45:49] [PASSED] fair_ggtt_1vf
[20:45:49] ====================== fair_vram_1vf ======================
[20:45:49] [PASSED] 3.50 GiB
[20:45:49] [PASSED] 11.5 GiB
[20:45:49] [PASSED] 15.5 GiB
[20:45:49] [PASSED] 31.5 GiB
[20:45:49] [PASSED] 63.5 GiB
[20:45:49] [PASSED] 1.91 GiB
[20:45:49] ================== [PASSED] fair_vram_1vf ==================
[20:45:49] ================ fair_vram_1vf_admin_only =================
[20:45:49] [PASSED] 3.50 GiB
[20:45:49] [PASSED] 11.5 GiB
[20:45:49] [PASSED] 15.5 GiB
[20:45:49] [PASSED] 31.5 GiB
[20:45:49] [PASSED] 63.5 GiB
[20:45:49] [PASSED] 1.91 GiB
[20:45:49] ============ [PASSED] fair_vram_1vf_admin_only =============
[20:45:49] ====================== fair_contexts ======================
[20:45:49] [PASSED] 1 VF
[20:45:49] [PASSED] 2 VFs
[20:45:49] [PASSED] 3 VFs
[20:45:49] [PASSED] 4 VFs
[20:45:49] [PASSED] 5 VFs
[20:45:49] [PASSED] 6 VFs
[20:45:49] [PASSED] 7 VFs
[20:45:49] [PASSED] 8 VFs
[20:45:49] [PASSED] 9 VFs
[20:45:49] [PASSED] 10 VFs
[20:45:49] [PASSED] 11 VFs
[20:45:49] [PASSED] 12 VFs
[20:45:49] [PASSED] 13 VFs
[20:45:49] [PASSED] 14 VFs
[20:45:49] [PASSED] 15 VFs
[20:45:49] [PASSED] 16 VFs
[20:45:49] [PASSED] 17 VFs
[20:45:49] [PASSED] 18 VFs
[20:45:49] [PASSED] 19 VFs
[20:45:49] [PASSED] 20 VFs
[20:45:49] [PASSED] 21 VFs
[20:45:49] [PASSED] 22 VFs
[20:45:49] [PASSED] 23 VFs
[20:45:49] [PASSED] 24 VFs
[20:45:49] [PASSED] 25 VFs
[20:45:49] [PASSED] 26 VFs
[20:45:49] [PASSED] 27 VFs
[20:45:49] [PASSED] 28 VFs
[20:45:49] [PASSED] 29 VFs
[20:45:49] [PASSED] 30 VFs
[20:45:49] [PASSED] 31 VFs
[20:45:49] [PASSED] 32 VFs
[20:45:49] [PASSED] 33 VFs
[20:45:49] [PASSED] 34 VFs
[20:45:49] [PASSED] 35 VFs
[20:45:49] [PASSED] 36 VFs
[20:45:49] [PASSED] 37 VFs
[20:45:49] [PASSED] 38 VFs
[20:45:49] [PASSED] 39 VFs
[20:45:49] [PASSED] 40 VFs
[20:45:49] [PASSED] 41 VFs
[20:45:49] [PASSED] 42 VFs
[20:45:49] [PASSED] 43 VFs
[20:45:49] [PASSED] 44 VFs
[20:45:49] [PASSED] 45 VFs
[20:45:49] [PASSED] 46 VFs
[20:45:49] [PASSED] 47 VFs
[20:45:49] [PASSED] 48 VFs
[20:45:49] [PASSED] 49 VFs
[20:45:49] [PASSED] 50 VFs
[20:45:49] [PASSED] 51 VFs
[20:45:49] [PASSED] 52 VFs
[20:45:49] [PASSED] 53 VFs
[20:45:49] [PASSED] 54 VFs
[20:45:49] [PASSED] 55 VFs
[20:45:49] [PASSED] 56 VFs
[20:45:49] [PASSED] 57 VFs
[20:45:49] [PASSED] 58 VFs
[20:45:49] [PASSED] 59 VFs
[20:45:49] [PASSED] 60 VFs
[20:45:49] [PASSED] 61 VFs
[20:45:49] [PASSED] 62 VFs
[20:45:49] [PASSED] 63 VFs
[20:45:49] ================== [PASSED] fair_contexts ==================
[20:45:49] ===================== fair_doorbells ======================
[20:45:49] [PASSED] 1 VF
[20:45:49] [PASSED] 2 VFs
[20:45:49] [PASSED] 3 VFs
[20:45:49] [PASSED] 4 VFs
[20:45:49] [PASSED] 5 VFs
[20:45:49] [PASSED] 6 VFs
[20:45:49] [PASSED] 7 VFs
[20:45:49] [PASSED] 8 VFs
[20:45:49] [PASSED] 9 VFs
[20:45:49] [PASSED] 10 VFs
[20:45:49] [PASSED] 11 VFs
[20:45:49] [PASSED] 12 VFs
[20:45:49] [PASSED] 13 VFs
[20:45:49] [PASSED] 14 VFs
[20:45:49] [PASSED] 15 VFs
[20:45:49] [PASSED] 16 VFs
[20:45:49] [PASSED] 17 VFs
[20:45:49] [PASSED] 18 VFs
[20:45:49] [PASSED] 19 VFs
[20:45:49] [PASSED] 20 VFs
[20:45:49] [PASSED] 21 VFs
[20:45:49] [PASSED] 22 VFs
[20:45:49] [PASSED] 23 VFs
[20:45:49] [PASSED] 24 VFs
[20:45:49] [PASSED] 25 VFs
[20:45:49] [PASSED] 26 VFs
[20:45:49] [PASSED] 27 VFs
[20:45:49] [PASSED] 28 VFs
[20:45:49] [PASSED] 29 VFs
[20:45:49] [PASSED] 30 VFs
[20:45:49] [PASSED] 31 VFs
[20:45:49] [PASSED] 32 VFs
[20:45:49] [PASSED] 33 VFs
[20:45:49] [PASSED] 34 VFs
[20:45:49] [PASSED] 35 VFs
[20:45:49] [PASSED] 36 VFs
[20:45:49] [PASSED] 37 VFs
[20:45:49] [PASSED] 38 VFs
[20:45:49] [PASSED] 39 VFs
[20:45:49] [PASSED] 40 VFs
[20:45:49] [PASSED] 41 VFs
[20:45:49] [PASSED] 42 VFs
[20:45:49] [PASSED] 43 VFs
[20:45:49] [PASSED] 44 VFs
[20:45:49] [PASSED] 45 VFs
[20:45:49] [PASSED] 46 VFs
[20:45:49] [PASSED] 47 VFs
[20:45:49] [PASSED] 48 VFs
[20:45:49] [PASSED] 49 VFs
[20:45:49] [PASSED] 50 VFs
[20:45:49] [PASSED] 51 VFs
[20:45:49] [PASSED] 52 VFs
[20:45:49] [PASSED] 53 VFs
[20:45:49] [PASSED] 54 VFs
[20:45:49] [PASSED] 55 VFs
[20:45:49] [PASSED] 56 VFs
[20:45:49] [PASSED] 57 VFs
[20:45:49] [PASSED] 58 VFs
[20:45:49] [PASSED] 59 VFs
[20:45:49] [PASSED] 60 VFs
[20:45:49] [PASSED] 61 VFs
[20:45:49] [PASSED] 62 VFs
[20:45:49] [PASSED] 63 VFs
[20:45:49] ================= [PASSED] fair_doorbells ==================
[20:45:49] ======================== fair_ggtt ========================
[20:45:49] [PASSED] 1 VF
[20:45:49] [PASSED] 2 VFs
[20:45:49] [PASSED] 3 VFs
[20:45:49] [PASSED] 4 VFs
[20:45:49] [PASSED] 5 VFs
[20:45:49] [PASSED] 6 VFs
[20:45:49] [PASSED] 7 VFs
[20:45:49] [PASSED] 8 VFs
[20:45:49] [PASSED] 9 VFs
[20:45:49] [PASSED] 10 VFs
[20:45:49] [PASSED] 11 VFs
[20:45:49] [PASSED] 12 VFs
[20:45:49] [PASSED] 13 VFs
[20:45:49] [PASSED] 14 VFs
[20:45:49] [PASSED] 15 VFs
[20:45:49] [PASSED] 16 VFs
[20:45:49] [PASSED] 17 VFs
[20:45:49] [PASSED] 18 VFs
[20:45:49] [PASSED] 19 VFs
[20:45:49] [PASSED] 20 VFs
[20:45:49] [PASSED] 21 VFs
[20:45:49] [PASSED] 22 VFs
[20:45:50] [PASSED] 23 VFs
[20:45:50] [PASSED] 24 VFs
[20:45:50] [PASSED] 25 VFs
[20:45:50] [PASSED] 26 VFs
[20:45:50] [PASSED] 27 VFs
[20:45:50] [PASSED] 28 VFs
[20:45:50] [PASSED] 29 VFs
[20:45:50] [PASSED] 30 VFs
[20:45:50] [PASSED] 31 VFs
[20:45:50] [PASSED] 32 VFs
[20:45:50] [PASSED] 33 VFs
[20:45:50] [PASSED] 34 VFs
[20:45:50] [PASSED] 35 VFs
[20:45:50] [PASSED] 36 VFs
[20:45:50] [PASSED] 37 VFs
[20:45:50] [PASSED] 38 VFs
[20:45:50] [PASSED] 39 VFs
[20:45:50] [PASSED] 40 VFs
[20:45:50] [PASSED] 41 VFs
[20:45:50] [PASSED] 42 VFs
[20:45:50] [PASSED] 43 VFs
[20:45:50] [PASSED] 44 VFs
[20:45:50] [PASSED] 45 VFs
[20:45:50] [PASSED] 46 VFs
[20:45:50] [PASSED] 47 VFs
[20:45:50] [PASSED] 48 VFs
[20:45:50] [PASSED] 49 VFs
[20:45:50] [PASSED] 50 VFs
[20:45:50] [PASSED] 51 VFs
[20:45:50] [PASSED] 52 VFs
[20:45:50] [PASSED] 53 VFs
[20:45:50] [PASSED] 54 VFs
[20:45:50] [PASSED] 55 VFs
[20:45:50] [PASSED] 56 VFs
[20:45:50] [PASSED] 57 VFs
[20:45:50] [PASSED] 58 VFs
[20:45:50] [PASSED] 59 VFs
[20:45:50] [PASSED] 60 VFs
[20:45:50] [PASSED] 61 VFs
[20:45:50] [PASSED] 62 VFs
[20:45:50] [PASSED] 63 VFs
[20:45:50] ==================== [PASSED] fair_ggtt ====================
[20:45:50] ======================== fair_vram ========================
[20:45:50] [PASSED] 1 VF
[20:45:50] [PASSED] 2 VFs
[20:45:50] [PASSED] 3 VFs
[20:45:50] [PASSED] 4 VFs
[20:45:50] [PASSED] 5 VFs
[20:45:50] [PASSED] 6 VFs
[20:45:50] [PASSED] 7 VFs
[20:45:50] [PASSED] 8 VFs
[20:45:50] [PASSED] 9 VFs
[20:45:50] [PASSED] 10 VFs
[20:45:50] [PASSED] 11 VFs
[20:45:50] [PASSED] 12 VFs
[20:45:50] [PASSED] 13 VFs
[20:45:50] [PASSED] 14 VFs
[20:45:50] [PASSED] 15 VFs
[20:45:50] [PASSED] 16 VFs
[20:45:50] [PASSED] 17 VFs
[20:45:50] [PASSED] 18 VFs
[20:45:50] [PASSED] 19 VFs
[20:45:50] [PASSED] 20 VFs
[20:45:50] [PASSED] 21 VFs
[20:45:50] [PASSED] 22 VFs
[20:45:50] [PASSED] 23 VFs
[20:45:50] [PASSED] 24 VFs
[20:45:50] [PASSED] 25 VFs
[20:45:50] [PASSED] 26 VFs
[20:45:50] [PASSED] 27 VFs
[20:45:50] [PASSED] 28 VFs
[20:45:50] [PASSED] 29 VFs
[20:45:50] [PASSED] 30 VFs
[20:45:50] [PASSED] 31 VFs
[20:45:50] [PASSED] 32 VFs
[20:45:50] [PASSED] 33 VFs
[20:45:50] [PASSED] 34 VFs
[20:45:50] [PASSED] 35 VFs
[20:45:50] [PASSED] 36 VFs
[20:45:50] [PASSED] 37 VFs
[20:45:50] [PASSED] 38 VFs
[20:45:50] [PASSED] 39 VFs
[20:45:50] [PASSED] 40 VFs
[20:45:50] [PASSED] 41 VFs
[20:45:50] [PASSED] 42 VFs
[20:45:50] [PASSED] 43 VFs
[20:45:50] [PASSED] 44 VFs
[20:45:50] [PASSED] 45 VFs
[20:45:50] [PASSED] 46 VFs
[20:45:50] [PASSED] 47 VFs
[20:45:50] [PASSED] 48 VFs
[20:45:50] [PASSED] 49 VFs
[20:45:50] [PASSED] 50 VFs
[20:45:50] [PASSED] 51 VFs
[20:45:50] [PASSED] 52 VFs
[20:45:50] [PASSED] 53 VFs
[20:45:50] [PASSED] 54 VFs
[20:45:50] [PASSED] 55 VFs
[20:45:50] [PASSED] 56 VFs
[20:45:50] [PASSED] 57 VFs
[20:45:50] [PASSED] 58 VFs
[20:45:50] [PASSED] 59 VFs
[20:45:50] [PASSED] 60 VFs
[20:45:50] [PASSED] 61 VFs
[20:45:50] [PASSED] 62 VFs
[20:45:50] [PASSED] 63 VFs
[20:45:50] ==================== [PASSED] fair_vram ====================
[20:45:50] ================== [PASSED] pf_gt_config ===================
[20:45:50] ===================== lmtt (1 subtest) =====================
[20:45:50] ======================== test_ops =========================
[20:45:50] [PASSED] 2-level
[20:45:50] [PASSED] multi-level
[20:45:50] ==================== [PASSED] test_ops =====================
[20:45:50] ====================== [PASSED] lmtt =======================
[20:45:50] ================= sriov_packet (1 subtest) =================
[20:45:50] [PASSED] test_descriptor_init
[20:45:50] ================== [PASSED] sriov_packet ===================
[20:45:50] ================= pf_service (11 subtests) =================
[20:45:50] [PASSED] pf_negotiate_any
[20:45:50] [PASSED] pf_negotiate_base_match
[20:45:50] [PASSED] pf_negotiate_base_newer
[20:45:50] [PASSED] pf_negotiate_base_next
[20:45:50] [SKIPPED] pf_negotiate_base_older (no older minor)
[20:45:50] [PASSED] pf_negotiate_base_prev
[20:45:50] [PASSED] pf_negotiate_latest_match
[20:45:50] [PASSED] pf_negotiate_latest_newer
[20:45:50] [PASSED] pf_negotiate_latest_next
[20:45:50] [SKIPPED] pf_negotiate_latest_older (no older minor)
[20:45:50] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[20:45:50] =================== [PASSED] pf_service ====================
[20:45:50] ================= xe_guc_g2g (2 subtests) ==================
[20:45:50] ============== xe_live_guc_g2g_kunit_default ==============
[20:45:50] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[20:45:50] ============== xe_live_guc_g2g_kunit_allmem ===============
[20:45:50] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[20:45:50] =================== [SKIPPED] xe_guc_g2g ===================
[20:45:50] =================== xe_mocs (2 subtests) ===================
[20:45:50] ================ xe_live_mocs_kernel_kunit ================
[20:45:50] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[20:45:50] ================ xe_live_mocs_reset_kunit =================
[20:45:50] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[20:45:50] ==================== [SKIPPED] xe_mocs =====================
[20:45:50] ================= xe_migrate (2 subtests) ==================
[20:45:50] ================= xe_migrate_sanity_kunit =================
[20:45:50] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[20:45:50] ================== xe_validate_ccs_kunit ==================
[20:45:50] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[20:45:50] =================== [SKIPPED] xe_migrate ===================
[20:45:50] ================== xe_dma_buf (1 subtest) ==================
[20:45:50] ==================== xe_dma_buf_kunit =====================
[20:45:50] ================ [SKIPPED] xe_dma_buf_kunit ================
[20:45:50] =================== [SKIPPED] xe_dma_buf ===================
[20:45:50] ================= xe_bo_shrink (1 subtest) =================
[20:45:50] =================== xe_bo_shrink_kunit ====================
[20:45:50] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[20:45:50] ================== [SKIPPED] xe_bo_shrink ==================
[20:45:50] ==================== xe_bo (2 subtests) ====================
[20:45:50] ================== xe_ccs_migrate_kunit ===================
[20:45:50] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[20:45:50] ==================== xe_bo_evict_kunit ====================
[20:45:50] =============== [SKIPPED] xe_bo_evict_kunit ================
[20:45:50] ===================== [SKIPPED] xe_bo ======================
[20:45:50] =================== xe_any (9 subtests) ====================
[20:45:50] [PASSED] test_to_xe
[20:45:50] [PASSED] test_to_dev
[20:45:50] [PASSED] test_to_pdev
[20:45:50] [PASSED] test_to_drm
[20:45:50] [PASSED] test_if_pdev
[20:45:50] [PASSED] test_if_xe
[20:45:50] [PASSED] test_if_tile
[20:45:50] [PASSED] test_if_gt
[20:45:50] [PASSED] test_to_id
[20:45:50] ===================== [PASSED] xe_any ======================
[20:45:50] ==================== args (13 subtests) ====================
[20:45:50] [PASSED] count_args_test
[20:45:50] [PASSED] call_args_example
[20:45:50] [PASSED] call_args_test
[20:45:50] [PASSED] drop_first_arg_example
[20:45:50] [PASSED] drop_first_arg_test
[20:45:50] [PASSED] first_arg_example
[20:45:50] [PASSED] first_arg_test
[20:45:50] [PASSED] last_arg_example
[20:45:50] [PASSED] last_arg_test
[20:45:50] [PASSED] pick_arg_example
[20:45:50] [PASSED] if_args_example
[20:45:50] [PASSED] if_args_test
[20:45:50] [PASSED] sep_comma_example
[20:45:50] ====================== [PASSED] args =======================
[20:45:50] =================== xe_pci (3 subtests) ====================
[20:45:50] ==================== check_graphics_ip ====================
[20:45:50] [PASSED] 12.00 Xe_LP
[20:45:50] [PASSED] 12.10 Xe_LP+
[20:45:50] [PASSED] 12.55 Xe_HPG
[20:45:50] [PASSED] 12.60 Xe_HPC
[20:45:50] [PASSED] 12.70 Xe_LPG
[20:45:50] [PASSED] 12.71 Xe_LPG
[20:45:50] [PASSED] 12.74 Xe_LPG+
[20:45:50] [PASSED] 20.01 Xe2_HPG
[20:45:50] [PASSED] 20.02 Xe2_HPG
[20:45:50] [PASSED] 20.04 Xe2_LPG
[20:45:50] [PASSED] 30.00 Xe3_LPG
[20:45:50] [PASSED] 30.01 Xe3_LPG
[20:45:50] [PASSED] 30.03 Xe3_LPG
[20:45:50] [PASSED] 30.04 Xe3_LPG
[20:45:50] [PASSED] 30.05 Xe3_LPG
[20:45:50] [PASSED] 35.10 Xe3p_LPG
[20:45:50] [PASSED] 35.11 Xe3p_XPC
[20:45:50] ================ [PASSED] check_graphics_ip ================
[20:45:50] ===================== check_media_ip ======================
[20:45:50] [PASSED] 12.00 Xe_M
[20:45:50] [PASSED] 12.55 Xe_HPM
[20:45:50] [PASSED] 13.00 Xe_LPM+
[20:45:50] [PASSED] 13.01 Xe2_HPM
[20:45:50] [PASSED] 20.00 Xe2_LPM
[20:45:50] [PASSED] 30.00 Xe3_LPM
[20:45:50] [PASSED] 30.02 Xe3_LPM
[20:45:50] [PASSED] 35.00 Xe3p_LPM
[20:45:50] [PASSED] 35.03 Xe3p_HPM
[20:45:50] ================= [PASSED] check_media_ip ==================
[20:45:50] =================== check_platform_desc ===================
[20:45:50] [PASSED] 0x9A60 (TIGERLAKE)
[20:45:50] [PASSED] 0x9A68 (TIGERLAKE)
[20:45:50] [PASSED] 0x9A70 (TIGERLAKE)
[20:45:50] [PASSED] 0x9A40 (TIGERLAKE)
[20:45:50] [PASSED] 0x9A49 (TIGERLAKE)
[20:45:50] [PASSED] 0x9A59 (TIGERLAKE)
[20:45:50] [PASSED] 0x9A78 (TIGERLAKE)
[20:45:50] [PASSED] 0x9AC0 (TIGERLAKE)
[20:45:50] [PASSED] 0x9AC9 (TIGERLAKE)
[20:45:50] [PASSED] 0x9AD9 (TIGERLAKE)
[20:45:50] [PASSED] 0x9AF8 (TIGERLAKE)
[20:45:50] [PASSED] 0x4C80 (ROCKETLAKE)
[20:45:50] [PASSED] 0x4C8A (ROCKETLAKE)
[20:45:50] [PASSED] 0x4C8B (ROCKETLAKE)
[20:45:50] [PASSED] 0x4C8C (ROCKETLAKE)
[20:45:50] [PASSED] 0x4C90 (ROCKETLAKE)
[20:45:50] [PASSED] 0x4C9A (ROCKETLAKE)
[20:45:50] [PASSED] 0x4680 (ALDERLAKE_S)
[20:45:50] [PASSED] 0x4682 (ALDERLAKE_S)
[20:45:50] [PASSED] 0x4688 (ALDERLAKE_S)
[20:45:50] [PASSED] 0x468A (ALDERLAKE_S)
[20:45:50] [PASSED] 0x468B (ALDERLAKE_S)
[20:45:50] [PASSED] 0x4690 (ALDERLAKE_S)
[20:45:50] [PASSED] 0x4692 (ALDERLAKE_S)
[20:45:50] [PASSED] 0x4693 (ALDERLAKE_S)
[20:45:50] [PASSED] 0x46A0 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46A1 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46A2 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46A3 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46A6 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46A8 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46AA (ALDERLAKE_P)
[20:45:50] [PASSED] 0x462A (ALDERLAKE_P)
[20:45:50] [PASSED] 0x4626 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x4628 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46B0 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46B1 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46B2 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46B3 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46C0 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46C1 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46C2 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46C3 (ALDERLAKE_P)
[20:45:50] [PASSED] 0x46D0 (ALDERLAKE_N)
[20:45:50] [PASSED] 0x46D1 (ALDERLAKE_N)
[20:45:50] [PASSED] 0x46D2 (ALDERLAKE_N)
[20:45:50] [PASSED] 0x46D3 (ALDERLAKE_N)
[20:45:50] [PASSED] 0x46D4 (ALDERLAKE_N)
[20:45:50] [PASSED] 0xA721 (ALDERLAKE_P)
[20:45:50] [PASSED] 0xA7A1 (ALDERLAKE_P)
[20:45:50] [PASSED] 0xA7A9 (ALDERLAKE_P)
[20:45:50] [PASSED] 0xA7AC (ALDERLAKE_P)
[20:45:50] [PASSED] 0xA7AD (ALDERLAKE_P)
[20:45:50] [PASSED] 0xA720 (ALDERLAKE_P)
[20:45:50] [PASSED] 0xA7A0 (ALDERLAKE_P)
[20:45:50] [PASSED] 0xA7A8 (ALDERLAKE_P)
[20:45:50] [PASSED] 0xA7AA (ALDERLAKE_P)
[20:45:50] [PASSED] 0xA7AB (ALDERLAKE_P)
[20:45:50] [PASSED] 0xA780 (ALDERLAKE_S)
[20:45:50] [PASSED] 0xA781 (ALDERLAKE_S)
[20:45:50] [PASSED] 0xA782 (ALDERLAKE_S)
[20:45:50] [PASSED] 0xA783 (ALDERLAKE_S)
[20:45:50] [PASSED] 0xA788 (ALDERLAKE_S)
[20:45:50] [PASSED] 0xA789 (ALDERLAKE_S)
[20:45:50] [PASSED] 0xA78A (ALDERLAKE_S)
[20:45:50] [PASSED] 0xA78B (ALDERLAKE_S)
[20:45:50] [PASSED] 0x4905 (DG1)
[20:45:50] [PASSED] 0x4906 (DG1)
[20:45:50] [PASSED] 0x4907 (DG1)
[20:45:50] [PASSED] 0x4908 (DG1)
[20:45:50] [PASSED] 0x4909 (DG1)
[20:45:50] [PASSED] 0x56C0 (DG2)
[20:45:50] [PASSED] 0x56C2 (DG2)
[20:45:50] [PASSED] 0x56C1 (DG2)
[20:45:50] [PASSED] 0x7D51 (METEORLAKE)
[20:45:50] [PASSED] 0x7DD1 (METEORLAKE)
[20:45:50] [PASSED] 0x7D41 (METEORLAKE)
[20:45:50] [PASSED] 0x7D67 (METEORLAKE)
[20:45:50] [PASSED] 0xB640 (METEORLAKE)
[20:45:50] [PASSED] 0x56A0 (DG2)
[20:45:50] [PASSED] 0x56A1 (DG2)
[20:45:50] [PASSED] 0x56A2 (DG2)
[20:45:50] [PASSED] 0x56BE (DG2)
[20:45:50] [PASSED] 0x56BF (DG2)
[20:45:50] [PASSED] 0x5690 (DG2)
[20:45:50] [PASSED] 0x5691 (DG2)
[20:45:50] [PASSED] 0x5692 (DG2)
[20:45:50] [PASSED] 0x56A5 (DG2)
[20:45:50] [PASSED] 0x56A6 (DG2)
[20:45:50] [PASSED] 0x56B0 (DG2)
[20:45:50] [PASSED] 0x56B1 (DG2)
[20:45:50] [PASSED] 0x56BA (DG2)
[20:45:50] [PASSED] 0x56BB (DG2)
[20:45:50] [PASSED] 0x56BC (DG2)
[20:45:50] [PASSED] 0x56BD (DG2)
[20:45:50] [PASSED] 0x5693 (DG2)
[20:45:50] [PASSED] 0x5694 (DG2)
[20:45:50] [PASSED] 0x5695 (DG2)
[20:45:50] [PASSED] 0x56A3 (DG2)
[20:45:50] [PASSED] 0x56A4 (DG2)
[20:45:50] [PASSED] 0x56B2 (DG2)
[20:45:50] [PASSED] 0x56B3 (DG2)
[20:45:50] [PASSED] 0x5696 (DG2)
[20:45:50] [PASSED] 0x5697 (DG2)
[20:45:50] [PASSED] 0xB69 (PVC)
[20:45:50] [PASSED] 0xB6E (PVC)
[20:45:50] [PASSED] 0xBD4 (PVC)
[20:45:50] [PASSED] 0xBD5 (PVC)
[20:45:50] [PASSED] 0xBD6 (PVC)
[20:45:50] [PASSED] 0xBD7 (PVC)
[20:45:50] [PASSED] 0xBD8 (PVC)
[20:45:50] [PASSED] 0xBD9 (PVC)
[20:45:50] [PASSED] 0xBDA (PVC)
[20:45:50] [PASSED] 0xBDB (PVC)
[20:45:50] [PASSED] 0xBE0 (PVC)
[20:45:50] [PASSED] 0xBE1 (PVC)
[20:45:50] [PASSED] 0xBE5 (PVC)
[20:45:50] [PASSED] 0x7D40 (METEORLAKE)
[20:45:50] [PASSED] 0x7D45 (METEORLAKE)
[20:45:50] [PASSED] 0x7D55 (METEORLAKE)
[20:45:50] [PASSED] 0x7D60 (METEORLAKE)
[20:45:50] [PASSED] 0x7DD5 (METEORLAKE)
[20:45:50] [PASSED] 0x6420 (LUNARLAKE)
[20:45:50] [PASSED] 0x64A0 (LUNARLAKE)
[20:45:50] [PASSED] 0x64B0 (LUNARLAKE)
[20:45:50] [PASSED] 0xE202 (BATTLEMAGE)
[20:45:50] [PASSED] 0xE209 (BATTLEMAGE)
[20:45:50] [PASSED] 0xE20B (BATTLEMAGE)
[20:45:50] [PASSED] 0xE20C (BATTLEMAGE)
[20:45:50] [PASSED] 0xE20D (BATTLEMAGE)
[20:45:50] [PASSED] 0xE210 (BATTLEMAGE)
[20:45:50] [PASSED] 0xE211 (BATTLEMAGE)
[20:45:50] [PASSED] 0xE212 (BATTLEMAGE)
[20:45:50] [PASSED] 0xE216 (BATTLEMAGE)
[20:45:50] [PASSED] 0xE220 (BATTLEMAGE)
[20:45:50] [PASSED] 0xE221 (BATTLEMAGE)
[20:45:50] [PASSED] 0xE222 (BATTLEMAGE)
[20:45:50] [PASSED] 0xE223 (BATTLEMAGE)
[20:45:50] [PASSED] 0xB080 (PANTHERLAKE)
[20:45:50] [PASSED] 0xB081 (PANTHERLAKE)
[20:45:50] [PASSED] 0xB082 (PANTHERLAKE)
[20:45:50] [PASSED] 0xB083 (PANTHERLAKE)
[20:45:50] [PASSED] 0xB084 (PANTHERLAKE)
[20:45:50] [PASSED] 0xB085 (PANTHERLAKE)
[20:45:50] [PASSED] 0xB086 (PANTHERLAKE)
[20:45:50] [PASSED] 0xB087 (PANTHERLAKE)
[20:45:50] [PASSED] 0xB08F (PANTHERLAKE)
[20:45:50] [PASSED] 0xB090 (PANTHERLAKE)
[20:45:50] [PASSED] 0xB0A0 (PANTHERLAKE)
[20:45:50] [PASSED] 0xB0B0 (PANTHERLAKE)
[20:45:50] [PASSED] 0xFD80 (PANTHERLAKE)
[20:45:50] [PASSED] 0xFD81 (PANTHERLAKE)
[20:45:50] [PASSED] 0xD740 (NOVALAKE_S)
[20:45:50] [PASSED] 0xD741 (NOVALAKE_S)
[20:45:50] [PASSED] 0xD742 (NOVALAKE_S)
[20:45:50] [PASSED] 0xD743 (NOVALAKE_S)
[20:45:50] [PASSED] 0xD745 (NOVALAKE_S)
[20:45:50] [PASSED] 0xD74A (NOVALAKE_S)
[20:45:50] [PASSED] 0xD74B (NOVALAKE_S)
[20:45:50] [PASSED] 0x674C (CRESCENTISLAND)
[20:45:50] [PASSED] 0x674D (CRESCENTISLAND)
[20:45:50] [PASSED] 0x674E (CRESCENTISLAND)
[20:45:50] [PASSED] 0x674F (CRESCENTISLAND)
[20:45:50] [PASSED] 0x6750 (CRESCENTISLAND)
[20:45:50] [PASSED] 0xD750 (NOVALAKE_P)
[20:45:50] [PASSED] 0xD751 (NOVALAKE_P)
[20:45:50] [PASSED] 0xD752 (NOVALAKE_P)
[20:45:50] [PASSED] 0xD753 (NOVALAKE_P)
[20:45:50] [PASSED] 0xD754 (NOVALAKE_P)
[20:45:50] [PASSED] 0xD755 (NOVALAKE_P)
[20:45:50] [PASSED] 0xD756 (NOVALAKE_P)
[20:45:50] [PASSED] 0xD757 (NOVALAKE_P)
[20:45:50] [PASSED] 0xD75F (NOVALAKE_P)
[20:45:50] =============== [PASSED] check_platform_desc ===============
[20:45:50] ===================== [PASSED] xe_pci ======================
[20:45:50] ============= xe_rtp_tables_test (5 subtests) ==============
[20:45:50] ================== xe_rtp_table_gt_test ===================
[20:45:50] [PASSED] gt_was/14011060649
[20:45:50] [PASSED] gt_was/14011059788
[20:45:50] [PASSED] gt_was/14015795083
[20:45:50] [PASSED] gt_was/16021867713
[20:45:50] [PASSED] gt_was/14019449301
[20:45:50] [PASSED] gt_was/16028005424
[20:45:50] [PASSED] gt_was/14026578760
[20:45:50] [PASSED] gt_was/1409420604
[20:45:50] [PASSED] gt_was/1408615072
[20:45:50] [PASSED] gt_was/22010523718
[20:45:50] [PASSED] gt_was/14011006942
[20:45:50] [PASSED] gt_was/14014830051
[20:45:50] [PASSED] gt_was/18018781329
[20:45:50] [PASSED] gt_was/1509235366
[20:45:50] [PASSED] gt_was/18018781329
[20:45:50] [PASSED] gt_was/16016694945
[20:45:50] [PASSED] gt_was/14018575942
[20:45:50] [PASSED] gt_was/22016670082
[20:45:50] [PASSED] gt_was/22016670082
[20:45:50] [PASSED] gt_was/14017421178
[20:45:50] [PASSED] gt_was/16025250150
[20:45:50] [PASSED] gt_was/14021871409
[20:45:50] [PASSED] gt_was/16021865536
[20:45:50] [PASSED] gt_was/14021486841
[20:45:50] [PASSED] gt_was/14025160223
[20:45:50] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[20:45:50] [PASSED] gt_was/14025635424
[20:45:50] [PASSED] gt_was/16028005424
[20:45:50] ============== [PASSED] xe_rtp_table_gt_test ===============
[20:45:50] ================== xe_rtp_table_gt_test ===================
[20:45:50] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[20:45:50] [PASSED] gt_tunings/Tuning: 32B Access Enable
[20:45:50] [PASSED] gt_tunings/Tuning: L3 cache
[20:45:50] [PASSED] gt_tunings/Tuning: L3 cache - media
[20:45:50] [PASSED] gt_tunings/Tuning: Compression Overfetch
[20:45:50] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[20:45:50] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[20:45:50] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[20:45:50] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[20:45:50] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[20:45:50] [PASSED] gt_tunings/Tuning: Stateless compression control
[20:45:50] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[20:45:50] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[20:45:50] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[20:45:50] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[20:45:50] ============== [PASSED] xe_rtp_table_gt_test ===============
[20:45:50] ================== xe_rtp_table_oob_test ==================
[20:45:50] [PASSED] oob_was/1607983814
[20:45:50] [PASSED] oob_was/16010904313
[20:45:50] [PASSED] oob_was/18022495364
[20:45:50] [PASSED] oob_was/22012773006
[20:45:50] [PASSED] oob_was/14014475959
[20:45:50] [PASSED] oob_was/22011391025
[20:45:50] [PASSED] oob_was/22012727170
[20:45:50] [PASSED] oob_was/22012727685
[20:45:50] [PASSED] oob_was/22016596838
[20:45:50] [PASSED] oob_was/18020744125
[20:45:50] [PASSED] oob_was/1409600907
[20:45:50] [PASSED] oob_was/22014953428
[20:45:50] [PASSED] oob_was/16017236439
[20:45:50] [PASSED] oob_was/14019821291
[20:45:50] [PASSED] oob_was/14015076503
[20:45:50] [PASSED] oob_was/14018913170
[20:45:50] [PASSED] oob_was/14018094691
[20:45:50] [PASSED] oob_was/18024947630
[20:45:50] [PASSED] oob_was/16022287689
[20:45:50] [PASSED] oob_was/13011645652
[20:45:50] [PASSED] oob_was/14022293748
[20:45:50] [PASSED] oob_was/22019794406
[20:45:50] [PASSED] oob_was/22019338487
[20:45:50] [PASSED] oob_was/16023588340
[20:45:50] [PASSED] oob_was/14019789679
[20:45:50] [PASSED] oob_was/14022866841
[20:45:50] [PASSED] oob_was/16021333562
[20:45:50] [PASSED] oob_was/14016712196
[20:45:50] [PASSED] oob_was/14015568240
[20:45:50] [PASSED] oob_was/18013179988
[20:45:50] [PASSED] oob_was/1508761755
[20:45:50] [PASSED] oob_was/16023105232
[20:45:50] [PASSED] oob_was/16026508708
[20:45:50] [PASSED] oob_was/14020001231
[20:45:50] [PASSED] oob_was/16023683509
[20:45:50] [PASSED] oob_was/14025515070
[20:45:50] [PASSED] oob_was/15015404425_disable
[20:45:50] [PASSED] oob_was/16026007364
[20:45:50] [PASSED] oob_was/14020316580
[20:45:50] [PASSED] oob_was/14025883347
[20:45:50] [PASSED] oob_was/16029380221
[20:45:50] [PASSED] oob_was/22022079272
[20:45:50] [PASSED] oob_was/16029897822
[20:45:50] [PASSED] oob_was/14027054324
[20:45:50] ============== [PASSED] xe_rtp_table_oob_test ==============
[20:45:50] ================ xe_rtp_table_dev_oob_test ================
[20:45:50] [PASSED] device_oob_was/22010954014
[20:45:50] [PASSED] device_oob_was/15015404425
[20:45:50] [PASSED] device_oob_was/22019338487_display
[20:45:50] [PASSED] device_oob_was/14022085890
[20:45:50] [PASSED] device_oob_was/14026539277
[20:45:50] [PASSED] device_oob_was/14026633728
[20:45:50] [PASSED] device_oob_was/14026746987
[20:45:50] [PASSED] device_oob_was/14026779378
[20:45:50] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[20:45:50] ========== xe_rtp_table_missing_upper_bound_test ==========
[20:45:50] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[20:45:50] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[20:45:50] [PASSED] register_whitelist/1806527549
[20:45:50] [PASSED] register_whitelist/allow_read_ctx_timestamp
[20:45:50] [PASSED] register_whitelist/allow_read_queue_timestamp
[20:45:50] [PASSED] register_whitelist/16014440446
[20:45:50] [PASSED] register_whitelist/16017236439
[20:45:50] [PASSED] register_whitelist/16020183090
[20:45:50] [PASSED] register_whitelist/14024997852
[20:45:50] [PASSED] register_whitelist/14024997852
[20:45:50] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[20:45:50] =============== [PASSED] xe_rtp_tables_test ================
[20:45:50] =================== xe_rtp (3 subtests) ====================
[20:45:50] =================== xe_rtp_rules_tests ====================
[20:45:50] [PASSED] no
[20:45:50] [PASSED] yes
[20:45:50] [PASSED] no-and-no
[20:45:50] [PASSED] no-and-yes
[20:45:50] [PASSED] yes-and-no
[20:45:50] [PASSED] yes-and-yes
[20:45:50] [PASSED] no-or-no
[20:45:50] [PASSED] no-or-yes
[20:45:50] [PASSED] yes-or-no
[20:45:50] [PASSED] yes-or-yes
[20:45:50] [PASSED] no-yes-or-yes-no
[20:45:50] [PASSED] no-yes-or-yes-yes
[20:45:50] [PASSED] yes-yes-or-no-yes
[20:45:50] [PASSED] yes-yes-or-yes-yes
[20:45:50] [PASSED] no-no-or-yes-or-no
[20:45:50] [PASSED] or
[20:45:50] [PASSED] or-yes
[20:45:50] [PASSED] or-no
[20:45:50] [PASSED] yes-or
[20:45:50] [PASSED] no-or
[20:45:50] [PASSED] no-or-or-yes
[20:45:50] [PASSED] yes-or-or-no
[20:45:50] [PASSED] no-or-or-no
[20:45:50] [PASSED] missing-context-engine-class
[20:45:50] [PASSED] missing-context-engine-class-or-yes
[20:45:50] [PASSED] missing-context-engine-class-or-or-yes
[20:45:50] =============== [PASSED] xe_rtp_rules_tests ================
[20:45:50] =============== xe_rtp_process_to_sr_tests ================
[20:45:50] [PASSED] coalesce-same-reg
[20:45:50] [PASSED] coalesce-same-reg-literal-and-func
[20:45:50] [PASSED] no-match-no-add
[20:45:50] [PASSED] two-regs-two-entries
[20:45:50] [PASSED] clr-one-set-other
[20:45:50] [PASSED] set-field
[20:45:50] [PASSED] conflict-duplicate
[20:45:50] [PASSED] conflict-not-disjoint
[20:45:50] [PASSED] conflict-not-disjoint-literal-and-func
[20:45:50] [PASSED] conflict-reg-type
[20:45:50] [PASSED] bad-mcr-reg-forced-to-regular
[20:45:50] [PASSED] bad-regular-reg-forced-to-mcr
[20:45:50] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[20:45:50] ================== xe_rtp_process_tests ===================
[20:45:50] [PASSED] active1
[20:45:50] [PASSED] active2
[20:45:50] [PASSED] active-inactive
[20:45:50] [PASSED] inactive-active
[20:45:50] [PASSED] inactive-active-inactive
[20:45:50] [PASSED] inactive-inactive-inactive
[20:45:50] ============== [PASSED] xe_rtp_process_tests ===============
[20:45:50] ===================== [PASSED] xe_rtp ======================
[20:45:50] ==================== xe_wa (1 subtest) =====================
[20:45:50] ======================== xe_wa_gt =========================
[20:45:50] [PASSED] TIGERLAKE B0
[20:45:50] [PASSED] DG1 A0
[20:45:50] [PASSED] DG1 B0
[20:45:50] [PASSED] ALDERLAKE_S A0
[20:45:50] [PASSED] ALDERLAKE_S B0
[20:45:50] [PASSED] ALDERLAKE_S C0
[20:45:50] [PASSED] ALDERLAKE_S D0
[20:45:50] [PASSED] ALDERLAKE_P A0
[20:45:50] [PASSED] ALDERLAKE_P B0
[20:45:50] [PASSED] ALDERLAKE_P C0
[20:45:50] [PASSED] ALDERLAKE_S RPLS D0
[20:45:50] [PASSED] ALDERLAKE_P RPLU E0
[20:45:50] [PASSED] DG2 G10 C0
[20:45:50] [PASSED] DG2 G11 B1
[20:45:50] [PASSED] DG2 G12 A1
[20:45:50] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[20:45:50] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[20:45:50] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[20:45:50] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[20:45:50] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[20:45:50] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[20:45:50] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[20:45:50] ==================== [PASSED] xe_wa_gt =====================
[20:45:50] ====================== [PASSED] xe_wa ======================
[20:45:50] ============================================================
[20:45:50] Testing complete. Ran 793 tests: passed: 765, skipped: 28
[20:45:50] Elapsed time: 36.062s total, 1.864s configuring, 33.481s building, 0.699s running
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[20:45:50] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:45:52] 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
[20:46:16] Starting KUnit Kernel (1/1)...
[20:46:16] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:46:16] ============= refcount_interrupt (4 subtests) ==============
[20:46:16] [PASSED] test_single_irq_change
[20:46:16] [PASSED] test_nested_irq_change
[20:46:16] [PASSED] test_multiple_irq_change
[20:46:16] [PASSED] test_irq_save
[20:46:16] =============== [PASSED] refcount_interrupt ================
[20:46:16] ============ drm_test_pick_cmdline (2 subtests) ============
[20:46:16] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[20:46:16] =============== drm_test_pick_cmdline_named ===============
[20:46:16] [PASSED] NTSC
[20:46:16] [PASSED] NTSC-J
[20:46:16] [PASSED] PAL
[20:46:16] [PASSED] PAL-M
[20:46:16] =========== [PASSED] drm_test_pick_cmdline_named ===========
[20:46:16] ============== [PASSED] drm_test_pick_cmdline ==============
[20:46:16] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[20:46:16] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[20:46:16] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[20:46:16] =========== drm_validate_clone_mode (2 subtests) ===========
[20:46:16] ============== drm_test_check_in_clone_mode ===============
[20:46:16] [PASSED] in_clone_mode
[20:46:16] [PASSED] not_in_clone_mode
[20:46:16] ========== [PASSED] drm_test_check_in_clone_mode ===========
[20:46:16] =============== drm_test_check_valid_clones ===============
[20:46:16] [PASSED] not_in_clone_mode
[20:46:16] [PASSED] valid_clone
[20:46:16] [PASSED] invalid_clone
[20:46:16] =========== [PASSED] drm_test_check_valid_clones ===========
[20:46:16] ============= [PASSED] drm_validate_clone_mode =============
[20:46:16] ============= drm_validate_modeset (1 subtest) =============
[20:46:16] [PASSED] drm_test_check_connector_changed_modeset
[20:46:16] ============== [PASSED] drm_validate_modeset ===============
[20:46:16] ====== drm_test_bridge_get_current_state (1 subtest) =======
[20:46:16] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[20:46:16] ======== [PASSED] drm_test_bridge_get_current_state ========
[20:46:16] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[20:46:16] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[20:46:16] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[20:46:16] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts
[20:46:16] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[20:46:16] ============== drm_bridge_alloc (2 subtests) ===============
[20:46:16] [PASSED] drm_test_drm_bridge_alloc_basic
[20:46:16] [PASSED] drm_test_drm_bridge_alloc_get_put
[20:46:16] ================ [PASSED] drm_bridge_alloc =================
[20:46:16] ============= drm_bridge_bus_fmt (5 subtests) ==============
[20:46:16] [PASSED] drm_test_bridge_rgb_yuv_rgb
[20:46:16] [PASSED] drm_test_bridge_must_convert_to_yuv444
[20:46:16] [PASSED] drm_test_bridge_hdmi_auto_rgb
[20:46:16] [PASSED] drm_test_bridge_auto_first
[20:46:16] [PASSED] drm_test_bridge_rgb_yuv_no_path
[20:46:16] =============== [PASSED] drm_bridge_bus_fmt ================
[20:46:16] ============= drm_cmdline_parser (40 subtests) =============
[20:46:16] [PASSED] drm_test_cmdline_force_d_only
[20:46:16] [PASSED] drm_test_cmdline_force_D_only_dvi
[20:46:16] [PASSED] drm_test_cmdline_force_D_only_hdmi
[20:46:16] [PASSED] drm_test_cmdline_force_D_only_not_digital
[20:46:16] [PASSED] drm_test_cmdline_force_e_only
[20:46:16] [PASSED] drm_test_cmdline_res
[20:46:16] [PASSED] drm_test_cmdline_res_vesa
[20:46:16] [PASSED] drm_test_cmdline_res_vesa_rblank
[20:46:16] [PASSED] drm_test_cmdline_res_rblank
[20:46:16] [PASSED] drm_test_cmdline_res_bpp
[20:46:16] [PASSED] drm_test_cmdline_res_refresh
[20:46:16] [PASSED] drm_test_cmdline_res_bpp_refresh
[20:46:16] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[20:46:16] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[20:46:16] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[20:46:16] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[20:46:16] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[20:46:16] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[20:46:16] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[20:46:16] [PASSED] drm_test_cmdline_res_margins_force_on
[20:46:16] [PASSED] drm_test_cmdline_res_vesa_margins
[20:46:16] [PASSED] drm_test_cmdline_name
[20:46:16] [PASSED] drm_test_cmdline_name_bpp
[20:46:16] [PASSED] drm_test_cmdline_name_option
[20:46:16] [PASSED] drm_test_cmdline_name_bpp_option
[20:46:16] [PASSED] drm_test_cmdline_rotate_0
[20:46:16] [PASSED] drm_test_cmdline_rotate_90
[20:46:16] [PASSED] drm_test_cmdline_rotate_180
[20:46:16] [PASSED] drm_test_cmdline_rotate_270
[20:46:16] [PASSED] drm_test_cmdline_hmirror
[20:46:16] [PASSED] drm_test_cmdline_vmirror
[20:46:16] [PASSED] drm_test_cmdline_margin_options
[20:46:16] [PASSED] drm_test_cmdline_multiple_options
[20:46:16] [PASSED] drm_test_cmdline_bpp_extra_and_option
[20:46:16] [PASSED] drm_test_cmdline_extra_and_option
[20:46:16] [PASSED] drm_test_cmdline_freestanding_options
[20:46:16] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[20:46:16] [PASSED] drm_test_cmdline_panel_orientation
[20:46:16] ================ drm_test_cmdline_invalid =================
[20:46:16] [PASSED] margin_only
[20:46:16] [PASSED] interlace_only
[20:46:16] [PASSED] res_missing_x
[20:46:16] [PASSED] res_missing_y
[20:46:16] [PASSED] res_bad_y
[20:46:16] [PASSED] res_missing_y_bpp
[20:46:16] [PASSED] res_bad_bpp
[20:46:16] [PASSED] res_bad_refresh
[20:46:16] [PASSED] res_bpp_refresh_force_on_off
[20:46:16] [PASSED] res_invalid_mode
[20:46:16] [PASSED] res_bpp_wrong_place_mode
[20:46:16] [PASSED] name_bpp_refresh
[20:46:16] [PASSED] name_refresh
[20:46:16] [PASSED] name_refresh_wrong_mode
[20:46:16] [PASSED] name_refresh_invalid_mode
[20:46:16] [PASSED] rotate_multiple
[20:46:16] [PASSED] rotate_invalid_val
[20:46:16] [PASSED] rotate_truncated
[20:46:16] [PASSED] invalid_option
[20:46:16] [PASSED] invalid_tv_option
[20:46:16] [PASSED] truncated_tv_option
[20:46:16] ============ [PASSED] drm_test_cmdline_invalid =============
[20:46:16] =============== drm_test_cmdline_tv_options ===============
[20:46:16] [PASSED] NTSC
[20:46:16] [PASSED] NTSC_443
[20:46:16] [PASSED] NTSC_J
[20:46:16] [PASSED] PAL
[20:46:16] [PASSED] PAL_M
[20:46:16] [PASSED] PAL_N
[20:46:16] [PASSED] SECAM
[20:46:16] [PASSED] MONO_525
[20:46:16] [PASSED] MONO_625
[20:46:16] =========== [PASSED] drm_test_cmdline_tv_options ===========
[20:46:16] =============== [PASSED] drm_cmdline_parser ================
[20:46:16] ========== drmm_connector_hdmi_init (20 subtests) ==========
[20:46:16] [PASSED] drm_test_connector_hdmi_init_valid
[20:46:16] [PASSED] drm_test_connector_hdmi_init_bpc_8
[20:46:16] [PASSED] drm_test_connector_hdmi_init_bpc_10
[20:46:16] [PASSED] drm_test_connector_hdmi_init_bpc_12
[20:46:16] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[20:46:16] [PASSED] drm_test_connector_hdmi_init_bpc_null
[20:46:16] [PASSED] drm_test_connector_hdmi_init_formats_empty
[20:46:16] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[20:46:16] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[20:46:16] [PASSED] supported_formats=0x9 yuv420_allowed=1
[20:46:16] [PASSED] supported_formats=0x9 yuv420_allowed=0
[20:46:16] [PASSED] supported_formats=0x5 yuv420_allowed=1
[20:46:16] [PASSED] supported_formats=0x5 yuv420_allowed=0
[20:46:16] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[20:46:16] [PASSED] drm_test_connector_hdmi_init_null_ddc
[20:46:16] [PASSED] drm_test_connector_hdmi_init_null_product
[20:46:16] [PASSED] drm_test_connector_hdmi_init_null_vendor
[20:46:16] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[20:46:16] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[20:46:16] [PASSED] drm_test_connector_hdmi_init_product_valid
[20:46:16] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[20:46:16] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[20:46:16] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[20:46:16] ========= drm_test_connector_hdmi_init_type_valid =========
[20:46:16] [PASSED] HDMI-A
[20:46:16] [PASSED] HDMI-B
[20:46:16] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[20:46:16] ======== drm_test_connector_hdmi_init_type_invalid ========
[20:46:16] [PASSED] Unknown
[20:46:16] [PASSED] VGA
[20:46:16] [PASSED] DVI-I
[20:46:16] [PASSED] DVI-D
[20:46:16] [PASSED] DVI-A
[20:46:16] [PASSED] Composite
[20:46:16] [PASSED] SVIDEO
[20:46:16] [PASSED] LVDS
[20:46:16] [PASSED] Component
[20:46:16] [PASSED] DIN
[20:46:16] [PASSED] DP
[20:46:16] [PASSED] TV
[20:46:16] [PASSED] eDP
[20:46:16] [PASSED] Virtual
[20:46:16] [PASSED] DSI
[20:46:16] [PASSED] DPI
[20:46:16] [PASSED] Writeback
[20:46:16] [PASSED] SPI
[20:46:16] [PASSED] USB
[20:46:16] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[20:46:16] ============ [PASSED] drmm_connector_hdmi_init =============
[20:46:16] ============= drmm_connector_init (3 subtests) =============
[20:46:16] [PASSED] drm_test_drmm_connector_init
[20:46:16] [PASSED] drm_test_drmm_connector_init_null_ddc
[20:46:16] ========= drm_test_drmm_connector_init_type_valid =========
[20:46:16] [PASSED] Unknown
[20:46:16] [PASSED] VGA
[20:46:16] [PASSED] DVI-I
[20:46:16] [PASSED] DVI-D
[20:46:16] [PASSED] DVI-A
[20:46:16] [PASSED] Composite
[20:46:16] [PASSED] SVIDEO
[20:46:16] [PASSED] LVDS
[20:46:16] [PASSED] Component
[20:46:16] [PASSED] DIN
[20:46:16] [PASSED] DP
[20:46:16] [PASSED] HDMI-A
[20:46:16] [PASSED] HDMI-B
[20:46:16] [PASSED] TV
[20:46:16] [PASSED] eDP
[20:46:16] [PASSED] Virtual
[20:46:16] [PASSED] DSI
[20:46:16] [PASSED] DPI
[20:46:16] [PASSED] Writeback
[20:46:16] [PASSED] SPI
[20:46:16] [PASSED] USB
[20:46:16] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[20:46:16] =============== [PASSED] drmm_connector_init ===============
[20:46:16] ========= drm_connector_dynamic_init (6 subtests) ==========
[20:46:16] [PASSED] drm_test_drm_connector_dynamic_init
[20:46:16] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[20:46:16] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[20:46:16] [PASSED] drm_test_drm_connector_dynamic_init_properties
[20:46:16] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[20:46:16] [PASSED] Unknown
[20:46:16] [PASSED] VGA
[20:46:16] [PASSED] DVI-I
[20:46:16] [PASSED] DVI-D
[20:46:16] [PASSED] DVI-A
[20:46:16] [PASSED] Composite
[20:46:16] [PASSED] SVIDEO
[20:46:16] [PASSED] LVDS
[20:46:16] [PASSED] Component
[20:46:16] [PASSED] DIN
[20:46:16] [PASSED] DP
[20:46:16] [PASSED] HDMI-A
[20:46:16] [PASSED] HDMI-B
[20:46:16] [PASSED] TV
[20:46:16] [PASSED] eDP
[20:46:16] [PASSED] Virtual
[20:46:16] [PASSED] DSI
[20:46:16] [PASSED] DPI
[20:46:16] [PASSED] Writeback
[20:46:16] [PASSED] SPI
[20:46:16] [PASSED] USB
[20:46:16] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[20:46:16] ======== drm_test_drm_connector_dynamic_init_name =========
[20:46:16] [PASSED] Unknown
[20:46:16] [PASSED] VGA
[20:46:16] [PASSED] DVI-I
[20:46:16] [PASSED] DVI-D
[20:46:16] [PASSED] DVI-A
[20:46:16] [PASSED] Composite
[20:46:16] [PASSED] SVIDEO
[20:46:16] [PASSED] LVDS
[20:46:16] [PASSED] Component
[20:46:16] [PASSED] DIN
[20:46:16] [PASSED] DP
[20:46:16] [PASSED] HDMI-A
[20:46:16] [PASSED] HDMI-B
[20:46:16] [PASSED] TV
[20:46:17] [PASSED] eDP
[20:46:17] [PASSED] Virtual
[20:46:17] [PASSED] DSI
[20:46:17] [PASSED] DPI
[20:46:17] [PASSED] Writeback
[20:46:17] [PASSED] SPI
[20:46:17] [PASSED] USB
[20:46:17] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[20:46:17] =========== [PASSED] drm_connector_dynamic_init ============
[20:46:17] ==== drm_connector_dynamic_register_early (4 subtests) =====
[20:46:17] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[20:46:17] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[20:46:17] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[20:46:17] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[20:46:17] ====== [PASSED] drm_connector_dynamic_register_early =======
[20:46:17] ======= drm_connector_dynamic_register (7 subtests) ========
[20:46:17] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[20:46:17] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[20:46:17] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[20:46:17] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[20:46:17] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[20:46:17] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[20:46:17] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[20:46:17] ========= [PASSED] drm_connector_dynamic_register ==========
[20:46:17] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[20:46:17] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[20:46:17] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[20:46:17] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[20:46:17] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[20:46:17] ========== drm_test_get_tv_mode_from_name_valid ===========
[20:46:17] [PASSED] NTSC
[20:46:17] [PASSED] NTSC-443
[20:46:17] [PASSED] NTSC-J
[20:46:17] [PASSED] PAL
[20:46:17] [PASSED] PAL-M
[20:46:17] [PASSED] PAL-N
[20:46:17] [PASSED] SECAM
[20:46:17] [PASSED] Mono
[20:46:17] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[20:46:17] [PASSED] drm_test_get_tv_mode_from_name_truncated
[20:46:17] ============ [PASSED] drm_get_tv_mode_from_name ============
[20:46:17] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[20:46:17] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[20:46:17] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[20:46:17] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[20:46:17] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[20:46:17] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[20:46:17] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[20:46:17] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[20:46:17] [PASSED] VIC 96
[20:46:17] [PASSED] VIC 97
[20:46:17] [PASSED] VIC 101
[20:46:17] [PASSED] VIC 102
[20:46:17] [PASSED] VIC 106
[20:46:17] [PASSED] VIC 107
[20:46:17] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[20:46:17] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[20:46:17] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[20:46:17] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[20:46:17] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[20:46:17] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[20:46:17] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[20:46:17] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[20:46:17] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[20:46:17] [PASSED] Automatic
[20:46:17] [PASSED] Full
[20:46:17] [PASSED] Limited 16:235
[20:46:17] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[20:46:17] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[20:46:17] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[20:46:17] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[20:46:17] === drm_test_drm_hdmi_connector_get_output_format_name ====
[20:46:17] [PASSED] RGB
[20:46:17] [PASSED] YUV 4:2:0
[20:46:17] [PASSED] YUV 4:2:2
[20:46:17] [PASSED] YUV 4:4:4
[20:46:17] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[20:46:17] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[20:46:17] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[20:46:17] ============= drm_damage_helper (21 subtests) ==============
[20:46:17] [PASSED] drm_test_damage_iter_no_damage
[20:46:17] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[20:46:17] [PASSED] drm_test_damage_iter_no_damage_src_moved
[20:46:17] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[20:46:17] [PASSED] drm_test_damage_iter_no_damage_not_visible
[20:46:17] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[20:46:17] [PASSED] drm_test_damage_iter_no_damage_no_fb
[20:46:17] [PASSED] drm_test_damage_iter_simple_damage
[20:46:17] [PASSED] drm_test_damage_iter_single_damage
[20:46:17] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[20:46:17] [PASSED] drm_test_damage_iter_single_damage_outside_src
[20:46:17] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[20:46:17] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[20:46:17] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[20:46:17] [PASSED] drm_test_damage_iter_single_damage_src_moved
[20:46:17] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[20:46:17] [PASSED] drm_test_damage_iter_damage
[20:46:17] [PASSED] drm_test_damage_iter_damage_one_intersect
[20:46:17] [PASSED] drm_test_damage_iter_damage_one_outside
[20:46:17] [PASSED] drm_test_damage_iter_damage_src_moved
[20:46:17] [PASSED] drm_test_damage_iter_damage_not_visible
[20:46:17] ================ [PASSED] drm_damage_helper ================
[20:46:17] ============== drm_dp_mst_helper (3 subtests) ==============
[20:46:17] ============== drm_test_dp_mst_calc_pbn_mode ==============
[20:46:17] [PASSED] Clock 154000 BPP 30 DSC disabled
[20:46:17] [PASSED] Clock 234000 BPP 30 DSC disabled
[20:46:17] [PASSED] Clock 297000 BPP 24 DSC disabled
[20:46:17] [PASSED] Clock 332880 BPP 24 DSC enabled
[20:46:17] [PASSED] Clock 324540 BPP 24 DSC enabled
[20:46:17] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[20:46:17] ============== drm_test_dp_mst_calc_pbn_div ===============
[20:46:17] [PASSED] Link rate 2000000 lane count 4
[20:46:17] [PASSED] Link rate 2000000 lane count 2
[20:46:17] [PASSED] Link rate 2000000 lane count 1
[20:46:17] [PASSED] Link rate 1350000 lane count 4
[20:46:17] [PASSED] Link rate 1350000 lane count 2
[20:46:17] [PASSED] Link rate 1350000 lane count 1
[20:46:17] [PASSED] Link rate 1000000 lane count 4
[20:46:17] [PASSED] Link rate 1000000 lane count 2
[20:46:17] [PASSED] Link rate 1000000 lane count 1
[20:46:17] [PASSED] Link rate 810000 lane count 4
[20:46:17] [PASSED] Link rate 810000 lane count 2
[20:46:17] [PASSED] Link rate 810000 lane count 1
[20:46:17] [PASSED] Link rate 540000 lane count 4
[20:46:17] [PASSED] Link rate 540000 lane count 2
[20:46:17] [PASSED] Link rate 540000 lane count 1
[20:46:17] [PASSED] Link rate 270000 lane count 4
[20:46:17] [PASSED] Link rate 270000 lane count 2
[20:46:17] [PASSED] Link rate 270000 lane count 1
[20:46:17] [PASSED] Link rate 162000 lane count 4
[20:46:17] [PASSED] Link rate 162000 lane count 2
[20:46:17] [PASSED] Link rate 162000 lane count 1
[20:46:17] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[20:46:17] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[20:46:17] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[20:46:17] [PASSED] DP_POWER_UP_PHY with port number
[20:46:17] [PASSED] DP_POWER_DOWN_PHY with port number
[20:46:17] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[20:46:17] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[20:46:17] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[20:46:17] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[20:46:17] [PASSED] DP_QUERY_PAYLOAD with port number
[20:46:17] [PASSED] DP_QUERY_PAYLOAD with VCPI
[20:46:17] [PASSED] DP_REMOTE_DPCD_READ with port number
[20:46:17] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[20:46:17] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[20:46:17] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[20:46:17] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[20:46:17] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[20:46:17] [PASSED] DP_REMOTE_I2C_READ with port number
[20:46:17] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[20:46:17] [PASSED] DP_REMOTE_I2C_READ with transactions array
[20:46:17] [PASSED] DP_REMOTE_I2C_WRITE with port number
[20:46:17] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[20:46:17] [PASSED] DP_REMOTE_I2C_WRITE with data array
[20:46:17] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[20:46:17] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[20:46:17] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[20:46:17] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[20:46:17] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[20:46:17] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[20:46:17] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[20:46:17] ================ [PASSED] drm_dp_mst_helper ================
[20:46:17] ================== drm_exec (7 subtests) ===================
[20:46:17] [PASSED] sanitycheck
[20:46:17] [PASSED] test_lock
[20:46:17] [PASSED] test_lock_unlock
[20:46:17] [PASSED] test_duplicates
[20:46:17] [PASSED] test_prepare
[20:46:17] [PASSED] test_prepare_array
[20:46:17] [PASSED] test_multiple_loops
[20:46:17] ==================== [PASSED] drm_exec =====================
[20:46:17] =========== drm_format_helper_test (17 subtests) ===========
[20:46:17] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[20:46:17] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[20:46:17] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[20:46:17] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[20:46:17] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[20:46:17] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[20:46:17] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[20:46:17] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[20:46:17] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[20:46:17] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[20:46:17] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[20:46:17] ============== drm_test_fb_xrgb8888_to_mono ===============
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[20:46:17] ==================== drm_test_fb_swab =====================
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ================ [PASSED] drm_test_fb_swab =================
[20:46:17] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[20:46:17] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[20:46:17] [PASSED] single_pixel_source_buffer
[20:46:17] [PASSED] single_pixel_clip_rectangle
[20:46:17] [PASSED] well_known_colors
[20:46:17] [PASSED] destination_pitch
[20:46:17] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[20:46:17] ================= drm_test_fb_clip_offset =================
[20:46:17] [PASSED] pass through
[20:46:17] [PASSED] horizontal offset
[20:46:17] [PASSED] vertical offset
[20:46:17] [PASSED] horizontal and vertical offset
[20:46:17] [PASSED] horizontal offset (custom pitch)
[20:46:17] [PASSED] vertical offset (custom pitch)
[20:46:17] [PASSED] horizontal and vertical offset (custom pitch)
[20:46:17] ============= [PASSED] drm_test_fb_clip_offset =============
[20:46:17] =================== drm_test_fb_memcpy ====================
[20:46:17] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[20:46:17] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[20:46:17] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[20:46:17] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[20:46:17] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[20:46:17] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[20:46:17] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[20:46:17] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[20:46:17] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[20:46:17] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[20:46:17] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[20:46:17] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[20:46:17] =============== [PASSED] drm_test_fb_memcpy ================
[20:46:17] ============= [PASSED] drm_format_helper_test ==============
[20:46:17] ================= drm_format (18 subtests) =================
[20:46:17] [PASSED] drm_test_format_block_width_invalid
[20:46:17] [PASSED] drm_test_format_block_width_one_plane
[20:46:17] [PASSED] drm_test_format_block_width_two_plane
[20:46:17] [PASSED] drm_test_format_block_width_three_plane
[20:46:17] [PASSED] drm_test_format_block_width_tiled
[20:46:17] [PASSED] drm_test_format_block_height_invalid
[20:46:17] [PASSED] drm_test_format_block_height_one_plane
[20:46:17] [PASSED] drm_test_format_block_height_two_plane
[20:46:17] [PASSED] drm_test_format_block_height_three_plane
[20:46:17] [PASSED] drm_test_format_block_height_tiled
[20:46:17] [PASSED] drm_test_format_min_pitch_invalid
[20:46:17] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[20:46:17] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[20:46:17] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[20:46:17] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[20:46:17] [PASSED] drm_test_format_min_pitch_two_plane
[20:46:17] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[20:46:17] [PASSED] drm_test_format_min_pitch_tiled
[20:46:17] =================== [PASSED] drm_format ====================
[20:46:17] ============== drm_framebuffer (10 subtests) ===============
[20:46:17] ========== drm_test_framebuffer_check_src_coords ==========
[20:46:17] [PASSED] Success: source fits into fb
[20:46:17] [PASSED] Fail: overflowing fb with x-axis coordinate
[20:46:17] [PASSED] Fail: overflowing fb with y-axis coordinate
[20:46:17] [PASSED] Fail: overflowing fb with source width
[20:46:17] [PASSED] Fail: overflowing fb with source height
[20:46:17] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[20:46:17] [PASSED] drm_test_framebuffer_cleanup
[20:46:17] =============== drm_test_framebuffer_create ===============
[20:46:17] [PASSED] ABGR8888 normal sizes
[20:46:17] [PASSED] ABGR8888 max sizes
[20:46:17] [PASSED] ABGR8888 pitch greater than min required
[20:46:17] [PASSED] ABGR8888 pitch less than min required
[20:46:17] [PASSED] ABGR8888 Invalid width
[20:46:17] [PASSED] ABGR8888 Invalid buffer handle
[20:46:17] [PASSED] No pixel format
[20:46:17] [PASSED] ABGR8888 Width 0
[20:46:17] [PASSED] ABGR8888 Height 0
[20:46:17] [PASSED] ABGR8888 Out of bound height * pitch combination
[20:46:17] [PASSED] ABGR8888 Large buffer offset
[20:46:17] [PASSED] ABGR8888 Buffer offset for inexistent plane
[20:46:17] [PASSED] ABGR8888 Invalid flag
[20:46:17] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[20:46:17] [PASSED] ABGR8888 Valid buffer modifier
[20:46:17] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[20:46:17] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[20:46:17] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[20:46:17] [PASSED] NV12 Normal sizes
[20:46:17] [PASSED] NV12 Max sizes
[20:46:17] [PASSED] NV12 Invalid pitch
[20:46:17] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[20:46:17] [PASSED] NV12 different modifier per-plane
[20:46:17] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[20:46:17] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[20:46:17] [PASSED] NV12 Modifier for inexistent plane
[20:46:17] [PASSED] NV12 Handle for inexistent plane
[20:46:17] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[20:46:17] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[20:46:17] [PASSED] YVU420 Normal sizes
[20:46:17] [PASSED] YVU420 Max sizes
[20:46:17] [PASSED] YVU420 Invalid pitch
[20:46:17] [PASSED] YVU420 Different pitches
[20:46:17] [PASSED] YVU420 Different buffer offsets/pitches
[20:46:17] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[20:46:17] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[20:46:17] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[20:46:17] [PASSED] YVU420 Valid modifier
[20:46:17] [PASSED] YVU420 Different modifiers per plane
[20:46:17] [PASSED] YVU420 Modifier for inexistent plane
[20:46:17] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[20:46:17] [PASSED] X0L2 Normal sizes
[20:46:17] [PASSED] X0L2 Max sizes
[20:46:17] [PASSED] X0L2 Invalid pitch
[20:46:17] [PASSED] X0L2 Pitch greater than minimum required
[20:46:17] [PASSED] X0L2 Handle for inexistent plane
[20:46:17] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[20:46:17] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[20:46:17] [PASSED] X0L2 Valid modifier
[20:46:17] [PASSED] X0L2 Modifier for inexistent plane
[20:46:17] =========== [PASSED] drm_test_framebuffer_create ===========
[20:46:17] [PASSED] drm_test_framebuffer_free
[20:46:17] [PASSED] drm_test_framebuffer_init
[20:46:17] [PASSED] drm_test_framebuffer_init_bad_format
[20:46:17] [PASSED] drm_test_framebuffer_init_dev_mismatch
[20:46:17] [PASSED] drm_test_framebuffer_lookup
[20:46:17] [PASSED] drm_test_framebuffer_lookup_inexistent
[20:46:17] [PASSED] drm_test_framebuffer_modifiers_not_supported
[20:46:17] ================= [PASSED] drm_framebuffer =================
[20:46:17] ================ drm_gem_shmem (8 subtests) ================
[20:46:17] [PASSED] drm_gem_shmem_test_obj_create
[20:46:17] [PASSED] drm_gem_shmem_test_obj_create_private
[20:46:17] [PASSED] drm_gem_shmem_test_pin_pages
[20:46:17] [PASSED] drm_gem_shmem_test_vmap
[20:46:17] [PASSED] drm_gem_shmem_test_get_sg_table
[20:46:17] [PASSED] drm_gem_shmem_test_get_pages_sgt
[20:46:17] [PASSED] drm_gem_shmem_test_madvise
[20:46:17] [PASSED] drm_gem_shmem_test_purge
[20:46:17] ================== [PASSED] drm_gem_shmem ==================
[20:46:17] === drm_atomic_helper_connector_hdmi_check (29 subtests) ===
[20:46:17] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[20:46:17] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[20:46:17] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[20:46:17] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[20:46:17] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[20:46:17] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[20:46:17] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[20:46:17] [PASSED] Automatic
[20:46:17] [PASSED] Full
[20:46:17] [PASSED] Limited 16:235
[20:46:17] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[20:46:17] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[20:46:17] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[20:46:17] [PASSED] drm_test_check_disable_connector
[20:46:17] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[20:46:17] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[20:46:17] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[20:46:17] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[20:46:17] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[20:46:17] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[20:46:17] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[20:46:17] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[20:46:17] [PASSED] drm_test_check_output_bpc_dvi
[20:46:17] [PASSED] drm_test_check_output_bpc_format_vic_1
[20:46:17] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[20:46:17] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[20:46:17] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[20:46:17] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[20:46:17] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[20:46:17] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[20:46:17] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[20:46:17] ============ drm_test_check_hdmi_color_format =============
[20:46:17] [PASSED] AUTO -> RGB
[20:46:17] [PASSED] YCBCR422 -> YUV422
[20:46:17] [PASSED] YCBCR420 -> YUV420
[20:46:17] [PASSED] YCBCR444 -> YUV444
[20:46:17] [PASSED] RGB -> RGB
[20:46:17] ======== [PASSED] drm_test_check_hdmi_color_format =========
[20:46:17] ======== drm_test_check_hdmi_color_format_420_only ========
[20:46:17] [PASSED] RGB should fail
[20:46:17] [PASSED] YUV444 should fail
[20:46:17] [PASSED] YUV422 should fail
[20:46:17] [PASSED] YUV420 should work
[20:46:17] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ====
[20:46:17] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[20:46:17] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[20:46:17] [PASSED] drm_test_check_broadcast_rgb_value
[20:46:17] [PASSED] drm_test_check_bpc_8_value
[20:46:17] [PASSED] drm_test_check_bpc_10_value
[20:46:17] [PASSED] drm_test_check_bpc_12_value
[20:46:17] [PASSED] drm_test_check_format_value
[20:46:17] [PASSED] drm_test_check_tmds_char_value
[20:46:17] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[20:46:17] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) =
[20:46:17] [PASSED] drm_test_check_mode_valid
[20:46:17] [PASSED] drm_test_check_mode_valid_reject
[20:46:17] [PASSED] drm_test_check_mode_valid_reject_rate
[20:46:17] [PASSED] drm_test_check_mode_valid_reject_max_clock
[20:46:17] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock
[20:46:17] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector
[20:46:17] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb
[20:46:17] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[20:46:17] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[20:46:17] [PASSED] drm_test_check_infoframes
[20:46:17] [PASSED] drm_test_check_reject_avi_infoframe
[20:46:17] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[20:46:17] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[20:46:17] [PASSED] drm_test_check_reject_audio_infoframe
[20:46:17] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[20:46:17] ================= drm_managed (2 subtests) =================
[20:46:17] [PASSED] drm_test_managed_release_action
[20:46:17] [PASSED] drm_test_managed_run_action
[20:46:17] =================== [PASSED] drm_managed ===================
[20:46:17] =================== drm_mm (6 subtests) ====================
[20:46:17] [PASSED] drm_test_mm_init
[20:46:17] [PASSED] drm_test_mm_debug
[20:46:17] [PASSED] drm_test_mm_align32
[20:46:17] [PASSED] drm_test_mm_align64
[20:46:17] [PASSED] drm_test_mm_lowest
[20:46:17] [PASSED] drm_test_mm_highest
[20:46:17] ===================== [PASSED] drm_mm ======================
[20:46:17] ============= drm_modes_analog_tv (5 subtests) =============
[20:46:17] [PASSED] drm_test_modes_analog_tv_mono_576i
[20:46:17] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[20:46:17] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[20:46:17] [PASSED] drm_test_modes_analog_tv_pal_576i
[20:46:17] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[20:46:17] =============== [PASSED] drm_modes_analog_tv ===============
[20:46:17] ============== drm_plane_helper (2 subtests) ===============
[20:46:17] =============== drm_test_check_plane_state ================
[20:46:17] [PASSED] clipping_simple
[20:46:17] [PASSED] clipping_rotate_reflect
[20:46:17] [PASSED] positioning_simple
[20:46:17] [PASSED] upscaling
[20:46:17] [PASSED] downscaling
[20:46:17] [PASSED] rounding1
[20:46:17] [PASSED] rounding2
[20:46:17] [PASSED] rounding3
[20:46:17] [PASSED] rounding4
[20:46:17] =========== [PASSED] drm_test_check_plane_state ============
[20:46:17] =========== drm_test_check_invalid_plane_state ============
[20:46:17] [PASSED] positioning_invalid
[20:46:17] [PASSED] upscaling_invalid
[20:46:17] [PASSED] downscaling_invalid
[20:46:17] ======= [PASSED] drm_test_check_invalid_plane_state ========
[20:46:17] ================ [PASSED] drm_plane_helper =================
[20:46:17] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[20:46:17] ====== drm_test_connector_helper_tv_get_modes_check =======
[20:46:17] [PASSED] None
[20:46:17] [PASSED] PAL
[20:46:17] [PASSED] NTSC
[20:46:17] [PASSED] Both, NTSC Default
[20:46:17] [PASSED] Both, PAL Default
[20:46:17] [PASSED] Both, NTSC Default, with PAL on command-line
[20:46:17] [PASSED] Both, PAL Default, with NTSC on command-line
[20:46:17] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[20:46:17] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[20:46:17] ================== drm_rect (9 subtests) ===================
[20:46:17] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[20:46:17] [PASSED] drm_test_rect_clip_scaled_not_clipped
[20:46:17] [PASSED] drm_test_rect_clip_scaled_clipped
[20:46:17] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[20:46:17] ================= drm_test_rect_intersect =================
[20:46:17] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[20:46:17] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[20:46:17] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[20:46:17] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[20:46:17] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[20:46:17] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[20:46:17] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[20:46:17] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[20:46:17] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[20:46:17] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[20:46:17] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[20:46:17] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[20:46:17] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[20:46:17] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[20:46:17] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[20:46:17] ============= [PASSED] drm_test_rect_intersect =============
[20:46:17] ================ drm_test_rect_calc_hscale ================
[20:46:17] [PASSED] normal use
[20:46:17] [PASSED] out of max range
[20:46:17] [PASSED] out of min range
[20:46:17] [PASSED] zero dst
[20:46:17] [PASSED] negative src
[20:46:17] [PASSED] negative dst
[20:46:17] ============ [PASSED] drm_test_rect_calc_hscale ============
[20:46:17] ================ drm_test_rect_calc_vscale ================
[20:46:17] [PASSED] normal use
[20:46:17] [PASSED] out of max range
[20:46:17] [PASSED] out of min range
[20:46:17] [PASSED] zero dst
[20:46:17] [PASSED] negative src
[20:46:17] [PASSED] negative dst
[20:46:17] ============ [PASSED] drm_test_rect_calc_vscale ============
[20:46:17] ================== drm_test_rect_rotate ===================
[20:46:17] [PASSED] reflect-x
[20:46:17] [PASSED] reflect-y
[20:46:17] [PASSED] rotate-0
[20:46:17] [PASSED] rotate-90
[20:46:17] [PASSED] rotate-180
[20:46:17] [PASSED] rotate-270
[20:46:17] ============== [PASSED] drm_test_rect_rotate ===============
[20:46:17] ================ drm_test_rect_rotate_inv =================
[20:46:17] [PASSED] reflect-x
[20:46:17] [PASSED] reflect-y
[20:46:17] [PASSED] rotate-0
[20:46:17] [PASSED] rotate-90
[20:46:17] [PASSED] rotate-180
[20:46:17] [PASSED] rotate-270
[20:46:17] ============ [PASSED] drm_test_rect_rotate_inv =============
[20:46:17] ==================== [PASSED] drm_rect =====================
[20:46:17] ============ drm_sysfb_modeset_test (1 subtest) ============
[20:46:17] ============ drm_test_sysfb_build_fourcc_list =============
[20:46:17] [PASSED] no native formats
[20:46:17] [PASSED] XRGB8888 as native format
[20:46:17] [PASSED] remove duplicates
[20:46:17] [PASSED] convert alpha formats
[20:46:17] [PASSED] random formats
[20:46:17] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[20:46:17] ============= [PASSED] drm_sysfb_modeset_test ==============
[20:46:17] ================== drm_fixp (2 subtests) ===================
[20:46:17] [PASSED] drm_test_int2fixp
[20:46:17] [PASSED] drm_test_sm2fixp
[20:46:17] ==================== [PASSED] drm_fixp =====================
[20:46:17] ============================================================
[20:46:17] Testing complete. Ran 641 tests: passed: 641
[20:46:17] Elapsed time: 26.721s total, 1.814s configuring, 24.739s building, 0.137s running
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[20:46:17] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:46:19] 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
[20:46:28] Starting KUnit Kernel (1/1)...
[20:46:28] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:46:29] ============= refcount_interrupt (4 subtests) ==============
[20:46:29] [PASSED] test_single_irq_change
[20:46:29] [PASSED] test_nested_irq_change
[20:46:29] [PASSED] test_multiple_irq_change
[20:46:29] [PASSED] test_irq_save
[20:46:29] =============== [PASSED] refcount_interrupt ================
[20:46:29] ================= ttm_device (5 subtests) ==================
[20:46:29] [PASSED] ttm_device_init_basic
[20:46:29] [PASSED] ttm_device_init_multiple
[20:46:29] [PASSED] ttm_device_fini_basic
[20:46:29] [PASSED] ttm_device_init_no_vma_man
[20:46:29] ================== ttm_device_init_pools ==================
[20:46:29] [PASSED] No DMA allocations, no DMA32 required
[20:46:29] [PASSED] DMA allocations, DMA32 required
[20:46:29] [PASSED] No DMA allocations, DMA32 required
[20:46:29] [PASSED] DMA allocations, no DMA32 required
[20:46:29] ============== [PASSED] ttm_device_init_pools ==============
[20:46:29] =================== [PASSED] ttm_device ====================
[20:46:29] ================== ttm_pool (8 subtests) ===================
[20:46:29] ================== ttm_pool_alloc_basic ===================
[20:46:29] [PASSED] One page
[20:46:29] [PASSED] More than one page
[20:46:29] [PASSED] Above the allocation limit
[20:46:29] [PASSED] One page, with coherent DMA mappings enabled
[20:46:29] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[20:46:29] ============== [PASSED] ttm_pool_alloc_basic ===============
[20:46:29] ============== ttm_pool_alloc_basic_dma_addr ==============
[20:46:29] [PASSED] One page
[20:46:29] [PASSED] More than one page
[20:46:29] [PASSED] Above the allocation limit
[20:46:29] [PASSED] One page, with coherent DMA mappings enabled
[20:46:29] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[20:46:29] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[20:46:29] [PASSED] ttm_pool_alloc_order_caching_match
[20:46:29] [PASSED] ttm_pool_alloc_caching_mismatch
[20:46:29] [PASSED] ttm_pool_alloc_order_mismatch
[20:46:29] [PASSED] ttm_pool_free_dma_alloc
[20:46:29] [PASSED] ttm_pool_free_no_dma_alloc
[20:46:29] [PASSED] ttm_pool_fini_basic
[20:46:29] ==================== [PASSED] ttm_pool =====================
[20:46:29] ================ ttm_resource (8 subtests) =================
[20:46:29] ================= ttm_resource_init_basic =================
[20:46:29] [PASSED] Init resource in TTM_PL_SYSTEM
[20:46:29] [PASSED] Init resource in TTM_PL_VRAM
[20:46:29] [PASSED] Init resource in a private placement
[20:46:29] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[20:46:29] ============= [PASSED] ttm_resource_init_basic =============
[20:46:29] [PASSED] ttm_resource_init_pinned
[20:46:29] [PASSED] ttm_resource_fini_basic
[20:46:29] [PASSED] ttm_resource_manager_init_basic
[20:46:29] [PASSED] ttm_resource_manager_usage_basic
[20:46:29] [PASSED] ttm_resource_manager_set_used_basic
[20:46:29] [PASSED] ttm_sys_man_alloc_basic
[20:46:29] [PASSED] ttm_sys_man_free_basic
[20:46:29] ================== [PASSED] ttm_resource ===================
[20:46:29] =================== ttm_tt (15 subtests) ===================
[20:46:29] ==================== ttm_tt_init_basic ====================
[20:46:29] [PASSED] Page-aligned size
[20:46:29] [PASSED] Extra pages requested
[20:46:29] ================ [PASSED] ttm_tt_init_basic ================
[20:46:29] [PASSED] ttm_tt_init_misaligned
[20:46:29] [PASSED] ttm_tt_fini_basic
[20:46:29] [PASSED] ttm_tt_fini_sg
[20:46:29] [PASSED] ttm_tt_fini_shmem
[20:46:29] [PASSED] ttm_tt_create_basic
[20:46:29] [PASSED] ttm_tt_create_invalid_bo_type
[20:46:29] [PASSED] ttm_tt_create_ttm_exists
[20:46:29] [PASSED] ttm_tt_create_failed
[20:46:29] [PASSED] ttm_tt_destroy_basic
[20:46:29] [PASSED] ttm_tt_populate_null_ttm
[20:46:29] [PASSED] ttm_tt_populate_populated_ttm
[20:46:29] [PASSED] ttm_tt_unpopulate_basic
[20:46:29] [PASSED] ttm_tt_unpopulate_empty_ttm
[20:46:29] [PASSED] ttm_tt_swapin_basic
[20:46:29] ===================== [PASSED] ttm_tt ======================
[20:46:29] =================== ttm_bo (14 subtests) ===================
[20:46:29] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[20:46:29] [PASSED] Cannot be interrupted and sleeps
[20:46:29] [PASSED] Cannot be interrupted, locks straight away
[20:46:29] [PASSED] Can be interrupted, sleeps
[20:46:29] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[20:46:29] [PASSED] ttm_bo_reserve_locked_no_sleep
[20:46:29] [PASSED] ttm_bo_reserve_no_wait_ticket
[20:46:29] [PASSED] ttm_bo_reserve_double_resv
[20:46:29] [PASSED] ttm_bo_reserve_interrupted
[20:46:29] [PASSED] ttm_bo_reserve_deadlock
[20:46:29] [PASSED] ttm_bo_unreserve_basic
[20:46:29] [PASSED] ttm_bo_unreserve_pinned
[20:46:29] [PASSED] ttm_bo_unreserve_bulk
[20:46:29] [PASSED] ttm_bo_fini_basic
[20:46:29] [PASSED] ttm_bo_fini_shared_resv
[20:46:29] [PASSED] ttm_bo_pin_basic
[20:46:29] [PASSED] ttm_bo_pin_unpin_resource
[20:46:29] [PASSED] ttm_bo_multiple_pin_one_unpin
[20:46:29] ===================== [PASSED] ttm_bo ======================
[20:46:29] ============== ttm_bo_validate (22 subtests) ===============
[20:46:29] ============== ttm_bo_init_reserved_sys_man ===============
[20:46:29] [PASSED] Buffer object for userspace
[20:46:29] [PASSED] Kernel buffer object
[20:46:29] [PASSED] Shared buffer object
[20:46:29] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[20:46:29] ============== ttm_bo_init_reserved_mock_man ==============
[20:46:29] [PASSED] Buffer object for userspace
[20:46:29] [PASSED] Kernel buffer object
[20:46:29] [PASSED] Shared buffer object
[20:46:29] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[20:46:29] [PASSED] ttm_bo_init_reserved_resv
[20:46:29] ================== ttm_bo_validate_basic ==================
[20:46:29] [PASSED] Buffer object for userspace
[20:46:29] [PASSED] Kernel buffer object
[20:46:29] [PASSED] Shared buffer object
[20:46:29] ============== [PASSED] ttm_bo_validate_basic ==============
[20:46:29] [PASSED] ttm_bo_validate_invalid_placement
[20:46:29] ============= ttm_bo_validate_same_placement ==============
[20:46:29] [PASSED] System manager
[20:46:29] [PASSED] VRAM manager
[20:46:29] ========= [PASSED] ttm_bo_validate_same_placement ==========
[20:46:29] [PASSED] ttm_bo_validate_failed_alloc
[20:46:29] [PASSED] ttm_bo_validate_pinned
[20:46:29] [PASSED] ttm_bo_validate_busy_placement
[20:46:29] ================ ttm_bo_validate_multihop =================
[20:46:29] [PASSED] Buffer object for userspace
[20:46:29] [PASSED] Kernel buffer object
[20:46:29] [PASSED] Shared buffer object
[20:46:29] ============ [PASSED] ttm_bo_validate_multihop =============
[20:46:29] ========== ttm_bo_validate_no_placement_signaled ==========
[20:46:29] [PASSED] Buffer object in system domain, no page vector
[20:46:29] [PASSED] Buffer object in system domain with an existing page vector
[20:46:29] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[20:46:29] ======== ttm_bo_validate_no_placement_not_signaled ========
[20:46:29] [PASSED] Buffer object for userspace
[20:46:29] [PASSED] Kernel buffer object
[20:46:29] [PASSED] Shared buffer object
[20:46:29] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[20:46:29] [PASSED] ttm_bo_validate_move_fence_signaled
[20:46:29] ========= ttm_bo_validate_move_fence_not_signaled =========
[20:46:29] [PASSED] Waits for GPU
[20:46:29] [PASSED] Tries to lock straight away
[20:46:29] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[20:46:29] [PASSED] ttm_bo_validate_swapout
[20:46:29] [PASSED] ttm_bo_validate_happy_evict
[20:46:29] [PASSED] ttm_bo_validate_all_pinned_evict
[20:46:29] [PASSED] ttm_bo_validate_allowed_only_evict
[20:46:29] [PASSED] ttm_bo_validate_deleted_evict
[20:46:29] [PASSED] ttm_bo_validate_busy_domain_evict
[20:46:29] [PASSED] ttm_bo_validate_evict_gutting
[20:46:29] [PASSED] ttm_bo_validate_recrusive_evict
[20:46:29] ================= [PASSED] ttm_bo_validate =================
[20:46:29] ============================================================
[20:46:29] Testing complete. Ran 106 tests: passed: 106
[20:46:29] Elapsed time: 11.937s total, 1.818s configuring, 9.904s building, 0.181s running
+ for kcfg in "${kunitconfigs[@]}"
+ [[ ! -f /kernel/drivers/dma-buf/.kunitconfig ]]
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[20:46:29] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[20:46:31] 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
[20:46:39] Starting KUnit Kernel (1/1)...
[20:46:39] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[20:46:39] ============= refcount_interrupt (4 subtests) ==============
[20:46:39] [PASSED] test_single_irq_change
[20:46:39] [PASSED] test_nested_irq_change
[20:46:39] [PASSED] test_multiple_irq_change
[20:46:39] [PASSED] test_irq_save
[20:46:39] =============== [PASSED] refcount_interrupt ================
[20:46:39] =============== dma-buf-fence (12 subtests) ================
[20:46:39] [PASSED] test_sanitycheck
[20:46:39] [PASSED] test_signaling
[20:46:39] [PASSED] test_add_callback
[20:46:39] [PASSED] test_late_add_callback
[20:46:39] [PASSED] test_rm_callback
[20:46:39] [PASSED] test_late_rm_callback
[20:46:39] [PASSED] test_status
[20:46:39] [PASSED] test_error
[20:46:39] [PASSED] test_wait
[20:46:39] [PASSED] test_wait_timeout
[20:46:39] [PASSED] test_stub
[20:46:39] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[20:46:39] ================== [PASSED] dma-buf-fence ==================
[20:46:39] ============ dma-buf-fence-chain (11 subtests) =============
[20:46:39] [PASSED] test_sanitycheck
[20:46:39] [PASSED] test_find_seqno
[20:46:39] [PASSED] test_find_signaled
[20:46:39] [PASSED] test_find_out_of_order
[20:46:44] [PASSED] test_find_gap
[20:46:44] [PASSED] test_find_race
[20:46:44] [PASSED] test_signal_forward
[20:46:44] [PASSED] test_signal_backward
[20:46:44] [PASSED] test_wait_forward
[20:46:44] [PASSED] test_wait_backward
[20:46:44] [PASSED] test_wait_random
[20:46:44] =============== [PASSED] dma-buf-fence-chain ===============
[20:46:44] ============ dma-buf-fence-unwrap (10 subtests) ============
[20:46:44] [PASSED] test_sanitycheck
[20:46:44] [PASSED] test_unwrap_array
[20:46:44] [PASSED] test_unwrap_chain
[20:46:44] [PASSED] test_unwrap_chain_array
[20:46:44] [PASSED] test_unwrap_merge
[20:46:44] [PASSED] test_unwrap_merge_duplicate
[20:46:44] [PASSED] test_unwrap_merge_seqno
[20:46:44] [PASSED] test_unwrap_merge_order
[20:46:44] [PASSED] test_unwrap_merge_complex
[20:46:44] [PASSED] test_unwrap_merge_complex_seqno
[20:46:44] ============== [PASSED] dma-buf-fence-unwrap ===============
[20:46:44] ================ dma-buf-resv (5 subtests) =================
[20:46:44] [PASSED] test_sanitycheck
[20:46:44] ===================== test_signaling ======================
[20:46:44] [PASSED] kernel
[20:46:44] [PASSED] write
[20:46:44] [PASSED] read
[20:46:44] [PASSED] bookkeep
[20:46:44] ================= [PASSED] test_signaling ==================
[20:46:44] ====================== test_for_each ======================
[20:46:44] [PASSED] kernel
[20:46:44] [PASSED] write
[20:46:44] [PASSED] read
[20:46:44] [PASSED] bookkeep
[20:46:44] ================== [PASSED] test_for_each ==================
[20:46:44] ================= test_for_each_unlocked ==================
[20:46:44] [PASSED] kernel
[20:46:44] [PASSED] write
[20:46:44] [PASSED] read
[20:46:44] [PASSED] bookkeep
[20:46:44] ============= [PASSED] test_for_each_unlocked ==============
[20:46:44] ===================== test_get_fences =====================
[20:46:44] [PASSED] kernel
[20:46:44] [PASSED] write
[20:46:44] [PASSED] read
[20:46:44] [PASSED] bookkeep
[20:46:44] ================= [PASSED] test_get_fences =================
[20:46:44] ================== [PASSED] dma-buf-resv ===================
[20:46:44] ============================================================
[20:46:44] Testing complete. Ran 54 tests: passed: 53, skipped: 1
[20:46:44] Elapsed time: 15.705s total, 1.835s configuring, 8.598s building, 5.261s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 34+ messages in thread
* ✗ Xe.CI.BAT: failure for Crescent Island PMT support (rev11)
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (21 preceding siblings ...)
2026-09-16 20:46 ` ✓ CI.KUnit: success " Patchwork
@ 2026-09-16 22:00 ` Patchwork
2026-09-17 1:39 ` ✗ Xe.CI.FULL: " Patchwork
23 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2026-09-16 22:00 UTC (permalink / raw)
To: Michael J. Ruhl; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 2291 bytes --]
== Series Details ==
Series: Crescent Island PMT support (rev11)
URL : https://patchwork.freedesktop.org/series/160717/
State : failure
== Summary ==
CI Bug Log - changes from xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5_BAT -> xe-pw-160717v11_BAT
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-160717v11_BAT absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-160717v11_BAT, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (15 -> 15)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-160717v11_BAT:
### IGT changes ###
#### Possible regressions ####
* igt@xe_query@multigpu-query-cs-cycles:
- bat-bmg-3: [PASS][1] -> [FAIL][2]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/bat-bmg-3/igt@xe_query@multigpu-query-cs-cycles.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/bat-bmg-3/igt@xe_query@multigpu-query-cs-cycles.html
Known issues
------------
Here are the changes found in xe-pw-160717v11_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@xe_waitfence@engine:
- bat-wcl-2: [PASS][3] -> [FAIL][4] ([Intel XE#9103])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/bat-wcl-2/igt@xe_waitfence@engine.html
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/bat-wcl-2/igt@xe_waitfence@engine.html
[Intel XE#9103]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9103
Build changes
-------------
* Linux: xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5 -> xe-pw-160717v11
IGT_9099: 9099
xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5: bb38af66c2f21340a7c081afbb7ace249357fbb5
xe-pw-160717v11: 160717v11
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/index.html
[-- Attachment #2: Type: text/html, Size: 2898 bytes --]
^ permalink raw reply [flat|nested] 34+ messages in thread
* ✗ Xe.CI.FULL: failure for Crescent Island PMT support (rev11)
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
` (22 preceding siblings ...)
2026-09-16 22:00 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2026-09-17 1:39 ` Patchwork
23 siblings, 0 replies; 34+ messages in thread
From: Patchwork @ 2026-09-17 1:39 UTC (permalink / raw)
To: Michael J. Ruhl; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 41730 bytes --]
== Series Details ==
Series: Crescent Island PMT support (rev11)
URL : https://patchwork.freedesktop.org/series/160717/
State : failure
== Summary ==
CI Bug Log - changes from xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5_FULL -> xe-pw-160717v11_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-160717v11_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-160717v11_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
to document this new failure mode, which will reduce false positives in CI.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-160717v11_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@xe_configfs@ctx-restore-post-bb-invalid:
- shard-bmg: [PASS][1] -> [DMESG-WARN][2] +1 other test dmesg-warn
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-bmg-10/igt@xe_configfs@ctx-restore-post-bb-invalid.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-9/igt@xe_configfs@ctx-restore-post-bb-invalid.html
Known issues
------------
Here are the changes found in xe-pw-160717v11_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@4-tiled-16bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][3] ([Intel XE#2327])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-3/igt@kms_big_fb@4-tiled-16bpp-rotate-270.html
* igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip:
- shard-lnl: NOTRUN -> [SKIP][4] ([Intel XE#7059] / [Intel XE#7085])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_big_fb@yf-tiled-32bpp-rotate-0:
- shard-lnl: NOTRUN -> [SKIP][5] ([Intel XE#1124]) +2 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_big_fb@yf-tiled-32bpp-rotate-0.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-bmg: NOTRUN -> [SKIP][6] ([Intel XE#1124]) +3 other tests skip
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_bw@connected-linear-tiling-2-displays-target-2560x1440p:
- shard-lnl: NOTRUN -> [SKIP][7] ([Intel XE#7679])
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_bw@connected-linear-tiling-2-displays-target-2560x1440p.html
* igt@kms_bw@linear-tiling-4-displays-target-3840x2160p:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#367]) +1 other test skip
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_bw@linear-tiling-4-displays-target-3840x2160p.html
* igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#2887]) +9 other tests skip
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_ccs@bad-rotation-90-4-tiled-mtl-mc-ccs.html
* igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc:
- shard-lnl: NOTRUN -> [SKIP][10] ([Intel XE#2887]) +4 other tests skip
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc:
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#3432])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-rc-ccs-cc.html
* igt@kms_cdclk@plane-scaling:
- shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#2724] / [Intel XE#7449])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_cdclk@plane-scaling.html
* igt@kms_chamelium_color@ctm-blue-to-red:
- shard-lnl: NOTRUN -> [SKIP][13] ([Intel XE#306] / [Intel XE#7358])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_chamelium_color@ctm-blue-to-red.html
* igt@kms_chamelium_color@ctm-red-to-blue:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#2325] / [Intel XE#7358])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-3/igt@kms_chamelium_color@ctm-red-to-blue.html
* igt@kms_chamelium_color_pipeline@plane-lut1d:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#7358]) +2 other tests skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_chamelium_color_pipeline@plane-lut1d.html
* igt@kms_chamelium_hpd@common-hpd-after-suspend:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#2252]) +3 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-5/igt@kms_chamelium_hpd@common-hpd-after-suspend.html
* igt@kms_chamelium_hpd@dp-hpd-after-suspend:
- shard-lnl: NOTRUN -> [SKIP][17] ([Intel XE#373]) +1 other test skip
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_chamelium_hpd@dp-hpd-after-suspend.html
* igt@kms_content_protection@atomic-hdcp14:
- shard-bmg: NOTRUN -> [FAIL][18] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +1 other test fail
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_content_protection@atomic-hdcp14.html
* igt@kms_content_protection@legacy-hdcp14:
- shard-lnl: NOTRUN -> [SKIP][19] ([Intel XE#7642]) +1 other test skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_content_protection@legacy-hdcp14.html
* igt@kms_cursor_crc@cursor-onscreen-512x170:
- shard-lnl: NOTRUN -> [SKIP][20] ([Intel XE#2321] / [Intel XE#7355])
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_cursor_crc@cursor-onscreen-512x170.html
* igt@kms_cursor_crc@cursor-onscreen-512x512:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#2321] / [Intel XE#7355])
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-5/igt@kms_cursor_crc@cursor-onscreen-512x512.html
* igt@kms_cursor_legacy@cursora-vs-flipb-varying-size:
- shard-lnl: NOTRUN -> [SKIP][22] ([Intel XE#309] / [Intel XE#7343])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_cursor_legacy@cursora-vs-flipb-varying-size.html
* igt@kms_cursor_legacy@flip-vs-cursor-atomic:
- shard-bmg: [PASS][23] -> [FAIL][24] ([Intel XE#7809])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-bmg-4/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-8/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
* igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3:
- shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#1340] / [Intel XE#7435])
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_dither@fb-8bpc-vs-panel-6bpc@pipe-a-hdmi-a-3.html
* igt@kms_dp_link_training@non-uhbr-mst:
- shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#4354] / [Intel XE#5882])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-5/igt@kms_dp_link_training@non-uhbr-mst.html
* igt@kms_dsc@dsc-fractional-bpp:
- shard-lnl: NOTRUN -> [SKIP][27] ([Intel XE#8265])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_dsc@dsc-fractional-bpp.html
* igt@kms_dsc@dsc-with-output-formats-with-bpc:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#8265]) +1 other test skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_dsc@dsc-with-output-formats-with-bpc.html
* igt@kms_fbcon_fbt@psr:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#8680])
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-10/igt@kms_fbcon_fbt@psr.html
* igt@kms_feature_discovery@psr2:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#2374] / [Intel XE#6128])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-5/igt@kms_feature_discovery@psr2.html
* igt@kms_flip@2x-flip-vs-dpms-on-nop:
- shard-lnl: NOTRUN -> [SKIP][31] ([Intel XE#1421]) +1 other test skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_flip@2x-flip-vs-dpms-on-nop.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1:
- shard-lnl: [PASS][32] -> [FAIL][33] ([Intel XE#301] / [Intel XE#3149]) +1 other test fail
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling:
- shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-5/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs-upscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling:
- shard-lnl: NOTRUN -> [SKIP][35] ([Intel XE#1397] / [Intel XE#1745] / [Intel XE#7385] / [Intel XE#9144]) +1 other test skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling.html
* igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling@pipe-a-default-mode:
- shard-lnl: NOTRUN -> [SKIP][36] ([Intel XE#1397] / [Intel XE#7385] / [Intel XE#9144]) +1 other test skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tile-downscaling@pipe-a-default-mode.html
* igt@kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-render:
- shard-lnl: NOTRUN -> [SKIP][37] ([Intel XE#6312] / [Intel XE#651]) +1 other test skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_frontbuffer_tracking@drrs-1p-primscrn-pri-shrfb-draw-render.html
* igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#2311]) +29 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-3/igt@kms_frontbuffer_tracking@drrs-2p-primscrn-spr-indfb-draw-render.html
* igt@kms_frontbuffer_tracking@drrshdr-rgb101010-draw-render:
- shard-lnl: NOTRUN -> [SKIP][39] ([Intel XE#6312]) +3 other tests skip
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_frontbuffer_tracking@drrshdr-rgb101010-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt:
- shard-lnl: NOTRUN -> [SKIP][40] ([Intel XE#656] / [Intel XE#7905]) +12 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-indfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][41] ([Intel XE#4141]) +7 other tests skip
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbc-tiling-y:
- shard-bmg: NOTRUN -> [SKIP][42] ([Intel XE#2352] / [Intel XE#7399])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-tiling-y.html
* igt@kms_frontbuffer_tracking@fbchdr-1p-offscreen-pri-shrfb-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][43] ([Intel XE#7865]) +6 other tests skip
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_frontbuffer_tracking@fbchdr-1p-offscreen-pri-shrfb-draw-blt.html
* igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-shrfb-msflip-blt:
- shard-lnl: NOTRUN -> [SKIP][44] ([Intel XE#7905]) +12 other tests skip
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-shrfb-msflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt:
- shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#2313]) +28 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_frontbuffer_tracking@fbcpsr-1p-primscrn-indfb-plflip-blt.html
* igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][46] ([Intel XE#7061] / [Intel XE#7356]) +3 other tests skip
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-blt.html
* igt@kms_frontbuffer_tracking@hdr-abgr161616f-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][47] ([Intel XE#7061]) +5 other tests skip
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-1/igt@kms_frontbuffer_tracking@hdr-abgr161616f-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-blt:
- shard-lnl: NOTRUN -> [SKIP][48] ([Intel XE#7061])
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_frontbuffer_tracking@hdr-argb161616f-draw-blt.html
* igt@kms_frontbuffer_tracking@plane-fbc-rte:
- shard-bmg: NOTRUN -> [SKIP][49] ([Intel XE#2350] / [Intel XE#7503])
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_frontbuffer_tracking@plane-fbc-rte.html
* igt@kms_hdr@static-toggle-dpms:
- shard-lnl: NOTRUN -> [SKIP][50] ([Intel XE#1503])
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_hdr@static-toggle-dpms.html
* igt@kms_joiner@invalid-modeset-big-joiner:
- shard-bmg: NOTRUN -> [SKIP][51] ([Intel XE#6901])
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_joiner@invalid-modeset-big-joiner.html
* igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping:
- shard-lnl: NOTRUN -> [SKIP][52] ([Intel XE#7283]) +1 other test skip
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_plane@pixel-format-4-tiled-dg2-mc-ccs-modifier-source-clamping.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75@pipe-a:
- shard-lnl: NOTRUN -> [SKIP][53] ([Intel XE#2763] / [Intel XE#6886]) +3 other tests skip
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-75@pipe-a.html
* igt@kms_pm_lpsp@kms-lpsp:
- shard-bmg: NOTRUN -> [SKIP][54] ([Intel XE#2499])
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-10/igt@kms_pm_lpsp@kms-lpsp.html
* igt@kms_pm_rpm@system-suspend-idle:
- shard-bmg: NOTRUN -> [ABORT][55] ([Intel XE#9093])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-1/igt@kms_pm_rpm@system-suspend-idle.html
* igt@kms_pm_rpm@system-suspend-modeset:
- shard-bmg: [PASS][56] -> [INCOMPLETE][57] ([Intel XE#9241])
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-bmg-8/igt@kms_pm_rpm@system-suspend-modeset.html
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-6/igt@kms_pm_rpm@system-suspend-modeset.html
* igt@kms_psr2_sf@pr-cursor-plane-update-sf:
- shard-lnl: NOTRUN -> [SKIP][58] ([Intel XE#2893] / [Intel XE#7304])
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_psr2_sf@pr-cursor-plane-update-sf.html
* igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-sf:
- shard-bmg: NOTRUN -> [SKIP][59] ([Intel XE#1489]) +1 other test skip
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-10/igt@kms_psr2_sf@psr2-cursor-plane-move-continuous-exceed-sf.html
* igt@kms_psr@fbc-pr-primary-render:
- shard-lnl: NOTRUN -> [SKIP][60] ([Intel XE#1406])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_psr@fbc-pr-primary-render.html
* igt@kms_psr@psr2-sprite-blt:
- shard-bmg: NOTRUN -> [SKIP][61] ([Intel XE#2234] / [Intel XE#2850]) +7 other tests skip
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_psr@psr2-sprite-blt.html
* igt@kms_rotation_crc@bad-pixel-format:
- shard-lnl: NOTRUN -> [SKIP][62] ([Intel XE#3414] / [Intel XE#3904] / [Intel XE#7342])
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_rotation_crc@bad-pixel-format.html
* igt@kms_rotation_crc@primary-rotation-270:
- shard-bmg: NOTRUN -> [SKIP][63] ([Intel XE#3904] / [Intel XE#7342]) +1 other test skip
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_rotation_crc@primary-rotation-270.html
* igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180:
- shard-bmg: NOTRUN -> [SKIP][64] ([Intel XE#2330] / [Intel XE#5813])
[64]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-1/igt@kms_rotation_crc@primary-yf-tiled-reflect-x-180.html
* igt@kms_scaling_modes@scaling-mode-full-aspect:
- shard-bmg: NOTRUN -> [SKIP][65] ([Intel XE#2413])
[65]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-10/igt@kms_scaling_modes@scaling-mode-full-aspect.html
* igt@kms_sharpness_filter@filter-strength:
- shard-bmg: NOTRUN -> [SKIP][66] ([Intel XE#6503])
[66]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@kms_sharpness_filter@filter-strength.html
* igt@kms_vrr@seamless-rr-switch-drrs:
- shard-lnl: NOTRUN -> [SKIP][67] ([Intel XE#1499] / [Intel XE#9271])
[67]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@kms_vrr@seamless-rr-switch-drrs.html
* igt@kms_vrr@seamless-rr-switch-virtual:
- shard-bmg: NOTRUN -> [SKIP][68] ([Intel XE#1499] / [Intel XE#9271]) +1 other test skip
[68]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-3/igt@kms_vrr@seamless-rr-switch-virtual.html
* igt@xe_compute_preempt@compute-preempt-many-vram:
- shard-bmg: [PASS][69] -> [ABORT][70] ([Intel XE#9279]) +1 other test abort
[69]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-bmg-9/igt@xe_compute_preempt@compute-preempt-many-vram.html
[70]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-3/igt@xe_compute_preempt@compute-preempt-many-vram.html
- shard-lnl: NOTRUN -> [SKIP][71] ([Intel XE#5191] / [Intel XE#7316] / [Intel XE#7346])
[71]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_compute_preempt@compute-preempt-many-vram.html
* igt@xe_evict@evict-large-external:
- shard-lnl: NOTRUN -> [SKIP][72] ([Intel XE#6540] / [Intel XE#688]) +1 other test skip
[72]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_evict@evict-large-external.html
* igt@xe_exec_balancer@no-exec-cm-parallel-userptr-rebind:
- shard-lnl: NOTRUN -> [SKIP][73] ([Intel XE#7482]) +4 other tests skip
[73]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_exec_balancer@no-exec-cm-parallel-userptr-rebind.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-mmap:
- shard-lnl: NOTRUN -> [SKIP][74] ([Intel XE#1392]) +1 other test skip
[74]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-basic-defer-mmap.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr:
- shard-bmg: NOTRUN -> [SKIP][75] ([Intel XE#2322] / [Intel XE#7372]) +3 other tests skip
[75]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-3/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-bindexecqueue-userptr.html
* igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-imm:
- shard-lnl: NOTRUN -> [SKIP][76] ([Intel XE#8374]) +2 other tests skip
[76]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_exec_fault_mode@many-execqueues-multi-queue-userptr-imm.html
* igt@xe_exec_fault_mode@many-multi-queue-userptr-invalidate-race-prefetch:
- shard-bmg: NOTRUN -> [SKIP][77] ([Intel XE#8374]) +5 other tests skip
[77]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@xe_exec_fault_mode@many-multi-queue-userptr-invalidate-race-prefetch.html
* igt@xe_exec_multi_queue@many-queues-preempt-mode-fault-basic:
- shard-bmg: NOTRUN -> [SKIP][78] ([Intel XE#8364]) +18 other tests skip
[78]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@xe_exec_multi_queue@many-queues-preempt-mode-fault-basic.html
* igt@xe_exec_multi_queue@one-queue-dyn-priority-smem:
- shard-lnl: NOTRUN -> [SKIP][79] ([Intel XE#8364]) +6 other tests skip
[79]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_exec_multi_queue@one-queue-dyn-priority-smem.html
* igt@xe_exec_reset@cm-multi-queue-cat-error:
- shard-bmg: NOTRUN -> [SKIP][80] ([Intel XE#8369]) +1 other test skip
[80]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-3/igt@xe_exec_reset@cm-multi-queue-cat-error.html
* igt@xe_exec_threads@threads-hang-userptr-invalidate-race:
- shard-bmg: [PASS][81] -> [FAIL][82] ([Intel XE#9096])
[81]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-bmg-6/igt@xe_exec_threads@threads-hang-userptr-invalidate-race.html
[82]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-5/igt@xe_exec_threads@threads-hang-userptr-invalidate-race.html
* igt@xe_exec_threads@threads-multi-queue-mixed-userptr-rebind:
- shard-bmg: NOTRUN -> [SKIP][83] ([Intel XE#8378]) +4 other tests skip
[83]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-10/igt@xe_exec_threads@threads-multi-queue-mixed-userptr-rebind.html
* igt@xe_exec_threads@threads-multi-queue-shared-vm-userptr-invalidate-race:
- shard-lnl: NOTRUN -> [SKIP][84] ([Intel XE#8378]) +1 other test skip
[84]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_exec_threads@threads-multi-queue-shared-vm-userptr-invalidate-race.html
* igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit:
- shard-bmg: NOTRUN -> [SKIP][85] ([Intel XE#2229])
[85]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-5/igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit.html
* igt@xe_mmap@small-bar:
- shard-bmg: NOTRUN -> [SKIP][86] ([Intel XE#586] / [Intel XE#7323] / [Intel XE#7384])
[86]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-3/igt@xe_mmap@small-bar.html
* igt@xe_multigpu_svm@mgpu-latency-copy-basic:
- shard-bmg: NOTRUN -> [SKIP][87] ([Intel XE#6964])
[87]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-1/igt@xe_multigpu_svm@mgpu-latency-copy-basic.html
* igt@xe_page_reclaim@binds-large-split:
- shard-lnl: NOTRUN -> [SKIP][88] ([Intel XE#7793])
[88]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_page_reclaim@binds-large-split.html
* igt@xe_page_reclaim@boundary-split:
- shard-bmg: NOTRUN -> [SKIP][89] ([Intel XE#7793]) +1 other test skip
[89]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@xe_page_reclaim@boundary-split.html
* igt@xe_pat@xa-app-transient-media-on:
- shard-lnl: NOTRUN -> [SKIP][90] ([Intel XE#7590] / [Intel XE#7772])
[90]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_pat@xa-app-transient-media-on.html
* igt@xe_pm@d3cold-basic-exec:
- shard-lnl: NOTRUN -> [SKIP][91] ([Intel XE#2284] / [Intel XE#366] / [Intel XE#7370])
[91]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_pm@d3cold-basic-exec.html
* igt@xe_pm@s3-vm-bind-unbind-all:
- shard-lnl: NOTRUN -> [SKIP][92] ([Intel XE#584] / [Intel XE#7369]) +1 other test skip
[92]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_pm@s3-vm-bind-unbind-all.html
* igt@xe_prefetch_fault@prefetch-fault-svm:
- shard-bmg: NOTRUN -> [SKIP][93] ([Intel XE#7599])
[93]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-10/igt@xe_prefetch_fault@prefetch-fault-svm.html
* igt@xe_pxp@pxp-stale-bo-bind-post-termination-irq:
- shard-bmg: NOTRUN -> [SKIP][94] ([Intel XE#4733] / [Intel XE#7417]) +1 other test skip
[94]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-3/igt@xe_pxp@pxp-stale-bo-bind-post-termination-irq.html
* igt@xe_query@multigpu-query-pxp-status:
- shard-lnl: NOTRUN -> [SKIP][95] ([Intel XE#944])
[95]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_query@multigpu-query-pxp-status.html
* igt@xe_query@multigpu-query-uc-fw-version-huc:
- shard-bmg: NOTRUN -> [SKIP][96] ([Intel XE#944]) +1 other test skip
[96]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-3/igt@xe_query@multigpu-query-uc-fw-version-huc.html
* igt@xe_sriov_flr@flr-twice:
- shard-lnl: NOTRUN -> [SKIP][97] ([Intel XE#4273])
[97]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_sriov_flr@flr-twice.html
* igt@xe_survivability@runtime-survivability:
- shard-bmg: NOTRUN -> [DMESG-WARN][98] ([Intel XE#8966])
[98]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-1/igt@xe_survivability@runtime-survivability.html
* igt@xe_vm@overcommit-nonfault-vram-lr-external-nodefer:
- shard-lnl: NOTRUN -> [SKIP][99] ([Intel XE#7892])
[99]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-1/igt@xe_vm@overcommit-nonfault-vram-lr-external-nodefer.html
#### Possible fixes ####
* igt@kms_flip@dpms-vs-vblank-race-interruptible@d-dp2:
- shard-bmg: [FAIL][100] ([Intel XE#3098]) -> [PASS][101] +1 other test pass
[100]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-bmg-5/igt@kms_flip@dpms-vs-vblank-race-interruptible@d-dp2.html
[101]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-2/igt@kms_flip@dpms-vs-vblank-race-interruptible@d-dp2.html
* igt@kms_hdr@static-toggle-suspend:
- shard-bmg: [INCOMPLETE][102] -> [PASS][103] +1 other test pass
[102]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-bmg-6/igt@kms_hdr@static-toggle-suspend.html
[103]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-1/igt@kms_hdr@static-toggle-suspend.html
* igt@xe_exec_threads@threads-hang-fd-userptr-invalidate-race:
- shard-bmg: [FAIL][104] ([Intel XE#9096]) -> [PASS][105]
[104]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-bmg-3/igt@xe_exec_threads@threads-hang-fd-userptr-invalidate-race.html
[105]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-8/igt@xe_exec_threads@threads-hang-fd-userptr-invalidate-race.html
* igt@xe_fault_injection@probe-fail-guc-xe_guc_mmio_send_recv:
- shard-bmg: [ABORT][106] ([Intel XE#8007]) -> [PASS][107]
[106]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-bmg-7/igt@xe_fault_injection@probe-fail-guc-xe_guc_mmio_send_recv.html
[107]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-7/igt@xe_fault_injection@probe-fail-guc-xe_guc_mmio_send_recv.html
* igt@xe_pm@s3-multiple-execs:
- shard-bmg: [INCOMPLETE][108] ([Intel XE#8175]) -> [PASS][109]
[108]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-bmg-6/igt@xe_pm@s3-multiple-execs.html
[109]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-5/igt@xe_pm@s3-multiple-execs.html
* igt@xe_vm@mmap-style-bind-userptr-either-side-full:
- shard-bmg: [ABORT][110] ([Intel XE#9281]) -> [PASS][111]
[110]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-bmg-1/igt@xe_vm@mmap-style-bind-userptr-either-side-full.html
[111]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-10/igt@xe_vm@mmap-style-bind-userptr-either-side-full.html
#### Warnings ####
* igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions:
- shard-lnl: [SKIP][112] ([Intel XE#309] / [Intel XE#7343] / [Intel XE#7935]) -> [SKIP][113] ([Intel XE#309] / [Intel XE#7343])
[112]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-lnl-8/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html
[113]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-7/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][114] ([Intel XE#2426] / [Intel XE#5848]) -> [SKIP][115] ([Intel XE#2509] / [Intel XE#7437])
[114]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-bmg-9/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[115]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-3/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
* igt@xe_exec_reset@gt-reset-fault-injection:
- shard-bmg: [ABORT][116] ([Intel XE#9131] / [Intel XE#9145]) -> [DMESG-WARN][117] ([Intel XE#9130])
[116]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-bmg-9/igt@xe_exec_reset@gt-reset-fault-injection.html
[117]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-bmg-3/igt@xe_exec_reset@gt-reset-fault-injection.html
- shard-lnl: [DMESG-WARN][118] ([Intel XE#9130]) -> [ABORT][119] ([Intel XE#9140] / [Intel XE#9145])
[118]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5/shard-lnl-4/igt@xe_exec_reset@gt-reset-fault-injection.html
[119]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/shard-lnl-7/igt@xe_exec_reset@gt-reset-fault-injection.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1340
[Intel XE#1392]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1392
[Intel XE#1397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1397
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1421]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1421
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1499
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1745]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1745
[Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330
[Intel XE#2350]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2350
[Intel XE#2352]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2352
[Intel XE#2374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2374
[Intel XE#2413]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2413
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2499
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2724]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2724
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#2893]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2893
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#306]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/306
[Intel XE#309]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/309
[Intel XE#3098]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3098
[Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#3414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3414
[Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#366]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/366
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#373]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/373
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4273]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4273
[Intel XE#4354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4354
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#5191]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5191
[Intel XE#5813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5813
[Intel XE#584]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/584
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#586]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/586
[Intel XE#5882]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5882
[Intel XE#6128]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6128
[Intel XE#6312]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6312
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#651]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/651
[Intel XE#6540]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6540
[Intel XE#656]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/656
[Intel XE#688]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/688
[Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
[Intel XE#6901]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6901
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#7059]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7059
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7085]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7085
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7304
[Intel XE#7316]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7316
[Intel XE#7323]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7323
[Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
[Intel XE#7343]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7343
[Intel XE#7346]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7346
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
[Intel XE#7369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7369
[Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
[Intel XE#7384]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7384
[Intel XE#7385]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7385
[Intel XE#7399]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7399
[Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
[Intel XE#7435]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7435
[Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
[Intel XE#7449]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7449
[Intel XE#7482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7482
[Intel XE#7503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7503
[Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
[Intel XE#7599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7599
[Intel XE#7642]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7642
[Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
[Intel XE#7772]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7772
[Intel XE#7793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7793
[Intel XE#7809]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7809
[Intel XE#7865]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7865
[Intel XE#7892]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7892
[Intel XE#7905]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7905
[Intel XE#7935]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7935
[Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
[Intel XE#8175]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8175
[Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
[Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
[Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369
[Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
[Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
[Intel XE#8680]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8680
[Intel XE#8966]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8966
[Intel XE#9093]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9093
[Intel XE#9096]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9096
[Intel XE#9130]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9130
[Intel XE#9131]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9131
[Intel XE#9140]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9140
[Intel XE#9144]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9144
[Intel XE#9145]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9145
[Intel XE#9241]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9241
[Intel XE#9271]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9271
[Intel XE#9279]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9279
[Intel XE#9281]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/9281
[Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944
Build changes
-------------
* Linux: xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5 -> xe-pw-160717v11
IGT_9099: 9099
xe-5759-bb38af66c2f21340a7c081afbb7ace249357fbb5: bb38af66c2f21340a7c081afbb7ace249357fbb5
xe-pw-160717v11: 160717v11
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-160717v11/index.html
[-- Attachment #2: Type: text/html, Size: 46399 bytes --]
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v9 03/20] platform/x86/intel/pmt: refactor rc with a return value
2026-09-16 20:11 ` [PATCH v9 03/20] platform/x86/intel/pmt: refactor rc " Michael J. Ruhl
2026-09-16 20:20 ` sashiko-bot
@ 2026-09-17 9:55 ` Ilpo Järvinen
1 sibling, 0 replies; 34+ messages in thread
From: Ilpo Järvinen @ 2026-09-17 9:55 UTC (permalink / raw)
To: Michael J. Ruhl
Cc: platform-driver-x86, intel-xe, Hans de Goede, matthew.brost,
rodrigo.vivi, thomas.hellstrom, airlied, simona, david.e.box,
anoop.c.vijay, badal.nilawar, matthew.d.roper, james.ausmus,
karthik.poosa
On Wed, 16 Sep 2026, Michael J. Ruhl wrote:
> Upcoming changes will include possible failures from HW accesses.
>
> Refactor pmt_crashlog_rw() with a return value.
>
> Update all necessary usage to use the return code.
>
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
> ---
> drivers/platform/x86/intel/pmt/crashlog.c | 101 ++++++++++++++++------
> 1 file changed, 74 insertions(+), 27 deletions(-)
>
> diff --git a/drivers/platform/x86/intel/pmt/crashlog.c b/drivers/platform/x86/intel/pmt/crashlog.c
> index 831cff743803..b6540f3a9a17 100644
> --- a/drivers/platform/x86/intel/pmt/crashlog.c
> +++ b/drivers/platform/x86/intel/pmt/crashlog.c
> @@ -144,27 +144,29 @@ static int pmt_crashlog_rmw(struct crashlog_entry *crashlog, u32 bit, bool set)
> }
>
> /* Read the status register and see if the specified @bit is set */
> -static bool pmt_crashlog_rc(struct crashlog_entry *crashlog, u32 bit)
> +static int pmt_crashlog_rc(struct crashlog_entry *crashlog, u32 bit, bool *state)
> {
> const struct crashlog_status *status = &crashlog->info->status;
> u32 reg = readl(crashlog->entry.disc_table + status->offset);
>
> - return !!(reg & bit);
> + *state = !!(reg & bit);
> +
> + return 0;
> }
>
> -static bool pmt_crashlog_complete(struct crashlog_entry *crashlog)
> +static int pmt_crashlog_complete(struct crashlog_entry *crashlog, bool *state)
> {
> /* return current value of the crashlog complete flag */
> - return pmt_crashlog_rc(crashlog, crashlog->info->status.complete);
> + return pmt_crashlog_rc(crashlog, crashlog->info->status.complete, state);
> }
>
> -static bool pmt_crashlog_disabled(struct crashlog_entry *crashlog)
> +static int pmt_crashlog_disabled(struct crashlog_entry *crashlog, bool *state)
> {
> /* return current value of the crashlog disabled flag */
> - return pmt_crashlog_rc(crashlog, crashlog->info->status.disabled);
> + return pmt_crashlog_rc(crashlog, crashlog->info->status.disabled, state);
> }
>
> -static bool pmt_crashlog_supported(struct intel_pmt_entry *entry, u32 *crash_type, u32 *version)
> +static int pmt_crashlog_supported(struct intel_pmt_entry *entry, u32 *crash_type, u32 *version)
> {
> u32 discovery_header = readl(entry->disc_table + CONTROL_OFFSET);
>
This function still contains return true and false within even if you
changed the return type (and it "works" because of implicit conversions
but better to correct that inconsistency).
(Found by sashiko.)
--
i.
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v9 09/20] drm/xe/vsec: Add DOC text for VSEC
2026-09-16 20:11 ` [PATCH v9 09/20] drm/xe/vsec: Add DOC text for VSEC Michael J. Ruhl
2026-09-16 20:29 ` sashiko-bot
@ 2026-09-17 9:56 ` Ilpo Järvinen
2026-09-17 9:57 ` Ilpo Järvinen
2 siblings, 0 replies; 34+ messages in thread
From: Ilpo Järvinen @ 2026-09-17 9:56 UTC (permalink / raw)
To: Michael J. Ruhl
Cc: platform-driver-x86, intel-xe, Hans de Goede, matthew.brost,
rodrigo.vivi, thomas.hellstrom, airlied, simona, david.e.box,
anoop.c.vijay, badal.nilawar, matthew.d.roper, james.ausmus,
karthik.poosa
On Wed, 16 Sep 2026, Michael J. Ruhl wrote:
> Add the necessary files and text to use the DOC system.
>
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
> ---
> Documentation/gpu/xe/index.rst | 1 +
> Documentation/gpu/xe/xe_vsec.rst | 14 ++++++++++++++
> drivers/gpu/drm/xe/xe_vsec.c | 23 +++++++++++++++++++++++
> 3 files changed, 38 insertions(+)
> create mode 100644 Documentation/gpu/xe/xe_vsec.rst
>
> diff --git a/Documentation/gpu/xe/index.rst b/Documentation/gpu/xe/index.rst
> index 0247a255f7e6..89f013418cf5 100644
> --- a/Documentation/gpu/xe/index.rst
> +++ b/Documentation/gpu/xe/index.rst
> @@ -36,3 +36,4 @@ The display, or :ref:`drm-kms`, support for drm/xe is provided by
> xe_configfs
> xe_gt_stats
> xe_sigid
> + xe_vsec
> diff --git a/Documentation/gpu/xe/xe_vsec.rst b/Documentation/gpu/xe/xe_vsec.rst
> new file mode 100644
> index 000000000000..1a87548489ea
> --- /dev/null
> +++ b/Documentation/gpu/xe/xe_vsec.rst
> @@ -0,0 +1,14 @@
> +.. SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +
> +=====
> +VSEC
> +=====
> +
> +.. kernel-doc:: drivers/gpu/drm/xe/xe_vsec.c
> + :doc: VSEC
> +
> +Internal API
> +============
> +
> +.. kernel-doc:: drivers/gpu/drm/xe/xe_vsec.c
> + :internal:
> diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
> index 1cb9a78ee0ef..ca5d02dce818 100644
> --- a/drivers/gpu/drm/xe/xe_vsec.c
> +++ b/drivers/gpu/drm/xe/xe_vsec.c
> @@ -19,6 +19,17 @@
>
> #include "regs/xe_pmt.h"
>
> +/**
> + * DOC: VSEC
> + *
> + * Some GPUs support the PMT feature. For those that do, this API provides
> + * probe, discovery and usage (control and access) for GPUs that have PMT.
> + *
> + * PMT is usually accessed through a PCI function. However, that is not always
> + * available, so the PMT intel_vsec_register() function can be used to setup up
Wrong grammar: "setup up"
(Found by sashiko.)
> + * PMT usage.
> + */
> +
> /* PMT GUID value for BMG devices. NOTE: this is NOT a PCI id */
> #define BMG_DEVICE_ID 0xE2F8
>
> @@ -140,6 +151,18 @@ static int xe_guid_decode(u32 guid, int *index, u32 *offset)
> return 0;
> }
>
> +/**
> + * xe_pmt_telem_read - Given a device and a PMT GUID, read data into a buffer
> + * @dev: valid Xe device
> + * @guid: PMT GUID (from the PMT discovery struct)
> + * @data: buffer to place data in
> + * @user_offset: a user offset relative to the beginning of the data to read
> + * @count: bytes to read
> + *
> + * Return:
> + * * -EINVAL for VF and PMT WATCHER requests
> + * * count number of bytes read on success
> + */
> int xe_pmt_telem_read(struct device *dev, u32 guid, u64 *data, loff_t user_offset,
> u32 count)
> {
>
--
i.
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [PATCH v9 09/20] drm/xe/vsec: Add DOC text for VSEC
2026-09-16 20:11 ` [PATCH v9 09/20] drm/xe/vsec: Add DOC text for VSEC Michael J. Ruhl
2026-09-16 20:29 ` sashiko-bot
2026-09-17 9:56 ` Ilpo Järvinen
@ 2026-09-17 9:57 ` Ilpo Järvinen
2026-09-17 12:55 ` Ruhl, Michael J
2 siblings, 1 reply; 34+ messages in thread
From: Ilpo Järvinen @ 2026-09-17 9:57 UTC (permalink / raw)
To: Michael J. Ruhl
Cc: platform-driver-x86, intel-xe, Hans de Goede, matthew.brost,
rodrigo.vivi, thomas.hellstrom, airlied, simona, david.e.box,
anoop.c.vijay, badal.nilawar, matthew.d.roper, james.ausmus,
karthik.poosa
On Wed, 16 Sep 2026, Michael J. Ruhl wrote:
> Add the necessary files and text to use the DOC system.
>
> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
> ---
> Documentation/gpu/xe/index.rst | 1 +
> Documentation/gpu/xe/xe_vsec.rst | 14 ++++++++++++++
> drivers/gpu/drm/xe/xe_vsec.c | 23 +++++++++++++++++++++++
> 3 files changed, 38 insertions(+)
> create mode 100644 Documentation/gpu/xe/xe_vsec.rst
>
> diff --git a/Documentation/gpu/xe/index.rst b/Documentation/gpu/xe/index.rst
> index 0247a255f7e6..89f013418cf5 100644
> --- a/Documentation/gpu/xe/index.rst
> +++ b/Documentation/gpu/xe/index.rst
> @@ -36,3 +36,4 @@ The display, or :ref:`drm-kms`, support for drm/xe is provided by
> xe_configfs
> xe_gt_stats
> xe_sigid
> + xe_vsec
> diff --git a/Documentation/gpu/xe/xe_vsec.rst b/Documentation/gpu/xe/xe_vsec.rst
> new file mode 100644
> index 000000000000..1a87548489ea
> --- /dev/null
> +++ b/Documentation/gpu/xe/xe_vsec.rst
> @@ -0,0 +1,14 @@
> +.. SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +
> +=====
> +VSEC
> +=====
> +
> +.. kernel-doc:: drivers/gpu/drm/xe/xe_vsec.c
> + :doc: VSEC
> +
> +Internal API
> +============
> +
> +.. kernel-doc:: drivers/gpu/drm/xe/xe_vsec.c
> + :internal:
> diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
> index 1cb9a78ee0ef..ca5d02dce818 100644
> --- a/drivers/gpu/drm/xe/xe_vsec.c
> +++ b/drivers/gpu/drm/xe/xe_vsec.c
> @@ -19,6 +19,17 @@
>
> #include "regs/xe_pmt.h"
>
> +/**
> + * DOC: VSEC
> + *
> + * Some GPUs support the PMT feature. For those that do, this API provides
> + * probe, discovery and usage (control and access) for GPUs that have PMT.
> + *
> + * PMT is usually accessed through a PCI function. However, that is not always
> + * available, so the PMT intel_vsec_register() function can be used to setup up
> + * PMT usage.
> + */
> +
> /* PMT GUID value for BMG devices. NOTE: this is NOT a PCI id */
> #define BMG_DEVICE_ID 0xE2F8
>
> @@ -140,6 +151,18 @@ static int xe_guid_decode(u32 guid, int *index, u32 *offset)
> return 0;
> }
>
> +/**
> + * xe_pmt_telem_read - Given a device and a PMT GUID, read data into a buffer
> + * @dev: valid Xe device
> + * @guid: PMT GUID (from the PMT discovery struct)
> + * @data: buffer to place data in
> + * @user_offset: a user offset relative to the beginning of the data to read
> + * @count: bytes to read
> + *
> + * Return:
> + * * -EINVAL for VF and PMT WATCHER requests
> + * * count number of bytes read on success
Please also check sashiko's comment on the set of return values.
--
i.
^ permalink raw reply [flat|nested] 34+ messages in thread
* RE: [PATCH v9 17/20] drm/xe/vsec: Support late bind fw information
2026-09-16 20:29 ` sashiko-bot
@ 2026-09-17 12:30 ` Ruhl, Michael J
0 siblings, 0 replies; 34+ messages in thread
From: Ruhl, Michael J @ 2026-09-17 12:30 UTC (permalink / raw)
To: sashiko-reviews@lists.linux.dev; +Cc: intel-xe@lists.freedesktop.org
>-----Original Message-----
>From: sashiko-bot@kernel.org <sashiko-bot@kernel.org>
>Sent: Wednesday, September 16, 2026 4:29 PM
>To: Ruhl, Michael J <michael.j.ruhl@intel.com>
>Cc: intel-xe@lists.freedesktop.org
>Subject: Re: [PATCH v9 17/20] drm/xe/vsec: Support late bind fw information
>
>Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to
>consider:
>- [High] devres: memory leak and dangling devices due to worker racing with
>devres_release_all
>- [High] pm: non-freezable delayed work accesses MMIO during system
>suspend
>- [Medium] pm: asynchronous pm_runtime_put() during device removal
>causes incorrect power state
>- [Medium] pm: uninterruptible msleep in wait_for_fw() blocks task freezer and
>system suspend
>--
>
>commit 2311d189c57553ad608d675783c5e664a010f6ef
>Author: Michael J. Ruhl <michael.j.ruhl@intel.com>
>
>drm/xe/vsec: Support late bind fw information
>
>CRI FW is loaded on power on. Because of this, access to the FW cannot
>be done until it is running.
>
>Update the XE PMT probe and access to check for late bind devices,
>verify, and wait for the appropriate FW state before probe or access.
>
>> diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
>> index d1427ec507285..f905ef51df656 100644
>> --- a/drivers/gpu/drm/xe/xe_vsec.c
>> +++ b/drivers/gpu/drm/xe/xe_vsec.c
>
>[ ... ]
>
>> @@ -281,6 +291,48 @@ static int xe_guid_decode(u32 guid, int *index, u32
>*offset)
>> return -ENODEV;
>> }
>>
>> +static void cri_late_bind_probe_work(struct work_struct *work)
>> +{
>> + struct xe_device *xe = container_of(work, struct xe_device,
>pmt.work.work);
>> +
>> + if (xe_sysctrl_is_oobmsm_fw_ready(xe)) {
>> + cri_late_bind_probe(xe);
>> + xe_pm_runtime_put(xe);
>> + return;
>> + }
>> +
>> + xe->pmt.retry_count++;
>> +
>> + /* wait up to 20 seconds */
>> + if (xe->pmt.retry_count == VSEC_LATE_BIND_RETRY) {
>> + drm_warn(&xe->drm, "PMT probe: Late Binding failed to
>complete\n");
>> + xe_pm_runtime_put(xe);
>> + return;
>> + }
>> +
>> + if (!schedule_delayed_work(&xe->pmt.work,
>msecs_to_jiffies(VSEC_LATE_BIND_DELAY_MSEC)))
>> + xe_pm_runtime_put(xe);
>> +}
>
>[Severity: High]
>Does scheduling this delayed work on the default non-freezable workqueue risk
>MMIO access during system suspend?
runtime_get is held until this completes. the system cannot go to suspend.
m
>If the system enters suspend (S3) while the worker is in its polling loop,
>the PCI device is put into the D3 state. Because the worker is on a
>non-freezable workqueue, it continues running and calls
>xe_sysctrl_is_oobmsm_fw_ready(), which performs MMIO reads on powered-
>down
>hardware.
>
>> +
>> +static bool wait_for_fw(struct xe_device *xe)
>> +{
>> + int retries = VSEC_LATE_BIND_RETRY; /* wait up to 20 secs */
>> +
>> + if (xe->info.platform != XE_CRESCENTISLAND)
>> + return true;
>> +
>> + while (retries--) {
>> + if (xe_sysctrl_is_oobmsm_fw_ready(xe))
>> + return true;
>> +
>> + msleep(VSEC_LATE_BIND_DELAY_MSEC);
>> + }
>
>[Severity: Medium]
>Could this uninterruptible sleep delay task freezing for up to 20 seconds
>during system suspend?
>
>If userspace initiates a read on the PMT telemetry sysfs file, calling
>xe_pmt_telem_read(), it enters this wait_for_fw() loop. If a system suspend is
>triggered concurrently, the uninterruptible msleep() loop prevents the task
>from handling the freeze signal before the 20-second freezer timeout expires.
>
>[ ... ]
>
>> @@ -476,12 +544,46 @@ static enum xe_vsec get_platform_info(struct
>xe_device *xe)
>> return vsec_platforms[xe->info.platform];
>> }
>>
>> +static void cri_late_bind_probe(struct xe_device *xe)
>> +{
>> + struct intel_vsec_platform_info *info;
>> + struct device *dev = xe->drm.dev;
>> + enum xe_vsec platform;
>> +
>> + platform = get_platform_info(xe);
>> + if (platform != XE_VSEC_CRI)
>> + return;
>> +
>> + info = &xe_vsec_info[platform];
>> + if (!info->headers)
>> + return;
>> +
>> + guard(mutex)(&xe->pmt.lock);
>> +
>> + info->priv_data = &xe_cri_pmt_cb;
>> + xe->soc_remapper.set_telem_region(xe, CRI_IDX_TELEM_DISCOVERY);
>> +
>> + intel_vsec_register(dev, info);
>> +}
>> +
>> +static void vsec_disable_late_bind_work(void *arg)
>> +{
>> + struct xe_device *xe = arg;
>> +
>> + /*
>> + * If the queued work is canceled, the runtime reference needs to be
>> + * released here.
>> + */
>> + if (disable_delayed_work_sync(&xe->pmt.work))
>> + xe_pm_runtime_put(xe);
>> +}
>
>[Severity: Medium]
>Is it safe to use an asynchronous runtime put here during the device removal
>path?
>
>When device removal triggers this function via devres cleanup, the pending
>async idle/suspend work can be cancelled by pm_runtime_disable(), leaving
>the hardware in an active power state indefinitely. Should this be a
>synchronous put (xe_pm_runtime_put_sync()) instead?
>
>[ ... ]
>
>> @@ -489,11 +591,11 @@ void xe_vsec_init(struct xe_device *xe)
>[ ... ]
>> case XE_VSEC_CRI:
>> xe->pmt.base_offset = CRI_PMT_OFFSET;
>> +
>> + xe->pmt.retry_count = 0;
>> + INIT_DELAYED_WORK(&xe->pmt.work,
>cri_late_bind_probe_work);
>> +
>> + xe_pm_runtime_get_noresume(xe);
>> + if (!xe_sysctrl_is_oobmsm_fw_ready(xe)) {
>> + schedule_delayed_work(&xe->pmt.work,
>> +
>msecs_to_jiffies(VSEC_LATE_BIND_DELAY_MSEC));
>> + return devm_add_action_or_reset(xe->drm.dev,
>> +
> vsec_disable_late_bind_work,
>> + xe);
>> + }
>> +
>
>[Severity: High]
>Can this worker thread race with devres_release_all() during device unbind?
>
>If the driver is unbound while the worker is in its polling loop,
>devres_release_all() splices the devres list and executes
>vsec_disable_late_bind_work(), which waits for the worker to finish.
>
>However, the worker calls intel_vsec_register() in cri_late_bind_probe(),
>which adds new devres items to the device. Since devres_release_all() only
>splices the list once before executing it, any devres items added by the
>worker are permanently leaked.
>
>--
>Sashiko AI review ·
>https://sashiko.dev/#/patchset/20260916201139.2374531-22-
>michael.j.ruhl@intel.com?part=17
^ permalink raw reply [flat|nested] 34+ messages in thread
* RE: [PATCH v9 09/20] drm/xe/vsec: Add DOC text for VSEC
2026-09-17 9:57 ` Ilpo Järvinen
@ 2026-09-17 12:55 ` Ruhl, Michael J
0 siblings, 0 replies; 34+ messages in thread
From: Ruhl, Michael J @ 2026-09-17 12:55 UTC (permalink / raw)
To: Ilpo Järvinen
Cc: platform-driver-x86@vger.kernel.org,
intel-xe@lists.freedesktop.org, Hans de Goede, Brost, Matthew,
Vivi, Rodrigo, thomas.hellstrom@linux.intel.com,
airlied@gmail.com, simona@ffwll.ch, david.e.box@linux.intel.com,
Vijay, Anoop C, Nilawar, Badal, Roper, Matthew D, Ausmus, James,
Poosa, Karthik
>-----Original Message-----
>From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
>Sent: Thursday, September 17, 2026 5:58 AM
>To: Ruhl, Michael J <michael.j.ruhl@intel.com>
>Cc: platform-driver-x86@vger.kernel.org; intel-xe@lists.freedesktop.org; Hans
>de Goede <hansg@kernel.org>; Brost, Matthew <matthew.brost@intel.com>;
>Vivi, Rodrigo <rodrigo.vivi@intel.com>; thomas.hellstrom@linux.intel.com;
>airlied@gmail.com; simona@ffwll.ch; david.e.box@linux.intel.com; Vijay,
>Anoop C <anoop.c.vijay@intel.com>; Nilawar, Badal
><badal.nilawar@intel.com>; Roper, Matthew D <matthew.d.roper@intel.com>;
>Ausmus, James <james.ausmus@intel.com>; Poosa, Karthik
><karthik.poosa@intel.com>
>Subject: Re: [PATCH v9 09/20] drm/xe/vsec: Add DOC text for VSEC
>
>On Wed, 16 Sep 2026, Michael J. Ruhl wrote:
>
>> Add the necessary files and text to use the DOC system.
>>
>> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
>> Signed-off-by: Michael J. Ruhl <michael.j.ruhl@intel.com>
>> ---
>> Documentation/gpu/xe/index.rst | 1 +
>> Documentation/gpu/xe/xe_vsec.rst | 14 ++++++++++++++
>> drivers/gpu/drm/xe/xe_vsec.c | 23 +++++++++++++++++++++++
>> 3 files changed, 38 insertions(+)
>> create mode 100644 Documentation/gpu/xe/xe_vsec.rst
>>
>> diff --git a/Documentation/gpu/xe/index.rst
>b/Documentation/gpu/xe/index.rst
>> index 0247a255f7e6..89f013418cf5 100644
>> --- a/Documentation/gpu/xe/index.rst
>> +++ b/Documentation/gpu/xe/index.rst
>> @@ -36,3 +36,4 @@ The display, or :ref:`drm-kms`, support for drm/xe is
>provided by
>> xe_configfs
>> xe_gt_stats
>> xe_sigid
>> + xe_vsec
>> diff --git a/Documentation/gpu/xe/xe_vsec.rst
>b/Documentation/gpu/xe/xe_vsec.rst
>> new file mode 100644
>> index 000000000000..1a87548489ea
>> --- /dev/null
>> +++ b/Documentation/gpu/xe/xe_vsec.rst
>> @@ -0,0 +1,14 @@
>> +.. SPDX-License-Identifier: (GPL-2.0+ OR MIT)
>> +
>> +=====
>> +VSEC
>> +=====
>> +
>> +.. kernel-doc:: drivers/gpu/drm/xe/xe_vsec.c
>> + :doc: VSEC
>> +
>> +Internal API
>> +============
>> +
>> +.. kernel-doc:: drivers/gpu/drm/xe/xe_vsec.c
>> + :internal:
>> diff --git a/drivers/gpu/drm/xe/xe_vsec.c b/drivers/gpu/drm/xe/xe_vsec.c
>> index 1cb9a78ee0ef..ca5d02dce818 100644
>> --- a/drivers/gpu/drm/xe/xe_vsec.c
>> +++ b/drivers/gpu/drm/xe/xe_vsec.c
>> @@ -19,6 +19,17 @@
>>
>> #include "regs/xe_pmt.h"
>>
>> +/**
>> + * DOC: VSEC
>> + *
>> + * Some GPUs support the PMT feature. For those that do, this API provides
>> + * probe, discovery and usage (control and access) for GPUs that have PMT.
>> + *
>> + * PMT is usually accessed through a PCI function. However, that is not
>always
>> + * available, so the PMT intel_vsec_register() function can be used to setup
>up
>> + * PMT usage.
>> + */
>> +
>> /* PMT GUID value for BMG devices. NOTE: this is NOT a PCI id */
>> #define BMG_DEVICE_ID 0xE2F8
>>
>> @@ -140,6 +151,18 @@ static int xe_guid_decode(u32 guid, int *index, u32
>*offset)
>> return 0;
>> }
>>
>> +/**
>> + * xe_pmt_telem_read - Given a device and a PMT GUID, read data into a
>buffer
>> + * @dev: valid Xe device
>> + * @guid: PMT GUID (from the PMT discovery struct)
>> + * @data: buffer to place data in
>> + * @user_offset: a user offset relative to the beginning of the data to read
>> + * @count: bytes to read
>> + *
>> + * Return:
>> + * * -EINVAL for VF and PMT WATCHER requests
>> + * * count number of bytes read on success
>
>Please also check sashiko's comment on the set of return values.
I have addressed invalid return code usage (reverted function to bool) and fixed
the text in my local repo.
Will push an update soon.
Thanks!
M
>--
> i.
^ permalink raw reply [flat|nested] 34+ messages in thread
end of thread, other threads:[~2026-09-17 12:55 UTC | newest]
Thread overview: 34+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-16 20:11 [PATCH v9 00/20] Crescent Island PMT support Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 01/20] platform/x86/intel/pmt: complete pcidev to device update Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 02/20] platform/x86/intel/pmt: refactor rmw with a return value Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 03/20] platform/x86/intel/pmt: refactor rc " Michael J. Ruhl
2026-09-16 20:20 ` sashiko-bot
2026-09-17 9:55 ` Ilpo Järvinen
2026-09-16 20:11 ` [PATCH v9 04/20] platform/x86/intel/pmt: Add register access callbacks Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 05/20] platform/x86/intel/pmt: Do not remap when using callbacks Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 06/20] drm/xe/vsec: Do not register BMG PMT for VF Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 07/20] drm/xe/vsec: Correct locking order Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 08/20] drm/xe/vsec: Use correct pm state get Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 09/20] drm/xe/vsec: Add DOC text for VSEC Michael J. Ruhl
2026-09-16 20:29 ` sashiko-bot
2026-09-17 9:56 ` Ilpo Järvinen
2026-09-17 9:57 ` Ilpo Järvinen
2026-09-17 12:55 ` Ruhl, Michael J
2026-09-16 20:11 ` [PATCH v9 10/20] drm/xe/vsec: Support possible hotplug exit Michael J. Ruhl
2026-09-16 20:21 ` sashiko-bot
2026-09-16 20:11 ` [PATCH v9 11/20] drm/xe/vsec: Refactor BattleMage PMT defines Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 12/20] drm/xe/vsec: Update VSEC probe order Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 13/20] drm/xe/vsec: Add base_offset to allow for more flexibilty Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 14/20] drm/xe/vsec: Support Crescent Island PMT Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 15/20] drm/xe/vsec: Crescent Island PMT decode Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 16/20] drm/xe/vsec: Crescent Island PMT callbacks Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 17/20] drm/xe/vsec: Support late bind fw information Michael J. Ruhl
2026-09-16 20:29 ` sashiko-bot
2026-09-17 12:30 ` Ruhl, Michael J
2026-09-16 20:11 ` [PATCH v9 18/20] drm/xe/vsec: Add PMT GUID internal access Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 19/20] drm/xe/vsec: Update PMT " Michael J. Ruhl
2026-09-16 20:11 ` [PATCH v9 20/20] drm/xe/vsec: Refactor platform check Michael J. Ruhl
2026-09-16 20:44 ` ✗ CI.checkpatch: warning for Crescent Island PMT support (rev11) Patchwork
2026-09-16 20:46 ` ✓ CI.KUnit: success " Patchwork
2026-09-16 22:00 ` ✗ Xe.CI.BAT: failure " Patchwork
2026-09-17 1:39 ` ✗ Xe.CI.FULL: " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox