[Intel-gfx] [PATCH] drm/i915: Skip logging impossible slices
Chris Wilson
chris at chris-wilson.co.uk
Wed Mar 21 11:54:04 UTC 2018
Quoting Jani Nikula (2018-03-21 11:47:06)
>
> On Wed, 21 Mar 2018, Chris Wilson <chris at chris-wilson.co.uk> wrote:
> > Quoting Chris Wilson (2018-03-21 10:41:37)
> >> Quoting Tvrtko Ursulin (2018-03-21 10:32:28)
> >> > From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> >> >
> >> > Log up to sseu->max_slices instead basing on ARRAY_SIZE since to avoid
> >> > printing impossible and empty slices for a platform.
> >> >
> >> > Also compact slice total and slice mask into one log line.
> >> >
> >> > Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> >> > Cc: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> >> > ---
> >> > drivers/gpu/drm/i915/intel_device_info.c | 8 ++++----
> >> > 1 file changed, 4 insertions(+), 4 deletions(-)
> >> >
> >> > diff --git a/drivers/gpu/drm/i915/intel_device_info.c b/drivers/gpu/drm/i915/intel_device_info.c
> >> > index 4babfc6ee45b..68aa9746d0e1 100644
> >> > --- a/drivers/gpu/drm/i915/intel_device_info.c
> >> > +++ b/drivers/gpu/drm/i915/intel_device_info.c
> >> > @@ -83,11 +83,11 @@ static void sseu_dump(const struct sseu_dev_info *sseu, struct drm_printer *p)
> >> > {
> >> > int s;
> >> >
> >> > - drm_printf(p, "slice mask: %04x\n", sseu->slice_mask);
> >> > - drm_printf(p, "slice total: %u\n", hweight8(sseu->slice_mask));
> >> > + drm_printf(p, "slice total: %u, mask=%04x\n",
> >> > + hweight8(sseu->slice_mask), sseu->slice_mask);
> >> > drm_printf(p, "subslice total: %u\n", sseu_subslice_total(sseu));
> >> > - for (s = 0; s < ARRAY_SIZE(sseu->subslice_mask); s++) {
> >> > - drm_printf(p, "slice%d %u subslices mask=%04x\n",
> >> > + for (s = 0; s < sseu->max_slices; s++) {
> >> > + drm_printf(p, "slice%d: %u subslices, mask=%04x\n",
> >> > s, hweight8(sseu->subslice_mask[s]),
> >> > sseu->subslice_mask[s]);
> >>
> >> Just idly testing the waters...
> >>
> >> In yaml, this would be
> >> "<indent>- slice%d: { subslices: %u, mask: 0x%04x }\n"
> >
> > Or if we keep the node name the same for easier parsing:
> >
> > "<indent>- slice: { id:%u, subslices:%u, mask:0x%04x }\n"
>
> I'm not against doing this, especially for gpu dumps.
>
> Wouldn't json be easier to generate and parse? Or do you prefer the
> slightly better human readability of yaml?
I think for any of the debug output preferring to keep it as readable as
possible is essential. libyaml isn't that hard to use, even for a
beginner like myself.
> I think it would be pretty straighforward to write drm printer helpers
> for printing valid json without having to actually manually print the
> colons and braces etc. And the struct drm_printer could even have checks
> for ensuring you don't burp verbatim stuff to a printer that's supposed
> to be json.
About the biggest challenge is tracking indent; which drm_printer
already does iirc. Still, I think we want to move this into lib/
> Any considerations for the transition? Massive wholesale patch bomb
> conversion? Yikes.
I think it's only worth converting bits and pieces that we are trying to
parse. So quite a few debugfs are candidates, and the error-state being
a prime example as we want to make it more amenable and flexible for
future post-mortem capture depending on what userspace needs. (I might
even go as far as all future debugfs should come with a parser for igt.)
-Chris
More information about the Intel-gfx
mailing list