On 29-09-2026 05:34 pm, Christian König wrote:
On 9/28/26 20:57, Sunil Khatri wrote:
The RLC bring-up paths programmed the RLC_SPM_VMID field to a hardcoded
0xf as the idle default. Now that the dedicated SPM VMID is tracked in
vm_manager.spm_vmid, use it directly so the idle default matches the
VMID the reservation path hands out.

No functional change: spm_vmid is the top VMID (0xf) on all affected
generations (gfx7 through gfx12).
You also need to remove all the calls to adev->gfx.rlc.funcs->update_spm_vmid 
from amdgpu_vm_flush() and amdgpu_ib_schedule().

Sure in the next patch set will remove them...

Regards
Sunil Khatri


Regards,
Christian.

Signed-off-by: Sunil Khatri <[email protected]>
---
  drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c  | 4 ++--
  drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c  | 2 +-
  drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c  | 2 +-
  drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c  | 2 +-
  drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c   | 2 +-
  drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c   | 2 +-
  drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c   | 2 +-
  drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c | 2 +-
  8 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
index 33403e16df5ca..88f9f0b0bf524 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
@@ -5583,7 +5583,7 @@ static int gfx_v10_0_rlc_resume(struct amdgpu_device 
*adev)
gfx_v10_0_init_csb(adev); - gfx_v10_0_update_spm_vmid_internal(adev, 0xf);
+               gfx_v10_0_update_spm_vmid_internal(adev, 
adev->vm_manager.spm_vmid);
if (!amdgpu_sriov_vf(adev)) /* enable RLC SRM */
                        gfx_v10_0_rlc_enable_srm(adev);
@@ -5615,7 +5615,7 @@ static int gfx_v10_0_rlc_resume(struct amdgpu_device 
*adev)
gfx_v10_0_init_csb(adev); - gfx_v10_0_update_spm_vmid_internal(adev, 0xf);
+               gfx_v10_0_update_spm_vmid_internal(adev, 
adev->vm_manager.spm_vmid);
adev->gfx.rlc.funcs->start(adev); diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
index 7bfc8cbdcad85..036d1b7ade4e6 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
@@ -944,7 +944,7 @@ static int gfx_v11_0_rlc_init(struct amdgpu_device *adev)
/* init spm vmid with 0xf */
        if (adev->gfx.rlc.funcs->update_spm_vmid)
-               adev->gfx.rlc.funcs->update_spm_vmid(adev, 0, NULL, 0xf);
+               adev->gfx.rlc.funcs->update_spm_vmid(adev, 0, NULL, 
adev->vm_manager.spm_vmid);
return 0;
  }
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
index b75512e7b1db6..4caa43ff50a1b 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v12_0.c
@@ -773,7 +773,7 @@ static int gfx_v12_0_rlc_init(struct amdgpu_device *adev)
/* init spm vmid with 0xf */
        if (adev->gfx.rlc.funcs->update_spm_vmid)
-               adev->gfx.rlc.funcs->update_spm_vmid(adev, 0, NULL, 0xf);
+               adev->gfx.rlc.funcs->update_spm_vmid(adev, 0, NULL, 
adev->vm_manager.spm_vmid);
return 0;
  }
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
index 91764f2e5ad01..a3d72cbaa6cf1 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v12_1.c
@@ -1848,7 +1848,7 @@ static int gfx_v12_1_xcc_rlc_resume(struct amdgpu_device 
*adev,
        int r;
/* init spm vmid with 0xf */
-       gfx_v12_1_update_spm_vmid(adev, xcc_id, NULL, 0xf);
+       gfx_v12_1_update_spm_vmid(adev, xcc_id, NULL, 
adev->vm_manager.spm_vmid);
if (adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) {
                gfx_v12_1_xcc_init_csb(adev, xcc_id);
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
index 549d1239e326b..04ee7e1725a94 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c
@@ -3252,7 +3252,7 @@ static int gfx_v7_0_rlc_init(struct amdgpu_device *adev)
/* init spm vmid with 0xf */
        if (adev->gfx.rlc.funcs->update_spm_vmid)
-               adev->gfx.rlc.funcs->update_spm_vmid(adev, 0, NULL, 0xf);
+               adev->gfx.rlc.funcs->update_spm_vmid(adev, 0, NULL, 
adev->vm_manager.spm_vmid);
return 0;
  }
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
index ab4123ddbb942..61ba71b57b8e2 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c
@@ -1274,7 +1274,7 @@ static int gfx_v8_0_rlc_init(struct amdgpu_device *adev)
/* init spm vmid with 0xf */
        if (adev->gfx.rlc.funcs->update_spm_vmid)
-               adev->gfx.rlc.funcs->update_spm_vmid(adev, 0, NULL, 0xf);
+               adev->gfx.rlc.funcs->update_spm_vmid(adev, 0, NULL, 
adev->vm_manager.spm_vmid);
return 0;
  }
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c 
b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
index 1678015ce5a97..4862d17a58237 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
@@ -3240,7 +3240,7 @@ static int gfx_v9_0_rlc_resume(struct amdgpu_device *adev)
                break;
        }
- gfx_v9_0_update_spm_vmid_internal(adev, 0xf);
+       gfx_v9_0_update_spm_vmid_internal(adev, adev->vm_manager.spm_vmid);
adev->gfx.rlc.funcs->start(adev); diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c b/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c
index 01ed1701c781a..add8099cf8e05 100644
--- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c
+++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_4_3.c
@@ -1395,7 +1395,7 @@ static int gfx_v9_4_3_rlc_init(struct amdgpu_device *adev)
  {
        /* init spm vmid with 0xf */
        if (adev->gfx.rlc.funcs->update_spm_vmid)
-               adev->gfx.rlc.funcs->update_spm_vmid(adev, 0, NULL, 0xf);
+               adev->gfx.rlc.funcs->update_spm_vmid(adev, 0, NULL, 
adev->vm_manager.spm_vmid);
return 0;
  }

Reply via email to