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