From mboxrd@z Thu Jan 1 00:00:00 1970 From: shengjiu.wang@freescale.com (Shengjiu Wang) Date: Thu, 15 Oct 2015 16:36:31 +0800 Subject: [PATCH] ARM: SWP emulation: Restore original *data when failed In-Reply-To: <20151015082417.GX32532@n2100.arm.linux.org.uk> References: <1444791077-26020-1-git-send-email-shengjiu.wang@freescale.com> <20151015082417.GX32532@n2100.arm.linux.org.uk> Message-ID: <20151015083629.GA32630@shlinux2> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Thu, Oct 15, 2015 at 09:24:17AM +0100, Russell King - ARM Linux wrote: > On Wed, Oct 14, 2015 at 10:51:17AM +0800, Shengjiu Wang wrote: > > __user_swpX_asm maybe failed in first STREX operation, emulate_swpX > > will try again, but the *data has been changed in first time. which > > cause the result is wrong. So need to recover the *data when failed. > > > > Signed-off-by: Shengjiu Wang > > --- > > arch/arm/kernel/swp_emulate.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/arch/arm/kernel/swp_emulate.c b/arch/arm/kernel/swp_emulate.c > > index 5b26e7e..c61fbf92 100644 > > --- a/arch/arm/kernel/swp_emulate.c > > +++ b/arch/arm/kernel/swp_emulate.c > > @@ -41,6 +41,7 @@ > > "1: strex"B" %0, %2, [%3]\n" \ > > " cmp %0, #0\n" \ > > " movne %0, %4\n" \ > > + " movne %1, %2\n" \ > > "2:\n" \ > > " .section .text.fixup,\"ax\"\n" \ > > " .align 2\n" \ > > I think I'd prefer this to be: > > __asm__ __volatile__( \ > "0: ldrex"B" %2, [%3]\n" \ > "1: strex"B" %0, %1, [%3]\n" \ > " cmp %0, #0\n" \ > " moveq %1, %2\n" \ > " movne %0, %4\n" \ > > so that we're not loading into %1 (an in-out non-temporary) but rather > loading it into a temporary - and only overwriting the saved register > value if the swap succeeds. > > Thanks. I am ok with your change. Need I send another patch for this change? or will you send it by yourself? best regards wang shengjiu > > -- > FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up > according to speedtest.net. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751912AbbJOIhh (ORCPT ); Thu, 15 Oct 2015 04:37:37 -0400 Received: from mail-bl2on0112.outbound.protection.outlook.com ([65.55.169.112]:21196 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750849AbbJOIhd (ORCPT ); Thu, 15 Oct 2015 04:37:33 -0400 Authentication-Results: spf=fail (sender IP is 192.88.158.2) smtp.mailfrom=freescale.com; vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=freescale.com; Date: Thu, 15 Oct 2015 16:36:31 +0800 From: Shengjiu Wang To: Russell King - ARM Linux CC: , , , Subject: Re: [PATCH] ARM: SWP emulation: Restore original *data when failed Message-ID: <20151015083629.GA32630@shlinux2> References: <1444791077-26020-1-git-send-email-shengjiu.wang@freescale.com> <20151015082417.GX32532@n2100.arm.linux.org.uk> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20151015082417.GX32532@n2100.arm.linux.org.uk> User-Agent: Mutt/1.5.21 (2010-09-15) X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1BFFO11FD012;1:v8WPkGAPWGoMZKB7h/cH3oB7aTbqx3S+czZwNjFtXx3YlSJmhjF+USh9H3QFGxICQ3gANBrKEP0uifE8jujgZ1H8dtQj+kFuXmup/1INHyINt3nwaXieDQVRojvY7tqc5GeL/OM1M7UKoOqwRNViUSIfzN/c2+oJGm3D4cjdGhpJrsYs326mcGvWKFTyPy8cwyPdzX4YBNel7W46nAufoU7xT/Q7vN36ipt9fqJmbXUfr+I3FnVYEZJO87iO+L1yujMRXcFppHYAH+4N7l5YN30FmJTZ9ttgZjSSjnd0+hs2ayNrF2z+ky6Do5xd8GlNe2lpjgJX5/8aHXjeCrEpS12r6qlyy/niXsp0I+UuelyTfkhY0VdcRjtYaypjE4f7 X-Forefront-Antispam-Report: CIP:192.88.158.2;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10019020)(979002)(6009001)(2980300002)(1109001)(1110001)(339900001)(189002)(24454002)(199003)(76176999)(54356999)(97756001)(23726002)(85426001)(83506001)(50986999)(19580395003)(64706001)(11100500001)(19580405001)(6806005)(104016004)(87936001)(47776003)(69596002)(46406003)(50466002)(4001350100001)(2950100001)(106466001)(92566002)(77096005)(105606002)(5007970100001)(46102003)(81156007)(33656002)(5008740100001)(86362001)(110136002)(5001960100002)(189998001)(33716001)(97736004)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1102;SCL:1;SRVR:BY2PR03MB492;H:az84smr01.freescale.net;FPR:;SPF:Fail;PTR:InfoDomainNonexistent;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB492;2:wfXHUGmIG/gD5JqfP1eslGnZpfmqU8l0VdOVAVDFnOTdqLxc/37eac0GA+Diu4WoQNMqa9Xh+6g0KtQkhLPdXs761TtjeacdP+V8KYR9KQVWT7K5w9JL1Qj0XAF8GvMEAy89BHIv0zb0l7gPSClZJf6YBybbR6O9BUtyhGhAhcg=;3:+u2abST2yPpfqtIAAY/+LHSuDghPuDmWxLG7s7XDGZ8+d862qT+nvjyZwItZnzI+UMV58dy+TNVjxF7QPENrQ1ny502SZnjZwZF4Zbsg3krfNRPxuzc9TEq7Kw5tQxj8URpqDAnhxJKHuyq+ZQHdkRiscgaJ5Pd/hBaGCUHgyZgFi1HeIzdRVXxdnBRTWt4wjmImtidJ8wjjTEKkjHVN0KAT/HbeOrngV1+BHV2a0qs=;25:a630OCHPEl4lFwpV+ee7l+qDrLWLwXCGvlJsIyadc5BASPJSAcdFweirf4oNFT2TD+RlIE2tobGMmKf4ckJMHJfFt1b6wvY/s9CQv98okjsb2T68noOHpaARoo0pHEIYJS6sTSsovyE9tPV42KI+dlkLgEE6YSdP+EmJxlVG4+ESU18TzF2NmPSS6lzP0NTXJhEjsEYrwpkWiOV/xGHgcO93rA3T0kqcYQxNaq+MX+RlXMAZapBgyj0kodEGU/XU X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB492; X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB492;20:1WAENtF97V6wygxF+wuWrgS26sP8/yyTh29P5IaPW/148tCvlkvn28JISLwrJWngB/1jkzu469+rRLH9jjzcgKx9K7our09Get3UloVO2kYPubChRA1FI0ulu92Tq4kL1wGvDgE03QtduZg4PqTsbqgXexjSBilOGsv75VAwD9KJuTxvRZafdtORht8z8cXoLpm4d4eo1fLdewGJjy1bHZLU6Dh01ENODEGbFDyw49HNm0a08hx3LCQ0T7p1PGJHyoMNXHc69l61LuRsTIVFoxgVqYiRB6ZEtiNpGcLQQ367Auc0DTUluCZMiLKCkc2RjyvOyX5u4HZCxsXwOIColzw8k6g8QOMTBoPJ+iYkoPg=;4:hgcedr1X1v2V17hkgEpHLSf1QhSXQZhQHSvuCYgWud7AKH5mxkdiw1H+/aTcdbmRhiKR6qzr+qpzhC7cIy25zhhzGcJNGUNfHBKXJgTH8NrzAwRxs0RTtXmCSHgaUFfo1kkNsNXbFmmrAIvpXTWefjZufrw7UCD9ISXCKq1KFmPbgTFjXY63me8Ojeng1AZv1csvt4CdnyDqO9gy4EDQrDvFq4WuYjMx2ANavVE3SP0bXDaI8iNkajjptxcSahNSAFG9Bg534p2WXZFmNuKKh1OphwjpmdSSGCKGSAPIef8b6FhSbbIIZcQyXyIi9BNc5dUDzjx14dUQ/zjh8vBm4rJ7/kcDkJWOhXkyiLj/OJM= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(101931422205132); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(520078)(5005006)(8121501046)(3002001);SRVR:BY2PR03MB492;BCL:0;PCL:0;RULEID:;SRVR:BY2PR03MB492; X-Forefront-PRVS: 0730093765 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BY2PR03MB492;23:NuypLTPF7gyRkxFNq+U3e89jWbjoloBRE+yjH+gq3Q?= =?us-ascii?Q?vl3Lzi8dwHC2foOxshR9t1fZ10Z4uip4NTy9CP+1Va4Lf6WP5ujQSSfyzWYE?= =?us-ascii?Q?c/UgdQL6h6oCAdtP+w/B+asMEKagsEb62YDKCW3C9NH7XobjaXJJEoIdHCsn?= =?us-ascii?Q?Q53Zcm26/h/sCXwcgDckjFtcyiPvygpc34TLbiX4x9Ks2wfs36brGyDZ6UlT?= =?us-ascii?Q?ZxZ6m47O1UBBUHJ0Wh3eNFv69D6Fuq5ZV1kWoDy3hJQsA3ELgGbQIghApfXC?= =?us-ascii?Q?I2zZYrVmm8hXNylKb/IkThwiT+aQciNBPpwoHw5lPWvUuZfJPn4vo8aVRvlo?= =?us-ascii?Q?DQOYcoTmxBJb7LTOODJMo41wsTCAvruKBH5TekASpK34HwUXFN02ZctgpYh1?= =?us-ascii?Q?kBtCDCqXdDw2ZyD+I5gQDxsajIWIEnaQjiilTaACaNSStT5fleDxU5o+EZPt?= =?us-ascii?Q?+XCpAtcuF+PnU4j/b5TfarrrpGj6D8MAtX9H61I1jEpbTOXI4mg9FhT/o6bU?= =?us-ascii?Q?vO5ze9BcRqDi1DVOIc7YKlzaHp/vPWKJBARJCXQhM6VQCtyfx2lL5UDR2o6q?= =?us-ascii?Q?Kg61l5bL8AhHYoi2+WfQQ3yVJalJ8/f7JXYsZz4cIS2pT1uNh/TuXA73HQv5?= =?us-ascii?Q?umLX7fbbth6wRqzwJSL1LVvPOLX4ZrxJu/d11/xy/zXbvvOo2aIT+IIQchjU?= =?us-ascii?Q?GNb+JHDCfVLnHmgguXRN2saoTdBegyfddQO5c0C9W8lclu0dlioaPoxfKG3/?= =?us-ascii?Q?Jb/RFeUpWqzyGr5bC10GgR1o2nym3OuXgPoM/BgbHcnGWZN4DrtoKcVlWw1G?= =?us-ascii?Q?wg1wmExSaHmhvDheTMw/UpMCA8+2AKTSoGJp8c9ogiUp9Mcya0tAMEShBpBI?= =?us-ascii?Q?LA0gLUsGTzqaC0HnqShgJI6I2zyfWwPZkraGhFnFQzVIuwiJyB+2pgIO9dXd?= =?us-ascii?Q?PzMR4wN6fkgNPhVb0qwpqcSh21RYSHF6XZ6KLeHwROfCwBk0NNRyt3Jcmz6k?= =?us-ascii?Q?bvAvIcR8yg+iq+SGQrzkK0Vk4WLQKWmzx5loymz433oaYdps1c3qKJ9fA/UZ?= =?us-ascii?Q?RtNumNtkb1bl5bkdSkEgakp9WSGjJlV4uj7Zo1IGoDpHVKETci2tdekI7UPV?= =?us-ascii?Q?KEZ+za45CkEIQAHt16IzWCeP3+RTgJUBAFTzm9/Hz4taVDWXKh1Aq/RN57/K?= =?us-ascii?Q?07E1dZSJ1/ItOmJ9NfHJTeXL4N7HhJ3dLhc/Zl5viXVmZRckI285gSeU39Sv?= =?us-ascii?Q?z437rs6V2i+giHIGU=3D?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR03MB492;5:NOayo8hmeJ5mWlPqF3qeLx0gy9vDpsCUSrGTfTnCr069GiKri2H8rCT50115VEuMvyqFBvMpuiRwLWIBnsiT9Zqy8Z2zFiHWe6gOE3/gwZfkcIB8t3niO2k3SPZKLi/TU1FnIyaitUarBru/GcxIyA==;24:8OSNc62doA+NpqsHRc87PPpDq5sV5ba3z9iB3W5vYDH67w3kFKONVMq0GiScWxKEENefj8c/FmfR3jWqRn/xsc/URVYo3hVPgZUfgeYdvgM=;20:VaS7ubNRUgtw0FPnWdg0aPLW5NzDbYGQ0pcYy1VwwSQBYRrjWlb6FCrXMF3Py6ijX0yJr+bkKAdDO/2kn3Dkgg== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Oct 2015 08:37:30.4881 (UTC) X-MS-Exchange-CrossTenant-Id: 710a03f5-10f6-4d38-9ff4-a80b81da590d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=710a03f5-10f6-4d38-9ff4-a80b81da590d;Ip=[192.88.158.2];Helo=[az84smr01.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR03MB492 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Oct 15, 2015 at 09:24:17AM +0100, Russell King - ARM Linux wrote: > On Wed, Oct 14, 2015 at 10:51:17AM +0800, Shengjiu Wang wrote: > > __user_swpX_asm maybe failed in first STREX operation, emulate_swpX > > will try again, but the *data has been changed in first time. which > > cause the result is wrong. So need to recover the *data when failed. > > > > Signed-off-by: Shengjiu Wang > > --- > > arch/arm/kernel/swp_emulate.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/arch/arm/kernel/swp_emulate.c b/arch/arm/kernel/swp_emulate.c > > index 5b26e7e..c61fbf92 100644 > > --- a/arch/arm/kernel/swp_emulate.c > > +++ b/arch/arm/kernel/swp_emulate.c > > @@ -41,6 +41,7 @@ > > "1: strex"B" %0, %2, [%3]\n" \ > > " cmp %0, #0\n" \ > > " movne %0, %4\n" \ > > + " movne %1, %2\n" \ > > "2:\n" \ > > " .section .text.fixup,\"ax\"\n" \ > > " .align 2\n" \ > > I think I'd prefer this to be: > > __asm__ __volatile__( \ > "0: ldrex"B" %2, [%3]\n" \ > "1: strex"B" %0, %1, [%3]\n" \ > " cmp %0, #0\n" \ > " moveq %1, %2\n" \ > " movne %0, %4\n" \ > > so that we're not loading into %1 (an in-out non-temporary) but rather > loading it into a temporary - and only overwriting the saved register > value if the swap succeeds. > > Thanks. I am ok with your change. Need I send another patch for this change? or will you send it by yourself? best regards wang shengjiu > > -- > FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up > according to speedtest.net.