kgd_gfx_v9_get_atc_vmid_pasid_mapping_pasid,
        .get_atc_vmid_pasid_mapping_valid =
                        kgd_gfx_v9_get_atc_vmid_pasid_mapping_valid,
-       .set_scratch_backing_va = kgd_gfx_v9_set_scratch_backing_va,
        .get_tile_config = kgd_gfx_v9_get_tile_config,
        .set_vm_context_page_table_base = kgd_gfx_v9_set_vm_context_page_table_base,
        .invalidate_tlbs = kgd_gfx_v9_invalidate_tlbs,
 
        return 0;
 }
 
-void kgd_gfx_v9_set_scratch_backing_va(struct kgd_dev *kgd,
-                                       uint64_t va, uint32_t vmid)
-{
-       /* No longer needed on GFXv9. The scratch base address is
-        * passed to the shader by the CP. It's the user mode driver's
-        * responsibility.
-        */
-}
-
 void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
                uint64_t page_table_base)
 {
                        kgd_gfx_v9_get_atc_vmid_pasid_mapping_pasid,
        .get_atc_vmid_pasid_mapping_valid =
                        kgd_gfx_v9_get_atc_vmid_pasid_mapping_valid,
-       .set_scratch_backing_va = kgd_gfx_v9_set_scratch_backing_va,
        .get_tile_config = kgd_gfx_v9_get_tile_config,
        .set_vm_context_page_table_base = kgd_gfx_v9_set_vm_context_page_table_base,
        .invalidate_tlbs = kgd_gfx_v9_invalidate_tlbs,
 
                uint8_t vmid);
 void kgd_gfx_v9_set_vm_context_page_table_base(struct kgd_dev *kgd, uint32_t vmid,
                uint64_t page_table_base);
-void kgd_gfx_v9_set_scratch_backing_va(struct kgd_dev *kgd,
-                                       uint64_t va, uint32_t vmid);
 int kgd_gfx_v9_invalidate_tlbs(struct kgd_dev *kgd, uint16_t pasid);
 int kgd_gfx_v9_invalidate_tlbs_vmid(struct kgd_dev *kgd, uint16_t vmid);
 int kgd_gfx_v9_get_tile_config(struct kgd_dev *kgd,
 
        mutex_unlock(&p->mutex);
 
        if (dev->dqm->sched_policy == KFD_SCHED_POLICY_NO_HWS &&
-           pdd->qpd.vmid != 0)
+           pdd->qpd.vmid != 0 && dev->kfd2kgd->set_scratch_backing_va)
                dev->kfd2kgd->set_scratch_backing_va(
                        dev->kgd, args->va_addr, pdd->qpd.vmid);
 
 
        /* invalidate the VM context after pasid and vmid mapping is set up */
        kfd_flush_tlb(qpd_to_pdd(qpd));
 
-       dqm->dev->kfd2kgd->set_scratch_backing_va(
-               dqm->dev->kgd, qpd->sh_hidden_private_base, qpd->vmid);
+       if (dqm->dev->kfd2kgd->set_scratch_backing_va)
+               dqm->dev->kfd2kgd->set_scratch_backing_va(dqm->dev->kgd,
+                               qpd->sh_hidden_private_base, qpd->vmid);
 
        return 0;
 }
 
                                        struct kgd_dev *kgd,
                                        uint8_t vmid);
 
+       /* No longer needed from GFXv9 onward. The scratch base address is
+        * passed to the shader by the CP. It's the user mode driver's
+        * responsibility.
+        */
        void (*set_scratch_backing_va)(struct kgd_dev *kgd,
                                uint64_t va, uint32_t vmid);
+
        int (*get_tile_config)(struct kgd_dev *kgd, struct tile_config *config);
 
        void (*set_vm_context_page_table_base)(struct kgd_dev *kgd,