linux/drivers/mtd/ubi/build.c
<<
>>
Prefs
   1/*
   2 * Copyright (c) International Business Machines Corp., 2006
   3 * Copyright (c) Nokia Corporation, 2007
   4 *
   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.
   9 *
  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.
  14 *
  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
  18 *
  19 * Author: Artem Bityutskiy (Битюцкий Артём),
  20 *         Frank Haverkamp
  21 */
  22
  23/*
  24 * This file includes UBI initialization and building of UBI devices.
  25 *
  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".
  30 */
  31
  32#include <linux/err.h>
  33#include <linux/module.h>
  34#include <linux/moduleparam.h>
  35#include <linux/stringify.h>
  36#include <linux/namei.h>
  37#include <linux/stat.h>
  38#include <linux/miscdevice.h>
  39#include <linux/mtd/partitions.h>
  40#include <linux/log2.h>
  41#include <linux/kthread.h>
  42#include <linux/kernel.h>
  43#include <linux/slab.h>
  44#include <linux/major.h>
  45#include "ubi.h"
  46
  47/* Maximum length of the 'mtd=' parameter */
  48#define MTD_PARAM_LEN_MAX 64
  49
  50/* Maximum number of comma-separated items in the 'mtd=' parameter */
  51#define MTD_PARAM_MAX_COUNT 4
  52
  53/* Maximum value for the number of bad PEBs per 1024 PEBs */
  54#define MAX_MTD_UBI_BEB_LIMIT 768
  55
  56#ifdef CONFIG_MTD_UBI_MODULE
  57#define ubi_is_module() 1
  58#else
  59#define ubi_is_module() 0
  60#endif
  61
  62/**
  63 * struct mtd_dev_param - MTD device parameter description data structure.
  64 * @name: MTD character device node path, MTD device name, or MTD device number
  65 *        string
  66 * @vid_hdr_offs: VID header offset
  67 * @max_beb_per1024: maximum expected number of bad PEBs per 1024 PEBs
  68 */
  69struct mtd_dev_param {
  70        char name[MTD_PARAM_LEN_MAX];
  71        int ubi_num;
  72        int vid_hdr_offs;
  73        int max_beb_per1024;
  74};
  75
  76/* Numbers of elements set in the @mtd_dev_param array */
  77static int __initdata mtd_devs;
  78
  79/* MTD devices specification parameters */
  80static struct mtd_dev_param __initdata mtd_dev_param[UBI_MAX_DEVICES];
  81#ifdef CONFIG_MTD_UBI_FASTMAP
  82/* UBI module parameter to enable fastmap automatically on non-fastmap images */
  83static bool fm_autoconvert;
  84#endif
  85/* Root UBI "class" object (corresponds to '/<sysfs>/class/ubi/') */
  86struct class *ubi_class;
  87
  88/* Slab cache for wear-leveling entries */
  89struct kmem_cache *ubi_wl_entry_slab;
  90
  91/* UBI control character device */
  92static struct miscdevice ubi_ctrl_cdev = {
  93        .minor = MISC_DYNAMIC_MINOR,
  94        .name = "ubi_ctrl",
  95        .fops = &ubi_ctrl_cdev_operations,
  96};
  97
  98/* All UBI devices in system */
  99static struct ubi_device *ubi_devices[UBI_MAX_DEVICES];
 100
 101/* Serializes UBI devices creations and removals */
 102DEFINE_MUTEX(ubi_devices_mutex);
 103
 104/* Protects @ubi_devices and @ubi->ref_count */
 105static DEFINE_SPINLOCK(ubi_devices_lock);
 106
 107/* "Show" method for files in '/<sysfs>/class/ubi/' */
 108static ssize_t ubi_version_show(struct class *class,
 109                                struct class_attribute *attr, char *buf)
 110{
 111        return sprintf(buf, "%d\n", UBI_VERSION);
 112}
 113
 114/* UBI version attribute ('/<sysfs>/class/ubi/version') */
 115static struct class_attribute ubi_version =
 116        __ATTR(version, S_IRUGO, ubi_version_show, NULL);
 117
 118static ssize_t dev_attribute_show(struct device *dev,
 119                                  struct device_attribute *attr, char *buf);
 120
 121/* UBI device attributes (correspond to files in '/<sysfs>/class/ubi/ubiX') */
 122static struct device_attribute dev_eraseblock_size =
 123        __ATTR(eraseblock_size, S_IRUGO, dev_attribute_show, NULL);
 124static struct device_attribute dev_avail_eraseblocks =
 125        __ATTR(avail_eraseblocks, S_IRUGO, dev_attribute_show, NULL);
 126static struct device_attribute dev_total_eraseblocks =
 127        __ATTR(total_eraseblocks, S_IRUGO, dev_attribute_show, NULL);
 128static struct device_attribute dev_volumes_count =
 129        __ATTR(volumes_count, S_IRUGO, dev_attribute_show, NULL);
 130static struct device_attribute dev_max_ec =
 131        __ATTR(max_ec, S_IRUGO, dev_attribute_show, NULL);
 132static struct device_attribute dev_reserved_for_bad =
 133        __ATTR(reserved_for_bad, S_IRUGO, dev_attribute_show, NULL);
 134static struct device_attribute dev_bad_peb_count =
 135        __ATTR(bad_peb_count, S_IRUGO, dev_attribute_show, NULL);
 136static struct device_attribute dev_max_vol_count =
 137        __ATTR(max_vol_count, S_IRUGO, dev_attribute_show, NULL);
 138static struct device_attribute dev_min_io_size =
 139        __ATTR(min_io_size, S_IRUGO, dev_attribute_show, NULL);
 140static struct device_attribute dev_bgt_enabled =
 141        __ATTR(bgt_enabled, S_IRUGO, dev_attribute_show, NULL);
 142static struct device_attribute dev_mtd_num =
 143        __ATTR(mtd_num, S_IRUGO, dev_attribute_show, NULL);
 144
 145/**
 146 * ubi_volume_notify - send a volume change notification.
 147 * @ubi: UBI device description object
 148 * @vol: volume description object of the changed volume
 149 * @ntype: notification type to send (%UBI_VOLUME_ADDED, etc)
 150 *
 151 * This is a helper function which notifies all subscribers about a volume
 152 * change event (creation, removal, re-sizing, re-naming, updating). Returns
 153 * zero in case of success and a negative error code in case of failure.
 154 */
 155int ubi_volume_notify(struct ubi_device *ubi, struct ubi_volume *vol, int ntype)
 156{
 157        struct ubi_notification nt;
 158
 159        ubi_do_get_device_info(ubi, &nt.di);
 160        ubi_do_get_volume_info(ubi, vol, &nt.vi);
 161
 162#ifdef CONFIG_MTD_UBI_FASTMAP
 163        switch (ntype) {
 164        case UBI_VOLUME_ADDED:
 165        case UBI_VOLUME_REMOVED:
 166        case UBI_VOLUME_RESIZED:
 167        case UBI_VOLUME_RENAMED:
 168                if (ubi_update_fastmap(ubi)) {
 169                        ubi_err(ubi, "Unable to update fastmap!");
 170                        ubi_ro_mode(ubi);
 171                }
 172        }
 173#endif
 174        return blocking_notifier_call_chain(&ubi_notifiers, ntype, &nt);
 175}
 176
 177/**
 178 * ubi_notify_all - send a notification to all volumes.
 179 * @ubi: UBI device description object
 180 * @ntype: notification type to send (%UBI_VOLUME_ADDED, etc)
 181 * @nb: the notifier to call
 182 *
 183 * This function walks all volumes of UBI device @ubi and sends the @ntype
 184 * notification for each volume. If @nb is %NULL, then all registered notifiers
 185 * are called, otherwise only the @nb notifier is called. Returns the number of
 186 * sent notifications.
 187 */
 188int ubi_notify_all(struct ubi_device *ubi, int ntype, struct notifier_block *nb)
 189{
 190        struct ubi_notification nt;
 191        int i, count = 0;
 192
 193        ubi_do_get_device_info(ubi, &nt.di);
 194
 195        mutex_lock(&ubi->device_mutex);
 196        for (i = 0; i < ubi->vtbl_slots; i++) {
 197                /*
 198                 * Since the @ubi->device is locked, and we are not going to
 199                 * change @ubi->volumes, we do not have to lock
 200                 * @ubi->volumes_lock.
 201                 */
 202                if (!ubi->volumes[i])
 203                        continue;
 204
 205                ubi_do_get_volume_info(ubi, ubi->volumes[i], &nt.vi);
 206                if (nb)
 207                        nb->notifier_call(nb, ntype, &nt);
 208                else
 209                        blocking_notifier_call_chain(&ubi_notifiers, ntype,
 210                                                     &nt);
 211                count += 1;
 212        }
 213        mutex_unlock(&ubi->device_mutex);
 214
 215        return count;
 216}
 217
 218/**
 219 * ubi_enumerate_volumes - send "add" notification for all existing volumes.
 220 * @nb: the notifier to call
 221 *
 222 * This function walks all UBI devices and volumes and sends the
 223 * %UBI_VOLUME_ADDED notification for each volume. If @nb is %NULL, then all
 224 * registered notifiers are called, otherwise only the @nb notifier is called.
 225 * Returns the number of sent notifications.
 226 */
 227int ubi_enumerate_volumes(struct notifier_block *nb)
 228{
 229        int i, count = 0;
 230
 231        /*
 232         * Since the @ubi_devices_mutex is locked, and we are not going to
 233         * change @ubi_devices, we do not have to lock @ubi_devices_lock.
 234         */
 235        for (i = 0; i < UBI_MAX_DEVICES; i++) {
 236                struct ubi_device *ubi = ubi_devices[i];
 237
 238                if (!ubi)
 239                        continue;
 240                count += ubi_notify_all(ubi, UBI_VOLUME_ADDED, nb);
 241        }
 242
 243        return count;
 244}
 245
 246/**
 247 * ubi_get_device - get UBI device.
 248 * @ubi_num: UBI device number
 249 *
 250 * This function returns UBI device description object for UBI device number
 251 * @ubi_num, or %NULL if the device does not exist. This function increases the
 252 * device reference count to prevent removal of the device. In other words, the
 253 * device cannot be removed if its reference count is not zero.
 254 */
 255struct ubi_device *ubi_get_device(int ubi_num)
 256{
 257        struct ubi_device *ubi;
 258
 259        spin_lock(&ubi_devices_lock);
 260        ubi = ubi_devices[ubi_num];
 261        if (ubi) {
 262                ubi_assert(ubi->ref_count >= 0);
 263                ubi->ref_count += 1;
 264                get_device(&ubi->dev);
 265        }
 266        spin_unlock(&ubi_devices_lock);
 267
 268        return ubi;
 269}
 270
 271/**
 272 * ubi_put_device - drop an UBI device reference.
 273 * @ubi: UBI device description object
 274 */
 275void ubi_put_device(struct ubi_device *ubi)
 276{
 277        spin_lock(&ubi_devices_lock);
 278        ubi->ref_count -= 1;
 279        put_device(&ubi->dev);
 280        spin_unlock(&ubi_devices_lock);
 281}
 282
 283/**
 284 * ubi_get_by_major - get UBI device by character device major number.
 285 * @major: major number
 286 *
 287 * This function is similar to 'ubi_get_device()', but it searches the device
 288 * by its major number.
 289 */
 290struct ubi_device *ubi_get_by_major(int major)
 291{
 292        int i;
 293        struct ubi_device *ubi;
 294
 295        spin_lock(&ubi_devices_lock);
 296        for (i = 0; i < UBI_MAX_DEVICES; i++) {
 297                ubi = ubi_devices[i];
 298                if (ubi && MAJOR(ubi->cdev.dev) == major) {
 299                        ubi_assert(ubi->ref_count >= 0);
 300                        ubi->ref_count += 1;
 301                        get_device(&ubi->dev);
 302                        spin_unlock(&ubi_devices_lock);
 303                        return ubi;
 304                }
 305        }
 306        spin_unlock(&ubi_devices_lock);
 307
 308        return NULL;
 309}
 310
 311/**
 312 * ubi_major2num - get UBI device number by character device major number.
 313 * @major: major number
 314 *
 315 * This function searches UBI device number object by its major number. If UBI
 316 * device was not found, this function returns -ENODEV, otherwise the UBI device
 317 * number is returned.
 318 */
 319int ubi_major2num(int major)
 320{
 321        int i, ubi_num = -ENODEV;
 322
 323        spin_lock(&ubi_devices_lock);
 324        for (i = 0; i < UBI_MAX_DEVICES; i++) {
 325                struct ubi_device *ubi = ubi_devices[i];
 326
 327                if (ubi && MAJOR(ubi->cdev.dev) == major) {
 328                        ubi_num = ubi->ubi_num;
 329                        break;
 330                }
 331        }
 332        spin_unlock(&ubi_devices_lock);
 333
 334        return ubi_num;
 335}
 336
 337/* "Show" method for files in '/<sysfs>/class/ubi/ubiX/' */
 338static ssize_t dev_attribute_show(struct device *dev,
 339                                  struct device_attribute *attr, char *buf)
 340{
 341        ssize_t ret;
 342        struct ubi_device *ubi;
 343
 344        /*
 345         * The below code looks weird, but it actually makes sense. We get the
 346         * UBI device reference from the contained 'struct ubi_device'. But it
 347         * is unclear if the device was removed or not yet. Indeed, if the
 348         * device was removed before we increased its reference count,
 349         * 'ubi_get_device()' will return -ENODEV and we fail.
 350         *
 351         * Remember, 'struct ubi_device' is freed in the release function, so
 352         * we still can use 'ubi->ubi_num'.
 353         */
 354        ubi = container_of(dev, struct ubi_device, dev);
 355        ubi = ubi_get_device(ubi->ubi_num);
 356        if (!ubi)
 357                return -ENODEV;
 358
 359        if (attr == &dev_eraseblock_size)
 360                ret = sprintf(buf, "%d\n", ubi->leb_size);
 361        else if (attr == &dev_avail_eraseblocks)
 362                ret = sprintf(buf, "%d\n", ubi->avail_pebs);
 363        else if (attr == &dev_total_eraseblocks)
 364                ret = sprintf(buf, "%d\n", ubi->good_peb_count);
 365        else if (attr == &dev_volumes_count)
 366                ret = sprintf(buf, "%d\n", ubi->vol_count - UBI_INT_VOL_COUNT);
 367        else if (attr == &dev_max_ec)
 368                ret = sprintf(buf, "%d\n", ubi->max_ec);
 369        else if (attr == &dev_reserved_for_bad)
 370                ret = sprintf(buf, "%d\n", ubi->beb_rsvd_pebs);
 371        else if (attr == &dev_bad_peb_count)
 372                ret = sprintf(buf, "%d\n", ubi->bad_peb_count);
 373        else if (attr == &dev_max_vol_count)
 374                ret = sprintf(buf, "%d\n", ubi->vtbl_slots);
 375        else if (attr == &dev_min_io_size)
 376                ret = sprintf(buf, "%d\n", ubi->min_io_size);
 377        else if (attr == &dev_bgt_enabled)
 378                ret = sprintf(buf, "%d\n", ubi->thread_enabled);
 379        else if (attr == &dev_mtd_num)
 380                ret = sprintf(buf, "%d\n", ubi->mtd->index);
 381        else
 382                ret = -EINVAL;
 383
 384        ubi_put_device(ubi);
 385        return ret;
 386}
 387
 388static void dev_release(struct device *dev)
 389{
 390        struct ubi_device *ubi = container_of(dev, struct ubi_device, dev);
 391
 392        kfree(ubi);
 393}
 394
 395/**
 396 * ubi_sysfs_init - initialize sysfs for an UBI device.
 397 * @ubi: UBI device description object
 398 * @ref: set to %1 on exit in case of failure if a reference to @ubi->dev was
 399 *       taken
 400 *
 401 * This function returns zero in case of success and a negative error code in
 402 * case of failure.
 403 */
 404static int ubi_sysfs_init(struct ubi_device *ubi, int *ref)
 405{
 406        int err;
 407
 408        ubi->dev.release = dev_release;
 409        ubi->dev.devt = ubi->cdev.dev;
 410        ubi->dev.class = ubi_class;
 411        dev_set_name(&ubi->dev, UBI_NAME_STR"%d", ubi->ubi_num);
 412        err = device_register(&ubi->dev);
 413        if (err)
 414                return err;
 415
 416        *ref = 1;
 417        err = device_create_file(&ubi->dev, &dev_eraseblock_size);
 418        if (err)
 419                return err;
 420        err = device_create_file(&ubi->dev, &dev_avail_eraseblocks);
 421        if (err)
 422                return err;
 423        err = device_create_file(&ubi->dev, &dev_total_eraseblocks);
 424        if (err)
 425                return err;
 426        err = device_create_file(&ubi->dev, &dev_volumes_count);
 427        if (err)
 428                return err;
 429        err = device_create_file(&ubi->dev, &dev_max_ec);
 430        if (err)
 431                return err;
 432        err = device_create_file(&ubi->dev, &dev_reserved_for_bad);
 433        if (err)
 434                return err;
 435        err = device_create_file(&ubi->dev, &dev_bad_peb_count);
 436        if (err)
 437                return err;
 438        err = device_create_file(&ubi->dev, &dev_max_vol_count);
 439        if (err)
 440                return err;
 441        err = device_create_file(&ubi->dev, &dev_min_io_size);
 442        if (err)
 443                return err;
 444        err = device_create_file(&ubi->dev, &dev_bgt_enabled);
 445        if (err)
 446                return err;
 447        err = device_create_file(&ubi->dev, &dev_mtd_num);
 448        return err;
 449}
 450
 451/**
 452 * ubi_sysfs_close - close sysfs for an UBI device.
 453 * @ubi: UBI device description object
 454 */
 455static void ubi_sysfs_close(struct ubi_device *ubi)
 456{
 457        device_remove_file(&ubi->dev, &dev_mtd_num);
 458        device_remove_file(&ubi->dev, &dev_bgt_enabled);
 459        device_remove_file(&ubi->dev, &dev_min_io_size);
 460        device_remove_file(&ubi->dev, &dev_max_vol_count);
 461        device_remove_file(&ubi->dev, &dev_bad_peb_count);
 462        device_remove_file(&ubi->dev, &dev_reserved_for_bad);
 463        device_remove_file(&ubi->dev, &dev_max_ec);
 464        device_remove_file(&ubi->dev, &dev_volumes_count);
 465        device_remove_file(&ubi->dev, &dev_total_eraseblocks);
 466        device_remove_file(&ubi->dev, &dev_avail_eraseblocks);
 467        device_remove_file(&ubi->dev, &dev_eraseblock_size);
 468        device_unregister(&ubi->dev);
 469}
 470
 471/**
 472 * kill_volumes - destroy all user volumes.
 473 * @ubi: UBI device description object
 474 */
 475static void kill_volumes(struct ubi_device *ubi)
 476{
 477        int i;
 478
 479        for (i = 0; i < ubi->vtbl_slots; i++)
 480                if (ubi->volumes[i])
 481                        ubi_free_volume(ubi, ubi->volumes[i]);
 482}
 483
 484/**
 485 * uif_init - initialize user interfaces for an UBI device.
 486 * @ubi: UBI device description object
 487 * @ref: set to %1 on exit in case of failure if a reference to @ubi->dev was
 488 *       taken, otherwise set to %0
 489 *
 490 * This function initializes various user interfaces for an UBI device. If the
 491 * initialization fails at an early stage, this function frees all the
 492 * resources it allocated, returns an error, and @ref is set to %0. However,
 493 * if the initialization fails after the UBI device was registered in the
 494 * driver core subsystem, this function takes a reference to @ubi->dev, because
 495 * otherwise the release function ('dev_release()') would free whole @ubi
 496 * object. The @ref argument is set to %1 in this case. The caller has to put
 497 * this reference.
 498 *
 499 * This function returns zero in case of success and a negative error code in
 500 * case of failure.
 501 */
 502static int uif_init(struct ubi_device *ubi, int *ref)
 503{
 504        int i, err;
 505        dev_t dev;
 506
 507        *ref = 0;
 508        sprintf(ubi->ubi_name, UBI_NAME_STR "%d", ubi->ubi_num);
 509
 510        /*
 511         * Major numbers for the UBI character devices are allocated
 512         * dynamically. Major numbers of volume character devices are
 513         * equivalent to ones of the corresponding UBI character device. Minor
 514         * numbers of UBI character devices are 0, while minor numbers of
 515         * volume character devices start from 1. Thus, we allocate one major
 516         * number and ubi->vtbl_slots + 1 minor numbers.
 517         */
 518        err = alloc_chrdev_region(&dev, 0, ubi->vtbl_slots + 1, ubi->ubi_name);
 519        if (err) {
 520                ubi_err(ubi, "cannot register UBI character devices");
 521                return err;
 522        }
 523
 524        ubi_assert(MINOR(dev) == 0);
 525        cdev_init(&ubi->cdev, &ubi_cdev_operations);
 526        dbg_gen("%s major is %u", ubi->ubi_name, MAJOR(dev));
 527        ubi->cdev.owner = THIS_MODULE;
 528
 529        err = cdev_add(&ubi->cdev, dev, 1);
 530        if (err) {
 531                ubi_err(ubi, "cannot add character device");
 532                goto out_unreg;
 533        }
 534
 535        err = ubi_sysfs_init(ubi, ref);
 536        if (err)
 537                goto out_sysfs;
 538
 539        for (i = 0; i < ubi->vtbl_slots; i++)
 540                if (ubi->volumes[i]) {
 541                        err = ubi_add_volume(ubi, ubi->volumes[i]);
 542                        if (err) {
 543                                ubi_err(ubi, "cannot add volume %d", i);
 544                                goto out_volumes;
 545                        }
 546                }
 547
 548        return 0;
 549
 550out_volumes:
 551        kill_volumes(ubi);
 552out_sysfs:
 553        if (*ref)
 554                get_device(&ubi->dev);
 555        ubi_sysfs_close(ubi);
 556        cdev_del(&ubi->cdev);
 557out_unreg:
 558        unregister_chrdev_region(ubi->cdev.dev, ubi->vtbl_slots + 1);
 559        ubi_err(ubi, "cannot initialize UBI %s, error %d",
 560                ubi->ubi_name, err);
 561        return err;
 562}
 563
 564/**
 565 * uif_close - close user interfaces for an UBI device.
 566 * @ubi: UBI device description object
 567 *
 568 * Note, since this function un-registers UBI volume device objects (@vol->dev),
 569 * the memory allocated voe the volumes is freed as well (in the release
 570 * function).
 571 */
 572static void uif_close(struct ubi_device *ubi)
 573{
 574        kill_volumes(ubi);
 575        ubi_sysfs_close(ubi);
 576        cdev_del(&ubi->cdev);
 577        unregister_chrdev_region(ubi->cdev.dev, ubi->vtbl_slots + 1);
 578}
 579
 580/**
 581 * ubi_free_internal_volumes - free internal volumes.
 582 * @ubi: UBI device description object
 583 */
 584void ubi_free_internal_volumes(struct ubi_device *ubi)
 585{
 586        int i;
 587
 588        for (i = ubi->vtbl_slots;
 589             i < ubi->vtbl_slots + UBI_INT_VOL_COUNT; i++) {
 590                kfree(ubi->volumes[i]->eba_tbl);
 591                kfree(ubi->volumes[i]);
 592        }
 593}
 594
 595static int get_bad_peb_limit(const struct ubi_device *ubi, int max_beb_per1024)
 596{
 597        int limit, device_pebs;
 598        uint64_t device_size;
 599
 600        if (!max_beb_per1024)
 601                return 0;
 602
 603        /*
 604         * Here we are using size of the entire flash chip and
 605         * not just the MTD partition size because the maximum
 606         * number of bad eraseblocks is a percentage of the
 607         * whole device and bad eraseblocks are not fairly
 608         * distributed over the flash chip. So the worst case
 609         * is that all the bad eraseblocks of the chip are in
 610         * the MTD partition we are attaching (ubi->mtd).
 611         */
 612        device_size = mtd_get_device_size(ubi->mtd);
 613        device_pebs = mtd_div_by_eb(device_size, ubi->mtd);
 614        limit = mult_frac(device_pebs, max_beb_per1024, 1024);
 615
 616        /* Round it up */
 617        if (mult_frac(limit, 1024, max_beb_per1024) < device_pebs)
 618                limit += 1;
 619
 620        return limit;
 621}
 622
 623/**
 624 * io_init - initialize I/O sub-system for a given UBI device.
 625 * @ubi: UBI device description object
 626 * @max_beb_per1024: maximum expected number of bad PEB per 1024 PEBs
 627 *
 628 * If @ubi->vid_hdr_offset or @ubi->leb_start is zero, default offsets are
 629 * assumed:
 630 *   o EC header is always at offset zero - this cannot be changed;
 631 *   o VID header starts just after the EC header at the closest address
 632 *     aligned to @io->hdrs_min_io_size;
 633 *   o data starts just after the VID header at the closest address aligned to
 634 *     @io->min_io_size
 635 *
 636 * This function returns zero in case of success and a negative error code in
 637 * case of failure.
 638 */
 639static int io_init(struct ubi_device *ubi, int max_beb_per1024)
 640{
 641        dbg_gen("sizeof(struct ubi_ainf_peb) %zu", sizeof(struct ubi_ainf_peb));
 642        dbg_gen("sizeof(struct ubi_wl_entry) %zu", sizeof(struct ubi_wl_entry));
 643
 644        if (ubi->mtd->numeraseregions != 0) {
 645                /*
 646                 * Some flashes have several erase regions. Different regions
 647                 * may have different eraseblock size and other
 648                 * characteristics. It looks like mostly multi-region flashes
 649                 * have one "main" region and one or more small regions to
 650                 * store boot loader code or boot parameters or whatever. I
 651                 * guess we should just pick the largest region. But this is
 652                 * not implemented.
 653                 */
 654                ubi_err(ubi, "multiple regions, not implemented");
 655                return -EINVAL;
 656        }
 657
 658        if (ubi->vid_hdr_offset < 0)
 659                return -EINVAL;
 660
 661        /*
 662         * Note, in this implementation we support MTD devices with 0x7FFFFFFF
 663         * physical eraseblocks maximum.
 664         */
 665
 666        ubi->peb_size   = ubi->mtd->erasesize;
 667        ubi->peb_count  = mtd_div_by_eb(ubi->mtd->size, ubi->mtd);
 668        ubi->flash_size = ubi->mtd->size;
 669
 670        if (mtd_can_have_bb(ubi->mtd)) {
 671                ubi->bad_allowed = 1;
 672                ubi->bad_peb_limit = get_bad_peb_limit(ubi, max_beb_per1024);
 673        }
 674
 675        if (ubi->mtd->type == MTD_NORFLASH) {
 676                ubi_assert(ubi->mtd->writesize == 1);
 677                ubi->nor_flash = 1;
 678        }
 679
 680        ubi->min_io_size = ubi->mtd->writesize;
 681        ubi->hdrs_min_io_size = ubi->mtd->writesize >> ubi->mtd->subpage_sft;
 682
 683        /*
 684         * Make sure minimal I/O unit is power of 2. Note, there is no
 685         * fundamental reason for this assumption. It is just an optimization
 686         * which allows us to avoid costly division operations.
 687         */
 688        if (!is_power_of_2(ubi->min_io_size)) {
 689                ubi_err(ubi, "min. I/O unit (%d) is not power of 2",
 690                        ubi->min_io_size);
 691                return -EINVAL;
 692        }
 693
 694        ubi_assert(ubi->hdrs_min_io_size > 0);
 695        ubi_assert(ubi->hdrs_min_io_size <= ubi->min_io_size);
 696        ubi_assert(ubi->min_io_size % ubi->hdrs_min_io_size == 0);
 697
 698        ubi->max_write_size = ubi->mtd->writebufsize;
 699        /*
 700         * Maximum write size has to be greater or equivalent to min. I/O
 701         * size, and be multiple of min. I/O size.
 702         */
 703        if (ubi->max_write_size < ubi->min_io_size ||
 704            ubi->max_write_size % ubi->min_io_size ||
 705            !is_power_of_2(ubi->max_write_size)) {
 706                ubi_err(ubi, "bad write buffer size %d for %d min. I/O unit",
 707                        ubi->max_write_size, ubi->min_io_size);
 708                return -EINVAL;
 709        }
 710
 711        /* Calculate default aligned sizes of EC and VID headers */
 712        ubi->ec_hdr_alsize = ALIGN(UBI_EC_HDR_SIZE, ubi->hdrs_min_io_size);
 713        ubi->vid_hdr_alsize = ALIGN(UBI_VID_HDR_SIZE, ubi->hdrs_min_io_size);
 714
 715        dbg_gen("min_io_size      %d", ubi->min_io_size);
 716        dbg_gen("max_write_size   %d", ubi->max_write_size);
 717        dbg_gen("hdrs_min_io_size %d", ubi->hdrs_min_io_size);
 718        dbg_gen("ec_hdr_alsize    %d", ubi->ec_hdr_alsize);
 719        dbg_gen("vid_hdr_alsize   %d", ubi->vid_hdr_alsize);
 720
 721        if (ubi->vid_hdr_offset == 0)
 722                /* Default offset */
 723                ubi->vid_hdr_offset = ubi->vid_hdr_aloffset =
 724                                      ubi->ec_hdr_alsize;
 725        else {
 726                ubi->vid_hdr_aloffset = ubi->vid_hdr_offset &
 727                                                ~(ubi->hdrs_min_io_size - 1);
 728                ubi->vid_hdr_shift = ubi->vid_hdr_offset -
 729                                                ubi->vid_hdr_aloffset;
 730        }
 731
 732        /* Similar for the data offset */
 733        ubi->leb_start = ubi->vid_hdr_offset + UBI_VID_HDR_SIZE;
 734        ubi->leb_start = ALIGN(ubi->leb_start, ubi->min_io_size);
 735
 736        dbg_gen("vid_hdr_offset   %d", ubi->vid_hdr_offset);
 737        dbg_gen("vid_hdr_aloffset %d", ubi->vid_hdr_aloffset);
 738        dbg_gen("vid_hdr_shift    %d", ubi->vid_hdr_shift);
 739        dbg_gen("leb_start        %d", ubi->leb_start);
 740
 741        /* The shift must be aligned to 32-bit boundary */
 742        if (ubi->vid_hdr_shift % 4) {
 743                ubi_err(ubi, "unaligned VID header shift %d",
 744                        ubi->vid_hdr_shift);
 745                return -EINVAL;
 746        }
 747
 748        /* Check sanity */
 749        if (ubi->vid_hdr_offset < UBI_EC_HDR_SIZE ||
 750            ubi->leb_start < ubi->vid_hdr_offset + UBI_VID_HDR_SIZE ||
 751            ubi->leb_start > ubi->peb_size - UBI_VID_HDR_SIZE ||
 752            ubi->leb_start & (ubi->min_io_size - 1)) {
 753                ubi_err(ubi, "bad VID header (%d) or data offsets (%d)",
 754                        ubi->vid_hdr_offset, ubi->leb_start);
 755                return -EINVAL;
 756        }
 757
 758        /*
 759         * Set maximum amount of physical erroneous eraseblocks to be 10%.
 760         * Erroneous PEB are those which have read errors.
 761         */
 762        ubi->max_erroneous = ubi->peb_count / 10;
 763        if (ubi->max_erroneous < 16)
 764                ubi->max_erroneous = 16;
 765        dbg_gen("max_erroneous    %d", ubi->max_erroneous);
 766
 767        /*
 768         * It may happen that EC and VID headers are situated in one minimal
 769         * I/O unit. In this case we can only accept this UBI image in
 770         * read-only mode.
 771         */
 772        if (ubi->vid_hdr_offset + UBI_VID_HDR_SIZE <= ubi->hdrs_min_io_size) {
 773                ubi_warn(ubi, "EC and VID headers are in the same minimal I/O unit, switch to read-only mode");
 774                ubi->ro_mode = 1;
 775        }
 776
 777        ubi->leb_size = ubi->peb_size - ubi->leb_start;
 778
 779        if (!(ubi->mtd->flags & MTD_WRITEABLE)) {
 780                ubi_msg(ubi, "MTD device %d is write-protected, attach in read-only mode",
 781                        ubi->mtd->index);
 782                ubi->ro_mode = 1;
 783        }
 784
 785        /*
 786         * Note, ideally, we have to initialize @ubi->bad_peb_count here. But
 787         * unfortunately, MTD does not provide this information. We should loop
 788         * over all physical eraseblocks and invoke mtd->block_is_bad() for
 789         * each physical eraseblock. So, we leave @ubi->bad_peb_count
 790         * uninitialized so far.
 791         */
 792
 793        return 0;
 794}
 795
 796/**
 797 * autoresize - re-size the volume which has the "auto-resize" flag set.
 798 * @ubi: UBI device description object
 799 * @vol_id: ID of the volume to re-size
 800 *
 801 * This function re-sizes the volume marked by the %UBI_VTBL_AUTORESIZE_FLG in
 802 * the volume table to the largest possible size. See comments in ubi-header.h
 803 * for more description of the flag. Returns zero in case of success and a
 804 * negative error code in case of failure.
 805 */
 806static int autoresize(struct ubi_device *ubi, int vol_id)
 807{
 808        struct ubi_volume_desc desc;
 809        struct ubi_volume *vol = ubi->volumes[vol_id];
 810        int err, old_reserved_pebs = vol->reserved_pebs;
 811
 812        if (ubi->ro_mode) {
 813                ubi_warn(ubi, "skip auto-resize because of R/O mode");
 814                return 0;
 815        }
 816
 817        /*
 818         * Clear the auto-resize flag in the volume in-memory copy of the
 819         * volume table, and 'ubi_resize_volume()' will propagate this change
 820         * to the flash.
 821         */
 822        ubi->vtbl[vol_id].flags &= ~UBI_VTBL_AUTORESIZE_FLG;
 823
 824        if (ubi->avail_pebs == 0) {
 825                struct ubi_vtbl_record vtbl_rec;
 826
 827                /*
 828                 * No available PEBs to re-size the volume, clear the flag on
 829                 * flash and exit.
 830                 */
 831                vtbl_rec = ubi->vtbl[vol_id];
 832                err = ubi_change_vtbl_record(ubi, vol_id, &vtbl_rec);
 833                if (err)
 834                        ubi_err(ubi, "cannot clean auto-resize flag for volume %d",
 835                                vol_id);
 836        } else {
 837                desc.vol = vol;
 838                err = ubi_resize_volume(&desc,
 839                                        old_reserved_pebs + ubi->avail_pebs);
 840                if (err)
 841                        ubi_err(ubi, "cannot auto-resize volume %d",
 842                                vol_id);
 843        }
 844
 845        if (err)
 846                return err;
 847
 848        ubi_msg(ubi, "volume %d (\"%s\") re-sized from %d to %d LEBs",
 849                vol_id, vol->name, old_reserved_pebs, vol->reserved_pebs);
 850        return 0;
 851}
 852
 853/**
 854 * ubi_attach_mtd_dev - attach an MTD device.
 855 * @mtd: MTD device description object
 856 * @ubi_num: number to assign to the new UBI device
 857 * @vid_hdr_offset: VID header offset
 858 * @max_beb_per1024: maximum expected number of bad PEB per 1024 PEBs
 859 *
 860 * This function attaches MTD device @mtd_dev to UBI and assign @ubi_num number
 861 * to the newly created UBI device, unless @ubi_num is %UBI_DEV_NUM_AUTO, in
 862 * which case this function finds a vacant device number and assigns it
 863 * automatically. Returns the new UBI device number in case of success and a
 864 * negative error code in case of failure.
 865 *
 866 * Note, the invocations of this function has to be serialized by the
 867 * @ubi_devices_mutex.
 868 */
 869int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
 870                       int vid_hdr_offset, int max_beb_per1024)
 871{
 872        struct ubi_device *ubi;
 873        int i, err, ref = 0;
 874
 875        if (max_beb_per1024 < 0 || max_beb_per1024 > MAX_MTD_UBI_BEB_LIMIT)
 876                return -EINVAL;
 877
 878        if (!max_beb_per1024)
 879                max_beb_per1024 = CONFIG_MTD_UBI_BEB_LIMIT;
 880
 881        /*
 882         * Check if we already have the same MTD device attached.
 883         *
 884         * Note, this function assumes that UBI devices creations and deletions
 885         * are serialized, so it does not take the &ubi_devices_lock.
 886         */
 887        for (i = 0; i < UBI_MAX_DEVICES; i++) {
 888                ubi = ubi_devices[i];
 889                if (ubi && mtd->index == ubi->mtd->index) {
 890                        ubi_err(ubi, "mtd%d is already attached to ubi%d",
 891                                mtd->index, i);
 892                        return -EEXIST;
 893                }
 894        }
 895
 896        /*
 897         * Make sure this MTD device is not emulated on top of an UBI volume
 898         * already. Well, generally this recursion works fine, but there are
 899         * different problems like the UBI module takes a reference to itself
 900         * by attaching (and thus, opening) the emulated MTD device. This
 901         * results in inability to unload the module. And in general it makes
 902         * no sense to attach emulated MTD devices, so we prohibit this.
 903         */
 904        if (mtd->type == MTD_UBIVOLUME) {
 905                ubi_err(ubi, "refuse attaching mtd%d - it is already emulated on top of UBI",
 906                        mtd->index);
 907                return -EINVAL;
 908        }
 909
 910        if (ubi_num == UBI_DEV_NUM_AUTO) {
 911                /* Search for an empty slot in the @ubi_devices array */
 912                for (ubi_num = 0; ubi_num < UBI_MAX_DEVICES; ubi_num++)
 913                        if (!ubi_devices[ubi_num])
 914                                break;
 915                if (ubi_num == UBI_MAX_DEVICES) {
 916                        ubi_err(ubi, "only %d UBI devices may be created",
 917                                UBI_MAX_DEVICES);
 918                        return -ENFILE;
 919                }
 920        } else {
 921                if (ubi_num >= UBI_MAX_DEVICES)
 922                        return -EINVAL;
 923
 924                /* Make sure ubi_num is not busy */
 925                if (ubi_devices[ubi_num]) {
 926                        ubi_err(ubi, "ubi%d already exists", ubi_num);
 927                        return -EEXIST;
 928                }
 929        }
 930
 931        ubi = kzalloc(sizeof(struct ubi_device), GFP_KERNEL);
 932        if (!ubi)
 933                return -ENOMEM;
 934
 935        ubi->mtd = mtd;
 936        ubi->ubi_num = ubi_num;
 937        ubi->vid_hdr_offset = vid_hdr_offset;
 938        ubi->autoresize_vol_id = -1;
 939
 940#ifdef CONFIG_MTD_UBI_FASTMAP
 941        ubi->fm_pool.used = ubi->fm_pool.size = 0;
 942        ubi->fm_wl_pool.used = ubi->fm_wl_pool.size = 0;
 943
 944        /*
 945         * fm_pool.max_size is 5% of the total number of PEBs but it's also
 946         * between UBI_FM_MAX_POOL_SIZE and UBI_FM_MIN_POOL_SIZE.
 947         */
 948        ubi->fm_pool.max_size = min(((int)mtd_div_by_eb(ubi->mtd->size,
 949                ubi->mtd) / 100) * 5, UBI_FM_MAX_POOL_SIZE);
 950        if (ubi->fm_pool.max_size < UBI_FM_MIN_POOL_SIZE)
 951                ubi->fm_pool.max_size = UBI_FM_MIN_POOL_SIZE;
 952
 953        ubi->fm_wl_pool.max_size = UBI_FM_WL_POOL_SIZE;
 954        ubi->fm_disabled = !fm_autoconvert;
 955
 956        if (!ubi->fm_disabled && (int)mtd_div_by_eb(ubi->mtd->size, ubi->mtd)
 957            <= UBI_FM_MAX_START) {
 958                ubi_err(ubi, "More than %i PEBs are needed for fastmap, sorry.",
 959                        UBI_FM_MAX_START);
 960                ubi->fm_disabled = 1;
 961        }
 962
 963        ubi_msg(ubi, "default fastmap pool size: %d", ubi->fm_pool.max_size);
 964        ubi_msg(ubi, "default fastmap WL pool size: %d",
 965                ubi->fm_wl_pool.max_size);
 966#else
 967        ubi->fm_disabled = 1;
 968#endif
 969        mutex_init(&ubi->buf_mutex);
 970        mutex_init(&ubi->ckvol_mutex);
 971        mutex_init(&ubi->device_mutex);
 972        spin_lock_init(&ubi->volumes_lock);
 973        mutex_init(&ubi->fm_mutex);
 974        init_rwsem(&ubi->fm_sem);
 975
 976        ubi_msg(ubi, "attaching mtd%d to ubi%d", mtd->index, ubi_num);
 977
 978        err = io_init(ubi, max_beb_per1024);
 979        if (err)
 980                goto out_free;
 981
 982        err = -ENOMEM;
 983        ubi->peb_buf = vmalloc(ubi->peb_size);
 984        if (!ubi->peb_buf)
 985                goto out_free;
 986
 987#ifdef CONFIG_MTD_UBI_FASTMAP
 988        ubi->fm_size = ubi_calc_fm_size(ubi);
 989        ubi->fm_buf = vzalloc(ubi->fm_size);
 990        if (!ubi->fm_buf)
 991                goto out_free;
 992#endif
 993        err = ubi_attach(ubi, 0);
 994        if (err) {
 995                ubi_err(ubi, "failed to attach mtd%d, error %d",
 996                        mtd->index, err);
 997                goto out_free;
 998        }
 999
1000        if (ubi->autoresize_vol_id != -1) {
1001                err = autoresize(ubi, ubi->autoresize_vol_id);
1002                if (err)
1003                        goto out_detach;
1004        }
1005
1006        err = uif_init(ubi, &ref);
1007        if (err)
1008                goto out_detach;
1009
1010        err = ubi_debugfs_init_dev(ubi);
1011        if (err)
1012                goto out_uif;
1013
1014        ubi->bgt_thread = kthread_create(ubi_thread, ubi, "%s", ubi->bgt_name);
1015        if (IS_ERR(ubi->bgt_thread)) {
1016                err = PTR_ERR(ubi->bgt_thread);
1017                ubi_err(ubi, "cannot spawn \"%s\", error %d",
1018                        ubi->bgt_name, err);
1019                goto out_debugfs;
1020        }
1021
1022        ubi_msg(ubi, "attached mtd%d (name \"%s\", size %llu MiB)",
1023                mtd->index, mtd->name, ubi->flash_size >> 20);
1024        ubi_msg(ubi, "PEB size: %d bytes (%d KiB), LEB size: %d bytes",
1025                ubi->peb_size, ubi->peb_size >> 10, ubi->leb_size);
1026        ubi_msg(ubi, "min./max. I/O unit sizes: %d/%d, sub-page size %d",
1027                ubi->min_io_size, ubi->max_write_size, ubi->hdrs_min_io_size);
1028        ubi_msg(ubi, "VID header offset: %d (aligned %d), data offset: %d",
1029                ubi->vid_hdr_offset, ubi->vid_hdr_aloffset, ubi->leb_start);
1030        ubi_msg(ubi, "good PEBs: %d, bad PEBs: %d, corrupted PEBs: %d",
1031                ubi->good_peb_count, ubi->bad_peb_count, ubi->corr_peb_count);
1032        ubi_msg(ubi, "user volume: %d, internal volumes: %d, max. volumes count: %d",
1033                ubi->vol_count - UBI_INT_VOL_COUNT, UBI_INT_VOL_COUNT,
1034                ubi->vtbl_slots);
1035        ubi_msg(ubi, "max/mean erase counter: %d/%d, WL threshold: %d, image sequence number: %u",
1036                ubi->max_ec, ubi->mean_ec, CONFIG_MTD_UBI_WL_THRESHOLD,
1037                ubi->image_seq);
1038        ubi_msg(ubi, "available PEBs: %d, total reserved PEBs: %d, PEBs reserved for bad PEB handling: %d",
1039                ubi->avail_pebs, ubi->rsvd_pebs, ubi->beb_rsvd_pebs);
1040
1041        /*
1042         * The below lock makes sure we do not race with 'ubi_thread()' which
1043         * checks @ubi->thread_enabled. Otherwise we may fail to wake it up.
1044         */
1045        spin_lock(&ubi->wl_lock);
1046        ubi->thread_enabled = 1;
1047        wake_up_process(ubi->bgt_thread);
1048        spin_unlock(&ubi->wl_lock);
1049
1050        ubi_devices[ubi_num] = ubi;
1051        ubi_notify_all(ubi, UBI_VOLUME_ADDED, NULL);
1052        return ubi_num;
1053
1054out_debugfs:
1055        ubi_debugfs_exit_dev(ubi);
1056out_uif:
1057        get_device(&ubi->dev);
1058        ubi_assert(ref);
1059        uif_close(ubi);
1060out_detach:
1061        ubi_wl_close(ubi);
1062        ubi_free_internal_volumes(ubi);
1063        vfree(ubi->vtbl);
1064out_free:
1065        vfree(ubi->peb_buf);
1066        vfree(ubi->fm_buf);
1067        if (ref)
1068                put_device(&ubi->dev);
1069        else
1070                kfree(ubi);
1071        return err;
1072}
1073
1074/**
1075 * ubi_detach_mtd_dev - detach an MTD device.
1076 * @ubi_num: UBI device number to detach from
1077 * @anyway: detach MTD even if device reference count is not zero
1078 *
1079 * This function destroys an UBI device number @ubi_num and detaches the
1080 * underlying MTD device. Returns zero in case of success and %-EBUSY if the
1081 * UBI device is busy and cannot be destroyed, and %-EINVAL if it does not
1082 * exist.
1083 *
1084 * Note, the invocations of this function has to be serialized by the
1085 * @ubi_devices_mutex.
1086 */
1087int ubi_detach_mtd_dev(int ubi_num, int anyway)
1088{
1089        struct ubi_device *ubi;
1090
1091        if (ubi_num < 0 || ubi_num >= UBI_MAX_DEVICES)
1092                return -EINVAL;
1093
1094        ubi = ubi_get_device(ubi_num);
1095        if (!ubi)
1096                return -EINVAL;
1097
1098        spin_lock(&ubi_devices_lock);
1099        put_device(&ubi->dev);
1100        ubi->ref_count -= 1;
1101        if (ubi->ref_count) {
1102                if (!anyway) {
1103                        spin_unlock(&ubi_devices_lock);
1104                        return -EBUSY;
1105                }
1106                /* This may only happen if there is a bug */
1107                ubi_err(ubi, "%s reference count %d, destroy anyway",
1108                        ubi->ubi_name, ubi->ref_count);
1109        }
1110        ubi_devices[ubi_num] = NULL;
1111        spin_unlock(&ubi_devices_lock);
1112
1113        ubi_assert(ubi_num == ubi->ubi_num);
1114        ubi_notify_all(ubi, UBI_VOLUME_REMOVED, NULL);
1115        ubi_msg(ubi, "detaching mtd%d", ubi->mtd->index);
1116#ifdef CONFIG_MTD_UBI_FASTMAP
1117        /* If we don't write a new fastmap at detach time we lose all
1118         * EC updates that have been made since the last written fastmap. */
1119        ubi_update_fastmap(ubi);
1120#endif
1121        /*
1122         * Before freeing anything, we have to stop the background thread to
1123         * prevent it from doing anything on this device while we are freeing.
1124         */
1125        if (ubi->bgt_thread)
1126                kthread_stop(ubi->bgt_thread);
1127
1128        /*
1129         * Get a reference to the device in order to prevent 'dev_release()'
1130         * from freeing the @ubi object.
1131         */
1132        get_device(&ubi->dev);
1133
1134        ubi_debugfs_exit_dev(ubi);
1135        uif_close(ubi);
1136
1137        ubi_wl_close(ubi);
1138        ubi_free_internal_volumes(ubi);
1139        vfree(ubi->vtbl);
1140        put_mtd_device(ubi->mtd);
1141        vfree(ubi->peb_buf);
1142        vfree(ubi->fm_buf);
1143        ubi_msg(ubi, "mtd%d is detached", ubi->mtd->index);
1144        put_device(&ubi->dev);
1145        return 0;
1146}
1147
1148/**
1149 * open_mtd_by_chdev - open an MTD device by its character device node path.
1150 * @mtd_dev: MTD character device node path
1151 *
1152 * This helper function opens an MTD device by its character node device path.
1153 * Returns MTD device description object in case of success and a negative
1154 * error code in case of failure.
1155 */
1156static struct mtd_info * __init open_mtd_by_chdev(const char *mtd_dev)
1157{
1158        int err, major, minor, mode;
1159        struct path path;
1160
1161        /* Probably this is an MTD character device node path */
1162        err = kern_path(mtd_dev, LOOKUP_FOLLOW, &path);
1163        if (err)
1164                return ERR_PTR(err);
1165
1166        /* MTD device number is defined by the major / minor numbers */
1167        major = imajor(path.dentry->d_inode);
1168        minor = iminor(path.dentry->d_inode);
1169        mode = path.dentry->d_inode->i_mode;
1170        path_put(&path);
1171        if (major != MTD_CHAR_MAJOR || !S_ISCHR(mode))
1172                return ERR_PTR(-EINVAL);
1173
1174        if (minor & 1)
1175                /*
1176                 * Just do not think the "/dev/mtdrX" devices support is need,
1177                 * so do not support them to avoid doing extra work.
1178                 */
1179                return ERR_PTR(-EINVAL);
1180
1181        return get_mtd_device(NULL, minor / 2);
1182}
1183
1184/**
1185 * open_mtd_device - open MTD device by name, character device path, or number.
1186 * @mtd_dev: name, character device node path, or MTD device device number
1187 *
1188 * This function tries to open and MTD device described by @mtd_dev string,
1189 * which is first treated as ASCII MTD device number, and if it is not true, it
1190 * is treated as MTD device name, and if that is also not true, it is treated
1191 * as MTD character device node path. Returns MTD device description object in
1192 * case of success and a negative error code in case of failure.
1193 */
1194static struct mtd_info * __init open_mtd_device(const char *mtd_dev)
1195{
1196        struct mtd_info *mtd;
1197        int mtd_num;
1198        char *endp;
1199
1200        mtd_num = simple_strtoul(mtd_dev, &endp, 0);
1201        if (*endp != '\0' || mtd_dev == endp) {
1202                /*
1203                 * This does not look like an ASCII integer, probably this is
1204                 * MTD device name.
1205                 */
1206                mtd = get_mtd_device_nm(mtd_dev);
1207                if (IS_ERR(mtd) && PTR_ERR(mtd) == -ENODEV)
1208                        /* Probably this is an MTD character device node path */
1209                        mtd = open_mtd_by_chdev(mtd_dev);
1210        } else
1211                mtd = get_mtd_device(NULL, mtd_num);
1212
1213        return mtd;
1214}
1215
1216static int __init ubi_init(void)
1217{
1218        int err, i, k;
1219
1220        /* Ensure that EC and VID headers have correct size */
1221        BUILD_BUG_ON(sizeof(struct ubi_ec_hdr) != 64);
1222        BUILD_BUG_ON(sizeof(struct ubi_vid_hdr) != 64);
1223
1224        if (mtd_devs > UBI_MAX_DEVICES) {
1225                pr_err("UBI error: too many MTD devices, maximum is %d",
1226                       UBI_MAX_DEVICES);
1227                return -EINVAL;
1228        }
1229
1230        /* Create base sysfs directory and sysfs files */
1231        ubi_class = class_create(THIS_MODULE, UBI_NAME_STR);
1232        if (IS_ERR(ubi_class)) {
1233                err = PTR_ERR(ubi_class);
1234                pr_err("UBI error: cannot create UBI class");
1235                goto out;
1236        }
1237
1238        err = class_create_file(ubi_class, &ubi_version);
1239        if (err) {
1240                pr_err("UBI error: cannot create sysfs file");
1241                goto out_class;
1242        }
1243
1244        err = misc_register(&ubi_ctrl_cdev);
1245        if (err) {
1246                pr_err("UBI error: cannot register device");
1247                goto out_version;
1248        }
1249
1250        ubi_wl_entry_slab = kmem_cache_create("ubi_wl_entry_slab",
1251                                              sizeof(struct ubi_wl_entry),
1252                                              0, 0, NULL);
1253        if (!ubi_wl_entry_slab) {
1254                err = -ENOMEM;
1255                goto out_dev_unreg;
1256        }
1257
1258        err = ubi_debugfs_init();
1259        if (err)
1260                goto out_slab;
1261
1262
1263        /* Attach MTD devices */
1264        for (i = 0; i < mtd_devs; i++) {
1265                struct mtd_dev_param *p = &mtd_dev_param[i];
1266                struct mtd_info *mtd;
1267
1268                cond_resched();
1269
1270                mtd = open_mtd_device(p->name);
1271                if (IS_ERR(mtd)) {
1272                        err = PTR_ERR(mtd);
1273                        pr_err("UBI error: cannot open mtd %s, error %d",
1274                               p->name, err);
1275                        /* See comment below re-ubi_is_module(). */
1276                        if (ubi_is_module())
1277                                goto out_detach;
1278                        continue;
1279                }
1280
1281                mutex_lock(&ubi_devices_mutex);
1282                err = ubi_attach_mtd_dev(mtd, p->ubi_num,
1283                                         p->vid_hdr_offs, p->max_beb_per1024);
1284                mutex_unlock(&ubi_devices_mutex);
1285                if (err < 0) {
1286                        pr_err("UBI error: cannot attach mtd%d",
1287                               mtd->index);
1288                        put_mtd_device(mtd);
1289
1290                        /*
1291                         * Originally UBI stopped initializing on any error.
1292                         * However, later on it was found out that this
1293                         * behavior is not very good when UBI is compiled into
1294                         * the kernel and the MTD devices to attach are passed
1295                         * through the command line. Indeed, UBI failure
1296                         * stopped whole boot sequence.
1297                         *
1298                         * To fix this, we changed the behavior for the
1299                         * non-module case, but preserved the old behavior for
1300                         * the module case, just for compatibility. This is a
1301                         * little inconsistent, though.
1302                         */
1303                        if (ubi_is_module())
1304                                goto out_detach;
1305                }
1306        }
1307
1308        err = ubiblock_init();
1309        if (err) {
1310                pr_err("UBI error: block: cannot initialize, error %d", err);
1311
1312                /* See comment above re-ubi_is_module(). */
1313                if (ubi_is_module())
1314                        goto out_detach;
1315        }
1316
1317        return 0;
1318
1319out_detach:
1320        for (k = 0; k < i; k++)
1321                if (ubi_devices[k]) {
1322                        mutex_lock(&ubi_devices_mutex);
1323                        ubi_detach_mtd_dev(ubi_devices[k]->ubi_num, 1);
1324                        mutex_unlock(&ubi_devices_mutex);
1325                }
1326        ubi_debugfs_exit();
1327out_slab:
1328        kmem_cache_destroy(ubi_wl_entry_slab);
1329out_dev_unreg:
1330        misc_deregister(&ubi_ctrl_cdev);
1331out_version:
1332        class_remove_file(ubi_class, &ubi_version);
1333out_class:
1334        class_destroy(ubi_class);
1335out:
1336        pr_err("UBI error: cannot initialize UBI, error %d", err);
1337        return err;
1338}
1339late_initcall(ubi_init);
1340
1341static void __exit ubi_exit(void)
1342{
1343        int i;
1344
1345        ubiblock_exit();
1346
1347        for (i = 0; i < UBI_MAX_DEVICES; i++)
1348                if (ubi_devices[i]) {
1349                        mutex_lock(&ubi_devices_mutex);
1350                        ubi_detach_mtd_dev(ubi_devices[i]->ubi_num, 1);
1351                        mutex_unlock(&ubi_devices_mutex);
1352                }
1353        ubi_debugfs_exit();
1354        kmem_cache_destroy(ubi_wl_entry_slab);
1355        misc_deregister(&ubi_ctrl_cdev);
1356        class_remove_file(ubi_class, &ubi_version);
1357        class_destroy(ubi_class);
1358}
1359module_exit(ubi_exit);
1360
1361/**
1362 * bytes_str_to_int - convert a number of bytes string into an integer.
1363 * @str: the string to convert
1364 *
1365 * This function returns positive resulting integer in case of success and a
1366 * negative error code in case of failure.
1367 */
1368static int __init bytes_str_to_int(const char *str)
1369{
1370        char *endp;
1371        unsigned long result;
1372
1373        result = simple_strtoul(str, &endp, 0);
1374        if (str == endp || result >= INT_MAX) {
1375                pr_err("UBI error: incorrect bytes count: \"%s\"\n", str);
1376                return -EINVAL;
1377        }
1378
1379        switch (*endp) {
1380        case 'G':
1381                result *= 1024;
1382        case 'M':
1383                result *= 1024;
1384        case 'K':
1385                result *= 1024;
1386                if (endp[1] == 'i' && endp[2] == 'B')
1387                        endp += 2;
1388        case '\0':
1389                break;
1390        default:
1391                pr_err("UBI error: incorrect bytes count: \"%s\"\n", str);
1392                return -EINVAL;
1393        }
1394
1395        return result;
1396}
1397
1398/**
1399 * ubi_mtd_param_parse - parse the 'mtd=' UBI parameter.
1400 * @val: the parameter value to parse
1401 * @kp: not used
1402 *
1403 * This function returns zero in case of success and a negative error code in
1404 * case of error.
1405 */
1406static int __init ubi_mtd_param_parse(const char *val, struct kernel_param *kp)
1407{
1408        int i, len;
1409        struct mtd_dev_param *p;
1410        char buf[MTD_PARAM_LEN_MAX];
1411        char *pbuf = &buf[0];
1412        char *tokens[MTD_PARAM_MAX_COUNT], *token;
1413
1414        if (!val)
1415                return -EINVAL;
1416
1417        if (mtd_devs == UBI_MAX_DEVICES) {
1418                pr_err("UBI error: too many parameters, max. is %d\n",
1419                       UBI_MAX_DEVICES);
1420                return -EINVAL;
1421        }
1422
1423        len = strnlen(val, MTD_PARAM_LEN_MAX);
1424        if (len == MTD_PARAM_LEN_MAX) {
1425                pr_err("UBI error: parameter \"%s\" is too long, max. is %d\n",
1426                       val, MTD_PARAM_LEN_MAX);
1427                return -EINVAL;
1428        }
1429
1430        if (len == 0) {
1431                pr_err("UBI warning: empty 'mtd=' parameter - ignored\n");
1432                return 0;
1433        }
1434
1435        strcpy(buf, val);
1436
1437        /* Get rid of the final newline */
1438        if (buf[len - 1] == '\n')
1439                buf[len - 1] = '\0';
1440
1441        for (i = 0; i < MTD_PARAM_MAX_COUNT; i++)
1442                tokens[i] = strsep(&pbuf, ",");
1443
1444        if (pbuf) {
1445                pr_err("UBI error: too many arguments at \"%s\"\n", val);
1446                return -EINVAL;
1447        }
1448
1449        p = &mtd_dev_param[mtd_devs];
1450        strcpy(&p->name[0], tokens[0]);
1451
1452        token = tokens[1];
1453        if (token) {
1454                p->vid_hdr_offs = bytes_str_to_int(token);
1455
1456                if (p->vid_hdr_offs < 0)
1457                        return p->vid_hdr_offs;
1458        }
1459
1460        token = tokens[2];
1461        if (token) {
1462                int err = kstrtoint(token, 10, &p->max_beb_per1024);
1463
1464                if (err) {
1465                        pr_err("UBI error: bad value for max_beb_per1024 parameter: %s",
1466                               token);
1467                        return -EINVAL;
1468                }
1469        }
1470
1471        token = tokens[3];
1472        if (token) {
1473                int err = kstrtoint(token, 10, &p->ubi_num);
1474
1475                if (err) {
1476                        pr_err("UBI error: bad value for ubi_num parameter: %s",
1477                               token);
1478                        return -EINVAL;
1479                }
1480        } else
1481                p->ubi_num = UBI_DEV_NUM_AUTO;
1482
1483        mtd_devs += 1;
1484        return 0;
1485}
1486
1487module_param_call(mtd, ubi_mtd_param_parse, NULL, NULL, 000);
1488MODULE_PARM_DESC(mtd, "MTD devices to attach. Parameter format: mtd=<name|num|path>[,<vid_hdr_offs>[,max_beb_per1024[,ubi_num]]].\n"
1489                      "Multiple \"mtd\" parameters may be specified.\n"
1490                      "MTD devices may be specified by their number, name, or path to the MTD character device node.\n"
1491                      "Optional \"vid_hdr_offs\" parameter specifies UBI VID header position to be used by UBI. (default value if 0)\n"
1492                      "Optional \"max_beb_per1024\" parameter specifies the maximum expected bad eraseblock per 1024 eraseblocks. (default value ("
1493                      __stringify(CONFIG_MTD_UBI_BEB_LIMIT) ") if 0)\n"
1494                      "Optional \"ubi_num\" parameter specifies UBI device number which have to be assigned to the newly created UBI device (assigned automatically by default)\n"
1495                      "\n"
1496                      "Example 1: mtd=/dev/mtd0 - attach MTD device /dev/mtd0.\n"
1497                      "Example 2: mtd=content,1984 mtd=4 - attach MTD device with name \"content\" using VID header offset 1984, and MTD device number 4 with default VID header offset.\n"
1498                      "Example 3: mtd=/dev/mtd1,0,25 - attach MTD device /dev/mtd1 using default VID header offset and reserve 25*nand_size_in_blocks/1024 erase blocks for bad block handling.\n"
1499                      "Example 4: mtd=/dev/mtd1,0,0,5 - attach MTD device /dev/mtd1 to UBI 5 and using default values for the other fields.\n"
1500                      "\t(e.g. if the NAND *chipset* has 4096 PEB, 100 will be reserved for this UBI device).");
1501#ifdef CONFIG_MTD_UBI_FASTMAP
1502module_param(fm_autoconvert, bool, 0644);
1503MODULE_PARM_DESC(fm_autoconvert, "Set this parameter to enable fastmap automatically on images without a fastmap.");
1504#endif
1505MODULE_VERSION(__stringify(UBI_VERSION));
1506MODULE_DESCRIPTION("UBI - Unsorted Block Images");
1507MODULE_AUTHOR("Artem Bityutskiy");
1508MODULE_LICENSE("GPL");
1509