> 2025年1月9日 01:19,Mario Limonciello <mario.limoncie...@amd.com> 写道:
> 
> On 1/8/2025 07:59, Jiang Liu wrote:
>> Add a flag to track ras debugfs creation status, to avoid possible
>> incorrect reference count management for ras block object  in function
>> amdgpu_ras_aca_is_supported().
> 
> Rather than taking a marker position, why not just check for
> obj->fs_data.debugfs_name to be non NULL in amdgpu_ras_fs_fini()?
I plan to use marker as a common status track mechanism, so used marker here:)

> 
>> Signed-off-by: Jiang Liu <ge...@linux.alibaba.com>
>> ---
>>  drivers/gpu/drm/amd/amdgpu/amdgpu.h     | 2 +-
>>  drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c | 9 +++++++--
>>  2 files changed, 8 insertions(+), 3 deletions(-)
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>> index 32941f29507c..2ef7d3102be3 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
>> @@ -378,7 +378,7 @@ enum amdgpu_marker {
>>      AMDGPU_MARKER_IRQ6              = 6,
>>      AMDGPU_MARKER_IRQ7              = 7,
>>      AMDGPU_MARKER_IRQ_MAX           = 47,
>> -    AMDGPU_MARKER_DEBUGFS           = 63,
>> +    AMDGPU_MARKER_RAS_DEBUGFS       = 63,
> 
> Any particular reason you jumped to 63 in this patch and then counted down in 
> the next one?  IE why not throw it at 48 (and then 49 for next one)?
I’m not sure how much markers are needed for IRQ, so I split the space into two 
parts: one for irq and one for others.

> 
>>  };
>>    #define AMDGPU_MARKER_INDEX_IRQ(idx)              
>> (AMDGPU_MARKER_INDEX_IRQ0 + (idx))
>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c 
>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
>> index 6d52e22691f7..efd72b07a185 100644
>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
>> @@ -1996,7 +1996,8 @@ static void amdgpu_ras_debugfs_create(struct 
>> amdgpu_device *adev,
>>  {
>>      struct ras_manager *obj = amdgpu_ras_find_obj(adev, &head->head);
>>  -   if (!obj || !dir)
>> +    if (!obj || !dir ||
>> +        amdgpu_ras_test_marker(adev, &head->head, 
>> AMDGPU_MARKER_RAS_DEBUGFS))
>>              return;
>>      get_obj(obj);
>> @@ -2007,6 +2008,8 @@ static void amdgpu_ras_debugfs_create(struct 
>> amdgpu_device *adev,
>>      debugfs_create_file(obj->fs_data.debugfs_name, S_IWUGO | S_IRUGO, dir,
>>                          obj, &amdgpu_ras_debugfs_ops);
>> +
>> +    amdgpu_ras_set_marker(adev, &head->head, AMDGPU_MARKER_RAS_DEBUGFS);
>>  }
>>    static bool amdgpu_ras_aca_is_supported(struct amdgpu_device *adev)
>> @@ -2134,7 +2137,9 @@ static int amdgpu_ras_fs_fini(struct amdgpu_device 
>> *adev)
>>      if (IS_ENABLED(CONFIG_DEBUG_FS)) {
>>              list_for_each_entry_safe(con_obj, tmp, &con->head, node) {
>>                      ip_obj = amdgpu_ras_find_obj(adev, &con_obj->head);
>> -                    if (ip_obj)
>> +                    if (ip_obj &&
>> +                        amdgpu_ras_test_and_clear_marker(adev, 
>> &ip_obj->head,
>> +                                                         
>> AMDGPU_MARKER_RAS_DEBUGFS))
>>                              put_obj(ip_obj);
>>              }
>>      }

Reply via email to