18c2ecf20Sopenharmony_ciconfig DRM_I915_FENCE_TIMEOUT 28c2ecf20Sopenharmony_ci int "Timeout for unsignaled foreign fences (ms, jiffy granularity)" 38c2ecf20Sopenharmony_ci default 10000 # milliseconds 48c2ecf20Sopenharmony_ci help 58c2ecf20Sopenharmony_ci When listening to a foreign fence, we install a supplementary timer 68c2ecf20Sopenharmony_ci to ensure that we are always signaled and our userspace is able to 78c2ecf20Sopenharmony_ci make forward progress. This value specifies the timeout used for an 88c2ecf20Sopenharmony_ci unsignaled foreign fence. 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci May be 0 to disable the timeout, and rely on the foreign fence being 118c2ecf20Sopenharmony_ci eventually signaled. 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ciconfig DRM_I915_USERFAULT_AUTOSUSPEND 148c2ecf20Sopenharmony_ci int "Runtime autosuspend delay for userspace GGTT mmaps (ms)" 158c2ecf20Sopenharmony_ci default 250 # milliseconds 168c2ecf20Sopenharmony_ci help 178c2ecf20Sopenharmony_ci On runtime suspend, as we suspend the device, we have to revoke 188c2ecf20Sopenharmony_ci userspace GGTT mmaps and force userspace to take a pagefault on 198c2ecf20Sopenharmony_ci their next access. The revocation and subsequent recreation of 208c2ecf20Sopenharmony_ci the GGTT mmap can be very slow and so we impose a small hysteris 218c2ecf20Sopenharmony_ci that complements the runtime-pm autosuspend and provides a lower 228c2ecf20Sopenharmony_ci floor on the autosuspend delay. 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ci May be 0 to disable the extra delay and solely use the device level 258c2ecf20Sopenharmony_ci runtime pm autosuspend delay tunable. 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ciconfig DRM_I915_HEARTBEAT_INTERVAL 288c2ecf20Sopenharmony_ci int "Interval between heartbeat pulses (ms)" 298c2ecf20Sopenharmony_ci default 2500 # milliseconds 308c2ecf20Sopenharmony_ci help 318c2ecf20Sopenharmony_ci The driver sends a periodic heartbeat down all active engines to 328c2ecf20Sopenharmony_ci check the health of the GPU and undertake regular house-keeping of 338c2ecf20Sopenharmony_ci internal driver state. 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci This is adjustable via 368c2ecf20Sopenharmony_ci /sys/class/drm/card?/engine/*/heartbeat_interval_ms 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci May be 0 to disable heartbeats and therefore disable automatic GPU 398c2ecf20Sopenharmony_ci hang detection. 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ciconfig DRM_I915_PREEMPT_TIMEOUT 428c2ecf20Sopenharmony_ci int "Preempt timeout (ms, jiffy granularity)" 438c2ecf20Sopenharmony_ci default 640 # milliseconds 448c2ecf20Sopenharmony_ci help 458c2ecf20Sopenharmony_ci How long to wait (in milliseconds) for a preemption event to occur 468c2ecf20Sopenharmony_ci when submitting a new context via execlists. If the current context 478c2ecf20Sopenharmony_ci does not hit an arbitration point and yield to HW before the timer 488c2ecf20Sopenharmony_ci expires, the HW will be reset to allow the more important context 498c2ecf20Sopenharmony_ci to execute. 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci This is adjustable via 528c2ecf20Sopenharmony_ci /sys/class/drm/card?/engine/*/preempt_timeout_ms 538c2ecf20Sopenharmony_ci 548c2ecf20Sopenharmony_ci May be 0 to disable the timeout. 558c2ecf20Sopenharmony_ci 568c2ecf20Sopenharmony_ci The compiled in default may get overridden at driver probe time on 578c2ecf20Sopenharmony_ci certain platforms and certain engines which will be reflected in the 588c2ecf20Sopenharmony_ci sysfs control. 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ciconfig DRM_I915_MAX_REQUEST_BUSYWAIT 618c2ecf20Sopenharmony_ci int "Busywait for request completion limit (ns)" 628c2ecf20Sopenharmony_ci default 8000 # nanoseconds 638c2ecf20Sopenharmony_ci help 648c2ecf20Sopenharmony_ci Before sleeping waiting for a request (GPU operation) to complete, 658c2ecf20Sopenharmony_ci we may spend some time polling for its completion. As the IRQ may 668c2ecf20Sopenharmony_ci take a non-negligible time to setup, we do a short spin first to 678c2ecf20Sopenharmony_ci check if the request will complete in the time it would have taken 688c2ecf20Sopenharmony_ci us to enable the interrupt. 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_ci This is adjustable via 718c2ecf20Sopenharmony_ci /sys/class/drm/card?/engine/*/max_busywait_duration_ns 728c2ecf20Sopenharmony_ci 738c2ecf20Sopenharmony_ci May be 0 to disable the initial spin. In practice, we estimate 748c2ecf20Sopenharmony_ci the cost of enabling the interrupt (if currently disabled) to be 758c2ecf20Sopenharmony_ci a few microseconds. 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_ciconfig DRM_I915_STOP_TIMEOUT 788c2ecf20Sopenharmony_ci int "How long to wait for an engine to quiesce gracefully before reset (ms)" 798c2ecf20Sopenharmony_ci default 100 # milliseconds 808c2ecf20Sopenharmony_ci help 818c2ecf20Sopenharmony_ci By stopping submission and sleeping for a short time before resetting 828c2ecf20Sopenharmony_ci the GPU, we allow the innocent contexts also on the system to quiesce. 838c2ecf20Sopenharmony_ci It is then less likely for a hanging context to cause collateral 848c2ecf20Sopenharmony_ci damage as the system is reset in order to recover. The corollary is 858c2ecf20Sopenharmony_ci that the reset itself may take longer and so be more disruptive to 868c2ecf20Sopenharmony_ci interactive or low latency workloads. 878c2ecf20Sopenharmony_ci 888c2ecf20Sopenharmony_ci This is adjustable via 898c2ecf20Sopenharmony_ci /sys/class/drm/card?/engine/*/stop_timeout_ms 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ciconfig DRM_I915_TIMESLICE_DURATION 928c2ecf20Sopenharmony_ci int "Scheduling quantum for userspace batches (ms, jiffy granularity)" 938c2ecf20Sopenharmony_ci default 1 # milliseconds 948c2ecf20Sopenharmony_ci help 958c2ecf20Sopenharmony_ci When two user batches of equal priority are executing, we will 968c2ecf20Sopenharmony_ci alternate execution of each batch to ensure forward progress of 978c2ecf20Sopenharmony_ci all users. This is necessary in some cases where there may be 988c2ecf20Sopenharmony_ci an implicit dependency between those batches that requires 998c2ecf20Sopenharmony_ci concurrent execution in order for them to proceed, e.g. they 1008c2ecf20Sopenharmony_ci interact with each other via userspace semaphores. Each context 1018c2ecf20Sopenharmony_ci is scheduled for execution for the timeslice duration, before 1028c2ecf20Sopenharmony_ci switching to the next context. 1038c2ecf20Sopenharmony_ci 1048c2ecf20Sopenharmony_ci This is adjustable via 1058c2ecf20Sopenharmony_ci /sys/class/drm/card?/engine/*/timeslice_duration_ms 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci May be 0 to disable timeslicing. 108