Re: [Intel-gfx] [PATCH 09/12] drm: Shrink drm_display_mode timings

Ville Syrjälä
2020-02-20T18:47:08Z

On Thu, Feb 20, 2020 at 07:19:08PM +0100, Daniel Vetter wrote:
> On Wed, Feb 19, 2020 at 10:35:41PM +0200, Ville Syrjala wrote:
> > From: Ville Syrjälä <ville.syrjala@linux.intel.com>
> >
> > Store the timings (apart from the clock) as u16. The uapi mode
> > struct already uses u16 for everything so using something bigger
> > internally doesn't really help us.
> >
> > Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
>
> Makes sense I guess. This could mean some implicit pointer math is now no
> longer auto-upgraded to big enough integers though ...

u16 promotes to int. So can't really see how this would go wrong. Well,
unless someone is using these to store some larger intermediate values.

>
> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
>
> > ---
> > drivers/gpu/drm/drm_modes.c | 7 ------
> > include/drm/drm_modes.h | 46 ++++++++++++++++++-------------------
> > 2 files changed, 23 insertions(+), 30 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c
> > index 0e7c9ba241c4..cc9fc52f9f7c 100644
> > --- a/drivers/gpu/drm/drm_modes.c
> > +++ b/drivers/gpu/drm/drm_modes.c
> > @@ -1917,13 +1917,6 @@ EXPORT_SYMBOL(drm_mode_create_from_cmdline_mode);
> > void drm_mode_convert_to_umode(struct drm_mode_modeinfo *out,
> > const struct drm_display_mode *in)
> > {
> > - WARN(in->hdisplay > USHRT_MAX || in->hsync_start > USHRT_MAX ||
> > - in->hsync_end > USHRT_MAX || in->htotal > USHRT_MAX ||
> > - in->hskew > USHRT_MAX || in->vdisplay > USHRT_MAX ||
> > - in->vsync_start > USHRT_MAX || in->vsync_end > USHRT_MAX ||
> > - in->vtotal > USHRT_MAX || in->vscan > USHRT_MAX,
> > - "timing values too large for mode info\n");
> > -
> > out->clock = in->clock;
> > out->hdisplay = in->hdisplay;
> > out->hsync_start = in->hsync_start;
> > diff --git a/include/drm/drm_modes.h b/include/drm/drm_modes.h
> > index b28c0234fcd7..b585074945b5 100644
> > --- a/include/drm/drm_modes.h
> > +++ b/include/drm/drm_modes.h
> > @@ -278,16 +278,16 @@ struct drm_display_mode {
> > * Pixel clock in kHz.
> > */
> > int clock; /* in kHz */
> > - int hdisplay;
> > - int hsync_start;
> > - int hsync_end;
> > - int htotal;
> > - int hskew;
> > - int vdisplay;
> > - int vsync_start;
> > - int vsync_end;
> > - int vtotal;
> > - int vscan;
> > + u16 hdisplay;
> > + u16 hsync_start;
> > + u16 hsync_end;
> > + u16 htotal;
> > + u16 hskew;
> > + u16 vdisplay;
> > + u16 vsync_start;
> > + u16 vsync_end;
> > + u16 vtotal;
> > + u16 vscan;
> > /**
> > * @flags:
> > *
> > @@ -356,19 +356,19 @@ struct drm_display_mode {
> > * difference is exactly a factor of 10.
> > */
> > int crtc_clock;
> > - int crtc_hdisplay;
> > - int crtc_hblank_start;
> > - int crtc_hblank_end;
> > - int crtc_hsync_start;
> > - int crtc_hsync_end;
> > - int crtc_htotal;
> > - int crtc_hskew;
> > - int crtc_vdisplay;
> > - int crtc_vblank_start;
> > - int crtc_vblank_end;
> > - int crtc_vsync_start;
> > - int crtc_vsync_end;
> > - int crtc_vtotal;
> > + u16 crtc_hdisplay;
> > + u16 crtc_hblank_start;
> > + u16 crtc_hblank_end;
> > + u16 crtc_hsync_start;
> > + u16 crtc_hsync_end;
> > + u16 crtc_htotal;
> > + u16 crtc_hskew;
> > + u16 crtc_vdisplay;
> > + u16 crtc_vblank_start;
> > + u16 crtc_vblank_end;
> > + u16 crtc_vsync_start;
> > + u16 crtc_vsync_end;
> > + u16 crtc_vtotal;
> >
> > /**
> > * @private_flags:
> > --
> > 2.24.1
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch

--
Ville Syrjälä
Intel