Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965435AbeAMBHj (ORCPT + 1 other); Fri, 12 Jan 2018 20:07:39 -0500 Received: from mail-sn1nam01on0073.outbound.protection.outlook.com ([104.47.32.73]:45176 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S965260AbeAMBHh (ORCPT ); Fri, 12 Jan 2018 20:07:37 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; From: Tom Lendacky Subject: [PATCH v1] x86/retpoline: Use lfence in the retpoline/RSB filling RSB macros To: x86@kernel.org, linux-kernel@vger.kernel.org Cc: Rik van Riel , Andi Kleen , Josh Poimboeuf , Peter Zijlstra , Linus Torvalds , Jiri Kosina , Dan Williams , Dave Hansen , Borislav Petkov , Andy Lutomirski , Kees Cook , Thomas Gleixner , Tim Chen , Greg Kroah-Hartman , David Woodhouse , Paul Turner Date: Fri, 12 Jan 2018 19:07:28 -0600 Message-ID: <20180113010728.27928.8537.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR21CA0072.namprd21.prod.outlook.com (10.175.112.162) To MWHPR12MB1150.namprd12.prod.outlook.com (10.169.204.14) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: cf182e0f-760f-4d4b-15cf-08d55a22079b X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(7020090)(4652020)(48565401081)(5600026)(4604075)(2017052603307)(7153060)(7193020);SRVR:MWHPR12MB1150; X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;3:EUz2PvWioMj3YgxyamIDvMBBr+EwhZjnKZl27a+aTfebp4pOFzK8qxFyVr7GlFrbtksjaewaVdAOWNSmywOSTjVmPKiCJwbtRgH/MBw/GinBwIF/V3Ifoh2rON8oh7PgXzakmpHAlPNAjRZZT1XfUaFI95J65Sn1dTfemVQiu6Z07D/3V06W4+T1UNG3N3iHq7zBefIb7s0kyWlc0zrcofZFfx5O3QgQlPfC5d65EmYetXkIcrIs4FLifjOQVEuT;25:mvGrpCcQX10rfxw613MYYyoUJKUGMGLQFRp3T0IerrrTPI/jOskmIdpl34D2UH5pjDawO8Xj0A7iWNddadjrwrq8GOkBYV1O4Z6be8Hj86qZMggmylP/yTgBlITEbykRTostS/py2ivA+8FeBPCeL7lXsc1DtV3X/B7MoByYjksEdTjPfBHgLTCliJ8q5Uwsn+fnz0H7lRdwkYRWKFefx8VnLilCpgbR49JRLizfVl1Xc/+vdUKzAYLYV3s5J8PfwKe3qw8ALRcNc+nFXcMfdbLpQ4Fod+tFm0Eu4NS5gH8qhekvxgXiOJGKh28D+QwPH1AKYytrSsSbfXSc8+zEmQ==;31:l8iRCYJDg+FJk9K50Rlp4Y2JsTzGDqCYtGSizY6fZd8/bU85qFilRt2t1h90IxlvtSdgfyvTmC4hjDxGx2C6sNAewXtLJ0z+XK0KY52pm21h7i8TMFAhinKaVrB2/mKwwCw8N9JDOtc4uefaRmkF2LNvfdcNfndC3kE4Aou2CRYHixug9/yRlf6eihTGDtkKYpVNPpbJyHdoTR0xyXU9x7p0//BSXUuUAqjKrc/U5kw= X-MS-TrafficTypeDiagnostic: MWHPR12MB1150: X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;20:B7VN6sE62MHVI6Kt7yorliQaJDoCZgjA3fW+OOl+7z1XmaF4eYu0pZ3ZoTmkGM8DvxFoNEL7+HIN2RKbpd3KZDe9TldleJBJuwmDZYPe9ceSqfiJnHa+8O3iWramQzBSuwFi4VmXugZkMOGpgfgdUopeUU+vQakzq0sVtgqJy7sLrsiKEcMpXAs6qRu6DqgS9bSW/Ri9HxayUHC3qf0n0QqVzHHyWivD96eIGiv9VY5/W95R8gzUn1NAjoQbrNhN+LlGtd60GQM9X0/mZcvNplDfUoAx54ESdvhmVv1tvJNiUdPPONz1NFJX3Or4B+Grsx01Njr9ALAku42cBecKE/OufvgYao5yNhAqmLYyomoe9BDT3hC1stGIDA0EkWYcmzAh/G96rXpvbyVjxJE46t853Gfaji6+7ySVUuicrmmbgHfE7+PooJT9cmUuNHrvSW47Ro2e6ZtQSHVuWxg6TfAo3G1HJfKkEN5UkaAnAKYlvdQkNSdcY/l8/xXedmqL;4:sHkYkaouNL3WS0jlIzcUamdnwshFXmNUtUK1DDkEfC5vhO70H6YTFc/Tv8sfH6nDfjZ244k5+6nJ6XV0wkGqQph8FnagIEbkkhuDqXVcLNUu4z9iNXSJxdl22cOnMUBxJSXhVhCyu+TY1nBbjvWMVItee6RobJjlqVGbXWjIvagn2Z98++Mbt6dsEhF4GTnuNSTZL8dTXsuPZbY5/j393GEpYPRao1Cn9u2r1HZTgycc2+mbZ/5pqVr9rTeak5qFV0e+fJ9wUCytEe7wgTWIbz2nmtbn/hnMPHgjhrRjC4trejhEwpf2e6hnhwgPW0vV X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040470)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(3231023)(944501149)(10201501046)(6055026)(6041268)(20161123562045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123564045)(20161123560045)(20161123558120)(6072148)(201708071742011);SRVR:MWHPR12MB1150;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:MWHPR12MB1150; X-Forefront-PRVS: 05514B7026 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(39860400002)(366004)(346002)(39380400002)(376002)(396003)(199004)(189003)(25786009)(316002)(55016002)(58126008)(54906003)(97746001)(7736002)(103116003)(8936002)(69596002)(7416002)(47776003)(6506007)(478600001)(59450400001)(305945005)(72206003)(386003)(53936002)(66066001)(68736007)(8676002)(3846002)(6116002)(5660300001)(4326008)(1076002)(106356001)(6666003)(83506002)(105586002)(97736004)(16526018)(86362001)(53416004)(9686003)(7696005)(52116002)(2906002)(23676004)(81156014)(2486003)(230700001)(50466002)(81166006);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR12MB1150;H:tlendack-t1.amdoffice.net;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjEyTUIxMTUwOzIzOk9nQ0F0NlZvcEgycjc1R0hVWmxTZEZpcHdk?= =?utf-8?B?WXBodytnUjNFYzFDc2RlVTBjZy81YWlUVjNPWDBhY25GQ09naWQ4WFRFa3Zy?= =?utf-8?B?YlNIdHcvNXMwR2FqQ3RhU0hBRkcrL29aeVpEakx3UlliMDM4WUpwZ2ZNY1F5?= =?utf-8?B?Sml1VDhObmFPaDJlbmZ0dWphUk44TzExZ0RhSzhOK29ycmdyYzhSc0RtemRO?= =?utf-8?B?VExVT0MrbjV4aDlmUU1zNWZOQkQxZ1VEQTBKdlpoRkN6Z1pPd3YzWEFXdzZ3?= =?utf-8?B?c29GSGdkRG5ZUW1JQVJ3WFpSZGZKN0tyK25DV0tWQUV1WlRSUmhKay9OdEI0?= =?utf-8?B?Z3dhOXpkdUJRQU9rVldHVEdJN1dGY1ZMa09aTzdkR1ZGd3JIOW8yOTFWWWcy?= =?utf-8?B?TDJwNjN5RlZZRW1PTG00SW93R24wVURLbDRIOENWakhjWUMvbCtheFZuUzdk?= =?utf-8?B?TkhKRVRjSVp3SStFU0UwY013MzJQOGcwU25xdVVtaVMzMVNYS1RxWFUwSFN1?= =?utf-8?B?MS9iY1VnZ05RamFOK2JpVzg1NzRJTlZzV0dWS0JrdGh6QXhLZVNOK2pBMzE5?= =?utf-8?B?L2tiTE1pbjdxWjdCeGhBUjVnUkNYazhmN2ZwZENRL1pLR1hyekkxT2lHdHg2?= =?utf-8?B?OTJMaDVianJtOEdOK3dqNC8wSEZ2MWYzWGkrOHAzL2J2R1lHcEIweGFVQi90?= =?utf-8?B?TDZVd3NwejNBTnFMbkNNYUcyRCs5a1o5YWQvVVpLRlo2enQxNjBFYVBiRHJC?= =?utf-8?B?VWh6NmhQMjYrbXUzc1lUKzBsYlFMT29aSTBGakxiVUo5bllmRjN0ZGxqSzFp?= =?utf-8?B?eDYrK3NicUtUMWF5MG9GVVBZSzVXTVFHbGY2bllldVRYdnlvWWN0R05Ca1d2?= =?utf-8?B?cnhFMXROelE1b2dVYzBtamtMVFRXTHF5M1plY2VTanFiN3YvVzJrOEgwMnZi?= =?utf-8?B?eVJrZWxIaXdTdjZNckYxQU5PM3RxREY3anU0NDlyaWlrQmNtQTd3bmE0R1Zu?= =?utf-8?B?akkvcE82OE5ZczU0SmxQbDJQamJUWHdWZDc0dnI1eTcwdWd2RUx4cTZkMTkz?= =?utf-8?B?V0d1OEM0d2FVRDRsdDEyN2xBZ3hJUVNmaFVtY0dCM3dYWHNBQitrSTNPMGZi?= =?utf-8?B?RVRVVCtOYXgxdTZTTHQ4UVdzQkV6eDZHYVJkYS9md1pLV3REZEpORHUrL3VR?= =?utf-8?B?QmNLajREMWIvSGhqWk1uNXJwUkR4OWJNQnh4MlNjTTRhRDVqY3YzSE5lZEJV?= =?utf-8?B?Uk5WT3NFT290YVo2MjFCbzZPMjR0N0hVQWtOK2thcGJGSE9KTTI4M0lqMksv?= =?utf-8?B?d0FqU2oxUjQ1Tkl5RUlKVU91R1NYeExWS1g0eFFaOVFONU4wbVAyQTRBdkY1?= =?utf-8?B?UnVhRWFyWlYvYUVsWFhEb0Iwa1NzNW9OUG96dzNqdUJnOERkTEVBb3VsNU13?= =?utf-8?B?d0dheVorRDdUakJsSXBUZEdBUldZc3llWkh2WmRuMU8xNktPMnJOcHR3WWdk?= =?utf-8?B?dkhNQ255QkcrQkl4djVmUi9EUUpvS3hUSEtXNGRtb2RIcnZEcFU5WklHY3lB?= =?utf-8?B?OTdTc21UeFZJU3RQNzhYaVdEWFFJR0VXZW1DMVlqRmVnR2RYOUFLNHErNDg2?= =?utf-8?B?R3BhdW8veFdYUzA0aFhGc1dibHNWZEpoc3Y0ckRHM2RHbWkwWkg5aDBRPT0=?= X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;6:OUcsdNa/E4KRMB1jYEPXz44WP2hsHGzDpGOvUM2iGC8jmhDonDjdfMBRk7EzoY9/B6CYfPLAbGEn3yzKNR4TEutQu07wozKoGOnPvgx4CGv8RJrDNQYmsLXL+UyCVY0p2cO2S+TAmsZB02G3aG1akwKqMeOiCUiZ57GlT4+3HNbAuvOz8OcqKJarZLh3scv3Wj0HVH870P16deqGokAdLs86YBNjir4lkuChU2eNoUVfLYWeXxQG+V27nN05PiPpLTIZGdkSKaSxxXBt/XeV808t2TiTgWHRhvPNrzB6nFGJAPV83dY/m+nY1abnMtDm40bQHgTU5QbemFRpMKbYu/Sek9eJt3ivuJOSR7NvEEw=;5:wZKKugQZ6NGcEDMJsCZdl+LcaxB8G5TfSPAe5lcJDbDMTHi4GEqSq6C4A28N3tiTY+9sihPKFrgnvY2MELoCYh9G31fnnlrvbxRR4QRZvWsr+FgGL1iGjwxzIyGjhZ5JDcaJI+oXprZwkI//eah6mES5gcbLKLE7Xl+4UwRxSNA=;24:pirxlX1LsZcQx0vA6+WZpjggE04Pv7iFMFhWQ17R3ZJLBff61GcBKq8tcZAtXlIrkQl1sD+voLnFeaT5m6B10Vm1nQMts5XqDxVTwZt2OA4=;7:tFh2aMiNbn4TbH0QHXXzpAhwpOb4Wjuofdog6thf0YWcfFjWg+/U66elRXExhoqKu0KvTV9DTwPXBrGaQw1PVAjDQBIbOjc8m4a0vqh1ye+4XTx23scJ3OUSFIrLfEoUX3J38trP2tu/wHqM8AnKPkj7wSPkC1Ki5zyCmlkIyZ8/KH/dzoRSg+AyHvChSHbE/wCMu8Wih9lz8i5QoeQN2uO0Pbp1wYsCzH1yfBkcDpV5MXDan2LHtTV44DMjWW+v SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;MWHPR12MB1150;20:JoRD/sYF4xC0KKRAhBVAY3rU7D8kwAhJQYm4ZE8t5fD4p5ymJ6GvaHT79U5j6Mlb2/G9Ue2yj8Cu+1oNQlbyYpQ0NSc+XHbP2VtR93NdhmDkeYStEnj74biJDrawL8bEnCi0r5AdLYUImUeBQO6XGLoRZ6dAnM/CTy0frCgknLOONVe41mgRq7SZ+EmUS+GFpOPanrdxS/VlHLpPgSKaiah/fjo+WKuYTcZq4p5gn33/pm7iV5lcbNzIoorDWNsD X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Jan 2018 01:07:32.7660 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: cf182e0f-760f-4d4b-15cf-08d55a22079b X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR12MB1150 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: The pause instruction is currently used in the retpoline and RSB filling macros as a speculation trap. The use of pause was originally suggested because it showed a very, very small difference in the amount of cycles/time used to execute the retpoline as compared to lfence. On AMD, the pause instruction is not a serializing instruction, so the pause/jmp loop will use excess power as it is speculated over waiting for return to mispredict to the correct target. The RSB filling macro is applicable to AMD, and, if software is unable to verify that lfence is serializing on AMD (possible when running under a hypervisor), the generic retpoline support will be used and, so, is also applicable to AMD. Change the use of pause to lfence. Signed-off-by: Tom Lendacky --- arch/x86/include/asm/nospec-branch.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/arch/x86/include/asm/nospec-branch.h b/arch/x86/include/asm/nospec-branch.h index 402a11c..2c4a09a 100644 --- a/arch/x86/include/asm/nospec-branch.h +++ b/arch/x86/include/asm/nospec-branch.h @@ -11,7 +11,7 @@ * Fill the CPU return stack buffer. * * Each entry in the RSB, if used for a speculative 'ret', contains an - * infinite 'pause; jmp' loop to capture speculative execution. + * infinite 'lfence; jmp' loop to capture speculative execution. * * This is required in various cases for retpoline and IBRS-based * mitigations for the Spectre variant 2 vulnerability. Sometimes to @@ -37,12 +37,12 @@ 771: \ call 772f; \ 773: /* speculation trap */ \ - pause; \ + lfence; \ jmp 773b; \ 772: \ call 774f; \ 775: /* speculation trap */ \ - pause; \ + lfence; \ jmp 775b; \ 774: \ dec reg; \ @@ -72,7 +72,7 @@ .macro RETPOLINE_JMP reg:req call .Ldo_rop_\@ .Lspec_trap_\@: - pause + lfence jmp .Lspec_trap_\@ .Ldo_rop_\@: mov \reg, (%_ASM_SP) @@ -164,7 +164,7 @@ " jmp 904f;\n" \ " .align 16\n" \ "901: call 903f;\n" \ - "902: pause;\n" \ + "902: lfence;\n" \ " jmp 902b;\n" \ " .align 16\n" \ "903: addl $4, %%esp;\n" \