summaryrefslogtreecommitdiff
path: root/drivers/cxl/acpi.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2022-01-31 22:50:09 +0300
committerDan Williams <dan.j.williams@intel.com>2022-02-09 09:57:29 +0300
commit3c5b903955251ea464fca383a42d981e33004df6 (patch)
treec4ff8665db9ad785d73be3a5ec462964e2148b86 /drivers/cxl/acpi.c
parent53fa1bff3426344d466d91e81f076eab677d0ece (diff)
downloadlinux-3c5b903955251ea464fca383a42d981e33004df6.tar.xz
cxl: Prove CXL locking
When CONFIG_PROVE_LOCKING is enabled the 'struct device' definition gets an additional mutex that is not clobbered by lockdep_set_novalidate_class() like the typical device_lock(). This allows for local annotation of subsystem locks with mutex_lock_nested() per the subsystem's object/lock hierarchy. For CXL, this primarily needs the ability to lock ports by depth and child objects of ports by their parent parent-port lock. Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Reviewed-by: Ben Widawsky <ben.widawsky@intel.com> Link: https://lore.kernel.org/r/164365853422.99383.1052399160445197427.stgit@dwillia2-desk3.amr.corp.intel.com Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/cxl/acpi.c')
-rw-r--r--drivers/cxl/acpi.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/cxl/acpi.c b/drivers/cxl/acpi.c
index 4e8086525edc..93d1dc56892a 100644
--- a/drivers/cxl/acpi.c
+++ b/drivers/cxl/acpi.c
@@ -176,14 +176,14 @@ static struct cxl_dport *find_dport_by_dev(struct cxl_port *port, struct device
{
struct cxl_dport *dport;
- device_lock(&port->dev);
+ cxl_device_lock(&port->dev);
list_for_each_entry(dport, &port->dports, list)
if (dport->dport == dev) {
- device_unlock(&port->dev);
+ cxl_device_unlock(&port->dev);
return dport;
}
- device_unlock(&port->dev);
+ cxl_device_unlock(&port->dev);
return NULL;
}
@@ -264,9 +264,9 @@ static int add_host_bridge_uport(struct device *match, void *arg)
if (IS_ERR(cxld))
return PTR_ERR(cxld);
- device_lock(&port->dev);
+ cxl_device_lock(&port->dev);
dport = list_first_entry(&port->dports, typeof(*dport), list);
- device_unlock(&port->dev);
+ cxl_device_unlock(&port->dev);
single_port_map[0] = dport->port_id;