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_create  
gem_ctx_exec  
gem_ctx_isolation  
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_fence_thrash  
gem_fence_upload  
gem_fenced_exec_thrash  
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_ring_sync_copy  
gem_ring_sync_loop  
gem_ringfill  
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
forked

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_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 context batch buffer execution.

Subtests

basic
basic-invalid-context-default
basic-invalid-context-render
basic-invalid-context-bsd
basic-invalid-context-bsd1
basic-invalid-context-bsd2
basic-invalid-context-blt
basic-invalid-context-vebox
eviction
reset-pin-leak

gem_ctx_isolation

Subtests

rcs0-clean
rcs0-dirty-create
rcs0-dirty-switch
rcs0-none
rcs0-S3
rcs0-S4
rcs0-reset
bcs0-clean
bcs0-dirty-create
bcs0-dirty-switch
bcs0-none
bcs0-S3
bcs0-S4
bcs0-reset
vcs0-clean
vcs0-dirty-create
vcs0-dirty-switch
vcs0-none
vcs0-S3
vcs0-S4
vcs0-reset
vcs1-clean
vcs1-dirty-create
vcs1-dirty-switch
vcs1-none
vcs1-S3
vcs1-S4
vcs1-reset
vecs0-clean
vecs0-dirty-create
vecs0-dirty-switch
vecs0-none
vecs0-S3
vecs0-S4
vecs0-reset

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
set-priority-not-supported
get-priority-new-ctx
set-priority-invalid-size
set-priority-range
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
basic-all-light
basic-all-heavy

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
banned
suspend
hibernate
in-flight-external
in-flight-suspend
reset-stress
unwedge-stress
wait-immediate
wait-wedge-immediate
in-flight-immediate
in-flight-contexts-immediate
in-flight-internal-immediate
wait-1us
wait-wedge-1us
in-flight-1us
in-flight-contexts-1us
in-flight-internal-1us
wait-10ms
wait-wedge-10ms
in-flight-10ms
in-flight-contexts-10ms
in-flight-internal-10ms

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
many-4K-zero
many-4K-incremental
many-2M-zero
many-2M-incremental
many-256M-incremental
userptr

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-all
basic-wait-all
busy-hang-all
wait-hang-all
basic-busy-default
basic-wait-default
basic-await-default
nb-await-default
keep-in-fence-default
busy-hang-default
wait-hang-default
await-hang-default
nb-await-hang-default
busy-render
wait-render
await-render
nb-await-render
keep-in-fence-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
keep-in-fence-bsd
busy-hang-bsd
wait-hang-bsd
await-hang-bsd
nb-await-hang-bsd
busy-bsd1
wait-bsd1
await-bsd1
nb-await-bsd1
keep-in-fence-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
keep-in-fence-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
keep-in-fence-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
keep-in-fence-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

all-rtidle-submit
all-rthog-submit
render-dispatch
render-poll
render-rtidle-submit
render-rthog-submit
render-dispatch-queued
render-synchronisation
render-synchronisation-queued
render-preemption
bsd-dispatch
bsd-poll
bsd-rtidle-submit
bsd-rthog-submit
bsd-dispatch-queued
bsd-synchronisation
bsd-synchronisation-queued
bsd-preemption
bsd1-dispatch
bsd1-poll
bsd1-rtidle-submit
bsd1-rthog-submit
bsd1-dispatch-queued
bsd1-synchronisation
bsd1-synchronisation-queued
bsd1-preemption
bsd2-dispatch
bsd2-poll
bsd2-rtidle-submit
bsd2-rthog-submit
bsd2-dispatch-queued
bsd2-synchronisation
bsd2-synchronisation-queued
bsd2-preemption
blt-dispatch
blt-poll
blt-rtidle-submit
blt-rthog-submit
blt-dispatch-queued
blt-synchronisation
blt-synchronisation-queued
blt-preemption
vebox-dispatch
vebox-poll
vebox-rtidle-submit
vebox-rthog-submit
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
poll-default
poll-render
poll-bsd
poll-bsd1
poll-bsd2
poll-blt
poll-vebox
poll-sequential
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
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

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


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_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_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_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.

Subtests

linear
x-tiled
y-tiled
y-tiled-ccs-to-linear
y-tiled-ccs-to-x-tiled
y-tiled-ccs-to-y-tiled

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_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_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_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-default
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

store-default
store-render
store-bsd
store-bsd1
store-bsd2
store-blt
store-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

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


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
readonly-unsync
readonly-mmap-unsync
readonly-pwrite-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