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