Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drm/amdgpu: Introduce another ras enable function

Many parts of the whole SW stack can program the ras enablement state
during the boot. Now we handle that case by adding one function which
check the ras flags and choose different code path.

Reviewed-by: Evan Quan <evan.quan@amd.com>
Signed-off-by: xinhui pan <xinhui.pan@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

xinhui pan and committed by
Alex Deucher
77de502b 191051a1

+30
+27
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
··· 530 530 return 0; 531 531 } 532 532 533 + /* Only used in device probe stage and called only once. */ 534 + int amdgpu_ras_feature_enable_on_boot(struct amdgpu_device *adev, 535 + struct ras_common_if *head, bool enable) 536 + { 537 + struct amdgpu_ras *con = amdgpu_ras_get_context(adev); 538 + int ret; 539 + 540 + if (!con) 541 + return -EINVAL; 542 + 543 + if (con->flags & AMDGPU_RAS_FLAG_INIT_BY_VBIOS) { 544 + /* If ras is enabled by vbios, we set up ras object first in 545 + * both case. For enable, that is all what we need do. For 546 + * disable, we need perform a ras TA disable cmd after that. 547 + */ 548 + ret = __amdgpu_ras_feature_enable(adev, head, 1); 549 + if (ret) 550 + return ret; 551 + 552 + if (!enable) 553 + ret = amdgpu_ras_feature_enable(adev, head, 0); 554 + } else 555 + ret = amdgpu_ras_feature_enable(adev, head, enable); 556 + 557 + return ret; 558 + } 559 + 533 560 static int amdgpu_ras_disable_all_features(struct amdgpu_device *adev, 534 561 bool bypass) 535 562 {
+3
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.h
··· 262 262 int amdgpu_ras_feature_enable(struct amdgpu_device *adev, 263 263 struct ras_common_if *head, bool enable); 264 264 265 + int amdgpu_ras_feature_enable_on_boot(struct amdgpu_device *adev, 266 + struct ras_common_if *head, bool enable); 267 + 265 268 int amdgpu_ras_sysfs_create(struct amdgpu_device *adev, 266 269 struct ras_fs_if *head); 267 270