Lines Matching full:dport

154 		struct cxl_dport *dport = cxlsd->target[i];  in emit_target_list()  local
157 if (!dport) in emit_target_list()
162 rc = sysfs_emit_at(buf, offset, "%d%s", dport->port_id, in emit_target_list()
778 static int cxl_dport_setup_regs(struct device *host, struct cxl_dport *dport, in cxl_dport_setup_regs() argument
783 if (dev_is_platform(dport->dport_dev)) in cxl_dport_setup_regs()
787 * use @dport->dport_dev for the context for error messages during in cxl_dport_setup_regs()
791 rc = cxl_setup_comp_regs(dport->dport_dev, &dport->reg_map, in cxl_dport_setup_regs()
793 dport->reg_map.host = host; in cxl_dport_setup_regs()
801 struct cxl_dport *dport = data; in cxl_einj_inject() local
803 if (dport->rch) in cxl_einj_inject()
804 return einj_cxl_inject_rch_error(dport->rcrb.base, type); in cxl_einj_inject()
806 return einj_cxl_inject_error(to_pci_dev(dport->dport_dev), type); in cxl_einj_inject()
811 static void cxl_debugfs_create_dport_dir(struct cxl_dport *dport) in cxl_debugfs_create_dport_dir() argument
820 * EINJ expects a dport SBDF to be specified for 2.0 error injection. in cxl_debugfs_create_dport_dir()
822 if (!dport->rch && !dev_is_pci(dport->dport_dev)) in cxl_debugfs_create_dport_dir()
825 dir = cxl_debugfs_create_dir(dev_name(dport->dport_dev)); in cxl_debugfs_create_dport_dir()
827 debugfs_create_file("einj_inject", 0200, dir, dport, in cxl_debugfs_create_dport_dir()
1043 struct cxl_dport *dport; in find_dport() local
1047 xa_for_each(&port->dports, index, dport) in find_dport()
1048 if (dport->port_id == id) in find_dport()
1049 return dport; in find_dport()
1053 static int add_dport(struct cxl_port *port, struct cxl_dport *dport) in add_dport() argument
1059 dup = find_dport(port, dport->port_id); in add_dport()
1062 "unable to add dport%d-%s non-unique port id (%s)\n", in add_dport()
1063 dport->port_id, dev_name(dport->dport_dev), in add_dport()
1068 rc = xa_insert(&port->dports, (unsigned long)dport->dport_dev, dport, in add_dport()
1080 * dport add/remove. Instead, root dports are manually added by a
1098 struct cxl_dport *dport = data; in cxl_dport_remove() local
1099 struct cxl_port *port = dport->port; in cxl_dport_remove()
1101 xa_erase(&port->dports, (unsigned long) dport->dport_dev); in cxl_dport_remove()
1102 put_device(dport->dport_dev); in cxl_dport_remove()
1107 struct cxl_dport *dport = data; in cxl_dport_unlink() local
1108 struct cxl_port *port = dport->port; in cxl_dport_unlink()
1111 sprintf(link_name, "dport%d", dport->port_id); in cxl_dport_unlink()
1121 struct cxl_dport *dport; in __devm_cxl_add_dport() local
1131 dev_WARN_ONCE(&port->dev, 1, "dport:%s bad devm context\n", in __devm_cxl_add_dport()
1136 if (snprintf(link_name, CXL_TARGET_STRLEN, "dport%d", port_id) >= in __devm_cxl_add_dport()
1140 dport = devm_kzalloc(host, sizeof(*dport), GFP_KERNEL); in __devm_cxl_add_dport()
1141 if (!dport) in __devm_cxl_add_dport()
1144 dport->dport_dev = dport_dev; in __devm_cxl_add_dport()
1145 dport->port_id = port_id; in __devm_cxl_add_dport()
1146 dport->port = port; in __devm_cxl_add_dport()
1149 rc = cxl_dport_setup_regs(&port->dev, dport, in __devm_cxl_add_dport()
1154 dport->rcrb.base = rcrb; in __devm_cxl_add_dport()
1155 component_reg_phys = __rcrb_to_component(dport_dev, &dport->rcrb, in __devm_cxl_add_dport()
1163 * RCH @dport is not ready to map until associated with its in __devm_cxl_add_dport()
1166 rc = cxl_dport_setup_regs(NULL, dport, component_reg_phys); in __devm_cxl_add_dport()
1170 dport->rch = true; in __devm_cxl_add_dport()
1174 dev_dbg(dport_dev, "Component Registers found for dport: %pa\n", in __devm_cxl_add_dport()
1178 rc = add_dport(port, dport); in __devm_cxl_add_dport()
1184 rc = devm_add_action_or_reset(host, cxl_dport_remove, dport); in __devm_cxl_add_dport()
1192 rc = devm_add_action_or_reset(host, cxl_dport_unlink, dport); in __devm_cxl_add_dport()
1197 dport->link_latency = cxl_pci_get_latency(to_pci_dev(dport_dev)); in __devm_cxl_add_dport()
1199 cxl_debugfs_create_dport_dir(dport); in __devm_cxl_add_dport()
1201 return dport; in __devm_cxl_add_dport()
1206 * @port: the cxl_port that references this dport
1207 * @dport_dev: firmware or PCI device representing the dport
1208 * @port_id: identifier for this dport in a decoder's target list
1219 struct cxl_dport *dport; in devm_cxl_add_dport() local
1221 dport = __devm_cxl_add_dport(port, dport_dev, port_id, in devm_cxl_add_dport()
1223 if (IS_ERR(dport)) { in devm_cxl_add_dport()
1224 dev_dbg(dport_dev, "failed to add dport to %s: %ld\n", in devm_cxl_add_dport()
1225 dev_name(&port->dev), PTR_ERR(dport)); in devm_cxl_add_dport()
1227 dev_dbg(dport_dev, "dport added to %s\n", in devm_cxl_add_dport()
1231 return dport; in devm_cxl_add_dport()
1237 * @port: the cxl_port that references this dport
1238 * @dport_dev: firmware or PCI device representing the dport
1239 * @port_id: identifier for this dport in a decoder's target list
1248 struct cxl_dport *dport; in devm_cxl_add_rch_dport() local
1251 dev_dbg(&port->dev, "failed to add RCH dport, missing RCRB\n"); in devm_cxl_add_rch_dport()
1255 dport = __devm_cxl_add_dport(port, dport_dev, port_id, in devm_cxl_add_rch_dport()
1257 if (IS_ERR(dport)) { in devm_cxl_add_rch_dport()
1258 dev_dbg(dport_dev, "failed to add RCH dport to %s: %ld\n", in devm_cxl_add_rch_dport()
1259 dev_name(&port->dev), PTR_ERR(dport)); in devm_cxl_add_rch_dport()
1261 dev_dbg(dport_dev, "RCH dport added to %s\n", in devm_cxl_add_rch_dport()
1265 return dport; in devm_cxl_add_rch_dport()
1271 struct cxl_port *port = new->dport->port; in add_ep()
1283 * @dport: the dport that routes to @ep_dev
1290 static int cxl_add_ep(struct cxl_dport *dport, struct device *ep_dev) in cxl_add_ep() argument
1300 ep->dport = dport; in cxl_add_ep()
1311 struct cxl_dport **dport; member
1317 struct cxl_dport *dport; in match_port_by_dport() local
1326 dport = cxl_find_dport_by_dev(port, ctx->dport_dev); in match_port_by_dport()
1327 if (ctx->dport) in match_port_by_dport()
1328 *ctx->dport = dport; in match_port_by_dport()
1329 return dport != NULL; in match_port_by_dport()
1346 struct cxl_dport **dport) in find_cxl_port() argument
1350 .dport = dport, in find_cxl_port()
1360 struct cxl_dport **dport) in find_cxl_port_at() argument
1365 .dport = dport, in find_cxl_port_at()
1444 struct cxl_dport *dport; in reap_dports() local
1449 xa_for_each(&port->dports, index, dport) { in reap_dports()
1450 devm_release_action(&port->dev, cxl_dport_unlink, dport); in reap_dports()
1451 devm_release_action(&port->dev, cxl_dport_remove, dport); in reap_dports()
1452 devm_kfree(&port->dev, dport); in reap_dports()
1547 struct cxl_dport *dport, *parent_dport; in add_port_attach_ep() local
1557 dev_dbg(&cxlmd->dev, "%s is a root dport\n", in add_port_attach_ep()
1582 port = find_cxl_port_at(parent_port, dport_dev, &dport); in add_port_attach_ep()
1590 /* retry find to pick up the new dport information */ in add_port_attach_ep()
1591 port = find_cxl_port_at(parent_port, dport_dev, &dport); in add_port_attach_ep()
1599 rc = cxl_add_ep(dport, &cxlmd->dev); in add_port_attach_ep()
1637 struct cxl_dport *dport; in devm_cxl_enumerate_ports() local
1648 dev_warn(dev, "at %s no parent for dport: %s\n", in devm_cxl_enumerate_ports()
1657 find_cxl_port(dport_dev, &dport); in devm_cxl_enumerate_ports()
1663 rc = cxl_add_ep(dport, &cxlmd->dev); in devm_cxl_enumerate_ports()
1698 struct cxl_dport **dport) in cxl_pci_find_port() argument
1700 return find_cxl_port(pdev->dev.parent, dport); in cxl_pci_find_port()
1705 struct cxl_dport **dport) in cxl_mem_find_port() argument
1707 return find_cxl_port(grandparent(&cxlmd->dev), dport); in cxl_mem_find_port()
1726 struct cxl_dport *dport = find_dport(port, target_map[i]); in decoder_populate_targets() local
1728 if (!dport) in decoder_populate_targets()
1730 cxlsd->target[i] = dport; in decoder_populate_targets()
2184 struct cxl_dport *dport; in cxl_endpoint_get_perf_coordinates() local
2207 dport = iter->parent_dport; in cxl_endpoint_get_perf_coordinates()
2216 if (!coordinates_valid(dport->coord)) in cxl_endpoint_get_perf_coordinates()
2218 cxl_coordinates_combine(c, c, dport->coord); in cxl_endpoint_get_perf_coordinates()
2220 add_latency(c, dport->link_latency); in cxl_endpoint_get_perf_coordinates()
2223 dport = iter->parent_dport; in cxl_endpoint_get_perf_coordinates()
2225 if (!coordinates_valid(dport->coord)) in cxl_endpoint_get_perf_coordinates()
2227 cxl_coordinates_combine(c, c, dport->coord); in cxl_endpoint_get_perf_coordinates()
2250 struct cxl_dport *dport = port->parent_dport; in cxl_port_get_switch_dport_bandwidth() local
2256 if (!coordinates_valid(dport->coord)) in cxl_port_get_switch_dport_bandwidth()
2260 c[i].read_bandwidth = dport->coord[i].read_bandwidth; in cxl_port_get_switch_dport_bandwidth()
2261 c[i].write_bandwidth = dport->coord[i].write_bandwidth; in cxl_port_get_switch_dport_bandwidth()