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

Configure Feed

Select the types of activity you want to include in your feed.

drm/amd/ras: Add function to convert retired address

Add function to convert retired address in SR-IOV
guest.

Signed-off-by: Jinzhou Su <jinzhou.su@amd.com>
Reviewed-by: YiPeng Chai <YiPeng.Chai@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Jinzhou Su and committed by
Alex Deucher
edd786e9 a1fafed0

+29
+27
drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.c
··· 401 401 return RAS_CMD__SUCCESS; 402 402 } 403 403 404 + int amdgpu_virt_ras_convert_retired_address(struct amdgpu_device *adev, 405 + uint64_t address, uint64_t *pfn, uint32_t max_pfn_sz) 406 + { 407 + struct ras_cmd_convert_retired_address_req req = {0}; 408 + struct ras_cmd_convert_retired_address_rsp rsp = {0}; 409 + int ret = 0, i; 410 + int retired_page_count; 411 + 412 + if (!pfn || !max_pfn_sz) 413 + return -EINVAL; 414 + 415 + req.address = address; 416 + 417 + ret = amdgpu_ras_mgr_handle_ras_cmd(adev, RAS_CMD__CONVERT_RETIRED_ADDRESS, 418 + &req, sizeof(req), &rsp, sizeof(rsp)); 419 + 420 + if (ret || rsp.retired_count == 0) 421 + return -EINVAL; 422 + 423 + retired_page_count = rsp.retired_count > max_pfn_sz ? max_pfn_sz : rsp.retired_count; 424 + 425 + for (i = 0; i < retired_page_count; i++) 426 + pfn[i] = rsp.retired_addr[i] >> AMDGPU_GPU_PAGE_SHIFT; 427 + 428 + return retired_page_count; 429 + } 430 + 404 431 static struct ras_cmd_func_map amdgpu_virt_ras_cmd_maps[] = { 405 432 {RAS_CMD__GET_CPER_SNAPSHOT, amdgpu_virt_ras_get_cper_snapshot}, 406 433 {RAS_CMD__GET_CPER_RECORD, amdgpu_virt_ras_get_cper_records},
+2
drivers/gpu/drm/amd/ras/ras_mgr/amdgpu_virt_ras_cmd.h
··· 60 60 bool amdgpu_virt_ras_remote_uniras_enabled(struct amdgpu_device *adev); 61 61 int amdgpu_virt_ras_check_address_validity(struct amdgpu_device *adev, 62 62 uint64_t address, bool *hit); 63 + int amdgpu_virt_ras_convert_retired_address(struct amdgpu_device *adev, 64 + uint64_t address, uint64_t *pfn, uint32_t max_pfn_sz); 63 65 #endif