[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