* [PATCH v11 0/8] Vswing / Pre-emphasis Override
@ 2026-08-13 16:09 Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 1/8] drm/i915/bios: search for VBT #57 by default Michał Grzelak
` (12 more replies)
0 siblings, 13 replies; 18+ messages in thread
From: Michał Grzelak @ 2026-08-13 16:09 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Jani Nikula, Suraj Kandpal, Michał Grzelak
Next version of [1]. v5 of IGT part is at [2].
Removed dead NULL check of devdata which is no longer needed.
Also improved code style of previous version.
This series still does not include LT patches.
Tested by loading xe with custom VBT#57 on PTL. Same for i915 on EHL.
Custom VBT#57 from PTL decoded by [2]:
Block 57 min size 2 less than block size 1154
BDB block 57 (1154 bytes, min 2 bytes) - Vswing Preemph:
Number of vswing tables: 6
Number of columns: 3
Number of rows: 16
PHY type: Cx0
Vswing Table #1 (C10: DP 1.4 RBR/HBR; C20: UNUSED):
Preset #01: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #02: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #03: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #04: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #05: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #06: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #07: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #08: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #09: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #10: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #11: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #12: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #13: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #14: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #15: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #16: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Vswing Table #2 (C10: DP 1.4 HBR2/HBR3; C20: UNUSED):
Preset #01: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #02: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #03: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #04: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #05: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #06: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #07: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #08: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #09: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #10: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #11: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #12: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #13: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #14: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #15: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #16: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Vswing Table #3 (C10: eDP non-HBR3; C20: UNUSED):
Preset #01: vswing: 0x0000001a, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #02: vswing: 0x00000021, pre-cursor: 0x00000000, post-cursor: 0x00000006
Preset #03: vswing: 0x00000026, pre-cursor: 0x00000000, post-cursor: 0x0000000b
Preset #04: vswing: 0x0000002b, pre-cursor: 0x00000000, post-cursor: 0x00000013
Preset #05: vswing: 0x00000027, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #06: vswing: 0x0000002d, pre-cursor: 0x00000000, post-cursor: 0x00000007
Preset #07: vswing: 0x0000002e, pre-cursor: 0x00000000, post-cursor: 0x0000000d
Preset #08: vswing: 0x0000002e, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #09: vswing: 0x00000037, pre-cursor: 0x00000000, post-cursor: 0x00000007
Preset #10: vswing: 0x0000003e, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #11: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #12: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #13: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #14: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #15: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #16: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Vswing Table #4 (C10: eDP HBR3; C20: UNUSED):
Preset #01: vswing: 0x0000001a, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #02: vswing: 0x00000021, pre-cursor: 0x00000000, post-cursor: 0x00000006
Preset #03: vswing: 0x00000026, pre-cursor: 0x00000000, post-cursor: 0x0000000b
Preset #04: vswing: 0x0000002b, pre-cursor: 0x00000000, post-cursor: 0x00000013
Preset #05: vswing: 0x00000027, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #06: vswing: 0x0000002d, pre-cursor: 0x00000000, post-cursor: 0x00000007
Preset #07: vswing: 0x0000002e, pre-cursor: 0x00000000, post-cursor: 0x0000000d
Preset #08: vswing: 0x0000002e, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #09: vswing: 0x00000037, pre-cursor: 0x00000000, post-cursor: 0x00000007
Preset #10: vswing: 0x0000003e, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #11: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #12: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #13: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #14: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #15: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #16: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Vswing Table #5 (C10: UNUSED; C20: DP 1.4):
Preset #01: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #02: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #03: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #04: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #05: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #06: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #07: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #08: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #09: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #10: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #11: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #12: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #13: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #14: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #15: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #16: vswing: 0x00000000, pre-cursor: 0x00000000, post-cursor: 0x00000000
Vswing Table #6 (C10: UNUSED; C20: DP 2.X):
Preset #01: vswing: 0x00000030, pre-cursor: 0x00000000, post-cursor: 0x00000000
Preset #02: vswing: 0x0000002b, pre-cursor: 0x00000000, post-cursor: 0x00000005
Preset #03: vswing: 0x00000028, pre-cursor: 0x00000000, post-cursor: 0x00000008
Preset #04: vswing: 0x00000025, pre-cursor: 0x00000000, post-cursor: 0x0000000b
Preset #05: vswing: 0x00000021, pre-cursor: 0x00000000, post-cursor: 0x0000000f
Preset #06: vswing: 0x0000002e, pre-cursor: 0x00000002, post-cursor: 0x00000000
Preset #07: vswing: 0x0000002a, pre-cursor: 0x00000002, post-cursor: 0x00000004
Preset #08: vswing: 0x00000026, pre-cursor: 0x00000002, post-cursor: 0x00000008
Preset #09: vswing: 0x00000023, pre-cursor: 0x00000002, post-cursor: 0x0000000b
Preset #10: vswing: 0x00000021, pre-cursor: 0x00000002, post-cursor: 0x0000000d
Preset #11: vswing: 0x0000002c, pre-cursor: 0x00000004, post-cursor: 0x00000000
Preset #12: vswing: 0x00000028, pre-cursor: 0x00000004, post-cursor: 0x00000004
Preset #13: vswing: 0x00000025, pre-cursor: 0x00000004, post-cursor: 0x00000007
Preset #14: vswing: 0x00000021, pre-cursor: 0x00000004, post-cursor: 0x0000000b
Preset #15: vswing: 0x00000028, pre-cursor: 0x00000008, post-cursor: 0x00000000
Preset #16: vswing: 0x0000001e, pre-cursor: 0x00000002, post-cursor: 0x00000002
Custom VBT#57 from EHL decoded by [2]:
Block 57 min size 2 less than block size 1322
BDB block 57 (1322 bytes, min 2 bytes) - Vswing Preemph:
Warning: purpose of tables varies between EHL & JSL
Number of vswing tables: 3
Number of columns: 11
Number of rows: 10
PHY type: Combo
Vswing Table #1 (High Vswing eDP/DP upto HBR3):
V0-P0:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V0-P1:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V0-P2:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V0-P3:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V1-P0:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V1-P1:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V1-P2:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V2-P0:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V2-P1:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V3-P0:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
Vswing Table #2 (Low Vswing eDP upto HBR2):
V0-P0:
dw2_swing_sel: 0x0000000a, dw7_n_scalar: 0x00000033, dw4_cursor_coeff: 0x0000003f,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V0-P1:
dw2_swing_sel: 0x0000000a, dw7_n_scalar: 0x00000047, dw4_cursor_coeff: 0x00000038,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000007, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V0-P2:
dw2_swing_sel: 0x0000000c, dw7_n_scalar: 0x00000064, dw4_cursor_coeff: 0x00000033,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x0000000c, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V0-P3:
dw2_swing_sel: 0x00000006, dw7_n_scalar: 0x0000007f, dw4_cursor_coeff: 0x0000002f,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000010, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V1-P0:
dw2_swing_sel: 0x0000000a, dw7_n_scalar: 0x00000046, dw4_cursor_coeff: 0x0000003f,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V1-P1:
dw2_swing_sel: 0x0000000c, dw7_n_scalar: 0x00000064, dw4_cursor_coeff: 0x00000037,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000008, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V1-P2:
dw2_swing_sel: 0x00000006, dw7_n_scalar: 0x0000007f, dw4_cursor_coeff: 0x00000032,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x0000000d, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V2-P0:
dw2_swing_sel: 0x0000000c, dw7_n_scalar: 0x00000061, dw4_cursor_coeff: 0x0000003f,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V2-P1:
dw2_swing_sel: 0x00000006, dw7_n_scalar: 0x0000007f, dw4_cursor_coeff: 0x00000037,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000008, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V3-P0:
dw2_swing_sel: 0x00000006, dw7_n_scalar: 0x0000007f, dw4_cursor_coeff: 0x0000003f,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
Vswing Table #3 (Low Vswing eDP upto HBR3):
V0-P0:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V0-P1:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V0-P2:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V0-P3:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V1-P0:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V1-P1:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V1-P2:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V2-P0:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V2-P1:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
V3-P0:
dw2_swing_sel: 0x00000000, dw7_n_scalar: 0x00000000, dw4_cursor_coeff: 0x00000000,
dw4_post_cursor_2: 0x00000000, dw4_post_cursor_1: 0x00000000, rcomp_scalar: 0x00000000,
rterm_select: 0x00000000, tap3_disable: 0x00000000, tap2_disable: 0x00000000,
cursor_program: 0x00000000, coeff_polarity: 0x00000000
BR,
Michał
[1] https://lore.kernel.org/intel-gfx/20260702185839.4042397-1-michal.grzelak@intel.com/
[2] https://lore.kernel.org/igt-dev/20260702182619.3973788-1-michal.grzelak@intel.com/
---
Changelog:
v10->v11
- remove no-longer-relevant check for NULL devdata (Jani)
- initialize local variables at declaration block (Jani)
- branch with 'else` instead of initializing twice (Jani)
- use blank line before 'return` (Jani)
v9->v10
- drop deconstifying default tables (Suraj, Jani)
- add separate non-const field for `entries` caching
- cache `entries` into const field after data is overwritten (Jani)
- call dedicated VS/PE-O vfunc
v8->v9
- init vspeo before using it
- deconstify intel_ddi_buf_trans_entry in separate commit
v7->v8
- remove comments (Suraj)
- add check for LT (Suraj)
v6->v7
- parse VBT#57 before blocks dependant on child device list (Jani)
- expand VS/PE-O acronym in debug logging (Jani)
- handle VS/PE-O's VBT details in intel_bios_* functions (Jani)
- remove vspeo's cast to (void *) (Jani)
- check devdata->vspeo if VS/PE-O was requested
- call encoder->get_buf_trans() once (Jani)
- return NULL from intel_bios_get_* when using default (Jani)
- validate VS/PE-O in intel_bios.c (Jani)
- inline *_get_vspeo_buf_trans()
- remove temporarily LT
v5->v6
- check if devdata is not NULL
- add Bspec (Suraj)
- remove drm_WARN_ONCE (Suraj)
- pass default VS/PE tables to LT's BIOS accessor (Suraj)
- set txswing & _level from default VS/PE tables (Suraj)
- add helper checking if VS/PE-O has been allocated (Suraj)
v4->v5
- set devdata->vspeo->num_entries in intel_bios.c
- add if-ladder instead of function pointer
- blend index computation with table parsing
- remove WARN and debug messages
- remove enums entirely
- add spaces around operators (Suraj)
- remove spaces after type casting (Suraj)
- remove INTEL_DISPLAY_STATE_WARN (Suraj)
- change funcs prefix from snps_ to mtl_ (Suraj)
v3->v4
- add Bspec (Suraj)
- remove unnecessary init of VS/PE-O metadata (Suraj)
- add helper for computing number of rows (Suraj)
- fix num_rows's type (Jani, Suraj)
- declare num_rows (Suraj)
- change debug message when requesting VS/PE-O (Suraj)
- stick to solely changing VBT data into current structures (Jani)
- move iterator declaration to declaration block (Suraj)
v2->v3
- remove unnecessary braces from if block (Suraj)
- return -EINVAL instead of -1 (Suraj)
Michał Grzelak (8):
drm/i915/bios: search for VBT #57 by default
drm/i915/bios: store VBT #57's metadata in intel_vbt_data
drm/i915/bios: print VS/PE-O port info
drm/i915/bios: de/allocate VS/PE-O buffers for each port
drm/i915/buf_trans: add vfunc for VS/PE-O
drm/i915: override Snps's VS/PE when requested
drm/i915: override Combo's VS/PE when requested
drm/i915/bios: remove VS/PE-O warning
drivers/gpu/drm/i915/display/intel_bios.c | 267 +++++++++++++++++-
drivers/gpu/drm/i915/display/intel_bios.h | 14 +
.../drm/i915/display/intel_ddi_buf_trans.c | 86 +++++-
.../gpu/drm/i915/display/intel_display_core.h | 7 +
.../drm/i915/display/intel_display_types.h | 3 +
5 files changed, 363 insertions(+), 14 deletions(-)
--
2.45.2
^ permalink raw reply [flat|nested] 18+ messages in thread* [PATCH v11 1/8] drm/i915/bios: search for VBT #57 by default
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
@ 2026-08-13 16:09 ` Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 2/8] drm/i915/bios: store VBT #57's metadata in intel_vbt_data Michał Grzelak
` (11 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Michał Grzelak @ 2026-08-13 16:09 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Jani Nikula, Suraj Kandpal, Michał Grzelak
Start searching for Vswing / Preemphasis Override Block during VBT
parsing at init_bdb_blocks().
Check for failure since pre-ICL GOPs do not contain the block. Check
also if VBT version is appropriately up-to-date.
v6->v7
- parse VBT#57 before blocks dependent on child device list (Jani)
- remove debug message (Suraj)
v3->v4
- add Bspec (Suraj)
Bspec: 32063
Signed-off-by: Michał Grzelak <michal.grzelak@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/i915/display/intel_bios.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 97cbae2e547e2..ece4df4a9d62a 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -200,6 +200,8 @@ static const struct {
.min_size = sizeof(struct bdb_mipi_sequence) },
{ .section_id = BDB_COMPRESSION_PARAMETERS,
.min_size = sizeof(struct bdb_compression_parameters), },
+ { .section_id = BDB_VSWING_PREEMPH,
+ .min_size = sizeof(struct bdb_vswing_preemph), },
{ .section_id = BDB_GENERIC_DTD,
.min_size = sizeof(struct bdb_generic_dtd), },
};
@@ -2203,6 +2205,21 @@ parse_compression_parameters(struct intel_display *display)
}
}
+static void
+parse_vswing_preemph_override(struct intel_display *display)
+{
+ const struct bdb_vswing_preemph *block;
+
+ if (display->vbt.version < 218)
+ return;
+
+ block = bdb_find_section(display, BDB_VSWING_PREEMPH);
+
+ /* pre-ICL GOPs don't have VBT #57 */
+ if (!block)
+ return;
+}
+
static u8 translate_iboost(struct intel_display *display, u8 val)
{
static const u8 mapping[] = { 1, 3, 7 }; /* See VBT spec */
@@ -3291,6 +3308,7 @@ void intel_bios_init(struct intel_display *display)
parse_general_features(display);
parse_general_definitions(display);
parse_driver_features(display);
+ parse_vswing_preemph_override(display);
/* Depends on child device list */
parse_compression_parameters(display);
--
2.45.2
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH v11 2/8] drm/i915/bios: store VBT #57's metadata in intel_vbt_data
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 1/8] drm/i915/bios: search for VBT #57 by default Michał Grzelak
@ 2026-08-13 16:09 ` Michał Grzelak
2026-08-13 16:20 ` sashiko-bot
2026-08-13 16:09 ` [PATCH v11 3/8] drm/i915/bios: print VS/PE-O port info Michał Grzelak
` (10 subsequent siblings)
12 siblings, 1 reply; 18+ messages in thread
From: Michał Grzelak @ 2026-08-13 16:09 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Jani Nikula, Suraj Kandpal, Michał Grzelak
Store tables, number of tables, number of rows and number of columns in
intel_vbt_data when search for the VBT #57 has succeeded. Structurize
all VS/PE-O relevant metadata inside anonymous struct named as vspeo.
Presence of C20 or newer PHY causes each table to contain 16 rows. Each
table contains 10 rows in case C20 PHY is absent. Use display version to
determine number of rows since there is no helper in intel_bios.c to
check presence of any C20+ PHY. pre-MTL platforms should have 10 rows
while MTL+ should have 16 rows.
v5->v6
- add Bspec (Suraj)
v3->v4
- remove unnecessary init of VS/PE-O metadata (Suraj)
- add helper for computing number of rows (Suraj)
- fix num_rows's type (Jani, Suraj)
- declare num_rows (Suraj)
Bspec: 68963
Signed-off-by: Michał Grzelak <michal.grzelak@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/i915/display/intel_bios.c | 10 ++++++++++
drivers/gpu/drm/i915/display/intel_display_core.h | 7 +++++++
2 files changed, 17 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index ece4df4a9d62a..06a8dd7581bb8 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -2205,6 +2205,11 @@ parse_compression_parameters(struct intel_display *display)
}
}
+static int vswing_preemph_num_rows(struct intel_display *display)
+{
+ return DISPLAY_VER(display) >= 14 ? 16 : 10;
+}
+
static void
parse_vswing_preemph_override(struct intel_display *display)
{
@@ -2218,6 +2223,11 @@ parse_vswing_preemph_override(struct intel_display *display)
/* pre-ICL GOPs don't have VBT #57 */
if (!block)
return;
+
+ display->vbt.vspeo.tables = block->tables;
+ display->vbt.vspeo.num_tables = block->num_tables;
+ display->vbt.vspeo.num_columns = block->num_columns;
+ display->vbt.vspeo.num_rows = vswing_preemph_num_rows(display);
}
static u8 translate_iboost(struct intel_display *display, u8 val)
diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
index 7e988b7b1fe7a..c80b4a2f74f9e 100644
--- a/drivers/gpu/drm/i915/display/intel_display_core.h
+++ b/drivers/gpu/drm/i915/display/intel_display_core.h
@@ -244,6 +244,13 @@ struct intel_vbt_data {
struct list_head display_devices;
struct list_head bdb_blocks;
+ struct {
+ const u32 *tables;
+ int num_tables;
+ int num_columns;
+ int num_rows;
+ } vspeo;
+
struct sdvo_device_mapping {
u8 initialized;
u8 dvo_port;
--
2.45.2
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH v11 2/8] drm/i915/bios: store VBT #57's metadata in intel_vbt_data
2026-08-13 16:09 ` [PATCH v11 2/8] drm/i915/bios: store VBT #57's metadata in intel_vbt_data Michał Grzelak
@ 2026-08-13 16:20 ` sashiko-bot
0 siblings, 0 replies; 18+ messages in thread
From: sashiko-bot @ 2026-08-13 16:20 UTC (permalink / raw)
To: Michał Grzelak; +Cc: intel-gfx, intel-xe
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] Out-of-bounds Read due to Missing VBT Block Size Validation and Hardware Assumptions
- [High] Undefined Behavior from Unaligned Pointer Cast of Packed Struct Member
--
--- Patch [2]: [PATCH v11 2/8] drm/i915/bios: store VBT #57's metadata in intel_vbt_data ---
commit ecc48f16388bfb4ef7b96b15e355044be1dd9fb7
Author: Michał Grzelak <michal.grzelak@intel.com>
drm/i915/bios: store VBT #57's metadata in intel_vbt_data
This commit stores VBT #57 (VS/PE-O) metadata inside a new vspeo struct
in intel_vbt_data. It also introduces a helper to calculate the number of
rows based on the display version, assigning 16 rows to MTL+ and 10 rows
to older platforms.
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index ece4df4a9d62a..06a8dd7581bb8 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
> @@ -2205,6 +2205,11 @@ parse_compression_parameters(struct intel_display *display)
> }
> }
>
> +static int vswing_preemph_num_rows(struct intel_display *display)
> +{
> + return DISPLAY_VER(display) >= 14 ? 16 : 10;
> +}
> +
> static void
> parse_vswing_preemph_override(struct intel_display *display)
> {
> @@ -2218,6 +2223,11 @@ parse_vswing_preemph_override(struct intel_display *display)
> /* pre-ICL GOPs don't have VBT #57 */
> if (!block)
> return;
> +
> + display->vbt.vspeo.tables = block->tables;
> + display->vbt.vspeo.num_tables = block->num_tables;
> + display->vbt.vspeo.num_columns = block->num_columns;
> + display->vbt.vspeo.num_rows = vswing_preemph_num_rows(display);
[Severity: High]
Does this code perform an out-of-bounds read if the VBT block is smaller
than expected?
The parser reads num_tables and num_columns from the untrusted VBT block,
and hardcodes num_rows to 16 for DISPLAY_VER >= 14 via
vswing_preemph_num_rows().
However, it doesn't validate whether get_blocksize(block) is large enough
to contain num_tables * num_columns * num_rows * sizeof(u32) bytes.
Additionally, if a platform with DISPLAY_VER >= 14 lacks a C20 PHY and
legitimately provides a smaller 10-row VBT block, this hardcoded 16-row
assumption will cause the driver to read past the end of the block.
> }
>
> static u8 translate_iboost(struct intel_display *display, u8 val)
> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
> index 7e988b7b1fe7a..c80b4a2f74f9e 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> @@ -244,6 +244,13 @@ struct intel_vbt_data {
> struct list_head display_devices;
> struct list_head bdb_blocks;
>
> + struct {
> + const u32 *tables;
[Severity: High]
Will assigning the packed array to this pointer cause undefined behavior?
In struct bdb_vswing_preemph, the tables array is part of a __packed
structure, meaning it can be unaligned. When block->tables is assigned
to this standard const u32 * pointer in parse_vswing_preemph_override(),
the compiler's __packed annotations are dropped.
Any subsequent array accesses through vspeo.tables will assume standard
alignment, which can cause unaligned memory reads and UBSAN alignment faults.
> + int num_tables;
> + int num_columns;
> + int num_rows;
> + } vspeo;
> +
> struct sdvo_device_mapping {
> u8 initialized;
> u8 dvo_port;
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260813160918.918857-1-michal.grzelak@intel.com?part=2
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v11 3/8] drm/i915/bios: print VS/PE-O port info
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 1/8] drm/i915/bios: search for VBT #57 by default Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 2/8] drm/i915/bios: store VBT #57's metadata in intel_vbt_data Michał Grzelak
@ 2026-08-13 16:09 ` Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 4/8] drm/i915/bios: de/allocate VS/PE-O buffers for each port Michał Grzelak
` (9 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Michał Grzelak @ 2026-08-13 16:09 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Jani Nikula, Suraj Kandpal, Michał Grzelak
Issue a debug message when port asks to override default Vswing /
Preemphasis tables.
Add helper intel_bios_encoder_requests_vspeo() to check if port
requests for overriding default VS/PE tables.
v6->v7
- expand VS/PE-O acronym in debug logging (Jani)
v3->v4
- change debug message when requesting VS/PE-O (Suraj)
Signed-off-by: Michał Grzelak <michal.grzelak@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/i915/display/intel_bios.c | 10 ++++++++++
drivers/gpu/drm/i915/display/intel_bios.h | 1 +
2 files changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 06a8dd7581bb8..9610b794bc147 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -2801,6 +2801,11 @@ static void print_ddi_port(const struct intel_bios_encoder_data *devdata)
"Port %c supports dynamic DDI allocation in TCSS\n",
port_name(port));
+ if (intel_bios_encoder_requests_vspeo(devdata))
+ drm_dbg_kms(display->drm,
+ "Port %c requests vswing/pre-emphasis override\n",
+ port_name(port));
+
hdmi_level_shift = intel_bios_hdmi_level_shift(devdata);
if (hdmi_level_shift >= 0) {
drm_dbg_kms(display->drm,
@@ -3829,6 +3834,11 @@ int intel_bios_hdmi_ddc_pin(const struct intel_bios_encoder_data *devdata)
return map_ddc_pin(devdata->display, devdata->child.ddc_pin);
}
+bool intel_bios_encoder_requests_vspeo(const struct intel_bios_encoder_data *devdata)
+{
+ return devdata->display->vbt.version >= 218 && devdata->child.use_vbt_vswing;
+}
+
bool intel_bios_encoder_supports_typec_usb(const struct intel_bios_encoder_data *devdata)
{
return devdata->display->vbt.version >= 195 && devdata->child.dp_usb_type_c;
diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
index 75dff27b42289..7a50a272cd27d 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.h
+++ b/drivers/gpu/drm/i915/display/intel_bios.h
@@ -73,6 +73,7 @@ bool intel_bios_get_dsc_params(struct intel_encoder *encoder,
const struct intel_bios_encoder_data *
intel_bios_encoder_data_lookup(struct intel_display *display, enum port port);
+bool intel_bios_encoder_requests_vspeo(const struct intel_bios_encoder_data *devdata);
bool intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata);
bool intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devdata);
bool intel_bios_encoder_supports_dp(const struct intel_bios_encoder_data *devdata);
--
2.45.2
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH v11 4/8] drm/i915/bios: de/allocate VS/PE-O buffers for each port
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
` (2 preceding siblings ...)
2026-08-13 16:09 ` [PATCH v11 3/8] drm/i915/bios: print VS/PE-O port info Michał Grzelak
@ 2026-08-13 16:09 ` Michał Grzelak
2026-08-13 16:17 ` sashiko-bot
2026-08-13 16:09 ` [PATCH v11 5/8] drm/i915/buf_trans: add vfunc for VS/PE-O Michał Grzelak
` (8 subsequent siblings)
12 siblings, 1 reply; 18+ messages in thread
From: Michał Grzelak @ 2026-08-13 16:09 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Jani Nikula, Suraj Kandpal, Michał Grzelak
Every devdata needs a VS/PE-O dedicated buffers since each port can
request an override. Add intel_ddi_buf_trans{,_entry} pointers into
intel_bios_encoder_data.
Allocate struct intel_ddi_buf_trans{,_entry} for the port if VS/PE-O was
requested and is supported. Keep NULL in vspeo if any allocation failed
or VS/PE-O was not requested. It will be used later for checking if
override should actually take place.
Note that we theoretically could store intel_ddi_buf_trans_entry inside
`entries` field of newly allocated intel_ddi_buf_trans. However it will
be impossible to overwrite the buffer during intel_ddi_get_buf_trans()
without discarding const qualifier of `entries` field. This would
involve either void casting or deconstifying entries field and in turn
all predefined tables as well. Thus add a separate non-const qualified
field into intel_bios_encoder_data for the buffer, which after
overwriting will be promoted to be const qualified.
Deallocate the buffer as well as entries if requested.
v9->v10
- add separate non-const field for `entries` caching
- cache `entries` into const field after data is overwritten (Jani)
v4->v5
- set devdata->vspeo->num_entries in intel_bios.c
Signed-off-by: Michał Grzelak <michal.grzelak@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/i915/display/intel_bios.c | 32 +++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 9610b794bc147..a491b85006117 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -34,6 +34,7 @@
#include <drm/drm_fixed.h>
#include <drm/drm_print.h>
+#include "intel_ddi_buf_trans.h"
#include "intel_display.h"
#include "intel_display_core.h"
#include "intel_display_rpm.h"
@@ -72,6 +73,8 @@
struct intel_bios_encoder_data {
struct intel_display *display;
+ struct intel_ddi_buf_trans *vspeo;
+ union intel_ddi_buf_trans_entry *entries;
struct child_device_config child;
struct dsc_compression_parameters_entry *dsc;
struct list_head node;
@@ -2648,6 +2651,29 @@ static void sanitize_device_type(struct intel_bios_encoder_data *devdata,
devdata->child.device_type |= DEVICE_TYPE_NOT_HDMI_OUTPUT;
}
+static void allocate_vswing_preemph_override(struct intel_bios_encoder_data *devdata)
+{
+ int num_rows = devdata->display->vbt.vspeo.num_rows;
+ union intel_ddi_buf_trans_entry *entries;
+ struct intel_ddi_buf_trans *vspeo;
+
+ if (!intel_bios_encoder_requests_vspeo(devdata))
+ return;
+
+ vspeo = kzalloc_obj(*vspeo);
+ if (!vspeo)
+ return;
+
+ entries = kzalloc_objs(*entries, num_rows);
+ if (!entries) {
+ kfree(vspeo);
+ return;
+ }
+
+ devdata->vspeo = vspeo;
+ devdata->entries = entries;
+}
+
static void sanitize_hdmi_level_shift(struct intel_bios_encoder_data *devdata,
enum port port)
{
@@ -2866,6 +2892,7 @@ static void parse_ddi_port(struct intel_bios_encoder_data *devdata)
sanitize_dedicated_external(devdata, port);
sanitize_device_type(devdata, port);
sanitize_hdmi_level_shift(devdata, port);
+ allocate_vswing_preemph_override(devdata);
}
static bool has_ddi_port_info(struct intel_display *display)
@@ -3403,6 +3430,11 @@ void intel_bios_driver_remove(struct intel_display *display)
list_for_each_entry_safe(devdata, nd, &display->vbt.display_devices,
node) {
list_del(&devdata->node);
+
+ if (devdata->vspeo)
+ kfree(devdata->vspeo->entries);
+
+ kfree(devdata->vspeo);
kfree(devdata->dsc);
kfree(devdata);
}
--
2.45.2
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH v11 4/8] drm/i915/bios: de/allocate VS/PE-O buffers for each port
2026-08-13 16:09 ` [PATCH v11 4/8] drm/i915/bios: de/allocate VS/PE-O buffers for each port Michał Grzelak
@ 2026-08-13 16:17 ` sashiko-bot
0 siblings, 0 replies; 18+ messages in thread
From: sashiko-bot @ 2026-08-13 16:17 UTC (permalink / raw)
To: Michał Grzelak; +Cc: intel-xe, intel-gfx
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [Medium] Memory leak of devdata->entries during driver removal.
- [Low] Missing initialization of `num_entries` in `devdata->vspeo`.
--
--- Patch [4]: [PATCH v11 4/8] drm/i915/bios: de/allocate VS/PE-O buffers for each port ---
commit f4e52d6386e66ed2695365f0776e18c426ae4237
Author: Michał Grzelak <michal.grzelak@intel.com>
drm/i915/bios: de/allocate VS/PE-O buffers for each port
This patch allocates dedicated VS/PE-O buffers for each port if an
override is requested and supported. It adds intel_ddi_buf_trans and
entries fields to intel_bios_encoder_data and handles their allocation
and deallocation.
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index 9610b794bc147..a491b85006117 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
[ ... ]
> @@ -2648,6 +2651,29 @@ static void sanitize_device_type(struct intel_bios_encoder_data *devdata,
> +static void allocate_vswing_preemph_override(struct intel_bios_encoder_data *devdata)
> +{
> + int num_rows = devdata->display->vbt.vspeo.num_rows;
> + union intel_ddi_buf_trans_entry *entries;
> + struct intel_ddi_buf_trans *vspeo;
> +
> + if (!intel_bios_encoder_requests_vspeo(devdata))
> + return;
> +
> + vspeo = kzalloc_obj(*vspeo);
> + if (!vspeo)
> + return;
> +
> + entries = kzalloc_objs(*entries, num_rows);
> + if (!entries) {
> + kfree(vspeo);
> + return;
> + }
> +
> + devdata->vspeo = vspeo;
> + devdata->entries = entries;
[Severity: Low]
Is this code missing the initialization of devdata->vspeo->num_entries?
The commit message notes for v4->v5 say "- set devdata->vspeo->num_entries in
intel_bios.c", but this doesn't seem to be happening here. Leaving this at 0
would make the table appear empty.
> +}
[ ... ]
> @@ -3403,6 +3430,11 @@ void intel_bios_driver_remove(struct intel_display *display)
> list_for_each_entry_safe(devdata, nd, &display->vbt.display_devices,
> node) {
> list_del(&devdata->node);
> +
> + if (devdata->vspeo)
> + kfree(devdata->vspeo->entries);
[Severity: Medium]
Will this leak the entries buffer allocated in
allocate_vswing_preemph_override()?
Because devdata->vspeo->entries is never initialized in this patch, it remains
NULL, and kfree(NULL) is a no-op. Should this be kfree(devdata->entries)
instead?
> +
> + kfree(devdata->vspeo);
> kfree(devdata->dsc);
> kfree(devdata);
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260813160918.918857-1-michal.grzelak@intel.com?part=4
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v11 5/8] drm/i915/buf_trans: add vfunc for VS/PE-O
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
` (3 preceding siblings ...)
2026-08-13 16:09 ` [PATCH v11 4/8] drm/i915/bios: de/allocate VS/PE-O buffers for each port Michał Grzelak
@ 2026-08-13 16:09 ` Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 6/8] drm/i915: override Snps's VS/PE when requested Michał Grzelak
` (7 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Michał Grzelak @ 2026-08-13 16:09 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Jani Nikula, Suraj Kandpal, Michał Grzelak
Choosing correct table for Vswing / Pre-emphasis Override is platform
specific. It also requires different checks that are already used for
choosing predefined tables.
Add new get_buf_trans_override() vfunc into intel_encoder returning
deparsed table from VBT#57. In next patches, set it inside already
present if-ladder from intel_ddi_buf_trans_init() instead of duplicating
it.
Note that get_buf_trans() cannot be overwritten since there are cases
when we need to rollback although VS/PE-O was requested, eg. DP is not
connected or feature is not yet implemented for the platform. Assume
that vfunc returns NULL on rollback and return predefined tables.
Suggested-by: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Michał Grzelak <michal.grzelak@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c | 8 ++++++++
drivers/gpu/drm/i915/display/intel_display_types.h | 3 +++
2 files changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c b/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
index 4cd1e4d76c7af..f31283a0331b7 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
@@ -1857,5 +1857,13 @@ const struct intel_ddi_buf_trans *intel_ddi_buf_trans_get(struct intel_encoder *
const struct intel_crtc_state *crtc_state,
int *n_entries)
{
+ if (encoder->get_buf_trans_override) {
+ const struct intel_ddi_buf_trans *override;
+
+ override = encoder->get_buf_trans_override(encoder, crtc_state, n_entries);
+ if (override)
+ return intel_get_buf_trans(override, n_entries);
+ }
+
return encoder->get_buf_trans(encoder, crtc_state, n_entries);
}
diff --git a/drivers/gpu/drm/i915/display/intel_display_types.h b/drivers/gpu/drm/i915/display/intel_display_types.h
index 20a07ea06b5ef..bad3ff471423c 100644
--- a/drivers/gpu/drm/i915/display/intel_display_types.h
+++ b/drivers/gpu/drm/i915/display/intel_display_types.h
@@ -289,6 +289,9 @@ struct intel_encoder {
*/
enum icl_port_dpll_id (*port_pll_type)(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state);
+ const struct intel_ddi_buf_trans *(*get_buf_trans_override)(struct intel_encoder *encoder,
+ const struct intel_crtc_state *crtc_state,
+ int *n_entries);
const struct intel_ddi_buf_trans *(*get_buf_trans)(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
int *n_entries);
--
2.45.2
^ permalink raw reply related [flat|nested] 18+ messages in thread* [PATCH v11 6/8] drm/i915: override Snps's VS/PE when requested
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
` (4 preceding siblings ...)
2026-08-13 16:09 ` [PATCH v11 5/8] drm/i915/buf_trans: add vfunc for VS/PE-O Michał Grzelak
@ 2026-08-13 16:09 ` Michał Grzelak
2026-08-13 16:29 ` sashiko-bot
2026-08-13 16:09 ` [PATCH v11 7/8] drm/i915: override Combo's " Michał Grzelak
` (6 subsequent siblings)
12 siblings, 1 reply; 18+ messages in thread
From: Michał Grzelak @ 2026-08-13 16:09 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Jani Nikula, Suraj Kandpal, Michał Grzelak
Add accessor function for Snps to read requested table from VBT #57.
Parse the requested table and transform data into port's buffer.
Actual data is fully stored in the lowest byte although each entry is 4
bytes wide. Thus convert u32 into u8 and store the data.
Choose appropriate accessor function in intel_ddi_buf_trans_get() based
on display version and PHY type.
For C20, use 6th table if encoder supports DP 2.0 or higher. Otherwise
use 5th table for DP.
For C20, tables 1-4 are not used at all and are most likely to be
zeroed. 5th table is used for any mode below DP 2.0 (exclusive). 6th
table is used for any mode above DP 2.0 (inclusive).
For C10, use 2nd table for external DP if encoder supports any mode
beyond or including HBR2. Use 1st table if external DP encoder supports
anything lower than HBR2. For eDP, use 4th table if encoder supports
HBR3. Otherwise use 3rd table for eDP.
For C10, 1st table is used for external DP with modes below HBR2
(exclusive). 1st table is also used as a fallback for non-DPs. 2nd
table is used for external DP with modes higher than HBR2 (inclusive).
3rd table is used for eDP with modes lower than HBR3 (exclusive). 4th
table is used for eDP with modes higher than HBR3 (inclusive).
Indices for other tables have not yet been observed to be used as of
now.
There are no changes to intel_ddi_dp_level() since selection of correct
row of intel_ddi_buf_trans_entry is same as when no override request has
been done.
v10->v11
- remove no-longer-relevant check for NULL devdata (Jani)
- initialize local variables at declaration block (Jani)
- branch with 'else` instead of initializing twice (Jani)
- use blank line before 'return` (Jani)
v9->v10
- call dedicated VS/PE-O vfunc
- drop deconstifying default tables (Suraj, Jani)
- cache `entries` into const field after data is overwritten (Jani)
v8->v9
- init vspeo before using it
- deconstify intel_ddi_buf_trans_entry
v7->v8
- remove comments (Suraj)
- add check for LT (Suraj)
v6->v7
- handle VS/PE-O's VBT details in intel_bios_* functions (Jani)
- remove vspeo's cast to (void *) (Jani)
- check devdata->vspeo if VS/PE-O was requested
- call encoder->get_buf_trans() once (Jani)
- return NULL from intel_bios_get_* when using default (Jani)
- validate VS/PE-O in intel_bios.c (Jani)
- inline mtl_{c10,c20}_get_vspeo_buf_trans()
- remove temporarily LT
v4->v5
- blend index computation with table parsing
- remove enums entirely
- change funcs prefix from snps_ to mtl_ (Suraj)
- add spaces around operators (Suraj)
- remove spaces after type casting (Suraj)
- remove INTEL_DISPLAY_STATE_WARN (Suraj)
v3->v4
- stick to solely changing VBT data into current structures (Jani)
- move iterator declaration to declaration block (Suraj)
v2->v3
- remove unnecessary braces from if block (Suraj)
- return -EINVAL instead of -1 (Suraj)
Signed-off-by: Michał Grzelak <michal.grzelak@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/i915/display/intel_bios.c | 93 +++++++++++++++++++
drivers/gpu/drm/i915/display/intel_bios.h | 7 ++
.../drm/i915/display/intel_ddi_buf_trans.c | 37 +++++++-
3 files changed, 135 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index a491b85006117..56b4aacff7763 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -3881,6 +3881,99 @@ bool intel_bios_encoder_supports_tbt(const struct intel_bios_encoder_data *devda
return devdata->display->vbt.version >= 209 && devdata->child.tbt;
}
+static bool
+validate_vspeo(const struct intel_bios_encoder_data *devdata, bool has_dp)
+{
+ struct intel_ddi_buf_trans *vspeo;
+
+ vspeo = devdata->vspeo;
+ if (!vspeo)
+ return false;
+
+ if (!has_dp)
+ return false;
+
+ return true;
+}
+
+const struct intel_ddi_buf_trans *
+intel_bios_get_c20_vspeo(const struct intel_bios_encoder_data *devdata,
+ bool has_dp, bool is_uhbr)
+{
+ struct intel_display *display = devdata->display;
+ union intel_ddi_buf_trans_entry *entries = devdata->entries;
+ struct intel_ddi_buf_trans *vspeo = devdata->vspeo;
+ const u32 *tables = display->vbt.vspeo.tables;
+ int num_columns = display->vbt.vspeo.num_columns;
+ int num_rows = display->vbt.vspeo.num_rows;
+ int idx = is_uhbr ? 5 : 4;
+ size_t offset = 0;
+ int level;
+
+ if (!validate_vspeo(devdata, has_dp))
+ return NULL;
+
+ offset += idx * num_rows * num_columns;
+
+ for (level = 0; level < num_rows; level++) {
+ u32 vswing = tables[offset];
+ u32 pre_cursor = tables[offset + 1];
+ u32 post_cursor = tables[offset + 2];
+
+ entries[level].snps.vswing = vswing;
+ entries[level].snps.pre_cursor = pre_cursor;
+ entries[level].snps.post_cursor = post_cursor;
+
+ offset += num_columns;
+ }
+
+ vspeo->entries = entries;
+ vspeo->num_entries = num_rows;
+
+ return vspeo;
+}
+
+const struct intel_ddi_buf_trans *
+intel_bios_get_c10_vspeo(const struct intel_bios_encoder_data *devdata,
+ bool has_dp, int port_clock, bool has_edp)
+{
+ struct intel_display *display = devdata->display;
+ union intel_ddi_buf_trans_entry *entries = devdata->entries;
+ struct intel_ddi_buf_trans *vspeo = devdata->vspeo;
+ const u32 *tables = display->vbt.vspeo.tables;
+ int num_columns = display->vbt.vspeo.num_columns;
+ int num_rows = display->vbt.vspeo.num_rows;
+ size_t offset = 0;
+ int level, idx;
+
+ if (!validate_vspeo(devdata, has_dp))
+ return NULL;
+
+ if (has_edp)
+ idx = port_clock > 540000 ? 3 : 2;
+ else
+ idx = port_clock > 270000 ? 1 : 0;
+
+ offset += idx * num_rows * num_columns;
+
+ for (level = 0; level < num_rows; level++) {
+ u32 vswing = tables[offset];
+ u32 pre_cursor = tables[offset + 1];
+ u32 post_cursor = tables[offset + 2];
+
+ entries[level].snps.vswing = vswing;
+ entries[level].snps.pre_cursor = pre_cursor;
+ entries[level].snps.post_cursor = post_cursor;
+
+ offset += num_columns;
+ }
+
+ vspeo->entries = entries;
+ vspeo->num_entries = num_rows;
+
+ return vspeo;
+}
+
bool intel_bios_encoder_is_dedicated_external(const struct intel_bios_encoder_data *devdata)
{
return devdata->display->vbt.version >= 264 &&
diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
index 7a50a272cd27d..49acf8c405e2b 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.h
+++ b/drivers/gpu/drm/i915/display/intel_bios.h
@@ -73,6 +73,13 @@ bool intel_bios_get_dsc_params(struct intel_encoder *encoder,
const struct intel_bios_encoder_data *
intel_bios_encoder_data_lookup(struct intel_display *display, enum port port);
+const struct intel_ddi_buf_trans *
+intel_bios_get_c20_vspeo(const struct intel_bios_encoder_data *devdata,
+ bool has_dp, bool is_uhbr);
+const struct intel_ddi_buf_trans *
+intel_bios_get_c10_vspeo(const struct intel_bios_encoder_data *devdata,
+ bool has_dp, int port_clock, bool has_edp);
+
bool intel_bios_encoder_requests_vspeo(const struct intel_bios_encoder_data *devdata);
bool intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata);
bool intel_bios_encoder_supports_hdmi(const struct intel_bios_encoder_data *devdata);
diff --git a/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c b/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
index f31283a0331b7..92c0d0f933ab4 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
@@ -1784,6 +1784,36 @@ xe3plpd_get_lt_buf_trans(struct intel_encoder *encoder,
return intel_get_buf_trans(&xe3plpd_lt_trans_dp14, n_entries);
}
+static const struct intel_ddi_buf_trans *
+mtl_get_c10_buf_trans_override(struct intel_encoder *encoder,
+ const struct intel_crtc_state *crtc_state,
+ int *n_entries)
+{
+ const struct intel_bios_encoder_data *devdata = encoder->devdata;
+ bool has_edp, has_dp;
+ int port_clock;
+
+ has_edp = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP);
+ has_dp = intel_crtc_has_dp_encoder(crtc_state);
+ port_clock = crtc_state->port_clock;
+
+ return intel_bios_get_c10_vspeo(devdata, has_dp, port_clock, has_edp);
+}
+
+static const struct intel_ddi_buf_trans *
+mtl_get_c20_buf_trans_override(struct intel_encoder *encoder,
+ const struct intel_crtc_state *crtc_state,
+ int *n_entries)
+{
+ const struct intel_bios_encoder_data *devdata = encoder->devdata;
+ bool has_dp, is_uhbr;
+
+ has_dp = intel_crtc_has_dp_encoder(crtc_state);
+ is_uhbr = intel_dp_is_uhbr(crtc_state);
+
+ return intel_bios_get_c20_vspeo(devdata, has_dp, is_uhbr);
+}
+
void intel_ddi_buf_trans_init(struct intel_encoder *encoder)
{
struct intel_display *display = to_intel_display(encoder);
@@ -1791,10 +1821,13 @@ void intel_ddi_buf_trans_init(struct intel_encoder *encoder)
if (HAS_LT_PHY(display)) {
encoder->get_buf_trans = xe3plpd_get_lt_buf_trans;
} else if (DISPLAY_VER(display) >= 14) {
- if (intel_encoder_is_c10phy(encoder))
+ if (intel_encoder_is_c10phy(encoder)) {
encoder->get_buf_trans = mtl_get_c10_buf_trans;
- else
+ encoder->get_buf_trans_override = mtl_get_c10_buf_trans_override;
+ } else {
encoder->get_buf_trans = mtl_get_c20_buf_trans;
+ encoder->get_buf_trans_override = mtl_get_c20_buf_trans_override;
+ }
} else if (display->platform.dg2) {
encoder->get_buf_trans = dg2_get_snps_buf_trans;
} else if (display->platform.alderlake_p) {
--
2.45.2
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH v11 6/8] drm/i915: override Snps's VS/PE when requested
2026-08-13 16:09 ` [PATCH v11 6/8] drm/i915: override Snps's VS/PE when requested Michał Grzelak
@ 2026-08-13 16:29 ` sashiko-bot
0 siblings, 0 replies; 18+ messages in thread
From: sashiko-bot @ 2026-08-13 16:29 UTC (permalink / raw)
To: Michał Grzelak; +Cc: intel-gfx, intel-xe
Thank you for your contribution! Sashiko AI review found 5 potential issue(s) to consider:
- [High] Out-of-bounds Read in VBT VSPEO parsing
- [High] Data Race when writing to shared devdata->entries array
- [High] Missing VBT block causes ZERO_SIZE_PTR allocation and out-of-bounds read
- [Medium] Contradiction of Intent: VBT override bypass for non-DP outputs
- [Medium] Memory leak of devdata->entries
--
--- Patch [6]: [PATCH v11 6/8] drm/i915: override Snps's VS/PE when requested ---
commit 70006d8778b43948ec0e561395199a65420366c2
Author: Michał Grzelak <michal.grzelak@intel.com>
Date: Thu Aug 13 16:09:16 2026 +0000
drm/i915: override Snps's VS/PE when requested
This commit adds accessor functions to read requested VBT tables for
Synopsys PHYs and transform the data for the port's buffer. It chooses
the appropriate accessor based on display version and PHY type (C10/C20)
and handles table indexing based on link rates.
> For C10, 1st table is used for external DP with modes below HBR2
> (exclusive). 1st table is also used as a fallback for non-DPs. 2nd
> table is used for external DP with modes higher than HBR2 (inclusive).
[Severity: Medium]
Is this description accurate?
The commit message states the 1st table is used as a fallback for non-DPs, but
looking at validate_vspeo() and intel_bios_get_c10_vspeo(), the code returns
false/NULL if has_dp is false. This completely aborts the VBT override path
for non-DP outputs rather than falling back to the 1st table.
Could the commit message be more precise, or should the code be adjusted to
allow this fallback?
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> index a491b85006117..56b4aacff7763 100644
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
[ ... ]
> @@ -3881,6 +3881,99 @@ bool intel_bios_encoder_supports_tbt(const struct intel_bios_encoder_data *devda
> return devdata->display->vbt.version >= 209 && devdata->child.tbt;
> }
>
> +static bool
> +validate_vspeo(const struct intel_bios_encoder_data *devdata, bool has_dp)
> +{
> + struct intel_ddi_buf_trans *vspeo;
> +
> + vspeo = devdata->vspeo;
> + if (!vspeo)
> + return false;
> +
> + if (!has_dp)
> + return false;
> +
> + return true;
> +}
> +
> +const struct intel_ddi_buf_trans *
> +intel_bios_get_c20_vspeo(const struct intel_bios_encoder_data *devdata,
> + bool has_dp, bool is_uhbr)
> +{
> + struct intel_display *display = devdata->display;
> + union intel_ddi_buf_trans_entry *entries = devdata->entries;
> + struct intel_ddi_buf_trans *vspeo = devdata->vspeo;
> + const u32 *tables = display->vbt.vspeo.tables;
> + int num_columns = display->vbt.vspeo.num_columns;
> + int num_rows = display->vbt.vspeo.num_rows;
> + int idx = is_uhbr ? 5 : 4;
> + size_t offset = 0;
> + int level;
> +
> + if (!validate_vspeo(devdata, has_dp))
> + return NULL;
> +
> + offset += idx * num_rows * num_columns;
> +
> + for (level = 0; level < num_rows; level++) {
> + u32 vswing = tables[offset];
> + u32 pre_cursor = tables[offset + 1];
> + u32 post_cursor = tables[offset + 2];
[Severity: High]
Does this code adequately protect against out-of-bounds memory reads from the
VBT tables array?
There is no validation that the chosen idx (which can be up to 5) is less
than display->vbt.vspeo.num_tables, or that num_columns is at least 3. If a
malformed or older VBT provides fewer tables or columns, could the driver
read past the end of the VBT block here?
> +
> + entries[level].snps.vswing = vswing;
> + entries[level].snps.pre_cursor = pre_cursor;
> + entries[level].snps.post_cursor = post_cursor;
[Severity: High]
Can writing to the shared devdata->entries array inside this getter function
cause a data race?
This getter is called during PHY programming and link training (e.g., from
commit_tail and intel_dp_link_check). If the asynchronous modeset worker and
hotplug link retraining worker run concurrently, wouldn't they race to
overwrite the exact same devdata->entries array without synchronization,
potentially leading to the hardware being programmed with corrupted values?
> +
> + offset += num_columns;
> + }
> +
> + vspeo->entries = entries;
> + vspeo->num_entries = num_rows;
> +
> + return vspeo;
> +}
> +
> +const struct intel_ddi_buf_trans *
> +intel_bios_get_c10_vspeo(const struct intel_bios_encoder_data *devdata,
> + bool has_dp, int port_clock, bool has_edp)
> +{
> + struct intel_display *display = devdata->display;
> + union intel_ddi_buf_trans_entry *entries = devdata->entries;
> + struct intel_ddi_buf_trans *vspeo = devdata->vspeo;
> + const u32 *tables = display->vbt.vspeo.tables;
> + int num_columns = display->vbt.vspeo.num_columns;
> + int num_rows = display->vbt.vspeo.num_rows;
> + size_t offset = 0;
> + int level, idx;
> +
> + if (!validate_vspeo(devdata, has_dp))
> + return NULL;
> +
> + if (has_edp)
> + idx = port_clock > 540000 ? 3 : 2;
> + else
> + idx = port_clock > 270000 ? 1 : 0;
> +
> + offset += idx * num_rows * num_columns;
> +
> + for (level = 0; level < num_rows; level++) {
> + u32 vswing = tables[offset];
> + u32 pre_cursor = tables[offset + 1];
> + u32 post_cursor = tables[offset + 2];
[Severity: High]
Is it possible to read past the end of the VBT block here?
Similar to the C20 function, there appears to be no validation that idx is
less than display->vbt.vspeo.num_tables or that num_columns is at least 3,
which might lead to out-of-bounds reads if the VBT is older or malformed.
> +
> + entries[level].snps.vswing = vswing;
> + entries[level].snps.pre_cursor = pre_cursor;
> + entries[level].snps.post_cursor = post_cursor;
[Severity: High]
Does overwriting the shared devdata->entries array here introduce a race
condition when accessed concurrently?
If concurrent accesses occur, such as a hotplug event while a modeset is
active, they might race to write to this shared state without locking, leading
to corrupt PHY programming.
> +
> + offset += num_columns;
> + }
> +
> + vspeo->entries = entries;
> + vspeo->num_entries = num_rows;
> +
> + return vspeo;
> +}
[Severity: High]
Could a missing VBT block lead to a ZERO_SIZE_PTR allocation and subsequent
out-of-bounds read?
If a system's VBT version is >= 218 and use_vbt_vswing is true, but VBT block
57 is omitted, parse_vswing_preemph_override() returns early leaving num_rows
as 0.
This would lead to allocating with size 0:
allocate_vswing_preemph_override() {
...
entries = kzalloc_objs(*entries, num_rows);
if (!entries) {
...
}
Because kzalloc_objs returns ZERO_SIZE_PTR for size 0, the !entries check
passes. When intel_ddi_buf_trans_get() returns this table with num_entries = 0,
the bounds check in intel_ddi_level() behaves incorrectly:
intel_ddi_level() {
...
if (drm_WARN_ON_ONCE(display->drm, level >= n_entries))
level = n_entries - 1;
...
}
This sets level to -1, and the PHY code then reads from trans->entries[-1],
which is an invalid memory address (ZERO_SIZE_PTR - sizeof(entry)), potentially
causing a kernel panic.
[Severity: Medium]
Will this sequence leak the devdata->entries memory on driver removal?
In allocate_vswing_preemph_override(), memory is allocated and assigned to
devdata->entries, but devdata->vspeo->entries remains NULL until one of the
accessor functions (like intel_bios_get_c20_vspeo) is called.
If a port is never used and the accessor is never invoked, the teardown path
frees the wrong pointer:
intel_bios_driver_remove() {
...
if (devdata->vspeo)
kfree(devdata->vspeo->entries);
...
}
Because devdata->vspeo->entries is still NULL in the unused case, the
underlying devdata->entries allocation appears to be permanently leaked.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260813160918.918857-1-michal.grzelak@intel.com?part=6
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v11 7/8] drm/i915: override Combo's VS/PE when requested
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
` (5 preceding siblings ...)
2026-08-13 16:09 ` [PATCH v11 6/8] drm/i915: override Snps's VS/PE when requested Michał Grzelak
@ 2026-08-13 16:09 ` Michał Grzelak
2026-08-13 16:50 ` sashiko-bot
2026-08-13 16:09 ` [PATCH v11 8/8] drm/i915/bios: remove VS/PE-O warning Michał Grzelak
` (5 subsequent siblings)
12 siblings, 1 reply; 18+ messages in thread
From: Michał Grzelak @ 2026-08-13 16:09 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Jani Nikula, Suraj Kandpal, Michał Grzelak
Add accessor function for Combo to read requested table from VBT #57.
Parse the requested table and transform data into port's buffer.
Actual data is fully stored in the lowest byte although each entry is 4
bytes wide. Thus convert u32 into u8 and store the data.
For EHL, in cases when eDP encoder uses low vswing, choose 3rd table if
encoder supports HBR3. Otherwise use 2nd table for eDP using low vswing.
In cases when eDP encoder does not use low vswing, choose 2nd table if
encoder supports mode higher or including HBR2. Otherwise use 3rd table
for eDP not using low vswing.
For external DP use 2nd table if encoder supports modes higher than or
including HBR2. Use 1st table if external DP encoder supports modes
lower than HBR2.
For JSL, always use 1st table for external DP. For eDPs not using low
vswing use 1st table as well.
In cases when eDP encoder uses low vswing, choose 1st table if encoder
supports HBR3. When encoder supports HBR2 choose 3rd table. When
encoder supports modes lower than HBR2 choose 2nd table.
There are no changes to intel_ddi_dp_level() since selection of correct
row of intel_ddi_buf_trans_entry is same as when no override request has
been done.
Looking from other OSes, in case when encoder does not support DP we
could theoretically use 1st table. However, as of now, use default
tables.
v10->v11
- initialize local variables at declaration block (Jani)
- branch with 'else` instead of initializing twice (Jani)
v9->v10
- call dedicated VS/PE-O vfunc
- drop deconstifying default tables (Suraj, Jani)
- cache `entries` into const field after data is overwritten (Jani)
v8->v9
- deconstify intel_ddi_buf_trans_entry
v6->v7
- handle VS/PE-O's VBT details in intel_bios_* functions (Jani)
- remove vspeo's cast to (void *) (Jani)
- call encoder->get_buf_trans() once (Jani)
- return NULL from intel_bios_get_* when using default (Jani)
- validate VS/PE-O in intel_bios.c (Jani)
- check devdata->vspeo if VS/PE-O was requested
- inline {jsl,ehl}_combo_get_vspeo_buf_trans()
- remove temporarily LT
v4->v5
- blend index computation with table parsing
- remove enums entirely
- add spaces around operators (Suraj)
- remove spaces after type casting (Suraj)
- remove INTEL_DISPLAY_STATE_WARN (Suraj)
Signed-off-by: Michał Grzelak <michal.grzelak@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/i915/display/intel_bios.c | 95 +++++++++++++++++++
drivers/gpu/drm/i915/display/intel_bios.h | 6 ++
.../drm/i915/display/intel_ddi_buf_trans.c | 41 +++++++-
3 files changed, 139 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 56b4aacff7763..7ebad855e2561 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -3974,6 +3974,101 @@ intel_bios_get_c10_vspeo(const struct intel_bios_encoder_data *devdata,
return vspeo;
}
+const struct intel_ddi_buf_trans *
+intel_bios_get_ehl_combo_vspeo(const struct intel_bios_encoder_data *devdata,
+ bool has_dp, int port_clock, bool has_edp)
+{
+ struct intel_display *display = devdata->display;
+ union intel_ddi_buf_trans_entry *entries = devdata->entries;
+ struct intel_ddi_buf_trans *vspeo = devdata->vspeo;
+ const u32 *tables = display->vbt.vspeo.tables;
+ int num_columns = display->vbt.vspeo.num_columns;
+ int num_rows = display->vbt.vspeo.num_rows;
+ size_t offset = 0;
+ int level, idx;
+
+ if (!validate_vspeo(devdata, has_dp))
+ return NULL;
+
+ if (has_edp)
+ idx = port_clock > 540000 ? 2 : 1;
+ else
+ idx = port_clock > 270000 ? 1 : 0;
+
+ offset += idx * num_rows * num_columns;
+
+ for (level = 0; level < num_rows; level++) {
+ u32 dw2_swing_sel = tables[offset];
+ u32 dw7_n_scalar = tables[offset + 1];
+ u32 dw4_cursor_coeff = tables[offset + 2];
+ u32 dw4_post_cursor_2 = tables[offset + 3];
+ u32 dw4_post_cursor_1 = tables[offset + 4];
+
+ entries[level].icl.dw2_swing_sel = dw2_swing_sel;
+ entries[level].icl.dw7_n_scalar = dw7_n_scalar;
+ entries[level].icl.dw4_cursor_coeff = dw4_cursor_coeff;
+ entries[level].icl.dw4_post_cursor_2 = dw4_post_cursor_2;
+ entries[level].icl.dw4_post_cursor_1 = dw4_post_cursor_1;
+
+ offset += num_columns;
+ }
+
+ vspeo->entries = entries;
+ vspeo->num_entries = num_rows;
+
+ return vspeo;
+}
+
+const struct intel_ddi_buf_trans *
+intel_bios_get_jsl_combo_vspeo(const struct intel_bios_encoder_data *devdata,
+ bool has_dp, int port_clock, bool low_vswing_edp)
+{
+ struct intel_display *display = devdata->display;
+ union intel_ddi_buf_trans_entry *entries = devdata->entries;
+ struct intel_ddi_buf_trans *vspeo = devdata->vspeo;
+ const u32 *tables = display->vbt.vspeo.tables;
+ int num_columns = display->vbt.vspeo.num_columns;
+ int num_rows = display->vbt.vspeo.num_rows;
+ size_t offset = 0;
+ int idx = 0;
+ int level;
+
+ if (!validate_vspeo(devdata, has_dp))
+ return NULL;
+
+ if (low_vswing_edp) {
+ if (port_clock > 540000)
+ idx = 0;
+ else if (port_clock > 270000)
+ idx = 1;
+ else
+ idx = 2;
+ }
+
+ offset += idx * num_rows * num_columns;
+
+ for (level = 0; level < num_rows; level++) {
+ u32 dw2_swing_sel = tables[offset];
+ u32 dw7_n_scalar = tables[offset + 1];
+ u32 dw4_cursor_coeff = tables[offset + 2];
+ u32 dw4_post_cursor_2 = tables[offset + 3];
+ u32 dw4_post_cursor_1 = tables[offset + 4];
+
+ entries[level].icl.dw2_swing_sel = dw2_swing_sel;
+ entries[level].icl.dw7_n_scalar = dw7_n_scalar;
+ entries[level].icl.dw4_cursor_coeff = dw4_cursor_coeff;
+ entries[level].icl.dw4_post_cursor_2 = dw4_post_cursor_2;
+ entries[level].icl.dw4_post_cursor_1 = dw4_post_cursor_1;
+
+ offset += num_columns;
+ }
+
+ vspeo->entries = entries;
+ vspeo->num_entries = num_rows;
+
+ return vspeo;
+}
+
bool intel_bios_encoder_is_dedicated_external(const struct intel_bios_encoder_data *devdata)
{
return devdata->display->vbt.version >= 264 &&
diff --git a/drivers/gpu/drm/i915/display/intel_bios.h b/drivers/gpu/drm/i915/display/intel_bios.h
index 49acf8c405e2b..c55765a945949 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.h
+++ b/drivers/gpu/drm/i915/display/intel_bios.h
@@ -79,6 +79,12 @@ intel_bios_get_c20_vspeo(const struct intel_bios_encoder_data *devdata,
const struct intel_ddi_buf_trans *
intel_bios_get_c10_vspeo(const struct intel_bios_encoder_data *devdata,
bool has_dp, int port_clock, bool has_edp);
+const struct intel_ddi_buf_trans *
+intel_bios_get_ehl_combo_vspeo(const struct intel_bios_encoder_data *devdata,
+ bool has_dp, int port_clock, bool has_edp);
+const struct intel_ddi_buf_trans *
+intel_bios_get_jsl_combo_vspeo(const struct intel_bios_encoder_data *devdata,
+ bool has_dp, int port_clock, bool low_vswing_edp);
bool intel_bios_encoder_requests_vspeo(const struct intel_bios_encoder_data *devdata);
bool intel_bios_encoder_supports_dvi(const struct intel_bios_encoder_data *devdata);
diff --git a/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c b/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
index 92c0d0f933ab4..0843b3e2bfa6f 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
@@ -1784,6 +1784,39 @@ xe3plpd_get_lt_buf_trans(struct intel_encoder *encoder,
return intel_get_buf_trans(&xe3plpd_lt_trans_dp14, n_entries);
}
+static const struct intel_ddi_buf_trans *
+jsl_get_combo_buf_trans_override(struct intel_encoder *encoder,
+ const struct intel_crtc_state *crtc_state,
+ int *n_entries)
+{
+ const struct intel_bios_encoder_data *devdata = encoder->devdata;
+ bool has_edp, has_dp;
+ int port_clock;
+
+ has_edp = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP);
+ has_dp = intel_crtc_has_dp_encoder(crtc_state);
+ port_clock = crtc_state->port_clock;
+
+ return intel_bios_get_jsl_combo_vspeo(devdata, has_dp, port_clock,
+ has_edp && use_edp_low_vswing(encoder));
+}
+
+static const struct intel_ddi_buf_trans *
+ehl_get_combo_buf_trans_override(struct intel_encoder *encoder,
+ const struct intel_crtc_state *crtc_state,
+ int *n_entries)
+{
+ const struct intel_bios_encoder_data *devdata = encoder->devdata;
+ bool has_edp, has_dp;
+ int port_clock;
+
+ has_edp = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP);
+ has_dp = intel_crtc_has_dp_encoder(crtc_state);
+ port_clock = crtc_state->port_clock;
+
+ return intel_bios_get_ehl_combo_vspeo(devdata, has_dp, port_clock, has_edp);
+}
+
static const struct intel_ddi_buf_trans *
mtl_get_c10_buf_trans_override(struct intel_encoder *encoder,
const struct intel_crtc_state *crtc_state,
@@ -1847,11 +1880,13 @@ void intel_ddi_buf_trans_init(struct intel_encoder *encoder)
else
encoder->get_buf_trans = tgl_get_dkl_buf_trans;
} else if (DISPLAY_VER(display) == 11) {
- if (display->platform.jasperlake)
+ if (display->platform.jasperlake) {
encoder->get_buf_trans = jsl_get_combo_buf_trans;
- else if (display->platform.elkhartlake)
+ encoder->get_buf_trans_override = jsl_get_combo_buf_trans_override;
+ } else if (display->platform.elkhartlake) {
encoder->get_buf_trans = ehl_get_combo_buf_trans;
- else if (intel_encoder_is_combo(encoder))
+ encoder->get_buf_trans_override = ehl_get_combo_buf_trans_override;
+ } else if (intel_encoder_is_combo(encoder))
encoder->get_buf_trans = icl_get_combo_buf_trans;
else
encoder->get_buf_trans = icl_get_mg_buf_trans;
--
2.45.2
^ permalink raw reply related [flat|nested] 18+ messages in thread* Re: [PATCH v11 7/8] drm/i915: override Combo's VS/PE when requested
2026-08-13 16:09 ` [PATCH v11 7/8] drm/i915: override Combo's " Michał Grzelak
@ 2026-08-13 16:50 ` sashiko-bot
0 siblings, 0 replies; 18+ messages in thread
From: sashiko-bot @ 2026-08-13 16:50 UTC (permalink / raw)
To: Michał Grzelak; +Cc: intel-gfx, intel-xe
Thank you for your contribution! Sashiko AI review found 4 potential issue(s) to consider:
- [High] EHL PHY override logic incorrectly applies 'low_vswing' settings to non-low_vswing eDP panels
- [Medium] Potential out-of-bounds read during VBT 'tables' parsing
- [Medium] JSL PHY override logic is reversed for HBR2 vs lower port clocks compared to intended behavior
- [Medium] Memory allocated for `devdata->entries` is leaked on early return in vspeo retrieval functions
--
--- Patch [7]: [PATCH v11 7/8] drm/i915: override Combo's VS/PE when requested ---
commit 3f316b5929dec8d0ea8bb76e4cb8983db3b9bf70
Author: Michał Grzelak <michal.grzelak@intel.com>
drm/i915: override Combo's VS/PE when requested
This commit adds accessor functions for the Combo PHY to read requested
VS/PE tables from the VBT. It parses the requested table and transforms
the data to override the port's buffer settings based on platform (EHL/JSL)
and port capabilities.
> diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
> --- a/drivers/gpu/drm/i915/display/intel_bios.c
> +++ b/drivers/gpu/drm/i915/display/intel_bios.c
[ ... ]
> +const struct intel_ddi_buf_trans *
> +intel_bios_get_ehl_combo_vspeo(const struct intel_bios_encoder_data *devdata,
> + bool has_dp, int port_clock, bool has_edp)
> +{
[ ... ]
> + if (!validate_vspeo(devdata, has_dp))
> + return NULL;
[Severity: Medium]
Does this early return (and the similar one in intel_bios_get_jsl_combo_vspeo)
cause a memory leak of the devdata->entries buffer?
During teardown in intel_bios_driver_remove(), the driver attempts to free
this memory using kfree(devdata->vspeo->entries). Since vspeo->entries is
assigned much later in this function, returning NULL here leaves
devdata->vspeo->entries uninitialized or NULL. This would cause the teardown
code to skip freeing the memory allocated to devdata->entries.
> +
> + if (has_edp)
> + idx = port_clock > 540000 ? 2 : 1;
> + else
> + idx = port_clock > 270000 ? 1 : 0;
[Severity: High]
The commit message indicates that for EHL, eDP configurations using low
vswing should behave differently from eDP configurations not using low
vswing. However, does this logic unconditionally apply the same table index
logic to all eDP configurations?
It seems intel_bios_get_ehl_combo_vspeo() does not receive or check a
low_vswing parameter (like the JSL equivalent does), applying the same
fallback logic to all eDP panels.
> +
> + offset += idx * num_rows * num_columns;
> +
> + for (level = 0; level < num_rows; level++) {
> + u32 dw2_swing_sel = tables[offset];
> + u32 dw7_n_scalar = tables[offset + 1];
> + u32 dw4_cursor_coeff = tables[offset + 2];
> + u32 dw4_post_cursor_2 = tables[offset + 3];
> + u32 dw4_post_cursor_1 = tables[offset + 4];
[Severity: Medium]
Can this loop read out of bounds if the VBT is malformed?
The parsing calculation offset = idx * num_rows * num_columns followed by
direct accesses up to tables[offset + 4] doesn't appear to validate that
num_columns is at least 5, or that the overall VBT tables buffer is
sized adequately to support the calculated offset and rows.
[ ... ]
> +const struct intel_ddi_buf_trans *
> +intel_bios_get_jsl_combo_vspeo(const struct intel_bios_encoder_data *devdata,
> + bool has_dp, int port_clock, bool low_vswing_edp)
> +{
[ ... ]
> + if (low_vswing_edp) {
> + if (port_clock > 540000)
> + idx = 0;
> + else if (port_clock > 270000)
> + idx = 1;
> + else
> + idx = 2;
> + }
[Severity: Medium]
Is this table selection logic reversed compared to the commit message?
The commit message states: "When encoder supports HBR2 choose 3rd table.
When encoder supports modes lower than HBR2 choose 2nd table."
However, the code assigns idx = 1 (2nd table) for port_clock > 270000 (HBR2)
and idx = 2 (3rd table) for lower modes.
[ ... ]
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c b/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
> --- a/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c
[ ... ]
> +static const struct intel_ddi_buf_trans *
> +ehl_get_combo_buf_trans_override(struct intel_encoder *encoder,
> + const struct intel_crtc_state *crtc_state,
> + int *n_entries)
> +{
> + const struct intel_bios_encoder_data *devdata = encoder->devdata;
> + bool has_edp, has_dp;
> + int port_clock;
> +
> + has_edp = intel_crtc_has_type(crtc_state, INTEL_OUTPUT_EDP);
> + has_dp = intel_crtc_has_dp_encoder(crtc_state);
> + port_clock = crtc_state->port_clock;
> +
> + return intel_bios_get_ehl_combo_vspeo(devdata, has_dp, port_clock, has_edp);
> +}
[Severity: High]
Should this override function be checking use_edp_low_vswing(encoder)
similar to how it is checked in jsl_get_combo_buf_trans_override()?
The current implementation omits the low_vswing context entirely, passing
only has_edp down to intel_bios_get_ehl_combo_vspeo(), which prevents the
distinction between low vswing and normal eDP configurations from being made.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260813160918.918857-1-michal.grzelak@intel.com?part=7
^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH v11 8/8] drm/i915/bios: remove VS/PE-O warning
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
` (6 preceding siblings ...)
2026-08-13 16:09 ` [PATCH v11 7/8] drm/i915: override Combo's " Michał Grzelak
@ 2026-08-13 16:09 ` Michał Grzelak
2026-08-13 16:18 ` ✗ CI.checkpatch: warning for Vswing / Pre-emphasis Override (rev6) Patchwork
` (4 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Michał Grzelak @ 2026-08-13 16:09 UTC (permalink / raw)
To: intel-gfx, intel-xe; +Cc: Jani Nikula, Suraj Kandpal, Michał Grzelak
There is not much use of warning when port asks to override default
VS/PE since it is already logged. Remove drm_WARN() and child_device
from print_ddi_port() since drm_WARN() was the only user of it.
Signed-off-by: Michał Grzelak <michal.grzelak@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
---
drivers/gpu/drm/i915/display/intel_bios.c | 9 ---------
1 file changed, 9 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_bios.c b/drivers/gpu/drm/i915/display/intel_bios.c
index 7ebad855e2561..dff85613713c1 100644
--- a/drivers/gpu/drm/i915/display/intel_bios.c
+++ b/drivers/gpu/drm/i915/display/intel_bios.c
@@ -2790,7 +2790,6 @@ static bool is_port_valid(struct intel_display *display, enum port port)
static void print_ddi_port(const struct intel_bios_encoder_data *devdata)
{
struct intel_display *display = devdata->display;
- const struct child_device_config *child = &devdata->child;
bool is_dvi, is_hdmi, is_dp, is_edp, is_dsi, is_crt, supports_typec_usb, supports_tbt;
int dp_boost_level, dp_max_link_rate, hdmi_boost_level, hdmi_level_shift, max_tmds_clock;
enum port port;
@@ -2863,14 +2862,6 @@ static void print_ddi_port(const struct intel_bios_encoder_data *devdata)
drm_dbg_kms(display->drm,
"Port %c VBT DP max link rate: %d\n",
port_name(port), dp_max_link_rate);
-
- /*
- * FIXME need to implement support for VBT
- * vswing/preemph tables should this ever trigger.
- */
- drm_WARN(display->drm, child->use_vbt_vswing,
- "Port %c asks to use VBT vswing/preemph tables\n",
- port_name(port));
}
static void parse_ddi_port(struct intel_bios_encoder_data *devdata)
--
2.45.2
^ permalink raw reply related [flat|nested] 18+ messages in thread* ✗ CI.checkpatch: warning for Vswing / Pre-emphasis Override (rev6)
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
` (7 preceding siblings ...)
2026-08-13 16:09 ` [PATCH v11 8/8] drm/i915/bios: remove VS/PE-O warning Michał Grzelak
@ 2026-08-13 16:18 ` Patchwork
2026-08-13 16:20 ` ✓ CI.KUnit: success " Patchwork
` (3 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2026-08-13 16:18 UTC (permalink / raw)
To: Michał Grzelak; +Cc: intel-xe
== Series Details ==
Series: Vswing / Pre-emphasis Override (rev6)
URL : https://patchwork.freedesktop.org/series/167570/
State : warning
== Summary ==
+ KERNEL=/kernel
+ git clone https://gitlab.freedesktop.org/drm/maintainer-tools mt
Cloning into 'mt'...
warning: redirecting to https://gitlab.freedesktop.org/drm/maintainer-tools.git/
+ git -C mt rev-list -n1 origin/master
061140b9bc586ae7f40abc1249c97e1cc72d1b9d
+ cd /kernel
+ git config --global --add safe.directory /kernel
+ git log -n1
commit ee8ab2006e28c9d12064bac9d2d3ea3b3bece221
Author: Michał Grzelak <michal.grzelak@intel.com>
Date: Thu Aug 13 18:09:18 2026 +0200
drm/i915/bios: remove VS/PE-O warning
There is not much use of warning when port asks to override default
VS/PE since it is already logged. Remove drm_WARN() and child_device
from print_ddi_port() since drm_WARN() was the only user of it.
Signed-off-by: Michał Grzelak <michal.grzelak@intel.com>
Reviewed-by: Suraj Kandpal <suraj.kandpal@intel.com>
+ /mt/dim checkpatch 12a74df2314c42325731297e95b9aafd9329a20d drm-intel
c95ca7776f76 drm/i915/bios: search for VBT #57 by default
c93fea0d9fbf drm/i915/bios: store VBT #57's metadata in intel_vbt_data
e58330f0bbd1 drm/i915/bios: print VS/PE-O port info
b512c109498d drm/i915/bios: de/allocate VS/PE-O buffers for each port
2c1425da598f drm/i915/buf_trans: add vfunc for VS/PE-O
-:54: WARNING:LONG_LINE: line length of 110 exceeds 100 columns
#54: FILE: drivers/gpu/drm/i915/display/intel_display_types.h:293:
+ const struct intel_crtc_state *crtc_state,
total: 0 errors, 1 warnings, 0 checks, 22 lines checked
a36fb5bbc69b drm/i915: override Snps's VS/PE when requested
8f39e6efbf86 drm/i915: override Combo's VS/PE when requested
-:245: CHECK:BRACES: braces {} should be used on all arms of this statement
#245: FILE: drivers/gpu/drm/i915/display/intel_ddi_buf_trans.c:1883:
+ if (display->platform.jasperlake) {
[...]
+ encoder->get_buf_trans_override = jsl_get_combo_buf_trans_override;
[...]
- else if (intel_encoder_is_combo(encoder))
[...]
+ } else if (intel_encoder_is_combo(encoder))
[...]
total: 0 errors, 0 warnings, 1 checks, 168 lines checked
ee8ab2006e28 drm/i915/bios: remove VS/PE-O warning
^ permalink raw reply [flat|nested] 18+ messages in thread* ✓ CI.KUnit: success for Vswing / Pre-emphasis Override (rev6)
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
` (8 preceding siblings ...)
2026-08-13 16:18 ` ✗ CI.checkpatch: warning for Vswing / Pre-emphasis Override (rev6) Patchwork
@ 2026-08-13 16:20 ` Patchwork
2026-08-13 17:19 ` ✓ Xe.CI.BAT: " Patchwork
` (2 subsequent siblings)
12 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2026-08-13 16:20 UTC (permalink / raw)
To: Michał Grzelak; +Cc: intel-xe
== Series Details ==
Series: Vswing / Pre-emphasis Override (rev6)
URL : https://patchwork.freedesktop.org/series/167570/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/tests/.kunitconfig
[16:18:55] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:18:59] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[16:19:20] Starting KUnit Kernel (1/1)...
[16:19:20] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:19:20] ================= gpu_buddy (13 subtests) ==================
[16:19:20] [PASSED] gpu_test_buddy_alloc_limit
[16:19:20] [PASSED] gpu_test_buddy_alloc_optimistic
[16:19:20] [PASSED] gpu_test_buddy_alloc_pessimistic
[16:19:20] [PASSED] gpu_test_buddy_alloc_pathological
[16:19:20] [PASSED] gpu_test_buddy_alloc_contiguous
[16:19:20] [PASSED] gpu_test_buddy_alloc_clear
[16:19:20] [PASSED] gpu_test_buddy_alloc_range
[16:19:20] [PASSED] gpu_test_buddy_alloc_range_bias
[16:19:20] [PASSED] gpu_test_buddy_fragmentation_performance
[16:19:20] [PASSED] gpu_test_buddy_alloc_exceeds_max_order
[16:19:20] [PASSED] gpu_test_buddy_offset_aligned_allocation
[16:19:20] [PASSED] gpu_test_buddy_subtree_offset_alignment_stress
[16:19:20] [PASSED] gpu_test_buddy_addr_to_block
[16:19:20] ==================== [PASSED] gpu_buddy ====================
[16:19:20] ============================================================
[16:19:20] Testing complete. Ran 13 tests: passed: 13
[16:19:20] Elapsed time: 25.119s total, 4.446s configuring, 20.258s building, 0.391s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[16:19:20] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:19:22] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[16:19:55] Starting KUnit Kernel (1/1)...
[16:19:55] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:19:56] ================== guc_buf (11 subtests) ===================
[16:19:56] [PASSED] test_smallest
[16:19:56] [PASSED] test_largest
[16:19:56] [PASSED] test_granular
[16:19:56] [PASSED] test_unique
[16:19:56] [PASSED] test_overlap
[16:19:56] [PASSED] test_reusable
[16:19:56] [PASSED] test_too_big
[16:19:56] [PASSED] test_flush
[16:19:56] [PASSED] test_lookup
[16:19:56] [PASSED] test_data
[16:19:56] [PASSED] test_class
[16:19:56] ===================== [PASSED] guc_buf =====================
[16:19:56] =================== guc_dbm (7 subtests) ===================
[16:19:56] [PASSED] test_empty
[16:19:56] [PASSED] test_default
[16:19:56] ======================== test_size ========================
[16:19:56] [PASSED] 4
[16:19:56] [PASSED] 8
[16:19:56] [PASSED] 32
[16:19:56] [PASSED] 256
[16:19:56] ==================== [PASSED] test_size ====================
[16:19:56] ======================= test_reuse ========================
[16:19:56] [PASSED] 4
[16:19:56] [PASSED] 8
[16:19:56] [PASSED] 32
[16:19:56] [PASSED] 256
[16:19:56] =================== [PASSED] test_reuse ====================
[16:19:56] =================== test_range_overlap ====================
[16:19:56] [PASSED] 4
[16:19:56] [PASSED] 8
[16:19:56] [PASSED] 32
[16:19:56] [PASSED] 256
[16:19:56] =============== [PASSED] test_range_overlap ================
[16:19:56] =================== test_range_compact ====================
[16:19:56] [PASSED] 4
[16:19:56] [PASSED] 8
[16:19:56] [PASSED] 32
[16:19:56] [PASSED] 256
[16:19:56] =============== [PASSED] test_range_compact ================
[16:19:56] ==================== test_range_spare =====================
[16:19:56] [PASSED] 4
[16:19:56] [PASSED] 8
[16:19:56] [PASSED] 32
[16:19:56] [PASSED] 256
[16:19:56] ================ [PASSED] test_range_spare =================
[16:19:56] ===================== [PASSED] guc_dbm =====================
[16:19:56] =================== guc_idm (6 subtests) ===================
[16:19:56] [PASSED] bad_init
[16:19:56] [PASSED] no_init
[16:19:56] [PASSED] init_fini
[16:19:56] [PASSED] check_used
[16:19:56] [PASSED] check_quota
[16:19:56] [PASSED] check_all
[16:19:56] ===================== [PASSED] guc_idm =====================
[16:19:56] =============== guc_klv_helpers (9 subtests) ===============
[16:19:56] [PASSED] test_count
[16:19:56] [PASSED] test_encode_u32
[16:19:56] [PASSED] test_encode_u64
[16:19:56] [PASSED] test_encode_string
[16:19:56] [PASSED] test_encode_object_raw
[16:19:56] [PASSED] test_encode_object_klv
[16:19:56] [PASSED] test_encode_object_nested
[16:19:56] [PASSED] test_encode_object_basic
[16:19:56] [PASSED] test_print
[16:19:56] ================= [PASSED] guc_klv_helpers =================
[16:19:56] ================== no_relay (3 subtests) ===================
[16:19:56] [PASSED] xe_drops_guc2pf_if_not_ready
[16:19:56] [PASSED] xe_drops_guc2vf_if_not_ready
[16:19:56] [PASSED] xe_rejects_send_if_not_ready
[16:19:56] ==================== [PASSED] no_relay =====================
[16:19:56] ================== pf_relay (14 subtests) ==================
[16:19:56] [PASSED] pf_rejects_guc2pf_too_short
[16:19:56] [PASSED] pf_rejects_guc2pf_too_long
[16:19:56] [PASSED] pf_rejects_guc2pf_no_payload
[16:19:56] [PASSED] pf_fails_no_payload
[16:19:56] [PASSED] pf_fails_bad_origin
[16:19:56] [PASSED] pf_fails_bad_type
[16:19:56] [PASSED] pf_txn_reports_error
[16:19:56] [PASSED] pf_txn_sends_pf2guc
[16:19:56] [PASSED] pf_sends_pf2guc
[16:19:56] [SKIPPED] pf_loopback_nop (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[16:19:56] [SKIPPED] pf_loopback_echo (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[16:19:56] [SKIPPED] pf_loopback_fail (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[16:19:56] [SKIPPED] pf_loopback_busy (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[16:19:56] [SKIPPED] pf_loopback_retry (requires CONFIG_DRM_XE_DEBUG_SRIOV)
[16:19:56] ==================== [PASSED] pf_relay =====================
[16:19:56] ================== vf_relay (3 subtests) ===================
[16:19:56] [PASSED] vf_rejects_guc2vf_too_short
[16:19:56] [PASSED] vf_rejects_guc2vf_too_long
[16:19:56] [PASSED] vf_rejects_guc2vf_no_payload
[16:19:56] ==================== [PASSED] vf_relay =====================
[16:19:56] ================ pf_gt_config (9 subtests) =================
[16:19:56] [PASSED] fair_contexts_1vf
[16:19:56] [PASSED] fair_doorbells_1vf
[16:19:56] [PASSED] fair_ggtt_1vf
[16:19:56] ====================== fair_vram_1vf ======================
[16:19:56] [PASSED] 3.50 GiB
[16:19:56] [PASSED] 11.5 GiB
[16:19:56] [PASSED] 15.5 GiB
[16:19:56] [PASSED] 31.5 GiB
[16:19:56] [PASSED] 63.5 GiB
[16:19:56] [PASSED] 1.91 GiB
[16:19:56] ================== [PASSED] fair_vram_1vf ==================
[16:19:56] ================ fair_vram_1vf_admin_only =================
[16:19:56] [PASSED] 3.50 GiB
[16:19:56] [PASSED] 11.5 GiB
[16:19:56] [PASSED] 15.5 GiB
[16:19:56] [PASSED] 31.5 GiB
[16:19:56] [PASSED] 63.5 GiB
[16:19:56] [PASSED] 1.91 GiB
[16:19:56] ============ [PASSED] fair_vram_1vf_admin_only =============
[16:19:56] ====================== fair_contexts ======================
[16:19:56] [PASSED] 1 VF
[16:19:56] [PASSED] 2 VFs
[16:19:56] [PASSED] 3 VFs
[16:19:56] [PASSED] 4 VFs
[16:19:56] [PASSED] 5 VFs
[16:19:56] [PASSED] 6 VFs
[16:19:56] [PASSED] 7 VFs
[16:19:56] [PASSED] 8 VFs
[16:19:56] [PASSED] 9 VFs
[16:19:56] [PASSED] 10 VFs
[16:19:56] [PASSED] 11 VFs
[16:19:56] [PASSED] 12 VFs
[16:19:56] [PASSED] 13 VFs
[16:19:56] [PASSED] 14 VFs
[16:19:56] [PASSED] 15 VFs
[16:19:56] [PASSED] 16 VFs
[16:19:56] [PASSED] 17 VFs
[16:19:56] [PASSED] 18 VFs
[16:19:56] [PASSED] 19 VFs
[16:19:56] [PASSED] 20 VFs
[16:19:56] [PASSED] 21 VFs
[16:19:56] [PASSED] 22 VFs
[16:19:56] [PASSED] 23 VFs
[16:19:56] [PASSED] 24 VFs
[16:19:56] [PASSED] 25 VFs
[16:19:56] [PASSED] 26 VFs
[16:19:56] [PASSED] 27 VFs
[16:19:56] [PASSED] 28 VFs
[16:19:56] [PASSED] 29 VFs
[16:19:56] [PASSED] 30 VFs
[16:19:56] [PASSED] 31 VFs
[16:19:56] [PASSED] 32 VFs
[16:19:56] [PASSED] 33 VFs
[16:19:56] [PASSED] 34 VFs
[16:19:56] [PASSED] 35 VFs
[16:19:56] [PASSED] 36 VFs
[16:19:56] [PASSED] 37 VFs
[16:19:56] [PASSED] 38 VFs
[16:19:56] [PASSED] 39 VFs
[16:19:56] [PASSED] 40 VFs
[16:19:56] [PASSED] 41 VFs
[16:19:56] [PASSED] 42 VFs
[16:19:56] [PASSED] 43 VFs
[16:19:56] [PASSED] 44 VFs
[16:19:56] [PASSED] 45 VFs
[16:19:56] [PASSED] 46 VFs
[16:19:56] [PASSED] 47 VFs
[16:19:56] [PASSED] 48 VFs
[16:19:56] [PASSED] 49 VFs
[16:19:56] [PASSED] 50 VFs
[16:19:56] [PASSED] 51 VFs
[16:19:56] [PASSED] 52 VFs
[16:19:56] [PASSED] 53 VFs
[16:19:56] [PASSED] 54 VFs
[16:19:56] [PASSED] 55 VFs
[16:19:56] [PASSED] 56 VFs
[16:19:56] [PASSED] 57 VFs
[16:19:56] [PASSED] 58 VFs
[16:19:56] [PASSED] 59 VFs
[16:19:56] [PASSED] 60 VFs
[16:19:56] [PASSED] 61 VFs
[16:19:56] [PASSED] 62 VFs
[16:19:56] [PASSED] 63 VFs
[16:19:56] ================== [PASSED] fair_contexts ==================
[16:19:56] ===================== fair_doorbells ======================
[16:19:56] [PASSED] 1 VF
[16:19:56] [PASSED] 2 VFs
[16:19:56] [PASSED] 3 VFs
[16:19:56] [PASSED] 4 VFs
[16:19:56] [PASSED] 5 VFs
[16:19:56] [PASSED] 6 VFs
[16:19:56] [PASSED] 7 VFs
[16:19:56] [PASSED] 8 VFs
[16:19:56] [PASSED] 9 VFs
[16:19:56] [PASSED] 10 VFs
[16:19:56] [PASSED] 11 VFs
[16:19:56] [PASSED] 12 VFs
[16:19:56] [PASSED] 13 VFs
[16:19:56] [PASSED] 14 VFs
[16:19:56] [PASSED] 15 VFs
[16:19:56] [PASSED] 16 VFs
[16:19:56] [PASSED] 17 VFs
[16:19:56] [PASSED] 18 VFs
[16:19:56] [PASSED] 19 VFs
[16:19:56] [PASSED] 20 VFs
[16:19:56] [PASSED] 21 VFs
[16:19:56] [PASSED] 22 VFs
[16:19:56] [PASSED] 23 VFs
[16:19:56] [PASSED] 24 VFs
[16:19:56] [PASSED] 25 VFs
[16:19:56] [PASSED] 26 VFs
[16:19:56] [PASSED] 27 VFs
[16:19:56] [PASSED] 28 VFs
[16:19:56] [PASSED] 29 VFs
[16:19:56] [PASSED] 30 VFs
[16:19:56] [PASSED] 31 VFs
[16:19:56] [PASSED] 32 VFs
[16:19:56] [PASSED] 33 VFs
[16:19:56] [PASSED] 34 VFs
[16:19:56] [PASSED] 35 VFs
[16:19:56] [PASSED] 36 VFs
[16:19:56] [PASSED] 37 VFs
[16:19:56] [PASSED] 38 VFs
[16:19:56] [PASSED] 39 VFs
[16:19:56] [PASSED] 40 VFs
[16:19:56] [PASSED] 41 VFs
[16:19:56] [PASSED] 42 VFs
[16:19:56] [PASSED] 43 VFs
[16:19:56] [PASSED] 44 VFs
[16:19:56] [PASSED] 45 VFs
[16:19:56] [PASSED] 46 VFs
[16:19:56] [PASSED] 47 VFs
[16:19:56] [PASSED] 48 VFs
[16:19:56] [PASSED] 49 VFs
[16:19:56] [PASSED] 50 VFs
[16:19:56] [PASSED] 51 VFs
[16:19:56] [PASSED] 52 VFs
[16:19:56] [PASSED] 53 VFs
[16:19:56] [PASSED] 54 VFs
[16:19:56] [PASSED] 55 VFs
[16:19:56] [PASSED] 56 VFs
[16:19:56] [PASSED] 57 VFs
[16:19:56] [PASSED] 58 VFs
[16:19:56] [PASSED] 59 VFs
[16:19:56] [PASSED] 60 VFs
[16:19:56] [PASSED] 61 VFs
[16:19:56] [PASSED] 62 VFs
[16:19:56] [PASSED] 63 VFs
[16:19:56] ================= [PASSED] fair_doorbells ==================
[16:19:56] ======================== fair_ggtt ========================
[16:19:56] [PASSED] 1 VF
[16:19:56] [PASSED] 2 VFs
[16:19:56] [PASSED] 3 VFs
[16:19:56] [PASSED] 4 VFs
[16:19:56] [PASSED] 5 VFs
[16:19:56] [PASSED] 6 VFs
[16:19:56] [PASSED] 7 VFs
[16:19:56] [PASSED] 8 VFs
[16:19:56] [PASSED] 9 VFs
[16:19:56] [PASSED] 10 VFs
[16:19:56] [PASSED] 11 VFs
[16:19:56] [PASSED] 12 VFs
[16:19:56] [PASSED] 13 VFs
[16:19:56] [PASSED] 14 VFs
[16:19:56] [PASSED] 15 VFs
[16:19:56] [PASSED] 16 VFs
[16:19:56] [PASSED] 17 VFs
[16:19:56] [PASSED] 18 VFs
[16:19:56] [PASSED] 19 VFs
[16:19:56] [PASSED] 20 VFs
[16:19:56] [PASSED] 21 VFs
[16:19:56] [PASSED] 22 VFs
[16:19:56] [PASSED] 23 VFs
[16:19:56] [PASSED] 24 VFs
[16:19:56] [PASSED] 25 VFs
[16:19:56] [PASSED] 26 VFs
[16:19:56] [PASSED] 27 VFs
[16:19:56] [PASSED] 28 VFs
[16:19:56] [PASSED] 29 VFs
[16:19:56] [PASSED] 30 VFs
[16:19:56] [PASSED] 31 VFs
[16:19:56] [PASSED] 32 VFs
[16:19:56] [PASSED] 33 VFs
[16:19:56] [PASSED] 34 VFs
[16:19:56] [PASSED] 35 VFs
[16:19:56] [PASSED] 36 VFs
[16:19:56] [PASSED] 37 VFs
[16:19:56] [PASSED] 38 VFs
[16:19:56] [PASSED] 39 VFs
[16:19:56] [PASSED] 40 VFs
[16:19:56] [PASSED] 41 VFs
[16:19:56] [PASSED] 42 VFs
[16:19:56] [PASSED] 43 VFs
[16:19:56] [PASSED] 44 VFs
[16:19:56] [PASSED] 45 VFs
[16:19:56] [PASSED] 46 VFs
[16:19:56] [PASSED] 47 VFs
[16:19:56] [PASSED] 48 VFs
[16:19:56] [PASSED] 49 VFs
[16:19:56] [PASSED] 50 VFs
[16:19:56] [PASSED] 51 VFs
[16:19:56] [PASSED] 52 VFs
[16:19:56] [PASSED] 53 VFs
[16:19:56] [PASSED] 54 VFs
[16:19:56] [PASSED] 55 VFs
[16:19:56] [PASSED] 56 VFs
[16:19:56] [PASSED] 57 VFs
[16:19:56] [PASSED] 58 VFs
[16:19:56] [PASSED] 59 VFs
[16:19:56] [PASSED] 60 VFs
[16:19:56] [PASSED] 61 VFs
[16:19:56] [PASSED] 62 VFs
[16:19:56] [PASSED] 63 VFs
[16:19:56] ==================== [PASSED] fair_ggtt ====================
[16:19:56] ======================== fair_vram ========================
[16:19:56] [PASSED] 1 VF
[16:19:56] [PASSED] 2 VFs
[16:19:56] [PASSED] 3 VFs
[16:19:56] [PASSED] 4 VFs
[16:19:56] [PASSED] 5 VFs
[16:19:56] [PASSED] 6 VFs
[16:19:56] [PASSED] 7 VFs
[16:19:56] [PASSED] 8 VFs
[16:19:56] [PASSED] 9 VFs
[16:19:56] [PASSED] 10 VFs
[16:19:56] [PASSED] 11 VFs
[16:19:56] [PASSED] 12 VFs
[16:19:56] [PASSED] 13 VFs
[16:19:56] [PASSED] 14 VFs
[16:19:56] [PASSED] 15 VFs
[16:19:56] [PASSED] 16 VFs
[16:19:56] [PASSED] 17 VFs
[16:19:56] [PASSED] 18 VFs
[16:19:56] [PASSED] 19 VFs
[16:19:56] [PASSED] 20 VFs
[16:19:56] [PASSED] 21 VFs
[16:19:56] [PASSED] 22 VFs
[16:19:56] [PASSED] 23 VFs
[16:19:56] [PASSED] 24 VFs
[16:19:56] [PASSED] 25 VFs
[16:19:56] [PASSED] 26 VFs
[16:19:56] [PASSED] 27 VFs
[16:19:56] [PASSED] 28 VFs
[16:19:56] [PASSED] 29 VFs
[16:19:56] [PASSED] 30 VFs
[16:19:56] [PASSED] 31 VFs
[16:19:56] [PASSED] 32 VFs
[16:19:56] [PASSED] 33 VFs
[16:19:56] [PASSED] 34 VFs
[16:19:56] [PASSED] 35 VFs
[16:19:56] [PASSED] 36 VFs
[16:19:56] [PASSED] 37 VFs
[16:19:56] [PASSED] 38 VFs
[16:19:56] [PASSED] 39 VFs
[16:19:56] [PASSED] 40 VFs
[16:19:56] [PASSED] 41 VFs
[16:19:56] [PASSED] 42 VFs
[16:19:56] [PASSED] 43 VFs
[16:19:56] [PASSED] 44 VFs
[16:19:56] [PASSED] 45 VFs
[16:19:56] [PASSED] 46 VFs
[16:19:56] [PASSED] 47 VFs
[16:19:56] [PASSED] 48 VFs
[16:19:56] [PASSED] 49 VFs
[16:19:56] [PASSED] 50 VFs
[16:19:56] [PASSED] 51 VFs
[16:19:56] [PASSED] 52 VFs
[16:19:56] [PASSED] 53 VFs
[16:19:56] [PASSED] 54 VFs
[16:19:56] [PASSED] 55 VFs
[16:19:56] [PASSED] 56 VFs
[16:19:56] [PASSED] 57 VFs
[16:19:56] [PASSED] 58 VFs
[16:19:56] [PASSED] 59 VFs
[16:19:56] [PASSED] 60 VFs
[16:19:56] [PASSED] 61 VFs
[16:19:56] [PASSED] 62 VFs
[16:19:56] [PASSED] 63 VFs
[16:19:56] ==================== [PASSED] fair_vram ====================
[16:19:56] ================== [PASSED] pf_gt_config ===================
[16:19:56] ===================== lmtt (1 subtest) =====================
[16:19:56] ======================== test_ops =========================
[16:19:56] [PASSED] 2-level
[16:19:56] [PASSED] multi-level
[16:19:56] ==================== [PASSED] test_ops =====================
[16:19:56] ====================== [PASSED] lmtt =======================
[16:19:56] ================= sriov_packet (1 subtest) =================
[16:19:56] [PASSED] test_descriptor_init
[16:19:56] ================== [PASSED] sriov_packet ===================
[16:19:56] ================= pf_service (11 subtests) =================
[16:19:56] [PASSED] pf_negotiate_any
[16:19:56] [PASSED] pf_negotiate_base_match
[16:19:56] [PASSED] pf_negotiate_base_newer
[16:19:56] [PASSED] pf_negotiate_base_next
[16:19:56] [SKIPPED] pf_negotiate_base_older (no older minor)
[16:19:56] [PASSED] pf_negotiate_base_prev
[16:19:56] [PASSED] pf_negotiate_latest_match
[16:19:56] [PASSED] pf_negotiate_latest_newer
[16:19:56] [PASSED] pf_negotiate_latest_next
[16:19:56] [SKIPPED] pf_negotiate_latest_older (no older minor)
[16:19:56] [SKIPPED] pf_negotiate_latest_prev (no prev major)
[16:19:56] =================== [PASSED] pf_service ====================
[16:19:56] ================= xe_guc_g2g (2 subtests) ==================
[16:19:56] ============== xe_live_guc_g2g_kunit_default ==============
[16:19:56] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[16:19:56] ============== xe_live_guc_g2g_kunit_allmem ===============
[16:19:56] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[16:19:56] =================== [SKIPPED] xe_guc_g2g ===================
[16:19:56] =================== xe_mocs (2 subtests) ===================
[16:19:56] ================ xe_live_mocs_kernel_kunit ================
[16:19:56] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[16:19:56] ================ xe_live_mocs_reset_kunit =================
[16:19:56] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[16:19:56] ==================== [SKIPPED] xe_mocs =====================
[16:19:56] ================= xe_migrate (2 subtests) ==================
[16:19:56] ================= xe_migrate_sanity_kunit =================
[16:19:56] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[16:19:56] ================== xe_validate_ccs_kunit ==================
[16:19:56] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[16:19:56] =================== [SKIPPED] xe_migrate ===================
[16:19:56] ================== xe_dma_buf (1 subtest) ==================
[16:19:56] ==================== xe_dma_buf_kunit =====================
[16:19:56] ================ [SKIPPED] xe_dma_buf_kunit ================
[16:19:56] =================== [SKIPPED] xe_dma_buf ===================
[16:19:56] ================= xe_bo_shrink (1 subtest) =================
[16:19:56] =================== xe_bo_shrink_kunit ====================
[16:19:56] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[16:19:56] ================== [SKIPPED] xe_bo_shrink ==================
[16:19:56] ==================== xe_bo (2 subtests) ====================
[16:19:56] ================== xe_ccs_migrate_kunit ===================
[16:19:56] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[16:19:56] ==================== xe_bo_evict_kunit ====================
[16:19:56] =============== [SKIPPED] xe_bo_evict_kunit ================
[16:19:56] ===================== [SKIPPED] xe_bo ======================
[16:19:56] ==================== args (13 subtests) ====================
[16:19:56] [PASSED] count_args_test
[16:19:56] [PASSED] call_args_example
[16:19:56] [PASSED] call_args_test
[16:19:56] [PASSED] drop_first_arg_example
[16:19:56] [PASSED] drop_first_arg_test
[16:19:56] [PASSED] first_arg_example
[16:19:56] [PASSED] first_arg_test
[16:19:56] [PASSED] last_arg_example
[16:19:56] [PASSED] last_arg_test
[16:19:56] [PASSED] pick_arg_example
[16:19:56] [PASSED] if_args_example
[16:19:56] [PASSED] if_args_test
[16:19:56] [PASSED] sep_comma_example
[16:19:56] ====================== [PASSED] args =======================
[16:19:56] =================== xe_pci (3 subtests) ====================
[16:19:56] ==================== check_graphics_ip ====================
[16:19:56] [PASSED] 12.00 Xe_LP
[16:19:56] [PASSED] 12.10 Xe_LP+
[16:19:56] [PASSED] 12.55 Xe_HPG
[16:19:56] [PASSED] 12.60 Xe_HPC
[16:19:56] [PASSED] 12.70 Xe_LPG
[16:19:56] [PASSED] 12.71 Xe_LPG
[16:19:56] [PASSED] 12.74 Xe_LPG+
[16:19:56] [PASSED] 20.01 Xe2_HPG
[16:19:56] [PASSED] 20.02 Xe2_HPG
[16:19:56] [PASSED] 20.04 Xe2_LPG
[16:19:56] [PASSED] 30.00 Xe3_LPG
[16:19:56] [PASSED] 30.01 Xe3_LPG
[16:19:56] [PASSED] 30.03 Xe3_LPG
[16:19:56] [PASSED] 30.04 Xe3_LPG
[16:19:56] [PASSED] 30.05 Xe3_LPG
[16:19:56] [PASSED] 35.10 Xe3p_LPG
[16:19:56] [PASSED] 35.11 Xe3p_XPC
[16:19:56] ================ [PASSED] check_graphics_ip ================
[16:19:56] ===================== check_media_ip ======================
[16:19:56] [PASSED] 12.00 Xe_M
[16:19:56] [PASSED] 12.55 Xe_HPM
[16:19:56] [PASSED] 13.00 Xe_LPM+
[16:19:56] [PASSED] 13.01 Xe2_HPM
[16:19:56] [PASSED] 20.00 Xe2_LPM
[16:19:56] [PASSED] 30.00 Xe3_LPM
[16:19:56] [PASSED] 30.02 Xe3_LPM
[16:19:56] [PASSED] 35.00 Xe3p_LPM
[16:19:56] [PASSED] 35.03 Xe3p_HPM
[16:19:56] ================= [PASSED] check_media_ip ==================
[16:19:56] =================== check_platform_desc ===================
[16:19:56] [PASSED] 0x9A60 (TIGERLAKE)
[16:19:56] [PASSED] 0x9A68 (TIGERLAKE)
[16:19:56] [PASSED] 0x9A70 (TIGERLAKE)
[16:19:56] [PASSED] 0x9A40 (TIGERLAKE)
[16:19:56] [PASSED] 0x9A49 (TIGERLAKE)
[16:19:56] [PASSED] 0x9A59 (TIGERLAKE)
[16:19:56] [PASSED] 0x9A78 (TIGERLAKE)
[16:19:56] [PASSED] 0x9AC0 (TIGERLAKE)
[16:19:56] [PASSED] 0x9AC9 (TIGERLAKE)
[16:19:56] [PASSED] 0x9AD9 (TIGERLAKE)
[16:19:56] [PASSED] 0x9AF8 (TIGERLAKE)
[16:19:56] [PASSED] 0x4C80 (ROCKETLAKE)
[16:19:56] [PASSED] 0x4C8A (ROCKETLAKE)
[16:19:56] [PASSED] 0x4C8B (ROCKETLAKE)
[16:19:56] [PASSED] 0x4C8C (ROCKETLAKE)
[16:19:56] [PASSED] 0x4C90 (ROCKETLAKE)
[16:19:56] [PASSED] 0x4C9A (ROCKETLAKE)
[16:19:56] [PASSED] 0x4680 (ALDERLAKE_S)
[16:19:56] [PASSED] 0x4682 (ALDERLAKE_S)
[16:19:56] [PASSED] 0x4688 (ALDERLAKE_S)
[16:19:56] [PASSED] 0x468A (ALDERLAKE_S)
[16:19:56] [PASSED] 0x468B (ALDERLAKE_S)
[16:19:56] [PASSED] 0x4690 (ALDERLAKE_S)
[16:19:56] [PASSED] 0x4692 (ALDERLAKE_S)
[16:19:56] [PASSED] 0x4693 (ALDERLAKE_S)
[16:19:56] [PASSED] 0x46A0 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46A1 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46A2 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46A3 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46A6 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46A8 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46AA (ALDERLAKE_P)
[16:19:56] [PASSED] 0x462A (ALDERLAKE_P)
[16:19:56] [PASSED] 0x4626 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x4628 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46B0 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46B1 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46B2 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46B3 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46C0 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46C1 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46C2 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46C3 (ALDERLAKE_P)
[16:19:56] [PASSED] 0x46D0 (ALDERLAKE_N)
[16:19:56] [PASSED] 0x46D1 (ALDERLAKE_N)
[16:19:56] [PASSED] 0x46D2 (ALDERLAKE_N)
[16:19:56] [PASSED] 0x46D3 (ALDERLAKE_N)
[16:19:56] [PASSED] 0x46D4 (ALDERLAKE_N)
[16:19:56] [PASSED] 0xA721 (ALDERLAKE_P)
[16:19:56] [PASSED] 0xA7A1 (ALDERLAKE_P)
[16:19:56] [PASSED] 0xA7A9 (ALDERLAKE_P)
[16:19:56] [PASSED] 0xA7AC (ALDERLAKE_P)
[16:19:56] [PASSED] 0xA7AD (ALDERLAKE_P)
[16:19:56] [PASSED] 0xA720 (ALDERLAKE_P)
[16:19:56] [PASSED] 0xA7A0 (ALDERLAKE_P)
[16:19:56] [PASSED] 0xA7A8 (ALDERLAKE_P)
[16:19:56] [PASSED] 0xA7AA (ALDERLAKE_P)
[16:19:56] [PASSED] 0xA7AB (ALDERLAKE_P)
[16:19:56] [PASSED] 0xA780 (ALDERLAKE_S)
[16:19:56] [PASSED] 0xA781 (ALDERLAKE_S)
[16:19:56] [PASSED] 0xA782 (ALDERLAKE_S)
[16:19:56] [PASSED] 0xA783 (ALDERLAKE_S)
[16:19:56] [PASSED] 0xA788 (ALDERLAKE_S)
[16:19:56] [PASSED] 0xA789 (ALDERLAKE_S)
[16:19:56] [PASSED] 0xA78A (ALDERLAKE_S)
[16:19:56] [PASSED] 0xA78B (ALDERLAKE_S)
[16:19:56] [PASSED] 0x4905 (DG1)
[16:19:56] [PASSED] 0x4906 (DG1)
[16:19:56] [PASSED] 0x4907 (DG1)
[16:19:56] [PASSED] 0x4908 (DG1)
[16:19:56] [PASSED] 0x4909 (DG1)
[16:19:56] [PASSED] 0x56C0 (DG2)
[16:19:56] [PASSED] 0x56C2 (DG2)
[16:19:56] [PASSED] 0x56C1 (DG2)
[16:19:56] [PASSED] 0x7D51 (METEORLAKE)
[16:19:56] [PASSED] 0x7DD1 (METEORLAKE)
[16:19:56] [PASSED] 0x7D41 (METEORLAKE)
[16:19:56] [PASSED] 0x7D67 (METEORLAKE)
[16:19:56] [PASSED] 0xB640 (METEORLAKE)
[16:19:56] [PASSED] 0x56A0 (DG2)
[16:19:56] [PASSED] 0x56A1 (DG2)
[16:19:56] [PASSED] 0x56A2 (DG2)
[16:19:56] [PASSED] 0x56BE (DG2)
[16:19:56] [PASSED] 0x56BF (DG2)
[16:19:56] [PASSED] 0x5690 (DG2)
[16:19:56] [PASSED] 0x5691 (DG2)
[16:19:56] [PASSED] 0x5692 (DG2)
[16:19:56] [PASSED] 0x56A5 (DG2)
[16:19:56] [PASSED] 0x56A6 (DG2)
[16:19:56] [PASSED] 0x56B0 (DG2)
[16:19:56] [PASSED] 0x56B1 (DG2)
[16:19:56] [PASSED] 0x56BA (DG2)
[16:19:56] [PASSED] 0x56BB (DG2)
[16:19:56] [PASSED] 0x56BC (DG2)
[16:19:56] [PASSED] 0x56BD (DG2)
[16:19:56] [PASSED] 0x5693 (DG2)
[16:19:56] [PASSED] 0x5694 (DG2)
[16:19:56] [PASSED] 0x5695 (DG2)
[16:19:56] [PASSED] 0x56A3 (DG2)
[16:19:56] [PASSED] 0x56A4 (DG2)
[16:19:56] [PASSED] 0x56B2 (DG2)
[16:19:56] [PASSED] 0x56B3 (DG2)
[16:19:56] [PASSED] 0x5696 (DG2)
[16:19:56] [PASSED] 0x5697 (DG2)
[16:19:56] [PASSED] 0xB69 (PVC)
[16:19:56] [PASSED] 0xB6E (PVC)
[16:19:56] [PASSED] 0xBD4 (PVC)
[16:19:56] [PASSED] 0xBD5 (PVC)
[16:19:56] [PASSED] 0xBD6 (PVC)
[16:19:56] [PASSED] 0xBD7 (PVC)
[16:19:56] [PASSED] 0xBD8 (PVC)
[16:19:56] [PASSED] 0xBD9 (PVC)
[16:19:56] [PASSED] 0xBDA (PVC)
[16:19:56] [PASSED] 0xBDB (PVC)
[16:19:56] [PASSED] 0xBE0 (PVC)
[16:19:56] [PASSED] 0xBE1 (PVC)
[16:19:56] [PASSED] 0xBE5 (PVC)
[16:19:56] [PASSED] 0x7D40 (METEORLAKE)
[16:19:56] [PASSED] 0x7D45 (METEORLAKE)
[16:19:56] [PASSED] 0x7D55 (METEORLAKE)
[16:19:56] [PASSED] 0x7D60 (METEORLAKE)
[16:19:56] [PASSED] 0x7DD5 (METEORLAKE)
[16:19:56] [PASSED] 0x6420 (LUNARLAKE)
[16:19:56] [PASSED] 0x64A0 (LUNARLAKE)
[16:19:56] [PASSED] 0x64B0 (LUNARLAKE)
[16:19:56] [PASSED] 0xE202 (BATTLEMAGE)
[16:19:56] [PASSED] 0xE209 (BATTLEMAGE)
[16:19:56] [PASSED] 0xE20B (BATTLEMAGE)
[16:19:56] [PASSED] 0xE20C (BATTLEMAGE)
[16:19:56] [PASSED] 0xE20D (BATTLEMAGE)
[16:19:56] [PASSED] 0xE210 (BATTLEMAGE)
[16:19:56] [PASSED] 0xE211 (BATTLEMAGE)
[16:19:56] [PASSED] 0xE212 (BATTLEMAGE)
[16:19:56] [PASSED] 0xE216 (BATTLEMAGE)
[16:19:56] [PASSED] 0xE220 (BATTLEMAGE)
[16:19:56] [PASSED] 0xE221 (BATTLEMAGE)
[16:19:56] [PASSED] 0xE222 (BATTLEMAGE)
[16:19:56] [PASSED] 0xE223 (BATTLEMAGE)
[16:19:56] [PASSED] 0xB080 (PANTHERLAKE)
[16:19:56] [PASSED] 0xB081 (PANTHERLAKE)
[16:19:56] [PASSED] 0xB082 (PANTHERLAKE)
[16:19:56] [PASSED] 0xB083 (PANTHERLAKE)
[16:19:56] [PASSED] 0xB084 (PANTHERLAKE)
[16:19:56] [PASSED] 0xB085 (PANTHERLAKE)
[16:19:56] [PASSED] 0xB086 (PANTHERLAKE)
[16:19:56] [PASSED] 0xB087 (PANTHERLAKE)
[16:19:56] [PASSED] 0xB08F (PANTHERLAKE)
[16:19:56] [PASSED] 0xB090 (PANTHERLAKE)
[16:19:56] [PASSED] 0xB0A0 (PANTHERLAKE)
[16:19:56] [PASSED] 0xB0B0 (PANTHERLAKE)
[16:19:56] [PASSED] 0xFD80 (PANTHERLAKE)
[16:19:56] [PASSED] 0xFD81 (PANTHERLAKE)
[16:19:56] [PASSED] 0xD740 (NOVALAKE_S)
[16:19:56] [PASSED] 0xD741 (NOVALAKE_S)
[16:19:56] [PASSED] 0xD742 (NOVALAKE_S)
[16:19:56] [PASSED] 0xD743 (NOVALAKE_S)
[16:19:56] [PASSED] 0xD745 (NOVALAKE_S)
[16:19:56] [PASSED] 0xD74A (NOVALAKE_S)
[16:19:56] [PASSED] 0xD74B (NOVALAKE_S)
[16:19:56] [PASSED] 0x674C (CRESCENTISLAND)
[16:19:56] [PASSED] 0x674D (CRESCENTISLAND)
[16:19:56] [PASSED] 0x674E (CRESCENTISLAND)
[16:19:56] [PASSED] 0x674F (CRESCENTISLAND)
[16:19:56] [PASSED] 0x6750 (CRESCENTISLAND)
[16:19:56] [PASSED] 0xD750 (NOVALAKE_P)
[16:19:56] [PASSED] 0xD751 (NOVALAKE_P)
[16:19:56] [PASSED] 0xD752 (NOVALAKE_P)
[16:19:56] [PASSED] 0xD753 (NOVALAKE_P)
[16:19:56] [PASSED] 0xD754 (NOVALAKE_P)
[16:19:56] [PASSED] 0xD755 (NOVALAKE_P)
[16:19:56] [PASSED] 0xD756 (NOVALAKE_P)
[16:19:56] [PASSED] 0xD757 (NOVALAKE_P)
[16:19:56] [PASSED] 0xD75F (NOVALAKE_P)
[16:19:56] =============== [PASSED] check_platform_desc ===============
[16:19:56] ===================== [PASSED] xe_pci ======================
[16:19:56] ============= xe_rtp_tables_test (5 subtests) ==============
[16:19:56] ================== xe_rtp_table_gt_test ===================
[16:19:56] [PASSED] gt_was/14011060649
[16:19:56] [PASSED] gt_was/14011059788
[16:19:56] [PASSED] gt_was/14015795083
[16:19:56] [PASSED] gt_was/16021867713
[16:19:56] [PASSED] gt_was/14019449301
[16:19:56] [PASSED] gt_was/16028005424
[16:19:56] [PASSED] gt_was/14026578760
[16:19:56] [PASSED] gt_was/1409420604
[16:19:56] [PASSED] gt_was/1408615072
[16:19:56] [PASSED] gt_was/22010523718
[16:19:56] [PASSED] gt_was/14011006942
[16:19:56] [PASSED] gt_was/14014830051
[16:19:56] [PASSED] gt_was/18018781329
[16:19:56] [PASSED] gt_was/1509235366
[16:19:56] [PASSED] gt_was/18018781329
[16:19:56] [PASSED] gt_was/16016694945
[16:19:56] [PASSED] gt_was/14018575942
[16:19:56] [PASSED] gt_was/22016670082
[16:19:56] [PASSED] gt_was/22016670082
[16:19:56] [PASSED] gt_was/14017421178
[16:19:56] [PASSED] gt_was/16025250150
[16:19:56] [PASSED] gt_was/14021871409
[16:19:56] [PASSED] gt_was/16021865536
[16:19:56] [PASSED] gt_was/14021486841
[16:19:56] [PASSED] gt_was/14025160223
[16:19:56] [PASSED] gt_was/14026144927, 16029437861, 14026127056
[16:19:56] [PASSED] gt_was/14025635424
[16:19:56] [PASSED] gt_was/16028005424
[16:19:56] ============== [PASSED] xe_rtp_table_gt_test ===============
[16:19:56] ================== xe_rtp_table_gt_test ===================
[16:19:56] [PASSED] gt_tunings/Tuning: Blend Fill Caching Optimization Disable
[16:19:56] [PASSED] gt_tunings/Tuning: 32B Access Enable
[16:19:56] [PASSED] gt_tunings/Tuning: L3 cache
[16:19:56] [PASSED] gt_tunings/Tuning: L3 cache - media
[16:19:56] [PASSED] gt_tunings/Tuning: Compression Overfetch
[16:19:56] [PASSED] gt_tunings/Tuning: Compression Overfetch - media
[16:19:56] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3
[16:19:56] [PASSED] gt_tunings/Tuning: Enable compressible partial write overfetch in L3 - media
[16:19:56] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only
[16:19:56] [PASSED] gt_tunings/Tuning: L2 Overfetch Compressible Only - media
[16:19:56] [PASSED] gt_tunings/Tuning: Stateless compression control
[16:19:56] [PASSED] gt_tunings/Tuning: Stateless compression control - media
[16:19:56] [PASSED] gt_tunings/Tuning: L3 RW flush all Cache
[16:19:56] [PASSED] gt_tunings/Tuning: L3 RW flush all cache - media
[16:19:56] [PASSED] gt_tunings/Tuning: Set STLB Bank Hash Mode to 4KB
[16:19:56] ============== [PASSED] xe_rtp_table_gt_test ===============
[16:19:56] ================== xe_rtp_table_oob_test ==================
[16:19:56] [PASSED] oob_was/1607983814
[16:19:56] [PASSED] oob_was/16010904313
[16:19:56] [PASSED] oob_was/18022495364
[16:19:56] [PASSED] oob_was/22012773006
[16:19:56] [PASSED] oob_was/14014475959
[16:19:56] [PASSED] oob_was/22011391025
[16:19:56] [PASSED] oob_was/22012727170
[16:19:56] [PASSED] oob_was/22012727685
[16:19:56] [PASSED] oob_was/22016596838
[16:19:56] [PASSED] oob_was/18020744125
[16:19:56] [PASSED] oob_was/1409600907
[16:19:56] [PASSED] oob_was/22014953428
[16:19:56] [PASSED] oob_was/16017236439
[16:19:56] [PASSED] oob_was/14019821291
[16:19:56] [PASSED] oob_was/14015076503
[16:19:56] [PASSED] oob_was/14018913170
[16:19:56] [PASSED] oob_was/14018094691
[16:19:56] [PASSED] oob_was/18024947630
[16:19:56] [PASSED] oob_was/16022287689
[16:19:56] [PASSED] oob_was/13011645652
[16:19:56] [PASSED] oob_was/14022293748
[16:19:56] [PASSED] oob_was/22019794406
[16:19:56] [PASSED] oob_was/22019338487
[16:19:56] [PASSED] oob_was/16023588340
[16:19:56] [PASSED] oob_was/14019789679
[16:19:56] [PASSED] oob_was/14022866841
[16:19:56] [PASSED] oob_was/16021333562
[16:19:56] [PASSED] oob_was/14016712196
[16:19:56] [PASSED] oob_was/14015568240
[16:19:56] [PASSED] oob_was/18013179988
[16:19:56] [PASSED] oob_was/1508761755
[16:19:56] [PASSED] oob_was/16023105232
[16:19:56] [PASSED] oob_was/16026508708
[16:19:56] [PASSED] oob_was/14020001231
[16:19:56] [PASSED] oob_was/16023683509
[16:19:56] [PASSED] oob_was/14025515070
[16:19:56] [PASSED] oob_was/15015404425_disable
[16:19:56] [PASSED] oob_was/16026007364
[16:19:56] [PASSED] oob_was/14020316580
[16:19:56] [PASSED] oob_was/14025883347
[16:19:56] [PASSED] oob_was/16029380221
[16:19:56] [PASSED] oob_was/22022079272
[16:19:56] [PASSED] oob_was/16029897822
[16:19:56] [PASSED] oob_was/14027054324
[16:19:56] ============== [PASSED] xe_rtp_table_oob_test ==============
[16:19:56] ================ xe_rtp_table_dev_oob_test ================
[16:19:56] [PASSED] device_oob_was/22010954014
[16:19:56] [PASSED] device_oob_was/15015404425
[16:19:56] [PASSED] device_oob_was/22019338487_display
[16:19:56] [PASSED] device_oob_was/14022085890
[16:19:56] [PASSED] device_oob_was/14026539277
[16:19:56] [PASSED] device_oob_was/14026633728
[16:19:56] [PASSED] device_oob_was/14026746987
[16:19:56] [PASSED] device_oob_was/14026779378
[16:19:56] ============ [PASSED] xe_rtp_table_dev_oob_test ============
[16:19:56] ========== xe_rtp_table_missing_upper_bound_test ==========
[16:19:56] [PASSED] register_whitelist/WaAllowPMDepthAndInvocationCountAccessFromUMD, 1408556865
[16:19:56] [PASSED] register_whitelist/1508744258, 14012131227, 1808121037
[16:19:56] [PASSED] register_whitelist/1806527549
[16:19:56] [PASSED] register_whitelist/allow_read_ctx_timestamp
[16:19:56] [PASSED] register_whitelist/allow_read_queue_timestamp
[16:19:56] [PASSED] register_whitelist/16014440446
[16:19:56] [PASSED] register_whitelist/16017236439
[16:19:56] [PASSED] register_whitelist/16020183090
[16:19:56] [PASSED] register_whitelist/14024997852
[16:19:56] [PASSED] register_whitelist/14024997852
[16:19:56] ====== [PASSED] xe_rtp_table_missing_upper_bound_test ======
[16:19:56] =============== [PASSED] xe_rtp_tables_test ================
[16:19:56] =================== xe_rtp (3 subtests) ====================
[16:19:56] =================== xe_rtp_rules_tests ====================
[16:19:56] [PASSED] no
[16:19:56] [PASSED] yes
[16:19:56] [PASSED] no-and-no
[16:19:56] [PASSED] no-and-yes
[16:19:56] [PASSED] yes-and-no
[16:19:56] [PASSED] yes-and-yes
[16:19:56] [PASSED] no-or-no
[16:19:56] [PASSED] no-or-yes
[16:19:56] [PASSED] yes-or-no
[16:19:56] [PASSED] yes-or-yes
[16:19:56] [PASSED] no-yes-or-yes-no
[16:19:56] [PASSED] no-yes-or-yes-yes
[16:19:56] [PASSED] yes-yes-or-no-yes
[16:19:56] [PASSED] yes-yes-or-yes-yes
[16:19:56] [PASSED] no-no-or-yes-or-no
[16:19:56] [PASSED] or
[16:19:56] [PASSED] or-yes
[16:19:56] [PASSED] or-no
[16:19:56] [PASSED] yes-or
[16:19:56] [PASSED] no-or
[16:19:56] [PASSED] no-or-or-yes
[16:19:56] [PASSED] yes-or-or-no
[16:19:56] [PASSED] no-or-or-no
[16:19:56] [PASSED] missing-context-engine-class
[16:19:56] [PASSED] missing-context-engine-class-or-yes
[16:19:56] [PASSED] missing-context-engine-class-or-or-yes
[16:19:56] =============== [PASSED] xe_rtp_rules_tests ================
[16:19:56] =============== xe_rtp_process_to_sr_tests ================
[16:19:56] [PASSED] coalesce-same-reg
[16:19:56] [PASSED] coalesce-same-reg-literal-and-func
[16:19:56] [PASSED] no-match-no-add
[16:19:56] [PASSED] two-regs-two-entries
[16:19:56] [PASSED] clr-one-set-other
[16:19:56] [PASSED] set-field
[16:19:56] [PASSED] conflict-duplicate
[16:19:56] [PASSED] conflict-not-disjoint
[16:19:56] [PASSED] conflict-not-disjoint-literal-and-func
[16:19:56] [PASSED] conflict-reg-type
[16:19:56] [PASSED] bad-mcr-reg-forced-to-regular
[16:19:56] [PASSED] bad-regular-reg-forced-to-mcr
[16:19:56] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[16:19:56] ================== xe_rtp_process_tests ===================
[16:19:56] [PASSED] active1
[16:19:56] [PASSED] active2
[16:19:56] [PASSED] active-inactive
[16:19:56] [PASSED] inactive-active
[16:19:56] [PASSED] inactive-active-inactive
[16:19:56] [PASSED] inactive-inactive-inactive
[16:19:56] ============== [PASSED] xe_rtp_process_tests ===============
[16:19:56] ===================== [PASSED] xe_rtp ======================
[16:19:56] ==================== xe_wa (1 subtest) =====================
[16:19:56] ======================== xe_wa_gt =========================
[16:19:56] [PASSED] TIGERLAKE B0
[16:19:56] [PASSED] DG1 A0
[16:19:56] [PASSED] DG1 B0
[16:19:56] [PASSED] ALDERLAKE_S A0
[16:19:56] [PASSED] ALDERLAKE_S B0
[16:19:56] [PASSED] ALDERLAKE_S C0
[16:19:56] [PASSED] ALDERLAKE_S D0
[16:19:56] [PASSED] ALDERLAKE_P A0
[16:19:56] [PASSED] ALDERLAKE_P B0
[16:19:56] [PASSED] ALDERLAKE_P C0
[16:19:56] [PASSED] ALDERLAKE_S RPLS D0
[16:19:56] [PASSED] ALDERLAKE_P RPLU E0
[16:19:56] [PASSED] DG2 G10 C0
[16:19:56] [PASSED] DG2 G11 B1
[16:19:56] [PASSED] DG2 G12 A1
[16:19:56] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[16:19:56] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[16:19:56] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[16:19:56] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[16:19:56] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[16:19:56] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[16:19:56] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[16:19:56] ==================== [PASSED] xe_wa_gt =====================
[16:19:56] ====================== [PASSED] xe_wa ======================
[16:19:56] ============================================================
[16:19:56] Testing complete. Ran 742 tests: passed: 724, skipped: 18
[16:19:56] Elapsed time: 35.828s total, 1.824s configuring, 33.339s building, 0.637s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[16:19:56] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:19:58] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[16:20:22] Starting KUnit Kernel (1/1)...
[16:20:22] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:20:22] ============ drm_test_pick_cmdline (2 subtests) ============
[16:20:22] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[16:20:22] =============== drm_test_pick_cmdline_named ===============
[16:20:22] [PASSED] NTSC
[16:20:22] [PASSED] NTSC-J
[16:20:22] [PASSED] PAL
[16:20:22] [PASSED] PAL-M
[16:20:22] =========== [PASSED] drm_test_pick_cmdline_named ===========
[16:20:22] ============== [PASSED] drm_test_pick_cmdline ==============
[16:20:22] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[16:20:22] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[16:20:22] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[16:20:22] =========== drm_validate_clone_mode (2 subtests) ===========
[16:20:22] ============== drm_test_check_in_clone_mode ===============
[16:20:22] [PASSED] in_clone_mode
[16:20:22] [PASSED] not_in_clone_mode
[16:20:22] ========== [PASSED] drm_test_check_in_clone_mode ===========
[16:20:22] =============== drm_test_check_valid_clones ===============
[16:20:22] [PASSED] not_in_clone_mode
[16:20:22] [PASSED] valid_clone
[16:20:22] [PASSED] invalid_clone
[16:20:22] =========== [PASSED] drm_test_check_valid_clones ===========
[16:20:22] ============= [PASSED] drm_validate_clone_mode =============
[16:20:22] ============= drm_validate_modeset (1 subtest) =============
[16:20:22] [PASSED] drm_test_check_connector_changed_modeset
[16:20:22] ============== [PASSED] drm_validate_modeset ===============
[16:20:22] ====== drm_test_bridge_get_current_state (1 subtest) =======
[16:20:22] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[16:20:22] ======== [PASSED] drm_test_bridge_get_current_state ========
[16:20:22] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[16:20:22] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[16:20:22] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[16:20:22] [PASSED] drm_test_drm_bridge_helper_hdmi_output_bus_fmts
[16:20:22] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[16:20:22] ============== drm_bridge_alloc (2 subtests) ===============
[16:20:22] [PASSED] drm_test_drm_bridge_alloc_basic
[16:20:22] [PASSED] drm_test_drm_bridge_alloc_get_put
[16:20:22] ================ [PASSED] drm_bridge_alloc =================
[16:20:22] ============= drm_bridge_bus_fmt (5 subtests) ==============
[16:20:22] [PASSED] drm_test_bridge_rgb_yuv_rgb
[16:20:22] [PASSED] drm_test_bridge_must_convert_to_yuv444
[16:20:22] [PASSED] drm_test_bridge_hdmi_auto_rgb
[16:20:22] [PASSED] drm_test_bridge_auto_first
[16:20:22] [PASSED] drm_test_bridge_rgb_yuv_no_path
[16:20:22] =============== [PASSED] drm_bridge_bus_fmt ================
[16:20:22] ============= drm_cmdline_parser (40 subtests) =============
[16:20:22] [PASSED] drm_test_cmdline_force_d_only
[16:20:22] [PASSED] drm_test_cmdline_force_D_only_dvi
[16:20:22] [PASSED] drm_test_cmdline_force_D_only_hdmi
[16:20:22] [PASSED] drm_test_cmdline_force_D_only_not_digital
[16:20:22] [PASSED] drm_test_cmdline_force_e_only
[16:20:22] [PASSED] drm_test_cmdline_res
[16:20:22] [PASSED] drm_test_cmdline_res_vesa
[16:20:22] [PASSED] drm_test_cmdline_res_vesa_rblank
[16:20:22] [PASSED] drm_test_cmdline_res_rblank
[16:20:22] [PASSED] drm_test_cmdline_res_bpp
[16:20:22] [PASSED] drm_test_cmdline_res_refresh
[16:20:22] [PASSED] drm_test_cmdline_res_bpp_refresh
[16:20:22] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[16:20:22] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[16:20:22] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[16:20:22] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[16:20:22] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[16:20:22] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[16:20:22] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[16:20:22] [PASSED] drm_test_cmdline_res_margins_force_on
[16:20:22] [PASSED] drm_test_cmdline_res_vesa_margins
[16:20:22] [PASSED] drm_test_cmdline_name
[16:20:22] [PASSED] drm_test_cmdline_name_bpp
[16:20:22] [PASSED] drm_test_cmdline_name_option
[16:20:22] [PASSED] drm_test_cmdline_name_bpp_option
[16:20:22] [PASSED] drm_test_cmdline_rotate_0
[16:20:22] [PASSED] drm_test_cmdline_rotate_90
[16:20:22] [PASSED] drm_test_cmdline_rotate_180
[16:20:22] [PASSED] drm_test_cmdline_rotate_270
[16:20:22] [PASSED] drm_test_cmdline_hmirror
[16:20:22] [PASSED] drm_test_cmdline_vmirror
[16:20:22] [PASSED] drm_test_cmdline_margin_options
[16:20:22] [PASSED] drm_test_cmdline_multiple_options
[16:20:22] [PASSED] drm_test_cmdline_bpp_extra_and_option
[16:20:22] [PASSED] drm_test_cmdline_extra_and_option
[16:20:22] [PASSED] drm_test_cmdline_freestanding_options
[16:20:22] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[16:20:22] [PASSED] drm_test_cmdline_panel_orientation
[16:20:22] ================ drm_test_cmdline_invalid =================
[16:20:22] [PASSED] margin_only
[16:20:22] [PASSED] interlace_only
[16:20:22] [PASSED] res_missing_x
[16:20:22] [PASSED] res_missing_y
[16:20:22] [PASSED] res_bad_y
[16:20:22] [PASSED] res_missing_y_bpp
[16:20:22] [PASSED] res_bad_bpp
[16:20:22] [PASSED] res_bad_refresh
[16:20:22] [PASSED] res_bpp_refresh_force_on_off
[16:20:22] [PASSED] res_invalid_mode
[16:20:22] [PASSED] res_bpp_wrong_place_mode
[16:20:22] [PASSED] name_bpp_refresh
[16:20:22] [PASSED] name_refresh
[16:20:22] [PASSED] name_refresh_wrong_mode
[16:20:22] [PASSED] name_refresh_invalid_mode
[16:20:22] [PASSED] rotate_multiple
[16:20:22] [PASSED] rotate_invalid_val
[16:20:22] [PASSED] rotate_truncated
[16:20:22] [PASSED] invalid_option
[16:20:22] [PASSED] invalid_tv_option
[16:20:22] [PASSED] truncated_tv_option
[16:20:22] ============ [PASSED] drm_test_cmdline_invalid =============
[16:20:22] =============== drm_test_cmdline_tv_options ===============
[16:20:22] [PASSED] NTSC
[16:20:22] [PASSED] NTSC_443
[16:20:22] [PASSED] NTSC_J
[16:20:22] [PASSED] PAL
[16:20:22] [PASSED] PAL_M
[16:20:22] [PASSED] PAL_N
[16:20:22] [PASSED] SECAM
[16:20:22] [PASSED] MONO_525
[16:20:22] [PASSED] MONO_625
[16:20:22] =========== [PASSED] drm_test_cmdline_tv_options ===========
[16:20:22] =============== [PASSED] drm_cmdline_parser ================
[16:20:22] ========== drmm_connector_hdmi_init (20 subtests) ==========
[16:20:22] [PASSED] drm_test_connector_hdmi_init_valid
[16:20:22] [PASSED] drm_test_connector_hdmi_init_bpc_8
[16:20:22] [PASSED] drm_test_connector_hdmi_init_bpc_10
[16:20:22] [PASSED] drm_test_connector_hdmi_init_bpc_12
[16:20:22] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[16:20:22] [PASSED] drm_test_connector_hdmi_init_bpc_null
[16:20:22] [PASSED] drm_test_connector_hdmi_init_formats_empty
[16:20:22] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[16:20:22] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[16:20:22] [PASSED] supported_formats=0x9 yuv420_allowed=1
[16:20:22] [PASSED] supported_formats=0x9 yuv420_allowed=0
[16:20:22] [PASSED] supported_formats=0x5 yuv420_allowed=1
[16:20:22] [PASSED] supported_formats=0x5 yuv420_allowed=0
[16:20:22] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[16:20:22] [PASSED] drm_test_connector_hdmi_init_null_ddc
[16:20:22] [PASSED] drm_test_connector_hdmi_init_null_product
[16:20:22] [PASSED] drm_test_connector_hdmi_init_null_vendor
[16:20:22] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[16:20:22] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[16:20:22] [PASSED] drm_test_connector_hdmi_init_product_valid
[16:20:22] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[16:20:22] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[16:20:22] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[16:20:22] ========= drm_test_connector_hdmi_init_type_valid =========
[16:20:22] [PASSED] HDMI-A
[16:20:22] [PASSED] HDMI-B
[16:20:22] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[16:20:22] ======== drm_test_connector_hdmi_init_type_invalid ========
[16:20:22] [PASSED] Unknown
[16:20:22] [PASSED] VGA
[16:20:22] [PASSED] DVI-I
[16:20:22] [PASSED] DVI-D
[16:20:22] [PASSED] DVI-A
[16:20:22] [PASSED] Composite
[16:20:22] [PASSED] SVIDEO
[16:20:22] [PASSED] LVDS
[16:20:22] [PASSED] Component
[16:20:22] [PASSED] DIN
[16:20:22] [PASSED] DP
[16:20:22] [PASSED] TV
[16:20:22] [PASSED] eDP
[16:20:22] [PASSED] Virtual
[16:20:22] [PASSED] DSI
[16:20:22] [PASSED] DPI
[16:20:22] [PASSED] Writeback
[16:20:22] [PASSED] SPI
[16:20:22] [PASSED] USB
[16:20:22] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[16:20:22] ============ [PASSED] drmm_connector_hdmi_init =============
[16:20:22] ============= drmm_connector_init (3 subtests) =============
[16:20:22] [PASSED] drm_test_drmm_connector_init
[16:20:22] [PASSED] drm_test_drmm_connector_init_null_ddc
[16:20:22] ========= drm_test_drmm_connector_init_type_valid =========
[16:20:22] [PASSED] Unknown
[16:20:22] [PASSED] VGA
[16:20:22] [PASSED] DVI-I
[16:20:22] [PASSED] DVI-D
[16:20:22] [PASSED] DVI-A
[16:20:22] [PASSED] Composite
[16:20:22] [PASSED] SVIDEO
[16:20:22] [PASSED] LVDS
[16:20:22] [PASSED] Component
[16:20:22] [PASSED] DIN
[16:20:22] [PASSED] DP
[16:20:22] [PASSED] HDMI-A
[16:20:22] [PASSED] HDMI-B
[16:20:22] [PASSED] TV
[16:20:22] [PASSED] eDP
[16:20:22] [PASSED] Virtual
[16:20:22] [PASSED] DSI
[16:20:22] [PASSED] DPI
[16:20:22] [PASSED] Writeback
[16:20:22] [PASSED] SPI
[16:20:22] [PASSED] USB
[16:20:22] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[16:20:22] =============== [PASSED] drmm_connector_init ===============
[16:20:22] ========= drm_connector_dynamic_init (6 subtests) ==========
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_init
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_init_properties
[16:20:22] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[16:20:22] [PASSED] Unknown
[16:20:22] [PASSED] VGA
[16:20:22] [PASSED] DVI-I
[16:20:22] [PASSED] DVI-D
[16:20:22] [PASSED] DVI-A
[16:20:22] [PASSED] Composite
[16:20:22] [PASSED] SVIDEO
[16:20:22] [PASSED] LVDS
[16:20:22] [PASSED] Component
[16:20:22] [PASSED] DIN
[16:20:22] [PASSED] DP
[16:20:22] [PASSED] HDMI-A
[16:20:22] [PASSED] HDMI-B
[16:20:22] [PASSED] TV
[16:20:22] [PASSED] eDP
[16:20:22] [PASSED] Virtual
[16:20:22] [PASSED] DSI
[16:20:22] [PASSED] DPI
[16:20:22] [PASSED] Writeback
[16:20:22] [PASSED] SPI
[16:20:22] [PASSED] USB
[16:20:22] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[16:20:22] ======== drm_test_drm_connector_dynamic_init_name =========
[16:20:22] [PASSED] Unknown
[16:20:22] [PASSED] VGA
[16:20:22] [PASSED] DVI-I
[16:20:22] [PASSED] DVI-D
[16:20:22] [PASSED] DVI-A
[16:20:22] [PASSED] Composite
[16:20:22] [PASSED] SVIDEO
[16:20:22] [PASSED] LVDS
[16:20:22] [PASSED] Component
[16:20:22] [PASSED] DIN
[16:20:22] [PASSED] DP
[16:20:22] [PASSED] HDMI-A
[16:20:22] [PASSED] HDMI-B
[16:20:22] [PASSED] TV
[16:20:22] [PASSED] eDP
[16:20:22] [PASSED] Virtual
[16:20:22] [PASSED] DSI
[16:20:22] [PASSED] DPI
[16:20:22] [PASSED] Writeback
[16:20:22] [PASSED] SPI
[16:20:22] [PASSED] USB
[16:20:22] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[16:20:22] =========== [PASSED] drm_connector_dynamic_init ============
[16:20:22] ==== drm_connector_dynamic_register_early (4 subtests) =====
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[16:20:22] ====== [PASSED] drm_connector_dynamic_register_early =======
[16:20:22] ======= drm_connector_dynamic_register (7 subtests) ========
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[16:20:22] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[16:20:22] ========= [PASSED] drm_connector_dynamic_register ==========
[16:20:22] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[16:20:22] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[16:20:22] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[16:20:22] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[16:20:22] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[16:20:22] ========== drm_test_get_tv_mode_from_name_valid ===========
[16:20:22] [PASSED] NTSC
[16:20:22] [PASSED] NTSC-443
[16:20:22] [PASSED] NTSC-J
[16:20:22] [PASSED] PAL
[16:20:22] [PASSED] PAL-M
[16:20:22] [PASSED] PAL-N
[16:20:22] [PASSED] SECAM
[16:20:22] [PASSED] Mono
[16:20:22] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[16:20:22] [PASSED] drm_test_get_tv_mode_from_name_truncated
[16:20:22] ============ [PASSED] drm_get_tv_mode_from_name ============
[16:20:22] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[16:20:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[16:20:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[16:20:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[16:20:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[16:20:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[16:20:22] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[16:20:22] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[16:20:22] [PASSED] VIC 96
[16:20:22] [PASSED] VIC 97
[16:20:22] [PASSED] VIC 101
[16:20:22] [PASSED] VIC 102
[16:20:22] [PASSED] VIC 106
[16:20:22] [PASSED] VIC 107
[16:20:22] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[16:20:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[16:20:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[16:20:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[16:20:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[16:20:22] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[16:20:22] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[16:20:22] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[16:20:22] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[16:20:22] [PASSED] Automatic
[16:20:22] [PASSED] Full
[16:20:22] [PASSED] Limited 16:235
[16:20:22] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[16:20:22] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[16:20:22] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[16:20:22] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[16:20:22] === drm_test_drm_hdmi_connector_get_output_format_name ====
[16:20:22] [PASSED] RGB
[16:20:22] [PASSED] YUV 4:2:0
[16:20:22] [PASSED] YUV 4:2:2
[16:20:22] [PASSED] YUV 4:4:4
[16:20:22] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[16:20:22] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[16:20:22] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[16:20:22] ============= drm_damage_helper (21 subtests) ==============
[16:20:22] [PASSED] drm_test_damage_iter_no_damage
[16:20:22] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[16:20:22] [PASSED] drm_test_damage_iter_no_damage_src_moved
[16:20:22] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[16:20:22] [PASSED] drm_test_damage_iter_no_damage_not_visible
[16:20:22] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[16:20:22] [PASSED] drm_test_damage_iter_no_damage_no_fb
[16:20:22] [PASSED] drm_test_damage_iter_simple_damage
[16:20:22] [PASSED] drm_test_damage_iter_single_damage
[16:20:22] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[16:20:22] [PASSED] drm_test_damage_iter_single_damage_outside_src
[16:20:22] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[16:20:22] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[16:20:22] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[16:20:22] [PASSED] drm_test_damage_iter_single_damage_src_moved
[16:20:22] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[16:20:22] [PASSED] drm_test_damage_iter_damage
[16:20:22] [PASSED] drm_test_damage_iter_damage_one_intersect
[16:20:22] [PASSED] drm_test_damage_iter_damage_one_outside
[16:20:22] [PASSED] drm_test_damage_iter_damage_src_moved
[16:20:22] [PASSED] drm_test_damage_iter_damage_not_visible
[16:20:22] ================ [PASSED] drm_damage_helper ================
[16:20:22] ============== drm_dp_mst_helper (3 subtests) ==============
[16:20:22] ============== drm_test_dp_mst_calc_pbn_mode ==============
[16:20:22] [PASSED] Clock 154000 BPP 30 DSC disabled
[16:20:22] [PASSED] Clock 234000 BPP 30 DSC disabled
[16:20:22] [PASSED] Clock 297000 BPP 24 DSC disabled
[16:20:22] [PASSED] Clock 332880 BPP 24 DSC enabled
[16:20:22] [PASSED] Clock 324540 BPP 24 DSC enabled
[16:20:22] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[16:20:22] ============== drm_test_dp_mst_calc_pbn_div ===============
[16:20:22] [PASSED] Link rate 2000000 lane count 4
[16:20:22] [PASSED] Link rate 2000000 lane count 2
[16:20:22] [PASSED] Link rate 2000000 lane count 1
[16:20:22] [PASSED] Link rate 1350000 lane count 4
[16:20:22] [PASSED] Link rate 1350000 lane count 2
[16:20:22] [PASSED] Link rate 1350000 lane count 1
[16:20:22] [PASSED] Link rate 1000000 lane count 4
[16:20:22] [PASSED] Link rate 1000000 lane count 2
[16:20:22] [PASSED] Link rate 1000000 lane count 1
[16:20:22] [PASSED] Link rate 810000 lane count 4
[16:20:22] [PASSED] Link rate 810000 lane count 2
[16:20:22] [PASSED] Link rate 810000 lane count 1
[16:20:22] [PASSED] Link rate 540000 lane count 4
[16:20:22] [PASSED] Link rate 540000 lane count 2
[16:20:22] [PASSED] Link rate 540000 lane count 1
[16:20:22] [PASSED] Link rate 270000 lane count 4
[16:20:22] [PASSED] Link rate 270000 lane count 2
[16:20:22] [PASSED] Link rate 270000 lane count 1
[16:20:22] [PASSED] Link rate 162000 lane count 4
[16:20:22] [PASSED] Link rate 162000 lane count 2
[16:20:22] [PASSED] Link rate 162000 lane count 1
[16:20:22] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[16:20:22] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[16:20:22] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[16:20:22] [PASSED] DP_POWER_UP_PHY with port number
[16:20:22] [PASSED] DP_POWER_DOWN_PHY with port number
[16:20:22] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[16:20:22] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[16:20:22] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[16:20:22] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[16:20:22] [PASSED] DP_QUERY_PAYLOAD with port number
[16:20:22] [PASSED] DP_QUERY_PAYLOAD with VCPI
[16:20:22] [PASSED] DP_REMOTE_DPCD_READ with port number
[16:20:22] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[16:20:22] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[16:20:22] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[16:20:22] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[16:20:22] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[16:20:22] [PASSED] DP_REMOTE_I2C_READ with port number
[16:20:22] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[16:20:22] [PASSED] DP_REMOTE_I2C_READ with transactions array
[16:20:22] [PASSED] DP_REMOTE_I2C_WRITE with port number
[16:20:22] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[16:20:22] [PASSED] DP_REMOTE_I2C_WRITE with data array
[16:20:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[16:20:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[16:20:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[16:20:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[16:20:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[16:20:22] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[16:20:22] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[16:20:22] ================ [PASSED] drm_dp_mst_helper ================
[16:20:22] ================== drm_exec (7 subtests) ===================
[16:20:22] [PASSED] sanitycheck
[16:20:22] [PASSED] test_lock
[16:20:22] [PASSED] test_lock_unlock
[16:20:22] [PASSED] test_duplicates
[16:20:22] [PASSED] test_prepare
[16:20:22] [PASSED] test_prepare_array
[16:20:22] [PASSED] test_multiple_loops
[16:20:22] ==================== [PASSED] drm_exec =====================
[16:20:22] =========== drm_format_helper_test (17 subtests) ===========
[16:20:22] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[16:20:22] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[16:20:22] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[16:20:22] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[16:20:22] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[16:20:22] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[16:20:22] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[16:20:22] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[16:20:22] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[16:20:22] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[16:20:22] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[16:20:22] ============== drm_test_fb_xrgb8888_to_mono ===============
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[16:20:22] ==================== drm_test_fb_swab =====================
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ================ [PASSED] drm_test_fb_swab =================
[16:20:22] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[16:20:22] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[16:20:22] [PASSED] single_pixel_source_buffer
[16:20:22] [PASSED] single_pixel_clip_rectangle
[16:20:22] [PASSED] well_known_colors
[16:20:22] [PASSED] destination_pitch
[16:20:22] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[16:20:22] ================= drm_test_fb_clip_offset =================
[16:20:22] [PASSED] pass through
[16:20:22] [PASSED] horizontal offset
[16:20:22] [PASSED] vertical offset
[16:20:22] [PASSED] horizontal and vertical offset
[16:20:22] [PASSED] horizontal offset (custom pitch)
[16:20:22] [PASSED] vertical offset (custom pitch)
[16:20:22] [PASSED] horizontal and vertical offset (custom pitch)
[16:20:22] ============= [PASSED] drm_test_fb_clip_offset =============
[16:20:22] =================== drm_test_fb_memcpy ====================
[16:20:22] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[16:20:22] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[16:20:22] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[16:20:22] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[16:20:22] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[16:20:22] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[16:20:22] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[16:20:22] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[16:20:22] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[16:20:22] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[16:20:22] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[16:20:22] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[16:20:22] =============== [PASSED] drm_test_fb_memcpy ================
[16:20:22] ============= [PASSED] drm_format_helper_test ==============
[16:20:22] ================= drm_format (18 subtests) =================
[16:20:22] [PASSED] drm_test_format_block_width_invalid
[16:20:22] [PASSED] drm_test_format_block_width_one_plane
[16:20:22] [PASSED] drm_test_format_block_width_two_plane
[16:20:22] [PASSED] drm_test_format_block_width_three_plane
[16:20:22] [PASSED] drm_test_format_block_width_tiled
[16:20:22] [PASSED] drm_test_format_block_height_invalid
[16:20:22] [PASSED] drm_test_format_block_height_one_plane
[16:20:22] [PASSED] drm_test_format_block_height_two_plane
[16:20:22] [PASSED] drm_test_format_block_height_three_plane
[16:20:22] [PASSED] drm_test_format_block_height_tiled
[16:20:22] [PASSED] drm_test_format_min_pitch_invalid
[16:20:22] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[16:20:22] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[16:20:22] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[16:20:22] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[16:20:22] [PASSED] drm_test_format_min_pitch_two_plane
[16:20:22] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[16:20:22] [PASSED] drm_test_format_min_pitch_tiled
[16:20:22] =================== [PASSED] drm_format ====================
[16:20:22] ============== drm_framebuffer (10 subtests) ===============
[16:20:22] ========== drm_test_framebuffer_check_src_coords ==========
[16:20:22] [PASSED] Success: source fits into fb
[16:20:22] [PASSED] Fail: overflowing fb with x-axis coordinate
[16:20:22] [PASSED] Fail: overflowing fb with y-axis coordinate
[16:20:22] [PASSED] Fail: overflowing fb with source width
[16:20:22] [PASSED] Fail: overflowing fb with source height
[16:20:22] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[16:20:22] [PASSED] drm_test_framebuffer_cleanup
[16:20:22] =============== drm_test_framebuffer_create ===============
[16:20:22] [PASSED] ABGR8888 normal sizes
[16:20:22] [PASSED] ABGR8888 max sizes
[16:20:22] [PASSED] ABGR8888 pitch greater than min required
[16:20:22] [PASSED] ABGR8888 pitch less than min required
[16:20:22] [PASSED] ABGR8888 Invalid width
[16:20:22] [PASSED] ABGR8888 Invalid buffer handle
[16:20:22] [PASSED] No pixel format
[16:20:22] [PASSED] ABGR8888 Width 0
[16:20:22] [PASSED] ABGR8888 Height 0
[16:20:22] [PASSED] ABGR8888 Out of bound height * pitch combination
[16:20:22] [PASSED] ABGR8888 Large buffer offset
[16:20:22] [PASSED] ABGR8888 Buffer offset for inexistent plane
[16:20:22] [PASSED] ABGR8888 Invalid flag
[16:20:22] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[16:20:22] [PASSED] ABGR8888 Valid buffer modifier
[16:20:22] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[16:20:22] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[16:20:22] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[16:20:22] [PASSED] NV12 Normal sizes
[16:20:22] [PASSED] NV12 Max sizes
[16:20:22] [PASSED] NV12 Invalid pitch
[16:20:22] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[16:20:22] [PASSED] NV12 different modifier per-plane
[16:20:22] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[16:20:22] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[16:20:22] [PASSED] NV12 Modifier for inexistent plane
[16:20:22] [PASSED] NV12 Handle for inexistent plane
[16:20:22] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[16:20:22] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[16:20:22] [PASSED] YVU420 Normal sizes
[16:20:22] [PASSED] YVU420 Max sizes
[16:20:22] [PASSED] YVU420 Invalid pitch
[16:20:22] [PASSED] YVU420 Different pitches
[16:20:22] [PASSED] YVU420 Different buffer offsets/pitches
[16:20:22] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[16:20:22] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[16:20:22] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[16:20:22] [PASSED] YVU420 Valid modifier
[16:20:22] [PASSED] YVU420 Different modifiers per plane
[16:20:22] [PASSED] YVU420 Modifier for inexistent plane
[16:20:22] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[16:20:22] [PASSED] X0L2 Normal sizes
[16:20:22] [PASSED] X0L2 Max sizes
[16:20:22] [PASSED] X0L2 Invalid pitch
[16:20:22] [PASSED] X0L2 Pitch greater than minimum required
[16:20:22] [PASSED] X0L2 Handle for inexistent plane
[16:20:22] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[16:20:22] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[16:20:22] [PASSED] X0L2 Valid modifier
[16:20:22] [PASSED] X0L2 Modifier for inexistent plane
[16:20:22] =========== [PASSED] drm_test_framebuffer_create ===========
[16:20:22] [PASSED] drm_test_framebuffer_free
[16:20:22] [PASSED] drm_test_framebuffer_init
[16:20:22] [PASSED] drm_test_framebuffer_init_bad_format
[16:20:22] [PASSED] drm_test_framebuffer_init_dev_mismatch
[16:20:22] [PASSED] drm_test_framebuffer_lookup
[16:20:22] [PASSED] drm_test_framebuffer_lookup_inexistent
[16:20:22] [PASSED] drm_test_framebuffer_modifiers_not_supported
[16:20:22] ================= [PASSED] drm_framebuffer =================
[16:20:22] ================ drm_gem_shmem (8 subtests) ================
[16:20:22] [PASSED] drm_gem_shmem_test_obj_create
[16:20:22] [PASSED] drm_gem_shmem_test_obj_create_private
[16:20:22] [PASSED] drm_gem_shmem_test_pin_pages
[16:20:22] [PASSED] drm_gem_shmem_test_vmap
[16:20:22] [PASSED] drm_gem_shmem_test_get_sg_table
[16:20:22] [PASSED] drm_gem_shmem_test_get_pages_sgt
[16:20:22] [PASSED] drm_gem_shmem_test_madvise
[16:20:22] [PASSED] drm_gem_shmem_test_purge
[16:20:22] ================== [PASSED] drm_gem_shmem ==================
[16:20:22] === drm_atomic_helper_connector_hdmi_check (29 subtests) ===
[16:20:22] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[16:20:22] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[16:20:22] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[16:20:22] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[16:20:22] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[16:20:22] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[16:20:22] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[16:20:22] [PASSED] Automatic
[16:20:22] [PASSED] Full
[16:20:22] [PASSED] Limited 16:235
[16:20:22] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[16:20:22] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[16:20:22] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[16:20:22] [PASSED] drm_test_check_disable_connector
[16:20:22] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[16:20:22] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[16:20:22] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[16:20:22] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[16:20:22] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[16:20:22] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[16:20:22] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[16:20:22] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[16:20:22] [PASSED] drm_test_check_output_bpc_dvi
[16:20:22] [PASSED] drm_test_check_output_bpc_format_vic_1
[16:20:22] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[16:20:22] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[16:20:22] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[16:20:22] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[16:20:22] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[16:20:22] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[16:20:22] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[16:20:22] ============ drm_test_check_hdmi_color_format =============
[16:20:22] [PASSED] AUTO -> RGB
[16:20:22] [PASSED] YCBCR422 -> YUV422
[16:20:22] [PASSED] YCBCR420 -> YUV420
[16:20:22] [PASSED] YCBCR444 -> YUV444
[16:20:22] [PASSED] RGB -> RGB
[16:20:22] ======== [PASSED] drm_test_check_hdmi_color_format =========
[16:20:22] ======== drm_test_check_hdmi_color_format_420_only ========
[16:20:22] [PASSED] RGB should fail
[16:20:22] [PASSED] YUV444 should fail
[16:20:22] [PASSED] YUV422 should fail
[16:20:22] [PASSED] YUV420 should work
[16:20:22] ==== [PASSED] drm_test_check_hdmi_color_format_420_only ====
[16:20:22] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[16:20:22] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[16:20:22] [PASSED] drm_test_check_broadcast_rgb_value
[16:20:22] [PASSED] drm_test_check_bpc_8_value
[16:20:22] [PASSED] drm_test_check_bpc_10_value
[16:20:22] [PASSED] drm_test_check_bpc_12_value
[16:20:22] [PASSED] drm_test_check_format_value
[16:20:22] [PASSED] drm_test_check_tmds_char_value
[16:20:22] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[16:20:22] = drm_atomic_helper_connector_hdmi_mode_valid (7 subtests) =
[16:20:22] [PASSED] drm_test_check_mode_valid
[16:20:22] [PASSED] drm_test_check_mode_valid_reject
[16:20:22] [PASSED] drm_test_check_mode_valid_reject_rate
[16:20:22] [PASSED] drm_test_check_mode_valid_reject_max_clock
[16:20:22] [PASSED] drm_test_check_mode_valid_yuv420_only_max_clock
[16:20:22] [PASSED] drm_test_check_mode_valid_reject_yuv420_only_connector
[16:20:22] [PASSED] drm_test_check_mode_valid_accept_yuv420_also_connector_rgb
[16:20:22] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[16:20:22] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[16:20:22] [PASSED] drm_test_check_infoframes
[16:20:22] [PASSED] drm_test_check_reject_avi_infoframe
[16:20:22] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[16:20:22] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[16:20:22] [PASSED] drm_test_check_reject_audio_infoframe
[16:20:22] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[16:20:22] ================= drm_managed (2 subtests) =================
[16:20:22] [PASSED] drm_test_managed_release_action
[16:20:22] [PASSED] drm_test_managed_run_action
[16:20:22] =================== [PASSED] drm_managed ===================
[16:20:22] =================== drm_mm (6 subtests) ====================
[16:20:22] [PASSED] drm_test_mm_init
[16:20:22] [PASSED] drm_test_mm_debug
[16:20:22] [PASSED] drm_test_mm_align32
[16:20:22] [PASSED] drm_test_mm_align64
[16:20:22] [PASSED] drm_test_mm_lowest
[16:20:22] [PASSED] drm_test_mm_highest
[16:20:22] ===================== [PASSED] drm_mm ======================
[16:20:22] ============= drm_modes_analog_tv (5 subtests) =============
[16:20:22] [PASSED] drm_test_modes_analog_tv_mono_576i
[16:20:22] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[16:20:22] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[16:20:22] [PASSED] drm_test_modes_analog_tv_pal_576i
[16:20:22] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[16:20:22] =============== [PASSED] drm_modes_analog_tv ===============
[16:20:22] ============== drm_plane_helper (2 subtests) ===============
[16:20:22] =============== drm_test_check_plane_state ================
[16:20:22] [PASSED] clipping_simple
[16:20:22] [PASSED] clipping_rotate_reflect
[16:20:22] [PASSED] positioning_simple
[16:20:22] [PASSED] upscaling
[16:20:22] [PASSED] downscaling
[16:20:22] [PASSED] rounding1
[16:20:22] [PASSED] rounding2
[16:20:22] [PASSED] rounding3
[16:20:22] [PASSED] rounding4
[16:20:22] =========== [PASSED] drm_test_check_plane_state ============
[16:20:22] =========== drm_test_check_invalid_plane_state ============
[16:20:22] [PASSED] positioning_invalid
[16:20:22] [PASSED] upscaling_invalid
[16:20:22] [PASSED] downscaling_invalid
[16:20:22] ======= [PASSED] drm_test_check_invalid_plane_state ========
[16:20:22] ================ [PASSED] drm_plane_helper =================
[16:20:22] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[16:20:22] ====== drm_test_connector_helper_tv_get_modes_check =======
[16:20:22] [PASSED] None
[16:20:22] [PASSED] PAL
[16:20:22] [PASSED] NTSC
[16:20:22] [PASSED] Both, NTSC Default
[16:20:22] [PASSED] Both, PAL Default
[16:20:22] [PASSED] Both, NTSC Default, with PAL on command-line
[16:20:22] [PASSED] Both, PAL Default, with NTSC on command-line
[16:20:22] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[16:20:22] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[16:20:22] ================== drm_rect (9 subtests) ===================
[16:20:22] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[16:20:22] [PASSED] drm_test_rect_clip_scaled_not_clipped
[16:20:22] [PASSED] drm_test_rect_clip_scaled_clipped
[16:20:22] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[16:20:22] ================= drm_test_rect_intersect =================
[16:20:22] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[16:20:22] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[16:20:22] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[16:20:22] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[16:20:22] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[16:20:22] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[16:20:22] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[16:20:22] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[16:20:22] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[16:20:22] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[16:20:22] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[16:20:22] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[16:20:22] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[16:20:22] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[16:20:22] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[16:20:22] ============= [PASSED] drm_test_rect_intersect =============
[16:20:22] ================ drm_test_rect_calc_hscale ================
[16:20:22] [PASSED] normal use
[16:20:22] [PASSED] out of max range
[16:20:22] [PASSED] out of min range
[16:20:22] [PASSED] zero dst
[16:20:22] [PASSED] negative src
[16:20:22] [PASSED] negative dst
[16:20:22] ============ [PASSED] drm_test_rect_calc_hscale ============
[16:20:22] ================ drm_test_rect_calc_vscale ================
[16:20:22] [PASSED] normal use
[16:20:22] [PASSED] out of max range
[16:20:22] [PASSED] out of min range
[16:20:22] [PASSED] zero dst
[16:20:22] [PASSED] negative src
[16:20:22] [PASSED] negative dst
[16:20:22] ============ [PASSED] drm_test_rect_calc_vscale ============
[16:20:22] ================== drm_test_rect_rotate ===================
[16:20:22] [PASSED] reflect-x
[16:20:22] [PASSED] reflect-y
[16:20:22] [PASSED] rotate-0
[16:20:22] [PASSED] rotate-90
[16:20:22] [PASSED] rotate-180
[16:20:22] [PASSED] rotate-270
[16:20:22] ============== [PASSED] drm_test_rect_rotate ===============
[16:20:22] ================ drm_test_rect_rotate_inv =================
[16:20:22] [PASSED] reflect-x
[16:20:22] [PASSED] reflect-y
[16:20:22] [PASSED] rotate-0
[16:20:22] [PASSED] rotate-90
[16:20:22] [PASSED] rotate-180
[16:20:22] [PASSED] rotate-270
[16:20:22] ============ [PASSED] drm_test_rect_rotate_inv =============
[16:20:22] ==================== [PASSED] drm_rect =====================
[16:20:22] ============ drm_sysfb_modeset_test (1 subtest) ============
[16:20:22] ============ drm_test_sysfb_build_fourcc_list =============
[16:20:22] [PASSED] no native formats
[16:20:22] [PASSED] XRGB8888 as native format
[16:20:22] [PASSED] remove duplicates
[16:20:22] [PASSED] convert alpha formats
[16:20:22] [PASSED] random formats
[16:20:22] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[16:20:22] ============= [PASSED] drm_sysfb_modeset_test ==============
[16:20:22] ================== drm_fixp (2 subtests) ===================
[16:20:22] [PASSED] drm_test_int2fixp
[16:20:22] [PASSED] drm_test_sm2fixp
[16:20:22] ==================== [PASSED] drm_fixp =====================
[16:20:22] ============================================================
[16:20:22] Testing complete. Ran 637 tests: passed: 637
[16:20:22] Elapsed time: 26.233s total, 1.825s configuring, 24.243s building, 0.147s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[16:20:23] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:20:24] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[16:20:34] Starting KUnit Kernel (1/1)...
[16:20:34] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:20:34] ================= ttm_device (5 subtests) ==================
[16:20:34] [PASSED] ttm_device_init_basic
[16:20:34] [PASSED] ttm_device_init_multiple
[16:20:34] [PASSED] ttm_device_fini_basic
[16:20:34] [PASSED] ttm_device_init_no_vma_man
[16:20:34] ================== ttm_device_init_pools ==================
[16:20:34] [PASSED] No DMA allocations, no DMA32 required
[16:20:34] [PASSED] DMA allocations, DMA32 required
[16:20:34] [PASSED] No DMA allocations, DMA32 required
[16:20:34] [PASSED] DMA allocations, no DMA32 required
[16:20:34] ============== [PASSED] ttm_device_init_pools ==============
[16:20:34] =================== [PASSED] ttm_device ====================
[16:20:34] ================== ttm_pool (8 subtests) ===================
[16:20:34] ================== ttm_pool_alloc_basic ===================
[16:20:34] [PASSED] One page
[16:20:34] [PASSED] More than one page
[16:20:34] [PASSED] Above the allocation limit
[16:20:34] [PASSED] One page, with coherent DMA mappings enabled
[16:20:34] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[16:20:34] ============== [PASSED] ttm_pool_alloc_basic ===============
[16:20:34] ============== ttm_pool_alloc_basic_dma_addr ==============
[16:20:34] [PASSED] One page
[16:20:34] [PASSED] More than one page
[16:20:34] [PASSED] Above the allocation limit
[16:20:34] [PASSED] One page, with coherent DMA mappings enabled
[16:20:34] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[16:20:34] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[16:20:34] [PASSED] ttm_pool_alloc_order_caching_match
[16:20:34] [PASSED] ttm_pool_alloc_caching_mismatch
[16:20:34] [PASSED] ttm_pool_alloc_order_mismatch
[16:20:34] [PASSED] ttm_pool_free_dma_alloc
[16:20:34] [PASSED] ttm_pool_free_no_dma_alloc
[16:20:34] [PASSED] ttm_pool_fini_basic
[16:20:34] ==================== [PASSED] ttm_pool =====================
[16:20:34] ================ ttm_resource (8 subtests) =================
[16:20:34] ================= ttm_resource_init_basic =================
[16:20:34] [PASSED] Init resource in TTM_PL_SYSTEM
[16:20:34] [PASSED] Init resource in TTM_PL_VRAM
[16:20:34] [PASSED] Init resource in a private placement
[16:20:34] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[16:20:34] ============= [PASSED] ttm_resource_init_basic =============
[16:20:34] [PASSED] ttm_resource_init_pinned
[16:20:34] [PASSED] ttm_resource_fini_basic
[16:20:34] [PASSED] ttm_resource_manager_init_basic
[16:20:34] [PASSED] ttm_resource_manager_usage_basic
[16:20:34] [PASSED] ttm_resource_manager_set_used_basic
[16:20:34] [PASSED] ttm_sys_man_alloc_basic
[16:20:34] [PASSED] ttm_sys_man_free_basic
[16:20:34] ================== [PASSED] ttm_resource ===================
[16:20:34] =================== ttm_tt (15 subtests) ===================
[16:20:34] ==================== ttm_tt_init_basic ====================
[16:20:34] [PASSED] Page-aligned size
[16:20:34] [PASSED] Extra pages requested
[16:20:34] ================ [PASSED] ttm_tt_init_basic ================
[16:20:34] [PASSED] ttm_tt_init_misaligned
[16:20:34] [PASSED] ttm_tt_fini_basic
[16:20:34] [PASSED] ttm_tt_fini_sg
[16:20:34] [PASSED] ttm_tt_fini_shmem
[16:20:34] [PASSED] ttm_tt_create_basic
[16:20:34] [PASSED] ttm_tt_create_invalid_bo_type
[16:20:34] [PASSED] ttm_tt_create_ttm_exists
[16:20:34] [PASSED] ttm_tt_create_failed
[16:20:34] [PASSED] ttm_tt_destroy_basic
[16:20:34] [PASSED] ttm_tt_populate_null_ttm
[16:20:34] [PASSED] ttm_tt_populate_populated_ttm
[16:20:34] [PASSED] ttm_tt_unpopulate_basic
[16:20:34] [PASSED] ttm_tt_unpopulate_empty_ttm
[16:20:34] [PASSED] ttm_tt_swapin_basic
[16:20:34] ===================== [PASSED] ttm_tt ======================
[16:20:34] =================== ttm_bo (14 subtests) ===================
[16:20:34] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[16:20:34] [PASSED] Cannot be interrupted and sleeps
[16:20:34] [PASSED] Cannot be interrupted, locks straight away
[16:20:34] [PASSED] Can be interrupted, sleeps
[16:20:34] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[16:20:34] [PASSED] ttm_bo_reserve_locked_no_sleep
[16:20:34] [PASSED] ttm_bo_reserve_no_wait_ticket
[16:20:34] [PASSED] ttm_bo_reserve_double_resv
[16:20:34] [PASSED] ttm_bo_reserve_interrupted
[16:20:34] [PASSED] ttm_bo_reserve_deadlock
[16:20:34] [PASSED] ttm_bo_unreserve_basic
[16:20:34] [PASSED] ttm_bo_unreserve_pinned
[16:20:34] [PASSED] ttm_bo_unreserve_bulk
[16:20:34] [PASSED] ttm_bo_fini_basic
[16:20:34] [PASSED] ttm_bo_fini_shared_resv
[16:20:34] [PASSED] ttm_bo_pin_basic
[16:20:34] [PASSED] ttm_bo_pin_unpin_resource
[16:20:34] [PASSED] ttm_bo_multiple_pin_one_unpin
[16:20:34] ===================== [PASSED] ttm_bo ======================
[16:20:34] ============== ttm_bo_validate (22 subtests) ===============
[16:20:34] ============== ttm_bo_init_reserved_sys_man ===============
[16:20:34] [PASSED] Buffer object for userspace
[16:20:34] [PASSED] Kernel buffer object
[16:20:34] [PASSED] Shared buffer object
[16:20:34] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[16:20:34] ============== ttm_bo_init_reserved_mock_man ==============
[16:20:34] [PASSED] Buffer object for userspace
[16:20:34] [PASSED] Kernel buffer object
[16:20:34] [PASSED] Shared buffer object
[16:20:34] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[16:20:34] [PASSED] ttm_bo_init_reserved_resv
[16:20:34] ================== ttm_bo_validate_basic ==================
[16:20:34] [PASSED] Buffer object for userspace
[16:20:34] [PASSED] Kernel buffer object
[16:20:34] [PASSED] Shared buffer object
[16:20:34] ============== [PASSED] ttm_bo_validate_basic ==============
[16:20:34] [PASSED] ttm_bo_validate_invalid_placement
[16:20:34] ============= ttm_bo_validate_same_placement ==============
[16:20:34] [PASSED] System manager
[16:20:34] [PASSED] VRAM manager
[16:20:34] ========= [PASSED] ttm_bo_validate_same_placement ==========
[16:20:34] [PASSED] ttm_bo_validate_failed_alloc
[16:20:34] [PASSED] ttm_bo_validate_pinned
[16:20:34] [PASSED] ttm_bo_validate_busy_placement
[16:20:34] ================ ttm_bo_validate_multihop =================
[16:20:34] [PASSED] Buffer object for userspace
[16:20:34] [PASSED] Kernel buffer object
[16:20:34] [PASSED] Shared buffer object
[16:20:34] ============ [PASSED] ttm_bo_validate_multihop =============
[16:20:34] ========== ttm_bo_validate_no_placement_signaled ==========
[16:20:34] [PASSED] Buffer object in system domain, no page vector
[16:20:34] [PASSED] Buffer object in system domain with an existing page vector
[16:20:34] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[16:20:34] ======== ttm_bo_validate_no_placement_not_signaled ========
[16:20:34] [PASSED] Buffer object for userspace
[16:20:34] [PASSED] Kernel buffer object
[16:20:34] [PASSED] Shared buffer object
[16:20:34] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[16:20:34] [PASSED] ttm_bo_validate_move_fence_signaled
[16:20:35] ========= ttm_bo_validate_move_fence_not_signaled =========
[16:20:35] [PASSED] Waits for GPU
[16:20:35] [PASSED] Tries to lock straight away
[16:20:35] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[16:20:35] [PASSED] ttm_bo_validate_swapout
[16:20:35] [PASSED] ttm_bo_validate_happy_evict
[16:20:35] [PASSED] ttm_bo_validate_all_pinned_evict
[16:20:35] [PASSED] ttm_bo_validate_allowed_only_evict
[16:20:35] [PASSED] ttm_bo_validate_deleted_evict
[16:20:35] [PASSED] ttm_bo_validate_busy_domain_evict
[16:20:35] [PASSED] ttm_bo_validate_evict_gutting
[16:20:35] [PASSED] ttm_bo_validate_recrusive_evict
[16:20:35] ================= [PASSED] ttm_bo_validate =================
[16:20:35] ============================================================
[16:20:35] Testing complete. Ran 102 tests: passed: 102
[16:20:35] Elapsed time: 11.915s total, 1.802s configuring, 9.898s building, 0.186s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/dma-buf/.kunitconfig
[16:20:35] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[16:20: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
[16:20:45] Starting KUnit Kernel (1/1)...
[16:20:45] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[16:20:45] =============== dma-buf-fence (12 subtests) ================
[16:20:45] [PASSED] test_sanitycheck
[16:20:45] [PASSED] test_signaling
[16:20:45] [PASSED] test_add_callback
[16:20:45] [PASSED] test_late_add_callback
[16:20:45] [PASSED] test_rm_callback
[16:20:45] [PASSED] test_late_rm_callback
[16:20:45] [PASSED] test_status
[16:20:45] [PASSED] test_error
[16:20:45] [PASSED] test_wait
[16:20:45] [PASSED] test_wait_timeout
[16:20:45] [PASSED] test_stub
[16:20:45] [SKIPPED] test_race_signal_callback (requires at least 2 CPUs)
[16:20:45] ================== [PASSED] dma-buf-fence ==================
[16:20:45] ============ dma-buf-fence-chain (11 subtests) =============
[16:20:45] [PASSED] test_sanitycheck
[16:20:45] [PASSED] test_find_seqno
[16:20:45] [PASSED] test_find_signaled
[16:20:45] [PASSED] test_find_out_of_order
[16:20:50] [PASSED] test_find_gap
[16:20:50] [PASSED] test_find_race
[16:20:50] [PASSED] test_signal_forward
[16:20:50] [PASSED] test_signal_backward
[16:20:50] [PASSED] test_wait_forward
[16:20:50] [PASSED] test_wait_backward
[16:20:50] [PASSED] test_wait_random
[16:20:50] =============== [PASSED] dma-buf-fence-chain ===============
[16:20:50] ============ dma-buf-fence-unwrap (10 subtests) ============
[16:20:50] [PASSED] test_sanitycheck
[16:20:50] [PASSED] test_unwrap_array
[16:20:50] [PASSED] test_unwrap_chain
[16:20:50] [PASSED] test_unwrap_chain_array
[16:20:50] [PASSED] test_unwrap_merge
[16:20:50] [PASSED] test_unwrap_merge_duplicate
[16:20:50] [PASSED] test_unwrap_merge_seqno
[16:20:50] [PASSED] test_unwrap_merge_order
[16:20:50] [PASSED] test_unwrap_merge_complex
[16:20:50] [PASSED] test_unwrap_merge_complex_seqno
[16:20:50] ============== [PASSED] dma-buf-fence-unwrap ===============
[16:20:50] ================ dma-buf-resv (5 subtests) =================
[16:20:50] [PASSED] test_sanitycheck
[16:20:50] ===================== test_signaling ======================
[16:20:50] [PASSED] kernel
[16:20:50] [PASSED] write
[16:20:50] [PASSED] read
[16:20:50] [PASSED] bookkeep
[16:20:50] ================= [PASSED] test_signaling ==================
[16:20:50] ====================== test_for_each ======================
[16:20:50] [PASSED] kernel
[16:20:50] [PASSED] write
[16:20:50] [PASSED] read
[16:20:50] [PASSED] bookkeep
[16:20:50] ================== [PASSED] test_for_each ==================
[16:20:50] ================= test_for_each_unlocked ==================
[16:20:50] [PASSED] kernel
[16:20:50] [PASSED] write
[16:20:50] [PASSED] read
[16:20:50] [PASSED] bookkeep
[16:20:50] ============= [PASSED] test_for_each_unlocked ==============
[16:20:50] ===================== test_get_fences =====================
[16:20:50] [PASSED] kernel
[16:20:50] [PASSED] write
[16:20:50] [PASSED] read
[16:20:50] [PASSED] bookkeep
[16:20:50] ================= [PASSED] test_get_fences =================
[16:20:50] ================== [PASSED] dma-buf-resv ===================
[16:20:50] ============================================================
[16:20:50] Testing complete. Ran 50 tests: passed: 49, skipped: 1
[16:20:50] Elapsed time: 15.754s total, 1.855s configuring, 8.527s building, 5.356s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 18+ messages in thread* ✓ Xe.CI.BAT: success for Vswing / Pre-emphasis Override (rev6)
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
` (9 preceding siblings ...)
2026-08-13 16:20 ` ✓ CI.KUnit: success " Patchwork
@ 2026-08-13 17:19 ` Patchwork
2026-08-13 19:16 ` ✓ Xe.CI.FULL: " Patchwork
2026-08-13 19:16 ` ✓ i915.CI.BAT: " Patchwork
12 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2026-08-13 17:19 UTC (permalink / raw)
To: Michał Grzelak; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 945 bytes --]
== Series Details ==
Series: Vswing / Pre-emphasis Override (rev6)
URL : https://patchwork.freedesktop.org/series/167570/
State : success
== Summary ==
CI Bug Log - changes from xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c_BAT -> xe-pw-167570v6_BAT
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (13 -> 12)
------------------------------
Missing (1): bat-nvls-1
Changes
-------
No changes found
Build changes
-------------
* Linux: xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c -> xe-pw-167570v6
IGT_9054: 3d819a8f511b2bcd844647bcf7e433b9407d058e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c: 8f48eda9bfa40ec5c0292d3983108a903106e20c
xe-pw-167570v6: 167570v6
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/index.html
[-- Attachment #2: Type: text/html, Size: 1493 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread* ✓ Xe.CI.FULL: success for Vswing / Pre-emphasis Override (rev6)
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
` (10 preceding siblings ...)
2026-08-13 17:19 ` ✓ Xe.CI.BAT: " Patchwork
@ 2026-08-13 19:16 ` Patchwork
2026-08-13 19:16 ` ✓ i915.CI.BAT: " Patchwork
12 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2026-08-13 19:16 UTC (permalink / raw)
To: Michał Grzelak; +Cc: intel-xe
[-- Attachment #1: Type: text/plain, Size: 22336 bytes --]
== Series Details ==
Series: Vswing / Pre-emphasis Override (rev6)
URL : https://patchwork.freedesktop.org/series/167570/
State : success
== Summary ==
CI Bug Log - changes from xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c_FULL -> xe-pw-167570v6_FULL
====================================================
Summary
-------
**SUCCESS**
No regressions found.
Participating hosts (2 -> 2)
------------------------------
No changes in participating hosts
Known issues
------------
Here are the changes found in xe-pw-167570v6_FULL that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@kms_async_flips@alternate-sync-async-flip:
- shard-bmg: NOTRUN -> [FAIL][1] ([Intel XE#3718] / [Intel XE#6078])
[1]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_async_flips@alternate-sync-async-flip.html
* igt@kms_async_flips@alternate-sync-async-flip@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][2] ([Intel XE#6078])
[2]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_async_flips@alternate-sync-async-flip@pipe-a-dp-2.html
* igt@kms_big_fb@linear-8bpp-rotate-90:
- shard-bmg: NOTRUN -> [SKIP][3] ([Intel XE#2327]) +2 other tests skip
[3]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_big_fb@linear-8bpp-rotate-90.html
* igt@kms_big_fb@yf-tiled-8bpp-rotate-180:
- shard-bmg: NOTRUN -> [SKIP][4] ([Intel XE#1124]) +1 other test skip
[4]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_big_fb@yf-tiled-8bpp-rotate-180.html
* igt@kms_bw@linear-tiling-4-displays-target-1920x1080p:
- shard-bmg: NOTRUN -> [SKIP][5] ([Intel XE#367])
[5]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_bw@linear-tiling-4-displays-target-1920x1080p.html
* igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs:
- shard-bmg: NOTRUN -> [SKIP][6] ([Intel XE#3432]) +1 other test skip
[6]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-7/igt@kms_ccs@crc-primary-suspend-y-tiled-gen12-mc-ccs.html
* igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc:
- shard-bmg: NOTRUN -> [SKIP][7] ([Intel XE#2887]) +4 other tests skip
[7]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_ccs@crc-sprite-planes-basic-4-tiled-dg2-rc-ccs-cc.html
* igt@kms_chamelium_color_pipeline@plane-lut1d-pre-ctm3x4:
- shard-bmg: NOTRUN -> [SKIP][8] ([Intel XE#7358]) +1 other test skip
[8]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-7/igt@kms_chamelium_color_pipeline@plane-lut1d-pre-ctm3x4.html
* igt@kms_chamelium_frames@hdmi-frame-dump:
- shard-bmg: NOTRUN -> [SKIP][9] ([Intel XE#2252])
[9]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_chamelium_frames@hdmi-frame-dump.html
* igt@kms_content_protection@atomic-dpms@pipe-a-dp-2:
- shard-bmg: NOTRUN -> [FAIL][10] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +1 other test fail
[10]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-7/igt@kms_content_protection@atomic-dpms@pipe-a-dp-2.html
* igt@kms_content_protection@uevent:
- shard-bmg: NOTRUN -> [FAIL][11] ([Intel XE#6707] / [Intel XE#7439]) +1 other test fail
[11]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_content_protection@uevent.html
* igt@kms_cursor_crc@cursor-onscreen-64x21:
- shard-bmg: NOTRUN -> [SKIP][12] ([Intel XE#2320])
[12]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_cursor_crc@cursor-onscreen-64x21.html
* igt@kms_cursor_crc@cursor-sliding-512x512:
- shard-bmg: NOTRUN -> [SKIP][13] ([Intel XE#2321] / [Intel XE#7355])
[13]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_cursor_crc@cursor-sliding-512x512.html
* igt@kms_dirtyfb@psr-dirtyfb-ioctl:
- shard-bmg: NOTRUN -> [SKIP][14] ([Intel XE#1508])
[14]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_dirtyfb@psr-dirtyfb-ioctl.html
* igt@kms_dsc@dsc-with-bpc-formats-bigjoiner:
- shard-bmg: NOTRUN -> [SKIP][15] ([Intel XE#8265]) +1 other test skip
[15]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_dsc@dsc-with-bpc-formats-bigjoiner.html
* igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area:
- shard-bmg: NOTRUN -> [SKIP][16] ([Intel XE#4422] / [Intel XE#7442])
[16]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-2/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-out-visible-area.html
* igt@kms_flip@flip-vs-expired-vblank@c-edp1:
- shard-lnl: [PASS][17] -> [FAIL][18] ([Intel XE#301] / [Intel XE#3149]) +2 other tests fail
[17]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
[18]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank@c-edp1.html
* igt@kms_flip@flip-vs-panning@c-dp2:
- shard-bmg: [PASS][19] -> [DMESG-WARN][20] ([Intel XE#7774]) +1 other test dmesg-warn
[19]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c/shard-bmg-10/igt@kms_flip@flip-vs-panning@c-dp2.html
[20]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-5/igt@kms_flip@flip-vs-panning@c-dp2.html
* igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling:
- shard-bmg: NOTRUN -> [SKIP][21] ([Intel XE#7178] / [Intel XE#7351]) +1 other test skip
[21]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-upscaling.html
* igt@kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw:
- shard-bmg: NOTRUN -> [SKIP][22] ([Intel XE#2311]) +20 other tests skip
[22]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_frontbuffer_tracking@drrs-2p-pri-indfb-multidraw.html
* igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff:
- shard-bmg: NOTRUN -> [SKIP][23] ([Intel XE#4141]) +1 other test skip
[23]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_frontbuffer_tracking@fbc-1p-primscrn-spr-indfb-onoff.html
* igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-spr-indfb-draw-mmap-wc:
- shard-bmg: NOTRUN -> [SKIP][24] ([Intel XE#2313]) +17 other tests skip
[24]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_frontbuffer_tracking@fbcpsrhdr-1p-primscrn-spr-indfb-draw-mmap-wc.html
* igt@kms_frontbuffer_tracking@psr-abgr161616f-draw-blt:
- shard-bmg: NOTRUN -> [SKIP][25] ([Intel XE#7061] / [Intel XE#7356]) +1 other test skip
[25]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_frontbuffer_tracking@psr-abgr161616f-draw-blt.html
* igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-render:
- shard-bmg: NOTRUN -> [SKIP][26] ([Intel XE#7061]) +3 other tests skip
[26]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_frontbuffer_tracking@psrhdr-argb161616f-draw-render.html
* igt@kms_joiner@invalid-modeset-ultra-joiner:
- shard-bmg: NOTRUN -> [SKIP][27] ([Intel XE#6911] / [Intel XE#7378])
[27]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_joiner@invalid-modeset-ultra-joiner.html
* igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping:
- shard-bmg: NOTRUN -> [SKIP][28] ([Intel XE#7283])
[28]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_plane@pixel-format-yf-tiled-ccs-modifier-source-clamping.html
* igt@kms_plane@planar-pixel-format-settings@nv12-tile4-src-y:
- shard-bmg: NOTRUN -> [SKIP][29] ([Intel XE#8076])
[29]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_plane@planar-pixel-format-settings@nv12-tile4-src-y.html
* igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5:
- shard-bmg: NOTRUN -> [SKIP][30] ([Intel XE#2763] / [Intel XE#6886]) +4 other tests skip
[30]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_plane_scaling@planes-upscale-factor-0-25-downscale-factor-0-5.html
* igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf:
- shard-bmg: NOTRUN -> [SKIP][31] ([Intel XE#1489]) +2 other tests skip
[31]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_psr2_sf@fbc-psr2-cursor-plane-move-continuous-sf.html
* igt@kms_psr@psr2-suspend:
- shard-bmg: NOTRUN -> [SKIP][32] ([Intel XE#2234] / [Intel XE#2850]) +3 other tests skip
[32]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_psr@psr2-suspend.html
* igt@kms_rotation_crc@sprite-rotation-90:
- shard-bmg: NOTRUN -> [SKIP][33] ([Intel XE#3904] / [Intel XE#7342])
[33]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@kms_rotation_crc@sprite-rotation-90.html
* igt@xe_compute@ccs-mode-basic:
- shard-bmg: NOTRUN -> [SKIP][34] ([Intel XE#6599])
[34]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@xe_compute@ccs-mode-basic.html
* igt@xe_evict@evict-beng-mixed-many-threads-small:
- shard-bmg: NOTRUN -> [INCOMPLETE][35] ([Intel XE#6321] / [Intel XE#8355])
[35]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-2/igt@xe_evict@evict-beng-mixed-many-threads-small.html
* igt@xe_exec_basic@multigpu-once-bindexecqueue-rebind:
- shard-bmg: NOTRUN -> [SKIP][36] ([Intel XE#2322] / [Intel XE#7372]) +2 other tests skip
[36]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-7/igt@xe_exec_basic@multigpu-once-bindexecqueue-rebind.html
* igt@xe_exec_fault_mode@many-multi-queue-rebind-prefetch:
- shard-bmg: NOTRUN -> [SKIP][37] ([Intel XE#8374]) +3 other tests skip
[37]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-7/igt@xe_exec_fault_mode@many-multi-queue-rebind-prefetch.html
* igt@xe_exec_multi_queue@max-queues-close-fd:
- shard-bmg: NOTRUN -> [SKIP][38] ([Intel XE#8364]) +4 other tests skip
[38]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@xe_exec_multi_queue@max-queues-close-fd.html
* igt@xe_exec_reset@cm-multi-queue-cat-error-on-secondary:
- shard-bmg: NOTRUN -> [SKIP][39] ([Intel XE#8369])
[39]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@xe_exec_reset@cm-multi-queue-cat-error-on-secondary.html
* igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate-race:
- shard-bmg: NOTRUN -> [SKIP][40] ([Intel XE#8378]) +4 other tests skip
[40]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@xe_exec_threads@threads-multi-queue-mixed-userptr-invalidate-race.html
* igt@xe_fault_injection@inject-fault-probe-function-xe_guc_relay_init:
- shard-bmg: [PASS][41] -> [ABORT][42] ([Intel XE#8007]) +1 other test abort
[41]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c/shard-bmg-1/igt@xe_fault_injection@inject-fault-probe-function-xe_guc_relay_init.html
[42]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-9/igt@xe_fault_injection@inject-fault-probe-function-xe_guc_relay_init.html
* igt@xe_multigpu_svm@mgpu-coherency-prefetch:
- shard-bmg: NOTRUN -> [SKIP][43] ([Intel XE#6964])
[43]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-7/igt@xe_multigpu_svm@mgpu-coherency-prefetch.html
* igt@xe_pat@xa-app-transient-media-on:
- shard-bmg: NOTRUN -> [SKIP][44] ([Intel XE#7590])
[44]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-2/igt@xe_pat@xa-app-transient-media-on.html
* igt@xe_pxp@pxp-termination-key-update-post-termination-irq:
- shard-bmg: NOTRUN -> [SKIP][45] ([Intel XE#4733] / [Intel XE#7417]) +2 other tests skip
[45]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@xe_pxp@pxp-termination-key-update-post-termination-irq.html
* igt@xe_sriov_scheduling@nonpreempt-engine-resets-low-priority@numvfs-random-gt0-rcs0:
- shard-bmg: NOTRUN -> [FAIL][46] ([Intel XE#7992]) +2 other tests fail
[46]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@xe_sriov_scheduling@nonpreempt-engine-resets-low-priority@numvfs-random-gt0-rcs0.html
* igt@xe_sriov_scheduling@nonpreempt-engine-resets-low-priority@numvfs-random-gt1-vcs0:
- shard-bmg: NOTRUN -> [FAIL][47] ([Intel XE#8340])
[47]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@xe_sriov_scheduling@nonpreempt-engine-resets-low-priority@numvfs-random-gt1-vcs0.html
#### Possible fixes ####
* igt@core_hotunplug@hotunplug-rescan:
- shard-bmg: [ABORT][48] ([Intel XE#8007]) -> [PASS][49]
[48]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c/shard-bmg-7/igt@core_hotunplug@hotunplug-rescan.html
[49]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-1/igt@core_hotunplug@hotunplug-rescan.html
* igt@kms_flip@2x-dpms-vs-vblank-race-interruptible@ac-dp2-hdmi-a3:
- shard-bmg: [FAIL][50] ([Intel XE#3098]) -> [PASS][51] +1 other test pass
[50]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c/shard-bmg-4/igt@kms_flip@2x-dpms-vs-vblank-race-interruptible@ac-dp2-hdmi-a3.html
[51]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-2/igt@kms_flip@2x-dpms-vs-vblank-race-interruptible@ac-dp2-hdmi-a3.html
* igt@kms_flip@flip-vs-expired-vblank@a-edp1:
- shard-lnl: [FAIL][52] ([Intel XE#301]) -> [PASS][53]
[52]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
[53]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank@a-edp1.html
* igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-indfb-msflip-blt:
- shard-bmg: [ABORT][54] ([Intel XE#8906]) -> [PASS][55]
[54]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c/shard-bmg-4/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-indfb-msflip-blt.html
[55]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-2/igt@kms_frontbuffer_tracking@fbchdr-2p-scndscrn-indfb-msflip-blt.html
* igt@kms_hdr@invalid-hdr:
- shard-bmg: [SKIP][56] ([Intel XE#1503]) -> [PASS][57]
[56]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c/shard-bmg-10/igt@kms_hdr@invalid-hdr.html
[57]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-7/igt@kms_hdr@invalid-hdr.html
* igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_render0:
- shard-bmg: [FAIL][58] ([Intel XE#8555]) -> [PASS][59] +1 other test pass
[58]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c/shard-bmg-5/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_render0.html
[59]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-8/igt@xe_pmu@engine-activity-accuracy-90@engine-drm_xe_engine_class_render0.html
#### Warnings ####
* igt@kms_flip@flip-vs-expired-vblank:
- shard-lnl: [FAIL][60] ([Intel XE#301]) -> [FAIL][61] ([Intel XE#301] / [Intel XE#3149])
[60]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c/shard-lnl-4/igt@kms_flip@flip-vs-expired-vblank.html
[61]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-lnl-7/igt@kms_flip@flip-vs-expired-vblank.html
* igt@kms_tiled_display@basic-test-pattern-with-chamelium:
- shard-bmg: [SKIP][62] ([Intel XE#2509] / [Intel XE#7437]) -> [SKIP][63] ([Intel XE#2426] / [Intel XE#5848])
[62]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c/shard-bmg-4/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[63]: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/shard-bmg-2/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
[Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
[Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
[Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
[Intel XE#1503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1503
[Intel XE#1508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1508
[Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
[Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
[Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
[Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
[Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
[Intel XE#2321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2321
[Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
[Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
[Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
[Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
[Intel XE#2763]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2763
[Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
[Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
[Intel XE#301]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/301
[Intel XE#3098]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3098
[Intel XE#3149]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3149
[Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
[Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
[Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
[Intel XE#3718]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3718
[Intel XE#3904]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3904
[Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
[Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
[Intel XE#4733]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4733
[Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
[Intel XE#6078]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6078
[Intel XE#6321]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6321
[Intel XE#6599]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6599
[Intel XE#6707]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6707
[Intel XE#6886]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6886
[Intel XE#6911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6911
[Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
[Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
[Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
[Intel XE#7283]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7283
[Intel XE#7342]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7342
[Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
[Intel XE#7355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7355
[Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
[Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
[Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
[Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
[Intel XE#7378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7378
[Intel XE#7417]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7417
[Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
[Intel XE#7439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7439
[Intel XE#7442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7442
[Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
[Intel XE#7774]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7774
[Intel XE#7992]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7992
[Intel XE#8007]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8007
[Intel XE#8076]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8076
[Intel XE#8265]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8265
[Intel XE#8340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8340
[Intel XE#8355]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8355
[Intel XE#8364]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8364
[Intel XE#8369]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8369
[Intel XE#8374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8374
[Intel XE#8378]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8378
[Intel XE#8555]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8555
[Intel XE#8906]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/8906
Build changes
-------------
* Linux: xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c -> xe-pw-167570v6
IGT_9054: 3d819a8f511b2bcd844647bcf7e433b9407d058e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
xe-5592-8f48eda9bfa40ec5c0292d3983108a903106e20c: 8f48eda9bfa40ec5c0292d3983108a903106e20c
xe-pw-167570v6: 167570v6
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/xe-pw-167570v6/index.html
[-- Attachment #2: Type: text/html, Size: 24432 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread* ✓ i915.CI.BAT: success for Vswing / Pre-emphasis Override (rev6)
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
` (11 preceding siblings ...)
2026-08-13 19:16 ` ✓ Xe.CI.FULL: " Patchwork
@ 2026-08-13 19:16 ` Patchwork
12 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2026-08-13 19:16 UTC (permalink / raw)
To: Michał Grzelak; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 1087 bytes --]
== Series Details ==
Series: Vswing / Pre-emphasis Override (rev6)
URL : https://patchwork.freedesktop.org/series/167571/
State : success
== Summary ==
CI Bug Log - changes from CI_DRM_18994 -> Patchwork_167571v6
====================================================
Summary
-------
**SUCCESS**
No regressions found.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_167571v6/index.html
Participating hosts (37 -> 35)
------------------------------
Missing (2): bat-dg2-13 fi-snb-2520m
Changes
-------
No changes found
Build changes
-------------
* Linux: CI_DRM_18994 -> Patchwork_167571v6
CI-20190529: 20190529
CI_DRM_18994: 12a74df2314c42325731297e95b9aafd9329a20d @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_9054: 3d819a8f511b2bcd844647bcf7e433b9407d058e @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_167571v6: 12a74df2314c42325731297e95b9aafd9329a20d @ git://anongit.freedesktop.org/gfx-ci/linux
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_167571v6/index.html
[-- Attachment #2: Type: text/html, Size: 1652 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2026-08-13 19:16 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-13 16:09 [PATCH v11 0/8] Vswing / Pre-emphasis Override Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 1/8] drm/i915/bios: search for VBT #57 by default Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 2/8] drm/i915/bios: store VBT #57's metadata in intel_vbt_data Michał Grzelak
2026-08-13 16:20 ` sashiko-bot
2026-08-13 16:09 ` [PATCH v11 3/8] drm/i915/bios: print VS/PE-O port info Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 4/8] drm/i915/bios: de/allocate VS/PE-O buffers for each port Michał Grzelak
2026-08-13 16:17 ` sashiko-bot
2026-08-13 16:09 ` [PATCH v11 5/8] drm/i915/buf_trans: add vfunc for VS/PE-O Michał Grzelak
2026-08-13 16:09 ` [PATCH v11 6/8] drm/i915: override Snps's VS/PE when requested Michał Grzelak
2026-08-13 16:29 ` sashiko-bot
2026-08-13 16:09 ` [PATCH v11 7/8] drm/i915: override Combo's " Michał Grzelak
2026-08-13 16:50 ` sashiko-bot
2026-08-13 16:09 ` [PATCH v11 8/8] drm/i915/bios: remove VS/PE-O warning Michał Grzelak
2026-08-13 16:18 ` ✗ CI.checkpatch: warning for Vswing / Pre-emphasis Override (rev6) Patchwork
2026-08-13 16:20 ` ✓ CI.KUnit: success " Patchwork
2026-08-13 17:19 ` ✓ Xe.CI.BAT: " Patchwork
2026-08-13 19:16 ` ✓ Xe.CI.FULL: " Patchwork
2026-08-13 19:16 ` ✓ i915.CI.BAT: " Patchwork
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.