Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp16364ybi; Thu, 13 Jun 2019 10:48:20 -0700 (PDT) X-Google-Smtp-Source: APXvYqxO1pdrFxVlkIf4L6T6J9R6xFTnFQzbsIJVrW6RYRn5PHk5VUj8W0PgxpQweRCdf8mswF43 X-Received: by 2002:a63:fc61:: with SMTP id r33mr31823437pgk.294.1560448100638; Thu, 13 Jun 2019 10:48:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560448100; cv=none; d=google.com; s=arc-20160816; b=VLlpHP7chopw0miSraoAiEm+L2QixTXGMJAAWCbO6Tb9XIAtOMIZ5L/J9qb6eqqkT9 hwcbTgutuBG5NXn5qLhb2pyzNB5m0xBUE5KGfGQfe7kC6q9kAA9MYL/Tnton+aE6l1Ga n7QxXAM4xB1LDotw+GTwecAp9pEG1fSviHkr5gwJ/TGKYhA74WOAgbC57SWmjAK6OYcU aut4fkvJ/t+tAvuqOyCzQ0OD2m/mlr5yj3VhqPeAA3TxrKCKfWiCl7TKs2ehC57oP2Iw 3FnFMlmJlV2ixvcTDwcVL0SgvW9/140L74+205WDPF9PXdksexJu6yD7s9i0+TnlQ94Z yzZw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:autocrypt:openpgp:from:references:cc:to:subject; bh=Udnn9P3lP+RQ/qvcEQRZbEmCoylKwZGJTFd3mbZPxig=; b=rBeHGjjl20TbxZRzkYUpL/HVAZrrBrGJFdvpBuwRg6Ep88LxCYpPQ7httD3oJvFTwx U3MvxnO6n1cuyC0axkBUMRNhZhmuGeJOp5/0oUaGf+gPGi/iVKPm91zhKS2yGVs35rHQ zRN5ZKBdLAhHfxW0ZSQvYqefcFEpE7TQXqEMitYLiPGFUKcm02iBVNIQG0i7xYLRy2cl fSMwcAKvj5Gmjqxrl0pC2bEI6eSFTx/Q9CL0P6mCiFg8zHCsgkOJLJCy2nEq5jIAcaHf Pi4NPHmFAr/oWjxNwka7KjMeDb5tMA1cs8vDXBV/LO66A22H4ryTug99RwTVByGocZzI K4Nw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u18si170355plq.311.2019.06.13.10.48.03; Thu, 13 Jun 2019 10:48:20 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726915AbfFMRsB (ORCPT + 99 others); Thu, 13 Jun 2019 13:48:01 -0400 Received: from mga05.intel.com ([192.55.52.43]:46949 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725852AbfFMRsA (ORCPT ); Thu, 13 Jun 2019 13:48:00 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Jun 2019 10:48:00 -0700 X-ExtLoop1: 1 Received: from enagarix-mobl.amr.corp.intel.com (HELO [10.251.15.213]) ([10.251.15.213]) by orsmga004.jf.intel.com with ESMTP; 13 Jun 2019 10:47:59 -0700 Subject: Re: [PATCH] x86/mm: Create an SME workarea in the kernel for early encryption To: "Lendacky, Thomas" , "linux-kernel@vger.kernel.org" , "x86@kernel.org" Cc: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , Andy Lutomirski , Peter Zijlstra , Baoquan He , Lianbo Jiang References: <053ded24-eb70-0e88-5e0c-312ea93a6fd0@intel.com> <42f8b183-caae-9147-4021-3dee3462c0db@amd.com> From: Dave Hansen Openpgp: preference=signencrypt Autocrypt: addr=dave.hansen@intel.com; keydata= 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 Message-ID: Date: Thu, 13 Jun 2019 10:47:59 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.7.0 MIME-Version: 1.0 In-Reply-To: <42f8b183-caae-9147-4021-3dee3462c0db@amd.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 6/12/19 10:46 AM, Lendacky, Thomas wrote: > On 6/12/19 10:00 AM, Dave Hansen wrote: >> On 6/12/19 6:32 AM, Lendacky, Thomas wrote: >>> Create a section for SME in the vmlinux.lds.S. Position it after "_end" >>> so that the memory will be reclaimed during boot and, since it is all >>> zeroes, it compresses well. >> >> I don't think I realized that things after _end get reclaimed. Do we do >> that at the same spot that we do init data or somewhere else? > > I was looking at the start of setup_arch() in arch/x86/kernel/setup.c, > where there's a memblock_reserve() done for the kernel (it reserves from > _text to __bss_stop, not all the way to _end, and later the brk area > is reserved). At that point, my take was that the memory outside the > reserved area is now available (and there's a comment below that to that > effect, also), so the .sme section would basically be discarded and > re-claimed for general page usage. This seems awfully subtle. This would be the only section treated this way because, as you note, even the '.brk' area ends up getting memblock_reserve()'d. Also, this odd property is not commented on at all. That's not the end of the world. But, if we're going to do this, it seems like we need to move the: /* Sections to be discarded /* comment to up above your new area. It also seems like we need something explicit in there near __bss_stop saying: /* * Everything between _text and here is automatically reserved * in setup_arch(). Everything after here must either have its * own memblock_reserve(), or it will be treated as available * memory and freed at boot. */ Actually, I wonder if we should add a symbol called '__end_of_kernel_reserve' and use *that* instead of __bss_stop in setup_arch(). After I say all that... Why can't you just stick your data in a normal, vanilla __init variable? Wouldn't that be a lot less subtle?