}
 }
 
+static void gfxhub_v1_0_program_invalidation(struct amdgpu_device *adev)
+{
+       unsigned i;
+
+       for (i = 0 ; i < 18; ++i) {
+               WREG32(SOC15_REG_OFFSET(GC, 0,
+                                       mmVM_INVALIDATE_ENG0_ADDR_RANGE_LO32) +
+                      2 * i, 0xffffffff);
+               WREG32(SOC15_REG_OFFSET(GC, 0,
+                                       mmVM_INVALIDATE_ENG0_ADDR_RANGE_HI32) +
+                      2 * i, 0x1f);
+       }
+}
+
 int gfxhub_v1_0_gart_enable(struct amdgpu_device *adev)
 {
        if (amdgpu_sriov_vf(adev)) {
        gfxhub_v1_0_enable_system_domain(adev);
        gfxhub_v1_0_disable_identity_aperture(adev);
        gfxhub_v1_0_setup_vmid_config(adev);
+       gfxhub_v1_0_program_invalidation(adev);
 
        return 0;
 }
 
 static int gfxhub_v1_0_hw_init(void *handle)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-       unsigned i;
-
-       for (i = 0 ; i < 18; ++i) {
-               WREG32(SOC15_REG_OFFSET(GC, 0,
-                                       mmVM_INVALIDATE_ENG0_ADDR_RANGE_LO32) +
-                      2 * i, 0xffffffff);
-               WREG32(SOC15_REG_OFFSET(GC, 0,
-                                       mmVM_INVALIDATE_ENG0_ADDR_RANGE_HI32) +
-                      2 * i, 0x1f);
-       }
-
        return 0;
 }
 
 
        }
 }
 
+static void mmhub_v1_0_program_invalidation(struct amdgpu_device *adev)
+{
+       unsigned i;
+
+       for (i = 0; i < 18; ++i) {
+               WREG32(SOC15_REG_OFFSET(MMHUB, 0,
+                                       mmVM_INVALIDATE_ENG0_ADDR_RANGE_LO32) +
+                      2 * i, 0xffffffff);
+               WREG32(SOC15_REG_OFFSET(MMHUB, 0,
+                                       mmVM_INVALIDATE_ENG0_ADDR_RANGE_HI32) +
+                      2 * i, 0x1f);
+       }
+}
+
 int mmhub_v1_0_gart_enable(struct amdgpu_device *adev)
 {
        if (amdgpu_sriov_vf(adev)) {
        mmhub_v1_0_enable_system_domain(adev);
        mmhub_v1_0_disable_identity_aperture(adev);
        mmhub_v1_0_setup_vmid_config(adev);
+       mmhub_v1_0_program_invalidation(adev);
 
        return 0;
 }
 
 static int mmhub_v1_0_hw_init(void *handle)
 {
-       struct amdgpu_device *adev = (struct amdgpu_device *)handle;
-       unsigned i;
-
-       for (i = 0; i < 18; ++i) {
-               WREG32(SOC15_REG_OFFSET(MMHUB, 0,
-                                       mmVM_INVALIDATE_ENG0_ADDR_RANGE_LO32) +
-                      2 * i, 0xffffffff);
-               WREG32(SOC15_REG_OFFSET(MMHUB, 0,
-                                       mmVM_INVALIDATE_ENG0_ADDR_RANGE_HI32) +
-                      2 * i, 0x1f);
-       }
-
        return 0;
 }