162306a36Sopenharmony_ciconfig DRM_I915_REQUEST_TIMEOUT
262306a36Sopenharmony_ci	int "Default timeout for requests (ms)"
362306a36Sopenharmony_ci	default 20000 # milliseconds
462306a36Sopenharmony_ci	help
562306a36Sopenharmony_ci	  Configures the default timeout after which any user submissions will
662306a36Sopenharmony_ci	  be forcefully terminated.
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci	  Beware setting this value lower, or close to heartbeat interval
962306a36Sopenharmony_ci	  rounded to whole seconds times three, in order to avoid allowing
1062306a36Sopenharmony_ci	  misbehaving applications causing total rendering failure in unrelated
1162306a36Sopenharmony_ci	  clients.
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci	  May be 0 to disable the timeout.
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciconfig DRM_I915_FENCE_TIMEOUT
1662306a36Sopenharmony_ci	int "Timeout for unsignaled foreign fences (ms, jiffy granularity)"
1762306a36Sopenharmony_ci	default 10000 # milliseconds
1862306a36Sopenharmony_ci	help
1962306a36Sopenharmony_ci	  When listening to a foreign fence, we install a supplementary timer
2062306a36Sopenharmony_ci	  to ensure that we are always signaled and our userspace is able to
2162306a36Sopenharmony_ci	  make forward progress. This value specifies the timeout used for an
2262306a36Sopenharmony_ci	  unsignaled foreign fence.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci	  May be 0 to disable the timeout, and rely on the foreign fence being
2562306a36Sopenharmony_ci	  eventually signaled.
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ciconfig DRM_I915_USERFAULT_AUTOSUSPEND
2862306a36Sopenharmony_ci	int "Runtime autosuspend delay for userspace GGTT mmaps (ms)"
2962306a36Sopenharmony_ci	default 250 # milliseconds
3062306a36Sopenharmony_ci	help
3162306a36Sopenharmony_ci	  On runtime suspend, as we suspend the device, we have to revoke
3262306a36Sopenharmony_ci	  userspace GGTT mmaps and force userspace to take a pagefault on
3362306a36Sopenharmony_ci	  their next access. The revocation and subsequent recreation of
3462306a36Sopenharmony_ci	  the GGTT mmap can be very slow and so we impose a small hysteris
3562306a36Sopenharmony_ci	  that complements the runtime-pm autosuspend and provides a lower
3662306a36Sopenharmony_ci	  floor on the autosuspend delay.
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci	  May be 0 to disable the extra delay and solely use the device level
3962306a36Sopenharmony_ci	  runtime pm autosuspend delay tunable.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ciconfig DRM_I915_HEARTBEAT_INTERVAL
4262306a36Sopenharmony_ci	int "Interval between heartbeat pulses (ms)"
4362306a36Sopenharmony_ci	default 2500 # milliseconds
4462306a36Sopenharmony_ci	help
4562306a36Sopenharmony_ci	  The driver sends a periodic heartbeat down all active engines to
4662306a36Sopenharmony_ci	  check the health of the GPU and undertake regular house-keeping of
4762306a36Sopenharmony_ci	  internal driver state.
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci	  This is adjustable via
5062306a36Sopenharmony_ci	  /sys/class/drm/card?/engine/*/heartbeat_interval_ms
5162306a36Sopenharmony_ci
5262306a36Sopenharmony_ci	  May be 0 to disable heartbeats and therefore disable automatic GPU
5362306a36Sopenharmony_ci	  hang detection.
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ciconfig DRM_I915_PREEMPT_TIMEOUT
5662306a36Sopenharmony_ci	int "Preempt timeout (ms, jiffy granularity)"
5762306a36Sopenharmony_ci	default 640 # milliseconds
5862306a36Sopenharmony_ci	help
5962306a36Sopenharmony_ci	  How long to wait (in milliseconds) for a preemption event to occur
6062306a36Sopenharmony_ci	  when submitting a new context. If the current context does not hit
6162306a36Sopenharmony_ci	  an arbitration point and yield to HW before the timer expires, the
6262306a36Sopenharmony_ci	  HW will be reset to allow the more important context to execute.
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci	  This is adjustable via
6562306a36Sopenharmony_ci	  /sys/class/drm/card?/engine/*/preempt_timeout_ms
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_ci	  May be 0 to disable the timeout.
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci	  The compiled in default may get overridden at driver probe time on
7062306a36Sopenharmony_ci	  certain platforms and certain engines which will be reflected in the
7162306a36Sopenharmony_ci	  sysfs control.
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ciconfig DRM_I915_PREEMPT_TIMEOUT_COMPUTE
7462306a36Sopenharmony_ci	int "Preempt timeout for compute engines (ms, jiffy granularity)"
7562306a36Sopenharmony_ci	default 7500 # milliseconds
7662306a36Sopenharmony_ci	help
7762306a36Sopenharmony_ci	  How long to wait (in milliseconds) for a preemption event to occur
7862306a36Sopenharmony_ci	  when submitting a new context to a compute capable engine. If the
7962306a36Sopenharmony_ci	  current context does not hit an arbitration point and yield to HW
8062306a36Sopenharmony_ci	  before the timer expires, the HW will be reset to allow the more
8162306a36Sopenharmony_ci	  important context to execute.
8262306a36Sopenharmony_ci
8362306a36Sopenharmony_ci	  This is adjustable via
8462306a36Sopenharmony_ci	  /sys/class/drm/card?/engine/*/preempt_timeout_ms
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci	  May be 0 to disable the timeout.
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ci	  The compiled in default may get overridden at driver probe time on
8962306a36Sopenharmony_ci	  certain platforms and certain engines which will be reflected in the
9062306a36Sopenharmony_ci	  sysfs control.
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ciconfig DRM_I915_MAX_REQUEST_BUSYWAIT
9362306a36Sopenharmony_ci	int "Busywait for request completion limit (ns)"
9462306a36Sopenharmony_ci	default 8000 # nanoseconds
9562306a36Sopenharmony_ci	help
9662306a36Sopenharmony_ci	  Before sleeping waiting for a request (GPU operation) to complete,
9762306a36Sopenharmony_ci	  we may spend some time polling for its completion. As the IRQ may
9862306a36Sopenharmony_ci	  take a non-negligible time to setup, we do a short spin first to
9962306a36Sopenharmony_ci	  check if the request will complete in the time it would have taken
10062306a36Sopenharmony_ci	  us to enable the interrupt.
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ci	  This is adjustable via
10362306a36Sopenharmony_ci	  /sys/class/drm/card?/engine/*/max_busywait_duration_ns
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci	  May be 0 to disable the initial spin. In practice, we estimate
10662306a36Sopenharmony_ci	  the cost of enabling the interrupt (if currently disabled) to be
10762306a36Sopenharmony_ci	  a few microseconds.
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ciconfig DRM_I915_STOP_TIMEOUT
11062306a36Sopenharmony_ci	int "How long to wait for an engine to quiesce gracefully before reset (ms)"
11162306a36Sopenharmony_ci	default 100 # milliseconds
11262306a36Sopenharmony_ci	help
11362306a36Sopenharmony_ci	  By stopping submission and sleeping for a short time before resetting
11462306a36Sopenharmony_ci	  the GPU, we allow the innocent contexts also on the system to quiesce.
11562306a36Sopenharmony_ci	  It is then less likely for a hanging context to cause collateral
11662306a36Sopenharmony_ci	  damage as the system is reset in order to recover. The corollary is
11762306a36Sopenharmony_ci	  that the reset itself may take longer and so be more disruptive to
11862306a36Sopenharmony_ci	  interactive or low latency workloads.
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci	  This is adjustable via
12162306a36Sopenharmony_ci	  /sys/class/drm/card?/engine/*/stop_timeout_ms
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ciconfig DRM_I915_TIMESLICE_DURATION
12462306a36Sopenharmony_ci	int "Scheduling quantum for userspace batches (ms, jiffy granularity)"
12562306a36Sopenharmony_ci	default 1 # milliseconds
12662306a36Sopenharmony_ci	help
12762306a36Sopenharmony_ci	  When two user batches of equal priority are executing, we will
12862306a36Sopenharmony_ci	  alternate execution of each batch to ensure forward progress of
12962306a36Sopenharmony_ci	  all users. This is necessary in some cases where there may be
13062306a36Sopenharmony_ci	  an implicit dependency between those batches that requires
13162306a36Sopenharmony_ci	  concurrent execution in order for them to proceed, e.g. they
13262306a36Sopenharmony_ci	  interact with each other via userspace semaphores. Each context
13362306a36Sopenharmony_ci	  is scheduled for execution for the timeslice duration, before
13462306a36Sopenharmony_ci	  switching to the next context.
13562306a36Sopenharmony_ci
13662306a36Sopenharmony_ci	  This is adjustable via
13762306a36Sopenharmony_ci	  /sys/class/drm/card?/engine/*/timeslice_duration_ms
13862306a36Sopenharmony_ci
13962306a36Sopenharmony_ci	  May be 0 to disable timeslicing.
140