[PATCH] UBI:Force ubi driver load after mtd device drivers
richard -rw- weinberger
richard.weinberger at gmail.com
Wed Aug 8 17:52:26 EDT 2012
On Wed, Aug 8, 2012 at 4:31 AM, Jiang Lu <lu.jiang at windriver.com> wrote:
> 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);
Cant we use a simple initrd in such a case?
Within the initrd you can load the ubi module after your SPI NAND is done.
--
Thanks,
//richard
More information about the linux-mtd
mailing list