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