/Linux-v4.19/drivers/misc/ocxl/ |
D | pci.c | 31 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 …]
|
D | sysfs.c | 10 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 …]
|
D | context.c | 12 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 …]
|
D | config.c | 308 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 …]
|
D | file.c | 22 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 …]
|
D | ocxl_internal.h | 69 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/ |
D | native.c | 25 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 …]
|
D | guest.c | 22 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 …]
|
D | pci.c | 93 #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 …]
|
D | vphb.c | 46 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 …]
|
D | file.c | 32 #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 …]
|
D | sysfs.c | 208 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 …]
|
D | trace.h | 74 __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 …]
|
D | of.c | 74 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 …]
|
D | main.c | 39 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 …]
|
D | debugfs.c | 87 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 …]
|
D | context.c | 39 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 …]
|
D | cxl.h | 543 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 …]
|
D | api.c | 111 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 …]
|
D | irq.c | 67 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/ |
D | common.h | 117 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 …]
|
D | main.c | 48 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 …]
|
D | ocxl_hw.c | 199 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/ |
D | dfl-afu-region.c | 19 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 …]
|
D | dfl-afu-dma-region.c | 29 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(®ion->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(®ion->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 …]
|