[PATCH] UBI:Force ubi driver load after mtd device drivers

Jiang Lu lu.jiang at windriver.com
Tue Aug 7 22:31:01 EDT 2012


To implement rootfs on mtd device with UBIFS, kernel need create a
UBIFS device when booting:

drivers/mtd/ubi/build.c ubi_init()
for (i = 0; i < mtd_devs; i++) {
	...
	mtd = open_mtd_device(p->name);
	if (IS_ERR(mtd)) {
		err = PTR_ERR(mtd);
		goto out_detach;
	}

	ubi_attach_mtd_dev()
	...
}
module_init(ubi_init);

Kernel can not create the UBIFS device without corresponding mtd
partiton.

Some NAND device can not guarenteen the mtd patition created before
UBIFS deivce driver loading. Such as SPI NAND deivce, the mtd partition
will create after SPI bus driver loaded.

UBI device driver must load after other mtd device drivers to make sure
the mtd partition already exist when creating UBI deivce.

The patch updates the UBI device driver's initial routine to
late_initcall level.

Signed-off-by: Jiang Lu <lu.jiang at windriver.com>
---
 drivers/mtd/ubi/build.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
index 0fde9fc..efbcaef 100644
--- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c
@@ -1275,7 +1275,7 @@ out:
 	ubi_err("UBI error: cannot initialize UBI, error %d", err);
 	return err;
 }
-module_init(ubi_init);
+late_initcall(ubi_init);
 
 static void __exit ubi_exit(void)
 {
-- 
1.7.9.5




More information about the linux-mtd mailing list