mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 06:31:58 +02:00
drm/amdgpu: add function to check if pmfw eeprom is supported
add function to check if pmfw is supported, skip eeprom check and recover when pmfw eeprom is supported Signed-off-by: Gangliang Xie <ganglxie@amd.com> Reviewed-by: Tao Zhou <tao.zhou1@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
f5346a176c
commit
f6cdcbd2c0
|
|
@ -3767,6 +3767,8 @@ int amdgpu_ras_init_badpage_info(struct amdgpu_device *adev)
|
|||
return 0;
|
||||
|
||||
control = &con->eeprom_control;
|
||||
con->ras_smu_drv = amdgpu_dpm_get_ras_smu_driver(adev);
|
||||
|
||||
ret = amdgpu_ras_eeprom_init(control);
|
||||
control->is_eeprom_valid = !ret;
|
||||
|
||||
|
|
|
|||
|
|
@ -1546,7 +1546,8 @@ void amdgpu_ras_eeprom_check_and_recover(struct amdgpu_device *adev)
|
|||
struct amdgpu_ras_eeprom_control *control;
|
||||
int res;
|
||||
|
||||
if (!__is_ras_eeprom_supported(adev) || !ras)
|
||||
if (!__is_ras_eeprom_supported(adev) || !ras ||
|
||||
amdgpu_ras_smu_eeprom_supported(adev))
|
||||
return;
|
||||
control = &ras->eeprom_control;
|
||||
if (!control->is_eeprom_valid)
|
||||
|
|
@ -1566,4 +1567,45 @@ void amdgpu_ras_eeprom_check_and_recover(struct amdgpu_device *adev)
|
|||
control->is_eeprom_valid = false;
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static const struct ras_smu_drv *amdgpu_ras_get_smu_ras_drv(struct amdgpu_device *adev)
|
||||
{
|
||||
struct amdgpu_ras *ras = amdgpu_ras_get_context(adev);
|
||||
|
||||
if (!ras)
|
||||
return NULL;
|
||||
|
||||
return ras->ras_smu_drv;
|
||||
}
|
||||
|
||||
static uint64_t amdgpu_ras_smu_get_feature_flags(struct amdgpu_device *adev)
|
||||
{
|
||||
const struct ras_smu_drv *ras_smu_drv = amdgpu_ras_get_smu_ras_drv(adev);
|
||||
uint64_t flags = 0ULL;
|
||||
|
||||
if (!ras_smu_drv)
|
||||
goto out;
|
||||
|
||||
if (ras_smu_drv->ras_smu_feature_flags)
|
||||
ras_smu_drv->ras_smu_feature_flags(adev, &flags);
|
||||
|
||||
out:
|
||||
return flags;
|
||||
}
|
||||
|
||||
bool amdgpu_ras_smu_eeprom_supported(struct amdgpu_device *adev)
|
||||
{
|
||||
const struct ras_smu_drv *smu_ras_drv = amdgpu_ras_get_smu_ras_drv(adev);
|
||||
uint64_t flags = 0ULL;
|
||||
|
||||
if (!__is_ras_eeprom_supported(adev) || !smu_ras_drv)
|
||||
return false;
|
||||
|
||||
if (!smu_ras_drv->smu_eeprom_funcs)
|
||||
return false;
|
||||
|
||||
flags = amdgpu_ras_smu_get_feature_flags(adev);
|
||||
|
||||
return !!(flags & RAS_SMU_FEATURE_BIT__RAS_EEPROM);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -163,6 +163,8 @@ int amdgpu_ras_eeprom_check(struct amdgpu_ras_eeprom_control *control);
|
|||
|
||||
void amdgpu_ras_eeprom_check_and_recover(struct amdgpu_device *adev);
|
||||
|
||||
bool amdgpu_ras_smu_eeprom_supported(struct amdgpu_device *adev);
|
||||
|
||||
extern const struct file_operations amdgpu_ras_debugfs_eeprom_size_ops;
|
||||
extern const struct file_operations amdgpu_ras_debugfs_eeprom_table_ops;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user