* [PATCH v5 1/7] platform/surface: gpe: use platform_device_register_full()
2026-05-12 11:59 [PATCH v5 0/7] driver core: remove software node from platform devices on device release Bartosz Golaszewski
@ 2026-05-12 11:59 ` Bartosz Golaszewski
2026-05-12 11:59 ` [PATCH v5 2/7] driver core: platform: make the swnode check stricter Bartosz Golaszewski
` (9 subsequent siblings)
10 siblings, 0 replies; 17+ messages in thread
From: Bartosz Golaszewski @ 2026-05-12 11:59 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Dmitry Torokhov, Brendan Higgins, David Gow, Rae Moar,
Andy Shevchenko, Maximilian Luz, Hans de Goede,
Ilpo Järvinen, Matthew Brost, Thomas Hellström,
Rodrigo Vivi, David Airlie, Simona Vetter
Cc: brgl, driver-core, linux-kernel, linux-kselftest, kunit-dev,
platform-driver-x86, intel-xe, dri-devel, Bartosz Golaszewski
Creating a software node for a given set of properties and adding it to
a platform device can be achieved with a single call to
platform_device_register_full(). There's nothing in this driver that
suggests using the more fine-grained interfaces was intentional so
switch to using the high-level helper.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
drivers/platform/surface/surface_gpe.c | 36 +++++++++++-----------------------
1 file changed, 11 insertions(+), 25 deletions(-)
diff --git a/drivers/platform/surface/surface_gpe.c b/drivers/platform/surface/surface_gpe.c
index b359413903b13c4f8e8b284ef7ae6f6db3f47d72..b8bb47b0d91f036ee5073d21534f8f26a4d5ed15 100644
--- a/drivers/platform/surface/surface_gpe.c
+++ b/drivers/platform/surface/surface_gpe.c
@@ -290,9 +290,9 @@ static struct platform_device *surface_gpe_device;
static int __init surface_gpe_init(void)
{
+ struct platform_device_info pdevinfo;
const struct dmi_system_id *match;
struct platform_device *pdev;
- struct fwnode_handle *fwnode;
int status;
match = dmi_first_match(dmi_lid_device_table);
@@ -305,34 +305,20 @@ static int __init surface_gpe_init(void)
if (status)
return status;
- fwnode = fwnode_create_software_node(match->driver_data, NULL);
- if (IS_ERR(fwnode)) {
- status = PTR_ERR(fwnode);
- goto err_node;
- }
-
- pdev = platform_device_alloc("surface_gpe", PLATFORM_DEVID_NONE);
- if (!pdev) {
- status = -ENOMEM;
- goto err_alloc;
+ pdevinfo = (struct platform_device_info){
+ .name = "surface_gpe",
+ .id = PLATFORM_DEVID_NONE,
+ .properties = match->driver_data,
+ };
+
+ pdev = platform_device_register_full(&pdevinfo);
+ if (IS_ERR(pdev)) {
+ platform_driver_unregister(&surface_gpe_driver);
+ return PTR_ERR(pdev);
}
- pdev->dev.fwnode = fwnode;
-
- status = platform_device_add(pdev);
- if (status)
- goto err_add;
-
surface_gpe_device = pdev;
return 0;
-
-err_add:
- platform_device_put(pdev);
-err_alloc:
- fwnode_remove_software_node(fwnode);
-err_node:
- platform_driver_unregister(&surface_gpe_driver);
- return status;
}
module_init(surface_gpe_init);
--
2.47.3
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH v5 2/7] driver core: platform: make the swnode check stricter
2026-05-12 11:59 [PATCH v5 0/7] driver core: remove software node from platform devices on device release Bartosz Golaszewski
2026-05-12 11:59 ` [PATCH v5 1/7] platform/surface: gpe: use platform_device_register_full() Bartosz Golaszewski
@ 2026-05-12 11:59 ` Bartosz Golaszewski
2026-05-12 11:59 ` [PATCH v5 3/7] driver core: platform: provide platform_device_add_software_node() Bartosz Golaszewski
` (8 subsequent siblings)
10 siblings, 0 replies; 17+ messages in thread
From: Bartosz Golaszewski @ 2026-05-12 11:59 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Dmitry Torokhov, Brendan Higgins, David Gow, Rae Moar,
Andy Shevchenko, Maximilian Luz, Hans de Goede,
Ilpo Järvinen, Matthew Brost, Thomas Hellström,
Rodrigo Vivi, David Airlie, Simona Vetter
Cc: brgl, driver-core, linux-kernel, linux-kselftest, kunit-dev,
platform-driver-x86, intel-xe, dri-devel, Bartosz Golaszewski
Check all three possible situations in which two software nodes for a
single platform device can be created/assigned in
platform_device_register_full() and bail-out early.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
drivers/base/platform.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index 75b4698d0e582e67adafa78c312d75c72fd654cf..18f33bec36726490255bc7ca3c4ab07d9b7606b0 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -848,7 +848,13 @@ struct platform_device *platform_device_register_full(const struct platform_devi
int ret;
struct platform_device *pdev;
- if (pdevinfo->swnode && pdevinfo->properties)
+ /*
+ * Only one software node per device is allowed. Make sure we don't
+ * accept or create two.
+ */
+ if ((pdevinfo->swnode && pdevinfo->properties) ||
+ (pdevinfo->swnode && is_software_node(pdevinfo->fwnode)) ||
+ (pdevinfo->properties && is_software_node(pdevinfo->fwnode)))
return ERR_PTR(-EINVAL);
pdev = platform_device_alloc(pdevinfo->name, pdevinfo->id);
--
2.47.3
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH v5 3/7] driver core: platform: provide platform_device_add_software_node()
2026-05-12 11:59 [PATCH v5 0/7] driver core: remove software node from platform devices on device release Bartosz Golaszewski
2026-05-12 11:59 ` [PATCH v5 1/7] platform/surface: gpe: use platform_device_register_full() Bartosz Golaszewski
2026-05-12 11:59 ` [PATCH v5 2/7] driver core: platform: make the swnode check stricter Bartosz Golaszewski
@ 2026-05-12 11:59 ` Bartosz Golaszewski
2026-05-12 16:31 ` Danilo Krummrich
2026-05-12 11:59 ` [PATCH v5 4/7] drm/xe/i2c: use platform_device_add_software_node() Bartosz Golaszewski
` (7 subsequent siblings)
10 siblings, 1 reply; 17+ messages in thread
From: Bartosz Golaszewski @ 2026-05-12 11:59 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Dmitry Torokhov, Brendan Higgins, David Gow, Rae Moar,
Andy Shevchenko, Maximilian Luz, Hans de Goede,
Ilpo Järvinen, Matthew Brost, Thomas Hellström,
Rodrigo Vivi, David Airlie, Simona Vetter
Cc: brgl, driver-core, linux-kernel, linux-kselftest, kunit-dev,
platform-driver-x86, intel-xe, dri-devel, Bartosz Golaszewski
The software node added to the platform device in
platform_device_register_full() is currently not removed on device
release. In order to fix this, we need to first convert all drivers that
use platform_device_alloc() and then assign a software node as the
primary firmware node to using device_add_software_node() for correct
reference counting.
To that end: provide platform_device_add_software_node() in line with
other existing helpers like platform_device_add_data().
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
drivers/base/platform.c | 25 ++++++++++++++++++++++++-
include/linux/platform_device.h | 3 +++
2 files changed, 27 insertions(+), 1 deletion(-)
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index 18f33bec36726490255bc7ca3c4ab07d9b7606b0..f617e02b171f6e59a3c40504a71f8915a41e8514 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -613,6 +613,10 @@ static void platform_device_release(struct device *dev)
*
* Create a platform device object which can have other objects attached
* to it, and which will have attached objects freed when it is released.
+ *
+ * Note: devices allocated with this function must not have the following
+ * members assigned manually: swnode, resources and dev->platform_data.
+ * Please use the provided helper interfaces.
*/
struct platform_device *platform_device_alloc(const char *name, int id)
{
@@ -687,6 +691,25 @@ int platform_device_add_data(struct platform_device *pdev, const void *data,
}
EXPORT_SYMBOL_GPL(platform_device_add_data);
+/**
+ * platform_device_add_software_node - add a software node to a platform device
+ * @pdev: platform device allocated with platform_device_alloc()
+ * @swnode: software node to assign to this device, does not need to be registered
+ *
+ * If this device is already associated with a primary firmware node, add the
+ * software node as the secondary firmware node. Otherwise, make it the primary
+ * firmware node. Register the software node if needed.
+ *
+ * Returns:
+ * 0 on success, negative error number on failure.
+ */
+int platform_device_add_software_node(struct platform_device *pdev,
+ const struct software_node *swnode)
+{
+ return device_add_software_node(&pdev->dev, swnode);
+}
+EXPORT_SYMBOL_GPL(platform_device_add_software_node);
+
/**
* platform_device_add - add a platform device to device hierarchy
* @pdev: platform device we're adding
@@ -881,7 +904,7 @@ struct platform_device *platform_device_register_full(const struct platform_devi
goto err;
if (pdevinfo->swnode) {
- ret = device_add_software_node(&pdev->dev, pdevinfo->swnode);
+ ret = platform_device_add_software_node(pdev, pdevinfo->swnode);
if (ret)
goto err;
} else if (pdevinfo->properties) {
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h
index 975400a472e30e2f98cc8f13bc36a63129bd4fcf..bd421506e98fc293c97121693e4bd18b703e41fa 100644
--- a/include/linux/platform_device.h
+++ b/include/linux/platform_device.h
@@ -19,6 +19,7 @@ struct irq_affinity;
struct mfd_cell;
struct property_entry;
struct platform_device_id;
+struct software_node;
struct platform_device {
const char *name;
@@ -262,6 +263,8 @@ extern int platform_device_add_resources(struct platform_device *pdev,
unsigned int num);
extern int platform_device_add_data(struct platform_device *pdev,
const void *data, size_t size);
+int platform_device_add_software_node(struct platform_device *pdev,
+ const struct software_node *swnode);
extern int platform_device_add(struct platform_device *pdev);
extern void platform_device_del(struct platform_device *pdev);
extern void platform_device_put(struct platform_device *pdev);
--
2.47.3
^ permalink raw reply related [flat|nested] 17+ messages in thread* Re: [PATCH v5 3/7] driver core: platform: provide platform_device_add_software_node()
2026-05-12 11:59 ` [PATCH v5 3/7] driver core: platform: provide platform_device_add_software_node() Bartosz Golaszewski
@ 2026-05-12 16:31 ` Danilo Krummrich
2026-05-12 18:15 ` Dmitry Torokhov
2026-05-13 11:55 ` Bartosz Golaszewski
0 siblings, 2 replies; 17+ messages in thread
From: Danilo Krummrich @ 2026-05-12 16:31 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Greg Kroah-Hartman, Rafael J. Wysocki, Dmitry Torokhov,
Brendan Higgins, David Gow, Rae Moar, Andy Shevchenko,
Maximilian Luz, Hans de Goede, Ilpo Järvinen, Matthew Brost,
Thomas Hellström, Rodrigo Vivi, David Airlie, Simona Vetter,
brgl, driver-core, linux-kernel, linux-kselftest, kunit-dev,
platform-driver-x86, intel-xe, dri-devel
On Tue May 12, 2026 at 1:59 PM CEST, Bartosz Golaszewski wrote:
> +int platform_device_add_software_node(struct platform_device *pdev,
> + const struct software_node *swnode)
> +{
> + return device_add_software_node(&pdev->dev, swnode);
I think this should be device_create_managed_software_node(), see also [1].
That said, now that I see the resulting code and the corresponding subleties, I
think we should reconsider your (well predicted) "temporary
platform_device_release_full()" idea for -fixes, while iterating this for -next.
[1] https://lore.kernel.org/driver-core/DIGU67TAWF7W.1DWZMO4XAVK7G@kernel.org/
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH v5 3/7] driver core: platform: provide platform_device_add_software_node()
2026-05-12 16:31 ` Danilo Krummrich
@ 2026-05-12 18:15 ` Dmitry Torokhov
2026-05-13 11:55 ` Bartosz Golaszewski
1 sibling, 0 replies; 17+ messages in thread
From: Dmitry Torokhov @ 2026-05-12 18:15 UTC (permalink / raw)
To: Danilo Krummrich
Cc: Bartosz Golaszewski, Greg Kroah-Hartman, Rafael J. Wysocki,
Brendan Higgins, David Gow, Rae Moar, Andy Shevchenko,
Maximilian Luz, Hans de Goede, Ilpo Järvinen, Matthew Brost,
Thomas Hellström, Rodrigo Vivi, David Airlie, Simona Vetter,
brgl, driver-core, linux-kernel, linux-kselftest, kunit-dev,
platform-driver-x86, intel-xe, dri-devel
On Tue, May 12, 2026 at 06:31:44PM +0200, Danilo Krummrich wrote:
> On Tue May 12, 2026 at 1:59 PM CEST, Bartosz Golaszewski wrote:
> > +int platform_device_add_software_node(struct platform_device *pdev,
> > + const struct software_node *swnode)
> > +{
> > + return device_add_software_node(&pdev->dev, swnode);
>
> I think this should be device_create_managed_software_node(), see also [1].
The main issue is that we do not know if the software node is registered
or not when platform device is registered, and are trying to use
heuristic to figure it out and decide if we need to clean it up or not.
You need a new variant of device_add_software_node()
(device_set_software_node ?) that would bump up reference of already
registered software nodes but if node is not registered yet created it
as managed.
Thanks.
--
Dmitry
^ permalink raw reply [flat|nested] 17+ messages in thread* Re: [PATCH v5 3/7] driver core: platform: provide platform_device_add_software_node()
2026-05-12 16:31 ` Danilo Krummrich
2026-05-12 18:15 ` Dmitry Torokhov
@ 2026-05-13 11:55 ` Bartosz Golaszewski
1 sibling, 0 replies; 17+ messages in thread
From: Bartosz Golaszewski @ 2026-05-13 11:55 UTC (permalink / raw)
To: Danilo Krummrich
Cc: Bartosz Golaszewski, Greg Kroah-Hartman, Rafael J. Wysocki,
Dmitry Torokhov, Brendan Higgins, David Gow, Rae Moar,
Andy Shevchenko, Maximilian Luz, Hans de Goede,
Ilpo Järvinen, Matthew Brost, Thomas Hellström,
Rodrigo Vivi, David Airlie, Simona Vetter, driver-core,
linux-kernel, linux-kselftest, kunit-dev, platform-driver-x86,
intel-xe, dri-devel
On Tue, May 12, 2026 at 6:31 PM Danilo Krummrich <dakr@kernel.org> wrote:
>
> On Tue May 12, 2026 at 1:59 PM CEST, Bartosz Golaszewski wrote:
> > +int platform_device_add_software_node(struct platform_device *pdev,
> > + const struct software_node *swnode)
> > +{
> > + return device_add_software_node(&pdev->dev, swnode);
>
> I think this should be device_create_managed_software_node(), see also [1].
>
> That said, now that I see the resulting code and the corresponding subleties, I
> think we should reconsider your (well predicted) "temporary
> platform_device_release_full()" idea for -fixes, while iterating this for -next.
>
Agreed, I think it's much safer this way.
Bart
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v5 4/7] drm/xe/i2c: use platform_device_add_software_node()
2026-05-12 11:59 [PATCH v5 0/7] driver core: remove software node from platform devices on device release Bartosz Golaszewski
` (2 preceding siblings ...)
2026-05-12 11:59 ` [PATCH v5 3/7] driver core: platform: provide platform_device_add_software_node() Bartosz Golaszewski
@ 2026-05-12 11:59 ` Bartosz Golaszewski
2026-05-12 16:24 ` Danilo Krummrich
2026-05-12 11:59 ` [PATCH v5 5/7] driver core: platform: remove software node on release() Bartosz Golaszewski
` (6 subsequent siblings)
10 siblings, 1 reply; 17+ messages in thread
From: Bartosz Golaszewski @ 2026-05-12 11:59 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Dmitry Torokhov, Brendan Higgins, David Gow, Rae Moar,
Andy Shevchenko, Maximilian Luz, Hans de Goede,
Ilpo Järvinen, Matthew Brost, Thomas Hellström,
Rodrigo Vivi, David Airlie, Simona Vetter
Cc: brgl, driver-core, linux-kernel, linux-kselftest, kunit-dev,
platform-driver-x86, intel-xe, dri-devel, Bartosz Golaszewski
This driver intentionally uses the fine-grained approach to creating
platform devices. It assigns a software node as the primary firmware
node of the device it creates. Ahead of improving the reference counting
of platform device software nodes, switch to the new interface that
internally uses device_add_software_node(). While at it: define a static
software node with the provided set of properties instead of allocating
it dynamically and simplify the error path.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
drivers/gpu/drm/xe/xe_i2c.c | 21 ++++++++++-----------
1 file changed, 10 insertions(+), 11 deletions(-)
diff --git a/drivers/gpu/drm/xe/xe_i2c.c b/drivers/gpu/drm/xe/xe_i2c.c
index 706783863d07d66b4685005d6649b3cd143ecc3b..7f4295e7dc74f112abff8427485b5c8a5ad71383 100644
--- a/drivers/gpu/drm/xe/xe_i2c.c
+++ b/drivers/gpu/drm/xe/xe_i2c.c
@@ -53,6 +53,10 @@ static const struct property_entry xe_i2c_adapter_properties[] = {
{ }
};
+static const struct software_node xe_i2c_adapter_swnode = {
+ .properties = xe_i2c_adapter_properties,
+};
+
static inline void xe_i2c_read_endpoint(struct xe_mmio *mmio, void *ep)
{
u32 *val = ep;
@@ -96,10 +100,6 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c)
struct fwnode_handle *fwnode;
int ret;
- fwnode = fwnode_create_software_node(xe_i2c_adapter_properties, NULL);
- if (IS_ERR(fwnode))
- return PTR_ERR(fwnode);
-
/*
* Not using platform_device_register_full() here because we don't have
* a handle to the platform_device before it returns. xe_i2c_notifier()
@@ -107,10 +107,12 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c)
* platform_device_register_full() is done.
*/
pdev = platform_device_alloc(adapter_name, pci_dev_id(pci));
- if (!pdev) {
- ret = -ENOMEM;
- goto err_fwnode_remove;
- }
+ if (!pdev)
+ return -ENOMEM;
+
+ ret = platform_device_add_software_node(pdev, &xe_i2c_adapter_swnode);
+ if (ret)
+ goto err_pdev_put;
if (i2c->adapter_irq) {
struct resource res;
@@ -123,7 +125,6 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c)
}
pdev->dev.parent = i2c->drm_dev;
- pdev->dev.fwnode = fwnode;
i2c->adapter_node = fwnode;
i2c->pdev = pdev;
@@ -135,8 +136,6 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c)
err_pdev_put:
platform_device_put(pdev);
-err_fwnode_remove:
- fwnode_remove_software_node(fwnode);
return ret;
}
--
2.47.3
^ permalink raw reply related [flat|nested] 17+ messages in thread* Re: [PATCH v5 4/7] drm/xe/i2c: use platform_device_add_software_node()
2026-05-12 11:59 ` [PATCH v5 4/7] drm/xe/i2c: use platform_device_add_software_node() Bartosz Golaszewski
@ 2026-05-12 16:24 ` Danilo Krummrich
0 siblings, 0 replies; 17+ messages in thread
From: Danilo Krummrich @ 2026-05-12 16:24 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Greg Kroah-Hartman, Rafael J. Wysocki, Dmitry Torokhov,
Brendan Higgins, David Gow, Rae Moar, Andy Shevchenko,
Maximilian Luz, Hans de Goede, Ilpo Järvinen, Matthew Brost,
Thomas Hellström, Rodrigo Vivi, David Airlie, Simona Vetter,
brgl, driver-core, linux-kernel, linux-kselftest, kunit-dev,
platform-driver-x86, intel-xe, dri-devel
On Tue May 12, 2026 at 1:59 PM CEST, Bartosz Golaszewski wrote:
> diff --git a/drivers/gpu/drm/xe/xe_i2c.c b/drivers/gpu/drm/xe/xe_i2c.c
> index 706783863d07d66b4685005d6649b3cd143ecc3b..7f4295e7dc74f112abff8427485b5c8a5ad71383 100644
> --- a/drivers/gpu/drm/xe/xe_i2c.c
> +++ b/drivers/gpu/drm/xe/xe_i2c.c
> @@ -53,6 +53,10 @@ static const struct property_entry xe_i2c_adapter_properties[] = {
> { }
> };
>
> +static const struct software_node xe_i2c_adapter_swnode = {
> + .properties = xe_i2c_adapter_properties,
> +};
> +
> static inline void xe_i2c_read_endpoint(struct xe_mmio *mmio, void *ep)
> {
> u32 *val = ep;
> @@ -96,10 +100,6 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c)
> struct fwnode_handle *fwnode;
> int ret;
>
> - fwnode = fwnode_create_software_node(xe_i2c_adapter_properties, NULL);
> - if (IS_ERR(fwnode))
> - return PTR_ERR(fwnode);
> -
> /*
> * Not using platform_device_register_full() here because we don't have
> * a handle to the platform_device before it returns. xe_i2c_notifier()
> @@ -107,10 +107,12 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c)
> * platform_device_register_full() is done.
> */
> pdev = platform_device_alloc(adapter_name, pci_dev_id(pci));
> - if (!pdev) {
> - ret = -ENOMEM;
> - goto err_fwnode_remove;
> - }
> + if (!pdev)
> + return -ENOMEM;
> +
> + ret = platform_device_add_software_node(pdev, &xe_i2c_adapter_swnode);
By calling platform_device_add_software_node() the platform device technically
takes ownership of the struct software_node managing its lifetime, by removing
it in release().
However, this is not properly reflected by the
platform_device_add_software_node() API, as it just stores the pointer given by
the driver, which in this case is a pointer to module memory.
The platform device is reference counted and can outlive the module.
So, I think analogous to platform_device_add_data() we need to make a copy of
the struct software_node in platform_device_add_software_node().
> + if (ret)
> + goto err_pdev_put;
>
> if (i2c->adapter_irq) {
> struct resource res;
> @@ -123,7 +125,6 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c)
> }
>
> pdev->dev.parent = i2c->drm_dev;
> - pdev->dev.fwnode = fwnode;
> i2c->adapter_node = fwnode;
> i2c->pdev = pdev;
>
> @@ -135,8 +136,6 @@ static int xe_i2c_register_adapter(struct xe_i2c *i2c)
>
> err_pdev_put:
> platform_device_put(pdev);
> -err_fwnode_remove:
> - fwnode_remove_software_node(fwnode);
There is another call to this in xe_i2c_unregister_adapter(), which I think was
missed.
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v5 5/7] driver core: platform: remove software node on release()
2026-05-12 11:59 [PATCH v5 0/7] driver core: remove software node from platform devices on device release Bartosz Golaszewski
` (3 preceding siblings ...)
2026-05-12 11:59 ` [PATCH v5 4/7] drm/xe/i2c: use platform_device_add_software_node() Bartosz Golaszewski
@ 2026-05-12 11:59 ` Bartosz Golaszewski
2026-05-12 11:59 ` [PATCH v5 6/7] kunit: provide kunit_software_node_register() Bartosz Golaszewski
` (5 subsequent siblings)
10 siblings, 0 replies; 17+ messages in thread
From: Bartosz Golaszewski @ 2026-05-12 11:59 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Dmitry Torokhov, Brendan Higgins, David Gow, Rae Moar,
Andy Shevchenko, Maximilian Luz, Hans de Goede,
Ilpo Järvinen, Matthew Brost, Thomas Hellström,
Rodrigo Vivi, David Airlie, Simona Vetter
Cc: brgl, driver-core, linux-kernel, linux-kselftest, kunit-dev,
platform-driver-x86, intel-xe, dri-devel, Bartosz Golaszewski,
Andy Shevchenko
If we pass a software node to a newly created device using struct
platform_device_info, it will not be removed when the device is
released. This may happen when a module creating the device is removed
or on failure in platform_device_add().
When we try to reuse that software node in a subsequent call to
platform_device_register_full(), it will fails with -EBUSY. Add the
missing call to device_remove_software_node() in release path.
In addition to the above change, make sure that we still function
correctly if a software node is used as the primary firmware node.
Fixes: 0fc434bc2c45 ("driver core: platform: allow attaching software nodes when creating devices")
Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
drivers/base/platform.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/base/platform.c b/drivers/base/platform.c
index f617e02b171f6e59a3c40504a71f8915a41e8514..d2f40b348f193db842aa7c17c9c41be59a03d35f 100644
--- a/drivers/base/platform.c
+++ b/drivers/base/platform.c
@@ -599,6 +599,7 @@ static void platform_device_release(struct device *dev)
struct platform_object *pa = container_of(dev, struct platform_object,
pdev.dev);
+ device_remove_software_node(dev);
of_node_put(pa->pdev.dev.of_node);
kfree(pa->pdev.dev.platform_data);
kfree(pa->pdev.mfd_cell);
@@ -895,6 +896,16 @@ struct platform_device *platform_device_register_full(const struct platform_devi
pdev->dev.coherent_dma_mask = pdevinfo->dma_mask;
}
+ /*
+ * If the primary firmware node is a software node and there's no
+ * secondary firmware node, the primary will be affected by the call
+ * to device_remove_software_node() in platform_device_release() and
+ * its reference count will be dropped by one. Take another reference
+ * here to make it have no effect.
+ */
+ if (is_software_node(pdevinfo->fwnode))
+ fwnode_handle_get(pdevinfo->fwnode);
+
ret = platform_device_add_resources(pdev, pdevinfo->res, pdevinfo->num_res);
if (ret)
goto err;
--
2.47.3
^ permalink raw reply related [flat|nested] 17+ messages in thread* [PATCH v5 6/7] kunit: provide kunit_software_node_register()
2026-05-12 11:59 [PATCH v5 0/7] driver core: remove software node from platform devices on device release Bartosz Golaszewski
` (4 preceding siblings ...)
2026-05-12 11:59 ` [PATCH v5 5/7] driver core: platform: remove software node on release() Bartosz Golaszewski
@ 2026-05-12 11:59 ` Bartosz Golaszewski
2026-05-12 15:28 ` Andy Shevchenko
2026-05-12 11:59 ` [PATCH v5 7/7] driver core: platform: tests: add test cases for correct swnode removal Bartosz Golaszewski
` (4 subsequent siblings)
10 siblings, 1 reply; 17+ messages in thread
From: Bartosz Golaszewski @ 2026-05-12 11:59 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Dmitry Torokhov, Brendan Higgins, David Gow, Rae Moar,
Andy Shevchenko, Maximilian Luz, Hans de Goede,
Ilpo Järvinen, Matthew Brost, Thomas Hellström,
Rodrigo Vivi, David Airlie, Simona Vetter
Cc: brgl, driver-core, linux-kernel, linux-kselftest, kunit-dev,
platform-driver-x86, intel-xe, dri-devel, Bartosz Golaszewski
Implement a helper for registering kunit test-managed software nodes.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
include/kunit/fwnode.h | 19 ++++++++++++++++++
lib/kunit/Makefile | 3 ++-
lib/kunit/fwnode.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 73 insertions(+), 1 deletion(-)
diff --git a/include/kunit/fwnode.h b/include/kunit/fwnode.h
new file mode 100644
index 0000000000000000000000000000000000000000..e1554ace64b8a5899aff9f4b4247e5157826a49b
--- /dev/null
+++ b/include/kunit/fwnode.h
@@ -0,0 +1,19 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * KUnit resource management helpers firmware nodes.
+ *
+ * Copyright (C) Qualcomm Technologies, Inc. and/or its subsidiaries
+ */
+
+#ifndef _KUNIT_FWNODE_H
+#define _KUNIT_FWNODE_H
+
+struct kunit;
+struct fwnode_handle;
+struct software_node;
+
+struct fwnode_handle *
+kunit_software_node_register(struct kunit *test,
+ const struct software_node *node);
+
+#endif /* _KUNIT_FWNODE_H */
diff --git a/lib/kunit/Makefile b/lib/kunit/Makefile
index 656f1fa35abcc635e67d5b4cb1bc586b48415ac5..7549a701791b5b7eaa8e0637b6818cdfd0b655a8 100644
--- a/lib/kunit/Makefile
+++ b/lib/kunit/Makefile
@@ -10,7 +10,8 @@ kunit-objs += test.o \
executor.o \
attributes.o \
device.o \
- platform.o
+ platform.o \
+ fwnode.o
ifeq ($(CONFIG_KUNIT_DEBUGFS),y)
kunit-objs += debugfs.o
diff --git a/lib/kunit/fwnode.c b/lib/kunit/fwnode.c
new file mode 100644
index 0000000000000000000000000000000000000000..bc8bf06762dd71a741a3419c1ca04028d6ad3ec8
--- /dev/null
+++ b/lib/kunit/fwnode.c
@@ -0,0 +1,52 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) Qualcomm Technologies, Inc. and/or its subsidiaries
+ */
+
+#include <kunit/fwnode.h>
+#include <kunit/test.h>
+
+#include <linux/fwnode.h>
+#include <linux/property.h>
+
+static void kunit_software_node_unregister(void *data)
+{
+ const struct software_node *swnode = data;
+
+ software_node_unregister(swnode);
+}
+
+/**
+ * kunit_software_node_register() - Register a KUnit-managed software node
+ * @test: test context
+ * @swnode: Software node to register
+ *
+ * Register a test-managed software node and return its firmware node handle.
+ * The software node is unregistered after the test case completes.
+ *
+ * Return: Firmware node handle of the registered software node or IS_ERR()
+ * on failure.
+ */
+struct fwnode_handle *
+kunit_software_node_register(struct kunit *test,
+ const struct software_node *swnode)
+{
+ struct fwnode_handle *fwnode;
+ int ret;
+
+ ret = software_node_register(swnode);
+ if (ret)
+ return ERR_PTR(ret);
+
+ fwnode = software_node_fwnode(swnode);
+ if (WARN_ON(!fwnode))
+ return ERR_PTR(-ENOENT);
+
+ ret = kunit_add_action_or_reset(test, kunit_software_node_unregister,
+ (void *)swnode);
+ if (ret)
+ return ERR_PTR(ret);
+
+ return fwnode;
+}
+EXPORT_SYMBOL_GPL(kunit_software_node_register);
--
2.47.3
^ permalink raw reply related [flat|nested] 17+ messages in thread* Re: [PATCH v5 6/7] kunit: provide kunit_software_node_register()
2026-05-12 11:59 ` [PATCH v5 6/7] kunit: provide kunit_software_node_register() Bartosz Golaszewski
@ 2026-05-12 15:28 ` Andy Shevchenko
0 siblings, 0 replies; 17+ messages in thread
From: Andy Shevchenko @ 2026-05-12 15:28 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Dmitry Torokhov, Brendan Higgins, David Gow, Rae Moar,
Andy Shevchenko, Maximilian Luz, Hans de Goede,
Ilpo Järvinen, Matthew Brost, Thomas Hellström,
Rodrigo Vivi, David Airlie, Simona Vetter, brgl, driver-core,
linux-kernel, linux-kselftest, kunit-dev, platform-driver-x86,
intel-xe, dri-devel
On Tue, May 12, 2026 at 3:00 PM Bartosz Golaszewski
<bartosz.golaszewski@oss.qualcomm.com> wrote:
>
> Implement a helper for registering kunit test-managed software nodes.
...
> @@ -10,7 +10,8 @@ kunit-objs += test.o \
> executor.o \
> attributes.o \
> device.o \
> - platform.o
> + platform.o \
> + fwnode.o
You may put it after device.o, 1 line less to change.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH v5 7/7] driver core: platform: tests: add test cases for correct swnode removal
2026-05-12 11:59 [PATCH v5 0/7] driver core: remove software node from platform devices on device release Bartosz Golaszewski
` (5 preceding siblings ...)
2026-05-12 11:59 ` [PATCH v5 6/7] kunit: provide kunit_software_node_register() Bartosz Golaszewski
@ 2026-05-12 11:59 ` Bartosz Golaszewski
2026-05-12 15:07 ` [PATCH v5 0/7] driver core: remove software node from platform devices on device release Danilo Krummrich
` (3 subsequent siblings)
10 siblings, 0 replies; 17+ messages in thread
From: Bartosz Golaszewski @ 2026-05-12 11:59 UTC (permalink / raw)
To: Greg Kroah-Hartman, Rafael J. Wysocki, Danilo Krummrich,
Dmitry Torokhov, Brendan Higgins, David Gow, Rae Moar,
Andy Shevchenko, Maximilian Luz, Hans de Goede,
Ilpo Järvinen, Matthew Brost, Thomas Hellström,
Rodrigo Vivi, David Airlie, Simona Vetter
Cc: brgl, driver-core, linux-kernel, linux-kselftest, kunit-dev,
platform-driver-x86, intel-xe, dri-devel, Bartosz Golaszewski
Extend the kunit module for platform devices with test cases verifying
that the same software node can be added to platform devices repeatedly.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
drivers/base/test/platform-device-test.c | 168 +++++++++++++++++++++++++++++++
1 file changed, 168 insertions(+)
diff --git a/drivers/base/test/platform-device-test.c b/drivers/base/test/platform-device-test.c
index 6355a2231b741791b54eb78af42e13f31f745184..3e42c205fc935ab1dd2066e257d4ecf837c9ad79 100644
--- a/drivers/base/test/platform-device-test.c
+++ b/drivers/base/test/platform-device-test.c
@@ -1,12 +1,15 @@
// SPDX-License-Identifier: GPL-2.0
+#include <kunit/fwnode.h>
#include <kunit/platform_device.h>
#include <kunit/resource.h>
#include <linux/device.h>
#include <linux/device/bus.h>
+#include <linux/fwnode.h>
#include <linux/of_platform.h>
#include <linux/platform_device.h>
+#include <linux/property.h>
#define DEVICE_NAME "test"
@@ -253,9 +256,174 @@ static struct kunit_suite platform_device_match_test_suite = {
.test_cases = platform_device_match_tests,
};
+static int platform_device_swnode_test_probe(struct platform_device *pdev)
+{
+ return 0;
+}
+
+static struct platform_driver platform_swnode_test_driver = {
+ .probe = platform_device_swnode_test_probe,
+ .driver = {
+ .name = DEVICE_NAME,
+ },
+};
+
+static const struct software_node platform_device_test_swnode = { };
+
+/*
+ * Check that reusing a software node works correctly. If the call to
+ * platform_device_register_full() fails after adding the secondary firmware
+ * node, the software node must be unregistered in the device's release()
+ * callback or the subsequent call to platform_device_register_full() will fail
+ * with -EBUSY due to the software node aleady having been registered.
+ */
+static void platform_device_swnode_add_twice(struct kunit *test)
+{
+ struct platform_device_info pdevinfo;
+ struct platform_device *pdev;
+ struct fwnode_handle fwnode;
+ int ret;
+
+ ret = kunit_platform_driver_register(test, &platform_swnode_test_driver);
+ KUNIT_ASSERT_EQ(test, ret, 0);
+
+ fwnode_init(&fwnode, NULL);
+ pdevinfo = (struct platform_device_info){
+ .name = DEVICE_NAME,
+ .id = PLATFORM_DEVID_NONE,
+ .fwnode = &fwnode,
+ .swnode = &platform_device_test_swnode,
+ };
+
+ pdev = platform_device_register_full(&pdevinfo);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev);
+
+ wait_for_device_probe();
+ KUNIT_ASSERT_TRUE(test, device_is_bound(&pdev->dev));
+
+ platform_device_unregister(pdev);
+
+ pdev = platform_device_register_full(&pdevinfo);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev);
+
+ wait_for_device_probe();
+ KUNIT_ASSERT_TRUE(test, device_is_bound(&pdev->dev));
+
+ platform_device_unregister(pdev);
+}
+
+/*
+ * Check that passing a software node as the primary firmware node of the
+ * platform device does not result in it being unregistered by the call to
+ * device_remove_software_node() in its release path.
+ */
+static void platform_device_swnode_as_primary(struct kunit *test)
+{
+ struct platform_device_info pdevinfo;
+ struct platform_device *pdev;
+ struct fwnode_handle *fwnode;
+ int ret;
+
+ ret = kunit_platform_driver_register(test, &platform_swnode_test_driver);
+ KUNIT_ASSERT_EQ(test, ret, 0);
+
+ fwnode = kunit_software_node_register(test, &platform_device_test_swnode);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, fwnode);
+
+ pdevinfo = (struct platform_device_info){
+ .name = DEVICE_NAME,
+ .id = PLATFORM_DEVID_NONE,
+ .fwnode = fwnode,
+ };
+
+ pdev = platform_device_register_full(&pdevinfo);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, pdev);
+
+ wait_for_device_probe();
+ KUNIT_ASSERT_TRUE(test, device_is_bound(&pdev->dev));
+
+ platform_device_unregister(pdev);
+
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, software_node_fwnode(&platform_device_test_swnode));
+}
+
+static const struct software_node platform_device_test_primary_swnode = { };
+
+/*
+ * Check that passing two software nodes to platform_device_register_full()
+ * fails.
+ */
+static void platform_device_two_swnodes(struct kunit *test)
+{
+ static const struct property_entry properties[] = {
+ PROPERTY_ENTRY_U32("foo", 42),
+ { }
+ };
+
+ struct platform_device_info pdevinfo;
+ struct platform_device *pdev;
+ struct fwnode_handle *fwnode;
+ int ret;
+
+ ret = kunit_platform_driver_register(test, &platform_swnode_test_driver);
+ KUNIT_ASSERT_EQ(test, ret, 0);
+
+ fwnode = kunit_software_node_register(test, &platform_device_test_swnode);
+ KUNIT_ASSERT_NOT_ERR_OR_NULL(test, fwnode);
+
+ pdevinfo = (struct platform_device_info){
+ .name = DEVICE_NAME,
+ .id = PLATFORM_DEVID_NONE,
+ .fwnode = fwnode,
+ .swnode = &platform_device_test_swnode,
+ };
+
+ pdev = platform_device_register_full(&pdevinfo);
+ KUNIT_ASSERT_TRUE(test, IS_ERR(pdev));
+ KUNIT_ASSERT_EQ_MSG(test, PTR_ERR(pdev), -EINVAL,
+ "Expected errno == -EINVAL, got: %pe", pdev);
+
+ pdevinfo = (struct platform_device_info){
+ .name = DEVICE_NAME,
+ .id = PLATFORM_DEVID_NONE,
+ .swnode = &platform_device_test_swnode,
+ .properties = properties,
+ };
+
+ pdev = platform_device_register_full(&pdevinfo);
+ KUNIT_ASSERT_TRUE(test, IS_ERR(pdev));
+ KUNIT_ASSERT_EQ_MSG(test, PTR_ERR(pdev), -EINVAL,
+ "Expected errno == -EINVAL, got: %pe", pdev);
+
+ pdevinfo = (struct platform_device_info){
+ .name = DEVICE_NAME,
+ .id = PLATFORM_DEVID_NONE,
+ .fwnode = fwnode,
+ .properties = properties,
+ };
+
+ pdev = platform_device_register_full(&pdevinfo);
+ KUNIT_ASSERT_TRUE(test, IS_ERR(pdev));
+ KUNIT_ASSERT_EQ_MSG(test, PTR_ERR(pdev), -EINVAL,
+ "Expected errno == -EINVAL, got: %pe", pdev);
+}
+
+static struct kunit_case platform_device_swnode_tests[] = {
+ KUNIT_CASE(platform_device_swnode_add_twice),
+ KUNIT_CASE(platform_device_swnode_as_primary),
+ KUNIT_CASE(platform_device_two_swnodes),
+ {}
+};
+
+static struct kunit_suite platform_device_swnode_test_suite = {
+ .name = "platform-device-swnode",
+ .test_cases = platform_device_swnode_tests,
+};
+
kunit_test_suites(
&platform_device_devm_test_suite,
&platform_device_match_test_suite,
+ &platform_device_swnode_test_suite,
);
MODULE_DESCRIPTION("Test module for platform devices");
--
2.47.3
^ permalink raw reply related [flat|nested] 17+ messages in thread* Re: [PATCH v5 0/7] driver core: remove software node from platform devices on device release
2026-05-12 11:59 [PATCH v5 0/7] driver core: remove software node from platform devices on device release Bartosz Golaszewski
` (6 preceding siblings ...)
2026-05-12 11:59 ` [PATCH v5 7/7] driver core: platform: tests: add test cases for correct swnode removal Bartosz Golaszewski
@ 2026-05-12 15:07 ` Danilo Krummrich
2026-05-13 15:18 ` ✗ CI.checkpatch: warning for driver core: remove software node from platform devices on device release (rev2) Patchwork
` (2 subsequent siblings)
10 siblings, 0 replies; 17+ messages in thread
From: Danilo Krummrich @ 2026-05-12 15:07 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Greg Kroah-Hartman, Rafael J. Wysocki, Dmitry Torokhov,
Brendan Higgins, David Gow, Rae Moar, Andy Shevchenko,
Maximilian Luz, Hans de Goede, Ilpo Järvinen, Matthew Brost,
Thomas Hellström, Rodrigo Vivi, David Airlie, Simona Vetter,
brgl, driver-core, linux-kernel, linux-kselftest, kunit-dev,
platform-driver-x86, intel-xe, dri-devel, Andy Shevchenko
On Tue May 12, 2026 at 1:59 PM CEST, Bartosz Golaszewski wrote:
> The first 5 patches are part of the fix and the remaining two add tests which
> can't really do harm.
I think we only need patch 1,3,4 as prerequisites to not introduce a regression
with the fix in patch 5. 2,6,7 can go through -next subsequently?
^ permalink raw reply [flat|nested] 17+ messages in thread* ✗ CI.checkpatch: warning for driver core: remove software node from platform devices on device release (rev2)
2026-05-12 11:59 [PATCH v5 0/7] driver core: remove software node from platform devices on device release Bartosz Golaszewski
` (7 preceding siblings ...)
2026-05-12 15:07 ` [PATCH v5 0/7] driver core: remove software node from platform devices on device release Danilo Krummrich
@ 2026-05-13 15:18 ` Patchwork
2026-05-13 15:20 ` ✓ CI.KUnit: success " Patchwork
2026-05-13 16:36 ` ✓ Xe.CI.BAT: " Patchwork
10 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-05-13 15:18 UTC (permalink / raw)
To: Bartosz Golaszewski; +Cc: intel-xe
== Series Details ==
Series: driver core: remove software node from platform devices on device release (rev2)
URL : https://patchwork.freedesktop.org/series/166515/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
061140b9bc586ae7f40abc1249c97e1cc72d1b9d
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 8db20e3838dfc27ca2ea634a923958a53289b7a8
Author: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
Date: Tue May 12 13:59:29 2026 +0200
driver core: platform: tests: add test cases for correct swnode removal
Extend the kunit module for platform devices with test cases verifying
that the same software node can be added to platform devices repeatedly.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
+ /mt/dim checkpatch 21b42374be17d486baf9392b56377afde67a778d drm-intel
921f5129398c platform/surface: gpe: use platform_device_register_full()
ae2249d5543d driver core: platform: make the swnode check stricter
05309a0ef27e driver core: platform: provide platform_device_add_software_node()
849c3c5b03df drm/xe/i2c: use platform_device_add_software_node()
5de8593ad646 driver core: platform: remove software node on release()
0c3aac4dcdb6 kunit: provide kunit_software_node_register()
-:11: WARNING:FILE_PATH_CHANGES: added, moved or deleted file(s), does MAINTAINERS need updating?
#11:
new file mode 100644
total: 0 errors, 1 warnings, 0 checks, 80 lines checked
8db20e3838df driver core: platform: tests: add test cases for correct swnode removal
^ permalink raw reply [flat|nested] 17+ messages in thread* ✓ CI.KUnit: success for driver core: remove software node from platform devices on device release (rev2)
2026-05-12 11:59 [PATCH v5 0/7] driver core: remove software node from platform devices on device release Bartosz Golaszewski
` (8 preceding siblings ...)
2026-05-13 15:18 ` ✗ CI.checkpatch: warning for driver core: remove software node from platform devices on device release (rev2) Patchwork
@ 2026-05-13 15:20 ` Patchwork
2026-05-13 16:36 ` ✓ Xe.CI.BAT: " Patchwork
10 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-05-13 15:20 UTC (permalink / raw)
To: Bartosz Golaszewski; +Cc: intel-xe
== Series Details ==
Series: driver core: remove software node from platform devices on device release (rev2)
URL : https://patchwork.freedesktop.org/series/166515/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[15:18:57] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:19:02] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[15:19:33] Starting KUnit Kernel (1/1)...
[15:19:33] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[15:19:33] ================== guc_buf (11 subtests) ===================
[15:19:33] [PASSED] test_smallest
[15:19:33] [PASSED] test_largest
[15:19:33] [PASSED] test_granular
[15:19:33] [PASSED] test_unique
[15:19:33] [PASSED] test_overlap
[15:19:33] [PASSED] test_reusable
[15:19:33] [PASSED] test_too_big
[15:19:33] [PASSED] test_flush
[15:19:33] [PASSED] test_lookup
[15:19:33] [PASSED] test_data
[15:19:33] [PASSED] test_class
[15:19:33] ===================== [PASSED] guc_buf =====================
[15:19:33] =================== guc_dbm (7 subtests) ===================
[15:19:33] [PASSED] test_empty
[15:19:33] [PASSED] test_default
[15:19:33] ======================== test_size ========================
[15:19:33] [PASSED] 4
[15:19:33] [PASSED] 8
[15:19:33] [PASSED] 32
[15:19:33] [PASSED] 256
[15:19:33] ==================== [PASSED] test_size ====================
[15:19:33] ======================= test_reuse ========================
[15:19:33] [PASSED] 4
[15:19:33] [PASSED] 8
[15:19:33] [PASSED] 32
[15:19:33] [PASSED] 256
[15:19:33] =================== [PASSED] test_reuse ====================
[15:19:33] =================== test_range_overlap ====================
[15:19:33] [PASSED] 4
[15:19:33] [PASSED] 8
[15:19:33] [PASSED] 32
[15:19:33] [PASSED] 256
[15:19:33] =============== [PASSED] test_range_overlap ================
[15:19:33] =================== test_range_compact ====================
[15:19:33] [PASSED] 4
[15:19:33] [PASSED] 8
[15:19:33] [PASSED] 32
[15:19:33] [PASSED] 256
[15:19:33] =============== [PASSED] test_range_compact ================
[15:19:33] ==================== test_range_spare =====================
[15:19:33] [PASSED] 4
[15:19:33] [PASSED] 8
[15:19:33] [PASSED] 32
[15:19:33] [PASSED] 256
[15:19:33] ================ [PASSED] test_range_spare =================
[15:19:33] ===================== [PASSED] guc_dbm =====================
[15:19:33] =================== guc_idm (6 subtests) ===================
[15:19:33] [PASSED] bad_init
[15:19:33] [PASSED] no_init
[15:19:33] [PASSED] init_fini
[15:19:33] [PASSED] check_used
[15:19:33] [PASSED] check_quota
[15:19:33] [PASSED] check_all
[15:19:33] ===================== [PASSED] guc_idm =====================
[15:19:33] ================== no_relay (3 subtests) ===================
[15:19:33] [PASSED] xe_drops_guc2pf_if_not_ready
[15:19:33] [PASSED] xe_drops_guc2vf_if_not_ready
[15:19:33] [PASSED] xe_rejects_send_if_not_ready
[15:19:33] ==================== [PASSED] no_relay =====================
[15:19:33] ================== pf_relay (14 subtests) ==================
[15:19:33] [PASSED] pf_rejects_guc2pf_too_short
[15:19:33] [PASSED] pf_rejects_guc2pf_too_long
[15:19:33] [PASSED] pf_rejects_guc2pf_no_payload
[15:19:33] [PASSED] pf_fails_no_payload
[15:19:33] [PASSED] pf_fails_bad_origin
[15:19:33] [PASSED] pf_fails_bad_type
[15:19:33] [PASSED] pf_txn_reports_error
[15:19:33] [PASSED] pf_txn_sends_pf2guc
[15:19:33] [PASSED] pf_sends_pf2guc
[15:19:33] [SKIPPED] pf_loopback_nop
[15:19:33] [SKIPPED] pf_loopback_echo
[15:19:33] [SKIPPED] pf_loopback_fail
[15:19:33] [SKIPPED] pf_loopback_busy
[15:19:33] [SKIPPED] pf_loopback_retry
[15:19:33] ==================== [PASSED] pf_relay =====================
[15:19:33] ================== vf_relay (3 subtests) ===================
[15:19:33] [PASSED] vf_rejects_guc2vf_too_short
[15:19:33] [PASSED] vf_rejects_guc2vf_too_long
[15:19:33] [PASSED] vf_rejects_guc2vf_no_payload
[15:19:33] ==================== [PASSED] vf_relay =====================
[15:19:33] ================ pf_gt_config (9 subtests) =================
[15:19:33] [PASSED] fair_contexts_1vf
[15:19:33] [PASSED] fair_doorbells_1vf
[15:19:33] [PASSED] fair_ggtt_1vf
[15:19:33] ====================== fair_vram_1vf ======================
[15:19:33] [PASSED] 3.50 GiB
[15:19:33] [PASSED] 11.5 GiB
[15:19:33] [PASSED] 15.5 GiB
[15:19:33] [PASSED] 31.5 GiB
[15:19:33] [PASSED] 63.5 GiB
[15:19:33] [PASSED] 1.91 GiB
[15:19:33] ================== [PASSED] fair_vram_1vf ==================
[15:19:33] ================ fair_vram_1vf_admin_only =================
[15:19:33] [PASSED] 3.50 GiB
[15:19:33] [PASSED] 11.5 GiB
[15:19:33] [PASSED] 15.5 GiB
[15:19:33] [PASSED] 31.5 GiB
[15:19:33] [PASSED] 63.5 GiB
[15:19:33] [PASSED] 1.91 GiB
[15:19:33] ============ [PASSED] fair_vram_1vf_admin_only =============
[15:19:33] ====================== fair_contexts ======================
[15:19:33] [PASSED] 1 VF
[15:19:33] [PASSED] 2 VFs
[15:19:33] [PASSED] 3 VFs
[15:19:33] [PASSED] 4 VFs
[15:19:33] [PASSED] 5 VFs
[15:19:33] [PASSED] 6 VFs
[15:19:33] [PASSED] 7 VFs
[15:19:33] [PASSED] 8 VFs
[15:19:33] [PASSED] 9 VFs
[15:19:33] [PASSED] 10 VFs
[15:19:33] [PASSED] 11 VFs
[15:19:33] [PASSED] 12 VFs
[15:19:33] [PASSED] 13 VFs
[15:19:33] [PASSED] 14 VFs
[15:19:33] [PASSED] 15 VFs
[15:19:33] [PASSED] 16 VFs
[15:19:33] [PASSED] 17 VFs
[15:19:33] [PASSED] 18 VFs
[15:19:33] [PASSED] 19 VFs
[15:19:33] [PASSED] 20 VFs
[15:19:33] [PASSED] 21 VFs
[15:19:33] [PASSED] 22 VFs
[15:19:33] [PASSED] 23 VFs
[15:19:33] [PASSED] 24 VFs
[15:19:33] [PASSED] 25 VFs
[15:19:33] [PASSED] 26 VFs
[15:19:33] [PASSED] 27 VFs
[15:19:33] [PASSED] 28 VFs
[15:19:33] [PASSED] 29 VFs
[15:19:33] [PASSED] 30 VFs
[15:19:33] [PASSED] 31 VFs
[15:19:33] [PASSED] 32 VFs
[15:19:33] [PASSED] 33 VFs
[15:19:33] [PASSED] 34 VFs
[15:19:33] [PASSED] 35 VFs
[15:19:33] [PASSED] 36 VFs
[15:19:33] [PASSED] 37 VFs
[15:19:33] [PASSED] 38 VFs
[15:19:33] [PASSED] 39 VFs
[15:19:33] [PASSED] 40 VFs
[15:19:33] [PASSED] 41 VFs
[15:19:33] [PASSED] 42 VFs
[15:19:33] [PASSED] 43 VFs
[15:19:33] [PASSED] 44 VFs
[15:19:33] [PASSED] 45 VFs
[15:19:33] [PASSED] 46 VFs
[15:19:33] [PASSED] 47 VFs
[15:19:33] [PASSED] 48 VFs
[15:19:33] [PASSED] 49 VFs
[15:19:33] [PASSED] 50 VFs
[15:19:33] [PASSED] 51 VFs
[15:19:33] [PASSED] 52 VFs
[15:19:33] [PASSED] 53 VFs
[15:19:33] [PASSED] 54 VFs
[15:19:33] [PASSED] 55 VFs
[15:19:33] [PASSED] 56 VFs
[15:19:33] [PASSED] 57 VFs
[15:19:33] [PASSED] 58 VFs
[15:19:33] [PASSED] 59 VFs
[15:19:33] [PASSED] 60 VFs
[15:19:33] [PASSED] 61 VFs
[15:19:33] [PASSED] 62 VFs
[15:19:33] [PASSED] 63 VFs
[15:19:33] ================== [PASSED] fair_contexts ==================
[15:19:33] ===================== fair_doorbells ======================
[15:19:33] [PASSED] 1 VF
[15:19:33] [PASSED] 2 VFs
[15:19:33] [PASSED] 3 VFs
[15:19:33] [PASSED] 4 VFs
[15:19:33] [PASSED] 5 VFs
[15:19:33] [PASSED] 6 VFs
[15:19:33] [PASSED] 7 VFs
[15:19:33] [PASSED] 8 VFs
[15:19:33] [PASSED] 9 VFs
[15:19:33] [PASSED] 10 VFs
[15:19:33] [PASSED] 11 VFs
[15:19:33] [PASSED] 12 VFs
[15:19:33] [PASSED] 13 VFs
[15:19:33] [PASSED] 14 VFs
[15:19:33] [PASSED] 15 VFs
[15:19:33] [PASSED] 16 VFs
[15:19:33] [PASSED] 17 VFs
[15:19:33] [PASSED] 18 VFs
[15:19:33] [PASSED] 19 VFs
[15:19:33] [PASSED] 20 VFs
[15:19:33] [PASSED] 21 VFs
[15:19:33] [PASSED] 22 VFs
[15:19:33] [PASSED] 23 VFs
[15:19:33] [PASSED] 24 VFs
[15:19:33] [PASSED] 25 VFs
[15:19:33] [PASSED] 26 VFs
[15:19:33] [PASSED] 27 VFs
[15:19:33] [PASSED] 28 VFs
[15:19:33] [PASSED] 29 VFs
[15:19:33] [PASSED] 30 VFs
[15:19:33] [PASSED] 31 VFs
[15:19:33] [PASSED] 32 VFs
[15:19:33] [PASSED] 33 VFs
[15:19:33] [PASSED] 34 VFs
[15:19:33] [PASSED] 35 VFs
[15:19:33] [PASSED] 36 VFs
[15:19:33] [PASSED] 37 VFs
[15:19:33] [PASSED] 38 VFs
[15:19:33] [PASSED] 39 VFs
[15:19:33] [PASSED] 40 VFs
[15:19:33] [PASSED] 41 VFs
[15:19:33] [PASSED] 42 VFs
[15:19:33] [PASSED] 43 VFs
[15:19:33] [PASSED] 44 VFs
[15:19:33] [PASSED] 45 VFs
[15:19:33] [PASSED] 46 VFs
[15:19:33] [PASSED] 47 VFs
[15:19:33] [PASSED] 48 VFs
[15:19:33] [PASSED] 49 VFs
[15:19:33] [PASSED] 50 VFs
[15:19:33] [PASSED] 51 VFs
[15:19:33] [PASSED] 52 VFs
[15:19:33] [PASSED] 53 VFs
[15:19:33] [PASSED] 54 VFs
[15:19:33] [PASSED] 55 VFs
[15:19:33] [PASSED] 56 VFs
[15:19:33] [PASSED] 57 VFs
[15:19:33] [PASSED] 58 VFs
[15:19:33] [PASSED] 59 VFs
[15:19:33] [PASSED] 60 VFs
[15:19:33] [PASSED] 61 VFs
[15:19:33] [PASSED] 62 VFs
[15:19:33] [PASSED] 63 VFs
[15:19:33] ================= [PASSED] fair_doorbells ==================
[15:19:33] ======================== fair_ggtt ========================
[15:19:33] [PASSED] 1 VF
[15:19:33] [PASSED] 2 VFs
[15:19:33] [PASSED] 3 VFs
[15:19:33] [PASSED] 4 VFs
[15:19:33] [PASSED] 5 VFs
[15:19:33] [PASSED] 6 VFs
[15:19:33] [PASSED] 7 VFs
[15:19:33] [PASSED] 8 VFs
[15:19:33] [PASSED] 9 VFs
[15:19:33] [PASSED] 10 VFs
[15:19:33] [PASSED] 11 VFs
[15:19:33] [PASSED] 12 VFs
[15:19:33] [PASSED] 13 VFs
[15:19:33] [PASSED] 14 VFs
[15:19:33] [PASSED] 15 VFs
[15:19:33] [PASSED] 16 VFs
[15:19:33] [PASSED] 17 VFs
[15:19:33] [PASSED] 18 VFs
[15:19:33] [PASSED] 19 VFs
[15:19:33] [PASSED] 20 VFs
[15:19:33] [PASSED] 21 VFs
[15:19:33] [PASSED] 22 VFs
[15:19:33] [PASSED] 23 VFs
[15:19:33] [PASSED] 24 VFs
[15:19:33] [PASSED] 25 VFs
[15:19:33] [PASSED] 26 VFs
[15:19:33] [PASSED] 27 VFs
[15:19:33] [PASSED] 28 VFs
[15:19:33] [PASSED] 29 VFs
[15:19:33] [PASSED] 30 VFs
[15:19:33] [PASSED] 31 VFs
[15:19:33] [PASSED] 32 VFs
[15:19:33] [PASSED] 33 VFs
[15:19:33] [PASSED] 34 VFs
[15:19:33] [PASSED] 35 VFs
[15:19:33] [PASSED] 36 VFs
[15:19:33] [PASSED] 37 VFs
[15:19:33] [PASSED] 38 VFs
[15:19:33] [PASSED] 39 VFs
[15:19:33] [PASSED] 40 VFs
[15:19:33] [PASSED] 41 VFs
[15:19:33] [PASSED] 42 VFs
[15:19:33] [PASSED] 43 VFs
[15:19:33] [PASSED] 44 VFs
[15:19:33] [PASSED] 45 VFs
[15:19:33] [PASSED] 46 VFs
[15:19:33] [PASSED] 47 VFs
[15:19:33] [PASSED] 48 VFs
[15:19:33] [PASSED] 49 VFs
[15:19:33] [PASSED] 50 VFs
[15:19:33] [PASSED] 51 VFs
[15:19:33] [PASSED] 52 VFs
[15:19:33] [PASSED] 53 VFs
[15:19:33] [PASSED] 54 VFs
[15:19:33] [PASSED] 55 VFs
[15:19:33] [PASSED] 56 VFs
[15:19:33] [PASSED] 57 VFs
[15:19:33] [PASSED] 58 VFs
[15:19:33] [PASSED] 59 VFs
[15:19:33] [PASSED] 60 VFs
[15:19:33] [PASSED] 61 VFs
[15:19:33] [PASSED] 62 VFs
[15:19:33] [PASSED] 63 VFs
[15:19:33] ==================== [PASSED] fair_ggtt ====================
[15:19:33] ======================== fair_vram ========================
[15:19:33] [PASSED] 1 VF
[15:19:33] [PASSED] 2 VFs
[15:19:33] [PASSED] 3 VFs
[15:19:33] [PASSED] 4 VFs
[15:19:33] [PASSED] 5 VFs
[15:19:33] [PASSED] 6 VFs
[15:19:33] [PASSED] 7 VFs
[15:19:33] [PASSED] 8 VFs
[15:19:33] [PASSED] 9 VFs
[15:19:33] [PASSED] 10 VFs
[15:19:33] [PASSED] 11 VFs
[15:19:33] [PASSED] 12 VFs
[15:19:33] [PASSED] 13 VFs
[15:19:33] [PASSED] 14 VFs
[15:19:33] [PASSED] 15 VFs
[15:19:33] [PASSED] 16 VFs
[15:19:33] [PASSED] 17 VFs
[15:19:33] [PASSED] 18 VFs
[15:19:33] [PASSED] 19 VFs
[15:19:33] [PASSED] 20 VFs
[15:19:33] [PASSED] 21 VFs
[15:19:33] [PASSED] 22 VFs
[15:19:33] [PASSED] 23 VFs
[15:19:33] [PASSED] 24 VFs
[15:19:33] [PASSED] 25 VFs
[15:19:33] [PASSED] 26 VFs
[15:19:33] [PASSED] 27 VFs
[15:19:33] [PASSED] 28 VFs
[15:19:33] [PASSED] 29 VFs
[15:19:33] [PASSED] 30 VFs
[15:19:33] [PASSED] 31 VFs
[15:19:33] [PASSED] 32 VFs
[15:19:33] [PASSED] 33 VFs
[15:19:33] [PASSED] 34 VFs
[15:19:33] [PASSED] 35 VFs
[15:19:33] [PASSED] 36 VFs
[15:19:33] [PASSED] 37 VFs
[15:19:33] [PASSED] 38 VFs
[15:19:33] [PASSED] 39 VFs
[15:19:33] [PASSED] 40 VFs
[15:19:33] [PASSED] 41 VFs
[15:19:33] [PASSED] 42 VFs
[15:19:33] [PASSED] 43 VFs
[15:19:33] [PASSED] 44 VFs
[15:19:33] [PASSED] 45 VFs
[15:19:33] [PASSED] 46 VFs
[15:19:33] [PASSED] 47 VFs
[15:19:33] [PASSED] 48 VFs
[15:19:33] [PASSED] 49 VFs
[15:19:33] [PASSED] 50 VFs
[15:19:33] [PASSED] 51 VFs
[15:19:33] [PASSED] 52 VFs
[15:19:33] [PASSED] 53 VFs
[15:19:33] [PASSED] 54 VFs
[15:19:33] [PASSED] 55 VFs
[15:19:33] [PASSED] 56 VFs
[15:19:33] [PASSED] 57 VFs
[15:19:33] [PASSED] 58 VFs
[15:19:33] [PASSED] 59 VFs
[15:19:33] [PASSED] 60 VFs
[15:19:33] [PASSED] 61 VFs
[15:19:33] [PASSED] 62 VFs
[15:19:33] [PASSED] 63 VFs
[15:19:33] ==================== [PASSED] fair_vram ====================
[15:19:33] ================== [PASSED] pf_gt_config ===================
[15:19:33] ===================== lmtt (1 subtest) =====================
[15:19:33] ======================== test_ops =========================
[15:19:33] [PASSED] 2-level
[15:19:33] [PASSED] multi-level
[15:19:33] ==================== [PASSED] test_ops =====================
[15:19:33] ====================== [PASSED] lmtt =======================
[15:19:33] ================= pf_service (11 subtests) =================
[15:19:33] [PASSED] pf_negotiate_any
[15:19:33] [PASSED] pf_negotiate_base_match
[15:19:33] [PASSED] pf_negotiate_base_newer
[15:19:33] [PASSED] pf_negotiate_base_next
[15:19:33] [SKIPPED] pf_negotiate_base_older
[15:19:33] [PASSED] pf_negotiate_base_prev
[15:19:33] [PASSED] pf_negotiate_latest_match
[15:19:33] [PASSED] pf_negotiate_latest_newer
[15:19:33] [PASSED] pf_negotiate_latest_next
[15:19:33] [SKIPPED] pf_negotiate_latest_older
[15:19:33] [SKIPPED] pf_negotiate_latest_prev
[15:19:33] =================== [PASSED] pf_service ====================
[15:19:33] ================= xe_guc_g2g (2 subtests) ==================
[15:19:33] ============== xe_live_guc_g2g_kunit_default ==============
[15:19:33] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[15:19:33] ============== xe_live_guc_g2g_kunit_allmem ===============
[15:19:33] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[15:19:33] =================== [SKIPPED] xe_guc_g2g ===================
[15:19:33] =================== xe_mocs (2 subtests) ===================
[15:19:33] ================ xe_live_mocs_kernel_kunit ================
[15:19:33] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[15:19:33] ================ xe_live_mocs_reset_kunit =================
[15:19:33] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[15:19:33] ==================== [SKIPPED] xe_mocs =====================
[15:19:33] ================= xe_migrate (2 subtests) ==================
[15:19:33] ================= xe_migrate_sanity_kunit =================
[15:19:33] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[15:19:33] ================== xe_validate_ccs_kunit ==================
[15:19:33] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[15:19:33] =================== [SKIPPED] xe_migrate ===================
[15:19:33] ================== xe_dma_buf (1 subtest) ==================
[15:19:33] ==================== xe_dma_buf_kunit =====================
[15:19:33] ================ [SKIPPED] xe_dma_buf_kunit ================
[15:19:33] =================== [SKIPPED] xe_dma_buf ===================
[15:19:33] ================= xe_bo_shrink (1 subtest) =================
[15:19:33] =================== xe_bo_shrink_kunit ====================
[15:19:33] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[15:19:33] ================== [SKIPPED] xe_bo_shrink ==================
[15:19:33] ==================== xe_bo (2 subtests) ====================
[15:19:33] ================== xe_ccs_migrate_kunit ===================
[15:19:33] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[15:19:33] ==================== xe_bo_evict_kunit ====================
[15:19:33] =============== [SKIPPED] xe_bo_evict_kunit ================
[15:19:33] ===================== [SKIPPED] xe_bo ======================
[15:19:33] ==================== args (13 subtests) ====================
[15:19:33] [PASSED] count_args_test
[15:19:33] [PASSED] call_args_example
[15:19:33] [PASSED] call_args_test
[15:19:33] [PASSED] drop_first_arg_example
[15:19:33] [PASSED] drop_first_arg_test
[15:19:33] [PASSED] first_arg_example
[15:19:33] [PASSED] first_arg_test
[15:19:33] [PASSED] last_arg_example
[15:19:33] [PASSED] last_arg_test
[15:19:33] [PASSED] pick_arg_example
[15:19:33] [PASSED] if_args_example
[15:19:33] [PASSED] if_args_test
[15:19:33] [PASSED] sep_comma_example
[15:19:33] ====================== [PASSED] args =======================
[15:19:33] =================== xe_pci (3 subtests) ====================
[15:19:33] ==================== check_graphics_ip ====================
[15:19:33] [PASSED] 12.00 Xe_LP
[15:19:33] [PASSED] 12.10 Xe_LP+
[15:19:33] [PASSED] 12.55 Xe_HPG
[15:19:33] [PASSED] 12.60 Xe_HPC
[15:19:33] [PASSED] 12.70 Xe_LPG
[15:19:33] [PASSED] 12.71 Xe_LPG
[15:19:33] [PASSED] 12.74 Xe_LPG+
[15:19:33] [PASSED] 20.01 Xe2_HPG
[15:19:33] [PASSED] 20.02 Xe2_HPG
[15:19:33] [PASSED] 20.04 Xe2_LPG
[15:19:33] [PASSED] 30.00 Xe3_LPG
[15:19:33] [PASSED] 30.01 Xe3_LPG
[15:19:33] [PASSED] 30.03 Xe3_LPG
[15:19:33] [PASSED] 30.04 Xe3_LPG
[15:19:33] [PASSED] 30.05 Xe3_LPG
[15:19:33] [PASSED] 35.10 Xe3p_LPG
[15:19:33] [PASSED] 35.11 Xe3p_XPC
[15:19:33] ================ [PASSED] check_graphics_ip ================
[15:19:33] ===================== check_media_ip ======================
[15:19:33] [PASSED] 12.00 Xe_M
[15:19:33] [PASSED] 12.55 Xe_HPM
[15:19:33] [PASSED] 13.00 Xe_LPM+
[15:19:33] [PASSED] 13.01 Xe2_HPM
[15:19:33] [PASSED] 20.00 Xe2_LPM
[15:19:33] [PASSED] 30.00 Xe3_LPM
[15:19:33] [PASSED] 30.02 Xe3_LPM
[15:19:33] [PASSED] 35.00 Xe3p_LPM
[15:19:33] [PASSED] 35.03 Xe3p_HPM
[15:19:33] ================= [PASSED] check_media_ip ==================
[15:19:33] =================== check_platform_desc ===================
[15:19:33] [PASSED] 0x9A60 (TIGERLAKE)
[15:19:33] [PASSED] 0x9A68 (TIGERLAKE)
[15:19:33] [PASSED] 0x9A70 (TIGERLAKE)
[15:19:33] [PASSED] 0x9A40 (TIGERLAKE)
[15:19:33] [PASSED] 0x9A49 (TIGERLAKE)
[15:19:33] [PASSED] 0x9A59 (TIGERLAKE)
[15:19:33] [PASSED] 0x9A78 (TIGERLAKE)
[15:19:33] [PASSED] 0x9AC0 (TIGERLAKE)
[15:19:33] [PASSED] 0x9AC9 (TIGERLAKE)
[15:19:33] [PASSED] 0x9AD9 (TIGERLAKE)
[15:19:33] [PASSED] 0x9AF8 (TIGERLAKE)
[15:19:33] [PASSED] 0x4C80 (ROCKETLAKE)
[15:19:33] [PASSED] 0x4C8A (ROCKETLAKE)
[15:19:33] [PASSED] 0x4C8B (ROCKETLAKE)
[15:19:33] [PASSED] 0x4C8C (ROCKETLAKE)
[15:19:33] [PASSED] 0x4C90 (ROCKETLAKE)
[15:19:33] [PASSED] 0x4C9A (ROCKETLAKE)
[15:19:33] [PASSED] 0x4680 (ALDERLAKE_S)
[15:19:33] [PASSED] 0x4682 (ALDERLAKE_S)
[15:19:33] [PASSED] 0x4688 (ALDERLAKE_S)
[15:19:33] [PASSED] 0x468A (ALDERLAKE_S)
[15:19:33] [PASSED] 0x468B (ALDERLAKE_S)
[15:19:33] [PASSED] 0x4690 (ALDERLAKE_S)
[15:19:33] [PASSED] 0x4692 (ALDERLAKE_S)
[15:19:33] [PASSED] 0x4693 (ALDERLAKE_S)
[15:19:33] [PASSED] 0x46A0 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46A1 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46A2 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46A3 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46A6 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46A8 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46AA (ALDERLAKE_P)
[15:19:33] [PASSED] 0x462A (ALDERLAKE_P)
[15:19:33] [PASSED] 0x4626 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x4628 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46B0 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46B1 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46B2 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46B3 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46C0 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46C1 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46C2 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46C3 (ALDERLAKE_P)
[15:19:33] [PASSED] 0x46D0 (ALDERLAKE_N)
[15:19:33] [PASSED] 0x46D1 (ALDERLAKE_N)
[15:19:33] [PASSED] 0x46D2 (ALDERLAKE_N)
[15:19:33] [PASSED] 0x46D3 (ALDERLAKE_N)
[15:19:33] [PASSED] 0x46D4 (ALDERLAKE_N)
[15:19:33] [PASSED] 0xA721 (ALDERLAKE_P)
[15:19:33] [PASSED] 0xA7A1 (ALDERLAKE_P)
[15:19:33] [PASSED] 0xA7A9 (ALDERLAKE_P)
[15:19:33] [PASSED] 0xA7AC (ALDERLAKE_P)
[15:19:33] [PASSED] 0xA7AD (ALDERLAKE_P)
[15:19:33] [PASSED] 0xA720 (ALDERLAKE_P)
[15:19:33] [PASSED] 0xA7A0 (ALDERLAKE_P)
[15:19:33] [PASSED] 0xA7A8 (ALDERLAKE_P)
[15:19:33] [PASSED] 0xA7AA (ALDERLAKE_P)
[15:19:33] [PASSED] 0xA7AB (ALDERLAKE_P)
[15:19:33] [PASSED] 0xA780 (ALDERLAKE_S)
[15:19:33] [PASSED] 0xA781 (ALDERLAKE_S)
[15:19:33] [PASSED] 0xA782 (ALDERLAKE_S)
[15:19:33] [PASSED] 0xA783 (ALDERLAKE_S)
[15:19:33] [PASSED] 0xA788 (ALDERLAKE_S)
[15:19:33] [PASSED] 0xA789 (ALDERLAKE_S)
[15:19:33] [PASSED] 0xA78A (ALDERLAKE_S)
[15:19:33] [PASSED] 0xA78B (ALDERLAKE_S)
[15:19:33] [PASSED] 0x4905 (DG1)
[15:19:33] [PASSED] 0x4906 (DG1)
[15:19:33] [PASSED] 0x4907 (DG1)
[15:19:33] [PASSED] 0x4908 (DG1)
[15:19:33] [PASSED] 0x4909 (DG1)
[15:19:33] [PASSED] 0x56C0 (DG2)
[15:19:33] [PASSED] 0x56C2 (DG2)
[15:19:33] [PASSED] 0x56C1 (DG2)
[15:19:33] [PASSED] 0x7D51 (METEORLAKE)
[15:19:33] [PASSED] 0x7DD1 (METEORLAKE)
[15:19:33] [PASSED] 0x7D41 (METEORLAKE)
[15:19:33] [PASSED] 0x7D67 (METEORLAKE)
[15:19:33] [PASSED] 0xB640 (METEORLAKE)
[15:19:33] [PASSED] 0x56A0 (DG2)
[15:19:33] [PASSED] 0x56A1 (DG2)
[15:19:33] [PASSED] 0x56A2 (DG2)
[15:19:33] [PASSED] 0x56BE (DG2)
[15:19:33] [PASSED] 0x56BF (DG2)
[15:19:33] [PASSED] 0x5690 (DG2)
[15:19:33] [PASSED] 0x5691 (DG2)
[15:19:33] [PASSED] 0x5692 (DG2)
[15:19:33] [PASSED] 0x56A5 (DG2)
[15:19:33] [PASSED] 0x56A6 (DG2)
[15:19:33] [PASSED] 0x56B0 (DG2)
[15:19:33] [PASSED] 0x56B1 (DG2)
[15:19:33] [PASSED] 0x56BA (DG2)
[15:19:33] [PASSED] 0x56BB (DG2)
[15:19:33] [PASSED] 0x56BC (DG2)
[15:19:33] [PASSED] 0x56BD (DG2)
[15:19:33] [PASSED] 0x5693 (DG2)
[15:19:33] [PASSED] 0x5694 (DG2)
[15:19:33] [PASSED] 0x5695 (DG2)
[15:19:33] [PASSED] 0x56A3 (DG2)
[15:19:33] [PASSED] 0x56A4 (DG2)
[15:19:33] [PASSED] 0x56B2 (DG2)
[15:19:33] [PASSED] 0x56B3 (DG2)
[15:19:33] [PASSED] 0x5696 (DG2)
[15:19:33] [PASSED] 0x5697 (DG2)
[15:19:33] [PASSED] 0xB69 (PVC)
[15:19:33] [PASSED] 0xB6E (PVC)
[15:19:33] [PASSED] 0xBD4 (PVC)
[15:19:33] [PASSED] 0xBD5 (PVC)
[15:19:33] [PASSED] 0xBD6 (PVC)
[15:19:33] [PASSED] 0xBD7 (PVC)
[15:19:33] [PASSED] 0xBD8 (PVC)
[15:19:33] [PASSED] 0xBD9 (PVC)
[15:19:33] [PASSED] 0xBDA (PVC)
[15:19:33] [PASSED] 0xBDB (PVC)
[15:19:33] [PASSED] 0xBE0 (PVC)
[15:19:33] [PASSED] 0xBE1 (PVC)
[15:19:33] [PASSED] 0xBE5 (PVC)
[15:19:33] [PASSED] 0x7D40 (METEORLAKE)
[15:19:33] [PASSED] 0x7D45 (METEORLAKE)
[15:19:33] [PASSED] 0x7D55 (METEORLAKE)
[15:19:33] [PASSED] 0x7D60 (METEORLAKE)
[15:19:33] [PASSED] 0x7DD5 (METEORLAKE)
[15:19:33] [PASSED] 0x6420 (LUNARLAKE)
[15:19:33] [PASSED] 0x64A0 (LUNARLAKE)
[15:19:33] [PASSED] 0x64B0 (LUNARLAKE)
[15:19:33] [PASSED] 0xE202 (BATTLEMAGE)
[15:19:33] [PASSED] 0xE209 (BATTLEMAGE)
[15:19:33] [PASSED] 0xE20B (BATTLEMAGE)
[15:19:33] [PASSED] 0xE20C (BATTLEMAGE)
[15:19:33] [PASSED] 0xE20D (BATTLEMAGE)
[15:19:33] [PASSED] 0xE210 (BATTLEMAGE)
[15:19:33] [PASSED] 0xE211 (BATTLEMAGE)
[15:19:33] [PASSED] 0xE212 (BATTLEMAGE)
[15:19:33] [PASSED] 0xE216 (BATTLEMAGE)
[15:19:33] [PASSED] 0xE220 (BATTLEMAGE)
[15:19:33] [PASSED] 0xE221 (BATTLEMAGE)
[15:19:33] [PASSED] 0xE222 (BATTLEMAGE)
[15:19:33] [PASSED] 0xE223 (BATTLEMAGE)
[15:19:33] [PASSED] 0xB080 (PANTHERLAKE)
[15:19:33] [PASSED] 0xB081 (PANTHERLAKE)
[15:19:33] [PASSED] 0xB082 (PANTHERLAKE)
[15:19:33] [PASSED] 0xB083 (PANTHERLAKE)
[15:19:33] [PASSED] 0xB084 (PANTHERLAKE)
[15:19:33] [PASSED] 0xB085 (PANTHERLAKE)
[15:19:33] [PASSED] 0xB086 (PANTHERLAKE)
[15:19:33] [PASSED] 0xB087 (PANTHERLAKE)
[15:19:33] [PASSED] 0xB08F (PANTHERLAKE)
[15:19:33] [PASSED] 0xB090 (PANTHERLAKE)
[15:19:33] [PASSED] 0xB0A0 (PANTHERLAKE)
[15:19:33] [PASSED] 0xB0B0 (PANTHERLAKE)
[15:19:33] [PASSED] 0xFD80 (PANTHERLAKE)
[15:19:33] [PASSED] 0xFD81 (PANTHERLAKE)
[15:19:33] [PASSED] 0xD740 (NOVALAKE_S)
[15:19:33] [PASSED] 0xD741 (NOVALAKE_S)
[15:19:33] [PASSED] 0xD742 (NOVALAKE_S)
[15:19:33] [PASSED] 0xD743 (NOVALAKE_S)
[15:19:33] [PASSED] 0xD744 (NOVALAKE_S)
[15:19:33] [PASSED] 0xD745 (NOVALAKE_S)
[15:19:33] [PASSED] 0x674C (CRESCENTISLAND)
[15:19:33] [PASSED] 0x674D (CRESCENTISLAND)
[15:19:33] [PASSED] 0x674E (CRESCENTISLAND)
[15:19:33] [PASSED] 0x674F (CRESCENTISLAND)
[15:19:33] [PASSED] 0x6750 (CRESCENTISLAND)
[15:19:33] [PASSED] 0xD750 (NOVALAKE_P)
[15:19:33] [PASSED] 0xD751 (NOVALAKE_P)
[15:19:33] [PASSED] 0xD752 (NOVALAKE_P)
[15:19:33] [PASSED] 0xD753 (NOVALAKE_P)
[15:19:33] [PASSED] 0xD754 (NOVALAKE_P)
[15:19:33] [PASSED] 0xD755 (NOVALAKE_P)
[15:19:33] [PASSED] 0xD756 (NOVALAKE_P)
[15:19:33] [PASSED] 0xD757 (NOVALAKE_P)
[15:19:33] [PASSED] 0xD75F (NOVALAKE_P)
[15:19:33] =============== [PASSED] check_platform_desc ===============
[15:19:33] ===================== [PASSED] xe_pci ======================
[15:19:33] =================== xe_rtp (2 subtests) ====================
[15:19:33] =============== xe_rtp_process_to_sr_tests ================
[15:19:33] [PASSED] coalesce-same-reg
[15:19:33] [PASSED] no-match-no-add
[15:19:33] [PASSED] match-or
[15:19:33] [PASSED] match-or-xfail
[15:19:33] [PASSED] no-match-no-add-multiple-rules
[15:19:33] [PASSED] two-regs-two-entries
[15:19:33] [PASSED] clr-one-set-other
[15:19:33] [PASSED] set-field
[15:19:33] [PASSED] conflict-duplicate
[15:19:33] [PASSED] conflict-not-disjoint
[15:19:33] [PASSED] conflict-reg-type
[15:19:33] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[15:19:33] ================== xe_rtp_process_tests ===================
[15:19:33] [PASSED] active1
[15:19:33] [PASSED] active2
[15:19:34] [PASSED] active-inactive
[15:19:34] [PASSED] inactive-active
[15:19:34] [PASSED] inactive-1st_or_active-inactive
[15:19:34] [PASSED] inactive-2nd_or_active-inactive
[15:19:34] [PASSED] inactive-last_or_active-inactive
[15:19:34] [PASSED] inactive-no_or_active-inactive
[15:19:34] ============== [PASSED] xe_rtp_process_tests ===============
[15:19:34] ===================== [PASSED] xe_rtp ======================
[15:19:34] ==================== xe_wa (1 subtest) =====================
[15:19:34] ======================== xe_wa_gt =========================
[15:19:34] [PASSED] TIGERLAKE B0
[15:19:34] [PASSED] DG1 A0
[15:19:34] [PASSED] DG1 B0
[15:19:34] [PASSED] ALDERLAKE_S A0
[15:19:34] [PASSED] ALDERLAKE_S B0
[15:19:34] [PASSED] ALDERLAKE_S C0
[15:19:34] [PASSED] ALDERLAKE_S D0
[15:19:34] [PASSED] ALDERLAKE_P A0
[15:19:34] [PASSED] ALDERLAKE_P B0
[15:19:34] [PASSED] ALDERLAKE_P C0
[15:19:34] [PASSED] ALDERLAKE_S RPLS D0
[15:19:34] [PASSED] ALDERLAKE_P RPLU E0
[15:19:34] [PASSED] DG2 G10 C0
[15:19:34] [PASSED] DG2 G11 B1
[15:19:34] [PASSED] DG2 G12 A1
[15:19:34] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[15:19:34] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[15:19:34] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[15:19:34] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[15:19:34] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[15:19:34] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[15:19:34] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[15:19:34] ==================== [PASSED] xe_wa_gt =====================
[15:19:34] ====================== [PASSED] xe_wa ======================
[15:19:34] ============================================================
[15:19:34] Testing complete. Ran 601 tests: passed: 583, skipped: 18
[15:19:34] Elapsed time: 36.121s total, 4.309s configuring, 31.196s building, 0.610s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[15:19:34] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:19:35] 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
[15:20:00] Starting KUnit Kernel (1/1)...
[15:20:00] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[15:20:00] ============ drm_test_pick_cmdline (2 subtests) ============
[15:20:00] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[15:20:00] =============== drm_test_pick_cmdline_named ===============
[15:20:00] [PASSED] NTSC
[15:20:00] [PASSED] NTSC-J
[15:20:00] [PASSED] PAL
[15:20:00] [PASSED] PAL-M
[15:20:00] =========== [PASSED] drm_test_pick_cmdline_named ===========
[15:20:00] ============== [PASSED] drm_test_pick_cmdline ==============
[15:20:00] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[15:20:00] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[15:20:00] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[15:20:00] =========== drm_validate_clone_mode (2 subtests) ===========
[15:20:00] ============== drm_test_check_in_clone_mode ===============
[15:20:00] [PASSED] in_clone_mode
[15:20:00] [PASSED] not_in_clone_mode
[15:20:00] ========== [PASSED] drm_test_check_in_clone_mode ===========
[15:20:00] =============== drm_test_check_valid_clones ===============
[15:20:00] [PASSED] not_in_clone_mode
[15:20:00] [PASSED] valid_clone
[15:20:00] [PASSED] invalid_clone
[15:20:00] =========== [PASSED] drm_test_check_valid_clones ===========
[15:20:00] ============= [PASSED] drm_validate_clone_mode =============
[15:20:00] ============= drm_validate_modeset (1 subtest) =============
[15:20:00] [PASSED] drm_test_check_connector_changed_modeset
[15:20:00] ============== [PASSED] drm_validate_modeset ===============
[15:20:00] ====== drm_test_bridge_get_current_state (2 subtests) ======
[15:20:00] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[15:20:00] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[15:20:00] ======== [PASSED] drm_test_bridge_get_current_state ========
[15:20:00] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[15:20:00] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[15:20:00] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[15:20:00] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[15:20:00] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[15:20:00] ============== drm_bridge_alloc (2 subtests) ===============
[15:20:00] [PASSED] drm_test_drm_bridge_alloc_basic
[15:20:00] [PASSED] drm_test_drm_bridge_alloc_get_put
[15:20:00] ================ [PASSED] drm_bridge_alloc =================
[15:20:00] ============= drm_cmdline_parser (40 subtests) =============
[15:20:00] [PASSED] drm_test_cmdline_force_d_only
[15:20:00] [PASSED] drm_test_cmdline_force_D_only_dvi
[15:20:00] [PASSED] drm_test_cmdline_force_D_only_hdmi
[15:20:00] [PASSED] drm_test_cmdline_force_D_only_not_digital
[15:20:00] [PASSED] drm_test_cmdline_force_e_only
[15:20:00] [PASSED] drm_test_cmdline_res
[15:20:00] [PASSED] drm_test_cmdline_res_vesa
[15:20:00] [PASSED] drm_test_cmdline_res_vesa_rblank
[15:20:00] [PASSED] drm_test_cmdline_res_rblank
[15:20:00] [PASSED] drm_test_cmdline_res_bpp
[15:20:00] [PASSED] drm_test_cmdline_res_refresh
[15:20:00] [PASSED] drm_test_cmdline_res_bpp_refresh
[15:20:00] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[15:20:00] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[15:20:00] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[15:20:00] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[15:20:00] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[15:20:00] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[15:20:00] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[15:20:00] [PASSED] drm_test_cmdline_res_margins_force_on
[15:20:00] [PASSED] drm_test_cmdline_res_vesa_margins
[15:20:00] [PASSED] drm_test_cmdline_name
[15:20:00] [PASSED] drm_test_cmdline_name_bpp
[15:20:00] [PASSED] drm_test_cmdline_name_option
[15:20:00] [PASSED] drm_test_cmdline_name_bpp_option
[15:20:00] [PASSED] drm_test_cmdline_rotate_0
[15:20:00] [PASSED] drm_test_cmdline_rotate_90
[15:20:00] [PASSED] drm_test_cmdline_rotate_180
[15:20:00] [PASSED] drm_test_cmdline_rotate_270
[15:20:00] [PASSED] drm_test_cmdline_hmirror
[15:20:00] [PASSED] drm_test_cmdline_vmirror
[15:20:00] [PASSED] drm_test_cmdline_margin_options
[15:20:00] [PASSED] drm_test_cmdline_multiple_options
[15:20:00] [PASSED] drm_test_cmdline_bpp_extra_and_option
[15:20:00] [PASSED] drm_test_cmdline_extra_and_option
[15:20:00] [PASSED] drm_test_cmdline_freestanding_options
[15:20:00] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[15:20:00] [PASSED] drm_test_cmdline_panel_orientation
[15:20:00] ================ drm_test_cmdline_invalid =================
[15:20:00] [PASSED] margin_only
[15:20:00] [PASSED] interlace_only
[15:20:00] [PASSED] res_missing_x
[15:20:00] [PASSED] res_missing_y
[15:20:00] [PASSED] res_bad_y
[15:20:00] [PASSED] res_missing_y_bpp
[15:20:00] [PASSED] res_bad_bpp
[15:20:00] [PASSED] res_bad_refresh
[15:20:00] [PASSED] res_bpp_refresh_force_on_off
[15:20:00] [PASSED] res_invalid_mode
[15:20:00] [PASSED] res_bpp_wrong_place_mode
[15:20:00] [PASSED] name_bpp_refresh
[15:20:00] [PASSED] name_refresh
[15:20:00] [PASSED] name_refresh_wrong_mode
[15:20:00] [PASSED] name_refresh_invalid_mode
[15:20:00] [PASSED] rotate_multiple
[15:20:00] [PASSED] rotate_invalid_val
[15:20:00] [PASSED] rotate_truncated
[15:20:00] [PASSED] invalid_option
[15:20:00] [PASSED] invalid_tv_option
[15:20:00] [PASSED] truncated_tv_option
[15:20:00] ============ [PASSED] drm_test_cmdline_invalid =============
[15:20:00] =============== drm_test_cmdline_tv_options ===============
[15:20:00] [PASSED] NTSC
[15:20:00] [PASSED] NTSC_443
[15:20:00] [PASSED] NTSC_J
[15:20:00] [PASSED] PAL
[15:20:00] [PASSED] PAL_M
[15:20:00] [PASSED] PAL_N
[15:20:00] [PASSED] SECAM
[15:20:00] [PASSED] MONO_525
[15:20:00] [PASSED] MONO_625
[15:20:00] =========== [PASSED] drm_test_cmdline_tv_options ===========
[15:20:00] =============== [PASSED] drm_cmdline_parser ================
[15:20:00] ========== drmm_connector_hdmi_init (20 subtests) ==========
[15:20:00] [PASSED] drm_test_connector_hdmi_init_valid
[15:20:00] [PASSED] drm_test_connector_hdmi_init_bpc_8
[15:20:00] [PASSED] drm_test_connector_hdmi_init_bpc_10
[15:20:00] [PASSED] drm_test_connector_hdmi_init_bpc_12
[15:20:00] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[15:20:00] [PASSED] drm_test_connector_hdmi_init_bpc_null
[15:20:00] [PASSED] drm_test_connector_hdmi_init_formats_empty
[15:20:00] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[15:20:00] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[15:20:00] [PASSED] supported_formats=0x9 yuv420_allowed=1
[15:20:00] [PASSED] supported_formats=0x9 yuv420_allowed=0
[15:20:00] [PASSED] supported_formats=0x5 yuv420_allowed=1
[15:20:00] [PASSED] supported_formats=0x5 yuv420_allowed=0
[15:20:00] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[15:20:00] [PASSED] drm_test_connector_hdmi_init_null_ddc
[15:20:00] [PASSED] drm_test_connector_hdmi_init_null_product
[15:20:00] [PASSED] drm_test_connector_hdmi_init_null_vendor
[15:20:00] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[15:20:00] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[15:20:00] [PASSED] drm_test_connector_hdmi_init_product_valid
[15:20:00] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[15:20:00] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[15:20:00] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[15:20:00] ========= drm_test_connector_hdmi_init_type_valid =========
[15:20:00] [PASSED] HDMI-A
[15:20:00] [PASSED] HDMI-B
[15:20:00] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[15:20:00] ======== drm_test_connector_hdmi_init_type_invalid ========
[15:20:00] [PASSED] Unknown
[15:20:00] [PASSED] VGA
[15:20:00] [PASSED] DVI-I
[15:20:00] [PASSED] DVI-D
[15:20:00] [PASSED] DVI-A
[15:20:00] [PASSED] Composite
[15:20:00] [PASSED] SVIDEO
[15:20:00] [PASSED] LVDS
[15:20:00] [PASSED] Component
[15:20:00] [PASSED] DIN
[15:20:00] [PASSED] DP
[15:20:00] [PASSED] TV
[15:20:00] [PASSED] eDP
[15:20:00] [PASSED] Virtual
[15:20:00] [PASSED] DSI
[15:20:00] [PASSED] DPI
[15:20:00] [PASSED] Writeback
[15:20:00] [PASSED] SPI
[15:20:00] [PASSED] USB
[15:20:00] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[15:20:00] ============ [PASSED] drmm_connector_hdmi_init =============
[15:20:00] ============= drmm_connector_init (3 subtests) =============
[15:20:00] [PASSED] drm_test_drmm_connector_init
[15:20:00] [PASSED] drm_test_drmm_connector_init_null_ddc
[15:20:00] ========= drm_test_drmm_connector_init_type_valid =========
[15:20:00] [PASSED] Unknown
[15:20:00] [PASSED] VGA
[15:20:00] [PASSED] DVI-I
[15:20:00] [PASSED] DVI-D
[15:20:00] [PASSED] DVI-A
[15:20:00] [PASSED] Composite
[15:20:00] [PASSED] SVIDEO
[15:20:00] [PASSED] LVDS
[15:20:00] [PASSED] Component
[15:20:00] [PASSED] DIN
[15:20:00] [PASSED] DP
[15:20:00] [PASSED] HDMI-A
[15:20:00] [PASSED] HDMI-B
[15:20:00] [PASSED] TV
[15:20:00] [PASSED] eDP
[15:20:00] [PASSED] Virtual
[15:20:00] [PASSED] DSI
[15:20:00] [PASSED] DPI
[15:20:00] [PASSED] Writeback
[15:20:00] [PASSED] SPI
[15:20:00] [PASSED] USB
[15:20:00] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[15:20:00] =============== [PASSED] drmm_connector_init ===============
[15:20:00] ========= drm_connector_dynamic_init (6 subtests) ==========
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_init
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_init_properties
[15:20:00] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[15:20:00] [PASSED] Unknown
[15:20:00] [PASSED] VGA
[15:20:00] [PASSED] DVI-I
[15:20:00] [PASSED] DVI-D
[15:20:00] [PASSED] DVI-A
[15:20:00] [PASSED] Composite
[15:20:00] [PASSED] SVIDEO
[15:20:00] [PASSED] LVDS
[15:20:00] [PASSED] Component
[15:20:00] [PASSED] DIN
[15:20:00] [PASSED] DP
[15:20:00] [PASSED] HDMI-A
[15:20:00] [PASSED] HDMI-B
[15:20:00] [PASSED] TV
[15:20:00] [PASSED] eDP
[15:20:00] [PASSED] Virtual
[15:20:00] [PASSED] DSI
[15:20:00] [PASSED] DPI
[15:20:00] [PASSED] Writeback
[15:20:00] [PASSED] SPI
[15:20:00] [PASSED] USB
[15:20:00] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[15:20:00] ======== drm_test_drm_connector_dynamic_init_name =========
[15:20:00] [PASSED] Unknown
[15:20:00] [PASSED] VGA
[15:20:00] [PASSED] DVI-I
[15:20:00] [PASSED] DVI-D
[15:20:00] [PASSED] DVI-A
[15:20:00] [PASSED] Composite
[15:20:00] [PASSED] SVIDEO
[15:20:00] [PASSED] LVDS
[15:20:00] [PASSED] Component
[15:20:00] [PASSED] DIN
[15:20:00] [PASSED] DP
[15:20:00] [PASSED] HDMI-A
[15:20:00] [PASSED] HDMI-B
[15:20:00] [PASSED] TV
[15:20:00] [PASSED] eDP
[15:20:00] [PASSED] Virtual
[15:20:00] [PASSED] DSI
[15:20:00] [PASSED] DPI
[15:20:00] [PASSED] Writeback
[15:20:00] [PASSED] SPI
[15:20:00] [PASSED] USB
[15:20:00] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[15:20:00] =========== [PASSED] drm_connector_dynamic_init ============
[15:20:00] ==== drm_connector_dynamic_register_early (4 subtests) =====
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[15:20:00] ====== [PASSED] drm_connector_dynamic_register_early =======
[15:20:00] ======= drm_connector_dynamic_register (7 subtests) ========
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[15:20:00] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[15:20:00] ========= [PASSED] drm_connector_dynamic_register ==========
[15:20:00] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[15:20:00] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[15:20:00] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[15:20:00] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[15:20:00] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[15:20:00] ========== drm_test_get_tv_mode_from_name_valid ===========
[15:20:00] [PASSED] NTSC
[15:20:00] [PASSED] NTSC-443
[15:20:00] [PASSED] NTSC-J
[15:20:00] [PASSED] PAL
[15:20:00] [PASSED] PAL-M
[15:20:00] [PASSED] PAL-N
[15:20:00] [PASSED] SECAM
[15:20:00] [PASSED] Mono
[15:20:00] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[15:20:00] [PASSED] drm_test_get_tv_mode_from_name_truncated
[15:20:00] ============ [PASSED] drm_get_tv_mode_from_name ============
[15:20:00] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[15:20:00] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[15:20:00] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[15:20:00] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[15:20:00] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[15:20:00] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[15:20:00] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[15:20:00] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[15:20:00] [PASSED] VIC 96
[15:20:00] [PASSED] VIC 97
[15:20:00] [PASSED] VIC 101
[15:20:00] [PASSED] VIC 102
[15:20:00] [PASSED] VIC 106
[15:20:00] [PASSED] VIC 107
[15:20:00] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[15:20:00] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[15:20:00] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[15:20:00] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[15:20:00] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[15:20:00] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[15:20:00] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[15:20:00] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[15:20:00] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[15:20:00] [PASSED] Automatic
[15:20:00] [PASSED] Full
[15:20:00] [PASSED] Limited 16:235
[15:20:00] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[15:20:00] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[15:20:00] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[15:20:00] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[15:20:00] === drm_test_drm_hdmi_connector_get_output_format_name ====
[15:20:00] [PASSED] RGB
[15:20:00] [PASSED] YUV 4:2:0
[15:20:00] [PASSED] YUV 4:2:2
[15:20:00] [PASSED] YUV 4:4:4
[15:20:00] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[15:20:00] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[15:20:00] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[15:20:00] ============= drm_damage_helper (21 subtests) ==============
[15:20:00] [PASSED] drm_test_damage_iter_no_damage
[15:20:00] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[15:20:00] [PASSED] drm_test_damage_iter_no_damage_src_moved
[15:20:00] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[15:20:00] [PASSED] drm_test_damage_iter_no_damage_not_visible
[15:20:00] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[15:20:00] [PASSED] drm_test_damage_iter_no_damage_no_fb
[15:20:00] [PASSED] drm_test_damage_iter_simple_damage
[15:20:00] [PASSED] drm_test_damage_iter_single_damage
[15:20:00] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[15:20:00] [PASSED] drm_test_damage_iter_single_damage_outside_src
[15:20:00] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[15:20:00] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[15:20:00] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[15:20:00] [PASSED] drm_test_damage_iter_single_damage_src_moved
[15:20:00] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[15:20:00] [PASSED] drm_test_damage_iter_damage
[15:20:00] [PASSED] drm_test_damage_iter_damage_one_intersect
[15:20:00] [PASSED] drm_test_damage_iter_damage_one_outside
[15:20:00] [PASSED] drm_test_damage_iter_damage_src_moved
[15:20:00] [PASSED] drm_test_damage_iter_damage_not_visible
[15:20:00] ================ [PASSED] drm_damage_helper ================
[15:20:00] ============== drm_dp_mst_helper (3 subtests) ==============
[15:20:00] ============== drm_test_dp_mst_calc_pbn_mode ==============
[15:20:00] [PASSED] Clock 154000 BPP 30 DSC disabled
[15:20:00] [PASSED] Clock 234000 BPP 30 DSC disabled
[15:20:00] [PASSED] Clock 297000 BPP 24 DSC disabled
[15:20:00] [PASSED] Clock 332880 BPP 24 DSC enabled
[15:20:00] [PASSED] Clock 324540 BPP 24 DSC enabled
[15:20:00] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[15:20:00] ============== drm_test_dp_mst_calc_pbn_div ===============
[15:20:00] [PASSED] Link rate 2000000 lane count 4
[15:20:00] [PASSED] Link rate 2000000 lane count 2
[15:20:00] [PASSED] Link rate 2000000 lane count 1
[15:20:00] [PASSED] Link rate 1350000 lane count 4
[15:20:00] [PASSED] Link rate 1350000 lane count 2
[15:20:00] [PASSED] Link rate 1350000 lane count 1
[15:20:00] [PASSED] Link rate 1000000 lane count 4
[15:20:00] [PASSED] Link rate 1000000 lane count 2
[15:20:00] [PASSED] Link rate 1000000 lane count 1
[15:20:00] [PASSED] Link rate 810000 lane count 4
[15:20:00] [PASSED] Link rate 810000 lane count 2
[15:20:00] [PASSED] Link rate 810000 lane count 1
[15:20:00] [PASSED] Link rate 540000 lane count 4
[15:20:00] [PASSED] Link rate 540000 lane count 2
[15:20:00] [PASSED] Link rate 540000 lane count 1
[15:20:00] [PASSED] Link rate 270000 lane count 4
[15:20:00] [PASSED] Link rate 270000 lane count 2
[15:20:00] [PASSED] Link rate 270000 lane count 1
[15:20:00] [PASSED] Link rate 162000 lane count 4
[15:20:00] [PASSED] Link rate 162000 lane count 2
[15:20:00] [PASSED] Link rate 162000 lane count 1
[15:20:00] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[15:20:00] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[15:20:00] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[15:20:00] [PASSED] DP_POWER_UP_PHY with port number
[15:20:00] [PASSED] DP_POWER_DOWN_PHY with port number
[15:20:00] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[15:20:00] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[15:20:00] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[15:20:00] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[15:20:00] [PASSED] DP_QUERY_PAYLOAD with port number
[15:20:00] [PASSED] DP_QUERY_PAYLOAD with VCPI
[15:20:00] [PASSED] DP_REMOTE_DPCD_READ with port number
[15:20:00] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[15:20:00] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[15:20:00] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[15:20:00] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[15:20:00] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[15:20:00] [PASSED] DP_REMOTE_I2C_READ with port number
[15:20:00] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[15:20:00] [PASSED] DP_REMOTE_I2C_READ with transactions array
[15:20:00] [PASSED] DP_REMOTE_I2C_WRITE with port number
[15:20:00] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[15:20:00] [PASSED] DP_REMOTE_I2C_WRITE with data array
[15:20:00] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[15:20:00] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[15:20:00] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[15:20:00] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[15:20:00] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[15:20:00] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[15:20:00] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[15:20:00] ================ [PASSED] drm_dp_mst_helper ================
[15:20:00] ================== drm_exec (7 subtests) ===================
[15:20:00] [PASSED] sanitycheck
[15:20:00] [PASSED] test_lock
[15:20:00] [PASSED] test_lock_unlock
[15:20:00] [PASSED] test_duplicates
[15:20:00] [PASSED] test_prepare
[15:20:00] [PASSED] test_prepare_array
[15:20:00] [PASSED] test_multiple_loops
[15:20:00] ==================== [PASSED] drm_exec =====================
[15:20:00] =========== drm_format_helper_test (17 subtests) ===========
[15:20:00] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[15:20:00] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[15:20:00] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[15:20:00] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[15:20:00] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[15:20:00] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[15:20:00] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[15:20:00] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[15:20:00] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[15:20:00] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[15:20:00] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[15:20:00] ============== drm_test_fb_xrgb8888_to_mono ===============
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[15:20:00] ==================== drm_test_fb_swab =====================
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ================ [PASSED] drm_test_fb_swab =================
[15:20:00] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[15:20:00] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[15:20:00] [PASSED] single_pixel_source_buffer
[15:20:00] [PASSED] single_pixel_clip_rectangle
[15:20:00] [PASSED] well_known_colors
[15:20:00] [PASSED] destination_pitch
[15:20:00] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[15:20:00] ================= drm_test_fb_clip_offset =================
[15:20:00] [PASSED] pass through
[15:20:00] [PASSED] horizontal offset
[15:20:00] [PASSED] vertical offset
[15:20:00] [PASSED] horizontal and vertical offset
[15:20:00] [PASSED] horizontal offset (custom pitch)
[15:20:00] [PASSED] vertical offset (custom pitch)
[15:20:00] [PASSED] horizontal and vertical offset (custom pitch)
[15:20:00] ============= [PASSED] drm_test_fb_clip_offset =============
[15:20:00] =================== drm_test_fb_memcpy ====================
[15:20:00] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[15:20:00] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[15:20:00] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[15:20:00] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[15:20:00] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[15:20:00] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[15:20:00] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[15:20:00] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[15:20:00] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[15:20:00] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[15:20:00] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[15:20:00] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[15:20:00] =============== [PASSED] drm_test_fb_memcpy ================
[15:20:00] ============= [PASSED] drm_format_helper_test ==============
[15:20:00] ================= drm_format (18 subtests) =================
[15:20:00] [PASSED] drm_test_format_block_width_invalid
[15:20:00] [PASSED] drm_test_format_block_width_one_plane
[15:20:00] [PASSED] drm_test_format_block_width_two_plane
[15:20:00] [PASSED] drm_test_format_block_width_three_plane
[15:20:00] [PASSED] drm_test_format_block_width_tiled
[15:20:00] [PASSED] drm_test_format_block_height_invalid
[15:20:00] [PASSED] drm_test_format_block_height_one_plane
[15:20:00] [PASSED] drm_test_format_block_height_two_plane
[15:20:00] [PASSED] drm_test_format_block_height_three_plane
[15:20:00] [PASSED] drm_test_format_block_height_tiled
[15:20:00] [PASSED] drm_test_format_min_pitch_invalid
[15:20:00] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[15:20:00] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[15:20:00] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[15:20:00] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[15:20:00] [PASSED] drm_test_format_min_pitch_two_plane
[15:20:00] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[15:20:00] [PASSED] drm_test_format_min_pitch_tiled
[15:20:00] =================== [PASSED] drm_format ====================
[15:20:00] ============== drm_framebuffer (10 subtests) ===============
[15:20:00] ========== drm_test_framebuffer_check_src_coords ==========
[15:20:00] [PASSED] Success: source fits into fb
[15:20:00] [PASSED] Fail: overflowing fb with x-axis coordinate
[15:20:00] [PASSED] Fail: overflowing fb with y-axis coordinate
[15:20:00] [PASSED] Fail: overflowing fb with source width
[15:20:00] [PASSED] Fail: overflowing fb with source height
[15:20:00] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[15:20:00] [PASSED] drm_test_framebuffer_cleanup
[15:20:00] =============== drm_test_framebuffer_create ===============
[15:20:00] [PASSED] ABGR8888 normal sizes
[15:20:00] [PASSED] ABGR8888 max sizes
[15:20:00] [PASSED] ABGR8888 pitch greater than min required
[15:20:00] [PASSED] ABGR8888 pitch less than min required
[15:20:00] [PASSED] ABGR8888 Invalid width
[15:20:00] [PASSED] ABGR8888 Invalid buffer handle
[15:20:00] [PASSED] No pixel format
[15:20:00] [PASSED] ABGR8888 Width 0
[15:20:00] [PASSED] ABGR8888 Height 0
[15:20:00] [PASSED] ABGR8888 Out of bound height * pitch combination
[15:20:00] [PASSED] ABGR8888 Large buffer offset
[15:20:00] [PASSED] ABGR8888 Buffer offset for inexistent plane
[15:20:00] [PASSED] ABGR8888 Invalid flag
[15:20:00] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[15:20:00] [PASSED] ABGR8888 Valid buffer modifier
[15:20:00] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[15:20:00] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[15:20:00] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[15:20:00] [PASSED] NV12 Normal sizes
[15:20:00] [PASSED] NV12 Max sizes
[15:20:00] [PASSED] NV12 Invalid pitch
[15:20:00] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[15:20:00] [PASSED] NV12 different modifier per-plane
[15:20:00] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[15:20:00] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[15:20:00] [PASSED] NV12 Modifier for inexistent plane
[15:20:00] [PASSED] NV12 Handle for inexistent plane
[15:20:00] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[15:20:00] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[15:20:00] [PASSED] YVU420 Normal sizes
[15:20:00] [PASSED] YVU420 Max sizes
[15:20:00] [PASSED] YVU420 Invalid pitch
[15:20:00] [PASSED] YVU420 Different pitches
[15:20:00] [PASSED] YVU420 Different buffer offsets/pitches
[15:20:00] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[15:20:00] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[15:20:00] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[15:20:00] [PASSED] YVU420 Valid modifier
[15:20:00] [PASSED] YVU420 Different modifiers per plane
[15:20:00] [PASSED] YVU420 Modifier for inexistent plane
[15:20:00] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[15:20:00] [PASSED] X0L2 Normal sizes
[15:20:00] [PASSED] X0L2 Max sizes
[15:20:00] [PASSED] X0L2 Invalid pitch
[15:20:00] [PASSED] X0L2 Pitch greater than minimum required
[15:20:00] [PASSED] X0L2 Handle for inexistent plane
[15:20:00] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[15:20:00] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[15:20:00] [PASSED] X0L2 Valid modifier
[15:20:00] [PASSED] X0L2 Modifier for inexistent plane
[15:20:00] =========== [PASSED] drm_test_framebuffer_create ===========
[15:20:00] [PASSED] drm_test_framebuffer_free
[15:20:00] [PASSED] drm_test_framebuffer_init
[15:20:00] [PASSED] drm_test_framebuffer_init_bad_format
[15:20:00] [PASSED] drm_test_framebuffer_init_dev_mismatch
[15:20:00] [PASSED] drm_test_framebuffer_lookup
[15:20:00] [PASSED] drm_test_framebuffer_lookup_inexistent
[15:20:00] [PASSED] drm_test_framebuffer_modifiers_not_supported
[15:20:00] ================= [PASSED] drm_framebuffer =================
[15:20:00] ================ drm_gem_shmem (8 subtests) ================
[15:20:00] [PASSED] drm_gem_shmem_test_obj_create
[15:20:00] [PASSED] drm_gem_shmem_test_obj_create_private
[15:20:00] [PASSED] drm_gem_shmem_test_pin_pages
[15:20:00] [PASSED] drm_gem_shmem_test_vmap
[15:20:00] [PASSED] drm_gem_shmem_test_get_sg_table
[15:20:00] [PASSED] drm_gem_shmem_test_get_pages_sgt
[15:20:00] [PASSED] drm_gem_shmem_test_madvise
[15:20:00] [PASSED] drm_gem_shmem_test_purge
[15:20:00] ================== [PASSED] drm_gem_shmem ==================
[15:20:00] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[15:20:00] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[15:20:00] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[15:20:00] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[15:20:00] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[15:20:00] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[15:20:00] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[15:20:00] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[15:20:00] [PASSED] Automatic
[15:20:00] [PASSED] Full
[15:20:00] [PASSED] Limited 16:235
[15:20:00] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[15:20:00] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[15:20:00] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[15:20:00] [PASSED] drm_test_check_disable_connector
[15:20:00] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[15:20:00] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[15:20:00] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[15:20:00] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[15:20:00] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[15:20:00] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[15:20:00] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[15:20:00] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[15:20:00] [PASSED] drm_test_check_output_bpc_dvi
[15:20:00] [PASSED] drm_test_check_output_bpc_format_vic_1
[15:20:00] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[15:20:00] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[15:20:00] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[15:20:00] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[15:20:00] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[15:20:00] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[15:20:00] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[15:20:00] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[15:20:00] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[15:20:00] [PASSED] drm_test_check_broadcast_rgb_value
[15:20:00] [PASSED] drm_test_check_bpc_8_value
[15:20:00] [PASSED] drm_test_check_bpc_10_value
[15:20:00] [PASSED] drm_test_check_bpc_12_value
[15:20:00] [PASSED] drm_test_check_format_value
[15:20:00] [PASSED] drm_test_check_tmds_char_value
[15:20:00] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[15:20:00] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[15:20:00] [PASSED] drm_test_check_mode_valid
[15:20:00] [PASSED] drm_test_check_mode_valid_reject
[15:20:00] [PASSED] drm_test_check_mode_valid_reject_rate
[15:20:00] [PASSED] drm_test_check_mode_valid_reject_max_clock
[15:20:00] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[15:20:00] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[15:20:00] [PASSED] drm_test_check_infoframes
[15:20:00] [PASSED] drm_test_check_reject_avi_infoframe
[15:20:00] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[15:20:00] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[15:20:00] [PASSED] drm_test_check_reject_audio_infoframe
[15:20:00] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[15:20:00] ================= drm_managed (2 subtests) =================
[15:20:00] [PASSED] drm_test_managed_release_action
[15:20:00] [PASSED] drm_test_managed_run_action
[15:20:00] =================== [PASSED] drm_managed ===================
[15:20:00] =================== drm_mm (6 subtests) ====================
[15:20:00] [PASSED] drm_test_mm_init
[15:20:00] [PASSED] drm_test_mm_debug
[15:20:00] [PASSED] drm_test_mm_align32
[15:20:00] [PASSED] drm_test_mm_align64
[15:20:00] [PASSED] drm_test_mm_lowest
[15:20:00] [PASSED] drm_test_mm_highest
[15:20:00] ===================== [PASSED] drm_mm ======================
[15:20:00] ============= drm_modes_analog_tv (5 subtests) =============
[15:20:00] [PASSED] drm_test_modes_analog_tv_mono_576i
[15:20:00] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[15:20:00] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[15:20:00] [PASSED] drm_test_modes_analog_tv_pal_576i
[15:20:00] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[15:20:00] =============== [PASSED] drm_modes_analog_tv ===============
[15:20:00] ============== drm_plane_helper (2 subtests) ===============
[15:20:00] =============== drm_test_check_plane_state ================
[15:20:00] [PASSED] clipping_simple
[15:20:00] [PASSED] clipping_rotate_reflect
[15:20:00] [PASSED] positioning_simple
[15:20:00] [PASSED] upscaling
[15:20:00] [PASSED] downscaling
[15:20:00] [PASSED] rounding1
[15:20:00] [PASSED] rounding2
[15:20:00] [PASSED] rounding3
[15:20:00] [PASSED] rounding4
[15:20:00] =========== [PASSED] drm_test_check_plane_state ============
[15:20:00] =========== drm_test_check_invalid_plane_state ============
[15:20:00] [PASSED] positioning_invalid
[15:20:00] [PASSED] upscaling_invalid
[15:20:00] [PASSED] downscaling_invalid
[15:20:00] ======= [PASSED] drm_test_check_invalid_plane_state ========
[15:20:00] ================ [PASSED] drm_plane_helper =================
[15:20:00] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[15:20:00] ====== drm_test_connector_helper_tv_get_modes_check =======
[15:20:00] [PASSED] None
[15:20:00] [PASSED] PAL
[15:20:00] [PASSED] NTSC
[15:20:00] [PASSED] Both, NTSC Default
[15:20:00] [PASSED] Both, PAL Default
[15:20:00] [PASSED] Both, NTSC Default, with PAL on command-line
[15:20:00] [PASSED] Both, PAL Default, with NTSC on command-line
[15:20:00] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[15:20:00] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[15:20:00] ================== drm_rect (9 subtests) ===================
[15:20:00] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[15:20:00] [PASSED] drm_test_rect_clip_scaled_not_clipped
[15:20:00] [PASSED] drm_test_rect_clip_scaled_clipped
[15:20:00] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[15:20:00] ================= drm_test_rect_intersect =================
[15:20:00] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[15:20:00] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[15:20:00] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[15:20:00] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[15:20:00] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[15:20:00] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[15:20:00] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[15:20:00] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[15:20:00] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[15:20:00] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[15:20:00] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[15:20:00] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[15:20:00] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[15:20:00] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[15:20:00] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[15:20:00] ============= [PASSED] drm_test_rect_intersect =============
[15:20:00] ================ drm_test_rect_calc_hscale ================
[15:20:00] [PASSED] normal use
[15:20:00] [PASSED] out of max range
[15:20:00] [PASSED] out of min range
[15:20:00] [PASSED] zero dst
[15:20:00] [PASSED] negative src
[15:20:00] [PASSED] negative dst
[15:20:00] ============ [PASSED] drm_test_rect_calc_hscale ============
[15:20:00] ================ drm_test_rect_calc_vscale ================
[15:20:00] [PASSED] normal use
[15:20:00] [PASSED] out of max range
[15:20:00] [PASSED] out of min range
[15:20:00] [PASSED] zero dst
[15:20:00] [PASSED] negative src
[15:20:00] [PASSED] negative dst
[15:20:00] ============ [PASSED] drm_test_rect_calc_vscale ============
[15:20:00] ================== drm_test_rect_rotate ===================
[15:20:00] [PASSED] reflect-x
[15:20:00] [PASSED] reflect-y
[15:20:00] [PASSED] rotate-0
[15:20:00] [PASSED] rotate-90
[15:20:00] [PASSED] rotate-180
[15:20:00] [PASSED] rotate-270
[15:20:00] ============== [PASSED] drm_test_rect_rotate ===============
[15:20:00] ================ drm_test_rect_rotate_inv =================
[15:20:00] [PASSED] reflect-x
[15:20:00] [PASSED] reflect-y
[15:20:00] [PASSED] rotate-0
[15:20:00] [PASSED] rotate-90
[15:20:00] [PASSED] rotate-180
[15:20:00] [PASSED] rotate-270
[15:20:00] ============ [PASSED] drm_test_rect_rotate_inv =============
[15:20:00] ==================== [PASSED] drm_rect =====================
[15:20:00] ============ drm_sysfb_modeset_test (1 subtest) ============
[15:20:00] ============ drm_test_sysfb_build_fourcc_list =============
[15:20:00] [PASSED] no native formats
[15:20:00] [PASSED] XRGB8888 as native format
[15:20:00] [PASSED] remove duplicates
[15:20:00] [PASSED] convert alpha formats
[15:20:00] [PASSED] random formats
[15:20:00] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[15:20:00] ============= [PASSED] drm_sysfb_modeset_test ==============
[15:20:00] ================== drm_fixp (2 subtests) ===================
[15:20:00] [PASSED] drm_test_int2fixp
[15:20:00] [PASSED] drm_test_sm2fixp
[15:20:00] ==================== [PASSED] drm_fixp =====================
[15:20:00] ============================================================
[15:20:00] Testing complete. Ran 621 tests: passed: 621
[15:20:00] Elapsed time: 26.157s total, 1.766s configuring, 24.220s building, 0.136s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[15:20:00] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[15:20:02] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[15:20:11] Starting KUnit Kernel (1/1)...
[15:20:11] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[15:20:11] ================= ttm_device (5 subtests) ==================
[15:20:11] [PASSED] ttm_device_init_basic
[15:20:11] [PASSED] ttm_device_init_multiple
[15:20:11] [PASSED] ttm_device_fini_basic
[15:20:11] [PASSED] ttm_device_init_no_vma_man
[15:20:11] ================== ttm_device_init_pools ==================
[15:20:11] [PASSED] No DMA allocations, no DMA32 required
[15:20:11] [PASSED] DMA allocations, DMA32 required
[15:20:11] [PASSED] No DMA allocations, DMA32 required
[15:20:11] [PASSED] DMA allocations, no DMA32 required
[15:20:11] ============== [PASSED] ttm_device_init_pools ==============
[15:20:11] =================== [PASSED] ttm_device ====================
[15:20:11] ================== ttm_pool (8 subtests) ===================
[15:20:11] ================== ttm_pool_alloc_basic ===================
[15:20:11] [PASSED] One page
[15:20:11] [PASSED] More than one page
[15:20:11] [PASSED] Above the allocation limit
[15:20:11] [PASSED] One page, with coherent DMA mappings enabled
[15:20:11] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[15:20:11] ============== [PASSED] ttm_pool_alloc_basic ===============
[15:20:11] ============== ttm_pool_alloc_basic_dma_addr ==============
[15:20:11] [PASSED] One page
[15:20:11] [PASSED] More than one page
[15:20:11] [PASSED] Above the allocation limit
[15:20:11] [PASSED] One page, with coherent DMA mappings enabled
[15:20:11] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[15:20:11] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[15:20:11] [PASSED] ttm_pool_alloc_order_caching_match
[15:20:11] [PASSED] ttm_pool_alloc_caching_mismatch
[15:20:11] [PASSED] ttm_pool_alloc_order_mismatch
[15:20:11] [PASSED] ttm_pool_free_dma_alloc
[15:20:11] [PASSED] ttm_pool_free_no_dma_alloc
[15:20:11] [PASSED] ttm_pool_fini_basic
[15:20:11] ==================== [PASSED] ttm_pool =====================
[15:20:11] ================ ttm_resource (8 subtests) =================
[15:20:11] ================= ttm_resource_init_basic =================
[15:20:11] [PASSED] Init resource in TTM_PL_SYSTEM
[15:20:11] [PASSED] Init resource in TTM_PL_VRAM
[15:20:11] [PASSED] Init resource in a private placement
[15:20:11] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[15:20:11] ============= [PASSED] ttm_resource_init_basic =============
[15:20:11] [PASSED] ttm_resource_init_pinned
[15:20:11] [PASSED] ttm_resource_fini_basic
[15:20:11] [PASSED] ttm_resource_manager_init_basic
[15:20:11] [PASSED] ttm_resource_manager_usage_basic
[15:20:11] [PASSED] ttm_resource_manager_set_used_basic
[15:20:11] [PASSED] ttm_sys_man_alloc_basic
[15:20:11] [PASSED] ttm_sys_man_free_basic
[15:20:11] ================== [PASSED] ttm_resource ===================
[15:20:11] =================== ttm_tt (15 subtests) ===================
[15:20:11] ==================== ttm_tt_init_basic ====================
[15:20:11] [PASSED] Page-aligned size
[15:20:11] [PASSED] Extra pages requested
[15:20:11] ================ [PASSED] ttm_tt_init_basic ================
[15:20:11] [PASSED] ttm_tt_init_misaligned
[15:20:11] [PASSED] ttm_tt_fini_basic
[15:20:11] [PASSED] ttm_tt_fini_sg
[15:20:11] [PASSED] ttm_tt_fini_shmem
[15:20:11] [PASSED] ttm_tt_create_basic
[15:20:11] [PASSED] ttm_tt_create_invalid_bo_type
[15:20:11] [PASSED] ttm_tt_create_ttm_exists
[15:20:11] [PASSED] ttm_tt_create_failed
[15:20:11] [PASSED] ttm_tt_destroy_basic
[15:20:11] [PASSED] ttm_tt_populate_null_ttm
[15:20:11] [PASSED] ttm_tt_populate_populated_ttm
[15:20:11] [PASSED] ttm_tt_unpopulate_basic
[15:20:11] [PASSED] ttm_tt_unpopulate_empty_ttm
[15:20:11] [PASSED] ttm_tt_swapin_basic
[15:20:11] ===================== [PASSED] ttm_tt ======================
[15:20:11] =================== ttm_bo (14 subtests) ===================
[15:20:11] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[15:20:11] [PASSED] Cannot be interrupted and sleeps
[15:20:11] [PASSED] Cannot be interrupted, locks straight away
[15:20:11] [PASSED] Can be interrupted, sleeps
[15:20:11] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[15:20:11] [PASSED] ttm_bo_reserve_locked_no_sleep
[15:20:11] [PASSED] ttm_bo_reserve_no_wait_ticket
[15:20:11] [PASSED] ttm_bo_reserve_double_resv
[15:20:11] [PASSED] ttm_bo_reserve_interrupted
[15:20:11] [PASSED] ttm_bo_reserve_deadlock
[15:20:11] [PASSED] ttm_bo_unreserve_basic
[15:20:11] [PASSED] ttm_bo_unreserve_pinned
[15:20:11] [PASSED] ttm_bo_unreserve_bulk
[15:20:11] [PASSED] ttm_bo_fini_basic
[15:20:11] [PASSED] ttm_bo_fini_shared_resv
[15:20:11] [PASSED] ttm_bo_pin_basic
[15:20:11] [PASSED] ttm_bo_pin_unpin_resource
[15:20:11] [PASSED] ttm_bo_multiple_pin_one_unpin
[15:20:11] ===================== [PASSED] ttm_bo ======================
[15:20:11] ============== ttm_bo_validate (22 subtests) ===============
[15:20:11] ============== ttm_bo_init_reserved_sys_man ===============
[15:20:11] [PASSED] Buffer object for userspace
[15:20:11] [PASSED] Kernel buffer object
[15:20:11] [PASSED] Shared buffer object
[15:20:11] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[15:20:11] ============== ttm_bo_init_reserved_mock_man ==============
[15:20:11] [PASSED] Buffer object for userspace
[15:20:11] [PASSED] Kernel buffer object
[15:20:11] [PASSED] Shared buffer object
[15:20:11] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[15:20:11] [PASSED] ttm_bo_init_reserved_resv
[15:20:11] ================== ttm_bo_validate_basic ==================
[15:20:11] [PASSED] Buffer object for userspace
[15:20:11] [PASSED] Kernel buffer object
[15:20:11] [PASSED] Shared buffer object
[15:20:11] ============== [PASSED] ttm_bo_validate_basic ==============
[15:20:11] [PASSED] ttm_bo_validate_invalid_placement
[15:20:11] ============= ttm_bo_validate_same_placement ==============
[15:20:11] [PASSED] System manager
[15:20:11] [PASSED] VRAM manager
[15:20:11] ========= [PASSED] ttm_bo_validate_same_placement ==========
[15:20:11] [PASSED] ttm_bo_validate_failed_alloc
[15:20:11] [PASSED] ttm_bo_validate_pinned
[15:20:11] [PASSED] ttm_bo_validate_busy_placement
[15:20:11] ================ ttm_bo_validate_multihop =================
[15:20:11] [PASSED] Buffer object for userspace
[15:20:11] [PASSED] Kernel buffer object
[15:20:11] [PASSED] Shared buffer object
[15:20:11] ============ [PASSED] ttm_bo_validate_multihop =============
[15:20:11] ========== ttm_bo_validate_no_placement_signaled ==========
[15:20:11] [PASSED] Buffer object in system domain, no page vector
[15:20:11] [PASSED] Buffer object in system domain with an existing page vector
[15:20:11] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[15:20:11] ======== ttm_bo_validate_no_placement_not_signaled ========
[15:20:11] [PASSED] Buffer object for userspace
[15:20:11] [PASSED] Kernel buffer object
[15:20:11] [PASSED] Shared buffer object
[15:20:11] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[15:20:11] [PASSED] ttm_bo_validate_move_fence_signaled
[15:20:11] ========= ttm_bo_validate_move_fence_not_signaled =========
[15:20:11] [PASSED] Waits for GPU
[15:20:11] [PASSED] Tries to lock straight away
[15:20:11] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[15:20:11] [PASSED] ttm_bo_validate_swapout
[15:20:11] [PASSED] ttm_bo_validate_happy_evict
[15:20:11] [PASSED] ttm_bo_validate_all_pinned_evict
[15:20:11] [PASSED] ttm_bo_validate_allowed_only_evict
[15:20:11] [PASSED] ttm_bo_validate_deleted_evict
[15:20:11] [PASSED] ttm_bo_validate_busy_domain_evict
[15:20:11] [PASSED] ttm_bo_validate_evict_gutting
[15:20:11] [PASSED] ttm_bo_validate_recrusive_evict
[15:20:11] ================= [PASSED] ttm_bo_validate =================
[15:20:11] ============================================================
[15:20:11] Testing complete. Ran 102 tests: passed: 102
[15:20:11] Elapsed time: 11.569s total, 1.750s configuring, 9.554s building, 0.217s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 17+ messages in thread* ✓ Xe.CI.BAT: success for driver core: remove software node from platform devices on device release (rev2)
2026-05-12 11:59 [PATCH v5 0/7] driver core: remove software node from platform devices on device release Bartosz Golaszewski
` (9 preceding siblings ...)
2026-05-13 15:20 ` ✓ CI.KUnit: success " Patchwork
@ 2026-05-13 16:36 ` Patchwork
10 siblings, 0 replies; 17+ messages in thread
From: Patchwork @ 2026-05-13 16:36 UTC (permalink / raw)
To: Bartosz Golaszewski; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 994 bytes --]
== Series Details ==
Series: driver core: remove software node from platform devices on device release (rev2)
URL : https://patchwork.freedesktop.org/series/166515/
State : success
== Summary ==
CI Bug Log - changes from xe-5057-fac83f02a1733658723f3ac8fbb5532bcf3c56bf_BAT -> xe-pw-166515v2_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 13)
------------------------------
No changes in participating hosts
Changes
-------
No changes found
Build changes
-------------
* Linux: xe-5057-fac83f02a1733658723f3ac8fbb5532bcf3c56bf -> xe-pw-166515v2
IGT_8909: e68d82b442e3909dd053c97542aeb029707124cf @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5057-fac83f02a1733658723f3ac8fbb5532bcf3c56bf: fac83f02a1733658723f3ac8fbb5532bcf3c56bf
xe-pw-166515v2: 166515v2
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-166515v2/index.html
[-- Attachment #2: Type: text/html, Size: 1542 bytes --]
^ permalink raw reply [flat|nested] 17+ messages in thread