[Intel-gfx] [PATCH 00/17] drm/i915: Redo old gmch irq handling

ville.syrjala at linux.intel.com ville.syrjala at linux.intel.com
Thu Jun 22 11:55:38 UTC 2017


From: Ville Syrjälä <ville.syrjala at linux.intel.com>

Apparently we have some issues [1] on g4x which smells like irqs not getting
delivered after some point in time. The gen2-4 irq code is rather crusty
so I thought I'd bring it up to the same quality standards as the VLV/CHV
irq code. And to avoid any chances of missing the edges I changed all the
gmch platforms to use the "disable IER -> ack IIR -> enable IER" trick
we use on VLV and CHV. That should be robust with both level and edge
triggered interrupts, and single and double buffered IIR.

I think the only slightly scary bits are the ones touching HWSTAM
programming. While that's not strictly needed for this series, I really
wanted to remove a bunch of duplicat irq setup code, and for that
I wanted to make the HWSTAM programming consistent. We don't actually
use any of the interrupt information written into the status page,
but I have slight concern that the extra status page writes may have
had some unintended effect on seqno coherency. Fingers crossed...

There's potentially more unification we could do on the various gmch
interrupts functions, but as the series was already ballooning out of
control I decided not to pursue that angle very far.

I smoke tested this on 830, pnv, g4x, and ilk.

Series is available here:
git://github.com/vsyrjala/linux.git gmch_irq_redo

Ville Syrjälä (17):
  drm/i915: Clear pipestat consistently
  drm/i915: s/GEN3/GEN5/
  drm/i915: Use GEN3_IRQ_RESET/INIT on gen3/4
  drm/i915: Introduce GEN2_IRQ_RESET/INIT
  drm/i915: Setup EMR first on all gen2-4
  drm/i915: Eliminate PORT_HOTPLUG_EN setup from gen3/4 irq_postinstall
  drm/i915: Unify the appearance of gen3/4 irq_postistall hooks
  drm/i915: Remove NULL dev_priv checks from irq_uninstall
  drm/i915: Mask everything in ring HWSTAM on gen6+ in ringbuffer mode
  drm/i915: Gen3 HWSTAM is actually 32 bits
  drm/i915: Clean up the HWSTAM mess
  drm/i915: Remove duplicated irq_preinstall/uninstall hooks
  drm/i915: Consolidatte intel_check_page_flip() into
    intel_pipe_handle_vblank()
  drm/i915: Move the gen2-4 page flip handling code around
  drm/i915: Simplify the gen2-4 flip_mask handling
  drm/i915: Extract PIPESTAT irq handling into separate functions
  drm/i915: Rewrite GMCH irq handlers to follow the VLV/CHV pattern

 drivers/gpu/drm/i915/i915_irq.c         | 909 ++++++++++++++------------------
 drivers/gpu/drm/i915/intel_ringbuffer.c |   3 +
 2 files changed, 394 insertions(+), 518 deletions(-)

-- 
2.13.0



More information about the Intel-gfx mailing list