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