diff options
| author | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
| commit | 1ac731c529cd4d6adbce134754b51ff7d822b145 (patch) | |
| tree | 143ab3f35ca5f3b69f583c84e6964b17139c2ec1 /drivers/cxl/core/port.c | |
| parent | 07b4c950f27bef0362dc6ad7ee713aab61d58149 (diff) | |
| parent | 54116d442e001e1b6bd482122043b1870998a1f3 (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.6 merge window.
Diffstat (limited to 'drivers/cxl/core/port.c')
| -rw-r--r-- | drivers/cxl/core/port.c | 48 | 
1 files changed, 11 insertions, 37 deletions
diff --git a/drivers/cxl/core/port.c b/drivers/cxl/core/port.c index 8ee6b6e2e2a4..e7c284c890bc 100644 --- a/drivers/cxl/core/port.c +++ b/drivers/cxl/core/port.c @@ -1,6 +1,5 @@  // SPDX-License-Identifier: GPL-2.0-only  /* Copyright(c) 2020 Intel Corporation. All rights reserved. */ -#include <linux/io-64-nonatomic-lo-hi.h>  #include <linux/memregion.h>  #include <linux/workqueue.h>  #include <linux/debugfs.h> @@ -751,11 +750,10 @@ struct cxl_port *devm_cxl_add_port(struct device *host, struct device *uport,  	parent_port = parent_dport ? parent_dport->port : NULL;  	if (IS_ERR(port)) { -		dev_dbg(uport, "Failed to add %s%s%s%s: %ld\n", -			dev_name(&port->dev), -			parent_port ? " to " : "", +		dev_dbg(uport, "Failed to add%s%s%s: %ld\n", +			parent_port ? " port to " : "",  			parent_port ? dev_name(&parent_port->dev) : "", -			parent_port ? "" : " (root port)", +			parent_port ? "" : " root port",  			PTR_ERR(port));  	} else {  		dev_dbg(uport, "%s added%s%s%s\n", @@ -823,41 +821,17 @@ static bool dev_is_cxl_root_child(struct device *dev)  	return false;  } -/* Find a 2nd level CXL port that has a dport that is an ancestor of @match */ -static int match_root_child(struct device *dev, const void *match) +struct cxl_port *find_cxl_root(struct cxl_port *port)  { -	const struct device *iter = NULL; -	struct cxl_dport *dport; -	struct cxl_port *port; - -	if (!dev_is_cxl_root_child(dev)) -		return 0; - -	port = to_cxl_port(dev); -	iter = match; -	while (iter) { -		dport = cxl_find_dport_by_dev(port, iter); -		if (dport) -			break; -		iter = iter->parent; -	} +	struct cxl_port *iter = port; -	return !!iter; -} +	while (iter && !is_cxl_root(iter)) +		iter = to_cxl_port(iter->dev.parent); -struct cxl_port *find_cxl_root(struct device *dev) -{ -	struct device *port_dev; -	struct cxl_port *root; - -	port_dev = bus_find_device(&cxl_bus_type, NULL, dev, match_root_child); -	if (!port_dev) +	if (!iter)  		return NULL; - -	root = to_cxl_port(port_dev->parent); -	get_device(&root->dev); -	put_device(port_dev); -	return root; +	get_device(&iter->dev); +	return iter;  }  EXPORT_SYMBOL_NS_GPL(find_cxl_root, CXL); @@ -1927,7 +1901,7 @@ bool schedule_cxl_memdev_detach(struct cxl_memdev *cxlmd)  EXPORT_SYMBOL_NS_GPL(schedule_cxl_memdev_detach, CXL);  /* for user tooling to ensure port disable work has completed */ -static ssize_t flush_store(struct bus_type *bus, const char *buf, size_t count) +static ssize_t flush_store(const struct bus_type *bus, const char *buf, size_t count)  {  	if (sysfs_streq(buf, "1")) {  		flush_workqueue(cxl_bus_wq);  |