From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1424592AbcFHTop (ORCPT ); Wed, 8 Jun 2016 15:44:45 -0400 Received: from mail-am1on0117.outbound.protection.outlook.com ([157.56.112.117]:51777 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1423576AbcFHTom (ORCPT ); Wed, 8 Jun 2016 15:44:42 -0400 X-Greylist: delayed 3579 seconds by postgrey-1.27 at vger.kernel.org; Wed, 08 Jun 2016 15:44:41 EDT Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=rkagan@virtuozzo.com; From: Roman Kagan To: CC: "Denis V. Lunev" , Roman Kagan , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , , Andy Lutomirski , Borislav Petkov , Paolo Bonzini , Subject: [PATCH] x86:pvclock: add missing barriers Date: Wed, 8 Jun 2016 21:11:39 +0300 Message-ID: <1465409499-23166-1-git-send-email-rkagan@virtuozzo.com> X-Mailer: git-send-email 2.5.5 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: HE1PR01CA0056.eurprd01.prod.exchangelabs.com (10.165.170.152) To VI1PR0801MB1263.eurprd08.prod.outlook.com (10.167.197.137) X-MS-Office365-Filtering-Correlation-Id: eadd10b9-0c25-4581-c92c-08d38fc86f5a X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1263;2:KmjDjb35M5+KpZwGCH46Ym/kK/0Fit4tfAxV8AJveM9CKjnOUghSCz2A5aCfy63Z4gtx8mq2t3yGTb6wZrF8Lj1f4y7p7glUUPC9trFtqMT1e5uv5eHW49Z/I+zIRXH+mI3jdTbEbXEkJeh0uetYl88ZfVx6kJ7myjSX+4SvNAAH+xzD9wvwNq15NdV7ImQs;3:tIFejkii3POMmOCIeCdRhugNVZbFSZ+qp2VsyEGXgQVqk2jpEYAAUXTynd7KeOHZC962P6wCwHnc7xh+iyeejAJmsb9Gquj1dhAhA39WQbEZNe37Jm+T2wVObVd0OAKu;25:3PyKxCZ6iTPJ5IgzTFc6Ny/sugv3GRmYDJhjixH/JIxsPjWPs0sRwKp0Bvm29MpXGqymjFm0REwNrjhxufagE+DVsS0H16oarTy9PTg4Q2i1Ojum7invwkEX59rI+Q1sFAj+FJF9LZNqpWw3UQoAmFl3MGeHTlObSTLsX7f3N8BZmdBi7FL+fJ/ld6+XNHQPpdufEm0X72JRgBJSyCxF5EWLBRq3kw2/fbFuo263jpuAq2YYia/YyJkGp4S5uLgLBHvmuRln0EGcJGyWbs4TORCuR2LRqwg5WA6eUTLH/Em9ckcw6+aIf4TOnTj97WbZKQdMVxWLXrUVhzMg4+juunfSsIB4WCr8SG1dpaY2DQD+oSqXxy4cMPoI228qF04nwQ6vIEtj4L23urR9k8iNyg== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1263; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(9452136761055); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040130)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6041072)(6043046);SRVR:VI1PR0801MB1263;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0801MB1263; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1263;4:Ctwov3kiDRrs+YH7CJhV9WQm4WDOG+q5M6n25vrpLSJBHG2nHZ91P1qqU3V3YsRUUjYYVa/HIDhCnmhhbRqbp8X+a/0ETDU290W2Ic7b/DpRVq2uUqA3y9G0Za8GqEGUOmbXRcHU2xUVM9834rk39rI3W8DwOxgDUcJd1x7guaw3BV6VmxbF7j51HeJM1PYSH0c0YopvHrbSZymSUSSZxkVAvdsN8g0R4RroxCcP6J7hiJikkA0a/fgl2E9IibMwGp+8yR5KCImbrGw8GAjW1AJH43G6UBXLIRZYClC1V12qPDdmvw/Ab0TRwDK++zvbfE8bsm8wSih3QzjxRyGC6cBVeLQdI/YmQlSQxrVf0xw60KyZEhEISkpvDyWTgqGphUcdqKgzYtpg7rpkFU9HId8K9To02Ggqo3Lg5BIBL4ZP6/fwNYLhGzo27ALlj3WfmNQvfz5cNKQKOaNXFWqFaQ== X-Forefront-PRVS: 0967749BC1 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(189002)(199003)(4326007)(53416004)(42186005)(3846002)(36756003)(19580395003)(6116002)(48376002)(105586002)(50226002)(5003940100001)(19580405001)(2906002)(586003)(5004730100002)(68736007)(50466002)(106356001)(86362001)(2351001)(5008740100001)(69596002)(229853001)(110136002)(77096005)(575784001)(66066001)(33646002)(97736004)(50986999)(81166006)(101416001)(8676002)(189998001)(47776003)(92566002)(81156014);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR0801MB1263;H:rkaganb.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;VI1PR0801MB1263;23:0vcjsni7wpvMJ02CNn+Dnop6ShsvvIVzFds79Ha?= =?us-ascii?Q?tQEcRCYCwWBt2ugsfpR+wCmPTvSmpNZF2uQMmRk83cjbArf6gp5hwRf0sxu3?= =?us-ascii?Q?bKR3eKC40b64/ZTBtsL5uUhHg3dnke4KnHArBu2KvU3nlkanX7uiYqWr+eoE?= =?us-ascii?Q?SO0Dba9/yBWomQGa0sTaoqZ+DFlDYnK8LZOgKVy8ILVX8A3f530zQJ70VKaM?= =?us-ascii?Q?bQ7dYd6B1ycNN9wIxe8MBYK4dxJxpi8MLti0xV9VTPuavpuhyncWHgHs3BR2?= =?us-ascii?Q?ucLipOe6qXuUcs9SSbiD/XMaKgkb1Fq3tyznncbt71QX0Rj07iOWJg0VUsmi?= =?us-ascii?Q?XF/6kJvoIZxROTGejdxkuc7zJqnzMCh264roEnXopBouKHyFV4UHq6kLi4al?= =?us-ascii?Q?WbFsxHdx+eisuSj2P9z2H93aMny675CkaCFc5PfDNsQGMUSd+JxAHakjbx6I?= =?us-ascii?Q?xGDKbQkN6Sh6Gh/Ixtfut8tcp6SVxgsLaHpZ9+pNvAZ2g1kwPUtHFTZwSGNc?= =?us-ascii?Q?F+7fW8wYdoYeSIqSLBLuV0uE8m9GE4/I3gIK9tHshVvfUny8W1+tlt0eqmJe?= =?us-ascii?Q?Ri5K83F6Zf/DYei8WSsL7NSjKvLhmtbML2Avg00212BwRSVXMFapfGsTBU4o?= =?us-ascii?Q?sMsTmX02UqLA2SuM7ZRcK9ZUrA7H67Tp/0RKChq2mVyAXATtSv9dH+tzT+YD?= =?us-ascii?Q?z++heeSJlAsVHOyjAhTPelpuM9DPb5Ky0vp/1JeSTcW/pQcZDwDQbIvkRqt+?= =?us-ascii?Q?MJ5nqYSh68M1SHt3kWsBIorfkLRNg/YSxGKGFjE2HPs6/SYmGJzKu5T8gHRN?= =?us-ascii?Q?m2PIk4EPpkKv23njGuZy/ln59PiquRvS9z0xc+MFEQjhi5eX6snF7qzqha3g?= =?us-ascii?Q?wr/e3Mt5P7DQkO5kL33CnScAuae9mVZ4j1jIgG2spE4wjMQJ6otEIoXKgPCd?= =?us-ascii?Q?oIuFJmsmAZnbui+zSWCtANcgIAwC1G26bDCjExTvDW7ufRSV114Dr6w3rIVM?= =?us-ascii?Q?DrqILULduWQsyZCLLy6NpQbpFewlr/wY4NJbnFUvk9l6v6jnUrx8DChPHun4?= =?us-ascii?Q?qA//RTe37KVmUsxYECn8vH+TZjFpN?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0801MB1263;5:iPvXSqQFmycW+P+0Zr3b9YhZezpRobWWs7bopDjswi0WYb4E9zR1+OhnaanuJ4sKX0G6GcJAwlUzzlJxn0Agcfzfgcvt5KH7rYZcnLyB0cwIaN6h343qjY28MIOzpm9x/PaICzNYIIN3dvR1X2D9/A==;24:X05k49209+NXIRmgRCsGR8oIv4Mva3WjtJpRPV5sKsj9O25B0Ol6ODa9rAJ6l2XYF2ZEVssRvtJR3ABAAOpNz0ddiKeTil44CVh9kl1AOys=;7:IAM+Vpgp2FWaEnmW9uK9Iy4zf+5uUFmaDTZIDkcNTgxxrxCK+Aueqs+dcvKv1GZYzX4RXzAwLv5ZpO1KmI5ireDAnNAk340f+ARdc2O2xbUaHJpQQxGgSqPfugR4hf93YfLADu4i6zRtPkR2LjJE6jFt2eEaEF9yG2MKWHX5xc4AX2vIann7NWz4f3OIvtWcSg9+9jYJ9w2qpvMx1S5QrAlpIBHon/N1LSXkg5/t1lQ=;20:iwyE20pI+9uOLIiYI0YiZQ+MApuoc/QTS02yps1eBt5ak5U60wksxydAc1qdnmsVhV9ns8+YVNfQ3pJtFZdoVwlXsnStYl3JvgQkT5Sqvq5e8Z7rmvIN+NCPTymDktAIiZj7GVvDYcVvywaS+b89Up2E/6+S931xTn21ycnWyDw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jun 2016 18:12:19.8823 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0801MB1263 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Gradual removal of excessive barriers in pvclock reading functions (commits 502dfeff239e8313bfbe906ca0a1a6827ac8481b, a3eb97bd80134ba07864ca00747466c02118aca1) ended up removing too much: although rdtsc is now orderd WRT other loads, there's no protection against the compiler reordering the loads of ->version with the loads of other fields. E.g. on my system gcc-5.3.1 generates code which loads ->system_time and ->flags outside of the ->version test loop. (Re)introduce the compiler barriers around accesses to the contents of pvclock. While at this, make the function a bit more compact by removing unnecessary local variables. Signed-off-by: Roman Kagan Cc: Thomas Gleixner Cc: Ingo Molnar Cc: "H. Peter Anvin" Cc: x86@kernel.org Cc: Andy Lutomirski Cc: Borislav Petkov Cc: Paolo Bonzini Cc: stable@vger.kernel.org --- arch/x86/include/asm/pvclock.h | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/arch/x86/include/asm/pvclock.h b/arch/x86/include/asm/pvclock.h index fdcc040..65c4de2 100644 --- a/arch/x86/include/asm/pvclock.h +++ b/arch/x86/include/asm/pvclock.h @@ -80,18 +80,11 @@ static __always_inline unsigned __pvclock_read_cycles(const struct pvclock_vcpu_time_info *src, cycle_t *cycles, u8 *flags) { - unsigned version; - cycle_t ret, offset; - u8 ret_flags; - - version = src->version; - - offset = pvclock_get_nsec_offset(src); - ret = src->system_time + offset; - ret_flags = src->flags; - - *cycles = ret; - *flags = ret_flags; + unsigned version = src->version; + barrier(); + *cycles = src->system_time + pvclock_get_nsec_offset(src); + *flags = src->flags; + barrier(); return version; } -- 2.5.5