On Fri, Jun 12, 2026 at 3:39 PM Guilherme Ivo Bozi
<[email protected]> wrote:
>
> On Fri, Jun 12, 2026 at 4:34 AM Christian König
> <[email protected]> wrote:
> >
> > On 6/11/26 21:49, Guilherme Ivo Bozi wrote:
> > > This series converts the GPIO HW translation logic used by
> > > multiple DCN generations from large switch statements to
> > > static lookup tables with shared helper functions.
> >
> > Not to block this patch set, but please keep in mind that when some array 
> > index comes from userspace to use array_index_nospec() to avoid security 
> > problems caused by speculative execution.
> >
>
> Thanks for the feedback. I reviewed the relevant GPIO and DDC paths.
> In all cases, the offsets and indices are derived from DC BIOS tables
> or internal DC GPIO service mappings, not userspace-controlled input.
>

I don't have a strong opinion on this.  @Leo (Sunpeng) Li , @Wentland,
Harry , do you have an opinion?  It doesn't seem like it really makes
much of a difference either way for code readability, etc.

Alex

> If you still prefer additional hardening for consistency, I can send a
> v2 with array_index_nospec().
>
> > We already had problems with that in the past when people converted switch 
> > statements into an array lockup.
> >
>
> I’ll keep this in mind for other paths where array indices may be
> influenced by userspace.
>
> Kind regards,
> Guilherme Ivo
>
>
> > Regards,
> > Christian.
> >
> > >
> > > The new implementation reduces duplicated translation logic
> > > across generations and makes the GPIO mappings easier to
> > > maintain and extend.
> > >
> > > The series introduces generic GPIO translation helpers first,
> > > followed by per-generation conversions.
> > >
> > > The following generations were converted:
> > >
> > >   - dcn10
> > >   - dcn20
> > >   - dcn21
> > >   - dcn30
> > >   - dcn315
> > >   - dcn32
> > >   - dcn401
> > >   - dcn42
> > >
> > > The dce60, dce80, dce110 and dce120 implementations were
> > > left unchanged for now.
> > >
> > > dce60 and dce80 contain special switch-case handling paths
> > > that currently do not map cleanly to the new table-based
> > > representation, so they were intentionally excluded from
> > > this refactor.
> > >
> > > No functional changes intended.
> > >
> > > v1 resend:
> > >
> > > No changes since original submission.
> > >
> > > Automated review:
> > > https://lore.gitlab.freedesktop.org/drm-ai-reviews/[email protected]/
> > >
> > > Guilherme Ivo Bozi (9):
> > >   drm/amd/display: add GPIO HW translation helpers
> > >   drm/amd/display: convert dcn10 GPIO translation to lookup tables
> > >   drm/amd/display: convert dcn20 GPIO translation to lookup tables
> > >   drm/amd/display: convert dcn21 GPIO translation to lookup tables
> > >   drm/amd/display: convert dcn30 GPIO translation to lookup tables
> > >   drm/amd/display: convert dcn315 GPIO translation to lookup tables
> > >   drm/amd/display: convert dcn32 GPIO translation to lookup tables
> > >   drm/amd/display: convert dcn401 GPIO translation to lookup tables
> > >   drm/amd/display: convert dcn42 GPIO translation to lookup tables
> > >
> > >  .../dc/gpio/dcn10/hw_translate_dcn10.c        | 484 +++++++-----------
> > >  .../dc/gpio/dcn20/hw_translate_dcn20.c        | 432 ++++++----------
> > >  .../dc/gpio/dcn21/hw_translate_dcn21.c        | 417 ++++++---------
> > >  .../dc/gpio/dcn30/hw_translate_dcn30.c        | 432 ++++++----------
> > >  .../dc/gpio/dcn315/hw_translate_dcn315.c      | 418 ++++++---------
> > >  .../dc/gpio/dcn32/hw_translate_dcn32.c        | 386 +++++---------
> > >  .../dc/gpio/dcn401/hw_translate_dcn401.c      | 392 +++++---------
> > >  .../dc/gpio/dcn42/hw_translate_dcn42.c        | 193 +++----
> > >  .../drm/amd/display/dc/gpio/hw_translate.c    |  86 ++++
> > >  .../drm/amd/display/dc/gpio/hw_translate.h    |  21 +
> > >  .../gpu/drm/amd/display/include/gpio_types.h  |  48 ++
> > >  11 files changed, 1274 insertions(+), 2035 deletions(-)
> > >
> >

Reply via email to