<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    A nitpick below. With that addressed,<br>
    <br>
    Reviewed-by: Amber Lin <a class="moz-txt-link-rfc2396E" href="mailto:Amber.Lin@amd.com"><Amber.Lin@amd.com></a><br>
    <pre class="moz-signature" cols="72">Regards,
Amber</pre>
    <div class="moz-cite-prefix">On 3/27/25 13:47, Apurv Mishra wrote:<br>
    </div>
    <blockquote type="cite" cite="mid:20250327174723.394804-1-Apurv.Mishra@amd.com">
      <pre class="moz-quote-pre" wrap="">remove workaround code for the early engineering samples
GC v9.4.3 SOCs with revID 0 - GFX 940 & 941 - from driver</pre>
    </blockquote>
    Remove <span style="white-space: pre-wrap">"- GFX 940 & 941 - from driver" and simply "Remove </span><span style="white-space: pre-wrap">workaround code for the early engineering samples GC v9.4.3 SOCs with revID 0"

</span>
    <blockquote type="cite" cite="mid:20250327174723.394804-1-Apurv.Mishra@amd.com">
      <pre class="moz-quote-pre" wrap="">

Reviewed-by: Lijo Lazar <a class="moz-txt-link-rfc2396E" href="mailto:lijo.lazar@amd.com"><lijo.lazar@amd.com></a>
Signed-off-by: Apurv Mishra <a class="moz-txt-link-rfc2396E" href="mailto:Apurv.Mishra@amd.com"><Apurv.Mishra@amd.com></a>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |  8 +++++++-
 drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c      | 14 ++------------
 drivers/gpu/drm/amd/amdkfd/kfd_device.c    |  5 -----
 drivers/gpu/drm/amd/amdkfd/kfd_queue.c     |  4 ++--
 drivers/gpu/drm/amd/amdkfd/kfd_svm.c       |  3 +--
 5 files changed, 12 insertions(+), 22 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index d4b01ef00025..81d314f2c689 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -2692,6 +2692,13 @@ static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)
                break;
        }
 
+       /* Check for IP version 9.4.3 with A0 hardware */
+       if (amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(9, 4, 3) &&
+                       !amdgpu_device_get_rev_id(adev)) {
+               dev_err(adev->dev, "Unsupported A0 hardware\n");
+               return -ENODEV; /* device unsupported - no device error */
+       }
+
        if (amdgpu_has_atpx() &&
            (amdgpu_is_atpx_hybrid() ||
             amdgpu_has_atpx_dgpu_power_cntl()) &&
@@ -2704,7 +2711,6 @@ static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)
                adev->has_pr3 = parent ? pci_pr3_present(parent) : false;
        }
 
-
        adev->pm.pp_feature = amdgpu_pp_feature_mask;
        if (amdgpu_sriov_vf(adev) || sched_policy == KFD_SCHED_POLICY_NO_HWS)
                adev->pm.pp_feature &= ~PP_GFXOFF_MASK;
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
index 783e0c3b86b4..8d3560314e5b 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v9_0.c
@@ -1213,10 +1213,7 @@ static void gmc_v9_0_get_coherence_flags(struct amdgpu_device *adev,
                if (uncached) {
                        mtype = MTYPE_UC;
                } else if (ext_coherent) {
-                       if (gc_ip_version == IP_VERSION(9, 5, 0) || adev->rev_id)
-                               mtype = is_local ? MTYPE_CC : MTYPE_UC;
-                       else
-                               mtype = MTYPE_UC;
+                       mtype = is_local ? MTYPE_CC : MTYPE_UC;
                } else if (adev->flags & AMD_IS_APU) {
                        mtype = is_local ? mtype_local : MTYPE_NC;
                } else {
@@ -1336,7 +1333,7 @@ static void gmc_v9_0_override_vm_pte_flags(struct amdgpu_device *adev,
                                mtype_local = MTYPE_CC;
 
                        *flags = AMDGPU_PTE_MTYPE_VG10(*flags, mtype_local);
-               } else if (adev->rev_id) {
+               } else {
                        /* MTYPE_UC case */
                        *flags = AMDGPU_PTE_MTYPE_VG10(*flags, MTYPE_CC);
                }
@@ -2411,13 +2408,6 @@ static int gmc_v9_0_hw_init(struct amdgpu_ip_block *ip_block)
        adev->gmc.flush_tlb_needs_extra_type_2 =
                amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(9, 4, 0) &&
                adev->gmc.xgmi.num_physical_nodes;
-       /*
-        * TODO: This workaround is badly documented and had a buggy
-        * implementation. We should probably verify what we do here.
-        */
-       adev->gmc.flush_tlb_needs_extra_type_0 =
-               amdgpu_ip_version(adev, GC_HWIP, 0) == IP_VERSION(9, 4, 3) &&
-               adev->rev_id == 0;
 
        /* The sequence of these two function calls matters.*/
        gmc_v9_0_init_golden_registers(adev);
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device.c b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
index b9c82be6ce13..bf0854bd5555 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_device.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_device.c
@@ -352,11 +352,6 @@ struct kfd_dev *kgd2kfd_probe(struct amdgpu_device *adev, bool vf)
                        f2g = &aldebaran_kfd2kgd;
                        break;
                case IP_VERSION(9, 4, 3):
-                       gfx_target_version = adev->rev_id >= 1 ? 90402
-                                          : adev->flags & AMD_IS_APU ? 90400
-                                          : 90401;
-                       f2g = &gc_9_4_3_kfd2kgd;
-                       break;
                case IP_VERSION(9, 4, 4):
                        gfx_target_version = 90402;
                        f2g = &gc_9_4_3_kfd2kgd;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_queue.c b/drivers/gpu/drm/amd/amdkfd/kfd_queue.c
index 4afff7094caf..a65c67cf56ff 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_queue.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_queue.c
@@ -402,7 +402,7 @@ static u32 kfd_get_vgpr_size_per_cu(u32 gfxv)
 {
        u32 vgpr_size = 0x40000;
 
-       if ((gfxv / 100 * 100) == 90400 ||      /* GFX_VERSION_AQUA_VANJARAM */
+       if (gfxv == 90402 ||                    /* GFX_VERSION_AQUA_VANJARAM */
            gfxv == 90010 ||                    /* GFX_VERSION_ALDEBARAN */
            gfxv == 90008 ||                    /* GFX_VERSION_ARCTURUS */
            gfxv == 90500)
@@ -462,7 +462,7 @@ void kfd_queue_ctx_save_restore_size(struct kfd_topology_device *dev)
 
        if (gfxv == 80002)      /* GFX_VERSION_TONGA */
                props->eop_buffer_size = 0x8000;
-       else if ((gfxv / 100 * 100) == 90400)   /* GFX_VERSION_AQUA_VANJARAM */
+       else if (gfxv == 90402) /* GFX_VERSION_AQUA_VANJARAM */
                props->eop_buffer_size = 4096;
        else if (gfxv >= 80000)
                props->eop_buffer_size = 4096;
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
index 100717a98ec1..72be6e152e88 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
@@ -1245,8 +1245,7 @@ svm_range_get_pte_flags(struct kfd_node *node,
        case IP_VERSION(9, 4, 4):
        case IP_VERSION(9, 5, 0):
                if (ext_coherent)
-                       mtype_local = (gc_ip_version < IP_VERSION(9, 5, 0) && !node->adev->rev_id) ?
-                                       AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_CC;
+                       mtype_local = AMDGPU_VM_MTYPE_CC;
                else
                        mtype_local = amdgpu_mtype_local == 1 ? AMDGPU_VM_MTYPE_NC :
                                amdgpu_mtype_local == 2 ? AMDGPU_VM_MTYPE_CC : AMDGPU_VM_MTYPE_RW;
</pre>
    </blockquote>
    <br>
  </body>
</html>