[Intel-gfx] [PATCH 1/2] drm/i915/guc: Add error-capture init warnings when needed
Teres Alexis, Alan Previn
alan.previn.teres.alexis at intel.com
Wed Oct 19 05:14:48 UTC 2022
Update: One additional change needed... after more testing i have come to realize that
intel_guc_capture_getlistsize is also being triggered before ADS-guc-error-capture
register-list population during initialization of the guc-error-capture module itself
(intel_guc_capture_init). Its getting called as part of a check on the size of the
guc-log-buffer-error-capture-region to verify its big enough for the current platform
(assuming all engine masks + all steered-register permutations). So at that early
point, we do encounter the "OTHER ENGINE" showing up as a possible engine but in
fact none of the current hardware has that (yet). So to ensure this warning is not printed
during this early size estimation check:
i shall make "intel_guc_capture_getlistsize" a wrapper around a new function
"static int guc_capture_getlistsize(...[same-params]..., bool is_purpose_estimation)"
which contains all the original logic and uses new boolean for the additional check
on whether to print the warning or not.
current code:
if (!guc_capture_get_one_list(gc->reglists, owner, type, classid)) {
if (owner == GUC_CAPTURE_LIST_INDEX_PF && type == GUC_CAPTURE_LIST_TYPE_GLOBAL)
drm_warn(&i915->drm, "Missing GuC reglist Global\n");
... ...
...
new code:
if (!is_purpose_estimation && owner == GUC_CAPTURE_LIST_INDEX_PF &&
!guc_capture_get_one_list(gc->reglists, owner, type, classid)) {
if (tpe == GUC_CAPTURE_LIST_TYPE_GLOBAL)
drm_warn(&i915->drm, "Missing GuC reglist Global\n");
...
...
On Tue, 2022-10-18 at 09:00 +0100, Tvrtko Ursulin wrote:
> > > > + if (!guc_capture_get_one_list(gc->reglists, owner, type, classid)) {
> > > > + if (owner == GUC_CAPTURE_LIST_INDEX_PF && type == GUC_CAPTURE_LIST_TYPE_GLOBAL)
> > > > + drm_warn(&i915->drm, "GuC-capture: missing reglist type-Global\n");
> > > > + if (owner == GUC_CAPTURE_LIST_INDEX_PF)
> > >
> > > GUC_CAPTURE_LIST_INDEX_PF could be made once on the enclosing if statement?
> > Sure - will do.
> > >
> > > Btw what's with the PF and VF (cover letter) references while SRIOV does not exists upstream?
> > To maintain a scalable code flow across both the ADS code and guc-error-capture code, we do have to skip over this enum
> > else we'll encounter lots of warnings about missing VF-reglist support (which we cant check for since we dont even have
> > support - i.e we dont even have a "is not supported" check) but the GuC firmware ADS buffer allocation includes an entry
> > for VFs so we have to skip over it. This is the cleanest way i can think of without impacting other code areas and also
> > while adding the ability to warn when its important.
> > > > + drm_warn(&i915->drm, "GuC-capture: missing regiist type(%d)-%s : "
> > >
> > > reglist
> > thanks - will fix
> > >
> > > > + "%s(%d)-Engine\n", type, __stringify_type(type),
> > > > + __stringify_engclass(classid), classid);
> > >
> > > One details to consider from Documentation/process/coding-style.rst
> > > """
> > > However, never break user-visible strings such as printk messages because that breaks the ability to grep for them.
> > > """
> > >
> > I totally agree with you but i cant find a way to keep totally grep-able way without creating a whole set of error
> > strings for the various list-types, list-owners and class-types. However i did ensure the first part of the message
> > is grep-able : "GuC-capture: missing reglist type". Do you an alternative proposal?
>
> Yeah it is not very greppable being largely constructed at runtime, but
> just don't break the string. IMO no gain to diverge from coding style here.
>
> Or maybe with one level of indentation less as discussed, and maybe
> remove "GuC-capture" if it can be implied (are there other reglists not
> relating to error capture?), maybe it becomes short enough?
>
> "Missing GuC reglist %s(%u):%s(%u)!", ...
>
> ?
>
Yes. this will work well - will use this.
> Type will never be unknown I suspect since it should always be added
> very early during development. So type and engine suffixes may be
> redundant? Or keep it verbose if that fits better with existing GuC
> error capture logging, I don't know.
>
above is good. :)
> >
> > > Also commit message you can aim to wrap at 75 chars as per submitting-patches.rst.
> > >
> > > > + return -ENODATA;
> > >
> > > Is this a new exit condition or the thing would exit on the !num_regs check below anyway? Just wondering if the series is only about logging changes or there is more to it.
> > Its no different from previous behavior - and yes its about logging the missing reg lists for hw that needs it as we are
> > missing this for DG2 we we didn't notice (we did a previous revert to remove these warnings but that time the warnings
> > was too verbose - even complaining for the intentional empty lists and for VF cases that isnt supported).
>
> Okay think I get it, thanks. If the "positive match" logging of empty
> list is more future proof than "negative - don't log these" you will
> know better.
>
> Regards,
>
> Tvrtko
>
> >
More information about the Intel-gfx
mailing list