int tb_switch_resume(struct tb_switch *sw)
 {
        int i, err;
-       u64 uid;
        tb_sw_info(sw, "resuming switch\n");
 
-       err = tb_drom_read_uid_only(sw, &uid);
-       if (err) {
-               tb_sw_warn(sw, "uid read failed\n");
-               return err;
-       }
-       if (sw != sw->tb->root_switch && sw->uid != uid) {
-               tb_sw_info(sw,
-                       "changed while suspended (uid %#llx -> %#llx)\n",
-                       sw->uid, uid);
-               return -ENODEV;
+       /*
+        * Check for UID of the connected switches except for root
+        * switch which we assume cannot be removed.
+        */
+       if (tb_route(sw)) {
+               u64 uid;
+
+               err = tb_drom_read_uid_only(sw, &uid);
+               if (err) {
+                       tb_sw_warn(sw, "uid read failed\n");
+                       return err;
+               }
+               if (sw->uid != uid) {
+                       tb_sw_info(sw,
+                               "changed while suspended (uid %#llx -> %#llx)\n",
+                               sw->uid, uid);
+                       return -ENODEV;
+               }
        }
 
        /* upload configuration */