if (amdgpu_xgmi_add_device(adev) == 0) {
                        struct amdgpu_hive_info *hive = amdgpu_get_xgmi_hive(adev);
 
-                       if (!hive->reset_domain ||
-                           !amdgpu_reset_get_reset_domain(hive->reset_domain)) {
-                               r = -ENOENT;
+                       if (!amdgpu_sriov_vf(adev)) {
+                               if (!hive->reset_domain ||
+                                   !amdgpu_reset_get_reset_domain(hive->reset_domain)) {
+                                       r = -ENOENT;
+                                       amdgpu_put_xgmi_hive(hive);
+                                       goto init_failed;
+                               }
+
+                               /* Drop the early temporary reset domain we created for device */
+                               amdgpu_reset_put_reset_domain(adev->reset_domain);
+                               adev->reset_domain = hive->reset_domain;
                                amdgpu_put_xgmi_hive(hive);
-                               goto init_failed;
                        }
-
-                       /* Drop the early temporary reset domain we created for device */
-                       amdgpu_reset_put_reset_domain(adev->reset_domain);
-                       adev->reset_domain = hive->reset_domain;
-                       amdgpu_put_xgmi_hive(hive);
                }
        }
 
 
                goto pro_end;
        }
 
+       /**
+        * Only init hive->reset_domain for none SRIOV configuration. For SRIOV,
+        * Host driver decide how to reset the GPU either through FLR or chain reset.
+        * Guest side will get individual notifications from the host for the FLR
+        * if necessary.
+        */
+       if (!amdgpu_sriov_vf(adev)) {
        /**
         * Avoid recreating reset domain when hive is reconstructed for the case
-        * of reset the devices in the XGMI hive during probe for SRIOV
+        * of reset the devices in the XGMI hive during probe for passthrough GPU
         * See https://www.spinics.net/lists/amd-gfx/msg58836.html
         */
-       if (adev->reset_domain->type != XGMI_HIVE) {
-               hive->reset_domain = amdgpu_reset_create_reset_domain(XGMI_HIVE, "amdgpu-reset-hive");
-                       if (!hive->reset_domain) {
-                               dev_err(adev->dev, "XGMI: failed initializing reset domain for xgmi hive\n");
-                               ret = -ENOMEM;
-                               kobject_put(&hive->kobj);
-                               kfree(hive);
-                               hive = NULL;
-                               goto pro_end;
-                       }
-       } else {
-               amdgpu_reset_get_reset_domain(adev->reset_domain);
-               hive->reset_domain = adev->reset_domain;
+               if (adev->reset_domain->type != XGMI_HIVE) {
+                       hive->reset_domain =
+                               amdgpu_reset_create_reset_domain(XGMI_HIVE, "amdgpu-reset-hive");
+                               if (!hive->reset_domain) {
+                                       dev_err(adev->dev, "XGMI: failed initializing reset domain for xgmi hive\n");
+                                       ret = -ENOMEM;
+                                       kobject_put(&hive->kobj);
+                                       kfree(hive);
+                                       hive = NULL;
+                                       goto pro_end;
+                               }
+               } else {
+                       amdgpu_reset_get_reset_domain(adev->reset_domain);
+                       hive->reset_domain = adev->reset_domain;
+               }
        }
 
        hive->hive_id = adev->gmc.xgmi.hive_id;