mirror of https://gitee.com/openkylin/linux.git
drm/i915: Disable the mmio.debug WARN after it fires
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 5978118c39
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.
v3: Compile fixes, rebase.
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>
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
[danvet: Update modparam text per the thread.]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
6e0b3f8d64
commit
48572edd9d
|
@ -2442,7 +2442,7 @@ struct i915_params {
|
||||||
bool disable_display;
|
bool disable_display;
|
||||||
bool disable_vtd_wa;
|
bool disable_vtd_wa;
|
||||||
int use_mmio_flip;
|
int use_mmio_flip;
|
||||||
bool mmio_debug;
|
int mmio_debug;
|
||||||
bool verbose_state_checks;
|
bool verbose_state_checks;
|
||||||
bool nuclear_pageflip;
|
bool nuclear_pageflip;
|
||||||
};
|
};
|
||||||
|
|
|
@ -171,10 +171,10 @@ module_param_named(use_mmio_flip, i915.use_mmio_flip, int, 0600);
|
||||||
MODULE_PARM_DESC(use_mmio_flip,
|
MODULE_PARM_DESC(use_mmio_flip,
|
||||||
"use MMIO flips (-1=never, 0=driver discretion [default], 1=always)");
|
"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,
|
MODULE_PARM_DESC(mmio_debug,
|
||||||
"Enable the MMIO debug code (default: false). This may negatively "
|
"Enable the MMIO debug code for the first N failures (default: off). "
|
||||||
"affect performance.");
|
"This may negatively affect performance.");
|
||||||
|
|
||||||
module_param_named(verbose_state_checks, i915.verbose_state_checks, bool, 0600);
|
module_param_named(verbose_state_checks, i915.verbose_state_checks, bool, 0600);
|
||||||
MODULE_PARM_DESC(verbose_state_checks,
|
MODULE_PARM_DESC(verbose_state_checks,
|
||||||
|
|
|
@ -557,18 +557,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",
|
WARN(1, "Unclaimed register detected %s %s register 0x%x\n",
|
||||||
when, op, reg);
|
when, op, reg);
|
||||||
__raw_i915_write32(dev_priv, FPGA_DBG, FPGA_DBG_RM_NOCLAIM);
|
__raw_i915_write32(dev_priv, FPGA_DBG, FPGA_DBG_RM_NOCLAIM);
|
||||||
|
i915.mmio_debug--; /* Only report the first N failures */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
hsw_unclaimed_reg_detect(struct drm_i915_private *dev_priv)
|
hsw_unclaimed_reg_detect(struct drm_i915_private *dev_priv)
|
||||||
{
|
{
|
||||||
if (i915.mmio_debug)
|
static bool mmio_debug_once = true;
|
||||||
|
|
||||||
|
if (i915.mmio_debug || !mmio_debug_once)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (__raw_i915_read32(dev_priv, FPGA_DBG) & FPGA_DBG_RM_NOCLAIM) {
|
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 i915.mmio_debug=N for more information.\n");
|
||||||
__raw_i915_write32(dev_priv, FPGA_DBG, FPGA_DBG_RM_NOCLAIM);
|
__raw_i915_write32(dev_priv, FPGA_DBG, FPGA_DBG_RM_NOCLAIM);
|
||||||
|
i915.mmio_debug = mmio_debug_once--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue