afu                30 drivers/fpga/dfl-afu-dma-region.c 	struct dfl_afu *afu = dfl_fpga_pdata_get_private(pdata);
afu                32 drivers/fpga/dfl-afu-dma-region.c 	afu->dma_regions = RB_ROOT;
afu               155 drivers/fpga/dfl-afu-dma-region.c 	struct dfl_afu *afu = dfl_fpga_pdata_get_private(pdata);
afu               161 drivers/fpga/dfl-afu-dma-region.c 	new = &afu->dma_regions.rb_node;
afu               182 drivers/fpga/dfl-afu-dma-region.c 	rb_insert_color(&region->node, &afu->dma_regions);
afu               197 drivers/fpga/dfl-afu-dma-region.c 	struct dfl_afu *afu;
afu               202 drivers/fpga/dfl-afu-dma-region.c 	afu = dfl_fpga_pdata_get_private(pdata);
afu               203 drivers/fpga/dfl-afu-dma-region.c 	rb_erase(&region->node, &afu->dma_regions);
afu               214 drivers/fpga/dfl-afu-dma-region.c 	struct dfl_afu *afu = dfl_fpga_pdata_get_private(pdata);
afu               215 drivers/fpga/dfl-afu-dma-region.c 	struct rb_node *node = rb_first(&afu->dma_regions);
afu               224 drivers/fpga/dfl-afu-dma-region.c 		rb_erase(node, &afu->dma_regions);
afu               256 drivers/fpga/dfl-afu-dma-region.c 	struct dfl_afu *afu = dfl_fpga_pdata_get_private(pdata);
afu               257 drivers/fpga/dfl-afu-dma-region.c 	struct rb_node *node = afu->dma_regions.rb_node;
afu               604 drivers/fpga/dfl-afu-main.c 	struct dfl_afu *afu;
afu               616 drivers/fpga/dfl-afu-main.c 	afu = dfl_fpga_pdata_get_private(pdata);
afu               618 drivers/fpga/dfl-afu-main.c 	info.num_regions = afu->num_regions;
afu               619 drivers/fpga/dfl-afu-main.c 	info.num_umsgs = afu->num_umsgs;
afu               796 drivers/fpga/dfl-afu-main.c 	struct dfl_afu *afu;
afu               798 drivers/fpga/dfl-afu-main.c 	afu = devm_kzalloc(&pdev->dev, sizeof(*afu), GFP_KERNEL);
afu               799 drivers/fpga/dfl-afu-main.c 	if (!afu)
afu               802 drivers/fpga/dfl-afu-main.c 	afu->pdata = pdata;
afu               805 drivers/fpga/dfl-afu-main.c 	dfl_fpga_pdata_set_private(pdata, afu);
afu               816 drivers/fpga/dfl-afu-main.c 	struct dfl_afu *afu;
afu               819 drivers/fpga/dfl-afu-main.c 	afu = dfl_fpga_pdata_get_private(pdata);
afu                19 drivers/fpga/dfl-afu-region.c 	struct dfl_afu *afu = dfl_fpga_pdata_get_private(pdata);
afu                21 drivers/fpga/dfl-afu-region.c 	INIT_LIST_HEAD(&afu->regions);
afu                24 drivers/fpga/dfl-afu-region.c #define for_each_region(region, afu)	\
afu                25 drivers/fpga/dfl-afu-region.c 	list_for_each_entry((region), &(afu)->regions, node)
afu                27 drivers/fpga/dfl-afu-region.c static struct dfl_afu_mmio_region *get_region_by_index(struct dfl_afu *afu,
afu                32 drivers/fpga/dfl-afu-region.c 	for_each_region(region, afu)
afu                53 drivers/fpga/dfl-afu-region.c 	struct dfl_afu *afu;
afu                67 drivers/fpga/dfl-afu-region.c 	afu = dfl_fpga_pdata_get_private(pdata);
afu                70 drivers/fpga/dfl-afu-region.c 	if (get_region_by_index(afu, region_index)) {
afu                77 drivers/fpga/dfl-afu-region.c 	region->offset = afu->region_cur_offset;
afu                78 drivers/fpga/dfl-afu-region.c 	list_add(&region->node, &afu->regions);
afu                80 drivers/fpga/dfl-afu-region.c 	afu->region_cur_offset += region_size;
afu                81 drivers/fpga/dfl-afu-region.c 	afu->num_regions++;
afu                97 drivers/fpga/dfl-afu-region.c 	struct dfl_afu *afu = dfl_fpga_pdata_get_private(pdata);
afu               100 drivers/fpga/dfl-afu-region.c 	list_for_each_entry_safe(region, tmp, &afu->regions, node)
afu               117 drivers/fpga/dfl-afu-region.c 	struct dfl_afu *afu;
afu               121 drivers/fpga/dfl-afu-region.c 	afu = dfl_fpga_pdata_get_private(pdata);
afu               122 drivers/fpga/dfl-afu-region.c 	region = get_region_by_index(afu, region_index);
afu               151 drivers/fpga/dfl-afu-region.c 	struct dfl_afu *afu;
afu               155 drivers/fpga/dfl-afu-region.c 	afu = dfl_fpga_pdata_get_private(pdata);
afu               156 drivers/fpga/dfl-afu-region.c 	for_each_region(region, afu)
afu               102 drivers/misc/cxl/api.c 	struct cxl_afu *afu;
afu               106 drivers/misc/cxl/api.c 	afu = cxl_pci_to_afu(dev);
afu               107 drivers/misc/cxl/api.c 	if (IS_ERR(afu))
afu               108 drivers/misc/cxl/api.c 		return ERR_CAST(afu);
afu               117 drivers/misc/cxl/api.c 	rc = cxl_context_init(ctx, afu, false);
afu               188 drivers/misc/cxl/api.c 		num = ctx->afu->pp_irqs;
afu               199 drivers/misc/cxl/api.c 			cxl_map_irq(ctx->afu->adapter, hwirq, cxl_ops->psl_interrupt, ctx, "psl");
afu               226 drivers/misc/cxl/api.c 	cxl_ops->release_irq_ranges(&ctx->irqs, ctx->afu->adapter);
afu               242 drivers/misc/cxl/api.c 	return cxl_map_irq(ctx->afu->adapter, hwirq, handler, cookie, name);
afu               281 drivers/misc/cxl/api.c 	rc = cxl_adapter_context_get(ctx->afu->adapter);
afu               315 drivers/misc/cxl/api.c 		cxl_adapter_context_put(ctx->afu->adapter);
afu               466 drivers/misc/cxl/api.c 		work->num_interrupts = ctx->afu->pp_irqs;
afu               467 drivers/misc/cxl/api.c 	else if ((work->num_interrupts < ctx->afu->pp_irqs) ||
afu               468 drivers/misc/cxl/api.c 		 (work->num_interrupts > ctx->afu->irqs_max)) {
afu               505 drivers/misc/cxl/api.c 	struct cxl_afu *afu = ctx->afu;
afu               508 drivers/misc/cxl/api.c 	rc = cxl_ops->afu_reset(afu);
afu               512 drivers/misc/cxl/api.c 	return cxl_ops->afu_check_and_enable(afu);
afu               516 drivers/misc/cxl/api.c void cxl_perst_reloads_same_image(struct cxl_afu *afu,
afu               519 drivers/misc/cxl/api.c 	afu->adapter->perst_same_image = perst_reloads_same_image;
afu               525 drivers/misc/cxl/api.c 	struct cxl_afu *afu = cxl_pci_to_afu(dev);
afu               526 drivers/misc/cxl/api.c 	if (IS_ERR(afu))
afu               529 drivers/misc/cxl/api.c 	return cxl_ops->read_adapter_vpd(afu->adapter, buf, count);
afu                54 drivers/misc/cxl/base.c struct cxl_afu *cxl_afu_get(struct cxl_afu *afu)
afu                56 drivers/misc/cxl/base.c 	return (get_device(&afu->dev) == NULL) ? NULL : afu;
afu                60 drivers/misc/cxl/base.c void cxl_afu_put(struct cxl_afu *afu)
afu                62 drivers/misc/cxl/base.c 	put_device(&afu->dev);
afu                35 drivers/misc/cxl/context.c int cxl_context_init(struct cxl_context *ctx, struct cxl_afu *afu, bool master)
afu                39 drivers/misc/cxl/context.c 	ctx->afu = afu;
afu                92 drivers/misc/cxl/context.c 	mutex_lock(&afu->contexts_lock);
afu                94 drivers/misc/cxl/context.c 	i = idr_alloc(&ctx->afu->contexts_idr, ctx, 0,
afu                95 drivers/misc/cxl/context.c 		      ctx->afu->num_procs, GFP_NOWAIT);
afu                97 drivers/misc/cxl/context.c 	mutex_unlock(&afu->contexts_lock);
afu               103 drivers/misc/cxl/context.c 		ctx->elem = &ctx->afu->native->spa[i];
afu               114 drivers/misc/cxl/context.c 	cxl_afu_get(afu);
afu               138 drivers/misc/cxl/context.c 	if (ctx->afu->current_mode == CXL_MODE_DEDICATED) {
afu               139 drivers/misc/cxl/context.c 		area = ctx->afu->psn_phys;
afu               140 drivers/misc/cxl/context.c 		if (offset >= ctx->afu->adapter->ps_size)
afu               187 drivers/misc/cxl/context.c 	if (ctx->afu->current_mode == CXL_MODE_DEDICATED) {
afu               188 drivers/misc/cxl/context.c 		if (start + len > ctx->afu->adapter->ps_size)
afu               196 drivers/misc/cxl/context.c 			if (ctx->master && !ctx->afu->psa) {
afu               202 drivers/misc/cxl/context.c 			if (!ctx->afu->enabled)
afu               210 drivers/misc/cxl/context.c 		if ((ctx->master && !ctx->afu->psa) || (!ctx->afu->pp_psa)) {
afu               216 drivers/misc/cxl/context.c 		if (!ctx->afu->enabled)
afu               249 drivers/misc/cxl/context.c 		cxl_ops->link_ok(ctx->afu->adapter, ctx->afu));
afu               265 drivers/misc/cxl/context.c 	cxl_adapter_context_put(ctx->afu->adapter);
afu               297 drivers/misc/cxl/context.c void cxl_context_detach_all(struct cxl_afu *afu)
afu               302 drivers/misc/cxl/context.c 	mutex_lock(&afu->contexts_lock);
afu               303 drivers/misc/cxl/context.c 	idr_for_each_entry(&afu->contexts_idr, ctx, tmp) {
afu               321 drivers/misc/cxl/context.c 	mutex_unlock(&afu->contexts_lock);
afu               337 drivers/misc/cxl/context.c 	cxl_afu_put(ctx->afu);
afu               346 drivers/misc/cxl/context.c 	mutex_lock(&ctx->afu->contexts_lock);
afu               347 drivers/misc/cxl/context.c 	idr_remove(&ctx->afu->contexts_idr, ctx->pe);
afu               348 drivers/misc/cxl/context.c 	mutex_unlock(&ctx->afu->contexts_lock);
afu               539 drivers/misc/cxl/cxl.h 	struct cxl_afu *afu;
afu               628 drivers/misc/cxl/cxl.h 	int (*afu_regs_init)(struct cxl_afu *afu);
afu               629 drivers/misc/cxl/cxl.h 	int (*sanitise_afu_regs)(struct cxl_afu *afu);
afu               630 drivers/misc/cxl/cxl.h 	int (*register_serr_irq)(struct cxl_afu *afu);
afu               631 drivers/misc/cxl/cxl.h 	void (*release_serr_irq)(struct cxl_afu *afu);
afu               633 drivers/misc/cxl/cxl.h 	irqreturn_t (*fail_irq)(struct cxl_afu *afu, struct cxl_irq_info *irq_info);
afu               634 drivers/misc/cxl/cxl.h 	int (*activate_dedicated_process)(struct cxl_afu *afu);
afu               639 drivers/misc/cxl/cxl.h 	void (*debugfs_add_afu_regs)(struct cxl_afu *afu, struct dentry *dir);
afu               680 drivers/misc/cxl/cxl.h 	struct cxl_afu *afu[CXL_MAX_SLICES];
afu               763 drivers/misc/cxl/cxl.h static inline bool cxl_adapter_link_ok(struct cxl *cxl, struct cxl_afu *afu)
afu               794 drivers/misc/cxl/cxl.h static inline void __iomem *_cxl_p1n_addr(struct cxl_afu *afu, cxl_p1n_reg_t reg)
afu               797 drivers/misc/cxl/cxl.h 	return afu->native->p1n_mmio + cxl_reg_off(reg);
afu               800 drivers/misc/cxl/cxl.h static inline void cxl_p1n_write(struct cxl_afu *afu, cxl_p1n_reg_t reg, u64 val)
afu               802 drivers/misc/cxl/cxl.h 	if (likely(cxl_adapter_link_ok(afu->adapter, afu)))
afu               803 drivers/misc/cxl/cxl.h 		out_be64(_cxl_p1n_addr(afu, reg), val);
afu               806 drivers/misc/cxl/cxl.h static inline u64 cxl_p1n_read(struct cxl_afu *afu, cxl_p1n_reg_t reg)
afu               808 drivers/misc/cxl/cxl.h 	if (likely(cxl_adapter_link_ok(afu->adapter, afu)))
afu               809 drivers/misc/cxl/cxl.h 		return in_be64(_cxl_p1n_addr(afu, reg));
afu               814 drivers/misc/cxl/cxl.h static inline void __iomem *_cxl_p2n_addr(struct cxl_afu *afu, cxl_p2n_reg_t reg)
afu               816 drivers/misc/cxl/cxl.h 	return afu->p2n_mmio + cxl_reg_off(reg);
afu               819 drivers/misc/cxl/cxl.h static inline void cxl_p2n_write(struct cxl_afu *afu, cxl_p2n_reg_t reg, u64 val)
afu               821 drivers/misc/cxl/cxl.h 	if (likely(cxl_adapter_link_ok(afu->adapter, afu)))
afu               822 drivers/misc/cxl/cxl.h 		out_be64(_cxl_p2n_addr(afu, reg), val);
afu               825 drivers/misc/cxl/cxl.h static inline u64 cxl_p2n_read(struct cxl_afu *afu, cxl_p2n_reg_t reg)
afu               827 drivers/misc/cxl/cxl.h 	if (likely(cxl_adapter_link_ok(afu->adapter, afu)))
afu               828 drivers/misc/cxl/cxl.h 		return in_be64(_cxl_p2n_addr(afu, reg));
afu               849 drivers/misc/cxl/cxl.h ssize_t cxl_pci_afu_read_err_buffer(struct cxl_afu *afu, char *buf,
afu               863 drivers/misc/cxl/cxl.h void cxl_release_spa(struct cxl_afu *afu);
afu               869 drivers/misc/cxl/cxl.h int cxl_register_afu(struct cxl_afu *afu);
afu               870 drivers/misc/cxl/cxl.h int cxl_chardev_d_afu_add(struct cxl_afu *afu);
afu               871 drivers/misc/cxl/cxl.h int cxl_chardev_m_afu_add(struct cxl_afu *afu);
afu               872 drivers/misc/cxl/cxl.h int cxl_chardev_s_afu_add(struct cxl_afu *afu);
afu               873 drivers/misc/cxl/cxl.h void cxl_chardev_afu_remove(struct cxl_afu *afu);
afu               875 drivers/misc/cxl/cxl.h void cxl_context_detach_all(struct cxl_afu *afu);
afu               881 drivers/misc/cxl/cxl.h int cxl_sysfs_afu_add(struct cxl_afu *afu);
afu               882 drivers/misc/cxl/cxl.h void cxl_sysfs_afu_remove(struct cxl_afu *afu);
afu               883 drivers/misc/cxl/cxl.h int cxl_sysfs_afu_m_add(struct cxl_afu *afu);
afu               884 drivers/misc/cxl/cxl.h void cxl_sysfs_afu_m_remove(struct cxl_afu *afu);
afu               888 drivers/misc/cxl/cxl.h int cxl_afu_select_best_mode(struct cxl_afu *afu);
afu               890 drivers/misc/cxl/cxl.h int cxl_native_register_psl_irq(struct cxl_afu *afu);
afu               891 drivers/misc/cxl/cxl.h void cxl_native_release_psl_irq(struct cxl_afu *afu);
afu               894 drivers/misc/cxl/cxl.h int cxl_native_register_serr_irq(struct cxl_afu *afu);
afu               895 drivers/misc/cxl/cxl.h void cxl_native_release_serr_irq(struct cxl_afu *afu);
afu               902 drivers/misc/cxl/cxl.h int cxl_activate_dedicated_process_psl9(struct cxl_afu *afu);
afu               903 drivers/misc/cxl/cxl.h int cxl_activate_dedicated_process_psl8(struct cxl_afu *afu);
afu               915 drivers/misc/cxl/cxl.h void cxl_debugfs_afu_add(struct cxl_afu *afu);
afu               916 drivers/misc/cxl/cxl.h void cxl_debugfs_afu_remove(struct cxl_afu *afu);
afu               919 drivers/misc/cxl/cxl.h void cxl_debugfs_add_afu_regs_psl9(struct cxl_afu *afu, struct dentry *dir);
afu               920 drivers/misc/cxl/cxl.h void cxl_debugfs_add_afu_regs_psl8(struct cxl_afu *afu, struct dentry *dir);
afu               940 drivers/misc/cxl/cxl.h static inline void cxl_debugfs_afu_add(struct cxl_afu *afu)
afu               944 drivers/misc/cxl/cxl.h static inline void cxl_debugfs_afu_remove(struct cxl_afu *afu)
afu               958 drivers/misc/cxl/cxl.h static inline void cxl_debugfs_add_afu_regs_psl9(struct cxl_afu *afu, struct dentry *dir)
afu               962 drivers/misc/cxl/cxl.h static inline void cxl_debugfs_add_afu_regs_psl8(struct cxl_afu *afu, struct dentry *dir)
afu               979 drivers/misc/cxl/cxl.h int cxl_context_init(struct cxl_context *ctx, struct cxl_afu *afu, bool master);
afu              1012 drivers/misc/cxl/cxl.h irqreturn_t cxl_fail_irq_psl(struct cxl_afu *afu, struct cxl_irq_info *irq_info);
afu              1017 drivers/misc/cxl/cxl.h int cxl_check_error(struct cxl_afu *afu);
afu              1018 drivers/misc/cxl/cxl.h int cxl_afu_slbia(struct cxl_afu *afu);
afu              1020 drivers/misc/cxl/cxl.h int cxl_afu_disable(struct cxl_afu *afu);
afu              1021 drivers/misc/cxl/cxl.h int cxl_psl_purge(struct cxl_afu *afu);
afu              1032 drivers/misc/cxl/cxl.h int cxl_pci_vphb_add(struct cxl_afu *afu);
afu              1033 drivers/misc/cxl/cxl.h void cxl_pci_vphb_remove(struct cxl_afu *afu);
afu              1053 drivers/misc/cxl/cxl.h ssize_t cxl_guest_read_afu_vpd(struct cxl_afu *afu, void *buf, size_t len);
afu              1055 drivers/misc/cxl/cxl.h void cxl_guest_remove_afu(struct cxl_afu *afu);
afu              1056 drivers/misc/cxl/cxl.h int cxl_of_read_afu_handle(struct cxl_afu *afu, struct device_node *afu_np);
afu              1057 drivers/misc/cxl/cxl.h int cxl_of_read_afu_properties(struct cxl_afu *afu, struct device_node *afu_np);
afu              1084 drivers/misc/cxl/cxl.h 	bool (*link_ok)(struct cxl *cxl, struct cxl_afu *afu);
afu              1086 drivers/misc/cxl/cxl.h 	ssize_t (*afu_read_err_buffer)(struct cxl_afu *afu, char *buf,
afu              1088 drivers/misc/cxl/cxl.h 	int (*afu_check_and_enable)(struct cxl_afu *afu);
afu              1089 drivers/misc/cxl/cxl.h 	int (*afu_activate_mode)(struct cxl_afu *afu, int mode);
afu              1090 drivers/misc/cxl/cxl.h 	int (*afu_deactivate_mode)(struct cxl_afu *afu, int mode);
afu              1091 drivers/misc/cxl/cxl.h 	int (*afu_reset)(struct cxl_afu *afu);
afu              1092 drivers/misc/cxl/cxl.h 	int (*afu_cr_read8)(struct cxl_afu *afu, int cr_idx, u64 offset, u8 *val);
afu              1093 drivers/misc/cxl/cxl.h 	int (*afu_cr_read16)(struct cxl_afu *afu, int cr_idx, u64 offset, u16 *val);
afu              1094 drivers/misc/cxl/cxl.h 	int (*afu_cr_read32)(struct cxl_afu *afu, int cr_idx, u64 offset, u32 *val);
afu              1095 drivers/misc/cxl/cxl.h 	int (*afu_cr_read64)(struct cxl_afu *afu, int cr_idx, u64 offset, u64 *val);
afu              1096 drivers/misc/cxl/cxl.h 	int (*afu_cr_write8)(struct cxl_afu *afu, int cr_idx, u64 offset, u8 val);
afu              1097 drivers/misc/cxl/cxl.h 	int (*afu_cr_write16)(struct cxl_afu *afu, int cr_idx, u64 offset, u16 val);
afu              1098 drivers/misc/cxl/cxl.h 	int (*afu_cr_write32)(struct cxl_afu *afu, int cr_idx, u64 offset, u32 val);
afu              1109 drivers/misc/cxl/cxl.h void cxl_afu_decode_psl_serr(struct cxl_afu *afu, u64 serr);
afu                80 drivers/misc/cxl/debugfs.c void cxl_debugfs_add_afu_regs_psl9(struct cxl_afu *afu, struct dentry *dir)
afu                82 drivers/misc/cxl/debugfs.c 	debugfs_create_io_x64("serr", S_IRUSR, dir, _cxl_p1n_addr(afu, CXL_PSL_SERR_An));
afu                85 drivers/misc/cxl/debugfs.c void cxl_debugfs_add_afu_regs_psl8(struct cxl_afu *afu, struct dentry *dir)
afu                87 drivers/misc/cxl/debugfs.c 	debugfs_create_io_x64("sstp0", S_IRUSR, dir, _cxl_p2n_addr(afu, CXL_SSTP0_An));
afu                88 drivers/misc/cxl/debugfs.c 	debugfs_create_io_x64("sstp1", S_IRUSR, dir, _cxl_p2n_addr(afu, CXL_SSTP1_An));
afu                90 drivers/misc/cxl/debugfs.c 	debugfs_create_io_x64("fir", S_IRUSR, dir, _cxl_p1n_addr(afu, CXL_PSL_FIR_SLICE_An));
afu                91 drivers/misc/cxl/debugfs.c 	debugfs_create_io_x64("serr", S_IRUSR, dir, _cxl_p1n_addr(afu, CXL_PSL_SERR_An));
afu                92 drivers/misc/cxl/debugfs.c 	debugfs_create_io_x64("afu_debug", S_IRUSR, dir, _cxl_p1n_addr(afu, CXL_AFU_DEBUG_An));
afu                93 drivers/misc/cxl/debugfs.c 	debugfs_create_io_x64("trace", S_IRUSR | S_IWUSR, dir, _cxl_p1n_addr(afu, CXL_PSL_SLICE_TRACE));
afu                96 drivers/misc/cxl/debugfs.c void cxl_debugfs_afu_add(struct cxl_afu *afu)
afu               101 drivers/misc/cxl/debugfs.c 	if (!afu->adapter->debugfs)
afu               104 drivers/misc/cxl/debugfs.c 	snprintf(buf, 32, "psl%i.%i", afu->adapter->adapter_num, afu->slice);
afu               105 drivers/misc/cxl/debugfs.c 	dir = debugfs_create_dir(buf, afu->adapter->debugfs);
afu               106 drivers/misc/cxl/debugfs.c 	afu->debugfs = dir;
afu               108 drivers/misc/cxl/debugfs.c 	debugfs_create_io_x64("sr",         S_IRUSR, dir, _cxl_p1n_addr(afu, CXL_PSL_SR_An));
afu               109 drivers/misc/cxl/debugfs.c 	debugfs_create_io_x64("dsisr",      S_IRUSR, dir, _cxl_p2n_addr(afu, CXL_PSL_DSISR_An));
afu               110 drivers/misc/cxl/debugfs.c 	debugfs_create_io_x64("dar",        S_IRUSR, dir, _cxl_p2n_addr(afu, CXL_PSL_DAR_An));
afu               112 drivers/misc/cxl/debugfs.c 	debugfs_create_io_x64("err_status", S_IRUSR, dir, _cxl_p2n_addr(afu, CXL_PSL_ErrStat_An));
afu               114 drivers/misc/cxl/debugfs.c 	if (afu->adapter->native->sl_ops->debugfs_add_afu_regs)
afu               115 drivers/misc/cxl/debugfs.c 		afu->adapter->native->sl_ops->debugfs_add_afu_regs(afu, dir);
afu               118 drivers/misc/cxl/debugfs.c void cxl_debugfs_afu_remove(struct cxl_afu *afu)
afu               120 drivers/misc/cxl/debugfs.c 	debugfs_remove_recursive(afu->debugfs);
afu               237 drivers/misc/cxl/fault.c 		if (cxl_p2n_read(ctx->afu, CXL_PSL_DSISR_An) != dsisr ||
afu               238 drivers/misc/cxl/fault.c 		    cxl_p2n_read(ctx->afu, CXL_PSL_DAR_An) != dar ||
afu               239 drivers/misc/cxl/fault.c 		    cxl_p2n_read(ctx->afu, CXL_PSL_PEHandle_An) != ctx->pe) {
afu               244 drivers/misc/cxl/fault.c 			dev_notice(&ctx->afu->dev, "cxl_handle_fault: Translation fault regs changed\n");
afu               346 drivers/misc/cxl/fault.c 	switch (ctx->afu->prefault_mode) {
afu                28 drivers/misc/cxl/file.c #define CXL_AFU_MINOR_D(afu) (CXL_CARD_MINOR(afu->adapter) + 1 + (3 * afu->slice))
afu                29 drivers/misc/cxl/file.c #define CXL_AFU_MINOR_M(afu) (CXL_AFU_MINOR_D(afu) + 1)
afu                30 drivers/misc/cxl/file.c #define CXL_AFU_MINOR_S(afu) (CXL_AFU_MINOR_D(afu) + 2)
afu                31 drivers/misc/cxl/file.c #define CXL_AFU_MKDEV_D(afu) MKDEV(MAJOR(cxl_dev), CXL_AFU_MINOR_D(afu))
afu                32 drivers/misc/cxl/file.c #define CXL_AFU_MKDEV_M(afu) MKDEV(MAJOR(cxl_dev), CXL_AFU_MINOR_M(afu))
afu                33 drivers/misc/cxl/file.c #define CXL_AFU_MKDEV_S(afu) MKDEV(MAJOR(cxl_dev), CXL_AFU_MINOR_S(afu))
afu                46 drivers/misc/cxl/file.c 	struct cxl_afu *afu;
afu                61 drivers/misc/cxl/file.c 	if (!(afu = adapter->afu[slice])) {
afu                71 drivers/misc/cxl/file.c 	cxl_afu_get(afu);
afu                74 drivers/misc/cxl/file.c 	if (!afu->current_mode)
afu                77 drivers/misc/cxl/file.c 	if (!cxl_ops->link_ok(adapter, afu)) {
afu                87 drivers/misc/cxl/file.c 	rc = cxl_context_init(ctx, afu, master);
afu               101 drivers/misc/cxl/file.c 	cxl_afu_put(afu);
afu               179 drivers/misc/cxl/file.c 		work.num_interrupts = ctx->afu->pp_irqs;
afu               180 drivers/misc/cxl/file.c 	else if ((work.num_interrupts < ctx->afu->pp_irqs) ||
afu               181 drivers/misc/cxl/file.c 		 (work.num_interrupts > ctx->afu->irqs_max)) {
afu               201 drivers/misc/cxl/file.c 	rc = cxl_adapter_context_get(ctx->afu->adapter);
afu               256 drivers/misc/cxl/file.c 		cxl_adapter_context_put(ctx->afu->adapter);
afu               296 drivers/misc/cxl/file.c 	afuid.card_id = ctx->afu->adapter->adapter_num;
afu               297 drivers/misc/cxl/file.c 	afuid.afu_offset = ctx->afu->slice;
afu               298 drivers/misc/cxl/file.c 	afuid.afu_mode = ctx->afu->current_mode;
afu               301 drivers/misc/cxl/file.c 	if (ctx->afu->current_mode == CXL_MODE_DIRECTED && !ctx->master)
afu               317 drivers/misc/cxl/file.c 	if (!cxl_ops->link_ok(ctx->afu->adapter, ctx->afu))
afu               347 drivers/misc/cxl/file.c 	if (!cxl_ops->link_ok(ctx->afu->adapter, ctx->afu))
afu               434 drivers/misc/cxl/file.c 	if (!cxl_ops->link_ok(ctx->afu->adapter, ctx->afu))
afu               447 drivers/misc/cxl/file.c 		if (!cxl_ops->link_ok(ctx->afu->adapter, ctx->afu)) {
afu               564 drivers/misc/cxl/file.c static int cxl_add_chardev(struct cxl_afu *afu, dev_t devt, struct cdev *cdev,
afu               573 drivers/misc/cxl/file.c 		dev_err(&afu->dev, "Unable to add %s chardev: %i\n", desc, rc);
afu               577 drivers/misc/cxl/file.c 	dev = device_create(cxl_class, &afu->dev, devt, afu,
afu               578 drivers/misc/cxl/file.c 			"afu%i.%i%s", afu->adapter->adapter_num, afu->slice, postfix);
afu               580 drivers/misc/cxl/file.c 		dev_err(&afu->dev, "Unable to create %s chardev in sysfs: %i\n", desc, rc);
afu               593 drivers/misc/cxl/file.c int cxl_chardev_d_afu_add(struct cxl_afu *afu)
afu               595 drivers/misc/cxl/file.c 	return cxl_add_chardev(afu, CXL_AFU_MKDEV_D(afu), &afu->afu_cdev_d,
afu               596 drivers/misc/cxl/file.c 			       &afu->chardev_d, "d", "dedicated",
afu               600 drivers/misc/cxl/file.c int cxl_chardev_m_afu_add(struct cxl_afu *afu)
afu               602 drivers/misc/cxl/file.c 	return cxl_add_chardev(afu, CXL_AFU_MKDEV_M(afu), &afu->afu_cdev_m,
afu               603 drivers/misc/cxl/file.c 			       &afu->chardev_m, "m", "master",
afu               607 drivers/misc/cxl/file.c int cxl_chardev_s_afu_add(struct cxl_afu *afu)
afu               609 drivers/misc/cxl/file.c 	return cxl_add_chardev(afu, CXL_AFU_MKDEV_S(afu), &afu->afu_cdev_s,
afu               610 drivers/misc/cxl/file.c 			       &afu->chardev_s, "s", "shared",
afu               614 drivers/misc/cxl/file.c void cxl_chardev_afu_remove(struct cxl_afu *afu)
afu               616 drivers/misc/cxl/file.c 	if (afu->chardev_d) {
afu               617 drivers/misc/cxl/file.c 		cdev_del(&afu->afu_cdev_d);
afu               618 drivers/misc/cxl/file.c 		device_unregister(afu->chardev_d);
afu               619 drivers/misc/cxl/file.c 		afu->chardev_d = NULL;
afu               621 drivers/misc/cxl/file.c 	if (afu->chardev_m) {
afu               622 drivers/misc/cxl/file.c 		cdev_del(&afu->afu_cdev_m);
afu               623 drivers/misc/cxl/file.c 		device_unregister(afu->chardev_m);
afu               624 drivers/misc/cxl/file.c 		afu->chardev_m = NULL;
afu               626 drivers/misc/cxl/file.c 	if (afu->chardev_s) {
afu               627 drivers/misc/cxl/file.c 		cdev_del(&afu->afu_cdev_s);
afu               628 drivers/misc/cxl/file.c 		device_unregister(afu->chardev_s);
afu               629 drivers/misc/cxl/file.c 		afu->chardev_s = NULL;
afu               633 drivers/misc/cxl/file.c int cxl_register_afu(struct cxl_afu *afu)
afu               635 drivers/misc/cxl/file.c 	afu->dev.class = cxl_class;
afu               637 drivers/misc/cxl/file.c 	return device_register(&afu->dev);
afu               326 drivers/misc/cxl/flash.c 	int afu;
afu               348 drivers/misc/cxl/flash.c 			for (afu = 0; afu < adapter->slices; afu++)
afu               349 drivers/misc/cxl/flash.c 				cxl_guest_remove_afu(adapter->afu[afu]);
afu                18 drivers/misc/cxl/guest.c static void pci_error_handlers(struct cxl_afu *afu,
afu                24 drivers/misc/cxl/guest.c 	if (afu->phb == NULL)
afu                27 drivers/misc/cxl/guest.c 	list_for_each_entry(afu_dev, &afu->phb->bus->devices, bus_list) {
afu                59 drivers/misc/cxl/guest.c 	dev_crit(&ctx->afu->dev, "PSL ERROR STATUS: 0x%.16llx\n", errstat);
afu                64 drivers/misc/cxl/guest.c static ssize_t guest_collect_vpd(struct cxl *adapter, struct cxl_afu *afu,
afu               114 drivers/misc/cxl/guest.c 		rc = cxl_h_collect_vpd(afu->guest->handle, 0,
afu               152 drivers/misc/cxl/guest.c 	return cxl_h_collect_int_info(ctx->afu->guest->handle, ctx->process_token, info);
afu               172 drivers/misc/cxl/guest.c static int afu_read_error_state(struct cxl_afu *afu, int *state_out)
afu               177 drivers/misc/cxl/guest.c 	if (!afu)
afu               180 drivers/misc/cxl/guest.c 	rc = cxl_h_read_error_state(afu->guest->handle, &state);
afu               193 drivers/misc/cxl/guest.c 	struct cxl_afu *afu = data;
afu               197 drivers/misc/cxl/guest.c 	rc = cxl_h_get_fn_error_interrupt(afu->guest->handle, &serr);
afu               199 drivers/misc/cxl/guest.c 		dev_crit(&afu->dev, "Couldn't read PSL_SERR_An: %d\n", rc);
afu               202 drivers/misc/cxl/guest.c 	afu_error = cxl_p2n_read(afu, CXL_AFU_ERR_An);
afu               203 drivers/misc/cxl/guest.c 	dsisr = cxl_p2n_read(afu, CXL_PSL_DSISR_An);
afu               204 drivers/misc/cxl/guest.c 	cxl_afu_decode_psl_serr(afu, serr);
afu               205 drivers/misc/cxl/guest.c 	dev_crit(&afu->dev, "AFU_ERR_An: 0x%.16llx\n", afu_error);
afu               206 drivers/misc/cxl/guest.c 	dev_crit(&afu->dev, "PSL_DSISR_An: 0x%.16llx\n", dsisr);
afu               208 drivers/misc/cxl/guest.c 	rc = cxl_h_ack_fn_error_interrupt(afu->guest->handle, serr);
afu               210 drivers/misc/cxl/guest.c 		dev_crit(&afu->dev, "Couldn't ack slice error interrupt: %d\n",
afu               262 drivers/misc/cxl/guest.c 	struct cxl_afu *afu = NULL;
afu               268 drivers/misc/cxl/guest.c 		if ((afu = adapter->afu[i])) {
afu               269 drivers/misc/cxl/guest.c 			pci_error_handlers(afu, CXL_ERROR_DETECTED_EVENT,
afu               271 drivers/misc/cxl/guest.c 			cxl_context_detach_all(afu);
afu               277 drivers/misc/cxl/guest.c 		if (!rc && (afu = adapter->afu[i])) {
afu               278 drivers/misc/cxl/guest.c 			pci_error_handlers(afu, CXL_SLOT_RESET_EVENT,
afu               280 drivers/misc/cxl/guest.c 			pci_error_handlers(afu, CXL_RESUME_EVENT, 0);
afu               349 drivers/misc/cxl/guest.c static int guest_register_serr_irq(struct cxl_afu *afu)
afu               351 drivers/misc/cxl/guest.c 	afu->err_irq_name = kasprintf(GFP_KERNEL, "cxl-%s-err",
afu               352 drivers/misc/cxl/guest.c 				      dev_name(&afu->dev));
afu               353 drivers/misc/cxl/guest.c 	if (!afu->err_irq_name)
afu               356 drivers/misc/cxl/guest.c 	if (!(afu->serr_virq = cxl_map_irq(afu->adapter, afu->serr_hwirq,
afu               357 drivers/misc/cxl/guest.c 				 guest_slice_irq_err, afu, afu->err_irq_name))) {
afu               358 drivers/misc/cxl/guest.c 		kfree(afu->err_irq_name);
afu               359 drivers/misc/cxl/guest.c 		afu->err_irq_name = NULL;
afu               366 drivers/misc/cxl/guest.c static void guest_release_serr_irq(struct cxl_afu *afu)
afu               368 drivers/misc/cxl/guest.c 	cxl_unmap_irq(afu->serr_virq, afu);
afu               369 drivers/misc/cxl/guest.c 	cxl_ops->release_one_irq(afu->adapter, afu->serr_hwirq);
afu               370 drivers/misc/cxl/guest.c 	kfree(afu->err_irq_name);
afu               375 drivers/misc/cxl/guest.c 	return cxl_h_control_faults(ctx->afu->guest->handle, ctx->process_token,
afu               385 drivers/misc/cxl/guest.c 	pr_devel("Disabling AFU(%d) interrupts\n", ctx->afu->slice);
afu               401 drivers/misc/cxl/guest.c 	pr_devel("Enabling AFU(%d) interrupts\n", ctx->afu->slice);
afu               411 drivers/misc/cxl/guest.c static int _guest_afu_cr_readXX(int sz, struct cxl_afu *afu, int cr_idx,
afu               418 drivers/misc/cxl/guest.c 	if (afu->crs_len < sz)
afu               421 drivers/misc/cxl/guest.c 	if (unlikely(offset >= afu->crs_len))
afu               428 drivers/misc/cxl/guest.c 	rc = cxl_h_get_config(afu->guest->handle, cr_idx, offset,
afu               455 drivers/misc/cxl/guest.c static int guest_afu_cr_read32(struct cxl_afu *afu, int cr_idx, u64 offset,
afu               461 drivers/misc/cxl/guest.c 	rc = _guest_afu_cr_readXX(4, afu, cr_idx, offset, &val);
afu               467 drivers/misc/cxl/guest.c static int guest_afu_cr_read16(struct cxl_afu *afu, int cr_idx, u64 offset,
afu               473 drivers/misc/cxl/guest.c 	rc = _guest_afu_cr_readXX(2, afu, cr_idx, offset, &val);
afu               479 drivers/misc/cxl/guest.c static int guest_afu_cr_read8(struct cxl_afu *afu, int cr_idx, u64 offset,
afu               485 drivers/misc/cxl/guest.c 	rc = _guest_afu_cr_readXX(1, afu, cr_idx, offset, &val);
afu               491 drivers/misc/cxl/guest.c static int guest_afu_cr_read64(struct cxl_afu *afu, int cr_idx, u64 offset,
afu               494 drivers/misc/cxl/guest.c 	return _guest_afu_cr_readXX(8, afu, cr_idx, offset, out);
afu               497 drivers/misc/cxl/guest.c static int guest_afu_cr_write32(struct cxl_afu *afu, int cr, u64 off, u32 in)
afu               503 drivers/misc/cxl/guest.c static int guest_afu_cr_write16(struct cxl_afu *afu, int cr, u64 off, u16 in)
afu               509 drivers/misc/cxl/guest.c static int guest_afu_cr_write8(struct cxl_afu *afu, int cr, u64 off, u8 in)
afu               518 drivers/misc/cxl/guest.c 	struct cxl *adapter = ctx->afu->adapter;
afu               585 drivers/misc/cxl/guest.c 	rc = cxl_h_attach_process(ctx->afu->guest->handle, elem,
afu               588 drivers/misc/cxl/guest.c 		if (ctx->master || !ctx->afu->pp_psa) {
afu               589 drivers/misc/cxl/guest.c 			ctx->psn_phys = ctx->afu->psn_phys;
afu               590 drivers/misc/cxl/guest.c 			ctx->psn_size = ctx->afu->adapter->ps_size;
afu               595 drivers/misc/cxl/guest.c 		if (ctx->afu->pp_psa && mmio_size &&
afu               596 drivers/misc/cxl/guest.c 			ctx->afu->pp_size == 0) {
afu               605 drivers/misc/cxl/guest.c 			ctx->afu->pp_size = mmio_size;
afu               625 drivers/misc/cxl/guest.c 	if (ctx->afu->current_mode == CXL_MODE_DIRECTED)
afu               637 drivers/misc/cxl/guest.c 	if (cxl_h_detach_process(ctx->afu->guest->handle, ctx->process_token))
afu               647 drivers/misc/cxl/guest.c 	if (!cxl_ops->link_ok(ctx->afu->adapter, ctx->afu))
afu               650 drivers/misc/cxl/guest.c 	if (ctx->afu->current_mode == CXL_MODE_DIRECTED)
afu               658 drivers/misc/cxl/guest.c 	struct cxl_afu *afu = to_cxl_afu(dev);
afu               662 drivers/misc/cxl/guest.c 	idr_destroy(&afu->contexts_idr);
afu               664 drivers/misc/cxl/guest.c 	kfree(afu->guest);
afu               665 drivers/misc/cxl/guest.c 	kfree(afu);
afu               668 drivers/misc/cxl/guest.c ssize_t cxl_guest_read_afu_vpd(struct cxl_afu *afu, void *buf, size_t len)
afu               670 drivers/misc/cxl/guest.c 	return guest_collect_vpd(NULL, afu, buf, len);
afu               674 drivers/misc/cxl/guest.c static ssize_t guest_afu_read_err_buffer(struct cxl_afu *afu, char *buf,
afu               684 drivers/misc/cxl/guest.c 	rc = cxl_h_get_afu_err(afu->guest->handle,
afu               700 drivers/misc/cxl/guest.c static int guest_afu_check_and_enable(struct cxl_afu *afu)
afu               729 drivers/misc/cxl/guest.c static int activate_afu_directed(struct cxl_afu *afu)
afu               733 drivers/misc/cxl/guest.c 	dev_info(&afu->dev, "Activating AFU(%d) directed mode\n", afu->slice);
afu               735 drivers/misc/cxl/guest.c 	afu->current_mode = CXL_MODE_DIRECTED;
afu               737 drivers/misc/cxl/guest.c 	afu->num_procs = afu->max_procs_virtualised;
afu               739 drivers/misc/cxl/guest.c 	if ((rc = cxl_chardev_m_afu_add(afu)))
afu               742 drivers/misc/cxl/guest.c 	if ((rc = cxl_sysfs_afu_m_add(afu)))
afu               745 drivers/misc/cxl/guest.c 	if ((rc = cxl_chardev_s_afu_add(afu)))
afu               750 drivers/misc/cxl/guest.c 	cxl_sysfs_afu_m_remove(afu);
afu               752 drivers/misc/cxl/guest.c 	cxl_chardev_afu_remove(afu);
afu               756 drivers/misc/cxl/guest.c static int guest_afu_activate_mode(struct cxl_afu *afu, int mode)
afu               760 drivers/misc/cxl/guest.c 	if (!(mode & afu->modes_supported))
afu               764 drivers/misc/cxl/guest.c 		return activate_afu_directed(afu);
afu               767 drivers/misc/cxl/guest.c 		dev_err(&afu->dev, "Dedicated mode not supported\n");
afu               772 drivers/misc/cxl/guest.c static int deactivate_afu_directed(struct cxl_afu *afu)
afu               774 drivers/misc/cxl/guest.c 	dev_info(&afu->dev, "Deactivating AFU(%d) directed mode\n", afu->slice);
afu               776 drivers/misc/cxl/guest.c 	afu->current_mode = 0;
afu               777 drivers/misc/cxl/guest.c 	afu->num_procs = 0;
afu               779 drivers/misc/cxl/guest.c 	cxl_sysfs_afu_m_remove(afu);
afu               780 drivers/misc/cxl/guest.c 	cxl_chardev_afu_remove(afu);
afu               782 drivers/misc/cxl/guest.c 	cxl_ops->afu_reset(afu);
afu               787 drivers/misc/cxl/guest.c static int guest_afu_deactivate_mode(struct cxl_afu *afu, int mode)
afu               791 drivers/misc/cxl/guest.c 	if (!(mode & afu->modes_supported))
afu               795 drivers/misc/cxl/guest.c 		return deactivate_afu_directed(afu);
afu               799 drivers/misc/cxl/guest.c static int guest_afu_reset(struct cxl_afu *afu)
afu               801 drivers/misc/cxl/guest.c 	pr_devel("AFU(%d) reset request\n", afu->slice);
afu               802 drivers/misc/cxl/guest.c 	return cxl_h_reset_afu(afu->guest->handle);
afu               805 drivers/misc/cxl/guest.c static int guest_map_slice_regs(struct cxl_afu *afu)
afu               807 drivers/misc/cxl/guest.c 	if (!(afu->p2n_mmio = ioremap(afu->guest->p2n_phys, afu->guest->p2n_size))) {
afu               808 drivers/misc/cxl/guest.c 		dev_err(&afu->dev, "Error mapping AFU(%d) MMIO regions\n",
afu               809 drivers/misc/cxl/guest.c 			afu->slice);
afu               815 drivers/misc/cxl/guest.c static void guest_unmap_slice_regs(struct cxl_afu *afu)
afu               817 drivers/misc/cxl/guest.c 	if (afu->p2n_mmio)
afu               818 drivers/misc/cxl/guest.c 		iounmap(afu->p2n_mmio);
afu               821 drivers/misc/cxl/guest.c static int afu_update_state(struct cxl_afu *afu)
afu               825 drivers/misc/cxl/guest.c 	rc = afu_read_error_state(afu, &cur_state);
afu               829 drivers/misc/cxl/guest.c 	if (afu->guest->previous_state == cur_state)
afu               832 drivers/misc/cxl/guest.c 	pr_devel("AFU(%d) update state to %#x\n", afu->slice, cur_state);
afu               836 drivers/misc/cxl/guest.c 		afu->guest->previous_state = cur_state;
afu               840 drivers/misc/cxl/guest.c 		pci_error_handlers(afu, CXL_ERROR_DETECTED_EVENT,
afu               843 drivers/misc/cxl/guest.c 		cxl_context_detach_all(afu);
afu               844 drivers/misc/cxl/guest.c 		if ((rc = cxl_ops->afu_reset(afu)))
afu               847 drivers/misc/cxl/guest.c 		rc = afu_read_error_state(afu, &cur_state);
afu               849 drivers/misc/cxl/guest.c 			pci_error_handlers(afu, CXL_SLOT_RESET_EVENT,
afu               851 drivers/misc/cxl/guest.c 			pci_error_handlers(afu, CXL_RESUME_EVENT, 0);
afu               853 drivers/misc/cxl/guest.c 		afu->guest->previous_state = 0;
afu               857 drivers/misc/cxl/guest.c 		afu->guest->previous_state = cur_state;
afu               861 drivers/misc/cxl/guest.c 		dev_err(&afu->dev, "AFU is in permanent error state\n");
afu               862 drivers/misc/cxl/guest.c 		pci_error_handlers(afu, CXL_ERROR_DETECTED_EVENT,
afu               864 drivers/misc/cxl/guest.c 		afu->guest->previous_state = cur_state;
afu               869 drivers/misc/cxl/guest.c 		       afu->slice, cur_state);
afu               890 drivers/misc/cxl/guest.c static bool guest_link_ok(struct cxl *cxl, struct cxl_afu *afu)
afu               894 drivers/misc/cxl/guest.c 	if (afu && (!afu_read_error_state(afu, &state))) {
afu               902 drivers/misc/cxl/guest.c static int afu_properties_look_ok(struct cxl_afu *afu)
afu               904 drivers/misc/cxl/guest.c 	if (afu->pp_irqs < 0) {
afu               905 drivers/misc/cxl/guest.c 		dev_err(&afu->dev, "Unexpected per-process minimum interrupt value\n");
afu               909 drivers/misc/cxl/guest.c 	if (afu->max_procs_virtualised < 1) {
afu               910 drivers/misc/cxl/guest.c 		dev_err(&afu->dev, "Unexpected max number of processes virtualised value\n");
afu               919 drivers/misc/cxl/guest.c 	struct cxl_afu *afu;
afu               924 drivers/misc/cxl/guest.c 	if (!(afu = cxl_alloc_afu(adapter, slice)))
afu               927 drivers/misc/cxl/guest.c 	if (!(afu->guest = kzalloc(sizeof(struct cxl_afu_guest), GFP_KERNEL))) {
afu               928 drivers/misc/cxl/guest.c 		kfree(afu);
afu               932 drivers/misc/cxl/guest.c 	if ((rc = dev_set_name(&afu->dev, "afu%i.%i",
afu               939 drivers/misc/cxl/guest.c 	if ((rc = cxl_of_read_afu_handle(afu, afu_np)))
afu               942 drivers/misc/cxl/guest.c 	if ((rc = cxl_ops->afu_reset(afu)))
afu               945 drivers/misc/cxl/guest.c 	if ((rc = cxl_of_read_afu_properties(afu, afu_np)))
afu               948 drivers/misc/cxl/guest.c 	if ((rc = afu_properties_look_ok(afu)))
afu               951 drivers/misc/cxl/guest.c 	if ((rc = guest_map_slice_regs(afu)))
afu               954 drivers/misc/cxl/guest.c 	if ((rc = guest_register_serr_irq(afu)))
afu               961 drivers/misc/cxl/guest.c 	if ((rc = cxl_register_afu(afu)))
afu               964 drivers/misc/cxl/guest.c 	if ((rc = cxl_sysfs_afu_add(afu)))
afu               975 drivers/misc/cxl/guest.c 	if (afu->max_procs_virtualised == 1)
afu               976 drivers/misc/cxl/guest.c 		afu->modes_supported = CXL_MODE_DEDICATED;
afu               978 drivers/misc/cxl/guest.c 		afu->modes_supported = CXL_MODE_DIRECTED;
afu               980 drivers/misc/cxl/guest.c 	if ((rc = cxl_afu_select_best_mode(afu)))
afu               983 drivers/misc/cxl/guest.c 	adapter->afu[afu->slice] = afu;
afu               985 drivers/misc/cxl/guest.c 	afu->enabled = true;
afu               991 drivers/misc/cxl/guest.c 	afu->guest->parent = afu;
afu               992 drivers/misc/cxl/guest.c 	afu->guest->handle_err = true;
afu               993 drivers/misc/cxl/guest.c 	INIT_DELAYED_WORK(&afu->guest->work_err, afu_handle_errstate);
afu               994 drivers/misc/cxl/guest.c 	schedule_delayed_work(&afu->guest->work_err, msecs_to_jiffies(1000));
afu               996 drivers/misc/cxl/guest.c 	if ((rc = cxl_pci_vphb_add(afu)))
afu               997 drivers/misc/cxl/guest.c 		dev_info(&afu->dev, "Can't register vPHB\n");
afu              1002 drivers/misc/cxl/guest.c 	cxl_sysfs_afu_remove(afu);
afu              1004 drivers/misc/cxl/guest.c 	device_unregister(&afu->dev);
afu              1006 drivers/misc/cxl/guest.c 	guest_release_serr_irq(afu);
afu              1008 drivers/misc/cxl/guest.c 	guest_unmap_slice_regs(afu);
afu              1011 drivers/misc/cxl/guest.c 		kfree(afu->guest);
afu              1012 drivers/misc/cxl/guest.c 		kfree(afu);
afu              1017 drivers/misc/cxl/guest.c void cxl_guest_remove_afu(struct cxl_afu *afu)
afu              1019 drivers/misc/cxl/guest.c 	if (!afu)
afu              1023 drivers/misc/cxl/guest.c 	afu->guest->handle_err = false;
afu              1024 drivers/misc/cxl/guest.c 	flush_delayed_work(&afu->guest->work_err);
afu              1026 drivers/misc/cxl/guest.c 	cxl_pci_vphb_remove(afu);
afu              1027 drivers/misc/cxl/guest.c 	cxl_sysfs_afu_remove(afu);
afu              1029 drivers/misc/cxl/guest.c 	spin_lock(&afu->adapter->afu_list_lock);
afu              1030 drivers/misc/cxl/guest.c 	afu->adapter->afu[afu->slice] = NULL;
afu              1031 drivers/misc/cxl/guest.c 	spin_unlock(&afu->adapter->afu_list_lock);
afu              1033 drivers/misc/cxl/guest.c 	cxl_context_detach_all(afu);
afu              1034 drivers/misc/cxl/guest.c 	cxl_ops->afu_deactivate_mode(afu, afu->current_mode);
afu              1035 drivers/misc/cxl/guest.c 	guest_release_serr_irq(afu);
afu              1036 drivers/misc/cxl/guest.c 	guest_unmap_slice_regs(afu);
afu              1038 drivers/misc/cxl/guest.c 	device_unregister(&afu->dev);
afu                63 drivers/misc/cxl/irq.c 			dev_err_ratelimited(&ctx->afu->dev, "CXL AFU Error undelivered to pe %i: 0x%016llx\n",
afu               148 drivers/misc/cxl/irq.c 			dev_err_ratelimited(&ctx->afu->dev, "CXL AFU Error "
afu               310 drivers/misc/cxl/irq.c 	if ((rc = cxl_ops->alloc_irq_ranges(&ctx->irqs, ctx->afu->adapter,
afu               316 drivers/misc/cxl/irq.c 		ctx->irqs.offset[0] = ctx->afu->native->psl_hwirq;
afu               337 drivers/misc/cxl/irq.c 						   dev_name(&ctx->afu->dev),
afu               351 drivers/misc/cxl/irq.c 	cxl_ops->release_irq_ranges(&ctx->irqs, ctx->afu->adapter);
afu               382 drivers/misc/cxl/irq.c 			cxl_map_irq(ctx->afu->adapter, hwirq, handler, ctx,
afu               417 drivers/misc/cxl/irq.c 	cxl_ops->release_irq_ranges(&ctx->irqs, ctx->afu->adapter);
afu               422 drivers/misc/cxl/irq.c void cxl_afu_decode_psl_serr(struct cxl_afu *afu, u64 serr)
afu               424 drivers/misc/cxl/irq.c 	dev_crit(&afu->dev,
afu               426 drivers/misc/cxl/irq.c 	dev_crit(&afu->dev, "PSL_SERR_An: 0x%016llx\n", serr);
afu               428 drivers/misc/cxl/irq.c 		dev_crit(&afu->dev, "AFU MMIO Timeout\n");
afu               430 drivers/misc/cxl/irq.c 		dev_crit(&afu->dev,
afu               433 drivers/misc/cxl/irq.c 		dev_crit(&afu->dev, "AFU CTAG Overflow\n");
afu               435 drivers/misc/cxl/irq.c 		dev_crit(&afu->dev, "Bad Interrupt Source\n");
afu               437 drivers/misc/cxl/irq.c 		dev_crit(&afu->dev, "Bad Context Handle\n");
afu               439 drivers/misc/cxl/irq.c 		dev_crit(&afu->dev, "LLCMD to Disabled AFU\n");
afu               441 drivers/misc/cxl/irq.c 		dev_crit(&afu->dev, "LLCMD Timeout to AFU\n");
afu               443 drivers/misc/cxl/irq.c 		dev_crit(&afu->dev, "AFU MMIO Parity Error\n");
afu               445 drivers/misc/cxl/irq.c 		dev_crit(&afu->dev, "AFU MMIO Duplicate CTAG Error\n");
afu               447 drivers/misc/cxl/irq.c 		dev_crit(&afu->dev,
afu                36 drivers/misc/cxl/main.c int cxl_afu_slbia(struct cxl_afu *afu)
afu                41 drivers/misc/cxl/main.c 	cxl_p2n_write(afu, CXL_SLBIA_An, CXL_TLB_SLB_IQ_ALL);
afu                42 drivers/misc/cxl/main.c 	while (cxl_p2n_read(afu, CXL_SLBIA_An) & CXL_TLB_SLB_P) {
afu                44 drivers/misc/cxl/main.c 			dev_warn(&afu->dev, "WARNING: CXL AFU SLBIA timed out!\n");
afu                50 drivers/misc/cxl/main.c 		if (!cxl_ops->link_ok(afu->adapter, afu))
afu                65 drivers/misc/cxl/main.c 		 ctx->afu->adapter->adapter_num, ctx->afu->slice, ctx->pe);
afu                72 drivers/misc/cxl/main.c 	cxl_afu_slbia(ctx->afu);
afu                78 drivers/misc/cxl/main.c 	struct cxl_afu *afu;
afu                89 drivers/misc/cxl/main.c 			afu = adapter->afu[slice];
afu                90 drivers/misc/cxl/main.c 			if (!afu || !afu->enabled)
afu                93 drivers/misc/cxl/main.c 			idr_for_each_entry(&afu->contexts_idr, ctx, id)
afu               245 drivers/misc/cxl/main.c 	struct cxl_afu *afu;
afu               247 drivers/misc/cxl/main.c 	if (!(afu = kzalloc(sizeof(struct cxl_afu), GFP_KERNEL)))
afu               250 drivers/misc/cxl/main.c 	afu->adapter = adapter;
afu               251 drivers/misc/cxl/main.c 	afu->dev.parent = &adapter->dev;
afu               252 drivers/misc/cxl/main.c 	afu->dev.release = cxl_ops->release_afu;
afu               253 drivers/misc/cxl/main.c 	afu->slice = slice;
afu               254 drivers/misc/cxl/main.c 	idr_init(&afu->contexts_idr);
afu               255 drivers/misc/cxl/main.c 	mutex_init(&afu->contexts_lock);
afu               256 drivers/misc/cxl/main.c 	spin_lock_init(&afu->afu_cntl_lock);
afu               257 drivers/misc/cxl/main.c 	atomic_set(&afu->configured_state, -1);
afu               258 drivers/misc/cxl/main.c 	afu->prefault_mode = CXL_PREFAULT_NONE;
afu               259 drivers/misc/cxl/main.c 	afu->irqs_max = afu->adapter->user_irqs;
afu               261 drivers/misc/cxl/main.c 	return afu;
afu               264 drivers/misc/cxl/main.c int cxl_afu_select_best_mode(struct cxl_afu *afu)
afu               266 drivers/misc/cxl/main.c 	if (afu->modes_supported & CXL_MODE_DIRECTED)
afu               267 drivers/misc/cxl/main.c 		return cxl_ops->afu_activate_mode(afu, CXL_MODE_DIRECTED);
afu               269 drivers/misc/cxl/main.c 	if (afu->modes_supported & CXL_MODE_DEDICATED)
afu               270 drivers/misc/cxl/main.c 		return cxl_ops->afu_activate_mode(afu, CXL_MODE_DEDICATED);
afu               272 drivers/misc/cxl/main.c 	dev_warn(&afu->dev, "No supported programming modes available\n");
afu                21 drivers/misc/cxl/native.c static int afu_control(struct cxl_afu *afu, u64 command, u64 clear,
afu                28 drivers/misc/cxl/native.c 	spin_lock(&afu->afu_cntl_lock);
afu                31 drivers/misc/cxl/native.c 	trace_cxl_afu_ctrl(afu, command);
afu                33 drivers/misc/cxl/native.c 	AFU_Cntl = cxl_p2n_read(afu, CXL_AFU_Cntl_An);
afu                34 drivers/misc/cxl/native.c 	cxl_p2n_write(afu, CXL_AFU_Cntl_An, (AFU_Cntl & ~clear) | command);
afu                36 drivers/misc/cxl/native.c 	AFU_Cntl = cxl_p2n_read(afu, CXL_AFU_Cntl_An);
afu                39 drivers/misc/cxl/native.c 			dev_warn(&afu->dev, "WARNING: AFU control timed out!\n");
afu                44 drivers/misc/cxl/native.c 		if (!cxl_ops->link_ok(afu->adapter, afu)) {
afu                45 drivers/misc/cxl/native.c 			afu->enabled = enabled;
afu                53 drivers/misc/cxl/native.c 		AFU_Cntl = cxl_p2n_read(afu, CXL_AFU_Cntl_An);
afu                62 drivers/misc/cxl/native.c 		cxl_p2n_write(afu, CXL_AFU_Cntl_An, AFU_Cntl & ~CXL_AFU_Cntl_An_RA);
afu                66 drivers/misc/cxl/native.c 	afu->enabled = enabled;
afu                68 drivers/misc/cxl/native.c 	trace_cxl_afu_ctrl_done(afu, command, rc);
afu                69 drivers/misc/cxl/native.c 	spin_unlock(&afu->afu_cntl_lock);
afu                74 drivers/misc/cxl/native.c static int afu_enable(struct cxl_afu *afu)
afu                78 drivers/misc/cxl/native.c 	return afu_control(afu, CXL_AFU_Cntl_An_E, 0,
afu                83 drivers/misc/cxl/native.c int cxl_afu_disable(struct cxl_afu *afu)
afu                87 drivers/misc/cxl/native.c 	return afu_control(afu, 0, CXL_AFU_Cntl_An_E,
afu                93 drivers/misc/cxl/native.c static int native_afu_reset(struct cxl_afu *afu)
afu               100 drivers/misc/cxl/native.c 	rc = afu_control(afu, CXL_AFU_Cntl_An_RA, 0,
afu               110 drivers/misc/cxl/native.c 	if (afu->current_mode == 0) {
afu               111 drivers/misc/cxl/native.c 		serr = cxl_p1n_read(afu, CXL_PSL_SERR_An);
afu               113 drivers/misc/cxl/native.c 		cxl_p1n_write(afu, CXL_PSL_SERR_An, serr);
afu               119 drivers/misc/cxl/native.c static int native_afu_check_and_enable(struct cxl_afu *afu)
afu               121 drivers/misc/cxl/native.c 	if (!cxl_ops->link_ok(afu->adapter, afu)) {
afu               125 drivers/misc/cxl/native.c 	if (afu->enabled)
afu               127 drivers/misc/cxl/native.c 	return afu_enable(afu);
afu               130 drivers/misc/cxl/native.c int cxl_psl_purge(struct cxl_afu *afu)
afu               132 drivers/misc/cxl/native.c 	u64 PSL_CNTL = cxl_p1n_read(afu, CXL_PSL_SCNTL_An);
afu               133 drivers/misc/cxl/native.c 	u64 AFU_Cntl = cxl_p2n_read(afu, CXL_AFU_Cntl_An);
afu               140 drivers/misc/cxl/native.c 	trace_cxl_psl_ctrl(afu, CXL_PSL_SCNTL_An_Pc);
afu               149 drivers/misc/cxl/native.c 	if (!cxl_ops->link_ok(afu->adapter, afu)) {
afu               150 drivers/misc/cxl/native.c 		dev_warn(&afu->dev, "PSL Purge called with link down, ignoring\n");
afu               157 drivers/misc/cxl/native.c 		cxl_afu_disable(afu);
afu               160 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_SCNTL_An,
afu               163 drivers/misc/cxl/native.c 	PSL_CNTL = cxl_p1n_read(afu, CXL_PSL_SCNTL_An);
afu               167 drivers/misc/cxl/native.c 			dev_warn(&afu->dev, "WARNING: PSL Purge timed out!\n");
afu               171 drivers/misc/cxl/native.c 		if (!cxl_ops->link_ok(afu->adapter, afu)) {
afu               176 drivers/misc/cxl/native.c 		dsisr = cxl_p2n_read(afu, CXL_PSL_DSISR_An);
afu               181 drivers/misc/cxl/native.c 			dar = cxl_p2n_read(afu, CXL_PSL_DAR_An);
afu               182 drivers/misc/cxl/native.c 			dev_notice(&afu->dev, "PSL purge terminating pending translation, DSISR: 0x%016llx, DAR: 0x%016llx\n",
afu               184 drivers/misc/cxl/native.c 			cxl_p2n_write(afu, CXL_PSL_TFC_An, CXL_PSL_TFC_An_AE);
afu               186 drivers/misc/cxl/native.c 			dev_notice(&afu->dev, "PSL purge acknowledging pending non-translation fault, DSISR: 0x%016llx\n",
afu               188 drivers/misc/cxl/native.c 			cxl_p2n_write(afu, CXL_PSL_TFC_An, CXL_PSL_TFC_An_A);
afu               192 drivers/misc/cxl/native.c 		PSL_CNTL = cxl_p1n_read(afu, CXL_PSL_SCNTL_An);
afu               197 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_SCNTL_An,
afu               200 drivers/misc/cxl/native.c 	trace_cxl_psl_ctrl_done(afu, CXL_PSL_SCNTL_An_Pc, rc);
afu               222 drivers/misc/cxl/native.c static int cxl_alloc_spa(struct cxl_afu *afu, int mode)
afu               227 drivers/misc/cxl/native.c 	afu->native->spa_order = -1;
afu               229 drivers/misc/cxl/native.c 		afu->native->spa_order++;
afu               230 drivers/misc/cxl/native.c 		spa_size = (1 << afu->native->spa_order) * PAGE_SIZE;
afu               233 drivers/misc/cxl/native.c 			dev_warn(&afu->dev, "num_of_processes too large for the SPA, limiting to %i (0x%x)\n",
afu               234 drivers/misc/cxl/native.c 					afu->native->spa_max_procs, afu->native->spa_size);
afu               236 drivers/misc/cxl/native.c 				afu->num_procs = afu->native->spa_max_procs;
afu               240 drivers/misc/cxl/native.c 		afu->native->spa_size = spa_size;
afu               241 drivers/misc/cxl/native.c 		afu->native->spa_max_procs = spa_max_procs(afu->native->spa_size);
afu               242 drivers/misc/cxl/native.c 	} while (afu->native->spa_max_procs < afu->num_procs);
afu               244 drivers/misc/cxl/native.c 	if (!(afu->native->spa = (struct cxl_process_element *)
afu               245 drivers/misc/cxl/native.c 	      __get_free_pages(GFP_KERNEL | __GFP_ZERO, afu->native->spa_order))) {
afu               250 drivers/misc/cxl/native.c 		 1<<afu->native->spa_order, afu->native->spa_max_procs, afu->num_procs);
afu               255 drivers/misc/cxl/native.c static void attach_spa(struct cxl_afu *afu)
afu               259 drivers/misc/cxl/native.c 	afu->native->sw_command_status = (__be64 *)((char *)afu->native->spa +
afu               260 drivers/misc/cxl/native.c 					    ((afu->native->spa_max_procs + 3) * 128));
afu               262 drivers/misc/cxl/native.c 	spap = virt_to_phys(afu->native->spa) & CXL_PSL_SPAP_Addr;
afu               263 drivers/misc/cxl/native.c 	spap |= ((afu->native->spa_size >> (12 - CXL_PSL_SPAP_Size_Shift)) - 1) & CXL_PSL_SPAP_Size;
afu               266 drivers/misc/cxl/native.c 		afu->native->spa, afu->native->spa_max_procs,
afu               267 drivers/misc/cxl/native.c 		afu->native->sw_command_status, spap);
afu               268 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_SPAP_An, spap);
afu               271 drivers/misc/cxl/native.c static inline void detach_spa(struct cxl_afu *afu)
afu               273 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_SPAP_An, 0);
afu               276 drivers/misc/cxl/native.c void cxl_release_spa(struct cxl_afu *afu)
afu               278 drivers/misc/cxl/native.c 	if (afu->native->spa) {
afu               279 drivers/misc/cxl/native.c 		free_pages((unsigned long) afu->native->spa,
afu               280 drivers/misc/cxl/native.c 			afu->native->spa_order);
afu               281 drivers/misc/cxl/native.c 		afu->native->spa = NULL;
afu               387 drivers/misc/cxl/native.c static int cxl_write_sstp(struct cxl_afu *afu, u64 sstp0, u64 sstp1)
afu               392 drivers/misc/cxl/native.c 	cxl_p2n_write(afu, CXL_SSTP1_An, 0);
afu               395 drivers/misc/cxl/native.c 	if ((rc = cxl_afu_slbia(afu)))
afu               399 drivers/misc/cxl/native.c 	cxl_p2n_write(afu, CXL_SSTP0_An, sstp0);
afu               402 drivers/misc/cxl/native.c 	cxl_p2n_write(afu, CXL_SSTP1_An, sstp1);
afu               410 drivers/misc/cxl/native.c 	struct cxl *adapter = ctx->afu->adapter;
afu               413 drivers/misc/cxl/native.c 	WARN_ON(!mutex_is_locked(&ctx->afu->native->spa_mutex));
afu               439 drivers/misc/cxl/native.c 	WARN_ON(!ctx->afu->enabled);
afu               443 drivers/misc/cxl/native.c 	*(ctx->afu->native->sw_command_status) = cpu_to_be64(cmd | 0 | ctx->pe);
afu               445 drivers/misc/cxl/native.c 	cxl_p1n_write(ctx->afu, CXL_PSL_LLCMD_An, cmd | ctx->pe);
afu               448 drivers/misc/cxl/native.c 			dev_warn(&ctx->afu->dev, "WARNING: Process Element Command timed out!\n");
afu               452 drivers/misc/cxl/native.c 		if (!cxl_ops->link_ok(ctx->afu->adapter, ctx->afu)) {
afu               453 drivers/misc/cxl/native.c 			dev_warn(&ctx->afu->dev, "WARNING: Device link down, aborting Process Element Command!\n");
afu               457 drivers/misc/cxl/native.c 		state = be64_to_cpup(ctx->afu->native->sw_command_status);
afu               485 drivers/misc/cxl/native.c 	mutex_lock(&ctx->afu->native->spa_mutex);
afu               490 drivers/misc/cxl/native.c 	mutex_unlock(&ctx->afu->native->spa_mutex);
afu               502 drivers/misc/cxl/native.c 	mutex_lock(&ctx->afu->native->spa_mutex);
afu               508 drivers/misc/cxl/native.c 	if (cxl_ops->link_ok(ctx->afu->adapter, ctx->afu))
afu               513 drivers/misc/cxl/native.c 	mutex_unlock(&ctx->afu->native->spa_mutex);
afu               521 drivers/misc/cxl/native.c 	mutex_lock(&ctx->afu->native->spa_mutex);
afu               527 drivers/misc/cxl/native.c 	if (cxl_ops->link_ok(ctx->afu->adapter, ctx->afu))
afu               535 drivers/misc/cxl/native.c 	mutex_unlock(&ctx->afu->native->spa_mutex);
afu               542 drivers/misc/cxl/native.c 	if (!ctx->afu->pp_size || ctx->master) {
afu               543 drivers/misc/cxl/native.c 		ctx->psn_phys = ctx->afu->psn_phys;
afu               544 drivers/misc/cxl/native.c 		ctx->psn_size = ctx->afu->adapter->ps_size;
afu               546 drivers/misc/cxl/native.c 		ctx->psn_phys = ctx->afu->psn_phys +
afu               547 drivers/misc/cxl/native.c 			(ctx->afu->native->pp_offset + ctx->afu->pp_size * ctx->pe);
afu               548 drivers/misc/cxl/native.c 		ctx->psn_size = ctx->afu->pp_size;
afu               552 drivers/misc/cxl/native.c static int activate_afu_directed(struct cxl_afu *afu)
afu               556 drivers/misc/cxl/native.c 	dev_info(&afu->dev, "Activating AFU directed mode\n");
afu               558 drivers/misc/cxl/native.c 	afu->num_procs = afu->max_procs_virtualised;
afu               559 drivers/misc/cxl/native.c 	if (afu->native->spa == NULL) {
afu               560 drivers/misc/cxl/native.c 		if (cxl_alloc_spa(afu, CXL_MODE_DIRECTED))
afu               563 drivers/misc/cxl/native.c 	attach_spa(afu);
afu               565 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_SCNTL_An, CXL_PSL_SCNTL_An_PM_AFU);
afu               567 drivers/misc/cxl/native.c 		cxl_p1n_write(afu, CXL_PSL_AMOR_An, 0xFFFFFFFFFFFFFFFFULL);
afu               568 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_ID_An, CXL_PSL_ID_An_F | CXL_PSL_ID_An_L);
afu               570 drivers/misc/cxl/native.c 	afu->current_mode = CXL_MODE_DIRECTED;
afu               572 drivers/misc/cxl/native.c 	if ((rc = cxl_chardev_m_afu_add(afu)))
afu               575 drivers/misc/cxl/native.c 	if ((rc = cxl_sysfs_afu_m_add(afu)))
afu               578 drivers/misc/cxl/native.c 	if ((rc = cxl_chardev_s_afu_add(afu)))
afu               583 drivers/misc/cxl/native.c 	cxl_sysfs_afu_m_remove(afu);
afu               585 drivers/misc/cxl/native.c 	cxl_chardev_afu_remove(afu);
afu               707 drivers/misc/cxl/native.c 		ctx->irqs.offset[0] = ctx->afu->native->psl_hwirq;
afu               729 drivers/misc/cxl/native.c 	result = cxl_ops->afu_check_and_enable(ctx->afu);
afu               770 drivers/misc/cxl/native.c 		ctx->irqs.offset[0] = ctx->afu->native->psl_hwirq;
afu               780 drivers/misc/cxl/native.c 	if ((result = cxl_ops->afu_check_and_enable(ctx->afu)))
afu               786 drivers/misc/cxl/native.c static int deactivate_afu_directed(struct cxl_afu *afu)
afu               788 drivers/misc/cxl/native.c 	dev_info(&afu->dev, "Deactivating AFU directed mode\n");
afu               790 drivers/misc/cxl/native.c 	afu->current_mode = 0;
afu               791 drivers/misc/cxl/native.c 	afu->num_procs = 0;
afu               793 drivers/misc/cxl/native.c 	cxl_sysfs_afu_m_remove(afu);
afu               794 drivers/misc/cxl/native.c 	cxl_chardev_afu_remove(afu);
afu               821 drivers/misc/cxl/native.c 	if (afu->adapter->native->sl_ops->needs_reset_before_disable)
afu               822 drivers/misc/cxl/native.c 		cxl_ops->afu_reset(afu);
afu               823 drivers/misc/cxl/native.c 	cxl_afu_disable(afu);
afu               824 drivers/misc/cxl/native.c 	cxl_psl_purge(afu);
afu               829 drivers/misc/cxl/native.c int cxl_activate_dedicated_process_psl9(struct cxl_afu *afu)
afu               831 drivers/misc/cxl/native.c 	dev_info(&afu->dev, "Activating dedicated process mode\n");
afu               840 drivers/misc/cxl/native.c 	afu->num_procs = 1;
afu               841 drivers/misc/cxl/native.c 	if (afu->native->spa == NULL) {
afu               842 drivers/misc/cxl/native.c 		if (cxl_alloc_spa(afu, CXL_MODE_DEDICATED))
afu               845 drivers/misc/cxl/native.c 	attach_spa(afu);
afu               847 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_SCNTL_An, CXL_PSL_SCNTL_An_PM_Process);
afu               848 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_ID_An, CXL_PSL_ID_An_F | CXL_PSL_ID_An_L);
afu               850 drivers/misc/cxl/native.c 	afu->current_mode = CXL_MODE_DEDICATED;
afu               852 drivers/misc/cxl/native.c 	return cxl_chardev_d_afu_add(afu);
afu               855 drivers/misc/cxl/native.c int cxl_activate_dedicated_process_psl8(struct cxl_afu *afu)
afu               857 drivers/misc/cxl/native.c 	dev_info(&afu->dev, "Activating dedicated process mode\n");
afu               859 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_SCNTL_An, CXL_PSL_SCNTL_An_PM_Process);
afu               861 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_CtxTime_An, 0); /* disable */
afu               862 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_SPAP_An, 0);    /* disable */
afu               863 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_AMOR_An, 0xFFFFFFFFFFFFFFFFULL);
afu               864 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_LPID_An, mfspr(SPRN_LPID));
afu               865 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_HAURP_An, 0);       /* disable */
afu               866 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_SDR_An, mfspr(SPRN_SDR1));
afu               868 drivers/misc/cxl/native.c 	cxl_p2n_write(afu, CXL_CSRP_An, 0);        /* disable */
afu               869 drivers/misc/cxl/native.c 	cxl_p2n_write(afu, CXL_AURP0_An, 0);       /* disable */
afu               870 drivers/misc/cxl/native.c 	cxl_p2n_write(afu, CXL_AURP1_An, 0);       /* disable */
afu               872 drivers/misc/cxl/native.c 	afu->current_mode = CXL_MODE_DEDICATED;
afu               873 drivers/misc/cxl/native.c 	afu->num_procs = 1;
afu               875 drivers/misc/cxl/native.c 	return cxl_chardev_d_afu_add(afu);
afu               890 drivers/misc/cxl/native.c 	struct cxl_afu *afu = ctx->afu;
afu               892 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_IVTE_Offset_An,
afu               897 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_IVTE_Limit_An, (u64)
afu               906 drivers/misc/cxl/native.c 	struct cxl_afu *afu = ctx->afu;
afu               914 drivers/misc/cxl/native.c 	if (ctx->afu->adapter->native->sl_ops->update_dedicated_ivtes)
afu               915 drivers/misc/cxl/native.c 		afu->adapter->native->sl_ops->update_dedicated_ivtes(ctx);
afu               925 drivers/misc/cxl/native.c 	result = cxl_ops->afu_reset(afu);
afu               929 drivers/misc/cxl/native.c 	return afu_enable(afu);
afu               934 drivers/misc/cxl/native.c 	struct cxl_afu *afu = ctx->afu;
afu               941 drivers/misc/cxl/native.c 	cxl_p2n_write(afu, CXL_PSL_PID_TID_An, pid);
afu               943 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_SR_An, calculate_sr(ctx));
afu               945 drivers/misc/cxl/native.c 	if ((rc = cxl_write_sstp(afu, ctx->sstp0, ctx->sstp1)))
afu               950 drivers/misc/cxl/native.c 	if (ctx->afu->adapter->native->sl_ops->update_dedicated_ivtes)
afu               951 drivers/misc/cxl/native.c 		afu->adapter->native->sl_ops->update_dedicated_ivtes(ctx);
afu               953 drivers/misc/cxl/native.c 	cxl_p2n_write(afu, CXL_PSL_AMR_An, amr);
afu               958 drivers/misc/cxl/native.c 	if ((rc = cxl_ops->afu_reset(afu)))
afu               961 drivers/misc/cxl/native.c 	cxl_p2n_write(afu, CXL_PSL_WED_An, wed);
afu               963 drivers/misc/cxl/native.c 	return afu_enable(afu);
afu               966 drivers/misc/cxl/native.c static int deactivate_dedicated_process(struct cxl_afu *afu)
afu               968 drivers/misc/cxl/native.c 	dev_info(&afu->dev, "Deactivating dedicated process mode\n");
afu               970 drivers/misc/cxl/native.c 	afu->current_mode = 0;
afu               971 drivers/misc/cxl/native.c 	afu->num_procs = 0;
afu               973 drivers/misc/cxl/native.c 	cxl_chardev_afu_remove(afu);
afu               978 drivers/misc/cxl/native.c static int native_afu_deactivate_mode(struct cxl_afu *afu, int mode)
afu               981 drivers/misc/cxl/native.c 		return deactivate_afu_directed(afu);
afu               983 drivers/misc/cxl/native.c 		return deactivate_dedicated_process(afu);
afu               987 drivers/misc/cxl/native.c static int native_afu_activate_mode(struct cxl_afu *afu, int mode)
afu               991 drivers/misc/cxl/native.c 	if (!(mode & afu->modes_supported))
afu               994 drivers/misc/cxl/native.c 	if (!cxl_ops->link_ok(afu->adapter, afu)) {
afu              1000 drivers/misc/cxl/native.c 		return activate_afu_directed(afu);
afu              1002 drivers/misc/cxl/native.c 	    (afu->adapter->native->sl_ops->activate_dedicated_process))
afu              1003 drivers/misc/cxl/native.c 		return afu->adapter->native->sl_ops->activate_dedicated_process(afu);
afu              1011 drivers/misc/cxl/native.c 	if (!cxl_ops->link_ok(ctx->afu->adapter, ctx->afu)) {
afu              1017 drivers/misc/cxl/native.c 	if ((ctx->afu->current_mode == CXL_MODE_DIRECTED) &&
afu              1018 drivers/misc/cxl/native.c 	    (ctx->afu->adapter->native->sl_ops->attach_afu_directed))
afu              1019 drivers/misc/cxl/native.c 		return ctx->afu->adapter->native->sl_ops->attach_afu_directed(ctx, wed, amr);
afu              1021 drivers/misc/cxl/native.c 	if ((ctx->afu->current_mode == CXL_MODE_DEDICATED) &&
afu              1022 drivers/misc/cxl/native.c 	    (ctx->afu->adapter->native->sl_ops->attach_dedicated_process))
afu              1023 drivers/misc/cxl/native.c 		return ctx->afu->adapter->native->sl_ops->attach_dedicated_process(ctx, wed, amr);
afu              1046 drivers/misc/cxl/native.c 	cxl_ops->afu_reset(ctx->afu);
afu              1047 drivers/misc/cxl/native.c 	cxl_afu_disable(ctx->afu);
afu              1048 drivers/misc/cxl/native.c 	cxl_psl_purge(ctx->afu);
afu              1054 drivers/misc/cxl/native.c 	if (ctx->afu->current_mode == CXL_MODE_DIRECTED)
afu              1056 drivers/misc/cxl/native.c 	if ((ctx->afu->current_mode == CXL_MODE_DEDICATED) &&
afu              1057 drivers/misc/cxl/native.c 	    (ctx->afu->adapter->native->sl_ops->update_dedicated_ivtes))
afu              1058 drivers/misc/cxl/native.c 		return ctx->afu->adapter->native->sl_ops->update_dedicated_ivtes(ctx);
afu              1078 drivers/misc/cxl/native.c 	if (ctx->afu->current_mode == CXL_MODE_DEDICATED)
afu              1084 drivers/misc/cxl/native.c static int native_get_irq_info(struct cxl_afu *afu, struct cxl_irq_info *info)
afu              1089 drivers/misc/cxl/native.c 	if (!cxl_ops->link_ok(afu->adapter, afu))
afu              1092 drivers/misc/cxl/native.c 	info->dsisr = cxl_p2n_read(afu, CXL_PSL_DSISR_An);
afu              1093 drivers/misc/cxl/native.c 	info->dar = cxl_p2n_read(afu, CXL_PSL_DAR_An);
afu              1095 drivers/misc/cxl/native.c 		info->dsr = cxl_p2n_read(afu, CXL_PSL_DSR_An);
afu              1096 drivers/misc/cxl/native.c 	info->afu_err = cxl_p2n_read(afu, CXL_AFU_ERR_An);
afu              1097 drivers/misc/cxl/native.c 	info->errstat = cxl_p2n_read(afu, CXL_PSL_ErrStat_An);
afu              1107 drivers/misc/cxl/native.c 	fir1 = cxl_p1_read(ctx->afu->adapter, CXL_PSL9_FIR1);
afu              1109 drivers/misc/cxl/native.c 	dev_crit(&ctx->afu->dev, "PSL_FIR1: 0x%016llx\n", fir1);
afu              1110 drivers/misc/cxl/native.c 	if (ctx->afu->adapter->native->sl_ops->register_serr_irq) {
afu              1111 drivers/misc/cxl/native.c 		serr = cxl_p1n_read(ctx->afu, CXL_PSL_SERR_An);
afu              1112 drivers/misc/cxl/native.c 		cxl_afu_decode_psl_serr(ctx->afu, serr);
afu              1120 drivers/misc/cxl/native.c 	fir1 = cxl_p1_read(ctx->afu->adapter, CXL_PSL_FIR1);
afu              1121 drivers/misc/cxl/native.c 	fir2 = cxl_p1_read(ctx->afu->adapter, CXL_PSL_FIR2);
afu              1122 drivers/misc/cxl/native.c 	fir_slice = cxl_p1n_read(ctx->afu, CXL_PSL_FIR_SLICE_An);
afu              1123 drivers/misc/cxl/native.c 	afu_debug = cxl_p1n_read(ctx->afu, CXL_AFU_DEBUG_An);
afu              1125 drivers/misc/cxl/native.c 	dev_crit(&ctx->afu->dev, "PSL_FIR1: 0x%016llx\n", fir1);
afu              1126 drivers/misc/cxl/native.c 	dev_crit(&ctx->afu->dev, "PSL_FIR2: 0x%016llx\n", fir2);
afu              1127 drivers/misc/cxl/native.c 	if (ctx->afu->adapter->native->sl_ops->register_serr_irq) {
afu              1128 drivers/misc/cxl/native.c 		serr = cxl_p1n_read(ctx->afu, CXL_PSL_SERR_An);
afu              1129 drivers/misc/cxl/native.c 		cxl_afu_decode_psl_serr(ctx->afu, serr);
afu              1131 drivers/misc/cxl/native.c 	dev_crit(&ctx->afu->dev, "PSL_FIR_SLICE_An: 0x%016llx\n", fir_slice);
afu              1132 drivers/misc/cxl/native.c 	dev_crit(&ctx->afu->dev, "CXL_PSL_AFU_DEBUG_An: 0x%016llx\n", afu_debug);
afu              1139 drivers/misc/cxl/native.c 	dev_crit(&ctx->afu->dev, "PSL ERROR STATUS: 0x%016llx\n", errstat);
afu              1141 drivers/misc/cxl/native.c 	if (ctx->afu->adapter->native->sl_ops->psl_irq_dump_registers)
afu              1142 drivers/misc/cxl/native.c 		ctx->afu->adapter->native->sl_ops->psl_irq_dump_registers(ctx);
afu              1144 drivers/misc/cxl/native.c 	if (ctx->afu->adapter->native->sl_ops->debugfs_stop_trace) {
afu              1145 drivers/misc/cxl/native.c 		dev_crit(&ctx->afu->dev, "STOPPING CXL TRACE\n");
afu              1146 drivers/misc/cxl/native.c 		ctx->afu->adapter->native->sl_ops->debugfs_stop_trace(ctx->afu->adapter);
afu              1152 drivers/misc/cxl/native.c static bool cxl_is_translation_fault(struct cxl_afu *afu, u64 dsisr)
afu              1163 drivers/misc/cxl/native.c irqreturn_t cxl_fail_irq_psl(struct cxl_afu *afu, struct cxl_irq_info *irq_info)
afu              1165 drivers/misc/cxl/native.c 	if (cxl_is_translation_fault(afu, irq_info->dsisr))
afu              1166 drivers/misc/cxl/native.c 		cxl_p2n_write(afu, CXL_PSL_TFC_An, CXL_PSL_TFC_An_AE);
afu              1168 drivers/misc/cxl/native.c 		cxl_p2n_write(afu, CXL_PSL_TFC_An, CXL_PSL_TFC_An_A);
afu              1175 drivers/misc/cxl/native.c 	struct cxl_afu *afu = data;
afu              1178 drivers/misc/cxl/native.c 	u64 phreg = cxl_p2n_read(afu, CXL_PSL_PEHandle_An);
afu              1183 drivers/misc/cxl/native.c 		dev_warn(&afu->dev,
afu              1190 drivers/misc/cxl/native.c 	if ((res = native_get_irq_info(afu, &irq_info))) {
afu              1192 drivers/misc/cxl/native.c 		if (afu->adapter->native->sl_ops->fail_irq)
afu              1193 drivers/misc/cxl/native.c 			return afu->adapter->native->sl_ops->fail_irq(afu, &irq_info);
afu              1198 drivers/misc/cxl/native.c 	ctx = idr_find(&afu->contexts_idr, ph);
afu              1200 drivers/misc/cxl/native.c 		if (afu->adapter->native->sl_ops->handle_interrupt)
afu              1201 drivers/misc/cxl/native.c 			ret = afu->adapter->native->sl_ops->handle_interrupt(irq, ctx, &irq_info);
afu              1211 drivers/misc/cxl/native.c 	if (afu->adapter->native->sl_ops->fail_irq)
afu              1212 drivers/misc/cxl/native.c 		ret = afu->adapter->native->sl_ops->fail_irq(afu, &irq_info);
afu              1227 drivers/misc/cxl/native.c 		ph = cxl_p2n_read(ctx->afu, CXL_PSL_PEHandle_An) & 0xffff;
afu              1230 drivers/misc/cxl/native.c 		dsisr = cxl_p2n_read(ctx->afu, CXL_PSL_DSISR_An);
afu              1244 drivers/misc/cxl/native.c 	dev_warn(&ctx->afu->dev, "WARNING: waiting on DSI for PE %i"
afu              1251 drivers/misc/cxl/native.c 	struct cxl_afu *afu = data;
afu              1258 drivers/misc/cxl/native.c 	serr = cxl_p1n_read(afu, CXL_PSL_SERR_An);
afu              1259 drivers/misc/cxl/native.c 	errstat = cxl_p2n_read(afu, CXL_PSL_ErrStat_An);
afu              1260 drivers/misc/cxl/native.c 	afu_error = cxl_p2n_read(afu, CXL_AFU_ERR_An);
afu              1261 drivers/misc/cxl/native.c 	dsisr = cxl_p2n_read(afu, CXL_PSL_DSISR_An);
afu              1262 drivers/misc/cxl/native.c 	cxl_afu_decode_psl_serr(afu, serr);
afu              1265 drivers/misc/cxl/native.c 		fir_slice = cxl_p1n_read(afu, CXL_PSL_FIR_SLICE_An);
afu              1266 drivers/misc/cxl/native.c 		afu_debug = cxl_p1n_read(afu, CXL_AFU_DEBUG_An);
afu              1267 drivers/misc/cxl/native.c 		dev_crit(&afu->dev, "PSL_FIR_SLICE_An: 0x%016llx\n", fir_slice);
afu              1268 drivers/misc/cxl/native.c 		dev_crit(&afu->dev, "CXL_PSL_AFU_DEBUG_An: 0x%016llx\n", afu_debug);
afu              1270 drivers/misc/cxl/native.c 	dev_crit(&afu->dev, "CXL_PSL_ErrStat_An: 0x%016llx\n", errstat);
afu              1271 drivers/misc/cxl/native.c 	dev_crit(&afu->dev, "AFU_ERR_An: 0x%.16llx\n", afu_error);
afu              1272 drivers/misc/cxl/native.c 	dev_crit(&afu->dev, "PSL_DSISR_An: 0x%.16llx\n", dsisr);
afu              1277 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_SERR_An, serr);
afu              1278 drivers/misc/cxl/native.c 	dev_info(&afu->dev, "Further such interrupts will be masked until the AFU is reset\n");
afu              1360 drivers/misc/cxl/native.c int cxl_native_register_serr_irq(struct cxl_afu *afu)
afu              1365 drivers/misc/cxl/native.c 	afu->err_irq_name = kasprintf(GFP_KERNEL, "cxl-%s-err",
afu              1366 drivers/misc/cxl/native.c 				      dev_name(&afu->dev));
afu              1367 drivers/misc/cxl/native.c 	if (!afu->err_irq_name)
afu              1370 drivers/misc/cxl/native.c 	if ((rc = cxl_register_one_irq(afu->adapter, native_slice_irq_err, afu,
afu              1371 drivers/misc/cxl/native.c 				       &afu->serr_hwirq,
afu              1372 drivers/misc/cxl/native.c 				       &afu->serr_virq, afu->err_irq_name))) {
afu              1373 drivers/misc/cxl/native.c 		kfree(afu->err_irq_name);
afu              1374 drivers/misc/cxl/native.c 		afu->err_irq_name = NULL;
afu              1378 drivers/misc/cxl/native.c 	serr = cxl_p1n_read(afu, CXL_PSL_SERR_An);
afu              1380 drivers/misc/cxl/native.c 		serr = (serr & 0x00ffffffffff0000ULL) | (afu->serr_hwirq & 0xffff);
afu              1386 drivers/misc/cxl/native.c 		serr = (serr & ~0xff0000007fffffffULL) | (afu->serr_hwirq & 0xffff);
afu              1388 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_SERR_An, serr);
afu              1393 drivers/misc/cxl/native.c void cxl_native_release_serr_irq(struct cxl_afu *afu)
afu              1395 drivers/misc/cxl/native.c 	if (afu->serr_virq == 0 ||
afu              1396 drivers/misc/cxl/native.c 	    afu->serr_virq != irq_find_mapping(NULL, afu->serr_hwirq))
afu              1399 drivers/misc/cxl/native.c 	cxl_p1n_write(afu, CXL_PSL_SERR_An, 0x0000000000000000);
afu              1400 drivers/misc/cxl/native.c 	cxl_unmap_irq(afu->serr_virq, afu);
afu              1401 drivers/misc/cxl/native.c 	cxl_ops->release_one_irq(afu->adapter, afu->serr_hwirq);
afu              1402 drivers/misc/cxl/native.c 	kfree(afu->err_irq_name);
afu              1403 drivers/misc/cxl/native.c 	afu->serr_virq = 0;
afu              1406 drivers/misc/cxl/native.c int cxl_native_register_psl_irq(struct cxl_afu *afu)
afu              1410 drivers/misc/cxl/native.c 	afu->psl_irq_name = kasprintf(GFP_KERNEL, "cxl-%s",
afu              1411 drivers/misc/cxl/native.c 				      dev_name(&afu->dev));
afu              1412 drivers/misc/cxl/native.c 	if (!afu->psl_irq_name)
afu              1415 drivers/misc/cxl/native.c 	if ((rc = cxl_register_one_irq(afu->adapter, native_irq_multiplexed,
afu              1416 drivers/misc/cxl/native.c 				    afu, &afu->native->psl_hwirq, &afu->native->psl_virq,
afu              1417 drivers/misc/cxl/native.c 				    afu->psl_irq_name))) {
afu              1418 drivers/misc/cxl/native.c 		kfree(afu->psl_irq_name);
afu              1419 drivers/misc/cxl/native.c 		afu->psl_irq_name = NULL;
afu              1424 drivers/misc/cxl/native.c void cxl_native_release_psl_irq(struct cxl_afu *afu)
afu              1426 drivers/misc/cxl/native.c 	if (afu->native->psl_virq == 0 ||
afu              1427 drivers/misc/cxl/native.c 	    afu->native->psl_virq !=
afu              1428 drivers/misc/cxl/native.c 	    irq_find_mapping(NULL, afu->native->psl_hwirq))
afu              1431 drivers/misc/cxl/native.c 	cxl_unmap_irq(afu->native->psl_virq, afu);
afu              1432 drivers/misc/cxl/native.c 	cxl_ops->release_one_irq(afu->adapter, afu->native->psl_hwirq);
afu              1433 drivers/misc/cxl/native.c 	kfree(afu->psl_irq_name);
afu              1434 drivers/misc/cxl/native.c 	afu->native->psl_virq = 0;
afu              1437 drivers/misc/cxl/native.c static void recover_psl_err(struct cxl_afu *afu, u64 errstat)
afu              1444 drivers/misc/cxl/native.c 	dsisr = cxl_p2n_read(afu, CXL_PSL_DSISR_An);
afu              1445 drivers/misc/cxl/native.c 	cxl_p2n_write(afu, CXL_PSL_DSISR_An, dsisr & ~CXL_PSL_DSISR_An_PE);
afu              1448 drivers/misc/cxl/native.c 	cxl_p2n_write(afu, CXL_PSL_ErrStat_An, errstat);
afu              1455 drivers/misc/cxl/native.c 		cxl_p2n_write(ctx->afu, CXL_PSL_TFC_An, tfc);
afu              1457 drivers/misc/cxl/native.c 		recover_psl_err(ctx->afu, psl_reset_mask);
afu              1462 drivers/misc/cxl/native.c int cxl_check_error(struct cxl_afu *afu)
afu              1464 drivers/misc/cxl/native.c 	return (cxl_p1n_read(afu, CXL_PSL_SCNTL_An) == ~0ULL);
afu              1473 drivers/misc/cxl/native.c static int native_afu_cr_read64(struct cxl_afu *afu, int cr, u64 off, u64 *out)
afu              1475 drivers/misc/cxl/native.c 	if (unlikely(!cxl_ops->link_ok(afu->adapter, afu)))
afu              1477 drivers/misc/cxl/native.c 	if (unlikely(off >= afu->crs_len))
afu              1479 drivers/misc/cxl/native.c 	*out = in_le64(afu->native->afu_desc_mmio + afu->crs_offset +
afu              1480 drivers/misc/cxl/native.c 		(cr * afu->crs_len) + off);
afu              1484 drivers/misc/cxl/native.c static int native_afu_cr_read32(struct cxl_afu *afu, int cr, u64 off, u32 *out)
afu              1486 drivers/misc/cxl/native.c 	if (unlikely(!cxl_ops->link_ok(afu->adapter, afu)))
afu              1488 drivers/misc/cxl/native.c 	if (unlikely(off >= afu->crs_len))
afu              1490 drivers/misc/cxl/native.c 	*out = in_le32(afu->native->afu_desc_mmio + afu->crs_offset +
afu              1491 drivers/misc/cxl/native.c 		(cr * afu->crs_len) + off);
afu              1495 drivers/misc/cxl/native.c static int native_afu_cr_read16(struct cxl_afu *afu, int cr, u64 off, u16 *out)
afu              1501 drivers/misc/cxl/native.c 	rc = native_afu_cr_read32(afu, cr, aligned_off, &val);
afu              1507 drivers/misc/cxl/native.c static int native_afu_cr_read8(struct cxl_afu *afu, int cr, u64 off, u8 *out)
afu              1513 drivers/misc/cxl/native.c 	rc = native_afu_cr_read32(afu, cr, aligned_off, &val);
afu              1519 drivers/misc/cxl/native.c static int native_afu_cr_write32(struct cxl_afu *afu, int cr, u64 off, u32 in)
afu              1521 drivers/misc/cxl/native.c 	if (unlikely(!cxl_ops->link_ok(afu->adapter, afu)))
afu              1523 drivers/misc/cxl/native.c 	if (unlikely(off >= afu->crs_len))
afu              1525 drivers/misc/cxl/native.c 	out_le32(afu->native->afu_desc_mmio + afu->crs_offset +
afu              1526 drivers/misc/cxl/native.c 		(cr * afu->crs_len) + off, in);
afu              1530 drivers/misc/cxl/native.c static int native_afu_cr_write16(struct cxl_afu *afu, int cr, u64 off, u16 in)
afu              1536 drivers/misc/cxl/native.c 	rc = native_afu_cr_read32(afu, cr, aligned_off, &val32);
afu              1544 drivers/misc/cxl/native.c 	rc = native_afu_cr_write32(afu, cr, aligned_off, val32);
afu              1548 drivers/misc/cxl/native.c static int native_afu_cr_write8(struct cxl_afu *afu, int cr, u64 off, u8 in)
afu              1554 drivers/misc/cxl/native.c 	rc = native_afu_cr_read32(afu, cr, aligned_off, &val32);
afu              1561 drivers/misc/cxl/native.c 	rc = native_afu_cr_write32(afu, cr, aligned_off, val32);
afu                70 drivers/misc/cxl/of.c 			struct cxl_afu *afu)
afu                88 drivers/misc/cxl/of.c 				afu->guest->handle = addr;
afu                91 drivers/misc/cxl/of.c 				afu->guest->p2n_phys += addr;
afu                92 drivers/misc/cxl/of.c 				afu->guest->p2n_size = size;
afu                95 drivers/misc/cxl/of.c 				afu->psn_phys += addr;
afu                96 drivers/misc/cxl/of.c 				afu->adapter->ps_size = size;
afu               111 drivers/misc/cxl/of.c static int read_vpd(struct cxl *adapter, struct cxl_afu *afu)
afu               122 drivers/misc/cxl/of.c 		rc = cxl_guest_read_afu_vpd(afu, vpd, len);
afu               131 drivers/misc/cxl/of.c int cxl_of_read_afu_handle(struct cxl_afu *afu, struct device_node *afu_np)
afu               133 drivers/misc/cxl/of.c 	if (read_handle(afu_np, &afu->guest->handle))
afu               135 drivers/misc/cxl/of.c 	pr_devel("AFU handle: 0x%.16llx\n", afu->guest->handle);
afu               140 drivers/misc/cxl/of.c int cxl_of_read_afu_properties(struct cxl_afu *afu, struct device_node *np)
afu               163 drivers/misc/cxl/of.c 	rc = read_phys_addr(np, "reg", afu);
afu               167 drivers/misc/cxl/of.c 	rc = read_phys_addr(np, "assigned-addresses", afu);
afu               171 drivers/misc/cxl/of.c 	if (afu->psn_phys == 0)
afu               172 drivers/misc/cxl/of.c 		afu->psa = false;
afu               174 drivers/misc/cxl/of.c 		afu->psa = true;
afu               181 drivers/misc/cxl/of.c 	read_prop_dword(np, "ibm,#processes", &afu->max_procs_virtualised);
afu               187 drivers/misc/cxl/of.c 		read_vpd(NULL, afu);
afu               190 drivers/misc/cxl/of.c 	read_prop_dword(np, "ibm,max-ints-per-process", &afu->guest->max_ints);
afu               191 drivers/misc/cxl/of.c 	afu->irqs_max = afu->guest->max_ints;
afu               193 drivers/misc/cxl/of.c 	prop = read_prop_dword(np, "ibm,min-ints-per-process", &afu->pp_irqs);
afu               199 drivers/misc/cxl/of.c 		afu->pp_irqs--;
afu               207 drivers/misc/cxl/of.c 	read_prop64_dword(np, "ibm,error-buffer-size", &afu->eb_len);
afu               208 drivers/misc/cxl/of.c 	afu->eb_offset = 0;
afu               213 drivers/misc/cxl/of.c 	read_prop64_dword(np, "ibm,config-record-size", &afu->crs_len);
afu               214 drivers/misc/cxl/of.c 	afu->crs_offset = 0;
afu               216 drivers/misc/cxl/of.c 	read_prop_dword(np, "ibm,#config-records", &afu->crs_num);
afu               219 drivers/misc/cxl/of.c 		for (i = 0; i < afu->crs_num; i++) {
afu               220 drivers/misc/cxl/of.c 			rc = cxl_ops->afu_cr_read16(afu, i, PCI_DEVICE_ID,
afu               225 drivers/misc/cxl/of.c 			rc = cxl_ops->afu_cr_read16(afu, i, PCI_VENDOR_ID,
afu               230 drivers/misc/cxl/of.c 			rc = cxl_ops->afu_cr_read32(afu, i, PCI_CLASS_REVISION,
afu               255 drivers/misc/cxl/of.c 		afu->pp_psa = true;
afu               257 drivers/misc/cxl/of.c 		afu->pp_psa = false;
afu               267 drivers/misc/cxl/of.c 		afu->serr_hwirq = val;
afu               269 drivers/misc/cxl/of.c 	pr_devel("AFU handle: %#llx\n", afu->guest->handle);
afu               271 drivers/misc/cxl/of.c 		afu->guest->p2n_phys, afu->guest->p2n_size);
afu               273 drivers/misc/cxl/of.c 		afu->psn_phys, afu->adapter->ps_size);
afu               275 drivers/misc/cxl/of.c 		afu->max_procs_virtualised);
afu               276 drivers/misc/cxl/of.c 	pr_devel("Per-process irqs min=%i, max=%i\n", afu->pp_irqs,
afu               277 drivers/misc/cxl/of.c 		 afu->irqs_max);
afu               278 drivers/misc/cxl/of.c 	pr_devel("Slice error interrupt=%#lx\n", afu->serr_hwirq);
afu               438 drivers/misc/cxl/of.c 	int afu;
afu               441 drivers/misc/cxl/of.c 	for (afu = 0; afu < adapter->slices; afu++)
afu               442 drivers/misc/cxl/of.c 		cxl_guest_remove_afu(adapter->afu[afu]);
afu                89 drivers/misc/cxl/pci.c #define AFUD_READ(afu, off)		in_be64(afu->native->afu_desc_mmio + off)
afu                90 drivers/misc/cxl/pci.c #define AFUD_READ_LE(afu, off)		in_le64(afu->native->afu_desc_mmio + off)
afu                94 drivers/misc/cxl/pci.c #define AFUD_READ_INFO(afu)		AFUD_READ(afu, 0x0)
afu               103 drivers/misc/cxl/pci.c #define AFUD_READ_CR(afu)		AFUD_READ(afu, 0x20)
afu               105 drivers/misc/cxl/pci.c #define AFUD_READ_CR_OFF(afu)		AFUD_READ(afu, 0x28)
afu               106 drivers/misc/cxl/pci.c #define AFUD_READ_PPPSA(afu)		AFUD_READ(afu, 0x30)
afu               110 drivers/misc/cxl/pci.c #define AFUD_READ_PPPSA_OFF(afu)	AFUD_READ(afu, 0x38)
afu               111 drivers/misc/cxl/pci.c #define AFUD_READ_EB(afu)		AFUD_READ(afu, 0x40)
afu               113 drivers/misc/cxl/pci.c #define AFUD_READ_EB_OFF(afu)		AFUD_READ(afu, 0x48)
afu               268 drivers/misc/cxl/pci.c static void dump_afu_descriptor(struct cxl_afu *afu)
afu               274 drivers/misc/cxl/pci.c 	dev_info(&afu->dev, "afu desc: %30s: %#llx\n", name, what)
afu               276 drivers/misc/cxl/pci.c 	val = AFUD_READ_INFO(afu);
afu               283 drivers/misc/cxl/pci.c 	val = AFUD_READ(afu, 0x8);
afu               285 drivers/misc/cxl/pci.c 	val = AFUD_READ(afu, 0x10);
afu               287 drivers/misc/cxl/pci.c 	val = AFUD_READ(afu, 0x18);
afu               290 drivers/misc/cxl/pci.c 	val = AFUD_READ_CR(afu);
afu               295 drivers/misc/cxl/pci.c 	val = AFUD_READ_CR_OFF(afu);
afu               299 drivers/misc/cxl/pci.c 	val = AFUD_READ_PPPSA(afu);
afu               303 drivers/misc/cxl/pci.c 	val = AFUD_READ_PPPSA_OFF(afu);
afu               306 drivers/misc/cxl/pci.c 	val = AFUD_READ_EB(afu);
afu               310 drivers/misc/cxl/pci.c 	val = AFUD_READ_EB_OFF(afu);
afu               314 drivers/misc/cxl/pci.c 		val = AFUD_READ_LE(afu, afu_cr_off + i * afu_cr_len);
afu               637 drivers/misc/cxl/pci.c static int init_implementation_afu_regs_psl9(struct cxl_afu *afu)
afu               642 drivers/misc/cxl/pci.c static int init_implementation_afu_regs_psl8(struct cxl_afu *afu)
afu               645 drivers/misc/cxl/pci.c 	cxl_p1n_write(afu, CXL_PSL_APCALLOC_A, 0xFFFFFFFEFEFEFEFEULL);
afu               647 drivers/misc/cxl/pci.c 	cxl_p1n_write(afu, CXL_PSL_COALLOC_A, 0xFF000000FEFEFEFEULL);
afu               649 drivers/misc/cxl/pci.c 	cxl_p1n_write(afu, CXL_PSL_SLICE_TRACE, 0x0000FFFF00000000ULL);
afu               650 drivers/misc/cxl/pci.c 	cxl_p1n_write(afu, CXL_PSL_RXCTL_A, CXL_PSL_RXCTL_AFUHP_4S);
afu               782 drivers/misc/cxl/pci.c static int pci_map_slice_regs(struct cxl_afu *afu, struct cxl *adapter, struct pci_dev *dev)
afu               788 drivers/misc/cxl/pci.c 	p1n_base = p1_base(dev) + 0x10000 + (afu->slice * p1n_size);
afu               789 drivers/misc/cxl/pci.c 	p2n_base = p2_base(dev) + (afu->slice * p2n_size);
afu               790 drivers/misc/cxl/pci.c 	afu->psn_phys = p2_base(dev) + (adapter->native->ps_off + (afu->slice * adapter->ps_size));
afu               791 drivers/misc/cxl/pci.c 	afu_desc = p2_base(dev) + adapter->native->afu_desc_off + (afu->slice * adapter->native->afu_desc_size);
afu               793 drivers/misc/cxl/pci.c 	if (!(afu->native->p1n_mmio = ioremap(p1n_base, p1n_size)))
afu               795 drivers/misc/cxl/pci.c 	if (!(afu->p2n_mmio = ioremap(p2n_base, p2n_size)))
afu               798 drivers/misc/cxl/pci.c 		if (!(afu->native->afu_desc_mmio = ioremap(afu_desc, adapter->native->afu_desc_size)))
afu               804 drivers/misc/cxl/pci.c 	iounmap(afu->p2n_mmio);
afu               806 drivers/misc/cxl/pci.c 	iounmap(afu->native->p1n_mmio);
afu               808 drivers/misc/cxl/pci.c 	dev_err(&afu->dev, "Error mapping AFU MMIO regions\n");
afu               812 drivers/misc/cxl/pci.c static void pci_unmap_slice_regs(struct cxl_afu *afu)
afu               814 drivers/misc/cxl/pci.c 	if (afu->p2n_mmio) {
afu               815 drivers/misc/cxl/pci.c 		iounmap(afu->p2n_mmio);
afu               816 drivers/misc/cxl/pci.c 		afu->p2n_mmio = NULL;
afu               818 drivers/misc/cxl/pci.c 	if (afu->native->p1n_mmio) {
afu               819 drivers/misc/cxl/pci.c 		iounmap(afu->native->p1n_mmio);
afu               820 drivers/misc/cxl/pci.c 		afu->native->p1n_mmio = NULL;
afu               822 drivers/misc/cxl/pci.c 	if (afu->native->afu_desc_mmio) {
afu               823 drivers/misc/cxl/pci.c 		iounmap(afu->native->afu_desc_mmio);
afu               824 drivers/misc/cxl/pci.c 		afu->native->afu_desc_mmio = NULL;
afu               830 drivers/misc/cxl/pci.c 	struct cxl_afu *afu = to_cxl_afu(dev);
afu               834 drivers/misc/cxl/pci.c 	idr_destroy(&afu->contexts_idr);
afu               835 drivers/misc/cxl/pci.c 	cxl_release_spa(afu);
afu               837 drivers/misc/cxl/pci.c 	kfree(afu->native);
afu               838 drivers/misc/cxl/pci.c 	kfree(afu);
afu               842 drivers/misc/cxl/pci.c static int cxl_read_afu_descriptor(struct cxl_afu *afu)
afu               846 drivers/misc/cxl/pci.c 	val = AFUD_READ_INFO(afu);
afu               847 drivers/misc/cxl/pci.c 	afu->pp_irqs = AFUD_NUM_INTS_PER_PROC(val);
afu               848 drivers/misc/cxl/pci.c 	afu->max_procs_virtualised = AFUD_NUM_PROCS(val);
afu               849 drivers/misc/cxl/pci.c 	afu->crs_num = AFUD_NUM_CRS(val);
afu               852 drivers/misc/cxl/pci.c 		afu->modes_supported |= CXL_MODE_DIRECTED;
afu               854 drivers/misc/cxl/pci.c 		afu->modes_supported |= CXL_MODE_DEDICATED;
afu               856 drivers/misc/cxl/pci.c 		afu->modes_supported |= CXL_MODE_TIME_SLICED;
afu               858 drivers/misc/cxl/pci.c 	val = AFUD_READ_PPPSA(afu);
afu               859 drivers/misc/cxl/pci.c 	afu->pp_size = AFUD_PPPSA_LEN(val) * 4096;
afu               860 drivers/misc/cxl/pci.c 	afu->psa = AFUD_PPPSA_PSA(val);
afu               861 drivers/misc/cxl/pci.c 	if ((afu->pp_psa = AFUD_PPPSA_PP(val)))
afu               862 drivers/misc/cxl/pci.c 		afu->native->pp_offset = AFUD_READ_PPPSA_OFF(afu);
afu               864 drivers/misc/cxl/pci.c 	val = AFUD_READ_CR(afu);
afu               865 drivers/misc/cxl/pci.c 	afu->crs_len = AFUD_CR_LEN(val) * 256;
afu               866 drivers/misc/cxl/pci.c 	afu->crs_offset = AFUD_READ_CR_OFF(afu);
afu               870 drivers/misc/cxl/pci.c 	afu->eb_len = AFUD_EB_LEN(AFUD_READ_EB(afu)) * 4096;
afu               871 drivers/misc/cxl/pci.c 	afu->eb_offset = AFUD_READ_EB_OFF(afu);
afu               874 drivers/misc/cxl/pci.c 	if (EXTRACT_PPC_BITS(afu->eb_offset, 0, 11) != 0) {
afu               875 drivers/misc/cxl/pci.c 		dev_warn(&afu->dev,
afu               877 drivers/misc/cxl/pci.c 			 afu->eb_offset);
afu               878 drivers/misc/cxl/pci.c 		dev_info(&afu->dev,
afu               881 drivers/misc/cxl/pci.c 		afu->eb_len = 0;
afu               887 drivers/misc/cxl/pci.c static int cxl_afu_descriptor_looks_ok(struct cxl_afu *afu)
afu               892 drivers/misc/cxl/pci.c 	if (afu->psa && afu->adapter->ps_size <
afu               893 drivers/misc/cxl/pci.c 			(afu->native->pp_offset + afu->pp_size*afu->max_procs_virtualised)) {
afu               894 drivers/misc/cxl/pci.c 		dev_err(&afu->dev, "per-process PSA can't fit inside the PSA!\n");
afu               898 drivers/misc/cxl/pci.c 	if (afu->pp_psa && (afu->pp_size < PAGE_SIZE))
afu               899 drivers/misc/cxl/pci.c 		dev_warn(&afu->dev, "AFU uses pp_size(%#016llx) < PAGE_SIZE per-process PSA!\n", afu->pp_size);
afu               901 drivers/misc/cxl/pci.c 	for (i = 0; i < afu->crs_num; i++) {
afu               902 drivers/misc/cxl/pci.c 		rc = cxl_ops->afu_cr_read32(afu, i, 0, &val);
afu               904 drivers/misc/cxl/pci.c 			dev_err(&afu->dev, "ABORTING: AFU configuration record %i is invalid\n", i);
afu               909 drivers/misc/cxl/pci.c 	if ((afu->modes_supported & ~CXL_MODE_DEDICATED) && afu->max_procs_virtualised == 0) {
afu               920 drivers/misc/cxl/pci.c 		dev_err(&afu->dev, "AFU does not support any processes\n");
afu               927 drivers/misc/cxl/pci.c static int sanitise_afu_regs_psl9(struct cxl_afu *afu)
afu               936 drivers/misc/cxl/pci.c 	reg = cxl_p2n_read(afu, CXL_AFU_Cntl_An);
afu               938 drivers/misc/cxl/pci.c 		dev_warn(&afu->dev, "WARNING: AFU was not disabled: %#016llx\n", reg);
afu               939 drivers/misc/cxl/pci.c 		if (cxl_ops->afu_reset(afu))
afu               941 drivers/misc/cxl/pci.c 		if (cxl_afu_disable(afu))
afu               943 drivers/misc/cxl/pci.c 		if (cxl_psl_purge(afu))
afu               946 drivers/misc/cxl/pci.c 	cxl_p1n_write(afu, CXL_PSL_SPAP_An, 0x0000000000000000);
afu               947 drivers/misc/cxl/pci.c 	cxl_p1n_write(afu, CXL_PSL_AMBAR_An, 0x0000000000000000);
afu               948 drivers/misc/cxl/pci.c 	reg = cxl_p2n_read(afu, CXL_PSL_DSISR_An);
afu               950 drivers/misc/cxl/pci.c 		dev_warn(&afu->dev, "AFU had pending DSISR: %#016llx\n", reg);
afu               952 drivers/misc/cxl/pci.c 			cxl_p2n_write(afu, CXL_PSL_TFC_An, CXL_PSL_TFC_An_AE);
afu               954 drivers/misc/cxl/pci.c 			cxl_p2n_write(afu, CXL_PSL_TFC_An, CXL_PSL_TFC_An_A);
afu               956 drivers/misc/cxl/pci.c 	if (afu->adapter->native->sl_ops->register_serr_irq) {
afu               957 drivers/misc/cxl/pci.c 		reg = cxl_p1n_read(afu, CXL_PSL_SERR_An);
afu               960 drivers/misc/cxl/pci.c 				dev_warn(&afu->dev, "AFU had pending SERR: %#016llx\n", reg);
afu               961 drivers/misc/cxl/pci.c 			cxl_p1n_write(afu, CXL_PSL_SERR_An, reg & ~0xffff);
afu               964 drivers/misc/cxl/pci.c 	reg = cxl_p2n_read(afu, CXL_PSL_ErrStat_An);
afu               966 drivers/misc/cxl/pci.c 		dev_warn(&afu->dev, "AFU had pending error status: %#016llx\n", reg);
afu               967 drivers/misc/cxl/pci.c 		cxl_p2n_write(afu, CXL_PSL_ErrStat_An, reg);
afu               973 drivers/misc/cxl/pci.c static int sanitise_afu_regs_psl8(struct cxl_afu *afu)
afu               982 drivers/misc/cxl/pci.c 	reg = cxl_p2n_read(afu, CXL_AFU_Cntl_An);
afu               984 drivers/misc/cxl/pci.c 		dev_warn(&afu->dev, "WARNING: AFU was not disabled: %#016llx\n", reg);
afu               985 drivers/misc/cxl/pci.c 		if (cxl_ops->afu_reset(afu))
afu               987 drivers/misc/cxl/pci.c 		if (cxl_afu_disable(afu))
afu               989 drivers/misc/cxl/pci.c 		if (cxl_psl_purge(afu))
afu               992 drivers/misc/cxl/pci.c 	cxl_p1n_write(afu, CXL_PSL_SPAP_An, 0x0000000000000000);
afu               993 drivers/misc/cxl/pci.c 	cxl_p1n_write(afu, CXL_PSL_IVTE_Limit_An, 0x0000000000000000);
afu               994 drivers/misc/cxl/pci.c 	cxl_p1n_write(afu, CXL_PSL_IVTE_Offset_An, 0x0000000000000000);
afu               995 drivers/misc/cxl/pci.c 	cxl_p1n_write(afu, CXL_PSL_AMBAR_An, 0x0000000000000000);
afu               996 drivers/misc/cxl/pci.c 	cxl_p1n_write(afu, CXL_PSL_SPOffset_An, 0x0000000000000000);
afu               997 drivers/misc/cxl/pci.c 	cxl_p1n_write(afu, CXL_HAURP_An, 0x0000000000000000);
afu               998 drivers/misc/cxl/pci.c 	cxl_p2n_write(afu, CXL_CSRP_An, 0x0000000000000000);
afu               999 drivers/misc/cxl/pci.c 	cxl_p2n_write(afu, CXL_AURP1_An, 0x0000000000000000);
afu              1000 drivers/misc/cxl/pci.c 	cxl_p2n_write(afu, CXL_AURP0_An, 0x0000000000000000);
afu              1001 drivers/misc/cxl/pci.c 	cxl_p2n_write(afu, CXL_SSTP1_An, 0x0000000000000000);
afu              1002 drivers/misc/cxl/pci.c 	cxl_p2n_write(afu, CXL_SSTP0_An, 0x0000000000000000);
afu              1003 drivers/misc/cxl/pci.c 	reg = cxl_p2n_read(afu, CXL_PSL_DSISR_An);
afu              1005 drivers/misc/cxl/pci.c 		dev_warn(&afu->dev, "AFU had pending DSISR: %#016llx\n", reg);
afu              1007 drivers/misc/cxl/pci.c 			cxl_p2n_write(afu, CXL_PSL_TFC_An, CXL_PSL_TFC_An_AE);
afu              1009 drivers/misc/cxl/pci.c 			cxl_p2n_write(afu, CXL_PSL_TFC_An, CXL_PSL_TFC_An_A);
afu              1011 drivers/misc/cxl/pci.c 	if (afu->adapter->native->sl_ops->register_serr_irq) {
afu              1012 drivers/misc/cxl/pci.c 		reg = cxl_p1n_read(afu, CXL_PSL_SERR_An);
afu              1015 drivers/misc/cxl/pci.c 				dev_warn(&afu->dev, "AFU had pending SERR: %#016llx\n", reg);
afu              1016 drivers/misc/cxl/pci.c 			cxl_p1n_write(afu, CXL_PSL_SERR_An, reg & ~0xffff);
afu              1019 drivers/misc/cxl/pci.c 	reg = cxl_p2n_read(afu, CXL_PSL_ErrStat_An);
afu              1021 drivers/misc/cxl/pci.c 		dev_warn(&afu->dev, "AFU had pending error status: %#016llx\n", reg);
afu              1022 drivers/misc/cxl/pci.c 		cxl_p2n_write(afu, CXL_PSL_ErrStat_An, reg);
afu              1035 drivers/misc/cxl/pci.c ssize_t cxl_pci_afu_read_err_buffer(struct cxl_afu *afu, char *buf,
afu              1041 drivers/misc/cxl/pci.c 	const void __iomem *ebuf = afu->native->afu_desc_mmio + afu->eb_offset;
afu              1043 drivers/misc/cxl/pci.c 	if (count == 0 || off < 0 || (size_t)off >= afu->eb_len)
afu              1047 drivers/misc/cxl/pci.c 	count = min((size_t)(afu->eb_len - off), count);
afu              1072 drivers/misc/cxl/pci.c static int pci_configure_afu(struct cxl_afu *afu, struct cxl *adapter, struct pci_dev *dev)
afu              1076 drivers/misc/cxl/pci.c 	if ((rc = pci_map_slice_regs(afu, adapter, dev)))
afu              1080 drivers/misc/cxl/pci.c 		rc = adapter->native->sl_ops->sanitise_afu_regs(afu);
afu              1086 drivers/misc/cxl/pci.c 	if ((rc = cxl_ops->afu_reset(afu)))
afu              1090 drivers/misc/cxl/pci.c 		dump_afu_descriptor(afu);
afu              1092 drivers/misc/cxl/pci.c 	if ((rc = cxl_read_afu_descriptor(afu)))
afu              1095 drivers/misc/cxl/pci.c 	if ((rc = cxl_afu_descriptor_looks_ok(afu)))
afu              1099 drivers/misc/cxl/pci.c 		if ((rc = adapter->native->sl_ops->afu_regs_init(afu)))
afu              1103 drivers/misc/cxl/pci.c 		if ((rc = adapter->native->sl_ops->register_serr_irq(afu)))
afu              1106 drivers/misc/cxl/pci.c 	if ((rc = cxl_native_register_psl_irq(afu)))
afu              1109 drivers/misc/cxl/pci.c 	atomic_set(&afu->configured_state, 0);
afu              1114 drivers/misc/cxl/pci.c 		adapter->native->sl_ops->release_serr_irq(afu);
afu              1116 drivers/misc/cxl/pci.c 	pci_unmap_slice_regs(afu);
afu              1120 drivers/misc/cxl/pci.c static void pci_deconfigure_afu(struct cxl_afu *afu)
afu              1126 drivers/misc/cxl/pci.c 	if (atomic_read(&afu->configured_state) != -1) {
afu              1127 drivers/misc/cxl/pci.c 		while (atomic_cmpxchg(&afu->configured_state, 0, -1) != -1)
afu              1130 drivers/misc/cxl/pci.c 	cxl_native_release_psl_irq(afu);
afu              1131 drivers/misc/cxl/pci.c 	if (afu->adapter->native->sl_ops->release_serr_irq)
afu              1132 drivers/misc/cxl/pci.c 		afu->adapter->native->sl_ops->release_serr_irq(afu);
afu              1133 drivers/misc/cxl/pci.c 	pci_unmap_slice_regs(afu);
afu              1138 drivers/misc/cxl/pci.c 	struct cxl_afu *afu;
afu              1141 drivers/misc/cxl/pci.c 	afu = cxl_alloc_afu(adapter, slice);
afu              1142 drivers/misc/cxl/pci.c 	if (!afu)
afu              1145 drivers/misc/cxl/pci.c 	afu->native = kzalloc(sizeof(struct cxl_afu_native), GFP_KERNEL);
afu              1146 drivers/misc/cxl/pci.c 	if (!afu->native)
afu              1149 drivers/misc/cxl/pci.c 	mutex_init(&afu->native->spa_mutex);
afu              1151 drivers/misc/cxl/pci.c 	rc = dev_set_name(&afu->dev, "afu%i.%i", adapter->adapter_num, slice);
afu              1155 drivers/misc/cxl/pci.c 	rc = pci_configure_afu(afu, adapter, dev);
afu              1160 drivers/misc/cxl/pci.c 	cxl_debugfs_afu_add(afu);
afu              1166 drivers/misc/cxl/pci.c 	if ((rc = cxl_register_afu(afu)))
afu              1169 drivers/misc/cxl/pci.c 	if ((rc = cxl_sysfs_afu_add(afu)))
afu              1172 drivers/misc/cxl/pci.c 	adapter->afu[afu->slice] = afu;
afu              1174 drivers/misc/cxl/pci.c 	if ((rc = cxl_pci_vphb_add(afu)))
afu              1175 drivers/misc/cxl/pci.c 		dev_info(&afu->dev, "Can't register vPHB\n");
afu              1180 drivers/misc/cxl/pci.c 	pci_deconfigure_afu(afu);
afu              1181 drivers/misc/cxl/pci.c 	cxl_debugfs_afu_remove(afu);
afu              1182 drivers/misc/cxl/pci.c 	device_unregister(&afu->dev);
afu              1186 drivers/misc/cxl/pci.c 	kfree(afu->native);
afu              1188 drivers/misc/cxl/pci.c 	kfree(afu);
afu              1193 drivers/misc/cxl/pci.c static void cxl_pci_remove_afu(struct cxl_afu *afu)
afu              1197 drivers/misc/cxl/pci.c 	if (!afu)
afu              1200 drivers/misc/cxl/pci.c 	cxl_pci_vphb_remove(afu);
afu              1201 drivers/misc/cxl/pci.c 	cxl_sysfs_afu_remove(afu);
afu              1202 drivers/misc/cxl/pci.c 	cxl_debugfs_afu_remove(afu);
afu              1204 drivers/misc/cxl/pci.c 	spin_lock(&afu->adapter->afu_list_lock);
afu              1205 drivers/misc/cxl/pci.c 	afu->adapter->afu[afu->slice] = NULL;
afu              1206 drivers/misc/cxl/pci.c 	spin_unlock(&afu->adapter->afu_list_lock);
afu              1208 drivers/misc/cxl/pci.c 	cxl_context_detach_all(afu);
afu              1209 drivers/misc/cxl/pci.c 	cxl_ops->afu_deactivate_mode(afu, afu->current_mode);
afu              1211 drivers/misc/cxl/pci.c 	pci_deconfigure_afu(afu);
afu              1212 drivers/misc/cxl/pci.c 	device_unregister(&afu->dev);
afu              1567 drivers/misc/cxl/pci.c 		if (adapter->afu[slice])
afu              1568 drivers/misc/cxl/pci.c 			cxl_p1n_write(adapter->afu[slice], CXL_PSL_SLICE_TRACE,
afu              1769 drivers/misc/cxl/pci.c 		rc = cxl_afu_select_best_mode(adapter->afu[slice]);
afu              1780 drivers/misc/cxl/pci.c 	struct cxl_afu *afu;
afu              1788 drivers/misc/cxl/pci.c 		afu = adapter->afu[i];
afu              1789 drivers/misc/cxl/pci.c 		cxl_pci_remove_afu(afu);
afu              1794 drivers/misc/cxl/pci.c static pci_ers_result_t cxl_vphb_error_detected(struct cxl_afu *afu,
afu              1804 drivers/misc/cxl/pci.c 	if (afu == NULL || afu->phb == NULL)
afu              1807 drivers/misc/cxl/pci.c 	list_for_each_entry(afu_dev, &afu->phb->bus->devices, bus_list) {
afu              1830 drivers/misc/cxl/pci.c 	struct cxl_afu *afu;
afu              1845 drivers/misc/cxl/pci.c 			afu = adapter->afu[i];
afu              1850 drivers/misc/cxl/pci.c 			cxl_vphb_error_detected(afu, state);
afu              1939 drivers/misc/cxl/pci.c 		afu = adapter->afu[i];
afu              1941 drivers/misc/cxl/pci.c 		if (afu == NULL)
afu              1944 drivers/misc/cxl/pci.c 		afu_result = cxl_vphb_error_detected(afu, state);
afu              1945 drivers/misc/cxl/pci.c 		cxl_context_detach_all(afu);
afu              1946 drivers/misc/cxl/pci.c 		cxl_ops->afu_deactivate_mode(afu, afu->current_mode);
afu              1947 drivers/misc/cxl/pci.c 		pci_deconfigure_afu(afu);
afu              1972 drivers/misc/cxl/pci.c 	struct cxl_afu *afu;
afu              1991 drivers/misc/cxl/pci.c 		afu = adapter->afu[i];
afu              1993 drivers/misc/cxl/pci.c 		if (afu == NULL)
afu              1996 drivers/misc/cxl/pci.c 		if (pci_configure_afu(afu, adapter, pdev))
afu              1999 drivers/misc/cxl/pci.c 		if (cxl_afu_select_best_mode(afu))
afu              2002 drivers/misc/cxl/pci.c 		if (afu->phb == NULL)
afu              2005 drivers/misc/cxl/pci.c 		list_for_each_entry(afu_dev, &afu->phb->bus->devices, bus_list) {
afu              2020 drivers/misc/cxl/pci.c 			if (cxl_ops->afu_check_and_enable(afu))
afu              2061 drivers/misc/cxl/pci.c 	struct cxl_afu *afu;
afu              2071 drivers/misc/cxl/pci.c 		afu = adapter->afu[i];
afu              2073 drivers/misc/cxl/pci.c 		if (afu == NULL || afu->phb == NULL)
afu              2076 drivers/misc/cxl/pci.c 		list_for_each_entry(afu_dev, &afu->phb->bus->devices, bus_list) {
afu               204 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_afu_chardev_m(device);
afu               206 drivers/misc/cxl/sysfs.c 	return scnprintf(buf, PAGE_SIZE, "%llu\n", afu->adapter->ps_size);
afu               213 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_afu_chardev_m(device);
afu               215 drivers/misc/cxl/sysfs.c 	return scnprintf(buf, PAGE_SIZE, "%llu\n", afu->native->pp_offset);
afu               222 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_afu_chardev_m(device);
afu               224 drivers/misc/cxl/sysfs.c 	return scnprintf(buf, PAGE_SIZE, "%llu\n", afu->pp_size);
afu               240 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_cxl_afu(device);
afu               242 drivers/misc/cxl/sysfs.c 	if (afu->pp_size)
afu               243 drivers/misc/cxl/sysfs.c 		return scnprintf(buf, PAGE_SIZE, "%llu\n", afu->pp_size);
afu               244 drivers/misc/cxl/sysfs.c 	return scnprintf(buf, PAGE_SIZE, "%llu\n", afu->adapter->ps_size);
afu               251 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_cxl_afu(device);
afu               255 drivers/misc/cxl/sysfs.c 	mutex_lock(&afu->contexts_lock);
afu               256 drivers/misc/cxl/sysfs.c 	if (!idr_is_empty(&afu->contexts_idr)) {
afu               261 drivers/misc/cxl/sysfs.c 	if ((rc = cxl_ops->afu_reset(afu)))
afu               266 drivers/misc/cxl/sysfs.c 	mutex_unlock(&afu->contexts_lock);
afu               274 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_cxl_afu(device);
afu               276 drivers/misc/cxl/sysfs.c 	return scnprintf(buf, PAGE_SIZE, "%i\n", afu->pp_irqs);
afu               283 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_cxl_afu(device);
afu               285 drivers/misc/cxl/sysfs.c 	return scnprintf(buf, PAGE_SIZE, "%i\n", afu->irqs_max);
afu               292 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_cxl_afu(device);
afu               300 drivers/misc/cxl/sysfs.c 	if (irqs_max < afu->pp_irqs)
afu               304 drivers/misc/cxl/sysfs.c 		if (irqs_max > afu->adapter->user_irqs)
afu               308 drivers/misc/cxl/sysfs.c 		if (irqs_max > afu->guest->max_ints)
afu               312 drivers/misc/cxl/sysfs.c 	afu->irqs_max = irqs_max;
afu               319 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_cxl_afu(device);
afu               322 drivers/misc/cxl/sysfs.c 	if (afu->modes_supported & CXL_MODE_DEDICATED)
afu               324 drivers/misc/cxl/sysfs.c 	if (afu->modes_supported & CXL_MODE_DIRECTED)
afu               333 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_cxl_afu(device);
afu               335 drivers/misc/cxl/sysfs.c 	switch (afu->prefault_mode) {
afu               349 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_cxl_afu(device);
afu               370 drivers/misc/cxl/sysfs.c 	afu->prefault_mode = mode;
afu               378 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_cxl_afu(device);
afu               380 drivers/misc/cxl/sysfs.c 	if (afu->current_mode == CXL_MODE_DEDICATED)
afu               382 drivers/misc/cxl/sysfs.c 	if (afu->current_mode == CXL_MODE_DIRECTED)
afu               390 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_cxl_afu(device);
afu               395 drivers/misc/cxl/sysfs.c 	mutex_lock(&afu->contexts_lock);
afu               396 drivers/misc/cxl/sysfs.c 	if (!idr_is_empty(&afu->contexts_idr))
afu               415 drivers/misc/cxl/sysfs.c 	old_mode = afu->current_mode;
afu               416 drivers/misc/cxl/sysfs.c 	afu->current_mode = 0;
afu               417 drivers/misc/cxl/sysfs.c 	afu->num_procs = 0;
afu               419 drivers/misc/cxl/sysfs.c 	mutex_unlock(&afu->contexts_lock);
afu               421 drivers/misc/cxl/sysfs.c 	if ((rc = cxl_ops->afu_deactivate_mode(afu, old_mode)))
afu               423 drivers/misc/cxl/sysfs.c 	if ((rc = cxl_ops->afu_activate_mode(afu, mode)))
afu               428 drivers/misc/cxl/sysfs.c 	mutex_unlock(&afu->contexts_lock);
afu               450 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_cxl_afu(kobj_to_dev(kobj));
afu               452 drivers/misc/cxl/sysfs.c 	return cxl_ops->afu_read_err_buffer(afu, buf, off, count);
afu               545 drivers/misc/cxl/sysfs.c 	struct cxl_afu *afu = to_cxl_afu(kobj_to_dev(kobj->parent));
afu               550 drivers/misc/cxl/sysfs.c 		rc = cxl_ops->afu_cr_read64(afu, cr->cr, off & ~0x7, &val);
afu               587 drivers/misc/cxl/sysfs.c static struct afu_config_record *cxl_sysfs_afu_new_cr(struct cxl_afu *afu, int cr_idx)
afu               598 drivers/misc/cxl/sysfs.c 	rc = cxl_ops->afu_cr_read16(afu, cr_idx, PCI_DEVICE_ID, &cr->device);
afu               601 drivers/misc/cxl/sysfs.c 	rc = cxl_ops->afu_cr_read16(afu, cr_idx, PCI_VENDOR_ID, &cr->vendor);
afu               604 drivers/misc/cxl/sysfs.c 	rc = cxl_ops->afu_cr_read32(afu, cr_idx, PCI_CLASS_REVISION, &cr->class);
afu               621 drivers/misc/cxl/sysfs.c 	cr->config_attr.size = afu->crs_len;
afu               625 drivers/misc/cxl/sysfs.c 				  &afu->dev.kobj, "cr%i", cr->cr);
afu               648 drivers/misc/cxl/sysfs.c void cxl_sysfs_afu_remove(struct cxl_afu *afu)
afu               655 drivers/misc/cxl/sysfs.c 	if (afu->eb_len)
afu               656 drivers/misc/cxl/sysfs.c 		device_remove_bin_file(&afu->dev, &afu->attr_eb);
afu               662 drivers/misc/cxl/sysfs.c 			device_remove_file(&afu->dev, &afu_attrs[i]);
afu               665 drivers/misc/cxl/sysfs.c 	list_for_each_entry_safe(cr, tmp, &afu->crs, list) {
afu               671 drivers/misc/cxl/sysfs.c int cxl_sysfs_afu_add(struct cxl_afu *afu)
afu               677 drivers/misc/cxl/sysfs.c 	INIT_LIST_HEAD(&afu->crs);
afu               683 drivers/misc/cxl/sysfs.c 			if ((rc = device_create_file(&afu->dev, &afu_attrs[i])))
afu               689 drivers/misc/cxl/sysfs.c 	if (afu->eb_len) {
afu               690 drivers/misc/cxl/sysfs.c 		sysfs_attr_init(&afu->attr_eb.attr);
afu               692 drivers/misc/cxl/sysfs.c 		afu->attr_eb.attr.name = "afu_err_buff";
afu               693 drivers/misc/cxl/sysfs.c 		afu->attr_eb.attr.mode = S_IRUGO;
afu               694 drivers/misc/cxl/sysfs.c 		afu->attr_eb.size = afu->eb_len;
afu               695 drivers/misc/cxl/sysfs.c 		afu->attr_eb.read = afu_eb_read;
afu               697 drivers/misc/cxl/sysfs.c 		rc = device_create_bin_file(&afu->dev, &afu->attr_eb);
afu               699 drivers/misc/cxl/sysfs.c 			dev_err(&afu->dev,
afu               706 drivers/misc/cxl/sysfs.c 	for (i = 0; i < afu->crs_num; i++) {
afu               707 drivers/misc/cxl/sysfs.c 		cr = cxl_sysfs_afu_new_cr(afu, i);
afu               712 drivers/misc/cxl/sysfs.c 		list_add(&cr->list, &afu->crs);
afu               718 drivers/misc/cxl/sysfs.c 	cxl_sysfs_afu_remove(afu);
afu               722 drivers/misc/cxl/sysfs.c 	afu->eb_len = 0;
afu               728 drivers/misc/cxl/sysfs.c 		device_remove_file(&afu->dev, &afu_attrs[i]);
afu               733 drivers/misc/cxl/sysfs.c int cxl_sysfs_afu_m_add(struct cxl_afu *afu)
afu               742 drivers/misc/cxl/sysfs.c 			if ((rc = device_create_file(afu->chardev_m, &afu_master_attrs[i])))
afu               754 drivers/misc/cxl/sysfs.c 			device_remove_file(afu->chardev_m, &afu_master_attrs[i]);
afu               759 drivers/misc/cxl/sysfs.c void cxl_sysfs_afu_m_remove(struct cxl_afu *afu)
afu               768 drivers/misc/cxl/sysfs.c 			device_remove_file(afu->chardev_m, &afu_master_attrs[i]);
afu                70 drivers/misc/cxl/trace.h 		__field(u8, afu)
afu                75 drivers/misc/cxl/trace.h 		__entry->card = ctx->afu->adapter->adapter_num;
afu                76 drivers/misc/cxl/trace.h 		__entry->afu = ctx->afu->slice;
afu                82 drivers/misc/cxl/trace.h 		__entry->afu,
afu                95 drivers/misc/cxl/trace.h 		__field(u8, afu)
afu               104 drivers/misc/cxl/trace.h 		__entry->card = ctx->afu->adapter->adapter_num;
afu               105 drivers/misc/cxl/trace.h 		__entry->afu = ctx->afu->slice;
afu               115 drivers/misc/cxl/trace.h 		__entry->afu,
afu               136 drivers/misc/cxl/trace.h 		__field(u8, afu)
afu               144 drivers/misc/cxl/trace.h 		__entry->card = ctx->afu->adapter->adapter_num;
afu               145 drivers/misc/cxl/trace.h 		__entry->afu = ctx->afu->slice;
afu               154 drivers/misc/cxl/trace.h 		__entry->afu,
afu               169 drivers/misc/cxl/trace.h 		__field(u8, afu)
afu               177 drivers/misc/cxl/trace.h 		__entry->card = ctx->afu->adapter->adapter_num;
afu               178 drivers/misc/cxl/trace.h 		__entry->afu = ctx->afu->slice;
afu               187 drivers/misc/cxl/trace.h 		__entry->afu,
afu               203 drivers/misc/cxl/trace.h 		__field(u8, afu)
afu               211 drivers/misc/cxl/trace.h 		__entry->card = ctx->afu->adapter->adapter_num;
afu               212 drivers/misc/cxl/trace.h 		__entry->afu = ctx->afu->slice;
afu               221 drivers/misc/cxl/trace.h 		__entry->afu,
afu               236 drivers/misc/cxl/trace.h 		__field(u8, afu)
afu               242 drivers/misc/cxl/trace.h 		__entry->card = ctx->afu->adapter->adapter_num;
afu               243 drivers/misc/cxl/trace.h 		__entry->afu = ctx->afu->slice;
afu               250 drivers/misc/cxl/trace.h 		__entry->afu,
afu               263 drivers/misc/cxl/trace.h 		__field(u8, afu)
afu               269 drivers/misc/cxl/trace.h 		__entry->card = ctx->afu->adapter->adapter_num;
afu               270 drivers/misc/cxl/trace.h 		__entry->afu = ctx->afu->slice;
afu               277 drivers/misc/cxl/trace.h 		__entry->afu,
afu               290 drivers/misc/cxl/trace.h 		__field(u8, afu)
afu               298 drivers/misc/cxl/trace.h 		__entry->card = ctx->afu->adapter->adapter_num;
afu               299 drivers/misc/cxl/trace.h 		__entry->afu = ctx->afu->slice;
afu               308 drivers/misc/cxl/trace.h 		__entry->afu,
afu               323 drivers/misc/cxl/trace.h 		__field(u8, afu)
afu               330 drivers/misc/cxl/trace.h 		__entry->card = ctx->afu->adapter->adapter_num;
afu               331 drivers/misc/cxl/trace.h 		__entry->afu = ctx->afu->slice;
afu               339 drivers/misc/cxl/trace.h 		__entry->afu,
afu               353 drivers/misc/cxl/trace.h 		__field(u8, afu)
afu               359 drivers/misc/cxl/trace.h 		__entry->card = ctx->afu->adapter->adapter_num;
afu               360 drivers/misc/cxl/trace.h 		__entry->afu = ctx->afu->slice;
afu               367 drivers/misc/cxl/trace.h 		__entry->afu,
afu               380 drivers/misc/cxl/trace.h 		__field(u8, afu)
afu               387 drivers/misc/cxl/trace.h 		__entry->card = ctx->afu->adapter->adapter_num;
afu               388 drivers/misc/cxl/trace.h 		__entry->afu = ctx->afu->slice;
afu               396 drivers/misc/cxl/trace.h 		__entry->afu,
afu               404 drivers/misc/cxl/trace.h 	TP_PROTO(struct cxl_afu *afu, u64 cmd),
afu               406 drivers/misc/cxl/trace.h 	TP_ARGS(afu, cmd),
afu               410 drivers/misc/cxl/trace.h 		__field(u8, afu)
afu               415 drivers/misc/cxl/trace.h 		__entry->card = afu->adapter->adapter_num;
afu               416 drivers/misc/cxl/trace.h 		__entry->afu = afu->slice;
afu               422 drivers/misc/cxl/trace.h 		__entry->afu,
afu               428 drivers/misc/cxl/trace.h 	TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
afu               430 drivers/misc/cxl/trace.h 	TP_ARGS(afu, cmd, rc),
afu               434 drivers/misc/cxl/trace.h 		__field(u8, afu)
afu               440 drivers/misc/cxl/trace.h 		__entry->card = afu->adapter->adapter_num;
afu               441 drivers/misc/cxl/trace.h 		__entry->afu = afu->slice;
afu               448 drivers/misc/cxl/trace.h 		__entry->afu,
afu               455 drivers/misc/cxl/trace.h 	TP_PROTO(struct cxl_afu *afu, u64 cmd),
afu               456 drivers/misc/cxl/trace.h 	TP_ARGS(afu, cmd)
afu               460 drivers/misc/cxl/trace.h 	TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
afu               461 drivers/misc/cxl/trace.h 	TP_ARGS(afu, cmd, rc)
afu               465 drivers/misc/cxl/trace.h 	TP_PROTO(struct cxl_afu *afu, u64 cmd),
afu               466 drivers/misc/cxl/trace.h 	TP_ARGS(afu, cmd),
afu               470 drivers/misc/cxl/trace.h 		__entry->afu,
afu               476 drivers/misc/cxl/trace.h 	TP_PROTO(struct cxl_afu *afu, u64 cmd, int rc),
afu               477 drivers/misc/cxl/trace.h 	TP_ARGS(afu, cmd, rc),
afu               481 drivers/misc/cxl/trace.h 		__entry->afu,
afu                31 drivers/misc/cxl/vphb.c 	struct cxl_afu *afu;
afu                35 drivers/misc/cxl/vphb.c 	afu = (struct cxl_afu *)phb->private_data;
afu                37 drivers/misc/cxl/vphb.c 	if (!cxl_ops->link_ok(afu->adapter, afu)) {
afu                53 drivers/misc/cxl/vphb.c 	return (cxl_ops->afu_check_and_enable(afu) == 0);
afu                93 drivers/misc/cxl/vphb.c static void cxl_afu_configured_put(struct cxl_afu *afu)
afu                95 drivers/misc/cxl/vphb.c 	atomic_dec_if_positive(&afu->configured_state);
afu                98 drivers/misc/cxl/vphb.c static bool cxl_afu_configured_get(struct cxl_afu *afu)
afu               100 drivers/misc/cxl/vphb.c 	return atomic_inc_unless_negative(&afu->configured_state);
afu               104 drivers/misc/cxl/vphb.c 				       struct cxl_afu *afu, int *_record)
afu               109 drivers/misc/cxl/vphb.c 	if (record > afu->crs_num)
afu               120 drivers/misc/cxl/vphb.c 	struct cxl_afu *afu;
afu               125 drivers/misc/cxl/vphb.c 	afu = pci_bus_to_afu(bus);
afu               127 drivers/misc/cxl/vphb.c 	if (afu == NULL || !cxl_afu_configured_get(afu))
afu               130 drivers/misc/cxl/vphb.c 	rc = cxl_pcie_config_info(bus, devfn, afu, &record);
afu               136 drivers/misc/cxl/vphb.c 		rc = cxl_ops->afu_cr_read8(afu, record, offset,	&val8);
afu               140 drivers/misc/cxl/vphb.c 		rc = cxl_ops->afu_cr_read16(afu, record, offset, &val16);
afu               144 drivers/misc/cxl/vphb.c 		rc = cxl_ops->afu_cr_read32(afu, record, offset, &val32);
afu               152 drivers/misc/cxl/vphb.c 	cxl_afu_configured_put(afu);
afu               160 drivers/misc/cxl/vphb.c 	struct cxl_afu *afu;
afu               162 drivers/misc/cxl/vphb.c 	afu = pci_bus_to_afu(bus);
afu               164 drivers/misc/cxl/vphb.c 	if (afu == NULL || !cxl_afu_configured_get(afu))
afu               167 drivers/misc/cxl/vphb.c 	rc = cxl_pcie_config_info(bus, devfn, afu, &record);
afu               173 drivers/misc/cxl/vphb.c 		rc = cxl_ops->afu_cr_write8(afu, record, offset, val & 0xff);
afu               176 drivers/misc/cxl/vphb.c 		rc = cxl_ops->afu_cr_write16(afu, record, offset, val & 0xffff);
afu               179 drivers/misc/cxl/vphb.c 		rc = cxl_ops->afu_cr_write32(afu, record, offset, val);
afu               186 drivers/misc/cxl/vphb.c 	cxl_afu_configured_put(afu);
afu               209 drivers/misc/cxl/vphb.c int cxl_pci_vphb_add(struct cxl_afu *afu)
afu               223 drivers/misc/cxl/vphb.c 	if (!afu->crs_num)
afu               233 drivers/misc/cxl/vphb.c 	parent = afu->adapter->dev.parent;
afu               248 drivers/misc/cxl/vphb.c 	phb->private_data = afu;
afu               270 drivers/misc/cxl/vphb.c 	afu->phb = phb;
afu               275 drivers/misc/cxl/vphb.c void cxl_pci_vphb_remove(struct cxl_afu *afu)
afu               280 drivers/misc/cxl/vphb.c 	if (!afu || !afu->phb)
afu               283 drivers/misc/cxl/vphb.c 	phb = afu->phb;
afu               284 drivers/misc/cxl/vphb.c 	afu->phb = NULL;
afu                21 drivers/misc/ocxl/afu_irq.c 	return (offset - ctx->afu->irq_base_offset) >> PAGE_SHIFT;
afu                26 drivers/misc/ocxl/afu_irq.c 	return ctx->afu->irq_base_offset + (irq_id << PAGE_SHIFT);
afu               127 drivers/misc/ocxl/afu_irq.c 	rc = ocxl_link_irq_alloc(ctx->afu->fn->link, &irq->hw_irq,
afu               144 drivers/misc/ocxl/afu_irq.c 	ocxl_link_free_irq(ctx->afu->fn->link, irq->hw_irq);
afu               164 drivers/misc/ocxl/afu_irq.c 	ocxl_link_free_irq(ctx->afu->fn->link, irq->hw_irq);
afu               345 drivers/misc/ocxl/config.c 			struct ocxl_afu_config *afu)
afu               355 drivers/misc/ocxl/config.c 		ptr = (u32 *) &afu->name[i];
afu               358 drivers/misc/ocxl/config.c 	afu->name[OCXL_AFU_NAME_SZ - 1] = '\0'; /* play safe */
afu               363 drivers/misc/ocxl/config.c 			struct ocxl_afu_config *afu)
afu               374 drivers/misc/ocxl/config.c 	afu->global_mmio_bar = EXTRACT_BITS(val, 0, 2);
afu               375 drivers/misc/ocxl/config.c 	afu->global_mmio_offset = EXTRACT_BITS(val, 16, 31) << 16;
afu               380 drivers/misc/ocxl/config.c 	afu->global_mmio_offset += (u64) val << 32;
afu               385 drivers/misc/ocxl/config.c 	afu->global_mmio_size = val;
afu               393 drivers/misc/ocxl/config.c 	afu->pp_mmio_bar = EXTRACT_BITS(val, 0, 2);
afu               394 drivers/misc/ocxl/config.c 	afu->pp_mmio_offset = EXTRACT_BITS(val, 16, 31) << 16;
afu               399 drivers/misc/ocxl/config.c 	afu->pp_mmio_offset += (u64) val << 32;
afu               404 drivers/misc/ocxl/config.c 	afu->pp_mmio_stride = val;
afu               409 drivers/misc/ocxl/config.c static int read_afu_control(struct pci_dev *dev, struct ocxl_afu_config *afu)
afu               415 drivers/misc/ocxl/config.c 	pos = find_dvsec_afu_ctrl(dev, afu->idx);
afu               418 drivers/misc/ocxl/config.c 			afu->idx);
afu               421 drivers/misc/ocxl/config.c 	afu->dvsec_afu_control_pos = pos;
afu               424 drivers/misc/ocxl/config.c 	afu->pasid_supported_log = EXTRACT_BITS(val8, 0, 4);
afu               427 drivers/misc/ocxl/config.c 	afu->actag_supported = EXTRACT_BITS(val16, 0, 11);
afu               447 drivers/misc/ocxl/config.c static int validate_afu(struct pci_dev *dev, struct ocxl_afu_config *afu)
afu               451 drivers/misc/ocxl/config.c 	if (!afu->name[0]) {
afu               456 drivers/misc/ocxl/config.c 		if (!char_allowed(afu->name[i])) {
afu               463 drivers/misc/ocxl/config.c 	if (afu->global_mmio_bar != 0 &&
afu               464 drivers/misc/ocxl/config.c 		afu->global_mmio_bar != 2 &&
afu               465 drivers/misc/ocxl/config.c 		afu->global_mmio_bar != 4) {
afu               469 drivers/misc/ocxl/config.c 	if (afu->pp_mmio_bar != 0 &&
afu               470 drivers/misc/ocxl/config.c 		afu->pp_mmio_bar != 2 &&
afu               471 drivers/misc/ocxl/config.c 		afu->pp_mmio_bar != 4) {
afu               488 drivers/misc/ocxl/config.c 				struct ocxl_afu_config *afu)
afu               497 drivers/misc/ocxl/config.c 	afu->lpc_mem_offset = 0;
afu               498 drivers/misc/ocxl/config.c 	afu->lpc_mem_size = 0;
afu               499 drivers/misc/ocxl/config.c 	afu->special_purpose_mem_offset = 0;
afu               500 drivers/misc/ocxl/config.c 	afu->special_purpose_mem_size = 0;
afu               536 drivers/misc/ocxl/config.c 	afu->lpc_mem_offset = val32;
afu               542 drivers/misc/ocxl/config.c 	afu->lpc_mem_offset |= (u64) val32 << 32;
afu               563 drivers/misc/ocxl/config.c 	afu->lpc_mem_size = lpc_mem_size;
afu               566 drivers/misc/ocxl/config.c 		afu->special_purpose_mem_offset =
afu               567 drivers/misc/ocxl/config.c 			afu->lpc_mem_offset + lpc_mem_size;
afu               568 drivers/misc/ocxl/config.c 		afu->special_purpose_mem_size =
afu               575 drivers/misc/ocxl/config.c 			struct ocxl_afu_config *afu, u8 afu_idx)
afu               585 drivers/misc/ocxl/config.c 	afu->idx = afu_idx;
afu               588 drivers/misc/ocxl/config.c 			afu->idx);
afu               590 drivers/misc/ocxl/config.c 	rc = read_afu_name(dev, fn, afu);
afu               597 drivers/misc/ocxl/config.c 	afu->version_major = EXTRACT_BITS(val32, 24, 31);
afu               598 drivers/misc/ocxl/config.c 	afu->version_minor = EXTRACT_BITS(val32, 16, 23);
afu               599 drivers/misc/ocxl/config.c 	afu->afuc_type = EXTRACT_BITS(val32, 14, 15);
afu               600 drivers/misc/ocxl/config.c 	afu->afum_type = EXTRACT_BITS(val32, 12, 13);
afu               601 drivers/misc/ocxl/config.c 	afu->profile = EXTRACT_BITS(val32, 0, 7);
afu               603 drivers/misc/ocxl/config.c 	rc = read_afu_mmio(dev, fn, afu);
afu               607 drivers/misc/ocxl/config.c 	rc = read_afu_lpc_memory_info(dev, fn, afu);
afu               611 drivers/misc/ocxl/config.c 	rc = read_afu_control(dev, afu);
afu               616 drivers/misc/ocxl/config.c 	dev_dbg(&dev->dev, "  name = %s\n", afu->name);
afu               617 drivers/misc/ocxl/config.c 	dev_dbg(&dev->dev, "  version = %d.%d\n", afu->version_major,
afu               618 drivers/misc/ocxl/config.c 		afu->version_minor);
afu               619 drivers/misc/ocxl/config.c 	dev_dbg(&dev->dev, "  global mmio bar = %hhu\n", afu->global_mmio_bar);
afu               621 drivers/misc/ocxl/config.c 		afu->global_mmio_offset);
afu               622 drivers/misc/ocxl/config.c 	dev_dbg(&dev->dev, "  global mmio size = %#x\n", afu->global_mmio_size);
afu               623 drivers/misc/ocxl/config.c 	dev_dbg(&dev->dev, "  pp mmio bar = %hhu\n", afu->pp_mmio_bar);
afu               624 drivers/misc/ocxl/config.c 	dev_dbg(&dev->dev, "  pp mmio offset = %#llx\n", afu->pp_mmio_offset);
afu               625 drivers/misc/ocxl/config.c 	dev_dbg(&dev->dev, "  pp mmio stride = %#x\n", afu->pp_mmio_stride);
afu               626 drivers/misc/ocxl/config.c 	dev_dbg(&dev->dev, "  lpc_mem offset = %#llx\n", afu->lpc_mem_offset);
afu               627 drivers/misc/ocxl/config.c 	dev_dbg(&dev->dev, "  lpc_mem size = %#llx\n", afu->lpc_mem_size);
afu               629 drivers/misc/ocxl/config.c 		afu->special_purpose_mem_offset);
afu               631 drivers/misc/ocxl/config.c 		afu->special_purpose_mem_size);
afu               633 drivers/misc/ocxl/config.c 		afu->pasid_supported_log);
afu               635 drivers/misc/ocxl/config.c 		afu->actag_supported);
afu               637 drivers/misc/ocxl/config.c 	rc = validate_afu(dev, afu);
afu                 7 drivers/misc/ocxl/context.c int ocxl_context_alloc(struct ocxl_context **context, struct ocxl_afu *afu,
afu                17 drivers/misc/ocxl/context.c 	ctx->afu = afu;
afu                18 drivers/misc/ocxl/context.c 	mutex_lock(&afu->contexts_lock);
afu                19 drivers/misc/ocxl/context.c 	pasid = idr_alloc(&afu->contexts_idr, ctx, afu->pasid_base,
afu                20 drivers/misc/ocxl/context.c 			afu->pasid_base + afu->pasid_max, GFP_KERNEL);
afu                22 drivers/misc/ocxl/context.c 		mutex_unlock(&afu->contexts_lock);
afu                26 drivers/misc/ocxl/context.c 	afu->pasid_count++;
afu                27 drivers/misc/ocxl/context.c 	mutex_unlock(&afu->contexts_lock);
afu                44 drivers/misc/ocxl/context.c 	ocxl_afu_get(afu);
afu                84 drivers/misc/ocxl/context.c 	rc = ocxl_link_add_pe(ctx->afu->fn->link, ctx->pasid, pidr, ctx->tidr,
afu               116 drivers/misc/ocxl/context.c 	if (offset >= ctx->afu->config.pp_mmio_stride)
afu               127 drivers/misc/ocxl/context.c 	pasid_off = ctx->pasid - ctx->afu->pasid_base;
afu               128 drivers/misc/ocxl/context.c 	pp_mmio_addr = ctx->afu->pp_mmio_start +
afu               129 drivers/misc/ocxl/context.c 		pasid_off * ctx->afu->config.pp_mmio_stride +
afu               148 drivers/misc/ocxl/context.c 	if (offset < ctx->afu->irq_base_offset)
afu               189 drivers/misc/ocxl/context.c 		(ctx->afu->config.pp_mmio_stride >> PAGE_SHIFT))
afu               198 drivers/misc/ocxl/context.c 	if ((vma->vm_pgoff << PAGE_SHIFT) < ctx->afu->irq_base_offset)
afu               225 drivers/misc/ocxl/context.c 	dev = to_pci_dev(ctx->afu->fn->dev.parent);
afu               226 drivers/misc/ocxl/context.c 	afu_control_pos = ctx->afu->config.dvsec_afu_control_pos;
afu               228 drivers/misc/ocxl/context.c 	mutex_lock(&ctx->afu->afu_control_lock);
afu               230 drivers/misc/ocxl/context.c 	mutex_unlock(&ctx->afu->afu_control_lock);
afu               249 drivers/misc/ocxl/context.c 	rc = ocxl_link_remove_pe(ctx->afu->fn->link, ctx->pasid);
afu               258 drivers/misc/ocxl/context.c void ocxl_context_detach_all(struct ocxl_afu *afu)
afu               263 drivers/misc/ocxl/context.c 	mutex_lock(&afu->contexts_lock);
afu               264 drivers/misc/ocxl/context.c 	idr_for_each_entry(&afu->contexts_idr, ctx, tmp) {
afu               278 drivers/misc/ocxl/context.c 	mutex_unlock(&afu->contexts_lock);
afu               283 drivers/misc/ocxl/context.c 	mutex_lock(&ctx->afu->contexts_lock);
afu               284 drivers/misc/ocxl/context.c 	ctx->afu->pasid_count--;
afu               285 drivers/misc/ocxl/context.c 	idr_remove(&ctx->afu->contexts_idr, ctx->pasid);
afu               286 drivers/misc/ocxl/context.c 	mutex_unlock(&ctx->afu->contexts_lock);
afu               291 drivers/misc/ocxl/context.c 	ocxl_afu_put(ctx->afu);
afu                18 drivers/misc/ocxl/core.c 	struct ocxl_afu *afu;
afu                20 drivers/misc/ocxl/core.c 	afu = kzalloc(sizeof(struct ocxl_afu), GFP_KERNEL);
afu                21 drivers/misc/ocxl/core.c 	if (!afu)
afu                24 drivers/misc/ocxl/core.c 	kref_init(&afu->kref);
afu                25 drivers/misc/ocxl/core.c 	mutex_init(&afu->contexts_lock);
afu                26 drivers/misc/ocxl/core.c 	mutex_init(&afu->afu_control_lock);
afu                27 drivers/misc/ocxl/core.c 	idr_init(&afu->contexts_idr);
afu                28 drivers/misc/ocxl/core.c 	afu->fn = fn;
afu                30 drivers/misc/ocxl/core.c 	return afu;
afu                35 drivers/misc/ocxl/core.c 	struct ocxl_afu *afu = container_of(kref, struct ocxl_afu, kref);
afu                37 drivers/misc/ocxl/core.c 	idr_destroy(&afu->contexts_idr);
afu                38 drivers/misc/ocxl/core.c 	ocxl_fn_put(afu->fn);
afu                39 drivers/misc/ocxl/core.c 	kfree(afu);
afu                42 drivers/misc/ocxl/core.c void ocxl_afu_get(struct ocxl_afu *afu)
afu                44 drivers/misc/ocxl/core.c 	kref_get(&afu->kref);
afu                48 drivers/misc/ocxl/core.c void ocxl_afu_put(struct ocxl_afu *afu)
afu                50 drivers/misc/ocxl/core.c 	kref_put(&afu->kref, free_afu);
afu                54 drivers/misc/ocxl/core.c static int assign_afu_actag(struct ocxl_afu *afu)
afu                56 drivers/misc/ocxl/core.c 	struct ocxl_fn *fn = afu->fn;
afu                64 drivers/misc/ocxl/core.c 	actag_count = afu->config.actag_supported *
afu                72 drivers/misc/ocxl/core.c 	afu->actag_base = fn->actag_base + actag_offset;
afu                73 drivers/misc/ocxl/core.c 	afu->actag_enabled = actag_count;
afu                75 drivers/misc/ocxl/core.c 	ocxl_config_set_afu_actag(pci_dev, afu->config.dvsec_afu_control_pos,
afu                76 drivers/misc/ocxl/core.c 				afu->actag_base, afu->actag_enabled);
afu                78 drivers/misc/ocxl/core.c 		afu->actag_base, afu->actag_enabled);
afu                82 drivers/misc/ocxl/core.c static void reclaim_afu_actag(struct ocxl_afu *afu)
afu                84 drivers/misc/ocxl/core.c 	struct ocxl_fn *fn = afu->fn;
afu                87 drivers/misc/ocxl/core.c 	start_offset = afu->actag_base - fn->actag_base;
afu                88 drivers/misc/ocxl/core.c 	size = afu->actag_enabled;
afu                89 drivers/misc/ocxl/core.c 	ocxl_actag_afu_free(afu->fn, start_offset, size);
afu                92 drivers/misc/ocxl/core.c static int assign_afu_pasid(struct ocxl_afu *afu)
afu                94 drivers/misc/ocxl/core.c 	struct ocxl_fn *fn = afu->fn;
afu               102 drivers/misc/ocxl/core.c 	pasid_count = 1 << afu->config.pasid_supported_log;
afu               109 drivers/misc/ocxl/core.c 	afu->pasid_base = fn->pasid_base + pasid_offset;
afu               110 drivers/misc/ocxl/core.c 	afu->pasid_count = 0;
afu               111 drivers/misc/ocxl/core.c 	afu->pasid_max = pasid_count;
afu               113 drivers/misc/ocxl/core.c 	ocxl_config_set_afu_pasid(pci_dev, afu->config.dvsec_afu_control_pos,
afu               114 drivers/misc/ocxl/core.c 				afu->pasid_base,
afu               115 drivers/misc/ocxl/core.c 				afu->config.pasid_supported_log);
afu               117 drivers/misc/ocxl/core.c 		afu->pasid_base, pasid_count);
afu               121 drivers/misc/ocxl/core.c static void reclaim_afu_pasid(struct ocxl_afu *afu)
afu               123 drivers/misc/ocxl/core.c 	struct ocxl_fn *fn = afu->fn;
afu               126 drivers/misc/ocxl/core.c 	start_offset = afu->pasid_base - fn->pasid_base;
afu               127 drivers/misc/ocxl/core.c 	size = 1 << afu->config.pasid_supported_log;
afu               128 drivers/misc/ocxl/core.c 	ocxl_pasid_afu_free(afu->fn, start_offset, size);
afu               162 drivers/misc/ocxl/core.c static int map_mmio_areas(struct ocxl_afu *afu)
afu               165 drivers/misc/ocxl/core.c 	struct pci_dev *pci_dev = to_pci_dev(afu->fn->dev.parent);
afu               167 drivers/misc/ocxl/core.c 	rc = reserve_fn_bar(afu->fn, afu->config.global_mmio_bar);
afu               171 drivers/misc/ocxl/core.c 	rc = reserve_fn_bar(afu->fn, afu->config.pp_mmio_bar);
afu               173 drivers/misc/ocxl/core.c 		release_fn_bar(afu->fn, afu->config.global_mmio_bar);
afu               177 drivers/misc/ocxl/core.c 	afu->global_mmio_start =
afu               178 drivers/misc/ocxl/core.c 		pci_resource_start(pci_dev, afu->config.global_mmio_bar) +
afu               179 drivers/misc/ocxl/core.c 		afu->config.global_mmio_offset;
afu               180 drivers/misc/ocxl/core.c 	afu->pp_mmio_start =
afu               181 drivers/misc/ocxl/core.c 		pci_resource_start(pci_dev, afu->config.pp_mmio_bar) +
afu               182 drivers/misc/ocxl/core.c 		afu->config.pp_mmio_offset;
afu               184 drivers/misc/ocxl/core.c 	afu->global_mmio_ptr = ioremap(afu->global_mmio_start,
afu               185 drivers/misc/ocxl/core.c 				afu->config.global_mmio_size);
afu               186 drivers/misc/ocxl/core.c 	if (!afu->global_mmio_ptr) {
afu               187 drivers/misc/ocxl/core.c 		release_fn_bar(afu->fn, afu->config.pp_mmio_bar);
afu               188 drivers/misc/ocxl/core.c 		release_fn_bar(afu->fn, afu->config.global_mmio_bar);
afu               197 drivers/misc/ocxl/core.c 	afu->irq_base_offset = afu->config.pp_mmio_stride + PAGE_SIZE;
afu               201 drivers/misc/ocxl/core.c static void unmap_mmio_areas(struct ocxl_afu *afu)
afu               203 drivers/misc/ocxl/core.c 	if (afu->global_mmio_ptr) {
afu               204 drivers/misc/ocxl/core.c 		iounmap(afu->global_mmio_ptr);
afu               205 drivers/misc/ocxl/core.c 		afu->global_mmio_ptr = NULL;
afu               207 drivers/misc/ocxl/core.c 	afu->global_mmio_start = 0;
afu               208 drivers/misc/ocxl/core.c 	afu->pp_mmio_start = 0;
afu               209 drivers/misc/ocxl/core.c 	release_fn_bar(afu->fn, afu->config.pp_mmio_bar);
afu               210 drivers/misc/ocxl/core.c 	release_fn_bar(afu->fn, afu->config.global_mmio_bar);
afu               213 drivers/misc/ocxl/core.c static int configure_afu(struct ocxl_afu *afu, u8 afu_idx, struct pci_dev *dev)
afu               217 drivers/misc/ocxl/core.c 	rc = ocxl_config_read_afu(dev, &afu->fn->config, &afu->config, afu_idx);
afu               221 drivers/misc/ocxl/core.c 	rc = assign_afu_actag(afu);
afu               225 drivers/misc/ocxl/core.c 	rc = assign_afu_pasid(afu);
afu               229 drivers/misc/ocxl/core.c 	rc = map_mmio_areas(afu);
afu               236 drivers/misc/ocxl/core.c 	reclaim_afu_pasid(afu);
afu               238 drivers/misc/ocxl/core.c 	reclaim_afu_actag(afu);
afu               242 drivers/misc/ocxl/core.c static void deconfigure_afu(struct ocxl_afu *afu)
afu               244 drivers/misc/ocxl/core.c 	unmap_mmio_areas(afu);
afu               245 drivers/misc/ocxl/core.c 	reclaim_afu_pasid(afu);
afu               246 drivers/misc/ocxl/core.c 	reclaim_afu_actag(afu);
afu               249 drivers/misc/ocxl/core.c static int activate_afu(struct pci_dev *dev, struct ocxl_afu *afu)
afu               251 drivers/misc/ocxl/core.c 	ocxl_config_set_afu_state(dev, afu->config.dvsec_afu_control_pos, 1);
afu               256 drivers/misc/ocxl/core.c static void deactivate_afu(struct ocxl_afu *afu)
afu               258 drivers/misc/ocxl/core.c 	struct pci_dev *dev = to_pci_dev(afu->fn->dev.parent);
afu               260 drivers/misc/ocxl/core.c 	ocxl_config_set_afu_state(dev, afu->config.dvsec_afu_control_pos, 0);
afu               266 drivers/misc/ocxl/core.c 	struct ocxl_afu *afu;
afu               268 drivers/misc/ocxl/core.c 	afu = alloc_afu(fn);
afu               269 drivers/misc/ocxl/core.c 	if (!afu)
afu               272 drivers/misc/ocxl/core.c 	rc = configure_afu(afu, afu_idx, dev);
afu               274 drivers/misc/ocxl/core.c 		ocxl_afu_put(afu);
afu               278 drivers/misc/ocxl/core.c 	rc = activate_afu(dev, afu);
afu               280 drivers/misc/ocxl/core.c 		deconfigure_afu(afu);
afu               281 drivers/misc/ocxl/core.c 		ocxl_afu_put(afu);
afu               285 drivers/misc/ocxl/core.c 	list_add_tail(&afu->list, &fn->afu_list);
afu               290 drivers/misc/ocxl/core.c static void remove_afu(struct ocxl_afu *afu)
afu               292 drivers/misc/ocxl/core.c 	list_del(&afu->list);
afu               293 drivers/misc/ocxl/core.c 	ocxl_context_detach_all(afu);
afu               294 drivers/misc/ocxl/core.c 	deactivate_afu(afu);
afu               295 drivers/misc/ocxl/core.c 	deconfigure_afu(afu);
afu               296 drivers/misc/ocxl/core.c 	ocxl_afu_put(afu); // matches the implicit get in alloc_afu
afu               483 drivers/misc/ocxl/core.c 	u8 afu;
afu               498 drivers/misc/ocxl/core.c 	for (afu = 0; afu <= fn->config.max_afu_index; afu++) {
afu               499 drivers/misc/ocxl/core.c 		rc = ocxl_config_check_afu_index(dev, &fn->config, afu);
afu               501 drivers/misc/ocxl/core.c 			rc = init_afu(dev, fn, afu);
afu               504 drivers/misc/ocxl/core.c 					"Can't initialize AFU index %d\n", afu);
afu               523 drivers/misc/ocxl/core.c 	struct ocxl_afu *afu;
afu               525 drivers/misc/ocxl/core.c 	list_for_each_entry(afu, &fn->afu_list, list) {
afu               526 drivers/misc/ocxl/core.c 		if (afu->config.idx == afu_idx)
afu               527 drivers/misc/ocxl/core.c 			return afu;
afu               542 drivers/misc/ocxl/core.c 	struct ocxl_afu *afu, *tmp;
afu               544 drivers/misc/ocxl/core.c 	list_for_each_entry_safe(afu, tmp, &fn->afu_list, list) {
afu               545 drivers/misc/ocxl/core.c 		remove_afu(afu);
afu               555 drivers/misc/ocxl/core.c struct ocxl_afu_config *ocxl_afu_config(struct ocxl_afu *afu)
afu               557 drivers/misc/ocxl/core.c 	return &afu->config;
afu               561 drivers/misc/ocxl/core.c void ocxl_afu_set_private(struct ocxl_afu *afu, void *private)
afu               563 drivers/misc/ocxl/core.c 	afu->private = private;
afu               567 drivers/misc/ocxl/core.c void *ocxl_afu_get_private(struct ocxl_afu *afu)
afu               569 drivers/misc/ocxl/core.c 	if (afu)
afu               570 drivers/misc/ocxl/core.c 		return afu->private;
afu                62 drivers/misc/ocxl/file.c 	rc = ocxl_context_alloc(&ctx, info->afu, inode->i_mapping);
afu               102 drivers/misc/ocxl/file.c 	arg.afu_version_major = ctx->afu->config.version_major;
afu               103 drivers/misc/ocxl/file.c 	arg.afu_version_minor = ctx->afu->config.version_minor;
afu               105 drivers/misc/ocxl/file.c 	arg.pp_mmio_size = ctx->afu->config.pp_mmio_stride;
afu               106 drivers/misc/ocxl/file.c 	arg.global_mmio_size = ctx->afu->config.global_mmio_size;
afu               140 drivers/misc/ocxl/file.c 			int rc = ocxl_link_update_pe(ctx->afu->fn->link,
afu               489 drivers/misc/ocxl/file.c 	ocxl_afu_put(info->afu);
afu               512 drivers/misc/ocxl/file.c int ocxl_file_register_afu(struct ocxl_afu *afu)
afu               517 drivers/misc/ocxl/file.c 	struct ocxl_fn *fn = afu->fn;
afu               535 drivers/misc/ocxl/file.c 	info->afu = afu;
afu               536 drivers/misc/ocxl/file.c 	ocxl_afu_get(afu);
afu               539 drivers/misc/ocxl/file.c 		afu->config.name, dev_name(&pci_dev->dev), afu->config.idx);
afu               555 drivers/misc/ocxl/file.c 	ocxl_afu_set_private(afu, info);
afu               563 drivers/misc/ocxl/file.c 	ocxl_afu_put(afu);
afu               569 drivers/misc/ocxl/file.c void ocxl_file_unregister_afu(struct ocxl_afu *afu)
afu               571 drivers/misc/ocxl/file.c 	struct ocxl_file_info *info = ocxl_afu_get_private(afu);
afu                 7 drivers/misc/ocxl/mmio.c int ocxl_global_mmio_read32(struct ocxl_afu *afu, size_t offset,
afu                10 drivers/misc/ocxl/mmio.c 	if (offset > afu->config.global_mmio_size - 4)
afu                20 drivers/misc/ocxl/mmio.c 		*val = readl_be((char *)afu->global_mmio_ptr + offset);
afu                24 drivers/misc/ocxl/mmio.c 		*val = readl((char *)afu->global_mmio_ptr + offset);
afu                32 drivers/misc/ocxl/mmio.c int ocxl_global_mmio_read64(struct ocxl_afu *afu, size_t offset,
afu                35 drivers/misc/ocxl/mmio.c 	if (offset > afu->config.global_mmio_size - 8)
afu                45 drivers/misc/ocxl/mmio.c 		*val = readq_be((char *)afu->global_mmio_ptr + offset);
afu                49 drivers/misc/ocxl/mmio.c 		*val = readq((char *)afu->global_mmio_ptr + offset);
afu                57 drivers/misc/ocxl/mmio.c int ocxl_global_mmio_write32(struct ocxl_afu *afu, size_t offset,
afu                60 drivers/misc/ocxl/mmio.c 	if (offset > afu->config.global_mmio_size - 4)
afu                70 drivers/misc/ocxl/mmio.c 		writel_be(val, (char *)afu->global_mmio_ptr + offset);
afu                74 drivers/misc/ocxl/mmio.c 		writel(val, (char *)afu->global_mmio_ptr + offset);
afu                83 drivers/misc/ocxl/mmio.c int ocxl_global_mmio_write64(struct ocxl_afu *afu, size_t offset,
afu                86 drivers/misc/ocxl/mmio.c 	if (offset > afu->config.global_mmio_size - 8)
afu                96 drivers/misc/ocxl/mmio.c 		writeq_be(val, (char *)afu->global_mmio_ptr + offset);
afu               100 drivers/misc/ocxl/mmio.c 		writeq(val, (char *)afu->global_mmio_ptr + offset);
afu               109 drivers/misc/ocxl/mmio.c int ocxl_global_mmio_set32(struct ocxl_afu *afu, size_t offset,
afu               114 drivers/misc/ocxl/mmio.c 	if (offset > afu->config.global_mmio_size - 4)
afu               124 drivers/misc/ocxl/mmio.c 		tmp = readl_be((char *)afu->global_mmio_ptr + offset);
afu               126 drivers/misc/ocxl/mmio.c 		writel_be(tmp, (char *)afu->global_mmio_ptr + offset);
afu               130 drivers/misc/ocxl/mmio.c 		tmp = readl((char *)afu->global_mmio_ptr + offset);
afu               132 drivers/misc/ocxl/mmio.c 		writel(tmp, (char *)afu->global_mmio_ptr + offset);
afu               140 drivers/misc/ocxl/mmio.c int ocxl_global_mmio_set64(struct ocxl_afu *afu, size_t offset,
afu               145 drivers/misc/ocxl/mmio.c 	if (offset > afu->config.global_mmio_size - 8)
afu               155 drivers/misc/ocxl/mmio.c 		tmp = readq_be((char *)afu->global_mmio_ptr + offset);
afu               157 drivers/misc/ocxl/mmio.c 		writeq_be(tmp, (char *)afu->global_mmio_ptr + offset);
afu               161 drivers/misc/ocxl/mmio.c 		tmp = readq((char *)afu->global_mmio_ptr + offset);
afu               163 drivers/misc/ocxl/mmio.c 		writeq(tmp, (char *)afu->global_mmio_ptr + offset);
afu               171 drivers/misc/ocxl/mmio.c int ocxl_global_mmio_clear32(struct ocxl_afu *afu, size_t offset,
afu               176 drivers/misc/ocxl/mmio.c 	if (offset > afu->config.global_mmio_size - 4)
afu               186 drivers/misc/ocxl/mmio.c 		tmp = readl_be((char *)afu->global_mmio_ptr + offset);
afu               188 drivers/misc/ocxl/mmio.c 		writel_be(tmp, (char *)afu->global_mmio_ptr + offset);
afu               192 drivers/misc/ocxl/mmio.c 		tmp = readl((char *)afu->global_mmio_ptr + offset);
afu               194 drivers/misc/ocxl/mmio.c 		writel(tmp, (char *)afu->global_mmio_ptr + offset);
afu               203 drivers/misc/ocxl/mmio.c int ocxl_global_mmio_clear64(struct ocxl_afu *afu, size_t offset,
afu               208 drivers/misc/ocxl/mmio.c 	if (offset > afu->config.global_mmio_size - 8)
afu               218 drivers/misc/ocxl/mmio.c 		tmp = readq_be((char *)afu->global_mmio_ptr + offset);
afu               220 drivers/misc/ocxl/mmio.c 		writeq_be(tmp, (char *)afu->global_mmio_ptr + offset);
afu               224 drivers/misc/ocxl/mmio.c 		tmp = readq((char *)afu->global_mmio_ptr + offset);
afu               226 drivers/misc/ocxl/mmio.c 		writeq(tmp, (char *)afu->global_mmio_ptr + offset);
afu               230 drivers/misc/ocxl/mmio.c 	writeq(tmp, (char *)afu->global_mmio_ptr + offset);
afu                31 drivers/misc/ocxl/ocxl_internal.h 	struct ocxl_afu *afu;
afu                71 drivers/misc/ocxl/ocxl_internal.h 	struct ocxl_afu *afu;
afu                97 drivers/misc/ocxl/ocxl_internal.h int ocxl_create_cdev(struct ocxl_afu *afu);
afu                98 drivers/misc/ocxl/ocxl_internal.h void ocxl_destroy_cdev(struct ocxl_afu *afu);
afu                99 drivers/misc/ocxl/ocxl_internal.h int ocxl_file_register_afu(struct ocxl_afu *afu);
afu               100 drivers/misc/ocxl/ocxl_internal.h void ocxl_file_unregister_afu(struct ocxl_afu *afu);
afu               135 drivers/misc/ocxl/ocxl_internal.h void ocxl_context_detach_all(struct ocxl_afu *afu);
afu                20 drivers/misc/ocxl/pci.c 	struct ocxl_afu *afu, *tmp;
afu                32 drivers/misc/ocxl/pci.c 	list_for_each_entry_safe(afu, tmp, afu_list, list) {
afu                34 drivers/misc/ocxl/pci.c 		rc = ocxl_file_register_afu(afu);
afu                37 drivers/misc/ocxl/pci.c 					afu->config.name, afu->config.idx);
afu                47 drivers/misc/ocxl/pci.c 	struct ocxl_afu *afu;
afu                53 drivers/misc/ocxl/pci.c 	list_for_each_entry(afu, afu_list, list) {
afu                54 drivers/misc/ocxl/pci.c 		ocxl_file_unregister_afu(afu);
afu                10 drivers/misc/ocxl/sysfs.c 	return info->afu;
afu                17 drivers/misc/ocxl/sysfs.c 	struct ocxl_afu *afu = to_afu(device);
afu                20 drivers/misc/ocxl/sysfs.c 			afu->config.global_mmio_size);
afu                27 drivers/misc/ocxl/sysfs.c 	struct ocxl_afu *afu = to_afu(device);
afu                30 drivers/misc/ocxl/sysfs.c 			afu->config.pp_mmio_stride);
afu                37 drivers/misc/ocxl/sysfs.c 	struct ocxl_afu *afu = to_afu(device);
afu                40 drivers/misc/ocxl/sysfs.c 			afu->config.version_major,
afu                41 drivers/misc/ocxl/sysfs.c 			afu->config.version_minor);
afu                48 drivers/misc/ocxl/sysfs.c 	struct ocxl_afu *afu = to_afu(device);
afu                51 drivers/misc/ocxl/sysfs.c 			afu->pasid_count, afu->pasid_max);
afu                65 drivers/misc/ocxl/sysfs.c 	struct ocxl_afu *afu = to_afu(kobj_to_dev(kobj));
afu                68 drivers/misc/ocxl/sysfs.c 		off >= afu->config.global_mmio_size)
afu                70 drivers/misc/ocxl/sysfs.c 	memcpy_fromio(buf, afu->global_mmio_ptr + off, count);
afu                77 drivers/misc/ocxl/sysfs.c 	struct ocxl_afu *afu = vma->vm_private_data;
afu                80 drivers/misc/ocxl/sysfs.c 	if (vmf->pgoff >= (afu->config.global_mmio_size >> PAGE_SHIFT))
afu                84 drivers/misc/ocxl/sysfs.c 	offset += (afu->global_mmio_start >> PAGE_SHIFT);
afu                96 drivers/misc/ocxl/sysfs.c 	struct ocxl_afu *afu = to_afu(kobj_to_dev(kobj));
afu                99 drivers/misc/ocxl/sysfs.c 		(afu->config.global_mmio_size >> PAGE_SHIFT))
afu               105 drivers/misc/ocxl/sysfs.c 	vma->vm_private_data = afu;
afu               122 drivers/misc/ocxl/sysfs.c 	info->attr_global_mmio.size = info->afu->config.global_mmio_size;
afu               113 drivers/scsi/cxlflash/common.h 	struct afu *afu;
afu               158 drivers/scsi/cxlflash/common.h 	struct afu *parent;
afu               204 drivers/scsi/cxlflash/common.h 	struct afu *afu;
afu               232 drivers/scsi/cxlflash/common.h 	int (*send_cmd)(struct afu *afu, struct afu_cmd *cmd);
afu               255 drivers/scsi/cxlflash/common.h static inline struct hwq *get_hwq(struct afu *afu, u32 index)
afu               259 drivers/scsi/cxlflash/common.h 	return &afu->hwqs[index];
afu               262 drivers/scsi/cxlflash/common.h static inline bool afu_is_irqpoll_enabled(struct afu *afu)
afu               264 drivers/scsi/cxlflash/common.h 	return !!afu->irqpoll_weight;
afu               267 drivers/scsi/cxlflash/common.h static inline bool afu_has_cap(struct afu *afu, u64 cap)
afu               269 drivers/scsi/cxlflash/common.h 	u64 afu_cap = afu->interface_version >> SISL_INTVER_CAP_SHIFT;
afu               274 drivers/scsi/cxlflash/common.h static inline bool afu_is_ocxl_lisn(struct afu *afu)
afu               276 drivers/scsi/cxlflash/common.h 	return afu_has_cap(afu, SISL_INTVER_CAP_OCXL_LISN);
afu               279 drivers/scsi/cxlflash/common.h static inline bool afu_is_afu_debug(struct afu *afu)
afu               281 drivers/scsi/cxlflash/common.h 	return afu_has_cap(afu, SISL_INTVER_CAP_AFU_DEBUG);
afu               284 drivers/scsi/cxlflash/common.h static inline bool afu_is_lun_provision(struct afu *afu)
afu               286 drivers/scsi/cxlflash/common.h 	return afu_has_cap(afu, SISL_INTVER_CAP_LUN_PROVISION);
afu               289 drivers/scsi/cxlflash/common.h static inline bool afu_is_sq_cmd_mode(struct afu *afu)
afu               291 drivers/scsi/cxlflash/common.h 	return afu_has_cap(afu, SISL_INTVER_CAP_SQ_CMD_MODE);
afu               294 drivers/scsi/cxlflash/common.h static inline bool afu_is_ioarrin_cmd_mode(struct afu *afu)
afu               296 drivers/scsi/cxlflash/common.h 	return afu_has_cap(afu, SISL_INTVER_CAP_IOARRIN_CMD_MODE);
afu               310 drivers/scsi/cxlflash/common.h 	struct afu *afu = cfg->afu;
afu               312 drivers/scsi/cxlflash/common.h 	return &afu->afu_map->global.bank[CHAN2PORTBANK(i)];
afu               329 drivers/scsi/cxlflash/common.h int cxlflash_afu_sync(struct afu *afu, ctx_hndl_t c, res_hndl_t r, u8 mode);
afu               115 drivers/scsi/cxlflash/cxl_hw.c static void cxlflash_destroy_afu(void *afu)
afu                44 drivers/scsi/cxlflash/main.c 	struct afu *afu = cmd->parent;
afu                45 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = afu->parent;
afu               161 drivers/scsi/cxlflash/main.c 	struct afu *afu = cmd->parent;
afu               162 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = afu->parent;
afu               164 drivers/scsi/cxlflash/main.c 	struct hwq *hwq = get_hwq(afu, cmd->hwq_index);
afu               198 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = hwq->afu->parent;
afu               242 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = hwq->afu->parent;
afu               305 drivers/scsi/cxlflash/main.c static int send_cmd_ioarrin(struct afu *afu, struct afu_cmd *cmd)
afu               307 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = afu->parent;
afu               309 drivers/scsi/cxlflash/main.c 	struct hwq *hwq = get_hwq(afu, cmd->hwq_index);
afu               349 drivers/scsi/cxlflash/main.c static int send_cmd_sq(struct afu *afu, struct afu_cmd *cmd)
afu               351 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = afu->parent;
afu               353 drivers/scsi/cxlflash/main.c 	struct hwq *hwq = get_hwq(afu, cmd->hwq_index);
afu               394 drivers/scsi/cxlflash/main.c static int wait_resp(struct afu *afu, struct afu_cmd *cmd)
afu               396 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = afu->parent;
afu               428 drivers/scsi/cxlflash/main.c 			     struct afu *afu)
afu               433 drivers/scsi/cxlflash/main.c 	if (afu->num_hwqs == 1)
afu               436 drivers/scsi/cxlflash/main.c 	switch (afu->hwq_mode) {
afu               438 drivers/scsi/cxlflash/main.c 		hwq = afu->hwq_rr_count++ % afu->num_hwqs;
afu               445 drivers/scsi/cxlflash/main.c 		hwq = smp_processor_id() % afu->num_hwqs;
afu               466 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu               469 drivers/scsi/cxlflash/main.c 	struct hwq *hwq = get_hwq(afu, PRIMARY_HWQ);
afu               495 drivers/scsi/cxlflash/main.c 	cmd->parent = afu;
afu               508 drivers/scsi/cxlflash/main.c 	rc = afu->send_cmd(afu, cmd);
afu               568 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu               572 drivers/scsi/cxlflash/main.c 	int hwq_index = cmd_to_target_hwq(host, scp, afu);
afu               573 drivers/scsi/cxlflash/main.c 	struct hwq *hwq = get_hwq(afu, hwq_index);
afu               613 drivers/scsi/cxlflash/main.c 		atomic_inc(&afu->cmds_active);
afu               623 drivers/scsi/cxlflash/main.c 	cmd->parent = afu;
afu               638 drivers/scsi/cxlflash/main.c 	rc = afu->send_cmd(afu, cmd);
afu               639 drivers/scsi/cxlflash/main.c 	atomic_dec(&afu->cmds_active);
afu               664 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu               666 drivers/scsi/cxlflash/main.c 	if (cfg->afu) {
afu               667 drivers/scsi/cxlflash/main.c 		free_pages((ulong)afu, get_order(sizeof(struct afu)));
afu               668 drivers/scsi/cxlflash/main.c 		cfg->afu = NULL;
afu               697 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu               705 drivers/scsi/cxlflash/main.c 	if (likely(afu)) {
afu               706 drivers/scsi/cxlflash/main.c 		while (atomic_read(&afu->cmds_active))
afu               709 drivers/scsi/cxlflash/main.c 		if (afu_is_irqpoll_enabled(afu)) {
afu               710 drivers/scsi/cxlflash/main.c 			for (i = 0; i < afu->num_hwqs; i++) {
afu               711 drivers/scsi/cxlflash/main.c 				hwq = get_hwq(afu, i);
afu               717 drivers/scsi/cxlflash/main.c 		if (likely(afu->afu_map)) {
afu               718 drivers/scsi/cxlflash/main.c 			cfg->ops->psa_unmap(afu->afu_map);
afu               719 drivers/scsi/cxlflash/main.c 			afu->afu_map = NULL;
afu               735 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu               739 drivers/scsi/cxlflash/main.c 	if (!afu) {
afu               744 drivers/scsi/cxlflash/main.c 	hwq = get_hwq(afu, index);
afu               781 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu               786 drivers/scsi/cxlflash/main.c 	if (!afu) {
afu               791 drivers/scsi/cxlflash/main.c 	hwq = get_hwq(afu, index);
afu               832 drivers/scsi/cxlflash/main.c 	for (k = cfg->afu->num_hwqs - 1; k >= 0; k--)
afu               837 drivers/scsi/cxlflash/main.c 	for (k = cfg->afu->num_hwqs - 1; k >= 0; k--)
afu               855 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu               866 drivers/scsi/cxlflash/main.c 	if (!afu || !afu->afu_map) {
afu              1016 drivers/scsi/cxlflash/main.c 	cfg->afu = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO,
afu              1017 drivers/scsi/cxlflash/main.c 					    get_order(sizeof(struct afu)));
afu              1018 drivers/scsi/cxlflash/main.c 	if (unlikely(!cfg->afu)) {
afu              1020 drivers/scsi/cxlflash/main.c 			__func__, get_order(sizeof(struct afu)));
afu              1024 drivers/scsi/cxlflash/main.c 	cfg->afu->parent = cfg;
afu              1025 drivers/scsi/cxlflash/main.c 	cfg->afu->desired_hwqs = CXLFLASH_DEF_HWQS;
afu              1026 drivers/scsi/cxlflash/main.c 	cfg->afu->afu_map = NULL;
afu              1193 drivers/scsi/cxlflash/main.c static void afu_set_wwpn(struct afu *afu, int port, __be64 __iomem *fc_regs,
afu              1196 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = afu->parent;
afu              1229 drivers/scsi/cxlflash/main.c static void afu_link_reset(struct afu *afu, int port, __be64 __iomem *fc_regs)
afu              1231 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = afu->parent;
afu              1236 drivers/scsi/cxlflash/main.c 	port_sel = readq_be(&afu->afu_map->global.regs.afu_port_sel);
afu              1238 drivers/scsi/cxlflash/main.c 	writeq_be(port_sel, &afu->afu_map->global.regs.afu_port_sel);
afu              1239 drivers/scsi/cxlflash/main.c 	cxlflash_afu_sync(afu, 0, 0, AFU_GSYNC);
afu              1255 drivers/scsi/cxlflash/main.c 	writeq_be(port_sel, &afu->afu_map->global.regs.afu_port_sel);
afu              1256 drivers/scsi/cxlflash/main.c 	cxlflash_afu_sync(afu, 0, 0, AFU_GSYNC);
afu              1265 drivers/scsi/cxlflash/main.c static void afu_err_intr_init(struct afu *afu)
afu              1267 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = afu->parent;
afu              1270 drivers/scsi/cxlflash/main.c 	struct hwq *hwq = get_hwq(afu, PRIMARY_HWQ);
afu              1281 drivers/scsi/cxlflash/main.c 	writeq_be(-1ULL, &afu->afu_map->global.regs.aintr_mask);
afu              1285 drivers/scsi/cxlflash/main.c 	if (afu->internal_lun)
afu              1287 drivers/scsi/cxlflash/main.c 	writeq_be(reg, &afu->afu_map->global.regs.afu_ctrl);
afu              1289 drivers/scsi/cxlflash/main.c 	writeq_be(-1ULL, &afu->afu_map->global.regs.aintr_clear);
afu              1292 drivers/scsi/cxlflash/main.c 	writeq_be(SISL_ASTATUS_MASK, &afu->afu_map->global.regs.aintr_mask);
afu              1295 drivers/scsi/cxlflash/main.c 	writeq_be(-1ULL, &afu->afu_map->global.regs.aintr_clear);
afu              1301 drivers/scsi/cxlflash/main.c 	if (afu->internal_lun)
afu              1302 drivers/scsi/cxlflash/main.c 		reg |= ((u64)(afu->internal_lun - 1) << SISL_FC_INTERNAL_SHIFT);
afu              1319 drivers/scsi/cxlflash/main.c 	for (i = 0; i < afu->num_hwqs; i++) {
afu              1320 drivers/scsi/cxlflash/main.c 		hwq = get_hwq(afu, i);
afu              1340 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = hwq->afu->parent;
afu              1375 drivers/scsi/cxlflash/main.c 	struct afu *afu = hwq->afu;
afu              1395 drivers/scsi/cxlflash/main.c 		if (afu_is_sq_cmd_mode(afu)) {
afu              1478 drivers/scsi/cxlflash/main.c 	struct afu *afu = hwq->afu;
afu              1491 drivers/scsi/cxlflash/main.c 	if (afu_is_irqpoll_enabled(afu)) {
afu              1546 drivers/scsi/cxlflash/main.c 	struct afu *afu = hwq->afu;
afu              1547 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = afu->parent;
afu              1550 drivers/scsi/cxlflash/main.c 	struct sisl_global_map __iomem *global = &afu->afu_map->global;
afu              1737 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              1744 drivers/scsi/cxlflash/main.c 		ctrl_map = &afu->afu_map->ctrls[i].ctrl;
afu              1753 drivers/scsi/cxlflash/main.c 	for (i = 0; i < afu->num_hwqs; i++) {
afu              1754 drivers/scsi/cxlflash/main.c 		hwq = get_hwq(afu, i);
afu              1758 drivers/scsi/cxlflash/main.c 		hwq->host_map = &afu->afu_map->hosts[hwq->ctx_hndl].host;
afu              1759 drivers/scsi/cxlflash/main.c 		hwq->ctrl_map = &afu->afu_map->ctrls[hwq->ctx_hndl].ctrl;
afu              1772 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              1791 drivers/scsi/cxlflash/main.c 	for (i = 0; i < afu->num_hwqs; i++) {
afu              1792 drivers/scsi/cxlflash/main.c 		hwq = get_hwq(afu, i);
afu              1799 drivers/scsi/cxlflash/main.c 		if (afu_is_sq_cmd_mode(afu)) {
afu              1806 drivers/scsi/cxlflash/main.c 	reg = readq_be(&afu->afu_map->global.regs.afu_config);
afu              1812 drivers/scsi/cxlflash/main.c 	writeq_be(reg, &afu->afu_map->global.regs.afu_config);
afu              1815 drivers/scsi/cxlflash/main.c 	if (afu->internal_lun) {
afu              1817 drivers/scsi/cxlflash/main.c 		writeq_be(PORT0, &afu->afu_map->global.regs.afu_port_sel);
afu              1821 drivers/scsi/cxlflash/main.c 			  &afu->afu_map->global.regs.afu_port_sel);
afu              1836 drivers/scsi/cxlflash/main.c 			afu_set_wwpn(afu, i, &fc_port_regs[0], wwpn[i]);
afu              1843 drivers/scsi/cxlflash/main.c 	if (afu_is_ocxl_lisn(afu)) {
afu              1845 drivers/scsi/cxlflash/main.c 		for (i = 0; i < afu->num_hwqs; i++) {
afu              1846 drivers/scsi/cxlflash/main.c 			hwq = get_hwq(afu, i);
afu              1865 drivers/scsi/cxlflash/main.c 	for (i = 0; i < afu->num_hwqs; i++) {
afu              1866 drivers/scsi/cxlflash/main.c 		hwq = get_hwq(afu, i);
afu              1881 drivers/scsi/cxlflash/main.c 	hwq = get_hwq(afu, PRIMARY_HWQ);
afu              1887 drivers/scsi/cxlflash/main.c 	afu->hb = readq_be(&afu->afu_map->global.regs.afu_hb);
afu              1898 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              1907 drivers/scsi/cxlflash/main.c 	for (i = 0; i < afu->num_hwqs; i++) {
afu              1908 drivers/scsi/cxlflash/main.c 		hwq = get_hwq(afu, i);
afu              1924 drivers/scsi/cxlflash/main.c 		if (afu_is_sq_cmd_mode(afu)) {
afu              1934 drivers/scsi/cxlflash/main.c 		if (afu_is_irqpoll_enabled(afu))
afu              1935 drivers/scsi/cxlflash/main.c 			irq_poll_init(&hwq->irqpoll, afu->irqpoll_weight,
afu              2013 drivers/scsi/cxlflash/main.c 	struct hwq *hwq = get_hwq(cfg->afu, index);
afu              2018 drivers/scsi/cxlflash/main.c 	hwq->afu = cfg->afu;
afu              2094 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              2099 drivers/scsi/cxlflash/main.c 	port_mask = readq_be(&afu->afu_map->global.regs.afu_port_sel);
afu              2123 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              2130 drivers/scsi/cxlflash/main.c 	mutex_init(&afu->sync_active);
afu              2131 drivers/scsi/cxlflash/main.c 	afu->num_hwqs = afu->desired_hwqs;
afu              2132 drivers/scsi/cxlflash/main.c 	for (i = 0; i < afu->num_hwqs; i++) {
afu              2142 drivers/scsi/cxlflash/main.c 	hwq = get_hwq(afu, PRIMARY_HWQ);
afu              2143 drivers/scsi/cxlflash/main.c 	afu->afu_map = cfg->ops->psa_map(hwq->ctx_cookie);
afu              2144 drivers/scsi/cxlflash/main.c 	if (!afu->afu_map) {
afu              2151 drivers/scsi/cxlflash/main.c 	reg = readq(&afu->afu_map->global.regs.afu_version);
afu              2152 drivers/scsi/cxlflash/main.c 	memcpy(afu->version, &reg, sizeof(reg));
afu              2153 drivers/scsi/cxlflash/main.c 	afu->interface_version =
afu              2154 drivers/scsi/cxlflash/main.c 	    readq_be(&afu->afu_map->global.regs.interface_version);
afu              2155 drivers/scsi/cxlflash/main.c 	if ((afu->interface_version + 1) == 0) {
afu              2157 drivers/scsi/cxlflash/main.c 			"interface version %016llx\n", afu->version,
afu              2158 drivers/scsi/cxlflash/main.c 		       afu->interface_version);
afu              2163 drivers/scsi/cxlflash/main.c 	if (afu_is_sq_cmd_mode(afu)) {
afu              2164 drivers/scsi/cxlflash/main.c 		afu->send_cmd = send_cmd_sq;
afu              2165 drivers/scsi/cxlflash/main.c 		afu->context_reset = context_reset_sq;
afu              2167 drivers/scsi/cxlflash/main.c 		afu->send_cmd = send_cmd_ioarrin;
afu              2168 drivers/scsi/cxlflash/main.c 		afu->context_reset = context_reset_ioarrin;
afu              2172 drivers/scsi/cxlflash/main.c 		afu->version, afu->interface_version);
afu              2182 drivers/scsi/cxlflash/main.c 	afu_err_intr_init(cfg->afu);
afu              2183 drivers/scsi/cxlflash/main.c 	for (i = 0; i < afu->num_hwqs; i++) {
afu              2184 drivers/scsi/cxlflash/main.c 		hwq = get_hwq(afu, i);
afu              2196 drivers/scsi/cxlflash/main.c 	for (i = afu->num_hwqs - 1; i >= 0; i--) {
afu              2304 drivers/scsi/cxlflash/main.c static int send_afu_cmd(struct afu *afu, struct sisl_ioarcb *rcb)
afu              2306 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = afu->parent;
afu              2309 drivers/scsi/cxlflash/main.c 	struct hwq *hwq = get_hwq(afu, PRIMARY_HWQ);
afu              2321 drivers/scsi/cxlflash/main.c 	mutex_lock(&afu->sync_active);
afu              2322 drivers/scsi/cxlflash/main.c 	atomic_inc(&afu->cmds_active);
afu              2337 drivers/scsi/cxlflash/main.c 	cmd->parent = afu;
afu              2342 drivers/scsi/cxlflash/main.c 		__func__, afu, cmd, cmd->rcb.cdb[0], nretry);
afu              2344 drivers/scsi/cxlflash/main.c 	rc = afu->send_cmd(afu, cmd);
afu              2350 drivers/scsi/cxlflash/main.c 	rc = wait_resp(afu, cmd);
afu              2353 drivers/scsi/cxlflash/main.c 		rc = afu->context_reset(hwq);
afu              2375 drivers/scsi/cxlflash/main.c 	atomic_dec(&afu->cmds_active);
afu              2376 drivers/scsi/cxlflash/main.c 	mutex_unlock(&afu->sync_active);
afu              2398 drivers/scsi/cxlflash/main.c int cxlflash_afu_sync(struct afu *afu, ctx_hndl_t ctx, res_hndl_t res, u8 mode)
afu              2400 drivers/scsi/cxlflash/main.c 	struct cxlflash_cfg *cfg = afu->parent;
afu              2405 drivers/scsi/cxlflash/main.c 		__func__, afu, ctx, res, mode);
afu              2416 drivers/scsi/cxlflash/main.c 	return send_afu_cmd(afu, &rcb);
afu              2436 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              2437 drivers/scsi/cxlflash/main.c 	struct hwq *hwq = get_hwq(afu, cmd->hwq_index);
afu              2456 drivers/scsi/cxlflash/main.c 	rc = afu->context_reset(hwq);
afu              2694 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              2696 drivers/scsi/cxlflash/main.c 	return scnprintf(buf, PAGE_SIZE, "%u\n", afu->internal_lun);
afu              2727 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              2732 drivers/scsi/cxlflash/main.c 	if (!rc && (lun_mode < 5) && (lun_mode != afu->internal_lun)) {
afu              2733 drivers/scsi/cxlflash/main.c 		afu->internal_lun = lun_mode;
afu              2740 drivers/scsi/cxlflash/main.c 		if (afu->internal_lun)
afu              2890 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              2892 drivers/scsi/cxlflash/main.c 	return scnprintf(buf, PAGE_SIZE, "%u\n", afu->irqpoll_weight);
afu              2913 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              2928 drivers/scsi/cxlflash/main.c 	if (weight == afu->irqpoll_weight) {
afu              2934 drivers/scsi/cxlflash/main.c 	if (afu_is_irqpoll_enabled(afu)) {
afu              2935 drivers/scsi/cxlflash/main.c 		for (i = 0; i < afu->num_hwqs; i++) {
afu              2936 drivers/scsi/cxlflash/main.c 			hwq = get_hwq(afu, i);
afu              2942 drivers/scsi/cxlflash/main.c 	afu->irqpoll_weight = weight;
afu              2945 drivers/scsi/cxlflash/main.c 		for (i = 0; i < afu->num_hwqs; i++) {
afu              2946 drivers/scsi/cxlflash/main.c 			hwq = get_hwq(afu, i);
afu              2968 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              2970 drivers/scsi/cxlflash/main.c 	return scnprintf(buf, PAGE_SIZE, "%u\n", afu->num_hwqs);
afu              2992 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              3007 drivers/scsi/cxlflash/main.c 	afu->desired_hwqs = min(num_hwqs, CXLFLASH_MAX_HWQS);
afu              3008 drivers/scsi/cxlflash/main.c 	WARN_ON_ONCE(afu->desired_hwqs == 0);
afu              3053 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              3055 drivers/scsi/cxlflash/main.c 	return scnprintf(buf, PAGE_SIZE, "%s\n", hwq_mode_name[afu->hwq_mode]);
afu              3079 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              3095 drivers/scsi/cxlflash/main.c 	afu->hwq_mode = mode;
afu              3224 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              3248 drivers/scsi/cxlflash/main.c 			afu_link_reset(afu, port, fc_port_regs);
afu              3309 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              3322 drivers/scsi/cxlflash/main.c 	if (!afu_is_lun_provision(afu)) {
afu              3374 drivers/scsi/cxlflash/main.c 	rc = send_afu_cmd(afu, &rcb);
afu              3403 drivers/scsi/cxlflash/main.c 	struct afu *afu = cfg->afu;
afu              3415 drivers/scsi/cxlflash/main.c 	if (!afu_is_afu_debug(afu)) {
afu              3463 drivers/scsi/cxlflash/main.c 	rc = send_afu_cmd(afu, &rcb);
afu               180 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_hw_afu *afu = ctx->hw_afu;
afu               181 drivers/scsi/cxlflash/ocxl_hw.c 	struct device *dev = afu->dev;
afu               252 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_hw_afu *afu = ctx->hw_afu;
afu               253 drivers/scsi/cxlflash/ocxl_hw.c 	struct device *dev = afu->dev;
afu               330 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_hw_afu *afu = ctx->hw_afu;
afu               331 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_afu_config *acfg = &afu->acfg;
afu               332 drivers/scsi/cxlflash/ocxl_hw.c 	void *link_token = afu->link_token;
afu               333 drivers/scsi/cxlflash/ocxl_hw.c 	struct device *dev = afu->dev;
afu               349 drivers/scsi/cxlflash/ocxl_hw.c 		ctx->psn_phys = afu->gmmio_phys;
afu               352 drivers/scsi/cxlflash/ocxl_hw.c 		ctx->psn_phys = afu->ppmmio_phys + (ctx->pe * ctx->psn_size);
afu               400 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_hw_afu *afu = ctx->hw_afu;
afu               401 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_afu_config *acfg = &afu->acfg;
afu               402 drivers/scsi/cxlflash/ocxl_hw.c 	struct pci_dev *pdev = afu->pdev;
afu               403 drivers/scsi/cxlflash/ocxl_hw.c 	struct device *dev = afu->dev;
afu               424 drivers/scsi/cxlflash/ocxl_hw.c 	rc = ocxl_link_remove_pe(afu->link_token, ctx->pe);
afu               470 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_hw_afu *afu = afu_cookie;
afu               472 drivers/scsi/cxlflash/ocxl_hw.c 	return afu->ocxl_ctx;
afu               484 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_hw_afu *afu = afu_cookie;
afu               485 drivers/scsi/cxlflash/ocxl_hw.c 	struct device *dev = afu->dev;
afu               497 drivers/scsi/cxlflash/ocxl_hw.c 	rc = idr_alloc(&afu->idr, ctx, 0, afu->max_pasid, GFP_NOWAIT);
afu               512 drivers/scsi/cxlflash/ocxl_hw.c 	ctx->hw_afu = afu;
afu               565 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_hw_afu *afu = afu_cookie;
afu               567 drivers/scsi/cxlflash/ocxl_hw.c 	afu->perst_same_image = image;
afu               590 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_hw_afu *afu = ctx->hw_afu;
afu               591 drivers/scsi/cxlflash/ocxl_hw.c 	struct device *dev = afu->dev;
afu               600 drivers/scsi/cxlflash/ocxl_hw.c 		ocxl_link_free_irq(afu->link_token, ctx->irqs[i].hwirq);
afu               615 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_hw_afu *afu = ctx->hw_afu;
afu               616 drivers/scsi/cxlflash/ocxl_hw.c 	struct device *dev = afu->dev;
afu               643 drivers/scsi/cxlflash/ocxl_hw.c 		rc = ocxl_link_irq_alloc(afu->link_token, &hwirq, &addr);
afu               660 drivers/scsi/cxlflash/ocxl_hw.c 		ocxl_link_free_irq(afu->link_token, irqs[i].hwirq);
afu               690 drivers/scsi/cxlflash/ocxl_hw.c static void ocxlflash_unconfig_afu(struct ocxl_hw_afu *afu)
afu               692 drivers/scsi/cxlflash/ocxl_hw.c 	if (afu->gmmio_virt) {
afu               693 drivers/scsi/cxlflash/ocxl_hw.c 		iounmap(afu->gmmio_virt);
afu               694 drivers/scsi/cxlflash/ocxl_hw.c 		afu->gmmio_virt = NULL;
afu               704 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_hw_afu *afu = afu_cookie;
afu               707 drivers/scsi/cxlflash/ocxl_hw.c 	if (!afu)
afu               710 drivers/scsi/cxlflash/ocxl_hw.c 	ocxlflash_release_context(afu->ocxl_ctx);
afu               711 drivers/scsi/cxlflash/ocxl_hw.c 	idr_destroy(&afu->idr);
afu               714 drivers/scsi/cxlflash/ocxl_hw.c 	pos = afu->acfg.dvsec_afu_control_pos;
afu               715 drivers/scsi/cxlflash/ocxl_hw.c 	ocxl_config_set_afu_state(afu->pdev, pos, 0);
afu               717 drivers/scsi/cxlflash/ocxl_hw.c 	ocxlflash_unconfig_afu(afu);
afu               718 drivers/scsi/cxlflash/ocxl_hw.c 	kfree(afu);
afu               728 drivers/scsi/cxlflash/ocxl_hw.c static int ocxlflash_config_fn(struct pci_dev *pdev, struct ocxl_hw_afu *afu)
afu               730 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_fn_config *fcfg = &afu->fcfg;
afu               745 drivers/scsi/cxlflash/ocxl_hw.c 		afu->is_present = true;
afu               758 drivers/scsi/cxlflash/ocxl_hw.c 	afu->fn_actag_base = base;
afu               759 drivers/scsi/cxlflash/ocxl_hw.c 	afu->fn_actag_enabled = enabled;
afu               765 drivers/scsi/cxlflash/ocxl_hw.c 	rc = ocxl_link_setup(pdev, 0, &afu->link_token);
afu               781 drivers/scsi/cxlflash/ocxl_hw.c 	ocxl_link_release(pdev, afu->link_token);
afu               790 drivers/scsi/cxlflash/ocxl_hw.c static void ocxlflash_unconfig_fn(struct pci_dev *pdev, struct ocxl_hw_afu *afu)
afu               792 drivers/scsi/cxlflash/ocxl_hw.c 	ocxl_link_release(pdev, afu->link_token);
afu               801 drivers/scsi/cxlflash/ocxl_hw.c static int ocxlflash_map_mmio(struct ocxl_hw_afu *afu)
afu               803 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_afu_config *acfg = &afu->acfg;
afu               804 drivers/scsi/cxlflash/ocxl_hw.c 	struct pci_dev *pdev = afu->pdev;
afu               805 drivers/scsi/cxlflash/ocxl_hw.c 	struct device *dev = afu->dev;
afu               827 drivers/scsi/cxlflash/ocxl_hw.c 	afu->gmmio_virt = ioremap(gmmio, acfg->global_mmio_size);
afu               828 drivers/scsi/cxlflash/ocxl_hw.c 	if (unlikely(!afu->gmmio_virt)) {
afu               834 drivers/scsi/cxlflash/ocxl_hw.c 	afu->gmmio_phys = gmmio;
afu               835 drivers/scsi/cxlflash/ocxl_hw.c 	afu->ppmmio_phys = ppmmio;
afu               854 drivers/scsi/cxlflash/ocxl_hw.c static int ocxlflash_config_afu(struct pci_dev *pdev, struct ocxl_hw_afu *afu)
afu               856 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_afu_config *acfg = &afu->acfg;
afu               857 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_fn_config *fcfg = &afu->fcfg;
afu               865 drivers/scsi/cxlflash/ocxl_hw.c 	if (!afu->is_present)
afu               877 drivers/scsi/cxlflash/ocxl_hw.c 	base = afu->fn_actag_base;
afu               878 drivers/scsi/cxlflash/ocxl_hw.c 	count = min_t(int, acfg->actag_supported, afu->fn_actag_enabled);
afu               883 drivers/scsi/cxlflash/ocxl_hw.c 	afu->afu_actag_base = base;
afu               884 drivers/scsi/cxlflash/ocxl_hw.c 	afu->afu_actag_enabled = count;
afu               885 drivers/scsi/cxlflash/ocxl_hw.c 	afu->max_pasid = 1 << acfg->pasid_supported_log;
afu               889 drivers/scsi/cxlflash/ocxl_hw.c 	rc = ocxlflash_map_mmio(afu);
afu               912 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_hw_afu *afu;
afu               915 drivers/scsi/cxlflash/ocxl_hw.c 	afu = kzalloc(sizeof(*afu), GFP_KERNEL);
afu               916 drivers/scsi/cxlflash/ocxl_hw.c 	if (unlikely(!afu)) {
afu               921 drivers/scsi/cxlflash/ocxl_hw.c 	afu->pdev = pdev;
afu               922 drivers/scsi/cxlflash/ocxl_hw.c 	afu->dev = dev;
afu               923 drivers/scsi/cxlflash/ocxl_hw.c 	idr_init(&afu->idr);
afu               925 drivers/scsi/cxlflash/ocxl_hw.c 	rc = ocxlflash_config_fn(pdev, afu);
afu               932 drivers/scsi/cxlflash/ocxl_hw.c 	rc = ocxlflash_config_afu(pdev, afu);
afu               939 drivers/scsi/cxlflash/ocxl_hw.c 	ctx = ocxlflash_dev_context_init(pdev, afu);
afu               947 drivers/scsi/cxlflash/ocxl_hw.c 	afu->ocxl_ctx = ctx;
afu               949 drivers/scsi/cxlflash/ocxl_hw.c 	return afu;
afu               951 drivers/scsi/cxlflash/ocxl_hw.c 	ocxlflash_unconfig_afu(afu);
afu               953 drivers/scsi/cxlflash/ocxl_hw.c 	ocxlflash_unconfig_fn(pdev, afu);
afu               955 drivers/scsi/cxlflash/ocxl_hw.c 	idr_destroy(&afu->idr);
afu               956 drivers/scsi/cxlflash/ocxl_hw.c 	kfree(afu);
afu               957 drivers/scsi/cxlflash/ocxl_hw.c 	afu = NULL;
afu              1310 drivers/scsi/cxlflash/ocxl_hw.c 	struct ocxl_hw_afu *afu = ctx->hw_afu;
afu              1311 drivers/scsi/cxlflash/ocxl_hw.c 	struct device *dev = afu->dev;
afu               264 drivers/scsi/cxlflash/superpipe.c 	struct afu *afu = cfg->afu;
afu               267 drivers/scsi/cxlflash/superpipe.c 	struct hwq *hwq = get_hwq(afu, PRIMARY_HWQ);
afu               283 drivers/scsi/cxlflash/superpipe.c 	if (afu_is_ocxl_lisn(afu)) {
afu               638 drivers/scsi/cxlflash/superpipe.c 	struct afu *afu = cfg->afu;
afu               711 drivers/scsi/cxlflash/superpipe.c 			rcr = cxlflash_afu_sync(afu, ctxid, rhndl, AFU_HW_SYNC);
afu               754 drivers/scsi/cxlflash/superpipe.c 	struct afu *afu = cfg->afu;
afu               760 drivers/scsi/cxlflash/superpipe.c 		if (afu->afu_map && ctxi->ctrl_map) {
afu               830 drivers/scsi/cxlflash/superpipe.c 	struct afu *afu = cfg->afu;
afu               833 drivers/scsi/cxlflash/superpipe.c 	ctxi->ctrl_map = &afu->afu_map->ctrls[ctxid].ctrl;
afu              1322 drivers/scsi/cxlflash/superpipe.c 	struct afu *afu = cfg->afu;
afu              1469 drivers/scsi/cxlflash/superpipe.c 	if (afu_is_sq_cmd_mode(afu))
afu              1475 drivers/scsi/cxlflash/superpipe.c 	attach->mmio_size = sizeof(afu->afu_map->hosts[0].harea);
afu              1544 drivers/scsi/cxlflash/superpipe.c 	struct afu *afu = cfg->afu;
afu              1576 drivers/scsi/cxlflash/superpipe.c 	ctxi->ctrl_map = &afu->afu_map->ctrls[ctxid].ctrl;
afu              1657 drivers/scsi/cxlflash/superpipe.c 	struct afu *afu = cfg->afu;
afu              1660 drivers/scsi/cxlflash/superpipe.c 	struct hwq *hwq = get_hwq(afu, PRIMARY_HWQ);
afu              1726 drivers/scsi/cxlflash/superpipe.c 		if (afu_is_sq_cmd_mode(afu))
afu              1732 drivers/scsi/cxlflash/superpipe.c 		recover->mmio_size = sizeof(afu->afu_map->hosts[0].harea);
afu              1966 drivers/scsi/cxlflash/superpipe.c 	struct afu *afu = cfg->afu;
afu              2017 drivers/scsi/cxlflash/superpipe.c 	rc = cxlflash_afu_sync(afu, ctxid, rsrc_handle, AFU_LW_SYNC);
afu              2101 drivers/scsi/cxlflash/superpipe.c 	struct afu *afu = cfg->afu;
afu              2131 drivers/scsi/cxlflash/superpipe.c 	if (afu->internal_lun)
afu              2138 drivers/scsi/cxlflash/superpipe.c 				__func__, decode_ioctl(cmd), afu->internal_lun);
afu               500 drivers/scsi/cxlflash/vlun.c static int grow_lxt(struct afu *afu,
afu               594 drivers/scsi/cxlflash/vlun.c 	rc = cxlflash_afu_sync(afu, ctxid, rhndl, AFU_LW_SYNC);
afu               618 drivers/scsi/cxlflash/vlun.c static int shrink_lxt(struct afu *afu,
afu               676 drivers/scsi/cxlflash/vlun.c 		rc = cxlflash_afu_sync(afu, ctxid, rhndl, AFU_HW_SYNC);
afu               737 drivers/scsi/cxlflash/vlun.c 	struct afu *afu = cfg->afu;
afu               790 drivers/scsi/cxlflash/vlun.c 		rc = grow_lxt(afu, sdev, ctxid, rhndl, rhte, &new_size);
afu               792 drivers/scsi/cxlflash/vlun.c 		rc = shrink_lxt(afu, sdev, rhndl, rhte, ctxi, &new_size);
afu               802 drivers/scsi/cxlflash/vlun.c 		rc = cxlflash_afu_sync(afu, ctxid, rhndl, AFU_HW_SYNC);
afu              1091 drivers/scsi/cxlflash/vlun.c static int clone_lxt(struct afu *afu,
afu              1098 drivers/scsi/cxlflash/vlun.c 	struct cxlflash_cfg *cfg = afu->parent;
afu              1151 drivers/scsi/cxlflash/vlun.c 	rc = cxlflash_afu_sync(afu, ctxid, rhndl, AFU_LW_SYNC);
afu              1198 drivers/scsi/cxlflash/vlun.c 	struct afu *afu = cfg->afu;
afu              1302 drivers/scsi/cxlflash/vlun.c 		rc = clone_lxt(afu, blka, ctxid_dst, i,
afu                35 include/misc/cxl-base.h struct cxl_afu *cxl_afu_get(struct cxl_afu *afu);
afu                36 include/misc/cxl-base.h void cxl_afu_put(struct cxl_afu *afu);
afu                42 include/misc/cxl-base.h static inline struct cxl_afu *cxl_afu_get(struct cxl_afu *afu) { return NULL; }
afu                43 include/misc/cxl-base.h static inline void cxl_afu_put(struct cxl_afu *afu) {}
afu               209 include/misc/cxl.h void cxl_perst_reloads_same_image(struct cxl_afu *afu,
afu                99 include/misc/ocxl.h void ocxl_afu_get(struct ocxl_afu *afu);
afu               106 include/misc/ocxl.h void ocxl_afu_put(struct ocxl_afu *afu);
afu               138 include/misc/ocxl.h int ocxl_context_alloc(struct ocxl_context **context, struct ocxl_afu *afu,
afu               222 include/misc/ocxl.h struct ocxl_afu_config *ocxl_afu_config(struct ocxl_afu *afu);
afu               230 include/misc/ocxl.h void ocxl_afu_set_private(struct ocxl_afu *afu, void *private);
afu               253 include/misc/ocxl.h int ocxl_global_mmio_read32(struct ocxl_afu *afu, size_t offset,
afu               266 include/misc/ocxl.h int ocxl_global_mmio_read64(struct ocxl_afu *afu, size_t offset,
afu               279 include/misc/ocxl.h int ocxl_global_mmio_write32(struct ocxl_afu *afu, size_t offset,
afu               292 include/misc/ocxl.h int ocxl_global_mmio_write64(struct ocxl_afu *afu, size_t offset,
afu               305 include/misc/ocxl.h int ocxl_global_mmio_set32(struct ocxl_afu *afu, size_t offset,
afu               318 include/misc/ocxl.h int ocxl_global_mmio_set64(struct ocxl_afu *afu, size_t offset,
afu               331 include/misc/ocxl.h int ocxl_global_mmio_clear32(struct ocxl_afu *afu, size_t offset,
afu               344 include/misc/ocxl.h int ocxl_global_mmio_clear64(struct ocxl_afu *afu, size_t offset,
afu               355 include/misc/ocxl.h 				struct ocxl_afu_config *afu,