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