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