## GEM Tests GEM Tests — Tests for the graphics execution manager |

## Programs

gem_bad_reloc |
gem_basic |
gem_busy |
gem_caching |
gem_close |
gem_close_race |
gem_concurrent_blit |
gem_cpu_reloc |
gem_create |
gem_cs_prefetch |
gem_cs_tlb |
gem_ctx_bad_destroy |
gem_ctx_bad_exec |
gem_ctx_create |
gem_ctx_exec |
gem_ctx_param |
gem_ctx_switch |
gem_ctx_thrash |
gem_double_irq_loop |
gem_eio |
gem_evict_alignment |
gem_evict_everything |
gem_exec_alignment |
gem_exec_async |
gem_exec_await |
gem_exec_bad_domains |
gem_exec_basic |
gem_exec_big |
gem_exec_blt |
gem_exec_capture |
gem_exec_create |
gem_exec_faulting_reloc |
gem_exec_fence |
gem_exec_flush |
gem_exec_gttfill |
gem_exec_latency |
gem_exec_lut_handle |
gem_exec_nop |
gem_exec_parallel |
gem_exec_params |
gem_exec_parse |
gem_exec_reloc |
gem_exec_reuse |
gem_exec_schedule |
gem_exec_store |
gem_exec_suspend |
gem_exec_whisper |
gem_fd_exhaustion |
gem_fenced_exec_thrash |
gem_fence_thrash |
gem_fence_upload |
gem_flink_basic |
gem_flink_race |
gem_gpgpu_fill |
gem_gtt_cpu_tlb |
gem_gtt_hog |
gem_gtt_speed |
gem_largeobject |
gem_linear_blits |
gem_lut_handle |
gem_madvise |
gem_media_fill |
gem_mmap |
gem_mmap_gtt |
gem_mmap_offset_exhaustion |
gem_mmap_wc |
gem_mocs_settings |
gem_partial_pwrite_pread |
gem_persistent_relocs |
gem_pipe_control_store_loop |
gem_ppgtt |
gem_pread |
gem_pread_after_blit |
gem_pwrite |
gem_pwrite_pread |
gem_pwrite_snooped |
gem_read_read_speed |
gem_readwrite |
gem_reg_read |
gem_reloc_overflow |
gem_reloc_vs_gpu |
gem_render_copy |
gem_render_copy_redux |
gem_render_linear_blits |
gem_render_tiled_blits |
gem_request_retire |
gem_reset_stats |
gem_ringfill |
gem_ring_sync_copy |
gem_ring_sync_loop |
gem_set_tiling_vs_blt |
gem_set_tiling_vs_gtt |
gem_set_tiling_vs_pwrite |
gem_shrink |
gem_softpin |
gem_spin_batch |
gem_stolen |
gem_storedw_batches_loop |
gem_storedw_loop |
gem_streaming_writes |
gem_sync |
gem_threaded_access_tiled |
gem_tiled_blits |
gem_tiled_fence_blits |
gem_tiled_partial_pwrite_pread |
gem_tiled_pread_basic |
gem_tiled_pread_pwrite |
gem_tiled_swapping |
gem_tiled_wb |
gem_tiled_wc |
gem_tiling_max_stride |
gem_unfence_active_buffers |
gem_unref_active_buffers |
gem_userptr_blits |
gem_wait |
gem_workarounds |
gem_write_read_ring_switch |

## Description

### gem_bad_reloc

Simulates SNA behaviour using negative self-relocations for STATE_BASE_ADDRESS command packets.

#### Subtests

negative-reloc-default
negative-reloc-lut-default
negative-reloc-render
negative-reloc-lut-render
negative-reloc-bsd
negative-reloc-lut-bsd
negative-reloc-bsd1
negative-reloc-lut-bsd1
negative-reloc-bsd2
negative-reloc-lut-bsd2
negative-reloc-blt
negative-reloc-lut-blt
negative-reloc-vebox
negative-reloc-lut-vebox
negative-reloc-bltcopy

### gem_basic

#### Subtests

bad-close
create-close
create-fd-close

### gem_busy

Basic check of busy-ioctl ABI.

#### Subtests

basic-busy-default
busy-render
busy-bsd
busy-bsd1
busy-bsd2
busy-blt
busy-vebox
extended-render
extended-bsd
extended-bsd1
extended-bsd2
extended-blt
extended-vebox
extended-parallel-render
extended-parallel-bsd
extended-parallel-bsd1
extended-parallel-bsd2
extended-parallel-blt
extended-parallel-vebox
extended-semaphore-render
extended-semaphore-bsd
extended-semaphore-bsd1
extended-semaphore-bsd2
extended-semaphore-blt
extended-semaphore-vebox
close-race
basic-hang-default
hang-render
hang-bsd
hang-bsd1
hang-bsd2
hang-blt
hang-vebox
extended-hang-render
extended-hang-bsd
extended-hang-bsd1
extended-hang-bsd2
extended-hang-blt
extended-hang-vebox

### gem_caching

Test snoop consistency when touching partial cachelines.

#### Subtests

reads
writes
read-writes

### gem_close

#### Subtests

basic
many-handles-one-vma

### gem_close_race

#### Subtests

basic-process
basic-threads
process-exit
gem-close-race

### gem_concurrent_blit

Test of pread/pwrite/mmap behavior when writing to active buffers.

#### Subtests

This test has over 100 subtests. Run gem_concurrent_blit `--list-subtests` to list them.

### gem_cpu_reloc

Test the relocations through the CPU domain.

#### Subtests

basic
full

### gem_create

This is a test for the extended & old gem_create ioctl, that includes allocation of object from stolen memory and shmem.

#### Subtests

stolen-invalid-flag
create-invalid-size
create-valid-nonaligned
create-invalid-nonaligned

### gem_cs_prefetch

Test the CS prefetch behaviour on batches.

#### Subtests

default
render
bsd
bsd1
bsd2
blt
vebox

### gem_cs_tlb

Check whether we correctly invalidate the cs tlb.

#### Subtests

basic-default
render
bsd
bsd1
bsd2
blt
vebox

### gem_ctx_bad_destroy

Negative test cases for destroy contexts.

#### Subtests

double-destroy
invalid-ctx
invalid-default-ctx
invalid-pad

### gem_ctx_bad_exec

Test that context cannot be submitted to any ring

#### Subtests

default
render
bsd
bsd1
bsd2
blt
vebox

### gem_ctx_create

#### Subtests

basic
invalid-pad
maximum-mem
maximum-swap
basic-files
files
forked-files
active-all
forked-active-all
active-default
forked-active-default
active-render
forked-active-render
hog-render
active-bsd
forked-active-bsd
hog-bsd
active-bsd1
forked-active-bsd1
hog-bsd1
active-bsd2
forked-active-bsd2
hog-bsd2
active-blt
forked-active-blt
hog-blt
active-vebox
forked-active-vebox
hog-vebox

### gem_ctx_exec

Test basic context switch functionality.

#### Subtests

basic
eviction
reset-pin-leak
lrc-lite-restore

### gem_ctx_param

Basic test for context set/get param input validation.

#### Subtests

basic
basic-default
invalid-ctx-get
invalid-ctx-set
invalid-size-get
invalid-size-set
non-root-set
root-set
non-root-set-no-zeromap
root-set-no-zeromap-enabled
root-set-no-zeromap-disabled
invalid-param-get
invalid-param-set

### gem_ctx_switch

#### Subtests

basic-default
basic-default-heavy
default-interruptible
forked-default
forked-default-heavy
forked-default-interruptible
render
render-heavy
render-interruptible
forked-render
forked-render-heavy
forked-render-interruptible
bsd
bsd-heavy
bsd-interruptible
forked-bsd
forked-bsd-heavy
forked-bsd-interruptible
bsd1
bsd1-heavy
bsd1-interruptible
forked-bsd1
forked-bsd1-heavy
forked-bsd1-interruptible
bsd2
bsd2-heavy
bsd2-interruptible
forked-bsd2
forked-bsd2-heavy
forked-bsd2-interruptible
blt
blt-heavy
blt-interruptible
forked-blt
forked-blt-heavy
forked-blt-interruptible
vebox
vebox-heavy
vebox-interruptible
forked-vebox
forked-vebox-heavy
forked-vebox-interruptible

### gem_ctx_thrash

Fill the Gobal GTT with context objects and VMs

#### Subtests

single
engines
processes
threads

### gem_double_irq_loop

Basic check for missed IRQs on blt ring.

### gem_eio

Test that specific ioctls report a wedged GPU (EIO).

#### Subtests

throttle
execbuf
wait
suspend
hibernate
in-flight
in-flight-contexts
in-flight-external
in-flight-internal
in-flight-suspend

### gem_evict_alignment

Run a couple of big batches to force the unbind on misalignment code.

#### Subtests

minor-normal
major-normal
minor-interruptible
major-interruptible
minor-hang
major-hang

### gem_evict_everything

Run a couple of big batches to force the eviction code.

#### Subtests

forked-normal
forked-interruptible
forked-swapping-normal
forked-swapping-interruptible
forked-multifd-normal
forked-multifd-interruptible
forked-swapping-multifd-normal
forked-swapping-multifd-interruptible
forked-mempressure-normal
forked-mempressure-interruptible
forked-swapping-mempressure-normal
forked-swapping-mempressure-interruptible
forked-multifd-mempressure-normal
forked-multifd-mempressure-interruptible
forked-swapping-multifd-mempressure-normal
forked-swapping-multifd-mempressure-interruptible
mlocked-normal
swapping-normal
minor-normal
major-normal
mlocked-interruptible
swapping-interruptible
minor-interruptible
major-interruptible
mlocked-hang
swapping-hang
minor-hang
major-hang

### gem_exec_alignment

Exercises the basic execbuffer using object alignments

#### Subtests

single
many

### gem_exec_async

Check that we can issue concurrent writes across the engines.

#### Subtests

concurrent-writes-render
concurrent-writes-bsd
concurrent-writes-bsd1
concurrent-writes-bsd2
concurrent-writes-blt
concurrent-writes-vebox

### gem_exec_await

#### Subtests

wide-all
wide-contexts

### gem_exec_bad_domains

Test whether the kernel rejects relocations with non-gpu domains.

#### Subtests

cpu-domain
gtt-domain
conflicting-write-domain
double-write-domain
invalid-gpu-domain

### gem_exec_basic

Basic sanity check of execbuf-ioctl rings.

#### Subtests

basic-default
readonly-default
gtt-default
basic-render
readonly-render
gtt-render
basic-bsd
readonly-bsd
gtt-bsd
basic-bsd1
readonly-bsd1
gtt-bsd1
basic-bsd2
readonly-bsd2
gtt-bsd2
basic-blt
readonly-blt
gtt-blt
basic-vebox
readonly-vebox
gtt-vebox

### gem_exec_big

Run a large nop batch to stress test the error capture code.

### gem_exec_blt

#### Subtests

cold
normal
dumb-buf
cold-min
normal-min
dumb-buf-min
cold-max
normal-max
dumb-buf-max

### gem_exec_capture

Check that we capture the user specified objects on a hang

#### Subtests

capture-render
capture-bsd
capture-bsd1
capture-bsd2
capture-blt
capture-vebox

### gem_exec_create

#### Subtests

basic
forked
madvise

### gem_exec_faulting_reloc

Submit patches with relocations in memory that will fault.

#### Subtests

normal
no-prefault

### gem_exec_fence

Check that execbuf waits for explicit fences

#### Subtests

basic-busy-default
basic-wait-default
basic-await-default
nb-await-default
busy-hang-default
wait-hang-default
await-hang-default
nb-await-hang-default
busy-render
wait-render
await-render
nb-await-render
parallel-render
busy-hang-render
wait-hang-render
await-hang-render
nb-await-hang-render
busy-bsd
wait-bsd
await-bsd
nb-await-bsd
busy-hang-bsd
wait-hang-bsd
await-hang-bsd
nb-await-hang-bsd
busy-bsd1
wait-bsd1
await-bsd1
nb-await-bsd1
parallel-bsd1
busy-hang-bsd1
wait-hang-bsd1
await-hang-bsd1
nb-await-hang-bsd1
busy-bsd2
wait-bsd2
await-bsd2
nb-await-bsd2
parallel-bsd2
busy-hang-bsd2
wait-hang-bsd2
await-hang-bsd2
nb-await-hang-bsd2
busy-blt
wait-blt
await-blt
nb-await-blt
parallel-blt
busy-hang-blt
wait-hang-blt
await-hang-blt
nb-await-hang-blt
busy-vebox
wait-vebox
await-vebox
nb-await-vebox
parallel-vebox
busy-hang-vebox
wait-hang-vebox
await-hang-vebox
nb-await-hang-vebox
long-history
expired-history
flip
invalid-fence-array
syncobj-unused-fence
syncobj-invalid-wait
syncobj-invalid-flags
syncobj-signal
syncobj-wait
syncobj-export
syncobj-repeat
syncobj-import
syncobj-channel

### gem_exec_flush

Basic check of flushing after batches

#### Subtests

This test has over 100 subtests. Run gem_exec_flush `--list-subtests` to list them.

### gem_exec_gttfill

Fill the GTT with batches.

#### Subtests

basic
default
render
bsd
bsd1
bsd2
blt
vebox
all

### gem_exec_latency

#### Subtests

render-dispatch
render-dispatch-queued
render-synchronisation
render-synchronisation-queued
render-preemption
bsd-dispatch
bsd-dispatch-queued
bsd-synchronisation
bsd-synchronisation-queued
bsd-preemption
bsd1-dispatch
bsd1-dispatch-queued
bsd1-synchronisation
bsd1-synchronisation-queued
bsd1-preemption
bsd2-dispatch
bsd2-dispatch-queued
bsd2-synchronisation
bsd2-synchronisation-queued
bsd2-preemption
blt-dispatch
blt-dispatch-queued
blt-synchronisation
blt-synchronisation-queued
blt-preemption
vebox-dispatch
vebox-dispatch-queued
vebox-synchronisation
vebox-synchronisation-queued
vebox-preemption

### gem_exec_lut_handle

Exercises the basic execbuffer using the handle LUT interface.

### gem_exec_nop

#### Subtests

basic-series
basic-parallel
basic-sequential
default
signal-default
render
signal-render
bsd
signal-bsd
bsd1
signal-bsd1
bsd2
signal-bsd2
blt
signal-blt
vebox
signal-vebox
signal-all
series
parallel
sequential
forked-sequential
chained-sequential
context-sequential
preempt-default
preempt-render
preempt-bsd
preempt-bsd1
preempt-bsd2
preempt-blt
preempt-vebox
headless

### gem_exec_parallel

#### Subtests

basic
contexts
fds
default
default-contexts
default-fds
render
render-contexts
render-fds
bsd
bsd-contexts
bsd-fds
bsd1
bsd1-contexts
bsd1-fds
bsd2
bsd2-contexts
bsd2-fds
blt
blt-contexts
blt-fds
vebox
vebox-contexts
vebox-fds

### gem_exec_params

#### Subtests

control
no-bsd
no-blt
no-vebox
invalid-ring
invalid-ring2
invalid-bsd-ring
invalid-bsd1-flag-on-render
invalid-bsd2-flag-on-render
invalid-bsd1-flag-on-blt
invalid-bsd2-flag-on-blt
invalid-bsd1-flag-on-vebox
invalid-bsd2-flag-on-vebox
rel-constants-invalid-ring
rel-constants-invalid-rel-gen5
rel-constants-invalid
sol-reset-invalid
sol-reset-not-gen7
secure-non-root
secure-non-master
invalid-flag
cliprects-invalid
rs-invalid-on-bsd-ring
rs-invalid-on-blt-ring
rs-invalid-on-vebox-ring
rs-invalid-gen
invalid-fence-in
rsvd2-dirt
batch-first
cliprects_ptr-dirt
DR1-dirt
DR4-dirt

### gem_exec_parse

#### Subtests

basic-allowed
basic-rejected
basic-allocation
test-lri-OASTATUS2
test-lri-SO_WRITE_OFFSET_0
test-lri-OACONTROL
bitmasks
batch-without-end
cmd-crossing-page
oacontrol-tracking
chained-batch
load-register-reg

### gem_exec_reloc

Basic sanity check of execbuf-ioctl relocations.

#### Subtests

This test has over 100 subtests. Run gem_exec_reloc `--list-subtests` to list them.

### gem_exec_reuse

Inspect scaling with large number of reused objects

#### Subtests

single
baggage
contexts

### gem_exec_schedule

Check that we can control the order of execution

#### Subtests

fifo-render
fifo-bsd
fifo-bsd1
fifo-bsd2
fifo-blt
fifo-vebox
smoketest-all
in-order-render
out-order-render
promotion-render
preempt-render
preempt-contexts-render
preempt-other-render
preempt-self-render
preempt-hang-render
preemptive-hang-render
deep-render
wide-render
reorder-wide-render
smoketest-render
in-order-bsd
out-order-bsd
promotion-bsd
preempt-bsd
preempt-contexts-bsd
preempt-other-bsd
preempt-self-bsd
preempt-hang-bsd
preemptive-hang-bsd
deep-bsd
wide-bsd
reorder-wide-bsd
smoketest-bsd
in-order-bsd1
out-order-bsd1
promotion-bsd1
preempt-bsd1
preempt-contexts-bsd1
preempt-other-bsd1
preempt-self-bsd1
preempt-hang-bsd1
preemptive-hang-bsd1
deep-bsd1
wide-bsd1
reorder-wide-bsd1
smoketest-bsd1
in-order-bsd2
out-order-bsd2
promotion-bsd2
preempt-bsd2
preempt-contexts-bsd2
preempt-other-bsd2
preempt-self-bsd2
preempt-hang-bsd2
preemptive-hang-bsd2
deep-bsd2
wide-bsd2
reorder-wide-bsd2
smoketest-bsd2
in-order-blt
out-order-blt
promotion-blt
preempt-blt
preempt-contexts-blt
preempt-other-blt
preempt-self-blt
preempt-hang-blt
preemptive-hang-blt
deep-blt
wide-blt
reorder-wide-blt
smoketest-blt
in-order-vebox
out-order-vebox
promotion-vebox
preempt-vebox
preempt-contexts-vebox
preempt-other-vebox
preempt-self-vebox
preempt-hang-vebox
preemptive-hang-vebox
deep-vebox
wide-vebox
reorder-wide-vebox
smoketest-vebox
pi-ringfull-default
pi-ringfull-render
pi-ringfull-bsd
pi-ringfull-bsd1
pi-ringfull-bsd2
pi-ringfull-blt
pi-ringfull-vebox

### gem_exec_store

#### Subtests

basic-default
cachelines-default
pages-default
basic-render
cachelines-render
pages-render
basic-bsd
cachelines-bsd
pages-bsd
basic-bsd1
cachelines-bsd1
pages-bsd1
basic-bsd2
cachelines-bsd2
pages-bsd2
basic-blt
cachelines-blt
pages-blt
basic-vebox
cachelines-vebox
pages-vebox
basic-all

### gem_exec_suspend

#### Subtests

basic
basic-S3-devices
basic-S3
basic-S4-devices
basic-S4
default-uncached
default-cached
default-uncached-S3
default-cached-S3
default-uncached-S4
default-cached-S4
render-uncached
render-cached
render-uncached-S3
render-cached-S3
render-uncached-S4
render-cached-S4
bsd-uncached
bsd-cached
bsd-uncached-S3
bsd-cached-S3
bsd-uncached-S4
bsd-cached-S4
bsd1-uncached
bsd1-cached
bsd1-uncached-S3
bsd1-cached-S3
bsd1-uncached-S4
bsd1-cached-S4
bsd2-uncached
bsd2-cached
bsd2-uncached-S3
bsd2-cached-S3
bsd2-uncached-S4
bsd2-cached-S4
blt-uncached
blt-cached
blt-uncached-S3
blt-cached-S3
blt-uncached-S4
blt-cached-S4
vebox-uncached
vebox-cached
vebox-uncached-S3
vebox-cached-S3
vebox-uncached-S4
vebox-cached-S4
hang-S3
hang-S4

### gem_exec_whisper

#### Subtests

This test has over 100 subtests. Run gem_exec_whisper `--list-subtests` to list them.

### gem_fd_exhaustion

### gem_fenced_exec_thrash

Test execbuf fence accounting.

#### Subtests

2-spare-fences
no-spare-fences
no-spare-fences-busy
no-spare-fences-interruptible
no-spare-fences-busy-interruptible
too-many-fences

### gem_fence_thrash

#### Subtests

bo-write-verify-none
bo-write-verify-x
bo-write-verify-y
bo-write-verify-threaded-none
bo-write-verify-threaded-x
bo-write-verify-threaded-y
bo-copy

### gem_fence_upload

#### Subtests

performance
thread-contention
wc-contention
thread-performance-read
thread-performance-write
thread-performance-both

### gem_flink_basic

Tests for flink - a way to export a gem object by name

#### Subtests

basic
double-flink
bad-flink
bad-open
flink-lifetime

### gem_flink_race

Check for flink/open vs. gem close races.

#### Subtests

flink_name
flink_close

### gem_gpgpu_fill

### gem_gtt_cpu_tlb

Check whether gtt tlbs for cpu access are correctly invalidated.

### gem_gtt_hog

### gem_gtt_speed

### gem_largeobject

### gem_linear_blits

Test doing many blits with a working set larger than the aperture size.

#### Subtests

basic
normal
interruptible

### gem_lut_handle

Exercises the basic execbuffer using the handle LUT interface.

### gem_madvise

Checks that the kernel reports EFAULT when trying to use purged bo.

#### Subtests

dontneed-before-mmap
dontneed-after-mmap
dontneed-before-pwrite
dontneed-before-exec

### gem_media_fill

Basic test for the media_fill() function, a very simple workload for the Media pipeline.

### gem_mmap

#### Subtests

bad-object
basic
short-mmap
basic-small-bo
big-bo
huge-bo
swap-bo

### gem_mmap_gtt

#### Subtests

basic
basic-short
basic-copy
basic-read
basic-write
basic-write-gtt
coherency
clflush
hang
basic-read-write
basic-write-read
basic-read-write-distinct
basic-write-read-distinct
fault-concurrent
basic-read-no-prefault
basic-write-no-prefault
basic-write-gtt-no-prefault
basic-write-cpu-read-gtt
basic-wc
basic-small-bo
basic-small-bo-tiledX
basic-small-bo-tiledY
big-bo
big-bo-tiledX
big-bo-tiledY
huge-bo
huge-bo-tiledX
huge-bo-tiledY
basic-small-copy
forked-basic-small-copy
basic-small-copy-XY
forked-basic-small-copy-XY
basic-small-copy-odd
forked-basic-small-copy-odd
medium-copy
forked-medium-copy
medium-copy-XY
forked-medium-copy-XY
medium-copy-odd
forked-medium-copy-odd
big-copy
forked-big-copy
big-copy-XY
forked-big-copy-XY
big-copy-odd
forked-big-copy-odd
huge-copy
forked-huge-copy
huge-copy-XY
forked-huge-copy-XY
huge-copy-odd
forked-huge-copy-odd
swap-copy
forked-swap-copy
swap-copy-XY
forked-swap-copy-XY
swap-copy-odd
forked-swap-copy-odd

### gem_mmap_offset_exhaustion

Checks whether the kernel handles mmap offset exhaustion correctly.

### gem_mmap_wc

#### Subtests

invalid-flags
close
copy
read
write
coherency
write-gtt
read-write
write-read
read-write-distinct
write-read-distinct
fault-concurrent
read-no-prefault
write-no-prefault
write-gtt-no-prefault
write-cpu-read-wc
write-cpu-read-wc-unflushed
write-gtt-read-wc
set-cache-level

### gem_mocs_settings

#### Subtests

mocs-settings-render
mocs-settings-ctx-render
mocs-settings-dirty-render
mocs-settings-ctx-dirty-render
mocs-reset-render
mocs-reset-ctx-render
mocs-reset-dirty-render
mocs-reset-ctx-dirty-render
mocs-rc6-render
mocs-rc6-ctx-render
mocs-rc6-dirty-render
mocs-rc6-ctx-dirty-render
mocs-suspend-render
mocs-suspend-ctx-render
mocs-suspend-dirty-render
mocs-suspend-ctx-dirty-render
mocs-hibernate-render
mocs-hibernate-ctx-render
mocs-hibernate-dirty-render
mocs-hibernate-ctx-dirty-render
mocs-settings-bsd1
mocs-reset-bsd1
mocs-rc6-bsd1
mocs-suspend-bsd1
mocs-hibernate-bsd1
mocs-settings-bsd2
mocs-reset-bsd2
mocs-rc6-bsd2
mocs-suspend-bsd2
mocs-hibernate-bsd2
mocs-settings-blt
mocs-reset-blt
mocs-rc6-blt
mocs-suspend-blt
mocs-hibernate-blt
mocs-settings-vebox
mocs-reset-vebox
mocs-rc6-vebox
mocs-suspend-vebox
mocs-hibernate-vebox

### gem_partial_pwrite_pread

Test pwrite/pread consistency when touching partial cachelines.

#### Subtests

reads
write
writes-after-reads
reads-uncached
write-uncached
writes-after-reads-uncached
reads-snoop
write-snoop
writes-after-reads-snoop
reads-display
write-display
writes-after-reads-display

### gem_persistent_relocs

Test persistent relocations as used by uxa/libva.

#### Subtests

normal
interruptible
forked
forked-interruptible
forked-faulting-reloc
forked-interruptible-faulting-reloc
forked-thrashing
forked-interruptible-thrashing
forked-faulting-reloc-thrashing
forked-interruptible-faulting-reloc-thrashing
forked-thrash-inactive
forked-interruptible-thrash-inactive
forked-faulting-reloc-thrash-inactive
forked-interruptible-faulting-reloc-thrash-inactive

### gem_pipe_control_store_loop

Test (TLB-)Coherency of pipe_control QW writes.

#### Subtests

fresh-buffer
reused-buffer

### gem_ppgtt

#### Subtests

blt-vs-render-ctx0
blt-vs-render-ctxN
flink-and-close-vma-leak
flink-and-exit-vma-leak

### gem_pread

#### Subtests

basic
uncached
snoop
display
stolen-normal
stolen-uncached
stolen-snoop
stolen-display
pagefault-pread

### gem_pread_after_blit

Test pread behavior when getting values out of just-drawn-to buffers.

#### Subtests

default-normal
default-interruptible
default-hang
uncached-normal
uncached-interruptible
uncached-hang
snooped-normal
snooped-interruptible
snooped-hang
display-normal
display-interruptible
display-hang

### gem_pwrite

#### Subtests

basic
uncached
snoop
display
stolen-normal
stolen-uncached
stolen-snoop
stolen-display
small-cpu-forwards
small-gtt-forwards
big-cpu-forwards
big-gtt-forwards
huge-cpu-forwards
huge-gtt-forwards
small-cpu-backwards
small-gtt-backwards
big-cpu-backwards
big-gtt-backwards
huge-cpu-backwards
huge-gtt-backwards
small-cpu-random
small-gtt-random
big-cpu-random
big-gtt-random
huge-cpu-random
huge-gtt-random
small-cpu-fbr
small-gtt-fbr
big-cpu-fbr
big-gtt-fbr
huge-cpu-fbr
huge-gtt-fbr

### gem_pwrite_pread

#### Subtests

uncached-copy-correctness
uncached-copy-performance
uncached-pwrite-blt-gtt_mmap-correctness
uncached-pwrite-blt-gtt_mmap-performance
snooped-copy-correctness
snooped-copy-performance
snooped-pwrite-blt-cpu_mmap-correctness
snooped-pwrite-blt-cpu_mmap-performance
display-copy-correctness
display-copy-performance
display-pwrite-blt-gtt_mmap-correctness
display-pwrite-blt-gtt_mmap-performance

### gem_pwrite_snooped

pwrite to a snooped bo then make it uncached and check that the GPU sees the data.

### gem_read_read_speed

Test speed of concurrent reads between engines.

#### Subtests

read-read-1x1
read-write-1x1
write-read-1x1
write-write-1x1
read-read-128x128
read-write-128x128
write-read-128x128
write-write-128x128
read-read-256x256
read-write-256x256
write-read-256x256
write-write-256x256
read-read-512x512
read-write-512x512
write-read-512x512
write-write-512x512
read-read-1024x1024
read-write-1024x1024
write-read-1024x1024
write-write-1024x1024
read-read-2048x2048
read-write-2048x2048
write-read-2048x2048
write-write-2048x2048
read-read-4096x4096
read-write-4096x4096
write-read-4096x4096
write-write-4096x4096
read-read-8192x8192
read-write-8192x8192
write-read-8192x8192
write-write-8192x8192

### gem_readwrite

#### Subtests

new-obj
beyond-EOB
read-write
read-bad-handle
write-bad-handle

### gem_reg_read

#### Subtests

bad-register
timestamp-moving
timestamp-monotonic

### gem_reloc_overflow

Check that kernel relocation overflows are caught.

#### Subtests

invalid-address
single-fault
batch-start-unaligned
batch-end-unaligned
batch-both-unaligned
single-overflow
wrapped-overflow
invalid-address-noprefault
single-fault-noprefault
batch-start-unaligned-noprefault
batch-end-unaligned-noprefault
batch-both-unaligned-noprefault
single-overflow-noprefault
wrapped-overflow-noprefault
source-offset-page-stradle-gen8-reloc-cpu
source-offset-end-gen8-reloc-cpu
source-offset-overflow-gen8-reloc-cpu
source-offset-end-reloc-cpu
source-offset-big-reloc-cpu
source-offset-negative-reloc-cpu
source-offset-unaligned-reloc-cpu
source-offset-page-stradle-gen8-reloc-gtt
source-offset-end-gen8-reloc-gtt
source-offset-overflow-gen8-reloc-gtt
source-offset-end-reloc-gtt
source-offset-big-reloc-gtt
source-offset-negative-reloc-gtt
source-offset-unaligned-reloc-gtt
buffercount-overflow

### gem_reloc_vs_gpu

Test kernel relocations vs. gpu races.

#### Subtests

normal
faulting-reloc
interruptible
interruptible-hang
faulting-reloc-interruptible
faulting-reloc-interruptible-hang
forked
forked-interruptible
forked-faulting-reloc
forked-interruptible-faulting-reloc
forked-thrashing
forked-interruptible-thrashing
forked-faulting-reloc-thrashing
forked-interruptible-faulting-reloc-thrashing
forked-thrash-inactive
forked-interruptible-thrash-inactive
forked-faulting-reloc-thrash-inactive
forked-interruptible-faulting-reloc-thrash-inactive
forked-hang
forked-interruptible-hang
forked-faulting-reloc-hang
forked-interruptible-faulting-reloc-hang
forked-thrashing-hang
forked-interruptible-thrashing-hang
forked-faulting-reloc-thrashing-hang
forked-interruptible-faulting-reloc-thrashing-hang
forked-thrash-inactive-hang
forked-interruptible-thrash-inactive-hang
forked-faulting-reloc-thrash-inactive-hang
forked-interruptible-faulting-reloc-thrash-inactive-hang

### gem_render_copy

Basic test for the render_copy() function.

### gem_render_copy_redux

Advanced test for the render_copy() function.

#### Subtests

normal
interruptible
flink
flink-interruptible

### gem_render_linear_blits

#### Subtests

basic
aperture-thrash
aperture-shrink
swap-thrash

### gem_render_tiled_blits

#### Subtests

basic
aperture-thrash
aperture-shrink
swap-thrash

### gem_request_retire

Collection of tests targeting request retirement code paths.

#### Subtests

retire-vma-not-inactive

### gem_reset_stats

#### Subtests

params
params-ctx
reset-stats-default
reset-stats-ctx-default
ban-default
ban-ctx-default
reset-count-default
reset-count-ctx-default
unrelated-ctx-default
close-pending-default
close-pending-ctx-default
close-pending-fork-default
close-pending-fork-reverse-default
defer-hangcheck-default
reset-stats-render
reset-stats-ctx-render
ban-render
ban-ctx-render
reset-count-render
reset-count-ctx-render
unrelated-ctx-render
close-pending-render
close-pending-ctx-render
close-pending-fork-render
close-pending-fork-reverse-render
defer-hangcheck-render
reset-stats-bsd
reset-stats-ctx-bsd
ban-bsd
ban-ctx-bsd
reset-count-bsd
reset-count-ctx-bsd
unrelated-ctx-bsd
close-pending-bsd
close-pending-ctx-bsd
close-pending-fork-bsd
close-pending-fork-reverse-bsd
defer-hangcheck-bsd
reset-stats-bsd1
reset-stats-ctx-bsd1
ban-bsd1
ban-ctx-bsd1
reset-count-bsd1
reset-count-ctx-bsd1
unrelated-ctx-bsd1
close-pending-bsd1
close-pending-ctx-bsd1
close-pending-fork-bsd1
close-pending-fork-reverse-bsd1
defer-hangcheck-bsd1
reset-stats-bsd2
reset-stats-ctx-bsd2
ban-bsd2
ban-ctx-bsd2
reset-count-bsd2
reset-count-ctx-bsd2
unrelated-ctx-bsd2
close-pending-bsd2
close-pending-ctx-bsd2
close-pending-fork-bsd2
close-pending-fork-reverse-bsd2
defer-hangcheck-bsd2
reset-stats-blt
reset-stats-ctx-blt
ban-blt
ban-ctx-blt
reset-count-blt
reset-count-ctx-blt
unrelated-ctx-blt
close-pending-blt
close-pending-ctx-blt
close-pending-fork-blt
close-pending-fork-reverse-blt
defer-hangcheck-blt
reset-stats-vebox
reset-stats-ctx-vebox
ban-vebox
ban-ctx-vebox
reset-count-vebox
reset-count-ctx-vebox
unrelated-ctx-vebox
close-pending-vebox
close-pending-ctx-vebox
close-pending-fork-vebox
close-pending-fork-reverse-vebox
defer-hangcheck-vebox

### gem_ringfill

#### Subtests

basic-default
render
bsd
bsd1
bsd2
blt
vebox
basic-default-interruptible
render-interruptible
bsd-interruptible
bsd1-interruptible
bsd2-interruptible
blt-interruptible
vebox-interruptible
basic-default-hang
render-hang
bsd-hang
bsd1-hang
bsd2-hang
blt-hang
vebox-hang
default-child
render-child
bsd-child
bsd1-child
bsd2-child
blt-child
vebox-child
basic-default-forked
render-forked
bsd-forked
bsd1-forked
bsd2-forked
blt-forked
vebox-forked
basic-default-fd
render-fd
bsd-fd
bsd1-fd
bsd2-fd
blt-fd
vebox-fd
default-bomb
render-bomb
bsd-bomb
bsd1-bomb
bsd2-bomb
blt-bomb
vebox-bomb
default-S3
render-S3
bsd-S3
bsd1-S3
bsd2-S3
blt-S3
vebox-S3
default-S4
render-S4
bsd-S4
bsd1-S4
bsd2-S4
blt-S4
vebox-S4

### gem_ring_sync_copy

Ensure inter-ring dependencies are respected.

#### Subtests

sync-render-blitter-write-read
sync-render-blitter-read-write
sync-render-blitter-write-write
sync-blitter-render-write-read
sync-blitter-render-read-write
sync-blitter-render-write-write

### gem_ring_sync_loop

Basic check of ring<->ring write synchronisation.

### gem_set_tiling_vs_blt

Check for proper synchronization of tiling changes vs. tiled gpu access.

#### Subtests

untiled-to-tiled
tiled-to-untiled
tiled-to-tiled

### gem_set_tiling_vs_gtt

Check set_tiling vs gtt mmap coherency.

### gem_set_tiling_vs_pwrite

Check set_tiling vs pwrite coherency.

### gem_shrink

#### Subtests

reclaim
get-pages-sanitycheck
get-pages
get-pages-userptr
get-pages-oom
pwrite-sanitycheck
pwrite
pwrite-userptr
pwrite-oom
pread-sanitycheck
pread
pread-userptr
pread-oom
mmap-gtt-sanitycheck
mmap-gtt
mmap-gtt-userptr
mmap-gtt-oom
mmap-cpu-sanitycheck
mmap-cpu
mmap-cpu-userptr
mmap-cpu-oom
execbuf1-sanitycheck
execbuf1
execbuf1-userptr
execbuf1-oom
execbufN-sanitycheck
execbufN
execbufN-userptr
execbufN-oom
execbufX-sanitycheck
execbufX
execbufX-userptr
execbufX-oom
hang-sanitycheck
hang
hang-userptr
hang-oom

### gem_softpin

#### Subtests

invalid
softpin
overlap
noreloc
noreloc-interruptible
noreloc-S3
noreloc-S4
evict-active
evict-snoop
evict-active-interruptible
evict-snoop-interruptible
evict-hang

### gem_spin_batch

#### Subtests

basic-render
basic-bsd
basic-bsd1
basic-bsd2
basic-blt
basic-vebox
spin-each

### gem_stolen

This test verifies the exetended gem_create ioctl, that includes allocation of obj from stolen region

#### Subtests

stolen-clear
stolen-no-mmap
stolen-pwrite
stolen-pread
stolen-copy
large-object-alloc
stolen-fill-purge
stolen-hibernate

### gem_storedw_batches_loop

#### Subtests

normal
secure-dispatch
cached-mapping
uncached-mapping

### gem_storedw_loop

Basic CS check using MI_STORE_DATA_IMM.

#### Subtests

short-default
long-default
short-render
long-render
short-bsd
long-bsd
short-bsd1
long-bsd1
short-bsd2
long-bsd2
short-blt
long-blt
short-vebox
long-vebox

### gem_streaming_writes

Test of streaming writes into active GPU sources

#### Subtests

cpu-sync
gtt-sync
wc-sync
cpu
gtt
wc
batch-cpu
batch-gtt
batch-wc
batch-reverse-cpu
batch-reverse-gtt
batch-reverse-wc

### gem_sync

Basic check of ring<->ring write synchronisation.

#### Subtests

default
store-default
many-default
forked-default
forked-store-default
render
store-render
many-render
forked-render
forked-store-render
bsd
store-bsd
many-bsd
forked-bsd
forked-store-bsd
bsd1
store-bsd1
many-bsd1
forked-bsd1
forked-store-bsd1
bsd2
store-bsd2
many-bsd2
forked-bsd2
forked-store-bsd2
blt
store-blt
many-blt
forked-blt
forked-store-blt
vebox
store-vebox
many-vebox
forked-vebox
forked-store-vebox
basic-each
basic-store-each
basic-many-each
forked-each
forked-store-each
basic-all
basic-store-all
all
store-all
forked-all
forked-store-all
preempt-all
preempt-default
preempt-render
preempt-bsd
preempt-bsd1
preempt-bsd2
preempt-blt
preempt-vebox

### gem_threaded_access_tiled

Check parallel access to tiled memory.

### gem_tiled_blits

Test doing many tiled blits, with a working set larger than the aperture size.

#### Subtests

basic
normal
interruptible

### gem_tiled_fence_blits

#### Subtests

basic
normal

### gem_tiled_partial_pwrite_pread

Test pwrite/pread consistency when touching partial cachelines.

#### Subtests

reads
writes
writes-after-reads

### gem_tiled_pread_basic

Test pread behavior on tiled objects with respect to the reported swizzling value.

### gem_tiled_pread_pwrite

Test swizzling by testing pwrite does the inverse of pread.

### gem_tiled_swapping

Exercise swizzle code for swapping.

#### Subtests

non-threaded
threaded

### gem_tiled_wb

This is a test of write-combining mmap's behavior on tiled objects with respect to the reported swizzling value.

### gem_tiled_wc

### gem_tiling_max_stride

Check that max fence stride works.

### gem_unfence_active_buffers

Check for use-after-free in the fence stealing code.

### gem_unref_active_buffers

Test unreferencing of active buffers.

### gem_userptr_blits

#### Subtests

input-checking
usage-restrictions
invalid-null-pointer
invalid-gtt-mapping
forked-access
forbidden-operations
relocations
create-destroy-unsync
unsync-overlap
unsync-unmap
unsync-unmap-cycles
unsync-unmap-after-close
coherency-unsync
dmabuf-unsync
forked-unsync-normal
forked-unsync-interruptible
forked-unsync-swapping-normal
forked-unsync-swapping-interruptible
forked-unsync-multifd-normal
forked-unsync-multifd-interruptible
forked-unsync-swapping-multifd-normal
forked-unsync-swapping-multifd-interruptible
forked-unsync-mempressure-normal
forked-unsync-mempressure-interruptible
forked-unsync-swapping-mempressure-normal
forked-unsync-swapping-mempressure-interruptible
forked-unsync-multifd-mempressure-normal
forked-unsync-multifd-mempressure-interruptible
forked-unsync-swapping-multifd-mempressure-normal
forked-unsync-swapping-multifd-mempressure-interruptible
mlocked-unsync-normal
swapping-unsync-normal
minor-unsync-normal
major-unsync-normal
mlocked-unsync-interruptible
swapping-unsync-interruptible
minor-unsync-interruptible
major-unsync-interruptible
process-exit
process-exit-gtt
process-exit-busy
process-exit-gtt-busy
create-destroy-sync
sync-overlap
sync-unmap
sync-unmap-cycles
sync-unmap-after-close
stress-mm
stress-mm-invalidate-close
stress-mm-invalidate-close-overlap
map-fixed-invalidate
map-fixed-invalidate-overlap
map-fixed-invalidate-busy
map-fixed-invalidate-overlap-busy
map-fixed-invalidate-gup
map-fixed-invalidate-overlap-gup
map-fixed-invalidate-busy-gup
map-fixed-invalidate-overlap-busy-gup
coherency-sync
dmabuf-sync
forked-sync-normal
forked-sync-interruptible
forked-sync-swapping-normal
forked-sync-swapping-interruptible
forked-sync-multifd-normal
forked-sync-multifd-interruptible
forked-sync-swapping-multifd-normal
forked-sync-swapping-multifd-interruptible
forked-sync-mempressure-normal
forked-sync-mempressure-interruptible
forked-sync-swapping-mempressure-normal
forked-sync-swapping-mempressure-interruptible
forked-sync-multifd-mempressure-normal
forked-sync-multifd-mempressure-interruptible
forked-sync-swapping-multifd-mempressure-normal
forked-sync-swapping-multifd-mempressure-interruptible
mlocked-normal-sync
swapping-normal-sync
minor-normal-sync
major-normal-sync
mlocked-sync-interruptible
swapping-sync-interruptible
minor-sync-interruptible
major-sync-interruptible
access-control

### gem_wait

#### Subtests

invalid-flags
invalid-buf
basic-busy-all
basic-wait-all
basic-await-all
basic-busy-write-all
basic-wait-write-all
busy-default
wait-default
await-default
write-busy-default
write-wait-default
busy-render
wait-render
await-render
write-busy-render
write-wait-render
busy-bsd
wait-bsd
await-bsd
write-busy-bsd
write-wait-bsd
busy-bsd1
wait-bsd1
await-bsd1
write-busy-bsd1
write-wait-bsd1
busy-bsd2
wait-bsd2
await-bsd2
write-busy-bsd2
write-wait-bsd2
busy-blt
wait-blt
await-blt
write-busy-blt
write-wait-blt
busy-vebox
wait-vebox
await-vebox
write-busy-vebox
write-wait-vebox
hang-busy-all
hang-wait-all
hang-busy-write-all
hang-wait-write-all
hang-busy-default
hang-wait-default
hang-busy-write-default
hang-wait-write-default
hang-busy-render
hang-wait-render
hang-busy-write-render
hang-wait-write-render
hang-busy-bsd
hang-wait-bsd
hang-busy-write-bsd
hang-wait-write-bsd
hang-busy-bsd1
hang-wait-bsd1
hang-busy-write-bsd1
hang-wait-write-bsd1
hang-busy-bsd2
hang-wait-bsd2
hang-busy-write-bsd2
hang-wait-write-bsd2
hang-busy-blt
hang-wait-blt
hang-busy-write-blt
hang-wait-write-blt
hang-busy-vebox
hang-wait-vebox
hang-busy-write-vebox
hang-wait-write-vebox

### gem_workarounds

#### Subtests

basic-read
basic-read-context
basic-read-fd
reset
reset-context
reset-fd
suspend-resume
suspend-resume-context
suspend-resume-fd
hibernate-resume
hibernate-resume-context
hibernate-resume-fd

### gem_write_read_ring_switch

Check read/write syncpoints when switching rings.

#### Subtests

blt2render
blt2bsd
blt2vebox
blt2render-interruptible
blt2bsd-interruptible
blt2vebox-interruptible