Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Jani Nikula <jani.nikula@intel.com>, intel-gfx@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH 2/3] drm/i915/uncore: fix race around i915->params.mmio_debug
Date: Thu, 6 Jul 2023 11:51:21 +0100	[thread overview]
Message-ID: <3eb5abe0-efa9-7d46-9d0d-21106c49b6f2@linux.intel.com> (raw)
In-Reply-To: <eb314ccd1fc96aa729667fc18322cc4cbb3d79cf.1688463863.git.jani.nikula@intel.com>


On 04/07/2023 10:48, Jani Nikula wrote:
> Only check the conditions for unclaimed reg debug once to avoid locking
> problems when i915->params.mmio_debug changes between header and footer.
> 
> Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/8749
> Cc: Lee Shawn C <shawn.c.lee@intel.com>
> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
> ---
>   drivers/gpu/drm/i915/intel_uncore.c | 21 ++++++++++++---------
>   1 file changed, 12 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index a88aa342b623..dfefad5a5fec 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -1925,27 +1925,26 @@ __unclaimed_previous_reg_debug(struct intel_uncore *uncore,
>   			i915_mmio_reg_offset(reg));
>   }
>   
> -static inline void
> +static inline bool __must_check
>   unclaimed_reg_debug_header(struct intel_uncore *uncore,
>   			   const i915_reg_t reg, const bool read)
>   {
>   	if (likely(!uncore->i915->params.mmio_debug) || !uncore->debug)
> -		return;
> +		return false;
>   
>   	/* interrupts are disabled and re-enabled around uncore->lock usage */
>   	lockdep_assert_held(&uncore->lock);
>   
>   	spin_lock(&uncore->debug->lock);
>   	__unclaimed_previous_reg_debug(uncore, reg, read);
> +
> +	return true;
>   }
>   
>   static inline void
>   unclaimed_reg_debug_footer(struct intel_uncore *uncore,
>   			   const i915_reg_t reg, const bool read)
>   {
> -	if (likely(!uncore->i915->params.mmio_debug) || !uncore->debug)
> -		return;
> -
>   	/* interrupts are disabled and re-enabled around uncore->lock usage */
>   	lockdep_assert_held(&uncore->lock);
>   
> @@ -2008,13 +2007,15 @@ __gen2_read(64)
>   #define GEN6_READ_HEADER(x) \
>   	u32 offset = i915_mmio_reg_offset(reg); \
>   	unsigned long irqflags; \
> +	bool unclaimed_reg_debug; \
>   	u##x val = 0; \
>   	assert_rpm_wakelock_held(uncore->rpm); \
>   	spin_lock_irqsave(&uncore->lock, irqflags); \
> -	unclaimed_reg_debug_header(uncore, reg, true)
> +	unclaimed_reg_debug = unclaimed_reg_debug_header(uncore, reg, true)
>   
>   #define GEN6_READ_FOOTER \
> -	unclaimed_reg_debug_footer(uncore, reg, true); \
> +	if (unclaimed_reg_debug) \
> +		unclaimed_reg_debug_footer(uncore, reg, true);	\
>   	spin_unlock_irqrestore(&uncore->lock, irqflags); \
>   	trace_i915_reg_rw(false, reg, val, sizeof(val), trace); \
>   	return val
> @@ -2112,13 +2113,15 @@ __gen2_write(32)
>   #define GEN6_WRITE_HEADER \
>   	u32 offset = i915_mmio_reg_offset(reg); \
>   	unsigned long irqflags; \
> +	bool unclaimed_reg_debug; \
>   	trace_i915_reg_rw(true, reg, val, sizeof(val), trace); \
>   	assert_rpm_wakelock_held(uncore->rpm); \
>   	spin_lock_irqsave(&uncore->lock, irqflags); \
> -	unclaimed_reg_debug_header(uncore, reg, false)
> +	unclaimed_reg_debug = unclaimed_reg_debug_header(uncore, reg, false)
>   
>   #define GEN6_WRITE_FOOTER \
> -	unclaimed_reg_debug_footer(uncore, reg, false); \
> +	if (unclaimed_reg_debug) \
> +		unclaimed_reg_debug_footer(uncore, reg, false); \
>   	spin_unlock_irqrestore(&uncore->lock, irqflags)
>   
>   #define __gen6_write(x) \

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Regards,

Tvrtko

  reply	other threads:[~2023-07-06 10:51 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-04  9:48 [Intel-gfx] [PATCH 0/3] drm/i915/uncore: unclaimed reg debug race fix and optimization Jani Nikula
2023-07-04  9:48 ` [Intel-gfx] [PATCH 1/3] drm/i915/uncore: split unclaimed_reg_debug() to header and footer Jani Nikula
2023-07-06 10:50   ` Tvrtko Ursulin
2023-07-04  9:48 ` [Intel-gfx] [PATCH 2/3] drm/i915/uncore: fix race around i915->params.mmio_debug Jani Nikula
2023-07-06 10:51   ` Tvrtko Ursulin [this message]
2023-07-04  9:48 ` [Intel-gfx] [PATCH 3/3] drm/i915/uncore: optimize CONFIG_DRM_I915_DEBUG_MMIO=n more Jani Nikula
2023-07-06 10:56   ` Tvrtko Ursulin
2023-07-06 12:06     ` Jani Nikula
2023-07-06 13:48       ` Tvrtko Ursulin
2023-07-25  3:01         ` Lee, Shawn C
2023-07-04 10:02 ` [Intel-gfx] [PATCH 0/3] drm/i915/uncore: unclaimed reg debug race fix and optimization Jani Nikula
2023-07-04 11:26 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for " Patchwork
2023-07-04 11:36 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2023-07-04 15:23 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork

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=3eb5abe0-efa9-7d46-9d0d-21106c49b6f2@linux.intel.com \
    --to=tvrtko.ursulin@linux.intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=jani.nikula@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox