* [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs
@ 2026-02-18 20:55 Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 01/10] drm/xe/pf: Expose LMTT page size Michal Wajdeczko
` (13 more replies)
0 siblings, 14 replies; 21+ messages in thread
From: Michal Wajdeczko @ 2026-02-18 20:55 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Rodrigo Vivi, Matthew Brost
Extend Xe driver specific sysfs SR-IOV knobs with VRAM provisioning.
/sys/bus/pci/drivers/xe/BDF/
├── sriov_admin/
├── .bulk_profile
│ └── vram_quota [RW] unsigned integer
├── vf1/
│ └── profile
│ └── vram_quota [RW] unsigned integer
├── vf2/
│ └── profile
│ └── vram_quota [RW] unsigned integer
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Matthew Brost <matthew.brost@intel.com>
v1: https://patchwork.freedesktop.org/series/161625/#rev1
v2:
add global helper for lmtt page size (Michal)
add LMTT setup to .test_init (Michal)
allow VRAM changes only when LMTT (Piotr)
account for min_spare for PF (Piotr)
fix typos (Piotr) and kernel-doc (CI)
Michal Wajdeczko (10):
drm/xe/pf: Expose LMTT page size
drm/xe/pf: Add locked variants of VRAM configuration functions
drm/xe/pf: Add functions for VRAM provisioning
drm/xe/pf: Allow to change VFs VRAM quota using sysfs
drm/xe/pf: Use migration-friendly VRAM auto-provisioning
drm/xe/tests: Add KUnit tests for new VRAM fair provisioning
drm/xe/pf: Don't check for empty config
drm/xe/pf: Prefer guard(mutex) when doing fair LMEM provisioning
drm/xe/pf: Skip VRAM auto-provisioning if already provisioned
drm/xe/pf: Add documentation for vram_quota
.../ABI/testing/sysfs-driver-intel-xe-sriov | 31 ++++
.../xe/tests/xe_gt_sriov_pf_config_kunit.c | 96 +++++++++-
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 172 ++++++++++++++++--
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h | 4 +
drivers/gpu/drm/xe/xe_lmtt.c | 17 ++
drivers/gpu/drm/xe/xe_lmtt.h | 1 +
drivers/gpu/drm/xe/xe_sriov_pf_provision.c | 119 ++++++++++--
drivers/gpu/drm/xe/xe_sriov_pf_provision.h | 4 +
drivers/gpu/drm/xe/xe_sriov_pf_sysfs.c | 31 +++-
9 files changed, 446 insertions(+), 29 deletions(-)
--
2.47.1
^ permalink raw reply [flat|nested] 21+ messages in thread
* [PATCH v2 01/10] drm/xe/pf: Expose LMTT page size
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
@ 2026-02-18 20:55 ` Michal Wajdeczko
2026-02-20 8:22 ` Piotr Piórkowski
2026-02-18 20:55 ` [PATCH v2 02/10] drm/xe/pf: Add locked variants of VRAM configuration functions Michal Wajdeczko
` (12 subsequent siblings)
13 siblings, 1 reply; 21+ messages in thread
From: Michal Wajdeczko @ 2026-02-18 20:55 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Piotr Piórkowski
The underlying LMTT implementation already provides the info about
the page size it is using. There is no need to have a separate
helper function that is making assumption about the required size.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Piotr Piórkowski <piotr.piorkowski@intel.com>
---
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 3 +--
drivers/gpu/drm/xe/xe_lmtt.c | 17 +++++++++++++++++
drivers/gpu/drm/xe/xe_lmtt.h | 1 +
3 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index 888193e1d2c5..e06baf12e108 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -1451,8 +1451,7 @@ int xe_gt_sriov_pf_config_set_fair_dbs(struct xe_gt *gt, unsigned int vfid,
static u64 pf_get_lmem_alignment(struct xe_gt *gt)
{
- /* this might be platform dependent */
- return SZ_2M;
+ return xe_lmtt_page_size(>->tile->sriov.pf.lmtt);
}
static u64 pf_get_min_spare_lmem(struct xe_gt *gt)
diff --git a/drivers/gpu/drm/xe/xe_lmtt.c b/drivers/gpu/drm/xe/xe_lmtt.c
index 2077e1ef8b43..b583e0f20183 100644
--- a/drivers/gpu/drm/xe/xe_lmtt.c
+++ b/drivers/gpu/drm/xe/xe_lmtt.c
@@ -57,6 +57,23 @@ static u64 lmtt_page_size(struct xe_lmtt *lmtt)
return BIT_ULL(lmtt->ops->lmtt_pte_shift(0));
}
+/**
+ * xe_lmtt_page_size() - Get LMTT page size.
+ * @lmtt: the &xe_lmtt
+ *
+ * This function shall be called only by PF.
+ *
+ * Return: LMTT page size.
+ */
+u64 xe_lmtt_page_size(struct xe_lmtt *lmtt)
+{
+ lmtt_assert(lmtt, IS_SRIOV_PF(lmtt_to_xe(lmtt)));
+ lmtt_assert(lmtt, xe_device_has_lmtt(lmtt_to_xe(lmtt)));
+ lmtt_assert(lmtt, lmtt->ops);
+
+ return lmtt_page_size(lmtt);
+}
+
static struct xe_lmtt_pt *lmtt_pt_alloc(struct xe_lmtt *lmtt, unsigned int level)
{
unsigned int num_entries = level ? lmtt->ops->lmtt_pte_num(level) : 0;
diff --git a/drivers/gpu/drm/xe/xe_lmtt.h b/drivers/gpu/drm/xe/xe_lmtt.h
index 75a234fbf367..8fa387b38c52 100644
--- a/drivers/gpu/drm/xe/xe_lmtt.h
+++ b/drivers/gpu/drm/xe/xe_lmtt.h
@@ -20,6 +20,7 @@ int xe_lmtt_prepare_pages(struct xe_lmtt *lmtt, unsigned int vfid, u64 range);
int xe_lmtt_populate_pages(struct xe_lmtt *lmtt, unsigned int vfid, struct xe_bo *bo, u64 offset);
void xe_lmtt_drop_pages(struct xe_lmtt *lmtt, unsigned int vfid);
u64 xe_lmtt_estimate_pt_size(struct xe_lmtt *lmtt, u64 size);
+u64 xe_lmtt_page_size(struct xe_lmtt *lmtt);
#else
static inline int xe_lmtt_init(struct xe_lmtt *lmtt) { return 0; }
static inline void xe_lmtt_init_hw(struct xe_lmtt *lmtt) { }
--
2.47.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 02/10] drm/xe/pf: Add locked variants of VRAM configuration functions
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 01/10] drm/xe/pf: Expose LMTT page size Michal Wajdeczko
@ 2026-02-18 20:55 ` Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 03/10] drm/xe/pf: Add functions for VRAM provisioning Michal Wajdeczko
` (11 subsequent siblings)
13 siblings, 0 replies; 21+ messages in thread
From: Michal Wajdeczko @ 2026-02-18 20:55 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Piotr Piórkowski
We already have few functions to configure LMEM (aka VRAM) but they
all are taking master mutex. Split them and expose locked variants
to allow use by the caller who already hold this mutex.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
---
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 77 ++++++++++++++++++++--
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h | 4 ++
2 files changed, 74 insertions(+), 7 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index e06baf12e108..f67c8822e592 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -1735,7 +1735,7 @@ int xe_gt_sriov_pf_config_set_lmem(struct xe_gt *gt, unsigned int vfid, u64 size
}
/**
- * xe_gt_sriov_pf_config_bulk_set_lmem - Provision many VFs with LMEM.
+ * xe_gt_sriov_pf_config_bulk_set_lmem_locked() - Provision many VFs with LMEM.
* @gt: the &xe_gt (can't be media)
* @vfid: starting VF identifier (can't be 0)
* @num_vfs: number of VFs to provision
@@ -1745,31 +1745,94 @@ int xe_gt_sriov_pf_config_set_lmem(struct xe_gt *gt, unsigned int vfid, u64 size
*
* Return: 0 on success or a negative error code on failure.
*/
-int xe_gt_sriov_pf_config_bulk_set_lmem(struct xe_gt *gt, unsigned int vfid,
- unsigned int num_vfs, u64 size)
+int xe_gt_sriov_pf_config_bulk_set_lmem_locked(struct xe_gt *gt, unsigned int vfid,
+ unsigned int num_vfs, u64 size)
{
unsigned int n;
int err = 0;
- xe_gt_assert(gt, vfid);
+ lockdep_assert_held(xe_gt_sriov_pf_master_mutex(gt));
+ xe_gt_assert(gt, xe_device_has_lmtt(gt_to_xe(gt)));
+ xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt)));
xe_gt_assert(gt, xe_gt_is_main_type(gt));
+ xe_gt_assert(gt, vfid);
if (!num_vfs)
return 0;
- mutex_lock(xe_gt_sriov_pf_master_mutex(gt));
for (n = vfid; n < vfid + num_vfs; n++) {
err = pf_provision_vf_lmem(gt, n, size);
if (err)
break;
}
- mutex_unlock(xe_gt_sriov_pf_master_mutex(gt));
return pf_config_bulk_set_u64_done(gt, vfid, num_vfs, size,
- xe_gt_sriov_pf_config_get_lmem,
+ pf_get_vf_config_lmem,
"LMEM", n, err);
}
+/**
+ * xe_gt_sriov_pf_config_bulk_set_lmem() - Provision many VFs with LMEM.
+ * @gt: the &xe_gt (can't be media)
+ * @vfid: starting VF identifier (can't be 0)
+ * @num_vfs: number of VFs to provision
+ * @size: requested LMEM size
+ *
+ * This function can only be called on PF.
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
+int xe_gt_sriov_pf_config_bulk_set_lmem(struct xe_gt *gt, unsigned int vfid,
+ unsigned int num_vfs, u64 size)
+{
+ guard(mutex)(xe_gt_sriov_pf_master_mutex(gt));
+
+ return xe_gt_sriov_pf_config_bulk_set_lmem_locked(gt, vfid, num_vfs, size);
+}
+
+/**
+ * xe_gt_sriov_pf_config_get_lmem_locked() - Get VF's LMEM quota.
+ * @gt: the &xe_gt
+ * @vfid: the VF identifier (can't be 0 == PFID)
+ *
+ * This function can only be called on PF.
+ *
+ * Return: VF's LMEM quota.
+ */
+u64 xe_gt_sriov_pf_config_get_lmem_locked(struct xe_gt *gt, unsigned int vfid)
+{
+ lockdep_assert_held(xe_gt_sriov_pf_master_mutex(gt));
+ xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt)));
+ xe_gt_assert(gt, vfid);
+
+ return pf_get_vf_config_lmem(gt, vfid);
+}
+
+/**
+ * xe_gt_sriov_pf_config_set_lmem_locked() - Provision VF with LMEM.
+ * @gt: the &xe_gt (can't be media)
+ * @vfid: the VF identifier (can't be 0 == PFID)
+ * @size: requested LMEM size
+ *
+ * This function can only be called on PF.
+ */
+int xe_gt_sriov_pf_config_set_lmem_locked(struct xe_gt *gt, unsigned int vfid, u64 size)
+{
+ int err;
+
+ lockdep_assert_held(xe_gt_sriov_pf_master_mutex(gt));
+ xe_gt_assert(gt, xe_device_has_lmtt(gt_to_xe(gt)));
+ xe_gt_assert(gt, IS_SRIOV_PF(gt_to_xe(gt)));
+ xe_gt_assert(gt, xe_gt_is_main_type(gt));
+ xe_gt_assert(gt, vfid);
+
+ err = pf_provision_vf_lmem(gt, vfid, size);
+
+ return pf_config_set_u64_done(gt, vfid, size,
+ pf_get_vf_config_lmem(gt, vfid),
+ "LMEM", err);
+}
+
static struct xe_bo *pf_get_vf_config_lmem_obj(struct xe_gt *gt, unsigned int vfid)
{
struct xe_gt_sriov_config *config = pf_pick_vf_config(gt, vfid);
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h
index 3c6c8b6655af..4a004ecd6140 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.h
@@ -36,6 +36,10 @@ int xe_gt_sriov_pf_config_set_lmem(struct xe_gt *gt, unsigned int vfid, u64 size
int xe_gt_sriov_pf_config_set_fair_lmem(struct xe_gt *gt, unsigned int vfid, unsigned int num_vfs);
int xe_gt_sriov_pf_config_bulk_set_lmem(struct xe_gt *gt, unsigned int vfid, unsigned int num_vfs,
u64 size);
+u64 xe_gt_sriov_pf_config_get_lmem_locked(struct xe_gt *gt, unsigned int vfid);
+int xe_gt_sriov_pf_config_set_lmem_locked(struct xe_gt *gt, unsigned int vfid, u64 size);
+int xe_gt_sriov_pf_config_bulk_set_lmem_locked(struct xe_gt *gt, unsigned int vfid,
+ unsigned int num_vfs, u64 size);
struct xe_bo *xe_gt_sriov_pf_config_get_lmem_obj(struct xe_gt *gt, unsigned int vfid);
u32 xe_gt_sriov_pf_config_get_exec_quantum(struct xe_gt *gt, unsigned int vfid);
--
2.47.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 03/10] drm/xe/pf: Add functions for VRAM provisioning
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 01/10] drm/xe/pf: Expose LMTT page size Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 02/10] drm/xe/pf: Add locked variants of VRAM configuration functions Michal Wajdeczko
@ 2026-02-18 20:55 ` Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 04/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
` (10 subsequent siblings)
13 siblings, 0 replies; 21+ messages in thread
From: Michal Wajdeczko @ 2026-02-18 20:55 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Piotr Piórkowski
We already have functions to configure VF LMEM (aka VRAM) on the
tile/GT level, used by the auto-provisioning and debugfs, but we
also need functions that will work on the device level that will
configure VRAM on all tiles at once.
We will use these new functions in upcoming patch.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
---
v2: fix typo, allow VRAM changes only when LMTT (Piotr)
use xe_lmtt_page_size() instead local helper
fix kernel-doc (CI)
---
drivers/gpu/drm/xe/xe_sriov_pf_provision.c | 106 +++++++++++++++++++++
drivers/gpu/drm/xe/xe_sriov_pf_provision.h | 4 +
2 files changed, 110 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_provision.c b/drivers/gpu/drm/xe/xe_sriov_pf_provision.c
index 01470c42e8a7..f22ff65c59aa 100644
--- a/drivers/gpu/drm/xe/xe_sriov_pf_provision.c
+++ b/drivers/gpu/drm/xe/xe_sriov_pf_provision.c
@@ -7,6 +7,7 @@
#include "xe_device.h"
#include "xe_gt_sriov_pf_config.h"
#include "xe_gt_sriov_pf_policy.h"
+#include "xe_lmtt.h"
#include "xe_sriov.h"
#include "xe_sriov_pf_helpers.h"
#include "xe_sriov_pf_provision.h"
@@ -436,3 +437,108 @@ int xe_sriov_pf_provision_query_vf_priority(struct xe_device *xe, unsigned int v
return !count ? -ENODATA : 0;
}
+
+static u64 vram_per_tile(struct xe_tile *tile, u64 total)
+{
+ struct xe_device *xe = tile->xe;
+ unsigned int tcount = xe->info.tile_count;
+ u64 alignment = xe_lmtt_page_size(&tile->sriov.pf.lmtt);
+
+ total = round_up(total, tcount * alignment);
+ return div_u64(total, tcount);
+}
+
+/**
+ * xe_sriov_pf_provision_bulk_apply_vram() - Change VRAM provisioning for all VFs.
+ * @xe: the PF &xe_device
+ * @size: the VRAM size in [bytes] to set
+ *
+ * Change all VFs VRAM (LMEM) provisioning on all tiles.
+ *
+ * This function can only be called on PF.
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
+int xe_sriov_pf_provision_bulk_apply_vram(struct xe_device *xe, u64 size)
+{
+ unsigned int num_vfs = xe_sriov_pf_get_totalvfs(xe);
+ struct xe_tile *tile;
+ unsigned int id;
+ int result = 0;
+ int err;
+
+ xe_assert(xe, xe_device_has_lmtt(xe));
+
+ guard(mutex)(xe_sriov_pf_master_mutex(xe));
+
+ for_each_tile(tile, xe, id) {
+ err = xe_gt_sriov_pf_config_bulk_set_lmem_locked(tile->primary_gt,
+ VFID(1), num_vfs,
+ vram_per_tile(tile, size));
+ result = result ?: err;
+ }
+
+ return result;
+}
+
+/**
+ * xe_sriov_pf_provision_apply_vf_vram() - Change single VF VRAM allocation.
+ * @xe: the PF &xe_device
+ * @vfid: the VF identifier (can't be 0 == PFID)
+ * @size: VRAM size to set
+ *
+ * Change VF's VRAM provisioning on all tiles/GTs.
+ *
+ * This function can only be called on PF.
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
+int xe_sriov_pf_provision_apply_vf_vram(struct xe_device *xe, unsigned int vfid, u64 size)
+{
+ struct xe_tile *tile;
+ unsigned int id;
+ int result = 0;
+ int err;
+
+ xe_assert(xe, vfid);
+ xe_assert(xe, xe_device_has_lmtt(xe));
+
+ guard(mutex)(xe_sriov_pf_master_mutex(xe));
+
+ for_each_tile(tile, xe, id) {
+ err = xe_gt_sriov_pf_config_set_lmem_locked(tile->primary_gt, vfid,
+ vram_per_tile(tile, size));
+ result = result ?: err;
+ }
+
+ return result;
+}
+
+/**
+ * xe_sriov_pf_provision_query_vf_vram() - Query VF's VRAM allocation.
+ * @xe: the PF &xe_device
+ * @vfid: the VF identifier (can't be 0 == PFID)
+ * @size: placeholder for the returned VRAM size
+ *
+ * Query VF's VRAM provisioning from all tiles/GTs.
+ *
+ * This function can only be called on PF.
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
+int xe_sriov_pf_provision_query_vf_vram(struct xe_device *xe, unsigned int vfid, u64 *size)
+{
+ struct xe_tile *tile;
+ unsigned int id;
+ u64 total = 0;
+
+ xe_assert(xe, vfid);
+
+ guard(mutex)(xe_sriov_pf_master_mutex(xe));
+
+ for_each_tile(tile, xe, id)
+ total += xe_gt_sriov_pf_config_get_lmem_locked(tile->primary_gt, vfid);
+
+ *size = total;
+ return 0;
+}
diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_provision.h b/drivers/gpu/drm/xe/xe_sriov_pf_provision.h
index bccf23d51396..f26f49539697 100644
--- a/drivers/gpu/drm/xe/xe_sriov_pf_provision.h
+++ b/drivers/gpu/drm/xe/xe_sriov_pf_provision.h
@@ -24,6 +24,10 @@ int xe_sriov_pf_provision_bulk_apply_priority(struct xe_device *xe, u32 prio);
int xe_sriov_pf_provision_apply_vf_priority(struct xe_device *xe, unsigned int vfid, u32 prio);
int xe_sriov_pf_provision_query_vf_priority(struct xe_device *xe, unsigned int vfid, u32 *prio);
+int xe_sriov_pf_provision_bulk_apply_vram(struct xe_device *xe, u64 size);
+int xe_sriov_pf_provision_apply_vf_vram(struct xe_device *xe, unsigned int vfid, u64 size);
+int xe_sriov_pf_provision_query_vf_vram(struct xe_device *xe, unsigned int vfid, u64 *size);
+
int xe_sriov_pf_provision_vfs(struct xe_device *xe, unsigned int num_vfs);
int xe_sriov_pf_unprovision_vfs(struct xe_device *xe, unsigned int num_vfs);
--
2.47.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 04/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
` (2 preceding siblings ...)
2026-02-18 20:55 ` [PATCH v2 03/10] drm/xe/pf: Add functions for VRAM provisioning Michal Wajdeczko
@ 2026-02-18 20:55 ` Michal Wajdeczko
2026-02-18 21:21 ` Rodrigo Vivi
2026-02-18 20:55 ` [PATCH v2 05/10] drm/xe/pf: Use migration-friendly VRAM auto-provisioning Michal Wajdeczko
` (9 subsequent siblings)
13 siblings, 1 reply; 21+ messages in thread
From: Michal Wajdeczko @ 2026-02-18 20:55 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Rodrigo Vivi, Piotr Piórkowski
On current discrete platforms, PF will provision all VFs with a fair
amount of the VRAM (LMEM) during VFs enabling. However, in some cases
this automatic VRAM provisioning might be either non-reproducible or
sub-optimal. This could break VF's migration or impact performance.
Expose per-VF VRAM quota read-write sysfs attributes to allow admin
change default VRAM provisioning performed by the PF.
/sys/bus/pci/drivers/xe/BDF/
├── sriov_admin/
├── .bulk_profile
│ └── vram_quota [RW] unsigned integer
├── vf1/
│ └── profile
│ └── vram_quota [RW] unsigned integer
├── vf2/
│ └── profile
│ └── vram_quota [RW] unsigned integer
Above values represent total provisioned VRAM from all tiles where
VFs were assigned, and currently it's from all tiles always.
Note that changing VRAM provisioning is only possible when VF is
not running, otherwise GuC will complain. To make sure that given
VF is idle, triggering VF FLR might be needed.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
---
v2: allow VRAM change only if LMTT (Piotr)
---
drivers/gpu/drm/xe/xe_sriov_pf_sysfs.c | 31 ++++++++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_sysfs.c b/drivers/gpu/drm/xe/xe_sriov_pf_sysfs.c
index 82a1055985ba..aa05c143a4d6 100644
--- a/drivers/gpu/drm/xe/xe_sriov_pf_sysfs.c
+++ b/drivers/gpu/drm/xe/xe_sriov_pf_sysfs.c
@@ -9,6 +9,7 @@
#include <drm/drm_managed.h>
#include "xe_assert.h"
+#include "xe_device.h"
#include "xe_pci_sriov.h"
#include "xe_pm.h"
#include "xe_sriov.h"
@@ -44,7 +45,8 @@ static int emit_choice(char *buf, int choice, const char * const *array, size_t
* ├── .bulk_profile
* │ ├── exec_quantum_ms
* │ ├── preempt_timeout_us
- * │ └── sched_priority
+ * │ ├── sched_priority
+ * │ └── vram_quota
* ├── pf/
* │ ├── ...
* │ ├── device -> ../../../BDF
@@ -59,7 +61,8 @@ static int emit_choice(char *buf, int choice, const char * const *array, size_t
* │ └── profile
* │ ├── exec_quantum_ms
* │ ├── preempt_timeout_us
- * │ └── sched_priority
+ * │ ├── sched_priority
+ * │ └── vram_quota
* ├── vf2/
* :
* └── vfN/
@@ -132,6 +135,7 @@ static XE_SRIOV_DEV_ATTR_WO(NAME)
DEFINE_SIMPLE_BULK_PROVISIONING_SRIOV_DEV_ATTR_WO(exec_quantum_ms, eq, u32);
DEFINE_SIMPLE_BULK_PROVISIONING_SRIOV_DEV_ATTR_WO(preempt_timeout_us, pt, u32);
+DEFINE_SIMPLE_BULK_PROVISIONING_SRIOV_DEV_ATTR_WO(vram_quota, vram, u64);
static const char * const sched_priority_names[] = {
[GUC_SCHED_PRIORITY_LOW] = "low",
@@ -181,12 +185,26 @@ static struct attribute *bulk_profile_dev_attrs[] = {
&xe_sriov_dev_attr_exec_quantum_ms.attr,
&xe_sriov_dev_attr_preempt_timeout_us.attr,
&xe_sriov_dev_attr_sched_priority.attr,
+ &xe_sriov_dev_attr_vram_quota.attr,
NULL
};
+static umode_t profile_dev_attr_is_visible(struct kobject *kobj,
+ struct attribute *attr, int index)
+{
+ struct xe_sriov_kobj *vkobj = to_xe_sriov_kobj(kobj);
+
+ if (attr == &xe_sriov_dev_attr_vram_quota.attr &&
+ !xe_device_has_lmtt(vkobj->xe))
+ return 0;
+
+ return attr->mode;
+}
+
static const struct attribute_group bulk_profile_dev_attr_group = {
.name = ".bulk_profile",
.attrs = bulk_profile_dev_attrs,
+ .is_visible = profile_dev_attr_is_visible,
};
static const struct attribute_group *xe_sriov_dev_attr_groups[] = {
@@ -228,6 +246,7 @@ static XE_SRIOV_VF_ATTR(NAME)
DEFINE_SIMPLE_PROVISIONING_SRIOV_VF_ATTR(exec_quantum_ms, eq, u32, "%u\n");
DEFINE_SIMPLE_PROVISIONING_SRIOV_VF_ATTR(preempt_timeout_us, pt, u32, "%u\n");
+DEFINE_SIMPLE_PROVISIONING_SRIOV_VF_ATTR(vram_quota, vram, u64, "%llu\n");
static ssize_t xe_sriov_vf_attr_sched_priority_show(struct xe_device *xe, unsigned int vfid,
char *buf)
@@ -274,6 +293,7 @@ static struct attribute *profile_vf_attrs[] = {
&xe_sriov_vf_attr_exec_quantum_ms.attr,
&xe_sriov_vf_attr_preempt_timeout_us.attr,
&xe_sriov_vf_attr_sched_priority.attr,
+ &xe_sriov_vf_attr_vram_quota.attr,
NULL
};
@@ -286,6 +306,13 @@ static umode_t profile_vf_attr_is_visible(struct kobject *kobj,
!sched_priority_change_allowed(vkobj->vfid))
return attr->mode & 0444;
+ if (attr == &xe_sriov_vf_attr_vram_quota.attr) {
+ if (!IS_DGFX(vkobj->xe) || vkobj->vfid == PFID)
+ return 0;
+ if (!xe_device_has_lmtt(vkobj->xe))
+ return attr->mode & 0444;
+ }
+
return attr->mode;
}
--
2.47.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 05/10] drm/xe/pf: Use migration-friendly VRAM auto-provisioning
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
` (3 preceding siblings ...)
2026-02-18 20:55 ` [PATCH v2 04/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
@ 2026-02-18 20:55 ` Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 06/10] drm/xe/tests: Add KUnit tests for new VRAM fair provisioning Michal Wajdeczko
` (8 subsequent siblings)
13 siblings, 0 replies; 21+ messages in thread
From: Michal Wajdeczko @ 2026-02-18 20:55 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Piotr Piórkowski
Instead of trying very hard to find the largest fair VRAM (aka LMEM)
size that could be allocated for VFs on the current tile, pick some
smaller rounded down to power-of-two value that is more likely to be
provisioned in the same manner by the other PF instances.
In some cases, the outcome of above calculation might not be optimal,
but it's expected that admin will do fine-tuning using sysfs files.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
---
v2: account for min_spare for PF (Piotr)
---
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 29 ++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index f67c8822e592..72cd46554230 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -1900,6 +1900,28 @@ static u64 pf_estimate_fair_lmem(struct xe_gt *gt, unsigned int num_vfs)
return fair;
}
+static u64 pf_profile_fair_lmem(struct xe_gt *gt, unsigned int num_vfs)
+{
+ struct xe_tile *tile = gt_to_tile(gt);
+ bool admin_only_pf = xe_sriov_pf_admin_only(tile->xe);
+ u64 usable = xe_vram_region_usable_size(tile->mem.vram);
+ u64 spare = pf_get_min_spare_lmem(gt);
+ u64 available = usable > spare ? usable - spare : 0;
+ u64 shareable = ALIGN_DOWN(available, SZ_1G);
+ u64 alignment = pf_get_lmem_alignment(gt);
+ u64 fair;
+
+ if (admin_only_pf)
+ fair = div_u64(shareable, num_vfs);
+ else
+ fair = div_u64(shareable, 1 + num_vfs);
+
+ if (!admin_only_pf && fair)
+ fair = rounddown_pow_of_two(fair);
+
+ return ALIGN_DOWN(fair, alignment);
+}
+
/**
* xe_gt_sriov_pf_config_set_fair_lmem - Provision many VFs with fair LMEM.
* @gt: the &xe_gt (can't be media)
@@ -1913,6 +1935,7 @@ static u64 pf_estimate_fair_lmem(struct xe_gt *gt, unsigned int num_vfs)
int xe_gt_sriov_pf_config_set_fair_lmem(struct xe_gt *gt, unsigned int vfid,
unsigned int num_vfs)
{
+ u64 profile;
u64 fair;
xe_gt_assert(gt, vfid);
@@ -1929,6 +1952,12 @@ int xe_gt_sriov_pf_config_set_fair_lmem(struct xe_gt *gt, unsigned int vfid,
if (!fair)
return -ENOSPC;
+ profile = pf_profile_fair_lmem(gt, num_vfs);
+ fair = min(fair, profile);
+ if (fair < profile)
+ xe_gt_sriov_info(gt, "Using non-profile provisioning (%s %llu vs %llu)\n",
+ "VRAM", fair, profile);
+
return xe_gt_sriov_pf_config_bulk_set_lmem(gt, vfid, num_vfs, fair);
}
--
2.47.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 06/10] drm/xe/tests: Add KUnit tests for new VRAM fair provisioning
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
` (4 preceding siblings ...)
2026-02-18 20:55 ` [PATCH v2 05/10] drm/xe/pf: Use migration-friendly VRAM auto-provisioning Michal Wajdeczko
@ 2026-02-18 20:55 ` Michal Wajdeczko
2026-02-27 1:16 ` Nathan Chancellor
2026-02-18 20:55 ` [PATCH v2 07/10] drm/xe/pf: Don't check for empty config Michal Wajdeczko
` (7 subsequent siblings)
13 siblings, 1 reply; 21+ messages in thread
From: Michal Wajdeczko @ 2026-02-18 20:55 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Piotr Piórkowski
Add basic test cases to check outcome of the fair VRAM provisioning
for regular and admin-only PF mode.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
---
v2: add LMTT setup to .test_init()
---
.../xe/tests/xe_gt_sriov_pf_config_kunit.c | 96 ++++++++++++++++++-
1 file changed, 95 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_config_kunit.c b/drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_config_kunit.c
index 3889dc3e49ca..305dbd4e5d1a 100644
--- a/drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_config_kunit.c
+++ b/drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_config_kunit.c
@@ -11,6 +11,7 @@
#include "xe_pci_test.h"
#define TEST_MAX_VFS 63
+#define TEST_VRAM 0x37a800000ull
static void pf_set_admin_mode(struct xe_device *xe, bool enable)
{
@@ -19,6 +20,17 @@ static void pf_set_admin_mode(struct xe_device *xe, bool enable)
KUNIT_EXPECT_EQ(kunit_get_current_test(), enable, xe_sriov_pf_admin_only(xe));
}
+static void pf_set_usable_vram(struct xe_device *xe, u64 usable)
+{
+ struct xe_tile *tile = xe_device_get_root_tile(xe);
+ struct kunit *test = kunit_get_current_test();
+
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, tile);
+ xe->mem.vram->usable_size = usable;
+ tile->mem.vram->usable_size = usable;
+ KUNIT_ASSERT_EQ(test, usable, xe_vram_region_usable_size(tile->mem.vram));
+}
+
static const void *num_vfs_gen_param(struct kunit *test, const void *prev, char *desc)
{
unsigned long next = 1 + (unsigned long)prev;
@@ -34,9 +46,11 @@ static int pf_gt_config_test_init(struct kunit *test)
{
struct xe_pci_fake_data fake = {
.sriov_mode = XE_SRIOV_MODE_PF,
- .platform = XE_TIGERLAKE, /* any random platform with SR-IOV */
+ .platform = XE_BATTLEMAGE, /* any random DGFX platform with SR-IOV */
.subplatform = XE_SUBPLATFORM_NONE,
+ .graphics_verx100 = 2001,
};
+ struct xe_vram_region *vram;
struct xe_device *xe;
struct xe_gt *gt;
@@ -50,6 +64,19 @@ static int pf_gt_config_test_init(struct kunit *test)
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, gt);
test->priv = gt;
+ /* pretend it has some VRAM */
+ KUNIT_ASSERT_TRUE(test, IS_DGFX(xe));
+ vram = kunit_kzalloc(test, sizeof(*vram), GFP_KERNEL);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, vram);
+ vram->usable_size = TEST_VRAM;
+ xe->mem.vram = vram;
+ xe->tiles[0].mem.vram = vram;
+
+ /* pretend we have a valid LMTT */
+ KUNIT_ASSERT_TRUE(test, xe_device_has_lmtt(xe));
+ KUNIT_ASSERT_GE(test, GRAPHICS_VERx100(xe), 1260);
+ xe->tiles[0].sriov.pf.lmtt.ops = &lmtt_ml_ops;
+
/* pretend it can support up to 63 VFs */
xe->sriov.pf.device_total_vfs = TEST_MAX_VFS;
xe->sriov.pf.driver_max_vfs = TEST_MAX_VFS;
@@ -189,13 +216,80 @@ static void fair_ggtt(struct kunit *test)
KUNIT_ASSERT_EQ(test, SZ_2G, pf_profile_fair_ggtt(gt, num_vfs));
}
+static const u64 vram_sizes[] = {
+ SZ_4G - SZ_512M,
+ SZ_8G + SZ_4G - SZ_512M,
+ SZ_16G - SZ_512M,
+ SZ_32G - SZ_512M,
+ SZ_64G - SZ_512M,
+ TEST_VRAM,
+};
+
+static void u64_param_get_desc(const u64 *p, char *desc)
+{
+ string_get_size(*p, 1, STRING_UNITS_2, desc, KUNIT_PARAM_DESC_SIZE);
+}
+
+KUNIT_ARRAY_PARAM(vram_size, vram_sizes, u64_param_get_desc);
+
+static void fair_vram_1vf(struct kunit *test)
+{
+ const u64 usable = *(const u64 *)test->param_value;
+ struct xe_gt *gt = test->priv;
+ struct xe_device *xe = gt_to_xe(gt);
+
+ pf_set_admin_mode(xe, false);
+ pf_set_usable_vram(xe, usable);
+
+ KUNIT_EXPECT_NE(test, 0, pf_profile_fair_lmem(gt, 1));
+ KUNIT_EXPECT_GE(test, usable, pf_profile_fair_lmem(gt, 1));
+ KUNIT_EXPECT_TRUE(test, is_power_of_2(pf_profile_fair_lmem(gt, 1)));
+ KUNIT_EXPECT_GE(test, usable - pf_profile_fair_lmem(gt, 1), pf_profile_fair_lmem(gt, 1));
+}
+
+static void fair_vram_1vf_admin_only(struct kunit *test)
+{
+ const u64 usable = *(const u64 *)test->param_value;
+ struct xe_gt *gt = test->priv;
+ struct xe_device *xe = gt_to_xe(gt);
+
+ pf_set_admin_mode(xe, true);
+ pf_set_usable_vram(xe, usable);
+
+ KUNIT_EXPECT_NE(test, 0, pf_profile_fair_lmem(gt, 1));
+ KUNIT_EXPECT_GE(test, usable, pf_profile_fair_lmem(gt, 1));
+ KUNIT_EXPECT_LT(test, usable - pf_profile_fair_lmem(gt, 1), pf_profile_fair_lmem(gt, 1));
+ KUNIT_EXPECT_TRUE(test, IS_ALIGNED(pf_profile_fair_lmem(gt, 1), SZ_1G));
+}
+
+static void fair_vram(struct kunit *test)
+{
+ unsigned int num_vfs = (unsigned long)test->param_value;
+ struct xe_gt *gt = test->priv;
+ struct xe_device *xe = gt_to_xe(gt);
+ u64 alignment = pf_get_lmem_alignment(gt);
+ char size[10];
+
+ pf_set_admin_mode(xe, false);
+
+ string_get_size(pf_profile_fair_lmem(gt, num_vfs), 1, STRING_UNITS_2, size, sizeof(size));
+ kunit_info(test, "fair %s %llx\n", size, pf_profile_fair_lmem(gt, num_vfs));
+
+ KUNIT_EXPECT_TRUE(test, is_power_of_2(pf_profile_fair_lmem(gt, num_vfs)));
+ KUNIT_EXPECT_TRUE(test, IS_ALIGNED(pf_profile_fair_lmem(gt, num_vfs), alignment));
+ KUNIT_EXPECT_GE(test, TEST_VRAM, num_vfs * pf_profile_fair_lmem(gt, num_vfs));
+}
+
static struct kunit_case pf_gt_config_test_cases[] = {
KUNIT_CASE(fair_contexts_1vf),
KUNIT_CASE(fair_doorbells_1vf),
KUNIT_CASE(fair_ggtt_1vf),
+ KUNIT_CASE_PARAM(fair_vram_1vf, vram_size_gen_params),
+ KUNIT_CASE_PARAM(fair_vram_1vf_admin_only, vram_size_gen_params),
KUNIT_CASE_PARAM(fair_contexts, num_vfs_gen_param),
KUNIT_CASE_PARAM(fair_doorbells, num_vfs_gen_param),
KUNIT_CASE_PARAM(fair_ggtt, num_vfs_gen_param),
+ KUNIT_CASE_PARAM(fair_vram, num_vfs_gen_param),
{}
};
--
2.47.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 07/10] drm/xe/pf: Don't check for empty config
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
` (5 preceding siblings ...)
2026-02-18 20:55 ` [PATCH v2 06/10] drm/xe/tests: Add KUnit tests for new VRAM fair provisioning Michal Wajdeczko
@ 2026-02-18 20:55 ` Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 08/10] drm/xe/pf: Prefer guard(mutex) when doing fair LMEM provisioning Michal Wajdeczko
` (6 subsequent siblings)
13 siblings, 0 replies; 21+ messages in thread
From: Michal Wajdeczko @ 2026-02-18 20:55 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Piotr Piórkowski
We already turn off VFs auto-provisioning once we detect manual VFs
provisioning over the debugfs, so we can skip additional check for
all VFs configs being still empty.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
---
drivers/gpu/drm/xe/xe_sriov_pf_provision.c | 13 -------------
1 file changed, 13 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_provision.c b/drivers/gpu/drm/xe/xe_sriov_pf_provision.c
index f22ff65c59aa..abe3677d33ed 100644
--- a/drivers/gpu/drm/xe/xe_sriov_pf_provision.c
+++ b/drivers/gpu/drm/xe/xe_sriov_pf_provision.c
@@ -33,17 +33,6 @@ static bool pf_auto_provisioning_mode(struct xe_device *xe)
return xe->sriov.pf.provision.mode == XE_SRIOV_PROVISIONING_MODE_AUTO;
}
-static bool pf_needs_provisioning(struct xe_gt *gt, unsigned int num_vfs)
-{
- unsigned int n;
-
- for (n = 1; n <= num_vfs; n++)
- if (!xe_gt_sriov_pf_config_is_empty(gt, n))
- return false;
-
- return true;
-}
-
static int pf_provision_vfs(struct xe_device *xe, unsigned int num_vfs)
{
struct xe_gt *gt;
@@ -52,8 +41,6 @@ static int pf_provision_vfs(struct xe_device *xe, unsigned int num_vfs)
int err;
for_each_gt(gt, xe, id) {
- if (!pf_needs_provisioning(gt, num_vfs))
- return -EUCLEAN;
err = xe_gt_sriov_pf_config_set_fair(gt, VFID(1), num_vfs);
result = result ?: err;
}
--
2.47.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 08/10] drm/xe/pf: Prefer guard(mutex) when doing fair LMEM provisioning
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
` (6 preceding siblings ...)
2026-02-18 20:55 ` [PATCH v2 07/10] drm/xe/pf: Don't check for empty config Michal Wajdeczko
@ 2026-02-18 20:55 ` Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 09/10] drm/xe/pf: Skip VRAM auto-provisioning if already provisioned Michal Wajdeczko
` (5 subsequent siblings)
13 siblings, 0 replies; 21+ messages in thread
From: Michal Wajdeczko @ 2026-02-18 20:55 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Piotr Piórkowski
We will add more code there and with guard() it will easier to
avoid mistakes in unlocking.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
---
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index 72cd46554230..d2a2201440b8 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -1945,10 +1945,9 @@ int xe_gt_sriov_pf_config_set_fair_lmem(struct xe_gt *gt, unsigned int vfid,
if (!xe_device_has_lmtt(gt_to_xe(gt)))
return 0;
- mutex_lock(xe_gt_sriov_pf_master_mutex(gt));
+ guard(mutex)(xe_gt_sriov_pf_master_mutex(gt));
+
fair = pf_estimate_fair_lmem(gt, num_vfs);
- mutex_unlock(xe_gt_sriov_pf_master_mutex(gt));
-
if (!fair)
return -ENOSPC;
@@ -1958,7 +1957,7 @@ int xe_gt_sriov_pf_config_set_fair_lmem(struct xe_gt *gt, unsigned int vfid,
xe_gt_sriov_info(gt, "Using non-profile provisioning (%s %llu vs %llu)\n",
"VRAM", fair, profile);
- return xe_gt_sriov_pf_config_bulk_set_lmem(gt, vfid, num_vfs, fair);
+ return xe_gt_sriov_pf_config_bulk_set_lmem_locked(gt, vfid, num_vfs, fair);
}
/**
--
2.47.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 09/10] drm/xe/pf: Skip VRAM auto-provisioning if already provisioned
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
` (7 preceding siblings ...)
2026-02-18 20:55 ` [PATCH v2 08/10] drm/xe/pf: Prefer guard(mutex) when doing fair LMEM provisioning Michal Wajdeczko
@ 2026-02-18 20:55 ` Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 10/10] drm/xe/pf: Add documentation for vram_quota Michal Wajdeczko
` (4 subsequent siblings)
13 siblings, 0 replies; 21+ messages in thread
From: Michal Wajdeczko @ 2026-02-18 20:55 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Piotr Piórkowski
In case VF's VRAM provisioning using sysfs is done by the admin
prior to VFs enabling, this provisioning will be lost as PF will
run VRAM auto-provisioning anyway. To avoid that skip this auto-
provisioning if any VF has been already provisioned with VRAM.
To help admin find any mistakes, add diagnostics messages about
which VFs were provisioned with VRAM and which were missed.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
---
v2: use VFID (Piotr)
---
drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 56 ++++++++++++++++++++++
1 file changed, 56 insertions(+)
diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
index d2a2201440b8..cba20eb6b36b 100644
--- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
+++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
@@ -1922,6 +1922,59 @@ static u64 pf_profile_fair_lmem(struct xe_gt *gt, unsigned int num_vfs)
return ALIGN_DOWN(fair, alignment);
}
+static void __pf_show_provisioning_lmem(struct xe_gt *gt, unsigned int first_vf,
+ unsigned int num_vfs, bool provisioned)
+{
+ unsigned int allvfs = 1 + xe_gt_sriov_pf_get_totalvfs(gt); /* PF plus VFs */
+ unsigned long *bitmap __free(bitmap) = bitmap_zalloc(allvfs, GFP_KERNEL);
+ unsigned int weight;
+ unsigned int n;
+
+ if (!bitmap)
+ return;
+
+ for (n = first_vf; n < first_vf + num_vfs; n++) {
+ if (!!pf_get_vf_config_lmem(gt, VFID(n)) == provisioned)
+ bitmap_set(bitmap, n, 1);
+ }
+
+ weight = bitmap_weight(bitmap, allvfs);
+ if (!weight)
+ return;
+
+ xe_gt_sriov_info(gt, "VF%s%*pbl %s provisioned with VRAM\n",
+ weight > 1 ? "s " : "", allvfs, bitmap,
+ provisioned ? "already" : "not");
+}
+
+static void pf_show_all_provisioned_lmem(struct xe_gt *gt)
+{
+ __pf_show_provisioning_lmem(gt, VFID(1), xe_gt_sriov_pf_get_totalvfs(gt), true);
+}
+
+static void pf_show_unprovisioned_lmem(struct xe_gt *gt, unsigned int first_vf,
+ unsigned int num_vfs)
+{
+ __pf_show_provisioning_lmem(gt, first_vf, num_vfs, false);
+}
+
+static bool pf_needs_provision_lmem(struct xe_gt *gt, unsigned int first_vf,
+ unsigned int num_vfs)
+{
+ unsigned int vfid;
+
+ for (vfid = first_vf; vfid < first_vf + num_vfs; vfid++) {
+ if (pf_get_vf_config_lmem(gt, vfid)) {
+ pf_show_all_provisioned_lmem(gt);
+ pf_show_unprovisioned_lmem(gt, first_vf, num_vfs);
+ return false;
+ }
+ }
+
+ pf_show_all_provisioned_lmem(gt);
+ return true;
+}
+
/**
* xe_gt_sriov_pf_config_set_fair_lmem - Provision many VFs with fair LMEM.
* @gt: the &xe_gt (can't be media)
@@ -1947,6 +2000,9 @@ int xe_gt_sriov_pf_config_set_fair_lmem(struct xe_gt *gt, unsigned int vfid,
guard(mutex)(xe_gt_sriov_pf_master_mutex(gt));
+ if (!pf_needs_provision_lmem(gt, vfid, num_vfs))
+ return 0;
+
fair = pf_estimate_fair_lmem(gt, num_vfs);
if (!fair)
return -ENOSPC;
--
2.47.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* [PATCH v2 10/10] drm/xe/pf: Add documentation for vram_quota
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
` (8 preceding siblings ...)
2026-02-18 20:55 ` [PATCH v2 09/10] drm/xe/pf: Skip VRAM auto-provisioning if already provisioned Michal Wajdeczko
@ 2026-02-18 20:55 ` Michal Wajdeczko
2026-02-18 21:21 ` Rodrigo Vivi
2026-02-18 21:01 ` ✗ CI.checkpatch: warning for drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2) Patchwork
` (3 subsequent siblings)
13 siblings, 1 reply; 21+ messages in thread
From: Michal Wajdeczko @ 2026-02-18 20:55 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Rodrigo Vivi, Piotr Piórkowski
Add initial documentation for recently added VRAM provisioning
Xe driver specific SR-IOV sysfs files under device/sriov_admin.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
---
v2: fix typo (Piotr)
---
.../ABI/testing/sysfs-driver-intel-xe-sriov | 31 +++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-sriov b/Documentation/ABI/testing/sysfs-driver-intel-xe-sriov
index 7f5ef9eada53..1d6eaff6882f 100644
--- a/Documentation/ABI/testing/sysfs-driver-intel-xe-sriov
+++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-sriov
@@ -129,6 +129,37 @@ Description:
-EIO if FW refuses to change the provisioning.
+What: /sys/bus/pci/drivers/xe/.../sriov_admin/.bulk_profile/vram_quota
+What: /sys/bus/pci/drivers/xe/.../sriov_admin/vf<n>/profile/vram_quota
+Date: February 2026
+KernelVersion: 7.0
+Contact: intel-xe@lists.freedesktop.org
+Description:
+ These files allow to perform initial VFs VRAM provisioning prior to VFs
+ enabling or to change VFs VRAM provisioning once the VFs are enabled.
+ Any non-zero initial VRAM provisioning will block VFs auto-provisioning.
+ Without initial VRAM provisioning those files will show result of the
+ VRAM auto-provisioning performed by the PF once the VFs are enabled.
+ Once the VFs are disabled, all VRAM provisioning will be released.
+ These files are visible only on discrete Intel Xe platforms with VRAM
+ and are writeable only if dynamic VFs VRAM provisioning is supported.
+
+ .bulk_profile/vram_quota: (WO) unsigned integer
+ The amount of the provisioned VRAM in [bytes] for each VF.
+ Actual quota value might be aligned per HW/FW requirements.
+
+ profile/vram_quota: (RW) unsigned integer
+ The amount of the provisioned VRAM in [bytes] for this VF.
+ Actual quota value might be aligned per HW/FW requirements.
+
+ Default is 0 (unprovisioned).
+
+ Writes to these attributes may fail with errors like:
+ -EINVAL if provided input is malformed or not recognized,
+ -EPERM if change is not applicable on given HW/FW,
+ -EIO if FW refuses to change the provisioning.
+
+
What: /sys/bus/pci/drivers/xe/.../sriov_admin/vf<n>/stop
Date: October 2025
KernelVersion: 6.19
--
2.47.1
^ permalink raw reply related [flat|nested] 21+ messages in thread
* ✗ CI.checkpatch: warning for drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2)
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
` (9 preceding siblings ...)
2026-02-18 20:55 ` [PATCH v2 10/10] drm/xe/pf: Add documentation for vram_quota Michal Wajdeczko
@ 2026-02-18 21:01 ` Patchwork
2026-02-18 21:03 ` ✓ CI.KUnit: success " Patchwork
` (2 subsequent siblings)
13 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2026-02-18 21:01 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
== Series Details ==
Series: drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2)
URL : https://patchwork.freedesktop.org/series/161625/
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
1f57ba1afceae32108bd24770069f764d940a0e4
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 0bcfb956254c9c0513a5a967c14c00d70cb3d26a
Author: Michal Wajdeczko <michal.wajdeczko@intel.com>
Date: Wed Feb 18 21:55:52 2026 +0100
drm/xe/pf: Add documentation for vram_quota
Add initial documentation for recently added VRAM provisioning
Xe driver specific SR-IOV sysfs files under device/sriov_admin.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
+ /mt/dim checkpatch 7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5 drm-intel
928cb435407c drm/xe/pf: Expose LMTT page size
cecde37ee761 drm/xe/pf: Add locked variants of VRAM configuration functions
29ef2f4573cc drm/xe/pf: Add functions for VRAM provisioning
091df93bbd42 drm/xe/pf: Allow to change VFs VRAM quota using sysfs
369b7782a1d9 drm/xe/pf: Use migration-friendly VRAM auto-provisioning
f4dab8737ae3 drm/xe/tests: Add KUnit tests for new VRAM fair provisioning
1bb6674e8734 drm/xe/pf: Don't check for empty config
ea9b1014bd12 drm/xe/pf: Prefer guard(mutex) when doing fair LMEM provisioning
605d2db86047 drm/xe/pf: Skip VRAM auto-provisioning if already provisioned
-:32: WARNING:LINE_SPACING: Missing a blank line after declarations
#32: FILE: drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c:1929:
+ unsigned int allvfs = 1 + xe_gt_sriov_pf_get_totalvfs(gt); /* PF plus VFs */
+ unsigned long *bitmap __free(bitmap) = bitmap_zalloc(allvfs, GFP_KERNEL);
total: 0 errors, 1 warnings, 0 checks, 68 lines checked
0bcfb956254c drm/xe/pf: Add documentation for vram_quota
^ permalink raw reply [flat|nested] 21+ messages in thread
* ✓ CI.KUnit: success for drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2)
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
` (10 preceding siblings ...)
2026-02-18 21:01 ` ✗ CI.checkpatch: warning for drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2) Patchwork
@ 2026-02-18 21:03 ` Patchwork
2026-02-18 21:47 ` ✗ Xe.CI.BAT: failure " Patchwork
2026-02-18 23:19 ` ✗ Xe.CI.FULL: " Patchwork
13 siblings, 0 replies; 21+ messages in thread
From: Patchwork @ 2026-02-18 21:03 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
== Series Details ==
Series: drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2)
URL : https://patchwork.freedesktop.org/series/161625/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[21:01:58] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:02:02] 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
[21:02:34] Starting KUnit Kernel (1/1)...
[21:02:34] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:02:34] ================== guc_buf (11 subtests) ===================
[21:02:34] [PASSED] test_smallest
[21:02:34] [PASSED] test_largest
[21:02:34] [PASSED] test_granular
[21:02:34] [PASSED] test_unique
[21:02:34] [PASSED] test_overlap
[21:02:34] [PASSED] test_reusable
[21:02:34] [PASSED] test_too_big
[21:02:34] [PASSED] test_flush
[21:02:34] [PASSED] test_lookup
[21:02:34] [PASSED] test_data
[21:02:34] [PASSED] test_class
[21:02:34] ===================== [PASSED] guc_buf =====================
[21:02:34] =================== guc_dbm (7 subtests) ===================
[21:02:34] [PASSED] test_empty
[21:02:34] [PASSED] test_default
[21:02:34] ======================== test_size ========================
[21:02:34] [PASSED] 4
[21:02:34] [PASSED] 8
[21:02:34] [PASSED] 32
[21:02:34] [PASSED] 256
[21:02:34] ==================== [PASSED] test_size ====================
[21:02:34] ======================= test_reuse ========================
[21:02:34] [PASSED] 4
[21:02:34] [PASSED] 8
[21:02:34] [PASSED] 32
[21:02:34] [PASSED] 256
[21:02:34] =================== [PASSED] test_reuse ====================
[21:02:34] =================== test_range_overlap ====================
[21:02:34] [PASSED] 4
[21:02:34] [PASSED] 8
[21:02:34] [PASSED] 32
[21:02:34] [PASSED] 256
[21:02:34] =============== [PASSED] test_range_overlap ================
[21:02:34] =================== test_range_compact ====================
[21:02:34] [PASSED] 4
[21:02:34] [PASSED] 8
[21:02:34] [PASSED] 32
[21:02:34] [PASSED] 256
[21:02:34] =============== [PASSED] test_range_compact ================
[21:02:34] ==================== test_range_spare =====================
[21:02:34] [PASSED] 4
[21:02:34] [PASSED] 8
[21:02:34] [PASSED] 32
[21:02:34] [PASSED] 256
[21:02:34] ================ [PASSED] test_range_spare =================
[21:02:34] ===================== [PASSED] guc_dbm =====================
[21:02:34] =================== guc_idm (6 subtests) ===================
[21:02:34] [PASSED] bad_init
[21:02:34] [PASSED] no_init
[21:02:34] [PASSED] init_fini
[21:02:34] [PASSED] check_used
[21:02:34] [PASSED] check_quota
[21:02:34] [PASSED] check_all
[21:02:34] ===================== [PASSED] guc_idm =====================
[21:02:34] ================== no_relay (3 subtests) ===================
[21:02:34] [PASSED] xe_drops_guc2pf_if_not_ready
[21:02:34] [PASSED] xe_drops_guc2vf_if_not_ready
[21:02:34] [PASSED] xe_rejects_send_if_not_ready
[21:02:34] ==================== [PASSED] no_relay =====================
[21:02:34] ================== pf_relay (14 subtests) ==================
[21:02:34] [PASSED] pf_rejects_guc2pf_too_short
[21:02:34] [PASSED] pf_rejects_guc2pf_too_long
[21:02:34] [PASSED] pf_rejects_guc2pf_no_payload
[21:02:34] [PASSED] pf_fails_no_payload
[21:02:34] [PASSED] pf_fails_bad_origin
[21:02:34] [PASSED] pf_fails_bad_type
[21:02:34] [PASSED] pf_txn_reports_error
[21:02:34] [PASSED] pf_txn_sends_pf2guc
[21:02:34] [PASSED] pf_sends_pf2guc
[21:02:34] [SKIPPED] pf_loopback_nop
[21:02:34] [SKIPPED] pf_loopback_echo
[21:02:34] [SKIPPED] pf_loopback_fail
[21:02:34] [SKIPPED] pf_loopback_busy
[21:02:34] [SKIPPED] pf_loopback_retry
[21:02:34] ==================== [PASSED] pf_relay =====================
[21:02:34] ================== vf_relay (3 subtests) ===================
[21:02:34] [PASSED] vf_rejects_guc2vf_too_short
[21:02:34] [PASSED] vf_rejects_guc2vf_too_long
[21:02:34] [PASSED] vf_rejects_guc2vf_no_payload
[21:02:34] ==================== [PASSED] vf_relay =====================
[21:02:34] ================ pf_gt_config (9 subtests) =================
[21:02:34] [PASSED] fair_contexts_1vf
[21:02:34] [PASSED] fair_doorbells_1vf
[21:02:34] [PASSED] fair_ggtt_1vf
[21:02:34] ====================== fair_vram_1vf ======================
[21:02:34] [PASSED] 3.50 GiB
[21:02:34] [PASSED] 11.5 GiB
[21:02:34] [PASSED] 15.5 GiB
[21:02:34] [PASSED] 31.5 GiB
[21:02:34] [PASSED] 63.5 GiB
[21:02:34] [PASSED] 13.9 GiB
[21:02:34] ================== [PASSED] fair_vram_1vf ==================
[21:02:34] ================ fair_vram_1vf_admin_only =================
[21:02:34] [PASSED] 3.50 GiB
[21:02:34] [PASSED] 11.5 GiB
[21:02:34] [PASSED] 15.5 GiB
[21:02:34] [PASSED] 31.5 GiB
[21:02:34] [PASSED] 63.5 GiB
[21:02:34] [PASSED] 13.9 GiB
[21:02:34] ============ [PASSED] fair_vram_1vf_admin_only =============
[21:02:34] ====================== fair_contexts ======================
[21:02:34] [PASSED] 1 VF
[21:02:34] [PASSED] 2 VFs
[21:02:34] [PASSED] 3 VFs
[21:02:34] [PASSED] 4 VFs
[21:02:34] [PASSED] 5 VFs
[21:02:34] [PASSED] 6 VFs
[21:02:34] [PASSED] 7 VFs
[21:02:34] [PASSED] 8 VFs
[21:02:34] [PASSED] 9 VFs
[21:02:34] [PASSED] 10 VFs
[21:02:34] [PASSED] 11 VFs
[21:02:34] [PASSED] 12 VFs
[21:02:34] [PASSED] 13 VFs
[21:02:34] [PASSED] 14 VFs
[21:02:34] [PASSED] 15 VFs
[21:02:34] [PASSED] 16 VFs
[21:02:34] [PASSED] 17 VFs
[21:02:34] [PASSED] 18 VFs
[21:02:34] [PASSED] 19 VFs
[21:02:34] [PASSED] 20 VFs
[21:02:34] [PASSED] 21 VFs
[21:02:34] [PASSED] 22 VFs
[21:02:34] [PASSED] 23 VFs
[21:02:34] [PASSED] 24 VFs
[21:02:34] [PASSED] 25 VFs
[21:02:34] [PASSED] 26 VFs
[21:02:34] [PASSED] 27 VFs
[21:02:34] [PASSED] 28 VFs
[21:02:34] [PASSED] 29 VFs
[21:02:34] [PASSED] 30 VFs
[21:02:34] [PASSED] 31 VFs
[21:02:34] [PASSED] 32 VFs
[21:02:34] [PASSED] 33 VFs
[21:02:34] [PASSED] 34 VFs
[21:02:34] [PASSED] 35 VFs
[21:02:34] [PASSED] 36 VFs
[21:02:34] [PASSED] 37 VFs
[21:02:34] [PASSED] 38 VFs
[21:02:34] [PASSED] 39 VFs
[21:02:34] [PASSED] 40 VFs
[21:02:34] [PASSED] 41 VFs
[21:02:34] [PASSED] 42 VFs
[21:02:34] [PASSED] 43 VFs
[21:02:34] [PASSED] 44 VFs
[21:02:34] [PASSED] 45 VFs
[21:02:34] [PASSED] 46 VFs
[21:02:34] [PASSED] 47 VFs
[21:02:34] [PASSED] 48 VFs
[21:02:34] [PASSED] 49 VFs
[21:02:34] [PASSED] 50 VFs
[21:02:34] [PASSED] 51 VFs
[21:02:34] [PASSED] 52 VFs
[21:02:34] [PASSED] 53 VFs
[21:02:34] [PASSED] 54 VFs
[21:02:34] [PASSED] 55 VFs
[21:02:34] [PASSED] 56 VFs
[21:02:34] [PASSED] 57 VFs
[21:02:34] [PASSED] 58 VFs
[21:02:34] [PASSED] 59 VFs
[21:02:34] [PASSED] 60 VFs
[21:02:34] [PASSED] 61 VFs
[21:02:34] [PASSED] 62 VFs
[21:02:34] [PASSED] 63 VFs
[21:02:34] ================== [PASSED] fair_contexts ==================
[21:02:34] ===================== fair_doorbells ======================
[21:02:34] [PASSED] 1 VF
[21:02:34] [PASSED] 2 VFs
[21:02:34] [PASSED] 3 VFs
[21:02:34] [PASSED] 4 VFs
[21:02:34] [PASSED] 5 VFs
[21:02:34] [PASSED] 6 VFs
[21:02:34] [PASSED] 7 VFs
[21:02:34] [PASSED] 8 VFs
[21:02:34] [PASSED] 9 VFs
[21:02:34] [PASSED] 10 VFs
[21:02:34] [PASSED] 11 VFs
[21:02:34] [PASSED] 12 VFs
[21:02:34] [PASSED] 13 VFs
[21:02:34] [PASSED] 14 VFs
[21:02:34] [PASSED] 15 VFs
[21:02:34] [PASSED] 16 VFs
[21:02:34] [PASSED] 17 VFs
[21:02:34] [PASSED] 18 VFs
[21:02:34] [PASSED] 19 VFs
[21:02:34] [PASSED] 20 VFs
[21:02:34] [PASSED] 21 VFs
[21:02:34] [PASSED] 22 VFs
[21:02:34] [PASSED] 23 VFs
[21:02:34] [PASSED] 24 VFs
[21:02:34] [PASSED] 25 VFs
[21:02:34] [PASSED] 26 VFs
[21:02:34] [PASSED] 27 VFs
[21:02:34] [PASSED] 28 VFs
[21:02:34] [PASSED] 29 VFs
[21:02:34] [PASSED] 30 VFs
[21:02:34] [PASSED] 31 VFs
[21:02:34] [PASSED] 32 VFs
[21:02:34] [PASSED] 33 VFs
[21:02:34] [PASSED] 34 VFs
[21:02:34] [PASSED] 35 VFs
[21:02:34] [PASSED] 36 VFs
[21:02:34] [PASSED] 37 VFs
[21:02:34] [PASSED] 38 VFs
[21:02:34] [PASSED] 39 VFs
[21:02:34] [PASSED] 40 VFs
[21:02:34] [PASSED] 41 VFs
[21:02:34] [PASSED] 42 VFs
[21:02:34] [PASSED] 43 VFs
[21:02:34] [PASSED] 44 VFs
[21:02:34] [PASSED] 45 VFs
[21:02:34] [PASSED] 46 VFs
[21:02:34] [PASSED] 47 VFs
[21:02:34] [PASSED] 48 VFs
[21:02:34] [PASSED] 49 VFs
[21:02:34] [PASSED] 50 VFs
[21:02:34] [PASSED] 51 VFs
[21:02:34] [PASSED] 52 VFs
[21:02:34] [PASSED] 53 VFs
[21:02:34] [PASSED] 54 VFs
[21:02:34] [PASSED] 55 VFs
[21:02:34] [PASSED] 56 VFs
[21:02:34] [PASSED] 57 VFs
[21:02:34] [PASSED] 58 VFs
[21:02:34] [PASSED] 59 VFs
[21:02:34] [PASSED] 60 VFs
[21:02:34] [PASSED] 61 VFs
[21:02:34] [PASSED] 62 VFs
[21:02:34] [PASSED] 63 VFs
[21:02:34] ================= [PASSED] fair_doorbells ==================
[21:02:34] ======================== fair_ggtt ========================
[21:02:34] [PASSED] 1 VF
[21:02:34] [PASSED] 2 VFs
[21:02:34] [PASSED] 3 VFs
[21:02:34] [PASSED] 4 VFs
[21:02:34] [PASSED] 5 VFs
[21:02:34] [PASSED] 6 VFs
[21:02:34] [PASSED] 7 VFs
[21:02:34] [PASSED] 8 VFs
[21:02:34] [PASSED] 9 VFs
[21:02:34] [PASSED] 10 VFs
[21:02:34] [PASSED] 11 VFs
[21:02:34] [PASSED] 12 VFs
[21:02:34] [PASSED] 13 VFs
[21:02:34] [PASSED] 14 VFs
[21:02:34] [PASSED] 15 VFs
[21:02:34] [PASSED] 16 VFs
[21:02:34] [PASSED] 17 VFs
[21:02:34] [PASSED] 18 VFs
[21:02:34] [PASSED] 19 VFs
[21:02:34] [PASSED] 20 VFs
[21:02:34] [PASSED] 21 VFs
[21:02:34] [PASSED] 22 VFs
[21:02:34] [PASSED] 23 VFs
[21:02:34] [PASSED] 24 VFs
[21:02:34] [PASSED] 25 VFs
[21:02:34] [PASSED] 26 VFs
[21:02:34] [PASSED] 27 VFs
[21:02:34] [PASSED] 28 VFs
[21:02:34] [PASSED] 29 VFs
[21:02:34] [PASSED] 30 VFs
[21:02:34] [PASSED] 31 VFs
[21:02:34] [PASSED] 32 VFs
[21:02:34] [PASSED] 33 VFs
[21:02:34] [PASSED] 34 VFs
[21:02:34] [PASSED] 35 VFs
[21:02:34] [PASSED] 36 VFs
[21:02:34] [PASSED] 37 VFs
[21:02:34] [PASSED] 38 VFs
[21:02:34] [PASSED] 39 VFs
[21:02:34] [PASSED] 40 VFs
[21:02:34] [PASSED] 41 VFs
[21:02:34] [PASSED] 42 VFs
[21:02:34] [PASSED] 43 VFs
[21:02:34] [PASSED] 44 VFs
[21:02:34] [PASSED] 45 VFs
[21:02:34] [PASSED] 46 VFs
[21:02:34] [PASSED] 47 VFs
[21:02:34] [PASSED] 48 VFs
[21:02:34] [PASSED] 49 VFs
[21:02:34] [PASSED] 50 VFs
[21:02:34] [PASSED] 51 VFs
[21:02:34] [PASSED] 52 VFs
[21:02:34] [PASSED] 53 VFs
[21:02:34] [PASSED] 54 VFs
[21:02:34] [PASSED] 55 VFs
[21:02:34] [PASSED] 56 VFs
[21:02:34] [PASSED] 57 VFs
[21:02:34] [PASSED] 58 VFs
[21:02:34] [PASSED] 59 VFs
[21:02:34] [PASSED] 60 VFs
[21:02:34] [PASSED] 61 VFs
[21:02:34] [PASSED] 62 VFs
[21:02:34] [PASSED] 63 VFs
[21:02:34] ==================== [PASSED] fair_ggtt ====================
[21:02:34] ======================== fair_vram ========================
[21:02:34] [PASSED] 1 VF
[21:02:34] [PASSED] 2 VFs
[21:02:34] [PASSED] 3 VFs
[21:02:34] [PASSED] 4 VFs
[21:02:34] [PASSED] 5 VFs
[21:02:34] [PASSED] 6 VFs
[21:02:34] [PASSED] 7 VFs
[21:02:34] [PASSED] 8 VFs
[21:02:34] [PASSED] 9 VFs
[21:02:34] [PASSED] 10 VFs
[21:02:34] [PASSED] 11 VFs
[21:02:34] [PASSED] 12 VFs
[21:02:34] [PASSED] 13 VFs
[21:02:34] [PASSED] 14 VFs
[21:02:34] [PASSED] 15 VFs
[21:02:34] [PASSED] 16 VFs
[21:02:34] [PASSED] 17 VFs
[21:02:34] [PASSED] 18 VFs
[21:02:34] [PASSED] 19 VFs
[21:02:34] [PASSED] 20 VFs
[21:02:34] [PASSED] 21 VFs
[21:02:34] [PASSED] 22 VFs
[21:02:34] [PASSED] 23 VFs
[21:02:34] [PASSED] 24 VFs
[21:02:34] [PASSED] 25 VFs
[21:02:34] [PASSED] 26 VFs
[21:02:34] [PASSED] 27 VFs
[21:02:34] [PASSED] 28 VFs
[21:02:34] [PASSED] 29 VFs
[21:02:34] [PASSED] 30 VFs
[21:02:34] [PASSED] 31 VFs
[21:02:34] [PASSED] 32 VFs
[21:02:34] [PASSED] 33 VFs
[21:02:34] [PASSED] 34 VFs
[21:02:34] [PASSED] 35 VFs
[21:02:34] [PASSED] 36 VFs
[21:02:34] [PASSED] 37 VFs
[21:02:34] [PASSED] 38 VFs
[21:02:34] [PASSED] 39 VFs
[21:02:34] [PASSED] 40 VFs
[21:02:34] [PASSED] 41 VFs
[21:02:34] [PASSED] 42 VFs
[21:02:34] [PASSED] 43 VFs
[21:02:34] [PASSED] 44 VFs
[21:02:34] [PASSED] 45 VFs
[21:02:34] [PASSED] 46 VFs
[21:02:34] [PASSED] 47 VFs
[21:02:34] [PASSED] 48 VFs
[21:02:34] [PASSED] 49 VFs
[21:02:34] [PASSED] 50 VFs
[21:02:34] [PASSED] 51 VFs
[21:02:34] [PASSED] 52 VFs
[21:02:34] [PASSED] 53 VFs
[21:02:34] [PASSED] 54 VFs
[21:02:34] [PASSED] 55 VFs
[21:02:34] [PASSED] 56 VFs
[21:02:34] [PASSED] 57 VFs
[21:02:34] [PASSED] 58 VFs
[21:02:34] [PASSED] 59 VFs
[21:02:34] [PASSED] 60 VFs
[21:02:34] [PASSED] 61 VFs
[21:02:34] [PASSED] 62 VFs
[21:02:34] [PASSED] 63 VFs
[21:02:34] ==================== [PASSED] fair_vram ====================
[21:02:34] ================== [PASSED] pf_gt_config ===================
[21:02:34] ===================== lmtt (1 subtest) =====================
[21:02:34] ======================== test_ops =========================
[21:02:34] [PASSED] 2-level
[21:02:34] [PASSED] multi-level
[21:02:34] ==================== [PASSED] test_ops =====================
[21:02:34] ====================== [PASSED] lmtt =======================
[21:02:34] ================= pf_service (11 subtests) =================
[21:02:34] [PASSED] pf_negotiate_any
[21:02:34] [PASSED] pf_negotiate_base_match
[21:02:34] [PASSED] pf_negotiate_base_newer
[21:02:34] [PASSED] pf_negotiate_base_next
[21:02:34] [SKIPPED] pf_negotiate_base_older
[21:02:34] [PASSED] pf_negotiate_base_prev
[21:02:34] [PASSED] pf_negotiate_latest_match
[21:02:34] [PASSED] pf_negotiate_latest_newer
[21:02:34] [PASSED] pf_negotiate_latest_next
[21:02:34] [SKIPPED] pf_negotiate_latest_older
[21:02:34] [SKIPPED] pf_negotiate_latest_prev
[21:02:34] =================== [PASSED] pf_service ====================
[21:02:34] ================= xe_guc_g2g (2 subtests) ==================
[21:02:34] ============== xe_live_guc_g2g_kunit_default ==============
[21:02:34] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[21:02:34] ============== xe_live_guc_g2g_kunit_allmem ===============
[21:02:34] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[21:02:34] =================== [SKIPPED] xe_guc_g2g ===================
[21:02:34] =================== xe_mocs (2 subtests) ===================
[21:02:34] ================ xe_live_mocs_kernel_kunit ================
[21:02:34] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[21:02:34] ================ xe_live_mocs_reset_kunit =================
[21:02:34] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[21:02:34] ==================== [SKIPPED] xe_mocs =====================
[21:02:34] ================= xe_migrate (2 subtests) ==================
[21:02:34] ================= xe_migrate_sanity_kunit =================
[21:02:34] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[21:02:34] ================== xe_validate_ccs_kunit ==================
[21:02:34] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[21:02:34] =================== [SKIPPED] xe_migrate ===================
[21:02:34] ================== xe_dma_buf (1 subtest) ==================
[21:02:34] ==================== xe_dma_buf_kunit =====================
[21:02:34] ================ [SKIPPED] xe_dma_buf_kunit ================
[21:02:34] =================== [SKIPPED] xe_dma_buf ===================
[21:02:34] ================= xe_bo_shrink (1 subtest) =================
[21:02:34] =================== xe_bo_shrink_kunit ====================
[21:02:34] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[21:02:34] ================== [SKIPPED] xe_bo_shrink ==================
[21:02:34] ==================== xe_bo (2 subtests) ====================
[21:02:34] ================== xe_ccs_migrate_kunit ===================
[21:02:34] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[21:02:34] ==================== xe_bo_evict_kunit ====================
[21:02:34] =============== [SKIPPED] xe_bo_evict_kunit ================
[21:02:34] ===================== [SKIPPED] xe_bo ======================
[21:02:34] ==================== args (13 subtests) ====================
[21:02:34] [PASSED] count_args_test
[21:02:34] [PASSED] call_args_example
[21:02:34] [PASSED] call_args_test
[21:02:34] [PASSED] drop_first_arg_example
[21:02:34] [PASSED] drop_first_arg_test
[21:02:34] [PASSED] first_arg_example
[21:02:34] [PASSED] first_arg_test
[21:02:34] [PASSED] last_arg_example
[21:02:34] [PASSED] last_arg_test
[21:02:34] [PASSED] pick_arg_example
[21:02:34] [PASSED] if_args_example
[21:02:34] [PASSED] if_args_test
[21:02:34] [PASSED] sep_comma_example
[21:02:34] ====================== [PASSED] args =======================
[21:02:34] =================== xe_pci (3 subtests) ====================
[21:02:34] ==================== check_graphics_ip ====================
[21:02:34] [PASSED] 12.00 Xe_LP
[21:02:34] [PASSED] 12.10 Xe_LP+
[21:02:34] [PASSED] 12.55 Xe_HPG
[21:02:34] [PASSED] 12.60 Xe_HPC
[21:02:34] [PASSED] 12.70 Xe_LPG
[21:02:34] [PASSED] 12.71 Xe_LPG
[21:02:34] [PASSED] 12.74 Xe_LPG+
[21:02:34] [PASSED] 20.01 Xe2_HPG
[21:02:34] [PASSED] 20.02 Xe2_HPG
[21:02:34] [PASSED] 20.04 Xe2_LPG
[21:02:34] [PASSED] 30.00 Xe3_LPG
[21:02:34] [PASSED] 30.01 Xe3_LPG
[21:02:34] [PASSED] 30.03 Xe3_LPG
[21:02:34] [PASSED] 30.04 Xe3_LPG
[21:02:34] [PASSED] 30.05 Xe3_LPG
[21:02:34] [PASSED] 35.10 Xe3p_LPG
[21:02:34] [PASSED] 35.11 Xe3p_XPC
[21:02:34] ================ [PASSED] check_graphics_ip ================
[21:02:34] ===================== check_media_ip ======================
[21:02:34] [PASSED] 12.00 Xe_M
[21:02:34] [PASSED] 12.55 Xe_HPM
[21:02:34] [PASSED] 13.00 Xe_LPM+
[21:02:34] [PASSED] 13.01 Xe2_HPM
[21:02:34] [PASSED] 20.00 Xe2_LPM
[21:02:34] [PASSED] 30.00 Xe3_LPM
[21:02:34] [PASSED] 30.02 Xe3_LPM
[21:02:34] [PASSED] 35.00 Xe3p_LPM
[21:02:34] [PASSED] 35.03 Xe3p_HPM
[21:02:34] ================= [PASSED] check_media_ip ==================
[21:02:34] =================== check_platform_desc ===================
[21:02:34] [PASSED] 0x9A60 (TIGERLAKE)
[21:02:34] [PASSED] 0x9A68 (TIGERLAKE)
[21:02:34] [PASSED] 0x9A70 (TIGERLAKE)
[21:02:34] [PASSED] 0x9A40 (TIGERLAKE)
[21:02:34] [PASSED] 0x9A49 (TIGERLAKE)
[21:02:34] [PASSED] 0x9A59 (TIGERLAKE)
[21:02:34] [PASSED] 0x9A78 (TIGERLAKE)
[21:02:34] [PASSED] 0x9AC0 (TIGERLAKE)
[21:02:34] [PASSED] 0x9AC9 (TIGERLAKE)
[21:02:34] [PASSED] 0x9AD9 (TIGERLAKE)
[21:02:34] [PASSED] 0x9AF8 (TIGERLAKE)
[21:02:34] [PASSED] 0x4C80 (ROCKETLAKE)
[21:02:34] [PASSED] 0x4C8A (ROCKETLAKE)
[21:02:34] [PASSED] 0x4C8B (ROCKETLAKE)
[21:02:34] [PASSED] 0x4C8C (ROCKETLAKE)
[21:02:34] [PASSED] 0x4C90 (ROCKETLAKE)
[21:02:34] [PASSED] 0x4C9A (ROCKETLAKE)
[21:02:34] [PASSED] 0x4680 (ALDERLAKE_S)
[21:02:34] [PASSED] 0x4682 (ALDERLAKE_S)
[21:02:34] [PASSED] 0x4688 (ALDERLAKE_S)
[21:02:34] [PASSED] 0x468A (ALDERLAKE_S)
[21:02:34] [PASSED] 0x468B (ALDERLAKE_S)
[21:02:34] [PASSED] 0x4690 (ALDERLAKE_S)
[21:02:34] [PASSED] 0x4692 (ALDERLAKE_S)
[21:02:34] [PASSED] 0x4693 (ALDERLAKE_S)
[21:02:34] [PASSED] 0x46A0 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46A1 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46A2 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46A3 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46A6 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46A8 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46AA (ALDERLAKE_P)
[21:02:34] [PASSED] 0x462A (ALDERLAKE_P)
[21:02:34] [PASSED] 0x4626 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x4628 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46B0 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46B1 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46B2 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46B3 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46C0 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46C1 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46C2 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46C3 (ALDERLAKE_P)
[21:02:34] [PASSED] 0x46D0 (ALDERLAKE_N)
[21:02:34] [PASSED] 0x46D1 (ALDERLAKE_N)
[21:02:34] [PASSED] 0x46D2 (ALDERLAKE_N)
[21:02:34] [PASSED] 0x46D3 (ALDERLAKE_N)
[21:02:34] [PASSED] 0x46D4 (ALDERLAKE_N)
[21:02:34] [PASSED] 0xA721 (ALDERLAKE_P)
[21:02:34] [PASSED] 0xA7A1 (ALDERLAKE_P)
[21:02:34] [PASSED] 0xA7A9 (ALDERLAKE_P)
[21:02:34] [PASSED] 0xA7AC (ALDERLAKE_P)
[21:02:34] [PASSED] 0xA7AD (ALDERLAKE_P)
[21:02:34] [PASSED] 0xA720 (ALDERLAKE_P)
[21:02:34] [PASSED] 0xA7A0 (ALDERLAKE_P)
[21:02:34] [PASSED] 0xA7A8 (ALDERLAKE_P)
[21:02:34] [PASSED] 0xA7AA (ALDERLAKE_P)
[21:02:34] [PASSED] 0xA7AB (ALDERLAKE_P)
[21:02:34] [PASSED] 0xA780 (ALDERLAKE_S)
[21:02:34] [PASSED] 0xA781 (ALDERLAKE_S)
[21:02:34] [PASSED] 0xA782 (ALDERLAKE_S)
[21:02:34] [PASSED] 0xA783 (ALDERLAKE_S)
[21:02:34] [PASSED] 0xA788 (ALDERLAKE_S)
[21:02:34] [PASSED] 0xA789 (ALDERLAKE_S)
[21:02:34] [PASSED] 0xA78A (ALDERLAKE_S)
[21:02:34] [PASSED] 0xA78B (ALDERLAKE_S)
[21:02:34] [PASSED] 0x4905 (DG1)
[21:02:34] [PASSED] 0x4906 (DG1)
[21:02:34] [PASSED] 0x4907 (DG1)
[21:02:34] [PASSED] 0x4908 (DG1)
[21:02:34] [PASSED] 0x4909 (DG1)
[21:02:34] [PASSED] 0x56C0 (DG2)
[21:02:34] [PASSED] 0x56C2 (DG2)
[21:02:34] [PASSED] 0x56C1 (DG2)
[21:02:34] [PASSED] 0x7D51 (METEORLAKE)
[21:02:34] [PASSED] 0x7DD1 (METEORLAKE)
[21:02:34] [PASSED] 0x7D41 (METEORLAKE)
[21:02:34] [PASSED] 0x7D67 (METEORLAKE)
[21:02:34] [PASSED] 0xB640 (METEORLAKE)
[21:02:34] [PASSED] 0x56A0 (DG2)
[21:02:34] [PASSED] 0x56A1 (DG2)
[21:02:34] [PASSED] 0x56A2 (DG2)
[21:02:34] [PASSED] 0x56BE (DG2)
[21:02:34] [PASSED] 0x56BF (DG2)
[21:02:34] [PASSED] 0x5690 (DG2)
[21:02:34] [PASSED] 0x5691 (DG2)
[21:02:34] [PASSED] 0x5692 (DG2)
[21:02:34] [PASSED] 0x56A5 (DG2)
[21:02:34] [PASSED] 0x56A6 (DG2)
[21:02:34] [PASSED] 0x56B0 (DG2)
[21:02:34] [PASSED] 0x56B1 (DG2)
[21:02:34] [PASSED] 0x56BA (DG2)
[21:02:34] [PASSED] 0x56BB (DG2)
[21:02:34] [PASSED] 0x56BC (DG2)
[21:02:34] [PASSED] 0x56BD (DG2)
[21:02:34] [PASSED] 0x5693 (DG2)
[21:02:34] [PASSED] 0x5694 (DG2)
[21:02:34] [PASSED] 0x5695 (DG2)
[21:02:34] [PASSED] 0x56A3 (DG2)
[21:02:34] [PASSED] 0x56A4 (DG2)
[21:02:34] [PASSED] 0x56B2 (DG2)
[21:02:34] [PASSED] 0x56B3 (DG2)
[21:02:34] [PASSED] 0x5696 (DG2)
[21:02:34] [PASSED] 0x5697 (DG2)
[21:02:34] [PASSED] 0xB69 (PVC)
[21:02:34] [PASSED] 0xB6E (PVC)
[21:02:34] [PASSED] 0xBD4 (PVC)
[21:02:34] [PASSED] 0xBD5 (PVC)
[21:02:34] [PASSED] 0xBD6 (PVC)
[21:02:34] [PASSED] 0xBD7 (PVC)
[21:02:34] [PASSED] 0xBD8 (PVC)
[21:02:34] [PASSED] 0xBD9 (PVC)
[21:02:34] [PASSED] 0xBDA (PVC)
[21:02:34] [PASSED] 0xBDB (PVC)
[21:02:34] [PASSED] 0xBE0 (PVC)
[21:02:34] [PASSED] 0xBE1 (PVC)
[21:02:34] [PASSED] 0xBE5 (PVC)
[21:02:34] [PASSED] 0x7D40 (METEORLAKE)
[21:02:34] [PASSED] 0x7D45 (METEORLAKE)
[21:02:34] [PASSED] 0x7D55 (METEORLAKE)
[21:02:34] [PASSED] 0x7D60 (METEORLAKE)
[21:02:34] [PASSED] 0x7DD5 (METEORLAKE)
[21:02:34] [PASSED] 0x6420 (LUNARLAKE)
[21:02:34] [PASSED] 0x64A0 (LUNARLAKE)
[21:02:34] [PASSED] 0x64B0 (LUNARLAKE)
[21:02:34] [PASSED] 0xE202 (BATTLEMAGE)
[21:02:34] [PASSED] 0xE209 (BATTLEMAGE)
[21:02:34] [PASSED] 0xE20B (BATTLEMAGE)
[21:02:34] [PASSED] 0xE20C (BATTLEMAGE)
[21:02:34] [PASSED] 0xE20D (BATTLEMAGE)
[21:02:34] [PASSED] 0xE210 (BATTLEMAGE)
[21:02:34] [PASSED] 0xE211 (BATTLEMAGE)
[21:02:34] [PASSED] 0xE212 (BATTLEMAGE)
[21:02:34] [PASSED] 0xE216 (BATTLEMAGE)
[21:02:34] [PASSED] 0xE220 (BATTLEMAGE)
[21:02:34] [PASSED] 0xE221 (BATTLEMAGE)
[21:02:34] [PASSED] 0xE222 (BATTLEMAGE)
[21:02:34] [PASSED] 0xE223 (BATTLEMAGE)
[21:02:34] [PASSED] 0xB080 (PANTHERLAKE)
[21:02:34] [PASSED] 0xB081 (PANTHERLAKE)
[21:02:34] [PASSED] 0xB082 (PANTHERLAKE)
[21:02:34] [PASSED] 0xB083 (PANTHERLAKE)
[21:02:34] [PASSED] 0xB084 (PANTHERLAKE)
[21:02:34] [PASSED] 0xB085 (PANTHERLAKE)
[21:02:34] [PASSED] 0xB086 (PANTHERLAKE)
[21:02:34] [PASSED] 0xB087 (PANTHERLAKE)
[21:02:34] [PASSED] 0xB08F (PANTHERLAKE)
[21:02:34] [PASSED] 0xB090 (PANTHERLAKE)
[21:02:34] [PASSED] 0xB0A0 (PANTHERLAKE)
[21:02:34] [PASSED] 0xB0B0 (PANTHERLAKE)
[21:02:34] [PASSED] 0xFD80 (PANTHERLAKE)
[21:02:34] [PASSED] 0xFD81 (PANTHERLAKE)
[21:02:34] [PASSED] 0xD740 (NOVALAKE_S)
[21:02:34] [PASSED] 0xD741 (NOVALAKE_S)
[21:02:34] [PASSED] 0xD742 (NOVALAKE_S)
[21:02:34] [PASSED] 0xD743 (NOVALAKE_S)
[21:02:34] [PASSED] 0xD744 (NOVALAKE_S)
[21:02:34] [PASSED] 0xD745 (NOVALAKE_S)
[21:02:34] [PASSED] 0x674C (CRESCENTISLAND)
[21:02:34] [PASSED] 0xD750 (NOVALAKE_P)
[21:02:34] [PASSED] 0xD751 (NOVALAKE_P)
[21:02:34] [PASSED] 0xD752 (NOVALAKE_P)
[21:02:34] [PASSED] 0xD753 (NOVALAKE_P)
[21:02:34] [PASSED] 0xD754 (NOVALAKE_P)
[21:02:34] [PASSED] 0xD755 (NOVALAKE_P)
[21:02:34] [PASSED] 0xD756 (NOVALAKE_P)
[21:02:34] [PASSED] 0xD757 (NOVALAKE_P)
[21:02:34] [PASSED] 0xD75F (NOVALAKE_P)
[21:02:34] =============== [PASSED] check_platform_desc ===============
[21:02:34] ===================== [PASSED] xe_pci ======================
[21:02:34] =================== xe_rtp (2 subtests) ====================
[21:02:34] =============== xe_rtp_process_to_sr_tests ================
[21:02:34] [PASSED] coalesce-same-reg
[21:02:34] [PASSED] no-match-no-add
[21:02:34] [PASSED] match-or
[21:02:34] [PASSED] match-or-xfail
[21:02:34] [PASSED] no-match-no-add-multiple-rules
[21:02:34] [PASSED] two-regs-two-entries
[21:02:34] [PASSED] clr-one-set-other
[21:02:34] [PASSED] set-field
[21:02:34] [PASSED] conflict-duplicate
stty: 'standard input': Inappropriate ioctl for device
[21:02:34] [PASSED] conflict-not-disjoint
[21:02:34] [PASSED] conflict-reg-type
[21:02:34] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[21:02:34] ================== xe_rtp_process_tests ===================
[21:02:34] [PASSED] active1
[21:02:34] [PASSED] active2
[21:02:34] [PASSED] active-inactive
[21:02:34] [PASSED] inactive-active
[21:02:34] [PASSED] inactive-1st_or_active-inactive
[21:02:34] [PASSED] inactive-2nd_or_active-inactive
[21:02:34] [PASSED] inactive-last_or_active-inactive
[21:02:34] [PASSED] inactive-no_or_active-inactive
[21:02:34] ============== [PASSED] xe_rtp_process_tests ===============
[21:02:34] ===================== [PASSED] xe_rtp ======================
[21:02:34] ==================== xe_wa (1 subtest) =====================
[21:02:34] ======================== xe_wa_gt =========================
[21:02:34] [PASSED] TIGERLAKE B0
[21:02:34] [PASSED] DG1 A0
[21:02:34] [PASSED] DG1 B0
[21:02:34] [PASSED] ALDERLAKE_S A0
[21:02:34] [PASSED] ALDERLAKE_S B0
[21:02:34] [PASSED] ALDERLAKE_S C0
[21:02:34] [PASSED] ALDERLAKE_S D0
[21:02:34] [PASSED] ALDERLAKE_P A0
[21:02:34] [PASSED] ALDERLAKE_P B0
[21:02:34] [PASSED] ALDERLAKE_P C0
[21:02:34] [PASSED] ALDERLAKE_S RPLS D0
[21:02:34] [PASSED] ALDERLAKE_P RPLU E0
[21:02:34] [PASSED] DG2 G10 C0
[21:02:34] [PASSED] DG2 G11 B1
[21:02:34] [PASSED] DG2 G12 A1
[21:02:34] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[21:02:34] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[21:02:34] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[21:02:34] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[21:02:34] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[21:02:34] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[21:02:34] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[21:02:34] ==================== [PASSED] xe_wa_gt =====================
[21:02:34] ====================== [PASSED] xe_wa ======================
[21:02:34] ============================================================
[21:02:34] Testing complete. Ran 597 tests: passed: 579, skipped: 18
[21:02:35] Elapsed time: 36.576s total, 4.241s configuring, 31.718s building, 0.566s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[21:02:35] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:02:36] 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
[21:03:02] Starting KUnit Kernel (1/1)...
[21:03:02] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:03:02] ============ drm_test_pick_cmdline (2 subtests) ============
[21:03:02] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[21:03:02] =============== drm_test_pick_cmdline_named ===============
[21:03:02] [PASSED] NTSC
[21:03:02] [PASSED] NTSC-J
[21:03:02] [PASSED] PAL
[21:03:02] [PASSED] PAL-M
[21:03:02] =========== [PASSED] drm_test_pick_cmdline_named ===========
[21:03:02] ============== [PASSED] drm_test_pick_cmdline ==============
[21:03:02] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[21:03:02] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[21:03:02] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[21:03:02] =========== drm_validate_clone_mode (2 subtests) ===========
[21:03:02] ============== drm_test_check_in_clone_mode ===============
[21:03:02] [PASSED] in_clone_mode
[21:03:02] [PASSED] not_in_clone_mode
[21:03:02] ========== [PASSED] drm_test_check_in_clone_mode ===========
[21:03:02] =============== drm_test_check_valid_clones ===============
[21:03:02] [PASSED] not_in_clone_mode
[21:03:02] [PASSED] valid_clone
[21:03:02] [PASSED] invalid_clone
[21:03:02] =========== [PASSED] drm_test_check_valid_clones ===========
[21:03:02] ============= [PASSED] drm_validate_clone_mode =============
[21:03:02] ============= drm_validate_modeset (1 subtest) =============
[21:03:02] [PASSED] drm_test_check_connector_changed_modeset
[21:03:02] ============== [PASSED] drm_validate_modeset ===============
[21:03:02] ====== drm_test_bridge_get_current_state (2 subtests) ======
[21:03:02] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[21:03:02] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[21:03:02] ======== [PASSED] drm_test_bridge_get_current_state ========
[21:03:02] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[21:03:02] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[21:03:02] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[21:03:02] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[21:03:02] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[21:03:02] ============== drm_bridge_alloc (2 subtests) ===============
[21:03:02] [PASSED] drm_test_drm_bridge_alloc_basic
[21:03:02] [PASSED] drm_test_drm_bridge_alloc_get_put
[21:03:02] ================ [PASSED] drm_bridge_alloc =================
[21:03:02] ============= drm_cmdline_parser (40 subtests) =============
[21:03:02] [PASSED] drm_test_cmdline_force_d_only
[21:03:02] [PASSED] drm_test_cmdline_force_D_only_dvi
[21:03:02] [PASSED] drm_test_cmdline_force_D_only_hdmi
[21:03:02] [PASSED] drm_test_cmdline_force_D_only_not_digital
[21:03:02] [PASSED] drm_test_cmdline_force_e_only
[21:03:02] [PASSED] drm_test_cmdline_res
[21:03:02] [PASSED] drm_test_cmdline_res_vesa
[21:03:02] [PASSED] drm_test_cmdline_res_vesa_rblank
[21:03:02] [PASSED] drm_test_cmdline_res_rblank
[21:03:02] [PASSED] drm_test_cmdline_res_bpp
[21:03:02] [PASSED] drm_test_cmdline_res_refresh
[21:03:02] [PASSED] drm_test_cmdline_res_bpp_refresh
[21:03:02] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[21:03:02] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[21:03:02] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[21:03:02] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[21:03:02] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[21:03:02] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[21:03:02] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[21:03:02] [PASSED] drm_test_cmdline_res_margins_force_on
[21:03:02] [PASSED] drm_test_cmdline_res_vesa_margins
[21:03:02] [PASSED] drm_test_cmdline_name
[21:03:02] [PASSED] drm_test_cmdline_name_bpp
[21:03:02] [PASSED] drm_test_cmdline_name_option
[21:03:02] [PASSED] drm_test_cmdline_name_bpp_option
[21:03:02] [PASSED] drm_test_cmdline_rotate_0
[21:03:02] [PASSED] drm_test_cmdline_rotate_90
[21:03:02] [PASSED] drm_test_cmdline_rotate_180
[21:03:02] [PASSED] drm_test_cmdline_rotate_270
[21:03:02] [PASSED] drm_test_cmdline_hmirror
[21:03:02] [PASSED] drm_test_cmdline_vmirror
[21:03:02] [PASSED] drm_test_cmdline_margin_options
[21:03:02] [PASSED] drm_test_cmdline_multiple_options
[21:03:02] [PASSED] drm_test_cmdline_bpp_extra_and_option
[21:03:02] [PASSED] drm_test_cmdline_extra_and_option
[21:03:02] [PASSED] drm_test_cmdline_freestanding_options
[21:03:02] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[21:03:02] [PASSED] drm_test_cmdline_panel_orientation
[21:03:02] ================ drm_test_cmdline_invalid =================
[21:03:02] [PASSED] margin_only
[21:03:02] [PASSED] interlace_only
[21:03:02] [PASSED] res_missing_x
[21:03:02] [PASSED] res_missing_y
[21:03:02] [PASSED] res_bad_y
[21:03:02] [PASSED] res_missing_y_bpp
[21:03:02] [PASSED] res_bad_bpp
[21:03:02] [PASSED] res_bad_refresh
[21:03:02] [PASSED] res_bpp_refresh_force_on_off
[21:03:02] [PASSED] res_invalid_mode
[21:03:02] [PASSED] res_bpp_wrong_place_mode
[21:03:02] [PASSED] name_bpp_refresh
[21:03:02] [PASSED] name_refresh
[21:03:02] [PASSED] name_refresh_wrong_mode
[21:03:02] [PASSED] name_refresh_invalid_mode
[21:03:02] [PASSED] rotate_multiple
[21:03:02] [PASSED] rotate_invalid_val
[21:03:02] [PASSED] rotate_truncated
[21:03:02] [PASSED] invalid_option
[21:03:02] [PASSED] invalid_tv_option
[21:03:02] [PASSED] truncated_tv_option
[21:03:02] ============ [PASSED] drm_test_cmdline_invalid =============
[21:03:02] =============== drm_test_cmdline_tv_options ===============
[21:03:02] [PASSED] NTSC
[21:03:02] [PASSED] NTSC_443
[21:03:02] [PASSED] NTSC_J
[21:03:02] [PASSED] PAL
[21:03:02] [PASSED] PAL_M
[21:03:02] [PASSED] PAL_N
[21:03:02] [PASSED] SECAM
[21:03:02] [PASSED] MONO_525
[21:03:02] [PASSED] MONO_625
[21:03:02] =========== [PASSED] drm_test_cmdline_tv_options ===========
[21:03:02] =============== [PASSED] drm_cmdline_parser ================
[21:03:02] ========== drmm_connector_hdmi_init (20 subtests) ==========
[21:03:02] [PASSED] drm_test_connector_hdmi_init_valid
[21:03:02] [PASSED] drm_test_connector_hdmi_init_bpc_8
[21:03:02] [PASSED] drm_test_connector_hdmi_init_bpc_10
[21:03:02] [PASSED] drm_test_connector_hdmi_init_bpc_12
[21:03:02] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[21:03:02] [PASSED] drm_test_connector_hdmi_init_bpc_null
[21:03:02] [PASSED] drm_test_connector_hdmi_init_formats_empty
[21:03:02] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[21:03:02] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[21:03:02] [PASSED] supported_formats=0x9 yuv420_allowed=1
[21:03:02] [PASSED] supported_formats=0x9 yuv420_allowed=0
[21:03:02] [PASSED] supported_formats=0x3 yuv420_allowed=1
[21:03:02] [PASSED] supported_formats=0x3 yuv420_allowed=0
[21:03:02] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[21:03:02] [PASSED] drm_test_connector_hdmi_init_null_ddc
[21:03:02] [PASSED] drm_test_connector_hdmi_init_null_product
[21:03:02] [PASSED] drm_test_connector_hdmi_init_null_vendor
[21:03:02] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[21:03:02] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[21:03:02] [PASSED] drm_test_connector_hdmi_init_product_valid
[21:03:02] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[21:03:02] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[21:03:02] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[21:03:02] ========= drm_test_connector_hdmi_init_type_valid =========
[21:03:02] [PASSED] HDMI-A
[21:03:02] [PASSED] HDMI-B
[21:03:02] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[21:03:02] ======== drm_test_connector_hdmi_init_type_invalid ========
[21:03:02] [PASSED] Unknown
[21:03:02] [PASSED] VGA
[21:03:02] [PASSED] DVI-I
[21:03:02] [PASSED] DVI-D
[21:03:02] [PASSED] DVI-A
[21:03:02] [PASSED] Composite
[21:03:02] [PASSED] SVIDEO
[21:03:02] [PASSED] LVDS
[21:03:02] [PASSED] Component
[21:03:02] [PASSED] DIN
[21:03:02] [PASSED] DP
[21:03:02] [PASSED] TV
[21:03:02] [PASSED] eDP
[21:03:02] [PASSED] Virtual
[21:03:02] [PASSED] DSI
[21:03:02] [PASSED] DPI
[21:03:02] [PASSED] Writeback
[21:03:02] [PASSED] SPI
[21:03:02] [PASSED] USB
[21:03:02] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[21:03:02] ============ [PASSED] drmm_connector_hdmi_init =============
[21:03:02] ============= drmm_connector_init (3 subtests) =============
[21:03:02] [PASSED] drm_test_drmm_connector_init
[21:03:02] [PASSED] drm_test_drmm_connector_init_null_ddc
[21:03:02] ========= drm_test_drmm_connector_init_type_valid =========
[21:03:02] [PASSED] Unknown
[21:03:02] [PASSED] VGA
[21:03:02] [PASSED] DVI-I
[21:03:02] [PASSED] DVI-D
[21:03:02] [PASSED] DVI-A
[21:03:02] [PASSED] Composite
[21:03:02] [PASSED] SVIDEO
[21:03:02] [PASSED] LVDS
[21:03:02] [PASSED] Component
[21:03:02] [PASSED] DIN
[21:03:02] [PASSED] DP
[21:03:02] [PASSED] HDMI-A
[21:03:02] [PASSED] HDMI-B
[21:03:02] [PASSED] TV
[21:03:02] [PASSED] eDP
[21:03:02] [PASSED] Virtual
[21:03:02] [PASSED] DSI
[21:03:02] [PASSED] DPI
[21:03:02] [PASSED] Writeback
[21:03:02] [PASSED] SPI
[21:03:02] [PASSED] USB
[21:03:02] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[21:03:02] =============== [PASSED] drmm_connector_init ===============
[21:03:02] ========= drm_connector_dynamic_init (6 subtests) ==========
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_init
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_init_properties
[21:03:02] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[21:03:02] [PASSED] Unknown
[21:03:02] [PASSED] VGA
[21:03:02] [PASSED] DVI-I
[21:03:02] [PASSED] DVI-D
[21:03:02] [PASSED] DVI-A
[21:03:02] [PASSED] Composite
[21:03:02] [PASSED] SVIDEO
[21:03:02] [PASSED] LVDS
[21:03:02] [PASSED] Component
[21:03:02] [PASSED] DIN
[21:03:02] [PASSED] DP
[21:03:02] [PASSED] HDMI-A
[21:03:02] [PASSED] HDMI-B
[21:03:02] [PASSED] TV
[21:03:02] [PASSED] eDP
[21:03:02] [PASSED] Virtual
[21:03:02] [PASSED] DSI
[21:03:02] [PASSED] DPI
[21:03:02] [PASSED] Writeback
[21:03:02] [PASSED] SPI
[21:03:02] [PASSED] USB
[21:03:02] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[21:03:02] ======== drm_test_drm_connector_dynamic_init_name =========
[21:03:02] [PASSED] Unknown
[21:03:02] [PASSED] VGA
[21:03:02] [PASSED] DVI-I
[21:03:02] [PASSED] DVI-D
[21:03:02] [PASSED] DVI-A
[21:03:02] [PASSED] Composite
[21:03:02] [PASSED] SVIDEO
[21:03:02] [PASSED] LVDS
[21:03:02] [PASSED] Component
[21:03:02] [PASSED] DIN
[21:03:02] [PASSED] DP
[21:03:02] [PASSED] HDMI-A
[21:03:02] [PASSED] HDMI-B
[21:03:02] [PASSED] TV
[21:03:02] [PASSED] eDP
[21:03:02] [PASSED] Virtual
[21:03:02] [PASSED] DSI
[21:03:02] [PASSED] DPI
[21:03:02] [PASSED] Writeback
[21:03:02] [PASSED] SPI
[21:03:02] [PASSED] USB
[21:03:02] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[21:03:02] =========== [PASSED] drm_connector_dynamic_init ============
[21:03:02] ==== drm_connector_dynamic_register_early (4 subtests) =====
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[21:03:02] ====== [PASSED] drm_connector_dynamic_register_early =======
[21:03:02] ======= drm_connector_dynamic_register (7 subtests) ========
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[21:03:02] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[21:03:02] ========= [PASSED] drm_connector_dynamic_register ==========
[21:03:02] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[21:03:02] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[21:03:02] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[21:03:02] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[21:03:02] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[21:03:02] ========== drm_test_get_tv_mode_from_name_valid ===========
[21:03:02] [PASSED] NTSC
[21:03:02] [PASSED] NTSC-443
[21:03:02] [PASSED] NTSC-J
[21:03:02] [PASSED] PAL
[21:03:02] [PASSED] PAL-M
[21:03:02] [PASSED] PAL-N
[21:03:02] [PASSED] SECAM
[21:03:02] [PASSED] Mono
[21:03:02] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[21:03:02] [PASSED] drm_test_get_tv_mode_from_name_truncated
[21:03:02] ============ [PASSED] drm_get_tv_mode_from_name ============
[21:03:02] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[21:03:02] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[21:03:02] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[21:03:02] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[21:03:02] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[21:03:02] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[21:03:02] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[21:03:02] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[21:03:02] [PASSED] VIC 96
[21:03:02] [PASSED] VIC 97
[21:03:02] [PASSED] VIC 101
[21:03:02] [PASSED] VIC 102
[21:03:02] [PASSED] VIC 106
[21:03:02] [PASSED] VIC 107
[21:03:02] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[21:03:02] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[21:03:02] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[21:03:02] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[21:03:02] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[21:03:02] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[21:03:02] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[21:03:02] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[21:03:02] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[21:03:02] [PASSED] Automatic
[21:03:02] [PASSED] Full
[21:03:02] [PASSED] Limited 16:235
[21:03:02] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[21:03:02] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[21:03:02] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[21:03:02] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[21:03:02] === drm_test_drm_hdmi_connector_get_output_format_name ====
[21:03:02] [PASSED] RGB
[21:03:02] [PASSED] YUV 4:2:0
[21:03:02] [PASSED] YUV 4:2:2
[21:03:02] [PASSED] YUV 4:4:4
[21:03:02] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[21:03:02] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[21:03:02] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[21:03:02] ============= drm_damage_helper (21 subtests) ==============
[21:03:02] [PASSED] drm_test_damage_iter_no_damage
[21:03:02] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[21:03:02] [PASSED] drm_test_damage_iter_no_damage_src_moved
[21:03:02] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[21:03:02] [PASSED] drm_test_damage_iter_no_damage_not_visible
[21:03:02] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[21:03:02] [PASSED] drm_test_damage_iter_no_damage_no_fb
[21:03:02] [PASSED] drm_test_damage_iter_simple_damage
[21:03:02] [PASSED] drm_test_damage_iter_single_damage
[21:03:02] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[21:03:02] [PASSED] drm_test_damage_iter_single_damage_outside_src
[21:03:02] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[21:03:02] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[21:03:02] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[21:03:02] [PASSED] drm_test_damage_iter_single_damage_src_moved
[21:03:02] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[21:03:02] [PASSED] drm_test_damage_iter_damage
[21:03:02] [PASSED] drm_test_damage_iter_damage_one_intersect
[21:03:02] [PASSED] drm_test_damage_iter_damage_one_outside
[21:03:02] [PASSED] drm_test_damage_iter_damage_src_moved
[21:03:02] [PASSED] drm_test_damage_iter_damage_not_visible
[21:03:02] ================ [PASSED] drm_damage_helper ================
[21:03:02] ============== drm_dp_mst_helper (3 subtests) ==============
[21:03:02] ============== drm_test_dp_mst_calc_pbn_mode ==============
[21:03:02] [PASSED] Clock 154000 BPP 30 DSC disabled
[21:03:02] [PASSED] Clock 234000 BPP 30 DSC disabled
[21:03:02] [PASSED] Clock 297000 BPP 24 DSC disabled
[21:03:02] [PASSED] Clock 332880 BPP 24 DSC enabled
[21:03:02] [PASSED] Clock 324540 BPP 24 DSC enabled
[21:03:02] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[21:03:02] ============== drm_test_dp_mst_calc_pbn_div ===============
[21:03:02] [PASSED] Link rate 2000000 lane count 4
[21:03:02] [PASSED] Link rate 2000000 lane count 2
[21:03:02] [PASSED] Link rate 2000000 lane count 1
[21:03:02] [PASSED] Link rate 1350000 lane count 4
[21:03:02] [PASSED] Link rate 1350000 lane count 2
[21:03:02] [PASSED] Link rate 1350000 lane count 1
[21:03:02] [PASSED] Link rate 1000000 lane count 4
[21:03:02] [PASSED] Link rate 1000000 lane count 2
[21:03:02] [PASSED] Link rate 1000000 lane count 1
[21:03:02] [PASSED] Link rate 810000 lane count 4
[21:03:02] [PASSED] Link rate 810000 lane count 2
[21:03:02] [PASSED] Link rate 810000 lane count 1
[21:03:02] [PASSED] Link rate 540000 lane count 4
[21:03:02] [PASSED] Link rate 540000 lane count 2
[21:03:02] [PASSED] Link rate 540000 lane count 1
[21:03:02] [PASSED] Link rate 270000 lane count 4
[21:03:02] [PASSED] Link rate 270000 lane count 2
[21:03:02] [PASSED] Link rate 270000 lane count 1
[21:03:02] [PASSED] Link rate 162000 lane count 4
[21:03:02] [PASSED] Link rate 162000 lane count 2
[21:03:02] [PASSED] Link rate 162000 lane count 1
[21:03:02] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[21:03:02] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[21:03:02] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[21:03:02] [PASSED] DP_POWER_UP_PHY with port number
[21:03:02] [PASSED] DP_POWER_DOWN_PHY with port number
[21:03:02] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[21:03:02] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[21:03:02] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[21:03:02] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[21:03:02] [PASSED] DP_QUERY_PAYLOAD with port number
[21:03:02] [PASSED] DP_QUERY_PAYLOAD with VCPI
[21:03:02] [PASSED] DP_REMOTE_DPCD_READ with port number
[21:03:02] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[21:03:02] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[21:03:02] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[21:03:02] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[21:03:02] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[21:03:02] [PASSED] DP_REMOTE_I2C_READ with port number
[21:03:02] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[21:03:02] [PASSED] DP_REMOTE_I2C_READ with transactions array
[21:03:02] [PASSED] DP_REMOTE_I2C_WRITE with port number
[21:03:02] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[21:03:02] [PASSED] DP_REMOTE_I2C_WRITE with data array
[21:03:02] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[21:03:02] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[21:03:02] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[21:03:02] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[21:03:02] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[21:03:02] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[21:03:02] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[21:03:02] ================ [PASSED] drm_dp_mst_helper ================
[21:03:02] ================== drm_exec (7 subtests) ===================
[21:03:02] [PASSED] sanitycheck
[21:03:02] [PASSED] test_lock
[21:03:02] [PASSED] test_lock_unlock
[21:03:02] [PASSED] test_duplicates
[21:03:02] [PASSED] test_prepare
[21:03:02] [PASSED] test_prepare_array
[21:03:02] [PASSED] test_multiple_loops
[21:03:02] ==================== [PASSED] drm_exec =====================
[21:03:02] =========== drm_format_helper_test (17 subtests) ===========
[21:03:02] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[21:03:02] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[21:03:02] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[21:03:02] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[21:03:02] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[21:03:02] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[21:03:02] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[21:03:02] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[21:03:02] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[21:03:02] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[21:03:02] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[21:03:02] ============== drm_test_fb_xrgb8888_to_mono ===============
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[21:03:02] ==================== drm_test_fb_swab =====================
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ================ [PASSED] drm_test_fb_swab =================
[21:03:02] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[21:03:02] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[21:03:02] [PASSED] single_pixel_source_buffer
[21:03:02] [PASSED] single_pixel_clip_rectangle
[21:03:02] [PASSED] well_known_colors
[21:03:02] [PASSED] destination_pitch
[21:03:02] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[21:03:02] ================= drm_test_fb_clip_offset =================
[21:03:02] [PASSED] pass through
[21:03:02] [PASSED] horizontal offset
[21:03:02] [PASSED] vertical offset
[21:03:02] [PASSED] horizontal and vertical offset
[21:03:02] [PASSED] horizontal offset (custom pitch)
[21:03:02] [PASSED] vertical offset (custom pitch)
[21:03:02] [PASSED] horizontal and vertical offset (custom pitch)
[21:03:02] ============= [PASSED] drm_test_fb_clip_offset =============
[21:03:02] =================== drm_test_fb_memcpy ====================
[21:03:02] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[21:03:02] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[21:03:02] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[21:03:02] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[21:03:02] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[21:03:02] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[21:03:02] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[21:03:02] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[21:03:02] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[21:03:02] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[21:03:02] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[21:03:02] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[21:03:02] =============== [PASSED] drm_test_fb_memcpy ================
[21:03:02] ============= [PASSED] drm_format_helper_test ==============
[21:03:02] ================= drm_format (18 subtests) =================
[21:03:02] [PASSED] drm_test_format_block_width_invalid
[21:03:02] [PASSED] drm_test_format_block_width_one_plane
[21:03:02] [PASSED] drm_test_format_block_width_two_plane
[21:03:02] [PASSED] drm_test_format_block_width_three_plane
[21:03:02] [PASSED] drm_test_format_block_width_tiled
[21:03:02] [PASSED] drm_test_format_block_height_invalid
[21:03:02] [PASSED] drm_test_format_block_height_one_plane
[21:03:02] [PASSED] drm_test_format_block_height_two_plane
[21:03:02] [PASSED] drm_test_format_block_height_three_plane
[21:03:02] [PASSED] drm_test_format_block_height_tiled
[21:03:02] [PASSED] drm_test_format_min_pitch_invalid
[21:03:02] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[21:03:02] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[21:03:02] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[21:03:02] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[21:03:02] [PASSED] drm_test_format_min_pitch_two_plane
[21:03:02] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[21:03:02] [PASSED] drm_test_format_min_pitch_tiled
[21:03:02] =================== [PASSED] drm_format ====================
[21:03:02] ============== drm_framebuffer (10 subtests) ===============
[21:03:02] ========== drm_test_framebuffer_check_src_coords ==========
[21:03:02] [PASSED] Success: source fits into fb
[21:03:02] [PASSED] Fail: overflowing fb with x-axis coordinate
[21:03:02] [PASSED] Fail: overflowing fb with y-axis coordinate
[21:03:02] [PASSED] Fail: overflowing fb with source width
[21:03:02] [PASSED] Fail: overflowing fb with source height
[21:03:02] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[21:03:02] [PASSED] drm_test_framebuffer_cleanup
[21:03:02] =============== drm_test_framebuffer_create ===============
[21:03:02] [PASSED] ABGR8888 normal sizes
[21:03:02] [PASSED] ABGR8888 max sizes
[21:03:02] [PASSED] ABGR8888 pitch greater than min required
[21:03:02] [PASSED] ABGR8888 pitch less than min required
[21:03:02] [PASSED] ABGR8888 Invalid width
[21:03:02] [PASSED] ABGR8888 Invalid buffer handle
[21:03:02] [PASSED] No pixel format
[21:03:02] [PASSED] ABGR8888 Width 0
[21:03:02] [PASSED] ABGR8888 Height 0
[21:03:02] [PASSED] ABGR8888 Out of bound height * pitch combination
[21:03:02] [PASSED] ABGR8888 Large buffer offset
[21:03:02] [PASSED] ABGR8888 Buffer offset for inexistent plane
[21:03:02] [PASSED] ABGR8888 Invalid flag
[21:03:02] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[21:03:02] [PASSED] ABGR8888 Valid buffer modifier
[21:03:02] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[21:03:02] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[21:03:02] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[21:03:02] [PASSED] NV12 Normal sizes
[21:03:02] [PASSED] NV12 Max sizes
[21:03:02] [PASSED] NV12 Invalid pitch
[21:03:02] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[21:03:02] [PASSED] NV12 different modifier per-plane
[21:03:02] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[21:03:02] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[21:03:02] [PASSED] NV12 Modifier for inexistent plane
[21:03:02] [PASSED] NV12 Handle for inexistent plane
[21:03:02] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[21:03:02] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[21:03:02] [PASSED] YVU420 Normal sizes
[21:03:02] [PASSED] YVU420 Max sizes
[21:03:02] [PASSED] YVU420 Invalid pitch
[21:03:02] [PASSED] YVU420 Different pitches
[21:03:02] [PASSED] YVU420 Different buffer offsets/pitches
[21:03:02] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[21:03:02] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[21:03:02] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[21:03:02] [PASSED] YVU420 Valid modifier
[21:03:02] [PASSED] YVU420 Different modifiers per plane
[21:03:02] [PASSED] YVU420 Modifier for inexistent plane
[21:03:02] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[21:03:02] [PASSED] X0L2 Normal sizes
[21:03:02] [PASSED] X0L2 Max sizes
[21:03:02] [PASSED] X0L2 Invalid pitch
[21:03:02] [PASSED] X0L2 Pitch greater than minimum required
[21:03:02] [PASSED] X0L2 Handle for inexistent plane
[21:03:02] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[21:03:02] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[21:03:02] [PASSED] X0L2 Valid modifier
[21:03:02] [PASSED] X0L2 Modifier for inexistent plane
[21:03:02] =========== [PASSED] drm_test_framebuffer_create ===========
[21:03:02] [PASSED] drm_test_framebuffer_free
[21:03:02] [PASSED] drm_test_framebuffer_init
[21:03:02] [PASSED] drm_test_framebuffer_init_bad_format
[21:03:02] [PASSED] drm_test_framebuffer_init_dev_mismatch
[21:03:02] [PASSED] drm_test_framebuffer_lookup
[21:03:02] [PASSED] drm_test_framebuffer_lookup_inexistent
[21:03:02] [PASSED] drm_test_framebuffer_modifiers_not_supported
[21:03:02] ================= [PASSED] drm_framebuffer =================
[21:03:02] ================ drm_gem_shmem (8 subtests) ================
[21:03:02] [PASSED] drm_gem_shmem_test_obj_create
[21:03:02] [PASSED] drm_gem_shmem_test_obj_create_private
[21:03:02] [PASSED] drm_gem_shmem_test_pin_pages
[21:03:02] [PASSED] drm_gem_shmem_test_vmap
[21:03:02] [PASSED] drm_gem_shmem_test_get_sg_table
[21:03:02] [PASSED] drm_gem_shmem_test_get_pages_sgt
[21:03:02] [PASSED] drm_gem_shmem_test_madvise
[21:03:02] [PASSED] drm_gem_shmem_test_purge
[21:03:02] ================== [PASSED] drm_gem_shmem ==================
[21:03:02] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[21:03:02] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[21:03:02] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[21:03:02] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[21:03:02] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[21:03:02] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[21:03:02] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[21:03:02] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[21:03:02] [PASSED] Automatic
[21:03:02] [PASSED] Full
[21:03:02] [PASSED] Limited 16:235
[21:03:02] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[21:03:02] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[21:03:02] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[21:03:02] [PASSED] drm_test_check_disable_connector
[21:03:02] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[21:03:02] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[21:03:02] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[21:03:02] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[21:03:02] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[21:03:02] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[21:03:02] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[21:03:02] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[21:03:02] [PASSED] drm_test_check_output_bpc_dvi
[21:03:02] [PASSED] drm_test_check_output_bpc_format_vic_1
[21:03:02] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[21:03:02] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[21:03:02] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[21:03:02] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[21:03:02] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[21:03:02] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[21:03:02] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[21:03:02] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[21:03:02] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[21:03:02] [PASSED] drm_test_check_broadcast_rgb_value
[21:03:02] [PASSED] drm_test_check_bpc_8_value
[21:03:02] [PASSED] drm_test_check_bpc_10_value
[21:03:02] [PASSED] drm_test_check_bpc_12_value
[21:03:02] [PASSED] drm_test_check_format_value
[21:03:02] [PASSED] drm_test_check_tmds_char_value
[21:03:02] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[21:03:02] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[21:03:02] [PASSED] drm_test_check_mode_valid
[21:03:02] [PASSED] drm_test_check_mode_valid_reject
[21:03:02] [PASSED] drm_test_check_mode_valid_reject_rate
[21:03:02] [PASSED] drm_test_check_mode_valid_reject_max_clock
[21:03:02] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[21:03:02] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[21:03:02] [PASSED] drm_test_check_infoframes
[21:03:02] [PASSED] drm_test_check_reject_avi_infoframe
[21:03:02] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[21:03:02] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[21:03:02] [PASSED] drm_test_check_reject_audio_infoframe
[21:03:02] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[21:03:02] ================= drm_managed (2 subtests) =================
[21:03:02] [PASSED] drm_test_managed_release_action
[21:03:02] [PASSED] drm_test_managed_run_action
[21:03:02] =================== [PASSED] drm_managed ===================
[21:03:02] =================== drm_mm (6 subtests) ====================
[21:03:02] [PASSED] drm_test_mm_init
[21:03:02] [PASSED] drm_test_mm_debug
[21:03:02] [PASSED] drm_test_mm_align32
[21:03:02] [PASSED] drm_test_mm_align64
[21:03:02] [PASSED] drm_test_mm_lowest
[21:03:02] [PASSED] drm_test_mm_highest
[21:03:02] ===================== [PASSED] drm_mm ======================
[21:03:02] ============= drm_modes_analog_tv (5 subtests) =============
[21:03:02] [PASSED] drm_test_modes_analog_tv_mono_576i
[21:03:02] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[21:03:02] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[21:03:02] [PASSED] drm_test_modes_analog_tv_pal_576i
[21:03:02] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[21:03:02] =============== [PASSED] drm_modes_analog_tv ===============
[21:03:02] ============== drm_plane_helper (2 subtests) ===============
[21:03:02] =============== drm_test_check_plane_state ================
[21:03:02] [PASSED] clipping_simple
[21:03:02] [PASSED] clipping_rotate_reflect
[21:03:02] [PASSED] positioning_simple
[21:03:02] [PASSED] upscaling
[21:03:02] [PASSED] downscaling
[21:03:02] [PASSED] rounding1
[21:03:02] [PASSED] rounding2
[21:03:02] [PASSED] rounding3
[21:03:02] [PASSED] rounding4
[21:03:02] =========== [PASSED] drm_test_check_plane_state ============
[21:03:02] =========== drm_test_check_invalid_plane_state ============
[21:03:02] [PASSED] positioning_invalid
[21:03:02] [PASSED] upscaling_invalid
[21:03:02] [PASSED] downscaling_invalid
[21:03:02] ======= [PASSED] drm_test_check_invalid_plane_state ========
[21:03:02] ================ [PASSED] drm_plane_helper =================
[21:03:02] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[21:03:02] ====== drm_test_connector_helper_tv_get_modes_check =======
[21:03:02] [PASSED] None
[21:03:02] [PASSED] PAL
[21:03:02] [PASSED] NTSC
[21:03:02] [PASSED] Both, NTSC Default
[21:03:02] [PASSED] Both, PAL Default
[21:03:02] [PASSED] Both, NTSC Default, with PAL on command-line
[21:03:02] [PASSED] Both, PAL Default, with NTSC on command-line
[21:03:02] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[21:03:02] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[21:03:02] ================== drm_rect (9 subtests) ===================
[21:03:02] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[21:03:02] [PASSED] drm_test_rect_clip_scaled_not_clipped
[21:03:02] [PASSED] drm_test_rect_clip_scaled_clipped
[21:03:02] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[21:03:02] ================= drm_test_rect_intersect =================
[21:03:02] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[21:03:02] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[21:03:02] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[21:03:02] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[21:03:02] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[21:03:02] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[21:03:02] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[21:03:02] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[21:03:02] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[21:03:02] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[21:03:02] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[21:03:02] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[21:03:02] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[21:03:02] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[21:03:02] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[21:03:02] ============= [PASSED] drm_test_rect_intersect =============
[21:03:02] ================ drm_test_rect_calc_hscale ================
[21:03:02] [PASSED] normal use
[21:03:02] [PASSED] out of max range
[21:03:02] [PASSED] out of min range
[21:03:02] [PASSED] zero dst
[21:03:02] [PASSED] negative src
[21:03:02] [PASSED] negative dst
[21:03:02] ============ [PASSED] drm_test_rect_calc_hscale ============
[21:03:02] ================ drm_test_rect_calc_vscale ================
[21:03:02] [PASSED] normal use
[21:03:02] [PASSED] out of max range
[21:03:02] [PASSED] out of min range
[21:03:02] [PASSED] zero dst
[21:03:02] [PASSED] negative src
[21:03:02] [PASSED] negative dst
stty: 'standard input': Inappropriate ioctl for device
[21:03:02] ============ [PASSED] drm_test_rect_calc_vscale ============
[21:03:02] ================== drm_test_rect_rotate ===================
[21:03:02] [PASSED] reflect-x
[21:03:02] [PASSED] reflect-y
[21:03:02] [PASSED] rotate-0
[21:03:02] [PASSED] rotate-90
[21:03:02] [PASSED] rotate-180
[21:03:02] [PASSED] rotate-270
[21:03:02] ============== [PASSED] drm_test_rect_rotate ===============
[21:03:02] ================ drm_test_rect_rotate_inv =================
[21:03:02] [PASSED] reflect-x
[21:03:02] [PASSED] reflect-y
[21:03:02] [PASSED] rotate-0
[21:03:02] [PASSED] rotate-90
[21:03:02] [PASSED] rotate-180
[21:03:02] [PASSED] rotate-270
[21:03:02] ============ [PASSED] drm_test_rect_rotate_inv =============
[21:03:02] ==================== [PASSED] drm_rect =====================
[21:03:02] ============ drm_sysfb_modeset_test (1 subtest) ============
[21:03:02] ============ drm_test_sysfb_build_fourcc_list =============
[21:03:02] [PASSED] no native formats
[21:03:02] [PASSED] XRGB8888 as native format
[21:03:02] [PASSED] remove duplicates
[21:03:02] [PASSED] convert alpha formats
[21:03:02] [PASSED] random formats
[21:03:02] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[21:03:02] ============= [PASSED] drm_sysfb_modeset_test ==============
[21:03:02] ================== drm_fixp (2 subtests) ===================
[21:03:02] [PASSED] drm_test_int2fixp
[21:03:02] [PASSED] drm_test_sm2fixp
[21:03:02] ==================== [PASSED] drm_fixp =====================
[21:03:02] ============================================================
[21:03:02] Testing complete. Ran 621 tests: passed: 621
[21:03:02] Elapsed time: 27.498s total, 1.708s configuring, 25.569s building, 0.187s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[21:03:02] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[21:03:04] 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
[21:03:14] Starting KUnit Kernel (1/1)...
[21:03:14] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[21:03:14] ================= ttm_device (5 subtests) ==================
[21:03:14] [PASSED] ttm_device_init_basic
[21:03:14] [PASSED] ttm_device_init_multiple
[21:03:14] [PASSED] ttm_device_fini_basic
[21:03:14] [PASSED] ttm_device_init_no_vma_man
[21:03:14] ================== ttm_device_init_pools ==================
[21:03:14] [PASSED] No DMA allocations, no DMA32 required
[21:03:14] [PASSED] DMA allocations, DMA32 required
[21:03:14] [PASSED] No DMA allocations, DMA32 required
[21:03:14] [PASSED] DMA allocations, no DMA32 required
[21:03:14] ============== [PASSED] ttm_device_init_pools ==============
[21:03:14] =================== [PASSED] ttm_device ====================
[21:03:14] ================== ttm_pool (8 subtests) ===================
[21:03:14] ================== ttm_pool_alloc_basic ===================
[21:03:14] [PASSED] One page
[21:03:14] [PASSED] More than one page
[21:03:14] [PASSED] Above the allocation limit
[21:03:14] [PASSED] One page, with coherent DMA mappings enabled
[21:03:14] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[21:03:14] ============== [PASSED] ttm_pool_alloc_basic ===============
[21:03:14] ============== ttm_pool_alloc_basic_dma_addr ==============
[21:03:14] [PASSED] One page
[21:03:14] [PASSED] More than one page
[21:03:14] [PASSED] Above the allocation limit
[21:03:14] [PASSED] One page, with coherent DMA mappings enabled
[21:03:14] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[21:03:14] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[21:03:14] [PASSED] ttm_pool_alloc_order_caching_match
[21:03:14] [PASSED] ttm_pool_alloc_caching_mismatch
[21:03:14] [PASSED] ttm_pool_alloc_order_mismatch
[21:03:14] [PASSED] ttm_pool_free_dma_alloc
[21:03:14] [PASSED] ttm_pool_free_no_dma_alloc
[21:03:14] [PASSED] ttm_pool_fini_basic
[21:03:14] ==================== [PASSED] ttm_pool =====================
[21:03:14] ================ ttm_resource (8 subtests) =================
[21:03:14] ================= ttm_resource_init_basic =================
[21:03:14] [PASSED] Init resource in TTM_PL_SYSTEM
[21:03:14] [PASSED] Init resource in TTM_PL_VRAM
[21:03:14] [PASSED] Init resource in a private placement
[21:03:14] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[21:03:14] ============= [PASSED] ttm_resource_init_basic =============
[21:03:14] [PASSED] ttm_resource_init_pinned
[21:03:14] [PASSED] ttm_resource_fini_basic
[21:03:14] [PASSED] ttm_resource_manager_init_basic
[21:03:14] [PASSED] ttm_resource_manager_usage_basic
[21:03:14] [PASSED] ttm_resource_manager_set_used_basic
[21:03:14] [PASSED] ttm_sys_man_alloc_basic
[21:03:14] [PASSED] ttm_sys_man_free_basic
[21:03:14] ================== [PASSED] ttm_resource ===================
[21:03:14] =================== ttm_tt (15 subtests) ===================
[21:03:14] ==================== ttm_tt_init_basic ====================
[21:03:14] [PASSED] Page-aligned size
[21:03:14] [PASSED] Extra pages requested
[21:03:14] ================ [PASSED] ttm_tt_init_basic ================
[21:03:14] [PASSED] ttm_tt_init_misaligned
[21:03:14] [PASSED] ttm_tt_fini_basic
[21:03:14] [PASSED] ttm_tt_fini_sg
[21:03:14] [PASSED] ttm_tt_fini_shmem
[21:03:14] [PASSED] ttm_tt_create_basic
[21:03:14] [PASSED] ttm_tt_create_invalid_bo_type
[21:03:14] [PASSED] ttm_tt_create_ttm_exists
[21:03:14] [PASSED] ttm_tt_create_failed
[21:03:14] [PASSED] ttm_tt_destroy_basic
[21:03:14] [PASSED] ttm_tt_populate_null_ttm
[21:03:14] [PASSED] ttm_tt_populate_populated_ttm
[21:03:14] [PASSED] ttm_tt_unpopulate_basic
[21:03:14] [PASSED] ttm_tt_unpopulate_empty_ttm
[21:03:14] [PASSED] ttm_tt_swapin_basic
[21:03:14] ===================== [PASSED] ttm_tt ======================
[21:03:14] =================== ttm_bo (14 subtests) ===================
[21:03:14] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[21:03:14] [PASSED] Cannot be interrupted and sleeps
[21:03:14] [PASSED] Cannot be interrupted, locks straight away
[21:03:14] [PASSED] Can be interrupted, sleeps
[21:03:14] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[21:03:14] [PASSED] ttm_bo_reserve_locked_no_sleep
[21:03:14] [PASSED] ttm_bo_reserve_no_wait_ticket
[21:03:14] [PASSED] ttm_bo_reserve_double_resv
[21:03:14] [PASSED] ttm_bo_reserve_interrupted
[21:03:14] [PASSED] ttm_bo_reserve_deadlock
[21:03:14] [PASSED] ttm_bo_unreserve_basic
[21:03:14] [PASSED] ttm_bo_unreserve_pinned
[21:03:14] [PASSED] ttm_bo_unreserve_bulk
[21:03:14] [PASSED] ttm_bo_fini_basic
[21:03:14] [PASSED] ttm_bo_fini_shared_resv
[21:03:14] [PASSED] ttm_bo_pin_basic
[21:03:14] [PASSED] ttm_bo_pin_unpin_resource
[21:03:14] [PASSED] ttm_bo_multiple_pin_one_unpin
[21:03:14] ===================== [PASSED] ttm_bo ======================
[21:03:14] ============== ttm_bo_validate (21 subtests) ===============
[21:03:14] ============== ttm_bo_init_reserved_sys_man ===============
[21:03:14] [PASSED] Buffer object for userspace
[21:03:14] [PASSED] Kernel buffer object
[21:03:14] [PASSED] Shared buffer object
[21:03:14] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[21:03:14] ============== ttm_bo_init_reserved_mock_man ==============
[21:03:14] [PASSED] Buffer object for userspace
[21:03:14] [PASSED] Kernel buffer object
[21:03:14] [PASSED] Shared buffer object
[21:03:14] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[21:03:14] [PASSED] ttm_bo_init_reserved_resv
[21:03:14] ================== ttm_bo_validate_basic ==================
[21:03:14] [PASSED] Buffer object for userspace
[21:03:14] [PASSED] Kernel buffer object
[21:03:14] [PASSED] Shared buffer object
[21:03:14] ============== [PASSED] ttm_bo_validate_basic ==============
[21:03:14] [PASSED] ttm_bo_validate_invalid_placement
[21:03:14] ============= ttm_bo_validate_same_placement ==============
[21:03:14] [PASSED] System manager
[21:03:14] [PASSED] VRAM manager
[21:03:14] ========= [PASSED] ttm_bo_validate_same_placement ==========
[21:03:14] [PASSED] ttm_bo_validate_failed_alloc
[21:03:14] [PASSED] ttm_bo_validate_pinned
[21:03:14] [PASSED] ttm_bo_validate_busy_placement
[21:03:14] ================ ttm_bo_validate_multihop =================
[21:03:14] [PASSED] Buffer object for userspace
[21:03:14] [PASSED] Kernel buffer object
[21:03:14] [PASSED] Shared buffer object
[21:03:14] ============ [PASSED] ttm_bo_validate_multihop =============
[21:03:14] ========== ttm_bo_validate_no_placement_signaled ==========
[21:03:14] [PASSED] Buffer object in system domain, no page vector
[21:03:14] [PASSED] Buffer object in system domain with an existing page vector
[21:03:14] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[21:03:14] ======== ttm_bo_validate_no_placement_not_signaled ========
[21:03:14] [PASSED] Buffer object for userspace
[21:03:14] [PASSED] Kernel buffer object
[21:03:14] [PASSED] Shared buffer object
[21:03:14] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[21:03:14] [PASSED] ttm_bo_validate_move_fence_signaled
[21:03:14] ========= ttm_bo_validate_move_fence_not_signaled =========
[21:03:14] [PASSED] Waits for GPU
[21:03:14] [PASSED] Tries to lock straight away
[21:03:14] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[21:03:14] [PASSED] ttm_bo_validate_happy_evict
[21:03:14] [PASSED] ttm_bo_validate_all_pinned_evict
[21:03:14] [PASSED] ttm_bo_validate_allowed_only_evict
[21:03:14] [PASSED] ttm_bo_validate_deleted_evict
[21:03:14] [PASSED] ttm_bo_validate_busy_domain_evict
[21:03:14] [PASSED] ttm_bo_validate_evict_gutting
[21:03:14] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[21:03:14] ================= [PASSED] ttm_bo_validate =================
[21:03:14] ============================================================
[21:03:14] Testing complete. Ran 101 tests: passed: 101
[21:03:14] Elapsed time: 11.612s total, 1.693s configuring, 9.704s building, 0.177s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 04/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs
2026-02-18 20:55 ` [PATCH v2 04/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
@ 2026-02-18 21:21 ` Rodrigo Vivi
0 siblings, 0 replies; 21+ messages in thread
From: Rodrigo Vivi @ 2026-02-18 21:21 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe, Piotr Piórkowski
On Wed, Feb 18, 2026 at 09:55:46PM +0100, Michal Wajdeczko wrote:
> On current discrete platforms, PF will provision all VFs with a fair
> amount of the VRAM (LMEM) during VFs enabling. However, in some cases
> this automatic VRAM provisioning might be either non-reproducible or
> sub-optimal. This could break VF's migration or impact performance.
>
> Expose per-VF VRAM quota read-write sysfs attributes to allow admin
> change default VRAM provisioning performed by the PF.
>
> /sys/bus/pci/drivers/xe/BDF/
> ├── sriov_admin/
> ├── .bulk_profile
> │ └── vram_quota [RW] unsigned integer
> ├── vf1/
> │ └── profile
> │ └── vram_quota [RW] unsigned integer
> ├── vf2/
> │ └── profile
> │ └── vram_quota [RW] unsigned integer
>
> Above values represent total provisioned VRAM from all tiles where
> VFs were assigned, and currently it's from all tiles always.
>
> Note that changing VRAM provisioning is only possible when VF is
> not running, otherwise GuC will complain. To make sure that given
> VF is idle, triggering VF FLR might be needed.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
> ---
> v2: allow VRAM change only if LMTT (Piotr)
Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_sriov_pf_sysfs.c | 31 ++++++++++++++++++++++++--
> 1 file changed, 29 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_sriov_pf_sysfs.c b/drivers/gpu/drm/xe/xe_sriov_pf_sysfs.c
> index 82a1055985ba..aa05c143a4d6 100644
> --- a/drivers/gpu/drm/xe/xe_sriov_pf_sysfs.c
> +++ b/drivers/gpu/drm/xe/xe_sriov_pf_sysfs.c
> @@ -9,6 +9,7 @@
> #include <drm/drm_managed.h>
>
> #include "xe_assert.h"
> +#include "xe_device.h"
> #include "xe_pci_sriov.h"
> #include "xe_pm.h"
> #include "xe_sriov.h"
> @@ -44,7 +45,8 @@ static int emit_choice(char *buf, int choice, const char * const *array, size_t
> * ├── .bulk_profile
> * │ ├── exec_quantum_ms
> * │ ├── preempt_timeout_us
> - * │ └── sched_priority
> + * │ ├── sched_priority
> + * │ └── vram_quota
> * ├── pf/
> * │ ├── ...
> * │ ├── device -> ../../../BDF
> @@ -59,7 +61,8 @@ static int emit_choice(char *buf, int choice, const char * const *array, size_t
> * │ └── profile
> * │ ├── exec_quantum_ms
> * │ ├── preempt_timeout_us
> - * │ └── sched_priority
> + * │ ├── sched_priority
> + * │ └── vram_quota
> * ├── vf2/
> * :
> * └── vfN/
> @@ -132,6 +135,7 @@ static XE_SRIOV_DEV_ATTR_WO(NAME)
>
> DEFINE_SIMPLE_BULK_PROVISIONING_SRIOV_DEV_ATTR_WO(exec_quantum_ms, eq, u32);
> DEFINE_SIMPLE_BULK_PROVISIONING_SRIOV_DEV_ATTR_WO(preempt_timeout_us, pt, u32);
> +DEFINE_SIMPLE_BULK_PROVISIONING_SRIOV_DEV_ATTR_WO(vram_quota, vram, u64);
>
> static const char * const sched_priority_names[] = {
> [GUC_SCHED_PRIORITY_LOW] = "low",
> @@ -181,12 +185,26 @@ static struct attribute *bulk_profile_dev_attrs[] = {
> &xe_sriov_dev_attr_exec_quantum_ms.attr,
> &xe_sriov_dev_attr_preempt_timeout_us.attr,
> &xe_sriov_dev_attr_sched_priority.attr,
> + &xe_sriov_dev_attr_vram_quota.attr,
> NULL
> };
>
> +static umode_t profile_dev_attr_is_visible(struct kobject *kobj,
> + struct attribute *attr, int index)
> +{
> + struct xe_sriov_kobj *vkobj = to_xe_sriov_kobj(kobj);
> +
> + if (attr == &xe_sriov_dev_attr_vram_quota.attr &&
> + !xe_device_has_lmtt(vkobj->xe))
> + return 0;
> +
> + return attr->mode;
> +}
> +
> static const struct attribute_group bulk_profile_dev_attr_group = {
> .name = ".bulk_profile",
> .attrs = bulk_profile_dev_attrs,
> + .is_visible = profile_dev_attr_is_visible,
> };
>
> static const struct attribute_group *xe_sriov_dev_attr_groups[] = {
> @@ -228,6 +246,7 @@ static XE_SRIOV_VF_ATTR(NAME)
>
> DEFINE_SIMPLE_PROVISIONING_SRIOV_VF_ATTR(exec_quantum_ms, eq, u32, "%u\n");
> DEFINE_SIMPLE_PROVISIONING_SRIOV_VF_ATTR(preempt_timeout_us, pt, u32, "%u\n");
> +DEFINE_SIMPLE_PROVISIONING_SRIOV_VF_ATTR(vram_quota, vram, u64, "%llu\n");
>
> static ssize_t xe_sriov_vf_attr_sched_priority_show(struct xe_device *xe, unsigned int vfid,
> char *buf)
> @@ -274,6 +293,7 @@ static struct attribute *profile_vf_attrs[] = {
> &xe_sriov_vf_attr_exec_quantum_ms.attr,
> &xe_sriov_vf_attr_preempt_timeout_us.attr,
> &xe_sriov_vf_attr_sched_priority.attr,
> + &xe_sriov_vf_attr_vram_quota.attr,
> NULL
> };
>
> @@ -286,6 +306,13 @@ static umode_t profile_vf_attr_is_visible(struct kobject *kobj,
> !sched_priority_change_allowed(vkobj->vfid))
> return attr->mode & 0444;
>
> + if (attr == &xe_sriov_vf_attr_vram_quota.attr) {
> + if (!IS_DGFX(vkobj->xe) || vkobj->vfid == PFID)
> + return 0;
> + if (!xe_device_has_lmtt(vkobj->xe))
> + return attr->mode & 0444;
> + }
> +
> return attr->mode;
> }
>
> --
> 2.47.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 10/10] drm/xe/pf: Add documentation for vram_quota
2026-02-18 20:55 ` [PATCH v2 10/10] drm/xe/pf: Add documentation for vram_quota Michal Wajdeczko
@ 2026-02-18 21:21 ` Rodrigo Vivi
0 siblings, 0 replies; 21+ messages in thread
From: Rodrigo Vivi @ 2026-02-18 21:21 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe, Piotr Piórkowski
On Wed, Feb 18, 2026 at 09:55:52PM +0100, Michal Wajdeczko wrote:
> Add initial documentation for recently added VRAM provisioning
> Xe driver specific SR-IOV sysfs files under device/sriov_admin.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
> ---
> v2: fix typo (Piotr)
Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> .../ABI/testing/sysfs-driver-intel-xe-sriov | 31 +++++++++++++++++++
> 1 file changed, 31 insertions(+)
>
> diff --git a/Documentation/ABI/testing/sysfs-driver-intel-xe-sriov b/Documentation/ABI/testing/sysfs-driver-intel-xe-sriov
> index 7f5ef9eada53..1d6eaff6882f 100644
> --- a/Documentation/ABI/testing/sysfs-driver-intel-xe-sriov
> +++ b/Documentation/ABI/testing/sysfs-driver-intel-xe-sriov
> @@ -129,6 +129,37 @@ Description:
> -EIO if FW refuses to change the provisioning.
>
>
> +What: /sys/bus/pci/drivers/xe/.../sriov_admin/.bulk_profile/vram_quota
> +What: /sys/bus/pci/drivers/xe/.../sriov_admin/vf<n>/profile/vram_quota
> +Date: February 2026
> +KernelVersion: 7.0
> +Contact: intel-xe@lists.freedesktop.org
> +Description:
> + These files allow to perform initial VFs VRAM provisioning prior to VFs
> + enabling or to change VFs VRAM provisioning once the VFs are enabled.
> + Any non-zero initial VRAM provisioning will block VFs auto-provisioning.
> + Without initial VRAM provisioning those files will show result of the
> + VRAM auto-provisioning performed by the PF once the VFs are enabled.
> + Once the VFs are disabled, all VRAM provisioning will be released.
> + These files are visible only on discrete Intel Xe platforms with VRAM
> + and are writeable only if dynamic VFs VRAM provisioning is supported.
> +
> + .bulk_profile/vram_quota: (WO) unsigned integer
> + The amount of the provisioned VRAM in [bytes] for each VF.
> + Actual quota value might be aligned per HW/FW requirements.
> +
> + profile/vram_quota: (RW) unsigned integer
> + The amount of the provisioned VRAM in [bytes] for this VF.
> + Actual quota value might be aligned per HW/FW requirements.
> +
> + Default is 0 (unprovisioned).
> +
> + Writes to these attributes may fail with errors like:
> + -EINVAL if provided input is malformed or not recognized,
> + -EPERM if change is not applicable on given HW/FW,
> + -EIO if FW refuses to change the provisioning.
> +
> +
> What: /sys/bus/pci/drivers/xe/.../sriov_admin/vf<n>/stop
> Date: October 2025
> KernelVersion: 6.19
> --
> 2.47.1
>
^ permalink raw reply [flat|nested] 21+ messages in thread
* ✗ Xe.CI.BAT: failure for drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2)
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
` (11 preceding siblings ...)
2026-02-18 21:03 ` ✓ CI.KUnit: success " Patchwork
@ 2026-02-18 21:47 ` Patchwork
2026-02-20 10:35 ` Michal Wajdeczko
2026-02-18 23:19 ` ✗ Xe.CI.FULL: " Patchwork
13 siblings, 1 reply; 21+ messages in thread
From: Patchwork @ 2026-02-18 21:47 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 5694 bytes --]
== Series Details ==
Series: drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2)
URL : https://patchwork.freedesktop.org/series/161625/
State : failure
== Summary ==
CI Bug Log - changes from xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5_BAT -> xe-pw-161625v2_BAT
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-161625v2_BAT absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-161625v2_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 (13 -> 14)
------------------------------
Additional (1): bat-bmg-2
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in xe-pw-161625v2_BAT:
### IGT changes ###
#### Possible regressions ####
* igt@xe_evict@evict-small-multi-vm:
- bat-bmg-2: NOTRUN -> [INCOMPLETE][1]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/bat-bmg-2/igt@xe_evict@evict-small-multi-vm.html
Known issues
------------
Here are the changes found in xe-pw-161625v2_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@fbdev@write:
- bat-bmg-2: NOTRUN -> [SKIP][2] ([Intel XE#2134]) +4 other tests skip
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/bat-bmg-2/igt@fbdev@write.html
* igt@kms_addfb_basic@addfb25-y-tiled-small-legacy:
- bat-bmg-2: NOTRUN -> [SKIP][3] ([Intel XE#2233])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/bat-bmg-2/igt@kms_addfb_basic@addfb25-y-tiled-small-legacy.html
* igt@kms_cursor_legacy@basic-flip-after-cursor-legacy:
- bat-bmg-2: NOTRUN -> [SKIP][4] ([Intel XE#2489] / [Intel XE#3419]) +13 other tests skip
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/bat-bmg-2/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html
* igt@kms_flip@basic-flip-vs-modeset:
- bat-bmg-2: NOTRUN -> [SKIP][5] ([Intel XE#2482]) +3 other tests skip
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/bat-bmg-2/igt@kms_flip@basic-flip-vs-modeset.html
* igt@kms_frontbuffer_tracking@basic:
- bat-bmg-2: NOTRUN -> [SKIP][6] ([Intel XE#2434] / [Intel XE#2548] / [Intel XE#6314])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/bat-bmg-2/igt@kms_frontbuffer_tracking@basic.html
* igt@kms_psr@psr-sprite-plane-onoff:
- bat-bmg-2: NOTRUN -> [SKIP][7] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +2 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/bat-bmg-2/igt@kms_psr@psr-sprite-plane-onoff.html
* igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit:
- bat-bmg-2: NOTRUN -> [SKIP][8] ([Intel XE#2229])
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/bat-bmg-2/igt@xe_live_ktest@xe_bo@xe_ccs_migrate_kunit.html
* igt@xe_pat@pat-index-xehpc:
- bat-bmg-2: NOTRUN -> [SKIP][9] ([Intel XE#1420])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/bat-bmg-2/igt@xe_pat@pat-index-xehpc.html
* igt@xe_pat@pat-index-xelp:
- bat-bmg-2: NOTRUN -> [SKIP][10] ([Intel XE#2245])
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/bat-bmg-2/igt@xe_pat@pat-index-xelp.html
* igt@xe_pat@pat-index-xelpg:
- bat-bmg-2: NOTRUN -> [SKIP][11] ([Intel XE#2236])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/bat-bmg-2/igt@xe_pat@pat-index-xelpg.html
#### Possible fixes ####
* igt@xe_waitfence@reltime:
- bat-dg2-oem2: [FAIL][12] ([Intel XE#6520]) -> [PASS][13]
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5/bat-dg2-oem2/igt@xe_waitfence@reltime.html
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/bat-dg2-oem2/igt@xe_waitfence@reltime.html
[Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#1420]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1420
[Intel XE#2134]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2134
[Intel XE#2229]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2229
[Intel XE#2233]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2233
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2236]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2236
[Intel XE#2245]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2245
[Intel XE#2434]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2434
[Intel XE#2482]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2482
[Intel XE#2489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2489
[Intel XE#2548]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2548
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#3419]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3419
[Intel XE#6314]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6314
[Intel XE#6520]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6520
Build changes
-------------
* Linux: xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5 -> xe-pw-161625v2
IGT_8760: 8760
xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5: 7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5
xe-pw-161625v2: 161625v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/index.html
[-- Attachment #2: Type: text/html, Size: 6502 bytes --]
^ permalink raw reply [flat|nested] 21+ messages in thread
* ✗ Xe.CI.FULL: failure for drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2)
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
` (12 preceding siblings ...)
2026-02-18 21:47 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2026-02-18 23:19 ` Patchwork
2026-02-20 10:37 ` Michal Wajdeczko
13 siblings, 1 reply; 21+ messages in thread
From: Patchwork @ 2026-02-18 23:19 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 18607 bytes --]
== Series Details ==
Series: drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2)
URL : https://patchwork.freedesktop.org/series/161625/
State : failure
== Summary ==
CI Bug Log - changes from xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5_FULL -> xe-pw-161625v2_FULL
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with xe-pw-161625v2_FULL absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in xe-pw-161625v2_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-161625v2_FULL:
### IGT changes ###
#### Possible regressions ####
* igt@kms_atomic_transition@plane-primary-toggle-with-vblank-wait:
- shard-bmg: NOTRUN -> [INCOMPLETE][1]
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@kms_atomic_transition@plane-primary-toggle-with-vblank-wait.html
Known issues
------------
Here are the changes found in xe-pw-161625v2_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_big_fb@4-tiled-32bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][2] ([Intel XE#2327])
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@kms_big_fb@4-tiled-32bpp-rotate-270.html
* igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip:
- shard-bmg: NOTRUN -> [SKIP][3] ([Intel XE#1124]) +2 other tests skip
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip.html
* igt@kms_big_fb@yf-tiled-addfb-size-overflow:
- shard-bmg: NOTRUN -> [SKIP][4] ([Intel XE#610])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html
* igt@kms_bw@linear-tiling-1-displays-2560x1440p:
- shard-bmg: [PASS][5] -> [SKIP][6] ([Intel XE#367])
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5/shard-bmg-5/igt@kms_bw@linear-tiling-1-displays-2560x1440p.html
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@kms_bw@linear-tiling-1-displays-2560x1440p.html
* igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc:
- shard-bmg: NOTRUN -> [SKIP][7] ([Intel XE#2887]) +2 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@kms_ccs@bad-rotation-90-y-tiled-gen12-rc-ccs-cc.html
* igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#2652] / [Intel XE#787]) +11 other tests skip
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@kms_ccs@random-ccs-data-4-tiled-lnl-ccs@pipe-c-dp-2.html
* igt@kms_chamelium_edid@hdmi-edid-change-during-hibernate:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#2252])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@kms_chamelium_edid@hdmi-edid-change-during-hibernate.html
* igt@kms_color_pipeline@plane-lut3d-green-only@pipe-c-dp-1:
- shard-bmg: NOTRUN -> [SKIP][10] ([Intel XE#6969]) +1 other test skip
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-5/igt@kms_color_pipeline@plane-lut3d-green-only@pipe-c-dp-1.html
* igt@kms_color_pipeline@plane-lut3d-green-only@pipe-d-dp-1:
- shard-bmg: NOTRUN -> [SKIP][11] ([Intel XE#6969] / [Intel XE#7006])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-5/igt@kms_color_pipeline@plane-lut3d-green-only@pipe-d-dp-1.html
* igt@kms_content_protection@legacy@pipe-a-dp-1:
- shard-bmg: NOTRUN -> [FAIL][12] ([Intel XE#3304])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-5/igt@kms_content_protection@legacy@pipe-a-dp-1.html
* igt@kms_content_protection@srm@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][13] ([Intel XE#1178] / [Intel XE#3304]) +1 other test fail
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@kms_content_protection@srm@pipe-a-dp-2.html
* igt@kms_content_protection@uevent:
- shard-bmg: NOTRUN -> [FAIL][14] ([Intel XE#6707]) +1 other test fail
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@kms_content_protection@uevent.html
* igt@kms_cursor_crc@cursor-onscreen-256x85:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#2320]) +1 other test skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@kms_cursor_crc@cursor-onscreen-256x85.html
* igt@kms_cursor_legacy@flip-vs-cursor-legacy:
- shard-bmg: [PASS][16] -> [FAIL][17] ([Intel XE#5299])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5/shard-bmg-8/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-1/igt@kms_cursor_legacy@flip-vs-cursor-legacy.html
* igt@kms_dirtyfb@fbc-dirtyfb-ioctl:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#4210])
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@kms_dirtyfb@fbc-dirtyfb-ioctl.html
* igt@kms_frontbuffer_tracking@drrs-argb161616f-draw-render:
- shard-bmg: NOTRUN -> [SKIP][19] ([Intel XE#7061])
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@kms_frontbuffer_tracking@drrs-argb161616f-draw-render.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][20] ([Intel XE#4141]) +2 other tests skip
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-cur-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-onoff:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#2311]) +6 other tests skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt:
- shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#2313]) +7 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@kms_frontbuffer_tracking@psr-2p-scndscrn-shrfb-pgflip-blt.html
* igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner:
- shard-bmg: NOTRUN -> [SKIP][23] ([Intel XE#4090])
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@kms_joiner@switch-modeset-ultra-joiner-big-joiner.html
* igt@kms_psr2_su@page_flip-nv12:
- shard-bmg: NOTRUN -> [SKIP][24] ([Intel XE#1406] / [Intel XE#2387])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@kms_psr2_su@page_flip-nv12.html
* igt@kms_psr@psr2-primary-page-flip:
- shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#1406] / [Intel XE#2234] / [Intel XE#2850]) +2 other tests skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@kms_psr@psr2-primary-page-flip.html
* igt@kms_sharpness_filter@filter-toggle:
- shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#6503])
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@kms_sharpness_filter@filter-toggle.html
* igt@xe_drm_fdinfo@utilization-single-full-load-isolation:
- shard-bmg: [PASS][27] -> [SKIP][28] ([Intel XE#6703]) +8 other tests skip
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5/shard-bmg-10/igt@xe_drm_fdinfo@utilization-single-full-load-isolation.html
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-2/igt@xe_drm_fdinfo@utilization-single-full-load-isolation.html
* igt@xe_eudebug@basic-vm-bind-discovery:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#4837]) +1 other test skip
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@xe_eudebug@basic-vm-bind-discovery.html
* igt@xe_eudebug_online@pagefault-one-of-many:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#6665])
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@xe_eudebug_online@pagefault-one-of-many.html
* igt@xe_eudebug_online@pagefault-read-stress:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#6665] / [Intel XE#6681])
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@xe_eudebug_online@pagefault-read-stress.html
* igt@xe_eudebug_sriov@deny-sriov:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#5793])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@xe_eudebug_sriov@deny-sriov.html
* igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate-race:
- shard-bmg: NOTRUN -> [SKIP][33] ([Intel XE#2322]) +2 other tests skip
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@xe_exec_basic@multigpu-many-execqueues-many-vm-userptr-invalidate-race.html
* igt@xe_exec_fault_mode@twice-multi-queue-userptr:
- shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#7136]) +3 other tests skip
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@xe_exec_fault_mode@twice-multi-queue-userptr.html
* igt@xe_exec_multi_queue@few-execs-preempt-mode-dyn-priority-smem:
- shard-bmg: NOTRUN -> [SKIP][35] ([Intel XE#6874]) +6 other tests skip
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@xe_exec_multi_queue@few-execs-preempt-mode-dyn-priority-smem.html
* igt@xe_exec_system_allocator@process-many-execqueues-mmap-remap-ro:
- shard-bmg: [PASS][36] -> [DMESG-FAIL][37] ([Intel XE#5213] / [Intel XE#5545] / [Intel XE#6652])
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5/shard-bmg-10/igt@xe_exec_system_allocator@process-many-execqueues-mmap-remap-ro.html
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-2/igt@xe_exec_system_allocator@process-many-execqueues-mmap-remap-ro.html
* igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate-race:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#7138]) +2 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate-race.html
* igt@xe_multigpu_svm@mgpu-atomic-op-prefetch:
- shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#6964])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@xe_multigpu_svm@mgpu-atomic-op-prefetch.html
* igt@xe_pm@d3hot-multiple-execs:
- shard-bmg: [PASS][40] -> [TIMEOUT][41] ([Intel XE#7180])
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5/shard-bmg-10/igt@xe_pm@d3hot-multiple-execs.html
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-2/igt@xe_pm@d3hot-multiple-execs.html
* igt@xe_pm_residency@aspm_link_residency:
- shard-bmg: [PASS][42] -> [SKIP][43] ([Intel XE#7258])
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5/shard-bmg-8/igt@xe_pm_residency@aspm_link_residency.html
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-5/igt@xe_pm_residency@aspm_link_residency.html
* igt@xe_pxp@pxp-optout:
- shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#4733])
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@xe_pxp@pxp-optout.html
#### Possible fixes ####
* igt@kms_async_flips@async-flip-with-page-flip-events-linear:
- shard-lnl: [FAIL][45] ([Intel XE#5993]) -> [PASS][46] +3 other tests pass
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5/shard-lnl-6/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-lnl-2/igt@kms_async_flips@async-flip-with-page-flip-events-linear.html
* igt@kms_bw@linear-tiling-1-displays-2160x1440p:
- shard-bmg: [SKIP][47] ([Intel XE#367]) -> [PASS][48]
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5/shard-bmg-8/igt@kms_bw@linear-tiling-1-displays-2160x1440p.html
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-5/igt@kms_bw@linear-tiling-1-displays-2160x1440p.html
* igt@kms_pipe_crc_basic@read-crc@pipe-a-dp-2:
- shard-bmg: [INCOMPLETE][49] -> [PASS][50] +1 other test pass
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5/shard-bmg-6/igt@kms_pipe_crc_basic@read-crc@pipe-a-dp-2.html
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@kms_pipe_crc_basic@read-crc@pipe-a-dp-2.html
* igt@kms_setmode@basic@pipe-a-edp-1:
- shard-lnl: [FAIL][51] ([Intel XE#6361]) -> [PASS][52] +1 other test pass
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5/shard-lnl-6/igt@kms_setmode@basic@pipe-a-edp-1.html
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-lnl-2/igt@kms_setmode@basic@pipe-a-edp-1.html
* igt@xe_fault_injection@inject-fault-probe-function-xe_wopcm_init:
- shard-bmg: [ABORT][53] -> [PASS][54]
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5/shard-bmg-5/igt@xe_fault_injection@inject-fault-probe-function-xe_wopcm_init.html
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-6/igt@xe_fault_injection@inject-fault-probe-function-xe_wopcm_init.html
#### Warnings ####
* igt@xe_exec_multi_queue@many-execs-dyn-priority:
- shard-bmg: [SKIP][55] ([Intel XE#6874]) -> [SKIP][56] ([Intel XE#6703])
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5/shard-bmg-10/igt@xe_exec_multi_queue@many-execs-dyn-priority.html
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-2/igt@xe_exec_multi_queue@many-execs-dyn-priority.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#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2387]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2387
[Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
[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#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#4090]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4090
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4210]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4210
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#4837]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4837
[Intel XE#5213]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5213
[Intel XE#5299]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5299
[Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
[Intel XE#5793]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5793
[Intel XE#5993]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5993
[Intel XE#610]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/610
[Intel XE#6361]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6361
[Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
[Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652
[Intel XE#6665]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6665
[Intel XE#6681]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6681
[Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703
[Intel XE#6707]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6707
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#6969]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6969
[Intel XE#7006]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7006
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
[Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
[Intel XE#7180]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7180
[Intel XE#7258]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7258
[Intel XE#787]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/787
Build changes
-------------
* Linux: xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5 -> xe-pw-161625v2
IGT_8760: 8760
xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5: 7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5
xe-pw-161625v2: 161625v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/index.html
[-- Attachment #2: Type: text/html, Size: 20627 bytes --]
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 01/10] drm/xe/pf: Expose LMTT page size
2026-02-18 20:55 ` [PATCH v2 01/10] drm/xe/pf: Expose LMTT page size Michal Wajdeczko
@ 2026-02-20 8:22 ` Piotr Piórkowski
0 siblings, 0 replies; 21+ messages in thread
From: Piotr Piórkowski @ 2026-02-20 8:22 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
Michal Wajdeczko <michal.wajdeczko@intel.com> wrote on śro [2026-lut-18 21:55:43 +0100]:
> The underlying LMTT implementation already provides the info about
> the page size it is using. There is no need to have a separate
> helper function that is making assumption about the required size.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Piotr Piórkowski <piotr.piorkowski@intel.com>
> ---
> drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 3 +--
> drivers/gpu/drm/xe/xe_lmtt.c | 17 +++++++++++++++++
> drivers/gpu/drm/xe/xe_lmtt.h | 1 +
> 3 files changed, 19 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> index 888193e1d2c5..e06baf12e108 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> @@ -1451,8 +1451,7 @@ int xe_gt_sriov_pf_config_set_fair_dbs(struct xe_gt *gt, unsigned int vfid,
>
> static u64 pf_get_lmem_alignment(struct xe_gt *gt)
> {
> - /* this might be platform dependent */
> - return SZ_2M;
> + return xe_lmtt_page_size(>->tile->sriov.pf.lmtt);
> }
>
> static u64 pf_get_min_spare_lmem(struct xe_gt *gt)
> diff --git a/drivers/gpu/drm/xe/xe_lmtt.c b/drivers/gpu/drm/xe/xe_lmtt.c
> index 2077e1ef8b43..b583e0f20183 100644
> --- a/drivers/gpu/drm/xe/xe_lmtt.c
> +++ b/drivers/gpu/drm/xe/xe_lmtt.c
> @@ -57,6 +57,23 @@ static u64 lmtt_page_size(struct xe_lmtt *lmtt)
> return BIT_ULL(lmtt->ops->lmtt_pte_shift(0));
> }
>
> +/**
> + * xe_lmtt_page_size() - Get LMTT page size.
> + * @lmtt: the &xe_lmtt
> + *
> + * This function shall be called only by PF.
> + *
> + * Return: LMTT page size.
> + */
> +u64 xe_lmtt_page_size(struct xe_lmtt *lmtt)
> +{
> + lmtt_assert(lmtt, IS_SRIOV_PF(lmtt_to_xe(lmtt)));
> + lmtt_assert(lmtt, xe_device_has_lmtt(lmtt_to_xe(lmtt)));
> + lmtt_assert(lmtt, lmtt->ops);
> +
> + return lmtt_page_size(lmtt);
> +}
> +
> static struct xe_lmtt_pt *lmtt_pt_alloc(struct xe_lmtt *lmtt, unsigned int level)
> {
> unsigned int num_entries = level ? lmtt->ops->lmtt_pte_num(level) : 0;
> diff --git a/drivers/gpu/drm/xe/xe_lmtt.h b/drivers/gpu/drm/xe/xe_lmtt.h
> index 75a234fbf367..8fa387b38c52 100644
> --- a/drivers/gpu/drm/xe/xe_lmtt.h
> +++ b/drivers/gpu/drm/xe/xe_lmtt.h
> @@ -20,6 +20,7 @@ int xe_lmtt_prepare_pages(struct xe_lmtt *lmtt, unsigned int vfid, u64 range);
> int xe_lmtt_populate_pages(struct xe_lmtt *lmtt, unsigned int vfid, struct xe_bo *bo, u64 offset);
> void xe_lmtt_drop_pages(struct xe_lmtt *lmtt, unsigned int vfid);
> u64 xe_lmtt_estimate_pt_size(struct xe_lmtt *lmtt, u64 size);
> +u64 xe_lmtt_page_size(struct xe_lmtt *lmtt);
> #else
> static inline int xe_lmtt_init(struct xe_lmtt *lmtt) { return 0; }
> static inline void xe_lmtt_init_hw(struct xe_lmtt *lmtt) { }
> --
LGTM:
Reviewed-by: Piotr Piórkowski <piotr.piorkowski@intel.com>
> 2.47.1
>
--
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: ✗ Xe.CI.BAT: failure for drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2)
2026-02-18 21:47 ` ✗ Xe.CI.BAT: failure " Patchwork
@ 2026-02-20 10:35 ` Michal Wajdeczko
0 siblings, 0 replies; 21+ messages in thread
From: Michal Wajdeczko @ 2026-02-20 10:35 UTC (permalink / raw)
To: intel-xe
On 2/18/2026 10:47 PM, Patchwork wrote:
> *Patch Details*
> *Series:* drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2)
> *URL:* https://patchwork.freedesktop.org/series/161625/ <https://patchwork.freedesktop.org/series/161625/>
> *State:* failure
> *Details:* https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/index.html <https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/index.html>
>
>
> CI Bug Log - changes from xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5_BAT -> xe-pw-161625v2_BAT
>
>
> Summary
>
> *FAILURE*
>
> Serious unknown changes coming with xe-pw-161625v2_BAT absolutely need to be
> verified manually.
>
> If you think the reported changes have nothing to do with the changes
> introduced in xe-pw-161625v2_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 (13 -> 14)
>
> Additional (1): bat-bmg-2
>
>
> Possible new issues
>
> Here are the unknown changes that may have been introduced in xe-pw-161625v2_BAT:
>
>
> IGT changes
>
>
> Possible regressions
>
> * igt@xe_evict@evict-small-multi-vm:
> o bat-bmg-2: NOTRUN -> INCOMPLETE <https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/bat-bmg-2/igt@xe_evict@evict-small-multi-vm.html>
must be unrelated, looks more like a glitch in the CI
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: ✗ Xe.CI.FULL: failure for drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2)
2026-02-18 23:19 ` ✗ Xe.CI.FULL: " Patchwork
@ 2026-02-20 10:37 ` Michal Wajdeczko
0 siblings, 0 replies; 21+ messages in thread
From: Michal Wajdeczko @ 2026-02-20 10:37 UTC (permalink / raw)
To: intel-xe
On 2/19/2026 12:19 AM, Patchwork wrote:
> *Patch Details*
> *Series:* drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2)
> *URL:* https://patchwork.freedesktop.org/series/161625/ <https://patchwork.freedesktop.org/series/161625/>
> *State:* failure
> *Details:* https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/index.html <https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/index.html>
>
>
> CI Bug Log - changes from xe-4573-7ee0795cb4f30c9ccc2b8a580faebcefbdf150c5_FULL -> xe-pw-161625v2_FULL
>
>
> Summary
>
> *FAILURE*
>
> Serious unknown changes coming with xe-pw-161625v2_FULL absolutely need to be
> verified manually.
>
> If you think the reported changes have nothing to do with the changes
> introduced in xe-pw-161625v2_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-161625v2_FULL:
>
>
> IGT changes
>
>
> Possible regressions
>
> * igt@kms_atomic_transition@plane-primary-toggle-with-vblank-wait:
> o shard-bmg: NOTRUN -> INCOMPLETE <https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-161625v2/shard-bmg-10/igt@kms_atomic_transition@plane-primary-toggle-with-vblank-wait.html>
must be unrelated, again, looks like a CI glitch
^ permalink raw reply [flat|nested] 21+ messages in thread
* Re: [PATCH v2 06/10] drm/xe/tests: Add KUnit tests for new VRAM fair provisioning
2026-02-18 20:55 ` [PATCH v2 06/10] drm/xe/tests: Add KUnit tests for new VRAM fair provisioning Michal Wajdeczko
@ 2026-02-27 1:16 ` Nathan Chancellor
0 siblings, 0 replies; 21+ messages in thread
From: Nathan Chancellor @ 2026-02-27 1:16 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe, Piotr Piórkowski
Hi Michal,
On Wed, Feb 18, 2026 at 09:55:48PM +0100, Michal Wajdeczko wrote:
...
> diff --git a/drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_config_kunit.c b/drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_config_kunit.c
> index 3889dc3e49ca..305dbd4e5d1a 100644
> --- a/drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_config_kunit.c
> +++ b/drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_config_kunit.c
> @@ -11,6 +11,7 @@
> #include "xe_pci_test.h"
>
> #define TEST_MAX_VFS 63
> +#define TEST_VRAM 0x37a800000ull
...
> @@ -50,6 +64,19 @@ static int pf_gt_config_test_init(struct kunit *test)
> KUNIT_ASSERT_NOT_ERR_OR_NULL(test, gt);
> test->priv = gt;
>
> + /* pretend it has some VRAM */
> + KUNIT_ASSERT_TRUE(test, IS_DGFX(xe));
> + vram = kunit_kzalloc(test, sizeof(*vram), GFP_KERNEL);
> + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, vram);
> + vram->usable_size = TEST_VRAM;
FWIW, this causes warnings for a 32-bit resource_size_t:
$ make -skj"$(nproc)" ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- mrproper allyesconfig drivers/gpu/drm/xe/xe_gt_sriov_pf_config.o
In file included from drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c:3329:
drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_config_kunit.c: In function 'pf_gt_config_test_init':
drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_config_kunit.c:14:25: error: conversion from 'long long unsigned int' to 'resource_size_t' {aka 'unsigned int'} changes value from '14940110848' to '2055208960' [-Werror=overflow]
14 | #define TEST_VRAM 0x37a800000ull
| ^~~~~~~~~~~~~~
drivers/gpu/drm/xe/tests/xe_gt_sriov_pf_config_kunit.c:71:29: note: in expansion of macro 'TEST_VRAM'
71 | vram->usable_size = TEST_VRAM;
| ^~~~~~~~~
cc1: all warnings being treated as errors
Cheers,
Nathan
^ permalink raw reply [flat|nested] 21+ messages in thread
end of thread, other threads:[~2026-02-27 1:16 UTC | newest]
Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-18 20:55 [PATCH v2 00/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 01/10] drm/xe/pf: Expose LMTT page size Michal Wajdeczko
2026-02-20 8:22 ` Piotr Piórkowski
2026-02-18 20:55 ` [PATCH v2 02/10] drm/xe/pf: Add locked variants of VRAM configuration functions Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 03/10] drm/xe/pf: Add functions for VRAM provisioning Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 04/10] drm/xe/pf: Allow to change VFs VRAM quota using sysfs Michal Wajdeczko
2026-02-18 21:21 ` Rodrigo Vivi
2026-02-18 20:55 ` [PATCH v2 05/10] drm/xe/pf: Use migration-friendly VRAM auto-provisioning Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 06/10] drm/xe/tests: Add KUnit tests for new VRAM fair provisioning Michal Wajdeczko
2026-02-27 1:16 ` Nathan Chancellor
2026-02-18 20:55 ` [PATCH v2 07/10] drm/xe/pf: Don't check for empty config Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 08/10] drm/xe/pf: Prefer guard(mutex) when doing fair LMEM provisioning Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 09/10] drm/xe/pf: Skip VRAM auto-provisioning if already provisioned Michal Wajdeczko
2026-02-18 20:55 ` [PATCH v2 10/10] drm/xe/pf: Add documentation for vram_quota Michal Wajdeczko
2026-02-18 21:21 ` Rodrigo Vivi
2026-02-18 21:01 ` ✗ CI.checkpatch: warning for drm/xe/pf: Allow to change VFs VRAM quota using sysfs (rev2) Patchwork
2026-02-18 21:03 ` ✓ CI.KUnit: success " Patchwork
2026-02-18 21:47 ` ✗ Xe.CI.BAT: failure " Patchwork
2026-02-20 10:35 ` Michal Wajdeczko
2026-02-18 23:19 ` ✗ Xe.CI.FULL: " Patchwork
2026-02-20 10:37 ` Michal Wajdeczko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox