Hi 2013/1/8 Daniel Vetter <daniel.vetter at ffwll.ch>: > This could very well be caused by dirt left behind by the BIOS, so > tune it down to the debug level. This message can also be triggered by "I915_READ(REGISTER_THAT_DOES_NOT_EXIST)". Still, I also suspect that the very first message we see is due to something left behind by the BIOS. During the very first I915_WRITE that we do in our driver we are hitting one of these messages. My initial thought was "let's zero GEN7_ERR_INT inside ivybridge_irq_postinstall", but then I discovered the error message is so early in our driver initialization that the correct place to "zero GEN7_ERR_INT" would be inside intel_irq_init (because it seems this is before the very first I915_WRITE we do). It seems to me that it's not good to have all those checks in our I915_{READ/WRITE} macros, so my plans are: Step 1 - Fix all the messages we still have (3 small patches, I already have them locally) Step 2 - Remove the checking code inside I915_WRITE and handle GEN7_ERR_INT the same way we treat the other interrupts. With this, we will lose the ability to check exactly which register is triggering the problem, but no one is supposed to be triggering that problem since we fixed everything in step 1. If we ever see the error message triggered by the interrupt, we will at least be able to bisect or to re-add the messages in a debugging session. IMHO, knowing which register causes the problem is very useful to the developer, but the tradeoff between "knowing the register" and "polluting i915_write and i915_read" should be considered. It's not hard to add the messages back for a debugging session (and today, whenever I have to debug these messages, I also add dump_stack() to my local code). Opinions? If no one objects I'll submit patches for this soon. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=58897 > Tested-by: shui yangwei <yangweix.shui at intel.com> > Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch> > --- > drivers/gpu/drm/i915/i915_drv.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index 530db83..08dbcc3 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -1258,7 +1258,7 @@ void i915_write##x(struct drm_i915_private *dev_priv, u32 reg, u##x val) { \ > if (IS_GEN5(dev_priv->dev)) \ > ilk_dummy_write(dev_priv); \ > if (IS_HASWELL(dev_priv->dev) && (I915_READ_NOTRACE(GEN7_ERR_INT) & ERR_INT_MMIO_UNCLAIMED)) { \ > - DRM_ERROR("Unknown unclaimed register before writing to %x\n", reg); \ > + DRM_DEBUG("Unknown unclaimed register before writing to %x\n", reg); \ > I915_WRITE_NOTRACE(GEN7_ERR_INT, ERR_INT_MMIO_UNCLAIMED); \ > } \ > if (IS_VALLEYVIEW(dev_priv->dev) && IS_DISPLAYREG(reg)) { \ > -- > 1.7.10.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Paulo Zanoni