Symbol: btt
arch/s390/kernel/traps.c
256
enum bug_trap_type btt;
arch/s390/kernel/traps.c
262
btt = report_bug_entry((struct bug_entry *)regs->gprs[2], regs);
arch/s390/kernel/traps.c
264
btt = report_bug(regs->psw.addr - (regs->int_code >> 16), regs);
arch/s390/kernel/traps.c
266
switch (btt) {
drivers/nvdimm/btt.c
1022
static int btt_meta_init(struct btt *btt)
drivers/nvdimm/btt.c
1027
mutex_lock(&btt->init_lock);
drivers/nvdimm/btt.c
1028
list_for_each_entry(arena, &btt->arena_list, list) {
drivers/nvdimm/btt.c
1046
btt->init_state = INIT_READY;
drivers/nvdimm/btt.c
1049
mutex_unlock(&btt->init_lock);
drivers/nvdimm/btt.c
1053
static u32 btt_meta_size(struct btt *btt)
drivers/nvdimm/btt.c
1055
return btt->lbasize - btt->sector_size;
drivers/nvdimm/btt.c
1065
static int lba_to_arena(struct btt *btt, sector_t sector, __u32 *premap,
drivers/nvdimm/btt.c
1069
__u64 lba = div_u64(sector << SECTOR_SHIFT, btt->sector_size);
drivers/nvdimm/btt.c
1071
list_for_each_entry(arena_list, &btt->arena_list, list) {
drivers/nvdimm/btt.c
1138
static int btt_rw_integrity(struct btt *btt, struct bio_integrity_payload *bip,
drivers/nvdimm/btt.c
1141
unsigned int len = btt_meta_size(btt);
drivers/nvdimm/btt.c
1148
meta_nsoff = to_namespace_offset(arena, postmap) + btt->sector_size;
drivers/nvdimm/btt.c
1185
static int btt_rw_integrity(struct btt *btt, struct bio_integrity_payload *bip,
drivers/nvdimm/btt.c
1192
static int btt_read_pg(struct btt *btt, struct bio_integrity_payload *bip,
drivers/nvdimm/btt.c
1204
lane = nd_region_acquire_lane(btt->nd_region);
drivers/nvdimm/btt.c
1206
ret = lba_to_arena(btt, sector, &premap, &arena);
drivers/nvdimm/btt.c
1210
cur_len = min(btt->sector_size, len);
drivers/nvdimm/btt.c
1268
ret = btt_rw_integrity(btt, bip, arena, postmap, READ);
drivers/nvdimm/btt.c
1274
nd_region_release_lane(btt->nd_region, lane);
drivers/nvdimm/btt.c
1278
sector += btt->sector_size >> SECTOR_SHIFT;
drivers/nvdimm/btt.c
1286
nd_region_release_lane(btt->nd_region, lane);
drivers/nvdimm/btt.c
1295
static bool btt_is_badblock(struct btt *btt, struct arena_info *arena,
drivers/nvdimm/btt.c
1302
return is_bad_pmem(btt->phys_bb, phys_sector, arena->internal_lbasize);
drivers/nvdimm/btt.c
1305
static int btt_write_pg(struct btt *btt, struct bio_integrity_payload *bip,
drivers/nvdimm/btt.c
1320
lane = nd_region_acquire_lane(btt->nd_region);
drivers/nvdimm/btt.c
1322
ret = lba_to_arena(btt, sector, &premap, &arena);
drivers/nvdimm/btt.c
1325
cur_len = min(btt->sector_size, len);
drivers/nvdimm/btt.c
1332
if (btt_is_badblock(btt, arena, arena->freelist[lane].block))
drivers/nvdimm/btt.c
1337
nd_region_release_lane(btt->nd_region, lane);
drivers/nvdimm/btt.c
1365
ret = btt_rw_integrity(btt, bip, arena, new_postmap,
drivers/nvdimm/btt.c
1398
nd_region_release_lane(btt->nd_region, lane);
drivers/nvdimm/btt.c
1408
sector += btt->sector_size >> SECTOR_SHIFT;
drivers/nvdimm/btt.c
1416
nd_region_release_lane(btt->nd_region, lane);
drivers/nvdimm/btt.c
1420
static int btt_do_bvec(struct btt *btt, struct bio_integrity_payload *bip,
drivers/nvdimm/btt.c
1427
ret = btt_read_pg(btt, bip, page, off, sector, len);
drivers/nvdimm/btt.c
1431
ret = btt_write_pg(btt, bip, sector, page, off, len);
drivers/nvdimm/btt.c
1440
struct btt *btt = bio->bi_bdev->bd_disk->private_data;
drivers/nvdimm/btt.c
1458
if (len > PAGE_SIZE || len < btt->sector_size ||
drivers/nvdimm/btt.c
1459
len % btt->sector_size) {
drivers/nvdimm/btt.c
1460
dev_err_ratelimited(&btt->nd_btt->dev,
drivers/nvdimm/btt.c
1466
err = btt_do_bvec(btt, bip, bvec.bv_page, len, bvec.bv_offset,
drivers/nvdimm/btt.c
1469
dev_err(&btt->nd_btt->dev,
drivers/nvdimm/btt.c
1499
static int btt_blk_init(struct btt *btt)
drivers/nvdimm/btt.c
1501
struct nd_btt *nd_btt = btt->nd_btt;
drivers/nvdimm/btt.c
1504
.logical_block_size = btt->sector_size,
drivers/nvdimm/btt.c
1511
if (btt_meta_size(btt) && IS_ENABLED(CONFIG_BLK_DEV_INTEGRITY)) {
drivers/nvdimm/btt.c
1512
lim.integrity.metadata_size = btt_meta_size(btt);
drivers/nvdimm/btt.c
1513
lim.integrity.tag_size = btt_meta_size(btt);
drivers/nvdimm/btt.c
1516
btt->btt_disk = blk_alloc_disk(&lim, NUMA_NO_NODE);
drivers/nvdimm/btt.c
1517
if (IS_ERR(btt->btt_disk))
drivers/nvdimm/btt.c
1518
return PTR_ERR(btt->btt_disk);
drivers/nvdimm/btt.c
1520
nvdimm_namespace_disk_name(ndns, btt->btt_disk->disk_name);
drivers/nvdimm/btt.c
1521
btt->btt_disk->first_minor = 0;
drivers/nvdimm/btt.c
1522
btt->btt_disk->fops = &btt_fops;
drivers/nvdimm/btt.c
1523
btt->btt_disk->private_data = btt;
drivers/nvdimm/btt.c
1525
set_capacity(btt->btt_disk, btt->nlba * btt->sector_size >> 9);
drivers/nvdimm/btt.c
1526
rc = device_add_disk(&btt->nd_btt->dev, btt->btt_disk, NULL);
drivers/nvdimm/btt.c
1530
btt->nd_btt->size = btt->nlba * (u64)btt->sector_size;
drivers/nvdimm/btt.c
1531
nvdimm_check_and_set_ro(btt->btt_disk);
drivers/nvdimm/btt.c
1536
put_disk(btt->btt_disk);
drivers/nvdimm/btt.c
1540
static void btt_blk_cleanup(struct btt *btt)
drivers/nvdimm/btt.c
1542
del_gendisk(btt->btt_disk);
drivers/nvdimm/btt.c
1543
put_disk(btt->btt_disk);
drivers/nvdimm/btt.c
1563
static struct btt *btt_init(struct nd_btt *nd_btt, unsigned long long rawsize,
drivers/nvdimm/btt.c
1568
struct btt *btt;
drivers/nvdimm/btt.c
1572
btt = devm_kzalloc(dev, sizeof(struct btt), GFP_KERNEL);
drivers/nvdimm/btt.c
1573
if (!btt)
drivers/nvdimm/btt.c
1576
btt->nd_btt = nd_btt;
drivers/nvdimm/btt.c
1577
btt->rawsize = rawsize;
drivers/nvdimm/btt.c
1578
btt->lbasize = lbasize;
drivers/nvdimm/btt.c
1579
btt->sector_size = ((lbasize >= 4096) ? 4096 : 512);
drivers/nvdimm/btt.c
1580
INIT_LIST_HEAD(&btt->arena_list);
drivers/nvdimm/btt.c
1581
mutex_init(&btt->init_lock);
drivers/nvdimm/btt.c
1582
btt->nd_region = nd_region;
drivers/nvdimm/btt.c
1584
btt->phys_bb = &nsio->bb;
drivers/nvdimm/btt.c
1586
ret = discover_arenas(btt);
drivers/nvdimm/btt.c
1592
if (btt->init_state != INIT_READY && nd_region->ro) {
drivers/nvdimm/btt.c
1596
} else if (btt->init_state != INIT_READY) {
drivers/nvdimm/btt.c
1597
btt->num_arenas = (rawsize / ARENA_MAX_SIZE) +
drivers/nvdimm/btt.c
1600
btt->num_arenas, rawsize);
drivers/nvdimm/btt.c
1602
ret = create_arenas(btt);
drivers/nvdimm/btt.c
1608
ret = btt_meta_init(btt);
drivers/nvdimm/btt.c
1615
ret = btt_blk_init(btt);
drivers/nvdimm/btt.c
1621
btt_debugfs_init(btt);
drivers/nvdimm/btt.c
1623
return btt;
drivers/nvdimm/btt.c
1625
free_arenas(btt);
drivers/nvdimm/btt.c
1638
static void btt_fini(struct btt *btt)
drivers/nvdimm/btt.c
1640
if (btt) {
drivers/nvdimm/btt.c
1641
btt_blk_cleanup(btt);
drivers/nvdimm/btt.c
1642
free_arenas(btt);
drivers/nvdimm/btt.c
1643
debugfs_remove_recursive(btt->debugfs_dir);
drivers/nvdimm/btt.c
1652
struct btt *btt;
drivers/nvdimm/btt.c
1686
btt = btt_init(nd_btt, rawsize, nd_btt->lbasize, nd_btt->uuid,
drivers/nvdimm/btt.c
1688
if (!btt)
drivers/nvdimm/btt.c
1690
nd_btt->btt = btt;
drivers/nvdimm/btt.c
1698
struct btt *btt = nd_btt->btt;
drivers/nvdimm/btt.c
1700
btt_fini(btt);
drivers/nvdimm/btt.c
1701
nd_btt->btt = NULL;
drivers/nvdimm/btt.c
257
static void btt_debugfs_init(struct btt *btt)
drivers/nvdimm/btt.c
262
btt->debugfs_dir = debugfs_create_dir(dev_name(&btt->nd_btt->dev),
drivers/nvdimm/btt.c
264
if (IS_ERR_OR_NULL(btt->debugfs_dir))
drivers/nvdimm/btt.c
267
list_for_each_entry(arena, &btt->arena_list, list) {
drivers/nvdimm/btt.c
268
arena_debugfs_init(arena, btt->debugfs_dir, i);
drivers/nvdimm/btt.c
745
static struct arena_info *alloc_arena(struct btt *btt, size_t size,
drivers/nvdimm/btt.c
755
arena->nd_btt = btt->nd_btt;
drivers/nvdimm/btt.c
756
arena->sector_size = btt->sector_size;
drivers/nvdimm/btt.c
764
arena->external_lbasize = btt->lbasize;
drivers/nvdimm/btt.c
768
arena->version_major = btt->nd_btt->version_major;
drivers/nvdimm/btt.c
769
arena->version_minor = btt->nd_btt->version_minor;
drivers/nvdimm/btt.c
802
static void free_arenas(struct btt *btt)
drivers/nvdimm/btt.c
806
list_for_each_entry_safe(arena, next, &btt->arena_list, list) {
drivers/nvdimm/btt.c
846
static int discover_arenas(struct btt *btt)
drivers/nvdimm/btt.c
850
size_t remaining = btt->rawsize;
drivers/nvdimm/btt.c
861
arena = alloc_arena(btt, 0, 0, 0);
drivers/nvdimm/btt.c
870
if (!nd_btt_arena_is_valid(btt->nd_btt, super)) {
drivers/nvdimm/btt.c
871
if (remaining == btt->rawsize) {
drivers/nvdimm/btt.c
872
btt->init_state = INIT_NOTFOUND;
drivers/nvdimm/btt.c
905
list_add_tail(&arena->list, &btt->arena_list);
drivers/nvdimm/btt.c
915
btt->num_arenas = num_arenas;
drivers/nvdimm/btt.c
916
btt->nlba = cur_nlba;
drivers/nvdimm/btt.c
917
btt->init_state = INIT_READY;
drivers/nvdimm/btt.c
926
free_arenas(btt);
drivers/nvdimm/btt.c
930
static int create_arenas(struct btt *btt)
drivers/nvdimm/btt.c
932
size_t remaining = btt->rawsize;
drivers/nvdimm/btt.c
943
arena = alloc_arena(btt, arena_size, btt->nlba, cur_off);
drivers/nvdimm/btt.c
945
free_arenas(btt);
drivers/nvdimm/btt.c
948
btt->nlba += arena->external_nlba;
drivers/nvdimm/btt.c
954
list_add_tail(&arena->list, &btt->arena_list);
drivers/nvdimm/nd.h
446
struct btt;
drivers/nvdimm/nd.h
450
struct btt *btt;
drivers/nvdimm/pmem.c
723
struct btt *btt = nd_btt->btt;
drivers/nvdimm/pmem.c
725
nvdimm_check_and_set_ro(btt->btt_disk);
drivers/scsi/aic7xxx/aic79xx.h
1021
uint8_t *btt;