From: Jani Nikula <jani.nikula@linux.intel.com>
To: Chris Wilson <chris@chris-wilson.co.uk>, intel-gfx@lists.freedesktop.org
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>,
Paulo Zanoni <paulo.r.zanoni@intel.com>
Subject: Re: [PATCH] drm/i915: Disable the mmio.debug WARN after it fires
Date: Mon, 24 Nov 2014 12:52:23 +0200 [thread overview]
Message-ID: <87a93g3m6w.fsf@intel.com> (raw)
In-Reply-To: <1416824676-16334-1-git-send-email-chris@chris-wilson.co.uk>
On Mon, 24 Nov 2014, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> If we have a single unclaimed register, we will have lots. A WARN for
> each one makes the machine unusable and does not aid debugging. Convert
> the i915.mmio_debug option to a counter for how many WARNs to fire
> before shutting up. Even when i915.mmio_debug was disabled it would
> continue to shout an *ERROR* for every interrupt, without any
> information at all for debugging.
>
> The massive verbiage was added in
> commit 5978118c39c2f72fd8b39ef9c086723542384809
> Author: Paulo Zanoni <paulo.r.zanoni@intel.com>
> Date: Wed Jul 16 17:49:29 2014 -0300
>
> drm/i915: reorganize the unclaimed register detection code
>
> v2: Automatically enable invalid mmio reporting for the *next* invalid
> access if mmio_debug is disabled by default. This should give us clearer
> debug information without polluting the logs too much.
>
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Rodrigo Vivi <rodrigo.vivi@gmail.com>
> Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
> Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
> ---
> drivers/gpu/drm/i915/i915_drv.h | 2 +-
> drivers/gpu/drm/i915/i915_params.c | 6 +++---
> drivers/gpu/drm/i915/intel_uncore.c | 10 ++++++++--
> 3 files changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index 5448ce9d1490..314d8a60d55b 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -2310,7 +2310,7 @@ struct i915_params {
> bool disable_display;
> bool disable_vtd_wa;
> int use_mmio_flip;
> - bool mmio_debug;
> + int mmio_debug;
> };
> extern struct i915_params i915 __read_mostly;
>
> diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c
> index c91cb2033cc5..9de6e8265a14 100644
> --- a/drivers/gpu/drm/i915/i915_params.c
> +++ b/drivers/gpu/drm/i915/i915_params.c
> @@ -169,7 +169,7 @@ module_param_named(use_mmio_flip, i915.use_mmio_flip, int, 0600);
> MODULE_PARM_DESC(use_mmio_flip,
> "use MMIO flips (-1=never, 0=driver discretion [default], 1=always)");
>
> -module_param_named(mmio_debug, i915.mmio_debug, bool, 0600);
> +module_param_named(mmio_debug, i915.mmio_debug, int, 0600);
> MODULE_PARM_DESC(mmio_debug,
> - "Enable the MMIO debug code (default: false). This may negatively "
> - "affect performance.");
> + "Enable the MMIO debug code (default: off). "
> + "This may negatively affect performance.");
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index f0230b0e8e11..01ae5aec9e02 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -721,18 +721,24 @@ hsw_unclaimed_reg_debug(struct drm_i915_private *dev_priv, u32 reg, bool read,
> WARN(1, "Unclaimed register detected %s %s register 0x%x\n",
> when, op, reg);
> __raw_i915_write32(dev_priv, FPGA_DBG, FPGA_DBG_RM_NOCLAIM);
> + i915.mmio_debug--; /* Only report the first N failures */
> }
> }
>
> static void
> hsw_unclaimed_reg_detect(struct drm_i915_private *dev_priv)
> {
> - if (i915.mmio_debug)
> + static bool mmio_debug_once = true;
> +
> + if (i915.mmio_debug || !i915.mmio_debug_once)
> return;
>
> if (__raw_i915_read32(dev_priv, FPGA_DBG) & FPGA_DBG_RM_NOCLAIM) {
> - DRM_ERROR("Unclaimed register detected. Please use the i915.mmio_debug=1 to debug this problem.");
> + DRM_DEBUG("Unclaimed register detected, "
> + "enabling oneshot unclaimed register reporting. "
> + "Please use the i915.mmio_debug=N for more information.\n");
> __raw_i915_write32(dev_priv, FPGA_DBG, FPGA_DBG_RM_NOCLAIM);
> + i915.mmio_debug = i915.mmio_debug_once--;
I suspect you have uncommitted changes in your work tree.
BR,
Jani.
> }
> }
>
> --
> 2.1.3
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx
--
Jani Nikula, Intel Open Source Technology Center
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
next prev parent reply other threads:[~2014-11-24 10:53 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-24 8:12 [PATCH] drm/i915: Disable the mmio.debug WARN after it fires Chris Wilson
2014-11-24 9:45 ` Daniel Vetter
2014-11-24 10:06 ` Chris Wilson
2014-11-24 10:24 ` Chris Wilson
2014-11-24 10:52 ` Jani Nikula [this message]
2014-11-24 11:07 ` Chris Wilson
2014-11-24 16:23 ` Paulo Zanoni
2014-11-24 16:28 ` [PATCH] drm/i915: Disable the mmio.debug WARN after it shuang.he
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=87a93g3m6w.fsf@intel.com \
--to=jani.nikula@linux.intel.com \
--cc=chris@chris-wilson.co.uk \
--cc=daniel.vetter@ffwll.ch \
--cc=intel-gfx@lists.freedesktop.org \
--cc=paulo.r.zanoni@intel.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 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.