struct psp_gfx_cmd_resp *cmd,
                                 uint64_t tmr_mc, uint32_t size)
 {
-       if (psp_support_vmr_ring(psp))
+       if (amdgpu_sriov_vf(psp->adev))
                cmd->cmd_id = GFX_CMD_ID_SETUP_VMR;
        else
                cmd->cmd_id = GFX_CMD_ID_SETUP_TMR;
 
                                      struct psp_xgmi_topology_info *topology);
        int (*xgmi_set_topology_info)(struct psp_context *psp, int number_devices,
                                      struct psp_xgmi_topology_info *topology);
-       bool (*support_vmr_ring)(struct psp_context *psp);
        int (*ras_trigger_error)(struct psp_context *psp,
                        struct ta_ras_trigger_error_input *info);
        int (*ras_cure_posion)(struct psp_context *psp, uint64_t *mode_ptr);
                ((psp)->funcs->bootloader_load_sos ? (psp)->funcs->bootloader_load_sos((psp)) : 0)
 #define psp_smu_reload_quirk(psp) \
                ((psp)->funcs->smu_reload_quirk ? (psp)->funcs->smu_reload_quirk((psp)) : false)
-#define psp_support_vmr_ring(psp) \
-               ((psp)->funcs->support_vmr_ring ? (psp)->funcs->support_vmr_ring((psp)) : false)
 #define psp_mode1_reset(psp) \
                ((psp)->funcs->mode1_reset ? (psp)->funcs->mode1_reset((psp)) : false)
 #define psp_xgmi_get_node_id(psp, node_id) \
 
        return 0;
 }
 
-static bool psp_v11_0_support_vmr_ring(struct psp_context *psp)
-{
-       if (amdgpu_sriov_vf(psp->adev) && psp->sos_fw_version > 0x80045)
-               return true;
-       return false;
-}
-
 static int psp_v11_0_ring_stop(struct psp_context *psp,
                              enum psp_ring_type ring_type)
 {
        struct amdgpu_device *adev = psp->adev;
 
        /* Write the ring destroy command*/
-       if (psp_v11_0_support_vmr_ring(psp))
+       if (amdgpu_sriov_vf(adev))
                WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_101,
                                     GFX_CTRL_CMD_ID_DESTROY_GPCOM_RING);
        else
        mdelay(20);
 
        /* Wait for response flag (bit 31) */
-       if (psp_v11_0_support_vmr_ring(psp))
+       if (amdgpu_sriov_vf(adev))
                ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_101),
                                   0x80000000, 0x80000000, false);
        else
        struct psp_ring *ring = &psp->km_ring;
        struct amdgpu_device *adev = psp->adev;
 
-       if (psp_v11_0_support_vmr_ring(psp)) {
+       if (amdgpu_sriov_vf(adev)) {
                ret = psp_v11_0_ring_stop(psp, ring_type);
                if (ret) {
                        DRM_ERROR("psp_v11_0_ring_stop_sriov failed!\n");
        uint32_t data;
        struct amdgpu_device *adev = psp->adev;
 
-       if (psp_v11_0_support_vmr_ring(psp))
+       if (amdgpu_sriov_vf(adev))
                data = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_102);
        else
                data = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_67);
 {
        struct amdgpu_device *adev = psp->adev;
 
-       if (psp_v11_0_support_vmr_ring(psp)) {
+       if (amdgpu_sriov_vf(adev)) {
                WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_102, value);
                WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_101, GFX_CTRL_CMD_ID_CONSUME_CMD);
        } else
        .xgmi_set_topology_info = psp_v11_0_xgmi_set_topology_info,
        .xgmi_get_hive_id = psp_v11_0_xgmi_get_hive_id,
        .xgmi_get_node_id = psp_v11_0_xgmi_get_node_id,
-       .support_vmr_ring = psp_v11_0_support_vmr_ring,
        .ras_trigger_error = psp_v11_0_ras_trigger_error,
        .ras_cure_posion = psp_v11_0_ras_cure_posion,
        .rlc_autoload_start = psp_v11_0_rlc_autoload_start,
 
        return 0;
 }
 
-static bool psp_v12_0_support_vmr_ring(struct psp_context *psp)
-{
-       if (amdgpu_sriov_vf(psp->adev) && psp->sos_fw_version > 0x80045)
-               return true;
-       return false;
-}
-
 static int psp_v12_0_ring_create(struct psp_context *psp,
                                enum psp_ring_type ring_type)
 {
        struct psp_ring *ring = &psp->km_ring;
        struct amdgpu_device *adev = psp->adev;
 
-       if (psp_v12_0_support_vmr_ring(psp)) {
+       if (amdgpu_sriov_vf(psp->adev)) {
                /* Write low address of the ring to C2PMSG_102 */
                psp_ring_reg = lower_32_bits(ring->ring_mem_mc_addr);
                WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_102, psp_ring_reg);
        struct amdgpu_device *adev = psp->adev;
 
        /* Write the ring destroy command*/
-       if (psp_v12_0_support_vmr_ring(psp))
+       if (amdgpu_sriov_vf(adev))
                WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_101,
                                     GFX_CTRL_CMD_ID_DESTROY_GPCOM_RING);
        else
        mdelay(20);
 
        /* Wait for response flag (bit 31) */
-       if (psp_v12_0_support_vmr_ring(psp))
+       if (amdgpu_sriov_vf(adev))
                ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_101),
                                   0x80000000, 0x80000000, false);
        else
        uint32_t data;
        struct amdgpu_device *adev = psp->adev;
 
-       if (psp_v12_0_support_vmr_ring(psp))
+       if (amdgpu_sriov_vf(adev))
                data = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_102);
        else
                data = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_67);
 {
        struct amdgpu_device *adev = psp->adev;
 
-       if (psp_v12_0_support_vmr_ring(psp)) {
+       if (amdgpu_sriov_vf(adev)) {
                WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_102, value);
                WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_101, GFX_CTRL_CMD_ID_CONSUME_CMD);
        } else
 
 
 static uint32_t sos_old_versions[] = {1517616, 1510592, 1448594, 1446554};
 
-static bool psp_v3_1_support_vmr_ring(struct psp_context *psp);
 static int psp_v3_1_ring_stop(struct psp_context *psp,
                              enum psp_ring_type ring_type);
 
 
        psp_v3_1_reroute_ih(psp);
 
-       if (psp_v3_1_support_vmr_ring(psp)) {
+       if (amdgpu_sriov_vf(adev)) {
                ret = psp_v3_1_ring_stop(psp, ring_type);
                if (ret) {
                        DRM_ERROR("psp_v3_1_ring_stop_sriov failed!\n");
                              enum psp_ring_type ring_type)
 {
        int ret = 0;
-       unsigned int psp_ring_reg = 0;
        struct amdgpu_device *adev = psp->adev;
 
-       if (psp_v3_1_support_vmr_ring(psp)) {
-               /* Write the Destroy GPCOM ring command to C2PMSG_101 */
-               psp_ring_reg = GFX_CTRL_CMD_ID_DESTROY_GPCOM_RING;
-               WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_101, psp_ring_reg);
-
-               /* there might be handshake issue which needs delay */
-               mdelay(20);
-
-               /* Wait for response flag (bit 31) in C2PMSG_101 */
-               ret = psp_wait_for(psp,
-                               SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_101),
-                               0x80000000, 0x80000000, false);
-       } else {
-               /* Write the ring destroy command to C2PMSG_64 */
-               psp_ring_reg = 3 << 16;
-               WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_64, psp_ring_reg);
+       /* Write the ring destroy command*/
+       if (amdgpu_sriov_vf(adev))
+               WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_101,
+                                    GFX_CTRL_CMD_ID_DESTROY_GPCOM_RING);
+       else
+               WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_64,
+                                    GFX_CTRL_CMD_ID_DESTROY_RINGS);
 
-               /* there might be handshake issue which needs delay */
-               mdelay(20);
+       /* there might be handshake issue with hardware which needs delay */
+       mdelay(20);
 
-               /* Wait for response flag (bit 31) in C2PMSG_64 */
-               ret = psp_wait_for(psp,
-                               SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_64),
-                               0x80000000, 0x80000000, false);
-       }
+       /* Wait for response flag (bit 31) */
+       if (amdgpu_sriov_vf(adev))
+               ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_101),
+                                  0x80000000, 0x80000000, false);
+       else
+               ret = psp_wait_for(psp, SOC15_REG_OFFSET(MP0, 0, mmMP0_SMN_C2PMSG_64),
+                                  0x80000000, 0x80000000, false);
 
        return ret;
 }
        return 0;
 }
 
-static bool psp_v3_1_support_vmr_ring(struct psp_context *psp)
-{
-       if (amdgpu_sriov_vf(psp->adev))
-               return true;
-
-       return false;
-}
-
 static uint32_t psp_v3_1_ring_get_wptr(struct psp_context *psp)
 {
        uint32_t data;
        struct amdgpu_device *adev = psp->adev;
 
-       if (psp_v3_1_support_vmr_ring(psp))
+       if (amdgpu_sriov_vf(adev))
                data = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_102);
        else
                data = RREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_67);
 {
        struct amdgpu_device *adev = psp->adev;
 
-       if (psp_v3_1_support_vmr_ring(psp)) {
+       if (amdgpu_sriov_vf(adev)) {
                WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_102, value);
                /* send interrupt to PSP for SRIOV ring write pointer update */
                WREG32_SOC15(MP0, 0, mmMP0_SMN_C2PMSG_101,
        .compare_sram_data = psp_v3_1_compare_sram_data,
        .smu_reload_quirk = psp_v3_1_smu_reload_quirk,
        .mode1_reset = psp_v3_1_mode1_reset,
-       .support_vmr_ring = psp_v3_1_support_vmr_ring,
        .ring_get_wptr = psp_v3_1_ring_get_wptr,
        .ring_set_wptr = psp_v3_1_ring_set_wptr,
 };