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