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);
 
 
                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);
        }
 
 
                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);
        }
 
 
            (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);