/openbmc/linux/drivers/mtd/ubi/ |
H A D | wl.c | 125 static int self_check_ec(struct ubi_device *ubi, int pnum, int ec); 126 static int self_check_in_wl_tree(const struct ubi_device *ubi, 128 static int self_check_in_pq(const struct ubi_device *ubi, 175 static void wl_entry_destroy(struct ubi_device *ubi, struct ubi_wl_entry *e) in wl_entry_destroy() argument 177 ubi->lookuptbl[e->pnum] = NULL; in wl_entry_destroy() 188 static int do_work(struct ubi_device *ubi) in do_work() argument 201 down_read(&ubi->work_sem); in do_work() 202 spin_lock(&ubi->wl_lock); in do_work() 203 if (list_empty(&ubi->works)) { in do_work() 204 spin_unlock(&ubi->wl_lock); in do_work() [all …]
|
H A D | build.c | 156 int ubi_volume_notify(struct ubi_device *ubi, struct ubi_volume *vol, int ntype) in ubi_volume_notify() argument 161 ubi_do_get_device_info(ubi, &nt.di); in ubi_volume_notify() 162 ubi_do_get_volume_info(ubi, vol, &nt.vi); in ubi_volume_notify() 169 ret = ubi_update_fastmap(ubi); in ubi_volume_notify() 171 ubi_msg(ubi, "Unable to write a new fastmap: %i", ret); in ubi_volume_notify() 188 int ubi_notify_all(struct ubi_device *ubi, int ntype, struct notifier_block *nb) in ubi_notify_all() argument 193 ubi_do_get_device_info(ubi, &nt.di); in ubi_notify_all() 195 mutex_lock(&ubi->device_mutex); in ubi_notify_all() 196 for (i = 0; i < ubi->vtbl_slots; i++) { in ubi_notify_all() 202 if (!ubi->volumes[i]) in ubi_notify_all() [all …]
|
H A D | fastmap-wl.c | 14 struct ubi_device *ubi = container_of(wrk, struct ubi_device, fm_work); in update_fastmap_work_fn() local 16 ubi_update_fastmap(ubi); in update_fastmap_work_fn() 17 spin_lock(&ubi->wl_lock); in update_fastmap_work_fn() 18 ubi->fm_work_scheduled = 0; in update_fastmap_work_fn() 19 spin_unlock(&ubi->wl_lock); in update_fastmap_work_fn() 42 static inline void return_unused_peb(struct ubi_device *ubi, in return_unused_peb() argument 45 wl_tree_add(e, &ubi->free); in return_unused_peb() 46 ubi->free_count++; in return_unused_peb() 54 static void return_unused_pool_pebs(struct ubi_device *ubi, in return_unused_pool_pebs() argument 61 e = ubi->lookuptbl[pool->pebs[i]]; in return_unused_pool_pebs() [all …]
|
H A D | io.c | 81 static int self_check_not_bad(const struct ubi_device *ubi, int pnum); 82 static int self_check_peb_ec_hdr(const struct ubi_device *ubi, int pnum); 83 static int self_check_ec_hdr(const struct ubi_device *ubi, int pnum, 85 static int self_check_peb_vid_hdr(const struct ubi_device *ubi, int pnum); 86 static int self_check_vid_hdr(const struct ubi_device *ubi, int pnum, 88 static int self_check_write(struct ubi_device *ubi, const void *buf, int pnum, 113 int ubi_io_read(const struct ubi_device *ubi, void *buf, int pnum, int offset, in ubi_io_read() argument 122 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_read() 123 ubi_assert(offset >= 0 && offset + len <= ubi->peb_size); in ubi_io_read() 126 err = self_check_not_bad(ubi, pnum); in ubi_io_read() [all …]
|
H A D | vmt.c | 19 static int self_check_volumes(struct ubi_device *ubi); 59 struct ubi_device *ubi = vol->ubi; in vol_attribute_show() local 61 spin_lock(&ubi->volumes_lock); in vol_attribute_show() 62 if (!ubi->volumes[vol->vol_id]) { in vol_attribute_show() 63 spin_unlock(&ubi->volumes_lock); in vol_attribute_show() 68 spin_unlock(&ubi->volumes_lock); in vol_attribute_show() 97 spin_lock(&ubi->volumes_lock); in vol_attribute_show() 100 spin_unlock(&ubi->volumes_lock); in vol_attribute_show() 138 int ubi_create_volume(struct ubi_device *ubi, struct ubi_mkvol_req *req) in ubi_create_volume() argument 145 if (ubi->ro_mode) in ubi_create_volume() [all …]
|
H A D | vtbl.c | 54 static void self_vtbl_check(const struct ubi_device *ubi); 63 static int ubi_update_layout_vol(struct ubi_device *ubi) in ubi_update_layout_vol() argument 68 layout_vol = ubi->volumes[vol_id2idx(ubi, UBI_LAYOUT_VOLUME_ID)]; in ubi_update_layout_vol() 70 err = ubi_eba_atomic_leb_change(ubi, layout_vol, i, ubi->vtbl, in ubi_update_layout_vol() 71 ubi->vtbl_size); in ubi_update_layout_vol() 90 int ubi_change_vtbl_record(struct ubi_device *ubi, int idx, in ubi_change_vtbl_record() argument 96 ubi_assert(idx >= 0 && idx < ubi->vtbl_slots); in ubi_change_vtbl_record() 105 memcpy(&ubi->vtbl[idx], vtbl_rec, sizeof(struct ubi_vtbl_record)); in ubi_change_vtbl_record() 106 err = ubi_update_layout_vol(ubi); in ubi_change_vtbl_record() 108 self_vtbl_check(ubi); in ubi_change_vtbl_record() [all …]
|
H A D | eba.c | 71 unsigned long long ubi_next_sqnum(struct ubi_device *ubi) in ubi_next_sqnum() argument 75 spin_lock(&ubi->ltree_lock); in ubi_next_sqnum() 76 sqnum = ubi->global_sqnum++; in ubi_next_sqnum() 77 spin_unlock(&ubi->ltree_lock); in ubi_next_sqnum() 90 static int ubi_get_compat(const struct ubi_device *ubi, int vol_id) in ubi_get_compat() argument 210 static struct ubi_ltree_entry *ltree_lookup(struct ubi_device *ubi, int vol_id, in ltree_lookup() argument 215 p = ubi->ltree.rb_node; in ltree_lookup() 249 static struct ubi_ltree_entry *ltree_add_entry(struct ubi_device *ubi, in ltree_add_entry() argument 263 spin_lock(&ubi->ltree_lock); in ltree_add_entry() 264 le1 = ltree_lookup(ubi, vol_id, lnum); in ltree_add_entry() [all …]
|
H A D | ubi.h | 43 void ubi_msg(const struct ubi_device *ubi, const char *fmt, ...); 47 void ubi_warn(const struct ubi_device *ubi, const char *fmt, ...); 51 void ubi_err(const struct ubi_device *ubi, const char *fmt, ...); 341 struct ubi_device *ubi; member 803 int (*func)(struct ubi_device *ubi, struct ubi_work *wrk, int shutdown); 825 int ubi_add_to_av(struct ubi_device *ubi, struct ubi_attach_info *ai, int pnum, 831 struct ubi_ainf_peb *ubi_early_get_peb(struct ubi_device *ubi, 833 int ubi_attach(struct ubi_device *ubi, int force_scan); 837 int ubi_change_vtbl_record(struct ubi_device *ubi, int idx, 839 int ubi_vtbl_rename_volumes(struct ubi_device *ubi, [all …]
|
H A D | fastmap.c | 16 static inline unsigned long *init_seen(struct ubi_device *ubi) in init_seen() argument 20 if (!ubi_dbg_chk_fastmap(ubi)) in init_seen() 23 ret = bitmap_zalloc(ubi->peb_count, GFP_KERNEL); in init_seen() 45 static inline void set_seen(struct ubi_device *ubi, int pnum, unsigned long *seen) in set_seen() argument 47 if (!ubi_dbg_chk_fastmap(ubi) || !seen) in set_seen() 58 static int self_check_seen(struct ubi_device *ubi, unsigned long *seen) in self_check_seen() argument 62 if (!ubi_dbg_chk_fastmap(ubi) || !seen) in self_check_seen() 65 for (pnum = 0; pnum < ubi->peb_count; pnum++) { in self_check_seen() 66 if (!test_bit(pnum, seen) && ubi->lookuptbl[pnum]) { in self_check_seen() 67 ubi_err(ubi, "self-check failed for PEB %d, fastmap didn't see it", pnum); in self_check_seen() [all …]
|
H A D | kapi.c | 26 void ubi_do_get_device_info(struct ubi_device *ubi, struct ubi_device_info *di) in ubi_do_get_device_info() argument 28 di->ubi_num = ubi->ubi_num; in ubi_do_get_device_info() 29 di->leb_size = ubi->leb_size; in ubi_do_get_device_info() 30 di->leb_start = ubi->leb_start; in ubi_do_get_device_info() 31 di->min_io_size = ubi->min_io_size; in ubi_do_get_device_info() 32 di->max_write_size = ubi->max_write_size; in ubi_do_get_device_info() 33 di->ro_mode = ubi->ro_mode; in ubi_do_get_device_info() 34 di->cdev = ubi->cdev.dev; in ubi_do_get_device_info() 48 struct ubi_device *ubi; in ubi_get_device_info() local 52 ubi = ubi_get_device(ubi_num); in ubi_get_device_info() [all …]
|
H A D | misc.c | 22 int ubi_calc_data_len(const struct ubi_device *ubi, const void *buf, in ubi_calc_data_len() argument 27 ubi_assert(!(length & (ubi->min_io_size - 1))); in ubi_calc_data_len() 34 length = ALIGN(i + 1, ubi->min_io_size); in ubi_calc_data_len() 48 int ubi_check_volume(struct ubi_device *ubi, int vol_id) in ubi_check_volume() argument 52 struct ubi_volume *vol = ubi->volumes[vol_id]; in ubi_check_volume() 71 err = ubi_eba_read_leb(ubi, vol, i, buf, 0, size, 1); in ubi_check_volume() 92 void ubi_update_reserved(struct ubi_device *ubi) in ubi_update_reserved() argument 94 int need = ubi->beb_rsvd_level - ubi->beb_rsvd_pebs; in ubi_update_reserved() 96 if (need <= 0 || ubi->avail_pebs == 0) in ubi_update_reserved() 99 need = min_t(int, need, ubi->avail_pebs); in ubi_update_reserved() [all …]
|
/openbmc/u-boot/drivers/mtd/ubi/ |
H A D | build.c | 182 int ubi_volume_notify(struct ubi_device *ubi, struct ubi_volume *vol, int ntype) in ubi_volume_notify() argument 187 ubi_do_get_device_info(ubi, &nt.di); in ubi_volume_notify() 188 ubi_do_get_volume_info(ubi, vol, &nt.vi); in ubi_volume_notify() 195 ret = ubi_update_fastmap(ubi); in ubi_volume_notify() 197 ubi_msg(ubi, "Unable to write a new fastmap: %i", ret); in ubi_volume_notify() 214 int ubi_notify_all(struct ubi_device *ubi, int ntype, struct notifier_block *nb) in ubi_notify_all() argument 222 ubi_do_get_device_info(ubi, &nt.di); in ubi_notify_all() 224 mutex_lock(&ubi->device_mutex); in ubi_notify_all() 225 for (i = 0; i < ubi->vtbl_slots; i++) { in ubi_notify_all() 231 if (!ubi->volumes[i]) in ubi_notify_all() [all …]
|
H A D | wl.c | 130 static int self_check_ec(struct ubi_device *ubi, int pnum, int ec); 131 static int self_check_in_wl_tree(const struct ubi_device *ubi, 133 static int self_check_in_pq(const struct ubi_device *ubi, 180 static void wl_entry_destroy(struct ubi_device *ubi, struct ubi_wl_entry *e) in wl_entry_destroy() argument 182 ubi->lookuptbl[e->pnum] = NULL; in wl_entry_destroy() 193 static int do_work(struct ubi_device *ubi) in do_work() argument 206 down_read(&ubi->work_sem); in do_work() 207 spin_lock(&ubi->wl_lock); in do_work() 208 if (list_empty(&ubi->works)) { in do_work() 209 spin_unlock(&ubi->wl_lock); in do_work() [all …]
|
H A D | fastmap-wl.c | 16 void update_fastmap_work_fn(struct ubi_device *ubi) in update_fastmap_work_fn() 20 struct ubi_device *ubi = container_of(wrk, struct ubi_device, fm_work); in update_fastmap_work_fn() local 23 ubi_update_fastmap(ubi); in update_fastmap_work_fn() 24 spin_lock(&ubi->wl_lock); in update_fastmap_work_fn() 25 ubi->fm_work_scheduled = 0; in update_fastmap_work_fn() 26 spin_unlock(&ubi->wl_lock); in update_fastmap_work_fn() 54 static void return_unused_pool_pebs(struct ubi_device *ubi, in return_unused_pool_pebs() argument 61 e = ubi->lookuptbl[pool->pebs[i]]; in return_unused_pool_pebs() 62 wl_tree_add(e, &ubi->free); in return_unused_pool_pebs() 63 ubi->free_count++; in return_unused_pool_pebs() [all …]
|
H A D | io.c | 87 static int self_check_not_bad(const struct ubi_device *ubi, int pnum); 88 static int self_check_peb_ec_hdr(const struct ubi_device *ubi, int pnum); 89 static int self_check_ec_hdr(const struct ubi_device *ubi, int pnum, 91 static int self_check_peb_vid_hdr(const struct ubi_device *ubi, int pnum); 92 static int self_check_vid_hdr(const struct ubi_device *ubi, int pnum, 94 static int self_check_write(struct ubi_device *ubi, const void *buf, int pnum, 119 int ubi_io_read(const struct ubi_device *ubi, void *buf, int pnum, int offset, in ubi_io_read() argument 128 ubi_assert(pnum >= 0 && pnum < ubi->peb_count); in ubi_io_read() 129 ubi_assert(offset >= 0 && offset + len <= ubi->peb_size); in ubi_io_read() 132 err = self_check_not_bad(ubi, pnum); in ubi_io_read() [all …]
|
H A D | eba.c | 52 unsigned long long ubi_next_sqnum(struct ubi_device *ubi) in ubi_next_sqnum() argument 56 spin_lock(&ubi->ltree_lock); in ubi_next_sqnum() 57 sqnum = ubi->global_sqnum++; in ubi_next_sqnum() 58 spin_unlock(&ubi->ltree_lock); in ubi_next_sqnum() 71 static int ubi_get_compat(const struct ubi_device *ubi, int vol_id) in ubi_get_compat() argument 88 static struct ubi_ltree_entry *ltree_lookup(struct ubi_device *ubi, int vol_id, in ltree_lookup() argument 93 p = ubi->ltree.rb_node; in ltree_lookup() 127 static struct ubi_ltree_entry *ltree_add_entry(struct ubi_device *ubi, in ltree_add_entry() argument 141 spin_lock(&ubi->ltree_lock); in ltree_add_entry() 142 le1 = ltree_lookup(ubi, vol_id, lnum); in ltree_add_entry() [all …]
|
H A D | vmt.c | 25 static int self_check_volumes(struct ubi_device *ubi); 66 struct ubi_device *ubi; in vol_attribute_show() local 68 ubi = ubi_get_device(vol->ubi->ubi_num); in vol_attribute_show() 69 if (!ubi) in vol_attribute_show() 72 spin_lock(&ubi->volumes_lock); in vol_attribute_show() 73 if (!ubi->volumes[vol->vol_id]) { in vol_attribute_show() 74 spin_unlock(&ubi->volumes_lock); in vol_attribute_show() 75 ubi_put_device(ubi); in vol_attribute_show() 80 spin_unlock(&ubi->volumes_lock); in vol_attribute_show() 109 spin_lock(&ubi->volumes_lock); in vol_attribute_show() [all …]
|
H A D | vtbl.c | 60 static void self_vtbl_check(const struct ubi_device *ubi); 69 static int ubi_update_layout_vol(struct ubi_device *ubi) in ubi_update_layout_vol() argument 74 layout_vol = ubi->volumes[vol_id2idx(ubi, UBI_LAYOUT_VOLUME_ID)]; in ubi_update_layout_vol() 76 err = ubi_eba_atomic_leb_change(ubi, layout_vol, i, ubi->vtbl, in ubi_update_layout_vol() 77 ubi->vtbl_size); in ubi_update_layout_vol() 96 int ubi_change_vtbl_record(struct ubi_device *ubi, int idx, in ubi_change_vtbl_record() argument 102 ubi_assert(idx >= 0 && idx < ubi->vtbl_slots); in ubi_change_vtbl_record() 111 memcpy(&ubi->vtbl[idx], vtbl_rec, sizeof(struct ubi_vtbl_record)); in ubi_change_vtbl_record() 112 err = ubi_update_layout_vol(ubi); in ubi_change_vtbl_record() 114 self_vtbl_check(ubi); in ubi_change_vtbl_record() [all …]
|
H A D | ubi.h | 45 #define ubi_msg(ubi, fmt, ...) argument 47 #define ubi_msg(ubi, fmt, ...) printk(UBI_NAME_STR "%d: " fmt "\n", \ argument 48 ubi->ubi_num, ##__VA_ARGS__) 52 #define ubi_warn(ubi, fmt, ...) pr_warn(UBI_NAME_STR "%d warning: %s: " fmt "\n", \ argument 53 ubi->ubi_num, __func__, ##__VA_ARGS__) 55 #define ubi_err(ubi, fmt, ...) pr_err(UBI_NAME_STR "%d error: %s: " fmt "\n", \ argument 56 ubi->ubi_num, __func__, ##__VA_ARGS__) 314 struct ubi_device *ubi; member 765 int (*func)(struct ubi_device *ubi, struct ubi_work *wrk, int shutdown); 785 int ubi_add_to_av(struct ubi_device *ubi, struct ubi_attach_info *ai, int pnum, [all …]
|
H A D | fastmap.c | 25 static inline int *init_seen(struct ubi_device *ubi) in init_seen() argument 29 if (!ubi_dbg_chk_fastmap(ubi)) in init_seen() 32 ret = kcalloc(ubi->peb_count, sizeof(int), GFP_KERNEL); in init_seen() 54 static inline void set_seen(struct ubi_device *ubi, int pnum, int *seen) in set_seen() argument 56 if (!ubi_dbg_chk_fastmap(ubi) || !seen) in set_seen() 67 static int self_check_seen(struct ubi_device *ubi, int *seen) in self_check_seen() argument 71 if (!ubi_dbg_chk_fastmap(ubi) || !seen) in self_check_seen() 74 for (pnum = 0; pnum < ubi->peb_count; pnum++) { in self_check_seen() 75 if (!seen[pnum] && ubi->lookuptbl[pnum]) { in self_check_seen() 76 ubi_err(ubi, "self-check failed for PEB %d, fastmap didn't see it", pnum); in self_check_seen() [all …]
|
H A D | kapi.c | 31 void ubi_do_get_device_info(struct ubi_device *ubi, struct ubi_device_info *di) in ubi_do_get_device_info() argument 33 di->ubi_num = ubi->ubi_num; in ubi_do_get_device_info() 34 di->leb_size = ubi->leb_size; in ubi_do_get_device_info() 35 di->leb_start = ubi->leb_start; in ubi_do_get_device_info() 36 di->min_io_size = ubi->min_io_size; in ubi_do_get_device_info() 37 di->max_write_size = ubi->max_write_size; in ubi_do_get_device_info() 38 di->ro_mode = ubi->ro_mode; in ubi_do_get_device_info() 40 di->cdev = ubi->cdev.dev; in ubi_do_get_device_info() 55 struct ubi_device *ubi; in ubi_get_device_info() local 59 ubi = ubi_get_device(ubi_num); in ubi_get_device_info() [all …]
|
H A D | attach.c | 87 static int self_check_ai(struct ubi_device *ubi, struct ubi_attach_info *ai); 187 static int validate_vid_hdr(const struct ubi_device *ubi, in validate_vid_hdr() argument 206 ubi_err(ubi, "inconsistent vol_id"); in validate_vid_hdr() 216 ubi_err(ubi, "inconsistent vol_type"); in validate_vid_hdr() 221 ubi_err(ubi, "inconsistent used_ebs"); in validate_vid_hdr() 226 ubi_err(ubi, "inconsistent data_pad"); in validate_vid_hdr() 234 ubi_err(ubi, "inconsistent VID header at PEB %d", pnum); in validate_vid_hdr() 319 int ubi_compare_lebs(struct ubi_device *ubi, const struct ubi_ainf_peb *aeb, in ubi_compare_lebs() argument 336 ubi_err(ubi, "unsupported on-flash UBI format"); in ubi_compare_lebs() 367 vh = ubi_zalloc_vid_hdr(ubi, GFP_KERNEL); in ubi_compare_lebs() [all …]
|
H A D | misc.c | 23 int ubi_calc_data_len(const struct ubi_device *ubi, const void *buf, in ubi_calc_data_len() argument 28 ubi_assert(!(length & (ubi->min_io_size - 1))); in ubi_calc_data_len() 35 length = ALIGN(i + 1, ubi->min_io_size); in ubi_calc_data_len() 49 int ubi_check_volume(struct ubi_device *ubi, int vol_id) in ubi_check_volume() argument 53 struct ubi_volume *vol = ubi->volumes[vol_id]; in ubi_check_volume() 72 err = ubi_eba_read_leb(ubi, vol, i, buf, 0, size, 1); in ubi_check_volume() 93 void ubi_update_reserved(struct ubi_device *ubi) in ubi_update_reserved() argument 95 int need = ubi->beb_rsvd_level - ubi->beb_rsvd_pebs; in ubi_update_reserved() 97 if (need <= 0 || ubi->avail_pebs == 0) in ubi_update_reserved() 100 need = min_t(int, need, ubi->avail_pebs); in ubi_update_reserved() [all …]
|
/openbmc/u-boot/drivers/mtd/ubispl/ |
H A D | ubispl.c | 22 static size_t ubi_calc_fm_size(struct ubi_scan_info *ubi) in ubi_calc_fm_size() argument 30 (ubi->peb_count * sizeof(struct ubi_fm_ec)) + in ubi_calc_fm_size() 32 (ubi->peb_count * sizeof(__be32))) + in ubi_calc_fm_size() 34 return roundup(size, ubi->leb_size); in ubi_calc_fm_size() 37 static int ubi_io_read(struct ubi_scan_info *ubi, void *buf, int pnum, in ubi_io_read() argument 40 return ubi->read(pnum + ubi->peb_offset, from, len, buf); in ubi_io_read() 43 static int ubi_io_is_bad(struct ubi_scan_info *ubi, int peb) in ubi_io_is_bad() argument 45 return peb >= ubi->peb_count || peb < 0; in ubi_io_is_bad() 48 static int ubi_io_read_vid_hdr(struct ubi_scan_info *ubi, int pnum, in ubi_io_read_vid_hdr() argument 55 if (test_bit(pnum, ubi->corrupt)) in ubi_io_read_vid_hdr() [all …]
|
/openbmc/u-boot/cmd/ |
H A D | ubi.c | 32 static struct ubi_device *ubi; variable 38 static void display_volume_info(struct ubi_device *ubi) in display_volume_info() argument 42 for (i = 0; i < (ubi->vtbl_slots + 1); i++) { in display_volume_info() 43 if (!ubi->volumes[i]) in display_volume_info() 45 ubi_dump_vol_info(ubi->volumes[i]); in display_volume_info() 49 static void display_ubi_info(struct ubi_device *ubi) in display_ubi_info() argument 51 ubi_msg("MTD device name: \"%s\"", ubi->mtd->name); in display_ubi_info() 52 ubi_msg("MTD device size: %llu MiB", ubi->flash_size >> 20); in display_ubi_info() 54 ubi->peb_size, ubi->peb_size >> 10); in display_ubi_info() 55 ubi_msg("logical eraseblock size: %d bytes", ubi->leb_size); in display_ubi_info() [all …]
|