# Suspend to RAM seems to be broken on this machine
.*suspend.*

# GPU hangs, then the whole machine
gem_eio.*

# Whole machine hangs
kms_flip@absolute-wf_vblank@a-edp1

# This is generating kernel oops with divide error
kms_plane_scaling@invalid-parameters

# Skip driver specific tests
^amdgpu.*
^msm.*
nouveau_.*
^panfrost.*
^v3d.*
^vc4.*
^vmwgfx*
^xe.*

# GEM tests takes ~1000 hours, so skip it
gem_.*

# Kernel panic
drm_fdinfo.*

# Hangs the machine and timeout occurs
i915_pm_rc6_residency.*
i915_suspend.*
sysfs_heartbeat_interval.*
syncobj_timeline.*
sysfs_timeslice_duration.*
syncobj_wait.*

# Kernel panic and test hangs with multiple kms tests
kms_.*

# The test alternates between failing and timing out on reruns, causing the pipeline to fail
api_intel_allocator@reopen
api_intel_bb@destroy-bb
core_hotunplug@hotrebind-lateclose
dumb_buffer@map-valid
i915_pm_rps@engine-order
perf_pmu@busy
perf_pmu@enable-race
perf_pmu@semaphore-wait-idle
prime_mmap@test_refcounting
sriov_basic@enable-vfs-bind-unbind-each-numvfs-all
syncobj_basic@illegal-fd-to-handle
