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

drm/amdgpu: handle denied inject error into critical regions v2

Changed from v1:
remove unused brace

Signed-off-by: Stanley.Yang <Stanley.Yang@amd.com>
Reviewed-by: Tao Zhou <tao.zhou1@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Stanley.Yang and committed by
Alex Deucher
79c04621 3ddd0c90

+11 -3
+8 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_psp.c
··· 1335 1335 break; 1336 1336 case TA_RAS_STATUS__SUCCESS: 1337 1337 break; 1338 + case TA_RAS_STATUS__TEE_ERROR_ACCESS_DENIED: 1339 + if (ras_cmd->cmd_id == TA_RAS_COMMAND__TRIGGER_ERROR) 1340 + dev_warn(psp->adev->dev, 1341 + "RAS WARNING: Inject error to critical region is not allowed\n"); 1342 + break; 1338 1343 default: 1339 1344 dev_warn(psp->adev->dev, 1340 1345 "RAS WARNING: ras status = 0x%X\n", ras_cmd->ras_status); ··· 1552 1547 if (amdgpu_ras_intr_triggered()) 1553 1548 return 0; 1554 1549 1555 - if (ras_cmd->ras_status) 1550 + if (ras_cmd->ras_status == TA_RAS_STATUS__TEE_ERROR_ACCESS_DENIED) 1551 + return -EACCES; 1552 + else if (ras_cmd->ras_status) 1556 1553 return -EINVAL; 1557 1554 1558 1555 return 0;
+1 -1
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
··· 455 455 } 456 456 457 457 if (ret) 458 - return -EINVAL; 458 + return ret; 459 459 460 460 return size; 461 461 }
+2 -1
drivers/gpu/drm/amd/amdgpu/ta_ras_if.h
··· 64 64 TA_RAS_STATUS__ERROR_PCS_STATE_ERROR = 0xA016, 65 65 TA_RAS_STATUS__ERROR_PCS_STATE_HANG = 0xA017, 66 66 TA_RAS_STATUS__ERROR_PCS_STATE_UNKNOWN = 0xA018, 67 - TA_RAS_STATUS__ERROR_UNSUPPORTED_ERROR_INJ = 0xA019 67 + TA_RAS_STATUS__ERROR_UNSUPPORTED_ERROR_INJ = 0xA019, 68 + TA_RAS_STATUS__TEE_ERROR_ACCESS_DENIED = 0xA01A 68 69 }; 69 70 70 71 enum ta_ras_block {