## KMS Tests KMS Tests — Mode setting tests |

## Programs

kms_3d |
kms_addfb |
kms_cursor_crc |
kms_fbc_crc |
kms_fence_pin_leak |
kms_flip |
kms_flip_event_leak |
kms_flip_tiling |
kms_force_connector |
kms_mmio_vs_cs_flip |
kms_pipe_crc_basic |
kms_plane |
kms_psr_sink_crc |
kms_pwrite_crc |
kms_render |
kms_rotation_crc |
kms_setmode |
kms_sink_crc_basic |
kms_sysfs_edid_timing |
kms_universal_plane |

## Description

### kms_3d

Tests 3D mode setting.

### kms_addfb

#### Subtests

no-handle
normal
bad-pitch-0
bad-pitch-32
bad-pitch-63
bad-pitch-128
bad-pitch-256
bad-pitch-1024
bad-pitch-999
bad-pitch-65536
X-tiled
framebuffer-vs-set-tiling
tile-pitch-mismatch
Y-tiled
size-max
too-wide
too-high
bo-too-small
small-bo
bo-too-small-due-to-tiling

### kms_cursor_crc

Use the display CRC support to validate cursor plane functionality. The test will position the cursor plane either fully onscreen, partially onscreen, or fully offscreen, using either a fully opaque or fully transparent surface. In each case it then reads the PF CRC and compares it with the CRC value obtained when the cursor plane was disabled.

#### Subtests

cursor-size-change
cursor-64x64-onscreen
cursor-64x64-offscreen
cursor-64x64-sliding
cursor-64x64-random
cursor-64x21-onscreen
cursor-64x21-offscreen
cursor-64x21-sliding
cursor-64x21-random
cursor-128x128-onscreen
cursor-128x128-offscreen
cursor-128x128-sliding
cursor-128x128-random
cursor-128x42-onscreen
cursor-128x42-offscreen
cursor-128x42-sliding
cursor-128x42-random
cursor-256x256-onscreen
cursor-256x256-offscreen
cursor-256x256-sliding
cursor-256x256-random
cursor-256x85-onscreen
cursor-256x85-offscreen
cursor-256x85-sliding
cursor-256x85-random
cursor-512x512-onscreen
cursor-512x512-offscreen
cursor-512x512-sliding
cursor-512x512-random
cursor-512x170-onscreen
cursor-512x170-offscreen
cursor-512x170-sliding
cursor-512x170-random

### kms_fbc_crc

Performs various write operations to the scanout buffer while FBC is enabled. CRC checks will be used to make sure the modifications to scanout buffer are detected.

#### Subtests

page_flip
mmap_cpu
mmap_gtt
blt
render
context
page_flip_and_mmap_cpu
page_flip_and_mmap_gtt
page_flip_and_blt
page_flip_and_render
page_flip_and_context

### kms_fence_pin_leak

Exercises full ppgtt fence pin_count leak in the kernel.

### kms_flip

#### Subtests

nonblocking-read
wf_vblank
2x-wf_vblank
wf_vblank-ts-check
2x-wf_vblank-ts-check
blocking-wf_vblank
2x-blocking-wf_vblank
absolute-wf_vblank
2x-absolute-wf_vblank
blocking-absolute-wf_vblank
2x-blocking-absolute-wf_vblank
wf_vblank-vs-dpms
2x-wf_vblank-vs-dpms
bcs-wf_vblank-vs-dpms
2x-bcs-wf_vblank-vs-dpms
rcs-wf_vblank-vs-dpms
2x-rcs-wf_vblank-vs-dpms
wf_vblank-vs-modeset
2x-wf_vblank-vs-modeset
bcs-wf_vblank-vs-modeset
2x-bcs-wf_vblank-vs-modeset
rcs-wf_vblank-vs-modeset
2x-rcs-wf_vblank-vs-modeset
plain-flip
2x-plain-flip
busy-flip
2x-busy-flip
flip-vs-fences
2x-flip-vs-fences
plain-flip-ts-check
2x-plain-flip-ts-check
plain-flip-fb-recreate
2x-plain-flip-fb-recreate
flip-vs-rmfb
2x-flip-vs-rmfb
flip-vs-dpms
2x-flip-vs-dpms
bcs-flip-vs-dpms
2x-bcs-flip-vs-dpms
rcs-flip-vs-dpms
2x-rcs-flip-vs-dpms
flip-vs-panning
2x-flip-vs-panning
bcs-flip-vs-panning
2x-bcs-flip-vs-panning
rcs-flip-vs-panning
2x-rcs-flip-vs-panning
flip-vs-modeset
2x-flip-vs-modeset
bcs-flip-vs-modeset
2x-bcs-flip-vs-modeset
rcs-flip-vs-modeset
2x-rcs-flip-vs-modeset
flip-vs-expired-vblank
2x-flip-vs-expired-vblank
flip-vs-absolute-wf_vblank
2x-flip-vs-absolute-wf_vblank
flip-vs-wf_vblank
2x-flip-vs-wf_vblank
flip-vs-blocking-wf-vblank
2x-flip-vs-blocking-wf-vblank
flip-vs-modeset-vs-hang
2x-flip-vs-modeset-vs-hang
flip-vs-panning-vs-hang
2x-flip-vs-panning-vs-hang
vblank-vs-hang
2x-vblank-vs-hang
flip-vs-bad-tiling
2x-flip-vs-bad-tiling
flip-vs-dpms-off-vs-modeset
2x-flip-vs-dpms-off-vs-modeset
single-buffer-flip-vs-dpms-off-vs-modeset
2x-single-buffer-flip-vs-dpms-off-vs-modeset
dpms-off-confusion
nonexisting-fb
2x-nonexisting-fb
dpms-vs-vblank-race
2x-dpms-vs-vblank-race
modeset-vs-vblank-race
2x-modeset-vs-vblank-race
vblank-vs-dpms-rpm
vblank-vs-modeset-rpm
vblank-vs-dpms-suspend
2x-vblank-vs-dpms-suspend
vblank-vs-modeset-suspend
2x-vblank-vs-modeset-suspend
vblank-vs-suspend
2x-vblank-vs-suspend
bo-too-big
wf_vblank-interruptible
2x-wf_vblank-interruptible
wf_vblank-ts-check-interruptible
2x-wf_vblank-ts-check-interruptible
absolute-wf_vblank-interruptible
2x-absolute-wf_vblank-interruptible
blocking-absolute-wf_vblank-interruptible
2x-blocking-absolute-wf_vblank-interruptible
wf_vblank-vs-dpms-interruptible
2x-wf_vblank-vs-dpms-interruptible
bcs-wf_vblank-vs-dpms-interruptible
2x-bcs-wf_vblank-vs-dpms-interruptible
rcs-wf_vblank-vs-dpms-interruptible
2x-rcs-wf_vblank-vs-dpms-interruptible
wf_vblank-vs-modeset-interruptible
2x-wf_vblank-vs-modeset-interruptible
bcs-wf_vblank-vs-modeset-interruptible
2x-bcs-wf_vblank-vs-modeset-interruptible
rcs-wf_vblank-vs-modeset-interruptible
2x-rcs-wf_vblank-vs-modeset-interruptible
plain-flip-interruptible
2x-plain-flip-interruptible
busy-flip-interruptible
2x-busy-flip-interruptible
flip-vs-fences-interruptible
2x-flip-vs-fences-interruptible
plain-flip-ts-check-interruptible
2x-plain-flip-ts-check-interruptible
plain-flip-fb-recreate-interruptible
2x-plain-flip-fb-recreate-interruptible
flip-vs-rmfb-interruptible
2x-flip-vs-rmfb-interruptible
flip-vs-dpms-interruptible
2x-flip-vs-dpms-interruptible
bcs-flip-vs-dpms-interruptible
2x-bcs-flip-vs-dpms-interruptible
rcs-flip-vs-dpms-interruptible
2x-rcs-flip-vs-dpms-interruptible
flip-vs-panning-interruptible
2x-flip-vs-panning-interruptible
bcs-flip-vs-panning-interruptible
2x-bcs-flip-vs-panning-interruptible
rcs-flip-vs-panning-interruptible
2x-rcs-flip-vs-panning-interruptible
flip-vs-modeset-interruptible
2x-flip-vs-modeset-interruptible
bcs-flip-vs-modeset-interruptible
2x-bcs-flip-vs-modeset-interruptible
rcs-flip-vs-modeset-interruptible
2x-rcs-flip-vs-modeset-interruptible
flip-vs-expired-vblank-interruptible
2x-flip-vs-expired-vblank-interruptible
flip-vs-absolute-wf_vblank-interruptible
2x-flip-vs-absolute-wf_vblank-interruptible
flip-vs-wf_vblank-interruptible
2x-flip-vs-wf_vblank-interruptible
flip-vs-modeset-vs-hang-interruptible
2x-flip-vs-modeset-vs-hang-interruptible
flip-vs-panning-vs-hang-interruptible
2x-flip-vs-panning-vs-hang-interruptible
vblank-vs-hang-interruptible
2x-vblank-vs-hang-interruptible
flip-vs-bad-tiling-interruptible
2x-flip-vs-bad-tiling-interruptible
flip-vs-dpms-off-vs-modeset-interruptible
2x-flip-vs-dpms-off-vs-modeset-interruptible
single-buffer-flip-vs-dpms-off-vs-modeset-interruptible
2x-single-buffer-flip-vs-dpms-off-vs-modeset-interruptible
dpms-off-confusion-interruptible
nonexisting-fb-interruptible
2x-nonexisting-fb-interruptible
dpms-vs-vblank-race-interruptible
2x-dpms-vs-vblank-race-interruptible
modeset-vs-vblank-race-interruptible
2x-modeset-vs-vblank-race-interruptible
vblank-vs-dpms-rpm-interruptible
vblank-vs-modeset-rpm-interruptible
vblank-vs-dpms-suspend-interruptible
2x-vblank-vs-dpms-suspend-interruptible
vblank-vs-modeset-suspend-interruptible
2x-vblank-vs-modeset-suspend-interruptible
vblank-vs-suspend-interruptible
2x-vblank-vs-suspend-interruptible
bo-too-big-interruptible

### kms_flip_event_leak

This test tries to provoke the kernel into leaking a pending page flip event when the fd is closed before the flip has completed. The test itself won't fail even if the kernel leaks the event, but the resulting dmesg WARN will indicate a failure.

### kms_flip_tiling

Test that a page flip from a tiled buffer to a linear one works correctly.

#### Subtests

flip-changes-tiling

### kms_force_connector

Check the debugfs force connector/edid features work correctly.

#### Subtests

force-connector-state
force-edid

### kms_mmio_vs_cs_flip

#### Subtests

setplane_vs_cs_flip
setcrtc_vs_cs_flip

### kms_pipe_crc_basic

#### Subtests

bad-pipe
bad-source
bad-nb-words-1
bad-nb-words-3
read-crc-pipe-A
read-crc-pipe-A-frame-sequence
suspend-read-crc-pipe-A
hang-read-crc-pipe-A
read-crc-pipe-B
read-crc-pipe-B-frame-sequence
suspend-read-crc-pipe-B
hang-read-crc-pipe-B
read-crc-pipe-C
read-crc-pipe-C-frame-sequence
suspend-read-crc-pipe-C
hang-read-crc-pipe-C

### kms_plane

#### Subtests

plane-position-covered-pipe-A-plane-1
plane-position-hole-pipe-A-plane-1
plane-panning-top-left-pipe-A-plane-1
plane-panning-bottom-right-pipe-A-plane-1
plane-position-covered-pipe-A-plane-2
plane-position-hole-pipe-A-plane-2
plane-panning-top-left-pipe-A-plane-2
plane-panning-bottom-right-pipe-A-plane-2
plane-position-covered-pipe-A-plane-3
plane-position-hole-pipe-A-plane-3
plane-panning-top-left-pipe-A-plane-3
plane-panning-bottom-right-pipe-A-plane-3
plane-position-covered-pipe-B-plane-1
plane-position-hole-pipe-B-plane-1
plane-panning-top-left-pipe-B-plane-1
plane-panning-bottom-right-pipe-B-plane-1
plane-position-covered-pipe-B-plane-2
plane-position-hole-pipe-B-plane-2
plane-panning-top-left-pipe-B-plane-2
plane-panning-bottom-right-pipe-B-plane-2
plane-position-covered-pipe-B-plane-3
plane-position-hole-pipe-B-plane-3
plane-panning-top-left-pipe-B-plane-3
plane-panning-bottom-right-pipe-B-plane-3
plane-position-covered-pipe-C-plane-1
plane-position-hole-pipe-C-plane-1
plane-panning-top-left-pipe-C-plane-1
plane-panning-bottom-right-pipe-C-plane-1
plane-position-covered-pipe-C-plane-2
plane-position-hole-pipe-C-plane-2
plane-panning-top-left-pipe-C-plane-2
plane-panning-bottom-right-pipe-C-plane-2
plane-position-covered-pipe-C-plane-3
plane-position-hole-pipe-C-plane-3
plane-panning-top-left-pipe-C-plane-3
plane-panning-bottom-right-pipe-C-plane-3

### kms_psr_sink_crc

#### Subtests

primary_page_flip
primary_mmap_gtt
primary_mmap_gtt_waiting
primary_mmap_cpu
primary_blt
primary_render
sprite_mmap_gtt
sprite_mmap_gtt_waiting
sprite_mmap_cpu
sprite_blt
sprite_render
sprite_plane_move
sprite_plane_onoff
cursor_mmap_gtt
cursor_mmap_gtt_waiting
cursor_mmap_cpu
cursor_blt
cursor_render
cursor_plane_move
cursor_plane_onoff

### kms_pwrite_crc

Use the display CRC support to validate pwrite to an already uncached future scanout buffer.

### kms_render

#### Subtests

direct-render
gpu-blit

### kms_rotation_crc

#### Subtests

primary-rotation
sprite-rotation
cursor-rotation

### kms_setmode

#### Subtests

clone-single-crtc
invalid-clone-single-crtc
invalid-clone-exclusive-crtc
clone-exclusive-crtc

### kms_sink_crc_basic

### kms_sysfs_edid_timing

### kms_universal_plane

#### Subtests