Merge tag 'arc-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/vgupta/arc
[deliverable/linux.git] / drivers / mtd / ubi / build.c
CommitLineData
801c135c
AB
1/*
2 * Copyright (c) International Business Machines Corp., 2006
3 * Copyright (c) Nokia Corporation, 2007
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
13 * the GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 *
19 * Author: Artem Bityutskiy (Битюцкий Артём),
20 * Frank Haverkamp
21 */
22
23/*
9f961b57
AB
24 * This file includes UBI initialization and building of UBI devices.
25 *
26 * When UBI is initialized, it attaches all the MTD devices specified as the
27 * module load parameters or the kernel boot parameters. If MTD devices were
28 * specified, UBI does not attach any MTD device, but it is possible to do
29 * later using the "UBI control device".
801c135c
AB
30 */
31
32#include <linux/err.h>
33#include <linux/module.h>
34#include <linux/moduleparam.h>
35#include <linux/stringify.h>
f9b0080e 36#include <linux/namei.h>
801c135c 37#include <linux/stat.h>
9f961b57 38#include <linux/miscdevice.h>
ba4087e9 39#include <linux/mtd/partitions.h>
7753f169 40#include <linux/log2.h>
cdfa788a 41#include <linux/kthread.h>
774b1382 42#include <linux/kernel.h>
5a0e3ad6 43#include <linux/slab.h>
f83c3838 44#include <linux/major.h>
801c135c
AB
45#include "ubi.h"
46
47/* Maximum length of the 'mtd=' parameter */
48#define MTD_PARAM_LEN_MAX 64
49
5993f9b7 50/* Maximum number of comma-separated items in the 'mtd=' parameter */
83ff59a0 51#define MTD_PARAM_MAX_COUNT 4
5993f9b7 52
d2f588f9
RG
53/* Maximum value for the number of bad PEBs per 1024 PEBs */
54#define MAX_MTD_UBI_BEB_LIMIT 768
55
af7ad7a0
MKB
56#ifdef CONFIG_MTD_UBI_MODULE
57#define ubi_is_module() 1
58#else
59#define ubi_is_module() 0
60#endif
61
801c135c
AB
62/**
63 * struct mtd_dev_param - MTD device parameter description data structure.
f9b0080e
AB
64 * @name: MTD character device node path, MTD device name, or MTD device number
65 * string
801c135c 66 * @vid_hdr_offs: VID header offset
edac493d 67 * @max_beb_per1024: maximum expected number of bad PEBs per 1024 PEBs
801c135c 68 */
9c9ec147 69struct mtd_dev_param {
801c135c 70 char name[MTD_PARAM_LEN_MAX];
83ff59a0 71 int ubi_num;
801c135c 72 int vid_hdr_offs;
edac493d 73 int max_beb_per1024;
801c135c
AB
74};
75
76/* Numbers of elements set in the @mtd_dev_param array */
9e0c7ef3 77static int __initdata mtd_devs;
801c135c
AB
78
79/* MTD devices specification parameters */
9e0c7ef3 80static struct mtd_dev_param __initdata mtd_dev_param[UBI_MAX_DEVICES];
77e6c2f0
RW
81#ifdef CONFIG_MTD_UBI_FASTMAP
82/* UBI module parameter to enable fastmap automatically on non-fastmap images */
83static bool fm_autoconvert;
479c2c0c 84static bool fm_debug;
77e6c2f0 85#endif
801c135c 86
06b68ba1
AB
87/* Slab cache for wear-leveling entries */
88struct kmem_cache *ubi_wl_entry_slab;
89
9f961b57
AB
90/* UBI control character device */
91static struct miscdevice ubi_ctrl_cdev = {
92 .minor = MISC_DYNAMIC_MINOR,
93 .name = "ubi_ctrl",
94 .fops = &ubi_ctrl_cdev_operations,
95};
06b68ba1 96
e73f4459
AB
97/* All UBI devices in system */
98static struct ubi_device *ubi_devices[UBI_MAX_DEVICES];
99
cdfa788a
AB
100/* Serializes UBI devices creations and removals */
101DEFINE_MUTEX(ubi_devices_mutex);
102
e73f4459
AB
103/* Protects @ubi_devices and @ubi->ref_count */
104static DEFINE_SPINLOCK(ubi_devices_lock);
105
801c135c 106/* "Show" method for files in '/<sysfs>/class/ubi/' */
c174a08c
AB
107static ssize_t ubi_version_show(struct class *class,
108 struct class_attribute *attr, char *buf)
801c135c
AB
109{
110 return sprintf(buf, "%d\n", UBI_VERSION);
111}
112
113/* UBI version attribute ('/<sysfs>/class/ubi/version') */
53cd255c
TI
114static struct class_attribute ubi_class_attrs[] = {
115 __ATTR(version, S_IRUGO, ubi_version_show, NULL),
116 __ATTR_NULL
117};
118
119/* Root UBI "class" object (corresponds to '/<sysfs>/class/ubi/') */
120struct class ubi_class = {
121 .name = UBI_NAME_STR,
122 .owner = THIS_MODULE,
123 .class_attrs = ubi_class_attrs,
124};
801c135c
AB
125
126static ssize_t dev_attribute_show(struct device *dev,
127 struct device_attribute *attr, char *buf);
128
129/* UBI device attributes (correspond to files in '/<sysfs>/class/ubi/ubiX') */
130static struct device_attribute dev_eraseblock_size =
131 __ATTR(eraseblock_size, S_IRUGO, dev_attribute_show, NULL);
132static struct device_attribute dev_avail_eraseblocks =
133 __ATTR(avail_eraseblocks, S_IRUGO, dev_attribute_show, NULL);
134static struct device_attribute dev_total_eraseblocks =
135 __ATTR(total_eraseblocks, S_IRUGO, dev_attribute_show, NULL);
136static struct device_attribute dev_volumes_count =
137 __ATTR(volumes_count, S_IRUGO, dev_attribute_show, NULL);
138static struct device_attribute dev_max_ec =
139 __ATTR(max_ec, S_IRUGO, dev_attribute_show, NULL);
140static struct device_attribute dev_reserved_for_bad =
141 __ATTR(reserved_for_bad, S_IRUGO, dev_attribute_show, NULL);
142static struct device_attribute dev_bad_peb_count =
143 __ATTR(bad_peb_count, S_IRUGO, dev_attribute_show, NULL);
144static struct device_attribute dev_max_vol_count =
145 __ATTR(max_vol_count, S_IRUGO, dev_attribute_show, NULL);
146static struct device_attribute dev_min_io_size =
147 __ATTR(min_io_size, S_IRUGO, dev_attribute_show, NULL);
148static struct device_attribute dev_bgt_enabled =
149 __ATTR(bgt_enabled, S_IRUGO, dev_attribute_show, NULL);
b6b76ba4
AB
150static struct device_attribute dev_mtd_num =
151 __ATTR(mtd_num, S_IRUGO, dev_attribute_show, NULL);
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++) {
577 kfree(ubi->volumes[i]->eba_tbl);
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) {
32608703 877 ubi_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) {
32608703 892 ubi_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) {
32608703 903 ubi_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]) {
45fc5c81 913 ubi_err(ubi, "already exists");
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
0bf1c439 995 err = uif_init(ubi, &ref);
801c135c 996 if (err)
0bf1c439 997 goto out_detach;
801c135c 998
2a734bb8
AB
999 err = ubi_debugfs_init_dev(ubi);
1000 if (err)
1001 goto out_uif;
1002
f170168b 1003 ubi->bgt_thread = kthread_create(ubi_thread, ubi, "%s", ubi->bgt_name);
cdfa788a
AB
1004 if (IS_ERR(ubi->bgt_thread)) {
1005 err = PTR_ERR(ubi->bgt_thread);
32608703
TB
1006 ubi_err(ubi, "cannot spawn \"%s\", error %d",
1007 ubi->bgt_name, err);
2a734bb8 1008 goto out_debugfs;
cdfa788a
AB
1009 }
1010
32608703
TB
1011 ubi_msg(ubi, "attached mtd%d (name \"%s\", size %llu MiB)",
1012 mtd->index, mtd->name, ubi->flash_size >> 20);
1013 ubi_msg(ubi, "PEB size: %d bytes (%d KiB), LEB size: %d bytes",
719bb840 1014 ubi->peb_size, ubi->peb_size >> 10, ubi->leb_size);
32608703 1015 ubi_msg(ubi, "min./max. I/O unit sizes: %d/%d, sub-page size %d",
719bb840 1016 ubi->min_io_size, ubi->max_write_size, ubi->hdrs_min_io_size);
32608703 1017 ubi_msg(ubi, "VID header offset: %d (aligned %d), data offset: %d",
719bb840 1018 ubi->vid_hdr_offset, ubi->vid_hdr_aloffset, ubi->leb_start);
32608703 1019 ubi_msg(ubi, "good PEBs: %d, bad PEBs: %d, corrupted PEBs: %d",
719bb840 1020 ubi->good_peb_count, ubi->bad_peb_count, ubi->corr_peb_count);
32608703 1021 ubi_msg(ubi, "user volume: %d, internal volumes: %d, max. volumes count: %d",
719bb840
AB
1022 ubi->vol_count - UBI_INT_VOL_COUNT, UBI_INT_VOL_COUNT,
1023 ubi->vtbl_slots);
32608703 1024 ubi_msg(ubi, "max/mean erase counter: %d/%d, WL threshold: %d, image sequence number: %u",
719bb840
AB
1025 ubi->max_ec, ubi->mean_ec, CONFIG_MTD_UBI_WL_THRESHOLD,
1026 ubi->image_seq);
32608703 1027 ubi_msg(ubi, "available PEBs: %d, total reserved PEBs: %d, PEBs reserved for bad PEB handling: %d",
719bb840 1028 ubi->avail_pebs, ubi->rsvd_pebs, ubi->beb_rsvd_pebs);
801c135c 1029
ddbd3b61
AB
1030 /*
1031 * The below lock makes sure we do not race with 'ubi_thread()' which
1032 * checks @ubi->thread_enabled. Otherwise we may fail to wake it up.
1033 */
1034 spin_lock(&ubi->wl_lock);
28237e45 1035 ubi->thread_enabled = 1;
d37e6bf6 1036 wake_up_process(ubi->bgt_thread);
ddbd3b61 1037 spin_unlock(&ubi->wl_lock);
801c135c 1038
897a316c 1039 ubi_devices[ubi_num] = ubi;
0e0ee1cc 1040 ubi_notify_all(ubi, UBI_VOLUME_ADDED, NULL);
897a316c 1041 return ubi_num;
801c135c 1042
2a734bb8
AB
1043out_debugfs:
1044 ubi_debugfs_exit_dev(ubi);
cdfa788a 1045out_uif:
01a4110d
AB
1046 get_device(&ubi->dev);
1047 ubi_assert(ref);
cdfa788a 1048 uif_close(ubi);
801c135c 1049out_detach:
801c135c 1050 ubi_wl_close(ubi);
47e1ec70 1051 ubi_free_internal_volumes(ubi);
d7f0c4dc 1052 vfree(ubi->vtbl);
801c135c 1053out_free:
0ca39d74 1054 vfree(ubi->peb_buf);
77e6c2f0 1055 vfree(ubi->fm_buf);
0bf1c439
AB
1056 if (ref)
1057 put_device(&ubi->dev);
1058 else
1059 kfree(ubi);
801c135c
AB
1060 return err;
1061}
1062
1063/**
cdfa788a
AB
1064 * ubi_detach_mtd_dev - detach an MTD device.
1065 * @ubi_num: UBI device number to detach from
1066 * @anyway: detach MTD even if device reference count is not zero
1067 *
1068 * This function destroys an UBI device number @ubi_num and detaches the
1069 * underlying MTD device. Returns zero in case of success and %-EBUSY if the
1070 * UBI device is busy and cannot be destroyed, and %-EINVAL if it does not
1071 * exist.
1072 *
1073 * Note, the invocations of this function has to be serialized by the
1074 * @ubi_devices_mutex.
801c135c 1075 */
cdfa788a 1076int ubi_detach_mtd_dev(int ubi_num, int anyway)
801c135c 1077{
cdfa788a
AB
1078 struct ubi_device *ubi;
1079
1080 if (ubi_num < 0 || ubi_num >= UBI_MAX_DEVICES)
1081 return -EINVAL;
1082
0e0ee1cc
DP
1083 ubi = ubi_get_device(ubi_num);
1084 if (!ubi)
cdfa788a 1085 return -EINVAL;
cdfa788a 1086
0e0ee1cc
DP
1087 spin_lock(&ubi_devices_lock);
1088 put_device(&ubi->dev);
1089 ubi->ref_count -= 1;
cdfa788a
AB
1090 if (ubi->ref_count) {
1091 if (!anyway) {
897a316c 1092 spin_unlock(&ubi_devices_lock);
cdfa788a
AB
1093 return -EBUSY;
1094 }
1095 /* This may only happen if there is a bug */
32608703 1096 ubi_err(ubi, "%s reference count %d, destroy anyway",
cdfa788a
AB
1097 ubi->ubi_name, ubi->ref_count);
1098 }
897a316c 1099 ubi_devices[ubi_num] = NULL;
cdfa788a
AB
1100 spin_unlock(&ubi_devices_lock);
1101
897a316c 1102 ubi_assert(ubi_num == ubi->ubi_num);
0e0ee1cc 1103 ubi_notify_all(ubi, UBI_VOLUME_REMOVED, NULL);
32608703 1104 ubi_msg(ubi, "detaching mtd%d", ubi->mtd->index);
77e6c2f0
RW
1105#ifdef CONFIG_MTD_UBI_FASTMAP
1106 /* If we don't write a new fastmap at detach time we lose all
24b7a347
RW
1107 * EC updates that have been made since the last written fastmap.
1108 * In case of fastmap debugging we omit the update to simulate an
1109 * unclean shutdown. */
1110 if (!ubi_dbg_chk_fastmap(ubi))
1111 ubi_update_fastmap(ubi);
77e6c2f0 1112#endif
cdfa788a
AB
1113 /*
1114 * Before freeing anything, we have to stop the background thread to
1115 * prevent it from doing anything on this device while we are freeing.
1116 */
1117 if (ubi->bgt_thread)
1118 kthread_stop(ubi->bgt_thread);
801c135c 1119
36b477d0
AB
1120 /*
1121 * Get a reference to the device in order to prevent 'dev_release()'
0bf1c439 1122 * from freeing the @ubi object.
36b477d0
AB
1123 */
1124 get_device(&ubi->dev);
1125
2a734bb8 1126 ubi_debugfs_exit_dev(ubi);
801c135c 1127 uif_close(ubi);
77e6c2f0 1128
801c135c 1129 ubi_wl_close(ubi);
47e1ec70 1130 ubi_free_internal_volumes(ubi);
92ad8f37 1131 vfree(ubi->vtbl);
801c135c 1132 put_mtd_device(ubi->mtd);
0ca39d74 1133 vfree(ubi->peb_buf);
77e6c2f0 1134 vfree(ubi->fm_buf);
32608703 1135 ubi_msg(ubi, "mtd%d is detached", ubi->mtd->index);
36b477d0 1136 put_device(&ubi->dev);
cdfa788a 1137 return 0;
801c135c
AB
1138}
1139
cdfa788a 1140/**
f9b0080e
AB
1141 * open_mtd_by_chdev - open an MTD device by its character device node path.
1142 * @mtd_dev: MTD character device node path
1143 *
1144 * This helper function opens an MTD device by its character node device path.
1145 * Returns MTD device description object in case of success and a negative
1146 * error code in case of failure.
1147 */
1148static struct mtd_info * __init open_mtd_by_chdev(const char *mtd_dev)
1149{
61edc3f3 1150 int err, minor;
1a498ec4 1151 struct path path;
61edc3f3 1152 struct kstat stat;
f9b0080e
AB
1153
1154 /* Probably this is an MTD character device node path */
1a498ec4 1155 err = kern_path(mtd_dev, LOOKUP_FOLLOW, &path);
f9b0080e
AB
1156 if (err)
1157 return ERR_PTR(err);
1158
61edc3f3 1159 err = vfs_getattr(&path, &stat);
1a498ec4 1160 path_put(&path);
61edc3f3
RW
1161 if (err)
1162 return ERR_PTR(err);
1163
1164 /* MTD device number is defined by the major / minor numbers */
1165 if (MAJOR(stat.rdev) != MTD_CHAR_MAJOR || !S_ISCHR(stat.mode))
f9b0080e
AB
1166 return ERR_PTR(-EINVAL);
1167
61edc3f3
RW
1168 minor = MINOR(stat.rdev);
1169
f9b0080e
AB
1170 if (minor & 1)
1171 /*
1172 * Just do not think the "/dev/mtdrX" devices support is need,
1173 * so do not support them to avoid doing extra work.
1174 */
1175 return ERR_PTR(-EINVAL);
1176
1177 return get_mtd_device(NULL, minor / 2);
1178}
1179
1180/**
1181 * open_mtd_device - open MTD device by name, character device path, or number.
1182 * @mtd_dev: name, character device node path, or MTD device device number
cdfa788a 1183 *
d1f3dd6c 1184 * This function tries to open and MTD device described by @mtd_dev string,
f9b0080e
AB
1185 * which is first treated as ASCII MTD device number, and if it is not true, it
1186 * is treated as MTD device name, and if that is also not true, it is treated
1187 * as MTD character device node path. Returns MTD device description object in
1188 * case of success and a negative error code in case of failure.
cdfa788a
AB
1189 */
1190static struct mtd_info * __init open_mtd_device(const char *mtd_dev)
1191{
1192 struct mtd_info *mtd;
d1f3dd6c
AB
1193 int mtd_num;
1194 char *endp;
cdfa788a 1195
d1f3dd6c
AB
1196 mtd_num = simple_strtoul(mtd_dev, &endp, 0);
1197 if (*endp != '\0' || mtd_dev == endp) {
cdfa788a 1198 /*
d1f3dd6c
AB
1199 * This does not look like an ASCII integer, probably this is
1200 * MTD device name.
cdfa788a 1201 */
d1f3dd6c 1202 mtd = get_mtd_device_nm(mtd_dev);
f9b0080e
AB
1203 if (IS_ERR(mtd) && PTR_ERR(mtd) == -ENODEV)
1204 /* Probably this is an MTD character device node path */
1205 mtd = open_mtd_by_chdev(mtd_dev);
d1f3dd6c 1206 } else
cdfa788a 1207 mtd = get_mtd_device(NULL, mtd_num);
cdfa788a
AB
1208
1209 return mtd;
1210}
1211
801c135c
AB
1212static int __init ubi_init(void)
1213{
1214 int err, i, k;
1215
1216 /* Ensure that EC and VID headers have correct size */
1217 BUILD_BUG_ON(sizeof(struct ubi_ec_hdr) != 64);
1218 BUILD_BUG_ON(sizeof(struct ubi_vid_hdr) != 64);
1219
1220 if (mtd_devs > UBI_MAX_DEVICES) {
32608703
TB
1221 pr_err("UBI error: too many MTD devices, maximum is %d",
1222 UBI_MAX_DEVICES);
801c135c
AB
1223 return -EINVAL;
1224 }
1225
9f961b57 1226 /* Create base sysfs directory and sysfs files */
53cd255c
TI
1227 err = class_register(&ubi_class);
1228 if (err < 0)
1229 return err;
9f961b57
AB
1230
1231 err = misc_register(&ubi_ctrl_cdev);
1232 if (err) {
32608703 1233 pr_err("UBI error: cannot register device");
53cd255c 1234 goto out;
9f961b57 1235 }
801c135c 1236
06b68ba1 1237 ubi_wl_entry_slab = kmem_cache_create("ubi_wl_entry_slab",
c4506092
AB
1238 sizeof(struct ubi_wl_entry),
1239 0, 0, NULL);
4d525145
JL
1240 if (!ubi_wl_entry_slab) {
1241 err = -ENOMEM;
b9a06623 1242 goto out_dev_unreg;
4d525145 1243 }
06b68ba1 1244
2a734bb8
AB
1245 err = ubi_debugfs_init();
1246 if (err)
1247 goto out_slab;
1248
1249
801c135c
AB
1250 /* Attach MTD devices */
1251 for (i = 0; i < mtd_devs; i++) {
1252 struct mtd_dev_param *p = &mtd_dev_param[i];
cdfa788a 1253 struct mtd_info *mtd;
801c135c
AB
1254
1255 cond_resched();
cdfa788a
AB
1256
1257 mtd = open_mtd_device(p->name);
1258 if (IS_ERR(mtd)) {
1259 err = PTR_ERR(mtd);
32608703
TB
1260 pr_err("UBI error: cannot open mtd %s, error %d",
1261 p->name, err);
1557b9e1
MF
1262 /* See comment below re-ubi_is_module(). */
1263 if (ubi_is_module())
1264 goto out_detach;
1265 continue;
cdfa788a
AB
1266 }
1267
1268 mutex_lock(&ubi_devices_mutex);
83ff59a0 1269 err = ubi_attach_mtd_dev(mtd, p->ubi_num,
edac493d 1270 p->vid_hdr_offs, p->max_beb_per1024);
cdfa788a
AB
1271 mutex_unlock(&ubi_devices_mutex);
1272 if (err < 0) {
32608703
TB
1273 pr_err("UBI error: cannot attach mtd%d",
1274 mtd->index);
af7ad7a0
MKB
1275 put_mtd_device(mtd);
1276
1277 /*
1278 * Originally UBI stopped initializing on any error.
1279 * However, later on it was found out that this
1280 * behavior is not very good when UBI is compiled into
1281 * the kernel and the MTD devices to attach are passed
1282 * through the command line. Indeed, UBI failure
1283 * stopped whole boot sequence.
1284 *
1285 * To fix this, we changed the behavior for the
1286 * non-module case, but preserved the old behavior for
1287 * the module case, just for compatibility. This is a
1288 * little inconsistent, though.
1289 */
1290 if (ubi_is_module())
1291 goto out_detach;
9f961b57 1292 }
801c135c
AB
1293 }
1294
9d54c8a3
EG
1295 err = ubiblock_init();
1296 if (err) {
32608703 1297 pr_err("UBI error: block: cannot initialize, error %d", err);
9d54c8a3
EG
1298
1299 /* See comment above re-ubi_is_module(). */
1300 if (ubi_is_module())
1301 goto out_detach;
1302 }
1303
801c135c
AB
1304 return 0;
1305
1306out_detach:
1307 for (k = 0; k < i; k++)
cdfa788a
AB
1308 if (ubi_devices[k]) {
1309 mutex_lock(&ubi_devices_mutex);
1310 ubi_detach_mtd_dev(ubi_devices[k]->ubi_num, 1);
1311 mutex_unlock(&ubi_devices_mutex);
1312 }
2a734bb8
AB
1313 ubi_debugfs_exit();
1314out_slab:
06b68ba1 1315 kmem_cache_destroy(ubi_wl_entry_slab);
9f961b57
AB
1316out_dev_unreg:
1317 misc_deregister(&ubi_ctrl_cdev);
9f961b57 1318out:
53cd255c 1319 class_unregister(&ubi_class);
32608703 1320 pr_err("UBI error: cannot initialize UBI, error %d", err);
801c135c
AB
1321 return err;
1322}
cf38aca5 1323late_initcall(ubi_init);
801c135c
AB
1324
1325static void __exit ubi_exit(void)
1326{
b96bf4c3 1327 int i;
801c135c 1328
9d54c8a3
EG
1329 ubiblock_exit();
1330
b96bf4c3 1331 for (i = 0; i < UBI_MAX_DEVICES; i++)
cdfa788a
AB
1332 if (ubi_devices[i]) {
1333 mutex_lock(&ubi_devices_mutex);
1334 ubi_detach_mtd_dev(ubi_devices[i]->ubi_num, 1);
1335 mutex_unlock(&ubi_devices_mutex);
1336 }
2a734bb8 1337 ubi_debugfs_exit();
06b68ba1 1338 kmem_cache_destroy(ubi_wl_entry_slab);
9f961b57 1339 misc_deregister(&ubi_ctrl_cdev);
53cd255c 1340 class_unregister(&ubi_class);
801c135c
AB
1341}
1342module_exit(ubi_exit);
1343
1344/**
ebaaf1af 1345 * bytes_str_to_int - convert a number of bytes string into an integer.
801c135c
AB
1346 * @str: the string to convert
1347 *
1348 * This function returns positive resulting integer in case of success and a
1349 * negative error code in case of failure.
1350 */
1351static int __init bytes_str_to_int(const char *str)
1352{
1353 char *endp;
1354 unsigned long result;
1355
1356 result = simple_strtoul(str, &endp, 0);
774b1382 1357 if (str == endp || result >= INT_MAX) {
32608703 1358 pr_err("UBI error: incorrect bytes count: \"%s\"\n", str);
801c135c
AB
1359 return -EINVAL;
1360 }
1361
1362 switch (*endp) {
1363 case 'G':
1364 result *= 1024;
1365 case 'M':
1366 result *= 1024;
1367 case 'K':
801c135c 1368 result *= 1024;
aeddb877 1369 if (endp[1] == 'i' && endp[2] == 'B')
801c135c
AB
1370 endp += 2;
1371 case '\0':
1372 break;
1373 default:
32608703 1374 pr_err("UBI error: incorrect bytes count: \"%s\"\n", str);
801c135c
AB
1375 return -EINVAL;
1376 }
1377
1378 return result;
1379}
1380
1381/**
1382 * ubi_mtd_param_parse - parse the 'mtd=' UBI parameter.
1383 * @val: the parameter value to parse
1384 * @kp: not used
1385 *
1386 * This function returns zero in case of success and a negative error code in
1387 * case of error.
1388 */
1389static int __init ubi_mtd_param_parse(const char *val, struct kernel_param *kp)
1390{
1391 int i, len;
1392 struct mtd_dev_param *p;
1393 char buf[MTD_PARAM_LEN_MAX];
1394 char *pbuf = &buf[0];
83ff59a0 1395 char *tokens[MTD_PARAM_MAX_COUNT], *token;
801c135c 1396
77c722dd
AB
1397 if (!val)
1398 return -EINVAL;
1399
801c135c 1400 if (mtd_devs == UBI_MAX_DEVICES) {
32608703
TB
1401 pr_err("UBI error: too many parameters, max. is %d\n",
1402 UBI_MAX_DEVICES);
801c135c
AB
1403 return -EINVAL;
1404 }
1405
1406 len = strnlen(val, MTD_PARAM_LEN_MAX);
1407 if (len == MTD_PARAM_LEN_MAX) {
32608703
TB
1408 pr_err("UBI error: parameter \"%s\" is too long, max. is %d\n",
1409 val, MTD_PARAM_LEN_MAX);
801c135c
AB
1410 return -EINVAL;
1411 }
1412
1413 if (len == 0) {
45fc5c81 1414 pr_warn("UBI warning: empty 'mtd=' parameter - ignored\n");
801c135c
AB
1415 return 0;
1416 }
1417
1418 strcpy(buf, val);
1419
1420 /* Get rid of the final newline */
1421 if (buf[len - 1] == '\n')
503990eb 1422 buf[len - 1] = '\0';
801c135c 1423
5993f9b7 1424 for (i = 0; i < MTD_PARAM_MAX_COUNT; i++)
801c135c
AB
1425 tokens[i] = strsep(&pbuf, ",");
1426
1427 if (pbuf) {
32608703 1428 pr_err("UBI error: too many arguments at \"%s\"\n", val);
801c135c
AB
1429 return -EINVAL;
1430 }
1431
801c135c
AB
1432 p = &mtd_dev_param[mtd_devs];
1433 strcpy(&p->name[0], tokens[0]);
1434
83ff59a0
MF
1435 token = tokens[1];
1436 if (token) {
1437 p->vid_hdr_offs = bytes_str_to_int(token);
801c135c 1438
83ff59a0
MF
1439 if (p->vid_hdr_offs < 0)
1440 return p->vid_hdr_offs;
1441 }
801c135c 1442
83ff59a0
MF
1443 token = tokens[2];
1444 if (token) {
1445 int err = kstrtoint(token, 10, &p->max_beb_per1024);
edac493d
RG
1446
1447 if (err) {
32608703
TB
1448 pr_err("UBI error: bad value for max_beb_per1024 parameter: %s",
1449 token);
edac493d
RG
1450 return -EINVAL;
1451 }
1452 }
1453
83ff59a0
MF
1454 token = tokens[3];
1455 if (token) {
1456 int err = kstrtoint(token, 10, &p->ubi_num);
1457
1458 if (err) {
32608703
TB
1459 pr_err("UBI error: bad value for ubi_num parameter: %s",
1460 token);
83ff59a0
MF
1461 return -EINVAL;
1462 }
1463 } else
1464 p->ubi_num = UBI_DEV_NUM_AUTO;
1465
801c135c
AB
1466 mtd_devs += 1;
1467 return 0;
1468}
1469
1470module_param_call(mtd, ubi_mtd_param_parse, NULL, NULL, 000);
83ff59a0 1471MODULE_PARM_DESC(mtd, "MTD devices to attach. Parameter format: mtd=<name|num|path>[,<vid_hdr_offs>[,max_beb_per1024[,ubi_num]]].\n"
801c135c 1472 "Multiple \"mtd\" parameters may be specified.\n"
edac493d
RG
1473 "MTD devices may be specified by their number, name, or path to the MTD character device node.\n"
1474 "Optional \"vid_hdr_offs\" parameter specifies UBI VID header position to be used by UBI. (default value if 0)\n"
1475 "Optional \"max_beb_per1024\" parameter specifies the maximum expected bad eraseblock per 1024 eraseblocks. (default value ("
1476 __stringify(CONFIG_MTD_UBI_BEB_LIMIT) ") if 0)\n"
83ff59a0 1477 "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
1478 "\n"
1479 "Example 1: mtd=/dev/mtd0 - attach MTD device /dev/mtd0.\n"
1480 "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"
1481 "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 1482 "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 1483 "\t(e.g. if the NAND *chipset* has 4096 PEB, 100 will be reserved for this UBI device).");
77e6c2f0
RW
1484#ifdef CONFIG_MTD_UBI_FASTMAP
1485module_param(fm_autoconvert, bool, 0644);
1486MODULE_PARM_DESC(fm_autoconvert, "Set this parameter to enable fastmap automatically on images without a fastmap.");
479c2c0c
RW
1487module_param(fm_debug, bool, 0);
1488MODULE_PARM_DESC(fm_debug, "Set this parameter to enable fastmap debugging by default. Warning, this will make fastmap slow!");
77e6c2f0 1489#endif
801c135c
AB
1490MODULE_VERSION(__stringify(UBI_VERSION));
1491MODULE_DESCRIPTION("UBI - Unsorted Block Images");
1492MODULE_AUTHOR("Artem Bityutskiy");
1493MODULE_LICENSE("GPL");
This page took 0.65957 seconds and 5 git commands to generate.