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