From patchwork Tue Feb 11 07:57:21 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13969961 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 C1A991D5178; Tue, 11 Feb 2025 07:58:03 +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=1739260685; cv=pass; b=efjro1dogmpybtTOnePEX3+3owufwvjRQ2YcNPjwPcKpzMUNqkKZ3Ux6uvbgAC1qGhDkiybbFysAov+vETTW4BfggkhCHl9wW0zJAQo1EOwzyH6vIBAyId1XFKfmkk3/tLhSJJ35PpvmTLC60m9zZdFrT6j+hbzTtDEFvn2F1c4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739260685; c=relaxed/simple; bh=tsgS7l33eNAKf3JQWvmEtckgKYt+kqK5VU9I983EgEw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Yq8Z8Y6IlpYv7DUmnQ4g8SECe8dAfUiZuVl3q0cPm+oTEWk2dRPJrdfbK9yRLALjuW9AzQkjcqUnh5f3J1JQenfXQmHRZfc3L+cBzdzD/Hn5DfmD5thh6CO+WiDSa7wA4NAO8kYTbdwuBGRnGvhrzTlUJnGfyMLTD3XEQQ5tGM8= 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=IAqPF++I; 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="IAqPF++I" ARC-Seal: i=1; a=rsa-sha256; t=1739260671; cv=none; d=zohomail.com; s=zohoarc; b=fYwmSB1xa9p7zk6afiOioMUi55rOr86a3BE1uBN9MpkoXraaSAkz61fNzP3ypx6I7GiIUe8U2gZYqCeShOhKljST5+JJwyjYedaZ4EFvZhBWdlVZBoAty0XAuUwXWmgGnlrLMruaekvTMJ8GyTY+I9UJW8//ed4W3lGzNzCoqq4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739260671; 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=l7yDY1YrOXyl3zDScnNZ9aSbnu0JkwNPQ8jA0FjYLwg=; b=Wh/sPmP9VTY25pPPhgvtu3rCsSh3LAuFvk0M/CrKXEI786W/KqDkGH/U1l427xWbzcm7p/5YXY7Yi9hzTeYG6kQNnG4UhbAbwxQoouP4TWLRlq85dIqNXjYnTD6dPDWLCfrBF0gJvzgyrh6yBJOnT9FOyicKj8hSSZ2v6zjbfrY= 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=1739260671; 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=l7yDY1YrOXyl3zDScnNZ9aSbnu0JkwNPQ8jA0FjYLwg=; b=IAqPF++IejIVV8rxQeUwHAmf4ZpiVn1OAaZDXf1JtRvio63K70NxcX45iiR88tSr diQsGoG3/F8XcFE/9L6uYg+fzMiiee+CHVNABHIqwd7Kvwm2BsgEovSDm3tpT3PZuJh xW/v11WqjtAS2tVtuqTXxy2IOIKYrjqE3ckPq9Q4= Received: by mx.zohomail.com with SMTPS id 173926066854426.558442515489446; Mon, 10 Feb 2025 23:57:48 -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 Subject: [PATCH v1 1/7] cxl/core: Use guard() to replace open-coded down_read/write() Date: Tue, 11 Feb 2025 15:57:21 +0800 Message-Id: <20250211075727.351895-2-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250211075727.351895-1-ming.li@zohomail.com> References: <20250211075727.351895-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: rr08011227e9904aec35828b83d44c7de4000091c765d0458b405acc41a555a6b5de6c358d4e561867ad1f79:zu080112276e7dfa5c5aa43ecf5faf276b000061caf1719aaa9f73aa82aa340a1c0527b4852a2ba39168c1f4:rf0801122dede5117c59a4b6e7d1bfa84d00005f26c7d168f75a419f2819b33f3b8558735a7a68375d9c9740151211eac5e1: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. Signed-off-by: Li Ming Reviewed-by: Jonathan Cameron --- drivers/cxl/core/hdm.c | 9 +++------ drivers/cxl/core/memdev.c | 9 +++------ drivers/cxl/core/port.c | 8 ++------ drivers/cxl/core/region.c | 3 +-- 4 files changed, 9 insertions(+), 20 deletions(-) diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c index 50e6a45b30ba..2bb2782a72ad 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"); @@ -250,9 +249,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); } /* @@ -364,10 +362,9 @@ 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 size; } diff --git a/drivers/cxl/core/memdev.c b/drivers/cxl/core/memdev.c index ae3dfcbe8938..98c05426aa4a 100644 --- a/drivers/cxl/core/memdev.c +++ b/drivers/cxl/core/memdev.c @@ -564,10 +564,9 @@ EXPORT_SYMBOL_NS_GPL(is_cxl_memdev, "CXL"); void set_exclusive_cxl_commands(struct cxl_memdev_state *mds, unsigned long *cmds) { - down_write(&cxl_memdev_rwsem); + guard(rwsem_write)(&cxl_memdev_rwsem); bitmap_or(mds->exclusive_cmds, mds->exclusive_cmds, cmds, CXL_MEM_COMMAND_ID_MAX); - up_write(&cxl_memdev_rwsem); } EXPORT_SYMBOL_NS_GPL(set_exclusive_cxl_commands, "CXL"); @@ -579,10 +578,9 @@ EXPORT_SYMBOL_NS_GPL(set_exclusive_cxl_commands, "CXL"); void clear_exclusive_cxl_commands(struct cxl_memdev_state *mds, unsigned long *cmds) { - down_write(&cxl_memdev_rwsem); + guard(rwsem_write)(&cxl_memdev_rwsem); bitmap_andnot(mds->exclusive_cmds, mds->exclusive_cmds, cmds, CXL_MEM_COMMAND_ID_MAX); - up_write(&cxl_memdev_rwsem); } EXPORT_SYMBOL_NS_GPL(clear_exclusive_cxl_commands, "CXL"); @@ -590,9 +588,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 78a5c2c25982..2c59d65bc18b 100644 --- a/drivers/cxl/core/port.c +++ b/drivers/cxl/core/port.c @@ -549,13 +549,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 e8d11a988fd9..e3bb33109ced 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -3216,10 +3216,9 @@ 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 rc; } From patchwork Tue Feb 11 07:57:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13969962 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 CC57F1EE7A8; Tue, 11 Feb 2025 07:58:18 +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=1739260700; cv=pass; b=MBJB/4MU/t5RAcwIHO15Nx6uvKABjgbQOqNoTsuLB9yU+GYvLUfLfWLbkC0ev7mVgKD+b8AbKa37371bzE+Pbr2T0x642qBLrD2kJFqd6J/Q3V54IsUKoBQK3um41cf2rBeMe9nSiZVFaJIvWphsZ2CCbEsJqhzggos2yVcXHGc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739260700; c=relaxed/simple; bh=RsuQC98c5NW6U84oVbbeHbKVBD7J/tzW1jwJJpYjrC0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jlZz5L77Kp8CdF6/jprokC2pLPjsWANdpphbuhs2KibaNKxkLfkHV88zKT/cSlt3rfI8Ts/AiulaqTIWoyEd4CTL0EdqHvJ8kDWJ7syvDo41sWskd9ppfmh7ficAMOP66GWXuuGgeiA6/ET9FmryTV578CktlRGmYgx1ZDZp8oY= 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=ZyHbnAoF; 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="ZyHbnAoF" ARC-Seal: i=1; a=rsa-sha256; t=1739260681; cv=none; d=zohomail.com; s=zohoarc; b=UOTs2AES9maLtSk7dtl1050VL+sdF28M/g3ioT/OAOwDlcHYI1VibbTE29dWLbejqPOieYSsVdonUAtMOn0yzulyIjCTvmdZARNdIZFlYoAlWpcqWbL+nK/xsUBUeEveZG7OXzpEyV5Omc5DigGSRYKdhKktsEv2YBHgNYNDmhM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739260681; 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=iTjzGUBbZVU0q97UQAcQgUCiMr/iWP/BUtbF9Kswfxc=; b=Bn7JGZFkGHvobwoYr77SpmcPrvfzX7u11lnJs22BiaGuY2JDakvDxN9Tm3hddJ9YIHVtVpDLeDFLkyBoiYhXsN4S1BEKBy7eRchbXSQ1kIBYjF4YfshWtWjrVkQ9PZALc9ZWfcjrZ6InKUIMmJeSpcTSK5kcmZf5qB5gxEMQuz4= 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=1739260681; 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=iTjzGUBbZVU0q97UQAcQgUCiMr/iWP/BUtbF9Kswfxc=; b=ZyHbnAoFT6JUNgBICdLcQnhvUOq3PJ96bQNRLRtSxSpQ7Cg4ay2Y+iD/XtymA2XB LQ2QNzp7OdvrqNhgS0SSq888A4Gg+vUcX7KCDXulkqnYm9bORH3wDs/mYvFiBVxhRgb aO8nPiGCZodQxf6pH6cmJdFrqGQaBJEsOAqdCV8U= Received: by mx.zohomail.com with SMTPS id 173926067923043.902923267423944; Mon, 10 Feb 2025 23:57:59 -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 Subject: [PATCH v1 2/7] cxl/core: cxl_mem_sanitize() cleanup Date: Tue, 11 Feb 2025 15:57:22 +0800 Message-Id: <20250211075727.351895-3-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250211075727.351895-1-ming.li@zohomail.com> References: <20250211075727.351895-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: rr080112273f19142c8f53c9d31c494ab30000a09fefd3bf3161f9d1e0589106825e6249b7170274c216cc1e:zu08011227a51294923f275238a6471abb0000f57951747b7652f854e50c3804f1664aa319af59137a43cd1b:rf0801122d861f71ad09848a965b2940d300009fa9f30fb5ad6638fc1116468b195858253e608ae6bb2dd8ab70a1f8b69faa: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. Signed-off-by: Li Ming Reviewed-by: Jonathan Cameron --- 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 548564c770c0..0601297af0c9 100644 --- a/drivers/cxl/core/mbox.c +++ b/drivers/cxl/core/mbox.c @@ -1222,23 +1222,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 int add_dpa_res(struct device *dev, struct resource *parent, From patchwork Tue Feb 11 07:57:23 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13969963 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 049D41EDA1C; Tue, 11 Feb 2025 07:58:27 +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=1739260709; cv=pass; b=IclYnv5qBY2s+NcSP+RZguTsHfGLBGahGqFK9U1ZLPSfRsnuRrr9/qNeb9RZf0YprHRKXP6K66U/FgJsmCSCY9BbRWBNDMhvC8AIZ+ttDmnTDhVdtLYmHshbKkHMBYfk0P6ddTX3DEiPytR3MQPKaIq0i6SMq12sqdWUPZ14zDo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739260709; c=relaxed/simple; bh=paFHILdJMJY9q+grGENdE0DuH6OPrCNJeLRtGxndQ3c=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mXYQDe3R6aTC/c8KZzjL0P3rvXR65W4bjR0K/KdJL2ymsaLC29LAH4A0GZpuFDG2ueDXvYFWjgKtpi2RppdJQNuJ1sGdEEfg7EkGfpLowISbpLpr9YqQEXxzmphp6jZ3hjKppI4KZMDXmiPY7JjnL+jucMZgIVdlcUehaH/NVRM= 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=T9NjZFNm; 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="T9NjZFNm" ARC-Seal: i=1; a=rsa-sha256; t=1739260693; cv=none; d=zohomail.com; s=zohoarc; b=MnUIDYU3CINOzLSzI0xiz8k9WIKuOZIlq17ZVTJAJfL/QQcFgWDgpsDeNVK5fP0qVJubVMERDXLbJPOvLDo6Ttk8SXnk0n2m+vxm6QhFU4BTM4IrfX04nLmIkmQPWBrM/BdlKVZeFgmJOsZ6+bdaHO9Mfvaosane/eAMZoAvH5Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739260693; 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=b8QUtKcULY5BSevs4btZ0h9+H1szEO683cNvyCMY56k=; b=FQVxz3igT+d4G38J4iLNH9Cpm36yO8nitrtTPxTEDIfZzeqSkmWNqtg5NDY8G69XhC27ZiTrdqf4lCUa4WRtGfdMiQzGoquaUoOb2J+C39XRTXBRwbZk8pih+kkCXruOFfx5OAbuXDfgIN8AWJpBWNxJcLMslPiQmPRGT607qlA= 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=1739260693; 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=b8QUtKcULY5BSevs4btZ0h9+H1szEO683cNvyCMY56k=; b=T9NjZFNmOpBS1yXjWidBFH6ikfK1h8cgfo7qQ4qFE3s+btbo6WS9T3ErJO4N6zmD aF0jAhpkzP+HxHqGHVRgDykMEngFh4WRTy127Z4IfpGOK9QreAgRS/Wi1TkRLv2LOFo EXm5anucH1p6M539PnVl69SjIS287VRqWgm+TVD4= Received: by mx.zohomail.com with SMTPS id 1739260688941164.39858853682188; Mon, 10 Feb 2025 23:58:08 -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 Subject: [PATCH v1 3/7] cxl/memdev: cxl_memdev_ioctl() cleanup Date: Tue, 11 Feb 2025 15:57:23 +0800 Message-Id: <20250211075727.351895-4-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250211075727.351895-1-ming.li@zohomail.com> References: <20250211075727.351895-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: rr08011227a735d99e4fb1a64d7016e5630000eb5531fea2251acb5e148a3b5ce699d36cacf35e3621d9fdba:zu0801122785f10c4a58cdeb253287c4cb0000ec2deb8b3314226c709437142815e8189c424730212f3aec54:rf0801122db36a6c6d0d2e50623137a2a30000baa950606a0939be5d95160d57424071893a90df47d6b4723a096160dbd16b: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. Signed-off-by: Li Ming Reviewed-by: Jonathan Cameron --- 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 98c05426aa4a..6f90dcd626f9 100644 --- a/drivers/cxl/core/memdev.c +++ b/drivers/cxl/core/memdev.c @@ -668,15 +668,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 Tue Feb 11 07:57:24 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13969964 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 10B171EE7CE; Tue, 11 Feb 2025 07:58: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=1739260719; cv=pass; b=UwzAS9lH0fdDANtMwFxZ+1JlUluAMoLyEHwg28f+4aThjuAtx/7/oEgE7znUpj+dbgXEnDAce+jDG866ifySdgTqxrhZ2TanpBdIGKpgdcQqDYgumbMCMTJz/RKw/KPcIq4Zv2JDbL+l3+riSyY5CmZgZEma4ylGyh2A9A2qkJA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739260719; c=relaxed/simple; bh=B7dBeu5tq3u0rnwnRubcu96D4tTv2tSuExxMShQSFWE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=jbyv1ZIrsDy25Wy5TgKKyO68wDl7QYO39a34wCddj06bYML+r0FJZgtTt5yHL6MBLsBZ/H6mJ6FBOttuE0mmvnK3NDejJWyVxiAiRodnVs/WJr8xDiQjkzSz4SX35lqzGz73OOHtHkj5PxdMaLml03G6vENPj3hFKJ2dAmeGEWM= 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=bBa+GnL8; 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="bBa+GnL8" ARC-Seal: i=1; a=rsa-sha256; t=1739260702; cv=none; d=zohomail.com; s=zohoarc; b=hVM5jm/5Aajfz0JX9no5H4vYxPi3g97Sh+GsKefK/kXnDt6h5vKAJKQf2SUOfYzYUJVHuiO6MO666qAvKhHZfh3Ia+9KR72meenRA7H1lWZ8XWkzPpOHw7QCaLrn608tZ69YC79kZQ6lU9+kfe8L51I4XGsKS1oF947QFVpmiZ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739260702; 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=dcqrKbEYpXtPntgi9g1TFJ4gOMFpUK/YoryvdERmHSs=; b=avEHp2Gxl1AiPdmI/wVLzm/d5aCH7pPIo04EFROwXi68p3Nnxj2B428zl5parFNuqEt7UMVaRi3nprje/N5RBBOQRkZFALH5+G+6C9VuzpUDp7HIphfpUkkCsyoHlVf/jcfLcbpRIKLUCIwrNm5+ggtdJTGifPh1jrkMyFvkd7w= 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=1739260702; 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=dcqrKbEYpXtPntgi9g1TFJ4gOMFpUK/YoryvdERmHSs=; b=bBa+GnL81ozw1eJicq1y9/w2Q1ev7qyHsCFcVy95cW1hOUb/dFpOoQf6QFHSy4hc R/zDJwvwc597bT/u0g8bjq0o751WPJD7ccQ2mXWMaySZFEe4qTzFh8zziOIblK850bM uT1M4jkg3vn+FWU1xU4dTEPZiYEoZws5sBKXuUUA= Received: by mx.zohomail.com with SMTPS id 1739260699005446.9363537917435; Mon, 10 Feb 2025 23:58:19 -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 Subject: [PATCH v1 4/7] cxl/core: Use guard() to drop the goto pattern of cxl_dpa_free() Date: Tue, 11 Feb 2025 15:57:24 +0800 Message-Id: <20250211075727.351895-5-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250211075727.351895-1-ming.li@zohomail.com> References: <20250211075727.351895-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: rr080112271c03e09f54e2850cd15ff89900007f52c70684e3afe39734918b64bac0608e5cb1d37e428d02f6:zu08011227d9171e7f1569ae06da327252000022d5fc6a0a049266452b46a30d7d2ca88a562f8fa6f658bf3e:rf0801122dcc61a2396dfa7a3217788d440000ff8908c3bf899acf601c9cdec3f1cbd5aa6f255f923def5afa0e3e843fedea: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(). Signed-off-by: Li Ming Reviewed-by: Jonathan Cameron --- 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 2bb2782a72ad..4d753520a79a 100644 --- a/drivers/cxl/core/hdm.c +++ b/drivers/cxl/core/hdm.c @@ -384,35 +384,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_mode(struct cxl_endpoint_decoder *cxled, From patchwork Tue Feb 11 07:57:25 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13969965 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 5BB861EE006; Tue, 11 Feb 2025 07:58: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=1739260732; cv=pass; b=b1FqB5d4vTDv6pkQ/ak9FP1NUmLsYCr6W95TY8PFRam5lmxqC5p+hf+EMRhBIWePDzxiJQJpbV6Dab4a9esQyRCnaeciDIN4YYMTSTV8wHLqVfYbuj7IF3svk1MP2bx/wvhQgmHPod7TAo1hsJZ+xkDG5tvd/ZbfG1EJq3cqCuI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739260732; c=relaxed/simple; bh=vkzV05Gs7XYdaSqllXxUzjJhF64gmbcaH6g2i+S1ZeE=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=YJJxfIJKvEhDMLPRVHQajro9yfmCluc8OLIcJNLE198DS2iPpSq89/XtYIXTHBrocstsy53ePq/QKFtIhoD3sSB5cHJA6iPy6pPmG+C1Difu1K4xSguFbrZI6etrBBQiZ5aygOoTeMh0j9QGoo9dUofzAjaHQbSmshSYuPYX5eo= 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=A5dWF/Kz; 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="A5dWF/Kz" ARC-Seal: i=1; a=rsa-sha256; t=1739260712; cv=none; d=zohomail.com; s=zohoarc; b=E1gBDwoi1Bb3lNK+4qkoTEZex4ubrnfuAPBvPXkoCfbB5isbTP0P/EBna+FF+iszCOo/dbWhwxr9gLC1bnPpk6acL3SvR2uNmrRhPNcn0DMQGYfY66GixQb7h/+EA8xBQLpNTPuM8inYeWiO/GcaXobox8KhDNa7dcLEs2EIKdY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739260712; 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=xo6LVXxBk8luultuiNJGM+k/vs2dVpcg7QsqMgG6nvU=; b=horctQeFEaGeMzlpr/JWuRLJ+AlIAku/xf5AYvy81NiLfhb6CO4QusOFPZMamVnhUc4h2B3OI0cntbLe+iQEojkIVmpJC4EqeqPr3LhgGR49X0q69PfIxmKu0nn60YQT+hocc3dDkf/CgStmynUMhokSGVvBDlbiN1Ebm0r9xmM= 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=1739260712; 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=xo6LVXxBk8luultuiNJGM+k/vs2dVpcg7QsqMgG6nvU=; b=A5dWF/KzsxL7i7pDrDwFEQqP/exZlGSOsQyhyG9dLxg80G5aEnKrLE2oY8POdigD Y97Ku2W59bbIKM5EAttIXCfTMGb6Lylle6AytO0S3Uen0bTi1ol6QAvwXQYHlAn+oh+ 6Qo00dYJBKX/WCVpSsWeB6F/pFCFhKX+UPQMCpsU= Received: by mx.zohomail.com with SMTPS id 1739260710354138.37583421281113; Mon, 10 Feb 2025 23:58:30 -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 Subject: [PATCH v1 5/7] cxl/core: Use guard() to drop goto pattern of cxl_dpa_alloc() Date: Tue, 11 Feb 2025 15:57:25 +0800 Message-Id: <20250211075727.351895-6-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250211075727.351895-1-ming.li@zohomail.com> References: <20250211075727.351895-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: rr0801122718be4e9ab09d08c67a3cc64800002b9f99af80e6f326acc9192af39c5ebdb4e95f8c4d79872a8a:zu08011227c20d155d6494045a0e02dae400007bc391ada48f10dc61b8d786c1a634e274d56516271839e98d:rf0801122d406f06170db6aa24e559e01c00002326dc041cb13330494fd9232a8015ac92e5e2de37282883b4153bd53237b7: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 procted by cxl_dpa_rwsem. Using guard(rwsem_write()) to hold cxl_dpa_rwsem at the beginning of the new function. Signed-off-by: Li Ming Reviewed-by: Jonathan Cameron --- drivers/cxl/core/hdm.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/drivers/cxl/core/hdm.c b/drivers/cxl/core/hdm.c index 4d753520a79a..27813c430db9 100644 --- a/drivers/cxl/core/hdm.c +++ b/drivers/cxl/core/hdm.c @@ -444,29 +444,25 @@ int cxl_dpa_set_mode(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); resource_size_t free_ram_start, free_pmem_start; - struct cxl_port *port = cxled_to_port(cxled); struct cxl_dev_state *cxlds = cxlmd->cxlds; struct device *dev = &cxled->cxld.dev; resource_size_t start, avail, skip; struct resource *p, *last; - int rc; - 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; } for (p = cxlds->ram_res.child, last = NULL; p; p = p->sibling) @@ -506,21 +502,24 @@ int cxl_dpa_alloc(struct cxl_endpoint_decoder *cxled, unsigned long long size) skip = skip_end - skip_start + 1; } else { dev_dbg(dev, "mode not set\n"); - rc = -EINVAL; - goto out; + return -EINVAL; } if (size > avail) { dev_dbg(dev, "%pa exceeds available %s capacity: %pa\n", &size, cxl_decoder_mode_name(cxled->mode), &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 Tue Feb 11 07:57:26 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13969966 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 AC91B1EE7A5; Tue, 11 Feb 2025 07:59:02 +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=1739260744; cv=pass; b=lK3YnjMBefzq5ZH94fM3fHavaCiaoy0uoIqANq9c0gCGvLicJ9rikX3MsnQaOS1tv5uQbaByBa/BGrVtdQZMaSL1MwuT6XB7CdyKE8VwdNaLxtST95tCY9NVYYnU/Rg3RLtooPM4sByIKamsKhFn2g3D6ePNoljfT9HQHfdZwMA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739260744; c=relaxed/simple; bh=1O+6Raac1UXIYzEZIawfYHTpWeTFO2h2JmW576CIqJU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=E8vQ6VAUkdUcGGzoxS44k6oWb7XOCeempG8id60+w5S6s7Q/AWY61CWMJlaszF4kmwpBDaHzyyyFOrrTHLy2K3aXDOaM88Pad5/rGSbhG8apq35TPDFSd2NUVbCctkQTItpL/lRh8WuE0F3OHKWD2b8D2RCbzS1S1PT4iEaYLxk= 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=TOClt8sS; 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="TOClt8sS" ARC-Seal: i=1; a=rsa-sha256; t=1739260724; cv=none; d=zohomail.com; s=zohoarc; b=cxOGDz6ZyXMo7F6KbP3+YdjqDNAGdMfjPhxteRaSxnKOLiXJLcRUaBKGsnhYvwCGglK7H1hi4vl/IZ+AMNJkUOfbThMhNA8M1N8yNR7Va5MxpzlfSCMn49wJWMKcrmm1QOeMizS52Z5Ep0irXu2LOQ/Hvp4Bj9iyflSUQDdYObI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739260724; 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=M53iekaUTE9kiToZzRvGlu6mrTrD0dl1s7HNg2PhFzw=; b=nCFKB1ahsY3zP1qmYXycvrbl48kRd45t/sUvReWkN84WzUgr9qOyA70kQvBqUNUS7bISeNhj3ZnWo843SXV0IQ9U8mYE+ATKYtBWVDi+8XDHq7ysykBjD64nkaMeZa0e+5QPHqutYFjo4eY67lIsEgCHvEFyMygD0SyzsTvmhb8= 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=1739260724; 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=M53iekaUTE9kiToZzRvGlu6mrTrD0dl1s7HNg2PhFzw=; b=TOClt8sSD9ihRsMPPwp3jK6SVhLb+e4zNGd1BsQ59JYyFvmhvqTet8bY+O1O4j9C ubVHbxOI7vgX6H0zvtiyLRDvTQpGFJjZoB84xGJajB7lu2bmPTP7R3idRyZIP86alHL b5UMuJoaSNjGYj0ry3BRI58coYuJ9reXEb/D6/j0= Received: by mx.zohomail.com with SMTPS id 1739260720842743.4866933984274; Mon, 10 Feb 2025 23:58:40 -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 Subject: [PATCH v1 6/7] cxl/region: Drop goto pattern in cxl_dax_region_alloc() Date: Tue, 11 Feb 2025 15:57:26 +0800 Message-Id: <20250211075727.351895-7-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250211075727.351895-1-ming.li@zohomail.com> References: <20250211075727.351895-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: rr08011227dff62015b7b668575db7403c0000328c3e1bab183ae8a0fec3faa15bb224780dd55d0922aa6e2b:zu080112274ae7e0741b2ff80ae36db9eb00007e8765f3ae3a74d6a16013d8c9884faa89f6e8415175d09962:rf0801122d5801bd134d2035ed3485e31b000069299876dad2030739cadd74dc2df7503546c44759e6cf54bd8f9702aec9e3: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. Signed-off-by: Li Ming Reviewed-by: Jonathan Cameron --- 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 e3bb33109ced..36f3771818d3 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -3038,17 +3038,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; @@ -3061,8 +3057,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 Tue Feb 11 07:57:27 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Li Ming X-Patchwork-Id: 13969967 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 C61C31EE03B; Tue, 11 Feb 2025 07:59:13 +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=1739260755; cv=pass; b=bFLJ0mdmwaLN1QHl48y1fdKPnzJfQli4ElkT7Yyoc8EzoPX2mBIv6A0svta9pwWDMTi1+icEkuypiVOjsvIB5URZ97po9MXQT+0rO6XO61w1QTtlHJbtV1FEd/21UjLWXH2su2NTPeNUwaY7zCZKgPGfINVkRFBeLIz3u7dRAcA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739260755; c=relaxed/simple; bh=lJBCGL/Hh2TS6/s5qoC6JTS7hu4S+3tX/1ZzND8Kyr4=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=clN1PIDF22viz2ZP85VVVIqRrIu8IGCmPSUfh25E+JlXJR/T1PRE0eyNKFPPk97StsyBRbFC4wc3ydMmgs0E64CjOAflmwKdoNzhk9jjHkG/3gIhSrFrjJ9yYn8RPGxK6JrWlGRqOdS/Vu7raFlg78JvZOffr9sMyK1zgiiz9iU= 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=WZKO2OCl; 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="WZKO2OCl" ARC-Seal: i=1; a=rsa-sha256; t=1739260732; cv=none; d=zohomail.com; s=zohoarc; b=Uv6gh6oYCe8Ir8pcCKm9Hm+yLXl67gqZvLJi4lyxxmSEteC5U6pSjYfoBa0vKQle8lO+Dy5Fotd51oyzDCWHPUZyBk2XfcBcifW8pOdCujFRl77WhN/8eW/YcbnK/6hWjl38QCtjXP0xaErGgL4GAwuWUjG3lMKKe2fa1nUuJPg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1739260732; 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=6LwYrCD3X+PwbPksm0pt4YiasLveKpUgjhEnYam7Dcs=; b=oHv9NwYVxskoSTei4TsXRX/2Vow8AfeZVrlea4GtD3Cb0Edo1JOgP4C/7H5biCmOqzHcRywGZ8E13cBRjvej9rOzW/NjwwbSk5Hsr39YiXCDIZuwLlmH9hOq+KYKEafMZTFoWN6iPpUV4CQCNfMYs13OvBSNYMTZRXSpCTnu/sk= 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=1739260732; 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=6LwYrCD3X+PwbPksm0pt4YiasLveKpUgjhEnYam7Dcs=; b=WZKO2OClOkDBPXbMka54htAF8ZzrTmK4Xf4CVEgBN0XcIaWAol/9djJjqxd1xu7p fiQpOmJ8mkIdvFQs7JlH16tUluMKCkBBhnacE4/5PXD+/80n8Y82YxmTOCJMVX8iLKZ 2FRQQGcAlBXI57P38/H1qhL3PRcKehVexMeeYgTM= Received: by mx.zohomail.com with SMTPS id 1739260730470623.7889860661993; Mon, 10 Feb 2025 23:58:50 -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 Subject: [PATCH v1 7/7] cxl/region: Drop goto pattern of construct_region() Date: Tue, 11 Feb 2025 15:57:27 +0800 Message-Id: <20250211075727.351895-8-ming.li@zohomail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20250211075727.351895-1-ming.li@zohomail.com> References: <20250211075727.351895-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: rr08011227a16d10b5d8d57337aeb4a1620000d3baf67c89913e38df482e4c14c0553e5fe5fdc1b30b84f8ff:zu08011227890ac9626327ec3b1e672446000023a22b6c450890102d8749d89a9a0f72cbe7bfc3443a4624c7:rf0801122dab5f529589e1b01a51ff49aa0000e659d3e0033e6df4da9ea8bfb638e91f382e7b40bbe40434fb92ee9a27be4a:ZohoMail X-ZohoMailClient: External Some operations need to be procted by the cxl_region_rwsem in construct region(). Currently, construct_region() uses down_write() and up_write() for the cxl_region_rwsem, 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(). Signed-off-by: Li Ming --- drivers/cxl/core/region.c | 71 +++++++++++++++++++++------------------ 1 file changed, 39 insertions(+), 32 deletions(-) diff --git a/drivers/cxl/core/region.c b/drivers/cxl/core/region.c index 36f3771818d3..170278bdcedc 100644 --- a/drivers/cxl/core/region.c +++ b/drivers/cxl/core/region.c @@ -3217,49 +3217,31 @@ static int match_region_by_range(struct device *dev, const void *data) return 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) +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 range *hpa = &cxled->cxld.hpa_range; struct cxl_region_params *p; - struct cxl_region *cxlr; struct resource *res; int rc; - do { - cxlr = __create_region(cxlrd, cxled->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)); @@ -3282,7 +3264,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__, @@ -3291,14 +3273,39 @@ 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_region *cxlr; + int rc; + + do { + cxlr = __create_region(cxlrd, cxled->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)