Commit 3c0be69b authored by Kent Russell's avatar Kent Russell Committed by Alex Deucher
Browse files

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: default avatarKent Russell <kent.russell@amd.com>
Reviewed-by: default avatarFelix Kuehling <felix.kuehling@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 5605a0d3
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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);

+4 −1
Original line number Diff line number Diff line
@@ -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);
	}

+4 −1
Original line number Diff line number Diff line
@@ -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);
	}

+6 −0
Original line number Diff line number Diff line
@@ -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);