From: Matthias Kaehlcke <mka@chromium.org>
To: Grant Grundler <grundler@chromium.org>
Cc: dri-devel@lists.freedesktop.org, David Airlie <airlied@linux.ie>,
intel-gfx@lists.freedesktop.org,
LKML <linux-kernel@vger.kernel.org>,
Michael Davidson <md@google.com>,
Greg Hackmann <ghackmann@google.com>,
Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: [PATCH RESEND] drm/i915: Fix pipe/transcoder enum mismatches
Date: Fri, 5 May 2017 14:37:32 -0700 [thread overview]
Message-ID: <20170505213732.GE128305@google.com> (raw)
In-Reply-To: <CANEJEGs0WARN-w4Gm9O39uB53BfV35VXWgUibsCX3UYpMBNxfQ@mail.gmail.com>
Hi,
El Fri, May 05, 2017 at 01:29:32PM -0700 Grant Grundler ha dit:
> On Fri, May 5, 2017 at 1:08 PM, Ville Syrjälä
> <ville.syrjala@linux.intel.com> wrote:
> ...
> >> > I'm not convinced the patch is making things any better really. To
> >> > fix this really properly, I think we'd need to introduce a new enum
> >> > pch_transcoder and thus avoid the confusion of which type of
> >> > transcoder we're talking about.
I agree, the patch certainly doesn't improve the confusing use of the enums.
> >> Is an enum better than coding an explicit conversion in an inline function?
> >
> > The point of the enum would be to make it more clear which piece of
> > hardware we're talking to in each case.
>
> Ah ok - I misunderstood - I thought this was already the case.
>
> > But this would require going
> > through the entire PCH code and changing things to use the right type
> > in each case. Quite a bit of work with little measurable gain I'd say.
>
> IMHO, one of the best things that happened to C standard was addition
> of strong type checking. It's helped prevent developers from making
> one class of "stupid mistakes". So while this change wouldn't improve
> performance, it would allow a form of automated correctness checking
> that can be enforced with every patch you get (every time the code
> base is compiled).
>
> In other words, the gain isn't currently measurable the same way
> performance is but I believe it's worth doing. Given the number of
> typedefs and enums in kernel code, I suspect most kernel developers
> would agree.
I also think that proper use of enums is an additional line of defense
against "stupid mistakes". While weeding out these warnings in
different drivers I came across a few cases were the code was working
out of sheer luck because the (unintentionally) mismatched enums
resolved to the same value.
Cheers
Matthias
> >> Then the code can do some sanity checking as well. Something like:
> >>
> >> enum transcoder pch_to_cpu_enum(enum pipe)
> >> {
> >> WARN_ON(pipe > FOO);
> >> return (enum transcoder) pipe;
> >> }
> >
> > That would have to be called pipe_to_pch_transcoder() or something like
> > that.
> >
> >>
> >> > Currently most places expect an
> >> > enum pipe when dealing with PCH transcoders, and enum transcoder
> >> > when dealing with CPU transcoders. But there are some exceptions
> >> > of course.
> >>
> >> cheers,
> >> grant
> >> >
> >
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
WARNING: multiple messages have this Message-ID (diff)
From: Matthias Kaehlcke <mka@chromium.org>
To: Grant Grundler <grundler@chromium.org>
Cc: "Ville Syrjälä" <ville.syrjala@linux.intel.com>,
"Daniel Vetter" <daniel.vetter@intel.com>,
"Jani Nikula" <jani.nikula@linux.intel.com>,
"David Airlie" <airlied@linux.ie>,
intel-gfx@lists.freedesktop.org,
LKML <linux-kernel@vger.kernel.org>,
"Greg Hackmann" <ghackmann@google.com>,
"Michael Davidson" <md@google.com>,
dri-devel@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH RESEND] drm/i915: Fix pipe/transcoder enum mismatches
Date: Fri, 5 May 2017 14:37:32 -0700 [thread overview]
Message-ID: <20170505213732.GE128305@google.com> (raw)
In-Reply-To: <CANEJEGs0WARN-w4Gm9O39uB53BfV35VXWgUibsCX3UYpMBNxfQ@mail.gmail.com>
Hi,
El Fri, May 05, 2017 at 01:29:32PM -0700 Grant Grundler ha dit:
> On Fri, May 5, 2017 at 1:08 PM, Ville Syrjälä
> <ville.syrjala@linux.intel.com> wrote:
> ...
> >> > I'm not convinced the patch is making things any better really. To
> >> > fix this really properly, I think we'd need to introduce a new enum
> >> > pch_transcoder and thus avoid the confusion of which type of
> >> > transcoder we're talking about.
I agree, the patch certainly doesn't improve the confusing use of the enums.
> >> Is an enum better than coding an explicit conversion in an inline function?
> >
> > The point of the enum would be to make it more clear which piece of
> > hardware we're talking to in each case.
>
> Ah ok - I misunderstood - I thought this was already the case.
>
> > But this would require going
> > through the entire PCH code and changing things to use the right type
> > in each case. Quite a bit of work with little measurable gain I'd say.
>
> IMHO, one of the best things that happened to C standard was addition
> of strong type checking. It's helped prevent developers from making
> one class of "stupid mistakes". So while this change wouldn't improve
> performance, it would allow a form of automated correctness checking
> that can be enforced with every patch you get (every time the code
> base is compiled).
>
> In other words, the gain isn't currently measurable the same way
> performance is but I believe it's worth doing. Given the number of
> typedefs and enums in kernel code, I suspect most kernel developers
> would agree.
I also think that proper use of enums is an additional line of defense
against "stupid mistakes". While weeding out these warnings in
different drivers I came across a few cases were the code was working
out of sheer luck because the (unintentionally) mismatched enums
resolved to the same value.
Cheers
Matthias
> >> Then the code can do some sanity checking as well. Something like:
> >>
> >> enum transcoder pch_to_cpu_enum(enum pipe)
> >> {
> >> WARN_ON(pipe > FOO);
> >> return (enum transcoder) pipe;
> >> }
> >
> > That would have to be called pipe_to_pch_transcoder() or something like
> > that.
> >
> >>
> >> > Currently most places expect an
> >> > enum pipe when dealing with PCH transcoders, and enum transcoder
> >> > when dealing with CPU transcoders. But there are some exceptions
> >> > of course.
> >>
> >> cheers,
> >> grant
> >> >
> >
next prev parent reply other threads:[~2017-05-05 21:37 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-20 21:56 [PATCH RESEND] drm/i915: Fix pipe/transcoder enum mismatches Matthias Kaehlcke
2017-04-20 21:56 ` Matthias Kaehlcke
2017-04-20 22:15 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-05-05 17:26 ` [PATCH RESEND] " Matthias Kaehlcke
2017-05-05 17:26 ` Matthias Kaehlcke
2017-05-05 17:40 ` [Intel-gfx] " Ville Syrjälä
2017-05-05 17:40 ` Ville Syrjälä
2017-05-05 19:12 ` Grant Grundler
2017-05-05 19:12 ` [Intel-gfx] " Grant Grundler
2017-05-05 20:08 ` Ville Syrjälä
2017-05-05 20:08 ` Ville Syrjälä
2017-05-05 20:29 ` Grant Grundler
2017-05-05 20:29 ` [Intel-gfx] " Grant Grundler
2017-05-05 21:37 ` Matthias Kaehlcke [this message]
2017-05-05 21:37 ` Matthias Kaehlcke
2017-05-08 7:21 ` Daniel Vetter
2017-05-08 7:21 ` Daniel Vetter
2017-05-08 8:17 ` Jani Nikula
2017-05-08 8:17 ` [Intel-gfx] " Jani Nikula
2017-07-13 2:28 ` Stéphane Marchesin
2017-07-13 2:28 ` [Intel-gfx] " Stéphane Marchesin
2017-07-13 10:13 ` Ville Syrjälä
2017-07-13 12:24 ` Daniel Vetter
2017-07-13 12:24 ` [Intel-gfx] " Daniel Vetter
2017-07-13 16:23 ` Stéphane Marchesin
2017-07-13 16:23 ` [Intel-gfx] " Stéphane Marchesin
2017-07-13 17:42 ` Ville Syrjälä
2017-07-13 17:42 ` [Intel-gfx] " Ville Syrjälä
2017-07-13 19:58 ` Stéphane Marchesin
2017-07-13 19:58 ` [Intel-gfx] " Stéphane Marchesin
2017-07-14 9:11 ` Jani Nikula
2017-07-14 9:11 ` Jani Nikula
2017-07-14 17:32 ` Grant Grundler
2017-07-14 21:35 ` Daniel Vetter
2017-07-14 22:43 ` Grant Grundler
2017-07-14 22:43 ` [Intel-gfx] " Grant Grundler
2017-07-14 23:38 ` Matthias Kaehlcke
2017-07-14 23:38 ` [Intel-gfx] " Matthias Kaehlcke
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170505213732.GE128305@google.com \
--to=mka@chromium.org \
--cc=airlied@linux.ie \
--cc=daniel.vetter@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=ghackmann@google.com \
--cc=grundler@chromium.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=linux-kernel@vger.kernel.org \
--cc=md@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.