From: Ben Widawsky <ben@bwidawsk.net>
To: Paulo Zanoni <przanoni@gmail.com>
Cc: Intel Graphics Development <intel-gfx@lists.freedesktop.org>,
Paulo Zanoni <paulo.r.zanoni@intel.com>
Subject: Re: [PATCH 14/20] drm/i915: enable SDEIER later
Date: Thu, 27 Mar 2014 23:20:17 -0700 [thread overview]
Message-ID: <20140328062017.GB1994@bwidawsk.net> (raw)
In-Reply-To: <CA+gsUGTekgQ5XaH5YNtAunb_ESd9rHRgtzk_4so4vfeLiEv6-A@mail.gmail.com>
On Thu, Mar 27, 2014 at 11:39:36AM -0300, Paulo Zanoni wrote:
> 2014-03-18 17:29 GMT-03:00 Ben Widawsky <ben@bwidawsk.net>:
> > On Fri, Mar 07, 2014 at 08:10:30PM -0300, Paulo Zanoni wrote:
> >> From: Paulo Zanoni <paulo.r.zanoni@intel.com>
> >>
> >> On the preinstall stage we should just disable all the interrupts, but
> >> we currently enable all the south display interrupts due to the way we
> >> touch SDEIER at the IRQ handlers (note: they are still masked and our
> >> IRQ handler is disabled).
> >
> > I think this statement is false. The interrupt is enabled right after
> > preinstall(). For the nomodeset case, this actually seems to make some
> > difference. It still looks fine to me though.
>
> Could you please clarify this paragraph?
The point was, "IRQ handler is disabled" is false. At least when I last
checked. We've registered the interrupt by then, which means we can
potentially get interrupts from the hardware.
I think we just might disagree on what "enabled" means. Perhaps this is
due to me working for too long with buggy hardware. In any event, as I
said, it does look fine to me as is.
>
> We currently enable SDEIER at ibx_irq_preinstall, but the reason why
> we do this is because we change SDEIER at the IRQ handler. So if we
> move that code from preinstall to postinstall, but at a point where no
> interrupts are enabled yet, we should be safe, and this is what the
> patch does.
>
> >
> >> Instead of doing that, let's make the
> >> preinstall stage just disable all the south interrupts, and do the
> >> proper interrupt dance/ordering at the postinstall stage, including an
> >> assert to check if everything is behaving as expected.
> >>
> >> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> >> ---
> >> drivers/gpu/drm/i915/i915_irq.c | 27 +++++++++++++++++++++------
> >> 1 file changed, 21 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> >> index 95f535b..4479e29 100644
> >> --- a/drivers/gpu/drm/i915/i915_irq.c
> >> +++ b/drivers/gpu/drm/i915/i915_irq.c
> >> @@ -2814,13 +2814,24 @@ static void ibx_irq_preinstall(struct drm_device *dev)
> >>
> >> if (HAS_PCH_CPT(dev) || HAS_PCH_LPT(dev))
> >> I915_WRITE(SERR_INT, 0xffffffff);
> >> +}
> >>
> >> - /*
> >> - * SDEIER is also touched by the interrupt handler to work around missed
> >> - * PCH interrupts. Hence we can't update it after the interrupt handler
> >> - * is enabled - instead we unconditionally enable all PCH interrupt
> >> - * sources here, but then only unmask them as needed with SDEIMR.
> >> - */
> >> +/*
> >> + * SDEIER is also touched by the interrupt handler to work around missed PCH
> >> + * interrupts. Hence we can't update it after the interrupt handler is enabled -
> >> + * instead we unconditionally enable all PCH interrupt sources here, but then
> >> + * only unmask them as needed with SDEIMR.
> >> + *
> >> + * This function needs to be called before interrupts are enabled.
> >> + */
> >> +static void ibx_irq_pre_postinstall(struct drm_device *dev)
> >
> > sde_irq_postinstall()?
>
> I agree the current name is bad, but we use the IBX naming for
> everything on the PCH at i915_irq.c, and ironlake_irq_postinstall()
> already calls a function named ibx_irq_postinstall(), so I needed a
> name that means "call this just before the postinstall() steps". If we
> rename it to sde_irq_postinstall we may confuse users due to the fact
> that we also have ibx_irq_postinstall. So with the current patch, we
> have this:
>
> void ironlake_irq_postinstall()
> {
> /* We have to call this before enabling the interrupts */
> ibx_irq_pre_postinstall();
> /* Enable the interrupts */
> GEN5_IRQ_INIT(DE, dev_priv->irq_mask, display_mask | extra_mask);
> /* Now do the necessary postinstall adjustments to the PCH stuff */
> ibx_irq_postinstall();
> }
>
> But I'm still open to new naming suggestions.
>
I gave my suggestion. If you and or the maintainer think it's not a
better one due to the existing scheme, then by all means, feel free to
move on. There's nothing functionally incorrect that I can spot.
> >
> >> +{
> >> + struct drm_i915_private *dev_priv = dev->dev_private;
> >> +
> >> + if (HAS_PCH_NOP(dev))
> >> + return;
> >> +
> >> + WARN_ON(I915_READ(SDEIER) != 0);
> >> I915_WRITE(SDEIER, 0xffffffff);
> >> POSTING_READ(SDEIER);
> >> }
> >> @@ -3026,6 +3037,8 @@ static int ironlake_irq_postinstall(struct drm_device *dev)
> >>
> >> dev_priv->irq_mask = ~display_mask;
> >>
> >> + ibx_irq_pre_postinstall(dev);
> >> +
> >> GEN5_IRQ_INIT(DE, dev_priv->irq_mask, display_mask | extra_mask);
> >>
> >> gen5_gt_irq_postinstall(dev);
> >> @@ -3217,6 +3230,8 @@ static int gen8_irq_postinstall(struct drm_device *dev)
> >> {
> >> struct drm_i915_private *dev_priv = dev->dev_private;
> >>
> >> + ibx_irq_pre_postinstall(dev);
> >> +
> >> gen8_gt_irq_postinstall(dev_priv);
> >> gen8_de_irq_postinstall(dev_priv);
> >>
> >> --
> >> 1.8.5.3
> >>
> >> _______________________________________________
> >> Intel-gfx mailing list
> >> Intel-gfx@lists.freedesktop.org
> >> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
> >
> > --
> > Ben Widawsky, Intel Open Source Technology Center
>
>
>
> --
> Paulo Zanoni
--
Ben Widawsky, Intel Open Source Technology Center
next prev parent reply other threads:[~2014-03-28 6:20 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-07 23:10 [PATCH 00/20] ILK+ interrupt improvements, v2 Paulo Zanoni
2014-03-07 23:10 ` [PATCH 01/20] drm/i915: add GEN5_IRQ_INIT macro Paulo Zanoni
2014-03-07 23:10 ` [PATCH 02/20] drm/i915: also use GEN5_IRQ_INIT with south display interrupts Paulo Zanoni
2014-03-07 23:10 ` [PATCH 03/20] drm/i915: use GEN8_IRQ_INIT on GEN5 Paulo Zanoni
2014-03-18 17:11 ` Ben Widawsky
2014-03-18 17:41 ` Daniel Vetter
2014-03-26 20:00 ` Paulo Zanoni
2014-03-26 21:37 ` Daniel Vetter
2014-03-27 12:06 ` Paulo Zanoni
2014-03-07 23:10 ` [PATCH 04/20] drm/i915: add GEN5_IRQ_FINI Paulo Zanoni
2014-03-07 23:10 ` [PATCH 05/20] drm/i915: don't forget to uninstall the PM IRQs Paulo Zanoni
2014-03-18 17:59 ` Ben Widawsky
2014-03-07 23:10 ` [PATCH 06/20] drm/i915: properly clear IIR at irq_uninstall on Gen5+ Paulo Zanoni
2014-03-11 8:25 ` Chris Wilson
2014-03-18 17:20 ` Ben Widawsky
2014-03-07 23:10 ` [PATCH 07/20] drm/i915: add GEN5_IRQ_INIT Paulo Zanoni
2014-03-18 18:16 ` Ben Widawsky
2014-03-07 23:10 ` [PATCH 08/20] drm/i915: check if IIR is still zero at postinstall on Gen5+ Paulo Zanoni
2014-03-18 18:20 ` Ben Widawsky
2014-03-19 8:28 ` Daniel Vetter
2014-03-19 17:50 ` Ben Widawsky
2014-03-27 13:34 ` Paulo Zanoni
2014-03-07 23:10 ` [PATCH 09/20] drm/i915: fix SERR_INT init/reset code Paulo Zanoni
2014-03-18 18:24 ` Ben Widawsky
2014-03-07 23:10 ` [PATCH 10/20] drm/i915: fix GEN7_ERR_INT " Paulo Zanoni
2014-03-18 19:42 ` Ben Widawsky
2014-03-07 23:10 ` [PATCH 11/20] drm/i915: fix open coded gen5_gt_irq_preinstall Paulo Zanoni
2014-03-07 23:10 ` [PATCH 12/20] drm/i915: extract ibx_irq_uninstall Paulo Zanoni
2014-03-07 23:10 ` [PATCH 13/20] drm/i915: call ibx_irq_uninstall from gen8_irq_uninstall Paulo Zanoni
2014-03-07 23:10 ` [PATCH 14/20] drm/i915: enable SDEIER later Paulo Zanoni
2014-03-18 20:29 ` Ben Widawsky
2014-03-27 14:39 ` Paulo Zanoni
2014-03-28 6:20 ` Ben Widawsky [this message]
2014-03-28 7:41 ` Daniel Vetter
2014-03-07 23:10 ` [PATCH 15/20] drm/i915: remove ibx_irq_uninstall Paulo Zanoni
2014-03-07 23:10 ` [PATCH 16/20] drm/i915: add missing intel_hpd_irq_uninstall Paulo Zanoni
2014-03-18 20:38 ` Ben Widawsky
2014-03-07 23:10 ` [PATCH 17/20] drm/i915: add ironlake_irq_reset Paulo Zanoni
2014-03-07 23:10 ` [PATCH 18/20] drm/i915: add gen8_irq_reset Paulo Zanoni
2014-03-18 20:43 ` Ben Widawsky
2014-03-27 14:48 ` Paulo Zanoni
2014-03-07 23:10 ` [PATCH 19/20] drm/i915: only enable HWSTAM interrupts on postinstall on ILK+ Paulo Zanoni
2014-03-07 23:10 ` [PATCH 20/20] drm/i915: add POSTING_READs to the IRQ init/reset macros Paulo Zanoni
2014-03-18 20:45 ` Ben Widawsky
2014-03-18 20:53 ` [PATCH 00/20] ILK+ interrupt improvements, v2 Ben Widawsky
2014-03-19 8:36 ` Daniel Vetter
2014-03-19 17:25 ` Ben Widawsky
2014-03-26 20:33 ` Paulo Zanoni
2014-03-26 20:54 ` Ben Widawsky
2014-03-26 21:35 ` Daniel Vetter
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=20140328062017.GB1994@bwidawsk.net \
--to=ben@bwidawsk.net \
--cc=intel-gfx@lists.freedesktop.org \
--cc=paulo.r.zanoni@intel.com \
--cc=przanoni@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox