* [PATCH v3 1/5] vgaarb: pass vga_get_uninterruptible() errors to userspace
2026-03-07 17:35 [PATCH v3 0/5] Bridges without VGA support Simon Richter
@ 2026-03-07 17:35 ` Simon Richter
2026-03-24 19:37 ` Bjorn Helgaas
2026-03-07 17:35 ` [PATCH v3 2/5] vgaarb: pass errors from pci_set_vga_state() up Simon Richter
` (6 subsequent siblings)
7 siblings, 1 reply; 24+ messages in thread
From: Simon Richter @ 2026-03-07 17:35 UTC (permalink / raw)
To: linux-pci; +Cc: intel-xe, dri-devel, Simon Richter
If VGA routing cannot be established, vga_get_uninterruptible() returns an
error and does not increment the lock count. Pass the error on, and don't
call vga_put() when userspace closes the handle.
Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
---
drivers/pci/vgaarb.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/pci/vgaarb.c b/drivers/pci/vgaarb.c
index d9383bf541e7..22b2b6ebdefd 100644
--- a/drivers/pci/vgaarb.c
+++ b/drivers/pci/vgaarb.c
@@ -1134,6 +1134,7 @@ static ssize_t vga_arb_write(struct file *file, const char __user *buf,
char kbuf[64], *curr_pos;
size_t remaining = count;
+ int err;
int ret_val;
int i;
@@ -1165,7 +1166,11 @@ static ssize_t vga_arb_write(struct file *file, const char __user *buf,
goto done;
}
- vga_get_uninterruptible(pdev, io_state);
+ err = vga_get_uninterruptible(pdev, io_state);
+ if (err) {
+ ret_val = err;
+ goto done;
+ }
/* Update the client's locks lists */
for (i = 0; i < MAX_USER_CARDS; i++) {
--
2.47.3
^ permalink raw reply related [flat|nested] 24+ messages in thread* Re: [PATCH v3 1/5] vgaarb: pass vga_get_uninterruptible() errors to userspace
2026-03-07 17:35 ` [PATCH v3 1/5] vgaarb: pass vga_get_uninterruptible() errors to userspace Simon Richter
@ 2026-03-24 19:37 ` Bjorn Helgaas
2026-03-25 6:52 ` Simon Richter
0 siblings, 1 reply; 24+ messages in thread
From: Bjorn Helgaas @ 2026-03-24 19:37 UTC (permalink / raw)
To: Simon Richter; +Cc: linux-pci, intel-xe, dri-devel
On Sun, Mar 08, 2026 at 02:35:34AM +0900, Simon Richter wrote:
> If VGA routing cannot be established, vga_get_uninterruptible() returns an
> error and does not increment the lock count. Pass the error on, and don't
> call vga_put() when userspace closes the handle.
I applied this, but I'm a little confused about the "don't call
vga_put() when userspace closes the handle" part. Does that happen in
this patch and I'm just missing it? This patch changes the "lock"
case, and the only vga_put() call I see is in the "unlock" case.
> Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
> ---
> drivers/pci/vgaarb.c | 7 ++++++-
> 1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/pci/vgaarb.c b/drivers/pci/vgaarb.c
> index d9383bf541e7..22b2b6ebdefd 100644
> --- a/drivers/pci/vgaarb.c
> +++ b/drivers/pci/vgaarb.c
> @@ -1134,6 +1134,7 @@ static ssize_t vga_arb_write(struct file *file, const char __user *buf,
> char kbuf[64], *curr_pos;
> size_t remaining = count;
>
> + int err;
> int ret_val;
> int i;
>
> @@ -1165,7 +1166,11 @@ static ssize_t vga_arb_write(struct file *file, const char __user *buf,
> goto done;
> }
>
> - vga_get_uninterruptible(pdev, io_state);
> + err = vga_get_uninterruptible(pdev, io_state);
> + if (err) {
> + ret_val = err;
> + goto done;
> + }
>
> /* Update the client's locks lists */
> for (i = 0; i < MAX_USER_CARDS; i++) {
> --
> 2.47.3
>
^ permalink raw reply [flat|nested] 24+ messages in thread* Re: [PATCH v3 1/5] vgaarb: pass vga_get_uninterruptible() errors to userspace
2026-03-24 19:37 ` Bjorn Helgaas
@ 2026-03-25 6:52 ` Simon Richter
2026-03-25 18:29 ` Bjorn Helgaas
0 siblings, 1 reply; 24+ messages in thread
From: Simon Richter @ 2026-03-25 6:52 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci, intel-xe, dri-devel
Hi Bjorn,
On 3/25/26 4:37 AM, Bjorn Helgaas wrote:
>> If VGA routing cannot be established, vga_get_uninterruptible() returns an
>> error and does not increment the lock count. Pass the error on, and don't
>> call vga_put() when userspace closes the handle.
> I applied this, but I'm a little confused about the "don't call
> vga_put() when userspace closes the handle" part. Does that happen in
> this patch and I'm just missing it? This patch changes the "lock"
> case, and the only vga_put() call I see is in the "unlock" case.
By not locking, we're not incrementing uc->io_cnt and uc->mem_cnt, so
the release will not call vga_put().
Simon
^ permalink raw reply [flat|nested] 24+ messages in thread* Re: [PATCH v3 1/5] vgaarb: pass vga_get_uninterruptible() errors to userspace
2026-03-25 6:52 ` Simon Richter
@ 2026-03-25 18:29 ` Bjorn Helgaas
0 siblings, 0 replies; 24+ messages in thread
From: Bjorn Helgaas @ 2026-03-25 18:29 UTC (permalink / raw)
To: Simon Richter; +Cc: linux-pci, intel-xe, dri-devel
On Wed, Mar 25, 2026 at 03:52:37PM +0900, Simon Richter wrote:
> Hi Bjorn,
>
> On 3/25/26 4:37 AM, Bjorn Helgaas wrote:
>
> > > If VGA routing cannot be established, vga_get_uninterruptible() returns an
> > > error and does not increment the lock count. Pass the error on, and don't
> > > call vga_put() when userspace closes the handle.
>
> > I applied this, but I'm a little confused about the "don't call
> > vga_put() when userspace closes the handle" part. Does that happen in
> > this patch and I'm just missing it? This patch changes the "lock"
> > case, and the only vga_put() call I see is in the "unlock" case.
>
> By not locking, we're not incrementing uc->io_cnt and uc->mem_cnt, so the
> release will not call vga_put().
Thanks, added this to the commit log:
If VGA routing cannot be established, vga_get_uninterruptible() returns an
error and does not increment the lock count. Return the error to the
caller.
Return before incrementing uc->io_cnt/mem_cnt so vga_arb_release() won't
call vga_put() when userspace closes the handle.
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH v3 2/5] vgaarb: pass errors from pci_set_vga_state() up
2026-03-07 17:35 [PATCH v3 0/5] Bridges without VGA support Simon Richter
2026-03-07 17:35 ` [PATCH v3 1/5] vgaarb: pass vga_get_uninterruptible() errors to userspace Simon Richter
@ 2026-03-07 17:35 ` Simon Richter
2026-03-10 11:37 ` Ville Syrjälä
2026-03-07 17:35 ` [PATCH v3 3/5] vgaarb: mark vga_get() and wrappers as __must_check Simon Richter
` (5 subsequent siblings)
7 siblings, 1 reply; 24+ messages in thread
From: Simon Richter @ 2026-03-07 17:35 UTC (permalink / raw)
To: linux-pci; +Cc: intel-xe, dri-devel, Simon Richter
pci_set_vga_state() returns an error code, which so far has been ignored by
the only caller, __vga_tryget(), so forward it to the caller. As the return
type of __vga_tryget() is a pointer, wrap the error in ERR_PTR().
Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
---
drivers/pci/vgaarb.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/vgaarb.c b/drivers/pci/vgaarb.c
index 22b2b6ebdefd..c360eee11dd9 100644
--- a/drivers/pci/vgaarb.c
+++ b/drivers/pci/vgaarb.c
@@ -215,6 +215,7 @@ static struct vga_device *__vga_tryget(struct vga_device *vgadev,
struct vga_device *conflict;
unsigned int pci_bits;
u32 flags = 0;
+ int err;
/*
* Account for "normal" resources to lock. If we decode the legacy,
@@ -307,7 +308,9 @@ static struct vga_device *__vga_tryget(struct vga_device *vgadev,
if (change_bridge)
flags |= PCI_VGA_STATE_CHANGE_BRIDGE;
- pci_set_vga_state(conflict->pdev, false, pci_bits, flags);
+ err = pci_set_vga_state(conflict->pdev, false, pci_bits, flags);
+ if (err)
+ return ERR_PTR(err);
conflict->owns &= ~match;
/* If we disabled normal decoding, reflect it in owns */
@@ -337,7 +340,9 @@ static struct vga_device *__vga_tryget(struct vga_device *vgadev,
if (wants & VGA_RSRC_LEGACY_MASK)
flags |= PCI_VGA_STATE_CHANGE_BRIDGE;
- pci_set_vga_state(vgadev->pdev, true, pci_bits, flags);
+ err = pci_set_vga_state(vgadev->pdev, true, pci_bits, flags);
+ if (err)
+ return ERR_PTR(err);
vgadev->owns |= wants;
lock_them:
@@ -455,6 +460,10 @@ int vga_get(struct pci_dev *pdev, unsigned int rsrc, int interruptible)
}
conflict = __vga_tryget(vgadev, rsrc);
spin_unlock_irqrestore(&vga_lock, flags);
+ if (IS_ERR(conflict)) {
+ rc = PTR_ERR(conflict);
+ break;
+ }
if (conflict == NULL)
break;
--
2.47.3
^ permalink raw reply related [flat|nested] 24+ messages in thread* Re: [PATCH v3 2/5] vgaarb: pass errors from pci_set_vga_state() up
2026-03-07 17:35 ` [PATCH v3 2/5] vgaarb: pass errors from pci_set_vga_state() up Simon Richter
@ 2026-03-10 11:37 ` Ville Syrjälä
0 siblings, 0 replies; 24+ messages in thread
From: Ville Syrjälä @ 2026-03-10 11:37 UTC (permalink / raw)
To: Simon Richter; +Cc: linux-pci, intel-xe, dri-devel
On Sun, Mar 08, 2026 at 02:35:35AM +0900, Simon Richter wrote:
> pci_set_vga_state() returns an error code, which so far has been ignored by
> the only caller, __vga_tryget(), so forward it to the caller. As the return
> type of __vga_tryget() is a pointer, wrap the error in ERR_PTR().
>
> Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
> ---
> drivers/pci/vgaarb.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/pci/vgaarb.c b/drivers/pci/vgaarb.c
> index 22b2b6ebdefd..c360eee11dd9 100644
> --- a/drivers/pci/vgaarb.c
> +++ b/drivers/pci/vgaarb.c
> @@ -215,6 +215,7 @@ static struct vga_device *__vga_tryget(struct vga_device *vgadev,
> struct vga_device *conflict;
> unsigned int pci_bits;
> u32 flags = 0;
> + int err;
>
> /*
> * Account for "normal" resources to lock. If we decode the legacy,
> @@ -307,7 +308,9 @@ static struct vga_device *__vga_tryget(struct vga_device *vgadev,
> if (change_bridge)
> flags |= PCI_VGA_STATE_CHANGE_BRIDGE;
>
> - pci_set_vga_state(conflict->pdev, false, pci_bits, flags);
> + err = pci_set_vga_state(conflict->pdev, false, pci_bits, flags);
> + if (err)
> + return ERR_PTR(err);
I was thinking this one should never fail and maybe could warrant
a WARN, but uv_set_vga_state() involves some kind of BIOS call and
who knows what that does. So maybe a WARN isn't a good idea.
> conflict->owns &= ~match;
>
> /* If we disabled normal decoding, reflect it in owns */
> @@ -337,7 +340,9 @@ static struct vga_device *__vga_tryget(struct vga_device *vgadev,
> if (wants & VGA_RSRC_LEGACY_MASK)
> flags |= PCI_VGA_STATE_CHANGE_BRIDGE;
>
> - pci_set_vga_state(vgadev->pdev, true, pci_bits, flags);
> + err = pci_set_vga_state(vgadev->pdev, true, pci_bits, flags);
> + if (err)
> + return ERR_PTR(err);
>
> vgadev->owns |= wants;
> lock_them:
> @@ -455,6 +460,10 @@ int vga_get(struct pci_dev *pdev, unsigned int rsrc, int interruptible)
> }
> conflict = __vga_tryget(vgadev, rsrc);
> spin_unlock_irqrestore(&vga_lock, flags);
> + if (IS_ERR(conflict)) {
> + rc = PTR_ERR(conflict);
> + break;
> + }
> if (conflict == NULL)
> break;
>
> --
> 2.47.3
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH v3 3/5] vgaarb: mark vga_get() and wrappers as __must_check
2026-03-07 17:35 [PATCH v3 0/5] Bridges without VGA support Simon Richter
2026-03-07 17:35 ` [PATCH v3 1/5] vgaarb: pass vga_get_uninterruptible() errors to userspace Simon Richter
2026-03-07 17:35 ` [PATCH v3 2/5] vgaarb: pass errors from pci_set_vga_state() up Simon Richter
@ 2026-03-07 17:35 ` Simon Richter
2026-03-10 20:07 ` Bjorn Helgaas
2026-03-07 17:35 ` [PATCH v3 4/5] pci: check if VGA decoding was really activated Simon Richter
` (4 subsequent siblings)
7 siblings, 1 reply; 24+ messages in thread
From: Simon Richter @ 2026-03-07 17:35 UTC (permalink / raw)
To: linux-pci; +Cc: intel-xe, dri-devel, Simon Richter
The vga_get() function and the two wrappers vga_get_interruptible() and
vga_get_uninterruptible() can return errors. As these are paired with
vga_put(), which must only be called after vga_get() returned success, all
callers need to check the return code.
Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
---
include/linux/vgaarb.h | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/include/linux/vgaarb.h b/include/linux/vgaarb.h
index 97129a1bbb7d..eed524c67c22 100644
--- a/include/linux/vgaarb.h
+++ b/include/linux/vgaarb.h
@@ -27,7 +27,8 @@ struct pci_dev;
#ifdef CONFIG_VGA_ARB
void vga_set_legacy_decoding(struct pci_dev *pdev, unsigned int decodes);
-int vga_get(struct pci_dev *pdev, unsigned int rsrc, int interruptible);
+int __must_check vga_get(struct pci_dev *pdev, unsigned int rsrc,
+ int interruptible);
void vga_put(struct pci_dev *pdev, unsigned int rsrc);
struct pci_dev *vga_default_device(void);
void vga_set_default_device(struct pci_dev *pdev);
@@ -39,8 +40,8 @@ static inline void vga_set_legacy_decoding(struct pci_dev *pdev,
unsigned int decodes)
{
};
-static inline int vga_get(struct pci_dev *pdev, unsigned int rsrc,
- int interruptible)
+static inline int __must_check vga_get(struct pci_dev *pdev, unsigned int rsrc,
+ int interruptible)
{
return 0;
}
@@ -74,8 +75,8 @@ static inline int vga_client_register(struct pci_dev *pdev,
*
* On success, release the VGA resource again with vga_put().
*/
-static inline int vga_get_interruptible(struct pci_dev *pdev,
- unsigned int rsrc)
+static inline int __must_check vga_get_interruptible(struct pci_dev *pdev,
+ unsigned int rsrc)
{
return vga_get(pdev, rsrc, 1);
}
@@ -89,8 +90,8 @@ static inline int vga_get_interruptible(struct pci_dev *pdev,
*
* On success, release the VGA resource again with vga_put().
*/
-static inline int vga_get_uninterruptible(struct pci_dev *pdev,
- unsigned int rsrc)
+static inline int __must_check vga_get_uninterruptible(struct pci_dev *pdev,
+ unsigned int rsrc)
{
return vga_get(pdev, rsrc, 0);
}
--
2.47.3
^ permalink raw reply related [flat|nested] 24+ messages in thread* Re: [PATCH v3 3/5] vgaarb: mark vga_get() and wrappers as __must_check
2026-03-07 17:35 ` [PATCH v3 3/5] vgaarb: mark vga_get() and wrappers as __must_check Simon Richter
@ 2026-03-10 20:07 ` Bjorn Helgaas
2026-03-11 22:51 ` Simon Richter
0 siblings, 1 reply; 24+ messages in thread
From: Bjorn Helgaas @ 2026-03-10 20:07 UTC (permalink / raw)
To: Simon Richter; +Cc: linux-pci, intel-xe, dri-devel
On Sun, Mar 08, 2026 at 02:35:36AM +0900, Simon Richter wrote:
> The vga_get() function and the two wrappers vga_get_interruptible() and
> vga_get_uninterruptible() can return errors. As these are paired with
> vga_put(), which must only be called after vga_get() returned success, all
> callers need to check the return code.
>
> Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
> ---
> include/linux/vgaarb.h | 15 ++++++++-------
> 1 file changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/include/linux/vgaarb.h b/include/linux/vgaarb.h
> index 97129a1bbb7d..eed524c67c22 100644
> --- a/include/linux/vgaarb.h
> +++ b/include/linux/vgaarb.h
> @@ -27,7 +27,8 @@ struct pci_dev;
>
> #ifdef CONFIG_VGA_ARB
> void vga_set_legacy_decoding(struct pci_dev *pdev, unsigned int decodes);
> -int vga_get(struct pci_dev *pdev, unsigned int rsrc, int interruptible);
> +int __must_check vga_get(struct pci_dev *pdev, unsigned int rsrc,
> + int interruptible);
vga_get() is implemented in vgaarb.c and is only used there. Can we
drop this declaration and the stub below, make it static and
__must_check in vgaarb.c?
> void vga_put(struct pci_dev *pdev, unsigned int rsrc);
> struct pci_dev *vga_default_device(void);
> void vga_set_default_device(struct pci_dev *pdev);
> @@ -39,8 +40,8 @@ static inline void vga_set_legacy_decoding(struct pci_dev *pdev,
> unsigned int decodes)
> {
> };
> -static inline int vga_get(struct pci_dev *pdev, unsigned int rsrc,
> - int interruptible)
> +static inline int __must_check vga_get(struct pci_dev *pdev, unsigned int rsrc,
> + int interruptible)
> {
> return 0;
> }
^ permalink raw reply [flat|nested] 24+ messages in thread* Re: [PATCH v3 3/5] vgaarb: mark vga_get() and wrappers as __must_check
2026-03-10 20:07 ` Bjorn Helgaas
@ 2026-03-11 22:51 ` Simon Richter
2026-03-11 23:14 ` Bjorn Helgaas
0 siblings, 1 reply; 24+ messages in thread
From: Simon Richter @ 2026-03-11 22:51 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci, intel-xe, dri-devel
Hi,
On 3/11/26 5:07 AM, Bjorn Helgaas wrote:
> vga_get() is implemented in vgaarb.c and is only used there. Can we
> drop this declaration and the stub below, make it static and
> __must_check in vgaarb.c?
It's documented API, and exported. If we make it private, we need to
export vga_get_interruptible() and vga_get_uninterruptible() instead.
Simon
^ permalink raw reply [flat|nested] 24+ messages in thread* Re: [PATCH v3 3/5] vgaarb: mark vga_get() and wrappers as __must_check
2026-03-11 22:51 ` Simon Richter
@ 2026-03-11 23:14 ` Bjorn Helgaas
2026-03-11 23:29 ` Simon Richter
0 siblings, 1 reply; 24+ messages in thread
From: Bjorn Helgaas @ 2026-03-11 23:14 UTC (permalink / raw)
To: Simon Richter; +Cc: linux-pci, intel-xe, dri-devel
On Thu, Mar 12, 2026 at 07:51:31AM +0900, Simon Richter wrote:
> On 3/11/26 5:07 AM, Bjorn Helgaas wrote:
>
> > vga_get() is implemented in vgaarb.c and is only used there. Can we
> > drop this declaration and the stub below, make it static and
> > __must_check in vgaarb.c?
>
> It's documented API, and exported. If we make it private, we need to export
> vga_get_interruptible() and vga_get_uninterruptible() instead.
Yes. vga_get_interruptible() and vga_get_uninterruptible() are
already exported by virtue of being defined in include/linux/vgaarb.h.
We would have to move those implementations to vgaarb.c and
EXPORT_SYMBOL them, leaving just the declaration in vgaarb.h.
Is there other API documentation I don't see? Are you concerned about
out-of-tree drivers that might use vga_get()? I don't know how much
to worry about that; usually I don't put too much effort into keeping
out-of-tree things working.
Bjorn
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH v3 4/5] pci: check if VGA decoding was really activated
2026-03-07 17:35 [PATCH v3 0/5] Bridges without VGA support Simon Richter
` (2 preceding siblings ...)
2026-03-07 17:35 ` [PATCH v3 3/5] vgaarb: mark vga_get() and wrappers as __must_check Simon Richter
@ 2026-03-07 17:35 ` Simon Richter
2026-03-10 11:37 ` Ville Syrjälä
2026-03-10 20:22 ` Bjorn Helgaas
2026-03-07 17:35 ` [PATCH v3 5/5] pci: mark pci_set_vga_state() as __must_check Simon Richter
` (3 subsequent siblings)
7 siblings, 2 replies; 24+ messages in thread
From: Simon Richter @ 2026-03-07 17:35 UTC (permalink / raw)
To: linux-pci; +Cc: intel-xe, dri-devel, Simon Richter
PCI bridges are allowed to refuse activating VGA decoding, by simply
ignoring attempts to set the bit that enables it, so after setting the bit,
read it back to verify.
One example of such a bridge is the root bridge in IBM PowerNV, but this is
also useful for GPU passthrough into virtual machines, where it is
difficult to set up routing for legacy IO through IOMMU.
Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
---
drivers/pci/pci.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 8479c2e1f74f..e60b948f8576 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -6197,6 +6197,12 @@ int pci_set_vga_state(struct pci_dev *dev, bool decode,
cmd &= ~PCI_BRIDGE_CTL_VGA;
pci_write_config_word(bridge, PCI_BRIDGE_CONTROL,
cmd);
+ if (decode) {
+ pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
+ &cmd);
+ if(!(cmd & PCI_BRIDGE_CTL_VGA))
+ return -EIO;
+ }
}
bus = bus->parent;
}
--
2.47.3
^ permalink raw reply related [flat|nested] 24+ messages in thread* Re: [PATCH v3 4/5] pci: check if VGA decoding was really activated
2026-03-07 17:35 ` [PATCH v3 4/5] pci: check if VGA decoding was really activated Simon Richter
@ 2026-03-10 11:37 ` Ville Syrjälä
2026-03-10 14:08 ` Simon Richter
2026-03-10 20:22 ` Bjorn Helgaas
1 sibling, 1 reply; 24+ messages in thread
From: Ville Syrjälä @ 2026-03-10 11:37 UTC (permalink / raw)
To: Simon Richter; +Cc: linux-pci, intel-xe, dri-devel
On Sun, Mar 08, 2026 at 02:35:37AM +0900, Simon Richter wrote:
> PCI bridges are allowed to refuse activating VGA decoding, by simply
> ignoring attempts to set the bit that enables it, so after setting the bit,
> read it back to verify.
>
> One example of such a bridge is the root bridge in IBM PowerNV, but this is
> also useful for GPU passthrough into virtual machines, where it is
> difficult to set up routing for legacy IO through IOMMU.
>
> Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
> ---
> drivers/pci/pci.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 8479c2e1f74f..e60b948f8576 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -6197,6 +6197,12 @@ int pci_set_vga_state(struct pci_dev *dev, bool decode,
> cmd &= ~PCI_BRIDGE_CTL_VGA;
> pci_write_config_word(bridge, PCI_BRIDGE_CONTROL,
> cmd);
> + if (decode) {
> + pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
> + &cmd);
> + if(!(cmd & PCI_BRIDGE_CTL_VGA))
> + return -EIO;
> + }
Maybe this should also have a comment or spec quote to explain
that it's legal behavior?
The slightly bigger concern I have is whether we need to unwind
the previous steps if this fails? Looks like we don't update
vgadev->owns on failure (even though we may have partially
enabled things). But since the bridge should never forward any
VGA accesses, leaving some extra PCI_COMMAND enable(s) set on
the device shouldn't matter in practice. So I guess this should
work even without unwinding. Well, not sure about
arch_set_vga_state() since that's 100% magic...
> }
> bus = bus->parent;
> }
> --
> 2.47.3
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 24+ messages in thread* Re: [PATCH v3 4/5] pci: check if VGA decoding was really activated
2026-03-10 11:37 ` Ville Syrjälä
@ 2026-03-10 14:08 ` Simon Richter
2026-03-10 15:19 ` Ville Syrjälä
0 siblings, 1 reply; 24+ messages in thread
From: Simon Richter @ 2026-03-10 14:08 UTC (permalink / raw)
To: Ville Syrjälä; +Cc: linux-pci, intel-xe, dri-devel
Hi,
On 3/10/26 8:37 PM, Ville Syrjälä wrote:
> Maybe this should also have a comment or spec quote to explain
> that it's legal behavior?
The PCI-to-PCI Bridge Specification version 1.1 has in chapter 4.5 "VGA
Support":
Bridges are not required to implement the VGA support mechanisms
described in the following sections.
So this has always been optional.
What is a bit annoying is that I cannot find an explicit sentence
allowing the VGAEnable bit to be hardwired to zero in that specification.
It is explicitly allowed to hardwire the VGASnoopEnable bit to zero if
VGA palette snooping is not supported for downstream devices (Table 3-2
"Command Register"):
Implementation of VGA palette snooping by a bridge is optional. If
VGA palette snooping is not supported, this bit must be implemented
as read-only with a value of 0
That is the command register though, not the bridge control register.
The bridge control register documentation (Table 3-9) does not
explicitly say what should be done if VGA support is not available, but
the behaviour of the VGAEnable bit is a superset of the VGASnoopEnable
bit, and the VGASnoopEnable bit becomes a Don't Care if VGAEnable is
set, so "the bit must be hardwired to zero if unsupported" appears to be
the only valid interpretation.
This seems to be the behaviour of all the devices I have available:
- IBM PowerNV PCIe root bridge (POWER9)
- SiFive VisionFive2 PCIe root bridge (PLDA XpressRich-AXI Ref Design)
Both read back this bit as zero when written via setpci:
# setpci -s 0000:00:00.0 BRIDGE_CONTROL
0002
# setpci -s 0000:00:00.0 BRIDGE_CONTROL=0xa
# setpci -s 0000:00:00.0 BRIDGE_CONTROL
0002
There is also a question in the Altera support forum for their PCIe Root
Bridge IP at https://community.altera.com/kb/knowledge-base/-/345837 .
> The slightly bigger concern I have is whether we need to unwind
> the previous steps if this fails? Looks like we don't update
> vgadev->owns on failure (even though we may have partially
> enabled things). But since the bridge should never forward any
> VGA accesses, leaving some extra PCI_COMMAND enable(s) set on
> the device shouldn't matter in practice.
I was thinking the same, but because we're going upwards in the
hierarchy, the bridges we leave enabled are downstream of the bridge
that refused to forward.
I can add this for completeness though, that should be fairly easy.
> So I guess this should
> work even without unwinding. Well, not sure about
> arch_set_vga_state() since that's 100% magic...
It's not entirely magic, because after success from arch_set_vga_state()
we still go through all the bridges. I believe uv uses it for some kind
of paravirtualization.
Simon
^ permalink raw reply [flat|nested] 24+ messages in thread* Re: [PATCH v3 4/5] pci: check if VGA decoding was really activated
2026-03-10 14:08 ` Simon Richter
@ 2026-03-10 15:19 ` Ville Syrjälä
0 siblings, 0 replies; 24+ messages in thread
From: Ville Syrjälä @ 2026-03-10 15:19 UTC (permalink / raw)
To: Simon Richter; +Cc: linux-pci, intel-xe, dri-devel
On Tue, Mar 10, 2026 at 11:08:40PM +0900, Simon Richter wrote:
> Hi,
>
> On 3/10/26 8:37 PM, Ville Syrjälä wrote:
>
> > Maybe this should also have a comment or spec quote to explain
> > that it's legal behavior?
>
> The PCI-to-PCI Bridge Specification version 1.1 has in chapter 4.5 "VGA
> Support":
>
> Bridges are not required to implement the VGA support mechanisms
> described in the following sections.
>
> So this has always been optional.
>
> What is a bit annoying is that I cannot find an explicit sentence
> allowing the VGAEnable bit to be hardwired to zero in that specification.
>
> It is explicitly allowed to hardwire the VGASnoopEnable bit to zero if
> VGA palette snooping is not supported for downstream devices (Table 3-2
> "Command Register"):
>
> Implementation of VGA palette snooping by a bridge is optional. If
> VGA palette snooping is not supported, this bit must be implemented
> as read-only with a value of 0
>
> That is the command register though, not the bridge control register.
>
> The bridge control register documentation (Table 3-9) does not
> explicitly say what should be done if VGA support is not available, but
> the behaviour of the VGAEnable bit is a superset of the VGASnoopEnable
> bit, and the VGASnoopEnable bit becomes a Don't Care if VGAEnable is
> set, so "the bit must be hardwired to zero if unsupported" appears to be
> the only valid interpretation.
>
> This seems to be the behaviour of all the devices I have available:
>
> - IBM PowerNV PCIe root bridge (POWER9)
> - SiFive VisionFive2 PCIe root bridge (PLDA XpressRich-AXI Ref Design)
>
> Both read back this bit as zero when written via setpci:
>
> # setpci -s 0000:00:00.0 BRIDGE_CONTROL
> 0002
> # setpci -s 0000:00:00.0 BRIDGE_CONTROL=0xa
> # setpci -s 0000:00:00.0 BRIDGE_CONTROL
> 0002
>
> There is also a question in the Altera support forum for their PCIe Root
> Bridge IP at https://community.altera.com/kb/knowledge-base/-/345837 .
Yeah, looks like the exact explanation was only added in the PCIe
bridge spec. Before that it was somewhat ambiguous.
>
> > The slightly bigger concern I have is whether we need to unwind
> > the previous steps if this fails? Looks like we don't update
> > vgadev->owns on failure (even though we may have partially
> > enabled things). But since the bridge should never forward any
> > VGA accesses, leaving some extra PCI_COMMAND enable(s) set on
> > the device shouldn't matter in practice.
>
> I was thinking the same, but because we're going upwards in the
> hierarchy, the bridges we leave enabled are downstream of the bridge
> that refused to forward.
>
> I can add this for completeness though, that should be fairly easy.
>
> > So I guess this should
> > work even without unwinding. Well, not sure about
> > arch_set_vga_state() since that's 100% magic...
>
> It's not entirely magic, because after success from arch_set_vga_state()
> we still go through all the bridges. I believe uv uses it for some kind
> of paravirtualization.
>
> Simon
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 24+ messages in thread
* Re: [PATCH v3 4/5] pci: check if VGA decoding was really activated
2026-03-07 17:35 ` [PATCH v3 4/5] pci: check if VGA decoding was really activated Simon Richter
2026-03-10 11:37 ` Ville Syrjälä
@ 2026-03-10 20:22 ` Bjorn Helgaas
2026-03-11 7:07 ` Simon Richter
1 sibling, 1 reply; 24+ messages in thread
From: Bjorn Helgaas @ 2026-03-10 20:22 UTC (permalink / raw)
To: Simon Richter; +Cc: linux-pci, intel-xe, dri-devel
On Sun, Mar 08, 2026 at 02:35:37AM +0900, Simon Richter wrote:
> PCI bridges are allowed to refuse activating VGA decoding, by simply
> ignoring attempts to set the bit that enables it, so after setting the bit,
> read it back to verify.
>
> One example of such a bridge is the root bridge in IBM PowerNV, but this is
> also useful for GPU passthrough into virtual machines, where it is
> difficult to set up routing for legacy IO through IOMMU.
Based on this:
https://lore.kernel.org/all/9f297568-5616-40b6-b401-df1af57d5e14@hogyros.de
I *guess* this is the critical patch, and together with
https://patchwork.freedesktop.org/patch/709684/?series=161721&rev=4,
it fixes an issue?
Without these two patches, i915 assumes its
vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO) always succeeds, and
I guess the problem is that if it *didn't* succeed, i915's subsequent
ioport accesses may go to the wrong device or to no device at all,
which might corrupt another device or cause a PCI error?
We could include the i915 patch in this series. Wouldn't be a
problem from the PCI side, I dunno about the DRM side.
> Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
> ---
> drivers/pci/pci.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
> index 8479c2e1f74f..e60b948f8576 100644
> --- a/drivers/pci/pci.c
> +++ b/drivers/pci/pci.c
> @@ -6197,6 +6197,12 @@ int pci_set_vga_state(struct pci_dev *dev, bool decode,
> cmd &= ~PCI_BRIDGE_CTL_VGA;
> pci_write_config_word(bridge, PCI_BRIDGE_CONTROL,
> cmd);
> + if (decode) {
> + pci_read_config_word(bridge, PCI_BRIDGE_CONTROL,
> + &cmd);
> + if(!(cmd & PCI_BRIDGE_CTL_VGA))
> + return -EIO;
> + }
> }
> bus = bus->parent;
> }
> --
> 2.47.3
>
^ permalink raw reply [flat|nested] 24+ messages in thread* Re: [PATCH v3 4/5] pci: check if VGA decoding was really activated
2026-03-10 20:22 ` Bjorn Helgaas
@ 2026-03-11 7:07 ` Simon Richter
0 siblings, 0 replies; 24+ messages in thread
From: Simon Richter @ 2026-03-11 7:07 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci, intel-xe, dri-devel
Hi,
On 3/11/26 5:22 AM, Bjorn Helgaas wrote:
> Based on this:
> https://lore.kernel.org/all/9f297568-5616-40b6-b401-df1af57d5e14@hogyros.de
> I *guess* this is the critical patch, and together with
> https://patchwork.freedesktop.org/patch/709684/?series=161721&rev=4,
> it fixes an issue?
This patch to notice, and the patch to __vga_tryget() and vga_get() to
forward the error to i915. Basically there are multiple layers of not
handling errors in the current code.
rev=4 is the backported patch for 5.3 to 6.19, rev=3 is the relevant
version, but technically it's doing the same thing.
> Without these two patches, i915 assumes its
> vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO) always succeeds, and
> I guess the problem is that if it *didn't* succeed, i915's subsequent
> ioport accesses may go to the wrong device or to no device at all,
> which might corrupt another device or cause a PCI error?
- i915 assumes vga_get_uninterruptible() always succeeds.
- This assumption currently holds because __vga_tryget() assumes that
pci_set_vga_state() succeeds, and there is no error return to vga_get().
- That assumption holds because pci_set_vga_state() only reports
errors from the uv BIOS (or any other platform code) and assumes that
setting VGAEnable in bridge control always succeeds.
The accesses should not go to the wrong device, because decoding on the
previously active device has been disabled, either by disabling
VGAEnable in a bridge above it or by disabling IO decoding for the VGA
card altogether for the common case where onboard VGA is integrated into
the mainboard chipset, and there are no bridges between the root and the
onboard VGA that aren't also parents of the dGPU).
So the result is these go to no device at all.
> We could include the i915 patch in this series. Wouldn't be a
> problem from the PCI side, I dunno about the DRM side.
The i915 patch (rev=3) is already in drm-intel-next, so it will
percolate up into 7.0 from there.
If there is a desire to backport the PCI changes, i915 should get the
backported patch for the older kernel versions as well.
Simon
^ permalink raw reply [flat|nested] 24+ messages in thread
* [PATCH v3 5/5] pci: mark pci_set_vga_state() as __must_check
2026-03-07 17:35 [PATCH v3 0/5] Bridges without VGA support Simon Richter
` (3 preceding siblings ...)
2026-03-07 17:35 ` [PATCH v3 4/5] pci: check if VGA decoding was really activated Simon Richter
@ 2026-03-07 17:35 ` Simon Richter
2026-03-10 19:36 ` Bjorn Helgaas
2026-03-07 17:41 ` ✗ CI.checkpatch: warning for bridges without VGA support (rev2) Patchwork
` (2 subsequent siblings)
7 siblings, 1 reply; 24+ messages in thread
From: Simon Richter @ 2026-03-07 17:35 UTC (permalink / raw)
To: linux-pci; +Cc: intel-xe, dri-devel, Simon Richter
This function can return an error, usually on non-x86 or virtualized
environments.
The only caller so far is __vga_tryget() in vgaarb.
Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
---
include/linux/pci.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 1c270f1d5123..aa1451d402d1 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1720,8 +1720,8 @@ resource_size_t pcibios_window_alignment(struct pci_bus *bus,
#define PCI_VGA_STATE_CHANGE_BRIDGE (1 << 0)
#define PCI_VGA_STATE_CHANGE_DECODES (1 << 1)
-int pci_set_vga_state(struct pci_dev *pdev, bool decode,
- unsigned int command_bits, u32 flags);
+int __must_check pci_set_vga_state(struct pci_dev *pdev, bool decode,
+ unsigned int command_bits, u32 flags);
/*
* Virtual interrupts allow for more interrupts to be allocated
--
2.47.3
^ permalink raw reply related [flat|nested] 24+ messages in thread* Re: [PATCH v3 5/5] pci: mark pci_set_vga_state() as __must_check
2026-03-07 17:35 ` [PATCH v3 5/5] pci: mark pci_set_vga_state() as __must_check Simon Richter
@ 2026-03-10 19:36 ` Bjorn Helgaas
2026-03-11 23:23 ` Simon Richter
0 siblings, 1 reply; 24+ messages in thread
From: Bjorn Helgaas @ 2026-03-10 19:36 UTC (permalink / raw)
To: Simon Richter; +Cc: linux-pci, intel-xe, dri-devel
On Sun, Mar 08, 2026 at 02:35:38AM +0900, Simon Richter wrote:
> This function can return an error, usually on non-x86 or virtualized
> environments.
>
> The only caller so far is __vga_tryget() in vgaarb.
Is there any reason for pci_set_vga_state() to be in pci.c while the
only caller is in vgaarb.c? If not, we could move it there, make it
static, and drop it from include/linux/pci.h.
> Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
> ---
> include/linux/pci.h | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/pci.h b/include/linux/pci.h
> index 1c270f1d5123..aa1451d402d1 100644
> --- a/include/linux/pci.h
> +++ b/include/linux/pci.h
> @@ -1720,8 +1720,8 @@ resource_size_t pcibios_window_alignment(struct pci_bus *bus,
> #define PCI_VGA_STATE_CHANGE_BRIDGE (1 << 0)
> #define PCI_VGA_STATE_CHANGE_DECODES (1 << 1)
>
> -int pci_set_vga_state(struct pci_dev *pdev, bool decode,
> - unsigned int command_bits, u32 flags);
> +int __must_check pci_set_vga_state(struct pci_dev *pdev, bool decode,
> + unsigned int command_bits, u32 flags);
>
> /*
> * Virtual interrupts allow for more interrupts to be allocated
> --
> 2.47.3
>
^ permalink raw reply [flat|nested] 24+ messages in thread
* ✗ CI.checkpatch: warning for bridges without VGA support (rev2)
2026-03-07 17:35 [PATCH v3 0/5] Bridges without VGA support Simon Richter
` (4 preceding siblings ...)
2026-03-07 17:35 ` [PATCH v3 5/5] pci: mark pci_set_vga_state() as __must_check Simon Richter
@ 2026-03-07 17:41 ` Patchwork
2026-03-07 17:43 ` ✓ CI.KUnit: success " Patchwork
2026-03-24 19:34 ` [PATCH v3 0/5] Bridges without VGA support Bjorn Helgaas
7 siblings, 0 replies; 24+ messages in thread
From: Patchwork @ 2026-03-07 17:41 UTC (permalink / raw)
To: Simon Richter; +Cc: intel-xe
== Series Details ==
Series: bridges without VGA support (rev2)
URL : https://patchwork.freedesktop.org/series/161722/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
1f57ba1afceae32108bd24770069f764d940a0e4
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit 74c1c8b2f0de55ba3d0d4548bab05e81adc9f7b2
Author: Simon Richter <Simon.Richter@hogyros.de>
Date: Sun Mar 8 02:35:38 2026 +0900
pci: mark pci_set_vga_state() as __must_check
This function can return an error, usually on non-x86 or virtualized
environments.
The only caller so far is __vga_tryget() in vgaarb.
Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
+ /mt/dim checkpatch fce8d7fb2107068c269b868d51aba5f9cf85998a drm-intel
af2e6b6418c4 vgaarb: pass vga_get_uninterruptible() errors to userspace
a54ae961928d vgaarb: pass errors from pci_set_vga_state() up
4b7c76df4ff5 vgaarb: mark vga_get() and wrappers as __must_check
-:33: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#33: FILE: include/linux/vgaarb.h:43:
};
+static inline int __must_check vga_get(struct pci_dev *pdev, unsigned int rsrc,
total: 0 errors, 0 warnings, 1 checks, 39 lines checked
1edb6ab28940 pci: check if VGA decoding was really activated
-:27: ERROR:SPACING: space required before the open parenthesis '('
#27: FILE: drivers/pci/pci.c:6203:
+ if(!(cmd & PCI_BRIDGE_CTL_VGA))
total: 1 errors, 0 warnings, 0 checks, 12 lines checked
74c1c8b2f0de pci: mark pci_set_vga_state() as __must_check
^ permalink raw reply [flat|nested] 24+ messages in thread* ✓ CI.KUnit: success for bridges without VGA support (rev2)
2026-03-07 17:35 [PATCH v3 0/5] Bridges without VGA support Simon Richter
` (5 preceding siblings ...)
2026-03-07 17:41 ` ✗ CI.checkpatch: warning for bridges without VGA support (rev2) Patchwork
@ 2026-03-07 17:43 ` Patchwork
2026-03-24 19:34 ` [PATCH v3 0/5] Bridges without VGA support Bjorn Helgaas
7 siblings, 0 replies; 24+ messages in thread
From: Patchwork @ 2026-03-07 17:43 UTC (permalink / raw)
To: Simon Richter; +Cc: intel-xe
== Series Details ==
Series: bridges without VGA support (rev2)
URL : https://patchwork.freedesktop.org/series/161722/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[17:41:52] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[17:41:56] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[17:42:26] Starting KUnit Kernel (1/1)...
[17:42:26] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[17:42:26] ================== guc_buf (11 subtests) ===================
[17:42:26] [PASSED] test_smallest
[17:42:26] [PASSED] test_largest
[17:42:26] [PASSED] test_granular
[17:42:26] [PASSED] test_unique
[17:42:26] [PASSED] test_overlap
[17:42:26] [PASSED] test_reusable
[17:42:26] [PASSED] test_too_big
[17:42:26] [PASSED] test_flush
[17:42:26] [PASSED] test_lookup
[17:42:26] [PASSED] test_data
[17:42:26] [PASSED] test_class
[17:42:26] ===================== [PASSED] guc_buf =====================
[17:42:26] =================== guc_dbm (7 subtests) ===================
[17:42:26] [PASSED] test_empty
[17:42:26] [PASSED] test_default
[17:42:26] ======================== test_size ========================
[17:42:26] [PASSED] 4
[17:42:26] [PASSED] 8
[17:42:26] [PASSED] 32
[17:42:26] [PASSED] 256
[17:42:26] ==================== [PASSED] test_size ====================
[17:42:26] ======================= test_reuse ========================
[17:42:26] [PASSED] 4
[17:42:26] [PASSED] 8
[17:42:26] [PASSED] 32
[17:42:26] [PASSED] 256
[17:42:26] =================== [PASSED] test_reuse ====================
[17:42:26] =================== test_range_overlap ====================
[17:42:26] [PASSED] 4
[17:42:26] [PASSED] 8
[17:42:26] [PASSED] 32
[17:42:27] [PASSED] 256
[17:42:27] =============== [PASSED] test_range_overlap ================
[17:42:27] =================== test_range_compact ====================
[17:42:27] [PASSED] 4
[17:42:27] [PASSED] 8
[17:42:27] [PASSED] 32
[17:42:27] [PASSED] 256
[17:42:27] =============== [PASSED] test_range_compact ================
[17:42:27] ==================== test_range_spare =====================
[17:42:27] [PASSED] 4
[17:42:27] [PASSED] 8
[17:42:27] [PASSED] 32
[17:42:27] [PASSED] 256
[17:42:27] ================ [PASSED] test_range_spare =================
[17:42:27] ===================== [PASSED] guc_dbm =====================
[17:42:27] =================== guc_idm (6 subtests) ===================
[17:42:27] [PASSED] bad_init
[17:42:27] [PASSED] no_init
[17:42:27] [PASSED] init_fini
[17:42:27] [PASSED] check_used
[17:42:27] [PASSED] check_quota
[17:42:27] [PASSED] check_all
[17:42:27] ===================== [PASSED] guc_idm =====================
[17:42:27] ================== no_relay (3 subtests) ===================
[17:42:27] [PASSED] xe_drops_guc2pf_if_not_ready
[17:42:27] [PASSED] xe_drops_guc2vf_if_not_ready
[17:42:27] [PASSED] xe_rejects_send_if_not_ready
[17:42:27] ==================== [PASSED] no_relay =====================
[17:42:27] ================== pf_relay (14 subtests) ==================
[17:42:27] [PASSED] pf_rejects_guc2pf_too_short
[17:42:27] [PASSED] pf_rejects_guc2pf_too_long
[17:42:27] [PASSED] pf_rejects_guc2pf_no_payload
[17:42:27] [PASSED] pf_fails_no_payload
[17:42:27] [PASSED] pf_fails_bad_origin
[17:42:27] [PASSED] pf_fails_bad_type
[17:42:27] [PASSED] pf_txn_reports_error
[17:42:27] [PASSED] pf_txn_sends_pf2guc
[17:42:27] [PASSED] pf_sends_pf2guc
[17:42:27] [SKIPPED] pf_loopback_nop
[17:42:27] [SKIPPED] pf_loopback_echo
[17:42:27] [SKIPPED] pf_loopback_fail
[17:42:27] [SKIPPED] pf_loopback_busy
[17:42:27] [SKIPPED] pf_loopback_retry
[17:42:27] ==================== [PASSED] pf_relay =====================
[17:42:27] ================== vf_relay (3 subtests) ===================
[17:42:27] [PASSED] vf_rejects_guc2vf_too_short
[17:42:27] [PASSED] vf_rejects_guc2vf_too_long
[17:42:27] [PASSED] vf_rejects_guc2vf_no_payload
[17:42:27] ==================== [PASSED] vf_relay =====================
[17:42:27] ================ pf_gt_config (9 subtests) =================
[17:42:27] [PASSED] fair_contexts_1vf
[17:42:27] [PASSED] fair_doorbells_1vf
[17:42:27] [PASSED] fair_ggtt_1vf
[17:42:27] ====================== fair_vram_1vf ======================
[17:42:27] [PASSED] 3.50 GiB
[17:42:27] [PASSED] 11.5 GiB
[17:42:27] [PASSED] 15.5 GiB
[17:42:27] [PASSED] 31.5 GiB
[17:42:27] [PASSED] 63.5 GiB
[17:42:27] [PASSED] 1.91 GiB
[17:42:27] ================== [PASSED] fair_vram_1vf ==================
[17:42:27] ================ fair_vram_1vf_admin_only =================
[17:42:27] [PASSED] 3.50 GiB
[17:42:27] [PASSED] 11.5 GiB
[17:42:27] [PASSED] 15.5 GiB
[17:42:27] [PASSED] 31.5 GiB
[17:42:27] [PASSED] 63.5 GiB
[17:42:27] [PASSED] 1.91 GiB
[17:42:27] ============ [PASSED] fair_vram_1vf_admin_only =============
[17:42:27] ====================== fair_contexts ======================
[17:42:27] [PASSED] 1 VF
[17:42:27] [PASSED] 2 VFs
[17:42:27] [PASSED] 3 VFs
[17:42:27] [PASSED] 4 VFs
[17:42:27] [PASSED] 5 VFs
[17:42:27] [PASSED] 6 VFs
[17:42:27] [PASSED] 7 VFs
[17:42:27] [PASSED] 8 VFs
[17:42:27] [PASSED] 9 VFs
[17:42:27] [PASSED] 10 VFs
[17:42:27] [PASSED] 11 VFs
[17:42:27] [PASSED] 12 VFs
[17:42:27] [PASSED] 13 VFs
[17:42:27] [PASSED] 14 VFs
[17:42:27] [PASSED] 15 VFs
[17:42:27] [PASSED] 16 VFs
[17:42:27] [PASSED] 17 VFs
[17:42:27] [PASSED] 18 VFs
[17:42:27] [PASSED] 19 VFs
[17:42:27] [PASSED] 20 VFs
[17:42:27] [PASSED] 21 VFs
[17:42:27] [PASSED] 22 VFs
[17:42:27] [PASSED] 23 VFs
[17:42:27] [PASSED] 24 VFs
[17:42:27] [PASSED] 25 VFs
[17:42:27] [PASSED] 26 VFs
[17:42:27] [PASSED] 27 VFs
[17:42:27] [PASSED] 28 VFs
[17:42:27] [PASSED] 29 VFs
[17:42:27] [PASSED] 30 VFs
[17:42:27] [PASSED] 31 VFs
[17:42:27] [PASSED] 32 VFs
[17:42:27] [PASSED] 33 VFs
[17:42:27] [PASSED] 34 VFs
[17:42:27] [PASSED] 35 VFs
[17:42:27] [PASSED] 36 VFs
[17:42:27] [PASSED] 37 VFs
[17:42:27] [PASSED] 38 VFs
[17:42:27] [PASSED] 39 VFs
[17:42:27] [PASSED] 40 VFs
[17:42:27] [PASSED] 41 VFs
[17:42:27] [PASSED] 42 VFs
[17:42:27] [PASSED] 43 VFs
[17:42:27] [PASSED] 44 VFs
[17:42:27] [PASSED] 45 VFs
[17:42:27] [PASSED] 46 VFs
[17:42:27] [PASSED] 47 VFs
[17:42:27] [PASSED] 48 VFs
[17:42:27] [PASSED] 49 VFs
[17:42:27] [PASSED] 50 VFs
[17:42:27] [PASSED] 51 VFs
[17:42:27] [PASSED] 52 VFs
[17:42:27] [PASSED] 53 VFs
[17:42:27] [PASSED] 54 VFs
[17:42:27] [PASSED] 55 VFs
[17:42:27] [PASSED] 56 VFs
[17:42:27] [PASSED] 57 VFs
[17:42:27] [PASSED] 58 VFs
[17:42:27] [PASSED] 59 VFs
[17:42:27] [PASSED] 60 VFs
[17:42:27] [PASSED] 61 VFs
[17:42:27] [PASSED] 62 VFs
[17:42:27] [PASSED] 63 VFs
[17:42:27] ================== [PASSED] fair_contexts ==================
[17:42:27] ===================== fair_doorbells ======================
[17:42:27] [PASSED] 1 VF
[17:42:27] [PASSED] 2 VFs
[17:42:27] [PASSED] 3 VFs
[17:42:27] [PASSED] 4 VFs
[17:42:27] [PASSED] 5 VFs
[17:42:27] [PASSED] 6 VFs
[17:42:27] [PASSED] 7 VFs
[17:42:27] [PASSED] 8 VFs
[17:42:27] [PASSED] 9 VFs
[17:42:27] [PASSED] 10 VFs
[17:42:27] [PASSED] 11 VFs
[17:42:27] [PASSED] 12 VFs
[17:42:27] [PASSED] 13 VFs
[17:42:27] [PASSED] 14 VFs
[17:42:27] [PASSED] 15 VFs
[17:42:27] [PASSED] 16 VFs
[17:42:27] [PASSED] 17 VFs
[17:42:27] [PASSED] 18 VFs
[17:42:27] [PASSED] 19 VFs
[17:42:27] [PASSED] 20 VFs
[17:42:27] [PASSED] 21 VFs
[17:42:27] [PASSED] 22 VFs
[17:42:27] [PASSED] 23 VFs
[17:42:27] [PASSED] 24 VFs
[17:42:27] [PASSED] 25 VFs
[17:42:27] [PASSED] 26 VFs
[17:42:27] [PASSED] 27 VFs
[17:42:27] [PASSED] 28 VFs
[17:42:27] [PASSED] 29 VFs
[17:42:27] [PASSED] 30 VFs
[17:42:27] [PASSED] 31 VFs
[17:42:27] [PASSED] 32 VFs
[17:42:27] [PASSED] 33 VFs
[17:42:27] [PASSED] 34 VFs
[17:42:27] [PASSED] 35 VFs
[17:42:27] [PASSED] 36 VFs
[17:42:27] [PASSED] 37 VFs
[17:42:27] [PASSED] 38 VFs
[17:42:27] [PASSED] 39 VFs
[17:42:27] [PASSED] 40 VFs
[17:42:27] [PASSED] 41 VFs
[17:42:27] [PASSED] 42 VFs
[17:42:27] [PASSED] 43 VFs
[17:42:27] [PASSED] 44 VFs
[17:42:27] [PASSED] 45 VFs
[17:42:27] [PASSED] 46 VFs
[17:42:27] [PASSED] 47 VFs
[17:42:27] [PASSED] 48 VFs
[17:42:27] [PASSED] 49 VFs
[17:42:27] [PASSED] 50 VFs
[17:42:27] [PASSED] 51 VFs
[17:42:27] [PASSED] 52 VFs
[17:42:27] [PASSED] 53 VFs
[17:42:27] [PASSED] 54 VFs
[17:42:27] [PASSED] 55 VFs
[17:42:27] [PASSED] 56 VFs
[17:42:27] [PASSED] 57 VFs
[17:42:27] [PASSED] 58 VFs
[17:42:27] [PASSED] 59 VFs
[17:42:27] [PASSED] 60 VFs
[17:42:27] [PASSED] 61 VFs
[17:42:27] [PASSED] 62 VFs
[17:42:27] [PASSED] 63 VFs
[17:42:27] ================= [PASSED] fair_doorbells ==================
[17:42:27] ======================== fair_ggtt ========================
[17:42:27] [PASSED] 1 VF
[17:42:27] [PASSED] 2 VFs
[17:42:27] [PASSED] 3 VFs
[17:42:27] [PASSED] 4 VFs
[17:42:27] [PASSED] 5 VFs
[17:42:27] [PASSED] 6 VFs
[17:42:27] [PASSED] 7 VFs
[17:42:27] [PASSED] 8 VFs
[17:42:27] [PASSED] 9 VFs
[17:42:27] [PASSED] 10 VFs
[17:42:27] [PASSED] 11 VFs
[17:42:27] [PASSED] 12 VFs
[17:42:27] [PASSED] 13 VFs
[17:42:27] [PASSED] 14 VFs
[17:42:27] [PASSED] 15 VFs
[17:42:27] [PASSED] 16 VFs
[17:42:27] [PASSED] 17 VFs
[17:42:27] [PASSED] 18 VFs
[17:42:27] [PASSED] 19 VFs
[17:42:27] [PASSED] 20 VFs
[17:42:27] [PASSED] 21 VFs
[17:42:27] [PASSED] 22 VFs
[17:42:27] [PASSED] 23 VFs
[17:42:27] [PASSED] 24 VFs
[17:42:27] [PASSED] 25 VFs
[17:42:27] [PASSED] 26 VFs
[17:42:27] [PASSED] 27 VFs
[17:42:27] [PASSED] 28 VFs
[17:42:27] [PASSED] 29 VFs
[17:42:27] [PASSED] 30 VFs
[17:42:27] [PASSED] 31 VFs
[17:42:27] [PASSED] 32 VFs
[17:42:27] [PASSED] 33 VFs
[17:42:27] [PASSED] 34 VFs
[17:42:27] [PASSED] 35 VFs
[17:42:27] [PASSED] 36 VFs
[17:42:27] [PASSED] 37 VFs
[17:42:27] [PASSED] 38 VFs
[17:42:27] [PASSED] 39 VFs
[17:42:27] [PASSED] 40 VFs
[17:42:27] [PASSED] 41 VFs
[17:42:27] [PASSED] 42 VFs
[17:42:27] [PASSED] 43 VFs
[17:42:27] [PASSED] 44 VFs
[17:42:27] [PASSED] 45 VFs
[17:42:27] [PASSED] 46 VFs
[17:42:27] [PASSED] 47 VFs
[17:42:27] [PASSED] 48 VFs
[17:42:27] [PASSED] 49 VFs
[17:42:27] [PASSED] 50 VFs
[17:42:27] [PASSED] 51 VFs
[17:42:27] [PASSED] 52 VFs
[17:42:27] [PASSED] 53 VFs
[17:42:27] [PASSED] 54 VFs
[17:42:27] [PASSED] 55 VFs
[17:42:27] [PASSED] 56 VFs
[17:42:27] [PASSED] 57 VFs
[17:42:27] [PASSED] 58 VFs
[17:42:27] [PASSED] 59 VFs
[17:42:27] [PASSED] 60 VFs
[17:42:27] [PASSED] 61 VFs
[17:42:27] [PASSED] 62 VFs
[17:42:27] [PASSED] 63 VFs
[17:42:27] ==================== [PASSED] fair_ggtt ====================
[17:42:27] ======================== fair_vram ========================
[17:42:27] [PASSED] 1 VF
[17:42:27] [PASSED] 2 VFs
[17:42:27] [PASSED] 3 VFs
[17:42:27] [PASSED] 4 VFs
[17:42:27] [PASSED] 5 VFs
[17:42:27] [PASSED] 6 VFs
[17:42:27] [PASSED] 7 VFs
[17:42:27] [PASSED] 8 VFs
[17:42:27] [PASSED] 9 VFs
[17:42:27] [PASSED] 10 VFs
[17:42:27] [PASSED] 11 VFs
[17:42:27] [PASSED] 12 VFs
[17:42:27] [PASSED] 13 VFs
[17:42:27] [PASSED] 14 VFs
[17:42:27] [PASSED] 15 VFs
[17:42:27] [PASSED] 16 VFs
[17:42:27] [PASSED] 17 VFs
[17:42:27] [PASSED] 18 VFs
[17:42:27] [PASSED] 19 VFs
[17:42:27] [PASSED] 20 VFs
[17:42:27] [PASSED] 21 VFs
[17:42:27] [PASSED] 22 VFs
[17:42:27] [PASSED] 23 VFs
[17:42:27] [PASSED] 24 VFs
[17:42:27] [PASSED] 25 VFs
[17:42:27] [PASSED] 26 VFs
[17:42:27] [PASSED] 27 VFs
[17:42:27] [PASSED] 28 VFs
[17:42:27] [PASSED] 29 VFs
[17:42:27] [PASSED] 30 VFs
[17:42:27] [PASSED] 31 VFs
[17:42:27] [PASSED] 32 VFs
[17:42:27] [PASSED] 33 VFs
[17:42:27] [PASSED] 34 VFs
[17:42:27] [PASSED] 35 VFs
[17:42:27] [PASSED] 36 VFs
[17:42:27] [PASSED] 37 VFs
[17:42:27] [PASSED] 38 VFs
[17:42:27] [PASSED] 39 VFs
[17:42:27] [PASSED] 40 VFs
[17:42:27] [PASSED] 41 VFs
[17:42:27] [PASSED] 42 VFs
[17:42:27] [PASSED] 43 VFs
[17:42:27] [PASSED] 44 VFs
[17:42:27] [PASSED] 45 VFs
[17:42:27] [PASSED] 46 VFs
[17:42:27] [PASSED] 47 VFs
[17:42:27] [PASSED] 48 VFs
[17:42:27] [PASSED] 49 VFs
[17:42:27] [PASSED] 50 VFs
[17:42:27] [PASSED] 51 VFs
[17:42:27] [PASSED] 52 VFs
[17:42:27] [PASSED] 53 VFs
[17:42:27] [PASSED] 54 VFs
[17:42:27] [PASSED] 55 VFs
[17:42:27] [PASSED] 56 VFs
[17:42:27] [PASSED] 57 VFs
[17:42:27] [PASSED] 58 VFs
[17:42:27] [PASSED] 59 VFs
[17:42:27] [PASSED] 60 VFs
[17:42:27] [PASSED] 61 VFs
[17:42:27] [PASSED] 62 VFs
[17:42:27] [PASSED] 63 VFs
[17:42:27] ==================== [PASSED] fair_vram ====================
[17:42:27] ================== [PASSED] pf_gt_config ===================
[17:42:27] ===================== lmtt (1 subtest) =====================
[17:42:27] ======================== test_ops =========================
[17:42:27] [PASSED] 2-level
[17:42:27] [PASSED] multi-level
[17:42:27] ==================== [PASSED] test_ops =====================
[17:42:27] ====================== [PASSED] lmtt =======================
[17:42:27] ================= pf_service (11 subtests) =================
[17:42:27] [PASSED] pf_negotiate_any
[17:42:27] [PASSED] pf_negotiate_base_match
[17:42:27] [PASSED] pf_negotiate_base_newer
[17:42:27] [PASSED] pf_negotiate_base_next
[17:42:27] [SKIPPED] pf_negotiate_base_older
[17:42:27] [PASSED] pf_negotiate_base_prev
[17:42:27] [PASSED] pf_negotiate_latest_match
[17:42:27] [PASSED] pf_negotiate_latest_newer
[17:42:27] [PASSED] pf_negotiate_latest_next
[17:42:27] [SKIPPED] pf_negotiate_latest_older
[17:42:27] [SKIPPED] pf_negotiate_latest_prev
[17:42:27] =================== [PASSED] pf_service ====================
[17:42:27] ================= xe_guc_g2g (2 subtests) ==================
[17:42:27] ============== xe_live_guc_g2g_kunit_default ==============
[17:42:27] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[17:42:27] ============== xe_live_guc_g2g_kunit_allmem ===============
[17:42:27] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[17:42:27] =================== [SKIPPED] xe_guc_g2g ===================
[17:42:27] =================== xe_mocs (2 subtests) ===================
[17:42:27] ================ xe_live_mocs_kernel_kunit ================
[17:42:27] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[17:42:27] ================ xe_live_mocs_reset_kunit =================
[17:42:27] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[17:42:27] ==================== [SKIPPED] xe_mocs =====================
[17:42:27] ================= xe_migrate (2 subtests) ==================
[17:42:27] ================= xe_migrate_sanity_kunit =================
[17:42:27] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[17:42:27] ================== xe_validate_ccs_kunit ==================
[17:42:27] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[17:42:27] =================== [SKIPPED] xe_migrate ===================
[17:42:27] ================== xe_dma_buf (1 subtest) ==================
[17:42:27] ==================== xe_dma_buf_kunit =====================
[17:42:27] ================ [SKIPPED] xe_dma_buf_kunit ================
[17:42:27] =================== [SKIPPED] xe_dma_buf ===================
[17:42:27] ================= xe_bo_shrink (1 subtest) =================
[17:42:27] =================== xe_bo_shrink_kunit ====================
[17:42:27] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[17:42:27] ================== [SKIPPED] xe_bo_shrink ==================
[17:42:27] ==================== xe_bo (2 subtests) ====================
[17:42:27] ================== xe_ccs_migrate_kunit ===================
[17:42:27] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[17:42:27] ==================== xe_bo_evict_kunit ====================
[17:42:27] =============== [SKIPPED] xe_bo_evict_kunit ================
[17:42:27] ===================== [SKIPPED] xe_bo ======================
[17:42:27] ==================== args (13 subtests) ====================
[17:42:27] [PASSED] count_args_test
[17:42:27] [PASSED] call_args_example
[17:42:27] [PASSED] call_args_test
[17:42:27] [PASSED] drop_first_arg_example
[17:42:27] [PASSED] drop_first_arg_test
[17:42:27] [PASSED] first_arg_example
[17:42:27] [PASSED] first_arg_test
[17:42:27] [PASSED] last_arg_example
[17:42:27] [PASSED] last_arg_test
[17:42:27] [PASSED] pick_arg_example
[17:42:27] [PASSED] if_args_example
[17:42:27] [PASSED] if_args_test
[17:42:27] [PASSED] sep_comma_example
[17:42:27] ====================== [PASSED] args =======================
[17:42:27] =================== xe_pci (3 subtests) ====================
[17:42:27] ==================== check_graphics_ip ====================
[17:42:27] [PASSED] 12.00 Xe_LP
[17:42:27] [PASSED] 12.10 Xe_LP+
[17:42:27] [PASSED] 12.55 Xe_HPG
[17:42:27] [PASSED] 12.60 Xe_HPC
[17:42:27] [PASSED] 12.70 Xe_LPG
[17:42:27] [PASSED] 12.71 Xe_LPG
[17:42:27] [PASSED] 12.74 Xe_LPG+
[17:42:27] [PASSED] 20.01 Xe2_HPG
[17:42:27] [PASSED] 20.02 Xe2_HPG
[17:42:27] [PASSED] 20.04 Xe2_LPG
[17:42:27] [PASSED] 30.00 Xe3_LPG
[17:42:27] [PASSED] 30.01 Xe3_LPG
[17:42:27] [PASSED] 30.03 Xe3_LPG
[17:42:27] [PASSED] 30.04 Xe3_LPG
[17:42:27] [PASSED] 30.05 Xe3_LPG
[17:42:27] [PASSED] 35.10 Xe3p_LPG
[17:42:27] [PASSED] 35.11 Xe3p_XPC
[17:42:27] ================ [PASSED] check_graphics_ip ================
[17:42:27] ===================== check_media_ip ======================
[17:42:27] [PASSED] 12.00 Xe_M
[17:42:27] [PASSED] 12.55 Xe_HPM
[17:42:27] [PASSED] 13.00 Xe_LPM+
[17:42:27] [PASSED] 13.01 Xe2_HPM
[17:42:27] [PASSED] 20.00 Xe2_LPM
[17:42:27] [PASSED] 30.00 Xe3_LPM
[17:42:27] [PASSED] 30.02 Xe3_LPM
[17:42:27] [PASSED] 35.00 Xe3p_LPM
[17:42:27] [PASSED] 35.03 Xe3p_HPM
[17:42:27] ================= [PASSED] check_media_ip ==================
[17:42:27] =================== check_platform_desc ===================
[17:42:27] [PASSED] 0x9A60 (TIGERLAKE)
[17:42:27] [PASSED] 0x9A68 (TIGERLAKE)
[17:42:27] [PASSED] 0x9A70 (TIGERLAKE)
[17:42:27] [PASSED] 0x9A40 (TIGERLAKE)
[17:42:27] [PASSED] 0x9A49 (TIGERLAKE)
[17:42:27] [PASSED] 0x9A59 (TIGERLAKE)
[17:42:27] [PASSED] 0x9A78 (TIGERLAKE)
[17:42:27] [PASSED] 0x9AC0 (TIGERLAKE)
[17:42:27] [PASSED] 0x9AC9 (TIGERLAKE)
[17:42:27] [PASSED] 0x9AD9 (TIGERLAKE)
[17:42:27] [PASSED] 0x9AF8 (TIGERLAKE)
[17:42:27] [PASSED] 0x4C80 (ROCKETLAKE)
[17:42:27] [PASSED] 0x4C8A (ROCKETLAKE)
[17:42:27] [PASSED] 0x4C8B (ROCKETLAKE)
[17:42:27] [PASSED] 0x4C8C (ROCKETLAKE)
[17:42:27] [PASSED] 0x4C90 (ROCKETLAKE)
[17:42:27] [PASSED] 0x4C9A (ROCKETLAKE)
[17:42:27] [PASSED] 0x4680 (ALDERLAKE_S)
[17:42:27] [PASSED] 0x4682 (ALDERLAKE_S)
[17:42:27] [PASSED] 0x4688 (ALDERLAKE_S)
[17:42:27] [PASSED] 0x468A (ALDERLAKE_S)
[17:42:27] [PASSED] 0x468B (ALDERLAKE_S)
[17:42:27] [PASSED] 0x4690 (ALDERLAKE_S)
[17:42:27] [PASSED] 0x4692 (ALDERLAKE_S)
[17:42:27] [PASSED] 0x4693 (ALDERLAKE_S)
[17:42:27] [PASSED] 0x46A0 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46A1 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46A2 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46A3 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46A6 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46A8 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46AA (ALDERLAKE_P)
[17:42:27] [PASSED] 0x462A (ALDERLAKE_P)
[17:42:27] [PASSED] 0x4626 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x4628 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46B0 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46B1 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46B2 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46B3 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46C0 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46C1 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46C2 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46C3 (ALDERLAKE_P)
[17:42:27] [PASSED] 0x46D0 (ALDERLAKE_N)
[17:42:27] [PASSED] 0x46D1 (ALDERLAKE_N)
[17:42:27] [PASSED] 0x46D2 (ALDERLAKE_N)
[17:42:27] [PASSED] 0x46D3 (ALDERLAKE_N)
[17:42:27] [PASSED] 0x46D4 (ALDERLAKE_N)
[17:42:27] [PASSED] 0xA721 (ALDERLAKE_P)
[17:42:27] [PASSED] 0xA7A1 (ALDERLAKE_P)
[17:42:27] [PASSED] 0xA7A9 (ALDERLAKE_P)
[17:42:27] [PASSED] 0xA7AC (ALDERLAKE_P)
[17:42:27] [PASSED] 0xA7AD (ALDERLAKE_P)
[17:42:27] [PASSED] 0xA720 (ALDERLAKE_P)
[17:42:27] [PASSED] 0xA7A0 (ALDERLAKE_P)
[17:42:27] [PASSED] 0xA7A8 (ALDERLAKE_P)
[17:42:27] [PASSED] 0xA7AA (ALDERLAKE_P)
[17:42:27] [PASSED] 0xA7AB (ALDERLAKE_P)
[17:42:27] [PASSED] 0xA780 (ALDERLAKE_S)
[17:42:27] [PASSED] 0xA781 (ALDERLAKE_S)
[17:42:27] [PASSED] 0xA782 (ALDERLAKE_S)
[17:42:27] [PASSED] 0xA783 (ALDERLAKE_S)
[17:42:27] [PASSED] 0xA788 (ALDERLAKE_S)
[17:42:27] [PASSED] 0xA789 (ALDERLAKE_S)
[17:42:27] [PASSED] 0xA78A (ALDERLAKE_S)
[17:42:27] [PASSED] 0xA78B (ALDERLAKE_S)
[17:42:27] [PASSED] 0x4905 (DG1)
[17:42:27] [PASSED] 0x4906 (DG1)
[17:42:27] [PASSED] 0x4907 (DG1)
[17:42:27] [PASSED] 0x4908 (DG1)
[17:42:27] [PASSED] 0x4909 (DG1)
[17:42:27] [PASSED] 0x56C0 (DG2)
[17:42:27] [PASSED] 0x56C2 (DG2)
[17:42:27] [PASSED] 0x56C1 (DG2)
[17:42:27] [PASSED] 0x7D51 (METEORLAKE)
[17:42:27] [PASSED] 0x7DD1 (METEORLAKE)
[17:42:27] [PASSED] 0x7D41 (METEORLAKE)
[17:42:27] [PASSED] 0x7D67 (METEORLAKE)
[17:42:27] [PASSED] 0xB640 (METEORLAKE)
[17:42:27] [PASSED] 0x56A0 (DG2)
[17:42:27] [PASSED] 0x56A1 (DG2)
[17:42:27] [PASSED] 0x56A2 (DG2)
[17:42:27] [PASSED] 0x56BE (DG2)
[17:42:27] [PASSED] 0x56BF (DG2)
[17:42:27] [PASSED] 0x5690 (DG2)
[17:42:27] [PASSED] 0x5691 (DG2)
[17:42:27] [PASSED] 0x5692 (DG2)
[17:42:27] [PASSED] 0x56A5 (DG2)
[17:42:27] [PASSED] 0x56A6 (DG2)
[17:42:27] [PASSED] 0x56B0 (DG2)
[17:42:27] [PASSED] 0x56B1 (DG2)
[17:42:27] [PASSED] 0x56BA (DG2)
[17:42:27] [PASSED] 0x56BB (DG2)
[17:42:27] [PASSED] 0x56BC (DG2)
[17:42:27] [PASSED] 0x56BD (DG2)
[17:42:27] [PASSED] 0x5693 (DG2)
[17:42:27] [PASSED] 0x5694 (DG2)
[17:42:27] [PASSED] 0x5695 (DG2)
[17:42:27] [PASSED] 0x56A3 (DG2)
[17:42:27] [PASSED] 0x56A4 (DG2)
[17:42:27] [PASSED] 0x56B2 (DG2)
[17:42:27] [PASSED] 0x56B3 (DG2)
[17:42:27] [PASSED] 0x5696 (DG2)
[17:42:27] [PASSED] 0x5697 (DG2)
[17:42:27] [PASSED] 0xB69 (PVC)
[17:42:27] [PASSED] 0xB6E (PVC)
[17:42:27] [PASSED] 0xBD4 (PVC)
[17:42:27] [PASSED] 0xBD5 (PVC)
[17:42:27] [PASSED] 0xBD6 (PVC)
[17:42:27] [PASSED] 0xBD7 (PVC)
[17:42:27] [PASSED] 0xBD8 (PVC)
[17:42:27] [PASSED] 0xBD9 (PVC)
[17:42:27] [PASSED] 0xBDA (PVC)
[17:42:27] [PASSED] 0xBDB (PVC)
[17:42:27] [PASSED] 0xBE0 (PVC)
[17:42:27] [PASSED] 0xBE1 (PVC)
[17:42:27] [PASSED] 0xBE5 (PVC)
[17:42:27] [PASSED] 0x7D40 (METEORLAKE)
[17:42:27] [PASSED] 0x7D45 (METEORLAKE)
[17:42:27] [PASSED] 0x7D55 (METEORLAKE)
[17:42:27] [PASSED] 0x7D60 (METEORLAKE)
[17:42:27] [PASSED] 0x7DD5 (METEORLAKE)
[17:42:27] [PASSED] 0x6420 (LUNARLAKE)
[17:42:27] [PASSED] 0x64A0 (LUNARLAKE)
[17:42:27] [PASSED] 0x64B0 (LUNARLAKE)
[17:42:27] [PASSED] 0xE202 (BATTLEMAGE)
[17:42:27] [PASSED] 0xE209 (BATTLEMAGE)
[17:42:27] [PASSED] 0xE20B (BATTLEMAGE)
[17:42:27] [PASSED] 0xE20C (BATTLEMAGE)
[17:42:27] [PASSED] 0xE20D (BATTLEMAGE)
[17:42:27] [PASSED] 0xE210 (BATTLEMAGE)
[17:42:27] [PASSED] 0xE211 (BATTLEMAGE)
[17:42:27] [PASSED] 0xE212 (BATTLEMAGE)
[17:42:27] [PASSED] 0xE216 (BATTLEMAGE)
[17:42:27] [PASSED] 0xE220 (BATTLEMAGE)
[17:42:27] [PASSED] 0xE221 (BATTLEMAGE)
[17:42:27] [PASSED] 0xE222 (BATTLEMAGE)
[17:42:27] [PASSED] 0xE223 (BATTLEMAGE)
[17:42:27] [PASSED] 0xB080 (PANTHERLAKE)
[17:42:27] [PASSED] 0xB081 (PANTHERLAKE)
[17:42:27] [PASSED] 0xB082 (PANTHERLAKE)
[17:42:27] [PASSED] 0xB083 (PANTHERLAKE)
[17:42:27] [PASSED] 0xB084 (PANTHERLAKE)
[17:42:27] [PASSED] 0xB085 (PANTHERLAKE)
[17:42:27] [PASSED] 0xB086 (PANTHERLAKE)
[17:42:27] [PASSED] 0xB087 (PANTHERLAKE)
[17:42:27] [PASSED] 0xB08F (PANTHERLAKE)
[17:42:27] [PASSED] 0xB090 (PANTHERLAKE)
[17:42:27] [PASSED] 0xB0A0 (PANTHERLAKE)
[17:42:27] [PASSED] 0xB0B0 (PANTHERLAKE)
[17:42:27] [PASSED] 0xFD80 (PANTHERLAKE)
[17:42:27] [PASSED] 0xFD81 (PANTHERLAKE)
[17:42:27] [PASSED] 0xD740 (NOVALAKE_S)
[17:42:27] [PASSED] 0xD741 (NOVALAKE_S)
[17:42:27] [PASSED] 0xD742 (NOVALAKE_S)
[17:42:27] [PASSED] 0xD743 (NOVALAKE_S)
[17:42:27] [PASSED] 0xD744 (NOVALAKE_S)
[17:42:27] [PASSED] 0xD745 (NOVALAKE_S)
[17:42:27] [PASSED] 0x674C (CRESCENTISLAND)
[17:42:27] [PASSED] 0xD750 (NOVALAKE_P)
[17:42:27] [PASSED] 0xD751 (NOVALAKE_P)
[17:42:27] [PASSED] 0xD752 (NOVALAKE_P)
[17:42:27] [PASSED] 0xD753 (NOVALAKE_P)
[17:42:27] [PASSED] 0xD754 (NOVALAKE_P)
[17:42:27] [PASSED] 0xD755 (NOVALAKE_P)
[17:42:27] [PASSED] 0xD756 (NOVALAKE_P)
[17:42:27] [PASSED] 0xD757 (NOVALAKE_P)
[17:42:27] [PASSED] 0xD75F (NOVALAKE_P)
[17:42:27] =============== [PASSED] check_platform_desc ===============
[17:42:27] ===================== [PASSED] xe_pci ======================
[17:42:27] =================== xe_rtp (2 subtests) ====================
[17:42:27] =============== xe_rtp_process_to_sr_tests ================
[17:42:27] [PASSED] coalesce-same-reg
[17:42:27] [PASSED] no-match-no-add
[17:42:27] [PASSED] match-or
[17:42:27] [PASSED] match-or-xfail
[17:42:27] [PASSED] no-match-no-add-multiple-rules
[17:42:27] [PASSED] two-regs-two-entries
[17:42:27] [PASSED] clr-one-set-other
[17:42:27] [PASSED] set-field
[17:42:27] [PASSED] conflict-duplicate
stty: 'standard input': Inappropriate ioctl for device
[17:42:27] [PASSED] conflict-not-disjoint
[17:42:27] [PASSED] conflict-reg-type
[17:42:27] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[17:42:27] ================== xe_rtp_process_tests ===================
[17:42:27] [PASSED] active1
[17:42:27] [PASSED] active2
[17:42:27] [PASSED] active-inactive
[17:42:27] [PASSED] inactive-active
[17:42:27] [PASSED] inactive-1st_or_active-inactive
[17:42:27] [PASSED] inactive-2nd_or_active-inactive
[17:42:27] [PASSED] inactive-last_or_active-inactive
[17:42:27] [PASSED] inactive-no_or_active-inactive
[17:42:27] ============== [PASSED] xe_rtp_process_tests ===============
[17:42:27] ===================== [PASSED] xe_rtp ======================
[17:42:27] ==================== xe_wa (1 subtest) =====================
[17:42:27] ======================== xe_wa_gt =========================
[17:42:27] [PASSED] TIGERLAKE B0
[17:42:27] [PASSED] DG1 A0
[17:42:27] [PASSED] DG1 B0
[17:42:27] [PASSED] ALDERLAKE_S A0
[17:42:27] [PASSED] ALDERLAKE_S B0
[17:42:27] [PASSED] ALDERLAKE_S C0
[17:42:27] [PASSED] ALDERLAKE_S D0
[17:42:27] [PASSED] ALDERLAKE_P A0
[17:42:27] [PASSED] ALDERLAKE_P B0
[17:42:27] [PASSED] ALDERLAKE_P C0
[17:42:27] [PASSED] ALDERLAKE_S RPLS D0
[17:42:27] [PASSED] ALDERLAKE_P RPLU E0
[17:42:27] [PASSED] DG2 G10 C0
[17:42:27] [PASSED] DG2 G11 B1
[17:42:27] [PASSED] DG2 G12 A1
[17:42:27] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[17:42:27] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[17:42:27] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[17:42:27] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[17:42:27] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[17:42:27] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[17:42:27] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[17:42:27] ==================== [PASSED] xe_wa_gt =====================
[17:42:27] ====================== [PASSED] xe_wa ======================
[17:42:27] ============================================================
[17:42:27] Testing complete. Ran 597 tests: passed: 579, skipped: 18
[17:42:27] Elapsed time: 35.387s total, 4.219s configuring, 30.501s building, 0.621s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[17:42:27] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[17:42:29] 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
[17:42:53] Starting KUnit Kernel (1/1)...
[17:42:53] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[17:42:53] ============ drm_test_pick_cmdline (2 subtests) ============
[17:42:53] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[17:42:53] =============== drm_test_pick_cmdline_named ===============
[17:42:53] [PASSED] NTSC
[17:42:53] [PASSED] NTSC-J
[17:42:53] [PASSED] PAL
[17:42:53] [PASSED] PAL-M
[17:42:53] =========== [PASSED] drm_test_pick_cmdline_named ===========
[17:42:53] ============== [PASSED] drm_test_pick_cmdline ==============
[17:42:53] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[17:42:53] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[17:42:53] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[17:42:53] =========== drm_validate_clone_mode (2 subtests) ===========
[17:42:53] ============== drm_test_check_in_clone_mode ===============
[17:42:53] [PASSED] in_clone_mode
[17:42:53] [PASSED] not_in_clone_mode
[17:42:53] ========== [PASSED] drm_test_check_in_clone_mode ===========
[17:42:53] =============== drm_test_check_valid_clones ===============
[17:42:53] [PASSED] not_in_clone_mode
[17:42:53] [PASSED] valid_clone
[17:42:53] [PASSED] invalid_clone
[17:42:53] =========== [PASSED] drm_test_check_valid_clones ===========
[17:42:53] ============= [PASSED] drm_validate_clone_mode =============
[17:42:53] ============= drm_validate_modeset (1 subtest) =============
[17:42:53] [PASSED] drm_test_check_connector_changed_modeset
[17:42:53] ============== [PASSED] drm_validate_modeset ===============
[17:42:53] ====== drm_test_bridge_get_current_state (2 subtests) ======
[17:42:53] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[17:42:53] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[17:42:53] ======== [PASSED] drm_test_bridge_get_current_state ========
[17:42:53] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[17:42:53] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[17:42:53] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[17:42:53] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[17:42:53] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[17:42:53] ============== drm_bridge_alloc (2 subtests) ===============
[17:42:53] [PASSED] drm_test_drm_bridge_alloc_basic
[17:42:53] [PASSED] drm_test_drm_bridge_alloc_get_put
[17:42:53] ================ [PASSED] drm_bridge_alloc =================
[17:42:53] ============= drm_cmdline_parser (40 subtests) =============
[17:42:53] [PASSED] drm_test_cmdline_force_d_only
[17:42:53] [PASSED] drm_test_cmdline_force_D_only_dvi
[17:42:53] [PASSED] drm_test_cmdline_force_D_only_hdmi
[17:42:53] [PASSED] drm_test_cmdline_force_D_only_not_digital
[17:42:53] [PASSED] drm_test_cmdline_force_e_only
[17:42:53] [PASSED] drm_test_cmdline_res
[17:42:53] [PASSED] drm_test_cmdline_res_vesa
[17:42:53] [PASSED] drm_test_cmdline_res_vesa_rblank
[17:42:53] [PASSED] drm_test_cmdline_res_rblank
[17:42:53] [PASSED] drm_test_cmdline_res_bpp
[17:42:53] [PASSED] drm_test_cmdline_res_refresh
[17:42:53] [PASSED] drm_test_cmdline_res_bpp_refresh
[17:42:53] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[17:42:53] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[17:42:53] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[17:42:53] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[17:42:53] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[17:42:53] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[17:42:53] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[17:42:53] [PASSED] drm_test_cmdline_res_margins_force_on
[17:42:53] [PASSED] drm_test_cmdline_res_vesa_margins
[17:42:53] [PASSED] drm_test_cmdline_name
[17:42:53] [PASSED] drm_test_cmdline_name_bpp
[17:42:53] [PASSED] drm_test_cmdline_name_option
[17:42:53] [PASSED] drm_test_cmdline_name_bpp_option
[17:42:53] [PASSED] drm_test_cmdline_rotate_0
[17:42:53] [PASSED] drm_test_cmdline_rotate_90
[17:42:53] [PASSED] drm_test_cmdline_rotate_180
[17:42:53] [PASSED] drm_test_cmdline_rotate_270
[17:42:53] [PASSED] drm_test_cmdline_hmirror
[17:42:53] [PASSED] drm_test_cmdline_vmirror
[17:42:53] [PASSED] drm_test_cmdline_margin_options
[17:42:53] [PASSED] drm_test_cmdline_multiple_options
[17:42:53] [PASSED] drm_test_cmdline_bpp_extra_and_option
[17:42:53] [PASSED] drm_test_cmdline_extra_and_option
[17:42:53] [PASSED] drm_test_cmdline_freestanding_options
[17:42:53] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[17:42:53] [PASSED] drm_test_cmdline_panel_orientation
[17:42:53] ================ drm_test_cmdline_invalid =================
[17:42:53] [PASSED] margin_only
[17:42:53] [PASSED] interlace_only
[17:42:53] [PASSED] res_missing_x
[17:42:53] [PASSED] res_missing_y
[17:42:53] [PASSED] res_bad_y
[17:42:53] [PASSED] res_missing_y_bpp
[17:42:53] [PASSED] res_bad_bpp
[17:42:53] [PASSED] res_bad_refresh
[17:42:53] [PASSED] res_bpp_refresh_force_on_off
[17:42:53] [PASSED] res_invalid_mode
[17:42:53] [PASSED] res_bpp_wrong_place_mode
[17:42:53] [PASSED] name_bpp_refresh
[17:42:53] [PASSED] name_refresh
[17:42:53] [PASSED] name_refresh_wrong_mode
[17:42:53] [PASSED] name_refresh_invalid_mode
[17:42:53] [PASSED] rotate_multiple
[17:42:53] [PASSED] rotate_invalid_val
[17:42:53] [PASSED] rotate_truncated
[17:42:53] [PASSED] invalid_option
[17:42:53] [PASSED] invalid_tv_option
[17:42:53] [PASSED] truncated_tv_option
[17:42:53] ============ [PASSED] drm_test_cmdline_invalid =============
[17:42:53] =============== drm_test_cmdline_tv_options ===============
[17:42:53] [PASSED] NTSC
[17:42:53] [PASSED] NTSC_443
[17:42:53] [PASSED] NTSC_J
[17:42:53] [PASSED] PAL
[17:42:53] [PASSED] PAL_M
[17:42:53] [PASSED] PAL_N
[17:42:53] [PASSED] SECAM
[17:42:53] [PASSED] MONO_525
[17:42:53] [PASSED] MONO_625
[17:42:53] =========== [PASSED] drm_test_cmdline_tv_options ===========
[17:42:53] =============== [PASSED] drm_cmdline_parser ================
[17:42:53] ========== drmm_connector_hdmi_init (20 subtests) ==========
[17:42:53] [PASSED] drm_test_connector_hdmi_init_valid
[17:42:53] [PASSED] drm_test_connector_hdmi_init_bpc_8
[17:42:53] [PASSED] drm_test_connector_hdmi_init_bpc_10
[17:42:53] [PASSED] drm_test_connector_hdmi_init_bpc_12
[17:42:53] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[17:42:53] [PASSED] drm_test_connector_hdmi_init_bpc_null
[17:42:53] [PASSED] drm_test_connector_hdmi_init_formats_empty
[17:42:53] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[17:42:53] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[17:42:53] [PASSED] supported_formats=0x9 yuv420_allowed=1
[17:42:53] [PASSED] supported_formats=0x9 yuv420_allowed=0
[17:42:53] [PASSED] supported_formats=0x3 yuv420_allowed=1
[17:42:53] [PASSED] supported_formats=0x3 yuv420_allowed=0
[17:42:53] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[17:42:53] [PASSED] drm_test_connector_hdmi_init_null_ddc
[17:42:53] [PASSED] drm_test_connector_hdmi_init_null_product
[17:42:53] [PASSED] drm_test_connector_hdmi_init_null_vendor
[17:42:53] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[17:42:53] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[17:42:53] [PASSED] drm_test_connector_hdmi_init_product_valid
[17:42:53] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[17:42:53] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[17:42:53] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[17:42:53] ========= drm_test_connector_hdmi_init_type_valid =========
[17:42:53] [PASSED] HDMI-A
[17:42:53] [PASSED] HDMI-B
[17:42:53] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[17:42:53] ======== drm_test_connector_hdmi_init_type_invalid ========
[17:42:53] [PASSED] Unknown
[17:42:53] [PASSED] VGA
[17:42:53] [PASSED] DVI-I
[17:42:53] [PASSED] DVI-D
[17:42:53] [PASSED] DVI-A
[17:42:53] [PASSED] Composite
[17:42:53] [PASSED] SVIDEO
[17:42:53] [PASSED] LVDS
[17:42:53] [PASSED] Component
[17:42:53] [PASSED] DIN
[17:42:53] [PASSED] DP
[17:42:53] [PASSED] TV
[17:42:53] [PASSED] eDP
[17:42:53] [PASSED] Virtual
[17:42:53] [PASSED] DSI
[17:42:53] [PASSED] DPI
[17:42:53] [PASSED] Writeback
[17:42:53] [PASSED] SPI
[17:42:53] [PASSED] USB
[17:42:53] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[17:42:53] ============ [PASSED] drmm_connector_hdmi_init =============
[17:42:53] ============= drmm_connector_init (3 subtests) =============
[17:42:53] [PASSED] drm_test_drmm_connector_init
[17:42:53] [PASSED] drm_test_drmm_connector_init_null_ddc
[17:42:53] ========= drm_test_drmm_connector_init_type_valid =========
[17:42:53] [PASSED] Unknown
[17:42:53] [PASSED] VGA
[17:42:53] [PASSED] DVI-I
[17:42:53] [PASSED] DVI-D
[17:42:53] [PASSED] DVI-A
[17:42:53] [PASSED] Composite
[17:42:53] [PASSED] SVIDEO
[17:42:53] [PASSED] LVDS
[17:42:53] [PASSED] Component
[17:42:53] [PASSED] DIN
[17:42:53] [PASSED] DP
[17:42:53] [PASSED] HDMI-A
[17:42:53] [PASSED] HDMI-B
[17:42:53] [PASSED] TV
[17:42:53] [PASSED] eDP
[17:42:53] [PASSED] Virtual
[17:42:53] [PASSED] DSI
[17:42:53] [PASSED] DPI
[17:42:53] [PASSED] Writeback
[17:42:53] [PASSED] SPI
[17:42:53] [PASSED] USB
[17:42:53] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[17:42:53] =============== [PASSED] drmm_connector_init ===============
[17:42:53] ========= drm_connector_dynamic_init (6 subtests) ==========
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_init
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_init_properties
[17:42:53] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[17:42:53] [PASSED] Unknown
[17:42:53] [PASSED] VGA
[17:42:53] [PASSED] DVI-I
[17:42:53] [PASSED] DVI-D
[17:42:53] [PASSED] DVI-A
[17:42:53] [PASSED] Composite
[17:42:53] [PASSED] SVIDEO
[17:42:53] [PASSED] LVDS
[17:42:53] [PASSED] Component
[17:42:53] [PASSED] DIN
[17:42:53] [PASSED] DP
[17:42:53] [PASSED] HDMI-A
[17:42:53] [PASSED] HDMI-B
[17:42:53] [PASSED] TV
[17:42:53] [PASSED] eDP
[17:42:53] [PASSED] Virtual
[17:42:53] [PASSED] DSI
[17:42:53] [PASSED] DPI
[17:42:53] [PASSED] Writeback
[17:42:53] [PASSED] SPI
[17:42:53] [PASSED] USB
[17:42:53] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[17:42:53] ======== drm_test_drm_connector_dynamic_init_name =========
[17:42:53] [PASSED] Unknown
[17:42:53] [PASSED] VGA
[17:42:53] [PASSED] DVI-I
[17:42:53] [PASSED] DVI-D
[17:42:53] [PASSED] DVI-A
[17:42:53] [PASSED] Composite
[17:42:53] [PASSED] SVIDEO
[17:42:53] [PASSED] LVDS
[17:42:53] [PASSED] Component
[17:42:53] [PASSED] DIN
[17:42:53] [PASSED] DP
[17:42:53] [PASSED] HDMI-A
[17:42:53] [PASSED] HDMI-B
[17:42:53] [PASSED] TV
[17:42:53] [PASSED] eDP
[17:42:53] [PASSED] Virtual
[17:42:53] [PASSED] DSI
[17:42:53] [PASSED] DPI
[17:42:53] [PASSED] Writeback
[17:42:53] [PASSED] SPI
[17:42:53] [PASSED] USB
[17:42:53] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[17:42:53] =========== [PASSED] drm_connector_dynamic_init ============
[17:42:53] ==== drm_connector_dynamic_register_early (4 subtests) =====
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[17:42:53] ====== [PASSED] drm_connector_dynamic_register_early =======
[17:42:53] ======= drm_connector_dynamic_register (7 subtests) ========
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[17:42:53] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[17:42:53] ========= [PASSED] drm_connector_dynamic_register ==========
[17:42:53] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[17:42:53] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[17:42:53] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[17:42:53] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[17:42:53] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[17:42:53] ========== drm_test_get_tv_mode_from_name_valid ===========
[17:42:53] [PASSED] NTSC
[17:42:53] [PASSED] NTSC-443
[17:42:53] [PASSED] NTSC-J
[17:42:53] [PASSED] PAL
[17:42:53] [PASSED] PAL-M
[17:42:53] [PASSED] PAL-N
[17:42:53] [PASSED] SECAM
[17:42:53] [PASSED] Mono
[17:42:53] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[17:42:53] [PASSED] drm_test_get_tv_mode_from_name_truncated
[17:42:53] ============ [PASSED] drm_get_tv_mode_from_name ============
[17:42:53] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[17:42:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[17:42:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[17:42:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[17:42:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[17:42:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[17:42:53] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[17:42:53] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[17:42:53] [PASSED] VIC 96
[17:42:53] [PASSED] VIC 97
[17:42:53] [PASSED] VIC 101
[17:42:53] [PASSED] VIC 102
[17:42:53] [PASSED] VIC 106
[17:42:53] [PASSED] VIC 107
[17:42:53] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[17:42:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[17:42:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[17:42:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[17:42:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[17:42:53] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[17:42:53] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[17:42:53] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[17:42:53] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[17:42:53] [PASSED] Automatic
[17:42:53] [PASSED] Full
[17:42:53] [PASSED] Limited 16:235
[17:42:53] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[17:42:53] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[17:42:53] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[17:42:53] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[17:42:53] === drm_test_drm_hdmi_connector_get_output_format_name ====
[17:42:53] [PASSED] RGB
[17:42:53] [PASSED] YUV 4:2:0
[17:42:53] [PASSED] YUV 4:2:2
[17:42:53] [PASSED] YUV 4:4:4
[17:42:53] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[17:42:53] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[17:42:53] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[17:42:53] ============= drm_damage_helper (21 subtests) ==============
[17:42:53] [PASSED] drm_test_damage_iter_no_damage
[17:42:53] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[17:42:53] [PASSED] drm_test_damage_iter_no_damage_src_moved
[17:42:53] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[17:42:53] [PASSED] drm_test_damage_iter_no_damage_not_visible
[17:42:53] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[17:42:53] [PASSED] drm_test_damage_iter_no_damage_no_fb
[17:42:53] [PASSED] drm_test_damage_iter_simple_damage
[17:42:53] [PASSED] drm_test_damage_iter_single_damage
[17:42:53] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[17:42:53] [PASSED] drm_test_damage_iter_single_damage_outside_src
[17:42:53] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[17:42:53] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[17:42:53] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[17:42:53] [PASSED] drm_test_damage_iter_single_damage_src_moved
[17:42:53] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[17:42:53] [PASSED] drm_test_damage_iter_damage
[17:42:53] [PASSED] drm_test_damage_iter_damage_one_intersect
[17:42:53] [PASSED] drm_test_damage_iter_damage_one_outside
[17:42:53] [PASSED] drm_test_damage_iter_damage_src_moved
[17:42:53] [PASSED] drm_test_damage_iter_damage_not_visible
[17:42:53] ================ [PASSED] drm_damage_helper ================
[17:42:53] ============== drm_dp_mst_helper (3 subtests) ==============
[17:42:53] ============== drm_test_dp_mst_calc_pbn_mode ==============
[17:42:53] [PASSED] Clock 154000 BPP 30 DSC disabled
[17:42:53] [PASSED] Clock 234000 BPP 30 DSC disabled
[17:42:53] [PASSED] Clock 297000 BPP 24 DSC disabled
[17:42:53] [PASSED] Clock 332880 BPP 24 DSC enabled
[17:42:53] [PASSED] Clock 324540 BPP 24 DSC enabled
[17:42:53] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[17:42:53] ============== drm_test_dp_mst_calc_pbn_div ===============
[17:42:53] [PASSED] Link rate 2000000 lane count 4
[17:42:53] [PASSED] Link rate 2000000 lane count 2
[17:42:53] [PASSED] Link rate 2000000 lane count 1
[17:42:53] [PASSED] Link rate 1350000 lane count 4
[17:42:53] [PASSED] Link rate 1350000 lane count 2
[17:42:53] [PASSED] Link rate 1350000 lane count 1
[17:42:53] [PASSED] Link rate 1000000 lane count 4
[17:42:53] [PASSED] Link rate 1000000 lane count 2
[17:42:53] [PASSED] Link rate 1000000 lane count 1
[17:42:53] [PASSED] Link rate 810000 lane count 4
[17:42:53] [PASSED] Link rate 810000 lane count 2
[17:42:53] [PASSED] Link rate 810000 lane count 1
[17:42:53] [PASSED] Link rate 540000 lane count 4
[17:42:53] [PASSED] Link rate 540000 lane count 2
[17:42:53] [PASSED] Link rate 540000 lane count 1
[17:42:53] [PASSED] Link rate 270000 lane count 4
[17:42:53] [PASSED] Link rate 270000 lane count 2
[17:42:53] [PASSED] Link rate 270000 lane count 1
[17:42:53] [PASSED] Link rate 162000 lane count 4
[17:42:53] [PASSED] Link rate 162000 lane count 2
[17:42:53] [PASSED] Link rate 162000 lane count 1
[17:42:53] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[17:42:53] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[17:42:53] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[17:42:53] [PASSED] DP_POWER_UP_PHY with port number
[17:42:53] [PASSED] DP_POWER_DOWN_PHY with port number
[17:42:53] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[17:42:53] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[17:42:53] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[17:42:53] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[17:42:53] [PASSED] DP_QUERY_PAYLOAD with port number
[17:42:53] [PASSED] DP_QUERY_PAYLOAD with VCPI
[17:42:53] [PASSED] DP_REMOTE_DPCD_READ with port number
[17:42:53] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[17:42:53] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[17:42:53] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[17:42:53] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[17:42:53] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[17:42:53] [PASSED] DP_REMOTE_I2C_READ with port number
[17:42:53] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[17:42:53] [PASSED] DP_REMOTE_I2C_READ with transactions array
[17:42:53] [PASSED] DP_REMOTE_I2C_WRITE with port number
[17:42:53] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[17:42:53] [PASSED] DP_REMOTE_I2C_WRITE with data array
[17:42:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[17:42:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[17:42:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[17:42:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[17:42:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[17:42:53] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[17:42:53] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[17:42:53] ================ [PASSED] drm_dp_mst_helper ================
[17:42:53] ================== drm_exec (7 subtests) ===================
[17:42:53] [PASSED] sanitycheck
[17:42:53] [PASSED] test_lock
[17:42:53] [PASSED] test_lock_unlock
[17:42:53] [PASSED] test_duplicates
[17:42:53] [PASSED] test_prepare
[17:42:53] [PASSED] test_prepare_array
[17:42:53] [PASSED] test_multiple_loops
[17:42:53] ==================== [PASSED] drm_exec =====================
[17:42:53] =========== drm_format_helper_test (17 subtests) ===========
[17:42:53] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[17:42:53] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[17:42:53] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[17:42:53] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[17:42:53] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[17:42:53] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[17:42:53] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[17:42:53] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[17:42:53] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[17:42:53] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[17:42:53] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[17:42:53] ============== drm_test_fb_xrgb8888_to_mono ===============
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[17:42:53] ==================== drm_test_fb_swab =====================
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ================ [PASSED] drm_test_fb_swab =================
[17:42:53] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[17:42:53] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[17:42:53] [PASSED] single_pixel_source_buffer
[17:42:53] [PASSED] single_pixel_clip_rectangle
[17:42:53] [PASSED] well_known_colors
[17:42:53] [PASSED] destination_pitch
[17:42:53] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[17:42:53] ================= drm_test_fb_clip_offset =================
[17:42:53] [PASSED] pass through
[17:42:53] [PASSED] horizontal offset
[17:42:53] [PASSED] vertical offset
[17:42:53] [PASSED] horizontal and vertical offset
[17:42:53] [PASSED] horizontal offset (custom pitch)
[17:42:53] [PASSED] vertical offset (custom pitch)
[17:42:53] [PASSED] horizontal and vertical offset (custom pitch)
[17:42:53] ============= [PASSED] drm_test_fb_clip_offset =============
[17:42:53] =================== drm_test_fb_memcpy ====================
[17:42:53] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[17:42:53] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[17:42:53] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[17:42:53] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[17:42:53] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[17:42:53] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[17:42:53] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[17:42:53] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[17:42:53] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[17:42:53] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[17:42:53] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[17:42:53] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[17:42:53] =============== [PASSED] drm_test_fb_memcpy ================
[17:42:53] ============= [PASSED] drm_format_helper_test ==============
[17:42:53] ================= drm_format (18 subtests) =================
[17:42:53] [PASSED] drm_test_format_block_width_invalid
[17:42:53] [PASSED] drm_test_format_block_width_one_plane
[17:42:53] [PASSED] drm_test_format_block_width_two_plane
[17:42:53] [PASSED] drm_test_format_block_width_three_plane
[17:42:53] [PASSED] drm_test_format_block_width_tiled
[17:42:53] [PASSED] drm_test_format_block_height_invalid
[17:42:53] [PASSED] drm_test_format_block_height_one_plane
[17:42:53] [PASSED] drm_test_format_block_height_two_plane
[17:42:53] [PASSED] drm_test_format_block_height_three_plane
[17:42:53] [PASSED] drm_test_format_block_height_tiled
[17:42:53] [PASSED] drm_test_format_min_pitch_invalid
[17:42:53] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[17:42:53] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[17:42:53] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[17:42:53] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[17:42:53] [PASSED] drm_test_format_min_pitch_two_plane
[17:42:53] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[17:42:53] [PASSED] drm_test_format_min_pitch_tiled
[17:42:53] =================== [PASSED] drm_format ====================
[17:42:53] ============== drm_framebuffer (10 subtests) ===============
[17:42:53] ========== drm_test_framebuffer_check_src_coords ==========
[17:42:53] [PASSED] Success: source fits into fb
[17:42:53] [PASSED] Fail: overflowing fb with x-axis coordinate
[17:42:53] [PASSED] Fail: overflowing fb with y-axis coordinate
[17:42:53] [PASSED] Fail: overflowing fb with source width
[17:42:53] [PASSED] Fail: overflowing fb with source height
[17:42:53] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[17:42:53] [PASSED] drm_test_framebuffer_cleanup
[17:42:53] =============== drm_test_framebuffer_create ===============
[17:42:53] [PASSED] ABGR8888 normal sizes
[17:42:53] [PASSED] ABGR8888 max sizes
[17:42:53] [PASSED] ABGR8888 pitch greater than min required
[17:42:53] [PASSED] ABGR8888 pitch less than min required
[17:42:53] [PASSED] ABGR8888 Invalid width
[17:42:53] [PASSED] ABGR8888 Invalid buffer handle
[17:42:53] [PASSED] No pixel format
[17:42:53] [PASSED] ABGR8888 Width 0
[17:42:53] [PASSED] ABGR8888 Height 0
[17:42:53] [PASSED] ABGR8888 Out of bound height * pitch combination
[17:42:53] [PASSED] ABGR8888 Large buffer offset
[17:42:53] [PASSED] ABGR8888 Buffer offset for inexistent plane
[17:42:53] [PASSED] ABGR8888 Invalid flag
[17:42:53] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[17:42:53] [PASSED] ABGR8888 Valid buffer modifier
[17:42:53] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[17:42:53] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[17:42:53] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[17:42:53] [PASSED] NV12 Normal sizes
[17:42:53] [PASSED] NV12 Max sizes
[17:42:53] [PASSED] NV12 Invalid pitch
[17:42:53] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[17:42:53] [PASSED] NV12 different modifier per-plane
[17:42:53] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[17:42:53] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[17:42:53] [PASSED] NV12 Modifier for inexistent plane
[17:42:53] [PASSED] NV12 Handle for inexistent plane
[17:42:53] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[17:42:53] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[17:42:53] [PASSED] YVU420 Normal sizes
[17:42:53] [PASSED] YVU420 Max sizes
[17:42:53] [PASSED] YVU420 Invalid pitch
[17:42:53] [PASSED] YVU420 Different pitches
[17:42:53] [PASSED] YVU420 Different buffer offsets/pitches
[17:42:53] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[17:42:53] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[17:42:53] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[17:42:53] [PASSED] YVU420 Valid modifier
[17:42:53] [PASSED] YVU420 Different modifiers per plane
[17:42:53] [PASSED] YVU420 Modifier for inexistent plane
[17:42:53] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[17:42:53] [PASSED] X0L2 Normal sizes
[17:42:53] [PASSED] X0L2 Max sizes
[17:42:53] [PASSED] X0L2 Invalid pitch
[17:42:53] [PASSED] X0L2 Pitch greater than minimum required
[17:42:53] [PASSED] X0L2 Handle for inexistent plane
[17:42:53] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[17:42:53] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[17:42:53] [PASSED] X0L2 Valid modifier
[17:42:53] [PASSED] X0L2 Modifier for inexistent plane
[17:42:53] =========== [PASSED] drm_test_framebuffer_create ===========
[17:42:53] [PASSED] drm_test_framebuffer_free
[17:42:53] [PASSED] drm_test_framebuffer_init
[17:42:53] [PASSED] drm_test_framebuffer_init_bad_format
[17:42:53] [PASSED] drm_test_framebuffer_init_dev_mismatch
[17:42:53] [PASSED] drm_test_framebuffer_lookup
[17:42:53] [PASSED] drm_test_framebuffer_lookup_inexistent
[17:42:53] [PASSED] drm_test_framebuffer_modifiers_not_supported
[17:42:53] ================= [PASSED] drm_framebuffer =================
[17:42:53] ================ drm_gem_shmem (8 subtests) ================
[17:42:53] [PASSED] drm_gem_shmem_test_obj_create
[17:42:53] [PASSED] drm_gem_shmem_test_obj_create_private
[17:42:53] [PASSED] drm_gem_shmem_test_pin_pages
[17:42:53] [PASSED] drm_gem_shmem_test_vmap
[17:42:53] [PASSED] drm_gem_shmem_test_get_sg_table
[17:42:53] [PASSED] drm_gem_shmem_test_get_pages_sgt
[17:42:53] [PASSED] drm_gem_shmem_test_madvise
[17:42:53] [PASSED] drm_gem_shmem_test_purge
[17:42:53] ================== [PASSED] drm_gem_shmem ==================
[17:42:53] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[17:42:53] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[17:42:53] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[17:42:53] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[17:42:53] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[17:42:53] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[17:42:53] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[17:42:53] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[17:42:53] [PASSED] Automatic
[17:42:53] [PASSED] Full
[17:42:53] [PASSED] Limited 16:235
[17:42:53] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[17:42:53] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[17:42:53] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[17:42:53] [PASSED] drm_test_check_disable_connector
[17:42:53] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[17:42:53] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[17:42:53] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[17:42:53] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[17:42:53] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[17:42:53] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[17:42:53] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[17:42:53] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[17:42:53] [PASSED] drm_test_check_output_bpc_dvi
[17:42:53] [PASSED] drm_test_check_output_bpc_format_vic_1
[17:42:53] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[17:42:53] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[17:42:53] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[17:42:53] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[17:42:53] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[17:42:53] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[17:42:53] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[17:42:53] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[17:42:53] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[17:42:53] [PASSED] drm_test_check_broadcast_rgb_value
[17:42:53] [PASSED] drm_test_check_bpc_8_value
[17:42:53] [PASSED] drm_test_check_bpc_10_value
[17:42:53] [PASSED] drm_test_check_bpc_12_value
[17:42:53] [PASSED] drm_test_check_format_value
[17:42:53] [PASSED] drm_test_check_tmds_char_value
[17:42:53] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[17:42:53] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[17:42:53] [PASSED] drm_test_check_mode_valid
[17:42:53] [PASSED] drm_test_check_mode_valid_reject
[17:42:53] [PASSED] drm_test_check_mode_valid_reject_rate
[17:42:53] [PASSED] drm_test_check_mode_valid_reject_max_clock
[17:42:53] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[17:42:53] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[17:42:53] [PASSED] drm_test_check_infoframes
[17:42:53] [PASSED] drm_test_check_reject_avi_infoframe
[17:42:53] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[17:42:53] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[17:42:53] [PASSED] drm_test_check_reject_audio_infoframe
[17:42:53] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[17:42:53] ================= drm_managed (2 subtests) =================
[17:42:53] [PASSED] drm_test_managed_release_action
[17:42:53] [PASSED] drm_test_managed_run_action
[17:42:53] =================== [PASSED] drm_managed ===================
[17:42:53] =================== drm_mm (6 subtests) ====================
[17:42:53] [PASSED] drm_test_mm_init
[17:42:53] [PASSED] drm_test_mm_debug
[17:42:53] [PASSED] drm_test_mm_align32
[17:42:53] [PASSED] drm_test_mm_align64
[17:42:53] [PASSED] drm_test_mm_lowest
[17:42:53] [PASSED] drm_test_mm_highest
[17:42:53] ===================== [PASSED] drm_mm ======================
[17:42:53] ============= drm_modes_analog_tv (5 subtests) =============
[17:42:53] [PASSED] drm_test_modes_analog_tv_mono_576i
[17:42:53] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[17:42:53] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[17:42:53] [PASSED] drm_test_modes_analog_tv_pal_576i
[17:42:53] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[17:42:53] =============== [PASSED] drm_modes_analog_tv ===============
[17:42:53] ============== drm_plane_helper (2 subtests) ===============
[17:42:53] =============== drm_test_check_plane_state ================
[17:42:53] [PASSED] clipping_simple
[17:42:53] [PASSED] clipping_rotate_reflect
[17:42:53] [PASSED] positioning_simple
[17:42:53] [PASSED] upscaling
[17:42:53] [PASSED] downscaling
[17:42:53] [PASSED] rounding1
[17:42:53] [PASSED] rounding2
[17:42:53] [PASSED] rounding3
[17:42:53] [PASSED] rounding4
[17:42:53] =========== [PASSED] drm_test_check_plane_state ============
[17:42:53] =========== drm_test_check_invalid_plane_state ============
[17:42:53] [PASSED] positioning_invalid
[17:42:53] [PASSED] upscaling_invalid
[17:42:53] [PASSED] downscaling_invalid
[17:42:53] ======= [PASSED] drm_test_check_invalid_plane_state ========
[17:42:53] ================ [PASSED] drm_plane_helper =================
[17:42:53] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[17:42:53] ====== drm_test_connector_helper_tv_get_modes_check =======
[17:42:53] [PASSED] None
[17:42:53] [PASSED] PAL
[17:42:53] [PASSED] NTSC
[17:42:53] [PASSED] Both, NTSC Default
[17:42:53] [PASSED] Both, PAL Default
[17:42:53] [PASSED] Both, NTSC Default, with PAL on command-line
[17:42:53] [PASSED] Both, PAL Default, with NTSC on command-line
[17:42:53] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[17:42:53] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[17:42:53] ================== drm_rect (9 subtests) ===================
[17:42:53] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[17:42:53] [PASSED] drm_test_rect_clip_scaled_not_clipped
[17:42:53] [PASSED] drm_test_rect_clip_scaled_clipped
[17:42:53] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[17:42:53] ================= drm_test_rect_intersect =================
[17:42:53] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[17:42:53] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[17:42:53] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[17:42:53] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[17:42:53] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[17:42:53] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[17:42:53] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[17:42:53] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[17:42:53] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[17:42:53] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[17:42:53] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[17:42:53] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[17:42:53] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[17:42:53] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[17:42:53] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[17:42:53] ============= [PASSED] drm_test_rect_intersect =============
[17:42:53] ================ drm_test_rect_calc_hscale ================
[17:42:53] [PASSED] normal use
[17:42:53] [PASSED] out of max range
[17:42:53] [PASSED] out of min range
[17:42:53] [PASSED] zero dst
[17:42:53] [PASSED] negative src
[17:42:53] [PASSED] negative dst
[17:42:53] ============ [PASSED] drm_test_rect_calc_hscale ============
[17:42:53] ================ drm_test_rect_calc_vscale ================
[17:42:53] [PASSED] normal use
[17:42:53] [PASSED] out of max range
[17:42:53] [PASSED] out of min range
[17:42:53] [PASSED] zero dst
[17:42:53] [PASSED] negative src
[17:42:53] [PASSED] negative dst
stty: 'standard input': Inappropriate ioctl for device
[17:42:53] ============ [PASSED] drm_test_rect_calc_vscale ============
[17:42:53] ================== drm_test_rect_rotate ===================
[17:42:53] [PASSED] reflect-x
[17:42:53] [PASSED] reflect-y
[17:42:53] [PASSED] rotate-0
[17:42:53] [PASSED] rotate-90
[17:42:53] [PASSED] rotate-180
[17:42:53] [PASSED] rotate-270
[17:42:53] ============== [PASSED] drm_test_rect_rotate ===============
[17:42:53] ================ drm_test_rect_rotate_inv =================
[17:42:53] [PASSED] reflect-x
[17:42:53] [PASSED] reflect-y
[17:42:53] [PASSED] rotate-0
[17:42:53] [PASSED] rotate-90
[17:42:53] [PASSED] rotate-180
[17:42:53] [PASSED] rotate-270
[17:42:53] ============ [PASSED] drm_test_rect_rotate_inv =============
[17:42:53] ==================== [PASSED] drm_rect =====================
[17:42:53] ============ drm_sysfb_modeset_test (1 subtest) ============
[17:42:53] ============ drm_test_sysfb_build_fourcc_list =============
[17:42:53] [PASSED] no native formats
[17:42:53] [PASSED] XRGB8888 as native format
[17:42:53] [PASSED] remove duplicates
[17:42:53] [PASSED] convert alpha formats
[17:42:53] [PASSED] random formats
[17:42:53] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[17:42:53] ============= [PASSED] drm_sysfb_modeset_test ==============
[17:42:53] ================== drm_fixp (2 subtests) ===================
[17:42:53] [PASSED] drm_test_int2fixp
[17:42:53] [PASSED] drm_test_sm2fixp
[17:42:53] ==================== [PASSED] drm_fixp =====================
[17:42:53] ============================================================
[17:42:53] Testing complete. Ran 621 tests: passed: 621
[17:42:53] Elapsed time: 26.037s total, 1.659s configuring, 24.210s building, 0.134s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[17:42:53] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[17:42:55] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[17:43:05] Starting KUnit Kernel (1/1)...
[17:43:05] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[17:43:05] ================= ttm_device (5 subtests) ==================
[17:43:05] [PASSED] ttm_device_init_basic
[17:43:05] [PASSED] ttm_device_init_multiple
[17:43:05] [PASSED] ttm_device_fini_basic
[17:43:05] [PASSED] ttm_device_init_no_vma_man
[17:43:05] ================== ttm_device_init_pools ==================
[17:43:05] [PASSED] No DMA allocations, no DMA32 required
[17:43:05] [PASSED] DMA allocations, DMA32 required
[17:43:05] [PASSED] No DMA allocations, DMA32 required
[17:43:05] [PASSED] DMA allocations, no DMA32 required
[17:43:05] ============== [PASSED] ttm_device_init_pools ==============
[17:43:05] =================== [PASSED] ttm_device ====================
[17:43:05] ================== ttm_pool (8 subtests) ===================
[17:43:05] ================== ttm_pool_alloc_basic ===================
[17:43:05] [PASSED] One page
[17:43:05] [PASSED] More than one page
[17:43:05] [PASSED] Above the allocation limit
[17:43:05] [PASSED] One page, with coherent DMA mappings enabled
[17:43:05] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[17:43:05] ============== [PASSED] ttm_pool_alloc_basic ===============
[17:43:05] ============== ttm_pool_alloc_basic_dma_addr ==============
[17:43:05] [PASSED] One page
[17:43:05] [PASSED] More than one page
[17:43:05] [PASSED] Above the allocation limit
[17:43:05] [PASSED] One page, with coherent DMA mappings enabled
[17:43:05] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[17:43:05] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[17:43:05] [PASSED] ttm_pool_alloc_order_caching_match
[17:43:05] [PASSED] ttm_pool_alloc_caching_mismatch
[17:43:05] [PASSED] ttm_pool_alloc_order_mismatch
[17:43:05] [PASSED] ttm_pool_free_dma_alloc
[17:43:05] [PASSED] ttm_pool_free_no_dma_alloc
[17:43:05] [PASSED] ttm_pool_fini_basic
[17:43:05] ==================== [PASSED] ttm_pool =====================
[17:43:05] ================ ttm_resource (8 subtests) =================
[17:43:05] ================= ttm_resource_init_basic =================
[17:43:05] [PASSED] Init resource in TTM_PL_SYSTEM
[17:43:05] [PASSED] Init resource in TTM_PL_VRAM
[17:43:05] [PASSED] Init resource in a private placement
[17:43:05] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[17:43:05] ============= [PASSED] ttm_resource_init_basic =============
[17:43:05] [PASSED] ttm_resource_init_pinned
[17:43:05] [PASSED] ttm_resource_fini_basic
[17:43:05] [PASSED] ttm_resource_manager_init_basic
[17:43:05] [PASSED] ttm_resource_manager_usage_basic
[17:43:05] [PASSED] ttm_resource_manager_set_used_basic
[17:43:05] [PASSED] ttm_sys_man_alloc_basic
[17:43:05] [PASSED] ttm_sys_man_free_basic
[17:43:05] ================== [PASSED] ttm_resource ===================
[17:43:05] =================== ttm_tt (15 subtests) ===================
[17:43:05] ==================== ttm_tt_init_basic ====================
[17:43:05] [PASSED] Page-aligned size
[17:43:05] [PASSED] Extra pages requested
[17:43:05] ================ [PASSED] ttm_tt_init_basic ================
[17:43:05] [PASSED] ttm_tt_init_misaligned
[17:43:05] [PASSED] ttm_tt_fini_basic
[17:43:05] [PASSED] ttm_tt_fini_sg
[17:43:05] [PASSED] ttm_tt_fini_shmem
[17:43:05] [PASSED] ttm_tt_create_basic
[17:43:05] [PASSED] ttm_tt_create_invalid_bo_type
[17:43:05] [PASSED] ttm_tt_create_ttm_exists
[17:43:05] [PASSED] ttm_tt_create_failed
[17:43:05] [PASSED] ttm_tt_destroy_basic
[17:43:05] [PASSED] ttm_tt_populate_null_ttm
[17:43:05] [PASSED] ttm_tt_populate_populated_ttm
[17:43:05] [PASSED] ttm_tt_unpopulate_basic
[17:43:05] [PASSED] ttm_tt_unpopulate_empty_ttm
[17:43:05] [PASSED] ttm_tt_swapin_basic
[17:43:05] ===================== [PASSED] ttm_tt ======================
[17:43:05] =================== ttm_bo (14 subtests) ===================
[17:43:05] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[17:43:05] [PASSED] Cannot be interrupted and sleeps
[17:43:05] [PASSED] Cannot be interrupted, locks straight away
[17:43:05] [PASSED] Can be interrupted, sleeps
[17:43:05] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[17:43:05] [PASSED] ttm_bo_reserve_locked_no_sleep
[17:43:05] [PASSED] ttm_bo_reserve_no_wait_ticket
[17:43:05] [PASSED] ttm_bo_reserve_double_resv
[17:43:05] [PASSED] ttm_bo_reserve_interrupted
[17:43:05] [PASSED] ttm_bo_reserve_deadlock
[17:43:05] [PASSED] ttm_bo_unreserve_basic
[17:43:05] [PASSED] ttm_bo_unreserve_pinned
[17:43:05] [PASSED] ttm_bo_unreserve_bulk
[17:43:05] [PASSED] ttm_bo_fini_basic
[17:43:05] [PASSED] ttm_bo_fini_shared_resv
[17:43:05] [PASSED] ttm_bo_pin_basic
[17:43:05] [PASSED] ttm_bo_pin_unpin_resource
[17:43:05] [PASSED] ttm_bo_multiple_pin_one_unpin
[17:43:05] ===================== [PASSED] ttm_bo ======================
[17:43:05] ============== ttm_bo_validate (21 subtests) ===============
[17:43:05] ============== ttm_bo_init_reserved_sys_man ===============
[17:43:05] [PASSED] Buffer object for userspace
[17:43:05] [PASSED] Kernel buffer object
[17:43:05] [PASSED] Shared buffer object
[17:43:05] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[17:43:05] ============== ttm_bo_init_reserved_mock_man ==============
[17:43:05] [PASSED] Buffer object for userspace
[17:43:05] [PASSED] Kernel buffer object
[17:43:05] [PASSED] Shared buffer object
[17:43:05] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[17:43:05] [PASSED] ttm_bo_init_reserved_resv
[17:43:05] ================== ttm_bo_validate_basic ==================
[17:43:05] [PASSED] Buffer object for userspace
[17:43:05] [PASSED] Kernel buffer object
[17:43:05] [PASSED] Shared buffer object
[17:43:05] ============== [PASSED] ttm_bo_validate_basic ==============
[17:43:05] [PASSED] ttm_bo_validate_invalid_placement
[17:43:05] ============= ttm_bo_validate_same_placement ==============
[17:43:05] [PASSED] System manager
[17:43:05] [PASSED] VRAM manager
[17:43:05] ========= [PASSED] ttm_bo_validate_same_placement ==========
[17:43:05] [PASSED] ttm_bo_validate_failed_alloc
[17:43:05] [PASSED] ttm_bo_validate_pinned
[17:43:05] [PASSED] ttm_bo_validate_busy_placement
[17:43:05] ================ ttm_bo_validate_multihop =================
[17:43:05] [PASSED] Buffer object for userspace
[17:43:05] [PASSED] Kernel buffer object
[17:43:05] [PASSED] Shared buffer object
[17:43:05] ============ [PASSED] ttm_bo_validate_multihop =============
[17:43:05] ========== ttm_bo_validate_no_placement_signaled ==========
[17:43:05] [PASSED] Buffer object in system domain, no page vector
[17:43:05] [PASSED] Buffer object in system domain with an existing page vector
[17:43:05] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[17:43:05] ======== ttm_bo_validate_no_placement_not_signaled ========
[17:43:05] [PASSED] Buffer object for userspace
[17:43:05] [PASSED] Kernel buffer object
[17:43:05] [PASSED] Shared buffer object
[17:43:05] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[17:43:05] [PASSED] ttm_bo_validate_move_fence_signaled
[17:43:05] ========= ttm_bo_validate_move_fence_not_signaled =========
[17:43:05] [PASSED] Waits for GPU
[17:43:05] [PASSED] Tries to lock straight away
[17:43:05] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[17:43:05] [PASSED] ttm_bo_validate_happy_evict
[17:43:05] [PASSED] ttm_bo_validate_all_pinned_evict
[17:43:05] [PASSED] ttm_bo_validate_allowed_only_evict
[17:43:05] [PASSED] ttm_bo_validate_deleted_evict
[17:43:05] [PASSED] ttm_bo_validate_busy_domain_evict
[17:43:05] [PASSED] ttm_bo_validate_evict_gutting
[17:43:05] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[17:43:05] ================= [PASSED] ttm_bo_validate =================
[17:43:05] ============================================================
[17:43:05] Testing complete. Ran 101 tests: passed: 101
[17:43:05] Elapsed time: 11.600s total, 1.738s configuring, 9.646s building, 0.174s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 24+ messages in thread* Re: [PATCH v3 0/5] Bridges without VGA support
2026-03-07 17:35 [PATCH v3 0/5] Bridges without VGA support Simon Richter
` (6 preceding siblings ...)
2026-03-07 17:43 ` ✓ CI.KUnit: success " Patchwork
@ 2026-03-24 19:34 ` Bjorn Helgaas
7 siblings, 0 replies; 24+ messages in thread
From: Bjorn Helgaas @ 2026-03-24 19:34 UTC (permalink / raw)
To: Simon Richter; +Cc: linux-pci, intel-xe, dri-devel
On Sun, Mar 08, 2026 at 02:35:33AM +0900, Simon Richter wrote:
> Hi,
>
> reformatted the descriptions to follow the style guide, removed unlikely()
> from return code checks.
>
> Companion patch for i915/xe is v3 of
>
> https://patchwork.freedesktop.org/series/161721/
>
> which can be applied independently and should probably go in before the
> __must_check patches at least.
>
> Not sure if these should have a Cc stable. If yes, there is a backport of
> the i915/xe patch as well (what patchwork calls "v4").
>
> Simon Richter (5):
> vgaarb: pass vga_get_uninterruptible() errors to userspace
> vgaarb: pass errors from pci_set_vga_state() up
> vgaarb: mark vga_get() and wrappers as __must_check
> pci: check if VGA decoding was really activated
> pci: mark pci_set_vga_state() as __must_check
>
> drivers/pci/pci.c | 6 ++++++
> drivers/pci/vgaarb.c | 20 +++++++++++++++++---
> include/linux/pci.h | 4 ++--
> include/linux/vgaarb.h | 15 ++++++++-------
> 4 files changed, 33 insertions(+), 12 deletions(-)
Applied to pci/vga for v7.1, thanks!
^ permalink raw reply [flat|nested] 24+ messages in thread