diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c | 9 | 
1 files changed, 8 insertions, 1 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c index 0fad2bf854ae..e8b8f28c2f72 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_xgmi.c @@ -208,6 +208,7 @@ static struct attribute *amdgpu_xgmi_hive_attrs[] = {  	&amdgpu_xgmi_hive_id,  	NULL  }; +ATTRIBUTE_GROUPS(amdgpu_xgmi_hive);  static ssize_t amdgpu_xgmi_show_attrs(struct kobject *kobj,  	struct attribute *attr, char *buf) @@ -237,7 +238,7 @@ static const struct sysfs_ops amdgpu_xgmi_hive_ops = {  struct kobj_type amdgpu_xgmi_hive_type = {  	.release = amdgpu_xgmi_hive_release,  	.sysfs_ops = &amdgpu_xgmi_hive_ops, -	.default_attrs = amdgpu_xgmi_hive_attrs, +	.default_groups = amdgpu_xgmi_hive_groups,  };  static ssize_t amdgpu_xgmi_show_device_id(struct device *dev, @@ -265,6 +266,11 @@ static ssize_t amdgpu_xgmi_show_error(struct device *dev,  	ficaa_pie_ctl_in = AMDGPU_XGMI_SET_FICAA(0x200);  	ficaa_pie_status_in = AMDGPU_XGMI_SET_FICAA(0x208); +	if ((!adev->df.funcs) || +	    (!adev->df.funcs->get_fica) || +	    (!adev->df.funcs->set_fica)) +		return -EINVAL; +  	fica_out = adev->df.funcs->get_fica(adev, ficaa_pie_ctl_in);  	if (fica_out != 0x1f)  		pr_err("xGMI error counters not enabled!\n"); @@ -386,6 +392,7 @@ struct amdgpu_hive_info *amdgpu_get_xgmi_hive(struct amdgpu_device *adev)  			"%s", "xgmi_hive_info");  	if (ret) {  		dev_err(adev->dev, "XGMI: failed initializing kobject for xgmi hive\n"); +		kobject_put(&hive->kobj);  		kfree(hive);  		hive = NULL;  		goto pro_end; |