diff mbox series

[3/3] drm/i915/uncore: optimize CONFIG_DRM_I915_DEBUG_MMIO=n more

Message ID 4e087e216d86e6be8109bb443d1ac6c9ced1f777.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
While the default for the mmio_debug parameter depends on
CONFIG_DRM_I915_DEBUG_MMIO, we look it up and include all the code for
unclaimed reg debugging even when CONFIG_DRM_I915_DEBUG_MMIO=n. Fix it.

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 | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Tvrtko Ursulin July 6, 2023, 10:56 a.m. UTC | #1
On 04/07/2023 10:48, Jani Nikula wrote:
> While the default for the mmio_debug parameter depends on
> CONFIG_DRM_I915_DEBUG_MMIO, we look it up and include all the code for
> unclaimed reg debugging even when CONFIG_DRM_I915_DEBUG_MMIO=n. Fix it.
> 
> 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 | 3 ++-
>   1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
> index dfefad5a5fec..da2edde4b6f6 100644
> --- a/drivers/gpu/drm/i915/intel_uncore.c
> +++ b/drivers/gpu/drm/i915/intel_uncore.c
> @@ -1929,7 +1929,8 @@ 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)
> +	if (!IS_ENABLED(CONFIG_DRM_I915_DEBUG_MMIO) ||
> +	    likely(!uncore->i915->params.mmio_debug) || !uncore->debug)
>   		return false;

But now it would not be possible to enable mmio_debug, if Kconfig 
_default_ is 'n'. What am I missing?

Regards,

Tvrtko

>   
>   	/* interrupts are disabled and re-enabled around uncore->lock usage */
Jani Nikula July 6, 2023, 12:06 p.m. UTC | #2
On Thu, 06 Jul 2023, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
> On 04/07/2023 10:48, Jani Nikula wrote:
>> While the default for the mmio_debug parameter depends on
>> CONFIG_DRM_I915_DEBUG_MMIO, we look it up and include all the code for
>> unclaimed reg debugging even when CONFIG_DRM_I915_DEBUG_MMIO=n. Fix it.
>> 
>> 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 | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>> 
>> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
>> index dfefad5a5fec..da2edde4b6f6 100644
>> --- a/drivers/gpu/drm/i915/intel_uncore.c
>> +++ b/drivers/gpu/drm/i915/intel_uncore.c
>> @@ -1929,7 +1929,8 @@ 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)
>> +	if (!IS_ENABLED(CONFIG_DRM_I915_DEBUG_MMIO) ||
>> +	    likely(!uncore->i915->params.mmio_debug) || !uncore->debug)
>>   		return false;
>
> But now it would not be possible to enable mmio_debug, if Kconfig 
> _default_ is 'n'. What am I missing?

You're not missing anything, I am. *facepalm*

The question is, are the first two acceptable without the third?

BR,
Jani.


>
> Regards,
>
> Tvrtko
>
>>   
>>   	/* interrupts are disabled and re-enabled around uncore->lock usage */
Tvrtko Ursulin July 6, 2023, 1:48 p.m. UTC | #3
On 06/07/2023 13:06, Jani Nikula wrote:
> On Thu, 06 Jul 2023, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
>> On 04/07/2023 10:48, Jani Nikula wrote:
>>> While the default for the mmio_debug parameter depends on
>>> CONFIG_DRM_I915_DEBUG_MMIO, we look it up and include all the code for
>>> unclaimed reg debugging even when CONFIG_DRM_I915_DEBUG_MMIO=n. Fix it.
>>>
>>> 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 | 3 ++-
>>>    1 file changed, 2 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
>>> index dfefad5a5fec..da2edde4b6f6 100644
>>> --- a/drivers/gpu/drm/i915/intel_uncore.c
>>> +++ b/drivers/gpu/drm/i915/intel_uncore.c
>>> @@ -1929,7 +1929,8 @@ 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)
>>> +	if (!IS_ENABLED(CONFIG_DRM_I915_DEBUG_MMIO) ||
>>> +	    likely(!uncore->i915->params.mmio_debug) || !uncore->debug)
>>>    		return false;
>>
>> But now it would not be possible to enable mmio_debug, if Kconfig
>> _default_ is 'n'. What am I missing?
> 
> You're not missing anything, I am. *facepalm*
> 
> The question is, are the first two acceptable without the third?

What are 1st, 2nd and 3rd in your counting?

This area is confusing me a little bit.

If I look at unclaimed_reg_debug it appears unclaimed register debug 
depends on mmio_debug.

But if I look at the message output by 
intel_uncore_arm_unclaimed_mmio_detection it appears that on detecting 
an unclaimed register we suggest to enable mmio_debug.

Isn't that a contradiction?

Regards,

Tvrtko
Lee Shawn C July 25, 2023, 3:01 a.m. UTC | #4
>On 06/07/2023 13:06, Jani Nikula wrote:
>> On Thu, 06 Jul 2023, Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> wrote:
>>> On 04/07/2023 10:48, Jani Nikula wrote:
>>>> While the default for the mmio_debug parameter depends on 
>>>> CONFIG_DRM_I915_DEBUG_MMIO, we look it up and include all the code 
>>>> for unclaimed reg debugging even when CONFIG_DRM_I915_DEBUG_MMIO=n. Fix it.
>>>>
>>>> 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 | 3 ++-
>>>>    1 file changed, 2 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/drivers/gpu/drm/i915/intel_uncore.c 
>>>> b/drivers/gpu/drm/i915/intel_uncore.c
>>>> index dfefad5a5fec..da2edde4b6f6 100644
>>>> --- a/drivers/gpu/drm/i915/intel_uncore.c
>>>> +++ b/drivers/gpu/drm/i915/intel_uncore.c
>>>> @@ -1929,7 +1929,8 @@ 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)
>>>> +	if (!IS_ENABLED(CONFIG_DRM_I915_DEBUG_MMIO) ||
>>>> +	    likely(!uncore->i915->params.mmio_debug) || !uncore->debug)
>>>>    		return false;
>>>
>>> But now it would not be possible to enable mmio_debug, if Kconfig 
>>> _default_ is 'n'. What am I missing?
>> 
>> You're not missing anything, I am. *facepalm*
>> 
>> The question is, are the first two acceptable without the third?
>
>What are 1st, 2nd and 3rd in your counting?
>
>This area is confusing me a little bit.
>
>If I look at unclaimed_reg_debug it appears unclaimed register debug depends on mmio_debug.
>
>But if I look at the message output by
>intel_uncore_arm_unclaimed_mmio_detection it appears that on detecting an unclaimed register we suggest to enable mmio_debug.
>
>Isn't that a contradiction?
>
>Regards,
>
>Tvrtko

Hi Jani, Tvrtko,

We are still waiting for these patches to fix issue. May I get your help to re-visit this series? Thanks!

Best regards,
Shawn
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c
index dfefad5a5fec..da2edde4b6f6 100644
--- a/drivers/gpu/drm/i915/intel_uncore.c
+++ b/drivers/gpu/drm/i915/intel_uncore.c
@@ -1929,7 +1929,8 @@  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)
+	if (!IS_ENABLED(CONFIG_DRM_I915_DEBUG_MMIO) ||
+	    likely(!uncore->i915->params.mmio_debug) || !uncore->debug)
 		return false;
 
 	/* interrupts are disabled and re-enabled around uncore->lock usage */