From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754017AbcDZXBi (ORCPT ); Tue, 26 Apr 2016 19:01:38 -0400 Received: from mail-bn1on0081.outbound.protection.outlook.com ([157.56.110.81]:57824 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753172AbcDZXB0 (ORCPT ); Tue, 26 Apr 2016 19:01:26 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=amd.com; From: Tom Lendacky Subject: [RFC PATCH v1 01/18] x86: Set the write-protect cache mode for AMD processors To: , , , , , , , , CC: Radim =?utf-8?b?S3LEjW3DocWZ?= , Arnd Bergmann , Jonathan Corbet , Matt Fleming , Joerg Roedel , "Konrad Rzeszutek Wilk" , Paolo Bonzini , "Ingo Molnar" , Borislav Petkov , "H. Peter Anvin" , Andrey Ryabinin , "Alexander Potapenko" , Thomas Gleixner , "Dmitry Vyukov" Date: Tue, 26 Apr 2016 17:45:20 -0500 Message-ID: <20160426224520.13079.67248.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20160426224508.13079.90373.stgit@tlendack-t1.amdoffice.net> References: <20160426224508.13079.90373.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: BLUPR11CA0001.namprd11.prod.outlook.com (10.141.240.11) To BY2PR1201MB1112.namprd12.prod.outlook.com (10.164.168.20) X-MS-Office365-Filtering-Correlation-Id: 639b50d1-edeb-448b-6181-08d36e247713 X-Microsoft-Exchange-Diagnostics: 1;BY2PR1201MB1112;2:RZanL8GFTfmZDiaVgvow4EfHaJLJ3fELM0bM5rxwjsqEFVskYppmUb4TmeVKr+8Pmt7khexH+c0dM7xRP54ANSNMlmhktNu0J9Gc1lAojUGjHyGzddzqkFt2uFEjSiUwCa1eAkN3/1yyQtFNL09saDuev8y9S9C5yyVA/UCB66/36l/TW/4505YBQv2NbCrc;3:xwMUPJ1mwAw26jGPUd3enw1LmTlWUwPfBXK02sGOFMrl00uCTpGAl3w9IWAucaHqiKxuWVd6uA/lsjADt7++ss85pogTcoiWtyFWM3IHRIzsSwejsKTlJJQs5A8iLWZ3;25:1vYPIEy/s92ZDy3hjqG88Y8MMkEX7wtqJbrO5nC+fKfkwMqbSKQtcWNFutbxpKTr7SGf9yTpq4G7AR/o8KjNG0iee7G3b0QQrG5k15peYqZC7cUjFl/4TP+so1eImnTwR5EHRWkY8QiwFEKOkME0V2qr3wmzVPbEKG5SMt4O+Hd4ljWhzHRUAQgR60Ys4nRHwcr6x4dymlYPkHgYYezKzE0keAx9ITLK225B0uVK0hcT/JNHtwrluGxuhEBvXepSd8VN0oYACkXPR4RoPRyh6Simwz8XP+epCxqQji64wuEnzF3OYsluYMCOMIjY6Ah3A93M5snwWp2kRA3roAi5DQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY2PR1201MB1112; X-Microsoft-Exchange-Diagnostics: 1;BY2PR1201MB1112;20:TRD7LS8V/Atib94Qng6DHZ/6TuXVP43omK5ULbfiNPy/VKe72jBON9S/p6qauF7GdWiGvF//empgw2Ckiu5HCxsGzQfMqCb71VlZMWlwwQE/rB2eiTCl376r0YbdlheL4a2Old6ePXMbQsuRfINLDkhsHf5m1wjUjH/0afVWvVdqRLf7EVcvfGbQQ15dy/mCbcCv97nxy7kBELaw4RIRGZeUQuwFWTqVMH2c2e2dFlo18wbgt8WWHCziqcW1B2QaoJyQCLKD4LX7FJ1LEe4GkbcrWX/uXat2bJAs4ZwVVLRaY4Ltli9tid5G8AFd3xPxLMvpCBw5oY6fNgkVfH81Ok3AqIEG11j8w1t4Nv1KeYOILCL29AOVjgkaCkTjzc+9JISv9PLV6HYcWoYhVjHJxfofJqEP5g3oIpykjQErYjqGvOAO6OLBP4v6827ugTpiyfyH3ap41lBOf9mp4Qp2EnjzE2hyK9SPSxeAsuj6/loKb2WFAOOAf4hG0E5a+tX0;4:SZ+J5nvfZZdzJrDVPAWnJw3xE66gPp10nrCrrQ7fJNsE9j/eLGg3PHN35ThA9lBbuwYOuGk4f9uZOKmhBtE8kv57IFLx3ymv/Hft7PZSs+mQqbqsxKikPjSoVnGWsW5oRYRAtLH+DV5XM3IMQnw17FnBnGNXiy3/lXzKI2cBy0NkqibXSowAVR43AzGaAgeYPECPSREyrlwfeeLx7XxaWG9sxbuSjohNN8pMFC/mbeBpTm6s9p9Dn6jHVYx1gZXBpfzjNJy99tc8dA+CBDpuU2ERygT65hohko80RzFq+01dYOJmFNRRb+GtWlrrIgG1vSxVtaGa4QIfYNARFtWiIksXhoOvL95VCaQd7LdA8LD64R3aUIhkVJwPMHpNNVKP7m2kJjQS0KJKJnjm3Zuqmeq2ZF1bRH1C4ONPqWNsL1o= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(9101521072)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026);SRVR:BY2PR1201MB1112;BCL:0;PCL:0;RULEID:;SRVR:BY2PR1201MB1112; X-Forefront-PRVS: 0924C6A0D5 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(50466002)(5001770100001)(189998001)(9686002)(229853001)(42186005)(4001350100001)(2201001)(81166005)(230700001)(103116003)(53416004)(86362001)(1076002)(2950100001)(23676002)(6116002)(2906002)(4326007)(92566002)(50986999)(586003)(77096005)(76176999)(19580395003)(97746001)(19580405001)(33646002)(1096002)(66066001)(5004730100002)(54356999)(5008740100001)(47776003)(71626007)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:BY2PR1201MB1112;H:tlendack-t1.amdoffice.net;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCWTJQUjEyMDFNQjExMTI7MjM6anBJLzd2bEkzcDIybW11UHRYclEyN1E1?= =?utf-8?B?N1A0dkVHUDYzcG9JMkxLR0d4R3BCdXZESmVJbmlXbTM5WlBFR3hrU3FmMExM?= =?utf-8?B?eVNrNk4zdlJHeDNuOXdVK3NKZlJnMEx0ZkdxOUc2WXpZY1E5YTJ1R1R4VW5E?= =?utf-8?B?WitaSzZIK0JvUS9xUHNNTHc0bWFsZUZhNmVxQ0NqdkZTcVZIUTVKbzdUN25U?= =?utf-8?B?TnlIaUpVZDhJdFNOcjNzNk1xV3RmeHJyMHFIUjllelpxS0ROYjNkWlZWdnpp?= =?utf-8?B?UGJCNzJ0aGtQTmxFck93RHhUYmwwU09zdU1wMlJ0K0FnWW1mRGlNTzAvdCt5?= =?utf-8?B?SjdRcWlORElXblg5a0cxN1VScUNzTU01QlJRaTMvdmV5WUpUR09zSGRYN29x?= =?utf-8?B?U0QvM25EYWZmc08wT1hENkxSTloyNmR3c2wzejU1WVBzT3BmRGVVVGUrMEdT?= =?utf-8?B?eGdSVnc5d0l4dUNjK0Jhd01XMnpnSlVlMkVIRjNHM0Q5aXpBZzR0RmhzSFJv?= =?utf-8?B?eUVkYUt2MFdhY0U3RTlLb211Mmpadk8wN0hyTDg4emc0c3pXNnFWd1d2dXV6?= =?utf-8?B?S3JLemJSbU5rR25wMW5XQjdkUU9IalJoNE5BK2FCM0Vqdm1yM2FqaHVTKzlW?= =?utf-8?B?a0ZZQlFOV1JCUWFvb3U5dU1WWDd1Z3RKL3orREJCc01PNXoxU2ZYNkgzd3BK?= =?utf-8?B?YWw2QmdQdlQvNzFnYjZMMC9zeVQ0V1ZoeHd3aEJMOElqTEFBdzg3RjBQeU5C?= =?utf-8?B?cDF0VlNkZFZCUFo3UU43VTZIZ1dhNFJvWjlQaHNReE4xTVRaUzM3Y3NGd1Y4?= =?utf-8?B?Q0pIS2QxNmFldXJidGExbWVlamZYZVVCblZBeDFPRm8xYU5kT0VFTDdLcG1u?= =?utf-8?B?REZZbm9FeGdFSEhKOE5hUG5qNTZYV1gveGRtZ3g3cCtlbnpYK3djazR4Ky90?= =?utf-8?B?dFZUQ1pPSGk1VWJaTHdoWTYxRnhsR1FqUzFNMThPVWJjb0xBRVJvVnZzcmQv?= =?utf-8?B?UTdjVi9OU3pqUWJSZDUrR1VWNlNINldoSTZoWUhudWo2ak9Cc25aRmlCOFVU?= =?utf-8?B?WXo1T01JT0YwSm9vZEtLUlFCN0ZON3U3cEljRGxGWlRuQ3lnYnpDSXpmSDh0?= =?utf-8?B?NWNvSTB0dXo5dklKa1VJSGVTWCtRWHFRWU42dDlqdno1MGlraUgzeUN5WUtR?= =?utf-8?B?dnhZbTEzL3dYTTg0RlFNWEh3T1U0dnVMTndaQU1zb0U5eHQ2SXFFVm5MZ2h0?= =?utf-8?B?L2NTYzd3RDI5KzlWUlRQRlo5U2RCcGhyZktLK1pxNCt5MDhtS3IrUVQ5V2Rj?= =?utf-8?B?YzQrd25oWVJJTXFqQjNERU8wSnBhY1dqTG5JMnJBSFplQXZnMW9ZQXpVNHg5?= =?utf-8?B?QjdLWmxudm1xWmRxYXVEOS9FVmJBNmdEY2M0TEdvMFE9PQ==?= X-Microsoft-Exchange-Diagnostics: 1;BY2PR1201MB1112;5:pZfN90FGt1I0ZkRQPBMhlxjRHv/VssiLEwSgdDpp5ImPGe45zImPXwuEMVhxOjABy9DWQgc0UCPRWYh7ya0cpgEh7xPfaasC8PRHrYyHYH6VC2MpOy4pWg2vaH/OVefBZwU6FkgU4BS9wAZcZEhgiA==;24:hm2L+ZIw3zo4HxbXG78wA5J3wxv/IMp/xQv5p6Wg5VD0DsxNuHLg3pavoZ/YuDhG14+3t8Q7TzIQVAcG26Na8wIKunssVmCeVhKW+0W6JlU=;7:30ARVGYEPQSfKfjtzvcNUdOH5cD1lcH1UXXrFYjQNLnGUVeNjc7wOTLouTnyu2IJ0SvcGPku38Ah3amM1GQMoK/CzYPHBWfWHsmlpH8UKLXsTcMyamu2pe8WPxifzIXJGNBBXw/3iTGTJ6ZdXS8/w+/0uf244PdcHO/IVLKjTrA=;20:WHi0XkMazQLV+4B7hoW24lugbGlBg8/zE8d7LILsz7IZEFPoMuzx4DmgFEihyoaJSx220lHNNliC/KExS2jw86Nt2QVLkVgQf1Tr4bVfmV2K1RJJjmXZaUlGWkwOIF7ESNOj0x1MspcLbTC6oagM7b6Crq3RhlCT+aXMMR2STyYwAU4i0K6Ad7kHduibO/wXTSSvkrx04Ayt1sW6uWfRmu6n5e8//jQ87n5yCEEMkCb7/24U/F/HcmDyIzlFMg9I X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Apr 2016 22:45:25.7039 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR1201MB1112 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org For AMD processors that support PAT, set the write-protect cache mode (_PAGE_CACHE_MODE_WP) entry to the actual write-protect value (x05). Signed-off-by: Tom Lendacky --- arch/x86/mm/pat.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/arch/x86/mm/pat.c b/arch/x86/mm/pat.c index fb0604f..dda78ed 100644 --- a/arch/x86/mm/pat.c +++ b/arch/x86/mm/pat.c @@ -345,6 +345,8 @@ void pat_init(void) * we lose performance without causing a correctness issue. * Pentium 4 erratum N46 is an example for such an erratum, * although we try not to use PAT at all on affected CPUs. + * AMD processors support write-protect so initialize the + * PAT slot 5 appropriately. * * PTE encoding: * PAT @@ -356,7 +358,7 @@ void pat_init(void) * 010 2 UC-: _PAGE_CACHE_MODE_UC_MINUS * 011 3 UC : _PAGE_CACHE_MODE_UC * 100 4 WB : Reserved - * 101 5 WC : Reserved + * 101 5 WC : Reserved (AMD: _PAGE_CACHE_MODE_WP) * 110 6 UC-: Reserved * 111 7 WT : _PAGE_CACHE_MODE_WT * @@ -364,7 +366,12 @@ void pat_init(void) * corresponding types in the presence of PAT errata. */ pat = PAT(0, WB) | PAT(1, WC) | PAT(2, UC_MINUS) | PAT(3, UC) | - PAT(4, WB) | PAT(5, WC) | PAT(6, UC_MINUS) | PAT(7, WT); + PAT(4, WB) | PAT(6, UC_MINUS) | PAT(7, WT); + + if (c->x86_vendor == X86_VENDOR_AMD) + pat |= PAT(5, WP); + else + pat |= PAT(5, WC); } if (!boot_cpu_done) {