Message ID | 20220728022028.2190627-2-John.C.Harrison@Intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fixes and improvements to GuC logging and error capture | expand |
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). > + * | 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 >
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 >>
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 + * | 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)) {