From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8E03BC7EE2E for ; Thu, 4 May 2023 14:51:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231232AbjEDOvj (ORCPT ); Thu, 4 May 2023 10:51:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45452 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231246AbjEDOve (ORCPT ); Thu, 4 May 2023 10:51:34 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 07E862D51; Thu, 4 May 2023 07:51:23 -0700 (PDT) Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 344DbOJO012645; Thu, 4 May 2023 14:51:04 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : content-transfer-encoding : mime-version; s=corp-2023-03-30; bh=tOrl7bwToPdgkLSml1h7WK2eBjs9z6pHb2lNO+Jym7g=; b=Rsk7aoPutY4eoZ5Uhqq/NXNx96a4nuphfnEqEEyJw14ntQwbcQAKSvhvY2rgnVZ79GEa RMqL4d7/M0cKBpIpde8W83ar6zDzuoeULkFmnmShmc4YxEyVtae3wtQ6ojGo3DRzUXcm nz+1Cay697xGVk64MKD8a8+vw/zRFe6LyjQGOkd3eA2JW3lVzGzHcWlkiRu9AedRLV1f O/9erlC5/VjFRqENYOGa1kQyBjNpRlMAaCWWChmMCoVG5e3QC9oOztCEdalf+TaxhF7d lpfDDuyy3v8Ye2oG9+ASmrgR5ZGEUwUyT/Jie3eng8Tm95euw03WK51lL5GCs9lU1P3r Pw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3q8usv1ydf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 04 May 2023 14:51:03 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 344EFPUo024884; Thu, 4 May 2023 14:51:02 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2168.outbound.protection.outlook.com [104.47.58.168]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3q8sp8tqxu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 04 May 2023 14:51:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mc3c7iG8OnedaS5YEvCoIu4Fjd86xDnFVbx4S427Yni7IS3WwYZiys0I/Td0drmnjGI9Evgf9qECF+VVCGhCBCSCwTuLnyxINdtvuCka2J3UtTkPM3E8dcMRIwikktUhNuQYSDgWvdlj3I64+L+g6WwNAEIS3OGsAN+bCU0Y03kozt+75YB2eO3qNUGRi5XAhicA0JgH53xCImeNi7rbcvEoCrrP3GSv1xuEAJ/3TYlPjAbDPm/o1YFciIZVTBvpXxMsAlW6zukTQJpKCLaeC+eDnxICcdlKXGx2K6WrNyBvzpXfMBjzZ7OAT3BwuxZJrXZJGrwsfAWKoKsuWYmd6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tOrl7bwToPdgkLSml1h7WK2eBjs9z6pHb2lNO+Jym7g=; b=FCazusbSub3HvCIQ1nD3ZrztxT03yCvX97gO0rQIIf4auyMPiRzQZ7hLhVXIeHictcWXt+YGhWuD+IqjW6twsFr1caeASOpF8NbQU0TjIyFR//JUoIRO2aYgg3UqC80m+zXP3udB8uo+KJV//q9D8PL356Bi7dMgAJ0JMJy9rV0q8PGd9u3M9N10K10WUfLzwS8AYg8FHq2upKN8DYnOKoeVSOSIsRmalK0oPiYvKB/JjQLftZ1ywUT0n5onkr40CXnMdvXJmAGiomymj6oNbxrZHnSd/vldgK05qOBGzaTI/1qXywVFI9e7tJMPtAHm/nvM5lF0YI3STLgjXPUXVg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tOrl7bwToPdgkLSml1h7WK2eBjs9z6pHb2lNO+Jym7g=; b=kMiJPFn9H07zMiqsUfmH2TyatXEydMPXbBZy1spt9unZtfOnx/uM9FeKoxWyOfCW0wNMJh1HwzimJAT8da8GhcXfHWMn/AefavXxBxL0y3u9uyjwVKuL7D5HnFsHyQHzzzNylHdSsP4w/xzt6VqQP3AGlw4iu4TZ9MtcNnXILPg= Received: from BY5PR10MB3793.namprd10.prod.outlook.com (2603:10b6:a03:1f6::14) by PH0PR10MB6982.namprd10.prod.outlook.com (2603:10b6:510:287::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.26; Thu, 4 May 2023 14:50:58 +0000 Received: from BY5PR10MB3793.namprd10.prod.outlook.com ([fe80::a007:b0c1:5cb:329a]) by BY5PR10MB3793.namprd10.prod.outlook.com ([fe80::a007:b0c1:5cb:329a%5]) with mapi id 15.20.6363.026; Thu, 4 May 2023 14:50:58 +0000 From: Ross Philipson To: linux-kernel@vger.kernel.org, x86@kernel.org, linux-integrity@vger.kernel.org, linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, iommu@lists.linux-foundation.org, kexec@lists.infradead.org, linux-efi@vger.kernel.org Cc: ross.philipson@oracle.com, dpsmith@apertussolutions.com, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, hpa@zytor.com, ardb@kernel.org, mjg59@srcf.ucam.org, James.Bottomley@hansenpartnership.com, luto@amacapital.net, nivedita@alum.mit.edu, kanth.ghatraju@oracle.com, trenchboot-devel@googlegroups.com Subject: [PATCH v6 05/14] x86: Secure Launch main header file Date: Thu, 4 May 2023 14:50:14 +0000 Message-Id: <20230504145023.835096-6-ross.philipson@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230504145023.835096-1-ross.philipson@oracle.com> References: <20230504145023.835096-1-ross.philipson@oracle.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-ClientProxiedBy: LO2P265CA0485.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:13a::10) To BY5PR10MB3793.namprd10.prod.outlook.com (2603:10b6:a03:1f6::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB3793:EE_|PH0PR10MB6982:EE_ X-MS-Office365-Filtering-Correlation-Id: 9983a358-5ed3-4961-aff7-08db4caef8c8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AaZjOb97yEXGbHCFb/XKjumlRbRLvoYEmchdtH9bXh8Hxp+pQcFS1ewJOsyNDaL7Lc0DCIqmIvD0evSt+Dh9syLfvBC74xnR6ppS6g1Z9fKrFnQGQ6kyOKX4mM/plSHev7Wny/jtp8lgCwIa5wcJ6bonzEzpWiXt3NlS9yfkCBvlSR9mkjaqAdIzGKW4/10xA+a0KWCjU8tHmoLVcICCswr2F/Xg74XNHiHs1pYtNZnXUADtrL+qqUpbAFi1MXFvKyJljjn9lZXmbEpnJcYOe3E6TI7xUTPOEZjWPGKHkrpM2Sdnw3OJvME4G0ebYd1h8Vb4N9R20OimSIdg2Oe/N/ViiGndeGJlxxOFxoyC022Y1OCabNFgbf/jKLFDouQhmfEIAfqMF8cXSjQNX/IZXab4gwS/wE/dkbiOiJwCZId+4lTiecdTOJxcVMExVS2f811jj2oViyV0fgqObom7G1QYB5akMETwEG4p3WmgfAv++MVMep5IkFhx830T3U017dPOsFsq281cfpDE1Pxykf3QmzwgdC4XEl413FOmif3IccvJW14grM3rrPkGxHgh X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB3793.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(39860400002)(396003)(346002)(136003)(376002)(366004)(451199021)(36756003)(38100700002)(5660300002)(7416002)(2906002)(44832011)(30864003)(8936002)(316002)(86362001)(4326008)(66556008)(66476007)(66946007)(8676002)(41300700001)(83380400001)(186003)(6512007)(6506007)(1076003)(26005)(6486002)(478600001)(2616005)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VUl1VDkzLy84SEJhYjZsQnVHdVJVWTRnMmVhdW1LUE1iOWw5akxXcXhaYVB6?= =?utf-8?B?K0dCcndRcXVKUFRWUmhXdTFQUVdlWlVFTkN6VHhJeUVYTFlSUUtDbXZIaGRT?= =?utf-8?B?MFF4ZVZnQXZoU0ZQRTl3cS8xZXdUUWIxMGVCM29SU2xyNXppMTh6WUdEalhm?= =?utf-8?B?alJXd2FoQnpUM3JQUUV4WGhKc292M3h2M09CU09mbkNjbzFEanhOclR2T3o4?= =?utf-8?B?WTI1T2ZWU2UxL2tBTStXM3crK09wUHcyaGJiVHZ5NU1NbDNIeU93ZHdyc01S?= =?utf-8?B?YkxlaUlGYUtieTVTN2twaXNCL2kzeURnL1oyUmsyZEpxT2xJV0xHMFdRSmxX?= =?utf-8?B?anpuZmVTcmdsT2NiaTUzeHltTVlwa3czaVNkSUJGb2NrblBoWTdia1ZFMzAw?= =?utf-8?B?dm81RTdxSWQ0dk1ueHpiQ0ZTbHdkTjNGT0ZZQjM5MzRqd3Q0aU5qeHRHeFVQ?= =?utf-8?B?Y1NRYXhZNGhHK1d3Qnl6KzFvdktSOTdRUzJHWjQvTXZVMHN1VWJvZStQTGlR?= =?utf-8?B?YW8rYVZzSUlvZmpJN1ZIelBGbDZZYnp5MzRtTWtwTWRvdVgyZ21rVVllMlFK?= =?utf-8?B?VWsvWEZNQmtKSWhzTmRlMU12N0w2V29HdElKYXlvQXMyU05DQkpOeE1BS2J3?= =?utf-8?B?Ti9IZGRLWno1dFVqVzVvckNuTWllVktvYVdBbVpKM3ZKTDBhVEY0NXFPWm1j?= =?utf-8?B?c29GalptWTRMY3VzVy9KZFhDUGo1eXFtZ0t6aE8ycE1lVHBWbW1PNW5mVHJE?= =?utf-8?B?bGdrOFo0eUdhRy9zZTgwZWp3TnlnbGM1WFNxdE53NEhXTEdoaUpjcGdnN1Nz?= =?utf-8?B?dzRJeHlHalNTNTFUOERodkFPcjdIeWFrb1ZMTm5CT0wvS2duN05mWGY5aDhN?= =?utf-8?B?S1U5czY5MyttZGswQ3AxNUl2eWQ5QU1nMEpBeFFDTkZ2NTVwMjcvcXluUDd3?= =?utf-8?B?ekZib0ltNTlQRkgyaUFOb3NyYlVyb0hhTysyeTNvaWk5cjFmOFVoSFNtZEhL?= =?utf-8?B?dHUxb0txU3lwWjB0T3JiZEZWdkQwNk5JYzZSUTEzdFZ6dDIvWVBQamF3TjBI?= =?utf-8?B?cWlMRVlORDhzWk81dXdpeTNZMmFOc1BMblNkTXdpeld3NTdOYitLQzNMZ0JU?= =?utf-8?B?S3Y2eTl4b1N5OUVMT2xaUmovem92dVE0RzJNc24zODhjTjZOTTBQRXdHT2dz?= =?utf-8?B?OUZPTC9XWWdIcTR4QVJOSUp3bzhETSsxWmtiNG43S3dVOFE5NFIySFJvWnJ3?= =?utf-8?B?RlJ4R0xUR05wOEpUcTRwaUxyK0FTTmc4OVB5WFNna29OU2MvUmtpMG15L2Vk?= =?utf-8?B?WTRrREtMTHZVV0FvVmU2NkgyRlRlOVkzRjFJcEJxbGY4MXdkNTM2ZFlZNU1Q?= =?utf-8?B?YWdxT1NUSDRScVpVNXQrU0xqaVRJVThWNE5pb3J4M3ozMGk4dkQ0L1VtQUsv?= =?utf-8?B?STJvZGtJcHJPM0VHOEFMTGRYYUFGaC9MZEJuVUpFREVKNGNSUklXNGJjdGhL?= =?utf-8?B?OHVIaHZGL002eUJaemU3VkFRdTlhK1ZLS01OVHQ2azRTcE9UVTNKRzNzb0Yy?= =?utf-8?B?VHV2UTBtTHArUEhRalZoVTBpRDFOSlJvSWxwTDdiN0VFY25LNlVRWXQxREtF?= =?utf-8?B?VUV5clRmZHpHZlFCMDNUSDdyamJTeTkvR1lZREpVSkRmWHI3WEI5RG1XYlk2?= =?utf-8?B?ejVBaVNxeWVaRTJBWjJuQlFCMWNNdnpYU2lhQk1VOFNWYjBCbjBvc0UybGoy?= =?utf-8?B?WHhSSUJhcG43TnEwdDdEY1RIeFFBVGFjZ2hJQTdydVVjSUZacXdNRVErOTRa?= =?utf-8?B?NHBUWWR2N1ptQytnN0lpVWozckttSEZyNnovenMrbC9Qa2VvU21nM0NTeUJa?= =?utf-8?B?U2U4aGJReGw1MDJ0MTVETE5QRWhOVkFvaDFpZDZSWXVLbEJteE94bWxBck1p?= =?utf-8?B?MGdtOWhaakNBZ2xiSWQ4d29aZ0d2cEdDWnpjS3VGY2lDNXhMMHpVRXhhVXRo?= =?utf-8?B?VWNYclNKVW9pVXpQbXFSLzQyeXNycXBRdmgra2ZqYXdpeFhITldEdytXZVJG?= =?utf-8?B?cDU4OEdRNFpydFJsRWd5cnY0R28rOFJhejRjTFl2OVErQVJoWkJXZEFRTHJw?= =?utf-8?B?QzROL0R3Mlk0UXdlWXg4MzdjVlVYdXRtZUpwVWhic0lzRWw3TnF6T2NOSkhC?= =?utf-8?B?REE9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?utf-8?B?eWZORTZ6YXBpWEtQclhkTDFubGptYkV4MktyajF0UTVqQVZRQTlMUFZZZXNK?= =?utf-8?B?T1I5eHZqQVVlN3hhUzYvMG82UlZBNWpiNEtGQzB6cnlVU1phR2ZBNkVoZ3JE?= =?utf-8?B?V0ZZeDYxZ1l4VStUS1hva0NxdUt2T0VORmpZaFp0UTEwL29uZitFZ2RIREhB?= =?utf-8?B?eXBtZU14a21jM3JyNFBoU2RhTE5yRDRrbEJQcnBObHdRL1l0cVNCejB1cGkr?= =?utf-8?B?MWtwUEFUaHdGMmxkVjE1T3JSeC9NbEFvYTdEeE1WbWY1eENST1M3bUowWllJ?= =?utf-8?B?R0RXdHVEbG5yaEZhSHJsU0RObmFlYTRrOXdxNityMkRVbXAyNnlLTFdnRXIy?= =?utf-8?B?czVBcndtLytYY1hlYVFpMXZhS1ZEMUhFb09HcHNYcThNZ2U1NnBUT2Z5VjNI?= =?utf-8?B?NnRFdTZkZHJLYkI4WWNhaG02bmRTbU5Oamg1eVdRR3JWQXZrWSt6Y1A4dmRF?= =?utf-8?B?T3cvbWNSRGJjNndZendiL3QvbnpSL05mOEN4UjJFdUhlTDRLS295SUhvbURU?= =?utf-8?B?UU9KdWErMURFdDBndWJEcHhzNldENm1VSGF0clVZNGx3TDhSamlzS0NsWHdT?= =?utf-8?B?dDRPNUowTG00dG1Zb0xaV2RmdmpYaWQ5ZkUyS3kvelJ1WWlnOVJLL1pDSGxv?= =?utf-8?B?dmFPbG4vZi81Zks5aGNETm4xQzhKS0FqV1JvdjdIT0hXNm9ZVzBnMVBDenF1?= =?utf-8?B?dTN4YVIvM3psZ3E2bGFYRENnQnBaT3RwL0tKRkJaa3hVV0Niayt6ZW5UUW9r?= =?utf-8?B?MmJCb25mNXc2MFMwMW1YaEI1M2hpR2hCUmI3Vm5BUkY0OXdSRnkrazFVVllI?= =?utf-8?B?djJqYkg0UVZwSVJxcHdhMXVGcVpLZjcwY3BFVTZyTWxBWjNnVERRQjBQTVk2?= =?utf-8?B?cXNnbUJ2cDE0SHVoMkcza0VwVCtZVVoxRWcyQ2JWZVhFckpiRjUvN1lYb3R2?= =?utf-8?B?OUpCMWI1RFllelVCU1JXRks1MnE2bnpqL2xIM0NUWEVVa2lrekF3SFFJWEx1?= =?utf-8?B?YytRUGgzQnZKV09wbTBEaitpSWJTcmFZSTdjN2NZZ3FrMTVBMUtnN1RrSTRp?= =?utf-8?B?Zm1qRis2NWR5UE5yWW1WMGhsdmRkWU9uWGx4NHdIK0hkUEl5N2UwWlNxbU9p?= =?utf-8?B?M2o0RE91SE04ZzdjVmdZRWZlcmhKZHdqcXJOS0NRcXpQRGQ0enJseHFjMnAx?= =?utf-8?B?UVorS3VncCt1azBZTDkzSE1RMG1DMUNmZ3FlOTBFWGtMaHdDTU1KRk1XVllK?= =?utf-8?B?MTB0OHFqMDR6WExqVUszeWRVaTNITU9FSS9UUkN2Wmtoamt5L3pKL3E4VzdU?= =?utf-8?B?bFhSb013eDVZMExwQkx4djR1emNGek04dE83UDRabERQVTBTaklvTGFpRVpY?= =?utf-8?B?WkRGc1ZPLy9TYXFxQkpTYnhsSU5YT1hqQXUzRmZucndrbHg2WXFBYXozSW8r?= =?utf-8?B?bVZtdkhjV2ZES25Wb3Y4a0F2SzVWN1BROEUxekRYSkZrNkRGb0JDSWhWVnVr?= =?utf-8?B?ZnlvRDdZZzc5WlpQNEpYOTc2Rmo2Ti9lak9HRXdPa0FNK1ZKN2JldXdxSElo?= =?utf-8?B?UkxudDhHblFQM0RldEVJUTJldXc2S1k2akxScVRPQ0xUcDRGMjVodFM4TXUr?= =?utf-8?B?RlJxQzNzOGtqSjI3STdSTHZobnBOempmbjdXMHgxREs4Z2RiY1ZxanZkTVNl?= =?utf-8?B?WmJMYkhaMkEvQWc1RlF2RTg2ZVZZVDdOWjluTXdOT1NJcWh2NG11Y3RuK0JC?= =?utf-8?Q?zOiXMmNO649LtB0DvA=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9983a358-5ed3-4961-aff7-08db4caef8c8 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB3793.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2023 14:50:58.6686 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7KU1E2CqnxNWp+GFKEzJTnJk1lRlc4cIalwZooHNYX9aGbXmcSrbY7wZcF41KXS056X6HVFHozhJDhlr6TVyxI/LKiqnjpyjHLQrKSDcp8g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB6982 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-05-04_10,2023-05-04_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 mlxlogscore=999 spamscore=0 phishscore=0 adultscore=0 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2305040122 X-Proofpoint-ORIG-GUID: VyBVz23yu0pOw-Rw8_rFwTjqe0zwJKxP X-Proofpoint-GUID: VyBVz23yu0pOw-Rw8_rFwTjqe0zwJKxP Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Introduce the main Secure Launch header file used in the early SL stub and the early setup code. Signed-off-by: Ross Philipson --- include/linux/slaunch.h | 513 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 513 insertions(+) create mode 100644 include/linux/slaunch.h diff --git a/include/linux/slaunch.h b/include/linux/slaunch.h new file mode 100644 index 0000000..a1c3172 --- /dev/null +++ b/include/linux/slaunch.h @@ -0,0 +1,513 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Main Secure Launch header file. + * + * Copyright (c) 2022, Oracle and/or its affiliates. + */ + +#ifndef _LINUX_SLAUNCH_H +#define _LINUX_SLAUNCH_H + +/* + * Secure Launch Defined State Flags + */ +#define SL_FLAG_ACTIVE 0x00000001 +#define SL_FLAG_ARCH_SKINIT 0x00000002 +#define SL_FLAG_ARCH_TXT 0x00000004 + +/* + * Secure Launch CPU Type + */ +#define SL_CPU_AMD 1 +#define SL_CPU_INTEL 2 + +#if IS_ENABLED(CONFIG_SECURE_LAUNCH) + +#define __SL32_CS 0x0008 +#define __SL32_DS 0x0010 + +/* + * Intel Safer Mode Extensions (SMX) + * + * Intel SMX provides a programming interface to establish a Measured Launched + * Environment (MLE). The measurement and protection mechanisms supported by the + * capabilities of an Intel Trusted Execution Technology (TXT) platform. SMX is + * the processor’s programming interface in an Intel TXT platform. + * + * See Intel SDM Volume 2 - 6.1 "Safer Mode Extensions Reference" + */ + +/* + * SMX GETSEC Leaf Functions + */ +#define SMX_X86_GETSEC_SEXIT 5 +#define SMX_X86_GETSEC_SMCTRL 7 +#define SMX_X86_GETSEC_WAKEUP 8 + +/* + * Intel Trusted Execution Technology MMIO Registers Banks + */ +#define TXT_PUB_CONFIG_REGS_BASE 0xfed30000 +#define TXT_PRIV_CONFIG_REGS_BASE 0xfed20000 +#define TXT_NR_CONFIG_PAGES ((TXT_PUB_CONFIG_REGS_BASE - \ + TXT_PRIV_CONFIG_REGS_BASE) >> PAGE_SHIFT) + +/* + * Intel Trusted Execution Technology (TXT) Registers + */ +#define TXT_CR_STS 0x0000 +#define TXT_CR_ESTS 0x0008 +#define TXT_CR_ERRORCODE 0x0030 +#define TXT_CR_CMD_RESET 0x0038 +#define TXT_CR_CMD_CLOSE_PRIVATE 0x0048 +#define TXT_CR_DIDVID 0x0110 +#define TXT_CR_VER_EMIF 0x0200 +#define TXT_CR_CMD_UNLOCK_MEM_CONFIG 0x0218 +#define TXT_CR_SINIT_BASE 0x0270 +#define TXT_CR_SINIT_SIZE 0x0278 +#define TXT_CR_MLE_JOIN 0x0290 +#define TXT_CR_HEAP_BASE 0x0300 +#define TXT_CR_HEAP_SIZE 0x0308 +#define TXT_CR_SCRATCHPAD 0x0378 +#define TXT_CR_CMD_OPEN_LOCALITY1 0x0380 +#define TXT_CR_CMD_CLOSE_LOCALITY1 0x0388 +#define TXT_CR_CMD_OPEN_LOCALITY2 0x0390 +#define TXT_CR_CMD_CLOSE_LOCALITY2 0x0398 +#define TXT_CR_CMD_SECRETS 0x08e0 +#define TXT_CR_CMD_NO_SECRETS 0x08e8 +#define TXT_CR_E2STS 0x08f0 + +/* TXT default register value */ +#define TXT_REGVALUE_ONE 0x1ULL + +/* TXTCR_STS status bits */ +#define TXT_SENTER_DONE_STS (1<<0) +#define TXT_SEXIT_DONE_STS (1<<1) + +/* + * SINIT/MLE Capabilities Field Bit Definitions + */ +#define TXT_SINIT_MLE_CAP_WAKE_GETSEC 0 +#define TXT_SINIT_MLE_CAP_WAKE_MONITOR 1 + +/* + * OS/MLE Secure Launch Specific Definitions + */ +#define TXT_OS_MLE_STRUCT_VERSION 1 +#define TXT_OS_MLE_MAX_VARIABLE_MTRRS 32 + +/* + * TXT Heap Table Enumeration + */ +#define TXT_BIOS_DATA_TABLE 1 +#define TXT_OS_MLE_DATA_TABLE 2 +#define TXT_OS_SINIT_DATA_TABLE 3 +#define TXT_SINIT_MLE_DATA_TABLE 4 +#define TXT_SINIT_TABLE_MAX TXT_SINIT_MLE_DATA_TABLE + +/* + * Secure Launch Defined Error Codes used in MLE-initiated TXT resets. + * + * TXT Specification + * Appendix I ACM Error Codes + */ +#define SL_ERROR_GENERIC 0xc0008001 +#define SL_ERROR_TPM_INIT 0xc0008002 +#define SL_ERROR_TPM_INVALID_LOG20 0xc0008003 +#define SL_ERROR_TPM_LOGGING_FAILED 0xc0008004 +#define SL_ERROR_REGION_STRADDLE_4GB 0xc0008005 +#define SL_ERROR_TPM_EXTEND 0xc0008006 +#define SL_ERROR_MTRR_INV_VCNT 0xc0008007 +#define SL_ERROR_MTRR_INV_DEF_TYPE 0xc0008008 +#define SL_ERROR_MTRR_INV_BASE 0xc0008009 +#define SL_ERROR_MTRR_INV_MASK 0xc000800a +#define SL_ERROR_MSR_INV_MISC_EN 0xc000800b +#define SL_ERROR_INV_AP_INTERRUPT 0xc000800c +#define SL_ERROR_INTEGER_OVERFLOW 0xc000800d +#define SL_ERROR_HEAP_WALK 0xc000800e +#define SL_ERROR_HEAP_MAP 0xc000800f +#define SL_ERROR_REGION_ABOVE_4GB 0xc0008010 +#define SL_ERROR_HEAP_INVALID_DMAR 0xc0008011 +#define SL_ERROR_HEAP_DMAR_SIZE 0xc0008012 +#define SL_ERROR_HEAP_DMAR_MAP 0xc0008013 +#define SL_ERROR_HI_PMR_BASE 0xc0008014 +#define SL_ERROR_HI_PMR_SIZE 0xc0008015 +#define SL_ERROR_LO_PMR_BASE 0xc0008016 +#define SL_ERROR_LO_PMR_MLE 0xc0008017 +#define SL_ERROR_INITRD_TOO_BIG 0xc0008018 +#define SL_ERROR_HEAP_ZERO_OFFSET 0xc0008019 +#define SL_ERROR_WAKE_BLOCK_TOO_SMALL 0xc000801a +#define SL_ERROR_MLE_BUFFER_OVERLAP 0xc000801b +#define SL_ERROR_BUFFER_BEYOND_PMR 0xc000801c +#define SL_ERROR_OS_SINIT_BAD_VERSION 0xc000801d +#define SL_ERROR_EVENTLOG_MAP 0xc000801e +#define SL_ERROR_TPM_NUMBER_ALGS 0xc000801f +#define SL_ERROR_TPM_UNKNOWN_DIGEST 0xc0008020 +#define SL_ERROR_TPM_INVALID_EVENT 0xc0008021 +#define SL_ERROR_INVALID_SLRT 0xc0008022 +#define SL_ERROR_SLRT_MISSING_ENTRY 0xc0008023 +#define SL_ERROR_SLRT_MAP 0xc0008024 + +/* + * Secure Launch Defined Limits + */ +#define TXT_MAX_CPUS 512 +#define TXT_BOOT_STACK_SIZE 24 + +/* + * Secure Launch event log entry type. The TXT specification defines the + * base event value as 0x400 for DRTM values. + */ +#define TXT_EVTYPE_BASE 0x400 +#define TXT_EVTYPE_SLAUNCH (TXT_EVTYPE_BASE + 0x102) +#define TXT_EVTYPE_SLAUNCH_START (TXT_EVTYPE_BASE + 0x103) +#define TXT_EVTYPE_SLAUNCH_END (TXT_EVTYPE_BASE + 0x104) + +/* + * Measured Launch PCRs + */ +#define SL_DEF_DLME_DETAIL_PCR17 17 +#define SL_DEF_DLME_AUTHORITY_PCR18 18 +#define SL_ALT_DLME_AUTHORITY_PCR19 19 +#define SL_ALT_DLME_DETAIL_PCR20 20 + +/* + * MLE scratch area offsets + */ +#define SL_SCRATCH_AP_EBX 0 +#define SL_SCRATCH_AP_JMP_OFFSET 4 +#define SL_SCRATCH_AP_PAUSE 8 + +#ifndef __ASSEMBLY__ + +#include +#include +#include + +/* + * Secure Launch AP wakeup information fetched in SMP boot code. + */ +struct sl_ap_wake_info { + u32 ap_wake_block; + u32 ap_wake_block_size; + u32 ap_jmp_offset; +}; + +/* + * TXT heap extended data elements. + */ +struct txt_heap_ext_data_element { + u32 type; + u32 size; + /* Data */ +} __packed; + +#define TXT_HEAP_EXTDATA_TYPE_END 0 + +struct txt_heap_end_element { + u32 type; + u32 size; +} __packed; + +#define TXT_HEAP_EXTDATA_TYPE_TPM_EVENT_LOG_PTR 5 + +struct txt_heap_event_log_element { + u64 event_log_phys_addr; +} __packed; + +#define TXT_HEAP_EXTDATA_TYPE_EVENT_LOG_POINTER2_1 8 + +struct txt_heap_event_log_pointer2_1_element { + u64 phys_addr; + u32 allocated_event_container_size; + u32 first_record_offset; + u32 next_record_offset; +} __packed; + +/* + * Secure Launch defined OS/MLE TXT Heap table + */ +struct txt_os_mle_data { + u32 version; + u32 boot_params_addr; + u64 slrt; + u64 txt_info; + u32 ap_wake_block; + u32 ap_wake_block_size; + u8 mle_scratch[64]; +} __packed; + +/* + * TXT specification defined BIOS data TXT Heap table + */ +struct txt_bios_data { + u32 version; /* Currently 5 for TPM 1.2 and 6 for TPM 2.0 */ + u32 bios_sinit_size; + u64 reserved1; + u64 reserved2; + u32 num_logical_procs; + /* Versions >= 5 with updates in version 6 */ + u32 sinit_flags; + u32 mle_flags; + /* Versions >= 4 */ + /* Ext Data Elements */ +} __packed; + +/* + * TXT specification defined OS/SINIT TXT Heap table + */ +struct txt_os_sinit_data { + u32 version; /* Currently 6 for TPM 1.2 and 7 for TPM 2.0 */ + u32 flags; + u64 mle_ptab; + u64 mle_size; + u64 mle_hdr_base; + u64 vtd_pmr_lo_base; + u64 vtd_pmr_lo_size; + u64 vtd_pmr_hi_base; + u64 vtd_pmr_hi_size; + u64 lcp_po_base; + u64 lcp_po_size; + u32 capabilities; + /* Version = 5 */ + u64 efi_rsdt_ptr; + /* Versions >= 6 */ + /* Ext Data Elements */ +} __packed; + +/* + * TXT specification defined SINIT/MLE TXT Heap table + */ +struct txt_sinit_mle_data { + u32 version; /* Current values are 6 through 9 */ + /* Versions <= 8 */ + u8 bios_acm_id[20]; + u32 edx_senter_flags; + u64 mseg_valid; + u8 sinit_hash[20]; + u8 mle_hash[20]; + u8 stm_hash[20]; + u8 lcp_policy_hash[20]; + u32 lcp_policy_control; + /* Versions >= 7 */ + u32 rlp_wakeup_addr; + u32 reserved; + u32 num_of_sinit_mdrs; + u32 sinit_mdrs_table_offset; + u32 sinit_vtd_dmar_table_size; + u32 sinit_vtd_dmar_table_offset; + /* Versions >= 8 */ + u32 processor_scrtm_status; + /* Versions >= 9 */ + /* Ext Data Elements */ +} __packed; + +/* + * TXT data reporting structure for memory types + */ +struct txt_sinit_memory_descriptor_record { + u64 address; + u64 length; + u8 type; + u8 reserved[7]; +} __packed; + +/* + * TXT data structure used by a responsive local processor (RLP) to start + * execution in response to a GETSEC[WAKEUP]. + */ +struct smx_rlp_mle_join { + u32 rlp_gdt_limit; + u32 rlp_gdt_base; + u32 rlp_seg_sel; /* cs (ds, es, ss are seg_sel+8) */ + u32 rlp_entry_point; /* phys addr */ +} __packed; + +/* + * TPM event log structures defined in both the TXT specification and + * the TCG documentation. + */ +#define TPM12_EVTLOG_SIGNATURE "TXT Event Container" + +struct tpm12_event_log_header { + char signature[20]; + char reserved[12]; + u8 container_ver_major; + u8 container_ver_minor; + u8 pcr_event_ver_major; + u8 pcr_event_ver_minor; + u32 container_size; + u32 pcr_events_offset; + u32 next_event_offset; + /* PCREvents[] */ +} __packed; + +/* + * Functions to extract data from the Intel TXT Heap Memory. The layout + * of the heap is as follows: + * +----------------------------+ + * | Size Bios Data table (u64) | + * +----------------------------+ + * | Bios Data table | + * +----------------------------+ + * | Size OS MLE table (u64) | + * +----------------------------+ + * | OS MLE table | + * +--------------------------- + + * | Size OS SINIT table (u64) | + * +----------------------------+ + * | OS SINIT table | + * +----------------------------+ + * | Size SINIT MLE table (u64) | + * +----------------------------+ + * | SINIT MLE table | + * +----------------------------+ + * + * NOTE: the table size fields include the 8 byte size field itself. + */ +static inline u64 txt_bios_data_size(void *heap) +{ + return *((u64 *)heap); +} + +static inline void *txt_bios_data_start(void *heap) +{ + return heap + sizeof(u64); +} + +static inline u64 txt_os_mle_data_size(void *heap) +{ + return *((u64 *)(heap + txt_bios_data_size(heap))); +} + +static inline void *txt_os_mle_data_start(void *heap) +{ + return heap + txt_bios_data_size(heap) + sizeof(u64); +} + +static inline u64 txt_os_sinit_data_size(void *heap) +{ + return *((u64 *)(heap + txt_bios_data_size(heap) + + txt_os_mle_data_size(heap))); +} + +static inline void *txt_os_sinit_data_start(void *heap) +{ + return heap + txt_bios_data_size(heap) + + txt_os_mle_data_size(heap) + sizeof(u64); +} + +static inline u64 txt_sinit_mle_data_size(void *heap) +{ + return *((u64 *)(heap + txt_bios_data_size(heap) + + txt_os_mle_data_size(heap) + + txt_os_sinit_data_size(heap))); +} + +static inline void *txt_sinit_mle_data_start(void *heap) +{ + return heap + txt_bios_data_size(heap) + + txt_os_mle_data_size(heap) + + txt_os_sinit_data_size(heap) + sizeof(u64); +} + +/* + * TPM event logging functions. + */ +static inline struct txt_heap_event_log_pointer2_1_element* +tpm20_find_log2_1_element(struct txt_os_sinit_data *os_sinit_data) +{ + struct txt_heap_ext_data_element *ext_elem; + + /* The extended element array as at the end of this table */ + ext_elem = (struct txt_heap_ext_data_element *) + ((u8 *)os_sinit_data + sizeof(struct txt_os_sinit_data)); + + while (ext_elem->type != TXT_HEAP_EXTDATA_TYPE_END) { + if (ext_elem->type == + TXT_HEAP_EXTDATA_TYPE_EVENT_LOG_POINTER2_1) { + return (struct txt_heap_event_log_pointer2_1_element *) + ((u8 *)ext_elem + + sizeof(struct txt_heap_ext_data_element)); + } + ext_elem = + (struct txt_heap_ext_data_element *) + ((u8 *)ext_elem + ext_elem->size); + } + + return NULL; +} + +static inline int tpm12_log_event(void *evtlog_base, u32 evtlog_size, + u32 event_size, void *event) +{ + struct tpm12_event_log_header *evtlog = + (struct tpm12_event_log_header *)evtlog_base; + + if (memcmp(evtlog->signature, TPM12_EVTLOG_SIGNATURE, + sizeof(TPM12_EVTLOG_SIGNATURE))) + return -EINVAL; + + if (evtlog->container_size > evtlog_size) + return -EINVAL; + + if (evtlog->next_event_offset + event_size > evtlog->container_size) + return -E2BIG; + + memcpy(evtlog_base + evtlog->next_event_offset, event, event_size); + evtlog->next_event_offset += event_size; + + return 0; +} + +static inline int tpm20_log_event(struct txt_heap_event_log_pointer2_1_element *elem, + void *evtlog_base, u32 evtlog_size, + u32 event_size, void *event) +{ + struct tcg_pcr_event *header = + (struct tcg_pcr_event *)evtlog_base; + + /* Has to be at least big enough for the signature */ + if (header->event_size < sizeof(TCG_SPECID_SIG)) + return -EINVAL; + + if (memcmp((u8 *)header + sizeof(struct tcg_pcr_event), + TCG_SPECID_SIG, sizeof(TCG_SPECID_SIG))) + return -EINVAL; + + if (elem->allocated_event_container_size > evtlog_size) + return -EINVAL; + + if (elem->next_record_offset + event_size > + elem->allocated_event_container_size) + return -E2BIG; + + memcpy(evtlog_base + elem->next_record_offset, event, event_size); + elem->next_record_offset += event_size; + + return 0; +} + +/* + * External functions avalailable in mainline kernel. + */ +extern void slaunch_setup_txt(void); +extern u32 slaunch_get_flags(void); +extern struct sl_ap_wake_info *slaunch_get_ap_wake_info(void); +extern struct acpi_table_header *slaunch_get_dmar_table(struct acpi_table_header *dmar); +extern void __noreturn slaunch_txt_reset(void __iomem *txt, + const char *msg, u64 error); +extern void slaunch_finalize(int do_sexit); + +#endif /* !__ASSEMBLY */ + +#else + +#define slaunch_setup_txt() do { } while (0) +#define slaunch_get_flags() 0 +#define slaunch_get_dmar_table(d) (d) +#define slaunch_finalize(d) do { } while (0) + +#endif /* !IS_ENABLED(CONFIG_SECURE_LAUNCH) */ + +#endif /* _LINUX_SLAUNCH_H */ -- 1.8.3.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 2D8E9C77B7C for ; Thu, 4 May 2023 14:51:22 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Ont6wAmgilIc4r349lVi9nD7uQL/i2zor/4O2gqXxrs=; b=3fX6PRR6sZGRY0 iZJzhC9OUqyfj8mjA9L3xCI4lJ1f6I/Y9mdVra4JoYmab0rBFwqhSAFksL24XQ3ZwttJRQQJZtqiV u4cS9GKWE9tkMLRniP49ZdQicCpLYAFNFZfZBbSjh5XDfUxlTaOSTvGb0GiXcq4yJJ5W8MItPTViL 4bPZ3YQSD4gf9AdKiT/OmHZgVkFSsO1LokiRBgWmMMfxG4IZz1k+rt6xUOwnEbyeTOzfP+VbcnPm1 SDd7bKkhS3l59ujErHYunA056GyDGZ/oajk7TrwO2Ge/C/T1zPSV2VChcLJrd/Dh6PTkjxNXTzsCL STPW7v9o5KhlUbybNFTQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1puaIg-0088ag-1o; Thu, 04 May 2023 14:51:18 +0000 Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1puaId-0088Yw-0s for kexec@lists.infradead.org; Thu, 04 May 2023 14:51:17 +0000 Received: from pps.filterd (m0246617.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 344DbOJO012645; Thu, 4 May 2023 14:51:04 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : content-transfer-encoding : mime-version; s=corp-2023-03-30; bh=tOrl7bwToPdgkLSml1h7WK2eBjs9z6pHb2lNO+Jym7g=; b=Rsk7aoPutY4eoZ5Uhqq/NXNx96a4nuphfnEqEEyJw14ntQwbcQAKSvhvY2rgnVZ79GEa RMqL4d7/M0cKBpIpde8W83ar6zDzuoeULkFmnmShmc4YxEyVtae3wtQ6ojGo3DRzUXcm nz+1Cay697xGVk64MKD8a8+vw/zRFe6LyjQGOkd3eA2JW3lVzGzHcWlkiRu9AedRLV1f O/9erlC5/VjFRqENYOGa1kQyBjNpRlMAaCWWChmMCoVG5e3QC9oOztCEdalf+TaxhF7d lpfDDuyy3v8Ye2oG9+ASmrgR5ZGEUwUyT/Jie3eng8Tm95euw03WK51lL5GCs9lU1P3r Pw== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3q8usv1ydf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 04 May 2023 14:51:03 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 344EFPUo024884; Thu, 4 May 2023 14:51:02 GMT Received: from nam11-bn8-obe.outbound.protection.outlook.com (mail-bn8nam11lp2168.outbound.protection.outlook.com [104.47.58.168]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3q8sp8tqxu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 04 May 2023 14:51:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Mc3c7iG8OnedaS5YEvCoIu4Fjd86xDnFVbx4S427Yni7IS3WwYZiys0I/Td0drmnjGI9Evgf9qECF+VVCGhCBCSCwTuLnyxINdtvuCka2J3UtTkPM3E8dcMRIwikktUhNuQYSDgWvdlj3I64+L+g6WwNAEIS3OGsAN+bCU0Y03kozt+75YB2eO3qNUGRi5XAhicA0JgH53xCImeNi7rbcvEoCrrP3GSv1xuEAJ/3TYlPjAbDPm/o1YFciIZVTBvpXxMsAlW6zukTQJpKCLaeC+eDnxICcdlKXGx2K6WrNyBvzpXfMBjzZ7OAT3BwuxZJrXZJGrwsfAWKoKsuWYmd6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tOrl7bwToPdgkLSml1h7WK2eBjs9z6pHb2lNO+Jym7g=; b=FCazusbSub3HvCIQ1nD3ZrztxT03yCvX97gO0rQIIf4auyMPiRzQZ7hLhVXIeHictcWXt+YGhWuD+IqjW6twsFr1caeASOpF8NbQU0TjIyFR//JUoIRO2aYgg3UqC80m+zXP3udB8uo+KJV//q9D8PL356Bi7dMgAJ0JMJy9rV0q8PGd9u3M9N10K10WUfLzwS8AYg8FHq2upKN8DYnOKoeVSOSIsRmalK0oPiYvKB/JjQLftZ1ywUT0n5onkr40CXnMdvXJmAGiomymj6oNbxrZHnSd/vldgK05qOBGzaTI/1qXywVFI9e7tJMPtAHm/nvM5lF0YI3STLgjXPUXVg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tOrl7bwToPdgkLSml1h7WK2eBjs9z6pHb2lNO+Jym7g=; b=kMiJPFn9H07zMiqsUfmH2TyatXEydMPXbBZy1spt9unZtfOnx/uM9FeKoxWyOfCW0wNMJh1HwzimJAT8da8GhcXfHWMn/AefavXxBxL0y3u9uyjwVKuL7D5HnFsHyQHzzzNylHdSsP4w/xzt6VqQP3AGlw4iu4TZ9MtcNnXILPg= Received: from BY5PR10MB3793.namprd10.prod.outlook.com (2603:10b6:a03:1f6::14) by PH0PR10MB6982.namprd10.prod.outlook.com (2603:10b6:510:287::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6363.26; Thu, 4 May 2023 14:50:58 +0000 Received: from BY5PR10MB3793.namprd10.prod.outlook.com ([fe80::a007:b0c1:5cb:329a]) by BY5PR10MB3793.namprd10.prod.outlook.com ([fe80::a007:b0c1:5cb:329a%5]) with mapi id 15.20.6363.026; Thu, 4 May 2023 14:50:58 +0000 From: Ross Philipson To: linux-kernel@vger.kernel.org, x86@kernel.org, linux-integrity@vger.kernel.org, linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, iommu@lists.linux-foundation.org, kexec@lists.infradead.org, linux-efi@vger.kernel.org Cc: ross.philipson@oracle.com, dpsmith@apertussolutions.com, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, hpa@zytor.com, ardb@kernel.org, mjg59@srcf.ucam.org, James.Bottomley@hansenpartnership.com, luto@amacapital.net, nivedita@alum.mit.edu, kanth.ghatraju@oracle.com, trenchboot-devel@googlegroups.com Subject: [PATCH v6 05/14] x86: Secure Launch main header file Date: Thu, 4 May 2023 14:50:14 +0000 Message-Id: <20230504145023.835096-6-ross.philipson@oracle.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20230504145023.835096-1-ross.philipson@oracle.com> References: <20230504145023.835096-1-ross.philipson@oracle.com> X-ClientProxiedBy: LO2P265CA0485.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:13a::10) To BY5PR10MB3793.namprd10.prod.outlook.com (2603:10b6:a03:1f6::14) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY5PR10MB3793:EE_|PH0PR10MB6982:EE_ X-MS-Office365-Filtering-Correlation-Id: 9983a358-5ed3-4961-aff7-08db4caef8c8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AaZjOb97yEXGbHCFb/XKjumlRbRLvoYEmchdtH9bXh8Hxp+pQcFS1ewJOsyNDaL7Lc0DCIqmIvD0evSt+Dh9syLfvBC74xnR6ppS6g1Z9fKrFnQGQ6kyOKX4mM/plSHev7Wny/jtp8lgCwIa5wcJ6bonzEzpWiXt3NlS9yfkCBvlSR9mkjaqAdIzGKW4/10xA+a0KWCjU8tHmoLVcICCswr2F/Xg74XNHiHs1pYtNZnXUADtrL+qqUpbAFi1MXFvKyJljjn9lZXmbEpnJcYOe3E6TI7xUTPOEZjWPGKHkrpM2Sdnw3OJvME4G0ebYd1h8Vb4N9R20OimSIdg2Oe/N/ViiGndeGJlxxOFxoyC022Y1OCabNFgbf/jKLFDouQhmfEIAfqMF8cXSjQNX/IZXab4gwS/wE/dkbiOiJwCZId+4lTiecdTOJxcVMExVS2f811jj2oViyV0fgqObom7G1QYB5akMETwEG4p3WmgfAv++MVMep5IkFhx830T3U017dPOsFsq281cfpDE1Pxykf3QmzwgdC4XEl413FOmif3IccvJW14grM3rrPkGxHgh X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB3793.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(39860400002)(396003)(346002)(136003)(376002)(366004)(451199021)(36756003)(38100700002)(5660300002)(7416002)(2906002)(44832011)(30864003)(8936002)(316002)(86362001)(4326008)(66556008)(66476007)(66946007)(8676002)(41300700001)(83380400001)(186003)(6512007)(6506007)(1076003)(26005)(6486002)(478600001)(2616005)(6666004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VUl1VDkzLy84SEJhYjZsQnVHdVJVWTRnMmVhdW1LUE1iOWw5akxXcXhaYVB6?= =?utf-8?B?K0dCcndRcXVKUFRWUmhXdTFQUVdlWlVFTkN6VHhJeUVYTFlSUUtDbXZIaGRT?= =?utf-8?B?MFF4ZVZnQXZoU0ZQRTl3cS8xZXdUUWIxMGVCM29SU2xyNXppMTh6WUdEalhm?= =?utf-8?B?alJXd2FoQnpUM3JQUUV4WGhKc292M3h2M09CU09mbkNjbzFEanhOclR2T3o4?= =?utf-8?B?WTI1T2ZWU2UxL2tBTStXM3crK09wUHcyaGJiVHZ5NU1NbDNIeU93ZHdyc01S?= =?utf-8?B?YkxlaUlGYUtieTVTN2twaXNCL2kzeURnL1oyUmsyZEpxT2xJV0xHMFdRSmxX?= =?utf-8?B?anpuZmVTcmdsT2NiaTUzeHltTVlwa3czaVNkSUJGb2NrblBoWTdia1ZFMzAw?= =?utf-8?B?dm81RTdxSWQ0dk1ueHpiQ0ZTbHdkTjNGT0ZZQjM5MzRqd3Q0aU5qeHRHeFVQ?= =?utf-8?B?Y1NRYXhZNGhHK1d3Qnl6KzFvdktSOTdRUzJHWjQvTXZVMHN1VWJvZStQTGlR?= =?utf-8?B?YW8rYVZzSUlvZmpJN1ZIelBGbDZZYnp5MzRtTWtwTWRvdVgyZ21rVVllMlFK?= =?utf-8?B?VWsvWEZNQmtKSWhzTmRlMU12N0w2V29HdElKYXlvQXMyU05DQkpOeE1BS2J3?= =?utf-8?B?Ti9IZGRLWno1dFVqVzVvckNuTWllVktvYVdBbVpKM3ZKTDBhVEY0NXFPWm1j?= =?utf-8?B?c29GalptWTRMY3VzVy9KZFhDUGo1eXFtZ0t6aE8ycE1lVHBWbW1PNW5mVHJE?= =?utf-8?B?bGdrOFo0eUdhRy9zZTgwZWp3TnlnbGM1WFNxdE53NEhXTEdoaUpjcGdnN1Nz?= =?utf-8?B?dzRJeHlHalNTNTFUOERodkFPcjdIeWFrb1ZMTm5CT0wvS2duN05mWGY5aDhN?= =?utf-8?B?S1U5czY5MyttZGswQ3AxNUl2eWQ5QU1nMEpBeFFDTkZ2NTVwMjcvcXluUDd3?= =?utf-8?B?ekZib0ltNTlQRkgyaUFOb3NyYlVyb0hhTysyeTNvaWk5cjFmOFVoSFNtZEhL?= =?utf-8?B?dHUxb0txU3lwWjB0T3JiZEZWdkQwNk5JYzZSUTEzdFZ6dDIvWVBQamF3TjBI?= =?utf-8?B?cWlMRVlORDhzWk81dXdpeTNZMmFOc1BMblNkTXdpeld3NTdOYitLQzNMZ0JU?= =?utf-8?B?S3Y2eTl4b1N5OUVMT2xaUmovem92dVE0RzJNc24zODhjTjZOTTBQRXdHT2dz?= =?utf-8?B?OUZPTC9XWWdIcTR4QVJOSUp3bzhETSsxWmtiNG43S3dVOFE5NFIySFJvWnJ3?= =?utf-8?B?RlJ4R0xUR05wOEpUcTRwaUxyK0FTTmc4OVB5WFNna29OU2MvUmtpMG15L2Vk?= =?utf-8?B?WTRrREtMTHZVV0FvVmU2NkgyRlRlOVkzRjFJcEJxbGY4MXdkNTM2ZFlZNU1Q?= =?utf-8?B?YWdxT1NUSDRScVpVNXQrU0xqaVRJVThWNE5pb3J4M3ozMGk4dkQ0L1VtQUsv?= =?utf-8?B?STJvZGtJcHJPM0VHOEFMTGRYYUFGaC9MZEJuVUpFREVKNGNSUklXNGJjdGhL?= =?utf-8?B?OHVIaHZGL002eUJaemU3VkFRdTlhK1ZLS01OVHQ2azRTcE9UVTNKRzNzb0Yy?= =?utf-8?B?VHV2UTBtTHArUEhRalZoVTBpRDFOSlJvSWxwTDdiN0VFY25LNlVRWXQxREtF?= =?utf-8?B?VUV5clRmZHpHZlFCMDNUSDdyamJTeTkvR1lZREpVSkRmWHI3WEI5RG1XYlk2?= =?utf-8?B?ejVBaVNxeWVaRTJBWjJuQlFCMWNNdnpYU2lhQk1VOFNWYjBCbjBvc0UybGoy?= =?utf-8?B?WHhSSUJhcG43TnEwdDdEY1RIeFFBVGFjZ2hJQTdydVVjSUZacXdNRVErOTRa?= =?utf-8?B?NHBUWWR2N1ptQytnN0lpVWozckttSEZyNnovenMrbC9Qa2VvU21nM0NTeUJa?= =?utf-8?B?U2U4aGJReGw1MDJ0MTVETE5QRWhOVkFvaDFpZDZSWXVLbEJteE94bWxBck1p?= =?utf-8?B?MGdtOWhaakNBZ2xiSWQ4d29aZ0d2cEdDWnpjS3VGY2lDNXhMMHpVRXhhVXRo?= =?utf-8?B?VWNYclNKVW9pVXpQbXFSLzQyeXNycXBRdmgra2ZqYXdpeFhITldEdytXZVJG?= =?utf-8?B?cDU4OEdRNFpydFJsRWd5cnY0R28rOFJhejRjTFl2OVErQVJoWkJXZEFRTHJw?= =?utf-8?B?QzROL0R3Mlk0UXdlWXg4MzdjVlVYdXRtZUpwVWhic0lzRWw3TnF6T2NOSkhC?= =?utf-8?B?REE9PQ==?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?utf-8?B?eWZORTZ6YXBpWEtQclhkTDFubGptYkV4MktyajF0UTVqQVZRQTlMUFZZZXNK?= =?utf-8?B?T1I5eHZqQVVlN3hhUzYvMG82UlZBNWpiNEtGQzB6cnlVU1phR2ZBNkVoZ3JE?= =?utf-8?B?V0ZZeDYxZ1l4VStUS1hva0NxdUt2T0VORmpZaFp0UTEwL29uZitFZ2RIREhB?= =?utf-8?B?eXBtZU14a21jM3JyNFBoU2RhTE5yRDRrbEJQcnBObHdRL1l0cVNCejB1cGkr?= =?utf-8?B?MWtwUEFUaHdGMmxkVjE1T3JSeC9NbEFvYTdEeE1WbWY1eENST1M3bUowWllJ?= =?utf-8?B?R0RXdHVEbG5yaEZhSHJsU0RObmFlYTRrOXdxNityMkRVbXAyNnlLTFdnRXIy?= =?utf-8?B?czVBcndtLytYY1hlYVFpMXZhS1ZEMUhFb09HcHNYcThNZ2U1NnBUT2Z5VjNI?= =?utf-8?B?NnRFdTZkZHJLYkI4WWNhaG02bmRTbU5Oamg1eVdRR3JWQXZrWSt6Y1A4dmRF?= =?utf-8?B?T3cvbWNSRGJjNndZendiL3QvbnpSL05mOEN4UjJFdUhlTDRLS295SUhvbURU?= =?utf-8?B?UU9KdWErMURFdDBndWJEcHhzNldENm1VSGF0clVZNGx3TDhSamlzS0NsWHdT?= =?utf-8?B?dDRPNUowTG00dG1Zb0xaV2RmdmpYaWQ5ZkUyS3kvelJ1WWlnOVJLL1pDSGxv?= =?utf-8?B?dmFPbG4vZi81Zks5aGNETm4xQzhKS0FqV1JvdjdIT0hXNm9ZVzBnMVBDenF1?= =?utf-8?B?dTN4YVIvM3psZ3E2bGFYRENnQnBaT3RwL0tKRkJaa3hVV0Niayt6ZW5UUW9r?= =?utf-8?B?MmJCb25mNXc2MFMwMW1YaEI1M2hpR2hCUmI3Vm5BUkY0OXdSRnkrazFVVllI?= =?utf-8?B?djJqYkg0UVZwSVJxcHdhMXVGcVpLZjcwY3BFVTZyTWxBWjNnVERRQjBQTVk2?= =?utf-8?B?cXNnbUJ2cDE0SHVoMkcza0VwVCtZVVoxRWcyQ2JWZVhFckpiRjUvN1lYb3R2?= =?utf-8?B?OUpCMWI1RFllelVCU1JXRks1MnE2bnpqL2xIM0NUWEVVa2lrekF3SFFJWEx1?= =?utf-8?B?YytRUGgzQnZKV09wbTBEaitpSWJTcmFZSTdjN2NZZ3FrMTVBMUtnN1RrSTRp?= =?utf-8?B?Zm1qRis2NWR5UE5yWW1WMGhsdmRkWU9uWGx4NHdIK0hkUEl5N2UwWlNxbU9p?= =?utf-8?B?M2o0RE91SE04ZzdjVmdZRWZlcmhKZHdqcXJOS0NRcXpQRGQ0enJseHFjMnAx?= =?utf-8?B?UVorS3VncCt1azBZTDkzSE1RMG1DMUNmZ3FlOTBFWGtMaHdDTU1KRk1XVllK?= =?utf-8?B?MTB0OHFqMDR6WExqVUszeWRVaTNITU9FSS9UUkN2Wmtoamt5L3pKL3E4VzdU?= =?utf-8?B?bFhSb013eDVZMExwQkx4djR1emNGek04dE83UDRabERQVTBTaklvTGFpRVpY?= =?utf-8?B?WkRGc1ZPLy9TYXFxQkpTYnhsSU5YT1hqQXUzRmZucndrbHg2WXFBYXozSW8r?= =?utf-8?B?bVZtdkhjV2ZES25Wb3Y4a0F2SzVWN1BROEUxekRYSkZrNkRGb0JDSWhWVnVr?= =?utf-8?B?ZnlvRDdZZzc5WlpQNEpYOTc2Rmo2Ti9lak9HRXdPa0FNK1ZKN2JldXdxSElo?= =?utf-8?B?UkxudDhHblFQM0RldEVJUTJldXc2S1k2akxScVRPQ0xUcDRGMjVodFM4TXUr?= =?utf-8?B?RlJxQzNzOGtqSjI3STdSTHZobnBOempmbjdXMHgxREs4Z2RiY1ZxanZkTVNl?= =?utf-8?B?WmJMYkhaMkEvQWc1RlF2RTg2ZVZZVDdOWjluTXdOT1NJcWh2NG11Y3RuK0JC?= =?utf-8?Q?zOiXMmNO649LtB0DvA=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9983a358-5ed3-4961-aff7-08db4caef8c8 X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB3793.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2023 14:50:58.6686 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7KU1E2CqnxNWp+GFKEzJTnJk1lRlc4cIalwZooHNYX9aGbXmcSrbY7wZcF41KXS056X6HVFHozhJDhlr6TVyxI/LKiqnjpyjHLQrKSDcp8g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB6982 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-05-04_10,2023-05-04_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 mlxlogscore=999 spamscore=0 phishscore=0 adultscore=0 mlxscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2305040122 X-Proofpoint-ORIG-GUID: VyBVz23yu0pOw-Rw8_rFwTjqe0zwJKxP X-Proofpoint-GUID: VyBVz23yu0pOw-Rw8_rFwTjqe0zwJKxP X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230504_075115_326402_833D45F0 X-CRM114-Status: GOOD ( 18.99 ) X-BeenThere: kexec@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "kexec" Errors-To: kexec-bounces+kexec=archiver.kernel.org@lists.infradead.org SW50cm9kdWNlIHRoZSBtYWluIFNlY3VyZSBMYXVuY2ggaGVhZGVyIGZpbGUgdXNlZCBpbiB0aGUg ZWFybHkgU0wgc3R1YgphbmQgdGhlIGVhcmx5IHNldHVwIGNvZGUuCgpTaWduZWQtb2ZmLWJ5OiBS b3NzIFBoaWxpcHNvbiA8cm9zcy5waGlsaXBzb25Ab3JhY2xlLmNvbT4KLS0tCiBpbmNsdWRlL2xp bnV4L3NsYXVuY2guaCB8IDUxMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA1MTMgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1v ZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvc2xhdW5jaC5oCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9s aW51eC9zbGF1bmNoLmggYi9pbmNsdWRlL2xpbnV4L3NsYXVuY2guaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5hMWMzMTcyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9s aW51eC9zbGF1bmNoLmgKQEAgLTAsMCArMSw1MTMgQEAKKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wICovCisvKgorICogTWFpbiBTZWN1cmUgTGF1bmNoIGhlYWRlciBmaWxlLgor ICoKKyAqIENvcHlyaWdodCAoYykgMjAyMiwgT3JhY2xlIGFuZC9vciBpdHMgYWZmaWxpYXRlcy4K KyAqLworCisjaWZuZGVmIF9MSU5VWF9TTEFVTkNIX0gKKyNkZWZpbmUgX0xJTlVYX1NMQVVOQ0hf SAorCisvKgorICogU2VjdXJlIExhdW5jaCBEZWZpbmVkIFN0YXRlIEZsYWdzCisgKi8KKyNkZWZp bmUgU0xfRkxBR19BQ1RJVkUJCTB4MDAwMDAwMDEKKyNkZWZpbmUgU0xfRkxBR19BUkNIX1NLSU5J VAkweDAwMDAwMDAyCisjZGVmaW5lIFNMX0ZMQUdfQVJDSF9UWFQJMHgwMDAwMDAwNAorCisvKgor ICogU2VjdXJlIExhdW5jaCBDUFUgVHlwZQorICovCisjZGVmaW5lIFNMX0NQVV9BTUQJMQorI2Rl ZmluZSBTTF9DUFVfSU5URUwJMgorCisjaWYgSVNfRU5BQkxFRChDT05GSUdfU0VDVVJFX0xBVU5D SCkKKworI2RlZmluZSBfX1NMMzJfQ1MJMHgwMDA4CisjZGVmaW5lIF9fU0wzMl9EUwkweDAwMTAK KworLyoKKyAqIEludGVsIFNhZmVyIE1vZGUgRXh0ZW5zaW9ucyAoU01YKQorICoKKyAqIEludGVs IFNNWCBwcm92aWRlcyBhIHByb2dyYW1taW5nIGludGVyZmFjZSB0byBlc3RhYmxpc2ggYSBNZWFz dXJlZCBMYXVuY2hlZAorICogRW52aXJvbm1lbnQgKE1MRSkuIFRoZSBtZWFzdXJlbWVudCBhbmQg cHJvdGVjdGlvbiBtZWNoYW5pc21zIHN1cHBvcnRlZCBieSB0aGUKKyAqIGNhcGFiaWxpdGllcyBv ZiBhbiBJbnRlbCBUcnVzdGVkIEV4ZWN1dGlvbiBUZWNobm9sb2d5IChUWFQpIHBsYXRmb3JtLiBT TVggaXMKKyAqIHRoZSBwcm9jZXNzb3LigJlzIHByb2dyYW1taW5nIGludGVyZmFjZSBpbiBhbiBJ bnRlbCBUWFQgcGxhdGZvcm0uCisgKgorICogU2VlIEludGVsIFNETSBWb2x1bWUgMiAtIDYuMSAi U2FmZXIgTW9kZSBFeHRlbnNpb25zIFJlZmVyZW5jZSIKKyAqLworCisvKgorICogU01YIEdFVFNF QyBMZWFmIEZ1bmN0aW9ucworICovCisjZGVmaW5lIFNNWF9YODZfR0VUU0VDX1NFWElUCTUKKyNk ZWZpbmUgU01YX1g4Nl9HRVRTRUNfU01DVFJMCTcKKyNkZWZpbmUgU01YX1g4Nl9HRVRTRUNfV0FL RVVQCTgKKworLyoKKyAqIEludGVsIFRydXN0ZWQgRXhlY3V0aW9uIFRlY2hub2xvZ3kgTU1JTyBS ZWdpc3RlcnMgQmFua3MKKyAqLworI2RlZmluZSBUWFRfUFVCX0NPTkZJR19SRUdTX0JBU0UJMHhm ZWQzMDAwMAorI2RlZmluZSBUWFRfUFJJVl9DT05GSUdfUkVHU19CQVNFCTB4ZmVkMjAwMDAKKyNk ZWZpbmUgVFhUX05SX0NPTkZJR19QQUdFUyAgICAgKChUWFRfUFVCX0NPTkZJR19SRUdTX0JBU0Ug LSBcCisJCQkJICBUWFRfUFJJVl9DT05GSUdfUkVHU19CQVNFKSA+PiBQQUdFX1NISUZUKQorCisv KgorICogSW50ZWwgVHJ1c3RlZCBFeGVjdXRpb24gVGVjaG5vbG9neSAoVFhUKSBSZWdpc3RlcnMK KyAqLworI2RlZmluZSBUWFRfQ1JfU1RTCQkJMHgwMDAwCisjZGVmaW5lIFRYVF9DUl9FU1RTCQkJ MHgwMDA4CisjZGVmaW5lIFRYVF9DUl9FUlJPUkNPREUJCTB4MDAzMAorI2RlZmluZSBUWFRfQ1Jf Q01EX1JFU0VUCQkweDAwMzgKKyNkZWZpbmUgVFhUX0NSX0NNRF9DTE9TRV9QUklWQVRFCTB4MDA0 OAorI2RlZmluZSBUWFRfQ1JfRElEVklECQkJMHgwMTEwCisjZGVmaW5lIFRYVF9DUl9WRVJfRU1J RgkJCTB4MDIwMAorI2RlZmluZSBUWFRfQ1JfQ01EX1VOTE9DS19NRU1fQ09ORklHCTB4MDIxOAor I2RlZmluZSBUWFRfQ1JfU0lOSVRfQkFTRQkJMHgwMjcwCisjZGVmaW5lIFRYVF9DUl9TSU5JVF9T SVpFCQkweDAyNzgKKyNkZWZpbmUgVFhUX0NSX01MRV9KT0lOCQkJMHgwMjkwCisjZGVmaW5lIFRY VF9DUl9IRUFQX0JBU0UJCTB4MDMwMAorI2RlZmluZSBUWFRfQ1JfSEVBUF9TSVpFCQkweDAzMDgK KyNkZWZpbmUgVFhUX0NSX1NDUkFUQ0hQQUQJCTB4MDM3OAorI2RlZmluZSBUWFRfQ1JfQ01EX09Q RU5fTE9DQUxJVFkxCTB4MDM4MAorI2RlZmluZSBUWFRfQ1JfQ01EX0NMT1NFX0xPQ0FMSVRZMQkw eDAzODgKKyNkZWZpbmUgVFhUX0NSX0NNRF9PUEVOX0xPQ0FMSVRZMgkweDAzOTAKKyNkZWZpbmUg VFhUX0NSX0NNRF9DTE9TRV9MT0NBTElUWTIJMHgwMzk4CisjZGVmaW5lIFRYVF9DUl9DTURfU0VD UkVUUwkJMHgwOGUwCisjZGVmaW5lIFRYVF9DUl9DTURfTk9fU0VDUkVUUwkJMHgwOGU4CisjZGVm aW5lIFRYVF9DUl9FMlNUUwkJCTB4MDhmMAorCisvKiBUWFQgZGVmYXVsdCByZWdpc3RlciB2YWx1 ZSAqLworI2RlZmluZSBUWFRfUkVHVkFMVUVfT05FCQkweDFVTEwKKworLyogVFhUQ1JfU1RTIHN0 YXR1cyBiaXRzICovCisjZGVmaW5lIFRYVF9TRU5URVJfRE9ORV9TVFMJCSgxPDwwKQorI2RlZmlu ZSBUWFRfU0VYSVRfRE9ORV9TVFMJCSgxPDwxKQorCisvKgorICogU0lOSVQvTUxFIENhcGFiaWxp dGllcyBGaWVsZCBCaXQgRGVmaW5pdGlvbnMKKyAqLworI2RlZmluZSBUWFRfU0lOSVRfTUxFX0NB UF9XQUtFX0dFVFNFQwkwCisjZGVmaW5lIFRYVF9TSU5JVF9NTEVfQ0FQX1dBS0VfTU9OSVRPUgkx CisKKy8qCisgKiBPUy9NTEUgU2VjdXJlIExhdW5jaCBTcGVjaWZpYyBEZWZpbml0aW9ucworICov CisjZGVmaW5lIFRYVF9PU19NTEVfU1RSVUNUX1ZFUlNJT04JMQorI2RlZmluZSBUWFRfT1NfTUxF X01BWF9WQVJJQUJMRV9NVFJSUwkzMgorCisvKgorICogVFhUIEhlYXAgVGFibGUgRW51bWVyYXRp b24KKyAqLworI2RlZmluZSBUWFRfQklPU19EQVRBX1RBQkxFCQkxCisjZGVmaW5lIFRYVF9PU19N TEVfREFUQV9UQUJMRQkJMgorI2RlZmluZSBUWFRfT1NfU0lOSVRfREFUQV9UQUJMRQkJMworI2Rl ZmluZSBUWFRfU0lOSVRfTUxFX0RBVEFfVEFCTEUJNAorI2RlZmluZSBUWFRfU0lOSVRfVEFCTEVf TUFYCQlUWFRfU0lOSVRfTUxFX0RBVEFfVEFCTEUKKworLyoKKyAqIFNlY3VyZSBMYXVuY2ggRGVm aW5lZCBFcnJvciBDb2RlcyB1c2VkIGluIE1MRS1pbml0aWF0ZWQgVFhUIHJlc2V0cy4KKyAqCisg KiBUWFQgU3BlY2lmaWNhdGlvbgorICogQXBwZW5kaXggSSBBQ00gRXJyb3IgQ29kZXMKKyAqLwor I2RlZmluZSBTTF9FUlJPUl9HRU5FUklDCQkweGMwMDA4MDAxCisjZGVmaW5lIFNMX0VSUk9SX1RQ TV9JTklUCQkweGMwMDA4MDAyCisjZGVmaW5lIFNMX0VSUk9SX1RQTV9JTlZBTElEX0xPRzIwCTB4 YzAwMDgwMDMKKyNkZWZpbmUgU0xfRVJST1JfVFBNX0xPR0dJTkdfRkFJTEVECTB4YzAwMDgwMDQK KyNkZWZpbmUgU0xfRVJST1JfUkVHSU9OX1NUUkFERExFXzRHQgkweGMwMDA4MDA1CisjZGVmaW5l IFNMX0VSUk9SX1RQTV9FWFRFTkQJCTB4YzAwMDgwMDYKKyNkZWZpbmUgU0xfRVJST1JfTVRSUl9J TlZfVkNOVAkJMHhjMDAwODAwNworI2RlZmluZSBTTF9FUlJPUl9NVFJSX0lOVl9ERUZfVFlQRQkw eGMwMDA4MDA4CisjZGVmaW5lIFNMX0VSUk9SX01UUlJfSU5WX0JBU0UJCTB4YzAwMDgwMDkKKyNk ZWZpbmUgU0xfRVJST1JfTVRSUl9JTlZfTUFTSwkJMHhjMDAwODAwYQorI2RlZmluZSBTTF9FUlJP Ul9NU1JfSU5WX01JU0NfRU4JMHhjMDAwODAwYgorI2RlZmluZSBTTF9FUlJPUl9JTlZfQVBfSU5U RVJSVVBUCTB4YzAwMDgwMGMKKyNkZWZpbmUgU0xfRVJST1JfSU5URUdFUl9PVkVSRkxPVwkweGMw MDA4MDBkCisjZGVmaW5lIFNMX0VSUk9SX0hFQVBfV0FMSwkJMHhjMDAwODAwZQorI2RlZmluZSBT TF9FUlJPUl9IRUFQX01BUAkJMHhjMDAwODAwZgorI2RlZmluZSBTTF9FUlJPUl9SRUdJT05fQUJP VkVfNEdCCTB4YzAwMDgwMTAKKyNkZWZpbmUgU0xfRVJST1JfSEVBUF9JTlZBTElEX0RNQVIJMHhj MDAwODAxMQorI2RlZmluZSBTTF9FUlJPUl9IRUFQX0RNQVJfU0laRQkJMHhjMDAwODAxMgorI2Rl ZmluZSBTTF9FUlJPUl9IRUFQX0RNQVJfTUFQCQkweGMwMDA4MDEzCisjZGVmaW5lIFNMX0VSUk9S X0hJX1BNUl9CQVNFCQkweGMwMDA4MDE0CisjZGVmaW5lIFNMX0VSUk9SX0hJX1BNUl9TSVpFCQkw eGMwMDA4MDE1CisjZGVmaW5lIFNMX0VSUk9SX0xPX1BNUl9CQVNFCQkweGMwMDA4MDE2CisjZGVm aW5lIFNMX0VSUk9SX0xPX1BNUl9NTEUJCTB4YzAwMDgwMTcKKyNkZWZpbmUgU0xfRVJST1JfSU5J VFJEX1RPT19CSUcJCTB4YzAwMDgwMTgKKyNkZWZpbmUgU0xfRVJST1JfSEVBUF9aRVJPX09GRlNF VAkweGMwMDA4MDE5CisjZGVmaW5lIFNMX0VSUk9SX1dBS0VfQkxPQ0tfVE9PX1NNQUxMCTB4YzAw MDgwMWEKKyNkZWZpbmUgU0xfRVJST1JfTUxFX0JVRkZFUl9PVkVSTEFQCTB4YzAwMDgwMWIKKyNk ZWZpbmUgU0xfRVJST1JfQlVGRkVSX0JFWU9ORF9QTVIJMHhjMDAwODAxYworI2RlZmluZSBTTF9F UlJPUl9PU19TSU5JVF9CQURfVkVSU0lPTgkweGMwMDA4MDFkCisjZGVmaW5lIFNMX0VSUk9SX0VW RU5UTE9HX01BUAkJMHhjMDAwODAxZQorI2RlZmluZSBTTF9FUlJPUl9UUE1fTlVNQkVSX0FMR1MJ MHhjMDAwODAxZgorI2RlZmluZSBTTF9FUlJPUl9UUE1fVU5LTk9XTl9ESUdFU1QJMHhjMDAwODAy MAorI2RlZmluZSBTTF9FUlJPUl9UUE1fSU5WQUxJRF9FVkVOVAkweGMwMDA4MDIxCisjZGVmaW5l IFNMX0VSUk9SX0lOVkFMSURfU0xSVAkJMHhjMDAwODAyMgorI2RlZmluZSBTTF9FUlJPUl9TTFJU X01JU1NJTkdfRU5UUlkJMHhjMDAwODAyMworI2RlZmluZSBTTF9FUlJPUl9TTFJUX01BUAkJMHhj MDAwODAyNAorCisvKgorICogU2VjdXJlIExhdW5jaCBEZWZpbmVkIExpbWl0cworICovCisjZGVm aW5lIFRYVF9NQVhfQ1BVUwkJNTEyCisjZGVmaW5lIFRYVF9CT09UX1NUQUNLX1NJWkUJMjQKKwor LyoKKyAqIFNlY3VyZSBMYXVuY2ggZXZlbnQgbG9nIGVudHJ5IHR5cGUuIFRoZSBUWFQgc3BlY2lm aWNhdGlvbiBkZWZpbmVzIHRoZQorICogYmFzZSBldmVudCB2YWx1ZSBhcyAweDQwMCBmb3IgRFJU TSB2YWx1ZXMuCisgKi8KKyNkZWZpbmUgVFhUX0VWVFlQRV9CQVNFCQkJMHg0MDAKKyNkZWZpbmUg VFhUX0VWVFlQRV9TTEFVTkNICQkoVFhUX0VWVFlQRV9CQVNFICsgMHgxMDIpCisjZGVmaW5lIFRY VF9FVlRZUEVfU0xBVU5DSF9TVEFSVAkoVFhUX0VWVFlQRV9CQVNFICsgMHgxMDMpCisjZGVmaW5l IFRYVF9FVlRZUEVfU0xBVU5DSF9FTkQJCShUWFRfRVZUWVBFX0JBU0UgKyAweDEwNCkKKworLyoK KyAqIE1lYXN1cmVkIExhdW5jaCBQQ1JzCisgKi8KKyNkZWZpbmUgU0xfREVGX0RMTUVfREVUQUlM X1BDUjE3CTE3CisjZGVmaW5lIFNMX0RFRl9ETE1FX0FVVEhPUklUWV9QQ1IxOAkxOAorI2RlZmlu ZSBTTF9BTFRfRExNRV9BVVRIT1JJVFlfUENSMTkJMTkKKyNkZWZpbmUgU0xfQUxUX0RMTUVfREVU QUlMX1BDUjIwCTIwCisKKy8qCisgKiBNTEUgc2NyYXRjaCBhcmVhIG9mZnNldHMKKyAqLworI2Rl ZmluZSBTTF9TQ1JBVENIX0FQX0VCWAkJMAorI2RlZmluZSBTTF9TQ1JBVENIX0FQX0pNUF9PRkZT RVQJNAorI2RlZmluZSBTTF9TQ1JBVENIX0FQX1BBVVNFCQk4CisKKyNpZm5kZWYgX19BU1NFTUJM WV9fCisKKyNpbmNsdWRlIDxsaW51eC9pby5oPgorI2luY2x1ZGUgPGxpbnV4L3RwbS5oPgorI2lu Y2x1ZGUgPGxpbnV4L3RwbV9ldmVudGxvZy5oPgorCisvKgorICogU2VjdXJlIExhdW5jaCBBUCB3 YWtldXAgaW5mb3JtYXRpb24gZmV0Y2hlZCBpbiBTTVAgYm9vdCBjb2RlLgorICovCitzdHJ1Y3Qg c2xfYXBfd2FrZV9pbmZvIHsKKwl1MzIgYXBfd2FrZV9ibG9jazsKKwl1MzIgYXBfd2FrZV9ibG9j a19zaXplOworCXUzMiBhcF9qbXBfb2Zmc2V0OworfTsKKworLyoKKyAqIFRYVCBoZWFwIGV4dGVu ZGVkIGRhdGEgZWxlbWVudHMuCisgKi8KK3N0cnVjdCB0eHRfaGVhcF9leHRfZGF0YV9lbGVtZW50 IHsKKwl1MzIgdHlwZTsKKwl1MzIgc2l6ZTsKKwkvKiBEYXRhICovCit9IF9fcGFja2VkOworCisj ZGVmaW5lIFRYVF9IRUFQX0VYVERBVEFfVFlQRV9FTkQJCQkwCisKK3N0cnVjdCB0eHRfaGVhcF9l bmRfZWxlbWVudCB7CisJdTMyIHR5cGU7CisJdTMyIHNpemU7Cit9IF9fcGFja2VkOworCisjZGVm aW5lIFRYVF9IRUFQX0VYVERBVEFfVFlQRV9UUE1fRVZFTlRfTE9HX1BUUgkJNQorCitzdHJ1Y3Qg dHh0X2hlYXBfZXZlbnRfbG9nX2VsZW1lbnQgeworCXU2NCBldmVudF9sb2dfcGh5c19hZGRyOwor fSBfX3BhY2tlZDsKKworI2RlZmluZSBUWFRfSEVBUF9FWFREQVRBX1RZUEVfRVZFTlRfTE9HX1BP SU5URVIyXzEJOAorCitzdHJ1Y3QgdHh0X2hlYXBfZXZlbnRfbG9nX3BvaW50ZXIyXzFfZWxlbWVu dCB7CisJdTY0IHBoeXNfYWRkcjsKKwl1MzIgYWxsb2NhdGVkX2V2ZW50X2NvbnRhaW5lcl9zaXpl OworCXUzMiBmaXJzdF9yZWNvcmRfb2Zmc2V0OworCXUzMiBuZXh0X3JlY29yZF9vZmZzZXQ7Cit9 IF9fcGFja2VkOworCisvKgorICogU2VjdXJlIExhdW5jaCBkZWZpbmVkIE9TL01MRSBUWFQgSGVh cCB0YWJsZQorICovCitzdHJ1Y3QgdHh0X29zX21sZV9kYXRhIHsKKwl1MzIgdmVyc2lvbjsKKwl1 MzIgYm9vdF9wYXJhbXNfYWRkcjsKKwl1NjQgc2xydDsKKwl1NjQgdHh0X2luZm87CisJdTMyIGFw X3dha2VfYmxvY2s7CisJdTMyIGFwX3dha2VfYmxvY2tfc2l6ZTsKKwl1OCBtbGVfc2NyYXRjaFs2 NF07Cit9IF9fcGFja2VkOworCisvKgorICogVFhUIHNwZWNpZmljYXRpb24gZGVmaW5lZCBCSU9T IGRhdGEgVFhUIEhlYXAgdGFibGUKKyAqLworc3RydWN0IHR4dF9iaW9zX2RhdGEgeworCXUzMiB2 ZXJzaW9uOyAvKiBDdXJyZW50bHkgNSBmb3IgVFBNIDEuMiBhbmQgNiBmb3IgVFBNIDIuMCAqLwor CXUzMiBiaW9zX3Npbml0X3NpemU7CisJdTY0IHJlc2VydmVkMTsKKwl1NjQgcmVzZXJ2ZWQyOwor CXUzMiBudW1fbG9naWNhbF9wcm9jczsKKwkvKiBWZXJzaW9ucyA+PSA1IHdpdGggdXBkYXRlcyBp biB2ZXJzaW9uIDYgKi8KKwl1MzIgc2luaXRfZmxhZ3M7CisJdTMyIG1sZV9mbGFnczsKKwkvKiBW ZXJzaW9ucyA+PSA0ICovCisJLyogRXh0IERhdGEgRWxlbWVudHMgKi8KK30gX19wYWNrZWQ7CisK Ky8qCisgKiBUWFQgc3BlY2lmaWNhdGlvbiBkZWZpbmVkIE9TL1NJTklUIFRYVCBIZWFwIHRhYmxl CisgKi8KK3N0cnVjdCB0eHRfb3Nfc2luaXRfZGF0YSB7CisJdTMyIHZlcnNpb247IC8qIEN1cnJl bnRseSA2IGZvciBUUE0gMS4yIGFuZCA3IGZvciBUUE0gMi4wICovCisJdTMyIGZsYWdzOworCXU2 NCBtbGVfcHRhYjsKKwl1NjQgbWxlX3NpemU7CisJdTY0IG1sZV9oZHJfYmFzZTsKKwl1NjQgdnRk X3Btcl9sb19iYXNlOworCXU2NCB2dGRfcG1yX2xvX3NpemU7CisJdTY0IHZ0ZF9wbXJfaGlfYmFz ZTsKKwl1NjQgdnRkX3Btcl9oaV9zaXplOworCXU2NCBsY3BfcG9fYmFzZTsKKwl1NjQgbGNwX3Bv X3NpemU7CisJdTMyIGNhcGFiaWxpdGllczsKKwkvKiBWZXJzaW9uID0gNSAqLworCXU2NCBlZmlf cnNkdF9wdHI7CisJLyogVmVyc2lvbnMgPj0gNiAqLworCS8qIEV4dCBEYXRhIEVsZW1lbnRzICov Cit9IF9fcGFja2VkOworCisvKgorICogVFhUIHNwZWNpZmljYXRpb24gZGVmaW5lZCBTSU5JVC9N TEUgVFhUIEhlYXAgdGFibGUKKyAqLworc3RydWN0IHR4dF9zaW5pdF9tbGVfZGF0YSB7CisJdTMy IHZlcnNpb247ICAgICAgICAgICAgIC8qIEN1cnJlbnQgdmFsdWVzIGFyZSA2IHRocm91Z2ggOSAq LworCS8qIFZlcnNpb25zIDw9IDggKi8KKwl1OCBiaW9zX2FjbV9pZFsyMF07CisJdTMyIGVkeF9z ZW50ZXJfZmxhZ3M7CisJdTY0IG1zZWdfdmFsaWQ7CisJdTggc2luaXRfaGFzaFsyMF07CisJdTgg bWxlX2hhc2hbMjBdOworCXU4IHN0bV9oYXNoWzIwXTsKKwl1OCBsY3BfcG9saWN5X2hhc2hbMjBd OworCXUzMiBsY3BfcG9saWN5X2NvbnRyb2w7CisJLyogVmVyc2lvbnMgPj0gNyAqLworCXUzMiBy bHBfd2FrZXVwX2FkZHI7CisJdTMyIHJlc2VydmVkOworCXUzMiBudW1fb2Zfc2luaXRfbWRyczsK Kwl1MzIgc2luaXRfbWRyc190YWJsZV9vZmZzZXQ7CisJdTMyIHNpbml0X3Z0ZF9kbWFyX3RhYmxl X3NpemU7CisJdTMyIHNpbml0X3Z0ZF9kbWFyX3RhYmxlX29mZnNldDsKKwkvKiBWZXJzaW9ucyA+ PSA4ICovCisJdTMyIHByb2Nlc3Nvcl9zY3J0bV9zdGF0dXM7CisJLyogVmVyc2lvbnMgPj0gOSAq LworCS8qIEV4dCBEYXRhIEVsZW1lbnRzICovCit9IF9fcGFja2VkOworCisvKgorICogVFhUIGRh dGEgcmVwb3J0aW5nIHN0cnVjdHVyZSBmb3IgbWVtb3J5IHR5cGVzCisgKi8KK3N0cnVjdCB0eHRf c2luaXRfbWVtb3J5X2Rlc2NyaXB0b3JfcmVjb3JkIHsKKwl1NjQgYWRkcmVzczsKKwl1NjQgbGVu Z3RoOworCXU4IHR5cGU7CisJdTggcmVzZXJ2ZWRbN107Cit9IF9fcGFja2VkOworCisvKgorICog VFhUIGRhdGEgc3RydWN0dXJlIHVzZWQgYnkgYSByZXNwb25zaXZlIGxvY2FsIHByb2Nlc3NvciAo UkxQKSB0byBzdGFydAorICogZXhlY3V0aW9uIGluIHJlc3BvbnNlIHRvIGEgR0VUU0VDW1dBS0VV UF0uCisgKi8KK3N0cnVjdCBzbXhfcmxwX21sZV9qb2luIHsKKwl1MzIgcmxwX2dkdF9saW1pdDsK Kwl1MzIgcmxwX2dkdF9iYXNlOworCXUzMiBybHBfc2VnX3NlbDsgICAgIC8qIGNzIChkcywgZXMs IHNzIGFyZSBzZWdfc2VsKzgpICovCisJdTMyIHJscF9lbnRyeV9wb2ludDsgLyogcGh5cyBhZGRy ICovCit9IF9fcGFja2VkOworCisvKgorICogVFBNIGV2ZW50IGxvZyBzdHJ1Y3R1cmVzIGRlZmlu ZWQgaW4gYm90aCB0aGUgVFhUIHNwZWNpZmljYXRpb24gYW5kCisgKiB0aGUgVENHIGRvY3VtZW50 YXRpb24uCisgKi8KKyNkZWZpbmUgVFBNMTJfRVZUTE9HX1NJR05BVFVSRSAiVFhUIEV2ZW50IENv bnRhaW5lciIKKworc3RydWN0IHRwbTEyX2V2ZW50X2xvZ19oZWFkZXIgeworCWNoYXIgc2lnbmF0 dXJlWzIwXTsKKwljaGFyIHJlc2VydmVkWzEyXTsKKwl1OCBjb250YWluZXJfdmVyX21ham9yOwor CXU4IGNvbnRhaW5lcl92ZXJfbWlub3I7CisJdTggcGNyX2V2ZW50X3Zlcl9tYWpvcjsKKwl1OCBw Y3JfZXZlbnRfdmVyX21pbm9yOworCXUzMiBjb250YWluZXJfc2l6ZTsKKwl1MzIgcGNyX2V2ZW50 c19vZmZzZXQ7CisJdTMyIG5leHRfZXZlbnRfb2Zmc2V0OworCS8qIFBDUkV2ZW50c1tdICovCit9 IF9fcGFja2VkOworCisvKgorICogRnVuY3Rpb25zIHRvIGV4dHJhY3QgZGF0YSBmcm9tIHRoZSBJ bnRlbCBUWFQgSGVhcCBNZW1vcnkuIFRoZSBsYXlvdXQKKyAqIG9mIHRoZSBoZWFwIGlzIGFzIGZv bGxvd3M6CisgKiAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKiAgfCBTaXplIEJp b3MgRGF0YSB0YWJsZSAodTY0KSB8CisgKiAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r CisgKiAgfCBCaW9zIERhdGEgdGFibGUgICAgICAgICAgICB8CisgKiAgKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rCisgKiAgfCBTaXplIE9TIE1MRSB0YWJsZSAodTY0KSAgICB8CisgKiAg Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKiAgfCBPUyBNTEUgdGFibGUgICAgICAg ICAgICAgICB8CisgKiAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSArCisgKiAgfCBTaXpl IE9TIFNJTklUIHRhYmxlICh1NjQpICB8CisgKiAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0rCisgKiAgfCBPUyBTSU5JVCB0YWJsZSAgICAgICAgICAgICB8CisgKiAgKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rCisgKiAgfCBTaXplIFNJTklUIE1MRSB0YWJsZSAodTY0KSB8Cisg KiAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKiAgfCBTSU5JVCBNTEUgdGFibGUg ICAgICAgICAgICB8CisgKiAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgKgorICog IE5PVEU6IHRoZSB0YWJsZSBzaXplIGZpZWxkcyBpbmNsdWRlIHRoZSA4IGJ5dGUgc2l6ZSBmaWVs ZCBpdHNlbGYuCisgKi8KK3N0YXRpYyBpbmxpbmUgdTY0IHR4dF9iaW9zX2RhdGFfc2l6ZSh2b2lk ICpoZWFwKQoreworCXJldHVybiAqKCh1NjQgKiloZWFwKTsKK30KKworc3RhdGljIGlubGluZSB2 b2lkICp0eHRfYmlvc19kYXRhX3N0YXJ0KHZvaWQgKmhlYXApCit7CisJcmV0dXJuIGhlYXAgKyBz aXplb2YodTY0KTsKK30KKworc3RhdGljIGlubGluZSB1NjQgdHh0X29zX21sZV9kYXRhX3NpemUo dm9pZCAqaGVhcCkKK3sKKwlyZXR1cm4gKigodTY0ICopKGhlYXAgKyB0eHRfYmlvc19kYXRhX3Np emUoaGVhcCkpKTsKK30KKworc3RhdGljIGlubGluZSB2b2lkICp0eHRfb3NfbWxlX2RhdGFfc3Rh cnQodm9pZCAqaGVhcCkKK3sKKwlyZXR1cm4gaGVhcCArIHR4dF9iaW9zX2RhdGFfc2l6ZShoZWFw KSArIHNpemVvZih1NjQpOworfQorCitzdGF0aWMgaW5saW5lIHU2NCB0eHRfb3Nfc2luaXRfZGF0 YV9zaXplKHZvaWQgKmhlYXApCit7CisJcmV0dXJuICooKHU2NCAqKShoZWFwICsgdHh0X2Jpb3Nf ZGF0YV9zaXplKGhlYXApICsKKwkJCXR4dF9vc19tbGVfZGF0YV9zaXplKGhlYXApKSk7Cit9CisK K3N0YXRpYyBpbmxpbmUgdm9pZCAqdHh0X29zX3Npbml0X2RhdGFfc3RhcnQodm9pZCAqaGVhcCkK K3sKKwlyZXR1cm4gaGVhcCArIHR4dF9iaW9zX2RhdGFfc2l6ZShoZWFwKSArCisJCXR4dF9vc19t bGVfZGF0YV9zaXplKGhlYXApICsgc2l6ZW9mKHU2NCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTY0 IHR4dF9zaW5pdF9tbGVfZGF0YV9zaXplKHZvaWQgKmhlYXApCit7CisJcmV0dXJuICooKHU2NCAq KShoZWFwICsgdHh0X2Jpb3NfZGF0YV9zaXplKGhlYXApICsKKwkJCXR4dF9vc19tbGVfZGF0YV9z aXplKGhlYXApICsKKwkJCXR4dF9vc19zaW5pdF9kYXRhX3NpemUoaGVhcCkpKTsKK30KKworc3Rh dGljIGlubGluZSB2b2lkICp0eHRfc2luaXRfbWxlX2RhdGFfc3RhcnQodm9pZCAqaGVhcCkKK3sK KwlyZXR1cm4gaGVhcCArIHR4dF9iaW9zX2RhdGFfc2l6ZShoZWFwKSArCisJCXR4dF9vc19tbGVf ZGF0YV9zaXplKGhlYXApICsKKwkJdHh0X29zX3Npbml0X2RhdGFfc2l6ZShoZWFwKSArIHNpemVv Zih1NjQpOworfQorCisvKgorICogVFBNIGV2ZW50IGxvZ2dpbmcgZnVuY3Rpb25zLgorICovCitz dGF0aWMgaW5saW5lIHN0cnVjdCB0eHRfaGVhcF9ldmVudF9sb2dfcG9pbnRlcjJfMV9lbGVtZW50 KgordHBtMjBfZmluZF9sb2cyXzFfZWxlbWVudChzdHJ1Y3QgdHh0X29zX3Npbml0X2RhdGEgKm9z X3Npbml0X2RhdGEpCit7CisJc3RydWN0IHR4dF9oZWFwX2V4dF9kYXRhX2VsZW1lbnQgKmV4dF9l bGVtOworCisJLyogVGhlIGV4dGVuZGVkIGVsZW1lbnQgYXJyYXkgYXMgYXQgdGhlIGVuZCBvZiB0 aGlzIHRhYmxlICovCisJZXh0X2VsZW0gPSAoc3RydWN0IHR4dF9oZWFwX2V4dF9kYXRhX2VsZW1l bnQgKikKKwkJKCh1OCAqKW9zX3Npbml0X2RhdGEgKyBzaXplb2Yoc3RydWN0IHR4dF9vc19zaW5p dF9kYXRhKSk7CisKKwl3aGlsZSAoZXh0X2VsZW0tPnR5cGUgIT0gVFhUX0hFQVBfRVhUREFUQV9U WVBFX0VORCkgeworCQlpZiAoZXh0X2VsZW0tPnR5cGUgPT0KKwkJICAgIFRYVF9IRUFQX0VYVERB VEFfVFlQRV9FVkVOVF9MT0dfUE9JTlRFUjJfMSkgeworCQkJcmV0dXJuIChzdHJ1Y3QgdHh0X2hl YXBfZXZlbnRfbG9nX3BvaW50ZXIyXzFfZWxlbWVudCAqKQorCQkJCSgodTggKilleHRfZWxlbSAr CisJCQkJCXNpemVvZihzdHJ1Y3QgdHh0X2hlYXBfZXh0X2RhdGFfZWxlbWVudCkpOworCQl9CisJ CWV4dF9lbGVtID0KKwkJCShzdHJ1Y3QgdHh0X2hlYXBfZXh0X2RhdGFfZWxlbWVudCAqKQorCQkJ KCh1OCAqKWV4dF9lbGVtICsgZXh0X2VsZW0tPnNpemUpOworCX0KKworCXJldHVybiBOVUxMOwor fQorCitzdGF0aWMgaW5saW5lIGludCB0cG0xMl9sb2dfZXZlbnQodm9pZCAqZXZ0bG9nX2Jhc2Us IHUzMiBldnRsb2dfc2l6ZSwKKwkJCQkgIHUzMiBldmVudF9zaXplLCB2b2lkICpldmVudCkKK3sK KwlzdHJ1Y3QgdHBtMTJfZXZlbnRfbG9nX2hlYWRlciAqZXZ0bG9nID0KKwkJKHN0cnVjdCB0cG0x Ml9ldmVudF9sb2dfaGVhZGVyICopZXZ0bG9nX2Jhc2U7CisKKwlpZiAobWVtY21wKGV2dGxvZy0+ c2lnbmF0dXJlLCBUUE0xMl9FVlRMT0dfU0lHTkFUVVJFLAorCQkgICBzaXplb2YoVFBNMTJfRVZU TE9HX1NJR05BVFVSRSkpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChldnRsb2ctPmNvbnRh aW5lcl9zaXplID4gZXZ0bG9nX3NpemUpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGV2dGxv Zy0+bmV4dF9ldmVudF9vZmZzZXQgKyBldmVudF9zaXplID4gZXZ0bG9nLT5jb250YWluZXJfc2l6 ZSkKKwkJcmV0dXJuIC1FMkJJRzsKKworCW1lbWNweShldnRsb2dfYmFzZSArIGV2dGxvZy0+bmV4 dF9ldmVudF9vZmZzZXQsIGV2ZW50LCBldmVudF9zaXplKTsKKwlldnRsb2ctPm5leHRfZXZlbnRf b2Zmc2V0ICs9IGV2ZW50X3NpemU7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGluZSBp bnQgdHBtMjBfbG9nX2V2ZW50KHN0cnVjdCB0eHRfaGVhcF9ldmVudF9sb2dfcG9pbnRlcjJfMV9l bGVtZW50ICplbGVtLAorCQkJCSAgdm9pZCAqZXZ0bG9nX2Jhc2UsIHUzMiBldnRsb2dfc2l6ZSwK KwkJCQkgIHUzMiBldmVudF9zaXplLCB2b2lkICpldmVudCkKK3sKKwlzdHJ1Y3QgdGNnX3Bjcl9l dmVudCAqaGVhZGVyID0KKwkJKHN0cnVjdCB0Y2dfcGNyX2V2ZW50ICopZXZ0bG9nX2Jhc2U7CisK KwkvKiBIYXMgdG8gYmUgYXQgbGVhc3QgYmlnIGVub3VnaCBmb3IgdGhlIHNpZ25hdHVyZSAqLwor CWlmIChoZWFkZXItPmV2ZW50X3NpemUgPCBzaXplb2YoVENHX1NQRUNJRF9TSUcpKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCWlmIChtZW1jbXAoKHU4ICopaGVhZGVyICsgc2l6ZW9mKHN0cnVjdCB0 Y2dfcGNyX2V2ZW50KSwKKwkJICAgVENHX1NQRUNJRF9TSUcsIHNpemVvZihUQ0dfU1BFQ0lEX1NJ RykpKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChlbGVtLT5hbGxvY2F0ZWRfZXZlbnRfY29u dGFpbmVyX3NpemUgPiBldnRsb2dfc2l6ZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoZWxl bS0+bmV4dF9yZWNvcmRfb2Zmc2V0ICsgZXZlbnRfc2l6ZSA+CisJICAgIGVsZW0tPmFsbG9jYXRl ZF9ldmVudF9jb250YWluZXJfc2l6ZSkKKwkJcmV0dXJuIC1FMkJJRzsKKworCW1lbWNweShldnRs b2dfYmFzZSArIGVsZW0tPm5leHRfcmVjb3JkX29mZnNldCwgZXZlbnQsIGV2ZW50X3NpemUpOwor CWVsZW0tPm5leHRfcmVjb3JkX29mZnNldCArPSBldmVudF9zaXplOworCisJcmV0dXJuIDA7Cit9 CisKKy8qCisgKiBFeHRlcm5hbCBmdW5jdGlvbnMgYXZhbGFpbGFibGUgaW4gbWFpbmxpbmUga2Vy bmVsLgorICovCitleHRlcm4gdm9pZCBzbGF1bmNoX3NldHVwX3R4dCh2b2lkKTsKK2V4dGVybiB1 MzIgc2xhdW5jaF9nZXRfZmxhZ3Modm9pZCk7CitleHRlcm4gc3RydWN0IHNsX2FwX3dha2VfaW5m byAqc2xhdW5jaF9nZXRfYXBfd2FrZV9pbmZvKHZvaWQpOworZXh0ZXJuIHN0cnVjdCBhY3BpX3Rh YmxlX2hlYWRlciAqc2xhdW5jaF9nZXRfZG1hcl90YWJsZShzdHJ1Y3QgYWNwaV90YWJsZV9oZWFk ZXIgKmRtYXIpOworZXh0ZXJuIHZvaWQgX19ub3JldHVybiBzbGF1bmNoX3R4dF9yZXNldCh2b2lk IF9faW9tZW0gKnR4dCwKKwkJCQkJIGNvbnN0IGNoYXIgKm1zZywgdTY0IGVycm9yKTsKK2V4dGVy biB2b2lkIHNsYXVuY2hfZmluYWxpemUoaW50IGRvX3NleGl0KTsKKworI2VuZGlmIC8qICFfX0FT U0VNQkxZICovCisKKyNlbHNlCisKKyNkZWZpbmUgc2xhdW5jaF9zZXR1cF90eHQoKQkJZG8geyB9 IHdoaWxlICgwKQorI2RlZmluZSBzbGF1bmNoX2dldF9mbGFncygpCQkwCisjZGVmaW5lIHNsYXVu Y2hfZ2V0X2RtYXJfdGFibGUoZCkJKGQpCisjZGVmaW5lIHNsYXVuY2hfZmluYWxpemUoZCkJCWRv IHsgfSB3aGlsZSAoMCkKKworI2VuZGlmIC8qICFJU19FTkFCTEVEKENPTkZJR19TRUNVUkVfTEFV TkNIKSAqLworCisjZW5kaWYgLyogX0xJTlVYX1NMQVVOQ0hfSCAqLwotLSAKMS44LjMuMQoKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmtleGVjIG1haWxp bmcgbGlzdAprZXhlY0BsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQu b3JnL21haWxtYW4vbGlzdGluZm8va2V4ZWMK