Home
last modified time | relevance | path

Searched refs:afu (Results 1 – 25 of 40) sorted by relevance

12

/Linux-v4.19/drivers/misc/ocxl/
Dpci.c31 struct ocxl_afu *ocxl_afu_get(struct ocxl_afu *afu) in ocxl_afu_get() argument
33 return (get_device(&afu->dev) == NULL) ? NULL : afu; in ocxl_afu_get()
36 void ocxl_afu_put(struct ocxl_afu *afu) in ocxl_afu_put() argument
38 put_device(&afu->dev); in ocxl_afu_put()
43 struct ocxl_afu *afu; in alloc_afu() local
45 afu = kzalloc(sizeof(struct ocxl_afu), GFP_KERNEL); in alloc_afu()
46 if (!afu) in alloc_afu()
49 mutex_init(&afu->contexts_lock); in alloc_afu()
50 mutex_init(&afu->afu_control_lock); in alloc_afu()
51 idr_init(&afu->contexts_idr); in alloc_afu()
[all …]
Dsysfs.c10 struct ocxl_afu *afu = to_ocxl_afu(device); in global_mmio_size_show() local
13 afu->config.global_mmio_size); in global_mmio_size_show()
20 struct ocxl_afu *afu = to_ocxl_afu(device); in pp_mmio_size_show() local
23 afu->config.pp_mmio_stride); in pp_mmio_size_show()
30 struct ocxl_afu *afu = to_ocxl_afu(device); in afu_version_show() local
33 afu->config.version_major, in afu_version_show()
34 afu->config.version_minor); in afu_version_show()
41 struct ocxl_afu *afu = to_ocxl_afu(device); in contexts_show() local
44 afu->pasid_count, afu->pasid_max); in contexts_show()
58 struct ocxl_afu *afu = to_ocxl_afu(kobj_to_dev(kobj)); in global_mmio_read() local
[all …]
Dcontext.c12 int ocxl_context_init(struct ocxl_context *ctx, struct ocxl_afu *afu, in ocxl_context_init() argument
17 ctx->afu = afu; in ocxl_context_init()
18 mutex_lock(&afu->contexts_lock); in ocxl_context_init()
19 pasid = idr_alloc(&afu->contexts_idr, ctx, afu->pasid_base, in ocxl_context_init()
20 afu->pasid_base + afu->pasid_max, GFP_KERNEL); in ocxl_context_init()
22 mutex_unlock(&afu->contexts_lock); in ocxl_context_init()
25 afu->pasid_count++; in ocxl_context_init()
26 mutex_unlock(&afu->contexts_lock); in ocxl_context_init()
43 ocxl_afu_get(afu); in ocxl_context_init()
77 rc = ocxl_link_add_pe(ctx->afu->fn->link, ctx->pasid, in ocxl_context_attach()
[all …]
Dconfig.c308 struct ocxl_afu_config *afu) in read_afu_name() argument
318 ptr = (u32 *) &afu->name[i]; in read_afu_name()
321 afu->name[OCXL_AFU_NAME_SZ - 1] = '\0'; /* play safe */ in read_afu_name()
326 struct ocxl_afu_config *afu) in read_afu_mmio() argument
337 afu->global_mmio_bar = EXTRACT_BITS(val, 0, 2); in read_afu_mmio()
338 afu->global_mmio_offset = EXTRACT_BITS(val, 16, 31) << 16; in read_afu_mmio()
343 afu->global_mmio_offset += (u64) val << 32; in read_afu_mmio()
348 afu->global_mmio_size = val; in read_afu_mmio()
356 afu->pp_mmio_bar = EXTRACT_BITS(val, 0, 2); in read_afu_mmio()
357 afu->pp_mmio_offset = EXTRACT_BITS(val, 16, 31) << 16; in read_afu_mmio()
[all …]
Dfile.c22 struct ocxl_afu *afu; in find_and_get_afu() local
33 afu = idr_find(&minors_idr, afu_minor); in find_and_get_afu()
34 if (afu) in find_and_get_afu()
35 ocxl_afu_get(afu); in find_and_get_afu()
36 return afu; in find_and_get_afu()
39 static int allocate_afu_minor(struct ocxl_afu *afu) in allocate_afu_minor() argument
44 minor = idr_alloc(&minors_idr, afu, 0, OCXL_NUM_MINORS, GFP_KERNEL); in allocate_afu_minor()
49 static void free_afu_minor(struct ocxl_afu *afu) in free_afu_minor() argument
52 idr_remove(&minors_idr, MINOR(afu->dev.devt)); in free_afu_minor()
58 struct ocxl_afu *afu; in afu_open() local
[all …]
Docxl_internal.h69 struct ocxl_afu *afu; member
96 extern struct ocxl_afu *ocxl_afu_get(struct ocxl_afu *afu);
97 extern void ocxl_afu_put(struct ocxl_afu *afu);
99 extern int ocxl_create_cdev(struct ocxl_afu *afu);
100 extern void ocxl_destroy_cdev(struct ocxl_afu *afu);
101 extern int ocxl_register_afu(struct ocxl_afu *afu);
102 extern void ocxl_unregister_afu(struct ocxl_afu *afu);
113 extern int ocxl_context_init(struct ocxl_context *ctx, struct ocxl_afu *afu,
119 extern void ocxl_context_detach_all(struct ocxl_afu *afu);
122 extern int ocxl_sysfs_add_afu(struct ocxl_afu *afu);
[all …]
/Linux-v4.19/drivers/misc/cxl/
Dnative.c25 static int afu_control(struct cxl_afu *afu, u64 command, u64 clear, in afu_control() argument
32 spin_lock(&afu->afu_cntl_lock); in afu_control()
35 trace_cxl_afu_ctrl(afu, command); in afu_control()
37 AFU_Cntl = cxl_p2n_read(afu, CXL_AFU_Cntl_An); in afu_control()
38 cxl_p2n_write(afu, CXL_AFU_Cntl_An, (AFU_Cntl & ~clear) | command); in afu_control()
40 AFU_Cntl = cxl_p2n_read(afu, CXL_AFU_Cntl_An); in afu_control()
43 dev_warn(&afu->dev, "WARNING: AFU control timed out!\n"); in afu_control()
48 if (!cxl_ops->link_ok(afu->adapter, afu)) { in afu_control()
49 afu->enabled = enabled; in afu_control()
57 AFU_Cntl = cxl_p2n_read(afu, CXL_AFU_Cntl_An); in afu_control()
[all …]
Dguest.c22 static void pci_error_handlers(struct cxl_afu *afu, in pci_error_handlers() argument
28 if (afu->phb == NULL) in pci_error_handlers()
31 list_for_each_entry(afu_dev, &afu->phb->bus->devices, bus_list) { in pci_error_handlers()
63 dev_crit(&ctx->afu->dev, "PSL ERROR STATUS: 0x%.16llx\n", errstat); in guest_handle_psl_slice_error()
68 static ssize_t guest_collect_vpd(struct cxl *adapter, struct cxl_afu *afu, in guest_collect_vpd() argument
118 rc = cxl_h_collect_vpd(afu->guest->handle, 0, in guest_collect_vpd()
156 return cxl_h_collect_int_info(ctx->afu->guest->handle, ctx->process_token, info); in guest_get_irq_info()
176 static int afu_read_error_state(struct cxl_afu *afu, int *state_out) in afu_read_error_state() argument
181 if (!afu) in afu_read_error_state()
184 rc = cxl_h_read_error_state(afu->guest->handle, &state); in afu_read_error_state()
[all …]
Dpci.c93 #define AFUD_READ(afu, off) in_be64(afu->native->afu_desc_mmio + off) argument
94 #define AFUD_READ_LE(afu, off) in_le64(afu->native->afu_desc_mmio + off) argument
98 #define AFUD_READ_INFO(afu) AFUD_READ(afu, 0x0) argument
107 #define AFUD_READ_CR(afu) AFUD_READ(afu, 0x20) argument
109 #define AFUD_READ_CR_OFF(afu) AFUD_READ(afu, 0x28) argument
110 #define AFUD_READ_PPPSA(afu) AFUD_READ(afu, 0x30) argument
114 #define AFUD_READ_PPPSA_OFF(afu) AFUD_READ(afu, 0x38) argument
115 #define AFUD_READ_EB(afu) AFUD_READ(afu, 0x40) argument
117 #define AFUD_READ_EB_OFF(afu) AFUD_READ(afu, 0x48) argument
272 static void dump_afu_descriptor(struct cxl_afu *afu) in dump_afu_descriptor() argument
[all …]
Dvphb.c46 struct cxl_afu *afu; in cxl_pci_enable_device_hook() local
50 afu = (struct cxl_afu *)phb->private_data; in cxl_pci_enable_device_hook()
52 if (!cxl_ops->link_ok(afu->adapter, afu)) { in cxl_pci_enable_device_hook()
69 return (cxl_ops->afu_check_and_enable(afu) == 0); in cxl_pci_enable_device_hook()
109 static void cxl_afu_configured_put(struct cxl_afu *afu) in cxl_afu_configured_put() argument
111 atomic_dec_if_positive(&afu->configured_state); in cxl_afu_configured_put()
114 static bool cxl_afu_configured_get(struct cxl_afu *afu) in cxl_afu_configured_get() argument
116 return atomic_inc_unless_negative(&afu->configured_state); in cxl_afu_configured_get()
120 struct cxl_afu *afu, int *_record) in cxl_pcie_config_info() argument
125 if (record > afu->crs_num) in cxl_pcie_config_info()
[all …]
Dfile.c32 #define CXL_AFU_MINOR_D(afu) (CXL_CARD_MINOR(afu->adapter) + 1 + (3 * afu->slice)) argument
33 #define CXL_AFU_MINOR_M(afu) (CXL_AFU_MINOR_D(afu) + 1) argument
34 #define CXL_AFU_MINOR_S(afu) (CXL_AFU_MINOR_D(afu) + 2) argument
35 #define CXL_AFU_MKDEV_D(afu) MKDEV(MAJOR(cxl_dev), CXL_AFU_MINOR_D(afu)) argument
36 #define CXL_AFU_MKDEV_M(afu) MKDEV(MAJOR(cxl_dev), CXL_AFU_MINOR_M(afu)) argument
37 #define CXL_AFU_MKDEV_S(afu) MKDEV(MAJOR(cxl_dev), CXL_AFU_MINOR_S(afu)) argument
50 struct cxl_afu *afu; in __afu_open() local
65 if (!(afu = adapter->afu[slice])) { in __afu_open()
75 cxl_afu_get(afu); in __afu_open()
78 if (!afu->current_mode) in __afu_open()
[all …]
Dsysfs.c208 struct cxl_afu *afu = to_afu_chardev_m(device); in mmio_size_show_master() local
210 return scnprintf(buf, PAGE_SIZE, "%llu\n", afu->adapter->ps_size); in mmio_size_show_master()
217 struct cxl_afu *afu = to_afu_chardev_m(device); in pp_mmio_off_show() local
219 return scnprintf(buf, PAGE_SIZE, "%llu\n", afu->native->pp_offset); in pp_mmio_off_show()
226 struct cxl_afu *afu = to_afu_chardev_m(device); in pp_mmio_len_show() local
228 return scnprintf(buf, PAGE_SIZE, "%llu\n", afu->pp_size); in pp_mmio_len_show()
244 struct cxl_afu *afu = to_cxl_afu(device); in mmio_size_show() local
246 if (afu->pp_size) in mmio_size_show()
247 return scnprintf(buf, PAGE_SIZE, "%llu\n", afu->pp_size); in mmio_size_show()
248 return scnprintf(buf, PAGE_SIZE, "%llu\n", afu->adapter->ps_size); in mmio_size_show()
[all …]
Dtrace.h74 __field(u8, afu)
79 __entry->card = ctx->afu->adapter->adapter_num;
80 __entry->afu = ctx->afu->slice;
86 __entry->afu,
99 __field(u8, afu)
108 __entry->card = ctx->afu->adapter->adapter_num;
109 __entry->afu = ctx->afu->slice;
119 __entry->afu,
140 __field(u8, afu)
148 __entry->card = ctx->afu->adapter->adapter_num;
[all …]
Dof.c74 struct cxl_afu *afu) in read_phys_addr() argument
92 afu->guest->handle = addr; in read_phys_addr()
95 afu->guest->p2n_phys += addr; in read_phys_addr()
96 afu->guest->p2n_size = size; in read_phys_addr()
99 afu->psn_phys += addr; in read_phys_addr()
100 afu->adapter->ps_size = size; in read_phys_addr()
115 static int read_vpd(struct cxl *adapter, struct cxl_afu *afu) in read_vpd() argument
126 rc = cxl_guest_read_afu_vpd(afu, vpd, len); in read_vpd()
135 int cxl_of_read_afu_handle(struct cxl_afu *afu, struct device_node *afu_np) in cxl_of_read_afu_handle() argument
137 if (read_handle(afu_np, &afu->guest->handle)) in cxl_of_read_afu_handle()
[all …]
Dmain.c39 int cxl_afu_slbia(struct cxl_afu *afu) in cxl_afu_slbia() argument
44 cxl_p2n_write(afu, CXL_SLBIA_An, CXL_TLB_SLB_IQ_ALL); in cxl_afu_slbia()
45 while (cxl_p2n_read(afu, CXL_SLBIA_An) & CXL_TLB_SLB_P) { in cxl_afu_slbia()
47 dev_warn(&afu->dev, "WARNING: CXL AFU SLBIA timed out!\n"); in cxl_afu_slbia()
53 if (!cxl_ops->link_ok(afu->adapter, afu)) in cxl_afu_slbia()
68 ctx->afu->adapter->adapter_num, ctx->afu->slice, ctx->pe); in _cxl_slbia()
75 cxl_afu_slbia(ctx->afu); in _cxl_slbia()
81 struct cxl_afu *afu; in cxl_slbia_core() local
92 afu = adapter->afu[slice]; in cxl_slbia_core()
93 if (!afu || !afu->enabled) in cxl_slbia_core()
[all …]
Ddebugfs.c87 void cxl_debugfs_add_afu_regs_psl9(struct cxl_afu *afu, struct dentry *dir) in cxl_debugfs_add_afu_regs_psl9() argument
89 debugfs_create_io_x64("serr", S_IRUSR, dir, _cxl_p1n_addr(afu, CXL_PSL_SERR_An)); in cxl_debugfs_add_afu_regs_psl9()
92 void cxl_debugfs_add_afu_regs_psl8(struct cxl_afu *afu, struct dentry *dir) in cxl_debugfs_add_afu_regs_psl8() argument
94 debugfs_create_io_x64("sstp0", S_IRUSR, dir, _cxl_p2n_addr(afu, CXL_SSTP0_An)); in cxl_debugfs_add_afu_regs_psl8()
95 debugfs_create_io_x64("sstp1", S_IRUSR, dir, _cxl_p2n_addr(afu, CXL_SSTP1_An)); in cxl_debugfs_add_afu_regs_psl8()
97 debugfs_create_io_x64("fir", S_IRUSR, dir, _cxl_p1n_addr(afu, CXL_PSL_FIR_SLICE_An)); in cxl_debugfs_add_afu_regs_psl8()
98 debugfs_create_io_x64("serr", S_IRUSR, dir, _cxl_p1n_addr(afu, CXL_PSL_SERR_An)); in cxl_debugfs_add_afu_regs_psl8()
99 debugfs_create_io_x64("afu_debug", S_IRUSR, dir, _cxl_p1n_addr(afu, CXL_AFU_DEBUG_An)); in cxl_debugfs_add_afu_regs_psl8()
100 debugfs_create_io_x64("trace", S_IRUSR | S_IWUSR, dir, _cxl_p1n_addr(afu, CXL_PSL_SLICE_TRACE)); in cxl_debugfs_add_afu_regs_psl8()
103 int cxl_debugfs_afu_add(struct cxl_afu *afu) in cxl_debugfs_afu_add() argument
[all …]
Dcontext.c39 int cxl_context_init(struct cxl_context *ctx, struct cxl_afu *afu, bool master) in cxl_context_init() argument
43 ctx->afu = afu; in cxl_context_init()
96 mutex_lock(&afu->contexts_lock); in cxl_context_init()
98 i = idr_alloc(&ctx->afu->contexts_idr, ctx, 0, in cxl_context_init()
99 ctx->afu->num_procs, GFP_NOWAIT); in cxl_context_init()
101 mutex_unlock(&afu->contexts_lock); in cxl_context_init()
107 ctx->elem = &ctx->afu->native->spa[i]; in cxl_context_init()
118 cxl_afu_get(afu); in cxl_context_init()
142 if (ctx->afu->current_mode == CXL_MODE_DEDICATED) { in cxl_mmap_fault()
143 area = ctx->afu->psn_phys; in cxl_mmap_fault()
[all …]
Dcxl.h543 struct cxl_afu *afu; member
632 int (*afu_regs_init)(struct cxl_afu *afu);
633 int (*sanitise_afu_regs)(struct cxl_afu *afu);
634 int (*register_serr_irq)(struct cxl_afu *afu);
635 void (*release_serr_irq)(struct cxl_afu *afu);
637 irqreturn_t (*fail_irq)(struct cxl_afu *afu, struct cxl_irq_info *irq_info);
638 int (*activate_dedicated_process)(struct cxl_afu *afu);
643 void (*debugfs_add_afu_regs)(struct cxl_afu *afu, struct dentry *dir);
684 struct cxl_afu *afu[CXL_MAX_SLICES]; member
767 static inline bool cxl_adapter_link_ok(struct cxl *cxl, struct cxl_afu *afu) in cxl_adapter_link_ok() argument
[all …]
Dapi.c111 struct cxl_afu *afu; in cxl_dev_context_init() local
115 afu = cxl_pci_to_afu(dev); in cxl_dev_context_init()
116 if (IS_ERR(afu)) in cxl_dev_context_init()
117 return ERR_CAST(afu); in cxl_dev_context_init()
126 rc = cxl_context_init(ctx, afu, false); in cxl_dev_context_init()
197 num = ctx->afu->pp_irqs; in cxl_allocate_afu_irqs()
208 cxl_map_irq(ctx->afu->adapter, hwirq, cxl_ops->psl_interrupt, ctx, "psl"); in cxl_allocate_afu_irqs()
235 cxl_ops->release_irq_ranges(&ctx->irqs, ctx->afu->adapter); in cxl_free_afu_irqs()
251 return cxl_map_irq(ctx->afu->adapter, hwirq, handler, cookie, name); in cxl_map_afu_irq()
290 rc = cxl_adapter_context_get(ctx->afu->adapter); in cxl_start_context()
[all …]
Dirq.c67 dev_err_ratelimited(&ctx->afu->dev, "CXL AFU Error undelivered to pe %i: 0x%016llx\n", in cxl_irq_psl9()
152 dev_err_ratelimited(&ctx->afu->dev, "CXL AFU Error " in cxl_irq_psl8()
314 if ((rc = cxl_ops->alloc_irq_ranges(&ctx->irqs, ctx->afu->adapter, in afu_allocate_irqs()
320 ctx->irqs.offset[0] = ctx->afu->native->psl_hwirq; in afu_allocate_irqs()
341 dev_name(&ctx->afu->dev), in afu_allocate_irqs()
355 cxl_ops->release_irq_ranges(&ctx->irqs, ctx->afu->adapter); in afu_allocate_irqs()
386 cxl_map_irq(ctx->afu->adapter, hwirq, handler, ctx, in afu_register_hwirqs()
421 cxl_ops->release_irq_ranges(&ctx->irqs, ctx->afu->adapter); in afu_release_irqs()
426 void cxl_afu_decode_psl_serr(struct cxl_afu *afu, u64 serr) in cxl_afu_decode_psl_serr() argument
428 dev_crit(&afu->dev, in cxl_afu_decode_psl_serr()
[all …]
/Linux-v4.19/drivers/scsi/cxlflash/
Dcommon.h117 struct afu *afu; member
162 struct afu *parent;
208 struct afu *afu; member
234 struct afu { struct
236 int (*send_cmd)(struct afu *afu, struct afu_cmd *cmd); argument
259 static inline struct hwq *get_hwq(struct afu *afu, u32 index) in get_hwq() argument
263 return &afu->hwqs[index]; in get_hwq()
266 static inline bool afu_is_irqpoll_enabled(struct afu *afu) in afu_is_irqpoll_enabled() argument
268 return !!afu->irqpoll_weight; in afu_is_irqpoll_enabled()
271 static inline bool afu_has_cap(struct afu *afu, u64 cap) in afu_has_cap() argument
[all …]
Dmain.c48 struct afu *afu = cmd->parent; in process_cmd_err() local
49 struct cxlflash_cfg *cfg = afu->parent; in process_cmd_err()
165 struct afu *afu = cmd->parent; in cmd_complete() local
166 struct cxlflash_cfg *cfg = afu->parent; in cmd_complete()
168 struct hwq *hwq = get_hwq(afu, cmd->hwq_index); in cmd_complete()
202 struct cxlflash_cfg *cfg = hwq->afu->parent; in flush_pending_cmds()
246 struct cxlflash_cfg *cfg = hwq->afu->parent; in context_reset()
309 static int send_cmd_ioarrin(struct afu *afu, struct afu_cmd *cmd) in send_cmd_ioarrin() argument
311 struct cxlflash_cfg *cfg = afu->parent; in send_cmd_ioarrin()
313 struct hwq *hwq = get_hwq(afu, cmd->hwq_index); in send_cmd_ioarrin()
[all …]
Docxl_hw.c199 struct ocxl_hw_afu *afu = ctx->hw_afu; in afu_map_irq() local
200 struct device *dev = afu->dev; in afu_map_irq()
271 struct ocxl_hw_afu *afu = ctx->hw_afu; in afu_unmap_irq() local
272 struct device *dev = afu->dev; in afu_unmap_irq()
349 struct ocxl_hw_afu *afu = ctx->hw_afu; in start_context() local
350 struct ocxl_afu_config *acfg = &afu->acfg; in start_context()
351 void *link_token = afu->link_token; in start_context()
352 struct device *dev = afu->dev; in start_context()
368 ctx->psn_phys = afu->gmmio_phys; in start_context()
371 ctx->psn_phys = afu->ppmmio_phys + (ctx->pe * ctx->psn_size); in start_context()
[all …]
/Linux-v4.19/drivers/fpga/
Ddfl-afu-region.c19 struct dfl_afu *afu = dfl_fpga_pdata_get_private(pdata); in afu_mmio_region_init() local
21 INIT_LIST_HEAD(&afu->regions); in afu_mmio_region_init()
24 #define for_each_region(region, afu) \ argument
25 list_for_each_entry((region), &(afu)->regions, node)
27 static struct dfl_afu_mmio_region *get_region_by_index(struct dfl_afu *afu, in get_region_by_index() argument
32 for_each_region(region, afu) in get_region_by_index()
53 struct dfl_afu *afu; in afu_mmio_region_add() local
67 afu = dfl_fpga_pdata_get_private(pdata); in afu_mmio_region_add()
70 if (get_region_by_index(afu, region_index)) { in afu_mmio_region_add()
77 region->offset = afu->region_cur_offset; in afu_mmio_region_add()
[all …]
Ddfl-afu-dma-region.c29 struct dfl_afu *afu = dfl_fpga_pdata_get_private(pdata); in afu_dma_region_init() local
31 afu->dma_regions = RB_ROOT; in afu_dma_region_init()
200 struct dfl_afu *afu = dfl_fpga_pdata_get_private(pdata); in afu_dma_region_add() local
206 new = &afu->dma_regions.rb_node; in afu_dma_region_add()
227 rb_insert_color(&region->node, &afu->dma_regions); in afu_dma_region_add()
242 struct dfl_afu *afu; in afu_dma_region_remove() local
247 afu = dfl_fpga_pdata_get_private(pdata); in afu_dma_region_remove()
248 rb_erase(&region->node, &afu->dma_regions); in afu_dma_region_remove()
259 struct dfl_afu *afu = dfl_fpga_pdata_get_private(pdata); in afu_dma_region_destroy() local
260 struct rb_node *node = rb_first(&afu->dma_regions); in afu_dma_region_destroy()
[all …]

12