From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751157AbdE3QrU (ORCPT ); Tue, 30 May 2017 12:47:20 -0400 Received: from mail-by2nam01on0042.outbound.protection.outlook.com ([104.47.34.42]:63102 "EHLO NAM01-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750821AbdE3QrP (ORCPT ); Tue, 30 May 2017 12:47:15 -0400 Authentication-Results: google.com; dkim=none (message not signed) header.d=none;google.com; dmarc=none action=none header.from=amd.com; Subject: Re: [PATCH v5 17/32] x86/mm: Add support to access boot related data in the clear To: Borislav Petkov CC: , , , , , , , , , , Rik van Riel , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Toshimitsu Kani , Arnd Bergmann , Jonathan Corbet , Matt Fleming , "Michael S. Tsirkin" , Joerg Roedel , Konrad Rzeszutek Wilk , Paolo Bonzini , Larry Woodman , Brijesh Singh , Ingo Molnar , Andy Lutomirski , "H. Peter Anvin" , Andrey Ryabinin , Alexander Potapenko , Dave Young , Thomas Gleixner , Dmitry Vyukov References: <20170418211612.10190.82788.stgit@tlendack-t1.amdoffice.net> <20170418211921.10190.1537.stgit@tlendack-t1.amdoffice.net> <20170515183517.mb4k2gp2qobbuvtm@pd.tnic> <4845df29-bae7-9b78-0428-ff96dbef2128@amd.com> <20170518090212.kebstmnjv4h3cjf2@pd.tnic> <20170521071650.pwwmw4agggaazfrh@pd.tnic> From: Tom Lendacky Message-ID: <754886ff-b502-3f68-3c32-5355d4176829@amd.com> Date: Tue, 30 May 2017 11:46:52 -0500 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <20170521071650.pwwmw4agggaazfrh@pd.tnic> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [165.204.78.1] X-ClientProxiedBy: MWHPR15CA0043.namprd15.prod.outlook.com (10.173.226.157) To CY4PR12MB1141.namprd12.prod.outlook.com (10.168.163.149) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PR12MB1141: X-MS-Office365-Filtering-Correlation-Id: 31effa0d-367e-4790-2bde-08d4a77b8398 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423075)(201703031133081);SRVR:CY4PR12MB1141; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1141;3:1AGlebWS8f8l140vYp3/Az4b1kPKiw1HRcIiqi+SY0Xp06ngxZwhYdSOAsFN6EnnNrq6IovMCT/o6tssK8/uNRqw7ZEMoz7oQROWgvk51As/xpBLcerUQ3y6TI3l0HIKDyP1CgzorAe859PlTTvQbb51+f7C/Hu90Krzc+SAHJ2aZtrWVZcyWx6ke5Xoz/RBvMul1IMdDLDamLlqoCItrsWJANoFJeDsGaCfN4XwcctNkAXBqj6ib2MjJB3jMdqSb7/1JYMgD2B080cLI58i+3NlHIzy8w1VZ+Cq5dyebfxUWNiHx7vJaPXREj+sW+FDY+W5xG2o9OJeWFif5zLKzH5WJ+fEmoQ6EA9dpAeBSdA=;25:2QhvLcuK8x/whYMm3/jaiBWIEfxCwBH4tf9CTSSAHNtODpYBQYec1QSM1XtyjR+XnTsGXmD1fE5IHG01p9UxCgEV53m6IJ/2uz0+fwYYRyjWlLqAunnKxPcEct/TEpOirJju/bgvlX13BBhI46sYVB7ofXzkRBE6wQn8jcG61FeS/dwVeqeSaxIObn4F07UQeQxjX7eERAIYArXFrTkv6TqNGAc9Cyl0+du0KTh9pOI0xmqzOL/kRbWCUjgMl4P0h12SZmuOh4GGKyZoKPKXmBSwGJ5xi8gGKKUF/A3ow6XrHdnecMTgb+/YWMnv/Cc8k/kbFtMlqIomJ5oOltbS5XvQ5+zfZwLgF0ImAQj0H8qfgKyB1yZen3EaQuYFEFl5pnwa2Wt0hVAichiyVAxlRgpOonh9ZcCSJhOgnfVfmTjZGuQf1NNbqt/9aqlp0uttwo5Sjo14L7zcHl8HDmZ07i8D6hhBxXYpvHgTCG7riSg= X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1141;31:l5pa/3w3Mhi1BGhiGBsJy9dUJZZE9cOIJHT7v6m/NYcSakLr3Ro6Q/MjAkRvXrQsYmXofirwr7nVyvge3TZaDrprP03fQ000prLLE6ndMG7pgPM25SkLvaO1fEx8S77+R0CNpAfhN6VUwd3egR+saAwIX1Yg6lVkYU9ZwM301YxkDfPjUfXCsQEKW54d76hcmyKRWzf6T+bizC83uFhp3jdntnLMBSFFGueeVB7ixsY=;20:k01YHUPkTppc86o0f/BZDWVFF9mEWbOB6oe42ZWFkJbOzHKTWAYXHmbP2/4ng5xFEuN2xvM8D5QaD4M7fwmRU6+65Hxnxv7ozq4kBt+703ignZg3zra9xmBIi1XIezDDP8ctGOrJAOtzMQx8GV85GISSvierEpCP+a5roWMKEroa725qKjkccCrwjTaO9BFrt/UnNU3ldgA7+xLSULH0YjYM7Sddpkp6h0NIDWs5JzEiuOF0h4C4lUL/8dguCR20k+WT5ML+1n4b4ZNmYpDS3FfRM5NuLLWidxoCI1he2wn+qxuCKvGjcDDNDOEhbJXt73RxYnE/beyDMF40WVNRRGiXhmNHoHe8hatd2dHdZL4eq1+QZ999ssiOmAwfDMk+Pz8VbjkXvT8N1hAJCm7G2lCao8Dw0xru2ivV4wA5hCTAaFRcIAALT1p8lPL6aBM1rtuOVT7d6WpRedWg6cAI7B1yicwn7RUcHH8T+XJpW5LR6rg6fpeQKoLtljlM/sHi X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(17755550239193); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(601004)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123564025)(20161123562025)(20161123558100)(20161123555025)(6072148);SRVR:CY4PR12MB1141;BCL:0;PCL:0;RULEID:;SRVR:CY4PR12MB1141; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1141;4:RazoO2lLi8aErepsiNrdxeqT5SNXpYxmmi+B5q0EwSLQHcQpRf8IzEfqm5wrIX4iAWt9a/WOnMWQvBACfIXIdkDRTOBIEOOpkW84kp/XAgc+3TvU7vJA5vIAq+LbhmF8Bjqf55WloDq/4GCdlSqG+N6IkuEPSQ0SK+Nk3FJjqM60cmQsmvDk+hh0MQdZd7pS8+IidmCKI1A7sEhgVw68Uwa7rmx2TiApCQponZLMVAVlqDlUGFF0EVNs4d1XFzwXRXV4pGZMVgar8/Qeuk0/+Vh2qWwS00GDCEW/67e2/TfJX5OTkzzJIiUoxoGLF7zvH06YG2IZZJtXNXmMkJ4iXiI3NRUk4YpJ6J2zTyZuXR+5Jf1AdAjSj1eamWuR3RgCArUFdV+azTnt8SOaXy5LaHDnMdet33GX/THvlcWEn6ksWlLhda36DZU4spFn8XDvh1PT+NIcBRxlHkd3YhdTmpV951R1V0dHLGr7xj8wOhPv3cA77JbOgtS6/KxyRtFkFiiI5r5nDRLgKvY4W31Es0ghFTsK24mMuImrZeHQeDj4Ey3F5Ieb1acpQTCYqaiiEtBjwd1ynyr1TMAAXjQTRPnVtqm+FmtKE3jCJABpr3s3HKYvJIxPD8439OmElVVYcE90S1klTrmsuV7S5vPifCKY4vjOcA02yXsreE+4+j5mPNAcUdtoVqLHkGU+saliR2bql3bk4X8up4LNLtyIrBvaCePii1UcNhbY/h2hsHqSXRCXCR2zPIw44KF4+SMuCmmuX6wiDiNky0Fj65dLmPj9xEseWNxqFwhCEgoH1n2eZKM2PME96PRXrdGFNudJCJx/Be9mBKcX7Up6g1yjqobmwQdtSYMPxLuySUSjLe0= X-Forefront-PRVS: 032334F434 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(6049001)(39400400002)(39410400002)(39850400002)(39860400002)(39450400003)(39840400002)(377454003)(24454002)(6916009)(50986999)(76176999)(5660300001)(6666003)(4001350100001)(2950100002)(86362001)(31696002)(229853002)(6116002)(93886004)(36756003)(66066001)(81166006)(31686004)(4326008)(25786009)(53546009)(189998001)(83506001)(8676002)(42186005)(3846002)(230700001)(7736002)(305945005)(23676002)(47776003)(2906002)(65826007)(90366009)(7406005)(33646002)(7416002)(64126003)(110136004)(478600001)(77096006)(72206003)(54906002)(6486002)(6246003)(38730400002)(54356999)(53936002);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR12MB1141;H:[10.236.64.250];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxMTQxOzIzOnZ5N3pLNjBvN3EvQm5QN1hvOUg1blRhS1R3?= =?utf-8?B?VUJXMGNtK0tJQWxsWHZrbUlTN3MwcENPR0NjV1hPcytGZ0t0ZEpRZVNVTkMr?= =?utf-8?B?dmZld1lNZ2t2bDFhYXJaTzlyS3lXWkNPTU4rYlFraEJYTVJQWFNXWHlUK1Qz?= =?utf-8?B?TmhUV3VLMjBaL1VxNS9nSmNWUmtySEdzeWJQUjFBcFFmUXdGZ1NsK1l5cFkz?= =?utf-8?B?dkl1cmVvd29ZRnVhMk5XNjZHc2VmOFh0TzNNdnlxNjZMTDBZS3RqdUM0WUJW?= =?utf-8?B?Q1k1YXhKbm14TmxpcU45Ym5FTndlY3BQellmK0dkbi9weDBSWUdpdHM3ZTla?= =?utf-8?B?RXU5VUZtRmd2WGVFbjJkQUt3MEd5aUhiR0YzYXNRby9BbE00T00ybEwzYnN3?= =?utf-8?B?Qm1yWW53SkZMMFBHOWhNcWVPcGJDcFBxTjNQYkMzdDdFK0F1U2p0TDJwRVA2?= =?utf-8?B?ZDdwS1ZDOFNSTi8zV1V3UUl0MGpxTDRZVHpTVFByNFZJc3F0MkFtN1BPR0Ex?= =?utf-8?B?NGgvYUhMd1FFa04raHY3em1QRkdlYWM5VTh6bkVKTktsbk1qa2JkeDlac3oy?= =?utf-8?B?Tkg1OWF5WUsyZTAyRmI2VDltNmFBREoyVkdKWXlRblJaNVBVV3BTcWk1c3NY?= =?utf-8?B?OFNLRXZzUW0vbmZWS0Y0SVdzUCtBNWJQc3dzRWNHaWxCMmpQUFFxMnJ6aVZk?= =?utf-8?B?dlFONXEzK3BUNThGcURBQ3d4akorektXMW5wQ29OcEtZQkhZdUlhbjViR1o5?= =?utf-8?B?QW9hVm1JR0hJK01HdDNlNUxCQ0JDY1F4RksxYVdnTytMVnFRKzRENXBGUkZH?= =?utf-8?B?aUsxOWVZWXhmWlBFQWFYbXgwTWZreFM1V1hUY2RPZndoRjd6Qmo4Y0JFUFA1?= =?utf-8?B?ZnNJK2R4V3pqT2xxVDJ3dzByNXhrYXdFNmRHcWE3Z2VwYmdJNUdKcUhsTC9K?= =?utf-8?B?K2xpWnREZmFuSENNaXNRbVp0WGQzVmJVYkJmUEphTmJPR00rdmd2N1NzY1A2?= =?utf-8?B?WkI3MStzOUJ6azRGZGNsUmYrK2oxdDMzUjNpK0FxZ25yMm5BelcwcFZ0aUlw?= =?utf-8?B?UHVGOEJmZHVTdmpuMUgvcUxnbWx6aVgvMEdQcHRWQXlOcjdJWGFCSGZjcTJB?= =?utf-8?B?Z2xWTFJMVUdZVGUrNENNQk5hNUxTZ0wxQVJnV2lJTlBZRmd4NGlhM1l4MHQ1?= =?utf-8?B?NVdkdzY3YktGWi95YTZGVnFtQVdnbXBLNFpva2ZyUHpBTFRNK1ZwM2gxbTVZ?= =?utf-8?B?a2JPVWFIbTR4M3o4K0ZURjRrd1Y4YlZnQ1N3TE1wN3lidTFkUXUyRzA3TEZl?= =?utf-8?B?cHZrbzNZTEM1V1FGL2VVNWJKSHNNWnRGK01hS0ZkeTcyaDR6Tk5tRm5ONzRS?= =?utf-8?B?TXdKUWd1bXVCZmw0c2QralFjZVNQdm1VenAraldDMXkycmZ0dHF2SFNCN0pQ?= =?utf-8?B?N2hLTFBhSlJDd1UrbmNLWG44ZElMVURnWEZRVGVUaTBKWktqRWZsWFdrbmdo?= =?utf-8?B?ZktMZWEzSTljenlCcmc1L2JsNEtpWkpPbXJjbTQyVVVHblN0ZEVXeGhyRU1S?= =?utf-8?B?TkRHWU1pTEdOZkx3TmVMV005dDZjQTZzZUxnV1pNT3ZKUkJXNk5TVlM1d2Vq?= =?utf-8?B?S2U2U09VZ3VtUTVCNlNwRlA0OFZPZysxZW1ncHhlQ1BxTWV6WHlwbVhrWXVU?= =?utf-8?B?S2VBMGFRNWlPQ0FBUXdtT3ByWHRnd3A2Y2hJQlpkOVFFbG93M20yazdDQmtQ?= =?utf-8?B?a3F1b1Ivenlvb0ZsM2UzM3RwNjlnUUNFQUMwbkgwd0o1S2JNaGg3bmt0L25O?= =?utf-8?B?KzM3VDRIL2w0VUhuYkVGcytXUnlycHBlRWtBL1JVVFptbGJxUm9ST1pycUpV?= =?utf-8?Q?5n1i/XWWnhIvJEb7UfmEmU5gNS6019MU?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1141;6:bkPkxr3IDJQrohlFMPxXws7y92y14toUS7gLrE0ySIRukql+hgbMlS5BdRRQovTd3ffyfsrUIP0VPr9WHNar4DsmBCOcM+jYw6buWUOuasMad+QG5P6vi7Kq3aqLjxqsYpjlcOEmHS8lKXS2J+e/N6bAZCWoCYmKV+bmihzA2lSaKXtqFMeFBVaYAZeZNAL1w4w3EwsJEQbpP+GDqn1Ktdh0Q6powjFGcrDcAKFqz0/RT7IRfFLJuF0wJ7kLIyBduGXLOvmJ+yJvz8/Ac3FQ5T4bO8mt5+lLbREftEoLyOdkBTVgV1L+WK7etKd9+1C6NPkBxQnR+ZhQaMpWH/OUAOe5Poh3YKAxd/9V6jqcAtuuzdU/RC4Abr1NGlf0EOvb1KpHfrD3yM2oNPeEeZjbyPxdLYOg6lg3WZPed79iDiX+iyBtCkqeJFeYXnXb+Q5oLMyuCSkx3KUju7Zy+9Ctwbz419V1o5Tm7LmHjFui5ucbc1S/+2lfQP/c2/EKBd6UReLNFo8xxGS7lSAzLuKfilFPfylZ4M5Lq840WlZqsWI=;5:S+EG92Xm1kH7VOMIPCTT7KcMIVIGgW5I4kBzhlwcOeynEKVHdjL96cn5sTpkDOi5UH9jCt/V4wCHyYc0j5sUnZeDJNumezHhZoefhgVusqo4uziKnb5FAulHVRrpYTmCIZHRd1x6p1N6A4qDkS5ZHg==;24:/C1oputrHZU8mJG/NAhLYLCo9ZT9t2oeFivEE21UhZ0GOpZNWmCsmF5WxtpmG4HcEevL+gCr/xIl0eXH+kQLtxgaWVo15IiPjPd1bXcmoWg= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1141;7:bmzd0KPZHr9lfyAfCXYgXQ9ClDC3RxI+6n0y+oAXSCRcm76FnyR+8g/BejnI2yhHiIyHWymv0YG0uY6FKbDla7m8fQtbnbANoldqsuClhawwUT17poTjKVKWSWVWbHjAx7Fb3VjwT0PRsGrcxDy06aGtUbQXIh+bh1wf5vxhczWkFs8V/A5xcr6JtLbM/1Jzo0WZV3cg0/Y147qCF6dfSEvGs7QkfWyff5ZwaHA+Gf297i/MC/tbJ9A61WR2EDvyA4ErCH8k6LeNOaVy4NBG9YfWFWHxUNXd4uHMAVTXFAyrmfsO10YQnffjHS6OUB6cYW4LVHU0Mr5/xV+OqUiz4Q==;20:+JUmpQ3XkAEmztef0BQBrRZmcTEHwfQmDodBczQAMsiAFXCsetiPn1kzCqhfpF8NTh8bb73mUqKAv038n8G3CBqspbdla0VA2+Cyq6+alsXIHsaNldmDlPt7OefQQ4HjJlHXNYjo9/D8005DFSPquwi0TUfW3w61HgIrH4qC9sfZkbVDY7fvjUuyeWH4P95GKGqmsqVKCW4w0nXs+jYTBbe1qaBW4qaCfF3Uf3/kx57Qz71XjgvuF8H2Dp/2+p+t X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 May 2017 16:47:01.6217 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1141 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 5/21/2017 2:16 AM, Borislav Petkov wrote: > On Fri, May 19, 2017 at 03:50:32PM -0500, Tom Lendacky wrote: >> The "worker" function would be doing the loop through the setup data, >> but since the setup data is mapped inside the loop I can't do the __init >> calling the non-init function and still hope to consolidate the code. >> Maybe I'm missing something here... > > Hmm, I see what you mean. But the below change ontop doesn't fire any > warnings here. Maybe your .config has something set which I don't... Check if you have CONFIG_DEBUG_SECTION_MISMATCH=y Thanks, Tom > > --- > diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c > index 55317ba3b6dc..199c983192ae 100644 > --- a/arch/x86/mm/ioremap.c > +++ b/arch/x86/mm/ioremap.c > @@ -515,71 +515,50 @@ static bool memremap_is_efi_data(resource_size_t phys_addr, > * Examine the physical address to determine if it is boot data by checking > * it against the boot params setup_data chain. > */ > -static bool memremap_is_setup_data(resource_size_t phys_addr, > - unsigned long size) > +static bool > +__memremap_is_setup_data(resource_size_t phys_addr, unsigned long size, bool early) > { > struct setup_data *data; > u64 paddr, paddr_next; > + u32 len; > > paddr = boot_params.hdr.setup_data; > while (paddr) { > - bool is_setup_data = false; > > if (phys_addr == paddr) > return true; > > - data = memremap(paddr, sizeof(*data), > - MEMREMAP_WB | MEMREMAP_DEC); > + if (early) > + data = early_memremap_decrypted(paddr, sizeof(*data)); > + else > + data = memremap(paddr, sizeof(*data), MEMREMAP_WB | MEMREMAP_DEC); > > paddr_next = data->next; > + len = data->len; > > - if ((phys_addr > paddr) && (phys_addr < (paddr + data->len))) > - is_setup_data = true; > + if (early) > + early_memunmap(data, sizeof(*data)); > + else > + memunmap(data); > > - memunmap(data); > > - if (is_setup_data) > + if ((phys_addr > paddr) && (phys_addr < (paddr + data->len))) > return true; > > paddr = paddr_next; > } > - > return false; > } > > -/* > - * Examine the physical address to determine if it is boot data by checking > - * it against the boot params setup_data chain (early boot version). > - */ > static bool __init early_memremap_is_setup_data(resource_size_t phys_addr, > unsigned long size) > { > - struct setup_data *data; > - u64 paddr, paddr_next; > - > - paddr = boot_params.hdr.setup_data; > - while (paddr) { > - bool is_setup_data = false; > - > - if (phys_addr == paddr) > - return true; > - > - data = early_memremap_decrypted(paddr, sizeof(*data)); > - > - paddr_next = data->next; > - > - if ((phys_addr > paddr) && (phys_addr < (paddr + data->len))) > - is_setup_data = true; > - > - early_memunmap(data, sizeof(*data)); > - > - if (is_setup_data) > - return true; > - > - paddr = paddr_next; > - } > + return __memremap_is_setup_data(phys_addr, size, true); > +} > > - return false; > +static bool memremap_is_setup_data(resource_size_t phys_addr, unsigned long size) > +{ > + return __memremap_is_setup_data(phys_addr, size, false); > } > > /* >