From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [Intel-gfx] [PATCH] drm/i915: Avoid div-by-zero when pixel_multiplier is zero Date: Tue, 10 Jun 2014 19:41:29 +0300 Message-ID: <87zjhksona.fsf@intel.com> References: <1402320046-13069-1-git-send-email-ville.syrjala@linux.intel.com> <20140610071203.GG5821@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: In-Reply-To: <20140610071203.GG5821@phenom.ffwll.local> Sender: stable-owner@vger.kernel.org To: Daniel Vetter , ville.syrjala@linux.intel.com Cc: intel-gfx@lists.freedesktop.org, stable@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org On Tue, 10 Jun 2014, Daniel Vetter wrote: > On Mon, Jun 09, 2014 at 04:20:46PM +0300, ville.syrjala@linux.intel.c= om wrote: >> From: Ville Syrj=C3=A4l=C3=A4 >>=20 >> On certain platforms pixel_multiplier is read out in >> .get_pipe_config(), but it also gets used to calculate the >> pixel clock in intel_sdvo_get_config(). If the pipe is disable >> but some SDVO outputs are active, we may end up dividing by zero >> in intel_sdvo_get_config(). >>=20 >> To avoid the problem simply check for zero pixel_multiplier and skip >> the division. Another attempt at fixing this involved populating >> pixel_multiplier to 1 even for disabled pipes, but that triggered a >> WARN because SDVO_CMD_GET_CLOCK_RATE_MULT command failed and thus >> encoder_pixel_multiplier was left at zero and didn't match >> pipe_config->pixel_multiplier. >>=20 >> The "divide by pixel_multiplier" operation got introduced here: >> commit 18442d08786472c63a0a80c27f92b033dffc26de >> Author: Ville Syrj=C3=83=C2=A4l=C3=83=C2=A4 >> Date: Fri Sep 13 16:00:08 2013 +0300 >>=20 >> drm/i915: Fix port_clock and adjusted_mode.clock readout all ove= r >>=20 >> and it has caused a regression on certain machines since they would >> hit the div-by-zero during resume. >>=20 >> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=3D76520 >> Cc: # 3.13+ >> Tested-by: Tim Richardson >> Signed-off-by: Ville Syrj=C3=A4l=C3=A4 > > Reviewed-by: Daniel Vetter Pushed to -fixes, thanks for the patch and review. BR, Jani. > >> --- >> drivers/gpu/drm/i915/intel_sdvo.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >>=20 >> diff --git a/drivers/gpu/drm/i915/intel_sdvo.c b/drivers/gpu/drm/i91= 5/intel_sdvo.c >> index 6a4d5bc..20375cc 100644 >> --- a/drivers/gpu/drm/i915/intel_sdvo.c >> +++ b/drivers/gpu/drm/i915/intel_sdvo.c >> @@ -1385,7 +1385,9 @@ static void intel_sdvo_get_config(struct intel= _encoder *encoder, >> >> SDVO_PORT_MULTIPLY_SHIFT) + 1; >> } >> =20 >> - dotclock =3D pipe_config->port_clock / pipe_config->pixel_multipli= er; >> + dotclock =3D pipe_config->port_clock; >> + if (pipe_config->pixel_multiplier) >> + dotclock /=3D pipe_config->pixel_multiplier; >> =20 >> if (HAS_PCH_SPLIT(dev)) >> ironlake_check_encoder_dotclock(pipe_config, dotclock); >> --=20 >> 1.8.5.5 >>=20 >> _______________________________________________ >> Intel-gfx mailing list >> Intel-gfx@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/intel-gfx > > --=20 > Daniel Vetter > Software Engineer, Intel Corporation > +41 (0) 79 365 57 48 - http://blog.ffwll.ch > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx --=20 Jani Nikula, Intel Open Source Technology Center