Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/1936112/?format=api
{ "id": 1936112, "url": "http://patchwork.ozlabs.org/api/patches/1936112/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-aspeed/patch/20240516181907.3468796-11-eajames@linux.ibm.com/", "project": { "id": 57, "url": "http://patchwork.ozlabs.org/api/projects/57/?format=api", "name": "Linux ASPEED SoC development", "link_name": "linux-aspeed", "list_id": "linux-aspeed.lists.ozlabs.org", "list_email": "linux-aspeed@lists.ozlabs.org", "web_url": "", "scm_url": "", "webscm_url": "", "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20240516181907.3468796-11-eajames@linux.ibm.com>", "list_archive_url": null, "date": "2024-05-16T18:18:37", "name": "[v3,10/40] fsi: core: Add slave spinlock", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "f150bea459a7fe14d99be357ffe4bfb41c02b216", "submitter": { "id": 74989, "url": "http://patchwork.ozlabs.org/api/people/74989/?format=api", "name": "Eddie James", "email": "eajames@linux.ibm.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-aspeed/patch/20240516181907.3468796-11-eajames@linux.ibm.com/mbox/", "series": [ { "id": 407101, "url": "http://patchwork.ozlabs.org/api/series/407101/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-aspeed/list/?series=407101", "date": "2024-05-16T18:18:31", "name": "fsi: Add interrupt support", "version": 3, "mbox": "http://patchwork.ozlabs.org/series/407101/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/1936112/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/1936112/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-aspeed-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-aspeed@lists.ozlabs.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "linux-aspeed@lists.ozlabs.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256\n header.s=pp1 header.b=fkV6Kujy;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=112.213.38.117; helo=lists.ozlabs.org;\n envelope-from=linux-aspeed-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)", "lists.ozlabs.org;\n\tdkim=fail reason=\"signature verification failed\" (2048-bit key;\n unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256\n header.s=pp1 header.b=fkV6Kujy;\n\tdkim-atps=neutral", "lists.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=linux.ibm.com", "lists.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=ibm.com header.i=@ibm.com header.a=rsa-sha256\n header.s=pp1 header.b=fkV6Kujy;\n\tdkim-atps=neutral", "lists.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=linux.ibm.com\n (client-ip=148.163.158.5; helo=mx0b-001b2d01.pphosted.com;\n envelope-from=eajames@linux.ibm.com; receiver=lists.ozlabs.org)" ], "Received": [ "from lists.ozlabs.org (lists.ozlabs.org [112.213.38.117])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature ECDSA (secp384r1))\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4VgJKn3z6dz1yfq\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 May 2024 04:20:13 +1000 (AEST)", "from boromir.ozlabs.org (localhost [IPv6:::1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4VgJKn1n5Mz3flp\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 17 May 2024 04:20:13 +1000 (AEST)", "from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com\n [148.163.158.5])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 4VgJJt4r0Zz3fpX;\n\tFri, 17 May 2024 04:19:26 +1000 (AEST)", "from pps.filterd (m0353723.ppops.net [127.0.0.1])\n\tby mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id\n 44GI8CTp018657;\n\tThu, 16 May 2024 18:19:16 GMT", "from ppma13.dal12v.mail.ibm.com\n (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221])\n\tby mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3y5q5980my-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n\tThu, 16 May 2024 18:19:16 +0000", "from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1])\n\tby ppma13.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id\n 44GG3bpS029636;\n\tThu, 16 May 2024 18:19:15 GMT", "from smtprelay03.wdc07v.mail.ibm.com ([172.16.1.70])\n\tby ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 3y2n7m34m4-1\n\t(version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT);\n\tThu, 16 May 2024 18:19:15 +0000", "from smtpav05.dal12v.mail.ibm.com (smtpav05.dal12v.mail.ibm.com\n [10.241.53.104])\n\tby smtprelay03.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id\n 44GIJC4I10289720\n\t(version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);\n\tThu, 16 May 2024 18:19:14 GMT", "from smtpav05.dal12v.mail.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id 9274A58067;\n\tThu, 16 May 2024 18:19:10 +0000 (GMT)", "from smtpav05.dal12v.mail.ibm.com (unknown [127.0.0.1])\n\tby IMSVA (Postfix) with ESMTP id 52E4E58069;\n\tThu, 16 May 2024 18:19:10 +0000 (GMT)", "from slate16.aus.stglabs.ibm.com (unknown [9.61.107.19])\n\tby smtpav05.dal12v.mail.ibm.com (Postfix) with ESMTP;\n\tThu, 16 May 2024 18:19:10 +0000 (GMT)" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com;\n h=from : to : cc : subject\n : date : message-id : in-reply-to : references : mime-version :\n content-transfer-encoding; s=pp1;\n bh=Y98dRxrLBHldvjnywSLtVO9jA7MBr6bUSzYUwxA+r8w=;\n b=fkV6Kujymfj5ALBZpmyE4aj8XM2ObrBfNzElxDNopv+QH9XvbwswwM1Wq0NpydoT3YzC\n nxCpfR42p2f7lSiL4WPkSle5cZgYLBbR73wmZr2VXIBpVEx0VZUcwkRqXKD+vORpe8RI\n F2xwYFYXNmJEmVlMqSQn3Q++Ic3eqTcbgENmfWADBcqDsdc9T9G2vUzhXNyG1Simk3SM\n KkF2zL6AeBMyb72z2AjgpUcaGRW1GH53CbGx5huwecG7D+8Qg/TC1LUuUQpnSm6wz5gB\n JZgFygWHuH0QZcWMITWRKlqQczFhJ2FekiFshEZj7IcA48biMlpSWhFbzWn80iu210F5 ag==", "From": "Eddie James <eajames@linux.ibm.com>", "To": "linux-fsi@lists.ozlabs.org", "Subject": "[PATCH v3 10/40] fsi: core: Add slave spinlock", "Date": "Thu, 16 May 2024 13:18:37 -0500", "Message-Id": "<20240516181907.3468796-11-eajames@linux.ibm.com>", "X-Mailer": "git-send-email 2.39.3", "In-Reply-To": "<20240516181907.3468796-1-eajames@linux.ibm.com>", "References": "<20240516181907.3468796-1-eajames@linux.ibm.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-TM-AS-GCONF": "00", "X-Proofpoint-GUID": "jIaNXquNEVynCey3evKIVRnjE3zyk2gu", "X-Proofpoint-ORIG-GUID": "jIaNXquNEVynCey3evKIVRnjE3zyk2gu", "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1039,Hydra:6.0.650,FMLib:17.11.176.26\n definitions=2024-05-16_07,2024-05-15_01,2023-05-22_02", "X-Proofpoint-Spam-Details": "rule=outbound_notspam policy=outbound score=0\n impostorscore=0\n mlxlogscore=999 suspectscore=0 mlxscore=0 malwarescore=0 clxscore=1015\n priorityscore=1501 phishscore=0 bulkscore=0 lowpriorityscore=0 spamscore=0\n adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1\n engine=8.12.0-2405010000 definitions=main-2405160132", "X-BeenThere": "linux-aspeed@lists.ozlabs.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "Linux ASPEED SoC development <linux-aspeed.lists.ozlabs.org>", "List-Unsubscribe": "<https://lists.ozlabs.org/options/linux-aspeed>,\n <mailto:linux-aspeed-request@lists.ozlabs.org?subject=unsubscribe>", "List-Archive": "<http://lists.ozlabs.org/pipermail/linux-aspeed/>", "List-Post": "<mailto:linux-aspeed@lists.ozlabs.org>", "List-Help": "<mailto:linux-aspeed-request@lists.ozlabs.org?subject=help>", "List-Subscribe": "<https://lists.ozlabs.org/listinfo/linux-aspeed>,\n <mailto:linux-aspeed-request@lists.ozlabs.org?subject=subscribe>", "Cc": "andi.shyti@kernel.org, linux-aspeed@lists.ozlabs.org, jk@ozlabs.org,\n alistair@popple.id.au, linux-kernel@vger.kernel.org,\n linux-spi@vger.kernel.org, broonie@kernel.org, andrew@codeconstruct.com.au,\n linux-i2c@vger.kernel.org", "Errors-To": "linux-aspeed-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org", "Sender": "\"Linux-aspeed\"\n <linux-aspeed-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org>" }, "content": "FSI slave operations were not locked, meaning that during slave\nerror recovery operations, other slave accesses may take place,\nresulting in incorrect recovery and additional errors. Make the\nslave access and error recovery atomic with a spinlock. Don't\nuse a mutex for future interrupt handling support.\n\nSigned-off-by: Eddie James <eajames@linux.ibm.com>\n---\n drivers/fsi/fsi-core.c | 7 +++++++\n drivers/fsi/fsi-slave.h | 2 ++\n 2 files changed, 9 insertions(+)", "diff": "diff --git a/drivers/fsi/fsi-core.c b/drivers/fsi/fsi-core.c\nindex ce9762d1bd8b0..660f89b743235 100644\n--- a/drivers/fsi/fsi-core.c\n+++ b/drivers/fsi/fsi-core.c\n@@ -304,6 +304,7 @@ static int fsi_slave_handle_error(struct fsi_slave *slave, bool write,\n int fsi_slave_read(struct fsi_slave *slave, uint32_t addr,\n \t\t\tvoid *val, size_t size)\n {\n+\tunsigned long flags;\n \tuint8_t id = slave->id;\n \tint rc, err_rc, i;\n \n@@ -311,6 +312,7 @@ int fsi_slave_read(struct fsi_slave *slave, uint32_t addr,\n \tif (rc)\n \t\treturn rc;\n \n+\tspin_lock_irqsave(&slave->lock, flags);\n \tfor (i = 0; i < slave_retries; i++) {\n \t\trc = fsi_master_read(slave->master, slave->link,\n \t\t\t\tid, addr, val, size);\n@@ -321,6 +323,7 @@ int fsi_slave_read(struct fsi_slave *slave, uint32_t addr,\n \t\tif (err_rc)\n \t\t\tbreak;\n \t}\n+\tspin_unlock_irqrestore(&slave->lock, flags);\n \n \treturn rc;\n }\n@@ -329,6 +332,7 @@ EXPORT_SYMBOL_GPL(fsi_slave_read);\n int fsi_slave_write(struct fsi_slave *slave, uint32_t addr,\n \t\t\tconst void *val, size_t size)\n {\n+\tunsigned long flags;\n \tuint8_t id = slave->id;\n \tint rc, err_rc, i;\n \n@@ -336,6 +340,7 @@ int fsi_slave_write(struct fsi_slave *slave, uint32_t addr,\n \tif (rc)\n \t\treturn rc;\n \n+\tspin_lock_irqsave(&slave->lock, flags);\n \tfor (i = 0; i < slave_retries; i++) {\n \t\trc = fsi_master_write(slave->master, slave->link,\n \t\t\t\tid, addr, val, size);\n@@ -346,6 +351,7 @@ int fsi_slave_write(struct fsi_slave *slave, uint32_t addr,\n \t\tif (err_rc)\n \t\t\tbreak;\n \t}\n+\tspin_unlock_irqrestore(&slave->lock, flags);\n \n \treturn rc;\n }\n@@ -1007,6 +1013,7 @@ static int fsi_slave_init(struct fsi_master *master, int link, uint8_t id)\n \tif (!slave)\n \t\treturn -ENOMEM;\n \n+\tspin_lock_init(&slave->lock);\n \tdev_set_name(&slave->dev, \"slave@%02x:%02x\", link, id);\n \tslave->dev.type = &cfam_type;\n \tslave->dev.parent = &master->dev;\ndiff --git a/drivers/fsi/fsi-slave.h b/drivers/fsi/fsi-slave.h\nindex e9fd4be6f3760..0468ec1c60db2 100644\n--- a/drivers/fsi/fsi-slave.h\n+++ b/drivers/fsi/fsi-slave.h\n@@ -6,6 +6,7 @@\n \n #include <linux/cdev.h>\n #include <linux/device.h>\n+#include <linux/spinlock.h>\n \n #define FSI_SLAVE_BASE\t\t\t0x800\n \n@@ -107,6 +108,7 @@ struct fsi_slave {\n \tstruct device\t\tdev;\n \tstruct fsi_master\t*master;\n \tstruct cdev\t\tcdev;\n+\tspinlock_t\t\tlock;\t/* atomic access and error recovery */\n \tint\t\t\tcdev_idx;\n \tint\t\t\tid;\t/* FSI address */\n \tint\t\t\tlink;\t/* FSI link# */\n", "prefixes": [ "v3", "10/40" ] }