Home
last modified time | relevance | path

Searched refs:pblk (Results 1 – 19 of 19) sorted by relevance

/drivers/lightnvm/
Dpblk-core.c29 struct pblk *pblk = line_ws->pblk; in pblk_line_mark_bb() local
30 struct nvm_tgt_dev *dev = pblk->dev; in pblk_line_mark_bb()
39 line = pblk_ppa_to_line(pblk, *ppa); in pblk_line_mark_bb()
42 pblk_err(pblk, "failed to mark bb, line:%d, pos:%d\n", in pblk_line_mark_bb()
47 mempool_free(line_ws, &pblk->gen_ws_pool); in pblk_line_mark_bb()
50 static void pblk_mark_bb(struct pblk *pblk, struct pblk_line *line, in pblk_mark_bb() argument
53 struct nvm_tgt_dev *dev = pblk->dev; in pblk_mark_bb()
58 pblk_debug(pblk, "erase failed: line:%d, pos:%d\n", line->id, pos); in pblk_mark_bb()
59 atomic_long_inc(&pblk->erase_failed); in pblk_mark_bb()
63 pblk_err(pblk, "attempted to erase bb: line:%d, pos:%d\n", in pblk_mark_bb()
[all …]
Dpblk-init.c52 struct pblk *pblk = q->queuedata; in pblk_make_rq() local
55 pblk_discard(pblk, bio); in pblk_make_rq()
67 pblk_submit_read(pblk, bio); in pblk_make_rq()
73 if (pblk_get_secs(bio) > pblk_rl_max_io(&pblk->rl)) in pblk_make_rq()
76 pblk_write_to_cache(pblk, bio, PBLK_IOTYPE_USER); in pblk_make_rq()
82 static size_t pblk_trans_map_size(struct pblk *pblk) in pblk_trans_map_size() argument
86 if (pblk->addrf_len < 32) in pblk_trans_map_size()
89 return entry_size * pblk->capacity; in pblk_trans_map_size()
93 static u32 pblk_l2p_crc(struct pblk *pblk) in pblk_l2p_crc() argument
98 map_size = pblk_trans_map_size(pblk); in pblk_l2p_crc()
[all …]
Dpblk.h126 struct pblk *pblk; member
133 struct pblk *pblk; member
433 struct pblk *pblk; member
592 struct pblk { struct
702 struct pblk *pblk; argument
711 #define pblk_err(pblk, fmt, ...) \ argument
712 pr_err("pblk %s: " fmt, pblk->disk->disk_name, ##__VA_ARGS__)
713 #define pblk_info(pblk, fmt, ...) \ argument
714 pr_info("pblk %s: " fmt, pblk->disk->disk_name, ##__VA_ARGS__)
715 #define pblk_warn(pblk, fmt, ...) \ argument
[all …]
Dpblk-write.c22 static unsigned long pblk_end_w_bio(struct pblk *pblk, struct nvm_rq *rqd, in pblk_end_w_bio() argument
26 struct pblk_rb *rwb = &pblk->rwb; in pblk_end_w_bio()
53 pblk_bio_free_pages(pblk, rqd->bio, c_ctx->nr_valid, in pblk_end_w_bio()
57 atomic_long_add(rqd->nr_ppas, &pblk->sync_writes); in pblk_end_w_bio()
60 ret = pblk_rb_sync_advance(&pblk->rwb, c_ctx->nr_valid); in pblk_end_w_bio()
63 pblk_free_rqd(pblk, rqd, PBLK_WRITE); in pblk_end_w_bio()
68 static unsigned long pblk_end_queued_w_bio(struct pblk *pblk, in pblk_end_queued_w_bio() argument
73 return pblk_end_w_bio(pblk, rqd, c_ctx); in pblk_end_queued_w_bio()
76 static void pblk_complete_write(struct pblk *pblk, struct nvm_rq *rqd, in pblk_complete_write() argument
84 atomic_long_sub(c_ctx->nr_valid, &pblk->inflight_writes); in pblk_complete_write()
[all …]
Dpblk-recovery.c24 int pblk_recov_check_emeta(struct pblk *pblk, struct line_emeta *emeta_buf) in pblk_recov_check_emeta() argument
28 crc = pblk_calc_emeta_crc(pblk, emeta_buf); in pblk_recov_check_emeta()
38 static int pblk_recov_l2p_from_emeta(struct pblk *pblk, struct pblk_line *line) in pblk_recov_l2p_from_emeta() argument
40 struct nvm_tgt_dev *dev = pblk->dev; in pblk_recov_l2p_from_emeta()
42 struct pblk_line_meta *lm = &pblk->lm; in pblk_recov_l2p_from_emeta()
50 lba_list = emeta_to_lbas(pblk, emeta_buf); in pblk_recov_l2p_from_emeta()
54 data_start = pblk_line_smeta_start(pblk, line) + lm->smeta_sec; in pblk_recov_l2p_from_emeta()
62 ppa = addr_to_gen_ppa(pblk, i, line->id); in pblk_recov_l2p_from_emeta()
80 pblk_update_map(pblk, le64_to_cpu(lba_list[i]), ppa); in pblk_recov_l2p_from_emeta()
85 pblk_err(pblk, "line %d - inconsistent lba list(%llu/%llu)\n", in pblk_recov_l2p_from_emeta()
[all …]
Dpblk-gc.c31 static int pblk_gc_write(struct pblk *pblk) in pblk_gc_write() argument
33 struct pblk_gc *gc = &pblk->gc; in pblk_gc_write()
48 pblk_write_gc_to_cache(pblk, gc_rq); in pblk_gc_write()
62 void pblk_put_line_back(struct pblk *pblk, struct pblk_line *line) in pblk_put_line_back() argument
64 struct pblk_line_mgmt *l_mg = &pblk->l_mg; in pblk_put_line_back()
71 trace_pblk_line_state(pblk_disk_name(pblk), line->id, in pblk_put_line_back()
80 move_list = pblk_line_gc_list(pblk, line); in pblk_put_line_back()
90 struct pblk *pblk = gc_rq_ws->pblk; in pblk_gc_line_ws() local
91 struct pblk_gc *gc = &pblk->gc; in pblk_gc_line_ws()
99 ret = pblk_submit_read_gc(pblk, gc_rq); in pblk_gc_line_ws()
[all …]
Dpblk-sysfs.c24 static ssize_t pblk_sysfs_luns_show(struct pblk *pblk, char *page) in pblk_sysfs_luns_show() argument
26 struct nvm_tgt_dev *dev = pblk->dev; in pblk_sysfs_luns_show()
35 rlun = &pblk->luns[i]; in pblk_sysfs_luns_show()
51 static ssize_t pblk_sysfs_rate_limiter(struct pblk *pblk, char *page) in pblk_sysfs_rate_limiter() argument
57 free_blocks = pblk_rl_nr_free_blks(&pblk->rl); in pblk_sysfs_rate_limiter()
58 free_user_blocks = pblk_rl_nr_user_free_blks(&pblk->rl); in pblk_sysfs_rate_limiter()
59 rb_user_max = pblk->rl.rb_user_max; in pblk_sysfs_rate_limiter()
60 rb_user_cnt = atomic_read(&pblk->rl.rb_user_cnt); in pblk_sysfs_rate_limiter()
61 rb_gc_max = pblk->rl.rb_gc_max; in pblk_sysfs_rate_limiter()
62 rb_gc_cnt = atomic_read(&pblk->rl.rb_gc_cnt); in pblk_sysfs_rate_limiter()
[all …]
Dpblk-read.c28 static int pblk_read_from_cache(struct pblk *pblk, struct bio *bio, in pblk_read_from_cache() argument
37 return pblk_rb_copy_to_bio(&pblk->rwb, bio, lba, ppa); in pblk_read_from_cache()
40 static int pblk_read_ppalist_rq(struct pblk *pblk, struct nvm_rq *rqd, in pblk_read_ppalist_rq() argument
48 nr_secs = pblk_lookup_l2p_seq(pblk, rqd->ppa_list, blba, rqd->nr_ppas, in pblk_read_ppalist_rq()
55 struct pblk_sec_meta *meta = pblk_get_meta(pblk, meta_list, i); in pblk_read_ppalist_rq()
68 if (!pblk_read_from_cache(pblk, bio, lba, in pblk_read_ppalist_rq()
91 atomic_long_inc(&pblk->cache_reads); in pblk_read_ppalist_rq()
98 if (pblk_io_aligned(pblk, nr_secs)) in pblk_read_ppalist_rq()
102 atomic_long_add(nr_secs, &pblk->inflight_reads); in pblk_read_ppalist_rq()
109 static void pblk_read_check_seq(struct pblk *pblk, struct nvm_rq *rqd, in pblk_read_check_seq() argument
[all …]
Dpblk-map.c22 static int pblk_map_page_data(struct pblk *pblk, unsigned int sentry, in pblk_map_page_data() argument
28 struct pblk_line *line = pblk_line_get_data(pblk); in pblk_map_page_data()
33 int nr_secs = pblk->min_write_pgs; in pblk_map_page_data()
45 line = pblk_line_replace_data(pblk); in pblk_map_page_data()
46 pblk_line_close_meta(pblk, prev_line); in pblk_map_page_data()
49 pblk_pipeline_stop(pblk); in pblk_map_page_data()
56 lba_list = emeta_to_lbas(pblk, emeta->buf); in pblk_map_page_data()
58 paddr = pblk_alloc_page(pblk, line, nr_secs); in pblk_map_page_data()
61 struct pblk_sec_meta *meta = pblk_get_meta(pblk, meta_list, i); in pblk_map_page_data()
65 ppa_list[i] = addr_to_gen_ppa(pblk, paddr, line->id); in pblk_map_page_data()
[all …]
Dpblk-cache.c21 void pblk_write_to_cache(struct pblk *pblk, struct bio *bio, in pblk_write_to_cache() argument
24 struct request_queue *q = pblk->dev->q; in pblk_write_to_cache()
33 &pblk->disk->part0); in pblk_write_to_cache()
40 ret = pblk_rb_may_write_user(&pblk->rwb, bio, nr_entries, &bpos); in pblk_write_to_cache()
46 pblk_pipeline_stop(pblk); in pblk_write_to_cache()
55 pblk_write_kick(pblk); in pblk_write_to_cache()
66 pos = pblk_rb_wrap_pos(&pblk->rwb, bpos + i); in pblk_write_to_cache()
67 pblk_rb_write_entry_user(&pblk->rwb, data, w_ctx, pos); in pblk_write_to_cache()
72 atomic64_add(nr_entries, &pblk->user_wa); in pblk_write_to_cache()
75 atomic_long_add(nr_entries, &pblk->inflight_writes); in pblk_write_to_cache()
[all …]
DMakefile7 obj-$(CONFIG_NVM_PBLK) += pblk.o
8 pblk-y := pblk-init.o pblk-core.o pblk-rb.o \
9 pblk-write.o pblk-cache.o pblk-read.o \
10 pblk-gc.o pblk-recovery.o pblk-map.o \
11 pblk-rl.o pblk-sysfs.o
Dpblk-rb.c75 struct pblk *pblk = container_of(rb, struct pblk, rwb); in pblk_rb_init() local
165 pblk_rl_init(&pblk->rl, rb->nr_entries, threshold); in pblk_rb_init()
239 struct pblk *pblk = container_of(rb, struct pblk, rwb); in __pblk_rb_update_l2p() local
259 pblk_update_map_dev(pblk, w_ctx->lba, w_ctx->ppa, in __pblk_rb_update_l2p()
262 line = pblk_ppa_to_line(pblk, w_ctx->ppa); in __pblk_rb_update_l2p()
269 pblk_rl_out(&pblk->rl, user_io, gc_io); in __pblk_rb_update_l2p()
340 struct pblk *pblk = container_of(rb, struct pblk, rwb); in pblk_rb_write_entry_user() local
353 pblk_update_map_cache(pblk, w_ctx.lba, entry->cacheline); in pblk_rb_write_entry_user()
364 struct pblk *pblk = container_of(rb, struct pblk, rwb); in pblk_rb_write_entry_gc() local
377 if (!pblk_update_map_gc(pblk, w_ctx.lba, entry->cacheline, line, paddr)) in pblk_rb_write_entry_gc()
[all …]
Dpblk-rl.c111 struct pblk *pblk = container_of(rl, struct pblk, rl); in __pblk_rl_update_rates() local
149 pblk_gc_should_start(pblk); in __pblk_rl_update_rates()
151 pblk_gc_should_stop(pblk); in __pblk_rl_update_rates()
212 struct pblk *pblk = container_of(rl, struct pblk, rl); in pblk_rl_init() local
213 struct nvm_tgt_dev *dev = pblk->dev; in pblk_rl_init()
215 struct pblk_line_mgmt *l_mg = &pblk->l_mg; in pblk_rl_init()
216 struct pblk_line_meta *lm = &pblk->lm; in pblk_rl_init()
224 rl->high = pblk->op_blks - blk_meta - lm->blk_per_line; in pblk_rl_init()
227 rl->rsv_blocks = pblk_get_min_chks(pblk); in pblk_rl_init()
241 rl->rb_max_io = budget - pblk->min_write_pgs_data - threshold; in pblk_rl_init()
[all …]
DKconfig35 Enables debug support for pblk. This includes extra checks, more
36 vocal error messages, and extra tracking fields in the pblk sysfs
Dpblk-trace.h3 #define TRACE_SYSTEM pblk
144 #define TRACE_INCLUDE_FILE pblk-trace
/drivers/net/wireless/quantenna/qtnfmac/pcie/
Dpearl_pcie.c866 int blk, const u8 *pblk, const u8 *fw) in qtnf_ep_fw_send() argument
898 if (pblk >= (fw + size - len)) { in qtnf_ep_fw_send()
899 len = fw + size - pblk; in qtnf_ep_fw_send()
904 memcpy(pdata, pblk, len); in qtnf_ep_fw_send()
917 const u8 *pblk = fw; in qtnf_ep_fw_load() local
930 len = qtnf_ep_fw_send(ps->base.pdev, fw_size, blk, pblk, fw); in qtnf_ep_fw_load()
954 pblk -= ((last_round - 1) * in qtnf_ep_fw_load()
958 pblk -= QTN_PCIE_FW_DLMASK * blk_size; in qtnf_ep_fw_load()
971 pblk += len; in qtnf_ep_fw_load()
/drivers/xen/
Dxen-acpi-processor.c333 acpi_io_address pblk = 0; in read_acpi_id() local
345 pblk = object.processor.pblk_address; in read_acpi_id()
372 pr_debug("ACPI CPU%u w/ PBLK:0x%lx\n", acpi_id, (unsigned long)pblk); in read_acpi_id()
383 if (!pblk) in read_acpi_id()
/drivers/acpi/
Dprocessor_idle.c221 if (!pr->pblk) in acpi_processor_get_power_info_fadt()
239 pr->power.states[ACPI_STATE_C2].address = pr->pblk + 4; in acpi_processor_get_power_info_fadt()
240 pr->power.states[ACPI_STATE_C3].address = pr->pblk + 5; in acpi_processor_get_power_info_fadt()
Dacpi_processor.c345 pr->pblk = object.processor.pblk_address; in acpi_processor_get_info()