From patchwork Fri Feb 21 01:24:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13984719 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2E4CD156CA; Fri, 21 Feb 2025 01:25:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101137; cv=pass; b=CqmT85FB3dyoOR/T3Gzqmk4idxLYZv+QSYXj+78RW5xrOwOuWjSvl0Z1GJO4IBIQPSvTa/GhYobx+kfiUImstev2dVPZwpMnYcGo8/ueH/FFeW0X1DNDWW9oewdMDsCx3Yu/Y+fcBieywZ4aa2CYlI3b+lqzwQL5wzquvr+A4PY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101137; c=relaxed/simple; bh=0jjDmVZ0DWQeBFLkbUe54TAyFTfBgES6vjrbz49jGVw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=tx+60bxYUYy4L9i/hncZRpZwuyRh5Dg6LICdJKSVCn4+ZHTVmBPOGQdINhxslT9eUBR6XII8S18wgNHLtXQI+chlAqa2/YAYyp+41lK3s9IprsLo0r+8HgXKxxBBMssU/Pq1bROn02oxALwVZQgcaO2lrgZ7kn1WgfLfD8oVJmQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=SEON03ai; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="SEON03ai" ARC-Seal: i=1; a=rsa-sha256; t=1740101118; cv=none; d=zohomail.com; s=zohoarc; b=kID90N5ufdzkaWmx0GcVUxUiBWeMy6x4KaivzKKfdz67aSG34LIHxMaeF8T7tsRHA/kvkt5OpbkcfTNk/Vkj4vgUY5+/Gjs8ilEGDFbCIPfD3SSV7Bpv+MRL0UH5sG6KsDrT2HhalHsmdsQHm/R9+LnYUS2Yu9dcZuV8uJhjO4k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1740101118; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=hrozyDGjYx56FYwETNUUKzYL8DMYbFGqaUYZpdLc5sc=; b=EdQrFp/X77aEX4Xganhyw38iRC3rHq2rqUVmXsk7MKxBTFP/MdzDizWG0SoH0Pdhpn/ZvKZr0K8wAy/J7OEQrULgsJBLK1Nrp/fv+RZN9GptduEKfLhGHPlorIVqSvS6oVH4d5lj/7QNMjKNbfUS3utiL/pDixuAhXvgPvIJzGU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1740101118; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Feedback-ID:Reply-To; bh=hrozyDGjYx56FYwETNUUKzYL8DMYbFGqaUYZpdLc5sc=; b=SEON03aiXZjkoHwkBul4b6xRTTngkSHywGkVmJ1lu5kwvW54LREXZkYnjwSCRXpX +Hy+u0FOim+taWyptXNlWefxJ6DaSxUCwFuhchTadoZbK4RZcVGbOdDpI7E+Pz9bgya QLoGL/QuMunayN1oC+STc0n9STmx+RX2LT1+qsQA= Received: by mx.zohomail.com with SMTPS id 1740101116470586.7723743964838; Thu, 20 Feb 2025 17:25:16 -0800 (PST) From: Li Ming To: dave@stgolabs.net, jonathan.cameron@huawei.com, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com, ira.weiny@intel.com, dan.j.williams@intel.com Cc: linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, Li Ming , Jonathan Cameron Subject: [PATCH v3 1/7] cxl/core: Use guard() to replace open-coded down_read/write() Date: Fri, 21 Feb 2025 09:24:47 +0800 Message-Id: <20250221012453.126366-2-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250221012453.126366-1-ming.li@zohomail.com> References: <20250221012453.126366-1-ming.li@zohomail.com> Precedence: bulk X-Mailing-List: linux-cxl@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Feedback-ID: rr080112278d36a65c8aa006c08bf137a000002c31ebfd45cfefb89dde9021b0dc7e1d797bf71e783aa11e56:zu080112278c1d72eff5205966dbf48a580000111d16b3e441b3994305645ce53760af7bef5ee166c1ce3ce4:rf0801122d7259ba7d11d9a76e855f108b00007de08c766826de382087d62e9f79fdc05262ac10c6aaf94fff2f74c7634e8c:ZohoMail X-ZohoMailClient: External Some down/up_read() and down/up_write() cases can be replaced by a guard() simply to drop explicit unlock invoked. It helps to align coding style with current CXL subsystem's. Reviewed-by: Jonathan Cameron Reviewed-by: Dave Jiang Reviewed-by: Alison Schofield Reviewed-by: Ira Weiny Acked-by: Davidlohr Bueso Signed-off-by: Li Ming --- v2: - Drop some local variables. (Jonathan) --- drivers/cxl/core/hdm.c | 15 +++++---------- drivers/cxl/core/memdev.c | 9 +++------ drivers/cxl/core/port.c | 8 ++------ drivers/cxl/core/region.c | 8 +++----- 4 files changed, 13 insertions(+), 27 deletions(-) diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c index d705dec1471e..ad74b46d3e16 100644 --- a/drivers/cxl/core/hdm.c +++ b/drivers/cxl/core/hdm.c @@ -213,13 +213,12 @@ void cxl_dpa_debug(struct seq_file *file, struct cxl_dev_state *cxlds) { struct resource *p1, *p2; - down_read(&cxl_dpa_rwsem); + guard(rwsem_read)(&cxl_dpa_rwsem); for (p1 = cxlds->dpa_res.child; p1; p1 = p1->sibling) { __cxl_dpa_debug(file, p1, 0); for (p2 = p1->child; p2; p2 = p2->sibling) __cxl_dpa_debug(file, p2, 1); } - up_read(&cxl_dpa_rwsem); } EXPORT_SYMBOL_NS_GPL(cxl_dpa_debug, "CXL"); @@ -281,9 +280,8 @@ static void __cxl_dpa_release(struct cxl_endpoint_decoder *cxled) static void cxl_dpa_release(void *cxled) { - down_write(&cxl_dpa_rwsem); + guard(rwsem_write)(&cxl_dpa_rwsem); __cxl_dpa_release(cxled); - up_write(&cxl_dpa_rwsem); } /* @@ -530,14 +528,11 @@ EXPORT_SYMBOL_NS_GPL(devm_cxl_dpa_reserve, "CXL"); resource_size_t cxl_dpa_size(struct cxl_endpoint_decoder *cxled) { - resource_size_t size = 0; - - down_read(&cxl_dpa_rwsem); + guard(rwsem_read)(&cxl_dpa_rwsem); if (cxled->dpa_res) - size = resource_size(cxled->dpa_res); - up_read(&cxl_dpa_rwsem); + return resource_size(cxled->dpa_res); - return size; + return 0; } resource_size_t cxl_dpa_resource_start(struct cxl_endpoint_decoder *cxled) diff --git a/drivers/cxl/core/memdev.c b/drivers/cxl/core/memdev.c index 2914e3ff104b..da692020980b 100644 --- a/drivers/cxl/core/memdev.c +++ b/drivers/cxl/core/memdev.c @@ -582,10 +582,9 @@ void set_exclusive_cxl_commands(struct cxl_memdev_state *mds, { struct cxl_mailbox *cxl_mbox = &mds->cxlds.cxl_mbox; - down_write(&cxl_memdev_rwsem); + guard(rwsem_write)(&cxl_memdev_rwsem); bitmap_or(cxl_mbox->exclusive_cmds, cxl_mbox->exclusive_cmds, cmds, CXL_MEM_COMMAND_ID_MAX); - up_write(&cxl_memdev_rwsem); } EXPORT_SYMBOL_NS_GPL(set_exclusive_cxl_commands, "CXL"); @@ -599,10 +598,9 @@ void clear_exclusive_cxl_commands(struct cxl_memdev_state *mds, { struct cxl_mailbox *cxl_mbox = &mds->cxlds.cxl_mbox; - down_write(&cxl_memdev_rwsem); + guard(rwsem_write)(&cxl_memdev_rwsem); bitmap_andnot(cxl_mbox->exclusive_cmds, cxl_mbox->exclusive_cmds, cmds, CXL_MEM_COMMAND_ID_MAX); - up_write(&cxl_memdev_rwsem); } EXPORT_SYMBOL_NS_GPL(clear_exclusive_cxl_commands, "CXL"); @@ -610,9 +608,8 @@ static void cxl_memdev_shutdown(struct device *dev) { struct cxl_memdev *cxlmd = to_cxl_memdev(dev); - down_write(&cxl_memdev_rwsem); + guard(rwsem_write)(&cxl_memdev_rwsem); cxlmd->cxlds = NULL; - up_write(&cxl_memdev_rwsem); } static void cxl_memdev_unregister(void *_cxlmd) diff --git a/drivers/cxl/core/port.c b/drivers/cxl/core/port.c index f9501a16b390..6a44b6dad3c7 100644 --- a/drivers/cxl/core/port.c +++ b/drivers/cxl/core/port.c @@ -559,13 +559,9 @@ static ssize_t decoders_committed_show(struct device *dev, struct device_attribute *attr, char *buf) { struct cxl_port *port = to_cxl_port(dev); - int rc; - - down_read(&cxl_region_rwsem); - rc = sysfs_emit(buf, "%d\n", cxl_num_decoders_committed(port)); - up_read(&cxl_region_rwsem); - return rc; + guard(rwsem_read)(&cxl_region_rwsem); + return sysfs_emit(buf, "%d\n", cxl_num_decoders_committed(port)); } static DEVICE_ATTR_RO(decoders_committed); diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 84ce625b8591..8e68091e3f20 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -3207,7 +3207,6 @@ static int match_region_by_range(struct device *dev, const void *data) struct cxl_region_params *p; struct cxl_region *cxlr; const struct range *r = data; - int rc = 0; if (!is_cxl_region(dev)) return 0; @@ -3215,12 +3214,11 @@ static int match_region_by_range(struct device *dev, const void *data) cxlr = to_cxl_region(dev); p = &cxlr->params; - down_read(&cxl_region_rwsem); + guard(rwsem_read)(&cxl_region_rwsem); if (p->res && p->res->start == r->start && p->res->end == r->end) - rc = 1; - up_read(&cxl_region_rwsem); + return 1; - return rc; + return 0; } /* Establish an empty region covering the given HPA range */ From patchwork Fri Feb 21 01:24:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13984728 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A6168156CA; Fri, 21 Feb 2025 01:25:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101153; cv=pass; b=Ej09SYHY7aBzNYvmMeJKyhd1P9Y4a7RqxDP+lQKxsftZ6Wkp3Ep9Wcv99GAS4mxOdMgVuurN3d0PVn6OHLmGvotTT+76+7rQpOnKCnN0xWRwIApW0j1VgDjzEbbIdikA/ZNPS6yaSL4JW8xSJXD397aJGJEv4BE/aN1Lx16h6U0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101153; c=relaxed/simple; bh=BxKLsz4m6cNejeUryr2DNhsK/1T8hophPCnG1dnP8cY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Fsot2YL1zK3N2ZssHwGaJzW6vKb3wU1Kp4B4XTozY25xCxxVnSplm/DRfylH0FheFF4IM210CnLvaYxbe5JOvn5AfRmFzADYLq36YWx1jG0muSnpj9PjasWDH69hJ84dniOxpvNLYHHRIWsILhESsXh3xc4wf0AwgJM5djCW9eQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=CnRprxun; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="CnRprxun" ARC-Seal: i=1; a=rsa-sha256; t=1740101128; cv=none; d=zohomail.com; s=zohoarc; b=cjzA3lx+1/hsTfQIklsaTUYVxWENSaXbvRUz8Yd1mhpCGFl5lnXs9NA4zHMBh/jq05YyZ5KLB0fzHLu8kz9+IcBwm5sv1f0A1R/cD4PvfGYX2EJenhDsRyT6H/dDyy+RinX6F0K2akJzjMjvaiIWOfEf11F8IQewYt4QHPNUizQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1740101128; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=8oF8ZEIjicOXrbCZQsPl+9CxN22U5vsjMMwzPbg5exw=; b=JlgGeNftipisKpTaZ6qT4h+6aoOKWC3bQkbs6fSbnBdBqK7DMd8bixRGRfopmXh2MTQPrRbMEAkqUHS5qkSKFx2vQPT/AUIEZAC1ZWPme8X2NUEEgmb9OXQK8P83mLkpktQMksjhXeH2jKxx5TDWZBc3c/Aw9hYPy0UdIeSbuNA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1740101128; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Feedback-ID:Reply-To; bh=8oF8ZEIjicOXrbCZQsPl+9CxN22U5vsjMMwzPbg5exw=; b=CnRprxunYdEDFgYBabfqQmoNU1eqQIYQDW3QTwH3K/P2iOOx+Oglsw6cqCm3MDEq gFFEkQTGauNDD/wy5PEcUnrpJw58J/498nAe5prrAKaanv7klk2u2p7LSDykNLfFrcP jnIODbs4GJyfkn+fhMinlBTqCJf2Adbn6gVLeC5w= Received: by mx.zohomail.com with SMTPS id 1740101126623454.0470289865325; Thu, 20 Feb 2025 17:25:26 -0800 (PST) From: Li Ming To: dave@stgolabs.net, jonathan.cameron@huawei.com, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com, ira.weiny@intel.com, dan.j.williams@intel.com Cc: linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, Li Ming , Jonathan Cameron Subject: [PATCH v3 2/7] cxl/core: cxl_mem_sanitize() cleanup Date: Fri, 21 Feb 2025 09:24:48 +0800 Message-Id: <20250221012453.126366-3-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250221012453.126366-1-ming.li@zohomail.com> References: <20250221012453.126366-1-ming.li@zohomail.com> Precedence: bulk X-Mailing-List: linux-cxl@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Feedback-ID: rr08011227975c16155ec4881c0b8d16fb000060b1f79b1c69fa28aa44949337a925436a2748953fe749e172:zu080112273ccc9047c40acfa0e4e72b380000cf8c4fddca64041d54204cd0098db1857be967023e0c75d258:rf0801122d3cc15077e793fd98e7058ec800004752cc9e06728805b2d0248eefb7dd28da7a85139dcc00d0d8dfabb89f9b67:ZohoMail X-ZohoMailClient: External In cxl_mem_sanitize(), the down_read() and up_read() for cxl_region_rwsem can be simply replaced by a guard(rwsem_read), and the local variable 'rc' can be removed. Reviewed-by: Jonathan Cameron Reviewed-by: Dave Jiang Reviewed-by: Alison Schofield Reviewed-by: Ira Weiny Acked-by: Davidlohr Bueso Signed-off-by: Li Ming --- drivers/cxl/core/mbox.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c index c5eedcae3b02..80916a5b0e34 100644 --- a/drivers/cxl/core/mbox.c +++ b/drivers/cxl/core/mbox.c @@ -1213,23 +1213,19 @@ int cxl_mem_sanitize(struct cxl_memdev *cxlmd, u16 cmd) { struct cxl_memdev_state *mds = to_cxl_memdev_state(cxlmd->cxlds); struct cxl_port *endpoint; - int rc; /* synchronize with cxl_mem_probe() and decoder write operations */ guard(device)(&cxlmd->dev); endpoint = cxlmd->endpoint; - down_read(&cxl_region_rwsem); + guard(rwsem_read)(&cxl_region_rwsem); /* * Require an endpoint to be safe otherwise the driver can not * be sure that the device is unmapped. */ if (endpoint && cxl_num_decoders_committed(endpoint) == 0) - rc = __cxl_mem_sanitize(mds, cmd); - else - rc = -EBUSY; - up_read(&cxl_region_rwsem); + return __cxl_mem_sanitize(mds, cmd); - return rc; + return -EBUSY; } static void add_part(struct cxl_dpa_info *info, u64 start, u64 size, enum cxl_partition_mode mode) From patchwork Fri Feb 21 01:24:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13984729 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C29838F80; Fri, 21 Feb 2025 01:26:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101168; cv=pass; b=Cg6qiUhBvjkjhJ3gsqQ+VwH3C2RJrZAJ1k13pnefKsiWLSz+67qVjJ+dDd0VNqISd/68MzTssCZ1HFuP61cw9+04NkQJi/1IDL9tIqZsHWaMAjTNBCrZW+x2MWQYNNfzJIzv70nvIVvYEg9khu8cHcTqod23AtFDk4rkj0Msquo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101168; c=relaxed/simple; bh=pmKOIFUtzZMobmZ2DbYaqsRYTwJ8Dwu4xWqnrrZurA0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HjCRG1TshvI9U4KwEKTb3s84ygUxSV/GyJMVpFTnLojbC+26W7zebPhqiZQpXyPpyGZeXYnDW7h4WOPzewXztvfkXlIX8G9+fylu/Fm4ljgocHcrmZNuXl3I5pKR/8WlBNWCfvW+7hI0Z9OqvV+2F3C93C6G6xkQyNQAXsO+aMc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=AJmBbMIS; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="AJmBbMIS" ARC-Seal: i=1; a=rsa-sha256; t=1740101140; cv=none; d=zohomail.com; s=zohoarc; b=fhOFPIkrZCZva7+tzpl3rtwcvI6Sr0fvtcqOWJiReKD71MlYpvCqJBF/xZ+quvdDy01+aUWEcgcvHSf3fXrgLnwgAdoQgSfh5THliscCvYOI6vSxFFh/NgqOnBdm0BEMTWM59sZMi7zdBXixO/x4zoqw0thtM6F2D30Nc6z7u+k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1740101140; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=KeEb8LPi+h2iOJ944U3++xva3wZkhcHbCDop6unqk5I=; b=IqN8OvXgFJ0LY+yiMJXlq6VsuaKmqcGDqSrCKWytL5cqZtt1fPVmVaLKN56+tFdvjYyNThBiQCt1pyhqsHomhaohORVUQiyOtt7W4VABS9wG8pv82sWn86rkDFK0OclwIuHCBOx5hAv75CGazu+c9PGsw5UUC5dSsCjignOqs28= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1740101140; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Feedback-ID:Reply-To; bh=KeEb8LPi+h2iOJ944U3++xva3wZkhcHbCDop6unqk5I=; b=AJmBbMISUwHmokZKaea0ZOUcloPh64mb27AmRLHGx8DJy8GP32X2oFd16DcLD2TV 32yhYlVyXBY9+YU/KR0EloO7vflpI8un4uSs0hQkGxzFsRzAHJK9fJfg4S+5IBJOMSm tqSIRa84W9ea80QBrdjB4bcAu5FEr0j9aYKlD+bs= Received: by mx.zohomail.com with SMTPS id 1740101137120159.54618824138697; Thu, 20 Feb 2025 17:25:37 -0800 (PST) From: Li Ming To: dave@stgolabs.net, jonathan.cameron@huawei.com, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com, ira.weiny@intel.com, dan.j.williams@intel.com Cc: linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, Li Ming , Jonathan Cameron Subject: [PATCH v3 3/7] cxl/memdev: cxl_memdev_ioctl() cleanup Date: Fri, 21 Feb 2025 09:24:49 +0800 Message-Id: <20250221012453.126366-4-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250221012453.126366-1-ming.li@zohomail.com> References: <20250221012453.126366-1-ming.li@zohomail.com> Precedence: bulk X-Mailing-List: linux-cxl@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Feedback-ID: rr08011227807f201c8c1e5978b245b5a50000610b8e0fc892d0b4119a7d5eb040ee78534b5188127ff3b710:zu0801122706c68c02ed125a0eb674a3bd0000c9eaef536c222177f3f5691b234036cd0b49988eeb57265053:rf0801122d2f55e2afedd4ddea1fd8f4fa0000761cd27a4dce20243fdf083ecdc82030059fbe6e686898e90ee5dc4dfdcace:ZohoMail X-ZohoMailClient: External In cxl_memdev_ioctl(), the down_read(&cxl_memdev_rwsem) and up_read(&cxl_memdev_rwsem) can be replaced by a guard(rwsem_read)(&cxl_memdev_rwsem), it helps to remove the open-coded up_read(&cxl_memdev_rwsem). Besides, the local var 'rc' can be also removed to make the code more cleaner. Reviewed-by: Jonathan Cameron Reviewed-by: Dave Jiang Reviewed-by: Alison Schofield Reviewed-by: Ira Weiny Acked-by: Davidlohr Bueso Signed-off-by: Li Ming --- drivers/cxl/core/memdev.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/drivers/cxl/core/memdev.c b/drivers/cxl/core/memdev.c index da692020980b..a16a5886d40a 100644 --- a/drivers/cxl/core/memdev.c +++ b/drivers/cxl/core/memdev.c @@ -691,15 +691,13 @@ static long cxl_memdev_ioctl(struct file *file, unsigned int cmd, { struct cxl_memdev *cxlmd = file->private_data; struct cxl_dev_state *cxlds; - int rc = -ENXIO; - down_read(&cxl_memdev_rwsem); + guard(rwsem_read)(&cxl_memdev_rwsem); cxlds = cxlmd->cxlds; if (cxlds && cxlds->type == CXL_DEVTYPE_CLASSMEM) - rc = __cxl_memdev_ioctl(cxlmd, cmd, arg); - up_read(&cxl_memdev_rwsem); + return __cxl_memdev_ioctl(cxlmd, cmd, arg); - return rc; + return -ENXIO; } static int cxl_memdev_open(struct inode *inode, struct file *file) From patchwork Fri Feb 21 01:24:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13984730 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9AB404D599; Fri, 21 Feb 2025 01:26:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101178; cv=pass; b=fzCSnZKVmEU/64j4V8pgHJJQsPztTDkirsQF+5eW11q6vPF/NwFvncDorr60r3JrS1wJzU6XoWAphVDh8jgYL4kOu1uIorbbVawIOzHudh67RVdxzO9CiMrJe3lWTXSr8j606hFb0lFWtgo50n+Wn0KZrDAUWdQWEwbgVCFWTlU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101178; c=relaxed/simple; bh=FWfKaOo1y23KEKjaFozPERfVS/SxsYIJZFM77jFwkvU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=iKohrfwIUg1/IsXG5ibyHxffH02GxyjWDkvSHFcCpVJkXH9DPvzWP5nmQs/yLOxl06Nc5w0+axJyA/P5wS7E3wW4vCFZnZQwV/HJSk1Ax3zuk45xn0l14NJPncOLKwilSRCetV9ilE9+mQyyLAM3LSjg8+PDzQmicmvQYEro4sE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=eIs3UcHN; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="eIs3UcHN" ARC-Seal: i=1; a=rsa-sha256; t=1740101148; cv=none; d=zohomail.com; s=zohoarc; b=iU1JWN3iUcMH6e3whEYgTgyXFiwsTxodOrgSwNIGCXFfDFAWlhuSWjVcv3alFo/8LkM5oAvdiHRCxyPhrjckMBMs8qhyt1m9ILMe45jsQcfu/Fgk21fNwVE0Lw9wjrXT6+FTNFoWqPEge3kF7R9rHU45LmmtERfQJyPzDeoId4Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1740101148; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=vNpP+jFLz7Le9b+c7WbpRmlylQtNwb6oUyih0UJYig0=; b=CKWA5qtmhR4TricfHKEFqwoL72mBwNCmGUEECSDsxsrju8nrYIJ1YIbNuDMsn1vEgOiDTtUAcoDEHDLkvHkj4+zh2YTAnkvPyM6ZCwtN803gIOAAzWUwBF+i7unBrlMeU2yluYb99sxfpbnQy+vDzbsbhac8q5Im7pc0eE+3tYw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1740101148; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Feedback-ID:Reply-To; bh=vNpP+jFLz7Le9b+c7WbpRmlylQtNwb6oUyih0UJYig0=; b=eIs3UcHNV6qWBU+ocF6qFjb3ZVq+wApLv+X3eC+f34Tb10o1cKAiOZsKmVuO2TSC EqEtRmLE4VyBAwtHdRHVW9CpIFzGWkYyHstmz39N+fV9JBngMJ+IbJkrKhqgzkdR8wl zVBj/nANKoXOvr5ucKaDFYgSB9itCDEfAlv+rNgs= Received: by mx.zohomail.com with SMTPS id 1740101146430807.9817218628841; Thu, 20 Feb 2025 17:25:46 -0800 (PST) From: Li Ming To: dave@stgolabs.net, jonathan.cameron@huawei.com, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com, ira.weiny@intel.com, dan.j.williams@intel.com Cc: linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, Li Ming , Jonathan Cameron Subject: [PATCH v3 4/7] cxl/core: Use guard() to drop the goto pattern of cxl_dpa_free() Date: Fri, 21 Feb 2025 09:24:50 +0800 Message-Id: <20250221012453.126366-5-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250221012453.126366-1-ming.li@zohomail.com> References: <20250221012453.126366-1-ming.li@zohomail.com> Precedence: bulk X-Mailing-List: linux-cxl@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Feedback-ID: rr08011227fac667d5fa5d7055e8eceeee0000b6a36affab8dd0d65b3bc32131df84a9b6aa717461fd2fa892:zu08011227c7a7528d03021328db03e30f0000bc5d4632132a394568e7f2e9c6ad2b6dabae8e60eb574e034d:rf0801122de56a3d291f76d0cb1883c34f00003fe8a51674e843bac2bec1f3a5d6bca2406dbc0f5993c8b50ecc4dd7ae428e:ZohoMail X-ZohoMailClient: External cxl_dpa_free() has a goto pattern to call up_write() for cxl_dpa_rwsem, it can be removed by using a guard() to replace the down_write() and up_write(). Reviewed-by: Jonathan Cameron Reviewed-by: Dave Jiang Reviewed-by: Alison Schofield Reviewed-by: Ira Weiny Acked-by: Davidlohr Bueso Signed-off-by: Li Ming --- drivers/cxl/core/hdm.c | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c index ad74b46d3e16..e1d1fe5492ff 100644 --- a/drivers/cxl/core/hdm.c +++ b/drivers/cxl/core/hdm.c @@ -550,35 +550,27 @@ int cxl_dpa_free(struct cxl_endpoint_decoder *cxled) { struct cxl_port *port = cxled_to_port(cxled); struct device *dev = &cxled->cxld.dev; - int rc; - down_write(&cxl_dpa_rwsem); - if (!cxled->dpa_res) { - rc = 0; - goto out; - } + guard(rwsem_write)(&cxl_dpa_rwsem); + if (!cxled->dpa_res) + return 0; if (cxled->cxld.region) { dev_dbg(dev, "decoder assigned to: %s\n", dev_name(&cxled->cxld.region->dev)); - rc = -EBUSY; - goto out; + return -EBUSY; } if (cxled->cxld.flags & CXL_DECODER_F_ENABLE) { dev_dbg(dev, "decoder enabled\n"); - rc = -EBUSY; - goto out; + return -EBUSY; } if (cxled->cxld.id != port->hdm_end) { dev_dbg(dev, "expected decoder%d.%d\n", port->id, port->hdm_end); - rc = -EBUSY; - goto out; + return -EBUSY; } + devm_cxl_dpa_release(cxled); - rc = 0; -out: - up_write(&cxl_dpa_rwsem); - return rc; + return 0; } int cxl_dpa_set_part(struct cxl_endpoint_decoder *cxled, From patchwork Fri Feb 21 01:24:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13984731 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0A3F9142E6F; Fri, 21 Feb 2025 01:26:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101190; cv=pass; b=BQWk6NFICTO8kPteISs8Cneh5evSgg61++y3k1v4KQVuG98w910A52rpORys8kFfIoCcKHJTuVMOdgjvCL+dt+HLmDmuBiGEGZiP/z/gEgHLQWvMmAnTgNeGNaCp+GSILUfv8jsvwpAbOFieFzgymEJPSAfffiEaRdS8wpvdsj4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101190; c=relaxed/simple; bh=VYMF9IY19OHeNl7smQ2vsUUrOoXY65jXCYvNRM7RWDU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=VdT8BDmVsRKiYYHzIMQoHbilN4SaDfxr+Uk3aHrW8smACp0RD67qBX12+8XYGDVR4BaoV+Gf01dhpeyF7hdc71KHrGlQPJCeP6JSZ4zqpXF/v9UCGw7WHIll/7Y39TOgzNKmQJU1LzMC5xVrrK9//6CWBXqwkOxXJihuK7BoukA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=IkFfxGL3; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="IkFfxGL3" ARC-Seal: i=1; a=rsa-sha256; t=1740101160; cv=none; d=zohomail.com; s=zohoarc; b=MdaXGae8eVZ0z6TxonfY7kpRzT7T7gWS+ikqsnNSrNSnB+nOsG7DV0Ifw2xSGu4GQFRKu5k1CmRnJIQoGEANgECQhJGmvvON6Tr2ZWt/ObhkePHk/ym+wbjZKLfVBEqqjhavNAoFPgQ+igBj0/5JW6Z75rcEsO8JbC7IXMTe1A4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1740101160; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=GtELuGJ5jBzdP39Ec6hbhrywYcuLcVHKazGBTR8GjVk=; b=RgNUd2VxSpYn86Kfbu8xhww6k6ybpS02JWE9MWtdXxf/e8Sf953jjVFQ+yra2cWNxucIvg3lK8PRxgng1azeGjwdyxMw8KhFiMwOvZBIgHgF0d6H9VgI1UC633NbCpq+0s4JK8PCdMYFwHxW/6f7l3+wW0YUuML/7G94HrB9VnU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1740101160; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Feedback-ID:Reply-To; bh=GtELuGJ5jBzdP39Ec6hbhrywYcuLcVHKazGBTR8GjVk=; b=IkFfxGL3vLBAtlhOxkf70uY49O5K9BBBr2Iu66uQMqoXmewT5VoxK/fy783iCUCK 9Aoh6BOZxYKVBudsprQst5XOA8si2ZcXXYhv2mVyDesTGvwrisZLomEWv9FdeXzcuNx MO9CdgcujrsbfiiVCEWdFvtYuETOUPPxX1A9gGQo= Received: by mx.zohomail.com with SMTPS id 1740101157078900.0961567418597; Thu, 20 Feb 2025 17:25:57 -0800 (PST) From: Li Ming To: dave@stgolabs.net, jonathan.cameron@huawei.com, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com, ira.weiny@intel.com, dan.j.williams@intel.com Cc: linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, Li Ming , Jonathan Cameron Subject: [PATCH v3 5/7] cxl/core: Use guard() to drop goto pattern of cxl_dpa_alloc() Date: Fri, 21 Feb 2025 09:24:51 +0800 Message-Id: <20250221012453.126366-6-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250221012453.126366-1-ming.li@zohomail.com> References: <20250221012453.126366-1-ming.li@zohomail.com> Precedence: bulk X-Mailing-List: linux-cxl@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Feedback-ID: rr080112275e68e10dae7a21c1c169da4100002819199dbed83f565b3d8f299ce0ee3dcb0c1cb18b8726df6e:zu080112272b1e86da6b50fce8074a563d00004737cbf3d37667c7816e7d6252d8f73c731cda310a64e82380:rf0801122d1473e70191fb77f47bb3c49100009ea45ce2ce361577a76fe89afd80abb68889ad2fc2a6bfd8a41b60f1ae53cb:ZohoMail X-ZohoMailClient: External In cxl_dpa_alloc(), some checking and operations need to be protected by a rwsem called cxl_dpa_rwsem, so there is a goto pattern in cxl_dpa_alloc() to release the rwsem. The goto pattern can be optimized by using guard() to hold the rwsem. Creating a new function called __cxl_dpa_alloc() to include all checking and operations needed to be protected by cxl_dpa_rwsem. Using guard(rwsem_write()) to hold cxl_dpa_rwsem at the beginning of the new function. Reviewed-by: Jonathan Cameron Reviewed-by: Dave Jiang Reviewed-by: Alison Schofield Reviewed-by: Dan Williams Reviewed-by: Ira Weiny Acked-by: Davidlohr Bueso Signed-off-by: Li Ming --- drivers/cxl/core/hdm.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c index e1d1fe5492ff..70cae4ebf8a4 100644 --- a/drivers/cxl/core/hdm.c +++ b/drivers/cxl/core/hdm.c @@ -603,36 +603,32 @@ int cxl_dpa_set_part(struct cxl_endpoint_decoder *cxled, return 0; } -int cxl_dpa_alloc(struct cxl_endpoint_decoder *cxled, unsigned long long size) +static int __cxl_dpa_alloc(struct cxl_endpoint_decoder *cxled, unsigned long long size) { struct cxl_memdev *cxlmd = cxled_to_memdev(cxled); - struct cxl_port *port = cxled_to_port(cxled); struct cxl_dev_state *cxlds = cxlmd->cxlds; struct device *dev = &cxled->cxld.dev; struct resource *res, *prev = NULL; resource_size_t start, avail, skip, skip_start; struct resource *p, *last; - int part, rc; + int part; - down_write(&cxl_dpa_rwsem); + guard(rwsem_write)(&cxl_dpa_rwsem); if (cxled->cxld.region) { dev_dbg(dev, "decoder attached to %s\n", dev_name(&cxled->cxld.region->dev)); - rc = -EBUSY; - goto out; + return -EBUSY; } if (cxled->cxld.flags & CXL_DECODER_F_ENABLE) { dev_dbg(dev, "decoder enabled\n"); - rc = -EBUSY; - goto out; + return -EBUSY; } part = cxled->part; if (part < 0) { dev_dbg(dev, "partition not set\n"); - rc = -EBUSY; - goto out; + return -EBUSY; } res = &cxlds->part[part].res; @@ -672,14 +668,18 @@ int cxl_dpa_alloc(struct cxl_endpoint_decoder *cxled, unsigned long long size) if (size > avail) { dev_dbg(dev, "%pa exceeds available %s capacity: %pa\n", &size, res->name, &avail); - rc = -ENOSPC; - goto out; + return -ENOSPC; } - rc = __cxl_dpa_reserve(cxled, start, size, skip); -out: - up_write(&cxl_dpa_rwsem); + return __cxl_dpa_reserve(cxled, start, size, skip); +} + +int cxl_dpa_alloc(struct cxl_endpoint_decoder *cxled, unsigned long long size) +{ + struct cxl_port *port = cxled_to_port(cxled); + int rc; + rc = __cxl_dpa_alloc(cxled, size); if (rc) return rc; From patchwork Fri Feb 21 01:24:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13984732 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 758E913DB9F; Fri, 21 Feb 2025 01:26:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101199; cv=pass; b=IpK9IeS2ahKv1xcsbQ3HLmBG3sCv84jemIQkZLdthrGCIqo6d3fa5x+nJtOVjNZgV0YkmaoN2SAoevX7c4dz1UnvJPPjAEjAwSj1+qceyaOalVkJk1wNn+zhEhIETUiZxoF5jkSXmhcsO/o862p7K2KUl9rv5fFp8UlAk13Jz/4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101199; c=relaxed/simple; bh=jJSVX2RrQtDAHNdHcfm0/wAcvFaJmQX1s57o1vOJo94=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=V/H1byrvO9CZ7k8r+hBMMsyaPr7aQhckLyqIP3RhfeOrddo5elTk8jQ884yubA/3FH4GlIthDM79N1Mfx98kOpV+H4I90MBv5ZIivUIOaX/gg6LTaxh6r1gcKNC0R0ek0eVDNbPxwNf6XC4YP0GEZoJcCN+nITI9yXeT5lJpB1Q= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=DSZm1U73; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="DSZm1U73" ARC-Seal: i=1; a=rsa-sha256; t=1740101168; cv=none; d=zohomail.com; s=zohoarc; b=BROVFzOWPGvONJKu41VUsV3duKcEtwdRFXMUuKl6qlSQwiivHAv7STqs8S/OnDRVVadjlBY3SNASQlKGhNqnUEl4i9jAvvyTtVROeuYPBSiNsbiSxBA+UR/E5jQBwQDscuRp3VWiInB5lep+lfiYvEnhtooWRSSXuubMA4WVMzA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1740101168; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=EC6hdBRAaNe+LM1jGuZXk5/BWpGrWVrmaRoztohpJHQ=; b=VjatBjoFAa7ZZ4sKYVsDCxrhjqgkPyVbEbsH9FRpJHSN/HhJfDWQIp5B1dyBaq2RhJD8ZpLU1TK9dmXvb5cRBtYgu2WEbXps9kGVV6AYulvdptMJajLX9wX5+F2ola7vktCHDPCln2IYPi1uf1v2fooAu12gZlvuBEpZQgxUuWY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1740101168; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Feedback-ID:Reply-To; bh=EC6hdBRAaNe+LM1jGuZXk5/BWpGrWVrmaRoztohpJHQ=; b=DSZm1U73dUgZqMWnZPtzeOQfXL5hz0n0KYcde40xq3FEPhk4R8nlw8GTIKpzc7HT 8pnBMGNRSh7UZo4JQq4MOxpMPDBPxynN36hRDkrD1Q48lP80jimQyC3SibI0Cm5073x WDlwARvYWplv/ZU2x5Ee3jypcVB0DOOLdji3U8yU= Received: by mx.zohomail.com with SMTPS id 1740101166835944.9869850009496; Thu, 20 Feb 2025 17:26:06 -0800 (PST) From: Li Ming To: dave@stgolabs.net, jonathan.cameron@huawei.com, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com, ira.weiny@intel.com, dan.j.williams@intel.com Cc: linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, Li Ming , Jonathan Cameron Subject: [PATCH v3 6/7] cxl/region: Drop goto pattern in cxl_dax_region_alloc() Date: Fri, 21 Feb 2025 09:24:52 +0800 Message-Id: <20250221012453.126366-7-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250221012453.126366-1-ming.li@zohomail.com> References: <20250221012453.126366-1-ming.li@zohomail.com> Precedence: bulk X-Mailing-List: linux-cxl@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Feedback-ID: rr0801122763afccc3e0bf13c4fcf237c500000a2e18be141714b8afd49bfb979b618f1b45778593ff423b69:zu080112274e6e69bb57c99848a7e6e5a7000073d3cb19de40d2a2c7cdfabd16edc081006965258de78e4823:rf0801122d5b45866a6bde9f6136f84f6b00001e311490b10bf04dfa8de33b7ea8801703c06894ccfa501d8da61161339fb6:ZohoMail X-ZohoMailClient: External In cxl_dax_region_alloc(), there is a goto pattern to release the rwsem cxl_region_rwsem when the function returns, the down_read() and up_read can be replaced by a guard(rwsem_read) then the goto pattern can be removed. Reviewed-by: Jonathan Cameron Reviewed-by: Dave Jiang Reviewed-by: Alison Schofield Reviewed-by: Ira Weiny Acked-by: Davidlohr Bueso Signed-off-by: Li Ming --- drivers/cxl/core/region.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 8e68091e3f20..9f082bc0f4e3 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -3037,17 +3037,13 @@ static struct cxl_dax_region *cxl_dax_region_alloc(struct cxl_region *cxlr) struct cxl_dax_region *cxlr_dax; struct device *dev; - down_read(&cxl_region_rwsem); - if (p->state != CXL_CONFIG_COMMIT) { - cxlr_dax = ERR_PTR(-ENXIO); - goto out; - } + guard(rwsem_read)(&cxl_region_rwsem); + if (p->state != CXL_CONFIG_COMMIT) + return ERR_PTR(-ENXIO); cxlr_dax = kzalloc(sizeof(*cxlr_dax), GFP_KERNEL); - if (!cxlr_dax) { - cxlr_dax = ERR_PTR(-ENOMEM); - goto out; - } + if (!cxlr_dax) + return ERR_PTR(-ENOMEM); cxlr_dax->hpa_range.start = p->res->start; cxlr_dax->hpa_range.end = p->res->end; @@ -3060,8 +3056,6 @@ static struct cxl_dax_region *cxl_dax_region_alloc(struct cxl_region *cxlr) dev->parent = &cxlr->dev; dev->bus = &cxl_bus_type; dev->type = &cxl_dax_region_type; -out: - up_read(&cxl_region_rwsem); return cxlr_dax; } From patchwork Fri Feb 21 01:32:05 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13984737 Received: from sender4-pp-o94.zoho.com (sender4-pp-o94.zoho.com [136.143.188.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 48D3578F20; Fri, 21 Feb 2025 01:32:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.94 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101565; cv=pass; b=OcQDXwA7fzwFLDYaUpNuFtjV+RN5OU00xMgHJac1SMx+gtwmqZvvzCx8o+sf0Vwq7J5KEg+J7q7/E8nkz2VTNarEAxrVUs8RN8KcVcmrRU/H9PW/W0WuepyhRzfGCFm/UFO5qgwn9qPyAYLXAe8bVPEUePgcQncNP6GCcXwawEw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1740101565; c=relaxed/simple; bh=l2ia1P25YQ3Mf4mDhF0k4Q5xMVysd29f7M4fX3GmTKQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=VFSNs41dVpvDVZ51BUn4JyxDvjHxBioq7qzeg8cdmwraerBzltB7o/cLNX8AmMsf3z8oYwTOKxz1ZqupZJIbxusdfzguce6qwWFmxE0+B7nrRkTBhoe1IbSztr1qXxPSLSbQO9eOyyaB8sz4x6DRMMllxU3A+Y7rPSubgq1PoU4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com; spf=pass smtp.mailfrom=zohomail.com; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b=FB+m5EbW; arc=pass smtp.client-ip=136.143.188.94 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=zohomail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=zohomail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=zohomail.com header.i=ming.li@zohomail.com header.b="FB+m5EbW" ARC-Seal: i=1; a=rsa-sha256; t=1740101546; cv=none; d=zohomail.com; s=zohoarc; b=Lu43KBZtEt7AFdDQImnyCTD3tI9u93k787RdZoT6lrq3GoQZYN5BqYIG0eXgxICwGaZ3Om9SX1IJcM6aOxGdzcjdRpbxsNDGckDo814Zvvwb4qGO572whzKtTCNzEB65rh1GAPE9qlRdJs9YEq3BiC5csIyRAcr6Kq+jc2XlvGs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1740101546; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=XbeiqXG68L38/7TIuRvqSKkNvkHaENKByIF8L8Iwwag=; b=F8/XI/oxXmoQfCNgjVsCrcOLh++tQOuZ2uiQs8HhmHQEJlA5XO4jQU02gdVtlXyUWZ+vfXp7MQ4kp5w+inTu9euoP8kxCM4tgaMzgtnvyZ6cT5gqkAk/XZX9atWfZS0v1dQIHJxi4Jgx5kK5uhAs3JfIlA8t9zGV7fIKyozIkFg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=zohomail.com; spf=pass smtp.mailfrom=ming.li@zohomail.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1740101546; s=zm2022; d=zohomail.com; i=ming.li@zohomail.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-Id:Message-Id:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Feedback-ID:Reply-To; bh=XbeiqXG68L38/7TIuRvqSKkNvkHaENKByIF8L8Iwwag=; b=FB+m5EbWp8c4V+L0koNO9ccyGNA3SXW3VbajxyHTW8A1EzD6VvrNPJFZm49G0a4L ZIGOtge210cC97PMTe141zlNDiGeJAT+lCI8Px7654uhzNPuwvsSdyrY4SlKFOlLKR+ mR2/I30Nfno2X70JLHDBLMnhvAlnfmB9Ma+igDH8= Received: by mx.zohomail.com with SMTPS id 174010154362018.66000672863879; Thu, 20 Feb 2025 17:32:23 -0800 (PST) From: Li Ming To: dave@stgolabs.net, jonathan.cameron@huawei.com, dave.jiang@intel.com, alison.schofield@intel.com, vishal.l.verma@intel.com, ira.weiny@intel.com, dan.j.williams@intel.com Cc: linux-cxl@vger.kernel.org, linux-kernel@vger.kernel.org, Li Ming , Jonathan Cameron Subject: [PATCH v3 7/7] cxl/region: Drop goto pattern of construct_region() Date: Fri, 21 Feb 2025 09:32:05 +0800 Message-Id: <20250221013205.126419-1-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250221012453.126366-1-ming.li@zohomail.com> References: <20250221012453.126366-1-ming.li@zohomail.com> Precedence: bulk X-Mailing-List: linux-cxl@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Feedback-ID: rr0801122787e1089ae2cfd4493ccb2d0100005e49b58b3a16a64b6ce805ef390e6ff2bee79d0789ac43cbcf:zu080112271e8ff87ffc2ac7730f475cf80000f6a46113b88e0ffe05cc23c5ad4e1571e5f568cb4cbceef50c:rf0801122df3d6a5f08848c75d152a743800008096e50ab0d2c03a46f4357e7c1ba25604d2764f294324b0c49bbc4ad15a92:ZohoMail X-ZohoMailClient: External Some operations need to be protected by the cxl_region_rwsem in construct_region(). Currently, construct_region() uses down_write() and up_write() for the cxl_region_rwsem locking, so there is a goto pattern after down_write() invoked to release cxl_region_rwsem. construct region() can be optimized to remove the goto pattern. The changes are creating a new function called __construct_region() which will include all checking and operations protected by the cxl_region_rwsem, and using guard(rwsem_write) to replace down_write() and up_write() in __construct_region(). Reviewed-by: Jonathan Cameron Reviewed-by: Dave Jiang Reviewed-by: Alison Schofield Reviewed-by: Dan Williams Reviewed-by: Ira Weiny Acked-by: Davidlohr Bueso Signed-off-by: Li Ming --- v3: - Drop the renaming of __construct_region() to construct_auto_region(). (Dan) v2: - Rename __construct_region() to construct_auto_region(). (Jonathan and Dave) --- drivers/cxl/core/region.c | 81 +++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 37 deletions(-) diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 9f082bc0f4e3..3cb91cf0e2dd 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -3215,53 +3215,31 @@ static int match_region_by_range(struct device *dev, const void *data) return 0; } -/* Establish an empty region covering the given HPA range */ -static struct cxl_region *construct_region(struct cxl_root_decoder *cxlrd, - struct cxl_endpoint_decoder *cxled) +static int __construct_region(struct cxl_region *cxlr, + struct cxl_root_decoder *cxlrd, + struct cxl_endpoint_decoder *cxled) { struct cxl_memdev *cxlmd = cxled_to_memdev(cxled); - struct cxl_port *port = cxlrd_to_port(cxlrd); - struct cxl_dev_state *cxlds = cxlmd->cxlds; struct range *hpa = &cxled->cxld.hpa_range; - int rc, part = READ_ONCE(cxled->part); struct cxl_region_params *p; - struct cxl_region *cxlr; struct resource *res; + int rc; - if (part < 0) - return ERR_PTR(-EBUSY); - - do { - cxlr = __create_region(cxlrd, cxlds->part[part].mode, - atomic_read(&cxlrd->region_id)); - } while (IS_ERR(cxlr) && PTR_ERR(cxlr) == -EBUSY); - - if (IS_ERR(cxlr)) { - dev_err(cxlmd->dev.parent, - "%s:%s: %s failed assign region: %ld\n", - dev_name(&cxlmd->dev), dev_name(&cxled->cxld.dev), - __func__, PTR_ERR(cxlr)); - return cxlr; - } - - down_write(&cxl_region_rwsem); + guard(rwsem_write)(&cxl_region_rwsem); p = &cxlr->params; if (p->state >= CXL_CONFIG_INTERLEAVE_ACTIVE) { dev_err(cxlmd->dev.parent, "%s:%s: %s autodiscovery interrupted\n", dev_name(&cxlmd->dev), dev_name(&cxled->cxld.dev), __func__); - rc = -EBUSY; - goto err; + return -EBUSY; } set_bit(CXL_REGION_F_AUTO, &cxlr->flags); res = kmalloc(sizeof(*res), GFP_KERNEL); - if (!res) { - rc = -ENOMEM; - goto err; - } + if (!res) + return -ENOMEM; *res = DEFINE_RES_MEM_NAMED(hpa->start, range_len(hpa), dev_name(&cxlr->dev)); @@ -3284,7 +3262,7 @@ static struct cxl_region *construct_region(struct cxl_root_decoder *cxlrd, rc = sysfs_update_group(&cxlr->dev.kobj, get_cxl_region_target_group()); if (rc) - goto err; + return rc; dev_dbg(cxlmd->dev.parent, "%s:%s: %s %s res: %pr iw: %d ig: %d\n", dev_name(&cxlmd->dev), dev_name(&cxled->cxld.dev), __func__, @@ -3293,14 +3271,43 @@ static struct cxl_region *construct_region(struct cxl_root_decoder *cxlrd, /* ...to match put_device() in cxl_add_to_region() */ get_device(&cxlr->dev); - up_write(&cxl_region_rwsem); - return cxlr; + return 0; +} -err: - up_write(&cxl_region_rwsem); - devm_release_action(port->uport_dev, unregister_region, cxlr); - return ERR_PTR(rc); +/* Establish an empty region covering the given HPA range */ +static struct cxl_region *construct_region(struct cxl_root_decoder *cxlrd, + struct cxl_endpoint_decoder *cxled) +{ + struct cxl_memdev *cxlmd = cxled_to_memdev(cxled); + struct cxl_port *port = cxlrd_to_port(cxlrd); + struct cxl_dev_state *cxlds = cxlmd->cxlds; + int rc, part = READ_ONCE(cxled->part); + struct cxl_region *cxlr; + + if (part < 0) + return ERR_PTR(-EBUSY); + + do { + cxlr = __create_region(cxlrd, cxlds->part[part].mode, + atomic_read(&cxlrd->region_id)); + } while (IS_ERR(cxlr) && PTR_ERR(cxlr) == -EBUSY); + + if (IS_ERR(cxlr)) { + dev_err(cxlmd->dev.parent, + "%s:%s: %s failed assign region: %ld\n", + dev_name(&cxlmd->dev), dev_name(&cxled->cxld.dev), + __func__, PTR_ERR(cxlr)); + return cxlr; + } + + rc = __construct_region(cxlr, cxlrd, cxled); + if (rc) { + devm_release_action(port->uport_dev, unregister_region, cxlr); + return ERR_PTR(rc); + } + + return cxlr; } int cxl_add_to_region(struct cxl_port *root, struct cxl_endpoint_decoder *cxled)