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 static void dev_release(struct device *dev) 267 { 268 struct ubi_device *ubi = container_of(dev, struct ubi_device, dev); 269 270 kfree(ubi); 271 } 272 273 /** 274 * ubi_sysfs_init - initialize sysfs for an UBI device. 275 * @ubi: UBI device description object 276 * 277 * This function returns zero in case of success and a negative error code in 278 * case of failure. 279 */ 280 static int ubi_sysfs_init(struct ubi_device *ubi) 281 { 282 int err; 283 284 ubi->dev.release = dev_release; 285 ubi->dev.devt = ubi->cdev.dev; 286 ubi->dev.class = ubi_class; 287 dev_set_name(&ubi->dev, UBI_NAME_STR"%d", ubi->ubi_num); 288 err = device_register(&ubi->dev); 289 if (err) 290 return err; 291 292 err = device_create_file(&ubi->dev, &dev_eraseblock_size); 293 if (err) 294 return err; 295 err = device_create_file(&ubi->dev, &dev_avail_eraseblocks); 296 if (err) 297 return err; 298 err = device_create_file(&ubi->dev, &dev_total_eraseblocks); 299 if (err) 300 return err; 301 err = device_create_file(&ubi->dev, &dev_volumes_count); 302 if (err) 303 return err; 304 err = device_create_file(&ubi->dev, &dev_max_ec); 305 if (err) 306 return err; 307 err = device_create_file(&ubi->dev, &dev_reserved_for_bad); 308 if (err) 309 return err; 310 err = device_create_file(&ubi->dev, &dev_bad_peb_count); 311 if (err) 312 return err; 313 err = device_create_file(&ubi->dev, &dev_max_vol_count); 314 if (err) 315 return err; 316 err = device_create_file(&ubi->dev, &dev_min_io_size); 317 if (err) 318 return err; 319 err = device_create_file(&ubi->dev, &dev_bgt_enabled); 320 if (err) 321 return err; 322 err = device_create_file(&ubi->dev, &dev_mtd_num); 323 return err; 324 } 325 326 /** 327 * ubi_sysfs_close - close sysfs for an UBI device. 328 * @ubi: UBI device description object 329 */ 330 static void ubi_sysfs_close(struct ubi_device *ubi) 331 { 332 device_remove_file(&ubi->dev, &dev_mtd_num); 333 device_remove_file(&ubi->dev, &dev_bgt_enabled); 334 device_remove_file(&ubi->dev, &dev_min_io_size); 335 device_remove_file(&ubi->dev, &dev_max_vol_count); 336 device_remove_file(&ubi->dev, &dev_bad_peb_count); 337 device_remove_file(&ubi->dev, &dev_reserved_for_bad); 338 device_remove_file(&ubi->dev, &dev_max_ec); 339 device_remove_file(&ubi->dev, &dev_volumes_count); 340 device_remove_file(&ubi->dev, &dev_total_eraseblocks); 341 device_remove_file(&ubi->dev, &dev_avail_eraseblocks); 342 device_remove_file(&ubi->dev, &dev_eraseblock_size); 343 device_unregister(&ubi->dev); 344 } 345 346 /** 347 * kill_volumes - destroy all volumes. 348 * @ubi: UBI device description object 349 */ 350 static void kill_volumes(struct ubi_device *ubi) 351 { 352 int i; 353 354 for (i = 0; i < ubi->vtbl_slots; i++) 355 if (ubi->volumes[i]) 356 ubi_free_volume(ubi, ubi->volumes[i]); 357 } 358 359 /** 360 * free_user_volumes - free all user volumes. 361 * @ubi: UBI device description object 362 * 363 * Normally the volumes are freed at the release function of the volume device 364 * objects. However, on error paths the volumes have to be freed before the 365 * device objects have been initialized. 366 */ 367 static void free_user_volumes(struct ubi_device *ubi) 368 { 369 int i; 370 371 for (i = 0; i < ubi->vtbl_slots; i++) 372 if (ubi->volumes[i]) { 373 kfree(ubi->volumes[i]->eba_tbl); 374 kfree(ubi->volumes[i]); 375 } 376 } 377 378 /** 379 * uif_init - initialize user interfaces for an UBI device. 380 * @ubi: UBI device description object 381 * 382 * This function returns zero in case of success and a negative error code in 383 * case of failure. Note, this function destroys all volumes if it failes. 384 */ 385 static int uif_init(struct ubi_device *ubi) 386 { 387 int i, err; 388 dev_t dev; 389 390 sprintf(ubi->ubi_name, UBI_NAME_STR "%d", ubi->ubi_num); 391 392 /* 393 * Major numbers for the UBI character devices are allocated 394 * dynamically. Major numbers of volume character devices are 395 * equivalent to ones of the corresponding UBI character device. Minor 396 * numbers of UBI character devices are 0, while minor numbers of 397 * volume character devices start from 1. Thus, we allocate one major 398 * number and ubi->vtbl_slots + 1 minor numbers. 399 */ 400 err = alloc_chrdev_region(&dev, 0, ubi->vtbl_slots + 1, ubi->ubi_name); 401 if (err) { 402 ubi_err("cannot register UBI character devices"); 403 return err; 404 } 405 406 ubi_assert(MINOR(dev) == 0); 407 cdev_init(&ubi->cdev, &ubi_cdev_operations); 408 dbg_gen("%s major is %u", ubi->ubi_name, MAJOR(dev)); 409 ubi->cdev.owner = THIS_MODULE; 410 411 err = cdev_add(&ubi->cdev, dev, 1); 412 if (err) { 413 ubi_err("cannot add character device"); 414 goto out_unreg; 415 } 416 417 err = ubi_sysfs_init(ubi); 418 if (err) 419 goto out_sysfs; 420 421 for (i = 0; i < ubi->vtbl_slots; i++) 422 if (ubi->volumes[i]) { 423 err = ubi_add_volume(ubi, ubi->volumes[i]); 424 if (err) { 425 ubi_err("cannot add volume %d", i); 426 goto out_volumes; 427 } 428 } 429 430 return 0; 431 432 out_volumes: 433 kill_volumes(ubi); 434 out_sysfs: 435 ubi_sysfs_close(ubi); 436 cdev_del(&ubi->cdev); 437 out_unreg: 438 unregister_chrdev_region(ubi->cdev.dev, ubi->vtbl_slots + 1); 439 ubi_err("cannot initialize UBI %s, error %d", ubi->ubi_name, err); 440 return err; 441 } 442 443 /** 444 * uif_close - close user interfaces for an UBI device. 445 * @ubi: UBI device description object 446 * 447 * Note, since this function un-registers UBI volume device objects (@vol->dev), 448 * the memory allocated voe the volumes is freed as well (in the release 449 * function). 450 */ 451 static void uif_close(struct ubi_device *ubi) 452 { 453 kill_volumes(ubi); 454 ubi_sysfs_close(ubi); 455 cdev_del(&ubi->cdev); 456 unregister_chrdev_region(ubi->cdev.dev, ubi->vtbl_slots + 1); 457 } 458 459 /** 460 * free_internal_volumes - free internal volumes. 461 * @ubi: UBI device description object 462 */ 463 static void free_internal_volumes(struct ubi_device *ubi) 464 { 465 int i; 466 467 for (i = ubi->vtbl_slots; 468 i < ubi->vtbl_slots + UBI_INT_VOL_COUNT; i++) { 469 kfree(ubi->volumes[i]->eba_tbl); 470 kfree(ubi->volumes[i]); 471 } 472 } 473 474 /** 475 * attach_by_scanning - attach an MTD device using scanning method. 476 * @ubi: UBI device descriptor 477 * 478 * This function returns zero in case of success and a negative error code in 479 * case of failure. 480 * 481 * Note, currently this is the only method to attach UBI devices. Hopefully in 482 * the future we'll have more scalable attaching methods and avoid full media 483 * scanning. But even in this case scanning will be needed as a fall-back 484 * attaching method if there are some on-flash table corruptions. 485 */ 486 static int attach_by_scanning(struct ubi_device *ubi) 487 { 488 int err; 489 struct ubi_scan_info *si; 490 491 si = ubi_scan(ubi); 492 if (IS_ERR(si)) 493 return PTR_ERR(si); 494 495 ubi->bad_peb_count = si->bad_peb_count; 496 ubi->good_peb_count = ubi->peb_count - ubi->bad_peb_count; 497 ubi->max_ec = si->max_ec; 498 ubi->mean_ec = si->mean_ec; 499 500 err = ubi_read_volume_table(ubi, si); 501 if (err) 502 goto out_si; 503 504 err = ubi_wl_init_scan(ubi, si); 505 if (err) 506 goto out_vtbl; 507 508 err = ubi_eba_init_scan(ubi, si); 509 if (err) 510 goto out_wl; 511 512 ubi_scan_destroy_si(si); 513 return 0; 514 515 out_wl: 516 ubi_wl_close(ubi); 517 out_vtbl: 518 free_internal_volumes(ubi); 519 vfree(ubi->vtbl); 520 out_si: 521 ubi_scan_destroy_si(si); 522 return err; 523 } 524 525 /** 526 * io_init - initialize I/O sub-system for a given UBI device. 527 * @ubi: UBI device description object 528 * 529 * If @ubi->vid_hdr_offset or @ubi->leb_start is zero, default offsets are 530 * assumed: 531 * o EC header is always at offset zero - this cannot be changed; 532 * o VID header starts just after the EC header at the closest address 533 * aligned to @io->hdrs_min_io_size; 534 * o data starts just after the VID header at the closest address aligned to 535 * @io->min_io_size 536 * 537 * This function returns zero in case of success and a negative error code in 538 * case of failure. 539 */ 540 static int io_init(struct ubi_device *ubi) 541 { 542 if (ubi->mtd->numeraseregions != 0) { 543 /* 544 * Some flashes have several erase regions. Different regions 545 * may have different eraseblock size and other 546 * characteristics. It looks like mostly multi-region flashes 547 * have one "main" region and one or more small regions to 548 * store boot loader code or boot parameters or whatever. I 549 * guess we should just pick the largest region. But this is 550 * not implemented. 551 */ 552 ubi_err("multiple regions, not implemented"); 553 return -EINVAL; 554 } 555 556 if (ubi->vid_hdr_offset < 0) 557 return -EINVAL; 558 559 /* 560 * Note, in this implementation we support MTD devices with 0x7FFFFFFF 561 * physical eraseblocks maximum. 562 */ 563 564 ubi->peb_size = ubi->mtd->erasesize; 565 ubi->peb_count = mtd_div_by_eb(ubi->mtd->size, ubi->mtd); 566 ubi->flash_size = ubi->mtd->size; 567 568 if (ubi->mtd->block_isbad && ubi->mtd->block_markbad) 569 ubi->bad_allowed = 1; 570 571 ubi->min_io_size = ubi->mtd->writesize; 572 ubi->hdrs_min_io_size = ubi->mtd->writesize >> ubi->mtd->subpage_sft; 573 574 /* 575 * Make sure minimal I/O unit is power of 2. Note, there is no 576 * fundamental reason for this assumption. It is just an optimization 577 * which allows us to avoid costly division operations. 578 */ 579 if (!is_power_of_2(ubi->min_io_size)) { 580 ubi_err("min. I/O unit (%d) is not power of 2", 581 ubi->min_io_size); 582 return -EINVAL; 583 } 584 585 ubi_assert(ubi->hdrs_min_io_size > 0); 586 ubi_assert(ubi->hdrs_min_io_size <= ubi->min_io_size); 587 ubi_assert(ubi->min_io_size % ubi->hdrs_min_io_size == 0); 588 589 /* Calculate default aligned sizes of EC and VID headers */ 590 ubi->ec_hdr_alsize = ALIGN(UBI_EC_HDR_SIZE, ubi->hdrs_min_io_size); 591 ubi->vid_hdr_alsize = ALIGN(UBI_VID_HDR_SIZE, ubi->hdrs_min_io_size); 592 593 dbg_msg("min_io_size %d", ubi->min_io_size); 594 dbg_msg("hdrs_min_io_size %d", ubi->hdrs_min_io_size); 595 dbg_msg("ec_hdr_alsize %d", ubi->ec_hdr_alsize); 596 dbg_msg("vid_hdr_alsize %d", ubi->vid_hdr_alsize); 597 598 if (ubi->vid_hdr_offset == 0) 599 /* Default offset */ 600 ubi->vid_hdr_offset = ubi->vid_hdr_aloffset = 601 ubi->ec_hdr_alsize; 602 else { 603 ubi->vid_hdr_aloffset = ubi->vid_hdr_offset & 604 ~(ubi->hdrs_min_io_size - 1); 605 ubi->vid_hdr_shift = ubi->vid_hdr_offset - 606 ubi->vid_hdr_aloffset; 607 } 608 609 /* Similar for the data offset */ 610 ubi->leb_start = ubi->vid_hdr_offset + UBI_EC_HDR_SIZE; 611 ubi->leb_start = ALIGN(ubi->leb_start, ubi->min_io_size); 612 613 dbg_msg("vid_hdr_offset %d", ubi->vid_hdr_offset); 614 dbg_msg("vid_hdr_aloffset %d", ubi->vid_hdr_aloffset); 615 dbg_msg("vid_hdr_shift %d", ubi->vid_hdr_shift); 616 dbg_msg("leb_start %d", ubi->leb_start); 617 618 /* The shift must be aligned to 32-bit boundary */ 619 if (ubi->vid_hdr_shift % 4) { 620 ubi_err("unaligned VID header shift %d", 621 ubi->vid_hdr_shift); 622 return -EINVAL; 623 } 624 625 /* Check sanity */ 626 if (ubi->vid_hdr_offset < UBI_EC_HDR_SIZE || 627 ubi->leb_start < ubi->vid_hdr_offset + UBI_VID_HDR_SIZE || 628 ubi->leb_start > ubi->peb_size - UBI_VID_HDR_SIZE || 629 ubi->leb_start & (ubi->min_io_size - 1)) { 630 ubi_err("bad VID header (%d) or data offsets (%d)", 631 ubi->vid_hdr_offset, ubi->leb_start); 632 return -EINVAL; 633 } 634 635 /* 636 * It may happen that EC and VID headers are situated in one minimal 637 * I/O unit. In this case we can only accept this UBI image in 638 * read-only mode. 639 */ 640 if (ubi->vid_hdr_offset + UBI_VID_HDR_SIZE <= ubi->hdrs_min_io_size) { 641 ubi_warn("EC and VID headers are in the same minimal I/O unit, " 642 "switch to read-only mode"); 643 ubi->ro_mode = 1; 644 } 645 646 ubi->leb_size = ubi->peb_size - ubi->leb_start; 647 648 if (!(ubi->mtd->flags & MTD_WRITEABLE)) { 649 ubi_msg("MTD device %d is write-protected, attach in " 650 "read-only mode", ubi->mtd->index); 651 ubi->ro_mode = 1; 652 } 653 654 ubi_msg("physical eraseblock size: %d bytes (%d KiB)", 655 ubi->peb_size, ubi->peb_size >> 10); 656 ubi_msg("logical eraseblock size: %d bytes", ubi->leb_size); 657 ubi_msg("smallest flash I/O unit: %d", ubi->min_io_size); 658 if (ubi->hdrs_min_io_size != ubi->min_io_size) 659 ubi_msg("sub-page size: %d", 660 ubi->hdrs_min_io_size); 661 ubi_msg("VID header offset: %d (aligned %d)", 662 ubi->vid_hdr_offset, ubi->vid_hdr_aloffset); 663 ubi_msg("data offset: %d", ubi->leb_start); 664 665 /* 666 * Note, ideally, we have to initialize ubi->bad_peb_count here. But 667 * unfortunately, MTD does not provide this information. We should loop 668 * over all physical eraseblocks and invoke mtd->block_is_bad() for 669 * each physical eraseblock. So, we skip ubi->bad_peb_count 670 * uninitialized and initialize it after scanning. 671 */ 672 673 return 0; 674 } 675 676 /** 677 * autoresize - re-size the volume which has the "auto-resize" flag set. 678 * @ubi: UBI device description object 679 * @vol_id: ID of the volume to re-size 680 * 681 * This function re-sizes the volume marked by the @UBI_VTBL_AUTORESIZE_FLG in 682 * the volume table to the largest possible size. See comments in ubi-header.h 683 * for more description of the flag. Returns zero in case of success and a 684 * negative error code in case of failure. 685 */ 686 static int autoresize(struct ubi_device *ubi, int vol_id) 687 { 688 struct ubi_volume_desc desc; 689 struct ubi_volume *vol = ubi->volumes[vol_id]; 690 int err, old_reserved_pebs = vol->reserved_pebs; 691 692 /* 693 * Clear the auto-resize flag in the volume in-memory copy of the 694 * volume table, and 'ubi_resize_volume()' will propagate this change 695 * to the flash. 696 */ 697 ubi->vtbl[vol_id].flags &= ~UBI_VTBL_AUTORESIZE_FLG; 698 699 if (ubi->avail_pebs == 0) { 700 struct ubi_vtbl_record vtbl_rec; 701 702 /* 703 * No available PEBs to re-size the volume, clear the flag on 704 * flash and exit. 705 */ 706 memcpy(&vtbl_rec, &ubi->vtbl[vol_id], 707 sizeof(struct ubi_vtbl_record)); 708 err = ubi_change_vtbl_record(ubi, vol_id, &vtbl_rec); 709 if (err) 710 ubi_err("cannot clean auto-resize flag for volume %d", 711 vol_id); 712 } else { 713 desc.vol = vol; 714 err = ubi_resize_volume(&desc, 715 old_reserved_pebs + ubi->avail_pebs); 716 if (err) 717 ubi_err("cannot auto-resize volume %d", vol_id); 718 } 719 720 if (err) 721 return err; 722 723 ubi_msg("volume %d (\"%s\") re-sized from %d to %d LEBs", vol_id, 724 vol->name, old_reserved_pebs, vol->reserved_pebs); 725 return 0; 726 } 727 728 /** 729 * ubi_attach_mtd_dev - attach an MTD device. 730 * @mtd: MTD device description object 731 * @ubi_num: number to assign to the new UBI device 732 * @vid_hdr_offset: VID header offset 733 * 734 * This function attaches MTD device @mtd_dev to UBI and assign @ubi_num number 735 * to the newly created UBI device, unless @ubi_num is %UBI_DEV_NUM_AUTO, in 736 * which case this function finds a vacant device number and assigns it 737 * automatically. Returns the new UBI device number in case of success and a 738 * negative error code in case of failure. 739 * 740 * Note, the invocations of this function has to be serialized by the 741 * @ubi_devices_mutex. 742 */ 743 int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num, int vid_hdr_offset) 744 { 745 struct ubi_device *ubi; 746 int i, err, do_free = 1; 747 748 /* 749 * Check if we already have the same MTD device attached. 750 * 751 * Note, this function assumes that UBI devices creations and deletions 752 * are serialized, so it does not take the &ubi_devices_lock. 753 */ 754 for (i = 0; i < UBI_MAX_DEVICES; i++) { 755 ubi = ubi_devices[i]; 756 if (ubi && mtd->index == ubi->mtd->index) { 757 dbg_err("mtd%d is already attached to ubi%d", 758 mtd->index, i); 759 return -EEXIST; 760 } 761 } 762 763 /* 764 * Make sure this MTD device is not emulated on top of an UBI volume 765 * already. Well, generally this recursion works fine, but there are 766 * different problems like the UBI module takes a reference to itself 767 * by attaching (and thus, opening) the emulated MTD device. This 768 * results in inability to unload the module. And in general it makes 769 * no sense to attach emulated MTD devices, so we prohibit this. 770 */ 771 if (mtd->type == MTD_UBIVOLUME) { 772 ubi_err("refuse attaching mtd%d - it is already emulated on " 773 "top of UBI", mtd->index); 774 return -EINVAL; 775 } 776 777 if (ubi_num == UBI_DEV_NUM_AUTO) { 778 /* Search for an empty slot in the @ubi_devices array */ 779 for (ubi_num = 0; ubi_num < UBI_MAX_DEVICES; ubi_num++) 780 if (!ubi_devices[ubi_num]) 781 break; 782 if (ubi_num == UBI_MAX_DEVICES) { 783 dbg_err("only %d UBI devices may be created", 784 UBI_MAX_DEVICES); 785 return -ENFILE; 786 } 787 } else { 788 if (ubi_num >= UBI_MAX_DEVICES) 789 return -EINVAL; 790 791 /* Make sure ubi_num is not busy */ 792 if (ubi_devices[ubi_num]) { 793 dbg_err("ubi%d already exists", ubi_num); 794 return -EEXIST; 795 } 796 } 797 798 ubi = kzalloc(sizeof(struct ubi_device), GFP_KERNEL); 799 if (!ubi) 800 return -ENOMEM; 801 802 ubi->mtd = mtd; 803 ubi->ubi_num = ubi_num; 804 ubi->vid_hdr_offset = vid_hdr_offset; 805 ubi->autoresize_vol_id = -1; 806 807 mutex_init(&ubi->buf_mutex); 808 mutex_init(&ubi->ckvol_mutex); 809 mutex_init(&ubi->mult_mutex); 810 mutex_init(&ubi->volumes_mutex); 811 spin_lock_init(&ubi->volumes_lock); 812 813 ubi_msg("attaching mtd%d to ubi%d", mtd->index, ubi_num); 814 815 err = io_init(ubi); 816 if (err) 817 goto out_free; 818 819 err = -ENOMEM; 820 ubi->peb_buf1 = vmalloc(ubi->peb_size); 821 if (!ubi->peb_buf1) 822 goto out_free; 823 824 ubi->peb_buf2 = vmalloc(ubi->peb_size); 825 if (!ubi->peb_buf2) 826 goto out_free; 827 828 #ifdef CONFIG_MTD_UBI_DEBUG 829 mutex_init(&ubi->dbg_buf_mutex); 830 ubi->dbg_peb_buf = vmalloc(ubi->peb_size); 831 if (!ubi->dbg_peb_buf) 832 goto out_free; 833 #endif 834 835 err = attach_by_scanning(ubi); 836 if (err) { 837 dbg_err("failed to attach by scanning, error %d", err); 838 goto out_free; 839 } 840 841 if (ubi->autoresize_vol_id != -1) { 842 err = autoresize(ubi, ubi->autoresize_vol_id); 843 if (err) 844 goto out_detach; 845 } 846 847 err = uif_init(ubi); 848 if (err) 849 goto out_nofree; 850 851 ubi->bgt_thread = kthread_create(ubi_thread, ubi, ubi->bgt_name); 852 if (IS_ERR(ubi->bgt_thread)) { 853 err = PTR_ERR(ubi->bgt_thread); 854 ubi_err("cannot spawn \"%s\", error %d", ubi->bgt_name, 855 err); 856 goto out_uif; 857 } 858 859 ubi_msg("attached mtd%d to ubi%d", mtd->index, ubi_num); 860 ubi_msg("MTD device name: \"%s\"", mtd->name); 861 ubi_msg("MTD device size: %llu MiB", ubi->flash_size >> 20); 862 ubi_msg("number of good PEBs: %d", ubi->good_peb_count); 863 ubi_msg("number of bad PEBs: %d", ubi->bad_peb_count); 864 ubi_msg("max. allowed volumes: %d", ubi->vtbl_slots); 865 ubi_msg("wear-leveling threshold: %d", CONFIG_MTD_UBI_WL_THRESHOLD); 866 ubi_msg("number of internal volumes: %d", UBI_INT_VOL_COUNT); 867 ubi_msg("number of user volumes: %d", 868 ubi->vol_count - UBI_INT_VOL_COUNT); 869 ubi_msg("available PEBs: %d", ubi->avail_pebs); 870 ubi_msg("total number of reserved PEBs: %d", ubi->rsvd_pebs); 871 ubi_msg("number of PEBs reserved for bad PEB handling: %d", 872 ubi->beb_rsvd_pebs); 873 ubi_msg("max/mean erase counter: %d/%d", ubi->max_ec, ubi->mean_ec); 874 875 if (!DBG_DISABLE_BGT) 876 ubi->thread_enabled = 1; 877 wake_up_process(ubi->bgt_thread); 878 879 ubi_devices[ubi_num] = ubi; 880 return ubi_num; 881 882 out_uif: 883 uif_close(ubi); 884 out_nofree: 885 do_free = 0; 886 out_detach: 887 ubi_wl_close(ubi); 888 if (do_free) 889 free_user_volumes(ubi); 890 free_internal_volumes(ubi); 891 vfree(ubi->vtbl); 892 out_free: 893 vfree(ubi->peb_buf1); 894 vfree(ubi->peb_buf2); 895 #ifdef CONFIG_MTD_UBI_DEBUG 896 vfree(ubi->dbg_peb_buf); 897 #endif 898 kfree(ubi); 899 return err; 900 } 901 902 /** 903 * ubi_detach_mtd_dev - detach an MTD device. 904 * @ubi_num: UBI device number to detach from 905 * @anyway: detach MTD even if device reference count is not zero 906 * 907 * This function destroys an UBI device number @ubi_num and detaches the 908 * underlying MTD device. Returns zero in case of success and %-EBUSY if the 909 * UBI device is busy and cannot be destroyed, and %-EINVAL if it does not 910 * exist. 911 * 912 * Note, the invocations of this function has to be serialized by the 913 * @ubi_devices_mutex. 914 */ 915 int ubi_detach_mtd_dev(int ubi_num, int anyway) 916 { 917 struct ubi_device *ubi; 918 919 if (ubi_num < 0 || ubi_num >= UBI_MAX_DEVICES) 920 return -EINVAL; 921 922 spin_lock(&ubi_devices_lock); 923 ubi = ubi_devices[ubi_num]; 924 if (!ubi) { 925 spin_unlock(&ubi_devices_lock); 926 return -EINVAL; 927 } 928 929 if (ubi->ref_count) { 930 if (!anyway) { 931 spin_unlock(&ubi_devices_lock); 932 return -EBUSY; 933 } 934 /* This may only happen if there is a bug */ 935 ubi_err("%s reference count %d, destroy anyway", 936 ubi->ubi_name, ubi->ref_count); 937 } 938 ubi_devices[ubi_num] = NULL; 939 spin_unlock(&ubi_devices_lock); 940 941 ubi_assert(ubi_num == ubi->ubi_num); 942 dbg_msg("detaching mtd%d from ubi%d", ubi->mtd->index, ubi_num); 943 944 /* 945 * Before freeing anything, we have to stop the background thread to 946 * prevent it from doing anything on this device while we are freeing. 947 */ 948 if (ubi->bgt_thread) 949 kthread_stop(ubi->bgt_thread); 950 951 /* 952 * Get a reference to the device in order to prevent 'dev_release()' 953 * from freeing @ubi object. 954 */ 955 get_device(&ubi->dev); 956 957 uif_close(ubi); 958 ubi_wl_close(ubi); 959 free_internal_volumes(ubi); 960 vfree(ubi->vtbl); 961 put_mtd_device(ubi->mtd); 962 vfree(ubi->peb_buf1); 963 vfree(ubi->peb_buf2); 964 #ifdef CONFIG_MTD_UBI_DEBUG 965 vfree(ubi->dbg_peb_buf); 966 #endif 967 ubi_msg("mtd%d is detached from ubi%d", ubi->mtd->index, ubi->ubi_num); 968 put_device(&ubi->dev); 969 return 0; 970 } 971 972 /** 973 * find_mtd_device - open an MTD device by its name or number. 974 * @mtd_dev: name or number of the device 975 * 976 * This function tries to open and MTD device described by @mtd_dev string, 977 * which is first treated as an ASCII number, and if it is not true, it is 978 * treated as MTD device name. Returns MTD device description object in case of 979 * success and a negative error code in case of failure. 980 */ 981 static struct mtd_info * __init open_mtd_device(const char *mtd_dev) 982 { 983 struct mtd_info *mtd; 984 int mtd_num; 985 char *endp; 986 987 mtd_num = simple_strtoul(mtd_dev, &endp, 0); 988 if (*endp != '\0' || mtd_dev == endp) { 989 /* 990 * This does not look like an ASCII integer, probably this is 991 * MTD device name. 992 */ 993 mtd = get_mtd_device_nm(mtd_dev); 994 } else 995 mtd = get_mtd_device(NULL, mtd_num); 996 997 return mtd; 998 } 999 1000 static int __init ubi_init(void) 1001 { 1002 int err, i, k; 1003 1004 /* Ensure that EC and VID headers have correct size */ 1005 BUILD_BUG_ON(sizeof(struct ubi_ec_hdr) != 64); 1006 BUILD_BUG_ON(sizeof(struct ubi_vid_hdr) != 64); 1007 1008 if (mtd_devs > UBI_MAX_DEVICES) { 1009 ubi_err("too many MTD devices, maximum is %d", UBI_MAX_DEVICES); 1010 return -EINVAL; 1011 } 1012 1013 /* Create base sysfs directory and sysfs files */ 1014 ubi_class = class_create(THIS_MODULE, UBI_NAME_STR); 1015 if (IS_ERR(ubi_class)) { 1016 err = PTR_ERR(ubi_class); 1017 ubi_err("cannot create UBI class"); 1018 goto out; 1019 } 1020 1021 err = class_create_file(ubi_class, &ubi_version); 1022 if (err) { 1023 ubi_err("cannot create sysfs file"); 1024 goto out_class; 1025 } 1026 1027 err = misc_register(&ubi_ctrl_cdev); 1028 if (err) { 1029 ubi_err("cannot register device"); 1030 goto out_version; 1031 } 1032 1033 ubi_wl_entry_slab = kmem_cache_create("ubi_wl_entry_slab", 1034 sizeof(struct ubi_wl_entry), 1035 0, 0, NULL); 1036 if (!ubi_wl_entry_slab) 1037 goto out_dev_unreg; 1038 1039 /* Attach MTD devices */ 1040 for (i = 0; i < mtd_devs; i++) { 1041 struct mtd_dev_param *p = &mtd_dev_param[i]; 1042 struct mtd_info *mtd; 1043 1044 cond_resched(); 1045 1046 mtd = open_mtd_device(p->name); 1047 if (IS_ERR(mtd)) { 1048 err = PTR_ERR(mtd); 1049 goto out_detach; 1050 } 1051 1052 mutex_lock(&ubi_devices_mutex); 1053 err = ubi_attach_mtd_dev(mtd, UBI_DEV_NUM_AUTO, 1054 p->vid_hdr_offs); 1055 mutex_unlock(&ubi_devices_mutex); 1056 if (err < 0) { 1057 put_mtd_device(mtd); 1058 ubi_err("cannot attach mtd%d", mtd->index); 1059 goto out_detach; 1060 } 1061 } 1062 1063 return 0; 1064 1065 out_detach: 1066 for (k = 0; k < i; k++) 1067 if (ubi_devices[k]) { 1068 mutex_lock(&ubi_devices_mutex); 1069 ubi_detach_mtd_dev(ubi_devices[k]->ubi_num, 1); 1070 mutex_unlock(&ubi_devices_mutex); 1071 } 1072 kmem_cache_destroy(ubi_wl_entry_slab); 1073 out_dev_unreg: 1074 misc_deregister(&ubi_ctrl_cdev); 1075 out_version: 1076 class_remove_file(ubi_class, &ubi_version); 1077 out_class: 1078 class_destroy(ubi_class); 1079 out: 1080 ubi_err("UBI error: cannot initialize UBI, error %d", err); 1081 return err; 1082 } 1083 module_init(ubi_init); 1084 1085 static void __exit ubi_exit(void) 1086 { 1087 int i; 1088 1089 for (i = 0; i < UBI_MAX_DEVICES; i++) 1090 if (ubi_devices[i]) { 1091 mutex_lock(&ubi_devices_mutex); 1092 ubi_detach_mtd_dev(ubi_devices[i]->ubi_num, 1); 1093 mutex_unlock(&ubi_devices_mutex); 1094 } 1095 kmem_cache_destroy(ubi_wl_entry_slab); 1096 misc_deregister(&ubi_ctrl_cdev); 1097 class_remove_file(ubi_class, &ubi_version); 1098 class_destroy(ubi_class); 1099 } 1100 module_exit(ubi_exit); 1101 1102 /** 1103 * bytes_str_to_int - convert a number of bytes string into an integer. 1104 * @str: the string to convert 1105 * 1106 * This function returns positive resulting integer in case of success and a 1107 * negative error code in case of failure. 1108 */ 1109 static int __init bytes_str_to_int(const char *str) 1110 { 1111 char *endp; 1112 unsigned long result; 1113 1114 result = simple_strtoul(str, &endp, 0); 1115 if (str == endp || result < 0) { 1116 printk(KERN_ERR "UBI error: incorrect bytes count: \"%s\"\n", 1117 str); 1118 return -EINVAL; 1119 } 1120 1121 switch (*endp) { 1122 case 'G': 1123 result *= 1024; 1124 case 'M': 1125 result *= 1024; 1126 case 'K': 1127 result *= 1024; 1128 if (endp[1] == 'i' && endp[2] == 'B') 1129 endp += 2; 1130 case '\0': 1131 break; 1132 default: 1133 printk(KERN_ERR "UBI error: incorrect bytes count: \"%s\"\n", 1134 str); 1135 return -EINVAL; 1136 } 1137 1138 return result; 1139 } 1140 1141 /** 1142 * ubi_mtd_param_parse - parse the 'mtd=' UBI parameter. 1143 * @val: the parameter value to parse 1144 * @kp: not used 1145 * 1146 * This function returns zero in case of success and a negative error code in 1147 * case of error. 1148 */ 1149 static int __init ubi_mtd_param_parse(const char *val, struct kernel_param *kp) 1150 { 1151 int i, len; 1152 struct mtd_dev_param *p; 1153 char buf[MTD_PARAM_LEN_MAX]; 1154 char *pbuf = &buf[0]; 1155 char *tokens[2] = {NULL, NULL}; 1156 1157 if (!val) 1158 return -EINVAL; 1159 1160 if (mtd_devs == UBI_MAX_DEVICES) { 1161 printk(KERN_ERR "UBI error: too many parameters, max. is %d\n", 1162 UBI_MAX_DEVICES); 1163 return -EINVAL; 1164 } 1165 1166 len = strnlen(val, MTD_PARAM_LEN_MAX); 1167 if (len == MTD_PARAM_LEN_MAX) { 1168 printk(KERN_ERR "UBI error: parameter \"%s\" is too long, " 1169 "max. is %d\n", val, MTD_PARAM_LEN_MAX); 1170 return -EINVAL; 1171 } 1172 1173 if (len == 0) { 1174 printk(KERN_WARNING "UBI warning: empty 'mtd=' parameter - " 1175 "ignored\n"); 1176 return 0; 1177 } 1178 1179 strcpy(buf, val); 1180 1181 /* Get rid of the final newline */ 1182 if (buf[len - 1] == '\n') 1183 buf[len - 1] = '\0'; 1184 1185 for (i = 0; i < 2; i++) 1186 tokens[i] = strsep(&pbuf, ","); 1187 1188 if (pbuf) { 1189 printk(KERN_ERR "UBI error: too many arguments at \"%s\"\n", 1190 val); 1191 return -EINVAL; 1192 } 1193 1194 p = &mtd_dev_param[mtd_devs]; 1195 strcpy(&p->name[0], tokens[0]); 1196 1197 if (tokens[1]) 1198 p->vid_hdr_offs = bytes_str_to_int(tokens[1]); 1199 1200 if (p->vid_hdr_offs < 0) 1201 return p->vid_hdr_offs; 1202 1203 mtd_devs += 1; 1204 return 0; 1205 } 1206 1207 module_param_call(mtd, ubi_mtd_param_parse, NULL, NULL, 000); 1208 MODULE_PARM_DESC(mtd, "MTD devices to attach. Parameter format: " 1209 "mtd=<name|num>[,<vid_hdr_offs>].\n" 1210 "Multiple \"mtd\" parameters may be specified.\n" 1211 "MTD devices may be specified by their number or name.\n" 1212 "Optional \"vid_hdr_offs\" parameter specifies UBI VID " 1213 "header position and data starting position to be used " 1214 "by UBI.\n" 1215 "Example: mtd=content,1984 mtd=4 - attach MTD device" 1216 "with name \"content\" using VID header offset 1984, and " 1217 "MTD device number 4 with default VID header offset."); 1218 1219 MODULE_VERSION(__stringify(UBI_VERSION)); 1220 MODULE_DESCRIPTION("UBI - Unsorted Block Images"); 1221 MODULE_AUTHOR("Artem Bityutskiy"); 1222 MODULE_LICENSE("GPL"); 1223