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