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