Re: [Intel-gfx] [PATCH 1/7] drm/i915/guc: Add a helper for log buffer size

John Harrison
2022-08-03T00:30:08Z

On 8/2/2022 10:37, Teres Alexis, Alan Previn wrote:
> Something minor in comments, so conditional R-B (please fix on the way in or reply to correct me):
>
> Reviewed-by: Alan Previn <alan.previn.teres.alexis@intel.com>
>
> On Wed, 2022-07-27 at 19:20 -0700, Harrison, John C wrote:
>> From: Alan Previn <alan.previn.teres.alexis@intel.com>
>>
>> Add a helper to get GuC log buffer size.
>>
>> Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com>
>> Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
>> Reviewed-by: Matthew Brost <matthew.brost@intel.com>
>> ---
>> drivers/gpu/drm/i915/gt/uc/intel_guc_log.c | 49 ++++++++++++----------
>> 1 file changed, 27 insertions(+), 22 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
>> index 25b2d7ce6640d..492bbf419d4df 100644
>> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
>> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
>> @@ -15,6 +15,32 @@
>>
>> static void guc_log_copy_debuglogs_for_relay(struct intel_guc_log *log);
>>
>> +static u32 intel_guc_log_size(struct intel_guc_log *log)
>> +{
>> + /*
>> + * GuC Log buffer Layout:
>> + *
>> + * NB: Ordering must follow "enum guc_log_buffer_type".
>> + *
>> + * +===============================+ 00B
>> + * | Debug state header |
>> + * +-------------------------------+ 32B
>>
> Something we might have missed in prior updates but i think the bufer state is now 36 bytes long no? (9 dwords).
Good catch. Yes, an extra word was added some while back.

John.

>
>
>> + * | Crash dump state header |
>> + * +-------------------------------+ 64B
>> + * | Capture state header |
>> + * +-------------------------------+ 96B
>> + * | |
>> + * +===============================+ PAGE_SIZE (4KB)
>> + * | Debug logs |
>> + * +===============================+ + DEBUG_SIZE
>> + * | Crash Dump logs |
>> + * +===============================+ + CRASH_SIZE
>> + * | Capture logs |
>> + * +===============================+ + CAPTURE_SIZE
>> + */
>> + return PAGE_SIZE + CRASH_BUFFER_SIZE + DEBUG_BUFFER_SIZE + CAPTURE_BUFFER_SIZE;
>> +}
>> +
>> /**
>> * DOC: GuC firmware log
>> *
>> @@ -461,32 +487,11 @@ int intel_guc_log_create(struct intel_guc_log *log)
>>
>> GEM_BUG_ON(log->vma);
>>
>> - /*
>> - * GuC Log buffer Layout
>> - * (this ordering must follow "enum guc_log_buffer_type" definition)
>> - *
>> - * +===============================+ 00B
>> - * | Debug state header |
>> - * +-------------------------------+ 32B
>> - * | Crash dump state header |
>> - * +-------------------------------+ 64B
>> - * | Capture state header |
>> - * +-------------------------------+ 96B
>> - * | |
>> - * +===============================+ PAGE_SIZE (4KB)
>> - * | Debug logs |
>> - * +===============================+ + DEBUG_SIZE
>> - * | Crash Dump logs |
>> - * +===============================+ + CRASH_SIZE
>> - * | Capture logs |
>> - * +===============================+ + CAPTURE_SIZE
>> - */
>> if (intel_guc_capture_output_min_size_est(guc) > CAPTURE_BUFFER_SIZE)
>> DRM_WARN("GuC log buffer for state_capture maybe too small. %d < %d\n",
>> CAPTURE_BUFFER_SIZE, intel_guc_capture_output_min_size_est(guc));
>>
>> - guc_log_size = PAGE_SIZE + CRASH_BUFFER_SIZE + DEBUG_BUFFER_SIZE +
>> - CAPTURE_BUFFER_SIZE;
>> + guc_log_size = intel_guc_log_size(log);
>>
>> vma = intel_guc_allocate_vma(guc, guc_log_size);
>> if (IS_ERR(vma)) {
>> --
>> 2.37.1
>>