[Intel-gfx] [PATCH v2 4/7] drm/i915/guc/ct: Group request-related variables in a sub-structure

Daniele Ceraolo Spurio daniele.ceraolospurio at intel.com
Tue Dec 17 23:43:38 UTC 2019



On 12/17/19 1:42 PM, Michal Wajdeczko wrote:
> On Tue, 17 Dec 2019 02:23:13 +0100, Daniele Ceraolo Spurio 
> <daniele.ceraolospurio at intel.com> wrote:
> 
>> For better isolation of the request tracking from the rest of the
>> CT-related data.
>>
>> v2: split to separate patch, move next_fence to substructure (Michal)
>>
>> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
>> Cc: Michal Wajdeczko <michal.wajdeczko at intel.com>
>> Cc: John Harrison <John.C.Harrison at Intel.com>
>> Cc: Matthew Brost <matthew.brost at intel.com>
>> ---
> 
> Reviewed-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
> 
> with some nits below (we may fix them later)
> 
> /snip/
> 
>> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h 
>> b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h
>> index 6e3d789b9f01..29a026dc3a13 100644
>> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h
>> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_ct.h
>> @@ -48,12 +48,15 @@ struct intel_guc_ct {
>>      /* buffers for sending(0) and receiving(1) commands */
>>      struct intel_guc_ct_buffer ctbs[2];
>> -    u32 next_fence; /* fence to be used with next send command */
>> +    struct {
>> +        u32 next_fence; /* fence to be used with next request to send */
> 
> nit: strictly speaking this is "last" fence
>       we just use it to generate next one
> 
>> -    spinlock_t lock; /* protects pending requests list */
>> -    struct list_head pending_requests; /* requests waiting for 
>> response */
>> -    struct list_head incoming_requests; /* incoming requests */
>> -    struct work_struct worker; /* handler for incoming requests */
>> +        spinlock_t lock; /* protects pending requests list */
> 
> nit: do we want to use this lock to protect "next/last" fence ?
>       if yes, then maybe lock shall be first ?

We currently only touch this while holding send_mutex, so we don't need 
the spinlock as well. We can move it later if we ever re-organize the 
locking structure.

Daniele

> 
>> +        struct list_head pending; /* requests waiting for response */
>> +
>> +        struct list_head incoming; /* incoming requests */
>> +        struct work_struct worker; /* handler for incoming requests */
>> +    } requests;
>>  };
>> void intel_guc_ct_init_early(struct intel_guc_ct *ct);


More information about the Intel-gfx mailing list