diff mbox series

[1/3] drm/i915/uncore: split unclaimed_reg_debug() to header and footer

Message ID 2abb4ff40e939d2a8e2bf0f2837fc6769614e50b.1688463863.git.jani.nikula@intel.com (mailing list archive)
State New, archived
Headers show
Series drm/i915/uncore: unclaimed reg debug race fix and optimization | expand

Commit Message

Jani Nikula July 4, 2023, 9:48 a.m. UTC
Make it easier to have different logic for the two for follow-up.

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 | 37 +++++++++++++++++------------
 1 file changed, 22 insertions(+), 15 deletions(-)

Comments

Tvrtko Ursulin July 6, 2023, 10:50 a.m. UTC | #1
On 04/07/2023 10:48, Jani Nikula wrote:
> Make it easier to have different logic for the two for follow-up.
> 
> 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 | 37 +++++++++++++++++------------
>   1 file changed, 22 insertions(+), 15 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index 796ebfe6c550..a88aa342b623 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -1926,10 +1926,8 @@ __unclaimed_previous_reg_debug(struct intel_uncore *uncore,
>   }
>   
>   static inline void
> -unclaimed_reg_debug(struct intel_uncore *uncore,
> -		    const i915_reg_t reg,
> -		    const bool read,
> -		    const bool before)
> +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;
> @@ -1937,13 +1935,22 @@ unclaimed_reg_debug(struct intel_uncore *uncore,
>   	/* interrupts are disabled and re-enabled around uncore->lock usage */
>   	lockdep_assert_held(&uncore->lock);
>   
> -	if (before) {
> -		spin_lock(&uncore->debug->lock);
> -		__unclaimed_previous_reg_debug(uncore, reg, read);
> -	} else {
> -		__unclaimed_reg_debug(uncore, reg, read);
> -		spin_unlock(&uncore->debug->lock);
> -	}
> +	spin_lock(&uncore->debug->lock);
> +	__unclaimed_previous_reg_debug(uncore, reg, read);
> +}
> +
> +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);
> +
> +	__unclaimed_reg_debug(uncore, reg, read);
> +	spin_unlock(&uncore->debug->lock);
>   }
>   
>   #define __vgpu_read(x) \
> @@ -2004,10 +2011,10 @@ __gen2_read(64)
>   	u##x val = 0; \
>   	assert_rpm_wakelock_held(uncore->rpm); \
>   	spin_lock_irqsave(&uncore->lock, irqflags); \
> -	unclaimed_reg_debug(uncore, reg, true, true)
> +	unclaimed_reg_debug_header(uncore, reg, true)
>   
>   #define GEN6_READ_FOOTER \
> -	unclaimed_reg_debug(uncore, reg, true, false); \
> +	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
> @@ -2108,10 +2115,10 @@ __gen2_write(32)
>   	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(uncore, reg, false, true)
> +	unclaimed_reg_debug_header(uncore, reg, false)
>   
>   #define GEN6_WRITE_FOOTER \
> -	unclaimed_reg_debug(uncore, reg, false, false); \
> +	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
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index 796ebfe6c550..a88aa342b623 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -1926,10 +1926,8 @@  __unclaimed_previous_reg_debug(struct intel_uncore *uncore,
 }
 
 static inline void
-unclaimed_reg_debug(struct intel_uncore *uncore,
-		    const i915_reg_t reg,
-		    const bool read,
-		    const bool before)
+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;
@@ -1937,13 +1935,22 @@  unclaimed_reg_debug(struct intel_uncore *uncore,
 	/* interrupts are disabled and re-enabled around uncore->lock usage */
 	lockdep_assert_held(&uncore->lock);
 
-	if (before) {
-		spin_lock(&uncore->debug->lock);
-		__unclaimed_previous_reg_debug(uncore, reg, read);
-	} else {
-		__unclaimed_reg_debug(uncore, reg, read);
-		spin_unlock(&uncore->debug->lock);
-	}
+	spin_lock(&uncore->debug->lock);
+	__unclaimed_previous_reg_debug(uncore, reg, read);
+}
+
+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);
+
+	__unclaimed_reg_debug(uncore, reg, read);
+	spin_unlock(&uncore->debug->lock);
 }
 
 #define __vgpu_read(x) \
@@ -2004,10 +2011,10 @@  __gen2_read(64)
 	u##x val = 0; \
 	assert_rpm_wakelock_held(uncore->rpm); \
 	spin_lock_irqsave(&uncore->lock, irqflags); \
-	unclaimed_reg_debug(uncore, reg, true, true)
+	unclaimed_reg_debug_header(uncore, reg, true)
 
 #define GEN6_READ_FOOTER \
-	unclaimed_reg_debug(uncore, reg, true, false); \
+	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
@@ -2108,10 +2115,10 @@  __gen2_write(32)
 	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(uncore, reg, false, true)
+	unclaimed_reg_debug_header(uncore, reg, false)
 
 #define GEN6_WRITE_FOOTER \
-	unclaimed_reg_debug(uncore, reg, false, false); \
+	unclaimed_reg_debug_footer(uncore, reg, false); \
 	spin_unlock_irqrestore(&uncore->lock, irqflags)
 
 #define __gen6_write(x) \