drm/amdgpu: Disable ACA on VFs
authorVictor Skvortsov <victor.skvortsov@amd.com>
Wed, 2 Apr 2025 21:35:56 +0000 (17:35 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 8 Apr 2025 20:48:14 +0000 (16:48 -0400)
VFs query RAS error counts directly from host with
AMDGPU_RAS_VIRT_ERROR_COUNT_QUERY. When ACA is enabled,
an unusable aca_sysfs is created rather than amdgpu_ras_sysfs_create()

Likewise, VFs depend on host support to query CPERs, rather than ACA component.

Signed-off-by: Victor Skvortsov <victor.skvortsov@amd.com>
Reviewed-by: Zhigang Luo <Zhigang.luo@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_cper.c
drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c

index 360e07a5c7c1fb574a321c091bcb47aafabfd740..5a234eadae8b3a26a940784044fd30c7e7efc109 100644 (file)
@@ -549,7 +549,7 @@ int amdgpu_cper_init(struct amdgpu_device *adev)
 {
        int r;
 
-       if (!amdgpu_aca_is_enabled(adev))
+       if (!amdgpu_aca_is_enabled(adev) && !amdgpu_sriov_ras_cper_en(adev))
                return 0;
 
        r = amdgpu_cper_ring_init(adev);
@@ -568,7 +568,7 @@ int amdgpu_cper_init(struct amdgpu_device *adev)
 
 int amdgpu_cper_fini(struct amdgpu_device *adev)
 {
-       if (!amdgpu_aca_is_enabled(adev))
+       if (!amdgpu_aca_is_enabled(adev) && !amdgpu_sriov_ras_cper_en(adev))
                return 0;
 
        adev->cper.enabled = false;
index ebf1f63d0442747d4b8fed7bd5e6e702dfcc56d0..5bb7673fd28eed19be4fc37fbd3eb160dba43b0d 100644 (file)
@@ -3794,10 +3794,12 @@ init_ras_enabled_flag:
                adev->ras_hw_enabled & amdgpu_ras_mask;
 
        /* aca is disabled by default except for psp v13_0_6/v13_0_12/v13_0_14 */
-       adev->aca.is_enabled =
-               (amdgpu_ip_version(adev, MP0_HWIP, 0) == IP_VERSION(13, 0, 6) ||
-                amdgpu_ip_version(adev, MP0_HWIP, 0) == IP_VERSION(13, 0, 12) ||
-                amdgpu_ip_version(adev, MP0_HWIP, 0) == IP_VERSION(13, 0, 14));
+       if (!amdgpu_sriov_vf(adev)) {
+               adev->aca.is_enabled =
+                       (amdgpu_ip_version(adev, MP0_HWIP, 0) == IP_VERSION(13, 0, 6) ||
+                       amdgpu_ip_version(adev, MP0_HWIP, 0) == IP_VERSION(13, 0, 12) ||
+                       amdgpu_ip_version(adev, MP0_HWIP, 0) == IP_VERSION(13, 0, 14));
+       }
 
        /* bad page feature is not applicable to specific app platform */
        if (adev->gmc.is_app_apu &&