From patchwork Thu Feb 16 15:44:30 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Lendacky X-Patchwork-Id: 9577517 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 9D6A360244 for ; Thu, 16 Feb 2017 15:44:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8D9092861C for ; Thu, 16 Feb 2017 15:44:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7F2CA2861E; Thu, 16 Feb 2017 15:44:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 17A982861C for ; Thu, 16 Feb 2017 15:44:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932646AbdBPPot (ORCPT ); Thu, 16 Feb 2017 10:44:49 -0500 Received: from mail-dm3nam03on0059.outbound.protection.outlook.com ([104.47.41.59]:50272 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932276AbdBPPon (ORCPT ); Thu, 16 Feb 2017 10:44:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector1-amd-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=kzSPaWgbT0E88WleSbVIWGxtx228QQ6E6uBYPCEkhP0=; b=2mDa7tDJG/Nr5wFLo/VPjS9BQS1toQSO7mcUmCjzhXajVXfRJTmoAnd8BVs7kj0UadlzVZwg9cXJiaPCQtfJhWytDN7LGJ+17WT5MTMchq3l5gCVgsyazEYYEP2tJp+rSMkiU+4nnM1RfNDKtJZzqyPzwiTaNtM2wc5Pmr0UlWw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Thomas.Lendacky@amd.com; Received: from tlendack-t1.amdoffice.net (165.204.77.1) by CY4PR12MB1141.namprd12.prod.outlook.com (10.168.163.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16; Thu, 16 Feb 2017 15:44:32 +0000 From: Tom Lendacky Subject: [RFC PATCH v4 11/28] x86: Add support to determine the E820 type of an address To: , , , , , , , , CC: Rik van Riel , Radim =?utf-8?b?S3LEjW3DocWZ?= , Toshimitsu Kani , Arnd Bergmann , Jonathan Corbet , Matt Fleming , "Michael S. Tsirkin" , Joerg Roedel , Konrad Rzeszutek Wilk , Paolo Bonzini , Brijesh Singh , Ingo Molnar , Alexander Potapenko , Andy Lutomirski , "H. Peter Anvin" , Borislav Petkov , Andrey Ryabinin , Thomas Gleixner , Larry Woodman , Dmitry Vyukov Date: Thu, 16 Feb 2017 09:44:30 -0600 Message-ID: <20170216154430.19244.95519.stgit@tlendack-t1.amdoffice.net> In-Reply-To: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> References: <20170216154158.19244.66630.stgit@tlendack-t1.amdoffice.net> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: DM5PR15CA0023.namprd15.prod.outlook.com (10.173.207.161) To CY4PR12MB1141.namprd12.prod.outlook.com (10.168.163.149) X-MS-Office365-Filtering-Correlation-Id: 6e93ab2b-4996-4c32-b8bb-08d45682b427 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(48565401081); SRVR:CY4PR12MB1141; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1141; 3:NAaGPqCXhcZx8vo1S7niYBKRLCu7wxRi+Wq0Hw1Fp+mfzo3067WjGhXmE8q6sNlKpGzcXPkrPu5i7wUmbk6AFQlRctUKYuI35NFgsCETpriSTfZ67dXctYq0uhD6UE2/fhIM+YCCR9Ub6BmSHg1R3m62RNEh2svzhfyxvUw42i6vf7xsFQ+/eVFi55EmNcV/9Fl6YC3YCMoi9RMJw1Ly1XxBkr2bJNp3fuVnEO0yvbE/fdsECRZRBXwRYzH0WYLqhPihL/Bf4HrbMS2XfqX8hm/IsiTFxMUu/ILOc6ffXY0=; 25:WPDJbo7j6KdW6XvxnfwZ5finwo6meG0alkQxUCTxvNMqC1vU7dt8ZmyR1qAt9F8wjgQnSvnolF5ILS1Jboy4jJYflp2QrcQlU3944cgbxg0cNPZx2yOPtB9TSudGjGkhwIc4vDNdVkHQCGA1DHcTqVF/vgcvelhvkKgDQkarZWNuyb//X/BaKOIA1Qk41vLYYGhfhid4NR0wJwK56SCTM1J1ikZX0n5F9V8lnEME1sU4yixktLJtyNoKl1FE9s67sVvytGwi6MdPitNgtp/CQfo283kIj6Mo02R+DeLHMnduUXZQKfZDYnV7cyr6G6CFHUU+n48RB41JvCG1/E5HWD2RtvHaY3oc7kXDUURaJTgdkN7z4BA3PJHt6qou5La8fd+HRKAV0wAxVS1e4LzCTwDyf0OkX+WcITwCwVjSKE9yYfPQcE7+DAhzVbowYwLxewXtgLb9fUy6PvEEQuVQWA== X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1141; 31:Gt3XQVghyUYtolB5WcV+T+0hf2+wxengrwZCxv1lZLZCIh5p0ELl57jpgVAMKu2blQky/D/3OVVJuG3fI4XvH8GG3lfAlmS4v5jOGG2A29oytl0ErFAB7IyJ3KHObrw4da7gyVdpbxupdZqlKSQzA0KxGsXgKNtvpX8qtg5XOltvk9omEUYN13L+DKx6cVcCH2O3cAot14PdUshLffIGDoY+vxL/bbun5b1A//3+UZj//KdiUJfROi0LEordHVYX; 20:80A7m3OWIwUCEjehe4flzJ0cu3gsuT88L7Ja/+GRbLsYVtQRpBGowAqwKq9zfcVFXUAKxRn/MbB4wwEIS9knaZER+cc5oC4mGIpoG+BkEgvVt/f+sFGIrP2NyTmdbS//K3BhpdAX05Za630z2BKDCkoWzURa+5HnH5E6XvYBb1xbEexaX6C4zSIeGQrOBdFvEC/alMmrkDjZgnEtsv/J/nis9DvQm9UnOb9Gph4z3EAPLRqXJPXvNblqjZVMvlXeUm3RaLjNtn0HyMjiYTBaiUU6lB3FqKXFInvZudSFHsdV0cxI+ZhXPfbhH9i6aRo8a4xRj3jnmuGo9oM4lK8zIbAPLU7zM5GDEMB67hJJ02LCfVnlwNXhTmPkdr3Fw+2/GsD91t522Xbxiwruoyfr+EQe1d7ff50lgDGODq6cXAr9NHFxvERI6ljb0N5NisGTtS4P/Qo1zX6QJdVuIRqVwGrz3+A5hD39yaUzYYrEIK7NPpgVApE2OOJzpUGOm9zD X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110)(17755550239193); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123555025)(20161123560025)(20161123558025)(20161123562025)(20161123564025)(6072148); SRVR:CY4PR12MB1141; BCL:0; PCL:0; RULEID:; SRVR:CY4PR12MB1141; X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1141; 4:tRTw1i2zaSopLhdwfFSo2XD8I0DK542WzGELWHwwSZCv3NDqduZm+jrPwPKN6JYIDmuoYk2ht1EWCMVKT8CHMcqrC6xr+Kg2Wj39U7FwmuhNjV4BNAM9wuwot99JliHIlnha/E/Fu0BkP+e2uJp+PHMUyMM2D410ZdQNX7oWi5+MvqC/2ynOYsIxkQctZQnCsmXP6cdrGCUGT0EflVqdGiUwiWG2qDmKL1n4IdcCV8oqrOZV35vZrH5d1ly3n7d39bEVsRWvDgEhwQOFy1TgrVIsYq7sbKDCdcVbgFHtMVC+oByd7vMJ8s6M/1CJt9ipV+51K26NOvDNXS3SpXfXNm5QquHWLRHGq6u+vb/NAj50ACxuvYznGZO2SKIbLimVcQJUmeLrTgl4Z3jiPnqEWWxeATfTqfJrgoFoMnHlGrGsGPAGDzAds1M9A8MCYViL/rwLZfnQdOTwsqf8/heGN+zf/tJSd6o4aPnBqoee+IXA0OQBva27ALrUp4MeLkBkGvJLuOR84zsxw4ct1/p/MXhL5gNAPelm5xvF8ARDmYVGZkQCaVdfVoig/HGet3va0mpVjxuFn9ea9MuN733a14k45v19+KKOEmppoQVHE3VJkQagVG5rGOMNlchKyKhsuvxiIjWsCuIcPJC35qAQkPOzlsD1RTcgrJCQ3cc2QqhQ9UePdJOB4eBCY0J20Tm342uQlL4c4tecfO4GzDYBIg== X-Forefront-PRVS: 0220D4B98D X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(39850400002)(39840400002)(39860400002)(39410400002)(39450400003)(189002)(199003)(1076002)(47776003)(9686003)(2906002)(66066001)(97736004)(92566002)(53936002)(25786008)(6116002)(103116003)(3846002)(54906002)(389900003)(53416004)(6506006)(23676002)(230700001)(4001350100001)(55016002)(68736007)(7416002)(83506001)(50466002)(106356001)(38730400002)(4326007)(101416001)(33646002)(86362001)(575784001)(2201001)(5660300001)(76176999)(69596002)(105586002)(189998001)(97746001)(54356999)(50986999)(81156014)(81166006)(2950100002)(42186005)(8676002)(7736002)(305945005)(71626007)(217873001); DIR:OUT; SFP:1101; SCL:1; SRVR:CY4PR12MB1141; H:tlendack-t1.amdoffice.net; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: amd.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtDWTRQUjEyTUIxMTQxOzIzOml1a0lpU1BoNlNVcWt0QkNFclFuRGNITFNR?= =?utf-8?B?UnIzRDBkS3NzaGpWTjllTDg2YWtkUWgvTzJMWFluK0MwcnNpcHNQVS93c3dW?= =?utf-8?B?aU1JWEVDd1pvOC83d1JIcUtFYlhrUGhVeU5JNkRXQTZjRmlpbXdESHIvNEhL?= =?utf-8?B?ekUwSVUxVVQ3Z0l6a0Z3NWphQzlQSHFJYUQ2aTFZbzI5ZldKSU5ieFhwWDJN?= =?utf-8?B?SE9DQTlDaUJ5R3NIRVQxNDdUM2lKK1BpTmdyY0hxTTc0OCtsSHFjalJJbDZF?= =?utf-8?B?dkkwdFJjTHVpaUwrL0N5K216QnpWRGN3dUJVd1ZKT1lBRnRNRFBoejNaQ3pt?= =?utf-8?B?eWdjekpHZWJTc1FDNDJHZWVvUHhSU3pwdTdjMUJKeVNpNDFjR2RhWnFHTkQr?= =?utf-8?B?UU0vZ1ZaeTFaa1Rlc0I1NGI4bEkxaGdINFNaSkZmQUUyTjNTREpFd2lySExs?= =?utf-8?B?VkNFb2xTL0NaaUpHMExDVmlaNEhsczI5RDErSUZOWTJDSS9wSlh1KytHY0No?= =?utf-8?B?Z0Y0ZHJ4MUFNeUIvck1XY3VsaHYwM0xSQjF3bU9EN0ZWQkwwTjlUVmdKZmZK?= =?utf-8?B?aHdRdzFXamJjS1FsOEUyZGxhV0t4Y1ArYlVQSkdMNlFEMHBRZi9UNlpYMmlO?= =?utf-8?B?UGxLbDZJTEhZWXFCeGp2Vy9mUTBsTlZXbHBRWWV3TU5tS210RS9iRXVLVGZx?= =?utf-8?B?VlFDTzI2Wk4vQ0Vta2dFSmxUTERYYlVkUDRKMEw2K3dEcEZMSzd5QVBMWGlV?= =?utf-8?B?MWRKN2ROUlZrSnY3R24yZEhLM1plQnpsSmk5NkVXblBQNTV1Zms0YkltaG1P?= =?utf-8?B?bGpWbldyU3dsc0Y2ZVhRVGpIazdLcHJCMldicUUzTWdRQlpSUG9zNzJUeldE?= =?utf-8?B?WTIrd054MVdwOVFNVUw1UDY3YU1vdFZaYnBLdXo3Z25PM3Uwc3U5c2pqK01a?= =?utf-8?B?WnJELzZNT3crUXBSdVhtVm8zRXVSeXNtMVZOOGVwdEdOUmZaQ2VBOXRDNDN0?= =?utf-8?B?VkpXeXAvbVhVQmdjeTFJWmdnMWhEa0RlRHNzdk5ZVjdnaFE5cFRYVDBQUGFV?= =?utf-8?B?aFA3dk5JSVpPOWVwVDF6Umh4NkU3WFBRam9ZY3JzYUtpdmdndTN4WXc3YXk5?= =?utf-8?B?ZGpNUEUvdEc5TWYrYkpDOEp4Z3JrWFU5UU41cXluNGl4QWNtR3BhWTJxYlU5?= =?utf-8?B?ZUM4MmpwTk1kT1VhWTkvWGJaTldublIrZzVtWVNta25pVDBld3FJZWxmRDhv?= =?utf-8?B?S1dPRUhNRnJZNjhPcTZzT0hpbjA5T0dpRWFRWmk3aTRQUGwwekE4ckxxUlF4?= =?utf-8?B?R3NCbWQ5MlNjVTI2cDEyWVFXTkZFZC9lcEpIaFk3cWVWQnFrSUQxbnI5Q3VS?= =?utf-8?B?dEFscllmT0l1WWpDUUdLVVU5bk1HQUFVTXZvRVdQQXNlSG9ja1Y1eWF2K3F3?= =?utf-8?B?NVpLRGFiSEZhUmR5bHVLd3NhRXdPaVZCaWJmL2NjMFhab2xRQ2dyV0FINVQv?= =?utf-8?B?S2JEZlA2VVdyanhiNVJ1Zkx4b2NpU0cxUEg3ZFNrUnlGYW0rRm85bnIrRTQ1?= =?utf-8?B?TkxZM3ZaRG9FU1JJcFVkdE5rQVRTNVlRWVdDVUcxN1dtSVNUSXZzeUM1Q2hm?= =?utf-8?B?SDVQN0JzdTVYM3lFT2xjQVJYQlpVZ3NGWlZvQ1FzbG0yUU15WkNpOUJrTHYx?= =?utf-8?B?d0ZSaG5rUlgrYzN4ZWd3SXFKSkI5UHcySDRWOTkzZEdkK0hjOEEwUzUwUk9V?= =?utf-8?B?S1dnMzNzck5VL282cy9PMWREUGFVeS9pSDlVNW41emJQeGNuQ0hpTjY2MHBy?= =?utf-8?B?MjR3WUQzTjRCM1JrUmtIYU1rK1dtOG1HUmZQdjFKVjhTMHhIZEJXZURwa0Zl?= =?utf-8?B?bnp5T0pjMnR4S0ZENWNmZUljVG0vaGVjRFJiTGovNnNrRHhCN2NIZGdUWjdT?= =?utf-8?B?b1MxRGF0bHVnPT0=?= X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1141; 6:M5RbnjK8aF4h6veOi9hmR9tRs0dtBs1f6SwxBlV/ln9/RLHLkX2H4UTjmbgHqKhKXNxD05iB7y/ia1lzCcDLuHQCX9Sx/50P4YkDBKDYy/VxJX6SlUZDFTcRnEzOUMUR9vOIGCS3U2/FFmwBnqej1BaZAGiRiYtVfEsAJDQRctpdcSCzp33sbn2uhN3hOdXXM56F2T8StiJkrb8xcwE300ioaaLgJ+vCewrX2phc48fQc21KsimImOtaomkWnwHkUTC6oOLblnP0JhNdvcct9TvMY1X8e3kigoOvoBdA0Elxiz8JDEFlKewOTVO3uLzrV7vBadstwlD2Mlh7q8DHNmBz6iupPRX62nw2MgaH7NsOR1der7AYiu7PIzMzF7TZeQe3MYtjqK3p97PKhHhysuGecCc0PVCfaxB8vUHn3k4=; 5:25ue0SXLOzI41RO58KF0snyVSlZrZd0vH8W+RdDKsE80DnWa6Losg4lyiUNI09Xv53WWLygmMPEcpIeH33jIrfsf/uPtboWti5oLTBWtwWjcjP93R962w1r3+mpcymLx3i44ompJgmKthJRbe0PWJg==; 24:6OsLNBf6NkMO/85pKLKQWmCXV0rEJYmVSi26E/7Cht/K7PzAtwGZcvEOn1NYntnpUsjGqgXQI37GwjPfBJ4t8sdeue5SEm5tqUamdlefvZA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY4PR12MB1141; 7:kuOOv+WcSWjszuvzh+gzNJGUmTiCKu1/50WDG8T5sWOrfZAOCTeXgcCMZpta4G3Ur7giqgwpvpxqwoePeWZr+w4nicqOmfGGxN8RGruB738LRO8sm81YS45G1j4xE307r2WIIe+/LdAIMyCUFi8V6j6v/UGBo8W2uvSemudvcqEjrB+C+RaPBlU9LZRYW7Zrd5Qb8U5XYWR6EguSOObs7HXQGY6ROnuiSdpz+ayMu3baJ99fcgPVz8JO6pvb+PsPQuIt9m8O5drA/3brsyuoiv2qJNRkIZT+K/dO8+tj0Y2Hwt4q9cOuGw9Xu/cigrHdDSNFXACVedK3zC+lZ1EA5g==; 20:PgklgplPw797x/VVcOWBo7BIiywH7UJkzvAGxc9Uin6jTuoVTAUBYnR5IKYI/mFYN/GkfYb4o70VCQto2BvjomYYWz2ft3dYdJUOfUZCXOzDZZ8xSIBOrD3VV7A+hZU9fryH0zh9XRAXzh/phymOlbSTFePe+1y8+/mmmVWel+5i4wCAngi/vdJK5XbceUBloN1SDUwPEIq44+HCaVLFPrYDOD7/AXtjDkSXHOudm4GX8Tj5f5cnXsoi2vVnfguy X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Feb 2017 15:44:32.2441 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1141 Sender: kvm-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This patch adds support to return the E820 type associated with an address range. Signed-off-by: Tom Lendacky --- arch/x86/include/asm/e820/api.h | 2 ++ arch/x86/include/asm/e820/types.h | 2 ++ arch/x86/kernel/e820.c | 26 +++++++++++++++++++++++--- 3 files changed, 27 insertions(+), 3 deletions(-) diff --git a/arch/x86/include/asm/e820/api.h b/arch/x86/include/asm/e820/api.h index 8e0f8b8..7c1bdc9 100644 --- a/arch/x86/include/asm/e820/api.h +++ b/arch/x86/include/asm/e820/api.h @@ -38,6 +38,8 @@ extern void e820__reallocate_tables(void); extern void e820__register_nosave_regions(unsigned long limit_pfn); +extern enum e820_type e820__get_entry_type(u64 start, u64 end); + /* * Returns true iff the specified range [start,end) is completely contained inside * the ISA region. diff --git a/arch/x86/include/asm/e820/types.h b/arch/x86/include/asm/e820/types.h index 4adeed0..bf49591 100644 --- a/arch/x86/include/asm/e820/types.h +++ b/arch/x86/include/asm/e820/types.h @@ -7,6 +7,8 @@ * These are the E820 types known to the kernel: */ enum e820_type { + E820_TYPE_INVALID = 0, + E820_TYPE_RAM = 1, E820_TYPE_RESERVED = 2, E820_TYPE_ACPI = 3, diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index 6e9b26f..2ee7ee2 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c @@ -84,7 +84,8 @@ bool e820__mapped_any(u64 start, u64 end, enum e820_type type) * Note: this function only works correctly once the E820 table is sorted and * not-overlapping (at least for the range specified), which is the case normally. */ -bool __init e820__mapped_all(u64 start, u64 end, enum e820_type type) +static struct e820_entry *__e820__mapped_all(u64 start, u64 end, + enum e820_type type) { int i; @@ -110,9 +111,28 @@ bool __init e820__mapped_all(u64 start, u64 end, enum e820_type type) * coverage of the desired range exists: */ if (start >= end) - return 1; + return entry; } - return 0; + + return NULL; +} + +/* + * This function checks if the entire range is mapped with type. + */ +bool __init e820__mapped_all(u64 start, u64 end, enum e820_type type) +{ + return __e820__mapped_all(start, end, type) ? 1 : 0; +} + +/* + * This function returns the type associated with the range . + */ +enum e820_type e820__get_entry_type(u64 start, u64 end) +{ + struct e820_entry *entry = __e820__mapped_all(start, end, 0); + + return entry ? entry->type : E820_TYPE_INVALID; } /*