All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>
Cc: intel-gfx@lists.freedesktop.org, Lyude <cpaul@redhat.com>,
	Daniel Vetter <daniel.vetter@ffwll.ch>,
	Hans de Goede <jwrdegoede@fedoraproject.org>,
	stable@vger.kernel.org
Subject: Re: [PATCH] drm/i915: Only enable hotplug interrupts if the display interrupts are enabled
Date: Wed, 15 Feb 2017 13:23:35 +0200	[thread overview]
Message-ID: <20170215112335.GR31595@intel.com> (raw)
In-Reply-To: <20170215090653.28740-1-chris@chris-wilson.co.uk>

On Wed, Feb 15, 2017 at 09:06:53AM +0000, Chris Wilson wrote:
> In order to prevent accessing the hpd registers outside of the display
> power wells, we should refrain from writing to the registers before the
> display interrupts are enabled.
> 
> [    4.740136] WARNING: CPU: 1 PID: 221 at drivers/gpu/drm/i915/intel_uncore.c:795 __unclaimed_reg_debug+0x44/0x50 [i915]
> [    4.740155] Unclaimed read from register 0x1e1110
> [    4.740168] Modules linked in: i915(+) intel_gtt drm_kms_helper prime_numbers
> [    4.740190] CPU: 1 PID: 221 Comm: systemd-udevd Not tainted 4.10.0-rc6+ #384
> [    4.740203] Hardware name:                  /        , BIOS PYBSWCEL.86A.0027.2015.0507.1758 05/07/2015
> [    4.740220] Call Trace:
> [    4.740236]  dump_stack+0x4d/0x6f
> [    4.740251]  __warn+0xc1/0xe0
> [    4.740265]  warn_slowpath_fmt+0x4a/0x50
> [    4.740281]  ? insert_work+0x77/0xc0
> [    4.740355]  ? fwtable_write32+0x90/0x130 [i915]
> [    4.740431]  __unclaimed_reg_debug+0x44/0x50 [i915]
> [    4.740507]  fwtable_read32+0xd8/0x130 [i915]
> [    4.740575]  i915_hpd_irq_setup+0xa5/0x100 [i915]
> [    4.740649]  intel_hpd_init+0x68/0x80 [i915]
> [    4.740716]  i915_driver_load+0xe19/0x1380 [i915]
> [    4.740784]  i915_pci_probe+0x32/0x90 [i915]
> [    4.740799]  pci_device_probe+0x8b/0xf0
> [    4.740815]  driver_probe_device+0x2b6/0x450
> [    4.740828]  __driver_attach+0xda/0xe0
> [    4.740841]  ? driver_probe_device+0x450/0x450
> [    4.740853]  bus_for_each_dev+0x5b/0x90
> [    4.740865]  driver_attach+0x19/0x20
> [    4.740878]  bus_add_driver+0x166/0x260
> [    4.740892]  driver_register+0x5b/0xd0
> [    4.740906]  ? 0xffffffffa0166000
> [    4.740920]  __pci_register_driver+0x47/0x50
> [    4.740985]  i915_init+0x5c/0x5e [i915]
> [    4.740999]  do_one_initcall+0x3e/0x160
> [    4.741015]  ? __vunmap+0x7c/0xc0
> [    4.741029]  ? kmem_cache_alloc+0xcf/0x120
> [    4.741045]  do_init_module+0x55/0x1c4
> [    4.741060]  load_module+0x1f3f/0x25b0
> [    4.741073]  ? __symbol_put+0x40/0x40
> [    4.741086]  ? kernel_read_file+0x100/0x190
> [    4.741100]  SYSC_finit_module+0xbc/0xf0
> [    4.741112]  SyS_finit_module+0x9/0x10
> [    4.741125]  entry_SYSCALL_64_fastpath+0x17/0x98
> [    4.741135] RIP: 0033:0x7f8559a140f9
> [    4.741145] RSP: 002b:00007fff7509a3e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
> [    4.741161] RAX: ffffffffffffffda RBX: 00007f855aba02d1 RCX: 00007f8559a140f9
> [    4.741172] RDX: 0000000000000000 RSI: 000055b6db0914f0 RDI: 0000000000000011
> [    4.741183] RBP: 0000000000020000 R08: 0000000000000000 R09: 000000000000000e
> [    4.741193] R10: 0000000000000011 R11: 0000000000000246 R12: 000055b6db0854d0
> [    4.741204] R13: 000055b6db091150 R14: 0000000000000000 R15: 000055b6db035924
> 
> Fixes: 19625e85c6ec ("drm/i915: Enable polling when we don't have hpd")
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97798
> Suggested-by: Ville Syrj�l� <ville.syrjala@linux.intel.com>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Lyude <cpaul@redhat.com>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Ville Syrj�l� <ville.syrjala@linux.intel.com>
> Cc: Hans de Goede <jwrdegoede@fedoraproject.org>
> Cc: stable@vger.kernel.org
> ---
>  drivers/gpu/drm/i915/intel_hotplug.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
> index 6a9c16508ab5..bad4f14858e3 100644
> --- a/drivers/gpu/drm/i915/intel_hotplug.c
> +++ b/drivers/gpu/drm/i915/intel_hotplug.c
> @@ -224,7 +224,7 @@ static void intel_hpd_irq_storm_reenable_work(struct work_struct *work)
>  			}
>  		}
>  	}
> -	if (dev_priv->display.hpd_irq_setup)
> +	if (dev_priv->display_irqs_enabled && dev_priv->display.hpd_irq_setup)

I don't think we're setting display_irqs_enabled on any other platform
than VLV/CHV. So either we have to push this check down into
hpd_irq_setup() or just set display_irqs_enable=true somewhere for all
the other platforms.

>  		dev_priv->display.hpd_irq_setup(dev_priv);
>  	spin_unlock_irq(&dev_priv->irq_lock);
>  
> @@ -430,7 +430,7 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
>  		}
>  	}
>  
> -	if (storm_detected)
> +	if (storm_detected && dev_priv->display_irqs_enabled)
>  		dev_priv->display.hpd_irq_setup(dev_priv);
>  	spin_unlock(&dev_priv->irq_lock);
>  
> @@ -476,10 +476,11 @@ void intel_hpd_init(struct drm_i915_private *dev_priv)
>  	 * Interrupt setup is already guaranteed to be single-threaded, this is
>  	 * just to make the assert_spin_locked checks happy.
>  	 */
> -	spin_lock_irq(&dev_priv->irq_lock);
> -	if (dev_priv->display.hpd_irq_setup)
> +	if (dev_priv->display_irqs_enabled && dev_priv->display.hpd_irq_setup) {
> +		spin_lock_irq(&dev_priv->irq_lock);
>  		dev_priv->display.hpd_irq_setup(dev_priv);
> -	spin_unlock_irq(&dev_priv->irq_lock);
> +		spin_unlock_irq(&dev_priv->irq_lock);
> +	}
>  }
>  
>  static void i915_hpd_poll_init_work(struct work_struct *work)
> -- 
> 2.11.0

-- 
Ville Syrj�l�
Intel OTC

WARNING: multiple messages have this Message-ID (diff)
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Hans de Goede <jwrdegoede@fedoraproject.org>,
	Daniel Vetter <daniel.vetter@ffwll.ch>,
	intel-gfx@lists.freedesktop.org, stable@vger.kernel.org
Subject: Re: [PATCH] drm/i915: Only enable hotplug interrupts if the display interrupts are enabled
Date: Wed, 15 Feb 2017 13:23:35 +0200	[thread overview]
Message-ID: <20170215112335.GR31595@intel.com> (raw)
In-Reply-To: <20170215090653.28740-1-chris@chris-wilson.co.uk>

On Wed, Feb 15, 2017 at 09:06:53AM +0000, Chris Wilson wrote:
> In order to prevent accessing the hpd registers outside of the display
> power wells, we should refrain from writing to the registers before the
> display interrupts are enabled.
> 
> [    4.740136] WARNING: CPU: 1 PID: 221 at drivers/gpu/drm/i915/intel_uncore.c:795 __unclaimed_reg_debug+0x44/0x50 [i915]
> [    4.740155] Unclaimed read from register 0x1e1110
> [    4.740168] Modules linked in: i915(+) intel_gtt drm_kms_helper prime_numbers
> [    4.740190] CPU: 1 PID: 221 Comm: systemd-udevd Not tainted 4.10.0-rc6+ #384
> [    4.740203] Hardware name:                  /        , BIOS PYBSWCEL.86A.0027.2015.0507.1758 05/07/2015
> [    4.740220] Call Trace:
> [    4.740236]  dump_stack+0x4d/0x6f
> [    4.740251]  __warn+0xc1/0xe0
> [    4.740265]  warn_slowpath_fmt+0x4a/0x50
> [    4.740281]  ? insert_work+0x77/0xc0
> [    4.740355]  ? fwtable_write32+0x90/0x130 [i915]
> [    4.740431]  __unclaimed_reg_debug+0x44/0x50 [i915]
> [    4.740507]  fwtable_read32+0xd8/0x130 [i915]
> [    4.740575]  i915_hpd_irq_setup+0xa5/0x100 [i915]
> [    4.740649]  intel_hpd_init+0x68/0x80 [i915]
> [    4.740716]  i915_driver_load+0xe19/0x1380 [i915]
> [    4.740784]  i915_pci_probe+0x32/0x90 [i915]
> [    4.740799]  pci_device_probe+0x8b/0xf0
> [    4.740815]  driver_probe_device+0x2b6/0x450
> [    4.740828]  __driver_attach+0xda/0xe0
> [    4.740841]  ? driver_probe_device+0x450/0x450
> [    4.740853]  bus_for_each_dev+0x5b/0x90
> [    4.740865]  driver_attach+0x19/0x20
> [    4.740878]  bus_add_driver+0x166/0x260
> [    4.740892]  driver_register+0x5b/0xd0
> [    4.740906]  ? 0xffffffffa0166000
> [    4.740920]  __pci_register_driver+0x47/0x50
> [    4.740985]  i915_init+0x5c/0x5e [i915]
> [    4.740999]  do_one_initcall+0x3e/0x160
> [    4.741015]  ? __vunmap+0x7c/0xc0
> [    4.741029]  ? kmem_cache_alloc+0xcf/0x120
> [    4.741045]  do_init_module+0x55/0x1c4
> [    4.741060]  load_module+0x1f3f/0x25b0
> [    4.741073]  ? __symbol_put+0x40/0x40
> [    4.741086]  ? kernel_read_file+0x100/0x190
> [    4.741100]  SYSC_finit_module+0xbc/0xf0
> [    4.741112]  SyS_finit_module+0x9/0x10
> [    4.741125]  entry_SYSCALL_64_fastpath+0x17/0x98
> [    4.741135] RIP: 0033:0x7f8559a140f9
> [    4.741145] RSP: 002b:00007fff7509a3e8 EFLAGS: 00000246 ORIG_RAX: 0000000000000139
> [    4.741161] RAX: ffffffffffffffda RBX: 00007f855aba02d1 RCX: 00007f8559a140f9
> [    4.741172] RDX: 0000000000000000 RSI: 000055b6db0914f0 RDI: 0000000000000011
> [    4.741183] RBP: 0000000000020000 R08: 0000000000000000 R09: 000000000000000e
> [    4.741193] R10: 0000000000000011 R11: 0000000000000246 R12: 000055b6db0854d0
> [    4.741204] R13: 000055b6db091150 R14: 0000000000000000 R15: 000055b6db035924
> 
> Fixes: 19625e85c6ec ("drm/i915: Enable polling when we don't have hpd")
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=97798
> Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Lyude <cpaul@redhat.com>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Cc: Hans de Goede <jwrdegoede@fedoraproject.org>
> Cc: stable@vger.kernel.org
> ---
>  drivers/gpu/drm/i915/intel_hotplug.c | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_hotplug.c b/drivers/gpu/drm/i915/intel_hotplug.c
> index 6a9c16508ab5..bad4f14858e3 100644
> --- a/drivers/gpu/drm/i915/intel_hotplug.c
> +++ b/drivers/gpu/drm/i915/intel_hotplug.c
> @@ -224,7 +224,7 @@ static void intel_hpd_irq_storm_reenable_work(struct work_struct *work)
>  			}
>  		}
>  	}
> -	if (dev_priv->display.hpd_irq_setup)
> +	if (dev_priv->display_irqs_enabled && dev_priv->display.hpd_irq_setup)

I don't think we're setting display_irqs_enabled on any other platform
than VLV/CHV. So either we have to push this check down into
hpd_irq_setup() or just set display_irqs_enable=true somewhere for all
the other platforms.

>  		dev_priv->display.hpd_irq_setup(dev_priv);
>  	spin_unlock_irq(&dev_priv->irq_lock);
>  
> @@ -430,7 +430,7 @@ void intel_hpd_irq_handler(struct drm_i915_private *dev_priv,
>  		}
>  	}
>  
> -	if (storm_detected)
> +	if (storm_detected && dev_priv->display_irqs_enabled)
>  		dev_priv->display.hpd_irq_setup(dev_priv);
>  	spin_unlock(&dev_priv->irq_lock);
>  
> @@ -476,10 +476,11 @@ void intel_hpd_init(struct drm_i915_private *dev_priv)
>  	 * Interrupt setup is already guaranteed to be single-threaded, this is
>  	 * just to make the assert_spin_locked checks happy.
>  	 */
> -	spin_lock_irq(&dev_priv->irq_lock);
> -	if (dev_priv->display.hpd_irq_setup)
> +	if (dev_priv->display_irqs_enabled && dev_priv->display.hpd_irq_setup) {
> +		spin_lock_irq(&dev_priv->irq_lock);
>  		dev_priv->display.hpd_irq_setup(dev_priv);
> -	spin_unlock_irq(&dev_priv->irq_lock);
> +		spin_unlock_irq(&dev_priv->irq_lock);
> +	}
>  }
>  
>  static void i915_hpd_poll_init_work(struct work_struct *work)
> -- 
> 2.11.0

-- 
Ville Syrjälä
Intel OTC
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2017-02-15 11:23 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-15  9:06 [PATCH] drm/i915: Only enable hotplug interrupts if the display interrupts are enabled Chris Wilson
2017-02-15  9:06 ` Chris Wilson
2017-02-15 11:23 ` Ville Syrjälä [this message]
2017-02-15 11:23   ` Ville Syrjälä
2017-02-15 12:04   ` Chris Wilson
2017-02-15 12:04     ` Chris Wilson
2017-02-15 12:13     ` Ville Syrjälä
2017-02-15 12:13       ` Ville Syrjälä
2017-02-15 11:52 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-02-15 13:15 ` [PATCH v2] " Chris Wilson
2017-02-15 13:15   ` Chris Wilson
2017-02-15 14:12   ` Ville Syrjälä
2017-02-15 14:12     ` Ville Syrjälä
2017-02-16  9:59     ` Chris Wilson
2017-02-16  9:59       ` Chris Wilson
2017-02-15 15:12 ` ✓ Fi.CI.BAT: success for drm/i915: Only enable hotplug interrupts if the display interrupts are enabled (rev3) Patchwork
2017-03-13 16:14 Fixes that failed to backport to v4.11-rc1 Jani Nikula
2017-03-13 17:02 ` [PATCH] drm/i915: Only enable hotplug interrupts if the display interrupts are enabled Chris Wilson
2017-03-13 17:02   ` Chris Wilson
2017-03-15 20:39   ` Lyude Paul
2017-03-15 20:39     ` Lyude Paul

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=20170215112335.GR31595@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=chris@chris-wilson.co.uk \
    --cc=cpaul@redhat.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jwrdegoede@fedoraproject.org \
    --cc=stable@vger.kernel.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.