• Srinivasan Shanmugam's avatar
    drm/amdgpu: Implement Enforce Isolation Handler for KGD/KFD serialization · afefd6f2
    Srinivasan Shanmugam authored
    This commit introduces the Enforce Isolation Handler designed to enforce
    shader isolation on AMD GPUs, which helps to prevent data leakage
    between different processes.
    
    The handler counts the number of emitted fences for each GFX and compute
    ring. If there are any fences, it schedules the `enforce_isolation_work`
    to be run after a delay of `GFX_SLICE_PERIOD`. If there are no fences,
    it signals the Kernel Fusion Driver (KFD) to resume the runqueue.
    
    The function is synchronized using the `enforce_isolation_mutex`.
    
    This commit also introduces a reference count mechanism
    (kfd_sch_req_count) to keep track of the number of requests to enable
    the KFD scheduler. When a request to enable the KFD scheduler is made,
    the reference count is decremented. When the reference count reaches
    zero, a delayed work is scheduled to enforce isolation after a delay of
    GFX_SLICE_PERIOD.
    
    When a request to disable the KFD scheduler is made, the function first
    checks if the reference count is zero. If it is, it cancels the delayed
    work for enforcing isolation and checks if the KFD scheduler is active.
    If the KFD scheduler is active, it sends a request to stop the KFD
    scheduler and sets the KFD scheduler state to inactive. Then, it
    increments the reference count.
    
    The function is synchronized using the kfd_sch_mutex to ensure that the
    KFD scheduler state and reference count are updated atomically.
    
    Cc: Christian König <christian.koenig@amd.com>
    Cc: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    Signed-off-by: default avatarSrinivasan Shanmugam <srinivasan.shanmugam@amd.com>
    Suggested-by: default avatarChristian König <christian.koenig@amd.com>
    Suggested-by: default avatarAlex Deucher <alexander.deucher@amd.com>
    afefd6f2
amdgpu_device.c 180 KB