From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jiri Slaby Subject: Re: i915_driver_irq_handler: irq 42: nobody cared Date: Tue, 10 Apr 2012 21:52:40 +0200 Message-ID: <4F848F88.7060009@suse.cz> References: <4F717CE3.4040206@suse.cz> <4F717D80.9040207@suse.cz> <4F758400.3080907@suse.cz> <1333104359_155028@CP5-2952> <20120409101119.47e770b2@jbarnes-desktop> <4F83F3B5.8080704@suse.cz> <20120410092619.26a15165@jbarnes-desktop> <4F8477D1.4080102@suse.cz> <20120410113448.540e4c1d@jbarnes-desktop> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20120410113448.540e4c1d@jbarnes-desktop> Sender: linux-kernel-owner@vger.kernel.org To: Jesse Barnes Cc: Chris Wilson , Jiri Slaby , LKML , dri-devel@lists.freedesktop.org, daniel@ffwll.ch List-Id: dri-devel@lists.freedesktop.org On 04/10/2012 08:34 PM, Jesse Barnes wrote: > On Tue, 10 Apr 2012 20:11:29 +0200 Jiri Slaby > wrote: > >> On 04/10/2012 06:26 PM, Jesse Barnes wrote: >>> So port hotplug is always reporting that port C has a hotplug >>> interrupt though... If you write 0x3 back to it does the >>> interrupt stop? >> >> I'm not sure I got it right. This doesn't help: --- >> a/drivers/gpu/drm/i915/i915_irq.c +++ >> b/drivers/gpu/drm/i915/i915_irq.c @@ -1416,6 +1416,17 @@ static >> irqreturn_t i915_driver_irq_handler(DRM_IRQ_ARGS) iir = new_iir; >> } >> >> + if (ret == IRQ_NONE) { + u32 hp = >> I915_READ(PORT_HOTPLUG_STAT); + if (hp) { + >> I915_WRITE(PORT_HOTPLUG_STAT, hp); + >> I915_READ(PORT_HOTPLUG_STAT); + } + + >> if (printk_ratelimit()) + printk(KERN_DEBUG >> "%s: %.8x\n", __func__, hp); + + } >> >> return ret; } > > Yeah that looks right, you still get 0x300? Yes. > You could try masking hotplug interrupts altogether. This doesn't help: --- a/drivers/gpu/drm/i915/i915_irq.c +++ b/drivers/gpu/drm/i915/i915_irq.c @@ -2049,7 +2051,7 @@ static int i915_driver_irq_postinstall(struct drm_device *dev) I915_WRITE(IER, enable_mask); POSTING_READ(IER); - if (I915_HAS_HOTPLUG(dev)) { + if (0 && I915_HAS_HOTPLUG(dev)) { u32 hotplug_en = I915_READ(PORT_HOTPLUG_EN); /* Note HDMI and DP share bits */ > Also, just to sanity check things, can you look at the output of > "lspci -s 02.0 -vvv -xxx" and see if the "INTx" field is + or -? > If it's +, then the interrupt is definitely coming from an un-acked > IRQ source on the gfx device. If it's INTx-, it means something in > one of the upper MSI layers isn't getting handled right. Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- SERR-