[Intel-xe] [RFC 0/3] drm/xe: Add preemption timeout config options

Thomas Hellström thomas.hellstrom at linux.intel.com
Tue Jun 13 16:52:49 UTC 2023


Hi, Niranjana,

On 6/13/23 17:52, Niranjana Vishwanathapura wrote:
> On Tue, Jun 13, 2023 at 09:31:00AM +0200, Thomas Hellström wrote:
>> Hi, Niranjana
>>
>> The plan to handle non-preemptible hardware with Xe is either to use 
>> faulting or to pin memory and use CGROUPS to control the
>> pinning. So when that is fully flushed out, there shouldn't be a need 
>> for these changes?
>>
>
> Hi Thomas,
> Currently the preemption timeout is hardcoded in driver to 640ms. These
> patches are for preemptible hardware and allows preemption timeout to be
> configurable during compile time. These patches are being ported form 
> i915.
>
> Also, the purpose is actually to give compute tasks longer time to reach
> a pre-emption point after a pre-emption request has been issued. This is
> necessary because Gen12 does not support mid-thread pre-emption and 
> compute
> tasks can have long running threads.

For ordinary (!LR) contexts, I don't see a problem really as long as 
this can't be used to extend dma-fence signalling time beyond 10s, I 
perhaps need to sync up with Matt to understand how that limit is 
enforced in Xe.

But for the compute context, I'm worried that people will start using 
this to extend the signalling time of the preempt fences to make sure 
jobs aren't killed shortly after, for example, userptr invalidation 
because the compute kernel didn't preempt fast enough. That is not what 
we want for Xe clients.

The suggested solution to handle this latter problem in Xe for 
non-preemptible hardware is to avoid  having preempt fences request a 
timeout in the first place by pinning memory, which will need CGROUPS 
support, which Maarten is working on.

So in short I believe this is OK if there is no way this can be abused 
to extend signalling time of ordinary dma-fences or compute 
preempt-fences beyond 10s.

/Thomas


>
> Similarly DRM_XE_PREEMPT_TIMEOUT_COMPUTE_COPY sets the default timeout
> for copy engine to a higher value for PVC.
>
> Niranjana
>
>> /Thomas
>>
>> On 6/10/23 02:12, Niranjana Vishwanathapura wrote:
>>> Allow preemption timeouts to be specified as a config options.
>>>
>>> Signed-off-by: Niranjana Vishwanathapura 
>>> <niranjana.vishwanathapura at intel.com>
>>>
>>> Niranjana Vishwanathapura (3):
>>>   drm/xe: Add CONFIG_DRM_XE_PREEMPT_TIMEOUT
>>>   drm/xe: Add DRM_XE_PREEMPT_TIMEOUT_COMPUTE
>>>   drm/xe: Add DRM_XE_PREEMPT_TIMEOUT_COMPUTE_COPY
>>>
>>>  drivers/gpu/drm/xe/Kconfig         |  6 +++++
>>>  drivers/gpu/drm/xe/Kconfig.profile | 40 ++++++++++++++++++++++++++++++
>>>  drivers/gpu/drm/xe/xe_engine.c     | 30 +++++++++++++++++++++-
>>>  3 files changed, 75 insertions(+), 1 deletion(-)
>>>  create mode 100644 drivers/gpu/drm/xe/Kconfig.profile
>>>


More information about the Intel-xe mailing list