* [PATCH 0/5] bridges without VGA support
@ 2026-02-17 17:04 Simon Richter
2026-02-17 17:04 ` [PATCH 1/5] vgaarb: pass vga_get errors to userspace Simon Richter
` (7 more replies)
0 siblings, 8 replies; 19+ messages in thread
From: Simon Richter @ 2026-02-17 17:04 UTC (permalink / raw)
To: linux-pci; +Cc: intel-xe, dri-devel, Simon Richter
Hi,
this allows bridges to refuse forwarding VGA, and reports this upwards as an
error, because we cannot set up valid decoding for the requested device in this
case.
I think it should be fine to leave VGA forwarding enabled on lower bridges if a
bridge closer to the root refused to enable forwarding, because no accesses can
reach there anyway.
Simon
Simon Richter (5):
vgaarb: pass vga_get errors to userspace
vgaarb: pass errors from pci_set_vga_state up
vgaarb: mark vga_get family as __must_check
pci: check if VGA decoding was really activated
pci: mark return value of pci_set_vga_state as __must_check
drivers/pci/pci.c | 6 ++++++
drivers/pci/vgaarb.c | 22 +++++++++++++++++++---
include/linux/pci.h | 2 +-
include/linux/vgaarb.h | 9 +++++----
4 files changed, 31 insertions(+), 8 deletions(-)
base-commit: 9702969978695d9a699a1f34771580cdbb153b33
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 1/5] vgaarb: pass vga_get errors to userspace
2026-02-17 17:04 [PATCH 0/5] bridges without VGA support Simon Richter
@ 2026-02-17 17:04 ` Simon Richter
2026-02-17 17:04 ` [PATCH 2/5] vgaarb: pass errors from pci_set_vga_state up Simon Richter
` (6 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: Simon Richter @ 2026-02-17 17:04 UTC (permalink / raw)
To: linux-pci; +Cc: intel-xe, dri-devel, Simon Richter
If vga_get fails, return the error code via the write syscall.
Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
---
drivers/pci/vgaarb.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/drivers/pci/vgaarb.c b/drivers/pci/vgaarb.c
index 87143e235033..5c2719cb1bfa 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,12 @@ 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 (unlikely(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] 19+ messages in thread
* [PATCH 2/5] vgaarb: pass errors from pci_set_vga_state up
2026-02-17 17:04 [PATCH 0/5] bridges without VGA support Simon Richter
2026-02-17 17:04 ` [PATCH 1/5] vgaarb: pass vga_get errors to userspace Simon Richter
@ 2026-02-17 17:04 ` Simon Richter
2026-02-17 17:04 ` [PATCH 3/5] vgaarb: mark vga_get family as __must_check Simon Richter
` (5 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: Simon Richter @ 2026-02-17 17:04 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. Pass
this code through __vga_tryget (via ERR_PTR).
Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
---
drivers/pci/vgaarb.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/vgaarb.c b/drivers/pci/vgaarb.c
index 5c2719cb1bfa..322c028539f0 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 = 0;
/*
* 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 (unlikely(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 (unlikely(err))
+ return ERR_PTR(err);
vgadev->owns |= wants;
lock_them:
@@ -455,6 +460,11 @@ 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] 19+ messages in thread
* [PATCH 3/5] vgaarb: mark vga_get family as __must_check
2026-02-17 17:04 [PATCH 0/5] bridges without VGA support Simon Richter
2026-02-17 17:04 ` [PATCH 1/5] vgaarb: pass vga_get errors to userspace Simon Richter
2026-02-17 17:04 ` [PATCH 2/5] vgaarb: pass errors from pci_set_vga_state up Simon Richter
@ 2026-02-17 17:04 ` Simon Richter
2026-02-18 1:51 ` kernel test robot
2026-02-18 5:59 ` kernel test robot
2026-02-17 17:04 ` [PATCH 4/5] pci: check if VGA decoding was really activated Simon Richter
` (4 subsequent siblings)
7 siblings, 2 replies; 19+ messages in thread
From: Simon Richter @ 2026-02-17 17:04 UTC (permalink / raw)
To: linux-pci; +Cc: intel-xe, dri-devel, Simon Richter
These functions can return an error, but some callers expect they don't, and
unconditionally access VGA registers afterwards and call vga_put.
Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
---
include/linux/vgaarb.h | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/include/linux/vgaarb.h b/include/linux/vgaarb.h
index 97129a1bbb7d..de683d499dfa 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,7 +40,7 @@ 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,
+static inline int __must_check vga_get(struct pci_dev *pdev, unsigned int rsrc,
int interruptible)
{
return 0;
@@ -74,7 +75,7 @@ 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,
+static inline int __must_check vga_get_interruptible(struct pci_dev *pdev,
unsigned int rsrc)
{
return vga_get(pdev, rsrc, 1);
@@ -89,7 +90,7 @@ 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,
+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] 19+ messages in thread
* [PATCH 4/5] pci: check if VGA decoding was really activated
2026-02-17 17:04 [PATCH 0/5] bridges without VGA support Simon Richter
` (2 preceding siblings ...)
2026-02-17 17:04 ` [PATCH 3/5] vgaarb: mark vga_get family as __must_check Simon Richter
@ 2026-02-17 17:04 ` Simon Richter
2026-02-17 17:04 ` [PATCH 5/5] pci: mark return value of pci_set_vga_state as __must_check Simon Richter
` (3 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: Simon Richter @ 2026-02-17 17:04 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.
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 f3244630bfd0..0984a0aefb88 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -6198,6 +6198,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] 19+ messages in thread
* [PATCH 5/5] pci: mark return value of pci_set_vga_state as __must_check
2026-02-17 17:04 [PATCH 0/5] bridges without VGA support Simon Richter
` (3 preceding siblings ...)
2026-02-17 17:04 ` [PATCH 4/5] pci: check if VGA decoding was really activated Simon Richter
@ 2026-02-17 17:04 ` Simon Richter
2026-02-17 17:46 ` ✗ CI.checkpatch: warning for bridges without VGA support Patchwork
` (2 subsequent siblings)
7 siblings, 0 replies; 19+ messages in thread
From: Simon Richter @ 2026-02-17 17:04 UTC (permalink / raw)
To: linux-pci; +Cc: intel-xe, dri-devel, Simon Richter
This function can return an error, which should be checked.
The only caller so far is __vga_tryget in vgaarb, which did not check.
Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
---
include/linux/pci.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 1c270f1d5123..08d7c1ae33b5 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1720,7 +1720,7 @@ 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,
+int __must_check pci_set_vga_state(struct pci_dev *pdev, bool decode,
unsigned int command_bits, u32 flags);
/*
--
2.47.3
^ permalink raw reply related [flat|nested] 19+ messages in thread
* ✗ CI.checkpatch: warning for bridges without VGA support
2026-02-17 17:04 [PATCH 0/5] bridges without VGA support Simon Richter
` (4 preceding siblings ...)
2026-02-17 17:04 ` [PATCH 5/5] pci: mark return value of pci_set_vga_state as __must_check Simon Richter
@ 2026-02-17 17:46 ` Patchwork
2026-02-17 17:48 ` ✓ CI.KUnit: success " Patchwork
2026-02-18 13:46 ` [PATCH v2 0/5] Bridges " Simon Richter
7 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2026-02-17 17:46 UTC (permalink / raw)
To: Simon Richter; +Cc: intel-xe
== Series Details ==
Series: bridges without VGA support
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 778e63d100f001fd5fd9534a2defa31b9ea59b9b
Author: Simon Richter <Simon.Richter@hogyros.de>
Date: Wed Feb 18 02:04:19 2026 +0900
pci: mark return value of pci_set_vga_state as __must_check
This function can return an error, which should be checked.
The only caller so far is __vga_tryget in vgaarb, which did not check.
Signed-off-by: Simon Richter <Simon.Richter@hogyros.de>
+ /mt/dim checkpatch e66c64e4f12e55cad35c680f1e328a7c7ee92cab drm-intel
47f637fc4b80 vgaarb: pass vga_get errors to userspace
-:28: ERROR:OPEN_BRACE: that open brace { should be on the previous line
#28: FILE: drivers/pci/vgaarb.c:1170:
+ if (unlikely(err))
+ {
total: 1 errors, 0 warnings, 0 checks, 20 lines checked
9f7e28bdecf3 vgaarb: pass errors from pci_set_vga_state up
-:6: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#6:
pci_set_vga_state returns an error code, which so far has been ignored. Pass
-:49: ERROR:OPEN_BRACE: that open brace { should be on the previous line
#49: FILE: drivers/pci/vgaarb.c:463:
+ if (IS_ERR(conflict))
+ {
total: 1 errors, 1 warnings, 0 checks, 38 lines checked
2de0bad5367d vgaarb: mark vga_get family as __must_check
-:6: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#6:
These functions can return an error, but some callers expect they don't, and
-:21: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#21: FILE: include/linux/vgaarb.h:31:
+int __must_check vga_get(struct pci_dev *pdev, unsigned int rsrc,
+ int interruptible);
-:30: CHECK:LINE_SPACING: Please use a blank line after function/struct/union/enum declarations
#30: FILE: include/linux/vgaarb.h:43:
};
+static inline int __must_check vga_get(struct pci_dev *pdev, unsigned int rsrc,
-:31: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#31: FILE: include/linux/vgaarb.h:44:
+static inline int __must_check vga_get(struct pci_dev *pdev, unsigned int rsrc,
int interruptible)
-:40: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#40: FILE: include/linux/vgaarb.h:79:
+static inline int __must_check vga_get_interruptible(struct pci_dev *pdev,
unsigned int rsrc)
-:49: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#49: FILE: include/linux/vgaarb.h:94:
+static inline int __must_check vga_get_uninterruptible(struct pci_dev *pdev,
unsigned int rsrc)
total: 0 errors, 1 warnings, 5 checks, 33 lines checked
cde677910267 pci: check if VGA decoding was really activated
-:6: WARNING:COMMIT_LOG_LONG_LINE: Prefer a maximum 75 chars per line (possible unwrapped commit description?)
#6:
PCI bridges are allowed to refuse activating VGA decoding, by simply ignoring
-:25: ERROR:SPACING: space required before the open parenthesis '('
#25: FILE: drivers/pci/pci.c:6133:
+ if(!(cmd & PCI_BRIDGE_CTL_VGA))
total: 1 errors, 1 warnings, 0 checks, 12 lines checked
778e63d100f0 pci: mark return value of pci_set_vga_state as __must_check
-:22: CHECK:PARENTHESIS_ALIGNMENT: Alignment should match open parenthesis
#22: FILE: include/linux/pci.h:1701:
+int __must_check pci_set_vga_state(struct pci_dev *pdev, bool decode,
unsigned int command_bits, u32 flags);
total: 0 errors, 0 warnings, 1 checks, 8 lines checked
^ permalink raw reply [flat|nested] 19+ messages in thread
* ✓ CI.KUnit: success for bridges without VGA support
2026-02-17 17:04 [PATCH 0/5] bridges without VGA support Simon Richter
` (5 preceding siblings ...)
2026-02-17 17:46 ` ✗ CI.checkpatch: warning for bridges without VGA support Patchwork
@ 2026-02-17 17:48 ` Patchwork
2026-02-18 13:46 ` [PATCH v2 0/5] Bridges " Simon Richter
7 siblings, 0 replies; 19+ messages in thread
From: Patchwork @ 2026-02-17 17:48 UTC (permalink / raw)
To: Simon Richter; +Cc: intel-xe
== Series Details ==
Series: bridges without VGA support
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:46:59] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[17:47:03] 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:47:35] Starting KUnit Kernel (1/1)...
[17:47:35] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[17:47:35] ================== guc_buf (11 subtests) ===================
[17:47:35] [PASSED] test_smallest
[17:47:35] [PASSED] test_largest
[17:47:35] [PASSED] test_granular
[17:47:35] [PASSED] test_unique
[17:47:35] [PASSED] test_overlap
[17:47:35] [PASSED] test_reusable
[17:47:35] [PASSED] test_too_big
[17:47:35] [PASSED] test_flush
[17:47:35] [PASSED] test_lookup
[17:47:35] [PASSED] test_data
[17:47:35] [PASSED] test_class
[17:47:35] ===================== [PASSED] guc_buf =====================
[17:47:35] =================== guc_dbm (7 subtests) ===================
[17:47:35] [PASSED] test_empty
[17:47:35] [PASSED] test_default
[17:47:35] ======================== test_size ========================
[17:47:35] [PASSED] 4
[17:47:35] [PASSED] 8
[17:47:35] [PASSED] 32
[17:47:35] [PASSED] 256
[17:47:35] ==================== [PASSED] test_size ====================
[17:47:35] ======================= test_reuse ========================
[17:47:35] [PASSED] 4
[17:47:35] [PASSED] 8
[17:47:35] [PASSED] 32
[17:47:35] [PASSED] 256
[17:47:35] =================== [PASSED] test_reuse ====================
[17:47:35] =================== test_range_overlap ====================
[17:47:35] [PASSED] 4
[17:47:35] [PASSED] 8
[17:47:35] [PASSED] 32
[17:47:35] [PASSED] 256
[17:47:35] =============== [PASSED] test_range_overlap ================
[17:47:35] =================== test_range_compact ====================
[17:47:35] [PASSED] 4
[17:47:35] [PASSED] 8
[17:47:35] [PASSED] 32
[17:47:35] [PASSED] 256
[17:47:35] =============== [PASSED] test_range_compact ================
[17:47:35] ==================== test_range_spare =====================
[17:47:35] [PASSED] 4
[17:47:35] [PASSED] 8
[17:47:35] [PASSED] 32
[17:47:35] [PASSED] 256
[17:47:35] ================ [PASSED] test_range_spare =================
[17:47:35] ===================== [PASSED] guc_dbm =====================
[17:47:35] =================== guc_idm (6 subtests) ===================
[17:47:35] [PASSED] bad_init
[17:47:35] [PASSED] no_init
[17:47:35] [PASSED] init_fini
[17:47:35] [PASSED] check_used
[17:47:35] [PASSED] check_quota
[17:47:35] [PASSED] check_all
[17:47:35] ===================== [PASSED] guc_idm =====================
[17:47:35] ================== no_relay (3 subtests) ===================
[17:47:35] [PASSED] xe_drops_guc2pf_if_not_ready
[17:47:35] [PASSED] xe_drops_guc2vf_if_not_ready
[17:47:35] [PASSED] xe_rejects_send_if_not_ready
[17:47:35] ==================== [PASSED] no_relay =====================
[17:47:35] ================== pf_relay (14 subtests) ==================
[17:47:35] [PASSED] pf_rejects_guc2pf_too_short
[17:47:35] [PASSED] pf_rejects_guc2pf_too_long
[17:47:35] [PASSED] pf_rejects_guc2pf_no_payload
[17:47:35] [PASSED] pf_fails_no_payload
[17:47:35] [PASSED] pf_fails_bad_origin
[17:47:35] [PASSED] pf_fails_bad_type
[17:47:35] [PASSED] pf_txn_reports_error
[17:47:35] [PASSED] pf_txn_sends_pf2guc
[17:47:35] [PASSED] pf_sends_pf2guc
[17:47:35] [SKIPPED] pf_loopback_nop
[17:47:35] [SKIPPED] pf_loopback_echo
[17:47:35] [SKIPPED] pf_loopback_fail
[17:47:35] [SKIPPED] pf_loopback_busy
[17:47:35] [SKIPPED] pf_loopback_retry
[17:47:35] ==================== [PASSED] pf_relay =====================
[17:47:35] ================== vf_relay (3 subtests) ===================
[17:47:35] [PASSED] vf_rejects_guc2vf_too_short
[17:47:35] [PASSED] vf_rejects_guc2vf_too_long
[17:47:35] [PASSED] vf_rejects_guc2vf_no_payload
[17:47:35] ==================== [PASSED] vf_relay =====================
[17:47:35] ================ pf_gt_config (6 subtests) =================
[17:47:35] [PASSED] fair_contexts_1vf
[17:47:35] [PASSED] fair_doorbells_1vf
[17:47:35] [PASSED] fair_ggtt_1vf
[17:47:35] ====================== fair_contexts ======================
[17:47:35] [PASSED] 1 VF
[17:47:35] [PASSED] 2 VFs
[17:47:35] [PASSED] 3 VFs
[17:47:35] [PASSED] 4 VFs
[17:47:35] [PASSED] 5 VFs
[17:47:35] [PASSED] 6 VFs
[17:47:35] [PASSED] 7 VFs
[17:47:35] [PASSED] 8 VFs
[17:47:35] [PASSED] 9 VFs
[17:47:35] [PASSED] 10 VFs
[17:47:35] [PASSED] 11 VFs
[17:47:35] [PASSED] 12 VFs
[17:47:35] [PASSED] 13 VFs
[17:47:35] [PASSED] 14 VFs
[17:47:35] [PASSED] 15 VFs
[17:47:35] [PASSED] 16 VFs
[17:47:35] [PASSED] 17 VFs
[17:47:35] [PASSED] 18 VFs
[17:47:35] [PASSED] 19 VFs
[17:47:35] [PASSED] 20 VFs
[17:47:35] [PASSED] 21 VFs
[17:47:35] [PASSED] 22 VFs
[17:47:35] [PASSED] 23 VFs
[17:47:35] [PASSED] 24 VFs
[17:47:35] [PASSED] 25 VFs
[17:47:35] [PASSED] 26 VFs
[17:47:35] [PASSED] 27 VFs
[17:47:35] [PASSED] 28 VFs
[17:47:35] [PASSED] 29 VFs
[17:47:35] [PASSED] 30 VFs
[17:47:35] [PASSED] 31 VFs
[17:47:35] [PASSED] 32 VFs
[17:47:35] [PASSED] 33 VFs
[17:47:35] [PASSED] 34 VFs
[17:47:35] [PASSED] 35 VFs
[17:47:35] [PASSED] 36 VFs
[17:47:35] [PASSED] 37 VFs
[17:47:35] [PASSED] 38 VFs
[17:47:35] [PASSED] 39 VFs
[17:47:35] [PASSED] 40 VFs
[17:47:35] [PASSED] 41 VFs
[17:47:35] [PASSED] 42 VFs
[17:47:35] [PASSED] 43 VFs
[17:47:35] [PASSED] 44 VFs
[17:47:35] [PASSED] 45 VFs
[17:47:35] [PASSED] 46 VFs
[17:47:35] [PASSED] 47 VFs
[17:47:35] [PASSED] 48 VFs
[17:47:35] [PASSED] 49 VFs
[17:47:35] [PASSED] 50 VFs
[17:47:35] [PASSED] 51 VFs
[17:47:35] [PASSED] 52 VFs
[17:47:35] [PASSED] 53 VFs
[17:47:35] [PASSED] 54 VFs
[17:47:35] [PASSED] 55 VFs
[17:47:35] [PASSED] 56 VFs
[17:47:35] [PASSED] 57 VFs
[17:47:35] [PASSED] 58 VFs
[17:47:35] [PASSED] 59 VFs
[17:47:35] [PASSED] 60 VFs
[17:47:35] [PASSED] 61 VFs
[17:47:35] [PASSED] 62 VFs
[17:47:35] [PASSED] 63 VFs
[17:47:35] ================== [PASSED] fair_contexts ==================
[17:47:35] ===================== fair_doorbells ======================
[17:47:35] [PASSED] 1 VF
[17:47:35] [PASSED] 2 VFs
[17:47:35] [PASSED] 3 VFs
[17:47:35] [PASSED] 4 VFs
[17:47:35] [PASSED] 5 VFs
[17:47:35] [PASSED] 6 VFs
[17:47:35] [PASSED] 7 VFs
[17:47:35] [PASSED] 8 VFs
[17:47:35] [PASSED] 9 VFs
[17:47:35] [PASSED] 10 VFs
[17:47:35] [PASSED] 11 VFs
[17:47:35] [PASSED] 12 VFs
[17:47:35] [PASSED] 13 VFs
[17:47:35] [PASSED] 14 VFs
[17:47:35] [PASSED] 15 VFs
[17:47:35] [PASSED] 16 VFs
[17:47:35] [PASSED] 17 VFs
[17:47:35] [PASSED] 18 VFs
[17:47:35] [PASSED] 19 VFs
[17:47:35] [PASSED] 20 VFs
[17:47:35] [PASSED] 21 VFs
[17:47:35] [PASSED] 22 VFs
[17:47:35] [PASSED] 23 VFs
[17:47:35] [PASSED] 24 VFs
[17:47:35] [PASSED] 25 VFs
[17:47:35] [PASSED] 26 VFs
[17:47:35] [PASSED] 27 VFs
[17:47:35] [PASSED] 28 VFs
[17:47:35] [PASSED] 29 VFs
[17:47:35] [PASSED] 30 VFs
[17:47:35] [PASSED] 31 VFs
[17:47:35] [PASSED] 32 VFs
[17:47:35] [PASSED] 33 VFs
[17:47:35] [PASSED] 34 VFs
[17:47:35] [PASSED] 35 VFs
[17:47:35] [PASSED] 36 VFs
[17:47:35] [PASSED] 37 VFs
[17:47:35] [PASSED] 38 VFs
[17:47:35] [PASSED] 39 VFs
[17:47:35] [PASSED] 40 VFs
[17:47:35] [PASSED] 41 VFs
[17:47:35] [PASSED] 42 VFs
[17:47:35] [PASSED] 43 VFs
[17:47:35] [PASSED] 44 VFs
[17:47:35] [PASSED] 45 VFs
[17:47:35] [PASSED] 46 VFs
[17:47:35] [PASSED] 47 VFs
[17:47:35] [PASSED] 48 VFs
[17:47:35] [PASSED] 49 VFs
[17:47:35] [PASSED] 50 VFs
[17:47:35] [PASSED] 51 VFs
[17:47:35] [PASSED] 52 VFs
[17:47:35] [PASSED] 53 VFs
[17:47:35] [PASSED] 54 VFs
[17:47:35] [PASSED] 55 VFs
[17:47:35] [PASSED] 56 VFs
[17:47:35] [PASSED] 57 VFs
[17:47:35] [PASSED] 58 VFs
[17:47:35] [PASSED] 59 VFs
[17:47:35] [PASSED] 60 VFs
[17:47:35] [PASSED] 61 VFs
[17:47:35] [PASSED] 62 VFs
[17:47:35] [PASSED] 63 VFs
[17:47:35] ================= [PASSED] fair_doorbells ==================
[17:47:35] ======================== fair_ggtt ========================
[17:47:35] [PASSED] 1 VF
[17:47:35] [PASSED] 2 VFs
[17:47:35] [PASSED] 3 VFs
[17:47:35] [PASSED] 4 VFs
[17:47:35] [PASSED] 5 VFs
[17:47:35] [PASSED] 6 VFs
[17:47:35] [PASSED] 7 VFs
[17:47:35] [PASSED] 8 VFs
[17:47:35] [PASSED] 9 VFs
[17:47:35] [PASSED] 10 VFs
[17:47:35] [PASSED] 11 VFs
[17:47:35] [PASSED] 12 VFs
[17:47:35] [PASSED] 13 VFs
[17:47:35] [PASSED] 14 VFs
[17:47:35] [PASSED] 15 VFs
[17:47:35] [PASSED] 16 VFs
[17:47:35] [PASSED] 17 VFs
[17:47:35] [PASSED] 18 VFs
[17:47:35] [PASSED] 19 VFs
[17:47:35] [PASSED] 20 VFs
[17:47:35] [PASSED] 21 VFs
[17:47:35] [PASSED] 22 VFs
[17:47:35] [PASSED] 23 VFs
[17:47:35] [PASSED] 24 VFs
[17:47:35] [PASSED] 25 VFs
[17:47:35] [PASSED] 26 VFs
[17:47:35] [PASSED] 27 VFs
[17:47:35] [PASSED] 28 VFs
[17:47:35] [PASSED] 29 VFs
[17:47:35] [PASSED] 30 VFs
[17:47:35] [PASSED] 31 VFs
[17:47:35] [PASSED] 32 VFs
[17:47:35] [PASSED] 33 VFs
[17:47:35] [PASSED] 34 VFs
[17:47:35] [PASSED] 35 VFs
[17:47:35] [PASSED] 36 VFs
[17:47:35] [PASSED] 37 VFs
[17:47:35] [PASSED] 38 VFs
[17:47:35] [PASSED] 39 VFs
[17:47:35] [PASSED] 40 VFs
[17:47:35] [PASSED] 41 VFs
[17:47:35] [PASSED] 42 VFs
[17:47:35] [PASSED] 43 VFs
[17:47:35] [PASSED] 44 VFs
[17:47:35] [PASSED] 45 VFs
[17:47:35] [PASSED] 46 VFs
[17:47:35] [PASSED] 47 VFs
[17:47:35] [PASSED] 48 VFs
[17:47:35] [PASSED] 49 VFs
[17:47:35] [PASSED] 50 VFs
[17:47:35] [PASSED] 51 VFs
[17:47:35] [PASSED] 52 VFs
[17:47:35] [PASSED] 53 VFs
[17:47:35] [PASSED] 54 VFs
[17:47:35] [PASSED] 55 VFs
[17:47:35] [PASSED] 56 VFs
[17:47:35] [PASSED] 57 VFs
[17:47:35] [PASSED] 58 VFs
[17:47:35] [PASSED] 59 VFs
[17:47:35] [PASSED] 60 VFs
[17:47:35] [PASSED] 61 VFs
[17:47:35] [PASSED] 62 VFs
[17:47:35] [PASSED] 63 VFs
[17:47:35] ==================== [PASSED] fair_ggtt ====================
[17:47:35] ================== [PASSED] pf_gt_config ===================
[17:47:35] ===================== lmtt (1 subtest) =====================
[17:47:35] ======================== test_ops =========================
[17:47:35] [PASSED] 2-level
[17:47:35] [PASSED] multi-level
[17:47:35] ==================== [PASSED] test_ops =====================
[17:47:35] ====================== [PASSED] lmtt =======================
[17:47:35] ================= pf_service (11 subtests) =================
[17:47:35] [PASSED] pf_negotiate_any
[17:47:35] [PASSED] pf_negotiate_base_match
[17:47:35] [PASSED] pf_negotiate_base_newer
[17:47:35] [PASSED] pf_negotiate_base_next
[17:47:35] [SKIPPED] pf_negotiate_base_older
[17:47:35] [PASSED] pf_negotiate_base_prev
[17:47:35] [PASSED] pf_negotiate_latest_match
[17:47:35] [PASSED] pf_negotiate_latest_newer
[17:47:35] [PASSED] pf_negotiate_latest_next
[17:47:35] [SKIPPED] pf_negotiate_latest_older
[17:47:35] [SKIPPED] pf_negotiate_latest_prev
[17:47:35] =================== [PASSED] pf_service ====================
[17:47:35] ================= xe_guc_g2g (2 subtests) ==================
[17:47:35] ============== xe_live_guc_g2g_kunit_default ==============
[17:47:35] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[17:47:35] ============== xe_live_guc_g2g_kunit_allmem ===============
[17:47:35] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[17:47:35] =================== [SKIPPED] xe_guc_g2g ===================
[17:47:35] =================== xe_mocs (2 subtests) ===================
[17:47:35] ================ xe_live_mocs_kernel_kunit ================
[17:47:35] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[17:47:35] ================ xe_live_mocs_reset_kunit =================
[17:47:35] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[17:47:35] ==================== [SKIPPED] xe_mocs =====================
[17:47:35] ================= xe_migrate (2 subtests) ==================
[17:47:35] ================= xe_migrate_sanity_kunit =================
[17:47:35] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[17:47:35] ================== xe_validate_ccs_kunit ==================
[17:47:35] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[17:47:35] =================== [SKIPPED] xe_migrate ===================
[17:47:35] ================== xe_dma_buf (1 subtest) ==================
[17:47:35] ==================== xe_dma_buf_kunit =====================
[17:47:35] ================ [SKIPPED] xe_dma_buf_kunit ================
[17:47:35] =================== [SKIPPED] xe_dma_buf ===================
[17:47:35] ================= xe_bo_shrink (1 subtest) =================
[17:47:35] =================== xe_bo_shrink_kunit ====================
[17:47:35] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[17:47:35] ================== [SKIPPED] xe_bo_shrink ==================
[17:47:35] ==================== xe_bo (2 subtests) ====================
[17:47:35] ================== xe_ccs_migrate_kunit ===================
[17:47:35] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[17:47:35] ==================== xe_bo_evict_kunit ====================
[17:47:35] =============== [SKIPPED] xe_bo_evict_kunit ================
[17:47:35] ===================== [SKIPPED] xe_bo ======================
[17:47:35] ==================== args (13 subtests) ====================
[17:47:35] [PASSED] count_args_test
[17:47:35] [PASSED] call_args_example
[17:47:35] [PASSED] call_args_test
[17:47:35] [PASSED] drop_first_arg_example
[17:47:35] [PASSED] drop_first_arg_test
[17:47:35] [PASSED] first_arg_example
[17:47:35] [PASSED] first_arg_test
[17:47:35] [PASSED] last_arg_example
[17:47:35] [PASSED] last_arg_test
[17:47:35] [PASSED] pick_arg_example
[17:47:35] [PASSED] if_args_example
[17:47:35] [PASSED] if_args_test
[17:47:35] [PASSED] sep_comma_example
[17:47:35] ====================== [PASSED] args =======================
[17:47:35] =================== xe_pci (3 subtests) ====================
[17:47:35] ==================== check_graphics_ip ====================
[17:47:35] [PASSED] 12.00 Xe_LP
[17:47:35] [PASSED] 12.10 Xe_LP+
[17:47:35] [PASSED] 12.55 Xe_HPG
[17:47:35] [PASSED] 12.60 Xe_HPC
[17:47:35] [PASSED] 12.70 Xe_LPG
[17:47:35] [PASSED] 12.71 Xe_LPG
[17:47:35] [PASSED] 12.74 Xe_LPG+
[17:47:35] [PASSED] 20.01 Xe2_HPG
[17:47:35] [PASSED] 20.02 Xe2_HPG
[17:47:35] [PASSED] 20.04 Xe2_LPG
[17:47:35] [PASSED] 30.00 Xe3_LPG
[17:47:35] [PASSED] 30.01 Xe3_LPG
[17:47:35] [PASSED] 30.03 Xe3_LPG
[17:47:35] [PASSED] 30.04 Xe3_LPG
[17:47:35] [PASSED] 30.05 Xe3_LPG
[17:47:35] [PASSED] 35.10 Xe3p_LPG
[17:47:35] [PASSED] 35.11 Xe3p_XPC
[17:47:35] ================ [PASSED] check_graphics_ip ================
[17:47:35] ===================== check_media_ip ======================
[17:47:35] [PASSED] 12.00 Xe_M
[17:47:35] [PASSED] 12.55 Xe_HPM
[17:47:35] [PASSED] 13.00 Xe_LPM+
[17:47:35] [PASSED] 13.01 Xe2_HPM
[17:47:35] [PASSED] 20.00 Xe2_LPM
[17:47:35] [PASSED] 30.00 Xe3_LPM
[17:47:35] [PASSED] 30.02 Xe3_LPM
[17:47:35] [PASSED] 35.00 Xe3p_LPM
[17:47:35] [PASSED] 35.03 Xe3p_HPM
[17:47:35] ================= [PASSED] check_media_ip ==================
[17:47:35] =================== check_platform_desc ===================
[17:47:35] [PASSED] 0x9A60 (TIGERLAKE)
[17:47:35] [PASSED] 0x9A68 (TIGERLAKE)
[17:47:35] [PASSED] 0x9A70 (TIGERLAKE)
[17:47:35] [PASSED] 0x9A40 (TIGERLAKE)
[17:47:35] [PASSED] 0x9A49 (TIGERLAKE)
[17:47:35] [PASSED] 0x9A59 (TIGERLAKE)
[17:47:35] [PASSED] 0x9A78 (TIGERLAKE)
[17:47:35] [PASSED] 0x9AC0 (TIGERLAKE)
[17:47:35] [PASSED] 0x9AC9 (TIGERLAKE)
[17:47:35] [PASSED] 0x9AD9 (TIGERLAKE)
[17:47:35] [PASSED] 0x9AF8 (TIGERLAKE)
[17:47:35] [PASSED] 0x4C80 (ROCKETLAKE)
[17:47:35] [PASSED] 0x4C8A (ROCKETLAKE)
[17:47:35] [PASSED] 0x4C8B (ROCKETLAKE)
[17:47:35] [PASSED] 0x4C8C (ROCKETLAKE)
[17:47:35] [PASSED] 0x4C90 (ROCKETLAKE)
[17:47:35] [PASSED] 0x4C9A (ROCKETLAKE)
[17:47:35] [PASSED] 0x4680 (ALDERLAKE_S)
[17:47:35] [PASSED] 0x4682 (ALDERLAKE_S)
[17:47:35] [PASSED] 0x4688 (ALDERLAKE_S)
[17:47:35] [PASSED] 0x468A (ALDERLAKE_S)
[17:47:35] [PASSED] 0x468B (ALDERLAKE_S)
[17:47:35] [PASSED] 0x4690 (ALDERLAKE_S)
[17:47:35] [PASSED] 0x4692 (ALDERLAKE_S)
[17:47:35] [PASSED] 0x4693 (ALDERLAKE_S)
[17:47:35] [PASSED] 0x46A0 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46A1 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46A2 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46A3 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46A6 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46A8 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46AA (ALDERLAKE_P)
[17:47:35] [PASSED] 0x462A (ALDERLAKE_P)
[17:47:35] [PASSED] 0x4626 (ALDERLAKE_P)
stty: 'standard input': Inappropriate ioctl for device
[17:47:35] [PASSED] 0x4628 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46B0 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46B1 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46B2 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46B3 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46C0 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46C1 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46C2 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46C3 (ALDERLAKE_P)
[17:47:35] [PASSED] 0x46D0 (ALDERLAKE_N)
[17:47:35] [PASSED] 0x46D1 (ALDERLAKE_N)
[17:47:35] [PASSED] 0x46D2 (ALDERLAKE_N)
[17:47:35] [PASSED] 0x46D3 (ALDERLAKE_N)
[17:47:35] [PASSED] 0x46D4 (ALDERLAKE_N)
[17:47:35] [PASSED] 0xA721 (ALDERLAKE_P)
[17:47:35] [PASSED] 0xA7A1 (ALDERLAKE_P)
[17:47:35] [PASSED] 0xA7A9 (ALDERLAKE_P)
[17:47:35] [PASSED] 0xA7AC (ALDERLAKE_P)
[17:47:35] [PASSED] 0xA7AD (ALDERLAKE_P)
[17:47:35] [PASSED] 0xA720 (ALDERLAKE_P)
[17:47:35] [PASSED] 0xA7A0 (ALDERLAKE_P)
[17:47:35] [PASSED] 0xA7A8 (ALDERLAKE_P)
[17:47:35] [PASSED] 0xA7AA (ALDERLAKE_P)
[17:47:35] [PASSED] 0xA7AB (ALDERLAKE_P)
[17:47:35] [PASSED] 0xA780 (ALDERLAKE_S)
[17:47:35] [PASSED] 0xA781 (ALDERLAKE_S)
[17:47:35] [PASSED] 0xA782 (ALDERLAKE_S)
[17:47:35] [PASSED] 0xA783 (ALDERLAKE_S)
[17:47:35] [PASSED] 0xA788 (ALDERLAKE_S)
[17:47:35] [PASSED] 0xA789 (ALDERLAKE_S)
[17:47:35] [PASSED] 0xA78A (ALDERLAKE_S)
[17:47:35] [PASSED] 0xA78B (ALDERLAKE_S)
[17:47:35] [PASSED] 0x4905 (DG1)
[17:47:35] [PASSED] 0x4906 (DG1)
[17:47:35] [PASSED] 0x4907 (DG1)
[17:47:35] [PASSED] 0x4908 (DG1)
[17:47:35] [PASSED] 0x4909 (DG1)
[17:47:35] [PASSED] 0x56C0 (DG2)
[17:47:35] [PASSED] 0x56C2 (DG2)
[17:47:35] [PASSED] 0x56C1 (DG2)
[17:47:35] [PASSED] 0x7D51 (METEORLAKE)
[17:47:35] [PASSED] 0x7DD1 (METEORLAKE)
[17:47:35] [PASSED] 0x7D41 (METEORLAKE)
[17:47:35] [PASSED] 0x7D67 (METEORLAKE)
[17:47:35] [PASSED] 0xB640 (METEORLAKE)
[17:47:35] [PASSED] 0x56A0 (DG2)
[17:47:35] [PASSED] 0x56A1 (DG2)
[17:47:35] [PASSED] 0x56A2 (DG2)
[17:47:35] [PASSED] 0x56BE (DG2)
[17:47:35] [PASSED] 0x56BF (DG2)
[17:47:35] [PASSED] 0x5690 (DG2)
[17:47:35] [PASSED] 0x5691 (DG2)
[17:47:35] [PASSED] 0x5692 (DG2)
[17:47:35] [PASSED] 0x56A5 (DG2)
[17:47:35] [PASSED] 0x56A6 (DG2)
[17:47:35] [PASSED] 0x56B0 (DG2)
[17:47:35] [PASSED] 0x56B1 (DG2)
[17:47:35] [PASSED] 0x56BA (DG2)
[17:47:35] [PASSED] 0x56BB (DG2)
[17:47:35] [PASSED] 0x56BC (DG2)
[17:47:35] [PASSED] 0x56BD (DG2)
[17:47:35] [PASSED] 0x5693 (DG2)
[17:47:35] [PASSED] 0x5694 (DG2)
[17:47:35] [PASSED] 0x5695 (DG2)
[17:47:35] [PASSED] 0x56A3 (DG2)
[17:47:35] [PASSED] 0x56A4 (DG2)
[17:47:35] [PASSED] 0x56B2 (DG2)
[17:47:35] [PASSED] 0x56B3 (DG2)
[17:47:35] [PASSED] 0x5696 (DG2)
[17:47:35] [PASSED] 0x5697 (DG2)
[17:47:35] [PASSED] 0xB69 (PVC)
[17:47:35] [PASSED] 0xB6E (PVC)
[17:47:35] [PASSED] 0xBD4 (PVC)
[17:47:35] [PASSED] 0xBD5 (PVC)
[17:47:35] [PASSED] 0xBD6 (PVC)
[17:47:35] [PASSED] 0xBD7 (PVC)
[17:47:35] [PASSED] 0xBD8 (PVC)
[17:47:35] [PASSED] 0xBD9 (PVC)
[17:47:35] [PASSED] 0xBDA (PVC)
[17:47:35] [PASSED] 0xBDB (PVC)
[17:47:35] [PASSED] 0xBE0 (PVC)
[17:47:35] [PASSED] 0xBE1 (PVC)
[17:47:35] [PASSED] 0xBE5 (PVC)
[17:47:35] [PASSED] 0x7D40 (METEORLAKE)
[17:47:35] [PASSED] 0x7D45 (METEORLAKE)
[17:47:35] [PASSED] 0x7D55 (METEORLAKE)
[17:47:35] [PASSED] 0x7D60 (METEORLAKE)
[17:47:35] [PASSED] 0x7DD5 (METEORLAKE)
[17:47:35] [PASSED] 0x6420 (LUNARLAKE)
[17:47:35] [PASSED] 0x64A0 (LUNARLAKE)
[17:47:35] [PASSED] 0x64B0 (LUNARLAKE)
[17:47:35] [PASSED] 0xE202 (BATTLEMAGE)
[17:47:35] [PASSED] 0xE209 (BATTLEMAGE)
[17:47:35] [PASSED] 0xE20B (BATTLEMAGE)
[17:47:35] [PASSED] 0xE20C (BATTLEMAGE)
[17:47:35] [PASSED] 0xE20D (BATTLEMAGE)
[17:47:35] [PASSED] 0xE210 (BATTLEMAGE)
[17:47:35] [PASSED] 0xE211 (BATTLEMAGE)
[17:47:35] [PASSED] 0xE212 (BATTLEMAGE)
[17:47:35] [PASSED] 0xE216 (BATTLEMAGE)
[17:47:35] [PASSED] 0xE220 (BATTLEMAGE)
[17:47:35] [PASSED] 0xE221 (BATTLEMAGE)
[17:47:35] [PASSED] 0xE222 (BATTLEMAGE)
[17:47:35] [PASSED] 0xE223 (BATTLEMAGE)
[17:47:35] [PASSED] 0xB080 (PANTHERLAKE)
[17:47:35] [PASSED] 0xB081 (PANTHERLAKE)
[17:47:35] [PASSED] 0xB082 (PANTHERLAKE)
[17:47:35] [PASSED] 0xB083 (PANTHERLAKE)
[17:47:35] [PASSED] 0xB084 (PANTHERLAKE)
[17:47:35] [PASSED] 0xB085 (PANTHERLAKE)
[17:47:35] [PASSED] 0xB086 (PANTHERLAKE)
[17:47:35] [PASSED] 0xB087 (PANTHERLAKE)
[17:47:35] [PASSED] 0xB08F (PANTHERLAKE)
[17:47:35] [PASSED] 0xB090 (PANTHERLAKE)
[17:47:35] [PASSED] 0xB0A0 (PANTHERLAKE)
[17:47:35] [PASSED] 0xB0B0 (PANTHERLAKE)
[17:47:35] [PASSED] 0xFD80 (PANTHERLAKE)
[17:47:35] [PASSED] 0xFD81 (PANTHERLAKE)
[17:47:35] [PASSED] 0xD740 (NOVALAKE_S)
[17:47:35] [PASSED] 0xD741 (NOVALAKE_S)
[17:47:35] [PASSED] 0xD742 (NOVALAKE_S)
[17:47:35] [PASSED] 0xD743 (NOVALAKE_S)
[17:47:35] [PASSED] 0xD744 (NOVALAKE_S)
[17:47:35] [PASSED] 0xD745 (NOVALAKE_S)
[17:47:35] [PASSED] 0x674C (CRESCENTISLAND)
[17:47:35] [PASSED] 0xD750 (NOVALAKE_P)
[17:47:35] [PASSED] 0xD751 (NOVALAKE_P)
[17:47:35] [PASSED] 0xD752 (NOVALAKE_P)
[17:47:35] [PASSED] 0xD753 (NOVALAKE_P)
[17:47:35] [PASSED] 0xD754 (NOVALAKE_P)
[17:47:35] [PASSED] 0xD755 (NOVALAKE_P)
[17:47:35] [PASSED] 0xD756 (NOVALAKE_P)
[17:47:35] [PASSED] 0xD757 (NOVALAKE_P)
[17:47:35] [PASSED] 0xD75F (NOVALAKE_P)
[17:47:35] =============== [PASSED] check_platform_desc ===============
[17:47:35] ===================== [PASSED] xe_pci ======================
[17:47:35] =================== xe_rtp (2 subtests) ====================
[17:47:35] =============== xe_rtp_process_to_sr_tests ================
[17:47:35] [PASSED] coalesce-same-reg
[17:47:35] [PASSED] no-match-no-add
[17:47:35] [PASSED] match-or
[17:47:35] [PASSED] match-or-xfail
[17:47:35] [PASSED] no-match-no-add-multiple-rules
[17:47:35] [PASSED] two-regs-two-entries
[17:47:35] [PASSED] clr-one-set-other
[17:47:35] [PASSED] set-field
[17:47:35] [PASSED] conflict-duplicate
[17:47:35] [PASSED] conflict-not-disjoint
[17:47:35] [PASSED] conflict-reg-type
[17:47:35] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[17:47:35] ================== xe_rtp_process_tests ===================
[17:47:35] [PASSED] active1
[17:47:35] [PASSED] active2
[17:47:35] [PASSED] active-inactive
[17:47:35] [PASSED] inactive-active
[17:47:35] [PASSED] inactive-1st_or_active-inactive
[17:47:35] [PASSED] inactive-2nd_or_active-inactive
[17:47:35] [PASSED] inactive-last_or_active-inactive
[17:47:35] [PASSED] inactive-no_or_active-inactive
[17:47:35] ============== [PASSED] xe_rtp_process_tests ===============
[17:47:35] ===================== [PASSED] xe_rtp ======================
[17:47:35] ==================== xe_wa (1 subtest) =====================
[17:47:35] ======================== xe_wa_gt =========================
[17:47:35] [PASSED] TIGERLAKE B0
[17:47:35] [PASSED] DG1 A0
[17:47:35] [PASSED] DG1 B0
[17:47:35] [PASSED] ALDERLAKE_S A0
[17:47:35] [PASSED] ALDERLAKE_S B0
[17:47:35] [PASSED] ALDERLAKE_S C0
[17:47:35] [PASSED] ALDERLAKE_S D0
[17:47:35] [PASSED] ALDERLAKE_P A0
[17:47:35] [PASSED] ALDERLAKE_P B0
[17:47:35] [PASSED] ALDERLAKE_P C0
[17:47:35] [PASSED] ALDERLAKE_S RPLS D0
[17:47:35] [PASSED] ALDERLAKE_P RPLU E0
[17:47:35] [PASSED] DG2 G10 C0
[17:47:35] [PASSED] DG2 G11 B1
[17:47:35] [PASSED] DG2 G12 A1
[17:47:35] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[17:47:35] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[17:47:35] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[17:47:35] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[17:47:35] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[17:47:35] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[17:47:35] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[17:47:35] ==================== [PASSED] xe_wa_gt =====================
[17:47:35] ====================== [PASSED] xe_wa ======================
[17:47:35] ============================================================
[17:47:35] Testing complete. Ran 522 tests: passed: 504, skipped: 18
[17:47:35] Elapsed time: 36.392s total, 4.207s configuring, 31.717s building, 0.424s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[17:47:36] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[17:47:37] 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:48:02] Starting KUnit Kernel (1/1)...
[17:48:02] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[17:48:02] ============ drm_test_pick_cmdline (2 subtests) ============
[17:48:02] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[17:48:02] =============== drm_test_pick_cmdline_named ===============
[17:48:02] [PASSED] NTSC
[17:48:02] [PASSED] NTSC-J
[17:48:02] [PASSED] PAL
[17:48:02] [PASSED] PAL-M
[17:48:02] =========== [PASSED] drm_test_pick_cmdline_named ===========
[17:48:02] ============== [PASSED] drm_test_pick_cmdline ==============
[17:48:02] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[17:48:02] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[17:48:02] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[17:48:02] =========== drm_validate_clone_mode (2 subtests) ===========
[17:48:02] ============== drm_test_check_in_clone_mode ===============
[17:48:02] [PASSED] in_clone_mode
[17:48:02] [PASSED] not_in_clone_mode
[17:48:02] ========== [PASSED] drm_test_check_in_clone_mode ===========
[17:48:02] =============== drm_test_check_valid_clones ===============
[17:48:02] [PASSED] not_in_clone_mode
[17:48:02] [PASSED] valid_clone
[17:48:02] [PASSED] invalid_clone
[17:48:02] =========== [PASSED] drm_test_check_valid_clones ===========
[17:48:02] ============= [PASSED] drm_validate_clone_mode =============
[17:48:02] ============= drm_validate_modeset (1 subtest) =============
[17:48:02] [PASSED] drm_test_check_connector_changed_modeset
[17:48:02] ============== [PASSED] drm_validate_modeset ===============
[17:48:02] ====== drm_test_bridge_get_current_state (2 subtests) ======
[17:48:02] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[17:48:02] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[17:48:02] ======== [PASSED] drm_test_bridge_get_current_state ========
[17:48:02] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[17:48:02] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[17:48:02] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[17:48:02] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[17:48:02] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[17:48:02] ============== drm_bridge_alloc (2 subtests) ===============
[17:48:02] [PASSED] drm_test_drm_bridge_alloc_basic
[17:48:02] [PASSED] drm_test_drm_bridge_alloc_get_put
[17:48:02] ================ [PASSED] drm_bridge_alloc =================
[17:48:02] ============= drm_cmdline_parser (40 subtests) =============
[17:48:02] [PASSED] drm_test_cmdline_force_d_only
[17:48:02] [PASSED] drm_test_cmdline_force_D_only_dvi
[17:48:02] [PASSED] drm_test_cmdline_force_D_only_hdmi
[17:48:02] [PASSED] drm_test_cmdline_force_D_only_not_digital
[17:48:02] [PASSED] drm_test_cmdline_force_e_only
[17:48:02] [PASSED] drm_test_cmdline_res
[17:48:02] [PASSED] drm_test_cmdline_res_vesa
[17:48:02] [PASSED] drm_test_cmdline_res_vesa_rblank
[17:48:02] [PASSED] drm_test_cmdline_res_rblank
[17:48:02] [PASSED] drm_test_cmdline_res_bpp
[17:48:02] [PASSED] drm_test_cmdline_res_refresh
[17:48:02] [PASSED] drm_test_cmdline_res_bpp_refresh
[17:48:02] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[17:48:02] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[17:48:02] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[17:48:02] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[17:48:02] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[17:48:02] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[17:48:02] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[17:48:02] [PASSED] drm_test_cmdline_res_margins_force_on
[17:48:02] [PASSED] drm_test_cmdline_res_vesa_margins
[17:48:02] [PASSED] drm_test_cmdline_name
[17:48:02] [PASSED] drm_test_cmdline_name_bpp
[17:48:02] [PASSED] drm_test_cmdline_name_option
[17:48:02] [PASSED] drm_test_cmdline_name_bpp_option
[17:48:02] [PASSED] drm_test_cmdline_rotate_0
[17:48:02] [PASSED] drm_test_cmdline_rotate_90
[17:48:02] [PASSED] drm_test_cmdline_rotate_180
[17:48:02] [PASSED] drm_test_cmdline_rotate_270
[17:48:02] [PASSED] drm_test_cmdline_hmirror
[17:48:02] [PASSED] drm_test_cmdline_vmirror
[17:48:02] [PASSED] drm_test_cmdline_margin_options
[17:48:02] [PASSED] drm_test_cmdline_multiple_options
[17:48:02] [PASSED] drm_test_cmdline_bpp_extra_and_option
[17:48:02] [PASSED] drm_test_cmdline_extra_and_option
[17:48:02] [PASSED] drm_test_cmdline_freestanding_options
[17:48:02] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[17:48:02] [PASSED] drm_test_cmdline_panel_orientation
[17:48:02] ================ drm_test_cmdline_invalid =================
[17:48:02] [PASSED] margin_only
[17:48:02] [PASSED] interlace_only
[17:48:02] [PASSED] res_missing_x
[17:48:02] [PASSED] res_missing_y
[17:48:02] [PASSED] res_bad_y
[17:48:02] [PASSED] res_missing_y_bpp
[17:48:02] [PASSED] res_bad_bpp
[17:48:02] [PASSED] res_bad_refresh
[17:48:02] [PASSED] res_bpp_refresh_force_on_off
[17:48:02] [PASSED] res_invalid_mode
[17:48:02] [PASSED] res_bpp_wrong_place_mode
[17:48:02] [PASSED] name_bpp_refresh
[17:48:02] [PASSED] name_refresh
[17:48:02] [PASSED] name_refresh_wrong_mode
[17:48:02] [PASSED] name_refresh_invalid_mode
[17:48:02] [PASSED] rotate_multiple
[17:48:02] [PASSED] rotate_invalid_val
[17:48:02] [PASSED] rotate_truncated
[17:48:02] [PASSED] invalid_option
[17:48:02] [PASSED] invalid_tv_option
[17:48:02] [PASSED] truncated_tv_option
[17:48:02] ============ [PASSED] drm_test_cmdline_invalid =============
[17:48:02] =============== drm_test_cmdline_tv_options ===============
[17:48:02] [PASSED] NTSC
[17:48:02] [PASSED] NTSC_443
[17:48:02] [PASSED] NTSC_J
[17:48:02] [PASSED] PAL
[17:48:02] [PASSED] PAL_M
[17:48:02] [PASSED] PAL_N
[17:48:02] [PASSED] SECAM
[17:48:02] [PASSED] MONO_525
[17:48:02] [PASSED] MONO_625
[17:48:02] =========== [PASSED] drm_test_cmdline_tv_options ===========
[17:48:02] =============== [PASSED] drm_cmdline_parser ================
[17:48:02] ========== drmm_connector_hdmi_init (20 subtests) ==========
[17:48:02] [PASSED] drm_test_connector_hdmi_init_valid
[17:48:02] [PASSED] drm_test_connector_hdmi_init_bpc_8
[17:48:02] [PASSED] drm_test_connector_hdmi_init_bpc_10
[17:48:02] [PASSED] drm_test_connector_hdmi_init_bpc_12
[17:48:02] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[17:48:02] [PASSED] drm_test_connector_hdmi_init_bpc_null
[17:48:02] [PASSED] drm_test_connector_hdmi_init_formats_empty
[17:48:02] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[17:48:02] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[17:48:02] [PASSED] supported_formats=0x9 yuv420_allowed=1
[17:48:02] [PASSED] supported_formats=0x9 yuv420_allowed=0
[17:48:02] [PASSED] supported_formats=0x3 yuv420_allowed=1
[17:48:02] [PASSED] supported_formats=0x3 yuv420_allowed=0
[17:48:02] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[17:48:02] [PASSED] drm_test_connector_hdmi_init_null_ddc
[17:48:02] [PASSED] drm_test_connector_hdmi_init_null_product
[17:48:02] [PASSED] drm_test_connector_hdmi_init_null_vendor
[17:48:02] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[17:48:02] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[17:48:02] [PASSED] drm_test_connector_hdmi_init_product_valid
[17:48:02] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[17:48:02] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[17:48:02] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[17:48:02] ========= drm_test_connector_hdmi_init_type_valid =========
[17:48:02] [PASSED] HDMI-A
[17:48:02] [PASSED] HDMI-B
[17:48:02] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[17:48:02] ======== drm_test_connector_hdmi_init_type_invalid ========
[17:48:02] [PASSED] Unknown
[17:48:02] [PASSED] VGA
[17:48:02] [PASSED] DVI-I
[17:48:02] [PASSED] DVI-D
[17:48:02] [PASSED] DVI-A
[17:48:02] [PASSED] Composite
[17:48:02] [PASSED] SVIDEO
[17:48:02] [PASSED] LVDS
[17:48:02] [PASSED] Component
[17:48:02] [PASSED] DIN
[17:48:02] [PASSED] DP
[17:48:02] [PASSED] TV
[17:48:02] [PASSED] eDP
[17:48:02] [PASSED] Virtual
[17:48:02] [PASSED] DSI
[17:48:02] [PASSED] DPI
[17:48:02] [PASSED] Writeback
[17:48:02] [PASSED] SPI
[17:48:02] [PASSED] USB
[17:48:02] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[17:48:02] ============ [PASSED] drmm_connector_hdmi_init =============
[17:48:02] ============= drmm_connector_init (3 subtests) =============
[17:48:02] [PASSED] drm_test_drmm_connector_init
[17:48:02] [PASSED] drm_test_drmm_connector_init_null_ddc
[17:48:02] ========= drm_test_drmm_connector_init_type_valid =========
[17:48:02] [PASSED] Unknown
[17:48:02] [PASSED] VGA
[17:48:02] [PASSED] DVI-I
[17:48:02] [PASSED] DVI-D
[17:48:02] [PASSED] DVI-A
[17:48:02] [PASSED] Composite
[17:48:02] [PASSED] SVIDEO
[17:48:02] [PASSED] LVDS
[17:48:02] [PASSED] Component
[17:48:02] [PASSED] DIN
[17:48:02] [PASSED] DP
[17:48:02] [PASSED] HDMI-A
[17:48:02] [PASSED] HDMI-B
[17:48:02] [PASSED] TV
[17:48:02] [PASSED] eDP
[17:48:02] [PASSED] Virtual
[17:48:02] [PASSED] DSI
[17:48:02] [PASSED] DPI
[17:48:02] [PASSED] Writeback
[17:48:02] [PASSED] SPI
[17:48:02] [PASSED] USB
[17:48:02] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[17:48:02] =============== [PASSED] drmm_connector_init ===============
[17:48:02] ========= drm_connector_dynamic_init (6 subtests) ==========
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_init
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_init_properties
[17:48:02] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[17:48:02] [PASSED] Unknown
[17:48:02] [PASSED] VGA
[17:48:02] [PASSED] DVI-I
[17:48:02] [PASSED] DVI-D
[17:48:02] [PASSED] DVI-A
[17:48:02] [PASSED] Composite
[17:48:02] [PASSED] SVIDEO
[17:48:02] [PASSED] LVDS
[17:48:02] [PASSED] Component
[17:48:02] [PASSED] DIN
[17:48:02] [PASSED] DP
[17:48:02] [PASSED] HDMI-A
[17:48:02] [PASSED] HDMI-B
[17:48:02] [PASSED] TV
[17:48:02] [PASSED] eDP
[17:48:02] [PASSED] Virtual
[17:48:02] [PASSED] DSI
[17:48:02] [PASSED] DPI
[17:48:02] [PASSED] Writeback
[17:48:02] [PASSED] SPI
[17:48:02] [PASSED] USB
[17:48:02] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[17:48:02] ======== drm_test_drm_connector_dynamic_init_name =========
[17:48:02] [PASSED] Unknown
[17:48:02] [PASSED] VGA
[17:48:02] [PASSED] DVI-I
[17:48:02] [PASSED] DVI-D
[17:48:02] [PASSED] DVI-A
[17:48:02] [PASSED] Composite
[17:48:02] [PASSED] SVIDEO
[17:48:02] [PASSED] LVDS
[17:48:02] [PASSED] Component
[17:48:02] [PASSED] DIN
[17:48:02] [PASSED] DP
[17:48:02] [PASSED] HDMI-A
[17:48:02] [PASSED] HDMI-B
[17:48:02] [PASSED] TV
[17:48:02] [PASSED] eDP
[17:48:02] [PASSED] Virtual
[17:48:02] [PASSED] DSI
[17:48:02] [PASSED] DPI
[17:48:02] [PASSED] Writeback
[17:48:02] [PASSED] SPI
[17:48:02] [PASSED] USB
[17:48:02] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[17:48:02] =========== [PASSED] drm_connector_dynamic_init ============
[17:48:02] ==== drm_connector_dynamic_register_early (4 subtests) =====
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[17:48:02] ====== [PASSED] drm_connector_dynamic_register_early =======
[17:48:02] ======= drm_connector_dynamic_register (7 subtests) ========
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[17:48:02] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[17:48:02] ========= [PASSED] drm_connector_dynamic_register ==========
[17:48:02] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[17:48:02] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[17:48:02] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[17:48:02] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[17:48:02] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[17:48:02] ========== drm_test_get_tv_mode_from_name_valid ===========
[17:48:02] [PASSED] NTSC
[17:48:02] [PASSED] NTSC-443
[17:48:02] [PASSED] NTSC-J
[17:48:02] [PASSED] PAL
[17:48:02] [PASSED] PAL-M
[17:48:02] [PASSED] PAL-N
[17:48:02] [PASSED] SECAM
[17:48:02] [PASSED] Mono
[17:48:02] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[17:48:02] [PASSED] drm_test_get_tv_mode_from_name_truncated
[17:48:02] ============ [PASSED] drm_get_tv_mode_from_name ============
[17:48:02] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[17:48:02] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[17:48:02] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[17:48:02] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[17:48:02] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[17:48:02] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[17:48:02] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[17:48:02] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[17:48:02] [PASSED] VIC 96
[17:48:02] [PASSED] VIC 97
[17:48:02] [PASSED] VIC 101
[17:48:02] [PASSED] VIC 102
[17:48:02] [PASSED] VIC 106
[17:48:02] [PASSED] VIC 107
[17:48:02] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[17:48:02] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[17:48:02] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[17:48:02] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[17:48:02] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[17:48:02] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[17:48:02] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[17:48:02] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[17:48:02] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[17:48:02] [PASSED] Automatic
[17:48:02] [PASSED] Full
[17:48:02] [PASSED] Limited 16:235
[17:48:02] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[17:48:02] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[17:48:02] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[17:48:02] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[17:48:02] === drm_test_drm_hdmi_connector_get_output_format_name ====
[17:48:02] [PASSED] RGB
[17:48:02] [PASSED] YUV 4:2:0
[17:48:02] [PASSED] YUV 4:2:2
[17:48:02] [PASSED] YUV 4:4:4
[17:48:02] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[17:48:02] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[17:48:02] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[17:48:02] ============= drm_damage_helper (21 subtests) ==============
[17:48:02] [PASSED] drm_test_damage_iter_no_damage
[17:48:02] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[17:48:02] [PASSED] drm_test_damage_iter_no_damage_src_moved
[17:48:02] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[17:48:02] [PASSED] drm_test_damage_iter_no_damage_not_visible
[17:48:02] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[17:48:02] [PASSED] drm_test_damage_iter_no_damage_no_fb
[17:48:02] [PASSED] drm_test_damage_iter_simple_damage
[17:48:02] [PASSED] drm_test_damage_iter_single_damage
[17:48:02] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[17:48:02] [PASSED] drm_test_damage_iter_single_damage_outside_src
[17:48:02] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[17:48:02] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[17:48:02] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[17:48:02] [PASSED] drm_test_damage_iter_single_damage_src_moved
[17:48:02] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[17:48:02] [PASSED] drm_test_damage_iter_damage
[17:48:02] [PASSED] drm_test_damage_iter_damage_one_intersect
[17:48:02] [PASSED] drm_test_damage_iter_damage_one_outside
[17:48:02] [PASSED] drm_test_damage_iter_damage_src_moved
[17:48:02] [PASSED] drm_test_damage_iter_damage_not_visible
[17:48:02] ================ [PASSED] drm_damage_helper ================
[17:48:02] ============== drm_dp_mst_helper (3 subtests) ==============
[17:48:02] ============== drm_test_dp_mst_calc_pbn_mode ==============
[17:48:02] [PASSED] Clock 154000 BPP 30 DSC disabled
[17:48:02] [PASSED] Clock 234000 BPP 30 DSC disabled
[17:48:02] [PASSED] Clock 297000 BPP 24 DSC disabled
[17:48:02] [PASSED] Clock 332880 BPP 24 DSC enabled
[17:48:02] [PASSED] Clock 324540 BPP 24 DSC enabled
[17:48:02] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[17:48:02] ============== drm_test_dp_mst_calc_pbn_div ===============
[17:48:02] [PASSED] Link rate 2000000 lane count 4
[17:48:02] [PASSED] Link rate 2000000 lane count 2
[17:48:02] [PASSED] Link rate 2000000 lane count 1
[17:48:02] [PASSED] Link rate 1350000 lane count 4
[17:48:02] [PASSED] Link rate 1350000 lane count 2
[17:48:02] [PASSED] Link rate 1350000 lane count 1
[17:48:02] [PASSED] Link rate 1000000 lane count 4
[17:48:02] [PASSED] Link rate 1000000 lane count 2
[17:48:02] [PASSED] Link rate 1000000 lane count 1
[17:48:02] [PASSED] Link rate 810000 lane count 4
[17:48:02] [PASSED] Link rate 810000 lane count 2
[17:48:02] [PASSED] Link rate 810000 lane count 1
[17:48:02] [PASSED] Link rate 540000 lane count 4
[17:48:02] [PASSED] Link rate 540000 lane count 2
[17:48:02] [PASSED] Link rate 540000 lane count 1
[17:48:02] [PASSED] Link rate 270000 lane count 4
[17:48:02] [PASSED] Link rate 270000 lane count 2
[17:48:02] [PASSED] Link rate 270000 lane count 1
[17:48:02] [PASSED] Link rate 162000 lane count 4
[17:48:02] [PASSED] Link rate 162000 lane count 2
[17:48:02] [PASSED] Link rate 162000 lane count 1
[17:48:02] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[17:48:02] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[17:48:02] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[17:48:02] [PASSED] DP_POWER_UP_PHY with port number
[17:48:02] [PASSED] DP_POWER_DOWN_PHY with port number
[17:48:02] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[17:48:02] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[17:48:02] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[17:48:02] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[17:48:02] [PASSED] DP_QUERY_PAYLOAD with port number
[17:48:02] [PASSED] DP_QUERY_PAYLOAD with VCPI
[17:48:02] [PASSED] DP_REMOTE_DPCD_READ with port number
[17:48:02] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[17:48:02] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[17:48:02] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[17:48:02] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[17:48:02] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[17:48:02] [PASSED] DP_REMOTE_I2C_READ with port number
[17:48:02] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[17:48:02] [PASSED] DP_REMOTE_I2C_READ with transactions array
[17:48:02] [PASSED] DP_REMOTE_I2C_WRITE with port number
[17:48:02] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[17:48:02] [PASSED] DP_REMOTE_I2C_WRITE with data array
[17:48:02] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[17:48:02] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[17:48:02] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[17:48:02] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[17:48:02] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[17:48:02] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[17:48:02] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[17:48:02] ================ [PASSED] drm_dp_mst_helper ================
[17:48:02] ================== drm_exec (7 subtests) ===================
[17:48:02] [PASSED] sanitycheck
[17:48:02] [PASSED] test_lock
[17:48:02] [PASSED] test_lock_unlock
[17:48:02] [PASSED] test_duplicates
[17:48:02] [PASSED] test_prepare
[17:48:02] [PASSED] test_prepare_array
[17:48:02] [PASSED] test_multiple_loops
[17:48:02] ==================== [PASSED] drm_exec =====================
[17:48:02] =========== drm_format_helper_test (17 subtests) ===========
[17:48:02] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[17:48:02] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[17:48:02] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[17:48:02] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[17:48:02] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[17:48:02] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[17:48:02] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[17:48:02] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[17:48:02] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[17:48:02] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[17:48:02] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[17:48:02] ============== drm_test_fb_xrgb8888_to_mono ===============
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[17:48:02] ==================== drm_test_fb_swab =====================
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ================ [PASSED] drm_test_fb_swab =================
[17:48:02] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[17:48:02] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[17:48:02] [PASSED] single_pixel_source_buffer
[17:48:02] [PASSED] single_pixel_clip_rectangle
[17:48:02] [PASSED] well_known_colors
[17:48:02] [PASSED] destination_pitch
[17:48:02] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[17:48:02] ================= drm_test_fb_clip_offset =================
[17:48:02] [PASSED] pass through
[17:48:02] [PASSED] horizontal offset
[17:48:02] [PASSED] vertical offset
[17:48:02] [PASSED] horizontal and vertical offset
[17:48:02] [PASSED] horizontal offset (custom pitch)
[17:48:02] [PASSED] vertical offset (custom pitch)
[17:48:02] [PASSED] horizontal and vertical offset (custom pitch)
[17:48:02] ============= [PASSED] drm_test_fb_clip_offset =============
[17:48:02] =================== drm_test_fb_memcpy ====================
[17:48:02] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[17:48:02] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[17:48:02] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[17:48:02] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[17:48:02] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[17:48:02] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[17:48:02] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[17:48:02] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[17:48:02] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[17:48:02] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[17:48:02] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[17:48:02] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[17:48:02] =============== [PASSED] drm_test_fb_memcpy ================
[17:48:02] ============= [PASSED] drm_format_helper_test ==============
[17:48:02] ================= drm_format (18 subtests) =================
[17:48:02] [PASSED] drm_test_format_block_width_invalid
[17:48:02] [PASSED] drm_test_format_block_width_one_plane
[17:48:02] [PASSED] drm_test_format_block_width_two_plane
[17:48:02] [PASSED] drm_test_format_block_width_three_plane
[17:48:02] [PASSED] drm_test_format_block_width_tiled
[17:48:02] [PASSED] drm_test_format_block_height_invalid
[17:48:02] [PASSED] drm_test_format_block_height_one_plane
[17:48:02] [PASSED] drm_test_format_block_height_two_plane
[17:48:02] [PASSED] drm_test_format_block_height_three_plane
[17:48:02] [PASSED] drm_test_format_block_height_tiled
[17:48:02] [PASSED] drm_test_format_min_pitch_invalid
[17:48:02] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[17:48:02] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[17:48:02] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[17:48:02] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[17:48:02] [PASSED] drm_test_format_min_pitch_two_plane
[17:48:02] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[17:48:02] [PASSED] drm_test_format_min_pitch_tiled
[17:48:02] =================== [PASSED] drm_format ====================
[17:48:02] ============== drm_framebuffer (10 subtests) ===============
[17:48:02] ========== drm_test_framebuffer_check_src_coords ==========
[17:48:02] [PASSED] Success: source fits into fb
[17:48:02] [PASSED] Fail: overflowing fb with x-axis coordinate
[17:48:02] [PASSED] Fail: overflowing fb with y-axis coordinate
[17:48:02] [PASSED] Fail: overflowing fb with source width
[17:48:02] [PASSED] Fail: overflowing fb with source height
[17:48:02] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[17:48:02] [PASSED] drm_test_framebuffer_cleanup
[17:48:02] =============== drm_test_framebuffer_create ===============
[17:48:02] [PASSED] ABGR8888 normal sizes
[17:48:02] [PASSED] ABGR8888 max sizes
[17:48:02] [PASSED] ABGR8888 pitch greater than min required
[17:48:02] [PASSED] ABGR8888 pitch less than min required
[17:48:02] [PASSED] ABGR8888 Invalid width
[17:48:02] [PASSED] ABGR8888 Invalid buffer handle
[17:48:02] [PASSED] No pixel format
[17:48:02] [PASSED] ABGR8888 Width 0
[17:48:02] [PASSED] ABGR8888 Height 0
[17:48:02] [PASSED] ABGR8888 Out of bound height * pitch combination
[17:48:02] [PASSED] ABGR8888 Large buffer offset
[17:48:02] [PASSED] ABGR8888 Buffer offset for inexistent plane
[17:48:02] [PASSED] ABGR8888 Invalid flag
[17:48:02] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[17:48:02] [PASSED] ABGR8888 Valid buffer modifier
[17:48:02] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[17:48:02] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[17:48:02] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[17:48:02] [PASSED] NV12 Normal sizes
[17:48:02] [PASSED] NV12 Max sizes
[17:48:02] [PASSED] NV12 Invalid pitch
[17:48:02] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[17:48:02] [PASSED] NV12 different modifier per-plane
[17:48:02] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[17:48:02] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[17:48:02] [PASSED] NV12 Modifier for inexistent plane
[17:48:02] [PASSED] NV12 Handle for inexistent plane
[17:48:02] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[17:48:02] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[17:48:02] [PASSED] YVU420 Normal sizes
[17:48:02] [PASSED] YVU420 Max sizes
[17:48:02] [PASSED] YVU420 Invalid pitch
[17:48:02] [PASSED] YVU420 Different pitches
[17:48:02] [PASSED] YVU420 Different buffer offsets/pitches
[17:48:02] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[17:48:02] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[17:48:02] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[17:48:02] [PASSED] YVU420 Valid modifier
[17:48:02] [PASSED] YVU420 Different modifiers per plane
[17:48:02] [PASSED] YVU420 Modifier for inexistent plane
[17:48:02] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[17:48:02] [PASSED] X0L2 Normal sizes
[17:48:02] [PASSED] X0L2 Max sizes
[17:48:02] [PASSED] X0L2 Invalid pitch
[17:48:02] [PASSED] X0L2 Pitch greater than minimum required
[17:48:02] [PASSED] X0L2 Handle for inexistent plane
[17:48:02] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[17:48:02] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[17:48:02] [PASSED] X0L2 Valid modifier
[17:48:02] [PASSED] X0L2 Modifier for inexistent plane
[17:48:02] =========== [PASSED] drm_test_framebuffer_create ===========
[17:48:02] [PASSED] drm_test_framebuffer_free
[17:48:02] [PASSED] drm_test_framebuffer_init
[17:48:02] [PASSED] drm_test_framebuffer_init_bad_format
[17:48:02] [PASSED] drm_test_framebuffer_init_dev_mismatch
[17:48:02] [PASSED] drm_test_framebuffer_lookup
[17:48:02] [PASSED] drm_test_framebuffer_lookup_inexistent
[17:48:02] [PASSED] drm_test_framebuffer_modifiers_not_supported
[17:48:02] ================= [PASSED] drm_framebuffer =================
[17:48:02] ================ drm_gem_shmem (8 subtests) ================
[17:48:02] [PASSED] drm_gem_shmem_test_obj_create
[17:48:02] [PASSED] drm_gem_shmem_test_obj_create_private
[17:48:02] [PASSED] drm_gem_shmem_test_pin_pages
[17:48:02] [PASSED] drm_gem_shmem_test_vmap
[17:48:02] [PASSED] drm_gem_shmem_test_get_sg_table
[17:48:02] [PASSED] drm_gem_shmem_test_get_pages_sgt
[17:48:02] [PASSED] drm_gem_shmem_test_madvise
[17:48:02] [PASSED] drm_gem_shmem_test_purge
[17:48:02] ================== [PASSED] drm_gem_shmem ==================
[17:48:02] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[17:48:02] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[17:48:02] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[17:48:02] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[17:48:02] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[17:48:02] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[17:48:02] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[17:48:02] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[17:48:02] [PASSED] Automatic
[17:48:02] [PASSED] Full
[17:48:02] [PASSED] Limited 16:235
[17:48:02] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[17:48:02] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[17:48:02] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[17:48:02] [PASSED] drm_test_check_disable_connector
[17:48:02] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[17:48:02] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[17:48:02] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[17:48:02] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[17:48:02] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[17:48:02] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[17:48:02] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[17:48:02] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[17:48:02] [PASSED] drm_test_check_output_bpc_dvi
[17:48:02] [PASSED] drm_test_check_output_bpc_format_vic_1
[17:48:02] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[17:48:02] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[17:48:02] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[17:48:02] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[17:48:02] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[17:48:02] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[17:48:02] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[17:48:02] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[17:48:02] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[17:48:02] [PASSED] drm_test_check_broadcast_rgb_value
[17:48:02] [PASSED] drm_test_check_bpc_8_value
[17:48:02] [PASSED] drm_test_check_bpc_10_value
[17:48:02] [PASSED] drm_test_check_bpc_12_value
[17:48:02] [PASSED] drm_test_check_format_value
[17:48:02] [PASSED] drm_test_check_tmds_char_value
[17:48:02] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[17:48:02] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[17:48:02] [PASSED] drm_test_check_mode_valid
[17:48:02] [PASSED] drm_test_check_mode_valid_reject
[17:48:02] [PASSED] drm_test_check_mode_valid_reject_rate
[17:48:02] [PASSED] drm_test_check_mode_valid_reject_max_clock
[17:48:02] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[17:48:02] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[17:48:02] [PASSED] drm_test_check_infoframes
[17:48:02] [PASSED] drm_test_check_reject_avi_infoframe
[17:48:02] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[17:48:02] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[17:48:02] [PASSED] drm_test_check_reject_audio_infoframe
[17:48:02] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[17:48:02] ================= drm_managed (2 subtests) =================
[17:48:02] [PASSED] drm_test_managed_release_action
[17:48:02] [PASSED] drm_test_managed_run_action
[17:48:02] =================== [PASSED] drm_managed ===================
[17:48:02] =================== drm_mm (6 subtests) ====================
[17:48:02] [PASSED] drm_test_mm_init
[17:48:02] [PASSED] drm_test_mm_debug
[17:48:02] [PASSED] drm_test_mm_align32
[17:48:02] [PASSED] drm_test_mm_align64
[17:48:02] [PASSED] drm_test_mm_lowest
[17:48:02] [PASSED] drm_test_mm_highest
[17:48:02] ===================== [PASSED] drm_mm ======================
[17:48:02] ============= drm_modes_analog_tv (5 subtests) =============
[17:48:02] [PASSED] drm_test_modes_analog_tv_mono_576i
[17:48:02] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[17:48:02] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[17:48:02] [PASSED] drm_test_modes_analog_tv_pal_576i
[17:48:02] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[17:48:02] =============== [PASSED] drm_modes_analog_tv ===============
[17:48:02] ============== drm_plane_helper (2 subtests) ===============
[17:48:02] =============== drm_test_check_plane_state ================
[17:48:02] [PASSED] clipping_simple
[17:48:02] [PASSED] clipping_rotate_reflect
[17:48:02] [PASSED] positioning_simple
[17:48:02] [PASSED] upscaling
[17:48:02] [PASSED] downscaling
[17:48:02] [PASSED] rounding1
[17:48:02] [PASSED] rounding2
[17:48:02] [PASSED] rounding3
[17:48:02] [PASSED] rounding4
[17:48:02] =========== [PASSED] drm_test_check_plane_state ============
[17:48:02] =========== drm_test_check_invalid_plane_state ============
[17:48:02] [PASSED] positioning_invalid
[17:48:02] [PASSED] upscaling_invalid
[17:48:02] [PASSED] downscaling_invalid
[17:48:02] ======= [PASSED] drm_test_check_invalid_plane_state ========
[17:48:02] ================ [PASSED] drm_plane_helper =================
[17:48:02] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[17:48:02] ====== drm_test_connector_helper_tv_get_modes_check =======
[17:48:02] [PASSED] None
[17:48:02] [PASSED] PAL
[17:48:02] [PASSED] NTSC
[17:48:02] [PASSED] Both, NTSC Default
[17:48:02] [PASSED] Both, PAL Default
[17:48:02] [PASSED] Both, NTSC Default, with PAL on command-line
[17:48:02] [PASSED] Both, PAL Default, with NTSC on command-line
[17:48:02] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[17:48:02] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[17:48:02] ================== drm_rect (9 subtests) ===================
[17:48:02] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[17:48:02] [PASSED] drm_test_rect_clip_scaled_not_clipped
[17:48:02] [PASSED] drm_test_rect_clip_scaled_clipped
[17:48:02] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[17:48:02] ================= drm_test_rect_intersect =================
[17:48:02] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[17:48:02] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[17:48:02] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[17:48:02] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[17:48:02] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[17:48:02] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[17:48:02] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[17:48:02] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[17:48:02] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[17:48:02] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[17:48:02] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[17:48:02] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[17:48:02] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[17:48:02] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[17:48:02] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[17:48:02] ============= [PASSED] drm_test_rect_intersect =============
[17:48:02] ================ drm_test_rect_calc_hscale ================
[17:48:02] [PASSED] normal use
[17:48:02] [PASSED] out of max range
[17:48:02] [PASSED] out of min range
[17:48:02] [PASSED] zero dst
[17:48:02] [PASSED] negative src
[17:48:02] [PASSED] negative dst
[17:48:02] ============ [PASSED] drm_test_rect_calc_hscale ============
[17:48:02] ================ drm_test_rect_calc_vscale ================
[17:48:02] [PASSED] normal use
[17:48:02] [PASSED] out of max range
[17:48:02] [PASSED] out of min range
[17:48:02] [PASSED] zero dst
[17:48:02] [PASSED] negative src
[17:48:02] [PASSED] negative dst
stty: 'standard input': Inappropriate ioctl for device
[17:48:02] ============ [PASSED] drm_test_rect_calc_vscale ============
[17:48:02] ================== drm_test_rect_rotate ===================
[17:48:02] [PASSED] reflect-x
[17:48:02] [PASSED] reflect-y
[17:48:02] [PASSED] rotate-0
[17:48:02] [PASSED] rotate-90
[17:48:02] [PASSED] rotate-180
[17:48:02] [PASSED] rotate-270
[17:48:02] ============== [PASSED] drm_test_rect_rotate ===============
[17:48:02] ================ drm_test_rect_rotate_inv =================
[17:48:02] [PASSED] reflect-x
[17:48:02] [PASSED] reflect-y
[17:48:02] [PASSED] rotate-0
[17:48:02] [PASSED] rotate-90
[17:48:02] [PASSED] rotate-180
[17:48:02] [PASSED] rotate-270
[17:48:02] ============ [PASSED] drm_test_rect_rotate_inv =============
[17:48:02] ==================== [PASSED] drm_rect =====================
[17:48:02] ============ drm_sysfb_modeset_test (1 subtest) ============
[17:48:02] ============ drm_test_sysfb_build_fourcc_list =============
[17:48:02] [PASSED] no native formats
[17:48:02] [PASSED] XRGB8888 as native format
[17:48:02] [PASSED] remove duplicates
[17:48:02] [PASSED] convert alpha formats
[17:48:02] [PASSED] random formats
[17:48:02] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[17:48:02] ============= [PASSED] drm_sysfb_modeset_test ==============
[17:48:02] ================== drm_fixp (2 subtests) ===================
[17:48:02] [PASSED] drm_test_int2fixp
[17:48:02] [PASSED] drm_test_sm2fixp
[17:48:02] ==================== [PASSED] drm_fixp =====================
[17:48:02] ============================================================
[17:48:02] Testing complete. Ran 621 tests: passed: 621
[17:48:03] Elapsed time: 27.026s total, 1.653s configuring, 25.206s building, 0.136s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[17:48:03] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[17:48:04] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[17:48:14] Starting KUnit Kernel (1/1)...
[17:48:14] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[17:48:14] ================= ttm_device (5 subtests) ==================
[17:48:14] [PASSED] ttm_device_init_basic
[17:48:14] [PASSED] ttm_device_init_multiple
[17:48:14] [PASSED] ttm_device_fini_basic
[17:48:14] [PASSED] ttm_device_init_no_vma_man
[17:48:14] ================== ttm_device_init_pools ==================
[17:48:14] [PASSED] No DMA allocations, no DMA32 required
[17:48:14] [PASSED] DMA allocations, DMA32 required
[17:48:14] [PASSED] No DMA allocations, DMA32 required
[17:48:14] [PASSED] DMA allocations, no DMA32 required
[17:48:14] ============== [PASSED] ttm_device_init_pools ==============
[17:48:14] =================== [PASSED] ttm_device ====================
[17:48:14] ================== ttm_pool (8 subtests) ===================
[17:48:14] ================== ttm_pool_alloc_basic ===================
[17:48:14] [PASSED] One page
[17:48:14] [PASSED] More than one page
[17:48:14] [PASSED] Above the allocation limit
[17:48:14] [PASSED] One page, with coherent DMA mappings enabled
[17:48:14] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[17:48:14] ============== [PASSED] ttm_pool_alloc_basic ===============
[17:48:14] ============== ttm_pool_alloc_basic_dma_addr ==============
[17:48:14] [PASSED] One page
[17:48:14] [PASSED] More than one page
[17:48:14] [PASSED] Above the allocation limit
[17:48:14] [PASSED] One page, with coherent DMA mappings enabled
[17:48:14] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[17:48:14] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[17:48:14] [PASSED] ttm_pool_alloc_order_caching_match
[17:48:14] [PASSED] ttm_pool_alloc_caching_mismatch
[17:48:14] [PASSED] ttm_pool_alloc_order_mismatch
[17:48:14] [PASSED] ttm_pool_free_dma_alloc
[17:48:14] [PASSED] ttm_pool_free_no_dma_alloc
[17:48:14] [PASSED] ttm_pool_fini_basic
[17:48:14] ==================== [PASSED] ttm_pool =====================
[17:48:14] ================ ttm_resource (8 subtests) =================
[17:48:14] ================= ttm_resource_init_basic =================
[17:48:14] [PASSED] Init resource in TTM_PL_SYSTEM
[17:48:14] [PASSED] Init resource in TTM_PL_VRAM
[17:48:14] [PASSED] Init resource in a private placement
[17:48:14] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[17:48:14] ============= [PASSED] ttm_resource_init_basic =============
[17:48:14] [PASSED] ttm_resource_init_pinned
[17:48:14] [PASSED] ttm_resource_fini_basic
[17:48:14] [PASSED] ttm_resource_manager_init_basic
[17:48:14] [PASSED] ttm_resource_manager_usage_basic
[17:48:14] [PASSED] ttm_resource_manager_set_used_basic
[17:48:14] [PASSED] ttm_sys_man_alloc_basic
[17:48:14] [PASSED] ttm_sys_man_free_basic
[17:48:14] ================== [PASSED] ttm_resource ===================
[17:48:14] =================== ttm_tt (15 subtests) ===================
[17:48:14] ==================== ttm_tt_init_basic ====================
[17:48:14] [PASSED] Page-aligned size
[17:48:14] [PASSED] Extra pages requested
[17:48:14] ================ [PASSED] ttm_tt_init_basic ================
[17:48:14] [PASSED] ttm_tt_init_misaligned
[17:48:14] [PASSED] ttm_tt_fini_basic
[17:48:14] [PASSED] ttm_tt_fini_sg
[17:48:14] [PASSED] ttm_tt_fini_shmem
[17:48:14] [PASSED] ttm_tt_create_basic
[17:48:14] [PASSED] ttm_tt_create_invalid_bo_type
[17:48:14] [PASSED] ttm_tt_create_ttm_exists
[17:48:14] [PASSED] ttm_tt_create_failed
[17:48:14] [PASSED] ttm_tt_destroy_basic
[17:48:14] [PASSED] ttm_tt_populate_null_ttm
[17:48:14] [PASSED] ttm_tt_populate_populated_ttm
[17:48:14] [PASSED] ttm_tt_unpopulate_basic
[17:48:14] [PASSED] ttm_tt_unpopulate_empty_ttm
[17:48:14] [PASSED] ttm_tt_swapin_basic
[17:48:14] ===================== [PASSED] ttm_tt ======================
[17:48:14] =================== ttm_bo (14 subtests) ===================
[17:48:14] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[17:48:14] [PASSED] Cannot be interrupted and sleeps
[17:48:14] [PASSED] Cannot be interrupted, locks straight away
[17:48:14] [PASSED] Can be interrupted, sleeps
[17:48:14] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[17:48:14] [PASSED] ttm_bo_reserve_locked_no_sleep
[17:48:14] [PASSED] ttm_bo_reserve_no_wait_ticket
[17:48:14] [PASSED] ttm_bo_reserve_double_resv
[17:48:14] [PASSED] ttm_bo_reserve_interrupted
[17:48:14] [PASSED] ttm_bo_reserve_deadlock
[17:48:14] [PASSED] ttm_bo_unreserve_basic
[17:48:14] [PASSED] ttm_bo_unreserve_pinned
[17:48:14] [PASSED] ttm_bo_unreserve_bulk
[17:48:14] [PASSED] ttm_bo_fini_basic
[17:48:14] [PASSED] ttm_bo_fini_shared_resv
[17:48:14] [PASSED] ttm_bo_pin_basic
[17:48:14] [PASSED] ttm_bo_pin_unpin_resource
[17:48:14] [PASSED] ttm_bo_multiple_pin_one_unpin
[17:48:14] ===================== [PASSED] ttm_bo ======================
[17:48:14] ============== ttm_bo_validate (21 subtests) ===============
[17:48:14] ============== ttm_bo_init_reserved_sys_man ===============
[17:48:14] [PASSED] Buffer object for userspace
[17:48:14] [PASSED] Kernel buffer object
[17:48:14] [PASSED] Shared buffer object
[17:48:14] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[17:48:14] ============== ttm_bo_init_reserved_mock_man ==============
[17:48:14] [PASSED] Buffer object for userspace
[17:48:14] [PASSED] Kernel buffer object
[17:48:14] [PASSED] Shared buffer object
[17:48:14] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[17:48:14] [PASSED] ttm_bo_init_reserved_resv
[17:48:14] ================== ttm_bo_validate_basic ==================
[17:48:14] [PASSED] Buffer object for userspace
[17:48:14] [PASSED] Kernel buffer object
[17:48:14] [PASSED] Shared buffer object
[17:48:14] ============== [PASSED] ttm_bo_validate_basic ==============
[17:48:14] [PASSED] ttm_bo_validate_invalid_placement
[17:48:14] ============= ttm_bo_validate_same_placement ==============
[17:48:14] [PASSED] System manager
[17:48:14] [PASSED] VRAM manager
[17:48:14] ========= [PASSED] ttm_bo_validate_same_placement ==========
[17:48:14] [PASSED] ttm_bo_validate_failed_alloc
[17:48:14] [PASSED] ttm_bo_validate_pinned
[17:48:14] [PASSED] ttm_bo_validate_busy_placement
[17:48:14] ================ ttm_bo_validate_multihop =================
[17:48:14] [PASSED] Buffer object for userspace
[17:48:14] [PASSED] Kernel buffer object
[17:48:14] [PASSED] Shared buffer object
[17:48:14] ============ [PASSED] ttm_bo_validate_multihop =============
[17:48:14] ========== ttm_bo_validate_no_placement_signaled ==========
[17:48:14] [PASSED] Buffer object in system domain, no page vector
[17:48:14] [PASSED] Buffer object in system domain with an existing page vector
[17:48:14] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[17:48:14] ======== ttm_bo_validate_no_placement_not_signaled ========
[17:48:14] [PASSED] Buffer object for userspace
[17:48:14] [PASSED] Kernel buffer object
[17:48:14] [PASSED] Shared buffer object
[17:48:14] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[17:48:14] [PASSED] ttm_bo_validate_move_fence_signaled
[17:48:14] ========= ttm_bo_validate_move_fence_not_signaled =========
[17:48:14] [PASSED] Waits for GPU
[17:48:14] [PASSED] Tries to lock straight away
[17:48:14] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[17:48:14] [PASSED] ttm_bo_validate_happy_evict
[17:48:14] [PASSED] ttm_bo_validate_all_pinned_evict
[17:48:14] [PASSED] ttm_bo_validate_allowed_only_evict
[17:48:14] [PASSED] ttm_bo_validate_deleted_evict
[17:48:14] [PASSED] ttm_bo_validate_busy_domain_evict
[17:48:14] [PASSED] ttm_bo_validate_evict_gutting
[17:48:14] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[17:48:14] ================= [PASSED] ttm_bo_validate =================
[17:48:14] ============================================================
[17:48:14] Testing complete. Ran 101 tests: passed: 101
[17:48:14] Elapsed time: 11.419s total, 1.690s configuring, 9.514s building, 0.179s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 3/5] vgaarb: mark vga_get family as __must_check
2026-02-17 17:04 ` [PATCH 3/5] vgaarb: mark vga_get family as __must_check Simon Richter
@ 2026-02-18 1:51 ` kernel test robot
2026-02-18 5:59 ` kernel test robot
1 sibling, 0 replies; 19+ messages in thread
From: kernel test robot @ 2026-02-18 1:51 UTC (permalink / raw)
To: Simon Richter, linux-pci
Cc: oe-kbuild-all, intel-xe, dri-devel, Simon Richter
Hi Simon,
kernel test robot noticed the following build warnings:
[auto build test WARNING on 9702969978695d9a699a1f34771580cdbb153b33]
url: https://github.com/intel-lab-lkp/linux/commits/Simon-Richter/vgaarb-pass-vga_get-errors-to-userspace/20260218-010647
base: 9702969978695d9a699a1f34771580cdbb153b33
patch link: https://lore.kernel.org/r/20260217170419.236739-4-Simon.Richter%40hogyros.de
patch subject: [PATCH 3/5] vgaarb: mark vga_get family as __must_check
config: powerpc-randconfig-002-20260218 (https://download.01.org/0day-ci/archive/20260218/202602180912.N7IZbIal-lkp@intel.com/config)
compiler: powerpc-linux-gcc (GCC) 8.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260218/202602180912.N7IZbIal-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202602180912.N7IZbIal-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/gpu/drm/i915/display/intel_vga.c: In function 'intel_vga_disable':
>> drivers/gpu/drm/i915/display/intel_vga.c:68:2: warning: ignoring return value of 'vga_get_uninterruptible', declared with attribute warn_unused_result [-Wunused-result]
vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/display/intel_vga.c: In function 'intel_vga_reset_io_mem':
drivers/gpu/drm/i915/display/intel_vga.c:93:2: warning: ignoring return value of 'vga_get_uninterruptible', declared with attribute warn_unused_result [-Wunused-result]
vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
vim +/vga_get_uninterruptible +68 drivers/gpu/drm/i915/display/intel_vga.c
0c80d60ae63461 Ville Syrjälä 2025-04-17 43
4fb8783165b7c6 Jani Nikula 2019-10-01 44 /* Disable the VGA plane that we never use */
4b6e05c43b7542 Ville Syrjälä 2024-09-06 45 void intel_vga_disable(struct intel_display *display)
4fb8783165b7c6 Jani Nikula 2019-10-01 46 {
4b6e05c43b7542 Ville Syrjälä 2024-09-06 47 struct pci_dev *pdev = to_pci_dev(display->drm->dev);
4b6e05c43b7542 Ville Syrjälä 2024-09-06 48 i915_reg_t vga_reg = intel_vga_cntrl_reg(display);
0c80d60ae63461 Ville Syrjälä 2025-04-17 49 enum pipe pipe;
0c80d60ae63461 Ville Syrjälä 2025-04-17 50 u32 tmp;
4fb8783165b7c6 Jani Nikula 2019-10-01 51 u8 sr1;
4fb8783165b7c6 Jani Nikula 2019-10-01 52
0c80d60ae63461 Ville Syrjälä 2025-04-17 53 tmp = intel_de_read(display, vga_reg);
0c80d60ae63461 Ville Syrjälä 2025-04-17 54 if (tmp & VGA_DISP_DISABLE)
a3af0140663dc3 Emil Velikov 2021-06-04 55 return;
a3af0140663dc3 Emil Velikov 2021-06-04 56
0c80d60ae63461 Ville Syrjälä 2025-04-17 57 if (display->platform.cherryview)
0c80d60ae63461 Ville Syrjälä 2025-04-17 58 pipe = REG_FIELD_GET(VGA_PIPE_SEL_MASK_CHV, tmp);
0c80d60ae63461 Ville Syrjälä 2025-04-17 59 else if (has_vga_pipe_sel(display))
0c80d60ae63461 Ville Syrjälä 2025-04-17 60 pipe = REG_FIELD_GET(VGA_PIPE_SEL_MASK, tmp);
0c80d60ae63461 Ville Syrjälä 2025-04-17 61 else
0c80d60ae63461 Ville Syrjälä 2025-04-17 62 pipe = PIPE_A;
0c80d60ae63461 Ville Syrjälä 2025-04-17 63
0c80d60ae63461 Ville Syrjälä 2025-04-17 64 drm_dbg_kms(display->drm, "Disabling VGA plane on pipe %c\n",
0c80d60ae63461 Ville Syrjälä 2025-04-17 65 pipe_name(pipe));
0c80d60ae63461 Ville Syrjälä 2025-04-17 66
4fb8783165b7c6 Jani Nikula 2019-10-01 67 /* WaEnableVGAAccessThroughIOPort:ctg,elk,ilk,snb,ivb,vlv,hsw */
4fb8783165b7c6 Jani Nikula 2019-10-01 @68 vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO);
f0bb41fad02e03 Jani Nikula 2022-02-02 69 outb(0x01, VGA_SEQ_I);
f0bb41fad02e03 Jani Nikula 2022-02-02 70 sr1 = inb(VGA_SEQ_D);
f0bb41fad02e03 Jani Nikula 2022-02-02 71 outb(sr1 | VGA_SR01_SCREEN_OFF, VGA_SEQ_D);
4fb8783165b7c6 Jani Nikula 2019-10-01 72 vga_put(pdev, VGA_RSRC_LEGACY_IO);
4fb8783165b7c6 Jani Nikula 2019-10-01 73 udelay(300);
4fb8783165b7c6 Jani Nikula 2019-10-01 74
4b6e05c43b7542 Ville Syrjälä 2024-09-06 75 intel_de_write(display, vga_reg, VGA_DISP_DISABLE);
4b6e05c43b7542 Ville Syrjälä 2024-09-06 76 intel_de_posting_read(display, vga_reg);
4fb8783165b7c6 Jani Nikula 2019-10-01 77 }
4fb8783165b7c6 Jani Nikula 2019-10-01 78
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 3/5] vgaarb: mark vga_get family as __must_check
2026-02-17 17:04 ` [PATCH 3/5] vgaarb: mark vga_get family as __must_check Simon Richter
2026-02-18 1:51 ` kernel test robot
@ 2026-02-18 5:59 ` kernel test robot
1 sibling, 0 replies; 19+ messages in thread
From: kernel test robot @ 2026-02-18 5:59 UTC (permalink / raw)
To: Simon Richter, linux-pci
Cc: oe-kbuild-all, intel-xe, dri-devel, Simon Richter
Hi Simon,
kernel test robot noticed the following build warnings:
[auto build test WARNING on 9702969978695d9a699a1f34771580cdbb153b33]
url: https://github.com/intel-lab-lkp/linux/commits/Simon-Richter/vgaarb-pass-vga_get-errors-to-userspace/20260218-010647
base: 9702969978695d9a699a1f34771580cdbb153b33
patch link: https://lore.kernel.org/r/20260217170419.236739-4-Simon.Richter%40hogyros.de
patch subject: [PATCH 3/5] vgaarb: mark vga_get family as __must_check
config: i386-randconfig-141-20260218 (https://download.01.org/0day-ci/archive/20260218/202602181332.NDKD0g1P-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
smatch version: v0.5.0-8994-gd50c5a4c
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260218/202602181332.NDKD0g1P-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202602181332.NDKD0g1P-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/gpu/drm/i915/display/intel_vga.c:68:2: warning: ignoring return value of function declared with 'warn_unused_result' attribute [-Wunused-result]
68 | vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO);
| ^~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/display/intel_vga.c:93:2: warning: ignoring return value of function declared with 'warn_unused_result' attribute [-Wunused-result]
93 | vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO);
| ^~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~
2 warnings generated.
vim +/warn_unused_result +68 drivers/gpu/drm/i915/display/intel_vga.c
0c80d60ae63461 Ville Syrjälä 2025-04-17 43
4fb8783165b7c6 Jani Nikula 2019-10-01 44 /* Disable the VGA plane that we never use */
4b6e05c43b7542 Ville Syrjälä 2024-09-06 45 void intel_vga_disable(struct intel_display *display)
4fb8783165b7c6 Jani Nikula 2019-10-01 46 {
4b6e05c43b7542 Ville Syrjälä 2024-09-06 47 struct pci_dev *pdev = to_pci_dev(display->drm->dev);
4b6e05c43b7542 Ville Syrjälä 2024-09-06 48 i915_reg_t vga_reg = intel_vga_cntrl_reg(display);
0c80d60ae63461 Ville Syrjälä 2025-04-17 49 enum pipe pipe;
0c80d60ae63461 Ville Syrjälä 2025-04-17 50 u32 tmp;
4fb8783165b7c6 Jani Nikula 2019-10-01 51 u8 sr1;
4fb8783165b7c6 Jani Nikula 2019-10-01 52
0c80d60ae63461 Ville Syrjälä 2025-04-17 53 tmp = intel_de_read(display, vga_reg);
0c80d60ae63461 Ville Syrjälä 2025-04-17 54 if (tmp & VGA_DISP_DISABLE)
a3af0140663dc3 Emil Velikov 2021-06-04 55 return;
a3af0140663dc3 Emil Velikov 2021-06-04 56
0c80d60ae63461 Ville Syrjälä 2025-04-17 57 if (display->platform.cherryview)
0c80d60ae63461 Ville Syrjälä 2025-04-17 58 pipe = REG_FIELD_GET(VGA_PIPE_SEL_MASK_CHV, tmp);
0c80d60ae63461 Ville Syrjälä 2025-04-17 59 else if (has_vga_pipe_sel(display))
0c80d60ae63461 Ville Syrjälä 2025-04-17 60 pipe = REG_FIELD_GET(VGA_PIPE_SEL_MASK, tmp);
0c80d60ae63461 Ville Syrjälä 2025-04-17 61 else
0c80d60ae63461 Ville Syrjälä 2025-04-17 62 pipe = PIPE_A;
0c80d60ae63461 Ville Syrjälä 2025-04-17 63
0c80d60ae63461 Ville Syrjälä 2025-04-17 64 drm_dbg_kms(display->drm, "Disabling VGA plane on pipe %c\n",
0c80d60ae63461 Ville Syrjälä 2025-04-17 65 pipe_name(pipe));
0c80d60ae63461 Ville Syrjälä 2025-04-17 66
4fb8783165b7c6 Jani Nikula 2019-10-01 67 /* WaEnableVGAAccessThroughIOPort:ctg,elk,ilk,snb,ivb,vlv,hsw */
4fb8783165b7c6 Jani Nikula 2019-10-01 @68 vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO);
f0bb41fad02e03 Jani Nikula 2022-02-02 69 outb(0x01, VGA_SEQ_I);
f0bb41fad02e03 Jani Nikula 2022-02-02 70 sr1 = inb(VGA_SEQ_D);
f0bb41fad02e03 Jani Nikula 2022-02-02 71 outb(sr1 | VGA_SR01_SCREEN_OFF, VGA_SEQ_D);
4fb8783165b7c6 Jani Nikula 2019-10-01 72 vga_put(pdev, VGA_RSRC_LEGACY_IO);
4fb8783165b7c6 Jani Nikula 2019-10-01 73 udelay(300);
4fb8783165b7c6 Jani Nikula 2019-10-01 74
4b6e05c43b7542 Ville Syrjälä 2024-09-06 75 intel_de_write(display, vga_reg, VGA_DISP_DISABLE);
4b6e05c43b7542 Ville Syrjälä 2024-09-06 76 intel_de_posting_read(display, vga_reg);
4fb8783165b7c6 Jani Nikula 2019-10-01 77 }
4fb8783165b7c6 Jani Nikula 2019-10-01 78
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 0/5] Bridges without VGA support
2026-02-17 17:04 [PATCH 0/5] bridges without VGA support Simon Richter
` (6 preceding siblings ...)
2026-02-17 17:48 ` ✓ CI.KUnit: success " Patchwork
@ 2026-02-18 13:46 ` Simon Richter
2026-02-18 13:46 ` [PATCH v2 1/5] vgaarb: pass vga_get errors to userspace Simon Richter
` (5 more replies)
7 siblings, 6 replies; 19+ messages in thread
From: Simon Richter @ 2026-02-18 13:46 UTC (permalink / raw)
To: linux-pci; +Cc: intel-xe, dri-devel, Simon Richter
Hi,
v2 fixes the formatting errors.
This allows bridges to refuse forwarding VGA, and reports this upwards as an
error, because we cannot set up valid decoding for the requested device in this
case.
I think it should be fine to leave VGA forwarding enabled on lower bridges if a
bridge closer to the root refused to enable forwarding, because no accesses can
reach there anyway.
Simon
Simon Richter (5):
vgaarb: pass vga_get errors to userspace
vgaarb: pass errors from pci_set_vga_state up
vgaarb: mark vga_get family as __must_check
pci: check if VGA decoding was really activated
pci: mark return value of 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(-)
--
2.47.3
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH v2 1/5] vgaarb: pass vga_get errors to userspace
2026-02-18 13:46 ` [PATCH v2 0/5] Bridges " Simon Richter
@ 2026-02-18 13:46 ` Simon Richter
2026-02-18 13:46 ` [PATCH v2 2/5] vgaarb: pass errors from pci_set_vga_state up Simon Richter
` (4 subsequent siblings)
5 siblings, 0 replies; 19+ messages in thread
From: Simon Richter @ 2026-02-18 13:46 UTC (permalink / raw)
To: linux-pci; +Cc: intel-xe, dri-devel, Simon Richter
If vga_get fails, return the error code via the write syscall.
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 87143e235033..188885d30d41 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 (unlikely(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] 19+ messages in thread
* [PATCH v2 2/5] vgaarb: pass errors from pci_set_vga_state up
2026-02-18 13:46 ` [PATCH v2 0/5] Bridges " Simon Richter
2026-02-18 13:46 ` [PATCH v2 1/5] vgaarb: pass vga_get errors to userspace Simon Richter
@ 2026-02-18 13:46 ` Simon Richter
2026-02-18 13:46 ` [PATCH v2 3/5] vgaarb: mark vga_get family as __must_check Simon Richter
` (3 subsequent siblings)
5 siblings, 0 replies; 19+ messages in thread
From: Simon Richter @ 2026-02-18 13:46 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.
Pass this code through __vga_tryget (via 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 188885d30d41..93f695f9d768 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 = 0;
/*
* 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 (unlikely(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 (unlikely(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] 19+ messages in thread
* [PATCH v2 3/5] vgaarb: mark vga_get family as __must_check
2026-02-18 13:46 ` [PATCH v2 0/5] Bridges " Simon Richter
2026-02-18 13:46 ` [PATCH v2 1/5] vgaarb: pass vga_get errors to userspace Simon Richter
2026-02-18 13:46 ` [PATCH v2 2/5] vgaarb: pass errors from pci_set_vga_state up Simon Richter
@ 2026-02-18 13:46 ` Simon Richter
2026-02-23 0:52 ` kernel test robot
2026-02-18 13:46 ` [PATCH v2 4/5] pci: check if VGA decoding was really activated Simon Richter
` (2 subsequent siblings)
5 siblings, 1 reply; 19+ messages in thread
From: Simon Richter @ 2026-02-18 13:46 UTC (permalink / raw)
To: linux-pci; +Cc: intel-xe, dri-devel, Simon Richter
These functions can return an error, but some callers expect they don't,
and unconditionally access VGA registers afterwards and call vga_put.
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] 19+ messages in thread
* [PATCH v2 4/5] pci: check if VGA decoding was really activated
2026-02-18 13:46 ` [PATCH v2 0/5] Bridges " Simon Richter
` (2 preceding siblings ...)
2026-02-18 13:46 ` [PATCH v2 3/5] vgaarb: mark vga_get family as __must_check Simon Richter
@ 2026-02-18 13:46 ` Simon Richter
2026-02-18 13:46 ` [PATCH v2 5/5] pci: mark return value of pci_set_vga_state as __must_check Simon Richter
2026-02-18 17:51 ` [PATCH v2 0/5] Bridges without VGA support Bjorn Helgaas
5 siblings, 0 replies; 19+ messages in thread
From: Simon Richter @ 2026-02-18 13:46 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.
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 f3244630bfd0..0984a0aefb88 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -6198,6 +6198,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] 19+ messages in thread
* [PATCH v2 5/5] pci: mark return value of pci_set_vga_state as __must_check
2026-02-18 13:46 ` [PATCH v2 0/5] Bridges " Simon Richter
` (3 preceding siblings ...)
2026-02-18 13:46 ` [PATCH v2 4/5] pci: check if VGA decoding was really activated Simon Richter
@ 2026-02-18 13:46 ` Simon Richter
2026-02-18 17:51 ` [PATCH v2 0/5] Bridges without VGA support Bjorn Helgaas
5 siblings, 0 replies; 19+ messages in thread
From: Simon Richter @ 2026-02-18 13:46 UTC (permalink / raw)
To: linux-pci; +Cc: intel-xe, dri-devel, Simon Richter
This function can return an error, which should be checked.
The only caller so far is __vga_tryget in vgaarb, which did not check.
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] 19+ messages in thread
* Re: [PATCH v2 0/5] Bridges without VGA support
2026-02-18 13:46 ` [PATCH v2 0/5] Bridges " Simon Richter
` (4 preceding siblings ...)
2026-02-18 13:46 ` [PATCH v2 5/5] pci: mark return value of pci_set_vga_state as __must_check Simon Richter
@ 2026-02-18 17:51 ` Bjorn Helgaas
2026-02-19 4:06 ` Simon Richter
5 siblings, 1 reply; 19+ messages in thread
From: Bjorn Helgaas @ 2026-02-18 17:51 UTC (permalink / raw)
To: Simon Richter; +Cc: linux-pci, intel-xe, dri-devel
On Wed, Feb 18, 2026 at 10:46:28PM +0900, Simon Richter wrote:
> Hi,
>
> v2 fixes the formatting errors.
I'm not sure if you also fixed the kernel test robot warnings
(https://lore.kernel.org/all/202602180912.N7IZbIal-lkp@intel.com,
https://lore.kernel.org/all/202602181332.NDKD0g1P-lkp@intel.com).
If not, please run "git log --oneline" on these files and match the
historical style (capitalization, "()" after function names, etc).
Also applies to some commit logs.
I assume this series fixes some problem where VGA isn't enabled
correctly in some topology? It wasn't obvious to me from the commit
logs, but it would be good to include that if so.
> This allows bridges to refuse forwarding VGA, and reports this upwards as an
> error, because we cannot set up valid decoding for the requested device in this
> case.
>
> I think it should be fine to leave VGA forwarding enabled on lower bridges if a
> bridge closer to the root refused to enable forwarding, because no accesses can
> reach there anyway.
>
> Simon
>
> Simon Richter (5):
> vgaarb: pass vga_get errors to userspace
> vgaarb: pass errors from pci_set_vga_state up
> vgaarb: mark vga_get family as __must_check
> pci: check if VGA decoding was really activated
> pci: mark return value of 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(-)
>
> --
> 2.47.3
>
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 0/5] Bridges without VGA support
2026-02-18 17:51 ` [PATCH v2 0/5] Bridges without VGA support Bjorn Helgaas
@ 2026-02-19 4:06 ` Simon Richter
0 siblings, 0 replies; 19+ messages in thread
From: Simon Richter @ 2026-02-19 4:06 UTC (permalink / raw)
To: Bjorn Helgaas; +Cc: linux-pci, intel-xe, dri-devel
Hi Bjorn,
On 2/19/26 2:51 AM, Bjorn Helgaas wrote:
> I'm not sure if you also fixed the kernel test robot warnings
> (https://lore.kernel.org/all/202602180912.N7IZbIal-lkp@intel.com,
> https://lore.kernel.org/all/202602181332.NDKD0g1P-lkp@intel.com).
I think I did, but the () are still missing, will do another round.
> I assume this series fixes some problem where VGA isn't enabled
> correctly in some topology? It wasn't obvious to me from the commit
> logs, but it would be good to include that if so.
It's the missing error handling if VGA cannot be enabled because a
bridge on the way doesn't support VGA forwarding and hardwires the VGA
bit to zero.
The i915 driver has a workaround for two internal state machines that go
out of sync when voltage regulators are reprogrammed, so it needs to
perform a few VGA accesses on initialization, or there is a risk of a
bus error later when control is returned to vgacon.
This isn't a concern if VGA accesses *never* work, so we can simply skip
it in this case, but we need to know that there was an error.
The i915 counterpart to this is
https://patchwork.freedesktop.org/series/161721/
which changes code introduced in December, so if the pci/vgaarb patches
are backported, that one also needs to be backported manually.
That's what the __must_check are for, the warnings they generate go away
when the i915 patch is applied, so it probably makes sense to do that first.
So, for v3:
- expand commit messages with the text above
- recheck commit message style
Does it make sense to Cc stable on these?
Simon
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH v2 3/5] vgaarb: mark vga_get family as __must_check
2026-02-18 13:46 ` [PATCH v2 3/5] vgaarb: mark vga_get family as __must_check Simon Richter
@ 2026-02-23 0:52 ` kernel test robot
0 siblings, 0 replies; 19+ messages in thread
From: kernel test robot @ 2026-02-23 0:52 UTC (permalink / raw)
To: Simon Richter, linux-pci
Cc: oe-kbuild-all, intel-xe, dri-devel, Simon Richter
Hi Simon,
kernel test robot noticed the following build errors:
[auto build test ERROR on pci/next]
[also build test ERROR on pci/for-linus drm-misc/drm-misc-next drm/drm-next linus/master v6.19 next-20260220]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Simon-Richter/vgaarb-pass-vga_get-errors-to-userspace/20260218-214939
base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
patch link: https://lore.kernel.org/r/20260218134633.461181-4-Simon.Richter%40hogyros.de
patch subject: [PATCH v2 3/5] vgaarb: mark vga_get family as __must_check
config: x86_64-randconfig-072-20250919 (https://download.01.org/0day-ci/archive/20260223/202602230802.stvvFCIZ-lkp@intel.com/config)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260223/202602230802.stvvFCIZ-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202602230802.stvvFCIZ-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/gpu/drm/i915/display/intel_vga.c: In function 'intel_vga_disable':
>> drivers/gpu/drm/i915/display/intel_vga.c:68:9: error: ignoring return value of 'vga_get_uninterruptible' declared with attribute 'warn_unused_result' [-Werror=unused-result]
68 | vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/i915/display/intel_vga.c: In function 'intel_vga_reset_io_mem':
drivers/gpu/drm/i915/display/intel_vga.c:93:9: error: ignoring return value of 'vga_get_uninterruptible' declared with attribute 'warn_unused_result' [-Werror=unused-result]
93 | vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
vim +68 drivers/gpu/drm/i915/display/intel_vga.c
0c80d60ae63461 Ville Syrjälä 2025-04-17 43
4fb8783165b7c6 Jani Nikula 2019-10-01 44 /* Disable the VGA plane that we never use */
4b6e05c43b7542 Ville Syrjälä 2024-09-06 45 void intel_vga_disable(struct intel_display *display)
4fb8783165b7c6 Jani Nikula 2019-10-01 46 {
4b6e05c43b7542 Ville Syrjälä 2024-09-06 47 struct pci_dev *pdev = to_pci_dev(display->drm->dev);
4b6e05c43b7542 Ville Syrjälä 2024-09-06 48 i915_reg_t vga_reg = intel_vga_cntrl_reg(display);
0c80d60ae63461 Ville Syrjälä 2025-04-17 49 enum pipe pipe;
0c80d60ae63461 Ville Syrjälä 2025-04-17 50 u32 tmp;
4fb8783165b7c6 Jani Nikula 2019-10-01 51 u8 sr1;
4fb8783165b7c6 Jani Nikula 2019-10-01 52
0c80d60ae63461 Ville Syrjälä 2025-04-17 53 tmp = intel_de_read(display, vga_reg);
0c80d60ae63461 Ville Syrjälä 2025-04-17 54 if (tmp & VGA_DISP_DISABLE)
a3af0140663dc3 Emil Velikov 2021-06-04 55 return;
a3af0140663dc3 Emil Velikov 2021-06-04 56
0c80d60ae63461 Ville Syrjälä 2025-04-17 57 if (display->platform.cherryview)
0c80d60ae63461 Ville Syrjälä 2025-04-17 58 pipe = REG_FIELD_GET(VGA_PIPE_SEL_MASK_CHV, tmp);
0c80d60ae63461 Ville Syrjälä 2025-04-17 59 else if (has_vga_pipe_sel(display))
0c80d60ae63461 Ville Syrjälä 2025-04-17 60 pipe = REG_FIELD_GET(VGA_PIPE_SEL_MASK, tmp);
0c80d60ae63461 Ville Syrjälä 2025-04-17 61 else
0c80d60ae63461 Ville Syrjälä 2025-04-17 62 pipe = PIPE_A;
0c80d60ae63461 Ville Syrjälä 2025-04-17 63
0c80d60ae63461 Ville Syrjälä 2025-04-17 64 drm_dbg_kms(display->drm, "Disabling VGA plane on pipe %c\n",
0c80d60ae63461 Ville Syrjälä 2025-04-17 65 pipe_name(pipe));
0c80d60ae63461 Ville Syrjälä 2025-04-17 66
4fb8783165b7c6 Jani Nikula 2019-10-01 67 /* WaEnableVGAAccessThroughIOPort:ctg,elk,ilk,snb,ivb,vlv,hsw */
4fb8783165b7c6 Jani Nikula 2019-10-01 @68 vga_get_uninterruptible(pdev, VGA_RSRC_LEGACY_IO);
f0bb41fad02e03 Jani Nikula 2022-02-02 69 outb(0x01, VGA_SEQ_I);
f0bb41fad02e03 Jani Nikula 2022-02-02 70 sr1 = inb(VGA_SEQ_D);
f0bb41fad02e03 Jani Nikula 2022-02-02 71 outb(sr1 | VGA_SR01_SCREEN_OFF, VGA_SEQ_D);
4fb8783165b7c6 Jani Nikula 2019-10-01 72 vga_put(pdev, VGA_RSRC_LEGACY_IO);
4fb8783165b7c6 Jani Nikula 2019-10-01 73 udelay(300);
4fb8783165b7c6 Jani Nikula 2019-10-01 74
4b6e05c43b7542 Ville Syrjälä 2024-09-06 75 intel_de_write(display, vga_reg, VGA_DISP_DISABLE);
4b6e05c43b7542 Ville Syrjälä 2024-09-06 76 intel_de_posting_read(display, vga_reg);
4fb8783165b7c6 Jani Nikula 2019-10-01 77 }
4fb8783165b7c6 Jani Nikula 2019-10-01 78
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2026-02-23 0:52 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-17 17:04 [PATCH 0/5] bridges without VGA support Simon Richter
2026-02-17 17:04 ` [PATCH 1/5] vgaarb: pass vga_get errors to userspace Simon Richter
2026-02-17 17:04 ` [PATCH 2/5] vgaarb: pass errors from pci_set_vga_state up Simon Richter
2026-02-17 17:04 ` [PATCH 3/5] vgaarb: mark vga_get family as __must_check Simon Richter
2026-02-18 1:51 ` kernel test robot
2026-02-18 5:59 ` kernel test robot
2026-02-17 17:04 ` [PATCH 4/5] pci: check if VGA decoding was really activated Simon Richter
2026-02-17 17:04 ` [PATCH 5/5] pci: mark return value of pci_set_vga_state as __must_check Simon Richter
2026-02-17 17:46 ` ✗ CI.checkpatch: warning for bridges without VGA support Patchwork
2026-02-17 17:48 ` ✓ CI.KUnit: success " Patchwork
2026-02-18 13:46 ` [PATCH v2 0/5] Bridges " Simon Richter
2026-02-18 13:46 ` [PATCH v2 1/5] vgaarb: pass vga_get errors to userspace Simon Richter
2026-02-18 13:46 ` [PATCH v2 2/5] vgaarb: pass errors from pci_set_vga_state up Simon Richter
2026-02-18 13:46 ` [PATCH v2 3/5] vgaarb: mark vga_get family as __must_check Simon Richter
2026-02-23 0:52 ` kernel test robot
2026-02-18 13:46 ` [PATCH v2 4/5] pci: check if VGA decoding was really activated Simon Richter
2026-02-18 13:46 ` [PATCH v2 5/5] pci: mark return value of pci_set_vga_state as __must_check Simon Richter
2026-02-18 17:51 ` [PATCH v2 0/5] Bridges without VGA support Bjorn Helgaas
2026-02-19 4:06 ` Simon Richter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox