From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751529AbdISOAx (ORCPT ); Tue, 19 Sep 2017 10:00:53 -0400 Received: from mail-bn3nam01on0055.outbound.protection.outlook.com ([104.47.33.55]:52996 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751034AbdISOAt (ORCPT ); Tue, 19 Sep 2017 10:00:49 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=brijesh.singh@amd.com; Cc: brijesh.singh@amd.com, linux-kernel@vger.kernel.org, x86@kernel.org, kvm@vger.kernel.org, Thomas Gleixner , Ingo Molnar , "H . Peter Anvin" , Andy Lutomirski , Tom Lendacky , Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= Subject: Re: [Part1 PATCH v4 16/17] X86/KVM: Unencrypt shared per-cpu variables when SEV is active To: Borislav Petkov References: <20170916123418.37807-1-brijesh.singh@amd.com> <20170916123418.37807-17-brijesh.singh@amd.com> <20170919110611.GN4733@nazgul.tnic> From: Brijesh Singh Message-ID: Date: Tue, 19 Sep 2017 09:00:39 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1 MIME-Version: 1.0 In-Reply-To: <20170919110611.GN4733@nazgul.tnic> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR1701CA0016.namprd17.prod.outlook.com (10.172.58.26) To SN1PR12MB0158.namprd12.prod.outlook.com (10.162.3.145) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 05b30ff8-943c-4ec8-6992-08d4ff66d369 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:SN1PR12MB0158; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;3:pGWxEamWR31YPW9R5j9EdPKk1q3npq1tHgkKBxBowcZ/rhQNbD7MB+MV+9zhmymASRcexPw+f6OmP6R4IXtoifFwtBI8B/6ebxC9XLF0zgV4BDHIy0dADWZFFsVTbweU0hjdBPNAcCyb9fNLaAtDcXJkn2t+TQE+XpM4CfqWRh5lWABCDFYpUk0WMNwwei5AWrwSpM1dQopzVkxkPRK8eenVib7iG22/xLow5UAb7Qx3O6pv+DjnF5X+VHrznKn+;25:SS9s9VrB3en6CLUYll6U0+wIvFIoKw877nZRAzWeUyypRkJsfQQ45wp6+A/uCPSc1/eDb8yiHI4x4hGFt9eWE2idv9edeflK09hZjKwy43Ey0OnADdR2ph6VzE9HoCyWTa4+Nu5U563Ym0d2/Eav3VDe8AQe2H5GTHPyL4VPXuQJ1kPX9BO+Tj8Z8WsN13106COh1y1/RWrExgSm/odrkEZ2BCkHwIRBOyOvhIz4zzhQUCHMT5ARtJQ9n80mlZynZHHrqT3kWO+ONfnQ+Qf5jtsJBIKZiBgVgMfBq5wxW+mhKyLy5UTwnWMqqXW5bdyrySN/0eTCOjL1TN/4FUOSUQ==;31:1jHKRSJSvZE7UsK6LFiko3PJBeT2Ef/G0BhXMZRIPa6PulBRdoMQgleysKegtvDsO7MorxFirvfJ2FW0wOjegcbWvC9ksvJJP13ptTUZ5LcShIRzBQ32vV+mb+t1nggfJaT4ZPD4RA0N5Ty2bW5T7/sg1FP12SZOctXVxMYrNC3WLiH7q2qCTQS63gjK+gQhU18tWLLtCxurVp3gr8/llsbxs6JrsZpnb0s3XkqXOZA= X-MS-TrafficTypeDiagnostic: SN1PR12MB0158: X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;20:EaGwouvVr+dj/4YPTs2E2EHFdbaoUncWaj1sGi5QPSVkedb6VPIdibLHcUPZ5w4JmWLmmEu3KPPlOm5RSwpPavH0QnepRf/FsRLLA9azr0qrpAiSBV79teQhhezVpIGzkQGKRTDWUrMBEBuCLyXWcrr777Pd3ByEsmQ/l0yOvn2Hm9e4mqur/9C1yFUdx49C+qGvE9hssEtNnAwMEF2pLC7SJmaH/PwINzZ7AXQv8xlMPCQTAPLtaScqryabevEgqhIgZ8jhVQpwUyBMfepQF3Szhdq631CKXvSAuU7g5T3fgPU8+ThHhwSfX7Ok8J4dyRlZAMy80/3MV9cLMxC95lnojtAyteN/hP1nNiuNxmjaJmoJkWOnJfL0cP7Uz3TIZGPmr94tPG1ROiSc1eAUvRJYQ7Juax3UltvbwlkVurcnim/44/rdjG6m3/K3sZJahKDC4sXcLu+AiM3Yv6uH+iKQhwbzT6gG5yQac2Wn26kr49jGNkZQ9HLfh8w0TKPK;4:sXm4fyHOHwGXME5SsQecQjokyO8cTXFk6wA808d9Ud59QHug1UQVL5smxmRBAN4rv/7h9ZvYyo19I+Iy6qI6krMrKWCw6iP/SyzkhK85cutpndJvmHOXeMle1m45B9L6bPI2JAtoRkjrxLcXjkc7Z6OPHoSOQ+x3j1wP7h7Af7BvY6uGcd6g6Y9xWG7uspLLAqjZS4U+uEU+neB29/Z9KXE4zXrkOhnMnaHf/vppH/x+xuCbVmbWAe876v87hks0 X-Exchange-Antispam-Report-Test: UriScan:; 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)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6055026)(6041248)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123558100)(20161123564025)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:SN1PR12MB0158;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:SN1PR12MB0158; X-Forefront-PRVS: 04359FAD81 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6049001)(6009001)(39860400002)(346002)(376002)(189002)(377454003)(199003)(24454002)(101416001)(25786009)(76176999)(54356999)(229853002)(50986999)(90366009)(6486002)(230700001)(189998001)(105586002)(54906002)(23676002)(33646002)(106356001)(53936002)(68736007)(2906002)(5660300001)(65826007)(4326008)(36756003)(7416002)(6246003)(64126003)(6116002)(3846002)(77096006)(86362001)(53546010)(58126008)(97736004)(50466002)(7736002)(305945005)(47776003)(31686004)(83506001)(65956001)(65806001)(66066001)(8676002)(81166006)(81156014)(8936002)(6916009)(2950100002)(31696002)(16576012)(316002)(478600001)(6666003)(16526017);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0158;H:[10.236.136.62];FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtTTjFQUjEyTUIwMTU4OzIzOmZoZm13SWN1UDVpakpKNEo1bG9pdFU3Rll4?= =?utf-8?B?YURVTXZtak1TUHdSaXcwSWFyaVBndjA2NHpwZlM1cWlJVFB0eUxUTUFqZUFT?= =?utf-8?B?N0tEbnRsdzA5VCt6UGprdHdrUlBiaFNKaTJ1Um1aQ0tDU0xabHJ2NnIzYWVS?= =?utf-8?B?c1h3dkZ4azUwZFVlMnoxMGx5SUJFTWd5U2J3UHdTRXJyMmw1Z0ROZExTVm9D?= =?utf-8?B?K0FGdjVGc29rQ01OaVF1VG1FZ3pXTkV1L290K2ZTOTR1cWo2ZEkyQTExWjdS?= =?utf-8?B?Z01IVWNXd3RmQWJsZXYvRXZmTmxMWWNTVzcyeldpbHdmdURNWlBJUElTNkU5?= =?utf-8?B?V2NMMmp6Mnd3bVZLNzVhK25sTm1oR2pUa1JjejJnaTBmY3Y5OE5EcW1VeVM0?= =?utf-8?B?Q21ubzdmOUZ6UXVEejExTkR1aGpDZE1SRWJseSs5Rm5vQms1SXEwVDZtSXFT?= =?utf-8?B?R1dkRUVGSkQ3eENPbTg1Z3NZOUQ4RWFKSHdHQkdkTnluQ3pmVXhEMkE1dU5W?= =?utf-8?B?aUthcGlJay9Da0pablkvY1RSWWJveVNDYVFKTzRNRzlPK0NBVWdDajgrK250?= =?utf-8?B?QUFMaUhlMThKaGNmeUVqOTFkeGJHeGRhMzlIOWtoU1R3bVBuVmhrc3kvdk1P?= =?utf-8?B?QmpvNHcvM05vNnZFTEdVdmRPdWd5TlZkRmVTV1RKSGhIUXhsenpSTkFydzNs?= =?utf-8?B?b0JDNEc3cUZXeDhGU3ZJMzF4ZWZ5M0ZudzlYN2FqcmJ2OEdXTlVkeXQ4NXZX?= =?utf-8?B?VG44RzJVNWlkclkvSnN2azZmdlZ4Z0ljaUxQd0FObk5heEx5SjA5NWd0UUpI?= =?utf-8?B?N2diTFVoRWNGVmtBZFNNWWtLcklxdkFXT2hYUmEwWlJVQTlvYUdpZlErRjRM?= =?utf-8?B?ZS9Ba0tmMk1RSmkvdzZ3d21qK1NsT05CeG11Nm5jdWl2N3IwN290K3F5eFBx?= =?utf-8?B?SEZURTlTaGE1UWFER2JyQlQ3UnJNSXVmTzVCM0FMUkl1Skw4c0NGZHRiYjlr?= =?utf-8?B?ZWRvZnlHV0tRUldiME5WTnZUdDF5dTNHaldlVGJNM2g5YzljZXJiTkQraStM?= =?utf-8?B?ZXhBOHVjaEFpM2FJY2w0UkpWY2VRUFB3eklMV09tZmVzZTVQVCtTR2R3RU1n?= =?utf-8?B?T3ZTb1FrZ1lrRklPdm5HM2xIY0ZxODA3Ym1VSTR4LzA1T0F0cXFTL0tWRFB0?= =?utf-8?B?OC9LRFBYOGRvTU1ISXppdGRwSlZFOXh0bWdubGhZWUpwZ1pqZGh0a2Q2Nmpo?= =?utf-8?B?Z0dCQ3RQTnlFZmUzWXloY3VVZjN6N2ErdXRMRDYvWmVybWVFM3kybEdONC9X?= =?utf-8?B?MTJhU1ptVXVsVG5MU1J3TDRIOWVodkVRMlhQMk1lY2ZMVTZ3NVpiUmwrVW44?= =?utf-8?B?Y1BDWUZGcngzZWtHaGFEc2gxQjFhOE5DTTMveEZTa0Z5M2VIVUpVUngvN0Z6?= =?utf-8?B?NFJjdUlLQXZldjFnUFU1OVhJZUZFREUwTHBjbHhhV1Q3NXpLSVlHM3UxN2R1?= =?utf-8?B?UE9URmtZWGFWMUxlemtUckpib3pDWTVBRU1aOWVMSEM1NDU0N3BJUU9sTFNq?= =?utf-8?B?enZGN3VrS1ozVWtYQzRnVVh4NGJrT3N4U3d1bXEwcGtqZzNxMzBtT2pSMWt1?= =?utf-8?B?enVMOGk3dVJIaGxqSUFkTXZZOFliNWNDQ1VrVDEwWFIrMjI5b2QrVDkyOGJy?= =?utf-8?B?d2QxOUdBUmNDMndXOHNCb3p6cGk1bHAvU1hRTmcxaXpndFhKOW5teThUMlEr?= =?utf-8?B?VElvMU9VVW9wcW4yeGRtRlVBNEhpV1Z3dkE3U0J6ZXRYWGJGZ0NpS29hczY5?= =?utf-8?B?Z0RUUWdmbjBoak5WaUxWRTRBUkk1Y0MyV1lpMmpyelB3ajlCTzBIVmhjdkVl?= =?utf-8?B?NDd6VEZsVU1nTkFhZ2lmVUR4UnAvMEFnK1dWRmRuTU9QWFIycEZNU3U0WGY0?= =?utf-8?B?RS9DMkhsYzhnPT0=?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;6:F4uyFgkU5DHozT9F74ZaHK3eEsahLWb1ZQYDavs5LP8CimhyY8Ju6tyHbyIpJ3MzoHLJ6e7uniNocbuzuzrnKRjecrjnrLUOIBHYmlWMJnyzAo3TX7Xv5lEsuROO3wg9m9BnzT/qoD9uqV8ilAjJHVh+dsbElrvRik7tFoWFqKYyQ1eBLZPgdvr/hrHvRWPMHNut4saX6+zNcfY/XCCXqzO+fMXUlyBCY97lPNe6HbNpEQtSgbCyexceQ1w+A0b5QItIvJBZA78amoBMj3Of14FTW9OiBbWLf3efqud1/MixbDWYXkSWbCyS49JzfY85h4IdffiGKUfhPer/aFM6yA==;5:+BnLmJuH+AHqPyy8OeQWVZb7+tf5F0LP2aruA4gNIl+/TxA6B8btVOTFz/jeZw7HMMYcCuOlut3iQ1Rw5d/62BE3c0JSTOL+124x+5XmfQdBGCnxa1jnuPgEhS7PrEC6PNym2tKoLfQnjIg8aeJwqA==;24:+6VeO0stZd58NGPvfPG88mGjyzTqlySBaE3qg3S2C4L2lhZIGmsjps1tLnxmLHMrlmYdh/bsBTPWjCLws3lvtQ2prC9TYr+Ehd4xkpqz6VI=;7:Pbqg33r0ajs2BztCc/WNuymb1PPshO/sbAe5F03B4ZJ4N5+0PrPugVnQE6BdMjzYeFTqT1wkhD0azDeecYIdR8khISbnNhY3X4KpinySRKRO8ZuPhTJ21gWNyEglDY6Il42ATK3tqwQkoXIntPn3NJzUryAzL3DVTE61uqnBMjgsnncVpcz7GpokuT3Bd3JIGuyIfW3tDLAGG9vTvG21WHAtg/B17IggWW4OMa5YJLE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0158;20:/iXUejfmpkF7An/I+TaQjjAEEN3wnEnuQ809cp/jb8ddw/gDmqq74V/+9e/RXdgMwPviwr11dA9YhpGneDuN2d0s1b/MycGbwqI7EoMaNxAF31fqNg4CQRhMG7HNE4IRaiXVFwY9fFaQzU+clI6Nt4uGwRVQfXD2StNvXS7pNA6gcnQ+M7iCUqsG+d03YcEU5A+yn6uxLjB1ZMEoUgdVLTOHJW/ZHmGj+z+n/v5MBrmWIm4OBKSqP3BNXSALmNx7 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Sep 2017 14:00:44.4732 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0158 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09/19/2017 06:06 AM, Borislav Petkov wrote: ... >> + unsigned long pa = slow_virt_to_phys(var); >> + >> + /* decrypt the memory in-place */ >> + sme_early_decrypt(pa, size); >> + >> + /* clear the C-bit from the page table */ >> + early_set_memory_decrypted(pa, size); > > So those two do a lot of work like TLB flushing and WBINVD for each > per-CPU variable and normally I'd say you do this on one go instead of > variable per variable and thus save yourself the subsequent expensive > invalidation calls but we do it once only during boot so maybe something > to think about later, when there's more time and boredom. > > :) Yes, we can revisit it later to optimize it. ... > > Let it stick out and shorten function name: > > for_each_possible_cpu(cpu) { > __set_percpu_decrypted(&per_cpu(apf_reason, cpu), sizeof(struct kvm_vcpu_pv_apf_data)); > __set_percpu_decrypted(&per_cpu(steal_time, cpu), sizeof(struct kvm_steal_time)); > __set_percpu_decrypted(&per_cpu(kvm_apic_eoi, cpu), sizeof(unsigned long)); > } > > Also, we agreed to call everything that's not encrypted "decrypted" so > that we have only two different states: encrypted and decrypted and thus > less confusion. Will do.