amdgpu: Don't print L2 status if there's nothing to print

If a 2nd fault comes in before the 1st is handled, the 1st fault will
clear out the FAULT STATUS registers before the 2nd fault is handled.
Thus we get a lot of zeroes. If status=0, just skip the L2 fault status
information, to avoid confusion of why some VM fault status prints in
dmesg are all zeroes.

Signed-off-by: Kent Russell <kent.russell@amd.com>
Reviewed-by: Felix Kuehling <felix.kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Kent Russell
2024-10-16 14:26:33 -04:00
committed by Alex Deucher
parent 5605a0d363
commit 3c0be69bad
4 changed files with 18 additions and 3 deletions

View File

@@ -175,7 +175,10 @@ static int gmc_v10_0_process_interrupt(struct amdgpu_device *adev,
addr, entry->client_id,
soc15_ih_clientid_name[entry->client_id]);
if (!amdgpu_sriov_vf(adev))
/* Only print L2 fault status if the status register could be read and
* contains useful information
*/
if (status != 0)
hub->vmhub_funcs->print_l2_protection_fault_status(adev,
status);

View File

@@ -144,7 +144,10 @@ static int gmc_v11_0_process_interrupt(struct amdgpu_device *adev,
dev_err(adev->dev, " in page starting at address 0x%016llx from client %d\n",
addr, entry->client_id);
if (!amdgpu_sriov_vf(adev))
/* Only print L2 fault status if the status register could be read and
* contains useful information
*/
if (status != 0)
hub->vmhub_funcs->print_l2_protection_fault_status(adev, status);
}

View File

@@ -137,7 +137,10 @@ static int gmc_v12_0_process_interrupt(struct amdgpu_device *adev,
dev_err(adev->dev, " in page starting at address 0x%016llx from client %d\n",
addr, entry->client_id);
if (!amdgpu_sriov_vf(adev))
/* Only print L2 fault status if the status register could be read and
* contains useful information
*/
if (status != 0)
hub->vmhub_funcs->print_l2_protection_fault_status(adev, status);
}

View File

@@ -672,6 +672,12 @@ static int gmc_v9_0_process_interrupt(struct amdgpu_device *adev,
(amdgpu_ip_version(adev, GC_HWIP, 0) >= IP_VERSION(9, 4, 2)))
return 0;
/* Only print L2 fault status if the status register could be read and
* contains useful information
*/
if (!status)
return 0;
if (!amdgpu_sriov_vf(adev))
WREG32_P(hub->vm_l2_pro_fault_cntl, 1, ~1);