Merge cherrypicks of [5331139] into nyc-iot-release

Change-Id: I1be82404b268912408577a9a8eb2fb07c55832e8
diff --git a/drivers/md/dm-table.c b/drivers/md/dm-table.c
index b3d78bb..2dabf6f 100644
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
@@ -672,6 +672,7 @@
 			sector_t start, sector_t len, char *params)
 {
 	int r = -EINVAL, argc;
+	int wait_device_count = 360;
 	char **argv;
 	struct dm_target *tgt;
 
@@ -748,6 +749,22 @@
 		goto bad;
 	}
 
+#ifdef CONFIG_ARCH_ROCKCHIP
+	while (argv &&
+	       strncmp(argv[1], "PARTUUID=", 9) == 0 &&
+	       name_to_dev_t(argv[1]) == 0) {
+		DMINFO("%s: %s: Waiting for device %s ...",
+		       dm_device_name(t->md), type, argv[1]);
+		msleep(100);
+		if (!wait_device_count) {
+			DMWARN("%s: %s: Wait for device %s Timeout",
+			       dm_device_name(t->md), type, argv[1]);
+			break;
+		}
+		--wait_device_count;
+	}
+#endif
+
 	r = tgt->type->ctr(tgt, argc, argv);
 	kfree(argv);
 	if (r)