drm/xe: Kernel doc GT TLB invalidations
Document all exported functions. Signed-off-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
This commit is contained in:
committed by
Rodrigo Vivi
parent
f4a8add94f
commit
c6b0948ff8
@@ -14,6 +14,15 @@ guc_to_gt(struct xe_guc *guc)
|
||||
return container_of(guc, struct xe_gt, uc.guc);
|
||||
}
|
||||
|
||||
/**
|
||||
* xe_gt_tlb_invalidation_init - Initialize GT TLB invalidation state
|
||||
* @gt: graphics tile
|
||||
*
|
||||
* Initialize GT TLB invalidation state, purely software initialization, should
|
||||
* be called once during driver load.
|
||||
*
|
||||
* Return: 0 on success, negative error code on error.
|
||||
*/
|
||||
int xe_gt_tlb_invalidation_init(struct xe_gt *gt)
|
||||
{
|
||||
gt->tlb_invalidation.seqno = 1;
|
||||
@@ -24,7 +33,13 @@ int xe_gt_tlb_invalidation_init(struct xe_gt *gt)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void xe_gt_tlb_invalidation_reset(struct xe_gt *gt)
|
||||
/**
|
||||
* xe_gt_tlb_invalidation_reset - Initialize GT TLB invalidation reset
|
||||
* @gt: graphics tile
|
||||
*
|
||||
* Signal any pending invalidation fences, should be called during a GT reset
|
||||
*/
|
||||
void xe_gt_tlb_invalidation_reset(struct xe_gt *gt)
|
||||
{
|
||||
struct xe_gt_tlb_invalidation_fence *fence, *next;
|
||||
|
||||
@@ -82,6 +97,19 @@ static int send_tlb_invalidation(struct xe_guc *guc,
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* xe_gt_tlb_invalidation - Issue a TLB invalidation on this GT
|
||||
* @gt: graphics tile
|
||||
* @fence: invalidation fence which will be signal on TLB invalidation
|
||||
* completion, can be NULL
|
||||
*
|
||||
* Issue a full TLB invalidation on the GT. Completion of TLB is asynchronous
|
||||
* and caller can either use the invalidation fence or seqno +
|
||||
* xe_gt_tlb_invalidation_wait to wait for completion.
|
||||
*
|
||||
* Return: Seqno which can be passed to xe_gt_tlb_invalidation_wait on success,
|
||||
* negative error code on error.
|
||||
*/
|
||||
int xe_gt_tlb_invalidation(struct xe_gt *gt,
|
||||
struct xe_gt_tlb_invalidation_fence *fence)
|
||||
{
|
||||
@@ -100,6 +128,16 @@ static bool tlb_invalidation_seqno_past(struct xe_gt *gt, int seqno)
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* xe_gt_tlb_invalidation_wait - Wait for TLB to complete
|
||||
* @gt: graphics tile
|
||||
* @seqno: seqno to wait which was returned from xe_gt_tlb_invalidation
|
||||
*
|
||||
* Wait for 200ms for a TLB invalidation to complete, in practice we always
|
||||
* should receive the TLB invalidation within 200ms.
|
||||
*
|
||||
* Return: 0 on success, -ETIME on TLB invalidation timeout
|
||||
*/
|
||||
int xe_gt_tlb_invalidation_wait(struct xe_gt *gt, int seqno)
|
||||
{
|
||||
struct xe_device *xe = gt_to_xe(gt);
|
||||
@@ -122,6 +160,18 @@ int xe_gt_tlb_invalidation_wait(struct xe_gt *gt, int seqno)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* xe_guc_tlb_invalidation_done_handler - TLB invalidation done handler
|
||||
* @guc: guc
|
||||
* @msg: message indicating TLB invalidation done
|
||||
* @len: length of message
|
||||
*
|
||||
* Parse seqno of TLB invalidation, wake any waiters for seqno, and signal any
|
||||
* invalidation fences for seqno. Algorithm for this depends on seqno being
|
||||
* received in-order and asserts this assumption.
|
||||
*
|
||||
* Return: 0 on success, -EPROTO for malformed messages.
|
||||
*/
|
||||
int xe_guc_tlb_invalidation_done_handler(struct xe_guc *guc, u32 *msg, u32 len)
|
||||
{
|
||||
struct xe_gt *gt = guc_to_gt(guc);
|
||||
|
||||
Reference in New Issue
Block a user