net: rfkill: gpio: Enable module auto-loading for ACPI based switches
[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{
157 struct ubi_notification nt;
158
159 ubi_do_get_device_info(ubi, &nt.di);
160 ubi_do_get_volume_info(ubi, vol, &nt.vi);
77e6c2f0
RW
161
162#ifdef CONFIG_MTD_UBI_FASTMAP
163 switch (ntype) {
164 case UBI_VOLUME_ADDED:
165 case UBI_VOLUME_REMOVED:
166 case UBI_VOLUME_RESIZED:
167 case UBI_VOLUME_RENAMED:
168 if (ubi_update_fastmap(ubi)) {
169 ubi_err("Unable to update fastmap!");
170 ubi_ro_mode(ubi);
171 }
172 }
173#endif
0e0ee1cc
DP
174 return blocking_notifier_call_chain(&ubi_notifiers, ntype, &nt);
175}
176
177/**
178 * ubi_notify_all - send a notification to all volumes.
179 * @ubi: UBI device description object
180 * @ntype: notification type to send (%UBI_VOLUME_ADDED, etc)
181 * @nb: the notifier to call
182 *
183 * This function walks all volumes of UBI device @ubi and sends the @ntype
184 * notification for each volume. If @nb is %NULL, then all registered notifiers
185 * are called, otherwise only the @nb notifier is called. Returns the number of
186 * sent notifications.
187 */
188int ubi_notify_all(struct ubi_device *ubi, int ntype, struct notifier_block *nb)
189{
190 struct ubi_notification nt;
191 int i, count = 0;
192
193 ubi_do_get_device_info(ubi, &nt.di);
194
195 mutex_lock(&ubi->device_mutex);
196 for (i = 0; i < ubi->vtbl_slots; i++) {
197 /*
198 * Since the @ubi->device is locked, and we are not going to
199 * change @ubi->volumes, we do not have to lock
200 * @ubi->volumes_lock.
201 */
202 if (!ubi->volumes[i])
203 continue;
204
205 ubi_do_get_volume_info(ubi, ubi->volumes[i], &nt.vi);
206 if (nb)
207 nb->notifier_call(nb, ntype, &nt);
208 else
209 blocking_notifier_call_chain(&ubi_notifiers, ntype,
210 &nt);
211 count += 1;
212 }
213 mutex_unlock(&ubi->device_mutex);
214
215 return count;
216}
217
218/**
219 * ubi_enumerate_volumes - send "add" notification for all existing volumes.
220 * @nb: the notifier to call
221 *
222 * This function walks all UBI devices and volumes and sends the
223 * %UBI_VOLUME_ADDED notification for each volume. If @nb is %NULL, then all
224 * registered notifiers are called, otherwise only the @nb notifier is called.
225 * Returns the number of sent notifications.
226 */
227int ubi_enumerate_volumes(struct notifier_block *nb)
228{
229 int i, count = 0;
230
231 /*
232 * Since the @ubi_devices_mutex is locked, and we are not going to
233 * change @ubi_devices, we do not have to lock @ubi_devices_lock.
234 */
235 for (i = 0; i < UBI_MAX_DEVICES; i++) {
236 struct ubi_device *ubi = ubi_devices[i];
237
238 if (!ubi)
239 continue;
240 count += ubi_notify_all(ubi, UBI_VOLUME_ADDED, nb);
241 }
242
243 return count;
244}
245
e73f4459
AB
246/**
247 * ubi_get_device - get UBI device.
248 * @ubi_num: UBI device number
249 *
250 * This function returns UBI device description object for UBI device number
251 * @ubi_num, or %NULL if the device does not exist. This function increases the
252 * device reference count to prevent removal of the device. In other words, the
253 * device cannot be removed if its reference count is not zero.
254 */
255struct ubi_device *ubi_get_device(int ubi_num)
256{
257 struct ubi_device *ubi;
258
259 spin_lock(&ubi_devices_lock);
260 ubi = ubi_devices[ubi_num];
261 if (ubi) {
262 ubi_assert(ubi->ref_count >= 0);
263 ubi->ref_count += 1;
264 get_device(&ubi->dev);
265 }
266 spin_unlock(&ubi_devices_lock);
267
268 return ubi;
269}
270
271/**
272 * ubi_put_device - drop an UBI device reference.
273 * @ubi: UBI device description object
274 */
275void ubi_put_device(struct ubi_device *ubi)
276{
277 spin_lock(&ubi_devices_lock);
278 ubi->ref_count -= 1;
279 put_device(&ubi->dev);
280 spin_unlock(&ubi_devices_lock);
281}
282
283/**
ebaaf1af 284 * ubi_get_by_major - get UBI device by character device major number.
e73f4459
AB
285 * @major: major number
286 *
287 * This function is similar to 'ubi_get_device()', but it searches the device
288 * by its major number.
289 */
290struct ubi_device *ubi_get_by_major(int major)
291{
292 int i;
293 struct ubi_device *ubi;
294
295 spin_lock(&ubi_devices_lock);
296 for (i = 0; i < UBI_MAX_DEVICES; i++) {
297 ubi = ubi_devices[i];
298 if (ubi && MAJOR(ubi->cdev.dev) == major) {
299 ubi_assert(ubi->ref_count >= 0);
300 ubi->ref_count += 1;
301 get_device(&ubi->dev);
302 spin_unlock(&ubi_devices_lock);
303 return ubi;
304 }
305 }
306 spin_unlock(&ubi_devices_lock);
307
308 return NULL;
309}
310
311/**
312 * ubi_major2num - get UBI device number by character device major number.
313 * @major: major number
314 *
315 * This function searches UBI device number object by its major number. If UBI
cdfa788a 316 * device was not found, this function returns -ENODEV, otherwise the UBI device
e73f4459
AB
317 * number is returned.
318 */
319int ubi_major2num(int major)
320{
321 int i, ubi_num = -ENODEV;
322
323 spin_lock(&ubi_devices_lock);
324 for (i = 0; i < UBI_MAX_DEVICES; i++) {
325 struct ubi_device *ubi = ubi_devices[i];
326
327 if (ubi && MAJOR(ubi->cdev.dev) == major) {
328 ubi_num = ubi->ubi_num;
329 break;
330 }
331 }
332 spin_unlock(&ubi_devices_lock);
333
334 return ubi_num;
335}
336
801c135c
AB
337/* "Show" method for files in '/<sysfs>/class/ubi/ubiX/' */
338static ssize_t dev_attribute_show(struct device *dev,
339 struct device_attribute *attr, char *buf)
340{
e73f4459
AB
341 ssize_t ret;
342 struct ubi_device *ubi;
801c135c 343
e73f4459
AB
344 /*
345 * The below code looks weird, but it actually makes sense. We get the
346 * UBI device reference from the contained 'struct ubi_device'. But it
347 * is unclear if the device was removed or not yet. Indeed, if the
348 * device was removed before we increased its reference count,
349 * 'ubi_get_device()' will return -ENODEV and we fail.
350 *
351 * Remember, 'struct ubi_device' is freed in the release function, so
352 * we still can use 'ubi->ubi_num'.
353 */
801c135c 354 ubi = container_of(dev, struct ubi_device, dev);
e73f4459
AB
355 ubi = ubi_get_device(ubi->ubi_num);
356 if (!ubi)
357 return -ENODEV;
358
801c135c 359 if (attr == &dev_eraseblock_size)
e73f4459 360 ret = sprintf(buf, "%d\n", ubi->leb_size);
801c135c 361 else if (attr == &dev_avail_eraseblocks)
e73f4459 362 ret = sprintf(buf, "%d\n", ubi->avail_pebs);
801c135c 363 else if (attr == &dev_total_eraseblocks)
e73f4459 364 ret = sprintf(buf, "%d\n", ubi->good_peb_count);
801c135c 365 else if (attr == &dev_volumes_count)
4b3cc340 366 ret = sprintf(buf, "%d\n", ubi->vol_count - UBI_INT_VOL_COUNT);
801c135c 367 else if (attr == &dev_max_ec)
e73f4459 368 ret = sprintf(buf, "%d\n", ubi->max_ec);
801c135c 369 else if (attr == &dev_reserved_for_bad)
e73f4459 370 ret = sprintf(buf, "%d\n", ubi->beb_rsvd_pebs);
801c135c 371 else if (attr == &dev_bad_peb_count)
e73f4459 372 ret = sprintf(buf, "%d\n", ubi->bad_peb_count);
801c135c 373 else if (attr == &dev_max_vol_count)
e73f4459 374 ret = sprintf(buf, "%d\n", ubi->vtbl_slots);
801c135c 375 else if (attr == &dev_min_io_size)
e73f4459 376 ret = sprintf(buf, "%d\n", ubi->min_io_size);
801c135c 377 else if (attr == &dev_bgt_enabled)
e73f4459 378 ret = sprintf(buf, "%d\n", ubi->thread_enabled);
b6b76ba4
AB
379 else if (attr == &dev_mtd_num)
380 ret = sprintf(buf, "%d\n", ubi->mtd->index);
801c135c 381 else
b6b76ba4 382 ret = -EINVAL;
801c135c 383
e73f4459
AB
384 ubi_put_device(ubi);
385 return ret;
801c135c
AB
386}
387
36b477d0
AB
388static void dev_release(struct device *dev)
389{
390 struct ubi_device *ubi = container_of(dev, struct ubi_device, dev);
391
392 kfree(ubi);
393}
801c135c
AB
394
395/**
396 * ubi_sysfs_init - initialize sysfs for an UBI device.
397 * @ubi: UBI device description object
0bf1c439
AB
398 * @ref: set to %1 on exit in case of failure if a reference to @ubi->dev was
399 * taken
801c135c
AB
400 *
401 * This function returns zero in case of success and a negative error code in
402 * case of failure.
403 */
0bf1c439 404static int ubi_sysfs_init(struct ubi_device *ubi, int *ref)
801c135c
AB
405{
406 int err;
407
408 ubi->dev.release = dev_release;
49dfc299 409 ubi->dev.devt = ubi->cdev.dev;
801c135c 410 ubi->dev.class = ubi_class;
160bbab3 411 dev_set_name(&ubi->dev, UBI_NAME_STR"%d", ubi->ubi_num);
801c135c
AB
412 err = device_register(&ubi->dev);
413 if (err)
db6e5770 414 return err;
801c135c 415
0bf1c439 416 *ref = 1;
801c135c
AB
417 err = device_create_file(&ubi->dev, &dev_eraseblock_size);
418 if (err)
db6e5770 419 return err;
801c135c
AB
420 err = device_create_file(&ubi->dev, &dev_avail_eraseblocks);
421 if (err)
db6e5770 422 return err;
801c135c
AB
423 err = device_create_file(&ubi->dev, &dev_total_eraseblocks);
424 if (err)
db6e5770 425 return err;
801c135c
AB
426 err = device_create_file(&ubi->dev, &dev_volumes_count);
427 if (err)
db6e5770 428 return err;
801c135c
AB
429 err = device_create_file(&ubi->dev, &dev_max_ec);
430 if (err)
db6e5770 431 return err;
801c135c
AB
432 err = device_create_file(&ubi->dev, &dev_reserved_for_bad);
433 if (err)
db6e5770 434 return err;
801c135c
AB
435 err = device_create_file(&ubi->dev, &dev_bad_peb_count);
436 if (err)
db6e5770 437 return err;
801c135c
AB
438 err = device_create_file(&ubi->dev, &dev_max_vol_count);
439 if (err)
db6e5770 440 return err;
801c135c
AB
441 err = device_create_file(&ubi->dev, &dev_min_io_size);
442 if (err)
db6e5770 443 return err;
801c135c 444 err = device_create_file(&ubi->dev, &dev_bgt_enabled);
b6b76ba4
AB
445 if (err)
446 return err;
447 err = device_create_file(&ubi->dev, &dev_mtd_num);
801c135c
AB
448 return err;
449}
450
451/**
452 * ubi_sysfs_close - close sysfs for an UBI device.
453 * @ubi: UBI device description object
454 */
455static void ubi_sysfs_close(struct ubi_device *ubi)
456{
b6b76ba4 457 device_remove_file(&ubi->dev, &dev_mtd_num);
801c135c
AB
458 device_remove_file(&ubi->dev, &dev_bgt_enabled);
459 device_remove_file(&ubi->dev, &dev_min_io_size);
460 device_remove_file(&ubi->dev, &dev_max_vol_count);
461 device_remove_file(&ubi->dev, &dev_bad_peb_count);
462 device_remove_file(&ubi->dev, &dev_reserved_for_bad);
463 device_remove_file(&ubi->dev, &dev_max_ec);
464 device_remove_file(&ubi->dev, &dev_volumes_count);
465 device_remove_file(&ubi->dev, &dev_total_eraseblocks);
466 device_remove_file(&ubi->dev, &dev_avail_eraseblocks);
467 device_remove_file(&ubi->dev, &dev_eraseblock_size);
468 device_unregister(&ubi->dev);
469}
470
471/**
0bf1c439 472 * kill_volumes - destroy all user volumes.
801c135c
AB
473 * @ubi: UBI device description object
474 */
475static void kill_volumes(struct ubi_device *ubi)
476{
477 int i;
478
479 for (i = 0; i < ubi->vtbl_slots; i++)
480 if (ubi->volumes[i])
89b96b69 481 ubi_free_volume(ubi, ubi->volumes[i]);
801c135c
AB
482}
483
484/**
485 * uif_init - initialize user interfaces for an UBI device.
486 * @ubi: UBI device description object
0bf1c439
AB
487 * @ref: set to %1 on exit in case of failure if a reference to @ubi->dev was
488 * taken, otherwise set to %0
489 *
490 * This function initializes various user interfaces for an UBI device. If the
491 * initialization fails at an early stage, this function frees all the
492 * resources it allocated, returns an error, and @ref is set to %0. However,
493 * if the initialization fails after the UBI device was registered in the
494 * driver core subsystem, this function takes a reference to @ubi->dev, because
495 * otherwise the release function ('dev_release()') would free whole @ubi
496 * object. The @ref argument is set to %1 in this case. The caller has to put
497 * this reference.
801c135c
AB
498 *
499 * This function returns zero in case of success and a negative error code in
0bf1c439 500 * case of failure.
801c135c 501 */
0bf1c439 502static int uif_init(struct ubi_device *ubi, int *ref)
801c135c 503{
8c4c19f1 504 int i, err;
801c135c
AB
505 dev_t dev;
506
0bf1c439 507 *ref = 0;
801c135c
AB
508 sprintf(ubi->ubi_name, UBI_NAME_STR "%d", ubi->ubi_num);
509
510 /*
511 * Major numbers for the UBI character devices are allocated
512 * dynamically. Major numbers of volume character devices are
513 * equivalent to ones of the corresponding UBI character device. Minor
514 * numbers of UBI character devices are 0, while minor numbers of
515 * volume character devices start from 1. Thus, we allocate one major
516 * number and ubi->vtbl_slots + 1 minor numbers.
517 */
518 err = alloc_chrdev_region(&dev, 0, ubi->vtbl_slots + 1, ubi->ubi_name);
519 if (err) {
520 ubi_err("cannot register UBI character devices");
521 return err;
522 }
523
49dfc299 524 ubi_assert(MINOR(dev) == 0);
801c135c 525 cdev_init(&ubi->cdev, &ubi_cdev_operations);
c8566350 526 dbg_gen("%s major is %u", ubi->ubi_name, MAJOR(dev));
801c135c
AB
527 ubi->cdev.owner = THIS_MODULE;
528
801c135c
AB
529 err = cdev_add(&ubi->cdev, dev, 1);
530 if (err) {
01f7b309 531 ubi_err("cannot add character device");
801c135c
AB
532 goto out_unreg;
533 }
534
0bf1c439 535 err = ubi_sysfs_init(ubi, ref);
801c135c 536 if (err)
db6e5770 537 goto out_sysfs;
801c135c
AB
538
539 for (i = 0; i < ubi->vtbl_slots; i++)
540 if (ubi->volumes[i]) {
89b96b69 541 err = ubi_add_volume(ubi, ubi->volumes[i]);
01f7b309
AB
542 if (err) {
543 ubi_err("cannot add volume %d", i);
801c135c 544 goto out_volumes;
01f7b309 545 }
801c135c
AB
546 }
547
548 return 0;
549
550out_volumes:
551 kill_volumes(ubi);
db6e5770 552out_sysfs:
0bf1c439
AB
553 if (*ref)
554 get_device(&ubi->dev);
801c135c 555 ubi_sysfs_close(ubi);
801c135c
AB
556 cdev_del(&ubi->cdev);
557out_unreg:
49dfc299 558 unregister_chrdev_region(ubi->cdev.dev, ubi->vtbl_slots + 1);
01f7b309 559 ubi_err("cannot initialize UBI %s, error %d", 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 */
653 ubi_err("multiple regions, not implemented");
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)) {
01f7b309
AB
688 ubi_err("min. I/O unit (%d) is not power of 2",
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)) {
705 ubi_err("bad write buffer size %d for %d min. I/O unit",
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) {
742 ubi_err("unaligned VID header shift %d",
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)) {
801c135c
AB
752 ubi_err("bad VID header (%d) or data offsets (%d)",
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) {
049333ce 772 ubi_warn("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)) {
049333ce
AB
779 ubi_msg("MTD device %d is write-protected, attach in read-only mode",
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
AB
811 if (ubi->ro_mode) {
812 ubi_warn("skip auto-resize because of R/O mode");
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)
833 ubi_err("cannot clean auto-resize flag for volume %d",
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)
840 ubi_err("cannot auto-resize volume %d", vol_id);
841 }
842
843 if (err)
844 return err;
845
846 ubi_msg("volume %d (\"%s\") re-sized from %d to %d LEBs", vol_id,
847 vol->name, old_reserved_pebs, vol->reserved_pebs);
848 return 0;
849}
850
801c135c 851/**
cdfa788a 852 * ubi_attach_mtd_dev - attach an MTD device.
ebaaf1af 853 * @mtd: MTD device description object
897a316c 854 * @ubi_num: number to assign to the new UBI device
801c135c 855 * @vid_hdr_offset: VID header offset
edac493d 856 * @max_beb_per1024: maximum expected number of bad PEB per 1024 PEBs
801c135c 857 *
897a316c
AB
858 * This function attaches MTD device @mtd_dev to UBI and assign @ubi_num number
859 * to the newly created UBI device, unless @ubi_num is %UBI_DEV_NUM_AUTO, in
505d1caa 860 * which case this function finds a vacant device number and assigns it
897a316c
AB
861 * automatically. Returns the new UBI device number in case of success and a
862 * negative error code in case of failure.
cdfa788a
AB
863 *
864 * Note, the invocations of this function has to be serialized by the
865 * @ubi_devices_mutex.
801c135c 866 */
256334c3
RG
867int ubi_attach_mtd_dev(struct mtd_info *mtd, int ubi_num,
868 int vid_hdr_offset, int max_beb_per1024)
801c135c
AB
869{
870 struct ubi_device *ubi;
0bf1c439 871 int i, err, ref = 0;
801c135c 872
d2f588f9
RG
873 if (max_beb_per1024 < 0 || max_beb_per1024 > MAX_MTD_UBI_BEB_LIMIT)
874 return -EINVAL;
875
876 if (!max_beb_per1024)
877 max_beb_per1024 = CONFIG_MTD_UBI_BEB_LIMIT;
878
cdfa788a
AB
879 /*
880 * Check if we already have the same MTD device attached.
881 *
882 * Note, this function assumes that UBI devices creations and deletions
883 * are serialized, so it does not take the &ubi_devices_lock.
884 */
897a316c 885 for (i = 0; i < UBI_MAX_DEVICES; i++) {
b96bf4c3 886 ubi = ubi_devices[i];
cdfa788a 887 if (ubi && mtd->index == ubi->mtd->index) {
e2986827 888 ubi_err("mtd%d is already attached to ubi%d",
801c135c 889 mtd->index, i);
897a316c 890 return -EEXIST;
801c135c 891 }
897a316c 892 }
801c135c 893
897a316c
AB
894 /*
895 * Make sure this MTD device is not emulated on top of an UBI volume
896 * already. Well, generally this recursion works fine, but there are
897 * different problems like the UBI module takes a reference to itself
898 * by attaching (and thus, opening) the emulated MTD device. This
899 * results in inability to unload the module. And in general it makes
900 * no sense to attach emulated MTD devices, so we prohibit this.
901 */
902 if (mtd->type == MTD_UBIVOLUME) {
049333ce
AB
903 ubi_err("refuse attaching mtd%d - it is already emulated on top of UBI",
904 mtd->index);
897a316c
AB
905 return -EINVAL;
906 }
907
908 if (ubi_num == UBI_DEV_NUM_AUTO) {
909 /* Search for an empty slot in the @ubi_devices array */
910 for (ubi_num = 0; ubi_num < UBI_MAX_DEVICES; ubi_num++)
911 if (!ubi_devices[ubi_num])
912 break;
913 if (ubi_num == UBI_MAX_DEVICES) {
e2986827 914 ubi_err("only %d UBI devices may be created",
9c9ec147 915 UBI_MAX_DEVICES);
897a316c
AB
916 return -ENFILE;
917 }
918 } else {
919 if (ubi_num >= UBI_MAX_DEVICES)
920 return -EINVAL;
b96bf4c3 921
897a316c
AB
922 /* Make sure ubi_num is not busy */
923 if (ubi_devices[ubi_num]) {
e2986827 924 ubi_err("ubi%d already exists", ubi_num);
897a316c
AB
925 return -EEXIST;
926 }
b96bf4c3
AB
927 }
928
cdfa788a
AB
929 ubi = kzalloc(sizeof(struct ubi_device), GFP_KERNEL);
930 if (!ubi)
931 return -ENOMEM;
801c135c 932
cdfa788a 933 ubi->mtd = mtd;
897a316c 934 ubi->ubi_num = ubi_num;
801c135c 935 ubi->vid_hdr_offset = vid_hdr_offset;
4ccf8cff
AB
936 ubi->autoresize_vol_id = -1;
937
77e6c2f0
RW
938#ifdef CONFIG_MTD_UBI_FASTMAP
939 ubi->fm_pool.used = ubi->fm_pool.size = 0;
940 ubi->fm_wl_pool.used = ubi->fm_wl_pool.size = 0;
941
942 /*
943 * fm_pool.max_size is 5% of the total number of PEBs but it's also
944 * between UBI_FM_MAX_POOL_SIZE and UBI_FM_MIN_POOL_SIZE.
945 */
946 ubi->fm_pool.max_size = min(((int)mtd_div_by_eb(ubi->mtd->size,
947 ubi->mtd) / 100) * 5, UBI_FM_MAX_POOL_SIZE);
948 if (ubi->fm_pool.max_size < UBI_FM_MIN_POOL_SIZE)
949 ubi->fm_pool.max_size = UBI_FM_MIN_POOL_SIZE;
950
951 ubi->fm_wl_pool.max_size = UBI_FM_WL_POOL_SIZE;
952 ubi->fm_disabled = !fm_autoconvert;
953
954 if (!ubi->fm_disabled && (int)mtd_div_by_eb(ubi->mtd->size, ubi->mtd)
955 <= UBI_FM_MAX_START) {
956 ubi_err("More than %i PEBs are needed for fastmap, sorry.",
957 UBI_FM_MAX_START);
958 ubi->fm_disabled = 1;
959 }
960
961 ubi_msg("default fastmap pool size: %d", ubi->fm_pool.max_size);
962 ubi_msg("default fastmap WL pool size: %d", ubi->fm_wl_pool.max_size);
963#else
964 ubi->fm_disabled = 1;
965#endif
4ccf8cff
AB
966 mutex_init(&ubi->buf_mutex);
967 mutex_init(&ubi->ckvol_mutex);
f089c0b2 968 mutex_init(&ubi->device_mutex);
4ccf8cff 969 spin_lock_init(&ubi->volumes_lock);
77e6c2f0
RW
970 mutex_init(&ubi->fm_mutex);
971 init_rwsem(&ubi->fm_sem);
cdfa788a 972
697fa972 973 ubi_msg("attaching mtd%d to ubi%d", mtd->index, ubi_num);
cdfa788a 974
256334c3 975 err = io_init(ubi, max_beb_per1024);
801c135c
AB
976 if (err)
977 goto out_free;
978
ad5942ba 979 err = -ENOMEM;
0ca39d74
AB
980 ubi->peb_buf = vmalloc(ubi->peb_size);
981 if (!ubi->peb_buf)
e88d6e10
AB
982 goto out_free;
983
77e6c2f0
RW
984#ifdef CONFIG_MTD_UBI_FASTMAP
985 ubi->fm_size = ubi_calc_fm_size(ubi);
986 ubi->fm_buf = vzalloc(ubi->fm_size);
987 if (!ubi->fm_buf)
988 goto out_free;
989#endif
dac6e208 990 err = ubi_attach(ubi, 0);
801c135c 991 if (err) {
47e1ec70 992 ubi_err("failed to attach mtd%d, error %d", mtd->index, err);
eab73772 993 goto out_free;
801c135c
AB
994 }
995
4ccf8cff
AB
996 if (ubi->autoresize_vol_id != -1) {
997 err = autoresize(ubi, ubi->autoresize_vol_id);
998 if (err)
999 goto out_detach;
1000 }
1001
0bf1c439 1002 err = uif_init(ubi, &ref);
801c135c 1003 if (err)
0bf1c439 1004 goto out_detach;
801c135c 1005
2a734bb8
AB
1006 err = ubi_debugfs_init_dev(ubi);
1007 if (err)
1008 goto out_uif;
1009
f170168b 1010 ubi->bgt_thread = kthread_create(ubi_thread, ubi, "%s", ubi->bgt_name);
cdfa788a
AB
1011 if (IS_ERR(ubi->bgt_thread)) {
1012 err = PTR_ERR(ubi->bgt_thread);
1013 ubi_err("cannot spawn \"%s\", error %d", ubi->bgt_name,
1014 err);
2a734bb8 1015 goto out_debugfs;
cdfa788a
AB
1016 }
1017
719bb840
AB
1018 ubi_msg("attached mtd%d (name \"%s\", size %llu MiB) to ubi%d",
1019 mtd->index, mtd->name, ubi->flash_size >> 20, ubi_num);
1020 ubi_msg("PEB size: %d bytes (%d KiB), LEB size: %d bytes",
1021 ubi->peb_size, ubi->peb_size >> 10, ubi->leb_size);
1022 ubi_msg("min./max. I/O unit sizes: %d/%d, sub-page size %d",
1023 ubi->min_io_size, ubi->max_write_size, ubi->hdrs_min_io_size);
1024 ubi_msg("VID header offset: %d (aligned %d), data offset: %d",
1025 ubi->vid_hdr_offset, ubi->vid_hdr_aloffset, ubi->leb_start);
1026 ubi_msg("good PEBs: %d, bad PEBs: %d, corrupted PEBs: %d",
1027 ubi->good_peb_count, ubi->bad_peb_count, ubi->corr_peb_count);
1028 ubi_msg("user volume: %d, internal volumes: %d, max. volumes count: %d",
1029 ubi->vol_count - UBI_INT_VOL_COUNT, UBI_INT_VOL_COUNT,
1030 ubi->vtbl_slots);
1031 ubi_msg("max/mean erase counter: %d/%d, WL threshold: %d, image sequence number: %u",
1032 ubi->max_ec, ubi->mean_ec, CONFIG_MTD_UBI_WL_THRESHOLD,
1033 ubi->image_seq);
1034 ubi_msg("available PEBs: %d, total reserved PEBs: %d, PEBs reserved for bad PEB handling: %d",
1035 ubi->avail_pebs, ubi->rsvd_pebs, ubi->beb_rsvd_pebs);
801c135c 1036
ddbd3b61
AB
1037 /*
1038 * The below lock makes sure we do not race with 'ubi_thread()' which
1039 * checks @ubi->thread_enabled. Otherwise we may fail to wake it up.
1040 */
1041 spin_lock(&ubi->wl_lock);
28237e45 1042 ubi->thread_enabled = 1;
d37e6bf6 1043 wake_up_process(ubi->bgt_thread);
ddbd3b61 1044 spin_unlock(&ubi->wl_lock);
801c135c 1045
897a316c 1046 ubi_devices[ubi_num] = ubi;
0e0ee1cc 1047 ubi_notify_all(ubi, UBI_VOLUME_ADDED, NULL);
897a316c 1048 return ubi_num;
801c135c 1049
2a734bb8
AB
1050out_debugfs:
1051 ubi_debugfs_exit_dev(ubi);
cdfa788a 1052out_uif:
01a4110d
AB
1053 get_device(&ubi->dev);
1054 ubi_assert(ref);
cdfa788a 1055 uif_close(ubi);
801c135c 1056out_detach:
801c135c 1057 ubi_wl_close(ubi);
47e1ec70 1058 ubi_free_internal_volumes(ubi);
d7f0c4dc 1059 vfree(ubi->vtbl);
801c135c 1060out_free:
0ca39d74 1061 vfree(ubi->peb_buf);
77e6c2f0 1062 vfree(ubi->fm_buf);
0bf1c439
AB
1063 if (ref)
1064 put_device(&ubi->dev);
1065 else
1066 kfree(ubi);
801c135c
AB
1067 return err;
1068}
1069
1070/**
cdfa788a
AB
1071 * ubi_detach_mtd_dev - detach an MTD device.
1072 * @ubi_num: UBI device number to detach from
1073 * @anyway: detach MTD even if device reference count is not zero
1074 *
1075 * This function destroys an UBI device number @ubi_num and detaches the
1076 * underlying MTD device. Returns zero in case of success and %-EBUSY if the
1077 * UBI device is busy and cannot be destroyed, and %-EINVAL if it does not
1078 * exist.
1079 *
1080 * Note, the invocations of this function has to be serialized by the
1081 * @ubi_devices_mutex.
801c135c 1082 */
cdfa788a 1083int ubi_detach_mtd_dev(int ubi_num, int anyway)
801c135c 1084{
cdfa788a
AB
1085 struct ubi_device *ubi;
1086
1087 if (ubi_num < 0 || ubi_num >= UBI_MAX_DEVICES)
1088 return -EINVAL;
1089
0e0ee1cc
DP
1090 ubi = ubi_get_device(ubi_num);
1091 if (!ubi)
cdfa788a 1092 return -EINVAL;
cdfa788a 1093
0e0ee1cc
DP
1094 spin_lock(&ubi_devices_lock);
1095 put_device(&ubi->dev);
1096 ubi->ref_count -= 1;
cdfa788a
AB
1097 if (ubi->ref_count) {
1098 if (!anyway) {
897a316c 1099 spin_unlock(&ubi_devices_lock);
cdfa788a
AB
1100 return -EBUSY;
1101 }
1102 /* This may only happen if there is a bug */
1103 ubi_err("%s reference count %d, destroy anyway",
1104 ubi->ubi_name, ubi->ref_count);
1105 }
897a316c 1106 ubi_devices[ubi_num] = NULL;
cdfa788a
AB
1107 spin_unlock(&ubi_devices_lock);
1108
897a316c 1109 ubi_assert(ubi_num == ubi->ubi_num);
0e0ee1cc 1110 ubi_notify_all(ubi, UBI_VOLUME_REMOVED, NULL);
719bb840 1111 ubi_msg("detaching mtd%d from ubi%d", ubi->mtd->index, ubi_num);
77e6c2f0
RW
1112#ifdef CONFIG_MTD_UBI_FASTMAP
1113 /* If we don't write a new fastmap at detach time we lose all
1114 * EC updates that have been made since the last written fastmap. */
1115 ubi_update_fastmap(ubi);
1116#endif
cdfa788a
AB
1117 /*
1118 * Before freeing anything, we have to stop the background thread to
1119 * prevent it from doing anything on this device while we are freeing.
1120 */
1121 if (ubi->bgt_thread)
1122 kthread_stop(ubi->bgt_thread);
801c135c 1123
36b477d0
AB
1124 /*
1125 * Get a reference to the device in order to prevent 'dev_release()'
0bf1c439 1126 * from freeing the @ubi object.
36b477d0
AB
1127 */
1128 get_device(&ubi->dev);
1129
2a734bb8 1130 ubi_debugfs_exit_dev(ubi);
801c135c 1131 uif_close(ubi);
77e6c2f0 1132
801c135c 1133 ubi_wl_close(ubi);
47e1ec70 1134 ubi_free_internal_volumes(ubi);
92ad8f37 1135 vfree(ubi->vtbl);
801c135c 1136 put_mtd_device(ubi->mtd);
0ca39d74 1137 vfree(ubi->peb_buf);
77e6c2f0 1138 vfree(ubi->fm_buf);
cdfa788a 1139 ubi_msg("mtd%d is detached from ubi%d", ubi->mtd->index, ubi->ubi_num);
36b477d0 1140 put_device(&ubi->dev);
cdfa788a 1141 return 0;
801c135c
AB
1142}
1143
cdfa788a 1144/**
f9b0080e
AB
1145 * open_mtd_by_chdev - open an MTD device by its character device node path.
1146 * @mtd_dev: MTD character device node path
1147 *
1148 * This helper function opens an MTD device by its character node device path.
1149 * Returns MTD device description object in case of success and a negative
1150 * error code in case of failure.
1151 */
1152static struct mtd_info * __init open_mtd_by_chdev(const char *mtd_dev)
1153{
1154 int err, major, minor, mode;
1155 struct path path;
1156
1157 /* Probably this is an MTD character device node path */
1158 err = kern_path(mtd_dev, LOOKUP_FOLLOW, &path);
1159 if (err)
1160 return ERR_PTR(err);
1161
1162 /* MTD device number is defined by the major / minor numbers */
1163 major = imajor(path.dentry->d_inode);
1164 minor = iminor(path.dentry->d_inode);
1165 mode = path.dentry->d_inode->i_mode;
1166 path_put(&path);
1167 if (major != MTD_CHAR_MAJOR || !S_ISCHR(mode))
1168 return ERR_PTR(-EINVAL);
1169
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) {
c4506092 1221 ubi_err("too many MTD devices, maximum is %d", UBI_MAX_DEVICES);
801c135c
AB
1222 return -EINVAL;
1223 }
1224
9f961b57 1225 /* Create base sysfs directory and sysfs files */
801c135c 1226 ubi_class = class_create(THIS_MODULE, UBI_NAME_STR);
9f961b57
AB
1227 if (IS_ERR(ubi_class)) {
1228 err = PTR_ERR(ubi_class);
c4506092 1229 ubi_err("cannot create UBI class");
9f961b57
AB
1230 goto out;
1231 }
801c135c
AB
1232
1233 err = class_create_file(ubi_class, &ubi_version);
9f961b57 1234 if (err) {
c4506092 1235 ubi_err("cannot create sysfs file");
801c135c 1236 goto out_class;
9f961b57
AB
1237 }
1238
1239 err = misc_register(&ubi_ctrl_cdev);
1240 if (err) {
c4506092 1241 ubi_err("cannot register device");
9f961b57
AB
1242 goto out_version;
1243 }
801c135c 1244
06b68ba1 1245 ubi_wl_entry_slab = kmem_cache_create("ubi_wl_entry_slab",
c4506092
AB
1246 sizeof(struct ubi_wl_entry),
1247 0, 0, NULL);
4d525145
JL
1248 if (!ubi_wl_entry_slab) {
1249 err = -ENOMEM;
b9a06623 1250 goto out_dev_unreg;
4d525145 1251 }
06b68ba1 1252
2a734bb8
AB
1253 err = ubi_debugfs_init();
1254 if (err)
1255 goto out_slab;
1256
1257
801c135c
AB
1258 /* Attach MTD devices */
1259 for (i = 0; i < mtd_devs; i++) {
1260 struct mtd_dev_param *p = &mtd_dev_param[i];
cdfa788a 1261 struct mtd_info *mtd;
801c135c
AB
1262
1263 cond_resched();
cdfa788a
AB
1264
1265 mtd = open_mtd_device(p->name);
1266 if (IS_ERR(mtd)) {
1267 err = PTR_ERR(mtd);
1557b9e1
MF
1268 ubi_err("cannot open mtd %s, error %d", p->name, err);
1269 /* See comment below re-ubi_is_module(). */
1270 if (ubi_is_module())
1271 goto out_detach;
1272 continue;
cdfa788a
AB
1273 }
1274
1275 mutex_lock(&ubi_devices_mutex);
83ff59a0 1276 err = ubi_attach_mtd_dev(mtd, p->ubi_num,
edac493d 1277 p->vid_hdr_offs, p->max_beb_per1024);
cdfa788a
AB
1278 mutex_unlock(&ubi_devices_mutex);
1279 if (err < 0) {
c4506092 1280 ubi_err("cannot attach mtd%d", mtd->index);
af7ad7a0
MKB
1281 put_mtd_device(mtd);
1282
1283 /*
1284 * Originally UBI stopped initializing on any error.
1285 * However, later on it was found out that this
1286 * behavior is not very good when UBI is compiled into
1287 * the kernel and the MTD devices to attach are passed
1288 * through the command line. Indeed, UBI failure
1289 * stopped whole boot sequence.
1290 *
1291 * To fix this, we changed the behavior for the
1292 * non-module case, but preserved the old behavior for
1293 * the module case, just for compatibility. This is a
1294 * little inconsistent, though.
1295 */
1296 if (ubi_is_module())
1297 goto out_detach;
9f961b57 1298 }
801c135c
AB
1299 }
1300
9d54c8a3
EG
1301 err = ubiblock_init();
1302 if (err) {
1303 ubi_err("block: cannot initialize, error %d", err);
1304
1305 /* See comment above re-ubi_is_module(). */
1306 if (ubi_is_module())
1307 goto out_detach;
1308 }
1309
801c135c
AB
1310 return 0;
1311
1312out_detach:
1313 for (k = 0; k < i; k++)
cdfa788a
AB
1314 if (ubi_devices[k]) {
1315 mutex_lock(&ubi_devices_mutex);
1316 ubi_detach_mtd_dev(ubi_devices[k]->ubi_num, 1);
1317 mutex_unlock(&ubi_devices_mutex);
1318 }
2a734bb8
AB
1319 ubi_debugfs_exit();
1320out_slab:
06b68ba1 1321 kmem_cache_destroy(ubi_wl_entry_slab);
9f961b57
AB
1322out_dev_unreg:
1323 misc_deregister(&ubi_ctrl_cdev);
3a8d4642 1324out_version:
801c135c
AB
1325 class_remove_file(ubi_class, &ubi_version);
1326out_class:
1327 class_destroy(ubi_class);
9f961b57 1328out:
6fde0f30 1329 ubi_err("cannot initialize UBI, error %d", err);
801c135c
AB
1330 return err;
1331}
cf38aca5 1332late_initcall(ubi_init);
801c135c
AB
1333
1334static void __exit ubi_exit(void)
1335{
b96bf4c3 1336 int i;
801c135c 1337
9d54c8a3
EG
1338 ubiblock_exit();
1339
b96bf4c3 1340 for (i = 0; i < UBI_MAX_DEVICES; i++)
cdfa788a
AB
1341 if (ubi_devices[i]) {
1342 mutex_lock(&ubi_devices_mutex);
1343 ubi_detach_mtd_dev(ubi_devices[i]->ubi_num, 1);
1344 mutex_unlock(&ubi_devices_mutex);
1345 }
2a734bb8 1346 ubi_debugfs_exit();
06b68ba1 1347 kmem_cache_destroy(ubi_wl_entry_slab);
9f961b57 1348 misc_deregister(&ubi_ctrl_cdev);
801c135c
AB
1349 class_remove_file(ubi_class, &ubi_version);
1350 class_destroy(ubi_class);
1351}
1352module_exit(ubi_exit);
1353
1354/**
ebaaf1af 1355 * bytes_str_to_int - convert a number of bytes string into an integer.
801c135c
AB
1356 * @str: the string to convert
1357 *
1358 * This function returns positive resulting integer in case of success and a
1359 * negative error code in case of failure.
1360 */
1361static int __init bytes_str_to_int(const char *str)
1362{
1363 char *endp;
1364 unsigned long result;
1365
1366 result = simple_strtoul(str, &endp, 0);
774b1382 1367 if (str == endp || result >= INT_MAX) {
6fde0f30 1368 ubi_err("incorrect bytes count: \"%s\"\n", str);
801c135c
AB
1369 return -EINVAL;
1370 }
1371
1372 switch (*endp) {
1373 case 'G':
1374 result *= 1024;
1375 case 'M':
1376 result *= 1024;
1377 case 'K':
801c135c 1378 result *= 1024;
aeddb877 1379 if (endp[1] == 'i' && endp[2] == 'B')
801c135c
AB
1380 endp += 2;
1381 case '\0':
1382 break;
1383 default:
6fde0f30 1384 ubi_err("incorrect bytes count: \"%s\"\n", str);
801c135c
AB
1385 return -EINVAL;
1386 }
1387
1388 return result;
1389}
1390
1391/**
1392 * ubi_mtd_param_parse - parse the 'mtd=' UBI parameter.
1393 * @val: the parameter value to parse
1394 * @kp: not used
1395 *
1396 * This function returns zero in case of success and a negative error code in
1397 * case of error.
1398 */
1399static int __init ubi_mtd_param_parse(const char *val, struct kernel_param *kp)
1400{
1401 int i, len;
1402 struct mtd_dev_param *p;
1403 char buf[MTD_PARAM_LEN_MAX];
1404 char *pbuf = &buf[0];
83ff59a0 1405 char *tokens[MTD_PARAM_MAX_COUNT], *token;
801c135c 1406
77c722dd
AB
1407 if (!val)
1408 return -EINVAL;
1409
801c135c 1410 if (mtd_devs == UBI_MAX_DEVICES) {
6fde0f30 1411 ubi_err("too many parameters, max. is %d\n",
e28453bb 1412 UBI_MAX_DEVICES);
801c135c
AB
1413 return -EINVAL;
1414 }
1415
1416 len = strnlen(val, MTD_PARAM_LEN_MAX);
1417 if (len == MTD_PARAM_LEN_MAX) {
6fde0f30 1418 ubi_err("parameter \"%s\" is too long, max. is %d\n",
e28453bb 1419 val, MTD_PARAM_LEN_MAX);
801c135c
AB
1420 return -EINVAL;
1421 }
1422
1423 if (len == 0) {
e28453bb 1424 pr_warn("UBI warning: empty 'mtd=' parameter - ignored\n");
801c135c
AB
1425 return 0;
1426 }
1427
1428 strcpy(buf, val);
1429
1430 /* Get rid of the final newline */
1431 if (buf[len - 1] == '\n')
503990eb 1432 buf[len - 1] = '\0';
801c135c 1433
5993f9b7 1434 for (i = 0; i < MTD_PARAM_MAX_COUNT; i++)
801c135c
AB
1435 tokens[i] = strsep(&pbuf, ",");
1436
1437 if (pbuf) {
6fde0f30 1438 ubi_err("too many arguments at \"%s\"\n", val);
801c135c
AB
1439 return -EINVAL;
1440 }
1441
801c135c
AB
1442 p = &mtd_dev_param[mtd_devs];
1443 strcpy(&p->name[0], tokens[0]);
1444
83ff59a0
MF
1445 token = tokens[1];
1446 if (token) {
1447 p->vid_hdr_offs = bytes_str_to_int(token);
801c135c 1448
83ff59a0
MF
1449 if (p->vid_hdr_offs < 0)
1450 return p->vid_hdr_offs;
1451 }
801c135c 1452
83ff59a0
MF
1453 token = tokens[2];
1454 if (token) {
1455 int err = kstrtoint(token, 10, &p->max_beb_per1024);
edac493d
RG
1456
1457 if (err) {
6fde0f30 1458 ubi_err("bad value for max_beb_per1024 parameter: %s",
83ff59a0 1459 token);
edac493d
RG
1460 return -EINVAL;
1461 }
1462 }
1463
83ff59a0
MF
1464 token = tokens[3];
1465 if (token) {
1466 int err = kstrtoint(token, 10, &p->ubi_num);
1467
1468 if (err) {
1469 ubi_err("bad value for ubi_num parameter: %s", token);
1470 return -EINVAL;
1471 }
1472 } else
1473 p->ubi_num = UBI_DEV_NUM_AUTO;
1474
801c135c
AB
1475 mtd_devs += 1;
1476 return 0;
1477}
1478
1479module_param_call(mtd, ubi_mtd_param_parse, NULL, NULL, 000);
83ff59a0 1480MODULE_PARM_DESC(mtd, "MTD devices to attach. Parameter format: mtd=<name|num|path>[,<vid_hdr_offs>[,max_beb_per1024[,ubi_num]]].\n"
801c135c 1481 "Multiple \"mtd\" parameters may be specified.\n"
edac493d
RG
1482 "MTD devices may be specified by their number, name, or path to the MTD character device node.\n"
1483 "Optional \"vid_hdr_offs\" parameter specifies UBI VID header position to be used by UBI. (default value if 0)\n"
1484 "Optional \"max_beb_per1024\" parameter specifies the maximum expected bad eraseblock per 1024 eraseblocks. (default value ("
1485 __stringify(CONFIG_MTD_UBI_BEB_LIMIT) ") if 0)\n"
83ff59a0 1486 "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
1487 "\n"
1488 "Example 1: mtd=/dev/mtd0 - attach MTD device /dev/mtd0.\n"
1489 "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"
1490 "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 1491 "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 1492 "\t(e.g. if the NAND *chipset* has 4096 PEB, 100 will be reserved for this UBI device).");
77e6c2f0
RW
1493#ifdef CONFIG_MTD_UBI_FASTMAP
1494module_param(fm_autoconvert, bool, 0644);
1495MODULE_PARM_DESC(fm_autoconvert, "Set this parameter to enable fastmap automatically on images without a fastmap.");
1496#endif
801c135c
AB
1497MODULE_VERSION(__stringify(UBI_VERSION));
1498MODULE_DESCRIPTION("UBI - Unsorted Block Images");
1499MODULE_AUTHOR("Artem Bityutskiy");
1500MODULE_LICENSE("GPL");
This page took 0.572974 seconds and 5 git commands to generate.