From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751787AbdIPMgF (ORCPT ); Sat, 16 Sep 2017 08:36:05 -0400 Received: from mail-dm3nam03on0064.outbound.protection.outlook.com ([104.47.41.64]:54405 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751587AbdIPMfN (ORCPT ); Sat, 16 Sep 2017 08:35:13 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; From: Brijesh Singh To: linux-kernel@vger.kernel.org, x86@kernel.org, kvm@vger.kernel.org Cc: Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Borislav Petkov , Andy Lutomirski , Tom Lendacky , Brijesh Singh , Arnd Bergmann , Tejun Heo , Christoph Lameter , linux-arch@vger.kernel.org Subject: [Part1 PATCH v4 15/17] percpu: introduce DEFINE_PER_CPU_UNENCRYPTED Date: Sat, 16 Sep 2017 07:34:16 -0500 Message-Id: <20170916123418.37807-16-brijesh.singh@amd.com> X-Mailer: git-send-email 2.9.5 In-Reply-To: <20170916123418.37807-1-brijesh.singh@amd.com> References: <20170916123418.37807-1-brijesh.singh@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: DM3PR12CA0051.namprd12.prod.outlook.com (10.161.151.19) To CY1PR12MB0152.namprd12.prod.outlook.com (10.161.173.22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1ddac541-7869-4f0f-abb1-08d4fcff552c X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(48565401081)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095);SRVR:CY1PR12MB0152; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0152;3:Chqpdq8vy/EWu5LqDBt7jQYnrYr0kmXtMAbdGUH3Q3uhFU2Iapuyf0yqqtxLZYw7oCHiLuJeLBd2Mp2DtrerlLRAjDwmzTKSttums9p2waD86aUEuO9SNQieL+YhpdxYcjaAb+ac5EMF0IPy0AqwY9HNyvDzffF6oJhC2C0WuqVZE4PICMVhl71Ma5WL1/ni2iknWqSvXhZKx+wFcoOIK9kWxGmXcBlGqQC/+iwlLjGGtOC3Lbbuocuoj/vkGarU;25:IWAFZdS2v+YDaatROpj1yMFaWEyJuqSNP9+s9KlefS+EwjnpMGmHx4tK4JQ5oV46T6iLWayE4PZKnWO3i2lpMu3Hbu91xHro7lB3xFtyktDj1Ug5UYykCEGD3D9RXZzC/HWy3ALsBbBhbM16khDWJMgk0dFuM/ti7jfJjehV43Ujf35Vzk30wumDrZcL8Ucp3MpdP7rLQj9JQ9Kk0/RReZ5ABU0PIK1oLtdDxmIx6Ek5euObx9G4pA+T6CHK9LIZXcaShDCfyAmELBC+KHT0c1PASgwpu+dUvPCYe+tZq7H81DVcPLZAlkCVuoLCzSJa7JF6NqrY7JTz4/PJdC0CJg==;31:8QHyLrkFXApcrYL3BUiFA/yNtXCA2P4a8tzOZRtt+0zBwV5AoiT9Q0BxzG/S1RdwG4/hng4tK1IAVF5LWkxtLR8gZ4LXXf4BCJPVQGnhJ1jwqTymaOXYaxE/pYGKMpytad+8omba2GyZmjklUDKxJBKsjoihizNw1U3dF36nF3TD7a+FLsgM7OBi/9EE4fCgdFjkhatSiO6bGgnYSDRPLR97rCgyx8UDRF4xhofoEPM= X-MS-TrafficTypeDiagnostic: CY1PR12MB0152: X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0152;20:BrN2BvfxxBAVh333SHaUVn/+UAUSxIYYJxHPLU7mfPP7Mfi0bhgTAbKsC3EC0XK/b34WDFMfcWtqvzZDRRUio1rMMKH57nGnW9hcAKa6NYPAb3OmsJRfZpxT+mHOsAHTAya5EVx3o1c+cckG8wrP54fdKIwWHuUo/Yp11qKevd62GtBj3BacKuMMEDyDIvTviFQVSjc8BDvS3r6bkS/PeJFdeJu3TOf8pronIL0jhoqqKows/wawNReZvTrwBewCvIFo0bRqe+kGZ/WgiqMye6fncwQPigC3W5LoycWhDvGugUgaVSijoYn/FTC5dJ53IKJ9KNSbgVFV+oicHl/v0h6RdfgQ7mguECAOhdJXOGUtT5hsdvfUzfeKXTLXN6Nl5S4E9/LVgLX+LaMUIuIVR6ZmMSxnKS/c7u13cfH9GECIXrE99HoIUe5HaPvdeLKPgdT55nnWYn/A7/+wVU0cPJYZ112ZS7zGyuRRQdbB3IE74459DUrtqspYIPTkyEK2;4:eLMKS7MeJH4EYqnz5TCFvVoGhRsUYsJBKdLvDrWxjDDKIj1ANPcFan2AKa79K4oN8YaNnOU2AQ7IiaQGXAQd0wCYGWETQ0HAg188KRGZ1MTI4P5/y05chSEqWzUcBH/9TNCW6ES0xescVTbMZdPQZerkxRuYRdwPoSel51jgLl+wW5/wc+8yWM/lI+bxEfCPCm/CkbUZpla01/1VNPpuPS5fuqwK0amcELUq08Y9PW3+nDdwhgqzL95otjtlNx8ckz7L/vsJ4Mv7ZxkZv8rMjb31MiM1e9+DiRRQ0q0Q+h6eca4piFd4u438kVO260JsXc7yvjkPvsxv8WON0sgP7A== X-Exchange-Antispam-Report-Test: UriScan:(9452136761055)(767451399110); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123562025)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:CY1PR12MB0152;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:CY1PR12MB0152; X-Forefront-PRVS: 0432A04947 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(346002)(376002)(199003)(189002)(6486002)(53416004)(81156014)(7416002)(48376002)(81166006)(50466002)(6666003)(5003940100001)(7736002)(54906002)(316002)(16586007)(8676002)(97736004)(2906002)(305945005)(53936002)(5660300001)(86362001)(478600001)(16526017)(1076002)(106356001)(110136004)(3846002)(4326008)(50226002)(68736007)(25786009)(6116002)(33646002)(105586002)(101416001)(50986999)(47776003)(2950100002)(8936002)(66066001)(36756003)(189998001)(76176999);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR12MB0152;H:ubuntu-010236106000.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR12MB0152;23:PuvJ8zmeXu6l+w3Dj7huiudokD2//+nwOmoyxcacd?= =?us-ascii?Q?+lBEc0rsgo1guyouRxfaDgYkG9AStPLyw9z2nYcJnfPX3wfhh72wvEqnrvet?= =?us-ascii?Q?dfp9QVlzF/zCZUb1543czP6SN8UdjdIn8pnLc+/1f/KUKvS09+Va7zd5MrH7?= =?us-ascii?Q?dGNLaCS62rANUNfQscPjXHXDgtr3WVOZ2sDA6tBS5z1NpLQBsYVC1swRO++Q?= =?us-ascii?Q?6KmNKW9Pxbr7GHrMAJcE9MRvK5IefKn3uXlkHrDPAeAPuYsnVAmeuYLZ+v4b?= =?us-ascii?Q?0Zls5O0yYShIKgmkGai/1FWxttYHMqixbZNA6PGk95pjNrJHZjM7lv3/F/0b?= =?us-ascii?Q?SktdSOWzbqI8vuUB5CEdFOi0pBCHcNHTgJUd+hy2oTPbhoUe6RykO4IYD4Q7?= =?us-ascii?Q?BhIZu8q+nbuGsOYW1kT1FkynYyH0uO4hfdekCdjKy48WOuY9SWehIAKPEVXg?= =?us-ascii?Q?CjJuup7wqkIGxG8gxAuJTZeOqZ09X8DaKafntR0imrF9HFY+owssmb94I0Nf?= =?us-ascii?Q?6Q4P9kdi95JBud2pYEN+jqeMy1AzlxCmt4e02VdPyORTPc160jzAkLfQrRLv?= =?us-ascii?Q?2Wa9BJboKHGaqAH2TKNyQuNVnUz/NoZKsfsSgDQzygtMIuN1qr/P/EAkfFiU?= =?us-ascii?Q?0I25w2Gknq5QBoEJ2U2h+jtPyRy7cUcmcMKcmcn0ElwzoJgM6dph6Lg0MVqW?= =?us-ascii?Q?GPftJoZs//45rS5ZqMWO5DeEvo+Q+pJLTzViPAjmmWbL/JiPPgGxd1QgbY3J?= =?us-ascii?Q?AhQxD474xvyMvH/ILDboJM5ZCBApSxKU2tvReGZ9Z9XVwxg27hVhsvGZuUnw?= =?us-ascii?Q?Y3MHXIDIkemEhYRvv1Cjee8TJ3eKn2vKcxsShIUwoO2P2SdkqMtt0wIoPb6C?= =?us-ascii?Q?S6apq83rxM2qtPAppmwPtDr6p2ZFG5/jdqRA0/IyFd9vM//v0BiVj9K/XEJy?= =?us-ascii?Q?MpsMGIRXAXWxDweXJhRdGycAw1SDBEvvv1n5pRXx3vlwaPJ8RfLEE63hMUpo?= =?us-ascii?Q?e2KU/zAq6rfnQmRl0JZiVA//P3RegoaQfN4Vre7kMymCasA4CZqb0uRe89jj?= =?us-ascii?Q?FtV81jQZLTM9kfC62WIZSSn22NHezuPepO3eBPcn05tC6+4ng=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0152;6:0sj5pT0m2sV0wOno7Jgan1bhOmekkwad27el66Fs35DTx7sY3Mfy5JqDY54qOH4Q5enMhk+SfIqq1Cpb22wU0JVwi7W6X4m1jalUb+AN8fl56B4wCWUckhsN7X0idi5vfaMltZNz2pa1WYs5/WDQGYKF3JBVtE9aJpHMWSqwEnFBM3fhfnL2n7ASNruAc3liHKRTV90LhH+0vMuZJ5rGv3Y2rPUfDC8TYdYfY1h/Ps50wbDpKnrhvna79uGpJcmvdgjCSiDfmuDnUK9w1c5d/6c99wH9WD03mfWqR2GNy5hfs+64GmeNDj/jj68QwtTEgqpLt+zzH680DsKM2awPJg==;5:TjmcvL6uNkTusl4425trXozIOIGhy6GQHu3aHYTxtorHf0CF5CwE8yMKpE35976lhs3ccsklZoWPLtCHzg62f/iAerWRV6LT4Vj/yCs/X+1Ru/XEOjK6VqiikXnOWMx1mFdmVCswnCAq5j60X953Og==;24:51/lAfBUx/Sp5VnU7F+bTivrSeX0KVnWBL8g9eq3RRXc+jE++f5aL3ug/GLiT4o9kWyAgHu8WYX2GdII00CJR7/ogvclVZpUuIgl9i1r/eE=;7:70EEo3A6DkUUdwKDlf0NYWnKuT/0x++h28TY0P0WNWdTSr080DTCTMe2eWQGYR3xXwdeqS8YCTM3aeymjsLX5lkmF/dF8/smcGDhjA5wDEvWvg4LLHu+kpPBDbxXsd1592QjZu1eyeuZpDeBJ+NMe2cX4OgkERzy5OqWJaKf+RxaJl6nin1jRgyWvbcqHGmWKGpTXvC+YsYJwlK5fhP5cyU51D//WtSA4cTRhJdlYtI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0152;20:iEHjFNmxsdPvTdoFwDbbnGUaUbXfLRb3aNsg4jhdp+7JuVCNu66xbm8PChYuEGyvUtJblWR9ACVWUp1kl7N5BsoBkUg7Jehz7yOT+rW8CdlyT/buTasGN6yWdKA1+Ga6olJvO7XBY5VHxI7vXeo+FlTdGNVKzCcUn2QtY1K1+FxwrtnccPgKPgKS1fcgfgWeSFL0zJqg/m+WdaCbKOjBtJbNJIP8R7cuG8BcNJ5LmHob1/otEGJLfmA22jm4KRlb X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Sep 2017 12:34:53.5370 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR12MB0152 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When SEV is active, memory is encrypted with guest-specific key, and if guest OS wants to share the memory region with hypervisor then it must clear the C-bit (i.e set unencrypted) before sharing it. DEFINE_PER_CPU_UNENCRYPTED can be used to define the per-cpu variables which will be shared between guest and hypervisor. Currently, KVM defines three variables (steal-time, apf_reason, and avic_eio) which are shared with hypervisor. Cc: Thomas Gleixner Cc: Ingo Molnar Cc: "H. Peter Anvin" Cc: Borislav Petkov Cc: Arnd Bergmann Cc: Tejun Heo Cc: Christoph Lameter Cc: linux-arch@vger.kernel.org Cc: x86@kernel.org Cc: linux-kernel@vger.kernel.org Cc: Tom Lendacky Signed-off-by: Brijesh Singh --- include/asm-generic/vmlinux.lds.h | 11 +++++++++++ include/linux/percpu-defs.h | 15 +++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 8acfc1e099e1..363858f43cbc 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -777,6 +777,16 @@ #define INIT_RAM_FS #endif +#ifdef CONFIG_AMD_MEM_ENCRYPT +#define PERCPU_UNENCRYPTED_SECTION \ + . = ALIGN(PAGE_SIZE); \ + *(.data..percpu..unencrypted) \ + . = ALIGN(PAGE_SIZE); +#else +#define PERCPU_UNENCRYPTED_SECTION +#endif + + /* * Default discarded sections. * @@ -815,6 +825,7 @@ . = ALIGN(cacheline); \ *(.data..percpu) \ *(.data..percpu..shared_aligned) \ + PERCPU_UNENCRYPTED_SECTION \ VMLINUX_SYMBOL(__per_cpu_end) = .; /** diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h index 8f16299ca068..b2b99ad4b31d 100644 --- a/include/linux/percpu-defs.h +++ b/include/linux/percpu-defs.h @@ -173,6 +173,21 @@ DEFINE_PER_CPU_SECTION(type, name, "..read_mostly") /* + * Declaration/definition used for per-CPU variables that should be accessed + * as unencrypted when memory encryption is enabled in the guest. + */ +#if defined(CONFIG_VIRTUALIZATION) && defined(CONFIG_AMD_MEM_ENCRYPT) + +#define DECLARE_PER_CPU_UNENCRYPTED(type, name) \ + DECLARE_PER_CPU_SECTION(type, name, "..unencrypted") + +#define DEFINE_PER_CPU_UNENCRYPTED(type, name) \ + DEFINE_PER_CPU_SECTION(type, name, "..unencrypted") +#else +#define DEFINE_PER_CPU_UNENCRYPTED(type, name) DEFINE_PER_CPU(type, name) +#endif + +/* * Intermodule exports for per-CPU variables. sparse forgets about * address space across EXPORT_SYMBOL(), change EXPORT_SYMBOL() to * noop if __CHECKER__. -- 2.9.5