2  * Copyright (c) International Business Machines Corp., 2006
 
   3  * Copyright (c) Nokia Corporation, 2007
 
   5  * This program is free software; you can redistribute it and/or modify
 
   6  * it under the terms of the GNU General Public License as published by
 
   7  * the Free Software Foundation; either version 2 of the License, or
 
   8  * (at your option) any later version.
 
  10  * This program is distributed in the hope that it will be useful,
 
  11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 
  12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
 
  13  * the GNU General Public License for more details.
 
  15  * You should have received a copy of the GNU General Public License
 
  16  * along with this program; if not, write to the Free Software
 
  17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 
  19  * Author: Artem Bityutskiy (Битюцкий Артём),
 
  24  * This file includes UBI initialization and building of UBI devices.
 
  26  * When UBI is initialized, it attaches all the MTD devices specified as the
 
  27  * module load parameters or the kernel boot parameters. If MTD devices were
 
  28  * specified, UBI does not attach any MTD device, but it is possible to do
 
  29  * later using the "UBI control device".
 
  31  * At the moment we only attach UBI devices by scanning, which will become a
 
  32  * bottleneck when flashes reach certain large size. Then one may improve UBI
 
  33  * and add other methods, although it does not seem to be easy to do.
 
  36 #include <linux/err.h>
 
  37 #include <linux/module.h>
 
  38 #include <linux/moduleparam.h>
 
  39 #include <linux/stringify.h>
 
  40 #include <linux/stat.h>
 
  41 #include <linux/miscdevice.h>
 
  42 #include <linux/log2.h>
 
  43 #include <linux/kthread.h>
 
  46 /* Maximum length of the 'mtd=' parameter */
 
  47 #define MTD_PARAM_LEN_MAX 64
 
  50  * struct mtd_dev_param - MTD device parameter description data structure.
 
  51  * @name: MTD device name or number string
 
  52  * @vid_hdr_offs: VID header offset
 
  54 struct mtd_dev_param {
 
  55         char name[MTD_PARAM_LEN_MAX];
 
  59 /* Numbers of elements set in the @mtd_dev_param array */
 
  62 /* MTD devices specification parameters */
 
  63 static struct mtd_dev_param mtd_dev_param[UBI_MAX_DEVICES];
 
  65 /* Root UBI "class" object (corresponds to '/<sysfs>/class/ubi/') */
 
  66 struct class *ubi_class;
 
  68 /* Slab cache for wear-leveling entries */
 
  69 struct kmem_cache *ubi_wl_entry_slab;
 
  71 /* UBI control character device */
 
  72 static struct miscdevice ubi_ctrl_cdev = {
 
  73         .minor = MISC_DYNAMIC_MINOR,
 
  75         .fops = &ubi_ctrl_cdev_operations,
 
  78 /* All UBI devices in system */
 
  79 static struct ubi_device *ubi_devices[UBI_MAX_DEVICES];
 
  81 /* Serializes UBI devices creations and removals */
 
  82 DEFINE_MUTEX(ubi_devices_mutex);
 
  84 /* Protects @ubi_devices and @ubi->ref_count */
 
  85 static DEFINE_SPINLOCK(ubi_devices_lock);
 
  87 /* "Show" method for files in '/<sysfs>/class/ubi/' */
 
  88 static ssize_t ubi_version_show(struct class *class, char *buf)
 
  90         return sprintf(buf, "%d\n", UBI_VERSION);
 
  93 /* UBI version attribute ('/<sysfs>/class/ubi/version') */
 
  94 static struct class_attribute ubi_version =
 
  95         __ATTR(version, S_IRUGO, ubi_version_show, NULL);
 
  97 static ssize_t dev_attribute_show(struct device *dev,
 
  98                                   struct device_attribute *attr, char *buf);
 
 100 /* UBI device attributes (correspond to files in '/<sysfs>/class/ubi/ubiX') */
 
 101 static struct device_attribute dev_eraseblock_size =
 
 102         __ATTR(eraseblock_size, S_IRUGO, dev_attribute_show, NULL);
 
 103 static struct device_attribute dev_avail_eraseblocks =
 
 104         __ATTR(avail_eraseblocks, S_IRUGO, dev_attribute_show, NULL);
 
 105 static struct device_attribute dev_total_eraseblocks =
 
 106         __ATTR(total_eraseblocks, S_IRUGO, dev_attribute_show, NULL);
 
 107 static struct device_attribute dev_volumes_count =
 
 108         __ATTR(volumes_count, S_IRUGO, dev_attribute_show, NULL);
 
 109 static struct device_attribute dev_max_ec =
 
 110         __ATTR(max_ec, S_IRUGO, dev_attribute_show, NULL);
 
 111 static struct device_attribute dev_reserved_for_bad =
 
 112         __ATTR(reserved_for_bad, S_IRUGO, dev_attribute_show, NULL);
 
 113 static struct device_attribute dev_bad_peb_count =
 
 114         __ATTR(bad_peb_count, S_IRUGO, dev_attribute_show, NULL);
 
 115 static struct device_attribute dev_max_vol_count =
 
 116         __ATTR(max_vol_count, S_IRUGO, dev_attribute_show, NULL);
 
 117 static struct device_attribute dev_min_io_size =
 
 118         __ATTR(min_io_size, S_IRUGO, dev_attribute_show, NULL);
 
 119 static struct device_attribute dev_bgt_enabled =
 
 120         __ATTR(bgt_enabled, S_IRUGO, dev_attribute_show, NULL);
 
 121 static struct device_attribute dev_mtd_num =
 
 122         __ATTR(mtd_num, S_IRUGO, dev_attribute_show, NULL);
 
 125  * ubi_get_device - get UBI device.
 
 126  * @ubi_num: UBI device number
 
 128  * This function returns UBI device description object for UBI device number
 
 129  * @ubi_num, or %NULL if the device does not exist. This function increases the
 
 130  * device reference count to prevent removal of the device. In other words, the
 
 131  * device cannot be removed if its reference count is not zero.
 
 133 struct ubi_device *ubi_get_device(int ubi_num)
 
 135         struct ubi_device *ubi;
 
 137         spin_lock(&ubi_devices_lock);
 
 138         ubi = ubi_devices[ubi_num];
 
 140                 ubi_assert(ubi->ref_count >= 0);
 
 142                 get_device(&ubi->dev);
 
 144         spin_unlock(&ubi_devices_lock);
 
 150  * ubi_put_device - drop an UBI device reference.
 
 151  * @ubi: UBI device description object
 
 153 void ubi_put_device(struct ubi_device *ubi)
 
 155         spin_lock(&ubi_devices_lock);
 
 157         put_device(&ubi->dev);
 
 158         spin_unlock(&ubi_devices_lock);
 
 162  * ubi_get_by_major - get UBI device by character device major number.
 
 163  * @major: major number
 
 165  * This function is similar to 'ubi_get_device()', but it searches the device
 
 166  * by its major number.
 
 168 struct ubi_device *ubi_get_by_major(int major)
 
 171         struct ubi_device *ubi;
 
 173         spin_lock(&ubi_devices_lock);
 
 174         for (i = 0; i < UBI_MAX_DEVICES; i++) {
 
 175                 ubi = ubi_devices[i];
 
 176                 if (ubi && MAJOR(ubi->cdev.dev) == major) {
 
 177                         ubi_assert(ubi->ref_count >= 0);
 
 179                         get_device(&ubi->dev);
 
 180                         spin_unlock(&ubi_devices_lock);
 
 184         spin_unlock(&ubi_devices_lock);
 
 190  * ubi_major2num - get UBI device number by character device major number.
 
 191  * @major: major number
 
 193  * This function searches UBI device number object by its major number. If UBI
 
 194  * device was not found, this function returns -ENODEV, otherwise the UBI device
 
 195  * number is returned.
 
 197 int ubi_major2num(int major)
 
 199         int i, ubi_num = -ENODEV;
 
 201         spin_lock(&ubi_devices_lock);
 
 202         for (i = 0; i < UBI_MAX_DEVICES; i++) {
 
 203                 struct ubi_device *ubi = ubi_devices[i];
 
 205                 if (ubi && MAJOR(ubi->cdev.dev) == major) {
 
 206                         ubi_num = ubi->ubi_num;
 
 210         spin_unlock(&ubi_devices_lock);
 
 215 /* "Show" method for files in '/<sysfs>/class/ubi/ubiX/' */
 
 216 static ssize_t dev_attribute_show(struct device *dev,
 
 217                                   struct device_attribute *attr, char *buf)
 
 220         struct ubi_device *ubi;
 
 223          * The below code looks weird, but it actually makes sense. We get the
 
 224          * UBI device reference from the contained 'struct ubi_device'. But it
 
 225          * is unclear if the device was removed or not yet. Indeed, if the
 
 226          * device was removed before we increased its reference count,
 
 227          * 'ubi_get_device()' will return -ENODEV and we fail.
 
 229          * Remember, 'struct ubi_device' is freed in the release function, so
 
 230          * we still can use 'ubi->ubi_num'.
 
 232         ubi = container_of(dev, struct ubi_device, dev);
 
 233         ubi = ubi_get_device(ubi->ubi_num);
 
 237         if (attr == &dev_eraseblock_size)
 
 238                 ret = sprintf(buf, "%d\n", ubi->leb_size);
 
 239         else if (attr == &dev_avail_eraseblocks)
 
 240                 ret = sprintf(buf, "%d\n", ubi->avail_pebs);
 
 241         else if (attr == &dev_total_eraseblocks)
 
 242                 ret = sprintf(buf, "%d\n", ubi->good_peb_count);
 
 243         else if (attr == &dev_volumes_count)
 
 244                 ret = sprintf(buf, "%d\n", ubi->vol_count - UBI_INT_VOL_COUNT);
 
 245         else if (attr == &dev_max_ec)
 
 246                 ret = sprintf(buf, "%d\n", ubi->max_ec);
 
 247         else if (attr == &dev_reserved_for_bad)
 
 248                 ret = sprintf(buf, "%d\n", ubi->beb_rsvd_pebs);
 
 249         else if (attr == &dev_bad_peb_count)
 
 250                 ret = sprintf(buf, "%d\n", ubi->bad_peb_count);
 
 251         else if (attr == &dev_max_vol_count)
 
 252                 ret = sprintf(buf, "%d\n", ubi->vtbl_slots);
 
 253         else if (attr == &dev_min_io_size)
 
 254                 ret = sprintf(buf, "%d\n", ubi->min_io_size);
 
 255         else if (attr == &dev_bgt_enabled)
 
 256                 ret = sprintf(buf, "%d\n", ubi->thread_enabled);
 
 257         else if (attr == &dev_mtd_num)
 
 258                 ret = sprintf(buf, "%d\n", ubi->mtd->index);
 
 266 /* Fake "release" method for UBI devices */
 
 267 static void dev_release(struct device *dev) { }
 
 270  * ubi_sysfs_init - initialize sysfs for an UBI device.
 
 271  * @ubi: UBI device description object
 
 273  * This function returns zero in case of success and a negative error code in
 
 276 static int ubi_sysfs_init(struct ubi_device *ubi)
 
 280         ubi->dev.release = dev_release;
 
 281         ubi->dev.devt = ubi->cdev.dev;
 
 282         ubi->dev.class = ubi_class;
 
 283         sprintf(&ubi->dev.bus_id[0], UBI_NAME_STR"%d", ubi->ubi_num);
 
 284         err = device_register(&ubi->dev);
 
 288         err = device_create_file(&ubi->dev, &dev_eraseblock_size);
 
 291         err = device_create_file(&ubi->dev, &dev_avail_eraseblocks);
 
 294         err = device_create_file(&ubi->dev, &dev_total_eraseblocks);
 
 297         err = device_create_file(&ubi->dev, &dev_volumes_count);
 
 300         err = device_create_file(&ubi->dev, &dev_max_ec);
 
 303         err = device_create_file(&ubi->dev, &dev_reserved_for_bad);
 
 306         err = device_create_file(&ubi->dev, &dev_bad_peb_count);
 
 309         err = device_create_file(&ubi->dev, &dev_max_vol_count);
 
 312         err = device_create_file(&ubi->dev, &dev_min_io_size);
 
 315         err = device_create_file(&ubi->dev, &dev_bgt_enabled);
 
 318         err = device_create_file(&ubi->dev, &dev_mtd_num);
 
 323  * ubi_sysfs_close - close sysfs for an UBI device.
 
 324  * @ubi: UBI device description object
 
 326 static void ubi_sysfs_close(struct ubi_device *ubi)
 
 328         device_remove_file(&ubi->dev, &dev_mtd_num);
 
 329         device_remove_file(&ubi->dev, &dev_bgt_enabled);
 
 330         device_remove_file(&ubi->dev, &dev_min_io_size);
 
 331         device_remove_file(&ubi->dev, &dev_max_vol_count);
 
 332         device_remove_file(&ubi->dev, &dev_bad_peb_count);
 
 333         device_remove_file(&ubi->dev, &dev_reserved_for_bad);
 
 334         device_remove_file(&ubi->dev, &dev_max_ec);
 
 335         device_remove_file(&ubi->dev, &dev_volumes_count);
 
 336         device_remove_file(&ubi->dev, &dev_total_eraseblocks);
 
 337         device_remove_file(&ubi->dev, &dev_avail_eraseblocks);
 
 338         device_remove_file(&ubi->dev, &dev_eraseblock_size);
 
 339         device_unregister(&ubi->dev);
 
 343  * kill_volumes - destroy all volumes.
 
 344  * @ubi: UBI device description object
 
 346 static void kill_volumes(struct ubi_device *ubi)
 
 350         for (i = 0; i < ubi->vtbl_slots; i++)
 
 352                         ubi_free_volume(ubi, ubi->volumes[i]);
 
 356  * free_user_volumes - free all user volumes.
 
 357  * @ubi: UBI device description object
 
 359  * Normally the volumes are freed at the release function of the volume device
 
 360  * objects. However, on error paths the volumes have to be freed before the
 
 361  * device objects have been initialized.
 
 363 static void free_user_volumes(struct ubi_device *ubi)
 
 367         for (i = 0; i < ubi->vtbl_slots; i++)
 
 368                 if (ubi->volumes[i]) {
 
 369                         kfree(ubi->volumes[i]->eba_tbl);
 
 370                         kfree(ubi->volumes[i]);
 
 375  * uif_init - initialize user interfaces for an UBI device.
 
 376  * @ubi: UBI device description object
 
 378  * This function returns zero in case of success and a negative error code in
 
 379  * case of failure. Note, this function destroys all volumes if it failes.
 
 381 static int uif_init(struct ubi_device *ubi)
 
 383         int i, err, do_free = 0;
 
 386         sprintf(ubi->ubi_name, UBI_NAME_STR "%d", ubi->ubi_num);
 
 389          * Major numbers for the UBI character devices are allocated
 
 390          * dynamically. Major numbers of volume character devices are
 
 391          * equivalent to ones of the corresponding UBI character device. Minor
 
 392          * numbers of UBI character devices are 0, while minor numbers of
 
 393          * volume character devices start from 1. Thus, we allocate one major
 
 394          * number and ubi->vtbl_slots + 1 minor numbers.
 
 396         err = alloc_chrdev_region(&dev, 0, ubi->vtbl_slots + 1, ubi->ubi_name);
 
 398                 ubi_err("cannot register UBI character devices");
 
 402         ubi_assert(MINOR(dev) == 0);
 
 403         cdev_init(&ubi->cdev, &ubi_cdev_operations);
 
 404         dbg_gen("%s major is %u", ubi->ubi_name, MAJOR(dev));
 
 405         ubi->cdev.owner = THIS_MODULE;
 
 407         err = cdev_add(&ubi->cdev, dev, 1);
 
 409                 ubi_err("cannot add character device");
 
 413         err = ubi_sysfs_init(ubi);
 
 417         for (i = 0; i < ubi->vtbl_slots; i++)
 
 418                 if (ubi->volumes[i]) {
 
 419                         err = ubi_add_volume(ubi, ubi->volumes[i]);
 
 421                                 ubi_err("cannot add volume %d", i);
 
 432         ubi_sysfs_close(ubi);
 
 433         cdev_del(&ubi->cdev);
 
 436                 free_user_volumes(ubi);
 
 437         unregister_chrdev_region(ubi->cdev.dev, ubi->vtbl_slots + 1);
 
 438         ubi_err("cannot initialize UBI %s, error %d", ubi->ubi_name, err);
 
 443  * uif_close - close user interfaces for an UBI device.
 
 444  * @ubi: UBI device description object
 
 446  * Note, since this function un-registers UBI volume device objects (@vol->dev),
 
 447  * the memory allocated voe the volumes is freed as well (in the release
 
 450 static void uif_close(struct ubi_device *ubi)
 
 453         ubi_sysfs_close(ubi);
 
 454         cdev_del(&ubi->cdev);
 
 455         unregister_chrdev_region(ubi->cdev.dev, ubi->vtbl_slots + 1);
 
 459  * free_internal_volumes - free internal volumes.
 
 460  * @ubi: UBI device description object
 
 462 static void free_internal_volumes(struct ubi_device *ubi)
 
 466         for (i = ubi->vtbl_slots;
 
 467              i < ubi->vtbl_slots + UBI_INT_VOL_COUNT; i++) {
 
 468                 kfree(ubi->volumes[i]->eba_tbl);
 
 469                 kfree(ubi->volumes[i]);
 
 474  * attach_by_scanning - attach an MTD device using scanning method.
 
 475  * @ubi: UBI device descriptor
 
 477  * This function returns zero in case of success and a negative error code in
 
 480  * Note, currently this is the only method to attach UBI devices. Hopefully in
 
 481  * the future we'll have more scalable attaching methods and avoid full media
 
 482  * scanning. But even in this case scanning will be needed as a fall-back
 
 483  * attaching method if there are some on-flash table corruptions.
 
 485 static int attach_by_scanning(struct ubi_device *ubi)
 
 488         struct ubi_scan_info *si;
 
 494         ubi->bad_peb_count = si->bad_peb_count;
 
 495         ubi->good_peb_count = ubi->peb_count - ubi->bad_peb_count;
 
 496         ubi->max_ec = si->max_ec;
 
 497         ubi->mean_ec = si->mean_ec;
 
 499         err = ubi_read_volume_table(ubi, si);
 
 503         err = ubi_wl_init_scan(ubi, si);
 
 507         err = ubi_eba_init_scan(ubi, si);
 
 511         ubi_scan_destroy_si(si);
 
 517         free_internal_volumes(ubi);
 
 520         ubi_scan_destroy_si(si);
 
 525  * io_init - initialize I/O sub-system for a given UBI device.
 
 526  * @ubi: UBI device description object
 
 528  * If @ubi->vid_hdr_offset or @ubi->leb_start is zero, default offsets are
 
 530  *   o EC header is always at offset zero - this cannot be changed;
 
 531  *   o VID header starts just after the EC header at the closest address
 
 532  *     aligned to @io->hdrs_min_io_size;
 
 533  *   o data starts just after the VID header at the closest address aligned to
 
 536  * This function returns zero in case of success and a negative error code in
 
 539 static int io_init(struct ubi_device *ubi)
 
 541         if (ubi->mtd->numeraseregions != 0) {
 
 543                  * Some flashes have several erase regions. Different regions
 
 544                  * may have different eraseblock size and other
 
 545                  * characteristics. It looks like mostly multi-region flashes
 
 546                  * have one "main" region and one or more small regions to
 
 547                  * store boot loader code or boot parameters or whatever. I
 
 548                  * guess we should just pick the largest region. But this is
 
 551                 ubi_err("multiple regions, not implemented");
 
 555         if (ubi->vid_hdr_offset < 0)
 
 559          * Note, in this implementation we support MTD devices with 0x7FFFFFFF
 
 560          * physical eraseblocks maximum.
 
 563         ubi->peb_size   = ubi->mtd->erasesize;
 
 564         ubi->peb_count  = ubi->mtd->size / ubi->mtd->erasesize;
 
 565         ubi->flash_size = ubi->mtd->size;
 
 567         if (ubi->mtd->block_isbad && ubi->mtd->block_markbad)
 
 568                 ubi->bad_allowed = 1;
 
 570         ubi->min_io_size = ubi->mtd->writesize;
 
 571         ubi->hdrs_min_io_size = ubi->mtd->writesize >> ubi->mtd->subpage_sft;
 
 574          * Make sure minimal I/O unit is power of 2. Note, there is no
 
 575          * fundamental reason for this assumption. It is just an optimization
 
 576          * which allows us to avoid costly division operations.
 
 578         if (!is_power_of_2(ubi->min_io_size)) {
 
 579                 ubi_err("min. I/O unit (%d) is not power of 2",
 
 584         ubi_assert(ubi->hdrs_min_io_size > 0);
 
 585         ubi_assert(ubi->hdrs_min_io_size <= ubi->min_io_size);
 
 586         ubi_assert(ubi->min_io_size % ubi->hdrs_min_io_size == 0);
 
 588         /* Calculate default aligned sizes of EC and VID headers */
 
 589         ubi->ec_hdr_alsize = ALIGN(UBI_EC_HDR_SIZE, ubi->hdrs_min_io_size);
 
 590         ubi->vid_hdr_alsize = ALIGN(UBI_VID_HDR_SIZE, ubi->hdrs_min_io_size);
 
 592         dbg_msg("min_io_size      %d", ubi->min_io_size);
 
 593         dbg_msg("hdrs_min_io_size %d", ubi->hdrs_min_io_size);
 
 594         dbg_msg("ec_hdr_alsize    %d", ubi->ec_hdr_alsize);
 
 595         dbg_msg("vid_hdr_alsize   %d", ubi->vid_hdr_alsize);
 
 597         if (ubi->vid_hdr_offset == 0)
 
 599                 ubi->vid_hdr_offset = ubi->vid_hdr_aloffset =
 
 602                 ubi->vid_hdr_aloffset = ubi->vid_hdr_offset &
 
 603                                                 ~(ubi->hdrs_min_io_size - 1);
 
 604                 ubi->vid_hdr_shift = ubi->vid_hdr_offset -
 
 605                                                 ubi->vid_hdr_aloffset;
 
 608         /* Similar for the data offset */
 
 609         ubi->leb_start = ubi->vid_hdr_offset + UBI_EC_HDR_SIZE;
 
 610         ubi->leb_start = ALIGN(ubi->leb_start, ubi->min_io_size);
 
 612         dbg_msg("vid_hdr_offset   %d", ubi->vid_hdr_offset);
 
 613         dbg_msg("vid_hdr_aloffset %d", ubi->vid_hdr_aloffset);
 
 614         dbg_msg("vid_hdr_shift    %d", ubi->vid_hdr_shift);
 
 615         dbg_msg("leb_start        %d", ubi->leb_start);
 
 617         /* The shift must be aligned to 32-bit boundary */
 
 618         if (ubi->vid_hdr_shift % 4) {
 
 619                 ubi_err("unaligned VID header shift %d",
 
 625         if (ubi->vid_hdr_offset < UBI_EC_HDR_SIZE ||
 
 626             ubi->leb_start < ubi->vid_hdr_offset + UBI_VID_HDR_SIZE ||
 
 627             ubi->leb_start > ubi->peb_size - UBI_VID_HDR_SIZE ||
 
 628             ubi->leb_start & (ubi->min_io_size - 1)) {
 
 629                 ubi_err("bad VID header (%d) or data offsets (%d)",
 
 630                         ubi->vid_hdr_offset, ubi->leb_start);
 
 635          * It may happen that EC and VID headers are situated in one minimal
 
 636          * I/O unit. In this case we can only accept this UBI image in
 
 639         if (ubi->vid_hdr_offset + UBI_VID_HDR_SIZE <= ubi->hdrs_min_io_size) {
 
 640                 ubi_warn("EC and VID headers are in the same minimal I/O unit, "
 
 641                          "switch to read-only mode");
 
 645         ubi->leb_size = ubi->peb_size - ubi->leb_start;
 
 647         if (!(ubi->mtd->flags & MTD_WRITEABLE)) {
 
 648                 ubi_msg("MTD device %d is write-protected, attach in "
 
 649                         "read-only mode", ubi->mtd->index);
 
 653         ubi_msg("physical eraseblock size:   %d bytes (%d KiB)",
 
 654                 ubi->peb_size, ubi->peb_size >> 10);
 
 655         ubi_msg("logical eraseblock size:    %d bytes", ubi->leb_size);
 
 656         ubi_msg("smallest flash I/O unit:    %d", ubi->min_io_size);
 
 657         if (ubi->hdrs_min_io_size != ubi->min_io_size)
 
 658                 ubi_msg("sub-page size:              %d",
 
 659                         ubi->hdrs_min_io_size);
 
 660         ubi_msg("VID header offset:          %d (aligned %d)",
 
 661                 ubi->vid_hdr_offset, ubi->vid_hdr_aloffset);
 
 662         ubi_msg("data offset:                %d", ubi->leb_start);
 
 665          * Note, ideally, we have to initialize ubi->bad_peb_count here. But
 
 666          * unfortunately, MTD does not provide this information. We should loop
 
 667          * over all physical eraseblocks and invoke mtd->block_is_bad() for
 
 668          * each physical eraseblock. So, we skip ubi->bad_peb_count
 
 669          * uninitialized and initialize it after scanning.
 
 676  * autoresize - re-size the volume which has the "auto-resize" flag set.
 
 677  * @ubi: UBI device description object
 
 678  * @vol_id: ID of the volume to re-size
 
 680  * This function re-sizes the volume marked by the @UBI_VTBL_AUTORESIZE_FLG in
 
 681  * the volume table to the largest possible size. See comments in ubi-header.h
 
 682  * for more description of the flag. Returns zero in case of success and a
 
 683  * negative error code in case of failure.
 
 685 static int autoresize(struct ubi_device *ubi, int vol_id)
 
 687         struct ubi_volume_desc desc;
 
 688         struct ubi_volume *vol = ubi->volumes[vol_id];
 
 689         int err, old_reserved_pebs = vol->reserved_pebs;
 
 692          * Clear the auto-resize flag in the volume in-memory copy of the
 
 693          * volume table, and 'ubi_resize_volume()' will propagate this change
 
 696         ubi->vtbl[vol_id].flags &= ~UBI_VTBL_AUTORESIZE_FLG;
 
 698         if (ubi->avail_pebs == 0) {
 
 699                 struct ubi_vtbl_record vtbl_rec;
 
 702                  * No available PEBs to re-size the volume, clear the flag on
 
 705                 memcpy(&vtbl_rec, &ubi->vtbl[vol_id],
 
 706                        sizeof(struct ubi_vtbl_record));
 
 707                 err = ubi_change_vtbl_record(ubi, vol_id, &vtbl_rec);
 
 709                         ubi_err("cannot clean auto-resize flag for volume %d",
 
 713                 err = ubi_resize_volume(&desc,
 
 714                                         old_reserved_pebs + ubi->avail_pebs);
 
 716                         ubi_err("cannot auto-resize volume %d", vol_id);
 
 722         ubi_msg("volume %d (\"%s\") re-sized from %d to %d LEBs", vol_id,
 
 723                 vol->name, old_reserved_pebs, vol->reserved_pebs);
 
 728  * ubi_attach_mtd_dev - attach an MTD device.
 
 729  * @mtd: MTD device description object
 
 730  * @ubi_num: number to assign to the new UBI device
 
 731  * @vid_hdr_offset: VID header offset
 
 733  * This function attaches MTD device @mtd_dev to UBI and assign @ubi_num number
 
 734  * to the newly created UBI device, unless @ubi_num is %UBI_DEV_NUM_AUTO, in
 
 735  * which case this function finds a vacant device number and assigns it
 
 736  * automatically. Returns the new UBI device number in case of success and a
 
 737  * negative error code in case of failure.
 
 739  * Note, the invocations of this function has to be serialized by the
 
 740  * @ubi_devices_mutex.
 
 742 int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num, int vid_hdr_offset)
 
 744         struct ubi_device *ubi;
 
 745         int i, err, do_free = 1;
 
 748          * Check if we already have the same MTD device attached.
 
 750          * Note, this function assumes that UBI devices creations and deletions
 
 751          * are serialized, so it does not take the &ubi_devices_lock.
 
 753         for (i = 0; i < UBI_MAX_DEVICES; i++) {
 
 754                 ubi = ubi_devices[i];
 
 755                 if (ubi && mtd->index == ubi->mtd->index) {
 
 756                         dbg_err("mtd%d is already attached to ubi%d",
 
 763          * Make sure this MTD device is not emulated on top of an UBI volume
 
 764          * already. Well, generally this recursion works fine, but there are
 
 765          * different problems like the UBI module takes a reference to itself
 
 766          * by attaching (and thus, opening) the emulated MTD device. This
 
 767          * results in inability to unload the module. And in general it makes
 
 768          * no sense to attach emulated MTD devices, so we prohibit this.
 
 770         if (mtd->type == MTD_UBIVOLUME) {
 
 771                 ubi_err("refuse attaching mtd%d - it is already emulated on "
 
 772                         "top of UBI", mtd->index);
 
 776         if (ubi_num == UBI_DEV_NUM_AUTO) {
 
 777                 /* Search for an empty slot in the @ubi_devices array */
 
 778                 for (ubi_num = 0; ubi_num < UBI_MAX_DEVICES; ubi_num++)
 
 779                         if (!ubi_devices[ubi_num])
 
 781                 if (ubi_num == UBI_MAX_DEVICES) {
 
 782                         dbg_err("only %d UBI devices may be created",
 
 787                 if (ubi_num >= UBI_MAX_DEVICES)
 
 790                 /* Make sure ubi_num is not busy */
 
 791                 if (ubi_devices[ubi_num]) {
 
 792                         dbg_err("ubi%d already exists", ubi_num);
 
 797         ubi = kzalloc(sizeof(struct ubi_device), GFP_KERNEL);
 
 802         ubi->ubi_num = ubi_num;
 
 803         ubi->vid_hdr_offset = vid_hdr_offset;
 
 804         ubi->autoresize_vol_id = -1;
 
 806         mutex_init(&ubi->buf_mutex);
 
 807         mutex_init(&ubi->ckvol_mutex);
 
 808         mutex_init(&ubi->mult_mutex);
 
 809         mutex_init(&ubi->volumes_mutex);
 
 810         spin_lock_init(&ubi->volumes_lock);
 
 812         ubi_msg("attaching mtd%d to ubi%d", mtd->index, ubi_num);
 
 818         ubi->peb_buf1 = vmalloc(ubi->peb_size);
 
 822         ubi->peb_buf2 = vmalloc(ubi->peb_size);
 
 826 #ifdef CONFIG_MTD_UBI_DEBUG
 
 827         mutex_init(&ubi->dbg_buf_mutex);
 
 828         ubi->dbg_peb_buf = vmalloc(ubi->peb_size);
 
 829         if (!ubi->dbg_peb_buf)
 
 833         err = attach_by_scanning(ubi);
 
 835                 dbg_err("failed to attach by scanning, error %d", err);
 
 839         if (ubi->autoresize_vol_id != -1) {
 
 840                 err = autoresize(ubi, ubi->autoresize_vol_id);
 
 849         ubi->bgt_thread = kthread_create(ubi_thread, ubi, ubi->bgt_name);
 
 850         if (IS_ERR(ubi->bgt_thread)) {
 
 851                 err = PTR_ERR(ubi->bgt_thread);
 
 852                 ubi_err("cannot spawn \"%s\", error %d", ubi->bgt_name,
 
 857         ubi_msg("attached mtd%d to ubi%d", mtd->index, ubi_num);
 
 858         ubi_msg("MTD device name:            \"%s\"", mtd->name);
 
 859         ubi_msg("MTD device size:            %llu MiB", ubi->flash_size >> 20);
 
 860         ubi_msg("number of good PEBs:        %d", ubi->good_peb_count);
 
 861         ubi_msg("number of bad PEBs:         %d", ubi->bad_peb_count);
 
 862         ubi_msg("max. allowed volumes:       %d", ubi->vtbl_slots);
 
 863         ubi_msg("wear-leveling threshold:    %d", CONFIG_MTD_UBI_WL_THRESHOLD);
 
 864         ubi_msg("number of internal volumes: %d", UBI_INT_VOL_COUNT);
 
 865         ubi_msg("number of user volumes:     %d",
 
 866                 ubi->vol_count - UBI_INT_VOL_COUNT);
 
 867         ubi_msg("available PEBs:             %d", ubi->avail_pebs);
 
 868         ubi_msg("total number of reserved PEBs: %d", ubi->rsvd_pebs);
 
 869         ubi_msg("number of PEBs reserved for bad PEB handling: %d",
 
 871         ubi_msg("max/mean erase counter: %d/%d", ubi->max_ec, ubi->mean_ec);
 
 873         if (!DBG_DISABLE_BGT)
 
 874                 ubi->thread_enabled = 1;
 
 875         wake_up_process(ubi->bgt_thread);
 
 877         ubi_devices[ubi_num] = ubi;
 
 887                 free_user_volumes(ubi);
 
 888         free_internal_volumes(ubi);
 
 891         vfree(ubi->peb_buf1);
 
 892         vfree(ubi->peb_buf2);
 
 893 #ifdef CONFIG_MTD_UBI_DEBUG
 
 894         vfree(ubi->dbg_peb_buf);
 
 901  * ubi_detach_mtd_dev - detach an MTD device.
 
 902  * @ubi_num: UBI device number to detach from
 
 903  * @anyway: detach MTD even if device reference count is not zero
 
 905  * This function destroys an UBI device number @ubi_num and detaches the
 
 906  * underlying MTD device. Returns zero in case of success and %-EBUSY if the
 
 907  * UBI device is busy and cannot be destroyed, and %-EINVAL if it does not
 
 910  * Note, the invocations of this function has to be serialized by the
 
 911  * @ubi_devices_mutex.
 
 913 int ubi_detach_mtd_dev(int ubi_num, int anyway)
 
 915         struct ubi_device *ubi;
 
 917         if (ubi_num < 0 || ubi_num >= UBI_MAX_DEVICES)
 
 920         spin_lock(&ubi_devices_lock);
 
 921         ubi = ubi_devices[ubi_num];
 
 923                 spin_unlock(&ubi_devices_lock);
 
 927         if (ubi->ref_count) {
 
 929                         spin_unlock(&ubi_devices_lock);
 
 932                 /* This may only happen if there is a bug */
 
 933                 ubi_err("%s reference count %d, destroy anyway",
 
 934                         ubi->ubi_name, ubi->ref_count);
 
 936         ubi_devices[ubi_num] = NULL;
 
 937         spin_unlock(&ubi_devices_lock);
 
 939         ubi_assert(ubi_num == ubi->ubi_num);
 
 940         dbg_msg("detaching mtd%d from ubi%d", ubi->mtd->index, ubi_num);
 
 943          * Before freeing anything, we have to stop the background thread to
 
 944          * prevent it from doing anything on this device while we are freeing.
 
 947                 kthread_stop(ubi->bgt_thread);
 
 951         free_internal_volumes(ubi);
 
 953         put_mtd_device(ubi->mtd);
 
 954         vfree(ubi->peb_buf1);
 
 955         vfree(ubi->peb_buf2);
 
 956 #ifdef CONFIG_MTD_UBI_DEBUG
 
 957         vfree(ubi->dbg_peb_buf);
 
 959         ubi_msg("mtd%d is detached from ubi%d", ubi->mtd->index, ubi->ubi_num);
 
 965  * find_mtd_device - open an MTD device by its name or number.
 
 966  * @mtd_dev: name or number of the device
 
 968  * This function tries to open and MTD device described by @mtd_dev string,
 
 969  * which is first treated as an ASCII number, and if it is not true, it is
 
 970  * treated as MTD device name. Returns MTD device description object in case of
 
 971  * success and a negative error code in case of failure.
 
 973 static struct mtd_info * __init open_mtd_device(const char *mtd_dev)
 
 975         struct mtd_info *mtd;
 
 979         mtd_num = simple_strtoul(mtd_dev, &endp, 0);
 
 980         if (*endp != '\0' || mtd_dev == endp) {
 
 982                  * This does not look like an ASCII integer, probably this is
 
 985                 mtd = get_mtd_device_nm(mtd_dev);
 
 987                 mtd = get_mtd_device(NULL, mtd_num);
 
 992 static int __init ubi_init(void)
 
 996         /* Ensure that EC and VID headers have correct size */
 
 997         BUILD_BUG_ON(sizeof(struct ubi_ec_hdr) != 64);
 
 998         BUILD_BUG_ON(sizeof(struct ubi_vid_hdr) != 64);
 
1000         if (mtd_devs > UBI_MAX_DEVICES) {
 
1001                 ubi_err("too many MTD devices, maximum is %d", UBI_MAX_DEVICES);
 
1005         /* Create base sysfs directory and sysfs files */
 
1006         ubi_class = class_create(THIS_MODULE, UBI_NAME_STR);
 
1007         if (IS_ERR(ubi_class)) {
 
1008                 err = PTR_ERR(ubi_class);
 
1009                 ubi_err("cannot create UBI class");
 
1013         err = class_create_file(ubi_class, &ubi_version);
 
1015                 ubi_err("cannot create sysfs file");
 
1019         err = misc_register(&ubi_ctrl_cdev);
 
1021                 ubi_err("cannot register device");
 
1025         ubi_wl_entry_slab = kmem_cache_create("ubi_wl_entry_slab",
 
1026                                               sizeof(struct ubi_wl_entry),
 
1028         if (!ubi_wl_entry_slab)
 
1031         /* Attach MTD devices */
 
1032         for (i = 0; i < mtd_devs; i++) {
 
1033                 struct mtd_dev_param *p = &mtd_dev_param[i];
 
1034                 struct mtd_info *mtd;
 
1038                 mtd = open_mtd_device(p->name);
 
1044                 mutex_lock(&ubi_devices_mutex);
 
1045                 err = ubi_attach_mtd_dev(mtd, UBI_DEV_NUM_AUTO,
 
1047                 mutex_unlock(&ubi_devices_mutex);
 
1049                         put_mtd_device(mtd);
 
1050                         ubi_err("cannot attach mtd%d", mtd->index);
 
1058         for (k = 0; k < i; k++)
 
1059                 if (ubi_devices[k]) {
 
1060                         mutex_lock(&ubi_devices_mutex);
 
1061                         ubi_detach_mtd_dev(ubi_devices[k]->ubi_num, 1);
 
1062                         mutex_unlock(&ubi_devices_mutex);
 
1064         kmem_cache_destroy(ubi_wl_entry_slab);
 
1066         misc_deregister(&ubi_ctrl_cdev);
 
1068         class_remove_file(ubi_class, &ubi_version);
 
1070         class_destroy(ubi_class);
 
1072         ubi_err("UBI error: cannot initialize UBI, error %d", err);
 
1075 module_init(ubi_init);
 
1077 static void __exit ubi_exit(void)
 
1081         for (i = 0; i < UBI_MAX_DEVICES; i++)
 
1082                 if (ubi_devices[i]) {
 
1083                         mutex_lock(&ubi_devices_mutex);
 
1084                         ubi_detach_mtd_dev(ubi_devices[i]->ubi_num, 1);
 
1085                         mutex_unlock(&ubi_devices_mutex);
 
1087         kmem_cache_destroy(ubi_wl_entry_slab);
 
1088         misc_deregister(&ubi_ctrl_cdev);
 
1089         class_remove_file(ubi_class, &ubi_version);
 
1090         class_destroy(ubi_class);
 
1092 module_exit(ubi_exit);
 
1095  * bytes_str_to_int - convert a number of bytes string into an integer.
 
1096  * @str: the string to convert
 
1098  * This function returns positive resulting integer in case of success and a
 
1099  * negative error code in case of failure.
 
1101 static int __init bytes_str_to_int(const char *str)
 
1104         unsigned long result;
 
1106         result = simple_strtoul(str, &endp, 0);
 
1107         if (str == endp || result < 0) {
 
1108                 printk(KERN_ERR "UBI error: incorrect bytes count: \"%s\"\n",
 
1120                 if (endp[1] == 'i' && endp[2] == 'B')
 
1125                 printk(KERN_ERR "UBI error: incorrect bytes count: \"%s\"\n",
 
1134  * ubi_mtd_param_parse - parse the 'mtd=' UBI parameter.
 
1135  * @val: the parameter value to parse
 
1138  * This function returns zero in case of success and a negative error code in
 
1141 static int __init ubi_mtd_param_parse(const char *val, struct kernel_param *kp)
 
1144         struct mtd_dev_param *p;
 
1145         char buf[MTD_PARAM_LEN_MAX];
 
1146         char *pbuf = &buf[0];
 
1147         char *tokens[2] = {NULL, NULL};
 
1152         if (mtd_devs == UBI_MAX_DEVICES) {
 
1153                 printk(KERN_ERR "UBI error: too many parameters, max. is %d\n",
 
1158         len = strnlen(val, MTD_PARAM_LEN_MAX);
 
1159         if (len == MTD_PARAM_LEN_MAX) {
 
1160                 printk(KERN_ERR "UBI error: parameter \"%s\" is too long, "
 
1161                        "max. is %d\n", val, MTD_PARAM_LEN_MAX);
 
1166                 printk(KERN_WARNING "UBI warning: empty 'mtd=' parameter - "
 
1173         /* Get rid of the final newline */
 
1174         if (buf[len - 1] == '\n')
 
1175                 buf[len - 1] = '\0';
 
1177         for (i = 0; i < 2; i++)
 
1178                 tokens[i] = strsep(&pbuf, ",");
 
1181                 printk(KERN_ERR "UBI error: too many arguments at \"%s\"\n",
 
1186         p = &mtd_dev_param[mtd_devs];
 
1187         strcpy(&p->name[0], tokens[0]);
 
1190                 p->vid_hdr_offs = bytes_str_to_int(tokens[1]);
 
1192         if (p->vid_hdr_offs < 0)
 
1193                 return p->vid_hdr_offs;
 
1199 module_param_call(mtd, ubi_mtd_param_parse, NULL, NULL, 000);
 
1200 MODULE_PARM_DESC(mtd, "MTD devices to attach. Parameter format: "
 
1201                       "mtd=<name|num>[,<vid_hdr_offs>].\n"
 
1202                       "Multiple \"mtd\" parameters may be specified.\n"
 
1203                       "MTD devices may be specified by their number or name.\n"
 
1204                       "Optional \"vid_hdr_offs\" parameter specifies UBI VID "
 
1205                       "header position and data starting position to be used "
 
1207                       "Example: mtd=content,1984 mtd=4 - attach MTD device"
 
1208                       "with name \"content\" using VID header offset 1984, and "
 
1209                       "MTD device number 4 with default VID header offset.");
 
1211 MODULE_VERSION(__stringify(UBI_VERSION));
 
1212 MODULE_DESCRIPTION("UBI - Unsorted Block Images");
 
1213 MODULE_AUTHOR("Artem Bityutskiy");
 
1214 MODULE_LICENSE("GPL");