* [PATCH 1/6] drm/xe: Drop unused param from xe_device_create()
2026-05-25 16:05 [PATCH 0/6] drm/xe: Misc initialization improvements Michal Wajdeczko
@ 2026-05-25 16:05 ` Michal Wajdeczko
2026-05-25 18:13 ` Raag Jadav
2026-05-25 18:45 ` Gustavo Sousa
2026-05-25 16:05 ` [PATCH 2/6] drm/xe: Move xe->info.force_execlist initialization Michal Wajdeczko
` (9 subsequent siblings)
10 siblings, 2 replies; 30+ messages in thread
From: Michal Wajdeczko @ 2026-05-25 16:05 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko
We never used or need anything from the struct pci_device_id there.
And while around, add simple kernel-doc for this function.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 11 +++++++++--
drivers/gpu/drm/xe/xe_device.h | 3 +--
drivers/gpu/drm/xe/xe_pci.c | 2 +-
3 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 576095cf0952..3f063e5530bb 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -475,8 +475,15 @@ static void xe_device_destroy(struct drm_device *dev, void *dummy)
ttm_device_fini(&xe->ttm);
}
-struct xe_device *xe_device_create(struct pci_dev *pdev,
- const struct pci_device_id *ent)
+/**
+ * xe_device_create() - Create a new &xe_device instance
+ * @pdev: the parent &pci_dev
+ *
+ * Allocate and initialize a device managed Xe device structure.
+ *
+ * Return: pointer to new &xe_device on success, or ERR_PTR on failure.
+ */
+struct xe_device *xe_device_create(struct pci_dev *pdev)
{
const struct drm_driver *driver = ®ular_driver;
struct xe_device *xe;
diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h
index 355d69dc8f54..27cd2329b99f 100644
--- a/drivers/gpu/drm/xe/xe_device.h
+++ b/drivers/gpu/drm/xe/xe_device.h
@@ -43,8 +43,7 @@ static inline struct xe_device *ttm_to_xe_device(struct ttm_device *ttm)
return container_of(ttm, struct xe_device, ttm);
}
-struct xe_device *xe_device_create(struct pci_dev *pdev,
- const struct pci_device_id *ent);
+struct xe_device *xe_device_create(struct pci_dev *pdev);
int xe_device_probe_early(struct xe_device *xe);
int xe_device_probe(struct xe_device *xe);
void xe_device_remove(struct xe_device *xe);
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index e2a1232c4fbf..c2bf9f0c325b 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -1092,7 +1092,7 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (err)
return err;
- xe = xe_device_create(pdev, ent);
+ xe = xe_device_create(pdev);
if (IS_ERR(xe))
return PTR_ERR(xe);
--
2.47.1
^ permalink raw reply related [flat|nested] 30+ messages in thread* Re: [PATCH 1/6] drm/xe: Drop unused param from xe_device_create()
2026-05-25 16:05 ` [PATCH 1/6] drm/xe: Drop unused param from xe_device_create() Michal Wajdeczko
@ 2026-05-25 18:13 ` Raag Jadav
2026-05-25 18:45 ` Gustavo Sousa
1 sibling, 0 replies; 30+ messages in thread
From: Raag Jadav @ 2026-05-25 18:13 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
On Mon, May 25, 2026 at 06:05:24PM +0200, Michal Wajdeczko wrote:
> We never used or need anything from the struct pci_device_id there.
> And while around, add simple kernel-doc for this function.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Raag Jadav <raag.jadav@intel.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 1/6] drm/xe: Drop unused param from xe_device_create()
2026-05-25 16:05 ` [PATCH 1/6] drm/xe: Drop unused param from xe_device_create() Michal Wajdeczko
2026-05-25 18:13 ` Raag Jadav
@ 2026-05-25 18:45 ` Gustavo Sousa
1 sibling, 0 replies; 30+ messages in thread
From: Gustavo Sousa @ 2026-05-25 18:45 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Michal Wajdeczko
Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
> We never used or need anything from the struct pci_device_id there.
> And while around, add simple kernel-doc for this function.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 11 +++++++++--
> drivers/gpu/drm/xe/xe_device.h | 3 +--
> drivers/gpu/drm/xe/xe_pci.c | 2 +-
> 3 files changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 576095cf0952..3f063e5530bb 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -475,8 +475,15 @@ static void xe_device_destroy(struct drm_device *dev, void *dummy)
> ttm_device_fini(&xe->ttm);
> }
>
> -struct xe_device *xe_device_create(struct pci_dev *pdev,
> - const struct pci_device_id *ent)
> +/**
> + * xe_device_create() - Create a new &xe_device instance
> + * @pdev: the parent &pci_dev
> + *
> + * Allocate and initialize a device managed Xe device structure.
> + *
> + * Return: pointer to new &xe_device on success, or ERR_PTR on failure.
> + */
> +struct xe_device *xe_device_create(struct pci_dev *pdev)
> {
> const struct drm_driver *driver = ®ular_driver;
> struct xe_device *xe;
> diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h
> index 355d69dc8f54..27cd2329b99f 100644
> --- a/drivers/gpu/drm/xe/xe_device.h
> +++ b/drivers/gpu/drm/xe/xe_device.h
> @@ -43,8 +43,7 @@ static inline struct xe_device *ttm_to_xe_device(struct ttm_device *ttm)
> return container_of(ttm, struct xe_device, ttm);
> }
>
> -struct xe_device *xe_device_create(struct pci_dev *pdev,
> - const struct pci_device_id *ent);
> +struct xe_device *xe_device_create(struct pci_dev *pdev);
> int xe_device_probe_early(struct xe_device *xe);
> int xe_device_probe(struct xe_device *xe);
> void xe_device_remove(struct xe_device *xe);
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index e2a1232c4fbf..c2bf9f0c325b 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -1092,7 +1092,7 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> if (err)
> return err;
>
> - xe = xe_device_create(pdev, ent);
> + xe = xe_device_create(pdev);
> if (IS_ERR(xe))
> return PTR_ERR(xe);
>
> --
> 2.47.1
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 2/6] drm/xe: Move xe->info.force_execlist initialization
2026-05-25 16:05 [PATCH 0/6] drm/xe: Misc initialization improvements Michal Wajdeczko
2026-05-25 16:05 ` [PATCH 1/6] drm/xe: Drop unused param from xe_device_create() Michal Wajdeczko
@ 2026-05-25 16:05 ` Michal Wajdeczko
2026-05-25 18:46 ` Gustavo Sousa
2026-05-25 16:05 ` [PATCH 3/6] drm/xe: Move xe->info.devid|revid initialization Michal Wajdeczko
` (8 subsequent siblings)
10 siblings, 1 reply; 30+ messages in thread
From: Michal Wajdeczko @ 2026-05-25 16:05 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko
The xe_info_init_early() is a place where we initialize those of
the xe->info fields that do not require any additional hardware
probes. Move the initialization of the force_execlist flag there.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 1 -
drivers/gpu/drm/xe/xe_pci.c | 1 +
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 3f063e5530bb..cdc7e0935c13 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -523,7 +523,6 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
xe->info.devid = pdev->device;
xe->info.revid = pdev->revision;
- xe->info.force_execlist = xe_modparam.force_execlist;
xe->atomic_svm_timeslice_ms = 5;
xe->min_run_period_lr_ms = 5;
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index c2bf9f0c325b..b1f5f0098f26 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -778,6 +778,7 @@ static int xe_info_init_early(struct xe_device *xe,
xe->info.probe_display = IS_ENABLED(CONFIG_DRM_XE_DISPLAY) &&
xe_modparam.probe_display &&
desc->has_display;
+ xe->info.force_execlist = xe_modparam.force_execlist;
xe_assert(xe, desc->max_gt_per_tile > 0);
xe_assert(xe, desc->max_gt_per_tile <= XE_MAX_GT_PER_TILE);
--
2.47.1
^ permalink raw reply related [flat|nested] 30+ messages in thread* Re: [PATCH 2/6] drm/xe: Move xe->info.force_execlist initialization
2026-05-25 16:05 ` [PATCH 2/6] drm/xe: Move xe->info.force_execlist initialization Michal Wajdeczko
@ 2026-05-25 18:46 ` Gustavo Sousa
0 siblings, 0 replies; 30+ messages in thread
From: Gustavo Sousa @ 2026-05-25 18:46 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Michal Wajdeczko
Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
> The xe_info_init_early() is a place where we initialize those of
> the xe->info fields that do not require any additional hardware
> probes. Move the initialization of the force_execlist flag there.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 1 -
> drivers/gpu/drm/xe/xe_pci.c | 1 +
> 2 files changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 3f063e5530bb..cdc7e0935c13 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -523,7 +523,6 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>
> xe->info.devid = pdev->device;
> xe->info.revid = pdev->revision;
> - xe->info.force_execlist = xe_modparam.force_execlist;
> xe->atomic_svm_timeslice_ms = 5;
> xe->min_run_period_lr_ms = 5;
>
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index c2bf9f0c325b..b1f5f0098f26 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -778,6 +778,7 @@ static int xe_info_init_early(struct xe_device *xe,
> xe->info.probe_display = IS_ENABLED(CONFIG_DRM_XE_DISPLAY) &&
> xe_modparam.probe_display &&
> desc->has_display;
> + xe->info.force_execlist = xe_modparam.force_execlist;
>
> xe_assert(xe, desc->max_gt_per_tile > 0);
> xe_assert(xe, desc->max_gt_per_tile <= XE_MAX_GT_PER_TILE);
> --
> 2.47.1
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 3/6] drm/xe: Move xe->info.devid|revid initialization
2026-05-25 16:05 [PATCH 0/6] drm/xe: Misc initialization improvements Michal Wajdeczko
2026-05-25 16:05 ` [PATCH 1/6] drm/xe: Drop unused param from xe_device_create() Michal Wajdeczko
2026-05-25 16:05 ` [PATCH 2/6] drm/xe: Move xe->info.force_execlist initialization Michal Wajdeczko
@ 2026-05-25 16:05 ` Michal Wajdeczko
2026-05-25 17:47 ` Gustavo Sousa
2026-05-25 19:41 ` [PATCH v2 " Michal Wajdeczko
2026-05-25 16:05 ` [PATCH 4/6] drm/xe: Separate early xe_device initialization Michal Wajdeczko
` (7 subsequent siblings)
10 siblings, 2 replies; 30+ messages in thread
From: Michal Wajdeczko @ 2026-05-25 16:05 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko
The xe_info_init_early() is a place where we initialize those of
the xe->info fields that do not require any additional hardware
probes. Move the initialization of the devid/revid also there, but
to avoid breaking the kunit helper, which also calls this function,
keep their initialization separate in sub-function so we can easily
stub it when running the kunit test.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
drivers/gpu/drm/xe/tests/xe_pci.c | 12 ++++++++++++
drivers/gpu/drm/xe/tests/xe_pci_test.h | 2 ++
drivers/gpu/drm/xe/xe_device.c | 2 --
drivers/gpu/drm/xe/xe_pci.c | 12 ++++++++++++
4 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/tests/xe_pci.c b/drivers/gpu/drm/xe/tests/xe_pci.c
index 860409c579f8..7c3428ab4c89 100644
--- a/drivers/gpu/drm/xe/tests/xe_pci.c
+++ b/drivers/gpu/drm/xe/tests/xe_pci.c
@@ -311,6 +311,17 @@ const void *xe_pci_id_gen_param(struct kunit *test, const void *prev, char *desc
}
EXPORT_SYMBOL_IF_KUNIT(xe_pci_id_gen_param);
+static void fake_init_devid(struct xe_device *xe)
+{
+ struct kunit *test = kunit_get_current_test();
+ struct xe_pci_fake_data *data = test->priv;
+
+ if (data) {
+ xe->info.devid = data->devid;
+ xe->info.revid = data->revid;
+ }
+}
+
static int fake_read_gmdid(struct xe_device *xe, enum xe_gmdid_type type,
u32 *ver, u32 *revid)
{
@@ -369,6 +380,7 @@ int xe_pci_fake_device_init(struct xe_device *xe)
xe->sriov.__mode = data && data->sriov_mode ?
data->sriov_mode : XE_SRIOV_MODE_NONE;
+ kunit_activate_static_stub(test, init_devid, fake_init_devid);
kunit_activate_static_stub(test, read_gmdid, fake_read_gmdid);
kunit_activate_static_stub(test, xe_info_probe_tile_count,
fake_xe_info_probe_tile_count);
diff --git a/drivers/gpu/drm/xe/tests/xe_pci_test.h b/drivers/gpu/drm/xe/tests/xe_pci_test.h
index 30505d1cbefc..46f961f75ecd 100644
--- a/drivers/gpu/drm/xe/tests/xe_pci_test.h
+++ b/drivers/gpu/drm/xe/tests/xe_pci_test.h
@@ -22,6 +22,8 @@ struct xe_pci_fake_data {
struct xe_step_info step;
u32 graphics_verx100;
u32 media_verx100;
+ u16 devid;
+ u8 revid;
};
int xe_pci_fake_device_init(struct xe_device *xe);
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index cdc7e0935c13..b498147dcf61 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -521,8 +521,6 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
if (err)
return ERR_PTR(err);
- xe->info.devid = pdev->device;
- xe->info.revid = pdev->revision;
xe->atomic_svm_timeslice_ms = 5;
xe->min_run_period_lr_ms = 5;
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index b1f5f0098f26..6b1a4cb7ccb0 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -727,6 +727,16 @@ static int handle_gmdid(struct xe_device *xe,
return 0;
}
+static void init_devid(struct xe_device *xe)
+{
+ struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
+
+ KUNIT_STATIC_STUB_REDIRECT(init_devid, xe);
+
+ xe->info.devid = pdev->device;
+ xe->info.revid = pdev->revision;
+}
+
/*
* Initialize device info content that only depends on static driver_data
* passed to the driver at probe time from PCI ID table.
@@ -742,6 +752,8 @@ static int xe_info_init_early(struct xe_device *xe,
xe->info.subplatform = subplatform_desc ?
subplatform_desc->subplatform : XE_SUBPLATFORM_NONE;
+ init_devid(xe);
+
xe->info.dma_mask_size = desc->dma_mask_size;
xe->info.va_bits = desc->va_bits;
xe->info.vm_max_level = desc->vm_max_level;
--
2.47.1
^ permalink raw reply related [flat|nested] 30+ messages in thread* Re: [PATCH 3/6] drm/xe: Move xe->info.devid|revid initialization
2026-05-25 16:05 ` [PATCH 3/6] drm/xe: Move xe->info.devid|revid initialization Michal Wajdeczko
@ 2026-05-25 17:47 ` Gustavo Sousa
2026-05-25 18:25 ` Michal Wajdeczko
2026-05-25 19:41 ` [PATCH v2 " Michal Wajdeczko
1 sibling, 1 reply; 30+ messages in thread
From: Gustavo Sousa @ 2026-05-25 17:47 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Michal Wajdeczko
Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
> The xe_info_init_early() is a place where we initialize those of
> the xe->info fields that do not require any additional hardware
> probes. Move the initialization of the devid/revid also there, but
> to avoid breaking the kunit helper, which also calls this function,
> keep their initialization separate in sub-function so we can easily
> stub it when running the kunit test.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> ---
> drivers/gpu/drm/xe/tests/xe_pci.c | 12 ++++++++++++
> drivers/gpu/drm/xe/tests/xe_pci_test.h | 2 ++
> drivers/gpu/drm/xe/xe_device.c | 2 --
> drivers/gpu/drm/xe/xe_pci.c | 12 ++++++++++++
> 4 files changed, 26 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/tests/xe_pci.c b/drivers/gpu/drm/xe/tests/xe_pci.c
> index 860409c579f8..7c3428ab4c89 100644
> --- a/drivers/gpu/drm/xe/tests/xe_pci.c
> +++ b/drivers/gpu/drm/xe/tests/xe_pci.c
> @@ -311,6 +311,17 @@ const void *xe_pci_id_gen_param(struct kunit *test, const void *prev, char *desc
> }
> EXPORT_SYMBOL_IF_KUNIT(xe_pci_id_gen_param);
>
> +static void fake_init_devid(struct xe_device *xe)
> +{
> + struct kunit *test = kunit_get_current_test();
> + struct xe_pci_fake_data *data = test->priv;
> +
> + if (data) {
> + xe->info.devid = data->devid;
> + xe->info.revid = data->revid;
> + }
> +}
> +
> static int fake_read_gmdid(struct xe_device *xe, enum xe_gmdid_type type,
> u32 *ver, u32 *revid)
> {
> @@ -369,6 +380,7 @@ int xe_pci_fake_device_init(struct xe_device *xe)
> xe->sriov.__mode = data && data->sriov_mode ?
> data->sriov_mode : XE_SRIOV_MODE_NONE;
>
> + kunit_activate_static_stub(test, init_devid, fake_init_devid);
> kunit_activate_static_stub(test, read_gmdid, fake_read_gmdid);
> kunit_activate_static_stub(test, xe_info_probe_tile_count,
> fake_xe_info_probe_tile_count);
> diff --git a/drivers/gpu/drm/xe/tests/xe_pci_test.h b/drivers/gpu/drm/xe/tests/xe_pci_test.h
> index 30505d1cbefc..46f961f75ecd 100644
> --- a/drivers/gpu/drm/xe/tests/xe_pci_test.h
> +++ b/drivers/gpu/drm/xe/tests/xe_pci_test.h
> @@ -22,6 +22,8 @@ struct xe_pci_fake_data {
> struct xe_step_info step;
> u32 graphics_verx100;
> u32 media_verx100;
> + u16 devid;
> + u8 revid;
Do we need to add those fields?
Looking through the rest of the series, I don't see us using them. I
think we could just have fake_init_devid() do nothing for now. We could
come back and add support for having devid and revid values when/if we
need them.
--
Gustavo Sousa
> };
>
> int xe_pci_fake_device_init(struct xe_device *xe);
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index cdc7e0935c13..b498147dcf61 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -521,8 +521,6 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
> if (err)
> return ERR_PTR(err);
>
> - xe->info.devid = pdev->device;
> - xe->info.revid = pdev->revision;
> xe->atomic_svm_timeslice_ms = 5;
> xe->min_run_period_lr_ms = 5;
>
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index b1f5f0098f26..6b1a4cb7ccb0 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -727,6 +727,16 @@ static int handle_gmdid(struct xe_device *xe,
> return 0;
> }
>
> +static void init_devid(struct xe_device *xe)
> +{
> + struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
> +
> + KUNIT_STATIC_STUB_REDIRECT(init_devid, xe);
> +
> + xe->info.devid = pdev->device;
> + xe->info.revid = pdev->revision;
> +}
> +
> /*
> * Initialize device info content that only depends on static driver_data
> * passed to the driver at probe time from PCI ID table.
> @@ -742,6 +752,8 @@ static int xe_info_init_early(struct xe_device *xe,
> xe->info.subplatform = subplatform_desc ?
> subplatform_desc->subplatform : XE_SUBPLATFORM_NONE;
>
> + init_devid(xe);
> +
> xe->info.dma_mask_size = desc->dma_mask_size;
> xe->info.va_bits = desc->va_bits;
> xe->info.vm_max_level = desc->vm_max_level;
> --
> 2.47.1
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 3/6] drm/xe: Move xe->info.devid|revid initialization
2026-05-25 17:47 ` Gustavo Sousa
@ 2026-05-25 18:25 ` Michal Wajdeczko
2026-05-25 19:12 ` Gustavo Sousa
0 siblings, 1 reply; 30+ messages in thread
From: Michal Wajdeczko @ 2026-05-25 18:25 UTC (permalink / raw)
To: Gustavo Sousa, intel-xe
On 5/25/2026 7:47 PM, Gustavo Sousa wrote:
> Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
>
>> The xe_info_init_early() is a place where we initialize those of
>> the xe->info fields that do not require any additional hardware
>> probes. Move the initialization of the devid/revid also there, but
>> to avoid breaking the kunit helper, which also calls this function,
>> keep their initialization separate in sub-function so we can easily
>> stub it when running the kunit test.
>>
>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> ---
>> drivers/gpu/drm/xe/tests/xe_pci.c | 12 ++++++++++++
>> drivers/gpu/drm/xe/tests/xe_pci_test.h | 2 ++
>> drivers/gpu/drm/xe/xe_device.c | 2 --
>> drivers/gpu/drm/xe/xe_pci.c | 12 ++++++++++++
>> 4 files changed, 26 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/tests/xe_pci.c b/drivers/gpu/drm/xe/tests/xe_pci.c
>> index 860409c579f8..7c3428ab4c89 100644
>> --- a/drivers/gpu/drm/xe/tests/xe_pci.c
>> +++ b/drivers/gpu/drm/xe/tests/xe_pci.c
>> @@ -311,6 +311,17 @@ const void *xe_pci_id_gen_param(struct kunit *test, const void *prev, char *desc
>> }
>> EXPORT_SYMBOL_IF_KUNIT(xe_pci_id_gen_param);
>>
>> +static void fake_init_devid(struct xe_device *xe)
>> +{
>> + struct kunit *test = kunit_get_current_test();
>> + struct xe_pci_fake_data *data = test->priv;
>> +
>> + if (data) {
>> + xe->info.devid = data->devid;
>> + xe->info.revid = data->revid;
>> + }
>> +}
>> +
>> static int fake_read_gmdid(struct xe_device *xe, enum xe_gmdid_type type,
>> u32 *ver, u32 *revid)
>> {
>> @@ -369,6 +380,7 @@ int xe_pci_fake_device_init(struct xe_device *xe)
>> xe->sriov.__mode = data && data->sriov_mode ?
>> data->sriov_mode : XE_SRIOV_MODE_NONE;
>>
>> + kunit_activate_static_stub(test, init_devid, fake_init_devid);
>> kunit_activate_static_stub(test, read_gmdid, fake_read_gmdid);
>> kunit_activate_static_stub(test, xe_info_probe_tile_count,
>> fake_xe_info_probe_tile_count);
>> diff --git a/drivers/gpu/drm/xe/tests/xe_pci_test.h b/drivers/gpu/drm/xe/tests/xe_pci_test.h
>> index 30505d1cbefc..46f961f75ecd 100644
>> --- a/drivers/gpu/drm/xe/tests/xe_pci_test.h
>> +++ b/drivers/gpu/drm/xe/tests/xe_pci_test.h
>> @@ -22,6 +22,8 @@ struct xe_pci_fake_data {
>> struct xe_step_info step;
>> u32 graphics_verx100;
>> u32 media_verx100;
>> + u16 devid;
>> + u8 revid;
>
> Do we need to add those fields?
>
> Looking through the rest of the series, I don't see us using them. I
> think we could just have fake_init_devid() do nothing for now. We could
> come back and add support for having devid and revid values when/if we
> need them.
hmm, we can return later, but OTOH this is a trivial change with near
zero cost (as this struct is used in kunit only) so why postpone it?
existing code can still keep it uninitialized (zero) and any new test
that would like to use devid/revid can be written immediately
and actually I was considering updating fake_xe_info_probe_tile_count
to use new xe_pci_fake_data.tile_count field just for completeness ;)
>
> --
> Gustavo Sousa
>
>> };
>>
>> int xe_pci_fake_device_init(struct xe_device *xe);
>> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
>> index cdc7e0935c13..b498147dcf61 100644
>> --- a/drivers/gpu/drm/xe/xe_device.c
>> +++ b/drivers/gpu/drm/xe/xe_device.c
>> @@ -521,8 +521,6 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>> if (err)
>> return ERR_PTR(err);
>>
>> - xe->info.devid = pdev->device;
>> - xe->info.revid = pdev->revision;
>> xe->atomic_svm_timeslice_ms = 5;
>> xe->min_run_period_lr_ms = 5;
>>
>> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
>> index b1f5f0098f26..6b1a4cb7ccb0 100644
>> --- a/drivers/gpu/drm/xe/xe_pci.c
>> +++ b/drivers/gpu/drm/xe/xe_pci.c
>> @@ -727,6 +727,16 @@ static int handle_gmdid(struct xe_device *xe,
>> return 0;
>> }
>>
>> +static void init_devid(struct xe_device *xe)
>> +{
>> + struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
>> +
>> + KUNIT_STATIC_STUB_REDIRECT(init_devid, xe);
>> +
>> + xe->info.devid = pdev->device;
>> + xe->info.revid = pdev->revision;
>> +}
>> +
>> /*
>> * Initialize device info content that only depends on static driver_data
>> * passed to the driver at probe time from PCI ID table.
>> @@ -742,6 +752,8 @@ static int xe_info_init_early(struct xe_device *xe,
>> xe->info.subplatform = subplatform_desc ?
>> subplatform_desc->subplatform : XE_SUBPLATFORM_NONE;
>>
>> + init_devid(xe);
>> +
>> xe->info.dma_mask_size = desc->dma_mask_size;
>> xe->info.va_bits = desc->va_bits;
>> xe->info.vm_max_level = desc->vm_max_level;
>> --
>> 2.47.1
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 3/6] drm/xe: Move xe->info.devid|revid initialization
2026-05-25 18:25 ` Michal Wajdeczko
@ 2026-05-25 19:12 ` Gustavo Sousa
0 siblings, 0 replies; 30+ messages in thread
From: Gustavo Sousa @ 2026-05-25 19:12 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe
Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
> On 5/25/2026 7:47 PM, Gustavo Sousa wrote:
>> Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
>>
>>> The xe_info_init_early() is a place where we initialize those of
>>> the xe->info fields that do not require any additional hardware
>>> probes. Move the initialization of the devid/revid also there, but
>>> to avoid breaking the kunit helper, which also calls this function,
>>> keep their initialization separate in sub-function so we can easily
>>> stub it when running the kunit test.
>>>
>>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>>> ---
>>> drivers/gpu/drm/xe/tests/xe_pci.c | 12 ++++++++++++
>>> drivers/gpu/drm/xe/tests/xe_pci_test.h | 2 ++
>>> drivers/gpu/drm/xe/xe_device.c | 2 --
>>> drivers/gpu/drm/xe/xe_pci.c | 12 ++++++++++++
>>> 4 files changed, 26 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/xe/tests/xe_pci.c b/drivers/gpu/drm/xe/tests/xe_pci.c
>>> index 860409c579f8..7c3428ab4c89 100644
>>> --- a/drivers/gpu/drm/xe/tests/xe_pci.c
>>> +++ b/drivers/gpu/drm/xe/tests/xe_pci.c
>>> @@ -311,6 +311,17 @@ const void *xe_pci_id_gen_param(struct kunit *test, const void *prev, char *desc
>>> }
>>> EXPORT_SYMBOL_IF_KUNIT(xe_pci_id_gen_param);
>>>
>>> +static void fake_init_devid(struct xe_device *xe)
>>> +{
>>> + struct kunit *test = kunit_get_current_test();
>>> + struct xe_pci_fake_data *data = test->priv;
>>> +
>>> + if (data) {
>>> + xe->info.devid = data->devid;
>>> + xe->info.revid = data->revid;
>>> + }
>>> +}
>>> +
>>> static int fake_read_gmdid(struct xe_device *xe, enum xe_gmdid_type type,
>>> u32 *ver, u32 *revid)
>>> {
>>> @@ -369,6 +380,7 @@ int xe_pci_fake_device_init(struct xe_device *xe)
>>> xe->sriov.__mode = data && data->sriov_mode ?
>>> data->sriov_mode : XE_SRIOV_MODE_NONE;
>>>
>>> + kunit_activate_static_stub(test, init_devid, fake_init_devid);
>>> kunit_activate_static_stub(test, read_gmdid, fake_read_gmdid);
>>> kunit_activate_static_stub(test, xe_info_probe_tile_count,
>>> fake_xe_info_probe_tile_count);
>>> diff --git a/drivers/gpu/drm/xe/tests/xe_pci_test.h b/drivers/gpu/drm/xe/tests/xe_pci_test.h
>>> index 30505d1cbefc..46f961f75ecd 100644
>>> --- a/drivers/gpu/drm/xe/tests/xe_pci_test.h
>>> +++ b/drivers/gpu/drm/xe/tests/xe_pci_test.h
>>> @@ -22,6 +22,8 @@ struct xe_pci_fake_data {
>>> struct xe_step_info step;
>>> u32 graphics_verx100;
>>> u32 media_verx100;
>>> + u16 devid;
>>> + u8 revid;
>>
>> Do we need to add those fields?
>>
>> Looking through the rest of the series, I don't see us using them. I
>> think we could just have fake_init_devid() do nothing for now. We could
>> come back and add support for having devid and revid values when/if we
>> need them.
>
> hmm, we can return later, but OTOH this is a trivial change with near
> zero cost (as this struct is used in kunit only) so why postpone it?
Because it currently looks like dead code to me and maybe a distraction
for someone reading the code.
If we are confident that we are going to need it in the near future, I
guess it would be okay (although I personally would postpone to be done
in the series/patch that starts using it). Otherwise, I would avoid it.
--
Gustavo Sousa
>
> existing code can still keep it uninitialized (zero) and any new test
> that would like to use devid/revid can be written immediately
>
> and actually I was considering updating fake_xe_info_probe_tile_count
> to use new xe_pci_fake_data.tile_count field just for completeness ;)
>
>>
>> --
>> Gustavo Sousa
>>
>>> };
>>>
>>> int xe_pci_fake_device_init(struct xe_device *xe);
>>> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
>>> index cdc7e0935c13..b498147dcf61 100644
>>> --- a/drivers/gpu/drm/xe/xe_device.c
>>> +++ b/drivers/gpu/drm/xe/xe_device.c
>>> @@ -521,8 +521,6 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>>> if (err)
>>> return ERR_PTR(err);
>>>
>>> - xe->info.devid = pdev->device;
>>> - xe->info.revid = pdev->revision;
>>> xe->atomic_svm_timeslice_ms = 5;
>>> xe->min_run_period_lr_ms = 5;
>>>
>>> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
>>> index b1f5f0098f26..6b1a4cb7ccb0 100644
>>> --- a/drivers/gpu/drm/xe/xe_pci.c
>>> +++ b/drivers/gpu/drm/xe/xe_pci.c
>>> @@ -727,6 +727,16 @@ static int handle_gmdid(struct xe_device *xe,
>>> return 0;
>>> }
>>>
>>> +static void init_devid(struct xe_device *xe)
>>> +{
>>> + struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
>>> +
>>> + KUNIT_STATIC_STUB_REDIRECT(init_devid, xe);
>>> +
>>> + xe->info.devid = pdev->device;
>>> + xe->info.revid = pdev->revision;
>>> +}
>>> +
>>> /*
>>> * Initialize device info content that only depends on static driver_data
>>> * passed to the driver at probe time from PCI ID table.
>>> @@ -742,6 +752,8 @@ static int xe_info_init_early(struct xe_device *xe,
>>> xe->info.subplatform = subplatform_desc ?
>>> subplatform_desc->subplatform : XE_SUBPLATFORM_NONE;
>>>
>>> + init_devid(xe);
>>> +
>>> xe->info.dma_mask_size = desc->dma_mask_size;
>>> xe->info.va_bits = desc->va_bits;
>>> xe->info.vm_max_level = desc->vm_max_level;
>>> --
>>> 2.47.1
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH v2 3/6] drm/xe: Move xe->info.devid|revid initialization
2026-05-25 16:05 ` [PATCH 3/6] drm/xe: Move xe->info.devid|revid initialization Michal Wajdeczko
2026-05-25 17:47 ` Gustavo Sousa
@ 2026-05-25 19:41 ` Michal Wajdeczko
2026-05-25 20:01 ` Gustavo Sousa
1 sibling, 1 reply; 30+ messages in thread
From: Michal Wajdeczko @ 2026-05-25 19:41 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Gustavo Sousa
The xe_info_init_early() is a place where we initialize those of
the xe->info fields that do not require any additional hardware
probes. Move the initialization of the devid/revid also there, but
to avoid breaking the kunit helper, which also calls this function,
keep their initialization separate in sub-function so we can easily
stub it when running the kunit test.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Cc: Gustavo Sousa <gustavo.sousa@intel.com>
---
v2: don't add devid/revid to xe_pci_fake_data (Gustavo)
---
drivers/gpu/drm/xe/tests/xe_pci.c | 6 ++++++
drivers/gpu/drm/xe/xe_device.c | 2 --
drivers/gpu/drm/xe/xe_pci.c | 12 ++++++++++++
3 files changed, 18 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/xe/tests/xe_pci.c b/drivers/gpu/drm/xe/tests/xe_pci.c
index 860409c579f8..9240aff779da 100644
--- a/drivers/gpu/drm/xe/tests/xe_pci.c
+++ b/drivers/gpu/drm/xe/tests/xe_pci.c
@@ -311,6 +311,11 @@ const void *xe_pci_id_gen_param(struct kunit *test, const void *prev, char *desc
}
EXPORT_SYMBOL_IF_KUNIT(xe_pci_id_gen_param);
+static void fake_init_devid(struct xe_device *xe)
+{
+ /* Nothing to do, just keep zero. */
+}
+
static int fake_read_gmdid(struct xe_device *xe, enum xe_gmdid_type type,
u32 *ver, u32 *revid)
{
@@ -369,6 +374,7 @@ int xe_pci_fake_device_init(struct xe_device *xe)
xe->sriov.__mode = data && data->sriov_mode ?
data->sriov_mode : XE_SRIOV_MODE_NONE;
+ kunit_activate_static_stub(test, init_devid, fake_init_devid);
kunit_activate_static_stub(test, read_gmdid, fake_read_gmdid);
kunit_activate_static_stub(test, xe_info_probe_tile_count,
fake_xe_info_probe_tile_count);
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index cdc7e0935c13..b498147dcf61 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -521,8 +521,6 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
if (err)
return ERR_PTR(err);
- xe->info.devid = pdev->device;
- xe->info.revid = pdev->revision;
xe->atomic_svm_timeslice_ms = 5;
xe->min_run_period_lr_ms = 5;
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index b1f5f0098f26..6b1a4cb7ccb0 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -727,6 +727,16 @@ static int handle_gmdid(struct xe_device *xe,
return 0;
}
+static void init_devid(struct xe_device *xe)
+{
+ struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
+
+ KUNIT_STATIC_STUB_REDIRECT(init_devid, xe);
+
+ xe->info.devid = pdev->device;
+ xe->info.revid = pdev->revision;
+}
+
/*
* Initialize device info content that only depends on static driver_data
* passed to the driver at probe time from PCI ID table.
@@ -742,6 +752,8 @@ static int xe_info_init_early(struct xe_device *xe,
xe->info.subplatform = subplatform_desc ?
subplatform_desc->subplatform : XE_SUBPLATFORM_NONE;
+ init_devid(xe);
+
xe->info.dma_mask_size = desc->dma_mask_size;
xe->info.va_bits = desc->va_bits;
xe->info.vm_max_level = desc->vm_max_level;
--
2.47.1
^ permalink raw reply related [flat|nested] 30+ messages in thread* Re: [PATCH v2 3/6] drm/xe: Move xe->info.devid|revid initialization
2026-05-25 19:41 ` [PATCH v2 " Michal Wajdeczko
@ 2026-05-25 20:01 ` Gustavo Sousa
0 siblings, 0 replies; 30+ messages in thread
From: Gustavo Sousa @ 2026-05-25 20:01 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Michal Wajdeczko
Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
> The xe_info_init_early() is a place where we initialize those of
> the xe->info fields that do not require any additional hardware
> probes. Move the initialization of the devid/revid also there, but
> to avoid breaking the kunit helper, which also calls this function,
> keep their initialization separate in sub-function so we can easily
> stub it when running the kunit test.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> Cc: Gustavo Sousa <gustavo.sousa@intel.com>
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
> v2: don't add devid/revid to xe_pci_fake_data (Gustavo)
> ---
> drivers/gpu/drm/xe/tests/xe_pci.c | 6 ++++++
> drivers/gpu/drm/xe/xe_device.c | 2 --
> drivers/gpu/drm/xe/xe_pci.c | 12 ++++++++++++
> 3 files changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/tests/xe_pci.c b/drivers/gpu/drm/xe/tests/xe_pci.c
> index 860409c579f8..9240aff779da 100644
> --- a/drivers/gpu/drm/xe/tests/xe_pci.c
> +++ b/drivers/gpu/drm/xe/tests/xe_pci.c
> @@ -311,6 +311,11 @@ const void *xe_pci_id_gen_param(struct kunit *test, const void *prev, char *desc
> }
> EXPORT_SYMBOL_IF_KUNIT(xe_pci_id_gen_param);
>
> +static void fake_init_devid(struct xe_device *xe)
> +{
> + /* Nothing to do, just keep zero. */
> +}
> +
> static int fake_read_gmdid(struct xe_device *xe, enum xe_gmdid_type type,
> u32 *ver, u32 *revid)
> {
> @@ -369,6 +374,7 @@ int xe_pci_fake_device_init(struct xe_device *xe)
> xe->sriov.__mode = data && data->sriov_mode ?
> data->sriov_mode : XE_SRIOV_MODE_NONE;
>
> + kunit_activate_static_stub(test, init_devid, fake_init_devid);
> kunit_activate_static_stub(test, read_gmdid, fake_read_gmdid);
> kunit_activate_static_stub(test, xe_info_probe_tile_count,
> fake_xe_info_probe_tile_count);
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index cdc7e0935c13..b498147dcf61 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -521,8 +521,6 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
> if (err)
> return ERR_PTR(err);
>
> - xe->info.devid = pdev->device;
> - xe->info.revid = pdev->revision;
> xe->atomic_svm_timeslice_ms = 5;
> xe->min_run_period_lr_ms = 5;
>
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index b1f5f0098f26..6b1a4cb7ccb0 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -727,6 +727,16 @@ static int handle_gmdid(struct xe_device *xe,
> return 0;
> }
>
> +static void init_devid(struct xe_device *xe)
> +{
> + struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
> +
> + KUNIT_STATIC_STUB_REDIRECT(init_devid, xe);
> +
> + xe->info.devid = pdev->device;
> + xe->info.revid = pdev->revision;
> +}
> +
> /*
> * Initialize device info content that only depends on static driver_data
> * passed to the driver at probe time from PCI ID table.
> @@ -742,6 +752,8 @@ static int xe_info_init_early(struct xe_device *xe,
> xe->info.subplatform = subplatform_desc ?
> subplatform_desc->subplatform : XE_SUBPLATFORM_NONE;
>
> + init_devid(xe);
> +
> xe->info.dma_mask_size = desc->dma_mask_size;
> xe->info.va_bits = desc->va_bits;
> xe->info.vm_max_level = desc->vm_max_level;
> --
> 2.47.1
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 4/6] drm/xe: Separate early xe_device initialization
2026-05-25 16:05 [PATCH 0/6] drm/xe: Misc initialization improvements Michal Wajdeczko
` (2 preceding siblings ...)
2026-05-25 16:05 ` [PATCH 3/6] drm/xe: Move xe->info.devid|revid initialization Michal Wajdeczko
@ 2026-05-25 16:05 ` Michal Wajdeczko
2026-05-25 18:21 ` Gustavo Sousa
2026-05-25 18:22 ` Raag Jadav
2026-05-25 16:05 ` [PATCH 5/6] drm/xe/pm: Don't access device in init_early() Michal Wajdeczko
` (6 subsequent siblings)
10 siblings, 2 replies; 30+ messages in thread
From: Michal Wajdeczko @ 2026-05-25 16:05 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko
We would like to initialize more of the xe_device struct also from
the kunit code, as it should be safe to use most of the generic drm
or xe components without doing any additional tweaks. Separate early
xe initialization code to a new function, so it can be reused.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 39 ++++++++++++++++++++++++----------
drivers/gpu/drm/xe/xe_device.h | 1 +
2 files changed, 29 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index b498147dcf61..7ba407f73a02 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -506,27 +506,45 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
if (IS_ERR(xe))
return xe;
+ err = xe_device_init_early(xe);
+ if (err)
+ return ERR_PTR(err);
+
+ return xe;
+}
+ALLOW_ERROR_INJECTION(xe_device_create, ERRNO); /* See xe_pci_probe() */
+
+/**
+ * xe_device_init_early() - Initialize a new &xe_device instance
+ * @xe: the &xe_device to initialize
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
+int xe_device_init_early(struct xe_device *xe)
+{
+ int err;
+
err = ttm_device_init(&xe->ttm, &xe_ttm_funcs, xe->drm.dev,
xe->drm.anon_inode->i_mapping,
xe->drm.vma_offset_manager, 0);
- if (WARN_ON(err))
- return ERR_PTR(err);
+ if (err)
+ return err;
xe_bo_dev_init(&xe->bo_device);
err = drmm_add_action_or_reset(&xe->drm, xe_device_destroy, NULL);
if (err)
- return ERR_PTR(err);
+ return err;
err = xe_shrinker_create(xe);
if (err)
- return ERR_PTR(err);
+ return err;
xe->atomic_svm_timeslice_ms = 5;
xe->min_run_period_lr_ms = 5;
err = xe_irq_init(xe);
if (err)
- return ERR_PTR(err);
+ return err;
xe_validation_device_init(&xe->val);
@@ -536,7 +554,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
err = xe_pagemap_shrinker_create(xe);
if (err)
- return ERR_PTR(err);
+ return err;
xa_init_flags(&xe->usm.asid_to_vm, XA_FLAGS_ALLOC);
@@ -555,7 +573,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
err = xe_bo_pinned_init(xe);
if (err)
- return ERR_PTR(err);
+ return err;
xe->preempt_fence_wq = alloc_ordered_workqueue("xe-preempt-fence-wq",
WQ_MEM_RECLAIM);
@@ -569,16 +587,15 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
* drmm_add_action_or_reset register above
*/
drm_err(&xe->drm, "Failed to allocate xe workqueues\n");
- return ERR_PTR(-ENOMEM);
+ return -ENOMEM;
}
err = drmm_mutex_init(&xe->drm, &xe->pmt.lock);
if (err)
- return ERR_PTR(err);
+ return err;
- return xe;
+ return 0;
}
-ALLOW_ERROR_INJECTION(xe_device_create, ERRNO); /* See xe_pci_probe() */
static bool xe_driver_flr_disabled(struct xe_device *xe)
{
diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h
index 27cd2329b99f..975768a6a9c8 100644
--- a/drivers/gpu/drm/xe/xe_device.h
+++ b/drivers/gpu/drm/xe/xe_device.h
@@ -44,6 +44,7 @@ static inline struct xe_device *ttm_to_xe_device(struct ttm_device *ttm)
}
struct xe_device *xe_device_create(struct pci_dev *pdev);
+int xe_device_init_early(struct xe_device *xe);
int xe_device_probe_early(struct xe_device *xe);
int xe_device_probe(struct xe_device *xe);
void xe_device_remove(struct xe_device *xe);
--
2.47.1
^ permalink raw reply related [flat|nested] 30+ messages in thread* Re: [PATCH 4/6] drm/xe: Separate early xe_device initialization
2026-05-25 16:05 ` [PATCH 4/6] drm/xe: Separate early xe_device initialization Michal Wajdeczko
@ 2026-05-25 18:21 ` Gustavo Sousa
2026-05-25 18:57 ` Michal Wajdeczko
2026-05-25 19:00 ` Gustavo Sousa
2026-05-25 18:22 ` Raag Jadav
1 sibling, 2 replies; 30+ messages in thread
From: Gustavo Sousa @ 2026-05-25 18:21 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Michal Wajdeczko
Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
> We would like to initialize more of the xe_device struct also from
> the kunit code, as it should be safe to use most of the generic drm
> or xe components without doing any additional tweaks. Separate early
> xe initialization code to a new function, so it can be reused.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 39 ++++++++++++++++++++++++----------
> drivers/gpu/drm/xe/xe_device.h | 1 +
> 2 files changed, 29 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index b498147dcf61..7ba407f73a02 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -506,27 +506,45 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
> if (IS_ERR(xe))
> return xe;
>
> + err = xe_device_init_early(xe);
> + if (err)
> + return ERR_PTR(err);
> +
> + return xe;
> +}
> +ALLOW_ERROR_INJECTION(xe_device_create, ERRNO); /* See xe_pci_probe() */
> +
> +/**
> + * xe_device_init_early() - Initialize a new &xe_device instance
> + * @xe: the &xe_device to initialize
> + *
> + * Return: 0 on success or a negative error code on failure.
> + */
> +int xe_device_init_early(struct xe_device *xe)
> +{
> + int err;
> +
> err = ttm_device_init(&xe->ttm, &xe_ttm_funcs, xe->drm.dev,
> xe->drm.anon_inode->i_mapping,
> xe->drm.vma_offset_manager, 0);
> - if (WARN_ON(err))
> - return ERR_PTR(err);
> + if (err)
> + return err;
>
> xe_bo_dev_init(&xe->bo_device);
> err = drmm_add_action_or_reset(&xe->drm, xe_device_destroy, NULL);
Curious: are the drmm_* calls going to work fine for the automated
teardown when they are called from a kunit context?
What about devm_* calls? From a quick look, I know that at least
xe_bo_pinned_init() will make one of those.
> if (err)
> - return ERR_PTR(err);
> + return err;
>
> err = xe_shrinker_create(xe);
> if (err)
> - return ERR_PTR(err);
> + return err;
>
> xe->atomic_svm_timeslice_ms = 5;
> xe->min_run_period_lr_ms = 5;
>
> err = xe_irq_init(xe);
> if (err)
> - return ERR_PTR(err);
> + return err;
>
> xe_validation_device_init(&xe->val);
>
> @@ -536,7 +554,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>
> err = xe_pagemap_shrinker_create(xe);
> if (err)
> - return ERR_PTR(err);
> + return err;
>
> xa_init_flags(&xe->usm.asid_to_vm, XA_FLAGS_ALLOC);
>
> @@ -555,7 +573,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>
> err = xe_bo_pinned_init(xe);
> if (err)
> - return ERR_PTR(err);
> + return err;
>
> xe->preempt_fence_wq = alloc_ordered_workqueue("xe-preempt-fence-wq",
> WQ_MEM_RECLAIM);
> @@ -569,16 +587,15 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
> * drmm_add_action_or_reset register above
> */
> drm_err(&xe->drm, "Failed to allocate xe workqueues\n");
> - return ERR_PTR(-ENOMEM);
> + return -ENOMEM;
> }
>
> err = drmm_mutex_init(&xe->drm, &xe->pmt.lock);
> if (err)
> - return ERR_PTR(err);
> + return err;
>
> - return xe;
> + return 0;
> }
> -ALLOW_ERROR_INJECTION(xe_device_create, ERRNO); /* See xe_pci_probe() */
So, there are things allocated/initialized in xe_device_create() that
get deallocated/finalized in xe_device_destroy(). With this change, we
now have things extracted out of xe_device_create() into
xe_device_init_early(), and it appears that xe_device_destroy() is now
really the counterpart of the latter than the former.
I think we should just call the function xe_device_init() and then
rename xe_device_destroy() to xe_device_fini().
>
> static bool xe_driver_flr_disabled(struct xe_device *xe)
> {
> diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h
> index 27cd2329b99f..975768a6a9c8 100644
> --- a/drivers/gpu/drm/xe/xe_device.h
> +++ b/drivers/gpu/drm/xe/xe_device.h
> @@ -44,6 +44,7 @@ static inline struct xe_device *ttm_to_xe_device(struct ttm_device *ttm)
> }
>
> struct xe_device *xe_device_create(struct pci_dev *pdev);
> +int xe_device_init_early(struct xe_device *xe);
Right now we do not have any external users for this function. We could
keep it static until we get to use them in kunit.
That said, I think it would also make sense to separate it completely
from xe_device_create(), i.e., have xe_pci.c call the two functions
instead of xe_device_init_early() being implicitly called by
xe_device_create(). I think that would be more alligned with the
function names.
--
Gustavo Sousa
> int xe_device_probe_early(struct xe_device *xe);
> int xe_device_probe(struct xe_device *xe);
> void xe_device_remove(struct xe_device *xe);
> --
> 2.47.1
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 4/6] drm/xe: Separate early xe_device initialization
2026-05-25 18:21 ` Gustavo Sousa
@ 2026-05-25 18:57 ` Michal Wajdeczko
2026-05-25 19:05 ` Gustavo Sousa
2026-05-25 19:00 ` Gustavo Sousa
1 sibling, 1 reply; 30+ messages in thread
From: Michal Wajdeczko @ 2026-05-25 18:57 UTC (permalink / raw)
To: Gustavo Sousa, intel-xe
On 5/25/2026 8:21 PM, Gustavo Sousa wrote:
> Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
>
>> We would like to initialize more of the xe_device struct also from
>> the kunit code, as it should be safe to use most of the generic drm
>> or xe components without doing any additional tweaks. Separate early
>> xe initialization code to a new function, so it can be reused.
>>
>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_device.c | 39 ++++++++++++++++++++++++----------
>> drivers/gpu/drm/xe/xe_device.h | 1 +
>> 2 files changed, 29 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
>> index b498147dcf61..7ba407f73a02 100644
>> --- a/drivers/gpu/drm/xe/xe_device.c
>> +++ b/drivers/gpu/drm/xe/xe_device.c
>> @@ -506,27 +506,45 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>> if (IS_ERR(xe))
>> return xe;
>>
>> + err = xe_device_init_early(xe);
>> + if (err)
>> + return ERR_PTR(err);
>> +
>> + return xe;
>> +}
>> +ALLOW_ERROR_INJECTION(xe_device_create, ERRNO); /* See xe_pci_probe() */
>> +
>> +/**
>> + * xe_device_init_early() - Initialize a new &xe_device instance
>> + * @xe: the &xe_device to initialize
>> + *
>> + * Return: 0 on success or a negative error code on failure.
>> + */
>> +int xe_device_init_early(struct xe_device *xe)
>> +{
>> + int err;
>> +
>> err = ttm_device_init(&xe->ttm, &xe_ttm_funcs, xe->drm.dev,
>> xe->drm.anon_inode->i_mapping,
>> xe->drm.vma_offset_manager, 0);
>> - if (WARN_ON(err))
>> - return ERR_PTR(err);
>> + if (err)
>> + return err;
>>
>> xe_bo_dev_init(&xe->bo_device);
>> err = drmm_add_action_or_reset(&xe->drm, xe_device_destroy, NULL);
>
> Curious: are the drmm_* calls going to work fine for the automated
> teardown when they are called from a kunit context?
that's correct, see:
WARNING: drivers/gpu/drm/xe/tests/xe_kunit_helpers.c:67 at my_drm_fini+0x72/0x80, CPU#0: kunit_try_catch/20
drm-kunit-mock-device test_data.drm-kunit-mock-device: [drm] WARN_ON(true)
CPU: 0 UID: 0 PID: 20 Comm: kunit_try_catch Tainted: G W N 7.1.0-rc5-g547691814d7b-dirty #1020 VOLUNTARY
Tainted: [W]=WARN, [N]=TEST
Stack:
607ffcd5 00000000 00000000 00000001
ffffff00 607ffcd5 00000009 60029a90
6086f348 60064b86 605cf832 a088bcb0
Call Trace:
[<60029a90>] ? _printk+0x0/0x65
[<60064b86>] ? dump_stack_lvl+0x6f/0xb8
[<605cf832>] ? my_drm_fini+0x72/0x80
[<600231a3>] ? __warn.cold+0x82/0x1cf
[<601aacb0>] ? kfree_const+0x0/0x40
[<60023384>] ? warn_slowpath_fmt+0x94/0xa1
[<60409500>] ? __drm_dev_dbg+0x0/0xb0
[<605cf832>] ? my_drm_fini+0x72/0x80
[<603fb4a7>] ? drm_managed_release+0xa7/0x190
[<605ec9a0>] ? devres_log+0x0/0xc0
[<603e6590>] ? devm_drm_dev_init_release+0x60/0x90
[<605ecb75>] ? release_nodes+0x55/0x80
[<6069ae80>] ? mutex_lock_nested+0x0/0x20
[<605ee3f7>] ? devres_release_all+0x97/0xf0
[<605e68c0>] ? bus_notify+0x0/0x60
[<60695df0>] ? mutex_unlock+0x0/0x20
[<605e6f54>] ? device_unbind_cleanup+0x14/0xb0
[<605e88e6>] ? device_release_driver_internal+0x266/0x2c0
[<60669f50>] ? kobject_put+0x0/0x150
[<602ef010>] ? sysfs_remove_file_ns+0x0/0x20
[<605e64fd>] ? bus_remove_device+0x11d/0x1b0
[<6069ae80>] ? mutex_lock_nested+0x0/0x20
[<605dfc1f>] ? device_del+0x1bf/0x5f0
[<60075330>] ? um_set_signals+0x0/0x60
[<60075320>] ? um_get_signals+0x0/0x10
[<606a2160>] ? _raw_spin_lock_irqsave+0x0/0xa0
[<605e0064>] ? device_unregister+0x14/0x40
[<60375cde>] ? kunit_remove_resource+0x8e/0xd0
[<606a24d0>] ? _raw_spin_unlock_irqrestore+0x0/0xb0
[<60375323>] ? kunit_cleanup+0x63/0xb0
[<60377a70>] ? kunit_generic_run_threadfn_adapter+0x0/0x30
[<60377a86>] ? kunit_generic_run_threadfn_adapter+0x16/0x30
>
> What about devm_* calls? From a quick look, I know that at least
> xe_bo_pinned_init() will make one of those.
kunit device follows device model, it is just created on a dummy bus,
but everything else works fine, see:
WARNING: drivers/gpu/drm/xe/tests/xe_kunit_helpers.c:60 at my_dev_fini+0x6f/0x80, CPU#0: kunit_try_catch/20
drm-kunit-mock-device test_data.drm-kunit-mock-device: [drm] WARN_ON(true)
CPU: 0 UID: 0 PID: 20 Comm: kunit_try_catch Tainted: G N 7.1.0-rc5-g547691814d7b-dirty #1020 VOLUNTARY
Tainted: [N]=TEST
Stack:
607ffcd5 00000000 00000000 00000001
ffffff00 607ffcd5 00000009 60029a90
6086f348 60064b86 605cf7af a088bd00
Call Trace:
[<60029a90>] ? _printk+0x0/0x65
[<60064b86>] ? dump_stack_lvl+0x6f/0xb8
[<605cf7af>] ? my_dev_fini+0x6f/0x80
[<600231a3>] ? __warn.cold+0x82/0x1cf
[<605ee3b5>] ? devres_release_all+0x55/0xf0
[<60023384>] ? warn_slowpath_fmt+0x94/0xa1
[<605ec9a0>] ? devres_log+0x0/0xc0
[<605cf7af>] ? my_dev_fini+0x6f/0x80
[<605ecb75>] ? release_nodes+0x55/0x80
[<6069ae80>] ? mutex_lock_nested+0x0/0x20
[<605ee3f7>] ? devres_release_all+0x97/0xf0
[<605e68c0>] ? bus_notify+0x0/0x60
[<60695df0>] ? mutex_unlock+0x0/0x20
[<605e6f54>] ? device_unbind_cleanup+0x14/0xb0
[<605e88e6>] ? device_release_driver_internal+0x266/0x2c0
[<60669f50>] ? kobject_put+0x0/0x150
[<602ef010>] ? sysfs_remove_file_ns+0x0/0x20
[<605e64fd>] ? bus_remove_device+0x11d/0x1b0
[<6069ae80>] ? mutex_lock_nested+0x0/0x20
[<605dfc1f>] ? device_del+0x1bf/0x5f0
[<60075330>] ? um_set_signals+0x0/0x60
[<60075320>] ? um_get_signals+0x0/0x10
[<606a2160>] ? _raw_spin_lock_irqsave+0x0/0xa0
[<605e0064>] ? device_unregister+0x14/0x40
[<60375cde>] ? kunit_remove_resource+0x8e/0xd0
[<606a24d0>] ? _raw_spin_unlock_irqrestore+0x0/0xb0
[<60375323>] ? kunit_cleanup+0x63/0xb0
[<60377a70>] ? kunit_generic_run_threadfn_adapter+0x0/0x30
[<60377a86>] ? kunit_generic_run_threadfn_adapter+0x16/0x30
>
>> if (err)
>> - return ERR_PTR(err);
>> + return err;
>>
>> err = xe_shrinker_create(xe);
>> if (err)
>> - return ERR_PTR(err);
>> + return err;
>>
>> xe->atomic_svm_timeslice_ms = 5;
>> xe->min_run_period_lr_ms = 5;
>>
>> err = xe_irq_init(xe);
>> if (err)
>> - return ERR_PTR(err);
>> + return err;
>>
>> xe_validation_device_init(&xe->val);
>>
>> @@ -536,7 +554,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>>
>> err = xe_pagemap_shrinker_create(xe);
>> if (err)
>> - return ERR_PTR(err);
>> + return err;
>>
>> xa_init_flags(&xe->usm.asid_to_vm, XA_FLAGS_ALLOC);
>>
>> @@ -555,7 +573,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>>
>> err = xe_bo_pinned_init(xe);
>> if (err)
>> - return ERR_PTR(err);
>> + return err;
>>
>> xe->preempt_fence_wq = alloc_ordered_workqueue("xe-preempt-fence-wq",
>> WQ_MEM_RECLAIM);
>> @@ -569,16 +587,15 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>> * drmm_add_action_or_reset register above
>> */
>> drm_err(&xe->drm, "Failed to allocate xe workqueues\n");
>> - return ERR_PTR(-ENOMEM);
>> + return -ENOMEM;
>> }
>>
>> err = drmm_mutex_init(&xe->drm, &xe->pmt.lock);
>> if (err)
>> - return ERR_PTR(err);
>> + return err;
>>
>> - return xe;
>> + return 0;
>> }
>> -ALLOW_ERROR_INJECTION(xe_device_create, ERRNO); /* See xe_pci_probe() */
>
> So, there are things allocated/initialized in xe_device_create() that
> get deallocated/finalized in xe_device_destroy(). With this change, we
> now have things extracted out of xe_device_create() into
> xe_device_init_early(), and it appears that xe_device_destroy() is now
> really the counterpart of the latter than the former.
>
> I think we should just call the function xe_device_init() and then
> rename xe_device_destroy() to xe_device_fini().
there is yet another small pending series that introduces drmm_alloc_workqueue
and after that converts all WQ initializations into self-contained statements
didn't include here, as it touches include/drm so can be done in its own pace
but with that xe_device_destroy (which should never be called that way)
will be greatly reduced, and even possibly completely removed after moving
registration of some cleanup steps to xe_bo_dev_init and/or ttm_init
>
>>
>> static bool xe_driver_flr_disabled(struct xe_device *xe)
>> {
>> diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h
>> index 27cd2329b99f..975768a6a9c8 100644
>> --- a/drivers/gpu/drm/xe/xe_device.h
>> +++ b/drivers/gpu/drm/xe/xe_device.h
>> @@ -44,6 +44,7 @@ static inline struct xe_device *ttm_to_xe_device(struct ttm_device *ttm)
>> }
>>
>> struct xe_device *xe_device_create(struct pci_dev *pdev);
>> +int xe_device_init_early(struct xe_device *xe);
>
> Right now we do not have any external users for this function. We could
> keep it static until we get to use them in kunit.
my kunit series just got too big so I've started posting smaller chunks
don't really want to go into static/public noise just for few days delay
between series
>
> That said, I think it would also make sense to separate it completely
> from xe_device_create(), i.e., have xe_pci.c call the two functions
> instead of xe_device_init_early() being implicitly called by
> xe_device_create(). I think that would be more alligned with the
> function names.
hmm, maybe
but that would likely require also extracting call to
aperture_remove_conflicting_pci_devices
and I'm not ready for that
so IMO it's better to keep "xe_device_create()" as "Allocate and initialize"
as we have now in the kernel-doc ;)
>
> --
> Gustavo Sousa
>
>> int xe_device_probe_early(struct xe_device *xe);
>> int xe_device_probe(struct xe_device *xe);
>> void xe_device_remove(struct xe_device *xe);
>> --
>> 2.47.1
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 4/6] drm/xe: Separate early xe_device initialization
2026-05-25 18:57 ` Michal Wajdeczko
@ 2026-05-25 19:05 ` Gustavo Sousa
0 siblings, 0 replies; 30+ messages in thread
From: Gustavo Sousa @ 2026-05-25 19:05 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe
Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
> On 5/25/2026 8:21 PM, Gustavo Sousa wrote:
>> Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
>>
>>> We would like to initialize more of the xe_device struct also from
>>> the kunit code, as it should be safe to use most of the generic drm
>>> or xe components without doing any additional tweaks. Separate early
>>> xe initialization code to a new function, so it can be reused.
>>>
>>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>>> ---
>>> drivers/gpu/drm/xe/xe_device.c | 39 ++++++++++++++++++++++++----------
>>> drivers/gpu/drm/xe/xe_device.h | 1 +
>>> 2 files changed, 29 insertions(+), 11 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
>>> index b498147dcf61..7ba407f73a02 100644
>>> --- a/drivers/gpu/drm/xe/xe_device.c
>>> +++ b/drivers/gpu/drm/xe/xe_device.c
>>> @@ -506,27 +506,45 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>>> if (IS_ERR(xe))
>>> return xe;
>>>
>>> + err = xe_device_init_early(xe);
>>> + if (err)
>>> + return ERR_PTR(err);
>>> +
>>> + return xe;
>>> +}
>>> +ALLOW_ERROR_INJECTION(xe_device_create, ERRNO); /* See xe_pci_probe() */
>>> +
>>> +/**
>>> + * xe_device_init_early() - Initialize a new &xe_device instance
>>> + * @xe: the &xe_device to initialize
>>> + *
>>> + * Return: 0 on success or a negative error code on failure.
>>> + */
>>> +int xe_device_init_early(struct xe_device *xe)
>>> +{
>>> + int err;
>>> +
>>> err = ttm_device_init(&xe->ttm, &xe_ttm_funcs, xe->drm.dev,
>>> xe->drm.anon_inode->i_mapping,
>>> xe->drm.vma_offset_manager, 0);
>>> - if (WARN_ON(err))
>>> - return ERR_PTR(err);
>>> + if (err)
>>> + return err;
>>>
>>> xe_bo_dev_init(&xe->bo_device);
>>> err = drmm_add_action_or_reset(&xe->drm, xe_device_destroy, NULL);
>>
>> Curious: are the drmm_* calls going to work fine for the automated
>> teardown when they are called from a kunit context?
>
> that's correct, see:
>
> WARNING: drivers/gpu/drm/xe/tests/xe_kunit_helpers.c:67 at my_drm_fini+0x72/0x80, CPU#0: kunit_try_catch/20
> drm-kunit-mock-device test_data.drm-kunit-mock-device: [drm] WARN_ON(true)
> CPU: 0 UID: 0 PID: 20 Comm: kunit_try_catch Tainted: G W N 7.1.0-rc5-g547691814d7b-dirty #1020 VOLUNTARY
> Tainted: [W]=WARN, [N]=TEST
> Stack:
> 607ffcd5 00000000 00000000 00000001
> ffffff00 607ffcd5 00000009 60029a90
> 6086f348 60064b86 605cf832 a088bcb0
> Call Trace:
> [<60029a90>] ? _printk+0x0/0x65
> [<60064b86>] ? dump_stack_lvl+0x6f/0xb8
> [<605cf832>] ? my_drm_fini+0x72/0x80
> [<600231a3>] ? __warn.cold+0x82/0x1cf
> [<601aacb0>] ? kfree_const+0x0/0x40
> [<60023384>] ? warn_slowpath_fmt+0x94/0xa1
> [<60409500>] ? __drm_dev_dbg+0x0/0xb0
> [<605cf832>] ? my_drm_fini+0x72/0x80
> [<603fb4a7>] ? drm_managed_release+0xa7/0x190
> [<605ec9a0>] ? devres_log+0x0/0xc0
> [<603e6590>] ? devm_drm_dev_init_release+0x60/0x90
> [<605ecb75>] ? release_nodes+0x55/0x80
> [<6069ae80>] ? mutex_lock_nested+0x0/0x20
> [<605ee3f7>] ? devres_release_all+0x97/0xf0
> [<605e68c0>] ? bus_notify+0x0/0x60
> [<60695df0>] ? mutex_unlock+0x0/0x20
> [<605e6f54>] ? device_unbind_cleanup+0x14/0xb0
> [<605e88e6>] ? device_release_driver_internal+0x266/0x2c0
> [<60669f50>] ? kobject_put+0x0/0x150
> [<602ef010>] ? sysfs_remove_file_ns+0x0/0x20
> [<605e64fd>] ? bus_remove_device+0x11d/0x1b0
> [<6069ae80>] ? mutex_lock_nested+0x0/0x20
> [<605dfc1f>] ? device_del+0x1bf/0x5f0
> [<60075330>] ? um_set_signals+0x0/0x60
> [<60075320>] ? um_get_signals+0x0/0x10
> [<606a2160>] ? _raw_spin_lock_irqsave+0x0/0xa0
> [<605e0064>] ? device_unregister+0x14/0x40
> [<60375cde>] ? kunit_remove_resource+0x8e/0xd0
> [<606a24d0>] ? _raw_spin_unlock_irqrestore+0x0/0xb0
> [<60375323>] ? kunit_cleanup+0x63/0xb0
> [<60377a70>] ? kunit_generic_run_threadfn_adapter+0x0/0x30
> [<60377a86>] ? kunit_generic_run_threadfn_adapter+0x16/0x30
>
>
>
>>
>> What about devm_* calls? From a quick look, I know that at least
>> xe_bo_pinned_init() will make one of those.
>
> kunit device follows device model, it is just created on a dummy bus,
> but everything else works fine, see:
>
> WARNING: drivers/gpu/drm/xe/tests/xe_kunit_helpers.c:60 at my_dev_fini+0x6f/0x80, CPU#0: kunit_try_catch/20
> drm-kunit-mock-device test_data.drm-kunit-mock-device: [drm] WARN_ON(true)
> CPU: 0 UID: 0 PID: 20 Comm: kunit_try_catch Tainted: G N 7.1.0-rc5-g547691814d7b-dirty #1020 VOLUNTARY
> Tainted: [N]=TEST
> Stack:
> 607ffcd5 00000000 00000000 00000001
> ffffff00 607ffcd5 00000009 60029a90
> 6086f348 60064b86 605cf7af a088bd00
> Call Trace:
> [<60029a90>] ? _printk+0x0/0x65
> [<60064b86>] ? dump_stack_lvl+0x6f/0xb8
> [<605cf7af>] ? my_dev_fini+0x6f/0x80
> [<600231a3>] ? __warn.cold+0x82/0x1cf
> [<605ee3b5>] ? devres_release_all+0x55/0xf0
> [<60023384>] ? warn_slowpath_fmt+0x94/0xa1
> [<605ec9a0>] ? devres_log+0x0/0xc0
> [<605cf7af>] ? my_dev_fini+0x6f/0x80
> [<605ecb75>] ? release_nodes+0x55/0x80
> [<6069ae80>] ? mutex_lock_nested+0x0/0x20
> [<605ee3f7>] ? devres_release_all+0x97/0xf0
> [<605e68c0>] ? bus_notify+0x0/0x60
> [<60695df0>] ? mutex_unlock+0x0/0x20
> [<605e6f54>] ? device_unbind_cleanup+0x14/0xb0
> [<605e88e6>] ? device_release_driver_internal+0x266/0x2c0
> [<60669f50>] ? kobject_put+0x0/0x150
> [<602ef010>] ? sysfs_remove_file_ns+0x0/0x20
> [<605e64fd>] ? bus_remove_device+0x11d/0x1b0
> [<6069ae80>] ? mutex_lock_nested+0x0/0x20
> [<605dfc1f>] ? device_del+0x1bf/0x5f0
> [<60075330>] ? um_set_signals+0x0/0x60
> [<60075320>] ? um_get_signals+0x0/0x10
> [<606a2160>] ? _raw_spin_lock_irqsave+0x0/0xa0
> [<605e0064>] ? device_unregister+0x14/0x40
> [<60375cde>] ? kunit_remove_resource+0x8e/0xd0
> [<606a24d0>] ? _raw_spin_unlock_irqrestore+0x0/0xb0
> [<60375323>] ? kunit_cleanup+0x63/0xb0
> [<60377a70>] ? kunit_generic_run_threadfn_adapter+0x0/0x30
> [<60377a86>] ? kunit_generic_run_threadfn_adapter+0x16/0x30
>
>>
>>> if (err)
>>> - return ERR_PTR(err);
>>> + return err;
>>>
>>> err = xe_shrinker_create(xe);
>>> if (err)
>>> - return ERR_PTR(err);
>>> + return err;
>>>
>>> xe->atomic_svm_timeslice_ms = 5;
>>> xe->min_run_period_lr_ms = 5;
>>>
>>> err = xe_irq_init(xe);
>>> if (err)
>>> - return ERR_PTR(err);
>>> + return err;
>>>
>>> xe_validation_device_init(&xe->val);
>>>
>>> @@ -536,7 +554,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>>>
>>> err = xe_pagemap_shrinker_create(xe);
>>> if (err)
>>> - return ERR_PTR(err);
>>> + return err;
>>>
>>> xa_init_flags(&xe->usm.asid_to_vm, XA_FLAGS_ALLOC);
>>>
>>> @@ -555,7 +573,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>>>
>>> err = xe_bo_pinned_init(xe);
>>> if (err)
>>> - return ERR_PTR(err);
>>> + return err;
>>>
>>> xe->preempt_fence_wq = alloc_ordered_workqueue("xe-preempt-fence-wq",
>>> WQ_MEM_RECLAIM);
>>> @@ -569,16 +587,15 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>>> * drmm_add_action_or_reset register above
>>> */
>>> drm_err(&xe->drm, "Failed to allocate xe workqueues\n");
>>> - return ERR_PTR(-ENOMEM);
>>> + return -ENOMEM;
>>> }
>>>
>>> err = drmm_mutex_init(&xe->drm, &xe->pmt.lock);
>>> if (err)
>>> - return ERR_PTR(err);
>>> + return err;
>>>
>>> - return xe;
>>> + return 0;
>>> }
>>> -ALLOW_ERROR_INJECTION(xe_device_create, ERRNO); /* See xe_pci_probe() */
>>
>> So, there are things allocated/initialized in xe_device_create() that
>> get deallocated/finalized in xe_device_destroy(). With this change, we
>> now have things extracted out of xe_device_create() into
>> xe_device_init_early(), and it appears that xe_device_destroy() is now
>> really the counterpart of the latter than the former.
>>
>> I think we should just call the function xe_device_init() and then
>> rename xe_device_destroy() to xe_device_fini().
>
> there is yet another small pending series that introduces drmm_alloc_workqueue
> and after that converts all WQ initializations into self-contained statements
>
> didn't include here, as it touches include/drm so can be done in its own pace
>
> but with that xe_device_destroy (which should never be called that way)
> will be greatly reduced, and even possibly completely removed after moving
> registration of some cleanup steps to xe_bo_dev_init and/or ttm_init
>
>>
>>>
>>> static bool xe_driver_flr_disabled(struct xe_device *xe)
>>> {
>>> diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h
>>> index 27cd2329b99f..975768a6a9c8 100644
>>> --- a/drivers/gpu/drm/xe/xe_device.h
>>> +++ b/drivers/gpu/drm/xe/xe_device.h
>>> @@ -44,6 +44,7 @@ static inline struct xe_device *ttm_to_xe_device(struct ttm_device *ttm)
>>> }
>>>
>>> struct xe_device *xe_device_create(struct pci_dev *pdev);
>>> +int xe_device_init_early(struct xe_device *xe);
>>
>> Right now we do not have any external users for this function. We could
>> keep it static until we get to use them in kunit.
>
> my kunit series just got too big so I've started posting smaller chunks
> don't really want to go into static/public noise just for few days delay
> between series
>
>>
>> That said, I think it would also make sense to separate it completely
>> from xe_device_create(), i.e., have xe_pci.c call the two functions
>> instead of xe_device_init_early() being implicitly called by
>> xe_device_create(). I think that would be more alligned with the
>> function names.
>
> hmm, maybe
>
> but that would likely require also extracting call to
>
> aperture_remove_conflicting_pci_devices
>
> and I'm not ready for that
>
> so IMO it's better to keep "xe_device_create()" as "Allocate and initialize"
> as we have now in the kernel-doc ;)
Fair.
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
>
>>
>> --
>> Gustavo Sousa
>>
>>> int xe_device_probe_early(struct xe_device *xe);
>>> int xe_device_probe(struct xe_device *xe);
>>> void xe_device_remove(struct xe_device *xe);
>>> --
>>> 2.47.1
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 4/6] drm/xe: Separate early xe_device initialization
2026-05-25 18:21 ` Gustavo Sousa
2026-05-25 18:57 ` Michal Wajdeczko
@ 2026-05-25 19:00 ` Gustavo Sousa
2026-05-25 19:14 ` Michal Wajdeczko
1 sibling, 1 reply; 30+ messages in thread
From: Gustavo Sousa @ 2026-05-25 19:00 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Michal Wajdeczko
Gustavo Sousa <gustavo.sousa@intel.com> writes:
> Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
>
>> We would like to initialize more of the xe_device struct also from
>> the kunit code, as it should be safe to use most of the generic drm
>> or xe components without doing any additional tweaks. Separate early
>> xe initialization code to a new function, so it can be reused.
>>
>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>> ---
>> drivers/gpu/drm/xe/xe_device.c | 39 ++++++++++++++++++++++++----------
>> drivers/gpu/drm/xe/xe_device.h | 1 +
>> 2 files changed, 29 insertions(+), 11 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
>> index b498147dcf61..7ba407f73a02 100644
>> --- a/drivers/gpu/drm/xe/xe_device.c
>> +++ b/drivers/gpu/drm/xe/xe_device.c
>> @@ -506,27 +506,45 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>> if (IS_ERR(xe))
>> return xe;
>>
>> + err = xe_device_init_early(xe);
>> + if (err)
>> + return ERR_PTR(err);
>> +
>> + return xe;
>> +}
>> +ALLOW_ERROR_INJECTION(xe_device_create, ERRNO); /* See xe_pci_probe() */
>> +
>> +/**
>> + * xe_device_init_early() - Initialize a new &xe_device instance
>> + * @xe: the &xe_device to initialize
>> + *
>> + * Return: 0 on success or a negative error code on failure.
>> + */
>> +int xe_device_init_early(struct xe_device *xe)
>> +{
>> + int err;
>> +
>> err = ttm_device_init(&xe->ttm, &xe_ttm_funcs, xe->drm.dev,
>> xe->drm.anon_inode->i_mapping,
>> xe->drm.vma_offset_manager, 0);
>> - if (WARN_ON(err))
>> - return ERR_PTR(err);
>> + if (err)
>> + return err;
>>
>> xe_bo_dev_init(&xe->bo_device);
>> err = drmm_add_action_or_reset(&xe->drm, xe_device_destroy, NULL);
>
> Curious: are the drmm_* calls going to work fine for the automated
> teardown when they are called from a kunit context?
>
> What about devm_* calls? From a quick look, I know that at least
> xe_bo_pinned_init() will make one of those.
>
>> if (err)
>> - return ERR_PTR(err);
>> + return err;
>>
>> err = xe_shrinker_create(xe);
>> if (err)
>> - return ERR_PTR(err);
>> + return err;
>>
>> xe->atomic_svm_timeslice_ms = 5;
>> xe->min_run_period_lr_ms = 5;
>>
>> err = xe_irq_init(xe);
>> if (err)
>> - return ERR_PTR(err);
>> + return err;
>>
>> xe_validation_device_init(&xe->val);
>>
>> @@ -536,7 +554,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>>
>> err = xe_pagemap_shrinker_create(xe);
>> if (err)
>> - return ERR_PTR(err);
>> + return err;
>>
>> xa_init_flags(&xe->usm.asid_to_vm, XA_FLAGS_ALLOC);
>>
>> @@ -555,7 +573,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>>
>> err = xe_bo_pinned_init(xe);
>> if (err)
>> - return ERR_PTR(err);
>> + return err;
>>
>> xe->preempt_fence_wq = alloc_ordered_workqueue("xe-preempt-fence-wq",
>> WQ_MEM_RECLAIM);
>> @@ -569,16 +587,15 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>> * drmm_add_action_or_reset register above
>> */
>> drm_err(&xe->drm, "Failed to allocate xe workqueues\n");
>> - return ERR_PTR(-ENOMEM);
>> + return -ENOMEM;
>> }
>>
>> err = drmm_mutex_init(&xe->drm, &xe->pmt.lock);
>> if (err)
>> - return ERR_PTR(err);
>> + return err;
>>
>> - return xe;
>> + return 0;
>> }
>> -ALLOW_ERROR_INJECTION(xe_device_create, ERRNO); /* See xe_pci_probe() */
>
> So, there are things allocated/initialized in xe_device_create() that
> get deallocated/finalized in xe_device_destroy(). With this change, we
> now have things extracted out of xe_device_create() into
> xe_device_init_early(), and it appears that xe_device_destroy() is now
> really the counterpart of the latter than the former.
>
> I think we should just call the function xe_device_init() and then
I guess it could still be called xe_device_init_early() for consistenty
with the naming for the other components of the driver, but I would
still rename xe_device_destroy() to xe_device_fini() to avoid people
mistakenly pairing it with xe_device_create().
Honestly, I think I prefer much more a _init_nohw() suffix than
_init_early(); that way we can pair with _fini_nohw() (as _fini_early()
would be a bit innacurate or ambiguous IMO). But that's a bit
off-topic...
--
Gustavo Sousa
> rename xe_device_destroy() to xe_device_fini().
>
>>
>> static bool xe_driver_flr_disabled(struct xe_device *xe)
>> {
>> diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h
>> index 27cd2329b99f..975768a6a9c8 100644
>> --- a/drivers/gpu/drm/xe/xe_device.h
>> +++ b/drivers/gpu/drm/xe/xe_device.h
>> @@ -44,6 +44,7 @@ static inline struct xe_device *ttm_to_xe_device(struct ttm_device *ttm)
>> }
>>
>> struct xe_device *xe_device_create(struct pci_dev *pdev);
>> +int xe_device_init_early(struct xe_device *xe);
>
> Right now we do not have any external users for this function. We could
> keep it static until we get to use them in kunit.
>
> That said, I think it would also make sense to separate it completely
> from xe_device_create(), i.e., have xe_pci.c call the two functions
> instead of xe_device_init_early() being implicitly called by
> xe_device_create(). I think that would be more alligned with the
> function names.
>
> --
> Gustavo Sousa
>
>> int xe_device_probe_early(struct xe_device *xe);
>> int xe_device_probe(struct xe_device *xe);
>> void xe_device_remove(struct xe_device *xe);
>> --
>> 2.47.1
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 4/6] drm/xe: Separate early xe_device initialization
2026-05-25 19:00 ` Gustavo Sousa
@ 2026-05-25 19:14 ` Michal Wajdeczko
0 siblings, 0 replies; 30+ messages in thread
From: Michal Wajdeczko @ 2026-05-25 19:14 UTC (permalink / raw)
To: Gustavo Sousa, intel-xe
On 5/25/2026 9:00 PM, Gustavo Sousa wrote:
> Gustavo Sousa <gustavo.sousa@intel.com> writes:
>
>> Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
>>
>>> We would like to initialize more of the xe_device struct also from
>>> the kunit code, as it should be safe to use most of the generic drm
>>> or xe components without doing any additional tweaks. Separate early
>>> xe initialization code to a new function, so it can be reused.
>>>
>>> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
>>> ---
>>> drivers/gpu/drm/xe/xe_device.c | 39 ++++++++++++++++++++++++----------
>>> drivers/gpu/drm/xe/xe_device.h | 1 +
>>> 2 files changed, 29 insertions(+), 11 deletions(-)
>>>
>>> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
>>> index b498147dcf61..7ba407f73a02 100644
>>> --- a/drivers/gpu/drm/xe/xe_device.c
>>> +++ b/drivers/gpu/drm/xe/xe_device.c
>>> @@ -506,27 +506,45 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>>> if (IS_ERR(xe))
>>> return xe;
>>>
>>> + err = xe_device_init_early(xe);
>>> + if (err)
>>> + return ERR_PTR(err);
>>> +
>>> + return xe;
>>> +}
>>> +ALLOW_ERROR_INJECTION(xe_device_create, ERRNO); /* See xe_pci_probe() */
>>> +
>>> +/**
>>> + * xe_device_init_early() - Initialize a new &xe_device instance
>>> + * @xe: the &xe_device to initialize
>>> + *
>>> + * Return: 0 on success or a negative error code on failure.
>>> + */
>>> +int xe_device_init_early(struct xe_device *xe)
>>> +{
>>> + int err;
>>> +
>>> err = ttm_device_init(&xe->ttm, &xe_ttm_funcs, xe->drm.dev,
>>> xe->drm.anon_inode->i_mapping,
>>> xe->drm.vma_offset_manager, 0);
>>> - if (WARN_ON(err))
>>> - return ERR_PTR(err);
>>> + if (err)
>>> + return err;
>>>
>>> xe_bo_dev_init(&xe->bo_device);
>>> err = drmm_add_action_or_reset(&xe->drm, xe_device_destroy, NULL);
>>
>> Curious: are the drmm_* calls going to work fine for the automated
>> teardown when they are called from a kunit context?
>>
>> What about devm_* calls? From a quick look, I know that at least
>> xe_bo_pinned_init() will make one of those.
>>
>>> if (err)
>>> - return ERR_PTR(err);
>>> + return err;
>>>
>>> err = xe_shrinker_create(xe);
>>> if (err)
>>> - return ERR_PTR(err);
>>> + return err;
>>>
>>> xe->atomic_svm_timeslice_ms = 5;
>>> xe->min_run_period_lr_ms = 5;
>>>
>>> err = xe_irq_init(xe);
>>> if (err)
>>> - return ERR_PTR(err);
>>> + return err;
>>>
>>> xe_validation_device_init(&xe->val);
>>>
>>> @@ -536,7 +554,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>>>
>>> err = xe_pagemap_shrinker_create(xe);
>>> if (err)
>>> - return ERR_PTR(err);
>>> + return err;
>>>
>>> xa_init_flags(&xe->usm.asid_to_vm, XA_FLAGS_ALLOC);
>>>
>>> @@ -555,7 +573,7 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>>>
>>> err = xe_bo_pinned_init(xe);
>>> if (err)
>>> - return ERR_PTR(err);
>>> + return err;
>>>
>>> xe->preempt_fence_wq = alloc_ordered_workqueue("xe-preempt-fence-wq",
>>> WQ_MEM_RECLAIM);
>>> @@ -569,16 +587,15 @@ struct xe_device *xe_device_create(struct pci_dev *pdev)
>>> * drmm_add_action_or_reset register above
>>> */
>>> drm_err(&xe->drm, "Failed to allocate xe workqueues\n");
>>> - return ERR_PTR(-ENOMEM);
>>> + return -ENOMEM;
>>> }
>>>
>>> err = drmm_mutex_init(&xe->drm, &xe->pmt.lock);
>>> if (err)
>>> - return ERR_PTR(err);
>>> + return err;
>>>
>>> - return xe;
>>> + return 0;
>>> }
>>> -ALLOW_ERROR_INJECTION(xe_device_create, ERRNO); /* See xe_pci_probe() */
>>
>> So, there are things allocated/initialized in xe_device_create() that
>> get deallocated/finalized in xe_device_destroy(). With this change, we
>> now have things extracted out of xe_device_create() into
>> xe_device_init_early(), and it appears that xe_device_destroy() is now
>> really the counterpart of the latter than the former.
>>
>> I think we should just call the function xe_device_init() and then
>
> I guess it could still be called xe_device_init_early() for consistenty
> with the naming for the other components of the driver, but I would
> still rename xe_device_destroy() to xe_device_fini() to avoid people
> mistakenly pairing it with xe_device_create().
hmm, but there is nothing to pair really
xe_device_destroy is not a callable function, it's a private action
and likely should be called __fini_xe_device() or not needed at all,
once we will move to more granular cleanup actions
>
> Honestly, I think I prefer much more a _init_nohw() suffix than
> _init_early(); that way we can pair with _fini_nohw() (as _fini_early()
> would be a bit innacurate or ambiguous IMO). But that's a bit
> off-topic...
hmm, but ideally there should be no _fini_nohw kind of actions
we should just reuse drmm (managed) versions of all alloc/init
functions for our software (nohw) state
>
> --
> Gustavo Sousa
>
>> rename xe_device_destroy() to xe_device_fini().
>>
>>>
>>> static bool xe_driver_flr_disabled(struct xe_device *xe)
>>> {
>>> diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h
>>> index 27cd2329b99f..975768a6a9c8 100644
>>> --- a/drivers/gpu/drm/xe/xe_device.h
>>> +++ b/drivers/gpu/drm/xe/xe_device.h
>>> @@ -44,6 +44,7 @@ static inline struct xe_device *ttm_to_xe_device(struct ttm_device *ttm)
>>> }
>>>
>>> struct xe_device *xe_device_create(struct pci_dev *pdev);
>>> +int xe_device_init_early(struct xe_device *xe);
>>
>> Right now we do not have any external users for this function. We could
>> keep it static until we get to use them in kunit.
>>
>> That said, I think it would also make sense to separate it completely
>> from xe_device_create(), i.e., have xe_pci.c call the two functions
>> instead of xe_device_init_early() being implicitly called by
>> xe_device_create(). I think that would be more alligned with the
>> function names.
>>
>> --
>> Gustavo Sousa
>>
>>> int xe_device_probe_early(struct xe_device *xe);
>>> int xe_device_probe(struct xe_device *xe);
>>> void xe_device_remove(struct xe_device *xe);
>>> --
>>> 2.47.1
^ permalink raw reply [flat|nested] 30+ messages in thread
* Re: [PATCH 4/6] drm/xe: Separate early xe_device initialization
2026-05-25 16:05 ` [PATCH 4/6] drm/xe: Separate early xe_device initialization Michal Wajdeczko
2026-05-25 18:21 ` Gustavo Sousa
@ 2026-05-25 18:22 ` Raag Jadav
1 sibling, 0 replies; 30+ messages in thread
From: Raag Jadav @ 2026-05-25 18:22 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
On Mon, May 25, 2026 at 06:05:27PM +0200, Michal Wajdeczko wrote:
> We would like to initialize more of the xe_device struct also from
> the kunit code, as it should be safe to use most of the generic drm
> or xe components without doing any additional tweaks. Separate early
> xe initialization code to a new function, so it can be reused.
Even without kunit explanation, it's fair enough independent refactor.
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Raag Jadav <raag.jadav@intel.com>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 5/6] drm/xe/pm: Don't access device in init_early()
2026-05-25 16:05 [PATCH 0/6] drm/xe: Misc initialization improvements Michal Wajdeczko
` (3 preceding siblings ...)
2026-05-25 16:05 ` [PATCH 4/6] drm/xe: Separate early xe_device initialization Michal Wajdeczko
@ 2026-05-25 16:05 ` Michal Wajdeczko
2026-05-25 18:30 ` Raag Jadav
` (2 more replies)
2026-05-25 16:05 ` [PATCH 6/6] drm/xe/pm: Do early initialization " Michal Wajdeczko
` (5 subsequent siblings)
10 siblings, 3 replies; 30+ messages in thread
From: Michal Wajdeczko @ 2026-05-25 16:05 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Rodrigo Vivi
We should separate software-only state initialization from anything
else that requires access to the device's hardware. Extract d3cold
capability detection into a new function. Add simple kernel-doc for
updated functions here.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
---
drivers/gpu/drm/xe/xe_device.c | 4 ++++
drivers/gpu/drm/xe/xe_pci.c | 5 +----
drivers/gpu/drm/xe/xe_pm.c | 27 ++++++++++++++++++++++++++-
drivers/gpu/drm/xe/xe_pm.h | 1 +
4 files changed, 32 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
index 7ba407f73a02..d224861b6f6f 100644
--- a/drivers/gpu/drm/xe/xe_device.c
+++ b/drivers/gpu/drm/xe/xe_device.c
@@ -594,6 +594,10 @@ int xe_device_init_early(struct xe_device *xe)
if (err)
return err;
+ err = xe_pm_init_early(xe);
+ if (err)
+ return err;
+
return 0;
}
diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
index 6b1a4cb7ccb0..35e611cd2e29 100644
--- a/drivers/gpu/drm/xe/xe_pci.c
+++ b/drivers/gpu/drm/xe/xe_pci.c
@@ -1167,7 +1167,7 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
str_yes_no(xe_device_has_sriov(xe)),
xe_sriov_mode_to_string(xe_device_sriov_mode(xe)));
- err = xe_pm_init_early(xe);
+ err = xe_pm_probe(xe);
if (err)
return err;
@@ -1179,9 +1179,6 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (err)
goto err_driver_cleanup;
- drm_dbg(&xe->drm, "d3cold: capable=%s\n",
- str_yes_no(xe->d3cold.capable));
-
return 0;
err_driver_cleanup:
diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
index d4672eb07476..5d1a3a26cb6e 100644
--- a/drivers/gpu/drm/xe/xe_pm.c
+++ b/drivers/gpu/drm/xe/xe_pm.c
@@ -24,6 +24,7 @@
#include "xe_irq.h"
#include "xe_late_bind_fw.h"
#include "xe_pcode.h"
+#include "xe_printk.h"
#include "xe_pxp.h"
#include "xe_sriov_vf_ccs.h"
#include "xe_sysctrl.h"
@@ -349,6 +350,15 @@ static void xe_pm_runtime_init(struct xe_device *xe)
pm_runtime_put(dev);
}
+/**
+ * xe_pm_init_early() - Initialize Xe Power Management
+ * @xe: the &xe_device instance
+ *
+ * Initialize everything that is a "software-only" state that does not
+ * require access to any of the device's hardware data.
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
int xe_pm_init_early(struct xe_device *xe)
{
int err;
@@ -363,11 +373,26 @@ int xe_pm_init_early(struct xe_device *xe)
if (err)
return err;
- xe->d3cold.capable = xe_pm_pci_d3cold_capable(xe);
return 0;
}
ALLOW_ERROR_INJECTION(xe_pm_init_early, ERRNO); /* See xe_pci_probe() */
+/**
+ * xe_pm_probe() - Initialize Xe Power Management
+ * @xe: the &xe_device instance
+ *
+ * Check d3cold capability.
+ *
+ * Return: 0 on success or a negative error code on failure.
+ */
+int xe_pm_probe(struct xe_device *xe)
+{
+ xe->d3cold.capable = xe_pm_pci_d3cold_capable(xe);
+ xe_dbg(xe, "d3cold: capable=%s\n", str_yes_no(xe->d3cold.capable));
+
+ return 0;
+}
+
static u32 vram_threshold_value(struct xe_device *xe)
{
if (xe->info.platform == XE_BATTLEMAGE) {
diff --git a/drivers/gpu/drm/xe/xe_pm.h b/drivers/gpu/drm/xe/xe_pm.h
index 6b27039e7b2d..6d5ab09cb769 100644
--- a/drivers/gpu/drm/xe/xe_pm.h
+++ b/drivers/gpu/drm/xe/xe_pm.h
@@ -17,6 +17,7 @@ int xe_pm_suspend(struct xe_device *xe);
int xe_pm_resume(struct xe_device *xe);
int xe_pm_init_early(struct xe_device *xe);
+int xe_pm_probe(struct xe_device *xe);
int xe_pm_init(struct xe_device *xe);
void xe_pm_fini(struct xe_device *xe);
bool xe_pm_runtime_suspended(struct xe_device *xe);
--
2.47.1
^ permalink raw reply related [flat|nested] 30+ messages in thread* Re: [PATCH 5/6] drm/xe/pm: Don't access device in init_early()
2026-05-25 16:05 ` [PATCH 5/6] drm/xe/pm: Don't access device in init_early() Michal Wajdeczko
@ 2026-05-25 18:30 ` Raag Jadav
2026-05-25 18:47 ` Gustavo Sousa
2026-05-27 15:46 ` Rodrigo Vivi
2 siblings, 0 replies; 30+ messages in thread
From: Raag Jadav @ 2026-05-25 18:30 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe, Rodrigo Vivi
On Mon, May 25, 2026 at 06:05:28PM +0200, Michal Wajdeczko wrote:
> We should separate software-only state initialization from anything
> else that requires access to the device's hardware. Extract d3cold
> capability detection into a new function. Add simple kernel-doc for
> updated functions here.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> ---
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 4 ++++
> drivers/gpu/drm/xe/xe_pci.c | 5 +----
> drivers/gpu/drm/xe/xe_pm.c | 27 ++++++++++++++++++++++++++-
> drivers/gpu/drm/xe/xe_pm.h | 1 +
> 4 files changed, 32 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 7ba407f73a02..d224861b6f6f 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -594,6 +594,10 @@ int xe_device_init_early(struct xe_device *xe)
> if (err)
> return err;
>
> + err = xe_pm_init_early(xe);
> + if (err)
> + return err;
> +
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index 6b1a4cb7ccb0..35e611cd2e29 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -1167,7 +1167,7 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> str_yes_no(xe_device_has_sriov(xe)),
> xe_sriov_mode_to_string(xe_device_sriov_mode(xe)));
>
> - err = xe_pm_init_early(xe);
> + err = xe_pm_probe(xe);
> if (err)
> return err;
I couldn't figure out from the diff here but we need d3cold.capable value
before xe_device_probe(), so assuming it's not broken
Reviewed-by: Raag Jadav <raag.jadav@intel.com>
> @@ -1179,9 +1179,6 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> if (err)
> goto err_driver_cleanup;
>
> - drm_dbg(&xe->drm, "d3cold: capable=%s\n",
> - str_yes_no(xe->d3cold.capable));
> -
> return 0;
>
> err_driver_cleanup:
> diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> index d4672eb07476..5d1a3a26cb6e 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -24,6 +24,7 @@
> #include "xe_irq.h"
> #include "xe_late_bind_fw.h"
> #include "xe_pcode.h"
> +#include "xe_printk.h"
> #include "xe_pxp.h"
> #include "xe_sriov_vf_ccs.h"
> #include "xe_sysctrl.h"
> @@ -349,6 +350,15 @@ static void xe_pm_runtime_init(struct xe_device *xe)
> pm_runtime_put(dev);
> }
>
> +/**
> + * xe_pm_init_early() - Initialize Xe Power Management
> + * @xe: the &xe_device instance
> + *
> + * Initialize everything that is a "software-only" state that does not
> + * require access to any of the device's hardware data.
> + *
> + * Return: 0 on success or a negative error code on failure.
> + */
> int xe_pm_init_early(struct xe_device *xe)
> {
> int err;
> @@ -363,11 +373,26 @@ int xe_pm_init_early(struct xe_device *xe)
> if (err)
> return err;
>
> - xe->d3cold.capable = xe_pm_pci_d3cold_capable(xe);
> return 0;
> }
> ALLOW_ERROR_INJECTION(xe_pm_init_early, ERRNO); /* See xe_pci_probe() */
>
> +/**
> + * xe_pm_probe() - Initialize Xe Power Management
> + * @xe: the &xe_device instance
> + *
> + * Check d3cold capability.
> + *
> + * Return: 0 on success or a negative error code on failure.
> + */
> +int xe_pm_probe(struct xe_device *xe)
> +{
> + xe->d3cold.capable = xe_pm_pci_d3cold_capable(xe);
> + xe_dbg(xe, "d3cold: capable=%s\n", str_yes_no(xe->d3cold.capable));
> +
> + return 0;
> +}
> +
> static u32 vram_threshold_value(struct xe_device *xe)
> {
> if (xe->info.platform == XE_BATTLEMAGE) {
> diff --git a/drivers/gpu/drm/xe/xe_pm.h b/drivers/gpu/drm/xe/xe_pm.h
> index 6b27039e7b2d..6d5ab09cb769 100644
> --- a/drivers/gpu/drm/xe/xe_pm.h
> +++ b/drivers/gpu/drm/xe/xe_pm.h
> @@ -17,6 +17,7 @@ int xe_pm_suspend(struct xe_device *xe);
> int xe_pm_resume(struct xe_device *xe);
>
> int xe_pm_init_early(struct xe_device *xe);
> +int xe_pm_probe(struct xe_device *xe);
> int xe_pm_init(struct xe_device *xe);
> void xe_pm_fini(struct xe_device *xe);
> bool xe_pm_runtime_suspended(struct xe_device *xe);
> --
> 2.47.1
>
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 5/6] drm/xe/pm: Don't access device in init_early()
2026-05-25 16:05 ` [PATCH 5/6] drm/xe/pm: Don't access device in init_early() Michal Wajdeczko
2026-05-25 18:30 ` Raag Jadav
@ 2026-05-25 18:47 ` Gustavo Sousa
2026-05-27 15:46 ` Rodrigo Vivi
2 siblings, 0 replies; 30+ messages in thread
From: Gustavo Sousa @ 2026-05-25 18:47 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe; +Cc: Michal Wajdeczko, Rodrigo Vivi
Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
> We should separate software-only state initialization from anything
> else that requires access to the device's hardware. Extract d3cold
> capability detection into a new function. Add simple kernel-doc for
> updated functions here.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 4 ++++
> drivers/gpu/drm/xe/xe_pci.c | 5 +----
> drivers/gpu/drm/xe/xe_pm.c | 27 ++++++++++++++++++++++++++-
> drivers/gpu/drm/xe/xe_pm.h | 1 +
> 4 files changed, 32 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 7ba407f73a02..d224861b6f6f 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -594,6 +594,10 @@ int xe_device_init_early(struct xe_device *xe)
> if (err)
> return err;
>
> + err = xe_pm_init_early(xe);
> + if (err)
> + return err;
> +
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index 6b1a4cb7ccb0..35e611cd2e29 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -1167,7 +1167,7 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> str_yes_no(xe_device_has_sriov(xe)),
> xe_sriov_mode_to_string(xe_device_sriov_mode(xe)));
>
> - err = xe_pm_init_early(xe);
> + err = xe_pm_probe(xe);
> if (err)
> return err;
>
> @@ -1179,9 +1179,6 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> if (err)
> goto err_driver_cleanup;
>
> - drm_dbg(&xe->drm, "d3cold: capable=%s\n",
> - str_yes_no(xe->d3cold.capable));
> -
> return 0;
>
> err_driver_cleanup:
> diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> index d4672eb07476..5d1a3a26cb6e 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -24,6 +24,7 @@
> #include "xe_irq.h"
> #include "xe_late_bind_fw.h"
> #include "xe_pcode.h"
> +#include "xe_printk.h"
> #include "xe_pxp.h"
> #include "xe_sriov_vf_ccs.h"
> #include "xe_sysctrl.h"
> @@ -349,6 +350,15 @@ static void xe_pm_runtime_init(struct xe_device *xe)
> pm_runtime_put(dev);
> }
>
> +/**
> + * xe_pm_init_early() - Initialize Xe Power Management
> + * @xe: the &xe_device instance
> + *
> + * Initialize everything that is a "software-only" state that does not
> + * require access to any of the device's hardware data.
> + *
> + * Return: 0 on success or a negative error code on failure.
> + */
> int xe_pm_init_early(struct xe_device *xe)
> {
> int err;
> @@ -363,11 +373,26 @@ int xe_pm_init_early(struct xe_device *xe)
> if (err)
> return err;
>
> - xe->d3cold.capable = xe_pm_pci_d3cold_capable(xe);
> return 0;
> }
> ALLOW_ERROR_INJECTION(xe_pm_init_early, ERRNO); /* See xe_pci_probe() */
>
> +/**
> + * xe_pm_probe() - Initialize Xe Power Management
> + * @xe: the &xe_device instance
> + *
> + * Check d3cold capability.
> + *
> + * Return: 0 on success or a negative error code on failure.
> + */
> +int xe_pm_probe(struct xe_device *xe)
> +{
> + xe->d3cold.capable = xe_pm_pci_d3cold_capable(xe);
> + xe_dbg(xe, "d3cold: capable=%s\n", str_yes_no(xe->d3cold.capable));
> +
> + return 0;
> +}
> +
> static u32 vram_threshold_value(struct xe_device *xe)
> {
> if (xe->info.platform == XE_BATTLEMAGE) {
> diff --git a/drivers/gpu/drm/xe/xe_pm.h b/drivers/gpu/drm/xe/xe_pm.h
> index 6b27039e7b2d..6d5ab09cb769 100644
> --- a/drivers/gpu/drm/xe/xe_pm.h
> +++ b/drivers/gpu/drm/xe/xe_pm.h
> @@ -17,6 +17,7 @@ int xe_pm_suspend(struct xe_device *xe);
> int xe_pm_resume(struct xe_device *xe);
>
> int xe_pm_init_early(struct xe_device *xe);
> +int xe_pm_probe(struct xe_device *xe);
> int xe_pm_init(struct xe_device *xe);
> void xe_pm_fini(struct xe_device *xe);
> bool xe_pm_runtime_suspended(struct xe_device *xe);
> --
> 2.47.1
^ permalink raw reply [flat|nested] 30+ messages in thread* Re: [PATCH 5/6] drm/xe/pm: Don't access device in init_early()
2026-05-25 16:05 ` [PATCH 5/6] drm/xe/pm: Don't access device in init_early() Michal Wajdeczko
2026-05-25 18:30 ` Raag Jadav
2026-05-25 18:47 ` Gustavo Sousa
@ 2026-05-27 15:46 ` Rodrigo Vivi
2 siblings, 0 replies; 30+ messages in thread
From: Rodrigo Vivi @ 2026-05-27 15:46 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
On Mon, May 25, 2026 at 06:05:28PM +0200, Michal Wajdeczko wrote:
> We should separate software-only state initialization from anything
> else that requires access to the device's hardware. Extract d3cold
> capability detection into a new function. Add simple kernel-doc for
> updated functions here.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
> ---
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
> ---
> drivers/gpu/drm/xe/xe_device.c | 4 ++++
> drivers/gpu/drm/xe/xe_pci.c | 5 +----
> drivers/gpu/drm/xe/xe_pm.c | 27 ++++++++++++++++++++++++++-
> drivers/gpu/drm/xe/xe_pm.h | 1 +
> 4 files changed, 32 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 7ba407f73a02..d224861b6f6f 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -594,6 +594,10 @@ int xe_device_init_early(struct xe_device *xe)
> if (err)
> return err;
>
> + err = xe_pm_init_early(xe);
> + if (err)
> + return err;
> +
> return 0;
> }
>
> diff --git a/drivers/gpu/drm/xe/xe_pci.c b/drivers/gpu/drm/xe/xe_pci.c
> index 6b1a4cb7ccb0..35e611cd2e29 100644
> --- a/drivers/gpu/drm/xe/xe_pci.c
> +++ b/drivers/gpu/drm/xe/xe_pci.c
> @@ -1167,7 +1167,7 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> str_yes_no(xe_device_has_sriov(xe)),
> xe_sriov_mode_to_string(xe_device_sriov_mode(xe)));
>
> - err = xe_pm_init_early(xe);
> + err = xe_pm_probe(xe);
> if (err)
> return err;
>
> @@ -1179,9 +1179,6 @@ static int xe_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
> if (err)
> goto err_driver_cleanup;
>
> - drm_dbg(&xe->drm, "d3cold: capable=%s\n",
> - str_yes_no(xe->d3cold.capable));
> -
> return 0;
>
> err_driver_cleanup:
> diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> index d4672eb07476..5d1a3a26cb6e 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -24,6 +24,7 @@
> #include "xe_irq.h"
> #include "xe_late_bind_fw.h"
> #include "xe_pcode.h"
> +#include "xe_printk.h"
> #include "xe_pxp.h"
> #include "xe_sriov_vf_ccs.h"
> #include "xe_sysctrl.h"
> @@ -349,6 +350,15 @@ static void xe_pm_runtime_init(struct xe_device *xe)
> pm_runtime_put(dev);
> }
>
> +/**
> + * xe_pm_init_early() - Initialize Xe Power Management
> + * @xe: the &xe_device instance
> + *
> + * Initialize everything that is a "software-only" state that does not
> + * require access to any of the device's hardware data.
> + *
> + * Return: 0 on success or a negative error code on failure.
> + */
> int xe_pm_init_early(struct xe_device *xe)
> {
> int err;
> @@ -363,11 +373,26 @@ int xe_pm_init_early(struct xe_device *xe)
> if (err)
> return err;
>
> - xe->d3cold.capable = xe_pm_pci_d3cold_capable(xe);
> return 0;
> }
> ALLOW_ERROR_INJECTION(xe_pm_init_early, ERRNO); /* See xe_pci_probe() */
>
> +/**
> + * xe_pm_probe() - Initialize Xe Power Management
> + * @xe: the &xe_device instance
> + *
> + * Check d3cold capability.
> + *
> + * Return: 0 on success or a negative error code on failure.
> + */
> +int xe_pm_probe(struct xe_device *xe)
> +{
> + xe->d3cold.capable = xe_pm_pci_d3cold_capable(xe);
> + xe_dbg(xe, "d3cold: capable=%s\n", str_yes_no(xe->d3cold.capable));
> +
> + return 0;
> +}
> +
> static u32 vram_threshold_value(struct xe_device *xe)
> {
> if (xe->info.platform == XE_BATTLEMAGE) {
> diff --git a/drivers/gpu/drm/xe/xe_pm.h b/drivers/gpu/drm/xe/xe_pm.h
> index 6b27039e7b2d..6d5ab09cb769 100644
> --- a/drivers/gpu/drm/xe/xe_pm.h
> +++ b/drivers/gpu/drm/xe/xe_pm.h
> @@ -17,6 +17,7 @@ int xe_pm_suspend(struct xe_device *xe);
> int xe_pm_resume(struct xe_device *xe);
>
> int xe_pm_init_early(struct xe_device *xe);
> +int xe_pm_probe(struct xe_device *xe);
> int xe_pm_init(struct xe_device *xe);
> void xe_pm_fini(struct xe_device *xe);
> bool xe_pm_runtime_suspended(struct xe_device *xe);
> --
> 2.47.1
>
^ permalink raw reply [flat|nested] 30+ messages in thread
* [PATCH 6/6] drm/xe/pm: Do early initialization in init_early()
2026-05-25 16:05 [PATCH 0/6] drm/xe: Misc initialization improvements Michal Wajdeczko
` (4 preceding siblings ...)
2026-05-25 16:05 ` [PATCH 5/6] drm/xe/pm: Don't access device in init_early() Michal Wajdeczko
@ 2026-05-25 16:05 ` Michal Wajdeczko
2026-05-25 18:47 ` Gustavo Sousa
2026-05-25 16:36 ` ✓ CI.KUnit: success for drm/xe: Misc initialization improvements Patchwork
` (4 subsequent siblings)
10 siblings, 1 reply; 30+ messages in thread
From: Michal Wajdeczko @ 2026-05-25 16:05 UTC (permalink / raw)
To: intel-xe; +Cc: Michal Wajdeczko, Rodrigo Vivi, Thomas Hellström
There is no need nor gain in splitting mutex or list initializations
between two init functions as all of this is just pure software state
and all this could be done at once.
Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
---
drivers/gpu/drm/xe/xe_pm.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
index 5d1a3a26cb6e..99562f691080 100644
--- a/drivers/gpu/drm/xe/xe_pm.c
+++ b/drivers/gpu/drm/xe/xe_pm.c
@@ -363,6 +363,9 @@ int xe_pm_init_early(struct xe_device *xe)
{
int err;
+ init_completion(&xe->pm_block);
+ complete_all(&xe->pm_block);
+ INIT_LIST_HEAD(&xe->rebind_resume_list);
INIT_LIST_HEAD(&xe->mem_access.vram_userfault.list);
err = drmm_mutex_init(&xe->drm, &xe->mem_access.vram_userfault.lock);
@@ -373,6 +376,10 @@ int xe_pm_init_early(struct xe_device *xe)
if (err)
return err;
+ err = drmm_mutex_init(&xe->drm, &xe->rebind_resume_lock);
+ if (err)
+ return err;
+
return 0;
}
ALLOW_ERROR_INJECTION(xe_pm_init_early, ERRNO); /* See xe_pci_probe() */
@@ -484,14 +491,6 @@ int xe_pm_init(struct xe_device *xe)
if (err)
return err;
- err = drmm_mutex_init(&xe->drm, &xe->rebind_resume_lock);
- if (err)
- goto err_unregister;
-
- init_completion(&xe->pm_block);
- complete_all(&xe->pm_block);
- INIT_LIST_HEAD(&xe->rebind_resume_list);
-
/* For now suspend/resume is only allowed with GuC */
if (!xe_device_uc_enabled(xe))
return 0;
--
2.47.1
^ permalink raw reply related [flat|nested] 30+ messages in thread* Re: [PATCH 6/6] drm/xe/pm: Do early initialization in init_early()
2026-05-25 16:05 ` [PATCH 6/6] drm/xe/pm: Do early initialization " Michal Wajdeczko
@ 2026-05-25 18:47 ` Gustavo Sousa
0 siblings, 0 replies; 30+ messages in thread
From: Gustavo Sousa @ 2026-05-25 18:47 UTC (permalink / raw)
To: Michal Wajdeczko, intel-xe
Cc: Michal Wajdeczko, Rodrigo Vivi, Thomas Hellström
Michal Wajdeczko <michal.wajdeczko@intel.com> writes:
> There is no need nor gain in splitting mutex or list initializations
> between two init functions as all of this is just pure software state
> and all this could be done at once.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
> Cc: Thomas Hellström <thomas.hellstrom@linux.intel.com>
> ---
> drivers/gpu/drm/xe/xe_pm.c | 15 +++++++--------
> 1 file changed, 7 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_pm.c b/drivers/gpu/drm/xe/xe_pm.c
> index 5d1a3a26cb6e..99562f691080 100644
> --- a/drivers/gpu/drm/xe/xe_pm.c
> +++ b/drivers/gpu/drm/xe/xe_pm.c
> @@ -363,6 +363,9 @@ int xe_pm_init_early(struct xe_device *xe)
> {
> int err;
>
> + init_completion(&xe->pm_block);
> + complete_all(&xe->pm_block);
> + INIT_LIST_HEAD(&xe->rebind_resume_list);
> INIT_LIST_HEAD(&xe->mem_access.vram_userfault.list);
>
> err = drmm_mutex_init(&xe->drm, &xe->mem_access.vram_userfault.lock);
> @@ -373,6 +376,10 @@ int xe_pm_init_early(struct xe_device *xe)
> if (err)
> return err;
>
> + err = drmm_mutex_init(&xe->drm, &xe->rebind_resume_lock);
> + if (err)
> + return err;
> +
> return 0;
> }
> ALLOW_ERROR_INJECTION(xe_pm_init_early, ERRNO); /* See xe_pci_probe() */
> @@ -484,14 +491,6 @@ int xe_pm_init(struct xe_device *xe)
> if (err)
> return err;
>
> - err = drmm_mutex_init(&xe->drm, &xe->rebind_resume_lock);
> - if (err)
> - goto err_unregister;
> -
> - init_completion(&xe->pm_block);
> - complete_all(&xe->pm_block);
> - INIT_LIST_HEAD(&xe->rebind_resume_list);
> -
> /* For now suspend/resume is only allowed with GuC */
> if (!xe_device_uc_enabled(xe))
> return 0;
> --
> 2.47.1
^ permalink raw reply [flat|nested] 30+ messages in thread
* ✓ CI.KUnit: success for drm/xe: Misc initialization improvements
2026-05-25 16:05 [PATCH 0/6] drm/xe: Misc initialization improvements Michal Wajdeczko
` (5 preceding siblings ...)
2026-05-25 16:05 ` [PATCH 6/6] drm/xe/pm: Do early initialization " Michal Wajdeczko
@ 2026-05-25 16:36 ` Patchwork
2026-05-25 17:42 ` ✓ Xe.CI.BAT: " Patchwork
` (3 subsequent siblings)
10 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2026-05-25 16:36 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
== Series Details ==
Series: drm/xe: Misc initialization improvements
URL : https://patchwork.freedesktop.org/series/167227/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[16:35:30] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:35:34] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[16:36:05] Starting KUnit Kernel (1/1)...
[16:36:05] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:36:05] ================== guc_buf (11 subtests) ===================
[16:36:05] [PASSED] test_smallest
[16:36:05] [PASSED] test_largest
[16:36:05] [PASSED] test_granular
[16:36:05] [PASSED] test_unique
[16:36:05] [PASSED] test_overlap
[16:36:05] [PASSED] test_reusable
[16:36:05] [PASSED] test_too_big
[16:36:05] [PASSED] test_flush
[16:36:05] [PASSED] test_lookup
[16:36:05] [PASSED] test_data
[16:36:05] [PASSED] test_class
[16:36:05] ===================== [PASSED] guc_buf =====================
[16:36:05] =================== guc_dbm (7 subtests) ===================
[16:36:05] [PASSED] test_empty
[16:36:05] [PASSED] test_default
[16:36:05] ======================== test_size ========================
[16:36:05] [PASSED] 4
[16:36:05] [PASSED] 8
[16:36:05] [PASSED] 32
[16:36:05] [PASSED] 256
[16:36:05] ==================== [PASSED] test_size ====================
[16:36:05] ======================= test_reuse ========================
[16:36:05] [PASSED] 4
[16:36:05] [PASSED] 8
[16:36:05] [PASSED] 32
[16:36:05] [PASSED] 256
[16:36:05] =================== [PASSED] test_reuse ====================
[16:36:05] =================== test_range_overlap ====================
[16:36:05] [PASSED] 4
[16:36:05] [PASSED] 8
[16:36:05] [PASSED] 32
[16:36:05] [PASSED] 256
[16:36:05] =============== [PASSED] test_range_overlap ================
[16:36:05] =================== test_range_compact ====================
[16:36:05] [PASSED] 4
[16:36:05] [PASSED] 8
[16:36:05] [PASSED] 32
[16:36:05] [PASSED] 256
[16:36:05] =============== [PASSED] test_range_compact ================
[16:36:05] ==================== test_range_spare =====================
[16:36:05] [PASSED] 4
[16:36:05] [PASSED] 8
[16:36:05] [PASSED] 32
[16:36:05] [PASSED] 256
[16:36:05] ================ [PASSED] test_range_spare =================
[16:36:05] ===================== [PASSED] guc_dbm =====================
[16:36:05] =================== guc_idm (6 subtests) ===================
[16:36:05] [PASSED] bad_init
[16:36:05] [PASSED] no_init
[16:36:05] [PASSED] init_fini
[16:36:05] [PASSED] check_used
[16:36:05] [PASSED] check_quota
[16:36:05] [PASSED] check_all
[16:36:05] ===================== [PASSED] guc_idm =====================
[16:36:05] ================== no_relay (3 subtests) ===================
[16:36:05] [PASSED] xe_drops_guc2pf_if_not_ready
[16:36:05] [PASSED] xe_drops_guc2vf_if_not_ready
[16:36:05] [PASSED] xe_rejects_send_if_not_ready
[16:36:05] ==================== [PASSED] no_relay =====================
[16:36:05] ================== pf_relay (14 subtests) ==================
[16:36:05] [PASSED] pf_rejects_guc2pf_too_short
[16:36:05] [PASSED] pf_rejects_guc2pf_too_long
[16:36:05] [PASSED] pf_rejects_guc2pf_no_payload
[16:36:05] [PASSED] pf_fails_no_payload
[16:36:05] [PASSED] pf_fails_bad_origin
[16:36:05] [PASSED] pf_fails_bad_type
[16:36:05] [PASSED] pf_txn_reports_error
[16:36:05] [PASSED] pf_txn_sends_pf2guc
[16:36:05] [PASSED] pf_sends_pf2guc
[16:36:05] [SKIPPED] pf_loopback_nop
[16:36:05] [SKIPPED] pf_loopback_echo
[16:36:05] [SKIPPED] pf_loopback_fail
[16:36:05] [SKIPPED] pf_loopback_busy
[16:36:05] [SKIPPED] pf_loopback_retry
[16:36:05] ==================== [PASSED] pf_relay =====================
[16:36:05] ================== vf_relay (3 subtests) ===================
[16:36:05] [PASSED] vf_rejects_guc2vf_too_short
[16:36:05] [PASSED] vf_rejects_guc2vf_too_long
[16:36:05] [PASSED] vf_rejects_guc2vf_no_payload
[16:36:05] ==================== [PASSED] vf_relay =====================
[16:36:05] ================ pf_gt_config (9 subtests) =================
[16:36:05] [PASSED] fair_contexts_1vf
[16:36:05] [PASSED] fair_doorbells_1vf
[16:36:05] [PASSED] fair_ggtt_1vf
[16:36:05] ====================== fair_vram_1vf ======================
[16:36:05] [PASSED] 3.50 GiB
[16:36:05] [PASSED] 11.5 GiB
[16:36:05] [PASSED] 15.5 GiB
[16:36:05] [PASSED] 31.5 GiB
[16:36:05] [PASSED] 63.5 GiB
[16:36:05] [PASSED] 1.91 GiB
[16:36:05] ================== [PASSED] fair_vram_1vf ==================
[16:36:05] ================ fair_vram_1vf_admin_only =================
[16:36:05] [PASSED] 3.50 GiB
[16:36:05] [PASSED] 11.5 GiB
[16:36:05] [PASSED] 15.5 GiB
[16:36:05] [PASSED] 31.5 GiB
[16:36:05] [PASSED] 63.5 GiB
[16:36:05] [PASSED] 1.91 GiB
[16:36:05] ============ [PASSED] fair_vram_1vf_admin_only =============
[16:36:05] ====================== fair_contexts ======================
[16:36:05] [PASSED] 1 VF
[16:36:05] [PASSED] 2 VFs
[16:36:05] [PASSED] 3 VFs
[16:36:05] [PASSED] 4 VFs
[16:36:05] [PASSED] 5 VFs
[16:36:05] [PASSED] 6 VFs
[16:36:05] [PASSED] 7 VFs
[16:36:05] [PASSED] 8 VFs
[16:36:05] [PASSED] 9 VFs
[16:36:05] [PASSED] 10 VFs
[16:36:05] [PASSED] 11 VFs
[16:36:05] [PASSED] 12 VFs
[16:36:05] [PASSED] 13 VFs
[16:36:05] [PASSED] 14 VFs
[16:36:05] [PASSED] 15 VFs
[16:36:05] [PASSED] 16 VFs
[16:36:05] [PASSED] 17 VFs
[16:36:05] [PASSED] 18 VFs
[16:36:05] [PASSED] 19 VFs
[16:36:05] [PASSED] 20 VFs
[16:36:05] [PASSED] 21 VFs
[16:36:05] [PASSED] 22 VFs
[16:36:05] [PASSED] 23 VFs
[16:36:05] [PASSED] 24 VFs
[16:36:05] [PASSED] 25 VFs
[16:36:05] [PASSED] 26 VFs
[16:36:05] [PASSED] 27 VFs
[16:36:05] [PASSED] 28 VFs
[16:36:05] [PASSED] 29 VFs
[16:36:05] [PASSED] 30 VFs
[16:36:05] [PASSED] 31 VFs
[16:36:05] [PASSED] 32 VFs
[16:36:05] [PASSED] 33 VFs
[16:36:05] [PASSED] 34 VFs
[16:36:05] [PASSED] 35 VFs
[16:36:05] [PASSED] 36 VFs
[16:36:05] [PASSED] 37 VFs
[16:36:05] [PASSED] 38 VFs
[16:36:05] [PASSED] 39 VFs
[16:36:05] [PASSED] 40 VFs
[16:36:05] [PASSED] 41 VFs
[16:36:05] [PASSED] 42 VFs
[16:36:05] [PASSED] 43 VFs
[16:36:05] [PASSED] 44 VFs
[16:36:05] [PASSED] 45 VFs
[16:36:05] [PASSED] 46 VFs
[16:36:05] [PASSED] 47 VFs
[16:36:05] [PASSED] 48 VFs
[16:36:05] [PASSED] 49 VFs
[16:36:05] [PASSED] 50 VFs
[16:36:05] [PASSED] 51 VFs
[16:36:05] [PASSED] 52 VFs
[16:36:05] [PASSED] 53 VFs
[16:36:05] [PASSED] 54 VFs
[16:36:05] [PASSED] 55 VFs
[16:36:05] [PASSED] 56 VFs
[16:36:05] [PASSED] 57 VFs
[16:36:05] [PASSED] 58 VFs
[16:36:05] [PASSED] 59 VFs
[16:36:05] [PASSED] 60 VFs
[16:36:05] [PASSED] 61 VFs
[16:36:05] [PASSED] 62 VFs
[16:36:05] [PASSED] 63 VFs
[16:36:05] ================== [PASSED] fair_contexts ==================
[16:36:05] ===================== fair_doorbells ======================
[16:36:05] [PASSED] 1 VF
[16:36:05] [PASSED] 2 VFs
[16:36:05] [PASSED] 3 VFs
[16:36:05] [PASSED] 4 VFs
[16:36:05] [PASSED] 5 VFs
[16:36:05] [PASSED] 6 VFs
[16:36:05] [PASSED] 7 VFs
[16:36:05] [PASSED] 8 VFs
[16:36:05] [PASSED] 9 VFs
[16:36:05] [PASSED] 10 VFs
[16:36:05] [PASSED] 11 VFs
[16:36:05] [PASSED] 12 VFs
[16:36:05] [PASSED] 13 VFs
[16:36:05] [PASSED] 14 VFs
[16:36:05] [PASSED] 15 VFs
[16:36:05] [PASSED] 16 VFs
[16:36:06] [PASSED] 17 VFs
[16:36:06] [PASSED] 18 VFs
[16:36:06] [PASSED] 19 VFs
[16:36:06] [PASSED] 20 VFs
[16:36:06] [PASSED] 21 VFs
[16:36:06] [PASSED] 22 VFs
[16:36:06] [PASSED] 23 VFs
[16:36:06] [PASSED] 24 VFs
[16:36:06] [PASSED] 25 VFs
[16:36:06] [PASSED] 26 VFs
[16:36:06] [PASSED] 27 VFs
[16:36:06] [PASSED] 28 VFs
[16:36:06] [PASSED] 29 VFs
[16:36:06] [PASSED] 30 VFs
[16:36:06] [PASSED] 31 VFs
[16:36:06] [PASSED] 32 VFs
[16:36:06] [PASSED] 33 VFs
[16:36:06] [PASSED] 34 VFs
[16:36:06] [PASSED] 35 VFs
[16:36:06] [PASSED] 36 VFs
[16:36:06] [PASSED] 37 VFs
[16:36:06] [PASSED] 38 VFs
[16:36:06] [PASSED] 39 VFs
[16:36:06] [PASSED] 40 VFs
[16:36:06] [PASSED] 41 VFs
[16:36:06] [PASSED] 42 VFs
[16:36:06] [PASSED] 43 VFs
[16:36:06] [PASSED] 44 VFs
[16:36:06] [PASSED] 45 VFs
[16:36:06] [PASSED] 46 VFs
[16:36:06] [PASSED] 47 VFs
[16:36:06] [PASSED] 48 VFs
[16:36:06] [PASSED] 49 VFs
[16:36:06] [PASSED] 50 VFs
[16:36:06] [PASSED] 51 VFs
[16:36:06] [PASSED] 52 VFs
[16:36:06] [PASSED] 53 VFs
[16:36:06] [PASSED] 54 VFs
[16:36:06] [PASSED] 55 VFs
[16:36:06] [PASSED] 56 VFs
[16:36:06] [PASSED] 57 VFs
[16:36:06] [PASSED] 58 VFs
[16:36:06] [PASSED] 59 VFs
[16:36:06] [PASSED] 60 VFs
[16:36:06] [PASSED] 61 VFs
[16:36:06] [PASSED] 62 VFs
[16:36:06] [PASSED] 63 VFs
[16:36:06] ================= [PASSED] fair_doorbells ==================
[16:36:06] ======================== fair_ggtt ========================
[16:36:06] [PASSED] 1 VF
[16:36:06] [PASSED] 2 VFs
[16:36:06] [PASSED] 3 VFs
[16:36:06] [PASSED] 4 VFs
[16:36:06] [PASSED] 5 VFs
[16:36:06] [PASSED] 6 VFs
[16:36:06] [PASSED] 7 VFs
[16:36:06] [PASSED] 8 VFs
[16:36:06] [PASSED] 9 VFs
[16:36:06] [PASSED] 10 VFs
[16:36:06] [PASSED] 11 VFs
[16:36:06] [PASSED] 12 VFs
[16:36:06] [PASSED] 13 VFs
[16:36:06] [PASSED] 14 VFs
[16:36:06] [PASSED] 15 VFs
[16:36:06] [PASSED] 16 VFs
[16:36:06] [PASSED] 17 VFs
[16:36:06] [PASSED] 18 VFs
[16:36:06] [PASSED] 19 VFs
[16:36:06] [PASSED] 20 VFs
[16:36:06] [PASSED] 21 VFs
[16:36:06] [PASSED] 22 VFs
[16:36:06] [PASSED] 23 VFs
[16:36:06] [PASSED] 24 VFs
[16:36:06] [PASSED] 25 VFs
[16:36:06] [PASSED] 26 VFs
[16:36:06] [PASSED] 27 VFs
[16:36:06] [PASSED] 28 VFs
[16:36:06] [PASSED] 29 VFs
[16:36:06] [PASSED] 30 VFs
[16:36:06] [PASSED] 31 VFs
[16:36:06] [PASSED] 32 VFs
[16:36:06] [PASSED] 33 VFs
[16:36:06] [PASSED] 34 VFs
[16:36:06] [PASSED] 35 VFs
[16:36:06] [PASSED] 36 VFs
[16:36:06] [PASSED] 37 VFs
[16:36:06] [PASSED] 38 VFs
[16:36:06] [PASSED] 39 VFs
[16:36:06] [PASSED] 40 VFs
[16:36:06] [PASSED] 41 VFs
[16:36:06] [PASSED] 42 VFs
[16:36:06] [PASSED] 43 VFs
[16:36:06] [PASSED] 44 VFs
[16:36:06] [PASSED] 45 VFs
[16:36:06] [PASSED] 46 VFs
[16:36:06] [PASSED] 47 VFs
[16:36:06] [PASSED] 48 VFs
[16:36:06] [PASSED] 49 VFs
[16:36:06] [PASSED] 50 VFs
[16:36:06] [PASSED] 51 VFs
[16:36:06] [PASSED] 52 VFs
[16:36:06] [PASSED] 53 VFs
[16:36:06] [PASSED] 54 VFs
[16:36:06] [PASSED] 55 VFs
[16:36:06] [PASSED] 56 VFs
[16:36:06] [PASSED] 57 VFs
[16:36:06] [PASSED] 58 VFs
[16:36:06] [PASSED] 59 VFs
[16:36:06] [PASSED] 60 VFs
[16:36:06] [PASSED] 61 VFs
[16:36:06] [PASSED] 62 VFs
[16:36:06] [PASSED] 63 VFs
[16:36:06] ==================== [PASSED] fair_ggtt ====================
[16:36:06] ======================== fair_vram ========================
[16:36:06] [PASSED] 1 VF
[16:36:06] [PASSED] 2 VFs
[16:36:06] [PASSED] 3 VFs
[16:36:06] [PASSED] 4 VFs
[16:36:06] [PASSED] 5 VFs
[16:36:06] [PASSED] 6 VFs
[16:36:06] [PASSED] 7 VFs
[16:36:06] [PASSED] 8 VFs
[16:36:06] [PASSED] 9 VFs
[16:36:06] [PASSED] 10 VFs
[16:36:06] [PASSED] 11 VFs
[16:36:06] [PASSED] 12 VFs
[16:36:06] [PASSED] 13 VFs
[16:36:06] [PASSED] 14 VFs
[16:36:06] [PASSED] 15 VFs
[16:36:06] [PASSED] 16 VFs
[16:36:06] [PASSED] 17 VFs
[16:36:06] [PASSED] 18 VFs
[16:36:06] [PASSED] 19 VFs
[16:36:06] [PASSED] 20 VFs
[16:36:06] [PASSED] 21 VFs
[16:36:06] [PASSED] 22 VFs
[16:36:06] [PASSED] 23 VFs
[16:36:06] [PASSED] 24 VFs
[16:36:06] [PASSED] 25 VFs
[16:36:06] [PASSED] 26 VFs
[16:36:06] [PASSED] 27 VFs
[16:36:06] [PASSED] 28 VFs
[16:36:06] [PASSED] 29 VFs
[16:36:06] [PASSED] 30 VFs
[16:36:06] [PASSED] 31 VFs
[16:36:06] [PASSED] 32 VFs
[16:36:06] [PASSED] 33 VFs
[16:36:06] [PASSED] 34 VFs
[16:36:06] [PASSED] 35 VFs
[16:36:06] [PASSED] 36 VFs
[16:36:06] [PASSED] 37 VFs
[16:36:06] [PASSED] 38 VFs
[16:36:06] [PASSED] 39 VFs
[16:36:06] [PASSED] 40 VFs
[16:36:06] [PASSED] 41 VFs
[16:36:06] [PASSED] 42 VFs
[16:36:06] [PASSED] 43 VFs
[16:36:06] [PASSED] 44 VFs
[16:36:06] [PASSED] 45 VFs
[16:36:06] [PASSED] 46 VFs
[16:36:06] [PASSED] 47 VFs
[16:36:06] [PASSED] 48 VFs
[16:36:06] [PASSED] 49 VFs
[16:36:06] [PASSED] 50 VFs
[16:36:06] [PASSED] 51 VFs
[16:36:06] [PASSED] 52 VFs
[16:36:06] [PASSED] 53 VFs
[16:36:06] [PASSED] 54 VFs
[16:36:06] [PASSED] 55 VFs
[16:36:06] [PASSED] 56 VFs
[16:36:06] [PASSED] 57 VFs
[16:36:06] [PASSED] 58 VFs
[16:36:06] [PASSED] 59 VFs
[16:36:06] [PASSED] 60 VFs
[16:36:06] [PASSED] 61 VFs
[16:36:06] [PASSED] 62 VFs
[16:36:06] [PASSED] 63 VFs
[16:36:06] ==================== [PASSED] fair_vram ====================
[16:36:06] ================== [PASSED] pf_gt_config ===================
[16:36:06] ===================== lmtt (1 subtest) =====================
[16:36:06] ======================== test_ops =========================
[16:36:06] [PASSED] 2-level
[16:36:06] [PASSED] multi-level
[16:36:06] ==================== [PASSED] test_ops =====================
[16:36:06] ====================== [PASSED] lmtt =======================
[16:36:06] ================= pf_service (11 subtests) =================
[16:36:06] [PASSED] pf_negotiate_any
[16:36:06] [PASSED] pf_negotiate_base_match
[16:36:06] [PASSED] pf_negotiate_base_newer
[16:36:06] [PASSED] pf_negotiate_base_next
[16:36:06] [SKIPPED] pf_negotiate_base_older
[16:36:06] [PASSED] pf_negotiate_base_prev
[16:36:06] [PASSED] pf_negotiate_latest_match
[16:36:06] [PASSED] pf_negotiate_latest_newer
[16:36:06] [PASSED] pf_negotiate_latest_next
[16:36:06] [SKIPPED] pf_negotiate_latest_older
[16:36:06] [SKIPPED] pf_negotiate_latest_prev
[16:36:06] =================== [PASSED] pf_service ====================
[16:36:06] ================= xe_guc_g2g (2 subtests) ==================
[16:36:06] ============== xe_live_guc_g2g_kunit_default ==============
[16:36:06] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[16:36:06] ============== xe_live_guc_g2g_kunit_allmem ===============
[16:36:06] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[16:36:06] =================== [SKIPPED] xe_guc_g2g ===================
[16:36:06] =================== xe_mocs (2 subtests) ===================
[16:36:06] ================ xe_live_mocs_kernel_kunit ================
[16:36:06] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[16:36:06] ================ xe_live_mocs_reset_kunit =================
[16:36:06] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[16:36:06] ==================== [SKIPPED] xe_mocs =====================
[16:36:06] ================= xe_migrate (2 subtests) ==================
[16:36:06] ================= xe_migrate_sanity_kunit =================
[16:36:06] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[16:36:06] ================== xe_validate_ccs_kunit ==================
[16:36:06] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[16:36:06] =================== [SKIPPED] xe_migrate ===================
[16:36:06] ================== xe_dma_buf (1 subtest) ==================
[16:36:06] ==================== xe_dma_buf_kunit =====================
[16:36:06] ================ [SKIPPED] xe_dma_buf_kunit ================
[16:36:06] =================== [SKIPPED] xe_dma_buf ===================
[16:36:06] ================= xe_bo_shrink (1 subtest) =================
[16:36:06] =================== xe_bo_shrink_kunit ====================
[16:36:06] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[16:36:06] ================== [SKIPPED] xe_bo_shrink ==================
[16:36:06] ==================== xe_bo (2 subtests) ====================
[16:36:06] ================== xe_ccs_migrate_kunit ===================
[16:36:06] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[16:36:06] ==================== xe_bo_evict_kunit ====================
[16:36:06] =============== [SKIPPED] xe_bo_evict_kunit ================
[16:36:06] ===================== [SKIPPED] xe_bo ======================
[16:36:06] ==================== args (13 subtests) ====================
[16:36:06] [PASSED] count_args_test
[16:36:06] [PASSED] call_args_example
[16:36:06] [PASSED] call_args_test
[16:36:06] [PASSED] drop_first_arg_example
[16:36:06] [PASSED] drop_first_arg_test
[16:36:06] [PASSED] first_arg_example
[16:36:06] [PASSED] first_arg_test
[16:36:06] [PASSED] last_arg_example
[16:36:06] [PASSED] last_arg_test
[16:36:06] [PASSED] pick_arg_example
[16:36:06] [PASSED] if_args_example
[16:36:06] [PASSED] if_args_test
[16:36:06] [PASSED] sep_comma_example
[16:36:06] ====================== [PASSED] args =======================
[16:36:06] =================== xe_pci (3 subtests) ====================
[16:36:06] ==================== check_graphics_ip ====================
[16:36:06] [PASSED] 12.00 Xe_LP
[16:36:06] [PASSED] 12.10 Xe_LP+
[16:36:06] [PASSED] 12.55 Xe_HPG
[16:36:06] [PASSED] 12.60 Xe_HPC
[16:36:06] [PASSED] 12.70 Xe_LPG
[16:36:06] [PASSED] 12.71 Xe_LPG
[16:36:06] [PASSED] 12.74 Xe_LPG+
[16:36:06] [PASSED] 20.01 Xe2_HPG
[16:36:06] [PASSED] 20.02 Xe2_HPG
[16:36:06] [PASSED] 20.04 Xe2_LPG
[16:36:06] [PASSED] 30.00 Xe3_LPG
[16:36:06] [PASSED] 30.01 Xe3_LPG
[16:36:06] [PASSED] 30.03 Xe3_LPG
[16:36:06] [PASSED] 30.04 Xe3_LPG
[16:36:06] [PASSED] 30.05 Xe3_LPG
[16:36:06] [PASSED] 35.10 Xe3p_LPG
[16:36:06] [PASSED] 35.11 Xe3p_XPC
[16:36:06] ================ [PASSED] check_graphics_ip ================
[16:36:06] ===================== check_media_ip ======================
[16:36:06] [PASSED] 12.00 Xe_M
[16:36:06] [PASSED] 12.55 Xe_HPM
[16:36:06] [PASSED] 13.00 Xe_LPM+
[16:36:06] [PASSED] 13.01 Xe2_HPM
[16:36:06] [PASSED] 20.00 Xe2_LPM
[16:36:06] [PASSED] 30.00 Xe3_LPM
[16:36:06] [PASSED] 30.02 Xe3_LPM
[16:36:06] [PASSED] 35.00 Xe3p_LPM
[16:36:06] [PASSED] 35.03 Xe3p_HPM
[16:36:06] ================= [PASSED] check_media_ip ==================
[16:36:06] =================== check_platform_desc ===================
[16:36:06] [PASSED] 0x9A60 (TIGERLAKE)
[16:36:06] [PASSED] 0x9A68 (TIGERLAKE)
[16:36:06] [PASSED] 0x9A70 (TIGERLAKE)
[16:36:06] [PASSED] 0x9A40 (TIGERLAKE)
[16:36:06] [PASSED] 0x9A49 (TIGERLAKE)
[16:36:06] [PASSED] 0x9A59 (TIGERLAKE)
[16:36:06] [PASSED] 0x9A78 (TIGERLAKE)
[16:36:06] [PASSED] 0x9AC0 (TIGERLAKE)
[16:36:06] [PASSED] 0x9AC9 (TIGERLAKE)
[16:36:06] [PASSED] 0x9AD9 (TIGERLAKE)
[16:36:06] [PASSED] 0x9AF8 (TIGERLAKE)
[16:36:06] [PASSED] 0x4C80 (ROCKETLAKE)
[16:36:06] [PASSED] 0x4C8A (ROCKETLAKE)
[16:36:06] [PASSED] 0x4C8B (ROCKETLAKE)
[16:36:06] [PASSED] 0x4C8C (ROCKETLAKE)
[16:36:06] [PASSED] 0x4C90 (ROCKETLAKE)
[16:36:06] [PASSED] 0x4C9A (ROCKETLAKE)
[16:36:06] [PASSED] 0x4680 (ALDERLAKE_S)
[16:36:06] [PASSED] 0x4682 (ALDERLAKE_S)
[16:36:06] [PASSED] 0x4688 (ALDERLAKE_S)
[16:36:06] [PASSED] 0x468A (ALDERLAKE_S)
[16:36:06] [PASSED] 0x468B (ALDERLAKE_S)
[16:36:06] [PASSED] 0x4690 (ALDERLAKE_S)
[16:36:06] [PASSED] 0x4692 (ALDERLAKE_S)
[16:36:06] [PASSED] 0x4693 (ALDERLAKE_S)
[16:36:06] [PASSED] 0x46A0 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46A1 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46A2 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46A3 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46A6 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46A8 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46AA (ALDERLAKE_P)
[16:36:06] [PASSED] 0x462A (ALDERLAKE_P)
[16:36:06] [PASSED] 0x4626 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x4628 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46B0 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46B1 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46B2 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46B3 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46C0 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46C1 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46C2 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46C3 (ALDERLAKE_P)
[16:36:06] [PASSED] 0x46D0 (ALDERLAKE_N)
[16:36:06] [PASSED] 0x46D1 (ALDERLAKE_N)
[16:36:06] [PASSED] 0x46D2 (ALDERLAKE_N)
[16:36:06] [PASSED] 0x46D3 (ALDERLAKE_N)
[16:36:06] [PASSED] 0x46D4 (ALDERLAKE_N)
[16:36:06] [PASSED] 0xA721 (ALDERLAKE_P)
[16:36:06] [PASSED] 0xA7A1 (ALDERLAKE_P)
[16:36:06] [PASSED] 0xA7A9 (ALDERLAKE_P)
[16:36:06] [PASSED] 0xA7AC (ALDERLAKE_P)
[16:36:06] [PASSED] 0xA7AD (ALDERLAKE_P)
[16:36:06] [PASSED] 0xA720 (ALDERLAKE_P)
[16:36:06] [PASSED] 0xA7A0 (ALDERLAKE_P)
[16:36:06] [PASSED] 0xA7A8 (ALDERLAKE_P)
[16:36:06] [PASSED] 0xA7AA (ALDERLAKE_P)
[16:36:06] [PASSED] 0xA7AB (ALDERLAKE_P)
[16:36:06] [PASSED] 0xA780 (ALDERLAKE_S)
[16:36:06] [PASSED] 0xA781 (ALDERLAKE_S)
[16:36:06] [PASSED] 0xA782 (ALDERLAKE_S)
[16:36:06] [PASSED] 0xA783 (ALDERLAKE_S)
[16:36:06] [PASSED] 0xA788 (ALDERLAKE_S)
[16:36:06] [PASSED] 0xA789 (ALDERLAKE_S)
[16:36:06] [PASSED] 0xA78A (ALDERLAKE_S)
[16:36:06] [PASSED] 0xA78B (ALDERLAKE_S)
[16:36:06] [PASSED] 0x4905 (DG1)
[16:36:06] [PASSED] 0x4906 (DG1)
[16:36:06] [PASSED] 0x4907 (DG1)
[16:36:06] [PASSED] 0x4908 (DG1)
[16:36:06] [PASSED] 0x4909 (DG1)
[16:36:06] [PASSED] 0x56C0 (DG2)
[16:36:06] [PASSED] 0x56C2 (DG2)
[16:36:06] [PASSED] 0x56C1 (DG2)
[16:36:06] [PASSED] 0x7D51 (METEORLAKE)
[16:36:06] [PASSED] 0x7DD1 (METEORLAKE)
[16:36:06] [PASSED] 0x7D41 (METEORLAKE)
[16:36:06] [PASSED] 0x7D67 (METEORLAKE)
[16:36:06] [PASSED] 0xB640 (METEORLAKE)
[16:36:06] [PASSED] 0x56A0 (DG2)
[16:36:06] [PASSED] 0x56A1 (DG2)
[16:36:06] [PASSED] 0x56A2 (DG2)
[16:36:06] [PASSED] 0x56BE (DG2)
[16:36:06] [PASSED] 0x56BF (DG2)
[16:36:06] [PASSED] 0x5690 (DG2)
[16:36:06] [PASSED] 0x5691 (DG2)
[16:36:06] [PASSED] 0x5692 (DG2)
[16:36:06] [PASSED] 0x56A5 (DG2)
[16:36:06] [PASSED] 0x56A6 (DG2)
[16:36:06] [PASSED] 0x56B0 (DG2)
[16:36:06] [PASSED] 0x56B1 (DG2)
[16:36:06] [PASSED] 0x56BA (DG2)
[16:36:06] [PASSED] 0x56BB (DG2)
[16:36:06] [PASSED] 0x56BC (DG2)
[16:36:06] [PASSED] 0x56BD (DG2)
[16:36:06] [PASSED] 0x5693 (DG2)
[16:36:06] [PASSED] 0x5694 (DG2)
[16:36:06] [PASSED] 0x5695 (DG2)
[16:36:06] [PASSED] 0x56A3 (DG2)
[16:36:06] [PASSED] 0x56A4 (DG2)
[16:36:06] [PASSED] 0x56B2 (DG2)
[16:36:06] [PASSED] 0x56B3 (DG2)
[16:36:06] [PASSED] 0x5696 (DG2)
[16:36:06] [PASSED] 0x5697 (DG2)
[16:36:06] [PASSED] 0xB69 (PVC)
[16:36:06] [PASSED] 0xB6E (PVC)
[16:36:06] [PASSED] 0xBD4 (PVC)
[16:36:06] [PASSED] 0xBD5 (PVC)
[16:36:06] [PASSED] 0xBD6 (PVC)
[16:36:06] [PASSED] 0xBD7 (PVC)
[16:36:06] [PASSED] 0xBD8 (PVC)
[16:36:06] [PASSED] 0xBD9 (PVC)
[16:36:06] [PASSED] 0xBDA (PVC)
[16:36:06] [PASSED] 0xBDB (PVC)
[16:36:06] [PASSED] 0xBE0 (PVC)
[16:36:06] [PASSED] 0xBE1 (PVC)
[16:36:06] [PASSED] 0xBE5 (PVC)
[16:36:06] [PASSED] 0x7D40 (METEORLAKE)
[16:36:06] [PASSED] 0x7D45 (METEORLAKE)
[16:36:06] [PASSED] 0x7D55 (METEORLAKE)
[16:36:06] [PASSED] 0x7D60 (METEORLAKE)
[16:36:06] [PASSED] 0x7DD5 (METEORLAKE)
[16:36:06] [PASSED] 0x6420 (LUNARLAKE)
[16:36:06] [PASSED] 0x64A0 (LUNARLAKE)
[16:36:06] [PASSED] 0x64B0 (LUNARLAKE)
[16:36:06] [PASSED] 0xE202 (BATTLEMAGE)
[16:36:06] [PASSED] 0xE209 (BATTLEMAGE)
[16:36:06] [PASSED] 0xE20B (BATTLEMAGE)
[16:36:06] [PASSED] 0xE20C (BATTLEMAGE)
[16:36:06] [PASSED] 0xE20D (BATTLEMAGE)
[16:36:06] [PASSED] 0xE210 (BATTLEMAGE)
[16:36:06] [PASSED] 0xE211 (BATTLEMAGE)
[16:36:06] [PASSED] 0xE212 (BATTLEMAGE)
[16:36:06] [PASSED] 0xE216 (BATTLEMAGE)
[16:36:06] [PASSED] 0xE220 (BATTLEMAGE)
[16:36:06] [PASSED] 0xE221 (BATTLEMAGE)
[16:36:06] [PASSED] 0xE222 (BATTLEMAGE)
[16:36:06] [PASSED] 0xE223 (BATTLEMAGE)
[16:36:06] [PASSED] 0xB080 (PANTHERLAKE)
[16:36:06] [PASSED] 0xB081 (PANTHERLAKE)
[16:36:06] [PASSED] 0xB082 (PANTHERLAKE)
[16:36:06] [PASSED] 0xB083 (PANTHERLAKE)
[16:36:06] [PASSED] 0xB084 (PANTHERLAKE)
[16:36:06] [PASSED] 0xB085 (PANTHERLAKE)
[16:36:06] [PASSED] 0xB086 (PANTHERLAKE)
[16:36:06] [PASSED] 0xB087 (PANTHERLAKE)
[16:36:06] [PASSED] 0xB08F (PANTHERLAKE)
[16:36:06] [PASSED] 0xB090 (PANTHERLAKE)
[16:36:06] [PASSED] 0xB0A0 (PANTHERLAKE)
[16:36:06] [PASSED] 0xB0B0 (PANTHERLAKE)
[16:36:06] [PASSED] 0xFD80 (PANTHERLAKE)
[16:36:06] [PASSED] 0xFD81 (PANTHERLAKE)
[16:36:06] [PASSED] 0xD740 (NOVALAKE_S)
[16:36:06] [PASSED] 0xD741 (NOVALAKE_S)
[16:36:06] [PASSED] 0xD742 (NOVALAKE_S)
[16:36:06] [PASSED] 0xD743 (NOVALAKE_S)
[16:36:06] [PASSED] 0xD744 (NOVALAKE_S)
[16:36:06] [PASSED] 0xD745 (NOVALAKE_S)
[16:36:06] [PASSED] 0x674C (CRESCENTISLAND)
[16:36:06] [PASSED] 0x674D (CRESCENTISLAND)
[16:36:06] [PASSED] 0x674E (CRESCENTISLAND)
[16:36:06] [PASSED] 0x674F (CRESCENTISLAND)
[16:36:06] [PASSED] 0x6750 (CRESCENTISLAND)
[16:36:06] [PASSED] 0xD750 (NOVALAKE_P)
[16:36:06] [PASSED] 0xD751 (NOVALAKE_P)
[16:36:06] [PASSED] 0xD752 (NOVALAKE_P)
[16:36:06] [PASSED] 0xD753 (NOVALAKE_P)
[16:36:06] [PASSED] 0xD754 (NOVALAKE_P)
[16:36:06] [PASSED] 0xD755 (NOVALAKE_P)
[16:36:06] [PASSED] 0xD756 (NOVALAKE_P)
[16:36:06] [PASSED] 0xD757 (NOVALAKE_P)
[16:36:06] [PASSED] 0xD75F (NOVALAKE_P)
[16:36:06] =============== [PASSED] check_platform_desc ===============
[16:36:06] ===================== [PASSED] xe_pci ======================
[16:36:06] =================== xe_rtp (3 subtests) ====================
[16:36:06] =================== xe_rtp_rules_tests ====================
[16:36:06] [PASSED] no
[16:36:06] [PASSED] yes
[16:36:06] [PASSED] no-and-no
[16:36:06] [PASSED] no-and-yes
[16:36:06] [PASSED] yes-and-no
[16:36:06] [PASSED] yes-and-yes
[16:36:06] [PASSED] no-or-no
[16:36:06] [PASSED] no-or-yes
[16:36:06] [PASSED] yes-or-no
[16:36:06] [PASSED] yes-or-yes
[16:36:06] [PASSED] no-yes-or-yes-no
[16:36:06] [PASSED] no-yes-or-yes-yes
[16:36:06] [PASSED] yes-yes-or-no-yes
[16:36:06] [PASSED] yes-yes-or-yes-yes
[16:36:06] [PASSED] no-no-or-yes-or-no
[16:36:06] [PASSED] or
[16:36:06] [PASSED] or-yes
[16:36:06] [PASSED] or-no
[16:36:06] [PASSED] yes-or
[16:36:06] [PASSED] no-or
[16:36:06] [PASSED] no-or-or-yes
[16:36:06] [PASSED] yes-or-or-no
[16:36:06] [PASSED] no-or-or-no
[16:36:06] [PASSED] missing-context-engine-class
[16:36:06] [PASSED] missing-context-engine-class-or-yes
[16:36:06] [PASSED] missing-context-engine-class-or-or-yes
[16:36:06] =============== [PASSED] xe_rtp_rules_tests ================
[16:36:06] =============== xe_rtp_process_to_sr_tests ================
[16:36:06] [PASSED] coalesce-same-reg
[16:36:06] [PASSED] no-match-no-add
[16:36:06] [PASSED] two-regs-two-entries
[16:36:06] [PASSED] clr-one-set-other
[16:36:06] [PASSED] set-field
[16:36:06] [PASSED] conflict-duplicate
[16:36:06] [PASSED] conflict-not-disjoint
[16:36:06] [PASSED] conflict-reg-type
[16:36:06] [PASSED] bad-mcr-reg-forced-to-regular
[16:36:06] [PASSED] bad-regular-reg-forced-to-mcr
[16:36:06] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[16:36:06] ================== xe_rtp_process_tests ===================
[16:36:06] [PASSED] active1
[16:36:06] [PASSED] active2
[16:36:06] [PASSED] active-inactive
[16:36:06] [PASSED] inactive-active
[16:36:06] [PASSED] inactive-active-inactive
[16:36:06] [PASSED] inactive-inactive-inactive
[16:36:06] ============== [PASSED] xe_rtp_process_tests ===============
[16:36:06] ===================== [PASSED] xe_rtp ======================
[16:36:06] ==================== xe_wa (1 subtest) =====================
[16:36:06] ======================== xe_wa_gt =========================
[16:36:06] [PASSED] TIGERLAKE B0
[16:36:06] [PASSED] DG1 A0
[16:36:06] [PASSED] DG1 B0
[16:36:06] [PASSED] ALDERLAKE_S A0
[16:36:06] [PASSED] ALDERLAKE_S B0
[16:36:06] [PASSED] ALDERLAKE_S C0
[16:36:06] [PASSED] ALDERLAKE_S D0
[16:36:06] [PASSED] ALDERLAKE_P A0
[16:36:06] [PASSED] ALDERLAKE_P B0
[16:36:06] [PASSED] ALDERLAKE_P C0
[16:36:06] [PASSED] ALDERLAKE_S RPLS D0
[16:36:06] [PASSED] ALDERLAKE_P RPLU E0
[16:36:06] [PASSED] DG2 G10 C0
[16:36:06] [PASSED] DG2 G11 B1
[16:36:06] [PASSED] DG2 G12 A1
[16:36:06] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[16:36:06] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[16:36:06] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[16:36:06] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[16:36:06] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[16:36:06] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[16:36:06] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[16:36:06] ==================== [PASSED] xe_wa_gt =====================
[16:36:06] ====================== [PASSED] xe_wa ======================
[16:36:06] ============================================================
[16:36:06] Testing complete. Ran 624 tests: passed: 606, skipped: 18
[16:36:06] Elapsed time: 36.061s total, 4.280s configuring, 31.115s building, 0.617s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[16:36:06] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:36:08] 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
[16:36:32] Starting KUnit Kernel (1/1)...
[16:36:32] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:36:32] ============ drm_test_pick_cmdline (2 subtests) ============
[16:36:32] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[16:36:32] =============== drm_test_pick_cmdline_named ===============
[16:36:32] [PASSED] NTSC
[16:36:32] [PASSED] NTSC-J
[16:36:32] [PASSED] PAL
[16:36:32] [PASSED] PAL-M
[16:36:32] =========== [PASSED] drm_test_pick_cmdline_named ===========
[16:36:32] ============== [PASSED] drm_test_pick_cmdline ==============
[16:36:32] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[16:36:32] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[16:36:32] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[16:36:32] =========== drm_validate_clone_mode (2 subtests) ===========
[16:36:32] ============== drm_test_check_in_clone_mode ===============
[16:36:32] [PASSED] in_clone_mode
[16:36:32] [PASSED] not_in_clone_mode
[16:36:32] ========== [PASSED] drm_test_check_in_clone_mode ===========
[16:36:32] =============== drm_test_check_valid_clones ===============
[16:36:32] [PASSED] not_in_clone_mode
[16:36:32] [PASSED] valid_clone
[16:36:32] [PASSED] invalid_clone
[16:36:32] =========== [PASSED] drm_test_check_valid_clones ===========
[16:36:32] ============= [PASSED] drm_validate_clone_mode =============
[16:36:32] ============= drm_validate_modeset (1 subtest) =============
[16:36:32] [PASSED] drm_test_check_connector_changed_modeset
[16:36:32] ============== [PASSED] drm_validate_modeset ===============
[16:36:32] ====== drm_test_bridge_get_current_state (2 subtests) ======
[16:36:32] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[16:36:32] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[16:36:32] ======== [PASSED] drm_test_bridge_get_current_state ========
[16:36:32] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[16:36:32] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[16:36:32] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[16:36:32] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[16:36:32] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[16:36:32] ============== drm_bridge_alloc (2 subtests) ===============
[16:36:32] [PASSED] drm_test_drm_bridge_alloc_basic
[16:36:32] [PASSED] drm_test_drm_bridge_alloc_get_put
[16:36:32] ================ [PASSED] drm_bridge_alloc =================
[16:36:32] ============= drm_cmdline_parser (40 subtests) =============
[16:36:32] [PASSED] drm_test_cmdline_force_d_only
[16:36:32] [PASSED] drm_test_cmdline_force_D_only_dvi
[16:36:32] [PASSED] drm_test_cmdline_force_D_only_hdmi
[16:36:32] [PASSED] drm_test_cmdline_force_D_only_not_digital
[16:36:32] [PASSED] drm_test_cmdline_force_e_only
[16:36:32] [PASSED] drm_test_cmdline_res
[16:36:32] [PASSED] drm_test_cmdline_res_vesa
[16:36:32] [PASSED] drm_test_cmdline_res_vesa_rblank
[16:36:32] [PASSED] drm_test_cmdline_res_rblank
[16:36:32] [PASSED] drm_test_cmdline_res_bpp
[16:36:32] [PASSED] drm_test_cmdline_res_refresh
[16:36:32] [PASSED] drm_test_cmdline_res_bpp_refresh
[16:36:32] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[16:36:32] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[16:36:32] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[16:36:32] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[16:36:32] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[16:36:32] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[16:36:32] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[16:36:32] [PASSED] drm_test_cmdline_res_margins_force_on
[16:36:32] [PASSED] drm_test_cmdline_res_vesa_margins
[16:36:32] [PASSED] drm_test_cmdline_name
[16:36:32] [PASSED] drm_test_cmdline_name_bpp
[16:36:32] [PASSED] drm_test_cmdline_name_option
[16:36:32] [PASSED] drm_test_cmdline_name_bpp_option
[16:36:32] [PASSED] drm_test_cmdline_rotate_0
[16:36:32] [PASSED] drm_test_cmdline_rotate_90
[16:36:32] [PASSED] drm_test_cmdline_rotate_180
[16:36:32] [PASSED] drm_test_cmdline_rotate_270
[16:36:32] [PASSED] drm_test_cmdline_hmirror
[16:36:32] [PASSED] drm_test_cmdline_vmirror
[16:36:32] [PASSED] drm_test_cmdline_margin_options
[16:36:32] [PASSED] drm_test_cmdline_multiple_options
[16:36:32] [PASSED] drm_test_cmdline_bpp_extra_and_option
[16:36:32] [PASSED] drm_test_cmdline_extra_and_option
[16:36:32] [PASSED] drm_test_cmdline_freestanding_options
[16:36:32] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[16:36:32] [PASSED] drm_test_cmdline_panel_orientation
[16:36:32] ================ drm_test_cmdline_invalid =================
[16:36:32] [PASSED] margin_only
[16:36:32] [PASSED] interlace_only
[16:36:32] [PASSED] res_missing_x
[16:36:32] [PASSED] res_missing_y
[16:36:32] [PASSED] res_bad_y
[16:36:32] [PASSED] res_missing_y_bpp
[16:36:32] [PASSED] res_bad_bpp
[16:36:32] [PASSED] res_bad_refresh
[16:36:32] [PASSED] res_bpp_refresh_force_on_off
[16:36:32] [PASSED] res_invalid_mode
[16:36:32] [PASSED] res_bpp_wrong_place_mode
[16:36:32] [PASSED] name_bpp_refresh
[16:36:32] [PASSED] name_refresh
[16:36:32] [PASSED] name_refresh_wrong_mode
[16:36:32] [PASSED] name_refresh_invalid_mode
[16:36:32] [PASSED] rotate_multiple
[16:36:32] [PASSED] rotate_invalid_val
[16:36:32] [PASSED] rotate_truncated
[16:36:32] [PASSED] invalid_option
[16:36:32] [PASSED] invalid_tv_option
[16:36:32] [PASSED] truncated_tv_option
[16:36:32] ============ [PASSED] drm_test_cmdline_invalid =============
[16:36:32] =============== drm_test_cmdline_tv_options ===============
[16:36:32] [PASSED] NTSC
[16:36:32] [PASSED] NTSC_443
[16:36:32] [PASSED] NTSC_J
[16:36:32] [PASSED] PAL
[16:36:32] [PASSED] PAL_M
[16:36:32] [PASSED] PAL_N
[16:36:32] [PASSED] SECAM
[16:36:32] [PASSED] MONO_525
[16:36:32] [PASSED] MONO_625
[16:36:32] =========== [PASSED] drm_test_cmdline_tv_options ===========
[16:36:32] =============== [PASSED] drm_cmdline_parser ================
[16:36:32] ========== drmm_connector_hdmi_init (20 subtests) ==========
[16:36:32] [PASSED] drm_test_connector_hdmi_init_valid
[16:36:32] [PASSED] drm_test_connector_hdmi_init_bpc_8
[16:36:32] [PASSED] drm_test_connector_hdmi_init_bpc_10
[16:36:32] [PASSED] drm_test_connector_hdmi_init_bpc_12
[16:36:32] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[16:36:32] [PASSED] drm_test_connector_hdmi_init_bpc_null
[16:36:32] [PASSED] drm_test_connector_hdmi_init_formats_empty
[16:36:32] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[16:36:32] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[16:36:32] [PASSED] supported_formats=0x9 yuv420_allowed=1
[16:36:32] [PASSED] supported_formats=0x9 yuv420_allowed=0
[16:36:32] [PASSED] supported_formats=0x5 yuv420_allowed=1
[16:36:32] [PASSED] supported_formats=0x5 yuv420_allowed=0
[16:36:32] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[16:36:32] [PASSED] drm_test_connector_hdmi_init_null_ddc
[16:36:32] [PASSED] drm_test_connector_hdmi_init_null_product
[16:36:32] [PASSED] drm_test_connector_hdmi_init_null_vendor
[16:36:32] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[16:36:32] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[16:36:32] [PASSED] drm_test_connector_hdmi_init_product_valid
[16:36:32] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[16:36:32] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[16:36:32] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[16:36:32] ========= drm_test_connector_hdmi_init_type_valid =========
[16:36:32] [PASSED] HDMI-A
[16:36:32] [PASSED] HDMI-B
[16:36:32] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[16:36:32] ======== drm_test_connector_hdmi_init_type_invalid ========
[16:36:32] [PASSED] Unknown
[16:36:32] [PASSED] VGA
[16:36:32] [PASSED] DVI-I
[16:36:32] [PASSED] DVI-D
[16:36:32] [PASSED] DVI-A
[16:36:32] [PASSED] Composite
[16:36:32] [PASSED] SVIDEO
[16:36:32] [PASSED] LVDS
[16:36:32] [PASSED] Component
[16:36:32] [PASSED] DIN
[16:36:32] [PASSED] DP
[16:36:32] [PASSED] TV
[16:36:32] [PASSED] eDP
[16:36:32] [PASSED] Virtual
[16:36:32] [PASSED] DSI
[16:36:32] [PASSED] DPI
[16:36:32] [PASSED] Writeback
[16:36:32] [PASSED] SPI
[16:36:32] [PASSED] USB
[16:36:32] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[16:36:32] ============ [PASSED] drmm_connector_hdmi_init =============
[16:36:32] ============= drmm_connector_init (3 subtests) =============
[16:36:32] [PASSED] drm_test_drmm_connector_init
[16:36:32] [PASSED] drm_test_drmm_connector_init_null_ddc
[16:36:32] ========= drm_test_drmm_connector_init_type_valid =========
[16:36:32] [PASSED] Unknown
[16:36:32] [PASSED] VGA
[16:36:32] [PASSED] DVI-I
[16:36:32] [PASSED] DVI-D
[16:36:32] [PASSED] DVI-A
[16:36:32] [PASSED] Composite
[16:36:32] [PASSED] SVIDEO
[16:36:32] [PASSED] LVDS
[16:36:32] [PASSED] Component
[16:36:32] [PASSED] DIN
[16:36:32] [PASSED] DP
[16:36:32] [PASSED] HDMI-A
[16:36:32] [PASSED] HDMI-B
[16:36:32] [PASSED] TV
[16:36:32] [PASSED] eDP
[16:36:32] [PASSED] Virtual
[16:36:32] [PASSED] DSI
[16:36:32] [PASSED] DPI
[16:36:32] [PASSED] Writeback
[16:36:32] [PASSED] SPI
[16:36:32] [PASSED] USB
[16:36:32] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[16:36:32] =============== [PASSED] drmm_connector_init ===============
[16:36:32] ========= drm_connector_dynamic_init (6 subtests) ==========
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_init
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_init_properties
[16:36:32] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[16:36:32] [PASSED] Unknown
[16:36:32] [PASSED] VGA
[16:36:32] [PASSED] DVI-I
[16:36:32] [PASSED] DVI-D
[16:36:32] [PASSED] DVI-A
[16:36:32] [PASSED] Composite
[16:36:32] [PASSED] SVIDEO
[16:36:32] [PASSED] LVDS
[16:36:32] [PASSED] Component
[16:36:32] [PASSED] DIN
[16:36:32] [PASSED] DP
[16:36:32] [PASSED] HDMI-A
[16:36:32] [PASSED] HDMI-B
[16:36:32] [PASSED] TV
[16:36:32] [PASSED] eDP
[16:36:32] [PASSED] Virtual
[16:36:32] [PASSED] DSI
[16:36:32] [PASSED] DPI
[16:36:32] [PASSED] Writeback
[16:36:32] [PASSED] SPI
[16:36:32] [PASSED] USB
[16:36:32] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[16:36:32] ======== drm_test_drm_connector_dynamic_init_name =========
[16:36:32] [PASSED] Unknown
[16:36:32] [PASSED] VGA
[16:36:32] [PASSED] DVI-I
[16:36:32] [PASSED] DVI-D
[16:36:32] [PASSED] DVI-A
[16:36:32] [PASSED] Composite
[16:36:32] [PASSED] SVIDEO
[16:36:32] [PASSED] LVDS
[16:36:32] [PASSED] Component
[16:36:32] [PASSED] DIN
[16:36:32] [PASSED] DP
[16:36:32] [PASSED] HDMI-A
[16:36:32] [PASSED] HDMI-B
[16:36:32] [PASSED] TV
[16:36:32] [PASSED] eDP
[16:36:32] [PASSED] Virtual
[16:36:32] [PASSED] DSI
[16:36:32] [PASSED] DPI
[16:36:32] [PASSED] Writeback
[16:36:32] [PASSED] SPI
[16:36:32] [PASSED] USB
[16:36:32] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[16:36:32] =========== [PASSED] drm_connector_dynamic_init ============
[16:36:32] ==== drm_connector_dynamic_register_early (4 subtests) =====
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[16:36:32] ====== [PASSED] drm_connector_dynamic_register_early =======
[16:36:32] ======= drm_connector_dynamic_register (7 subtests) ========
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[16:36:32] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[16:36:32] ========= [PASSED] drm_connector_dynamic_register ==========
[16:36:32] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[16:36:32] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[16:36:32] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[16:36:32] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[16:36:32] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[16:36:32] ========== drm_test_get_tv_mode_from_name_valid ===========
[16:36:32] [PASSED] NTSC
[16:36:32] [PASSED] NTSC-443
[16:36:32] [PASSED] NTSC-J
[16:36:32] [PASSED] PAL
[16:36:32] [PASSED] PAL-M
[16:36:32] [PASSED] PAL-N
[16:36:32] [PASSED] SECAM
[16:36:32] [PASSED] Mono
[16:36:32] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[16:36:32] [PASSED] drm_test_get_tv_mode_from_name_truncated
[16:36:32] ============ [PASSED] drm_get_tv_mode_from_name ============
[16:36:32] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[16:36:32] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[16:36:32] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[16:36:32] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[16:36:32] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[16:36:32] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[16:36:32] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[16:36:32] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[16:36:32] [PASSED] VIC 96
[16:36:32] [PASSED] VIC 97
[16:36:32] [PASSED] VIC 101
[16:36:32] [PASSED] VIC 102
[16:36:32] [PASSED] VIC 106
[16:36:32] [PASSED] VIC 107
[16:36:32] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[16:36:32] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[16:36:32] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[16:36:32] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[16:36:32] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[16:36:32] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[16:36:32] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[16:36:32] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[16:36:32] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[16:36:32] [PASSED] Automatic
[16:36:32] [PASSED] Full
[16:36:32] [PASSED] Limited 16:235
[16:36:32] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[16:36:32] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[16:36:32] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[16:36:32] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[16:36:32] === drm_test_drm_hdmi_connector_get_output_format_name ====
[16:36:32] [PASSED] RGB
[16:36:32] [PASSED] YUV 4:2:0
[16:36:32] [PASSED] YUV 4:2:2
[16:36:32] [PASSED] YUV 4:4:4
[16:36:32] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[16:36:32] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[16:36:32] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[16:36:32] ============= drm_damage_helper (21 subtests) ==============
[16:36:32] [PASSED] drm_test_damage_iter_no_damage
[16:36:32] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[16:36:32] [PASSED] drm_test_damage_iter_no_damage_src_moved
[16:36:32] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[16:36:32] [PASSED] drm_test_damage_iter_no_damage_not_visible
[16:36:32] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[16:36:32] [PASSED] drm_test_damage_iter_no_damage_no_fb
[16:36:32] [PASSED] drm_test_damage_iter_simple_damage
[16:36:32] [PASSED] drm_test_damage_iter_single_damage
[16:36:32] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[16:36:32] [PASSED] drm_test_damage_iter_single_damage_outside_src
[16:36:32] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[16:36:32] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[16:36:32] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[16:36:32] [PASSED] drm_test_damage_iter_single_damage_src_moved
[16:36:32] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[16:36:32] [PASSED] drm_test_damage_iter_damage
[16:36:32] [PASSED] drm_test_damage_iter_damage_one_intersect
[16:36:32] [PASSED] drm_test_damage_iter_damage_one_outside
[16:36:32] [PASSED] drm_test_damage_iter_damage_src_moved
[16:36:32] [PASSED] drm_test_damage_iter_damage_not_visible
[16:36:32] ================ [PASSED] drm_damage_helper ================
[16:36:32] ============== drm_dp_mst_helper (3 subtests) ==============
[16:36:32] ============== drm_test_dp_mst_calc_pbn_mode ==============
[16:36:32] [PASSED] Clock 154000 BPP 30 DSC disabled
[16:36:32] [PASSED] Clock 234000 BPP 30 DSC disabled
[16:36:32] [PASSED] Clock 297000 BPP 24 DSC disabled
[16:36:32] [PASSED] Clock 332880 BPP 24 DSC enabled
[16:36:32] [PASSED] Clock 324540 BPP 24 DSC enabled
[16:36:32] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[16:36:32] ============== drm_test_dp_mst_calc_pbn_div ===============
[16:36:32] [PASSED] Link rate 2000000 lane count 4
[16:36:32] [PASSED] Link rate 2000000 lane count 2
[16:36:32] [PASSED] Link rate 2000000 lane count 1
[16:36:32] [PASSED] Link rate 1350000 lane count 4
[16:36:32] [PASSED] Link rate 1350000 lane count 2
[16:36:32] [PASSED] Link rate 1350000 lane count 1
[16:36:32] [PASSED] Link rate 1000000 lane count 4
[16:36:32] [PASSED] Link rate 1000000 lane count 2
[16:36:32] [PASSED] Link rate 1000000 lane count 1
[16:36:32] [PASSED] Link rate 810000 lane count 4
[16:36:32] [PASSED] Link rate 810000 lane count 2
[16:36:32] [PASSED] Link rate 810000 lane count 1
[16:36:32] [PASSED] Link rate 540000 lane count 4
[16:36:32] [PASSED] Link rate 540000 lane count 2
[16:36:32] [PASSED] Link rate 540000 lane count 1
[16:36:32] [PASSED] Link rate 270000 lane count 4
[16:36:32] [PASSED] Link rate 270000 lane count 2
[16:36:32] [PASSED] Link rate 270000 lane count 1
[16:36:32] [PASSED] Link rate 162000 lane count 4
[16:36:32] [PASSED] Link rate 162000 lane count 2
[16:36:32] [PASSED] Link rate 162000 lane count 1
[16:36:32] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[16:36:32] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[16:36:32] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[16:36:32] [PASSED] DP_POWER_UP_PHY with port number
[16:36:32] [PASSED] DP_POWER_DOWN_PHY with port number
[16:36:32] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[16:36:32] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[16:36:32] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[16:36:32] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[16:36:32] [PASSED] DP_QUERY_PAYLOAD with port number
[16:36:32] [PASSED] DP_QUERY_PAYLOAD with VCPI
[16:36:32] [PASSED] DP_REMOTE_DPCD_READ with port number
[16:36:32] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[16:36:32] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[16:36:32] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[16:36:32] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[16:36:32] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[16:36:32] [PASSED] DP_REMOTE_I2C_READ with port number
[16:36:32] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[16:36:32] [PASSED] DP_REMOTE_I2C_READ with transactions array
[16:36:32] [PASSED] DP_REMOTE_I2C_WRITE with port number
[16:36:32] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[16:36:32] [PASSED] DP_REMOTE_I2C_WRITE with data array
[16:36:32] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[16:36:32] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[16:36:32] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[16:36:32] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[16:36:32] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[16:36:32] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[16:36:32] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[16:36:32] ================ [PASSED] drm_dp_mst_helper ================
[16:36:32] ================== drm_exec (7 subtests) ===================
[16:36:32] [PASSED] sanitycheck
[16:36:32] [PASSED] test_lock
[16:36:32] [PASSED] test_lock_unlock
[16:36:32] [PASSED] test_duplicates
[16:36:32] [PASSED] test_prepare
[16:36:32] [PASSED] test_prepare_array
[16:36:32] [PASSED] test_multiple_loops
[16:36:32] ==================== [PASSED] drm_exec =====================
[16:36:32] =========== drm_format_helper_test (17 subtests) ===========
[16:36:32] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[16:36:32] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[16:36:32] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[16:36:32] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[16:36:32] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[16:36:32] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[16:36:32] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[16:36:32] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[16:36:32] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[16:36:32] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[16:36:32] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[16:36:32] ============== drm_test_fb_xrgb8888_to_mono ===============
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[16:36:32] ==================== drm_test_fb_swab =====================
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ================ [PASSED] drm_test_fb_swab =================
[16:36:32] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[16:36:32] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[16:36:32] [PASSED] single_pixel_source_buffer
[16:36:32] [PASSED] single_pixel_clip_rectangle
[16:36:32] [PASSED] well_known_colors
[16:36:32] [PASSED] destination_pitch
[16:36:32] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[16:36:32] ================= drm_test_fb_clip_offset =================
[16:36:32] [PASSED] pass through
[16:36:32] [PASSED] horizontal offset
[16:36:32] [PASSED] vertical offset
[16:36:32] [PASSED] horizontal and vertical offset
[16:36:32] [PASSED] horizontal offset (custom pitch)
[16:36:32] [PASSED] vertical offset (custom pitch)
[16:36:32] [PASSED] horizontal and vertical offset (custom pitch)
[16:36:32] ============= [PASSED] drm_test_fb_clip_offset =============
[16:36:32] =================== drm_test_fb_memcpy ====================
[16:36:32] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[16:36:32] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[16:36:32] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[16:36:32] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[16:36:32] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[16:36:32] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[16:36:32] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[16:36:32] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[16:36:32] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[16:36:32] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[16:36:32] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[16:36:32] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[16:36:32] =============== [PASSED] drm_test_fb_memcpy ================
[16:36:32] ============= [PASSED] drm_format_helper_test ==============
[16:36:32] ================= drm_format (18 subtests) =================
[16:36:32] [PASSED] drm_test_format_block_width_invalid
[16:36:32] [PASSED] drm_test_format_block_width_one_plane
[16:36:32] [PASSED] drm_test_format_block_width_two_plane
[16:36:32] [PASSED] drm_test_format_block_width_three_plane
[16:36:32] [PASSED] drm_test_format_block_width_tiled
[16:36:32] [PASSED] drm_test_format_block_height_invalid
[16:36:32] [PASSED] drm_test_format_block_height_one_plane
[16:36:32] [PASSED] drm_test_format_block_height_two_plane
[16:36:32] [PASSED] drm_test_format_block_height_three_plane
[16:36:32] [PASSED] drm_test_format_block_height_tiled
[16:36:32] [PASSED] drm_test_format_min_pitch_invalid
[16:36:32] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[16:36:32] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[16:36:32] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[16:36:32] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[16:36:32] [PASSED] drm_test_format_min_pitch_two_plane
[16:36:32] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[16:36:32] [PASSED] drm_test_format_min_pitch_tiled
[16:36:32] =================== [PASSED] drm_format ====================
[16:36:32] ============== drm_framebuffer (10 subtests) ===============
[16:36:32] ========== drm_test_framebuffer_check_src_coords ==========
[16:36:32] [PASSED] Success: source fits into fb
[16:36:32] [PASSED] Fail: overflowing fb with x-axis coordinate
[16:36:32] [PASSED] Fail: overflowing fb with y-axis coordinate
[16:36:32] [PASSED] Fail: overflowing fb with source width
[16:36:32] [PASSED] Fail: overflowing fb with source height
[16:36:32] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[16:36:32] [PASSED] drm_test_framebuffer_cleanup
[16:36:32] =============== drm_test_framebuffer_create ===============
[16:36:32] [PASSED] ABGR8888 normal sizes
[16:36:32] [PASSED] ABGR8888 max sizes
[16:36:32] [PASSED] ABGR8888 pitch greater than min required
[16:36:32] [PASSED] ABGR8888 pitch less than min required
[16:36:32] [PASSED] ABGR8888 Invalid width
[16:36:32] [PASSED] ABGR8888 Invalid buffer handle
[16:36:32] [PASSED] No pixel format
[16:36:32] [PASSED] ABGR8888 Width 0
[16:36:32] [PASSED] ABGR8888 Height 0
[16:36:32] [PASSED] ABGR8888 Out of bound height * pitch combination
[16:36:32] [PASSED] ABGR8888 Large buffer offset
[16:36:32] [PASSED] ABGR8888 Buffer offset for inexistent plane
[16:36:32] [PASSED] ABGR8888 Invalid flag
[16:36:32] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[16:36:32] [PASSED] ABGR8888 Valid buffer modifier
[16:36:32] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[16:36:32] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[16:36:32] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[16:36:32] [PASSED] NV12 Normal sizes
[16:36:32] [PASSED] NV12 Max sizes
[16:36:32] [PASSED] NV12 Invalid pitch
[16:36:32] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[16:36:32] [PASSED] NV12 different modifier per-plane
[16:36:32] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[16:36:32] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[16:36:32] [PASSED] NV12 Modifier for inexistent plane
[16:36:32] [PASSED] NV12 Handle for inexistent plane
[16:36:32] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[16:36:32] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[16:36:32] [PASSED] YVU420 Normal sizes
[16:36:32] [PASSED] YVU420 Max sizes
[16:36:32] [PASSED] YVU420 Invalid pitch
[16:36:32] [PASSED] YVU420 Different pitches
[16:36:32] [PASSED] YVU420 Different buffer offsets/pitches
[16:36:32] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[16:36:32] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[16:36:32] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[16:36:32] [PASSED] YVU420 Valid modifier
[16:36:32] [PASSED] YVU420 Different modifiers per plane
[16:36:32] [PASSED] YVU420 Modifier for inexistent plane
[16:36:32] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[16:36:32] [PASSED] X0L2 Normal sizes
[16:36:32] [PASSED] X0L2 Max sizes
[16:36:32] [PASSED] X0L2 Invalid pitch
[16:36:32] [PASSED] X0L2 Pitch greater than minimum required
[16:36:32] [PASSED] X0L2 Handle for inexistent plane
[16:36:32] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[16:36:32] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[16:36:32] [PASSED] X0L2 Valid modifier
[16:36:32] [PASSED] X0L2 Modifier for inexistent plane
[16:36:32] =========== [PASSED] drm_test_framebuffer_create ===========
[16:36:32] [PASSED] drm_test_framebuffer_free
[16:36:32] [PASSED] drm_test_framebuffer_init
[16:36:32] [PASSED] drm_test_framebuffer_init_bad_format
[16:36:32] [PASSED] drm_test_framebuffer_init_dev_mismatch
[16:36:32] [PASSED] drm_test_framebuffer_lookup
[16:36:32] [PASSED] drm_test_framebuffer_lookup_inexistent
[16:36:32] [PASSED] drm_test_framebuffer_modifiers_not_supported
[16:36:32] ================= [PASSED] drm_framebuffer =================
[16:36:32] ================ drm_gem_shmem (8 subtests) ================
[16:36:32] [PASSED] drm_gem_shmem_test_obj_create
[16:36:32] [PASSED] drm_gem_shmem_test_obj_create_private
[16:36:32] [PASSED] drm_gem_shmem_test_pin_pages
[16:36:32] [PASSED] drm_gem_shmem_test_vmap
[16:36:32] [PASSED] drm_gem_shmem_test_get_sg_table
[16:36:32] [PASSED] drm_gem_shmem_test_get_pages_sgt
[16:36:32] [PASSED] drm_gem_shmem_test_madvise
[16:36:32] [PASSED] drm_gem_shmem_test_purge
[16:36:32] ================== [PASSED] drm_gem_shmem ==================
[16:36:32] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[16:36:32] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[16:36:32] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[16:36:32] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[16:36:32] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[16:36:32] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[16:36:32] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[16:36:32] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[16:36:32] [PASSED] Automatic
[16:36:32] [PASSED] Full
[16:36:32] [PASSED] Limited 16:235
[16:36:32] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[16:36:32] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[16:36:32] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[16:36:32] [PASSED] drm_test_check_disable_connector
[16:36:32] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[16:36:32] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[16:36:32] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[16:36:32] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[16:36:32] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[16:36:32] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[16:36:32] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[16:36:32] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[16:36:32] [PASSED] drm_test_check_output_bpc_dvi
[16:36:32] [PASSED] drm_test_check_output_bpc_format_vic_1
[16:36:32] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[16:36:32] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[16:36:32] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[16:36:32] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[16:36:32] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[16:36:32] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[16:36:32] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[16:36:32] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[16:36:32] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[16:36:32] [PASSED] drm_test_check_broadcast_rgb_value
[16:36:32] [PASSED] drm_test_check_bpc_8_value
[16:36:32] [PASSED] drm_test_check_bpc_10_value
[16:36:32] [PASSED] drm_test_check_bpc_12_value
[16:36:32] [PASSED] drm_test_check_format_value
[16:36:32] [PASSED] drm_test_check_tmds_char_value
[16:36:32] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[16:36:32] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[16:36:32] [PASSED] drm_test_check_mode_valid
[16:36:32] [PASSED] drm_test_check_mode_valid_reject
[16:36:32] [PASSED] drm_test_check_mode_valid_reject_rate
[16:36:32] [PASSED] drm_test_check_mode_valid_reject_max_clock
[16:36:32] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[16:36:32] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[16:36:32] [PASSED] drm_test_check_infoframes
[16:36:32] [PASSED] drm_test_check_reject_avi_infoframe
[16:36:32] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[16:36:32] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[16:36:32] [PASSED] drm_test_check_reject_audio_infoframe
[16:36:32] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[16:36:32] ================= drm_managed (2 subtests) =================
[16:36:32] [PASSED] drm_test_managed_release_action
[16:36:32] [PASSED] drm_test_managed_run_action
[16:36:32] =================== [PASSED] drm_managed ===================
[16:36:32] =================== drm_mm (6 subtests) ====================
[16:36:32] [PASSED] drm_test_mm_init
[16:36:32] [PASSED] drm_test_mm_debug
[16:36:32] [PASSED] drm_test_mm_align32
[16:36:32] [PASSED] drm_test_mm_align64
[16:36:32] [PASSED] drm_test_mm_lowest
[16:36:32] [PASSED] drm_test_mm_highest
[16:36:32] ===================== [PASSED] drm_mm ======================
[16:36:32] ============= drm_modes_analog_tv (5 subtests) =============
[16:36:32] [PASSED] drm_test_modes_analog_tv_mono_576i
[16:36:32] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[16:36:32] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[16:36:32] [PASSED] drm_test_modes_analog_tv_pal_576i
[16:36:32] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[16:36:32] =============== [PASSED] drm_modes_analog_tv ===============
[16:36:32] ============== drm_plane_helper (2 subtests) ===============
[16:36:32] =============== drm_test_check_plane_state ================
[16:36:32] [PASSED] clipping_simple
[16:36:32] [PASSED] clipping_rotate_reflect
[16:36:32] [PASSED] positioning_simple
[16:36:32] [PASSED] upscaling
[16:36:32] [PASSED] downscaling
[16:36:32] [PASSED] rounding1
[16:36:32] [PASSED] rounding2
[16:36:32] [PASSED] rounding3
[16:36:32] [PASSED] rounding4
[16:36:32] =========== [PASSED] drm_test_check_plane_state ============
[16:36:32] =========== drm_test_check_invalid_plane_state ============
[16:36:32] [PASSED] positioning_invalid
[16:36:32] [PASSED] upscaling_invalid
[16:36:32] [PASSED] downscaling_invalid
[16:36:32] ======= [PASSED] drm_test_check_invalid_plane_state ========
[16:36:32] ================ [PASSED] drm_plane_helper =================
[16:36:32] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[16:36:32] ====== drm_test_connector_helper_tv_get_modes_check =======
[16:36:32] [PASSED] None
[16:36:32] [PASSED] PAL
[16:36:32] [PASSED] NTSC
[16:36:32] [PASSED] Both, NTSC Default
[16:36:32] [PASSED] Both, PAL Default
[16:36:32] [PASSED] Both, NTSC Default, with PAL on command-line
[16:36:32] [PASSED] Both, PAL Default, with NTSC on command-line
[16:36:32] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[16:36:32] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[16:36:32] ================== drm_rect (9 subtests) ===================
[16:36:32] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[16:36:32] [PASSED] drm_test_rect_clip_scaled_not_clipped
[16:36:32] [PASSED] drm_test_rect_clip_scaled_clipped
[16:36:32] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[16:36:32] ================= drm_test_rect_intersect =================
[16:36:32] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[16:36:32] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[16:36:32] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[16:36:32] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[16:36:32] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[16:36:32] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[16:36:32] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[16:36:32] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[16:36:32] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[16:36:32] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[16:36:32] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[16:36:32] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[16:36:32] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[16:36:32] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[16:36:32] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[16:36:32] ============= [PASSED] drm_test_rect_intersect =============
[16:36:32] ================ drm_test_rect_calc_hscale ================
[16:36:32] [PASSED] normal use
[16:36:32] [PASSED] out of max range
[16:36:32] [PASSED] out of min range
[16:36:32] [PASSED] zero dst
[16:36:32] [PASSED] negative src
[16:36:32] [PASSED] negative dst
[16:36:32] ============ [PASSED] drm_test_rect_calc_hscale ============
[16:36:32] ================ drm_test_rect_calc_vscale ================
[16:36:32] [PASSED] normal use
[16:36:32] [PASSED] out of max range
[16:36:32] [PASSED] out of min range
[16:36:32] [PASSED] zero dst
[16:36:32] [PASSED] negative src
[16:36:32] [PASSED] negative dst
[16:36:32] ============ [PASSED] drm_test_rect_calc_vscale ============
[16:36:32] ================== drm_test_rect_rotate ===================
[16:36:32] [PASSED] reflect-x
[16:36:32] [PASSED] reflect-y
[16:36:32] [PASSED] rotate-0
[16:36:32] [PASSED] rotate-90
[16:36:32] [PASSED] rotate-180
[16:36:32] [PASSED] rotate-270
[16:36:32] ============== [PASSED] drm_test_rect_rotate ===============
[16:36:32] ================ drm_test_rect_rotate_inv =================
[16:36:32] [PASSED] reflect-x
[16:36:32] [PASSED] reflect-y
[16:36:32] [PASSED] rotate-0
[16:36:32] [PASSED] rotate-90
[16:36:32] [PASSED] rotate-180
[16:36:32] [PASSED] rotate-270
[16:36:32] ============ [PASSED] drm_test_rect_rotate_inv =============
[16:36:32] ==================== [PASSED] drm_rect =====================
[16:36:32] ============ drm_sysfb_modeset_test (1 subtest) ============
[16:36:32] ============ drm_test_sysfb_build_fourcc_list =============
[16:36:32] [PASSED] no native formats
[16:36:32] [PASSED] XRGB8888 as native format
[16:36:32] [PASSED] remove duplicates
[16:36:32] [PASSED] convert alpha formats
[16:36:32] [PASSED] random formats
[16:36:32] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[16:36:32] ============= [PASSED] drm_sysfb_modeset_test ==============
[16:36:32] ================== drm_fixp (2 subtests) ===================
[16:36:32] [PASSED] drm_test_int2fixp
[16:36:32] [PASSED] drm_test_sm2fixp
[16:36:32] ==================== [PASSED] drm_fixp =====================
[16:36:32] ============================================================
[16:36:32] Testing complete. Ran 621 tests: passed: 621
[16:36:32] Elapsed time: 25.918s total, 1.723s configuring, 23.975s building, 0.180s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[16:36:32] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:36:34] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[16:36:43] Starting KUnit Kernel (1/1)...
[16:36:43] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:36:43] ================= ttm_device (5 subtests) ==================
[16:36:43] [PASSED] ttm_device_init_basic
[16:36:43] [PASSED] ttm_device_init_multiple
[16:36:43] [PASSED] ttm_device_fini_basic
[16:36:43] [PASSED] ttm_device_init_no_vma_man
[16:36:43] ================== ttm_device_init_pools ==================
[16:36:43] [PASSED] No DMA allocations, no DMA32 required
[16:36:43] [PASSED] DMA allocations, DMA32 required
[16:36:43] [PASSED] No DMA allocations, DMA32 required
[16:36:43] [PASSED] DMA allocations, no DMA32 required
[16:36:43] ============== [PASSED] ttm_device_init_pools ==============
[16:36:43] =================== [PASSED] ttm_device ====================
[16:36:43] ================== ttm_pool (8 subtests) ===================
[16:36:43] ================== ttm_pool_alloc_basic ===================
[16:36:43] [PASSED] One page
[16:36:43] [PASSED] More than one page
[16:36:43] [PASSED] Above the allocation limit
[16:36:43] [PASSED] One page, with coherent DMA mappings enabled
[16:36:43] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[16:36:43] ============== [PASSED] ttm_pool_alloc_basic ===============
[16:36:43] ============== ttm_pool_alloc_basic_dma_addr ==============
[16:36:43] [PASSED] One page
[16:36:43] [PASSED] More than one page
[16:36:43] [PASSED] Above the allocation limit
[16:36:43] [PASSED] One page, with coherent DMA mappings enabled
[16:36:43] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[16:36:43] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[16:36:43] [PASSED] ttm_pool_alloc_order_caching_match
[16:36:43] [PASSED] ttm_pool_alloc_caching_mismatch
[16:36:43] [PASSED] ttm_pool_alloc_order_mismatch
[16:36:43] [PASSED] ttm_pool_free_dma_alloc
[16:36:43] [PASSED] ttm_pool_free_no_dma_alloc
[16:36:43] [PASSED] ttm_pool_fini_basic
[16:36:43] ==================== [PASSED] ttm_pool =====================
[16:36:43] ================ ttm_resource (8 subtests) =================
[16:36:43] ================= ttm_resource_init_basic =================
[16:36:43] [PASSED] Init resource in TTM_PL_SYSTEM
[16:36:43] [PASSED] Init resource in TTM_PL_VRAM
[16:36:43] [PASSED] Init resource in a private placement
[16:36:43] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[16:36:43] ============= [PASSED] ttm_resource_init_basic =============
[16:36:43] [PASSED] ttm_resource_init_pinned
[16:36:43] [PASSED] ttm_resource_fini_basic
[16:36:43] [PASSED] ttm_resource_manager_init_basic
[16:36:43] [PASSED] ttm_resource_manager_usage_basic
[16:36:43] [PASSED] ttm_resource_manager_set_used_basic
[16:36:43] [PASSED] ttm_sys_man_alloc_basic
[16:36:43] [PASSED] ttm_sys_man_free_basic
[16:36:43] ================== [PASSED] ttm_resource ===================
[16:36:43] =================== ttm_tt (15 subtests) ===================
[16:36:43] ==================== ttm_tt_init_basic ====================
[16:36:43] [PASSED] Page-aligned size
[16:36:43] [PASSED] Extra pages requested
[16:36:43] ================ [PASSED] ttm_tt_init_basic ================
[16:36:43] [PASSED] ttm_tt_init_misaligned
[16:36:43] [PASSED] ttm_tt_fini_basic
[16:36:43] [PASSED] ttm_tt_fini_sg
[16:36:43] [PASSED] ttm_tt_fini_shmem
[16:36:43] [PASSED] ttm_tt_create_basic
[16:36:43] [PASSED] ttm_tt_create_invalid_bo_type
[16:36:43] [PASSED] ttm_tt_create_ttm_exists
[16:36:43] [PASSED] ttm_tt_create_failed
[16:36:43] [PASSED] ttm_tt_destroy_basic
[16:36:43] [PASSED] ttm_tt_populate_null_ttm
[16:36:43] [PASSED] ttm_tt_populate_populated_ttm
[16:36:43] [PASSED] ttm_tt_unpopulate_basic
[16:36:43] [PASSED] ttm_tt_unpopulate_empty_ttm
[16:36:43] [PASSED] ttm_tt_swapin_basic
[16:36:43] ===================== [PASSED] ttm_tt ======================
[16:36:43] =================== ttm_bo (14 subtests) ===================
[16:36:43] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[16:36:43] [PASSED] Cannot be interrupted and sleeps
[16:36:43] [PASSED] Cannot be interrupted, locks straight away
[16:36:43] [PASSED] Can be interrupted, sleeps
[16:36:43] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[16:36:43] [PASSED] ttm_bo_reserve_locked_no_sleep
[16:36:43] [PASSED] ttm_bo_reserve_no_wait_ticket
[16:36:43] [PASSED] ttm_bo_reserve_double_resv
[16:36:43] [PASSED] ttm_bo_reserve_interrupted
[16:36:43] [PASSED] ttm_bo_reserve_deadlock
[16:36:43] [PASSED] ttm_bo_unreserve_basic
[16:36:43] [PASSED] ttm_bo_unreserve_pinned
[16:36:43] [PASSED] ttm_bo_unreserve_bulk
[16:36:43] [PASSED] ttm_bo_fini_basic
[16:36:43] [PASSED] ttm_bo_fini_shared_resv
[16:36:43] [PASSED] ttm_bo_pin_basic
[16:36:43] [PASSED] ttm_bo_pin_unpin_resource
[16:36:43] [PASSED] ttm_bo_multiple_pin_one_unpin
[16:36:43] ===================== [PASSED] ttm_bo ======================
[16:36:43] ============== ttm_bo_validate (22 subtests) ===============
[16:36:43] ============== ttm_bo_init_reserved_sys_man ===============
[16:36:43] [PASSED] Buffer object for userspace
[16:36:43] [PASSED] Kernel buffer object
[16:36:43] [PASSED] Shared buffer object
[16:36:43] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[16:36:43] ============== ttm_bo_init_reserved_mock_man ==============
[16:36:43] [PASSED] Buffer object for userspace
[16:36:43] [PASSED] Kernel buffer object
[16:36:43] [PASSED] Shared buffer object
[16:36:43] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[16:36:43] [PASSED] ttm_bo_init_reserved_resv
[16:36:43] ================== ttm_bo_validate_basic ==================
[16:36:43] [PASSED] Buffer object for userspace
[16:36:43] [PASSED] Kernel buffer object
[16:36:43] [PASSED] Shared buffer object
[16:36:43] ============== [PASSED] ttm_bo_validate_basic ==============
[16:36:43] [PASSED] ttm_bo_validate_invalid_placement
[16:36:43] ============= ttm_bo_validate_same_placement ==============
[16:36:43] [PASSED] System manager
[16:36:43] [PASSED] VRAM manager
[16:36:43] ========= [PASSED] ttm_bo_validate_same_placement ==========
[16:36:43] [PASSED] ttm_bo_validate_failed_alloc
[16:36:43] [PASSED] ttm_bo_validate_pinned
[16:36:43] [PASSED] ttm_bo_validate_busy_placement
[16:36:43] ================ ttm_bo_validate_multihop =================
[16:36:43] [PASSED] Buffer object for userspace
[16:36:43] [PASSED] Kernel buffer object
[16:36:43] [PASSED] Shared buffer object
[16:36:43] ============ [PASSED] ttm_bo_validate_multihop =============
[16:36:43] ========== ttm_bo_validate_no_placement_signaled ==========
[16:36:43] [PASSED] Buffer object in system domain, no page vector
[16:36:43] [PASSED] Buffer object in system domain with an existing page vector
[16:36:43] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[16:36:43] ======== ttm_bo_validate_no_placement_not_signaled ========
[16:36:43] [PASSED] Buffer object for userspace
[16:36:43] [PASSED] Kernel buffer object
[16:36:43] [PASSED] Shared buffer object
[16:36:43] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[16:36:43] [PASSED] ttm_bo_validate_move_fence_signaled
[16:36:43] ========= ttm_bo_validate_move_fence_not_signaled =========
[16:36:43] [PASSED] Waits for GPU
[16:36:43] [PASSED] Tries to lock straight away
[16:36:43] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[16:36:43] [PASSED] ttm_bo_validate_swapout
[16:36:43] [PASSED] ttm_bo_validate_happy_evict
[16:36:43] [PASSED] ttm_bo_validate_all_pinned_evict
[16:36:43] [PASSED] ttm_bo_validate_allowed_only_evict
[16:36:43] [PASSED] ttm_bo_validate_deleted_evict
[16:36:43] [PASSED] ttm_bo_validate_busy_domain_evict
[16:36:43] [PASSED] ttm_bo_validate_evict_gutting
[16:36:43] [PASSED] ttm_bo_validate_recrusive_evict
[16:36:43] ================= [PASSED] ttm_bo_validate =================
[16:36:43] ============================================================
[16:36:43] Testing complete. Ran 102 tests: passed: 102
[16:36:44] Elapsed time: 11.603s total, 1.738s configuring, 9.650s building, 0.180s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 30+ messages in thread* ✓ Xe.CI.BAT: success for drm/xe: Misc initialization improvements
2026-05-25 16:05 [PATCH 0/6] drm/xe: Misc initialization improvements Michal Wajdeczko
` (6 preceding siblings ...)
2026-05-25 16:36 ` ✓ CI.KUnit: success for drm/xe: Misc initialization improvements Patchwork
@ 2026-05-25 17:42 ` Patchwork
2026-05-25 19:48 ` ✓ CI.KUnit: success for drm/xe: Misc initialization improvements (rev2) Patchwork
` (2 subsequent siblings)
10 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2026-05-25 17:42 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1001 bytes --]
== Series Details ==
Series: drm/xe: Misc initialization improvements
URL : https://patchwork.freedesktop.org/series/167227/
State : success
== Summary ==
CI Bug Log - changes from xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b_BAT -> xe-pw-167227v1_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* IGT: IGT_8936 -> IGT_8937
* Linux: xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b -> xe-pw-167227v1
IGT_8936: 98b65acc4f6edf68cd52b30f27b83049c4c5c83b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
IGT_8937: 8937
xe-5124-04d475020800d0a1033ca89a0d6d5fc638ddc65b: 04d475020800d0a1033ca89a0d6d5fc638ddc65b
xe-pw-167227v1: 167227v1
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v1/index.html
[-- Attachment #2: Type: text/html, Size: 1563 bytes --]
^ permalink raw reply [flat|nested] 30+ messages in thread* ✓ CI.KUnit: success for drm/xe: Misc initialization improvements (rev2)
2026-05-25 16:05 [PATCH 0/6] drm/xe: Misc initialization improvements Michal Wajdeczko
` (7 preceding siblings ...)
2026-05-25 17:42 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-05-25 19:48 ` Patchwork
2026-05-25 20:49 ` ✓ Xe.CI.BAT: " Patchwork
2026-05-26 1:59 ` ✓ Xe.CI.FULL: " Patchwork
10 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2026-05-25 19:48 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
== Series Details ==
Series: drm/xe: Misc initialization improvements (rev2)
URL : https://patchwork.freedesktop.org/series/167227/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[19:47:17] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[19:47:21] 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
[19:47:52] Starting KUnit Kernel (1/1)...
[19:47:52] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[19:47:52] ================== guc_buf (11 subtests) ===================
[19:47:52] [PASSED] test_smallest
[19:47:52] [PASSED] test_largest
[19:47:52] [PASSED] test_granular
[19:47:52] [PASSED] test_unique
[19:47:52] [PASSED] test_overlap
[19:47:52] [PASSED] test_reusable
[19:47:52] [PASSED] test_too_big
[19:47:52] [PASSED] test_flush
[19:47:52] [PASSED] test_lookup
[19:47:52] [PASSED] test_data
[19:47:52] [PASSED] test_class
[19:47:52] ===================== [PASSED] guc_buf =====================
[19:47:52] =================== guc_dbm (7 subtests) ===================
[19:47:52] [PASSED] test_empty
[19:47:52] [PASSED] test_default
[19:47:52] ======================== test_size ========================
[19:47:52] [PASSED] 4
[19:47:52] [PASSED] 8
[19:47:52] [PASSED] 32
[19:47:52] [PASSED] 256
[19:47:52] ==================== [PASSED] test_size ====================
[19:47:52] ======================= test_reuse ========================
[19:47:52] [PASSED] 4
[19:47:52] [PASSED] 8
[19:47:52] [PASSED] 32
[19:47:52] [PASSED] 256
[19:47:52] =================== [PASSED] test_reuse ====================
[19:47:52] =================== test_range_overlap ====================
[19:47:52] [PASSED] 4
[19:47:52] [PASSED] 8
[19:47:52] [PASSED] 32
[19:47:52] [PASSED] 256
[19:47:52] =============== [PASSED] test_range_overlap ================
[19:47:52] =================== test_range_compact ====================
[19:47:52] [PASSED] 4
[19:47:52] [PASSED] 8
[19:47:52] [PASSED] 32
[19:47:52] [PASSED] 256
[19:47:52] =============== [PASSED] test_range_compact ================
[19:47:52] ==================== test_range_spare =====================
[19:47:52] [PASSED] 4
[19:47:52] [PASSED] 8
[19:47:52] [PASSED] 32
[19:47:52] [PASSED] 256
[19:47:52] ================ [PASSED] test_range_spare =================
[19:47:52] ===================== [PASSED] guc_dbm =====================
[19:47:52] =================== guc_idm (6 subtests) ===================
[19:47:52] [PASSED] bad_init
[19:47:52] [PASSED] no_init
[19:47:52] [PASSED] init_fini
[19:47:52] [PASSED] check_used
[19:47:52] [PASSED] check_quota
[19:47:52] [PASSED] check_all
[19:47:52] ===================== [PASSED] guc_idm =====================
[19:47:52] ================== no_relay (3 subtests) ===================
[19:47:52] [PASSED] xe_drops_guc2pf_if_not_ready
[19:47:52] [PASSED] xe_drops_guc2vf_if_not_ready
[19:47:52] [PASSED] xe_rejects_send_if_not_ready
[19:47:52] ==================== [PASSED] no_relay =====================
[19:47:52] ================== pf_relay (14 subtests) ==================
[19:47:52] [PASSED] pf_rejects_guc2pf_too_short
[19:47:52] [PASSED] pf_rejects_guc2pf_too_long
[19:47:52] [PASSED] pf_rejects_guc2pf_no_payload
[19:47:52] [PASSED] pf_fails_no_payload
[19:47:52] [PASSED] pf_fails_bad_origin
[19:47:52] [PASSED] pf_fails_bad_type
[19:47:52] [PASSED] pf_txn_reports_error
[19:47:52] [PASSED] pf_txn_sends_pf2guc
[19:47:52] [PASSED] pf_sends_pf2guc
[19:47:52] [SKIPPED] pf_loopback_nop
[19:47:52] [SKIPPED] pf_loopback_echo
[19:47:52] [SKIPPED] pf_loopback_fail
[19:47:52] [SKIPPED] pf_loopback_busy
[19:47:52] [SKIPPED] pf_loopback_retry
[19:47:52] ==================== [PASSED] pf_relay =====================
[19:47:52] ================== vf_relay (3 subtests) ===================
[19:47:52] [PASSED] vf_rejects_guc2vf_too_short
[19:47:52] [PASSED] vf_rejects_guc2vf_too_long
[19:47:52] [PASSED] vf_rejects_guc2vf_no_payload
[19:47:52] ==================== [PASSED] vf_relay =====================
[19:47:52] ================ pf_gt_config (9 subtests) =================
[19:47:52] [PASSED] fair_contexts_1vf
[19:47:52] [PASSED] fair_doorbells_1vf
[19:47:52] [PASSED] fair_ggtt_1vf
[19:47:52] ====================== fair_vram_1vf ======================
[19:47:52] [PASSED] 3.50 GiB
[19:47:52] [PASSED] 11.5 GiB
[19:47:52] [PASSED] 15.5 GiB
[19:47:52] [PASSED] 31.5 GiB
[19:47:52] [PASSED] 63.5 GiB
[19:47:52] [PASSED] 1.91 GiB
[19:47:52] ================== [PASSED] fair_vram_1vf ==================
[19:47:52] ================ fair_vram_1vf_admin_only =================
[19:47:52] [PASSED] 3.50 GiB
[19:47:52] [PASSED] 11.5 GiB
[19:47:52] [PASSED] 15.5 GiB
[19:47:52] [PASSED] 31.5 GiB
[19:47:52] [PASSED] 63.5 GiB
[19:47:52] [PASSED] 1.91 GiB
[19:47:52] ============ [PASSED] fair_vram_1vf_admin_only =============
[19:47:52] ====================== fair_contexts ======================
[19:47:52] [PASSED] 1 VF
[19:47:52] [PASSED] 2 VFs
[19:47:52] [PASSED] 3 VFs
[19:47:52] [PASSED] 4 VFs
[19:47:52] [PASSED] 5 VFs
[19:47:52] [PASSED] 6 VFs
[19:47:52] [PASSED] 7 VFs
[19:47:52] [PASSED] 8 VFs
[19:47:52] [PASSED] 9 VFs
[19:47:52] [PASSED] 10 VFs
[19:47:52] [PASSED] 11 VFs
[19:47:52] [PASSED] 12 VFs
[19:47:52] [PASSED] 13 VFs
[19:47:52] [PASSED] 14 VFs
[19:47:52] [PASSED] 15 VFs
[19:47:52] [PASSED] 16 VFs
[19:47:52] [PASSED] 17 VFs
[19:47:53] [PASSED] 18 VFs
[19:47:53] [PASSED] 19 VFs
[19:47:53] [PASSED] 20 VFs
[19:47:53] [PASSED] 21 VFs
[19:47:53] [PASSED] 22 VFs
[19:47:53] [PASSED] 23 VFs
[19:47:53] [PASSED] 24 VFs
[19:47:53] [PASSED] 25 VFs
[19:47:53] [PASSED] 26 VFs
[19:47:53] [PASSED] 27 VFs
[19:47:53] [PASSED] 28 VFs
[19:47:53] [PASSED] 29 VFs
[19:47:53] [PASSED] 30 VFs
[19:47:53] [PASSED] 31 VFs
[19:47:53] [PASSED] 32 VFs
[19:47:53] [PASSED] 33 VFs
[19:47:53] [PASSED] 34 VFs
[19:47:53] [PASSED] 35 VFs
[19:47:53] [PASSED] 36 VFs
[19:47:53] [PASSED] 37 VFs
[19:47:53] [PASSED] 38 VFs
[19:47:53] [PASSED] 39 VFs
[19:47:53] [PASSED] 40 VFs
[19:47:53] [PASSED] 41 VFs
[19:47:53] [PASSED] 42 VFs
[19:47:53] [PASSED] 43 VFs
[19:47:53] [PASSED] 44 VFs
[19:47:53] [PASSED] 45 VFs
[19:47:53] [PASSED] 46 VFs
[19:47:53] [PASSED] 47 VFs
[19:47:53] [PASSED] 48 VFs
[19:47:53] [PASSED] 49 VFs
[19:47:53] [PASSED] 50 VFs
[19:47:53] [PASSED] 51 VFs
[19:47:53] [PASSED] 52 VFs
[19:47:53] [PASSED] 53 VFs
[19:47:53] [PASSED] 54 VFs
[19:47:53] [PASSED] 55 VFs
[19:47:53] [PASSED] 56 VFs
[19:47:53] [PASSED] 57 VFs
[19:47:53] [PASSED] 58 VFs
[19:47:53] [PASSED] 59 VFs
[19:47:53] [PASSED] 60 VFs
[19:47:53] [PASSED] 61 VFs
[19:47:53] [PASSED] 62 VFs
[19:47:53] [PASSED] 63 VFs
[19:47:53] ================== [PASSED] fair_contexts ==================
[19:47:53] ===================== fair_doorbells ======================
[19:47:53] [PASSED] 1 VF
[19:47:53] [PASSED] 2 VFs
[19:47:53] [PASSED] 3 VFs
[19:47:53] [PASSED] 4 VFs
[19:47:53] [PASSED] 5 VFs
[19:47:53] [PASSED] 6 VFs
[19:47:53] [PASSED] 7 VFs
[19:47:53] [PASSED] 8 VFs
[19:47:53] [PASSED] 9 VFs
[19:47:53] [PASSED] 10 VFs
[19:47:53] [PASSED] 11 VFs
[19:47:53] [PASSED] 12 VFs
[19:47:53] [PASSED] 13 VFs
[19:47:53] [PASSED] 14 VFs
[19:47:53] [PASSED] 15 VFs
[19:47:53] [PASSED] 16 VFs
[19:47:53] [PASSED] 17 VFs
[19:47:53] [PASSED] 18 VFs
[19:47:53] [PASSED] 19 VFs
[19:47:53] [PASSED] 20 VFs
[19:47:53] [PASSED] 21 VFs
[19:47:53] [PASSED] 22 VFs
[19:47:53] [PASSED] 23 VFs
[19:47:53] [PASSED] 24 VFs
[19:47:53] [PASSED] 25 VFs
[19:47:53] [PASSED] 26 VFs
[19:47:53] [PASSED] 27 VFs
[19:47:53] [PASSED] 28 VFs
[19:47:53] [PASSED] 29 VFs
[19:47:53] [PASSED] 30 VFs
[19:47:53] [PASSED] 31 VFs
[19:47:53] [PASSED] 32 VFs
[19:47:53] [PASSED] 33 VFs
[19:47:53] [PASSED] 34 VFs
[19:47:53] [PASSED] 35 VFs
[19:47:53] [PASSED] 36 VFs
[19:47:53] [PASSED] 37 VFs
[19:47:53] [PASSED] 38 VFs
[19:47:53] [PASSED] 39 VFs
[19:47:53] [PASSED] 40 VFs
[19:47:53] [PASSED] 41 VFs
[19:47:53] [PASSED] 42 VFs
[19:47:53] [PASSED] 43 VFs
[19:47:53] [PASSED] 44 VFs
[19:47:53] [PASSED] 45 VFs
[19:47:53] [PASSED] 46 VFs
[19:47:53] [PASSED] 47 VFs
[19:47:53] [PASSED] 48 VFs
[19:47:53] [PASSED] 49 VFs
[19:47:53] [PASSED] 50 VFs
[19:47:53] [PASSED] 51 VFs
[19:47:53] [PASSED] 52 VFs
[19:47:53] [PASSED] 53 VFs
[19:47:53] [PASSED] 54 VFs
[19:47:53] [PASSED] 55 VFs
[19:47:53] [PASSED] 56 VFs
[19:47:53] [PASSED] 57 VFs
[19:47:53] [PASSED] 58 VFs
[19:47:53] [PASSED] 59 VFs
[19:47:53] [PASSED] 60 VFs
[19:47:53] [PASSED] 61 VFs
[19:47:53] [PASSED] 62 VFs
[19:47:53] [PASSED] 63 VFs
[19:47:53] ================= [PASSED] fair_doorbells ==================
[19:47:53] ======================== fair_ggtt ========================
[19:47:53] [PASSED] 1 VF
[19:47:53] [PASSED] 2 VFs
[19:47:53] [PASSED] 3 VFs
[19:47:53] [PASSED] 4 VFs
[19:47:53] [PASSED] 5 VFs
[19:47:53] [PASSED] 6 VFs
[19:47:53] [PASSED] 7 VFs
[19:47:53] [PASSED] 8 VFs
[19:47:53] [PASSED] 9 VFs
[19:47:53] [PASSED] 10 VFs
[19:47:53] [PASSED] 11 VFs
[19:47:53] [PASSED] 12 VFs
[19:47:53] [PASSED] 13 VFs
[19:47:53] [PASSED] 14 VFs
[19:47:53] [PASSED] 15 VFs
[19:47:53] [PASSED] 16 VFs
[19:47:53] [PASSED] 17 VFs
[19:47:53] [PASSED] 18 VFs
[19:47:53] [PASSED] 19 VFs
[19:47:53] [PASSED] 20 VFs
[19:47:53] [PASSED] 21 VFs
[19:47:53] [PASSED] 22 VFs
[19:47:53] [PASSED] 23 VFs
[19:47:53] [PASSED] 24 VFs
[19:47:53] [PASSED] 25 VFs
[19:47:53] [PASSED] 26 VFs
[19:47:53] [PASSED] 27 VFs
[19:47:53] [PASSED] 28 VFs
[19:47:53] [PASSED] 29 VFs
[19:47:53] [PASSED] 30 VFs
[19:47:53] [PASSED] 31 VFs
[19:47:53] [PASSED] 32 VFs
[19:47:53] [PASSED] 33 VFs
[19:47:53] [PASSED] 34 VFs
[19:47:53] [PASSED] 35 VFs
[19:47:53] [PASSED] 36 VFs
[19:47:53] [PASSED] 37 VFs
[19:47:53] [PASSED] 38 VFs
[19:47:53] [PASSED] 39 VFs
[19:47:53] [PASSED] 40 VFs
[19:47:53] [PASSED] 41 VFs
[19:47:53] [PASSED] 42 VFs
[19:47:53] [PASSED] 43 VFs
[19:47:53] [PASSED] 44 VFs
[19:47:53] [PASSED] 45 VFs
[19:47:53] [PASSED] 46 VFs
[19:47:53] [PASSED] 47 VFs
[19:47:53] [PASSED] 48 VFs
[19:47:53] [PASSED] 49 VFs
[19:47:53] [PASSED] 50 VFs
[19:47:53] [PASSED] 51 VFs
[19:47:53] [PASSED] 52 VFs
[19:47:53] [PASSED] 53 VFs
[19:47:53] [PASSED] 54 VFs
[19:47:53] [PASSED] 55 VFs
[19:47:53] [PASSED] 56 VFs
[19:47:53] [PASSED] 57 VFs
[19:47:53] [PASSED] 58 VFs
[19:47:53] [PASSED] 59 VFs
[19:47:53] [PASSED] 60 VFs
[19:47:53] [PASSED] 61 VFs
[19:47:53] [PASSED] 62 VFs
[19:47:53] [PASSED] 63 VFs
[19:47:53] ==================== [PASSED] fair_ggtt ====================
[19:47:53] ======================== fair_vram ========================
[19:47:53] [PASSED] 1 VF
[19:47:53] [PASSED] 2 VFs
[19:47:53] [PASSED] 3 VFs
[19:47:53] [PASSED] 4 VFs
[19:47:53] [PASSED] 5 VFs
[19:47:53] [PASSED] 6 VFs
[19:47:53] [PASSED] 7 VFs
[19:47:53] [PASSED] 8 VFs
[19:47:53] [PASSED] 9 VFs
[19:47:53] [PASSED] 10 VFs
[19:47:53] [PASSED] 11 VFs
[19:47:53] [PASSED] 12 VFs
[19:47:53] [PASSED] 13 VFs
[19:47:53] [PASSED] 14 VFs
[19:47:53] [PASSED] 15 VFs
[19:47:53] [PASSED] 16 VFs
[19:47:53] [PASSED] 17 VFs
[19:47:53] [PASSED] 18 VFs
[19:47:53] [PASSED] 19 VFs
[19:47:53] [PASSED] 20 VFs
[19:47:53] [PASSED] 21 VFs
[19:47:53] [PASSED] 22 VFs
[19:47:53] [PASSED] 23 VFs
[19:47:53] [PASSED] 24 VFs
[19:47:53] [PASSED] 25 VFs
[19:47:53] [PASSED] 26 VFs
[19:47:53] [PASSED] 27 VFs
[19:47:53] [PASSED] 28 VFs
[19:47:53] [PASSED] 29 VFs
[19:47:53] [PASSED] 30 VFs
[19:47:53] [PASSED] 31 VFs
[19:47:53] [PASSED] 32 VFs
[19:47:53] [PASSED] 33 VFs
[19:47:53] [PASSED] 34 VFs
[19:47:53] [PASSED] 35 VFs
[19:47:53] [PASSED] 36 VFs
[19:47:53] [PASSED] 37 VFs
[19:47:53] [PASSED] 38 VFs
[19:47:53] [PASSED] 39 VFs
[19:47:53] [PASSED] 40 VFs
[19:47:53] [PASSED] 41 VFs
[19:47:53] [PASSED] 42 VFs
[19:47:53] [PASSED] 43 VFs
[19:47:53] [PASSED] 44 VFs
[19:47:53] [PASSED] 45 VFs
[19:47:53] [PASSED] 46 VFs
[19:47:53] [PASSED] 47 VFs
[19:47:53] [PASSED] 48 VFs
[19:47:53] [PASSED] 49 VFs
[19:47:53] [PASSED] 50 VFs
[19:47:53] [PASSED] 51 VFs
[19:47:53] [PASSED] 52 VFs
[19:47:53] [PASSED] 53 VFs
[19:47:53] [PASSED] 54 VFs
[19:47:53] [PASSED] 55 VFs
[19:47:53] [PASSED] 56 VFs
[19:47:53] [PASSED] 57 VFs
[19:47:53] [PASSED] 58 VFs
[19:47:53] [PASSED] 59 VFs
[19:47:53] [PASSED] 60 VFs
[19:47:53] [PASSED] 61 VFs
[19:47:53] [PASSED] 62 VFs
[19:47:53] [PASSED] 63 VFs
[19:47:53] ==================== [PASSED] fair_vram ====================
[19:47:53] ================== [PASSED] pf_gt_config ===================
[19:47:53] ===================== lmtt (1 subtest) =====================
[19:47:53] ======================== test_ops =========================
[19:47:53] [PASSED] 2-level
[19:47:53] [PASSED] multi-level
[19:47:53] ==================== [PASSED] test_ops =====================
[19:47:53] ====================== [PASSED] lmtt =======================
[19:47:53] ================= pf_service (11 subtests) =================
[19:47:53] [PASSED] pf_negotiate_any
[19:47:53] [PASSED] pf_negotiate_base_match
[19:47:53] [PASSED] pf_negotiate_base_newer
[19:47:53] [PASSED] pf_negotiate_base_next
[19:47:53] [SKIPPED] pf_negotiate_base_older
[19:47:53] [PASSED] pf_negotiate_base_prev
[19:47:53] [PASSED] pf_negotiate_latest_match
[19:47:53] [PASSED] pf_negotiate_latest_newer
[19:47:53] [PASSED] pf_negotiate_latest_next
[19:47:53] [SKIPPED] pf_negotiate_latest_older
[19:47:53] [SKIPPED] pf_negotiate_latest_prev
[19:47:53] =================== [PASSED] pf_service ====================
[19:47:53] ================= xe_guc_g2g (2 subtests) ==================
[19:47:53] ============== xe_live_guc_g2g_kunit_default ==============
[19:47:53] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[19:47:53] ============== xe_live_guc_g2g_kunit_allmem ===============
[19:47:53] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[19:47:53] =================== [SKIPPED] xe_guc_g2g ===================
[19:47:53] =================== xe_mocs (2 subtests) ===================
[19:47:53] ================ xe_live_mocs_kernel_kunit ================
[19:47:53] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[19:47:53] ================ xe_live_mocs_reset_kunit =================
[19:47:53] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[19:47:53] ==================== [SKIPPED] xe_mocs =====================
[19:47:53] ================= xe_migrate (2 subtests) ==================
[19:47:53] ================= xe_migrate_sanity_kunit =================
[19:47:53] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[19:47:53] ================== xe_validate_ccs_kunit ==================
[19:47:53] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[19:47:53] =================== [SKIPPED] xe_migrate ===================
[19:47:53] ================== xe_dma_buf (1 subtest) ==================
[19:47:53] ==================== xe_dma_buf_kunit =====================
[19:47:53] ================ [SKIPPED] xe_dma_buf_kunit ================
[19:47:53] =================== [SKIPPED] xe_dma_buf ===================
[19:47:53] ================= xe_bo_shrink (1 subtest) =================
[19:47:53] =================== xe_bo_shrink_kunit ====================
[19:47:53] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[19:47:53] ================== [SKIPPED] xe_bo_shrink ==================
[19:47:53] ==================== xe_bo (2 subtests) ====================
[19:47:53] ================== xe_ccs_migrate_kunit ===================
[19:47:53] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[19:47:53] ==================== xe_bo_evict_kunit ====================
[19:47:53] =============== [SKIPPED] xe_bo_evict_kunit ================
[19:47:53] ===================== [SKIPPED] xe_bo ======================
[19:47:53] ==================== args (13 subtests) ====================
[19:47:53] [PASSED] count_args_test
[19:47:53] [PASSED] call_args_example
[19:47:53] [PASSED] call_args_test
[19:47:53] [PASSED] drop_first_arg_example
[19:47:53] [PASSED] drop_first_arg_test
[19:47:53] [PASSED] first_arg_example
[19:47:53] [PASSED] first_arg_test
[19:47:53] [PASSED] last_arg_example
[19:47:53] [PASSED] last_arg_test
[19:47:53] [PASSED] pick_arg_example
[19:47:53] [PASSED] if_args_example
[19:47:53] [PASSED] if_args_test
[19:47:53] [PASSED] sep_comma_example
[19:47:53] ====================== [PASSED] args =======================
[19:47:53] =================== xe_pci (3 subtests) ====================
[19:47:53] ==================== check_graphics_ip ====================
[19:47:53] [PASSED] 12.00 Xe_LP
[19:47:53] [PASSED] 12.10 Xe_LP+
[19:47:53] [PASSED] 12.55 Xe_HPG
[19:47:53] [PASSED] 12.60 Xe_HPC
[19:47:53] [PASSED] 12.70 Xe_LPG
[19:47:53] [PASSED] 12.71 Xe_LPG
[19:47:53] [PASSED] 12.74 Xe_LPG+
[19:47:53] [PASSED] 20.01 Xe2_HPG
[19:47:53] [PASSED] 20.02 Xe2_HPG
[19:47:53] [PASSED] 20.04 Xe2_LPG
[19:47:53] [PASSED] 30.00 Xe3_LPG
[19:47:53] [PASSED] 30.01 Xe3_LPG
[19:47:53] [PASSED] 30.03 Xe3_LPG
[19:47:53] [PASSED] 30.04 Xe3_LPG
[19:47:53] [PASSED] 30.05 Xe3_LPG
[19:47:53] [PASSED] 35.10 Xe3p_LPG
[19:47:53] [PASSED] 35.11 Xe3p_XPC
[19:47:53] ================ [PASSED] check_graphics_ip ================
[19:47:53] ===================== check_media_ip ======================
[19:47:53] [PASSED] 12.00 Xe_M
[19:47:53] [PASSED] 12.55 Xe_HPM
[19:47:53] [PASSED] 13.00 Xe_LPM+
[19:47:53] [PASSED] 13.01 Xe2_HPM
[19:47:53] [PASSED] 20.00 Xe2_LPM
[19:47:53] [PASSED] 30.00 Xe3_LPM
[19:47:53] [PASSED] 30.02 Xe3_LPM
[19:47:53] [PASSED] 35.00 Xe3p_LPM
[19:47:53] [PASSED] 35.03 Xe3p_HPM
[19:47:53] ================= [PASSED] check_media_ip ==================
[19:47:53] =================== check_platform_desc ===================
[19:47:53] [PASSED] 0x9A60 (TIGERLAKE)
[19:47:53] [PASSED] 0x9A68 (TIGERLAKE)
[19:47:53] [PASSED] 0x9A70 (TIGERLAKE)
[19:47:53] [PASSED] 0x9A40 (TIGERLAKE)
[19:47:53] [PASSED] 0x9A49 (TIGERLAKE)
[19:47:53] [PASSED] 0x9A59 (TIGERLAKE)
[19:47:53] [PASSED] 0x9A78 (TIGERLAKE)
[19:47:53] [PASSED] 0x9AC0 (TIGERLAKE)
[19:47:53] [PASSED] 0x9AC9 (TIGERLAKE)
[19:47:53] [PASSED] 0x9AD9 (TIGERLAKE)
[19:47:53] [PASSED] 0x9AF8 (TIGERLAKE)
[19:47:53] [PASSED] 0x4C80 (ROCKETLAKE)
[19:47:53] [PASSED] 0x4C8A (ROCKETLAKE)
[19:47:53] [PASSED] 0x4C8B (ROCKETLAKE)
[19:47:53] [PASSED] 0x4C8C (ROCKETLAKE)
[19:47:53] [PASSED] 0x4C90 (ROCKETLAKE)
[19:47:53] [PASSED] 0x4C9A (ROCKETLAKE)
[19:47:53] [PASSED] 0x4680 (ALDERLAKE_S)
[19:47:53] [PASSED] 0x4682 (ALDERLAKE_S)
[19:47:53] [PASSED] 0x4688 (ALDERLAKE_S)
[19:47:53] [PASSED] 0x468A (ALDERLAKE_S)
[19:47:53] [PASSED] 0x468B (ALDERLAKE_S)
[19:47:53] [PASSED] 0x4690 (ALDERLAKE_S)
[19:47:53] [PASSED] 0x4692 (ALDERLAKE_S)
[19:47:53] [PASSED] 0x4693 (ALDERLAKE_S)
[19:47:53] [PASSED] 0x46A0 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46A1 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46A2 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46A3 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46A6 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46A8 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46AA (ALDERLAKE_P)
[19:47:53] [PASSED] 0x462A (ALDERLAKE_P)
[19:47:53] [PASSED] 0x4626 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x4628 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46B0 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46B1 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46B2 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46B3 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46C0 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46C1 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46C2 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46C3 (ALDERLAKE_P)
[19:47:53] [PASSED] 0x46D0 (ALDERLAKE_N)
[19:47:53] [PASSED] 0x46D1 (ALDERLAKE_N)
[19:47:53] [PASSED] 0x46D2 (ALDERLAKE_N)
[19:47:53] [PASSED] 0x46D3 (ALDERLAKE_N)
[19:47:53] [PASSED] 0x46D4 (ALDERLAKE_N)
[19:47:53] [PASSED] 0xA721 (ALDERLAKE_P)
[19:47:53] [PASSED] 0xA7A1 (ALDERLAKE_P)
[19:47:53] [PASSED] 0xA7A9 (ALDERLAKE_P)
[19:47:53] [PASSED] 0xA7AC (ALDERLAKE_P)
[19:47:53] [PASSED] 0xA7AD (ALDERLAKE_P)
[19:47:53] [PASSED] 0xA720 (ALDERLAKE_P)
[19:47:53] [PASSED] 0xA7A0 (ALDERLAKE_P)
[19:47:53] [PASSED] 0xA7A8 (ALDERLAKE_P)
[19:47:53] [PASSED] 0xA7AA (ALDERLAKE_P)
[19:47:53] [PASSED] 0xA7AB (ALDERLAKE_P)
[19:47:53] [PASSED] 0xA780 (ALDERLAKE_S)
[19:47:53] [PASSED] 0xA781 (ALDERLAKE_S)
[19:47:53] [PASSED] 0xA782 (ALDERLAKE_S)
[19:47:53] [PASSED] 0xA783 (ALDERLAKE_S)
[19:47:53] [PASSED] 0xA788 (ALDERLAKE_S)
[19:47:53] [PASSED] 0xA789 (ALDERLAKE_S)
[19:47:53] [PASSED] 0xA78A (ALDERLAKE_S)
[19:47:53] [PASSED] 0xA78B (ALDERLAKE_S)
[19:47:53] [PASSED] 0x4905 (DG1)
[19:47:53] [PASSED] 0x4906 (DG1)
[19:47:53] [PASSED] 0x4907 (DG1)
[19:47:53] [PASSED] 0x4908 (DG1)
[19:47:53] [PASSED] 0x4909 (DG1)
[19:47:53] [PASSED] 0x56C0 (DG2)
[19:47:53] [PASSED] 0x56C2 (DG2)
[19:47:53] [PASSED] 0x56C1 (DG2)
[19:47:53] [PASSED] 0x7D51 (METEORLAKE)
[19:47:53] [PASSED] 0x7DD1 (METEORLAKE)
[19:47:53] [PASSED] 0x7D41 (METEORLAKE)
[19:47:53] [PASSED] 0x7D67 (METEORLAKE)
[19:47:53] [PASSED] 0xB640 (METEORLAKE)
[19:47:53] [PASSED] 0x56A0 (DG2)
[19:47:53] [PASSED] 0x56A1 (DG2)
[19:47:53] [PASSED] 0x56A2 (DG2)
[19:47:53] [PASSED] 0x56BE (DG2)
[19:47:53] [PASSED] 0x56BF (DG2)
[19:47:53] [PASSED] 0x5690 (DG2)
[19:47:53] [PASSED] 0x5691 (DG2)
[19:47:53] [PASSED] 0x5692 (DG2)
[19:47:53] [PASSED] 0x56A5 (DG2)
[19:47:53] [PASSED] 0x56A6 (DG2)
[19:47:53] [PASSED] 0x56B0 (DG2)
[19:47:53] [PASSED] 0x56B1 (DG2)
[19:47:53] [PASSED] 0x56BA (DG2)
[19:47:53] [PASSED] 0x56BB (DG2)
[19:47:53] [PASSED] 0x56BC (DG2)
[19:47:53] [PASSED] 0x56BD (DG2)
[19:47:53] [PASSED] 0x5693 (DG2)
[19:47:53] [PASSED] 0x5694 (DG2)
[19:47:53] [PASSED] 0x5695 (DG2)
[19:47:53] [PASSED] 0x56A3 (DG2)
[19:47:53] [PASSED] 0x56A4 (DG2)
[19:47:53] [PASSED] 0x56B2 (DG2)
[19:47:53] [PASSED] 0x56B3 (DG2)
[19:47:53] [PASSED] 0x5696 (DG2)
[19:47:53] [PASSED] 0x5697 (DG2)
[19:47:53] [PASSED] 0xB69 (PVC)
[19:47:53] [PASSED] 0xB6E (PVC)
[19:47:53] [PASSED] 0xBD4 (PVC)
[19:47:53] [PASSED] 0xBD5 (PVC)
[19:47:53] [PASSED] 0xBD6 (PVC)
[19:47:53] [PASSED] 0xBD7 (PVC)
[19:47:53] [PASSED] 0xBD8 (PVC)
[19:47:53] [PASSED] 0xBD9 (PVC)
[19:47:53] [PASSED] 0xBDA (PVC)
[19:47:53] [PASSED] 0xBDB (PVC)
[19:47:53] [PASSED] 0xBE0 (PVC)
[19:47:53] [PASSED] 0xBE1 (PVC)
[19:47:53] [PASSED] 0xBE5 (PVC)
[19:47:53] [PASSED] 0x7D40 (METEORLAKE)
[19:47:53] [PASSED] 0x7D45 (METEORLAKE)
[19:47:53] [PASSED] 0x7D55 (METEORLAKE)
[19:47:53] [PASSED] 0x7D60 (METEORLAKE)
[19:47:53] [PASSED] 0x7DD5 (METEORLAKE)
[19:47:53] [PASSED] 0x6420 (LUNARLAKE)
[19:47:53] [PASSED] 0x64A0 (LUNARLAKE)
[19:47:53] [PASSED] 0x64B0 (LUNARLAKE)
[19:47:53] [PASSED] 0xE202 (BATTLEMAGE)
[19:47:53] [PASSED] 0xE209 (BATTLEMAGE)
[19:47:53] [PASSED] 0xE20B (BATTLEMAGE)
[19:47:53] [PASSED] 0xE20C (BATTLEMAGE)
[19:47:53] [PASSED] 0xE20D (BATTLEMAGE)
[19:47:53] [PASSED] 0xE210 (BATTLEMAGE)
[19:47:53] [PASSED] 0xE211 (BATTLEMAGE)
[19:47:53] [PASSED] 0xE212 (BATTLEMAGE)
[19:47:53] [PASSED] 0xE216 (BATTLEMAGE)
[19:47:53] [PASSED] 0xE220 (BATTLEMAGE)
[19:47:53] [PASSED] 0xE221 (BATTLEMAGE)
[19:47:53] [PASSED] 0xE222 (BATTLEMAGE)
[19:47:53] [PASSED] 0xE223 (BATTLEMAGE)
[19:47:53] [PASSED] 0xB080 (PANTHERLAKE)
[19:47:53] [PASSED] 0xB081 (PANTHERLAKE)
[19:47:53] [PASSED] 0xB082 (PANTHERLAKE)
[19:47:53] [PASSED] 0xB083 (PANTHERLAKE)
[19:47:53] [PASSED] 0xB084 (PANTHERLAKE)
[19:47:53] [PASSED] 0xB085 (PANTHERLAKE)
[19:47:53] [PASSED] 0xB086 (PANTHERLAKE)
[19:47:53] [PASSED] 0xB087 (PANTHERLAKE)
[19:47:53] [PASSED] 0xB08F (PANTHERLAKE)
[19:47:53] [PASSED] 0xB090 (PANTHERLAKE)
[19:47:53] [PASSED] 0xB0A0 (PANTHERLAKE)
[19:47:53] [PASSED] 0xB0B0 (PANTHERLAKE)
[19:47:53] [PASSED] 0xFD80 (PANTHERLAKE)
[19:47:53] [PASSED] 0xFD81 (PANTHERLAKE)
[19:47:53] [PASSED] 0xD740 (NOVALAKE_S)
[19:47:53] [PASSED] 0xD741 (NOVALAKE_S)
[19:47:53] [PASSED] 0xD742 (NOVALAKE_S)
[19:47:53] [PASSED] 0xD743 (NOVALAKE_S)
[19:47:53] [PASSED] 0xD744 (NOVALAKE_S)
[19:47:53] [PASSED] 0xD745 (NOVALAKE_S)
[19:47:53] [PASSED] 0x674C (CRESCENTISLAND)
[19:47:53] [PASSED] 0x674D (CRESCENTISLAND)
[19:47:53] [PASSED] 0x674E (CRESCENTISLAND)
[19:47:53] [PASSED] 0x674F (CRESCENTISLAND)
[19:47:53] [PASSED] 0x6750 (CRESCENTISLAND)
[19:47:53] [PASSED] 0xD750 (NOVALAKE_P)
[19:47:53] [PASSED] 0xD751 (NOVALAKE_P)
[19:47:53] [PASSED] 0xD752 (NOVALAKE_P)
[19:47:53] [PASSED] 0xD753 (NOVALAKE_P)
[19:47:53] [PASSED] 0xD754 (NOVALAKE_P)
[19:47:53] [PASSED] 0xD755 (NOVALAKE_P)
[19:47:53] [PASSED] 0xD756 (NOVALAKE_P)
[19:47:53] [PASSED] 0xD757 (NOVALAKE_P)
[19:47:53] [PASSED] 0xD75F (NOVALAKE_P)
[19:47:53] =============== [PASSED] check_platform_desc ===============
[19:47:53] ===================== [PASSED] xe_pci ======================
[19:47:53] =================== xe_rtp (3 subtests) ====================
[19:47:53] =================== xe_rtp_rules_tests ====================
[19:47:53] [PASSED] no
[19:47:53] [PASSED] yes
[19:47:53] [PASSED] no-and-no
[19:47:53] [PASSED] no-and-yes
[19:47:53] [PASSED] yes-and-no
[19:47:53] [PASSED] yes-and-yes
[19:47:53] [PASSED] no-or-no
[19:47:53] [PASSED] no-or-yes
[19:47:53] [PASSED] yes-or-no
[19:47:53] [PASSED] yes-or-yes
[19:47:53] [PASSED] no-yes-or-yes-no
[19:47:53] [PASSED] no-yes-or-yes-yes
[19:47:53] [PASSED] yes-yes-or-no-yes
[19:47:53] [PASSED] yes-yes-or-yes-yes
[19:47:53] [PASSED] no-no-or-yes-or-no
[19:47:53] [PASSED] or
[19:47:53] [PASSED] or-yes
[19:47:53] [PASSED] or-no
[19:47:53] [PASSED] yes-or
[19:47:53] [PASSED] no-or
[19:47:53] [PASSED] no-or-or-yes
[19:47:53] [PASSED] yes-or-or-no
[19:47:53] [PASSED] no-or-or-no
[19:47:53] [PASSED] missing-context-engine-class
[19:47:53] [PASSED] missing-context-engine-class-or-yes
[19:47:53] [PASSED] missing-context-engine-class-or-or-yes
[19:47:53] =============== [PASSED] xe_rtp_rules_tests ================
[19:47:53] =============== xe_rtp_process_to_sr_tests ================
[19:47:53] [PASSED] coalesce-same-reg
[19:47:53] [PASSED] no-match-no-add
[19:47:53] [PASSED] two-regs-two-entries
[19:47:53] [PASSED] clr-one-set-other
[19:47:53] [PASSED] set-field
[19:47:53] [PASSED] conflict-duplicate
[19:47:53] [PASSED] conflict-not-disjoint
[19:47:53] [PASSED] conflict-reg-type
[19:47:53] [PASSED] bad-mcr-reg-forced-to-regular
[19:47:53] [PASSED] bad-regular-reg-forced-to-mcr
[19:47:53] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[19:47:53] ================== xe_rtp_process_tests ===================
[19:47:53] [PASSED] active1
[19:47:53] [PASSED] active2
[19:47:53] [PASSED] active-inactive
[19:47:53] [PASSED] inactive-active
[19:47:53] [PASSED] inactive-active-inactive
[19:47:53] [PASSED] inactive-inactive-inactive
[19:47:53] ============== [PASSED] xe_rtp_process_tests ===============
[19:47:53] ===================== [PASSED] xe_rtp ======================
[19:47:53] ==================== xe_wa (1 subtest) =====================
[19:47:53] ======================== xe_wa_gt =========================
[19:47:53] [PASSED] TIGERLAKE B0
[19:47:53] [PASSED] DG1 A0
[19:47:53] [PASSED] DG1 B0
[19:47:53] [PASSED] ALDERLAKE_S A0
[19:47:53] [PASSED] ALDERLAKE_S B0
[19:47:53] [PASSED] ALDERLAKE_S C0
[19:47:53] [PASSED] ALDERLAKE_S D0
[19:47:53] [PASSED] ALDERLAKE_P A0
[19:47:53] [PASSED] ALDERLAKE_P B0
[19:47:53] [PASSED] ALDERLAKE_P C0
[19:47:53] [PASSED] ALDERLAKE_S RPLS D0
[19:47:53] [PASSED] ALDERLAKE_P RPLU E0
[19:47:53] [PASSED] DG2 G10 C0
[19:47:53] [PASSED] DG2 G11 B1
[19:47:53] [PASSED] DG2 G12 A1
[19:47:53] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[19:47:53] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[19:47:53] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[19:47:53] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[19:47:53] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[19:47:53] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[19:47:53] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[19:47:53] ==================== [PASSED] xe_wa_gt =====================
[19:47:53] ====================== [PASSED] xe_wa ======================
[19:47:53] ============================================================
[19:47:53] Testing complete. Ran 624 tests: passed: 606, skipped: 18
[19:47:53] Elapsed time: 36.265s total, 4.218s configuring, 31.382s building, 0.630s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[19:47:53] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[19:47:55] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[19:48:19] Starting KUnit Kernel (1/1)...
[19:48:19] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[19:48:19] ============ drm_test_pick_cmdline (2 subtests) ============
[19:48:19] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[19:48:19] =============== drm_test_pick_cmdline_named ===============
[19:48:19] [PASSED] NTSC
[19:48:19] [PASSED] NTSC-J
[19:48:19] [PASSED] PAL
[19:48:19] [PASSED] PAL-M
[19:48:19] =========== [PASSED] drm_test_pick_cmdline_named ===========
[19:48:19] ============== [PASSED] drm_test_pick_cmdline ==============
[19:48:19] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[19:48:19] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[19:48:19] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[19:48:19] =========== drm_validate_clone_mode (2 subtests) ===========
[19:48:19] ============== drm_test_check_in_clone_mode ===============
[19:48:19] [PASSED] in_clone_mode
[19:48:19] [PASSED] not_in_clone_mode
[19:48:19] ========== [PASSED] drm_test_check_in_clone_mode ===========
[19:48:19] =============== drm_test_check_valid_clones ===============
[19:48:19] [PASSED] not_in_clone_mode
[19:48:19] [PASSED] valid_clone
[19:48:19] [PASSED] invalid_clone
[19:48:19] =========== [PASSED] drm_test_check_valid_clones ===========
[19:48:19] ============= [PASSED] drm_validate_clone_mode =============
[19:48:19] ============= drm_validate_modeset (1 subtest) =============
[19:48:19] [PASSED] drm_test_check_connector_changed_modeset
[19:48:19] ============== [PASSED] drm_validate_modeset ===============
[19:48:19] ====== drm_test_bridge_get_current_state (2 subtests) ======
[19:48:19] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[19:48:19] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[19:48:19] ======== [PASSED] drm_test_bridge_get_current_state ========
[19:48:19] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[19:48:19] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[19:48:19] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[19:48:19] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[19:48:19] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[19:48:19] ============== drm_bridge_alloc (2 subtests) ===============
[19:48:19] [PASSED] drm_test_drm_bridge_alloc_basic
[19:48:19] [PASSED] drm_test_drm_bridge_alloc_get_put
[19:48:19] ================ [PASSED] drm_bridge_alloc =================
[19:48:19] ============= drm_cmdline_parser (40 subtests) =============
[19:48:19] [PASSED] drm_test_cmdline_force_d_only
[19:48:19] [PASSED] drm_test_cmdline_force_D_only_dvi
[19:48:19] [PASSED] drm_test_cmdline_force_D_only_hdmi
[19:48:19] [PASSED] drm_test_cmdline_force_D_only_not_digital
[19:48:19] [PASSED] drm_test_cmdline_force_e_only
[19:48:19] [PASSED] drm_test_cmdline_res
[19:48:19] [PASSED] drm_test_cmdline_res_vesa
[19:48:19] [PASSED] drm_test_cmdline_res_vesa_rblank
[19:48:19] [PASSED] drm_test_cmdline_res_rblank
[19:48:19] [PASSED] drm_test_cmdline_res_bpp
[19:48:19] [PASSED] drm_test_cmdline_res_refresh
[19:48:19] [PASSED] drm_test_cmdline_res_bpp_refresh
[19:48:19] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[19:48:19] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[19:48:19] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[19:48:19] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[19:48:19] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[19:48:19] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[19:48:19] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[19:48:19] [PASSED] drm_test_cmdline_res_margins_force_on
[19:48:19] [PASSED] drm_test_cmdline_res_vesa_margins
[19:48:19] [PASSED] drm_test_cmdline_name
[19:48:19] [PASSED] drm_test_cmdline_name_bpp
[19:48:19] [PASSED] drm_test_cmdline_name_option
[19:48:19] [PASSED] drm_test_cmdline_name_bpp_option
[19:48:19] [PASSED] drm_test_cmdline_rotate_0
[19:48:19] [PASSED] drm_test_cmdline_rotate_90
[19:48:19] [PASSED] drm_test_cmdline_rotate_180
[19:48:19] [PASSED] drm_test_cmdline_rotate_270
[19:48:19] [PASSED] drm_test_cmdline_hmirror
[19:48:19] [PASSED] drm_test_cmdline_vmirror
[19:48:19] [PASSED] drm_test_cmdline_margin_options
[19:48:19] [PASSED] drm_test_cmdline_multiple_options
[19:48:19] [PASSED] drm_test_cmdline_bpp_extra_and_option
[19:48:19] [PASSED] drm_test_cmdline_extra_and_option
[19:48:19] [PASSED] drm_test_cmdline_freestanding_options
[19:48:19] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[19:48:19] [PASSED] drm_test_cmdline_panel_orientation
[19:48:19] ================ drm_test_cmdline_invalid =================
[19:48:19] [PASSED] margin_only
[19:48:19] [PASSED] interlace_only
[19:48:19] [PASSED] res_missing_x
[19:48:19] [PASSED] res_missing_y
[19:48:19] [PASSED] res_bad_y
[19:48:19] [PASSED] res_missing_y_bpp
[19:48:19] [PASSED] res_bad_bpp
[19:48:19] [PASSED] res_bad_refresh
[19:48:19] [PASSED] res_bpp_refresh_force_on_off
[19:48:19] [PASSED] res_invalid_mode
[19:48:19] [PASSED] res_bpp_wrong_place_mode
[19:48:19] [PASSED] name_bpp_refresh
[19:48:19] [PASSED] name_refresh
[19:48:19] [PASSED] name_refresh_wrong_mode
[19:48:19] [PASSED] name_refresh_invalid_mode
[19:48:19] [PASSED] rotate_multiple
[19:48:19] [PASSED] rotate_invalid_val
[19:48:19] [PASSED] rotate_truncated
[19:48:19] [PASSED] invalid_option
[19:48:19] [PASSED] invalid_tv_option
[19:48:19] [PASSED] truncated_tv_option
[19:48:19] ============ [PASSED] drm_test_cmdline_invalid =============
[19:48:19] =============== drm_test_cmdline_tv_options ===============
[19:48:19] [PASSED] NTSC
[19:48:19] [PASSED] NTSC_443
[19:48:19] [PASSED] NTSC_J
[19:48:19] [PASSED] PAL
[19:48:19] [PASSED] PAL_M
[19:48:19] [PASSED] PAL_N
[19:48:19] [PASSED] SECAM
[19:48:19] [PASSED] MONO_525
[19:48:19] [PASSED] MONO_625
[19:48:19] =========== [PASSED] drm_test_cmdline_tv_options ===========
[19:48:19] =============== [PASSED] drm_cmdline_parser ================
[19:48:19] ========== drmm_connector_hdmi_init (20 subtests) ==========
[19:48:19] [PASSED] drm_test_connector_hdmi_init_valid
[19:48:19] [PASSED] drm_test_connector_hdmi_init_bpc_8
[19:48:19] [PASSED] drm_test_connector_hdmi_init_bpc_10
[19:48:19] [PASSED] drm_test_connector_hdmi_init_bpc_12
[19:48:19] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[19:48:19] [PASSED] drm_test_connector_hdmi_init_bpc_null
[19:48:19] [PASSED] drm_test_connector_hdmi_init_formats_empty
[19:48:19] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[19:48:19] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[19:48:19] [PASSED] supported_formats=0x9 yuv420_allowed=1
[19:48:19] [PASSED] supported_formats=0x9 yuv420_allowed=0
[19:48:19] [PASSED] supported_formats=0x5 yuv420_allowed=1
[19:48:19] [PASSED] supported_formats=0x5 yuv420_allowed=0
[19:48:19] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[19:48:19] [PASSED] drm_test_connector_hdmi_init_null_ddc
[19:48:19] [PASSED] drm_test_connector_hdmi_init_null_product
[19:48:19] [PASSED] drm_test_connector_hdmi_init_null_vendor
[19:48:19] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[19:48:19] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[19:48:19] [PASSED] drm_test_connector_hdmi_init_product_valid
[19:48:19] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[19:48:19] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[19:48:19] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[19:48:19] ========= drm_test_connector_hdmi_init_type_valid =========
[19:48:19] [PASSED] HDMI-A
[19:48:19] [PASSED] HDMI-B
[19:48:19] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[19:48:19] ======== drm_test_connector_hdmi_init_type_invalid ========
[19:48:19] [PASSED] Unknown
[19:48:19] [PASSED] VGA
[19:48:19] [PASSED] DVI-I
[19:48:19] [PASSED] DVI-D
[19:48:19] [PASSED] DVI-A
[19:48:19] [PASSED] Composite
[19:48:19] [PASSED] SVIDEO
[19:48:19] [PASSED] LVDS
[19:48:19] [PASSED] Component
[19:48:19] [PASSED] DIN
[19:48:19] [PASSED] DP
[19:48:19] [PASSED] TV
[19:48:19] [PASSED] eDP
[19:48:19] [PASSED] Virtual
[19:48:19] [PASSED] DSI
[19:48:19] [PASSED] DPI
[19:48:19] [PASSED] Writeback
[19:48:19] [PASSED] SPI
[19:48:19] [PASSED] USB
[19:48:19] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[19:48:19] ============ [PASSED] drmm_connector_hdmi_init =============
[19:48:19] ============= drmm_connector_init (3 subtests) =============
[19:48:19] [PASSED] drm_test_drmm_connector_init
[19:48:19] [PASSED] drm_test_drmm_connector_init_null_ddc
[19:48:19] ========= drm_test_drmm_connector_init_type_valid =========
[19:48:19] [PASSED] Unknown
[19:48:19] [PASSED] VGA
[19:48:19] [PASSED] DVI-I
[19:48:19] [PASSED] DVI-D
[19:48:19] [PASSED] DVI-A
[19:48:19] [PASSED] Composite
[19:48:19] [PASSED] SVIDEO
[19:48:19] [PASSED] LVDS
[19:48:19] [PASSED] Component
[19:48:19] [PASSED] DIN
[19:48:19] [PASSED] DP
[19:48:19] [PASSED] HDMI-A
[19:48:19] [PASSED] HDMI-B
[19:48:19] [PASSED] TV
[19:48:19] [PASSED] eDP
[19:48:19] [PASSED] Virtual
[19:48:19] [PASSED] DSI
[19:48:19] [PASSED] DPI
[19:48:19] [PASSED] Writeback
[19:48:19] [PASSED] SPI
[19:48:19] [PASSED] USB
[19:48:19] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[19:48:19] =============== [PASSED] drmm_connector_init ===============
[19:48:19] ========= drm_connector_dynamic_init (6 subtests) ==========
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_init
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_init_properties
[19:48:19] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[19:48:19] [PASSED] Unknown
[19:48:19] [PASSED] VGA
[19:48:19] [PASSED] DVI-I
[19:48:19] [PASSED] DVI-D
[19:48:19] [PASSED] DVI-A
[19:48:19] [PASSED] Composite
[19:48:19] [PASSED] SVIDEO
[19:48:19] [PASSED] LVDS
[19:48:19] [PASSED] Component
[19:48:19] [PASSED] DIN
[19:48:19] [PASSED] DP
[19:48:19] [PASSED] HDMI-A
[19:48:19] [PASSED] HDMI-B
[19:48:19] [PASSED] TV
[19:48:19] [PASSED] eDP
[19:48:19] [PASSED] Virtual
[19:48:19] [PASSED] DSI
[19:48:19] [PASSED] DPI
[19:48:19] [PASSED] Writeback
[19:48:19] [PASSED] SPI
[19:48:19] [PASSED] USB
[19:48:19] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[19:48:19] ======== drm_test_drm_connector_dynamic_init_name =========
[19:48:19] [PASSED] Unknown
[19:48:19] [PASSED] VGA
[19:48:19] [PASSED] DVI-I
[19:48:19] [PASSED] DVI-D
[19:48:19] [PASSED] DVI-A
[19:48:19] [PASSED] Composite
[19:48:19] [PASSED] SVIDEO
[19:48:19] [PASSED] LVDS
[19:48:19] [PASSED] Component
[19:48:19] [PASSED] DIN
[19:48:19] [PASSED] DP
[19:48:19] [PASSED] HDMI-A
[19:48:19] [PASSED] HDMI-B
[19:48:19] [PASSED] TV
[19:48:19] [PASSED] eDP
[19:48:19] [PASSED] Virtual
[19:48:19] [PASSED] DSI
[19:48:19] [PASSED] DPI
[19:48:19] [PASSED] Writeback
[19:48:19] [PASSED] SPI
[19:48:19] [PASSED] USB
[19:48:19] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[19:48:19] =========== [PASSED] drm_connector_dynamic_init ============
[19:48:19] ==== drm_connector_dynamic_register_early (4 subtests) =====
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[19:48:19] ====== [PASSED] drm_connector_dynamic_register_early =======
[19:48:19] ======= drm_connector_dynamic_register (7 subtests) ========
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[19:48:19] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[19:48:19] ========= [PASSED] drm_connector_dynamic_register ==========
[19:48:19] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[19:48:19] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[19:48:19] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[19:48:19] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[19:48:19] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[19:48:19] ========== drm_test_get_tv_mode_from_name_valid ===========
[19:48:19] [PASSED] NTSC
[19:48:19] [PASSED] NTSC-443
[19:48:19] [PASSED] NTSC-J
[19:48:19] [PASSED] PAL
[19:48:19] [PASSED] PAL-M
[19:48:19] [PASSED] PAL-N
[19:48:19] [PASSED] SECAM
[19:48:19] [PASSED] Mono
[19:48:19] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[19:48:19] [PASSED] drm_test_get_tv_mode_from_name_truncated
[19:48:19] ============ [PASSED] drm_get_tv_mode_from_name ============
[19:48:19] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[19:48:19] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[19:48:19] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[19:48:19] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[19:48:19] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[19:48:19] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[19:48:19] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[19:48:19] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[19:48:19] [PASSED] VIC 96
[19:48:19] [PASSED] VIC 97
[19:48:19] [PASSED] VIC 101
[19:48:19] [PASSED] VIC 102
[19:48:19] [PASSED] VIC 106
[19:48:19] [PASSED] VIC 107
[19:48:19] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[19:48:19] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[19:48:19] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[19:48:19] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[19:48:19] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[19:48:19] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[19:48:19] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[19:48:19] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[19:48:19] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[19:48:19] [PASSED] Automatic
[19:48:19] [PASSED] Full
[19:48:19] [PASSED] Limited 16:235
[19:48:19] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[19:48:19] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[19:48:19] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[19:48:19] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[19:48:19] === drm_test_drm_hdmi_connector_get_output_format_name ====
[19:48:19] [PASSED] RGB
[19:48:19] [PASSED] YUV 4:2:0
[19:48:19] [PASSED] YUV 4:2:2
[19:48:19] [PASSED] YUV 4:4:4
[19:48:19] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[19:48:19] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[19:48:19] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[19:48:19] ============= drm_damage_helper (21 subtests) ==============
[19:48:19] [PASSED] drm_test_damage_iter_no_damage
[19:48:19] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[19:48:19] [PASSED] drm_test_damage_iter_no_damage_src_moved
[19:48:19] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[19:48:19] [PASSED] drm_test_damage_iter_no_damage_not_visible
[19:48:19] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[19:48:19] [PASSED] drm_test_damage_iter_no_damage_no_fb
[19:48:19] [PASSED] drm_test_damage_iter_simple_damage
[19:48:19] [PASSED] drm_test_damage_iter_single_damage
[19:48:19] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[19:48:19] [PASSED] drm_test_damage_iter_single_damage_outside_src
[19:48:19] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[19:48:19] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[19:48:19] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[19:48:19] [PASSED] drm_test_damage_iter_single_damage_src_moved
[19:48:19] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[19:48:19] [PASSED] drm_test_damage_iter_damage
[19:48:19] [PASSED] drm_test_damage_iter_damage_one_intersect
[19:48:19] [PASSED] drm_test_damage_iter_damage_one_outside
[19:48:19] [PASSED] drm_test_damage_iter_damage_src_moved
[19:48:19] [PASSED] drm_test_damage_iter_damage_not_visible
[19:48:19] ================ [PASSED] drm_damage_helper ================
[19:48:19] ============== drm_dp_mst_helper (3 subtests) ==============
[19:48:19] ============== drm_test_dp_mst_calc_pbn_mode ==============
[19:48:19] [PASSED] Clock 154000 BPP 30 DSC disabled
[19:48:19] [PASSED] Clock 234000 BPP 30 DSC disabled
[19:48:19] [PASSED] Clock 297000 BPP 24 DSC disabled
[19:48:19] [PASSED] Clock 332880 BPP 24 DSC enabled
[19:48:19] [PASSED] Clock 324540 BPP 24 DSC enabled
[19:48:19] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[19:48:19] ============== drm_test_dp_mst_calc_pbn_div ===============
[19:48:19] [PASSED] Link rate 2000000 lane count 4
[19:48:19] [PASSED] Link rate 2000000 lane count 2
[19:48:19] [PASSED] Link rate 2000000 lane count 1
[19:48:19] [PASSED] Link rate 1350000 lane count 4
[19:48:19] [PASSED] Link rate 1350000 lane count 2
[19:48:19] [PASSED] Link rate 1350000 lane count 1
[19:48:19] [PASSED] Link rate 1000000 lane count 4
[19:48:19] [PASSED] Link rate 1000000 lane count 2
[19:48:19] [PASSED] Link rate 1000000 lane count 1
[19:48:19] [PASSED] Link rate 810000 lane count 4
[19:48:19] [PASSED] Link rate 810000 lane count 2
[19:48:19] [PASSED] Link rate 810000 lane count 1
[19:48:19] [PASSED] Link rate 540000 lane count 4
[19:48:19] [PASSED] Link rate 540000 lane count 2
[19:48:19] [PASSED] Link rate 540000 lane count 1
[19:48:19] [PASSED] Link rate 270000 lane count 4
[19:48:19] [PASSED] Link rate 270000 lane count 2
[19:48:19] [PASSED] Link rate 270000 lane count 1
[19:48:19] [PASSED] Link rate 162000 lane count 4
[19:48:19] [PASSED] Link rate 162000 lane count 2
[19:48:19] [PASSED] Link rate 162000 lane count 1
[19:48:19] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[19:48:19] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[19:48:19] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[19:48:19] [PASSED] DP_POWER_UP_PHY with port number
[19:48:19] [PASSED] DP_POWER_DOWN_PHY with port number
[19:48:19] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[19:48:19] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[19:48:19] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[19:48:19] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[19:48:19] [PASSED] DP_QUERY_PAYLOAD with port number
[19:48:19] [PASSED] DP_QUERY_PAYLOAD with VCPI
[19:48:19] [PASSED] DP_REMOTE_DPCD_READ with port number
[19:48:19] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[19:48:19] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[19:48:19] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[19:48:19] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[19:48:19] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[19:48:19] [PASSED] DP_REMOTE_I2C_READ with port number
[19:48:19] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[19:48:19] [PASSED] DP_REMOTE_I2C_READ with transactions array
[19:48:19] [PASSED] DP_REMOTE_I2C_WRITE with port number
[19:48:19] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[19:48:19] [PASSED] DP_REMOTE_I2C_WRITE with data array
[19:48:19] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[19:48:19] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[19:48:19] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[19:48:19] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[19:48:19] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[19:48:19] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[19:48:19] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[19:48:19] ================ [PASSED] drm_dp_mst_helper ================
[19:48:19] ================== drm_exec (7 subtests) ===================
[19:48:19] [PASSED] sanitycheck
[19:48:19] [PASSED] test_lock
[19:48:19] [PASSED] test_lock_unlock
[19:48:19] [PASSED] test_duplicates
[19:48:19] [PASSED] test_prepare
[19:48:19] [PASSED] test_prepare_array
[19:48:19] [PASSED] test_multiple_loops
[19:48:19] ==================== [PASSED] drm_exec =====================
[19:48:19] =========== drm_format_helper_test (17 subtests) ===========
[19:48:19] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[19:48:19] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[19:48:19] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[19:48:19] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[19:48:19] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[19:48:19] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[19:48:19] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[19:48:19] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[19:48:19] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[19:48:19] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[19:48:19] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[19:48:19] ============== drm_test_fb_xrgb8888_to_mono ===============
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[19:48:19] ==================== drm_test_fb_swab =====================
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ================ [PASSED] drm_test_fb_swab =================
[19:48:19] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[19:48:19] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[19:48:19] [PASSED] single_pixel_source_buffer
[19:48:19] [PASSED] single_pixel_clip_rectangle
[19:48:19] [PASSED] well_known_colors
[19:48:19] [PASSED] destination_pitch
[19:48:19] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[19:48:19] ================= drm_test_fb_clip_offset =================
[19:48:19] [PASSED] pass through
[19:48:19] [PASSED] horizontal offset
[19:48:19] [PASSED] vertical offset
[19:48:19] [PASSED] horizontal and vertical offset
[19:48:19] [PASSED] horizontal offset (custom pitch)
[19:48:19] [PASSED] vertical offset (custom pitch)
[19:48:19] [PASSED] horizontal and vertical offset (custom pitch)
[19:48:19] ============= [PASSED] drm_test_fb_clip_offset =============
[19:48:19] =================== drm_test_fb_memcpy ====================
[19:48:19] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[19:48:19] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[19:48:19] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[19:48:19] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[19:48:19] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[19:48:19] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[19:48:19] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[19:48:19] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[19:48:19] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[19:48:19] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[19:48:19] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[19:48:19] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[19:48:19] =============== [PASSED] drm_test_fb_memcpy ================
[19:48:19] ============= [PASSED] drm_format_helper_test ==============
[19:48:19] ================= drm_format (18 subtests) =================
[19:48:19] [PASSED] drm_test_format_block_width_invalid
[19:48:19] [PASSED] drm_test_format_block_width_one_plane
[19:48:19] [PASSED] drm_test_format_block_width_two_plane
[19:48:19] [PASSED] drm_test_format_block_width_three_plane
[19:48:19] [PASSED] drm_test_format_block_width_tiled
[19:48:19] [PASSED] drm_test_format_block_height_invalid
[19:48:19] [PASSED] drm_test_format_block_height_one_plane
[19:48:19] [PASSED] drm_test_format_block_height_two_plane
[19:48:19] [PASSED] drm_test_format_block_height_three_plane
[19:48:19] [PASSED] drm_test_format_block_height_tiled
[19:48:19] [PASSED] drm_test_format_min_pitch_invalid
[19:48:19] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[19:48:19] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[19:48:19] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[19:48:19] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[19:48:19] [PASSED] drm_test_format_min_pitch_two_plane
[19:48:19] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[19:48:19] [PASSED] drm_test_format_min_pitch_tiled
[19:48:19] =================== [PASSED] drm_format ====================
[19:48:19] ============== drm_framebuffer (10 subtests) ===============
[19:48:19] ========== drm_test_framebuffer_check_src_coords ==========
[19:48:19] [PASSED] Success: source fits into fb
[19:48:19] [PASSED] Fail: overflowing fb with x-axis coordinate
[19:48:19] [PASSED] Fail: overflowing fb with y-axis coordinate
[19:48:19] [PASSED] Fail: overflowing fb with source width
[19:48:19] [PASSED] Fail: overflowing fb with source height
[19:48:19] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[19:48:19] [PASSED] drm_test_framebuffer_cleanup
[19:48:19] =============== drm_test_framebuffer_create ===============
[19:48:19] [PASSED] ABGR8888 normal sizes
[19:48:19] [PASSED] ABGR8888 max sizes
[19:48:19] [PASSED] ABGR8888 pitch greater than min required
[19:48:19] [PASSED] ABGR8888 pitch less than min required
[19:48:19] [PASSED] ABGR8888 Invalid width
[19:48:19] [PASSED] ABGR8888 Invalid buffer handle
[19:48:19] [PASSED] No pixel format
[19:48:19] [PASSED] ABGR8888 Width 0
[19:48:19] [PASSED] ABGR8888 Height 0
[19:48:19] [PASSED] ABGR8888 Out of bound height * pitch combination
[19:48:19] [PASSED] ABGR8888 Large buffer offset
[19:48:19] [PASSED] ABGR8888 Buffer offset for inexistent plane
[19:48:19] [PASSED] ABGR8888 Invalid flag
[19:48:19] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[19:48:19] [PASSED] ABGR8888 Valid buffer modifier
[19:48:19] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[19:48:19] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[19:48:19] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[19:48:19] [PASSED] NV12 Normal sizes
[19:48:19] [PASSED] NV12 Max sizes
[19:48:19] [PASSED] NV12 Invalid pitch
[19:48:19] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[19:48:19] [PASSED] NV12 different modifier per-plane
[19:48:19] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[19:48:19] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[19:48:19] [PASSED] NV12 Modifier for inexistent plane
[19:48:19] [PASSED] NV12 Handle for inexistent plane
[19:48:19] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[19:48:19] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[19:48:19] [PASSED] YVU420 Normal sizes
[19:48:19] [PASSED] YVU420 Max sizes
[19:48:19] [PASSED] YVU420 Invalid pitch
[19:48:19] [PASSED] YVU420 Different pitches
[19:48:19] [PASSED] YVU420 Different buffer offsets/pitches
[19:48:19] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[19:48:19] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[19:48:19] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[19:48:19] [PASSED] YVU420 Valid modifier
[19:48:19] [PASSED] YVU420 Different modifiers per plane
[19:48:19] [PASSED] YVU420 Modifier for inexistent plane
[19:48:19] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[19:48:19] [PASSED] X0L2 Normal sizes
[19:48:19] [PASSED] X0L2 Max sizes
[19:48:19] [PASSED] X0L2 Invalid pitch
[19:48:19] [PASSED] X0L2 Pitch greater than minimum required
[19:48:19] [PASSED] X0L2 Handle for inexistent plane
[19:48:19] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[19:48:19] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[19:48:19] [PASSED] X0L2 Valid modifier
[19:48:19] [PASSED] X0L2 Modifier for inexistent plane
[19:48:19] =========== [PASSED] drm_test_framebuffer_create ===========
[19:48:19] [PASSED] drm_test_framebuffer_free
[19:48:19] [PASSED] drm_test_framebuffer_init
[19:48:19] [PASSED] drm_test_framebuffer_init_bad_format
[19:48:19] [PASSED] drm_test_framebuffer_init_dev_mismatch
[19:48:19] [PASSED] drm_test_framebuffer_lookup
[19:48:19] [PASSED] drm_test_framebuffer_lookup_inexistent
[19:48:19] [PASSED] drm_test_framebuffer_modifiers_not_supported
[19:48:19] ================= [PASSED] drm_framebuffer =================
[19:48:19] ================ drm_gem_shmem (8 subtests) ================
[19:48:19] [PASSED] drm_gem_shmem_test_obj_create
[19:48:19] [PASSED] drm_gem_shmem_test_obj_create_private
[19:48:19] [PASSED] drm_gem_shmem_test_pin_pages
[19:48:19] [PASSED] drm_gem_shmem_test_vmap
[19:48:19] [PASSED] drm_gem_shmem_test_get_sg_table
[19:48:19] [PASSED] drm_gem_shmem_test_get_pages_sgt
[19:48:19] [PASSED] drm_gem_shmem_test_madvise
[19:48:19] [PASSED] drm_gem_shmem_test_purge
[19:48:19] ================== [PASSED] drm_gem_shmem ==================
[19:48:19] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[19:48:19] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[19:48:19] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[19:48:19] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[19:48:19] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[19:48:19] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[19:48:19] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[19:48:19] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[19:48:19] [PASSED] Automatic
[19:48:19] [PASSED] Full
[19:48:19] [PASSED] Limited 16:235
[19:48:19] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[19:48:19] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[19:48:19] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[19:48:19] [PASSED] drm_test_check_disable_connector
[19:48:19] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[19:48:19] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[19:48:19] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[19:48:19] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[19:48:19] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[19:48:19] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[19:48:19] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[19:48:19] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[19:48:19] [PASSED] drm_test_check_output_bpc_dvi
[19:48:19] [PASSED] drm_test_check_output_bpc_format_vic_1
[19:48:19] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[19:48:19] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[19:48:19] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[19:48:19] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[19:48:19] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[19:48:19] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[19:48:19] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[19:48:19] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[19:48:19] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[19:48:19] [PASSED] drm_test_check_broadcast_rgb_value
[19:48:19] [PASSED] drm_test_check_bpc_8_value
[19:48:19] [PASSED] drm_test_check_bpc_10_value
[19:48:19] [PASSED] drm_test_check_bpc_12_value
[19:48:19] [PASSED] drm_test_check_format_value
[19:48:19] [PASSED] drm_test_check_tmds_char_value
[19:48:19] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[19:48:19] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[19:48:19] [PASSED] drm_test_check_mode_valid
[19:48:19] [PASSED] drm_test_check_mode_valid_reject
[19:48:19] [PASSED] drm_test_check_mode_valid_reject_rate
[19:48:19] [PASSED] drm_test_check_mode_valid_reject_max_clock
[19:48:19] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[19:48:19] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[19:48:19] [PASSED] drm_test_check_infoframes
[19:48:19] [PASSED] drm_test_check_reject_avi_infoframe
[19:48:19] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[19:48:19] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[19:48:19] [PASSED] drm_test_check_reject_audio_infoframe
[19:48:19] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[19:48:19] ================= drm_managed (2 subtests) =================
[19:48:19] [PASSED] drm_test_managed_release_action
[19:48:19] [PASSED] drm_test_managed_run_action
[19:48:19] =================== [PASSED] drm_managed ===================
[19:48:19] =================== drm_mm (6 subtests) ====================
[19:48:19] [PASSED] drm_test_mm_init
[19:48:19] [PASSED] drm_test_mm_debug
[19:48:19] [PASSED] drm_test_mm_align32
[19:48:19] [PASSED] drm_test_mm_align64
[19:48:19] [PASSED] drm_test_mm_lowest
[19:48:19] [PASSED] drm_test_mm_highest
[19:48:19] ===================== [PASSED] drm_mm ======================
[19:48:19] ============= drm_modes_analog_tv (5 subtests) =============
[19:48:19] [PASSED] drm_test_modes_analog_tv_mono_576i
[19:48:19] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[19:48:19] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[19:48:19] [PASSED] drm_test_modes_analog_tv_pal_576i
[19:48:19] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[19:48:19] =============== [PASSED] drm_modes_analog_tv ===============
[19:48:19] ============== drm_plane_helper (2 subtests) ===============
[19:48:19] =============== drm_test_check_plane_state ================
[19:48:19] [PASSED] clipping_simple
[19:48:19] [PASSED] clipping_rotate_reflect
[19:48:19] [PASSED] positioning_simple
[19:48:19] [PASSED] upscaling
[19:48:19] [PASSED] downscaling
[19:48:19] [PASSED] rounding1
[19:48:19] [PASSED] rounding2
[19:48:19] [PASSED] rounding3
[19:48:19] [PASSED] rounding4
[19:48:19] =========== [PASSED] drm_test_check_plane_state ============
[19:48:19] =========== drm_test_check_invalid_plane_state ============
[19:48:19] [PASSED] positioning_invalid
[19:48:19] [PASSED] upscaling_invalid
[19:48:19] [PASSED] downscaling_invalid
[19:48:19] ======= [PASSED] drm_test_check_invalid_plane_state ========
[19:48:19] ================ [PASSED] drm_plane_helper =================
[19:48:19] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[19:48:19] ====== drm_test_connector_helper_tv_get_modes_check =======
[19:48:19] [PASSED] None
[19:48:19] [PASSED] PAL
[19:48:19] [PASSED] NTSC
[19:48:19] [PASSED] Both, NTSC Default
[19:48:19] [PASSED] Both, PAL Default
[19:48:19] [PASSED] Both, NTSC Default, with PAL on command-line
[19:48:19] [PASSED] Both, PAL Default, with NTSC on command-line
[19:48:19] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[19:48:19] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[19:48:19] ================== drm_rect (9 subtests) ===================
[19:48:19] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[19:48:19] [PASSED] drm_test_rect_clip_scaled_not_clipped
[19:48:19] [PASSED] drm_test_rect_clip_scaled_clipped
[19:48:19] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[19:48:19] ================= drm_test_rect_intersect =================
[19:48:19] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[19:48:19] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[19:48:19] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[19:48:19] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[19:48:19] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[19:48:19] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[19:48:19] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[19:48:19] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[19:48:19] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[19:48:19] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[19:48:19] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[19:48:19] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[19:48:19] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[19:48:19] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[19:48:19] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[19:48:19] ============= [PASSED] drm_test_rect_intersect =============
[19:48:19] ================ drm_test_rect_calc_hscale ================
[19:48:19] [PASSED] normal use
[19:48:19] [PASSED] out of max range
[19:48:19] [PASSED] out of min range
[19:48:19] [PASSED] zero dst
[19:48:19] [PASSED] negative src
[19:48:19] [PASSED] negative dst
[19:48:19] ============ [PASSED] drm_test_rect_calc_hscale ============
[19:48:19] ================ drm_test_rect_calc_vscale ================
[19:48:19] [PASSED] normal use
[19:48:19] [PASSED] out of max range
[19:48:19] [PASSED] out of min range
[19:48:19] [PASSED] zero dst
[19:48:19] [PASSED] negative src
[19:48:19] [PASSED] negative dst
[19:48:19] ============ [PASSED] drm_test_rect_calc_vscale ============
[19:48:19] ================== drm_test_rect_rotate ===================
[19:48:19] [PASSED] reflect-x
[19:48:19] [PASSED] reflect-y
[19:48:19] [PASSED] rotate-0
[19:48:19] [PASSED] rotate-90
[19:48:19] [PASSED] rotate-180
[19:48:19] [PASSED] rotate-270
[19:48:19] ============== [PASSED] drm_test_rect_rotate ===============
[19:48:19] ================ drm_test_rect_rotate_inv =================
[19:48:19] [PASSED] reflect-x
[19:48:19] [PASSED] reflect-y
[19:48:19] [PASSED] rotate-0
[19:48:19] [PASSED] rotate-90
[19:48:19] [PASSED] rotate-180
[19:48:19] [PASSED] rotate-270
[19:48:19] ============ [PASSED] drm_test_rect_rotate_inv =============
[19:48:19] ==================== [PASSED] drm_rect =====================
[19:48:19] ============ drm_sysfb_modeset_test (1 subtest) ============
[19:48:19] ============ drm_test_sysfb_build_fourcc_list =============
[19:48:19] [PASSED] no native formats
[19:48:19] [PASSED] XRGB8888 as native format
[19:48:19] [PASSED] remove duplicates
[19:48:19] [PASSED] convert alpha formats
[19:48:19] [PASSED] random formats
[19:48:19] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[19:48:19] ============= [PASSED] drm_sysfb_modeset_test ==============
[19:48:19] ================== drm_fixp (2 subtests) ===================
[19:48:19] [PASSED] drm_test_int2fixp
[19:48:19] [PASSED] drm_test_sm2fixp
[19:48:19] ==================== [PASSED] drm_fixp =====================
[19:48:19] ============================================================
[19:48:19] Testing complete. Ran 621 tests: passed: 621
[19:48:19] Elapsed time: 25.923s total, 1.743s configuring, 24.014s building, 0.134s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[19:48:19] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[19:48:21] 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
[19:48:30] Starting KUnit Kernel (1/1)...
[19:48:30] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[19:48:30] ================= ttm_device (5 subtests) ==================
[19:48:30] [PASSED] ttm_device_init_basic
[19:48:30] [PASSED] ttm_device_init_multiple
[19:48:30] [PASSED] ttm_device_fini_basic
[19:48:30] [PASSED] ttm_device_init_no_vma_man
[19:48:30] ================== ttm_device_init_pools ==================
[19:48:30] [PASSED] No DMA allocations, no DMA32 required
[19:48:30] [PASSED] DMA allocations, DMA32 required
[19:48:30] [PASSED] No DMA allocations, DMA32 required
[19:48:30] [PASSED] DMA allocations, no DMA32 required
[19:48:30] ============== [PASSED] ttm_device_init_pools ==============
[19:48:30] =================== [PASSED] ttm_device ====================
[19:48:30] ================== ttm_pool (8 subtests) ===================
[19:48:30] ================== ttm_pool_alloc_basic ===================
[19:48:30] [PASSED] One page
[19:48:30] [PASSED] More than one page
[19:48:30] [PASSED] Above the allocation limit
[19:48:30] [PASSED] One page, with coherent DMA mappings enabled
[19:48:30] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[19:48:30] ============== [PASSED] ttm_pool_alloc_basic ===============
[19:48:30] ============== ttm_pool_alloc_basic_dma_addr ==============
[19:48:30] [PASSED] One page
[19:48:30] [PASSED] More than one page
[19:48:30] [PASSED] Above the allocation limit
[19:48:30] [PASSED] One page, with coherent DMA mappings enabled
[19:48:30] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[19:48:30] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[19:48:30] [PASSED] ttm_pool_alloc_order_caching_match
[19:48:30] [PASSED] ttm_pool_alloc_caching_mismatch
[19:48:30] [PASSED] ttm_pool_alloc_order_mismatch
[19:48:30] [PASSED] ttm_pool_free_dma_alloc
[19:48:30] [PASSED] ttm_pool_free_no_dma_alloc
[19:48:30] [PASSED] ttm_pool_fini_basic
[19:48:30] ==================== [PASSED] ttm_pool =====================
[19:48:30] ================ ttm_resource (8 subtests) =================
[19:48:30] ================= ttm_resource_init_basic =================
[19:48:30] [PASSED] Init resource in TTM_PL_SYSTEM
[19:48:30] [PASSED] Init resource in TTM_PL_VRAM
[19:48:30] [PASSED] Init resource in a private placement
[19:48:30] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[19:48:30] ============= [PASSED] ttm_resource_init_basic =============
[19:48:30] [PASSED] ttm_resource_init_pinned
[19:48:30] [PASSED] ttm_resource_fini_basic
[19:48:30] [PASSED] ttm_resource_manager_init_basic
[19:48:30] [PASSED] ttm_resource_manager_usage_basic
[19:48:30] [PASSED] ttm_resource_manager_set_used_basic
[19:48:30] [PASSED] ttm_sys_man_alloc_basic
[19:48:30] [PASSED] ttm_sys_man_free_basic
[19:48:30] ================== [PASSED] ttm_resource ===================
[19:48:30] =================== ttm_tt (15 subtests) ===================
[19:48:30] ==================== ttm_tt_init_basic ====================
[19:48:30] [PASSED] Page-aligned size
[19:48:30] [PASSED] Extra pages requested
[19:48:30] ================ [PASSED] ttm_tt_init_basic ================
[19:48:30] [PASSED] ttm_tt_init_misaligned
[19:48:30] [PASSED] ttm_tt_fini_basic
[19:48:30] [PASSED] ttm_tt_fini_sg
[19:48:30] [PASSED] ttm_tt_fini_shmem
[19:48:30] [PASSED] ttm_tt_create_basic
[19:48:30] [PASSED] ttm_tt_create_invalid_bo_type
[19:48:30] [PASSED] ttm_tt_create_ttm_exists
[19:48:30] [PASSED] ttm_tt_create_failed
[19:48:30] [PASSED] ttm_tt_destroy_basic
[19:48:30] [PASSED] ttm_tt_populate_null_ttm
[19:48:30] [PASSED] ttm_tt_populate_populated_ttm
[19:48:30] [PASSED] ttm_tt_unpopulate_basic
[19:48:30] [PASSED] ttm_tt_unpopulate_empty_ttm
[19:48:30] [PASSED] ttm_tt_swapin_basic
[19:48:30] ===================== [PASSED] ttm_tt ======================
[19:48:30] =================== ttm_bo (14 subtests) ===================
[19:48:30] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[19:48:30] [PASSED] Cannot be interrupted and sleeps
[19:48:30] [PASSED] Cannot be interrupted, locks straight away
[19:48:30] [PASSED] Can be interrupted, sleeps
[19:48:30] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[19:48:30] [PASSED] ttm_bo_reserve_locked_no_sleep
[19:48:30] [PASSED] ttm_bo_reserve_no_wait_ticket
[19:48:30] [PASSED] ttm_bo_reserve_double_resv
[19:48:30] [PASSED] ttm_bo_reserve_interrupted
[19:48:30] [PASSED] ttm_bo_reserve_deadlock
[19:48:30] [PASSED] ttm_bo_unreserve_basic
[19:48:30] [PASSED] ttm_bo_unreserve_pinned
[19:48:30] [PASSED] ttm_bo_unreserve_bulk
[19:48:30] [PASSED] ttm_bo_fini_basic
[19:48:30] [PASSED] ttm_bo_fini_shared_resv
[19:48:30] [PASSED] ttm_bo_pin_basic
[19:48:30] [PASSED] ttm_bo_pin_unpin_resource
[19:48:30] [PASSED] ttm_bo_multiple_pin_one_unpin
[19:48:30] ===================== [PASSED] ttm_bo ======================
[19:48:30] ============== ttm_bo_validate (22 subtests) ===============
[19:48:30] ============== ttm_bo_init_reserved_sys_man ===============
[19:48:30] [PASSED] Buffer object for userspace
[19:48:30] [PASSED] Kernel buffer object
[19:48:30] [PASSED] Shared buffer object
[19:48:30] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[19:48:30] ============== ttm_bo_init_reserved_mock_man ==============
[19:48:30] [PASSED] Buffer object for userspace
[19:48:30] [PASSED] Kernel buffer object
[19:48:30] [PASSED] Shared buffer object
[19:48:30] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[19:48:30] [PASSED] ttm_bo_init_reserved_resv
[19:48:30] ================== ttm_bo_validate_basic ==================
[19:48:30] [PASSED] Buffer object for userspace
[19:48:30] [PASSED] Kernel buffer object
[19:48:30] [PASSED] Shared buffer object
[19:48:30] ============== [PASSED] ttm_bo_validate_basic ==============
[19:48:30] [PASSED] ttm_bo_validate_invalid_placement
[19:48:30] ============= ttm_bo_validate_same_placement ==============
[19:48:30] [PASSED] System manager
[19:48:30] [PASSED] VRAM manager
[19:48:30] ========= [PASSED] ttm_bo_validate_same_placement ==========
[19:48:30] [PASSED] ttm_bo_validate_failed_alloc
[19:48:30] [PASSED] ttm_bo_validate_pinned
[19:48:30] [PASSED] ttm_bo_validate_busy_placement
[19:48:30] ================ ttm_bo_validate_multihop =================
[19:48:30] [PASSED] Buffer object for userspace
[19:48:30] [PASSED] Kernel buffer object
[19:48:30] [PASSED] Shared buffer object
[19:48:30] ============ [PASSED] ttm_bo_validate_multihop =============
[19:48:30] ========== ttm_bo_validate_no_placement_signaled ==========
[19:48:30] [PASSED] Buffer object in system domain, no page vector
[19:48:30] [PASSED] Buffer object in system domain with an existing page vector
[19:48:30] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[19:48:30] ======== ttm_bo_validate_no_placement_not_signaled ========
[19:48:30] [PASSED] Buffer object for userspace
[19:48:30] [PASSED] Kernel buffer object
[19:48:30] [PASSED] Shared buffer object
[19:48:30] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[19:48:30] [PASSED] ttm_bo_validate_move_fence_signaled
[19:48:30] ========= ttm_bo_validate_move_fence_not_signaled =========
[19:48:30] [PASSED] Waits for GPU
[19:48:30] [PASSED] Tries to lock straight away
[19:48:30] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[19:48:30] [PASSED] ttm_bo_validate_swapout
[19:48:30] [PASSED] ttm_bo_validate_happy_evict
[19:48:30] [PASSED] ttm_bo_validate_all_pinned_evict
[19:48:30] [PASSED] ttm_bo_validate_allowed_only_evict
[19:48:30] [PASSED] ttm_bo_validate_deleted_evict
[19:48:30] [PASSED] ttm_bo_validate_busy_domain_evict
[19:48:30] [PASSED] ttm_bo_validate_evict_gutting
[19:48:30] [PASSED] ttm_bo_validate_recrusive_evict
[19:48:30] ================= [PASSED] ttm_bo_validate =================
[19:48:30] ============================================================
[19:48:30] Testing complete. Ran 102 tests: passed: 102
[19:48:30] Elapsed time: 11.449s total, 1.753s configuring, 9.481s building, 0.187s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 30+ messages in thread* ✓ Xe.CI.BAT: success for drm/xe: Misc initialization improvements (rev2)
2026-05-25 16:05 [PATCH 0/6] drm/xe: Misc initialization improvements Michal Wajdeczko
` (8 preceding siblings ...)
2026-05-25 19:48 ` ✓ CI.KUnit: success for drm/xe: Misc initialization improvements (rev2) Patchwork
@ 2026-05-25 20:49 ` Patchwork
2026-05-26 1:59 ` ✓ Xe.CI.FULL: " Patchwork
10 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2026-05-25 20:49 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 1534 bytes --]
== Series Details ==
Series: drm/xe: Misc initialization improvements (rev2)
URL : https://patchwork.freedesktop.org/series/167227/
State : success
== Summary ==
CI Bug Log - changes from xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a_BAT -> xe-pw-167227v2_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-167227v2_BAT that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@xe_live_ktest@xe_dma_buf:
- bat-bmg-vm: [PASS][1] -> [ABORT][2] ([Intel XE#8007] / [Intel XE#8023]) +1 other test abort
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/bat-bmg-vm/igt@xe_live_ktest@xe_dma_buf.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/bat-bmg-vm/igt@xe_live_ktest@xe_dma_buf.html
[Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
[Intel XE#8023]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8023
Build changes
-------------
* Linux: xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a -> xe-pw-167227v2
IGT_8937: 8937
xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a: 7764a2b4e29b146c5c17c1bd80e0903daddd012a
xe-pw-167227v2: 167227v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/index.html
[-- Attachment #2: Type: text/html, Size: 2092 bytes --]
^ permalink raw reply [flat|nested] 30+ messages in thread* ✓ Xe.CI.FULL: success for drm/xe: Misc initialization improvements (rev2)
2026-05-25 16:05 [PATCH 0/6] drm/xe: Misc initialization improvements Michal Wajdeczko
` (9 preceding siblings ...)
2026-05-25 20:49 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-05-26 1:59 ` Patchwork
10 siblings, 0 replies; 30+ messages in thread
From: Patchwork @ 2026-05-26 1:59 UTC (permalink / raw)
To: Michal Wajdeczko; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 15114 bytes --]
== Series Details ==
Series: drm/xe: Misc initialization improvements (rev2)
URL : https://patchwork.freedesktop.org/series/167227/
State : success
== Summary ==
CI Bug Log - changes from xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a_FULL -> xe-pw-167227v2_FULL
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-167227v2_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_async_flips@alternate-sync-async-flip:
- shard-bmg: [PASS][1] -> [FAIL][2] ([Intel XE#3718] / [Intel XE#6078]) +1 other test fail
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-bmg-10/igt@kms_async_flips@alternate-sync-async-flip.html
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-9/igt@kms_async_flips@alternate-sync-async-flip.html
* igt@kms_big_fb@x-tiled-8bpp-rotate-270:
- shard-bmg: NOTRUN -> [SKIP][3] ([Intel XE#2327])
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@kms_big_fb@x-tiled-8bpp-rotate-270.html
* igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
- shard-bmg: NOTRUN -> [SKIP][4] ([Intel XE#1124])
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html
* igt@kms_bw@linear-tiling-3-displays-target-3840x2160p:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#367])
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@kms_bw@linear-tiling-3-displays-target-3840x2160p.html
* igt@kms_chamelium_frames@dp-crc-single:
- shard-bmg: NOTRUN -> [SKIP][6] ([Intel XE#2252])
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@kms_chamelium_frames@dp-crc-single.html
* igt@kms_cursor_edge_walk@256x256-top-bottom@pipe-d-dp-2:
- shard-bmg: [PASS][7] -> [FAIL][8] ([Intel XE#6841]) +1 other test fail
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-bmg-9/igt@kms_cursor_edge_walk@256x256-top-bottom@pipe-d-dp-2.html
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-5/igt@kms_cursor_edge_walk@256x256-top-bottom@pipe-d-dp-2.html
* igt@kms_fbcon_fbt@psr-suspend:
- shard-lnl: [PASS][9] -> [FAIL][10] ([Intel XE#7949])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-lnl-7/igt@kms_fbcon_fbt@psr-suspend.html
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-lnl-2/igt@kms_fbcon_fbt@psr-suspend.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1:
- shard-lnl: [PASS][11] -> [FAIL][12] ([Intel XE#301] / [Intel XE#3149])
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html
* igt@kms_flip@flip-vs-expired-vblank@b-edp1:
- shard-lnl: [PASS][13] -> [FAIL][14] ([Intel XE#301]) +1 other test fail
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-lnl-5/igt@kms_flip@flip-vs-expired-vblank@b-edp1.html
* igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#7178] / [Intel XE#7349])
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@kms_flip_scaled_crc@flip-32bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html
* igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-pgflip-blt:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#2311]) +7 other tests skip
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@kms_frontbuffer_tracking@drrs-2p-scndscrn-shrfb-pgflip-blt.html
* igt@kms_frontbuffer_tracking@fbc-rgb565-draw-render:
- shard-bmg: NOTRUN -> [SKIP][17] ([Intel XE#4141])
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@kms_frontbuffer_tracking@fbc-rgb565-draw-render.html
* igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-shrfb-pgflip-blt:
- shard-bmg: NOTRUN -> [SKIP][18] ([Intel XE#2313]) +3 other tests skip
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@kms_frontbuffer_tracking@psrhdr-2p-primscrn-shrfb-pgflip-blt.html
* igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-3-xrgb2101010:
- shard-bmg: [PASS][19] -> [SKIP][20] ([Intel XE#7915]) +3 other tests skip
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-bmg-4/igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-3-xrgb2101010.html
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-7/igt@kms_hdr@static-toggle-dpms@pipe-a-hdmi-a-3-xrgb2101010.html
* igt@kms_plane@pixel-format-4-tiled-mtl-mc-ccs-modifier:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#7283])
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@kms_plane@pixel-format-4-tiled-mtl-mc-ccs-modifier.html
* igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area:
- shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#1489])
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@kms_psr2_sf@fbc-pr-primary-plane-update-sf-dmg-area.html
* igt@kms_psr@fbc-psr-primary-page-flip:
- shard-bmg: NOTRUN -> [SKIP][23] ([Intel XE#2234] / [Intel XE#2850]) +1 other test skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@kms_psr@fbc-psr-primary-page-flip.html
* igt@kms_rotation_crc@sprite-rotation-90:
- shard-bmg: NOTRUN -> [SKIP][24] ([Intel XE#3904] / [Intel XE#7342])
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@kms_rotation_crc@sprite-rotation-90.html
* igt@kms_vrr@flipline:
- shard-lnl: [PASS][25] -> [FAIL][26] ([Intel XE#4227] / [Intel XE#7397]) +1 other test fail
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-lnl-2/igt@kms_vrr@flipline.html
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-lnl-8/igt@kms_vrr@flipline.html
* igt@xe_exec_fault_mode@many-execqueues-multi-queue-invalid-fault:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#7136])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@xe_exec_fault_mode@many-execqueues-multi-queue-invalid-fault.html
* igt@xe_exec_multi_queue@few-execs-preempt-mode-fault-userptr-invalidate:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#6874]) +2 other tests skip
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@xe_exec_multi_queue@few-execs-preempt-mode-fault-userptr-invalidate.html
* igt@xe_exec_reset@long-spin-many-preempt-threads:
- shard-bmg: [PASS][29] -> [FAIL][30] ([Intel XE#7956])
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-bmg-10/igt@xe_exec_reset@long-spin-many-preempt-threads.html
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-9/igt@xe_exec_reset@long-spin-many-preempt-threads.html
* igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-userptr:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#7138]) +1 other test skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@xe_exec_threads@threads-multi-queue-cm-shared-vm-userptr.html
* igt@xe_pm@d3cold-i2c:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#5694] / [Intel XE#7370])
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@xe_pm@d3cold-i2c.html
* igt@xe_wedged@wedged-mode-toggle:
- shard-bmg: [PASS][33] -> [ABORT][34] ([Intel XE#8007])
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-bmg-9/igt@xe_wedged@wedged-mode-toggle.html
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-5/igt@xe_wedged@wedged-mode-toggle.html
#### Possible fixes ####
* igt@kms_async_flips@alternate-sync-async-flip-atomic:
- shard-bmg: [FAIL][35] ([Intel XE#3718] / [Intel XE#6078]) -> [PASS][36]
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-bmg-10/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-2/igt@kms_async_flips@alternate-sync-async-flip-atomic.html
* igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-d-dp-2:
- shard-bmg: [FAIL][37] ([Intel XE#6078]) -> [PASS][38]
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-bmg-10/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-d-dp-2.html
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-2/igt@kms_async_flips@alternate-sync-async-flip-atomic@pipe-d-dp-2.html
* igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1:
- shard-lnl: [FAIL][39] ([Intel XE#301]) -> [PASS][40]
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-edp1.html
* igt@kms_hdr@static-toggle-suspend@pipe-a-hdmi-a-3-xrgb16161616f:
- shard-bmg: [SKIP][41] ([Intel XE#7915]) -> [PASS][42] +3 other tests pass
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-bmg-7/igt@kms_hdr@static-toggle-suspend@pipe-a-hdmi-a-3-xrgb16161616f.html
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-9/igt@kms_hdr@static-toggle-suspend@pipe-a-hdmi-a-3-xrgb16161616f.html
* igt@xe_evict@evict-beng-mixed-many-threads-small:
- shard-bmg: [INCOMPLETE][43] ([Intel XE#6321]) -> [PASS][44]
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-bmg-4/igt@xe_evict@evict-beng-mixed-many-threads-small.html
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-3/igt@xe_evict@evict-beng-mixed-many-threads-small.html
#### Warnings ####
* igt@kms_flip@flip-vs-expired-vblank-interruptible:
- shard-lnl: [FAIL][45] ([Intel XE#301]) -> [FAIL][46] ([Intel XE#301] / [Intel XE#3149])
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-lnl-8/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-lnl-1/igt@kms_flip@flip-vs-expired-vblank-interruptible.html
* igt@kms_tiled_display@basic-test-pattern:
- shard-bmg: [SKIP][47] ([Intel XE#2426] / [Intel XE#5848]) -> [FAIL][48] ([Intel XE#1729] / [Intel XE#7424])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a/shard-bmg-1/igt@kms_tiled_display@basic-test-pattern.html
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/shard-bmg-4/igt@kms_tiled_display@basic-test-pattern.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1729]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1729
[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#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
[Intel XE#5694]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5694
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6841]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6841
[Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
[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#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
[Intel XE#7349]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7349
[Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
[Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397
[Intel XE#7424]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7424
[Intel XE#7915]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7915
[Intel XE#7949]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7949
[Intel XE#7956]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7956
[Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
Build changes
-------------
* Linux: xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a -> xe-pw-167227v2
IGT_8937: 8937
xe-5125-7764a2b4e29b146c5c17c1bd80e0903daddd012a: 7764a2b4e29b146c5c17c1bd80e0903daddd012a
xe-pw-167227v2: 167227v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167227v2/index.html
[-- Attachment #2: Type: text/html, Size: 16972 bytes --]
^ permalink raw reply [flat|nested] 30+ messages in thread