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()
784 static int cxl_dport_setup_regs(struct device *host, struct cxl_dport *dport, in cxl_dport_setup_regs() argument
789 if (dev_is_platform(dport->dport_dev)) in cxl_dport_setup_regs()
793 * use @dport->dport_dev for the context for error messages during in cxl_dport_setup_regs()
797 rc = cxl_setup_comp_regs(dport->dport_dev, &dport->reg_map, in cxl_dport_setup_regs()
799 dport->reg_map.host = host; in cxl_dport_setup_regs()
807 struct cxl_dport *dport = data; in cxl_einj_inject() local
809 if (dport->rch) in cxl_einj_inject()
810 return einj_cxl_inject_rch_error(dport->rcrb.base, type); in cxl_einj_inject()
812 return einj_cxl_inject_error(to_pci_dev(dport->dport_dev), type); in cxl_einj_inject()
817 static void cxl_debugfs_create_dport_dir(struct cxl_dport *dport) in cxl_debugfs_create_dport_dir() argument
826 * EINJ expects a dport SBDF to be specified for 2.0 error injection. in cxl_debugfs_create_dport_dir()
828 if (!dport->rch && !dev_is_pci(dport->dport_dev)) in cxl_debugfs_create_dport_dir()
831 dir = cxl_debugfs_create_dir(dev_name(dport->dport_dev)); in cxl_debugfs_create_dport_dir()
833 debugfs_create_file("einj_inject", 0200, dir, dport, in cxl_debugfs_create_dport_dir()
1049 struct cxl_dport *dport; in find_dport() local
1053 xa_for_each(&port->dports, index, dport) in find_dport()
1054 if (dport->port_id == id) in find_dport()
1055 return dport; in find_dport()
1059 static int add_dport(struct cxl_port *port, struct cxl_dport *dport) in add_dport() argument
1065 dup = find_dport(port, dport->port_id); in add_dport()
1068 "unable to add dport%d-%s non-unique port id (%s)\n", in add_dport()
1069 dport->port_id, dev_name(dport->dport_dev), in add_dport()
1074 rc = xa_insert(&port->dports, (unsigned long)dport->dport_dev, dport, in add_dport()
1086 * dport add/remove. Instead, root dports are manually added by a
1104 struct cxl_dport *dport = data; in cxl_dport_remove() local
1105 struct cxl_port *port = dport->port; in cxl_dport_remove()
1107 xa_erase(&port->dports, (unsigned long) dport->dport_dev); in cxl_dport_remove()
1108 put_device(dport->dport_dev); in cxl_dport_remove()
1113 struct cxl_dport *dport = data; in cxl_dport_unlink() local
1114 struct cxl_port *port = dport->port; in cxl_dport_unlink()
1117 sprintf(link_name, "dport%d", dport->port_id); in cxl_dport_unlink()
1127 struct cxl_dport *dport; in __devm_cxl_add_dport() local
1137 dev_WARN_ONCE(&port->dev, 1, "dport:%s bad devm context\n", in __devm_cxl_add_dport()
1142 if (snprintf(link_name, CXL_TARGET_STRLEN, "dport%d", port_id) >= in __devm_cxl_add_dport()
1146 dport = devm_kzalloc(host, sizeof(*dport), GFP_KERNEL); in __devm_cxl_add_dport()
1147 if (!dport) in __devm_cxl_add_dport()
1150 dport->dport_dev = dport_dev; in __devm_cxl_add_dport()
1151 dport->port_id = port_id; in __devm_cxl_add_dport()
1152 dport->port = port; in __devm_cxl_add_dport()
1155 rc = cxl_dport_setup_regs(&port->dev, dport, in __devm_cxl_add_dport()
1160 dport->rcrb.base = rcrb; in __devm_cxl_add_dport()
1161 component_reg_phys = __rcrb_to_component(dport_dev, &dport->rcrb, in __devm_cxl_add_dport()
1169 * RCH @dport is not ready to map until associated with its in __devm_cxl_add_dport()
1172 rc = cxl_dport_setup_regs(NULL, dport, component_reg_phys); in __devm_cxl_add_dport()
1176 dport->rch = true; in __devm_cxl_add_dport()
1180 dev_dbg(dport_dev, "Component Registers found for dport: %pa\n", in __devm_cxl_add_dport()
1184 rc = add_dport(port, dport); in __devm_cxl_add_dport()
1190 rc = devm_add_action_or_reset(host, cxl_dport_remove, dport); in __devm_cxl_add_dport()
1198 rc = devm_add_action_or_reset(host, cxl_dport_unlink, dport); in __devm_cxl_add_dport()
1203 dport->link_latency = cxl_pci_get_latency(to_pci_dev(dport_dev)); in __devm_cxl_add_dport()
1205 cxl_debugfs_create_dport_dir(dport); in __devm_cxl_add_dport()
1207 return dport; in __devm_cxl_add_dport()
1212 * @port: the cxl_port that references this dport
1213 * @dport_dev: firmware or PCI device representing the dport
1214 * @port_id: identifier for this dport in a decoder's target list
1225 struct cxl_dport *dport; in devm_cxl_add_dport() local
1227 dport = __devm_cxl_add_dport(port, dport_dev, port_id, in devm_cxl_add_dport()
1229 if (IS_ERR(dport)) { in devm_cxl_add_dport()
1230 dev_dbg(dport_dev, "failed to add dport to %s: %ld\n", in devm_cxl_add_dport()
1231 dev_name(&port->dev), PTR_ERR(dport)); in devm_cxl_add_dport()
1233 dev_dbg(dport_dev, "dport added to %s\n", in devm_cxl_add_dport()
1237 return dport; in devm_cxl_add_dport()
1243 * @port: the cxl_port that references this dport
1244 * @dport_dev: firmware or PCI device representing the dport
1245 * @port_id: identifier for this dport in a decoder's target list
1254 struct cxl_dport *dport; in devm_cxl_add_rch_dport() local
1257 dev_dbg(&port->dev, "failed to add RCH dport, missing RCRB\n"); in devm_cxl_add_rch_dport()
1261 dport = __devm_cxl_add_dport(port, dport_dev, port_id, in devm_cxl_add_rch_dport()
1263 if (IS_ERR(dport)) { in devm_cxl_add_rch_dport()
1264 dev_dbg(dport_dev, "failed to add RCH dport to %s: %ld\n", in devm_cxl_add_rch_dport()
1265 dev_name(&port->dev), PTR_ERR(dport)); in devm_cxl_add_rch_dport()
1267 dev_dbg(dport_dev, "RCH dport added to %s\n", in devm_cxl_add_rch_dport()
1271 return dport; in devm_cxl_add_rch_dport()
1277 struct cxl_port *port = new->dport->port; in add_ep()
1289 * @dport: the dport that routes to @ep_dev
1296 static int cxl_add_ep(struct cxl_dport *dport, struct device *ep_dev) in cxl_add_ep() argument
1306 ep->dport = dport; in cxl_add_ep()
1317 struct cxl_dport **dport; member
1323 struct cxl_dport *dport; in match_port_by_dport() local
1332 dport = cxl_find_dport_by_dev(port, ctx->dport_dev); in match_port_by_dport()
1333 if (ctx->dport) in match_port_by_dport()
1334 *ctx->dport = dport; in match_port_by_dport()
1335 return dport != NULL; in match_port_by_dport()
1352 struct cxl_dport **dport) in find_cxl_port() argument
1356 .dport = dport, in find_cxl_port()
1366 struct cxl_dport **dport) in find_cxl_port_at() argument
1371 .dport = dport, in find_cxl_port_at()
1450 struct cxl_dport *dport; in reap_dports() local
1455 xa_for_each(&port->dports, index, dport) { in reap_dports()
1456 devm_release_action(&port->dev, cxl_dport_unlink, dport); in reap_dports()
1457 devm_release_action(&port->dev, cxl_dport_remove, dport); in reap_dports()
1458 devm_kfree(&port->dev, dport); in reap_dports()
1553 struct cxl_dport *dport, *parent_dport; in add_port_attach_ep() local
1563 dev_dbg(&cxlmd->dev, "%s is a root dport\n", in add_port_attach_ep()
1588 port = find_cxl_port_at(parent_port, dport_dev, &dport); in add_port_attach_ep()
1596 /* retry find to pick up the new dport information */ in add_port_attach_ep()
1597 port = find_cxl_port_at(parent_port, dport_dev, &dport); in add_port_attach_ep()
1605 rc = cxl_add_ep(dport, &cxlmd->dev); in add_port_attach_ep()
1643 struct cxl_dport *dport; in devm_cxl_enumerate_ports() local
1654 dev_warn(dev, "at %s no parent for dport: %s\n", in devm_cxl_enumerate_ports()
1663 find_cxl_port(dport_dev, &dport); in devm_cxl_enumerate_ports()
1669 rc = cxl_add_ep(dport, &cxlmd->dev); in devm_cxl_enumerate_ports()
1681 cxl_gpf_port_setup(dport); in devm_cxl_enumerate_ports()
1706 struct cxl_dport **dport) in cxl_pci_find_port() argument
1708 return find_cxl_port(pdev->dev.parent, dport); in cxl_pci_find_port()
1713 struct cxl_dport **dport) in cxl_mem_find_port() argument
1715 return find_cxl_port(grandparent(&cxlmd->dev), dport); in cxl_mem_find_port()
1734 struct cxl_dport *dport = find_dport(port, target_map[i]); in decoder_populate_targets() local
1736 if (!dport) in decoder_populate_targets()
1738 cxlsd->target[i] = dport; in decoder_populate_targets()
2193 struct cxl_dport *dport; in cxl_endpoint_get_perf_coordinates() local
2216 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()
2229 add_latency(c, dport->link_latency); in cxl_endpoint_get_perf_coordinates()
2232 dport = iter->parent_dport; in cxl_endpoint_get_perf_coordinates()
2234 if (!coordinates_valid(dport->coord)) in cxl_endpoint_get_perf_coordinates()
2236 cxl_coordinates_combine(c, c, dport->coord); in cxl_endpoint_get_perf_coordinates()
2259 struct cxl_dport *dport = port->parent_dport; in cxl_port_get_switch_dport_bandwidth() local
2265 if (!coordinates_valid(dport->coord)) in cxl_port_get_switch_dport_bandwidth()
2269 c[i].read_bandwidth = dport->coord[i].read_bandwidth; in cxl_port_get_switch_dport_bandwidth()
2270 c[i].write_bandwidth = dport->coord[i].write_bandwidth; in cxl_port_get_switch_dport_bandwidth()