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