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 X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B97B2C4320A for ; Wed, 18 Aug 2021 18:25:23 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 941B7610FD for ; Wed, 18 Aug 2021 18:25:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231422AbhHRSZ5 (ORCPT ); Wed, 18 Aug 2021 14:25:57 -0400 Received: from mga03.intel.com ([134.134.136.65]:3387 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229661AbhHRSZz (ORCPT ); Wed, 18 Aug 2021 14:25:55 -0400 X-IronPort-AV: E=McAfee;i="6200,9189,10080"; a="216428313" X-IronPort-AV: E=Sophos;i="5.84,332,1620716400"; d="scan'208";a="216428313" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Aug 2021 11:25:18 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.84,332,1620716400"; d="scan'208";a="681360056" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by fmsmga005.fm.intel.com with ESMTP; 18 Aug 2021 11:25:17 -0700 Received: from orsmsx605.amr.corp.intel.com (10.22.229.18) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.10; Wed, 18 Aug 2021 11:25:17 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx605.amr.corp.intel.com (10.22.229.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Wed, 18 Aug 2021 11:25:17 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.177) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.10; Wed, 18 Aug 2021 11:25:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Q8bVOb+bQIAUeDuheQwhQCY+uiRgnnVuW3ItSRFgcQ8v9kEg21WeX2jcIhhjRJRAlCUpi4V3UVtXGRfeMAPzFIhJSYD7N2iwmygils3sMT5DBoJdhNHV0q0mbtwnKBH0vxdvi96DGm7WhFKxt4VNNye8oxFAmWDaYwjkLjEhVZYXvu5w/zpp7EciNGpzBnrvG3pkJustMZzjVS4/2TqfjLGqNTbq9Xw/BnVyImBXNddhTvUAs5QxhPWRHbRAIhpEHy7nMhEZCqvrJD4vbZq+f/EGMIMN4/4kww64JxaYlrKWNQh8pGacA0xJjwDEVhgL4Mw15SKx4Y6WAo/KJZzrvg== 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-SenderADCheck; bh=ubmTHNwq/vUvJFkOSKoOwmfla2b0/s1h1PHe1PIMOQ8=; b=nDRbw6wT3cDUrIcah52PnheqWmr1tVrnwDoII9tVUGD7DRZyMBnqP4Xt7pWytiBwqknrhzPLc4MXb8gElknZdtHKvHLw+ETrWAv5+v9tBc6Pq6JXMRVeQVJWjo3KQzkq1+Qt0vfLCg8iPuuHZSP6qLDghAhg9IFIrNf1J+uIvyc5jc5HAhfy33luy6Csn21/V26Ach4kLgWgymREGbeiLIN+9kYNO1oWT9QhiQ2jQ+P73e7nJw50H7+pcIY3Cy9ShDynISg3gTMA/W80BRFTm+F/idotcGDFyEatdb5cEeJ/vKx5T8FiMSErXDZPd7wND8jRHlbV0BeoBhMJ6F/mnA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ubmTHNwq/vUvJFkOSKoOwmfla2b0/s1h1PHe1PIMOQ8=; b=WbVTtDoPsdgYwBVQ9u+9tgPYqqbtQfj79K5PR64Ezdudm3X3sj423sKzlCJ+6T1kQqd6IIURyKOkMPQB7TvoethDiaa/MDAy/TBkFKrNdfZkCFD9JE3S08cKiCmgGpWZFSMMdHmfzUmcfl0+qnH3bncet4Nl/GuZtF9w6lTE0Ok= Received: from BYAPR11MB3752.namprd11.prod.outlook.com (2603:10b6:a03:fc::17) by BYAPR11MB2854.namprd11.prod.outlook.com (2603:10b6:a02:c9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.19; Wed, 18 Aug 2021 18:25:15 +0000 Received: from BYAPR11MB3752.namprd11.prod.outlook.com ([fe80::5ea:d57d:f0d:f89]) by BYAPR11MB3752.namprd11.prod.outlook.com ([fe80::5ea:d57d:f0d:f89%4]) with mapi id 15.20.4436.019; Wed, 18 Aug 2021 18:25:15 +0000 From: "K Naduvalath, Sumesh" To: Hans de Goede , "mgross@linux.intel.com" , "srinivas.pandruvada@linux.intel.com" CC: "Pandruvada, Srinivas" , "platform-driver-x86@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "Chinnu, Ganapathi" , "Kumar, Nachiketa" Subject: RE: [RESEND PATCH v2 1/1] ishtp: Add support for Intel ishtp eclite driver Thread-Topic: [RESEND PATCH v2 1/1] ishtp: Add support for Intel ishtp eclite driver Thread-Index: AQHXhVuoaRF8Qz2iLE20pS4JqU2WUKtq7WWAgA6+IfA= Date: Wed, 18 Aug 2021 18:25:14 +0000 Message-ID: References: <20210730155801.15513-1-sumesh.k.naduvalath@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 602c6b28-4773-4a77-9260-08d96275861f x-ms-traffictypediagnostic: BYAPR11MB2854: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: czFdJJd83G+0RSBXDObntwqLMwJbEkrtR1U/WLQ1oRnlMoOOJ3ZectLJNzuJl6vCtn/s4ylLJg5iGCti2DP+ht6cJy7QsTmhpp4vp2oaAiLmDaNSxoRNEcZQBpjSvtPccN5ZKbvuSzxJ37NoFcOeRrEznYal3MvVrTYcMEmouTAikvt3oKL/1y8r1q8GdzLhTcu/3v7TQkI1h9wtm2zL0ihlqonEMA0jxE6fpOFDO+PzdgQyIMXXDk7T//l5IKsmcK4gh3oLMLd4ZZPa+//U2IRW5nwcOUgb6X3lhihNtZrMadN46GbqOXGu5GJ4aKojKeJpj4jXae0rYGMBC1mRSO96qd2U2KPdyCgQiFRXWll1iMeIEEmjLz4P6IlU+z3A4UCsVLWoioG0fBdIvR0RLi5nueLSrBiM5p7FVu/fL8s0nCFuCDtKvQHfbvLITZhJ5D9grGenszv8EIEBGiWCKzRAz9kbWO9HjtfIMx2bcnUEAzSbAvLAq8YeQmjiTdtcKhHmoZa1VYEuBUbAZwex1u4dgn8B4cJ4I89zw6VA3kd8QhpfwbLMNOhgYnsS8tN7GkXoKry0bQT3qM1k6pdIsXT9SgMQnkb0BUHIOgHBQOF6OinCzQBxdA2UZvmWok0BxrWO2XeQKsn/poVQ799Vc5+8dGrBffEbD/2u/Fl4LcH54EsCTsTB2LIZwP5pkDHtNlOnGHQrKeuO8JVuvzNKIQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR11MB3752.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(122000001)(55236004)(9686003)(316002)(5660300002)(8676002)(38070700005)(55016002)(8936002)(110136005)(66476007)(33656002)(7696005)(71200400001)(52536014)(66556008)(38100700002)(64756008)(66446008)(30864003)(53546011)(76116006)(26005)(6506007)(4326008)(186003)(66946007)(83380400001)(508600001)(2906002)(54906003)(86362001)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?c0JoeC9WcitLbFhMMHE2Q1Y5OVBOa2EvRThXQk9oUzh4eEdUck1PSHVzY253?= =?utf-8?B?c2RVTTNVVFBIeVZJOXUvNnNIc1M0ZXVKakZYUmVWWlh3d3p6UUtjNEMwM2Ju?= =?utf-8?B?a1RlTjRlSXVsN1NhSEZyOUdiVjFzZ1VQN3cza2U5V2xOZ3Mvd3FucVA4UHly?= =?utf-8?B?WEJ2QzI4SVZveUJuS3YxRythQ3VtU3AyWVA2K215bUZNU2hUNkl3TzJVUXdK?= =?utf-8?B?R0lMbFlxSkdMUWFxZlJ1NE00dS9jS1RWMHgwTkFLcWdWU1RHQU9OUlcvc3Mw?= =?utf-8?B?TFBDQmc5UlNEb2dWZnA4Y3puK25kUi9LUHJWZ0s2TGVkK1kyMFRiTGlZaDlS?= =?utf-8?B?ckI1OVplcTJ3MVMyalUraTZJNlZTVVIvRDQwWGIvUmd2eUhjRXg1aStWaTU5?= =?utf-8?B?VG1FN3VQK2hGclZ6Qmt2aVF3MXp4WHBVRllRWVRMSzgyd0ovMHhCMkF2Vi9Z?= =?utf-8?B?R1dKRjhKT1hyZmFIdFlsM1R5c3NEMjF1czIwUk8rS2ZFN0pBTkVKTjNmdEhu?= =?utf-8?B?eGs3TU5wbzg2SC93V0lRN1pXeElBa2VHczQ3dUdUSE91OUpNcDdBcVRESkN3?= =?utf-8?B?cTNyekR3ajhyZHhNYUpjb3phbkQ3S1A3czBVUlJQZmkvaHFjTUZBZlNocWsz?= =?utf-8?B?KytHY201ZVFkTnY4ZWVwV2lUM216Y0lBQndWRE1kNzFkSnBCVGRZckxkY0dh?= =?utf-8?B?bU1RV2hCZkxRMEsxcklNSkpIMUFCRXJzU21MOU94S05sQ2E3RTRBQi9QQjRU?= =?utf-8?B?TVl6R083QkgvSUtmem16V21xRnQ1N0xjTWZXdmVVSUpXeGFaMXBWOUN4aUVR?= =?utf-8?B?YjQ3emViUGNFcTJaajQ0K2JVbEU3NWd6MW1CRStiK2dCZTZZaCtJYXNIWFRL?= =?utf-8?B?MHI1OWxxU281bGoxcDNGcXFDeW5aQmJlY3UwV29adHBmT2xjUWVXdzlDeG1s?= =?utf-8?B?S2NxZzRXb1BYL29vUEtlTEZyN0R2aWMxdlFLNnVKcGFkQTVRY0ZMdHFlRktV?= =?utf-8?B?dGovUjJTRkpidlZyWjlheWd1S0dCMExiRjdMZ0hKOWRYQjhVdC9IVy9XVG16?= =?utf-8?B?WnRGT2ZXMGl6aUJKdlNlbWZ4blE1TDRiQWF1Z2w4S0VzTy9ablZJRDNjbXpk?= =?utf-8?B?bkdPY2pWYnMwaDR3dWdYOTZ2VTlQUXV4SFBBR3RTeG44ZG9PRTBERlFxWDRT?= =?utf-8?B?dGNHN0IydEQ1Nm5neFBIYy9HVHd4YUJSSVBXMXkwaWJKam1Nb3c1RTUxUEY5?= =?utf-8?B?OEJIMldVdjcrMGFja3RPcXhGa2pGWC9RL0hFbzJOOTRsc0s2YlpEc2I2RHND?= =?utf-8?B?M1pPRXBLR1RFZ0ZVVUc5NkYrbWFQMWFyT1RkRjVUTDBZZmNuaEc0TlNEUWwy?= =?utf-8?B?d3VEV3BWbUkzYjBVdHJUYU1MR21Zc3hHZXVuSU1RaWo3eHRJSkZFd1c5STRo?= =?utf-8?B?K2ljTDdIb3REWFI0RjN4bjZCZ2ZHSXFkT3RnczFjMG9FWmFzdHlFRnBQQjcv?= =?utf-8?B?TWpWRXhYd0VHQ0tlQ3dZK3h1SUkzVEV5LzIvWkNaNlZCVi9MdE9aT1R2WnNn?= =?utf-8?B?YmRGRGxEeFhlV2d5c2RhQ0pWMXhUb24rbHRBNlhrM0tuN1JOK1hXcnh2QTVt?= =?utf-8?B?Y3l5M0RnMDBKUXpXN1lQeUU1dW1ETVdFYUtZL2xnbmtSemJFTWx1b2hlT1ND?= =?utf-8?B?NTJHL0JhVjU5VitxYWozM2JkSUlIRENLTlFpbWpQRWZwdmJ6VUk1a0tNMzZ6?= =?utf-8?Q?OLcNZ4upYZYWVV5waavdNQhdWkke5lHcwao5qEM?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB3752.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 602c6b28-4773-4a77-9260-08d96275861f X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Aug 2021 18:25:14.9558 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: v+n56jC9G8FXoSRODUsnlN9rlKr8HElwNvhi5cyUtNINxjrPLgC5Qh0k1MTZkaMQpT+fdhMPTKbFX1edLFX4PF8tD5OkdBZ96NVV3Og0N4M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB2854 X-OriginatorOrg: intel.com Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org VGhhbmsgeW91IEhhbnMgZm9yIHlvdXIgcmV2aWV3IGNvbW1lbnRzLCBhbmQgbXkgYXBvbG9naWVz IGZvciB0aGUgZGVsYXllZCByZXNwb25zZS4NClBsZWFzZSBmaW5kIG15IHJlcGx5IGlubGluZSAt DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSGFucyBkZSBHb2VkZSA8 aGRlZ29lZGVAcmVkaGF0LmNvbT4NCj4gU2VudDogTW9uZGF5LCBBdWd1c3QgOSwgMjAyMSAyOjI0 IFBNDQo+IFRvOiBLIE5hZHV2YWxhdGgsIFN1bWVzaCA8c3VtZXNoLmsubmFkdXZhbGF0aEBpbnRl bC5jb20+Ow0KPiBtZ3Jvc3NAbGludXguaW50ZWwuY29tOyBzcmluaXZhcy5wYW5kcnV2YWRhQGxp bnV4LmludGVsLmNvbQ0KPiBDYzogUGFuZHJ1dmFkYSwgU3Jpbml2YXMgPHNyaW5pdmFzLnBhbmRy dXZhZGFAaW50ZWwuY29tPjsgcGxhdGZvcm0tZHJpdmVyLQ0KPiB4ODZAdmdlci5rZXJuZWwub3Jn OyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnOyBDaGlubnUsIEdhbmFwYXRoaQ0KPiA8Z2Fu YXBhdGhpLmNoaW5udUBpbnRlbC5jb20+OyBLdW1hciwgTmFjaGlrZXRhDQo+IDxuYWNoaWtldGEu a3VtYXJAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW1JFU0VORCBQQVRDSCB2MiAxLzFdIGlz aHRwOiBBZGQgc3VwcG9ydCBmb3IgSW50ZWwgaXNodHAgZWNsaXRlDQo+IGRyaXZlcg0KPiANCj4g SGksDQo+IA0KPiBUaGFuayB5b3UgZm9yIHRoZSBuZXcgdmVyc2lvbi4gVGhpcyBtb3N0bHkgbG9v a3MgZ29vZCwgc29tZSBzbWFsbCByZW1hcmtzDQo+IGJlbG93IC8gaW5saW5lIDoNCj4gDQo+IE9u IDcvMzAvMjEgNTo1OCBQTSwgc3VtZXNoLmsubmFkdXZhbGF0aEBpbnRlbC5jb20gd3JvdGU6DQo+ ID4gRnJvbTogIksgTmFkdXZhbGF0aCwgU3VtZXNoIiA8c3VtZXNoLmsubmFkdXZhbGF0aEBpbnRl bC5jb20+DQo+ID4NCj4gPiBUaGlzIGRyaXZlciBpcyBmb3IgYWNjZXNzaW5nIHRoZSBQU0UgKFBy b2dyYW1tYWJsZSBTZXJ2aWNlIEVuZ2luZSksIGFuDQo+ID4gRW1iZWRkZWQgQ29udHJvbGxlciBs aWtlIElQLCB1c2luZyBJU0hUUCAoSW50ZWdyYXRkIFNlbnNvciBIdWINCj4gPiBUcmFuc3BvcnQN Cj4gPiBQcm90b2NvbCkgdG8gZ2V0IGJhdHRlcnksIHRoZXJtYWwgYW5kIFVDU0kgKFVTQiBUeXBl LUMgQ29ubmVjdG9yDQo+ID4gU3lzdGVtIFNvZnR3YXJlIEludGVyZmFjZSkgcmVsYXRlZCBkYXRh IGZyb20gdGhlIHBsYXRmb3JtLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogSyBOYWR1dmFsYXRo LCBTdW1lc2ggPHN1bWVzaC5rLm5hZHV2YWxhdGhAaW50ZWwuY29tPg0KPiA+IFJldmlld2VkLWJ5 OiBNYXJrIEdyb3NzIDxtZ3Jvc3NAbGludXguaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+IENoYW5n ZXM6DQo+ID4NCj4gPiB2MjoNCj4gPiAtRGVjb3VwbGVkIEFDUEkgZGV2aWNlIHNlYXJjaCB3aXRo IGFjcGlfZmluZF9kZXZpY2UoKSBhbmQgY2FjaGUgYWRldg0KPiA+IC1PcHJlZ2lvbiBjb250ZXh0 IGlzIHByb3RlY3RlZCB3aXRoIGxvY2sgZm9yIGJvdGggY21kIGFuZCBkYXRhDQo+ID4gaGFuZGxl cnMgLU9wcmVnaW9uIGxlbmd0aCBjaGVjayBhZGRlZCBpbiB2YXJpb3VzIGZ1bmN0aW9ucw0KPiA+ IC1pc2h0cF9nZXRfZGV2aWNlIGFuZCBpc2h0cF9wdXRfZGV2aWNlIGFyZSByZW1vdmVkDQo+ID4g LWFjcGlfd2Fsa19kZXBfZGV2aWNlX2xpc3QoKSBjaGFuZ2VkIHRvIGFjcGlfZGV2X2NsZWFyX2Rl cGVuZGVuY2llcygpDQo+ID4gLUtjb25maWcgdGV4dCwgY29zbWV0aWMgYW5kIG1pbm9yIGNvcnJl Y3Rpb25zDQo+ID4NCj4gPiB2MToNCj4gPiAtSW5pdGlhbCBWZXJzaW9uDQo+ID4NCj4gPiAgTUFJ TlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKw0KPiA+ICBkcml2 ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnICAgICAgICAgICAgICB8ICAxNiArDQo+ID4gIGRyaXZl cnMvcGxhdGZvcm0veDg2L01ha2VmaWxlICAgICAgICAgICAgIHwgICAxICsNCj4gPiAgZHJpdmVy cy9wbGF0Zm9ybS94ODYvaW50ZWxfaXNodHBfZWNsaXRlLmMgfCA2OTkNCj4gPiArKysrKysrKysr KysrKysrKysrKysrDQo+ID4gIDQgZmlsZXMgY2hhbmdlZCwgNzIyIGluc2VydGlvbnMoKykNCj4g PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsX2lzaHRwX2Vj bGl0ZS5jDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvTUFJTlRBSU5FUlMgYi9NQUlOVEFJTkVSUyBp bmRleA0KPiA+IGE2MWY0ZjNiNzhhOS4uYmIyYjViZTNjNzQ1IDEwMDY0NA0KPiA+IC0tLSBhL01B SU5UQUlORVJTDQo+ID4gKysrIGIvTUFJTlRBSU5FUlMNCj4gPiBAQCAtOTM5MSw2ICs5MzkxLDEy IEBAIEw6CWxpbnV4LWNyeXB0b0B2Z2VyLmtlcm5lbC5vcmcNCj4gPiAgUzoJTWFpbnRhaW5lZA0K PiA+ICBGOglkcml2ZXJzL2NyeXB0by9peHA0eHhfY3J5cHRvLmMNCj4gPg0KPiA+ICtJTlRFTCBJ U0hUUCBFQ0xJVEUgRFJJVkVSDQo+ID4gK006CVN1bWVzaCBLIE5hZHV2YWxhdGggPHN1bWVzaC5r Lm5hZHV2YWxhdGhAaW50ZWwuY29tPg0KPiA+ICtMOglwbGF0Zm9ybS1kcml2ZXIteDg2QHZnZXIu a2VybmVsLm9yZw0KPiA+ICtTOglTdXBwb3J0ZWQNCj4gPiArRjoJZHJpdmVycy9wbGF0Zm9ybS94 ODYvaW50ZWxfaXNodHBfZWNsaXRlLmMNCj4gPiArDQo+ID4gIElOVEVMIElYUDRYWCBRTUdSLCBO UEUsIEVUSEVSTkVUIGFuZCBIU1MgU1VQUE9SVA0KPiA+ICBNOglLcnp5c3p0b2YgSGFsYXNhIDxr aGFsYXNhQHBpYXAucGw+DQo+ID4gIFM6CU1haW50YWluZWQNCj4gPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9wbGF0Zm9ybS94ODYvS2NvbmZpZw0KPiA+IGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvS2Nv bmZpZyBpbmRleCA3ZDM4NWMzYjIyMzkuLmVlNWZlNWU1MjAzMw0KPiAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9LY29uZmlnDQo+ID4gKysrIGIvZHJpdmVycy9wbGF0Zm9y bS94ODYvS2NvbmZpZw0KPiA+IEBAIC0xMTczLDYgKzExNzMsMjIgQEAgY29uZmlnIElOVEVMX0NI VERDX1RJX1BXUkJUTg0KPiA+ICAJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxl LCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlDQo+ID4gIAkgIHdpbGwgYmUgY2FsbGVkIGludGVs X2NodGRjX3RpX3B3cmJ0bi4NCj4gPg0KPiA+ICtjb25maWcgSU5URUxfSVNIVFBfRUNMSVRFDQo+ ID4gKwl0cmlzdGF0ZSAiSW50ZWwgSVNIVFAgZWNsaXRlIGNvbnRyb2xsZXIiDQo+ID4gKwlkZXBl bmRzIG9uIElOVEVMX0lTSF9ISUQNCj4gPiArCWRlcGVuZHMgb24gQUNQSQ0KPiA+ICsJaGVscA0K PiA+ICsJICBUaGlzIGRyaXZlciBpcyBmb3IgYWNjZXNzaW5nIHRoZSBQU0UgKFByb2dyYW1tYWJs ZSBTZXJ2aWNlIEVuZ2luZSksDQo+ID4gKwkgIGFuIEVtYmVkZGVkIENvbnRyb2xsZXIgbGlrZSBJ UCwgdXNpbmcgSVNIVFAgKEludGVncmF0ZWQgU2Vuc29yIEh1Yg0KPiA+ICsJICBUcmFuc3BvcnQg UHJvdG9jb2wpIHRvIGdldCBiYXR0ZXJ5LCB0aGVybWFsIGFuZCBVQ1NJIChVU0IgVHlwZS1DDQo+ ID4gKyAgICAgICAgICBDb25uZWN0b3IgU3lzdGVtIFNvZnR3YXJlIEludGVyZmFjZSkgcmVsYXRl ZCBkYXRhIGZyb20gdGhlDQo+IHBsYXRmb3JtLg0KPiA+ICsJICBVc2VycyB3aG8gZG9uJ3Qgd2Fu dCB0byB1c2UgZGlzY3JldGUgRW1iZWRkZWQgQ29udHJvbGxlciBvbg0KPiBJbnRlbCdzDQo+ID4g KwkgIEVsa2hhcnRsYWtlIHBsYXRmb3JtLCBjYW4gbGV2ZXJhZ2UgdGhpcyBpbnRlZ3JhdGVkIHNv bHV0aW9uIG9mDQo+ID4gKwkgIEVDTGl0ZSB3aGljaCBpcyBwYXJ0IG9mIFBTRSBzdWJzeXN0ZW0u DQo+ID4gKw0KPiA+ICsJICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9v c2UgTSBoZXJlOiB0aGUgbW9kdWxlDQo+ID4gKwkgIHdpbGwgYmUgY2FsbGVkIGludGVsX2lzaHRw X2VjbGl0ZQ0KPiA+ICsNCj4gPiAgY29uZmlnIElOVEVMX01SRkxEX1BXUkJUTg0KPiA+ICAJdHJp c3RhdGUgIkludGVsIE1lcnJpZmllbGQgQmFzaW4gQ292ZSBwb3dlciBidXR0b24gZHJpdmVyIg0K PiA+ICAJZGVwZW5kcyBvbiBJTlRFTF9TT0NfUE1JQ19NUkZMRA0KPiA+IGRpZmYgLS1naXQgYS9k cml2ZXJzL3BsYXRmb3JtL3g4Ni9NYWtlZmlsZQ0KPiA+IGIvZHJpdmVycy9wbGF0Zm9ybS94ODYv TWFrZWZpbGUgaW5kZXggN2VlMzY5YWFiMTBkLi41NjhjOWM3ZDQxNzMNCj4gPiAxMDA2NDQNCj4g PiAtLS0gYS9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9NYWtlZmlsZQ0KPiA+ICsrKyBiL2RyaXZlcnMv cGxhdGZvcm0veDg2L01ha2VmaWxlDQo+ID4gQEAgLTc1LDYgKzc1LDcgQEAgb2JqLSQoQ09ORklH X0lOVEVMX0lOVDAwMDJfVkdQSU8pCSs9DQo+IGludGVsX2ludDAwMDJfdmdwaW8ubw0KPiA+ICBv YmotJChDT05GSUdfSU5URUxfTUVOTE9XKQkJKz0gaW50ZWxfbWVubG93Lm8NCj4gPiAgb2JqLSQo Q09ORklHX0lOVEVMX09BS1RSQUlMKQkJKz0gaW50ZWxfb2FrdHJhaWwubw0KPiA+ICBvYmotJChD T05GSUdfSU5URUxfVkJUTikJCSs9IGludGVsLXZidG4ubw0KPiA+ICtvYmotJChDT05GSUdfSU5U RUxfSVNIVFBfRUNMSVRFKQkrPSBpbnRlbF9pc2h0cF9lY2xpdGUubw0KPiA+DQo+ID4gICMgTVNJ DQo+ID4gIG9iai0kKENPTkZJR19NU0lfTEFQVE9QKQkrPSBtc2ktbGFwdG9wLm8NCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWxfaXNodHBfZWNsaXRlLmMNCj4gPiBi L2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsX2lzaHRwX2VjbGl0ZS5jDQo+ID4gbmV3IGZpbGUg bW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLmQ1NjExYjFhMTNkZg0KPiA+IC0t LSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbF9pc2h0cF9l Y2xpdGUuYw0KPiA+IEBAIC0wLDAgKzEsNjk5IEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4gPiArLyoNCj4gPiArICogSW50ZWwgRUNMaXRlIG9wcmVn aW9uIGRyaXZlciBmb3IgdGFsa2luZyB0byBFQ0xpdGUgZmlybXdhcmUNCj4gPiArcnVubmluZyBv bg0KPiA+ICsgKiBJbnRlbCBJbnRlZ3JhdGVkIFNlbnNvciBIdWIgKElTSCkgdXNpbmcgSVNIIFRy YW5zcG9ydCBQcm90b2NvbA0KPiA+ICsoSVNIVFApDQo+ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdo dCAoYykgMjAyMSwgSW50ZWwgQ29ycG9yYXRpb24uDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L2FjcGkuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPg0KPiA+ ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9lcnJuby5o Pg0KPiA+ICsjaW5jbHVkZSA8bGludXgvaW50ZWwtaXNoLWNsaWVudC1pZi5oPiAjaW5jbHVkZSA8 bGludXgva2VybmVsLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4gI2luY2x1ZGUg PGxpbnV4L211dGV4Lmg+ICNpbmNsdWRlDQo+ID4gKzxsaW51eC9zbGFiLmg+ICNpbmNsdWRlIDxs aW51eC9zdXNwZW5kLmg+ICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0KPiA+ICsjaW5jbHVkZSA8 bGludXgvdXVpZC5oPiAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPg0KPiA+ICsNCj4gPiArI2Rl ZmluZSBFQ0xJVEVfREFUQV9PUFJFR0lPTl9JRAkweDlFDQo+ID4gKyNkZWZpbmUgRUNMSVRFX0NN RF9PUFJFR0lPTl9JRAkweDlGDQo+ID4gKw0KPiA+ICsjZGVmaW5lIEVDTF9NU0dfREFUQQkweDEN Cj4gPiArI2RlZmluZSBFQ0xfTVNHX0VWRU5UCTB4Mg0KPiA+ICsNCj4gPiArI2RlZmluZSBFQ0xf SVNIX1JFQUQJMHgxDQo+ID4gKyNkZWZpbmUgRUNMX0lTSF9XUklURQkweDINCj4gPiArI2RlZmlu ZSBFQ0xfSVNIX0hFQURFUl9WRVJTSU9OCTANCj4gPiArDQo+ID4gKyNkZWZpbmUgRUNMX0NMX1JY X1JJTkdfU0laRQkxNg0KPiA+ICsjZGVmaW5lIEVDTF9DTF9UWF9SSU5HX1NJWkUJOA0KPiA+ICsN Cj4gPiArI2RlZmluZSBFQ0xfREFUQV9PUFJfQlVGTEVOCTM4NA0KPiA+ICsjZGVmaW5lIEVDTF9F VkVOVFNfTk9USUZZCTMzMw0KPiA+ICsNCj4gPiArI2RlZmluZSBjbWRfb3ByX29mZnNldG9mKGVs ZW1lbnQpCW9mZnNldG9mKHN0cnVjdCBvcHJlZ2lvbl9jbWQsDQo+IGVsZW1lbnQpDQo+ID4gKyNk ZWZpbmUgY2xfZGF0YV90b19kZXYob3ByX2RldikJaXNodHBfZGV2aWNlKChvcHJfZGV2KS0+Y2xf ZGV2aWNlKQ0KPiA+ICsNCj4gPiArI2lmbmRlZiBCSVRTX1RPX0JZVEVTDQo+ID4gKyNkZWZpbmUg QklUU19UT19CWVRFUyh4KSAoKHgpIC8gOCkNCj4gPiArI2VuZGlmDQo+ID4gKw0KPiA+ICtzdHJ1 Y3Qgb3ByZWdpb25fY21kIHsNCj4gPiArCXVuc2lnbmVkIGludCBjb21tYW5kOw0KPiA+ICsJdW5z aWduZWQgaW50IG9mZnNldDsNCj4gPiArCXVuc2lnbmVkIGludCBsZW5ndGg7DQo+ID4gKwl1bnNp Z25lZCBpbnQgZXZlbnRfaWQ7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3Qgb3ByZWdpb25f ZGF0YSB7DQo+ID4gKwljaGFyIGRhdGFbRUNMX0RBVEFfT1BSX0JVRkxFTl07DQo+ID4gK307DQo+ ID4gKw0KPiA+ICtzdHJ1Y3Qgb3ByZWdpb25fY29udGV4dCB7DQo+ID4gKwlzdHJ1Y3Qgb3ByZWdp b25fY21kIGNtZF9hcmVhOw0KPiA+ICsJc3RydWN0IG9wcmVnaW9uX2RhdGEgZGF0YV9hcmVhOw0K PiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RydWN0IGVjbF9tZXNzYWdlX2hlYWRlciB7DQo+ID4gKwl1 bnNpZ25lZCBpbnQgdmVyc2lvbjoyOw0KPiA+ICsJdW5zaWduZWQgaW50IGRhdGFfdHlwZToyOw0K PiA+ICsJdW5zaWduZWQgaW50IHJlcXVlc3RfdHlwZToyOw0KPiA+ICsJdW5zaWduZWQgaW50IG9m ZnNldDo5Ow0KPiA+ICsJdW5zaWduZWQgaW50IGRhdGFfbGVuOjk7DQo+ID4gKwl1bnNpZ25lZCBp bnQgZXZlbnQ6ODsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBlY2xfbWVzc2FnZSB7DQo+ ID4gKwlzdHJ1Y3QgZWNsX21lc3NhZ2VfaGVhZGVyIGhlYWRlcjsNCj4gPiArCWNoYXIgcGF5bG9h ZFtFQ0xfREFUQV9PUFJfQlVGTEVOXTsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVjdCBpc2h0 cF9vcHJlZ2lvbl9kZXYgew0KPiA+ICsJc3RydWN0IG9wcmVnaW9uX2NvbnRleHQgb3ByX2NvbnRl eHQ7DQo+ID4gKwlzdHJ1Y3QgaXNodHBfY2wgKmVjbF9pc2h0cF9jbDsNCj4gPiArCXN0cnVjdCBp c2h0cF9jbF9kZXZpY2UgKmNsX2RldmljZTsNCj4gPiArCXN0cnVjdCBpc2h0cF9md19jbGllbnQg KmZ3X2NsaWVudDsNCj4gPiArCXN0cnVjdCBpc2h0cF9jbF9yYiAqcmI7DQo+ID4gKwlzdHJ1Y3Qg YWNwaV9kZXZpY2UgKmFkZXY7DQo+ID4gKwl1bnNpZ25lZCBpbnQgZHNtX2V2ZW50X2lkOw0KPiA+ ICsJdW5zaWduZWQgaW50IGlzaF9saW5rX3JlYWR5Ow0KPiA+ICsJdW5zaWduZWQgaW50IGlzaF9y ZWFkX2RvbmU7DQo+ID4gKwl1bnNpZ25lZCBpbnQgYWNwaV9pbml0X2RvbmU7DQo+ID4gKwl3YWl0 X3F1ZXVlX2hlYWRfdCByZWFkX3dhaXQ7DQo+ID4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZXZlbnRf d29yazsNCj4gPiArCXN0cnVjdCB3b3JrX3N0cnVjdCByZXNldF93b3JrOw0KPiA+ICsJLyogbG9j ayBmb3Igb3ByZWdpb24gY29udGV4dCAqLw0KPiA+ICsJc3RydWN0IG11dGV4IGxvY2s7DQo+ID4g Kw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArLyogZWNsaXRlIGlzaHRwIGNsaWVudCBVVUlEOiA2YTE5 Y2M0Yi1kNzYwLTRkZTMtYjE0ZC1mMjVlYmQwZmJjZDkgKi8NCj4gPiArc3RhdGljIGNvbnN0IGd1 aWRfdCBlY2xfaXNodHBfZ3VpZCA9DQo+ID4gKwlHVUlEX0lOSVQoMHg2YTE5Y2M0YiwgMHhkNzYw LCAweDRkZTMsDQo+ID4gKwkJICAweGIxLCAweDRkLCAweGYyLCAweDVlLCAweGJkLCAweGYsIDB4 YmMsIDB4ZDkpOw0KPiA+ICsNCj4gPiArLyogQUNQSSBEU00gVVVJRDogOTFkOTM2YTctMWYwMS00 OWM2LWE2YjQtNzJmMDBhZDhkOGE1ICovIHN0YXRpYw0KPiA+ICtjb25zdCBndWlkX3QgZWNsX2Fj cGlfZ3VpZCA9DQo+ID4gKwlHVUlEX0lOSVQoMHg5MWQ5MzZhNywgMHgxZjAxLCAweDQ5YzYsIDB4 YTYsDQo+ID4gKwkJICAweGI0LCAweDcyLCAweGYwLCAweDBhLCAweGQ4LCAweGQ4LCAweGE1KTsN Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBlY2xfaXNoX2NsX3JlYWQoKSAtIFJlYWQgZGF0YSBm cm9tIGVjbGl0ZSBGVw0KPiA+ICsgKg0KPiA+ICsgKiBAb3ByX2RldjogIHBvaW50ZXIgdG8gb3By ZWdpb24gZGV2aWNlDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gaXNzdWVzIGEgcmVh ZCByZXF1ZXN0IHRvIGVjbGl0ZSBGVyBhbmQgd2FpdHMgdW50aWwNCj4gPiAraXQNCj4gPiArICog cmVjZWl2ZXMgYSByZXNwb25zZS4gV2hlbiByZXNwb25zZSBpcyByZWNlaXZlZCB0aGUgcmVhZCBk YXRhIGlzDQo+ID4gK2NvcGllZCB0bw0KPiA+ICsgKiBvcHJlZ2lvbiBidWZmZXIuDQo+ID4gKyAq Lw0KPiA+ICtzdGF0aWMgaW50IGVjbF9pc2hfY2xfcmVhZChzdHJ1Y3QgaXNodHBfb3ByZWdpb25f ZGV2ICpvcHJfZGV2KSB7DQo+ID4gKwlzdHJ1Y3QgZWNsX21lc3NhZ2VfaGVhZGVyIGhlYWRlcjsN Cj4gPiArCWludCBsZW4sIHJ2Ow0KPiA+ICsNCj4gPiArCWlmICghb3ByX2Rldi0+aXNoX2xpbmtf cmVhZHkpDQo+ID4gKwkJcmV0dXJuIC1FSU87DQo+ID4gKw0KPiA+ICsJaWYgKChvcHJfZGV2LT5v cHJfY29udGV4dC5jbWRfYXJlYS5vZmZzZXQgKw0KPiA+ICsJICAgICBvcHJfZGV2LT5vcHJfY29u dGV4dC5jbWRfYXJlYS5sZW5ndGgpID4NCj4gRUNMX0RBVEFfT1BSX0JVRkxFTikgew0KPiA+ICsJ CXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWhlYWRlci52ZXJzaW9uID0g RUNMX0lTSF9IRUFERVJfVkVSU0lPTjsNCj4gPiArCWhlYWRlci5kYXRhX3R5cGUgPSBFQ0xfTVNH X0RBVEE7DQo+ID4gKwloZWFkZXIucmVxdWVzdF90eXBlID0gRUNMX0lTSF9SRUFEOw0KPiA+ICsJ aGVhZGVyLm9mZnNldCA9IG9wcl9kZXYtPm9wcl9jb250ZXh0LmNtZF9hcmVhLm9mZnNldDsNCj4g PiArCWhlYWRlci5kYXRhX2xlbiA9IG9wcl9kZXYtPm9wcl9jb250ZXh0LmNtZF9hcmVhLmxlbmd0 aDsNCj4gPiArCWhlYWRlci5ldmVudCA9IG9wcl9kZXYtPm9wcl9jb250ZXh0LmNtZF9hcmVhLmV2 ZW50X2lkOw0KPiA+ICsJbGVuID0gc2l6ZW9mKGhlYWRlcik7DQo+ID4gKw0KPiA+ICsJb3ByX2Rl di0+aXNoX3JlYWRfZG9uZSA9IGZhbHNlOw0KPiA+ICsJcnYgPSBpc2h0cF9jbF9zZW5kKG9wcl9k ZXYtPmVjbF9pc2h0cF9jbCwgKHVpbnQ4X3QgKikmaGVhZGVyLCBsZW4pOw0KPiA+ICsJaWYgKHJ2 KSB7DQo+ID4gKwkJZGV2X2VycihjbF9kYXRhX3RvX2RldihvcHJfZGV2KSwgImlzaC1yZWFkIDog c2VuZA0KPiBmYWlsZWRcbiIpOw0KPiA+ICsJCXJldHVybiAtRUlPOw0KPiA+ICsJfQ0KPiA+ICsN Cj4gPiArCWRldl9kYmcoY2xfZGF0YV90b19kZXYob3ByX2RldiksDQo+ID4gKwkJIltpc2hfcmRd IFJlcTogb2ZmIDogJXgsIGxlbiA6ICV4XG4iLA0KPiA+ICsJCWhlYWRlci5vZmZzZXQsDQo+ID4g KwkJaGVhZGVyLmRhdGFfbGVuKTsNCj4gPiArDQo+ID4gKwlydiA9IHdhaXRfZXZlbnRfaW50ZXJy dXB0aWJsZV90aW1lb3V0KG9wcl9kZXYtPnJlYWRfd2FpdCwNCj4gPiArCQkJCQkgICAgICBvcHJf ZGV2LT5pc2hfcmVhZF9kb25lLA0KPiA+ICsJCQkJCSAgICAgIDIgKiBIWik7DQo+ID4gKwlpZiAo IXJ2KSB7DQo+ID4gKwkJZGV2X2VycihjbF9kYXRhX3RvX2RldihvcHJfZGV2KSwNCj4gPiArCQkJ Iltpc2hfcmRdIE5vIHJlc3BvbnNlIGZyb20gZmlybXdhcmVcbiIpOw0KPiA+ICsJCXJldHVybiAt RUlPOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICogZWNsX2lzaF9jbF93cml0ZSgpIC0gVGhpcyBmdW5jdGlvbiB3cml0ZXMg ZGF0YSB0byBlY2xpdGUgRlcuDQo+ID4gKyAqDQo+ID4gKyAqIEBvcHJfZGV2OiAgcG9pbnRlciB0 byBvcHJlZ2lvbiBkZXZpY2UNCj4gPiArICoNCj4gPiArICogVGhpcyBmdW5jdGlvbiB3cml0ZXMg ZGF0YSB0byBlY2xpdGUgRlcuDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IGVjbF9pc2hfY2xf d3JpdGUoc3RydWN0IGlzaHRwX29wcmVnaW9uX2RldiAqb3ByX2Rldikgew0KPiA+ICsJc3RydWN0 IGVjbF9tZXNzYWdlIG1lc3NhZ2U7DQo+ID4gKwlpbnQgbGVuOw0KPiA+ICsNCj4gPiArCWlmICgh b3ByX2Rldi0+aXNoX2xpbmtfcmVhZHkpDQo+ID4gKwkJcmV0dXJuIC1FSU87DQo+ID4gKw0KPiA+ ICsJaWYgKChvcHJfZGV2LT5vcHJfY29udGV4dC5jbWRfYXJlYS5vZmZzZXQgKw0KPiA+ICsJICAg ICBvcHJfZGV2LT5vcHJfY29udGV4dC5jbWRfYXJlYS5sZW5ndGgpID4NCj4gRUNMX0RBVEFfT1BS X0JVRkxFTikgew0KPiA+ICsJCXJldHVybiAtRUlOVkFMOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiAr CW1lc3NhZ2UuaGVhZGVyLnZlcnNpb24gPSBFQ0xfSVNIX0hFQURFUl9WRVJTSU9OOw0KPiA+ICsJ bWVzc2FnZS5oZWFkZXIuZGF0YV90eXBlID0gRUNMX01TR19EQVRBOw0KPiA+ICsJbWVzc2FnZS5o ZWFkZXIucmVxdWVzdF90eXBlID0gRUNMX0lTSF9XUklURTsNCj4gPiArCW1lc3NhZ2UuaGVhZGVy Lm9mZnNldCA9IG9wcl9kZXYtPm9wcl9jb250ZXh0LmNtZF9hcmVhLm9mZnNldDsNCj4gPiArCW1l c3NhZ2UuaGVhZGVyLmRhdGFfbGVuID0gb3ByX2Rldi0+b3ByX2NvbnRleHQuY21kX2FyZWEubGVu Z3RoOw0KPiA+ICsJbWVzc2FnZS5oZWFkZXIuZXZlbnQgPSBvcHJfZGV2LT5vcHJfY29udGV4dC5j bWRfYXJlYS5ldmVudF9pZDsNCj4gPiArCWxlbiA9IHNpemVvZihzdHJ1Y3QgZWNsX21lc3NhZ2Vf aGVhZGVyKSArIG1lc3NhZ2UuaGVhZGVyLmRhdGFfbGVuOw0KPiA+ICsNCj4gPiArCW1lbWNweSht ZXNzYWdlLnBheWxvYWQsDQo+ID4gKwkgICAgICAgb3ByX2Rldi0+b3ByX2NvbnRleHQuZGF0YV9h cmVhLmRhdGEgKyBtZXNzYWdlLmhlYWRlci5vZmZzZXQsDQo+ID4gKwkgICAgICAgbWVzc2FnZS5o ZWFkZXIuZGF0YV9sZW4pOw0KPiA+ICsNCj4gPiArCWRldl9kYmcoY2xfZGF0YV90b19kZXYob3By X2RldiksDQo+ID4gKwkJIltpc2hfd3JdIG9mZiA6ICV4LCBsZW4gOiAleFxuIiwNCj4gPiArCQlt ZXNzYWdlLmhlYWRlci5vZmZzZXQsDQo+ID4gKwkJbWVzc2FnZS5oZWFkZXIuZGF0YV9sZW4pOw0K PiA+ICsNCj4gPiArCXJldHVybiBpc2h0cF9jbF9zZW5kKG9wcl9kZXYtPmVjbF9pc2h0cF9jbCwg KHVpbnQ4X3QgKikmbWVzc2FnZSwNCj4gPiArbGVuKTsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIGFj cGlfc3RhdHVzDQo+ID4gK2VjbF9vcHJlZ2lvbl9jbWRfaGFuZGxlcih1MzIgZnVuY3Rpb24sIGFj cGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyZXNzLA0KPiA+ICsJCQkgdTMyIGJpdHMsIHU2NCAqdmFs dWU2NCwNCj4gPiArCQkJIHZvaWQgKmhhbmRsZXJfY29udGV4dCwgdm9pZCAqcmVnaW9uX2NvbnRl eHQpIHsNCj4gPiArCXN0cnVjdCBpc2h0cF9vcHJlZ2lvbl9kZXYgKm9wcl9kZXY7DQo+ID4gKwlz dHJ1Y3Qgb3ByZWdpb25fY21kICpjbWQ7DQo+ID4gKwlhY3BpX3N0YXR1cyBzdGF0dXMgPSBBRV9P SzsNCj4gPiArDQo+ID4gKwlpZiAoIXJlZ2lvbl9jb250ZXh0IHx8ICF2YWx1ZTY0KQ0KPiA+ICsJ CXJldHVybiBBRV9CQURfUEFSQU1FVEVSOw0KPiA+ICsNCj4gPiArCWlmIChmdW5jdGlvbiA9PSBB Q1BJX1JFQUQpDQo+ID4gKwkJcmV0dXJuIEFFX0VSUk9SOw0KPiA+ICsNCj4gPiArCW9wcl9kZXYg PSAoc3RydWN0IGlzaHRwX29wcmVnaW9uX2RldiAqKXJlZ2lvbl9jb250ZXh0Ow0KPiA+ICsNCj4g PiArCW11dGV4X2xvY2soJm9wcl9kZXYtPmxvY2spOw0KPiA+ICsNCj4gPiArCWNtZCA9ICZvcHJf ZGV2LT5vcHJfY29udGV4dC5jbWRfYXJlYTsNCj4gPiArDQo+ID4gKwlzd2l0Y2ggKGFkZHJlc3Mp IHsNCj4gPiArCWNhc2UgY21kX29wcl9vZmZzZXRvZihjb21tYW5kKToNCj4gPiArCQljbWQtPmNv bW1hbmQgPSAodTMyKSp2YWx1ZTY0Ow0KPiA+ICsNCj4gPiArCQlpZiAoY21kLT5jb21tYW5kID09 IEVDTF9JU0hfUkVBRCkNCj4gPiArCQkJc3RhdHVzID0gIGVjbF9pc2hfY2xfcmVhZChvcHJfZGV2 KTsNCj4gPiArCQllbHNlIGlmIChjbWQtPmNvbW1hbmQgPT0gRUNMX0lTSF9XUklURSkNCj4gPiAr CQkJc3RhdHVzID0gZWNsX2lzaF9jbF93cml0ZShvcHJfZGV2KTsNCj4gPiArCQllbHNlDQo+ID4g KwkJCXN0YXR1cyA9IEFFX0VSUk9SOw0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBjbWRfb3By X29mZnNldG9mKG9mZnNldCk6DQo+ID4gKwkJY21kLT5vZmZzZXQgPSAodTMyKSp2YWx1ZTY0Ow0K PiA+ICsJCWJyZWFrOw0KPiA+ICsJY2FzZSBjbWRfb3ByX29mZnNldG9mKGxlbmd0aCk6DQo+ID4g KwkJY21kLT5sZW5ndGggPSAodTMyKSp2YWx1ZTY0Ow0KPiA+ICsJCWJyZWFrOw0KPiA+ICsJY2Fz ZSBjbWRfb3ByX29mZnNldG9mKGV2ZW50X2lkKToNCj4gPiArCQljbWQtPmV2ZW50X2lkID0gKHUz MikqdmFsdWU2NDsNCj4gPiArCQlicmVhazsNCj4gPiArCWRlZmF1bHQ6DQo+ID4gKwkJc3RhdHVz ID0gQUVfRVJST1I7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJbXV0ZXhfdW5sb2NrKCZvcHJfZGV2 LT5sb2NrKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gc3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICtzdGF0aWMgYWNwaV9zdGF0dXMNCj4gPiArZWNsX29wcmVnaW9uX2RhdGFfaGFuZGxlcih1MzIg ZnVuY3Rpb24sIGFjcGlfcGh5c2ljYWxfYWRkcmVzcyBhZGRyZXNzLA0KPiA+ICsJCQkgIHUzMiBi aXRzLCB1NjQgKnZhbHVlNjQsDQo+ID4gKwkJCSAgdm9pZCAqaGFuZGxlcl9jb250ZXh0LCB2b2lk ICpyZWdpb25fY29udGV4dCkgew0KPiA+ICsJc3RydWN0IGlzaHRwX29wcmVnaW9uX2RldiAqb3By X2RldjsNCj4gPiArCXVuc2lnbmVkIGludCBieXRlcyA9IEJJVFNfVE9fQllURVMoYml0cyk7DQo+ ID4gKwl2b2lkICpkYXRhX2FkZHI7DQo+ID4gKw0KPiA+ICsJaWYgKCFyZWdpb25fY29udGV4dCB8 fCAhdmFsdWU2NCkNCj4gPiArCQlyZXR1cm4gQUVfQkFEX1BBUkFNRVRFUjsNCj4gPiArDQo+ID4g KwlpZiAoYWRkcmVzcyArIGJ5dGVzID4gRUNMX0RBVEFfT1BSX0JVRkxFTikNCj4gPiArCQlyZXR1 cm4gQUVfQkFEX1BBUkFNRVRFUjsNCj4gPiArDQo+ID4gKwlvcHJfZGV2ID0gKHN0cnVjdCBpc2h0 cF9vcHJlZ2lvbl9kZXYgKilyZWdpb25fY29udGV4dDsNCj4gPiArDQo+ID4gKwltdXRleF9sb2Nr KCZvcHJfZGV2LT5sb2NrKTsNCj4gPiArDQo+ID4gKwlkYXRhX2FkZHIgPSAmb3ByX2Rldi0+b3By X2NvbnRleHQuZGF0YV9hcmVhLmRhdGFbYWRkcmVzc107DQo+ID4gKw0KPiA+ICsJaWYgKGZ1bmN0 aW9uID09IEFDUElfUkVBRCkgew0KPiA+ICsJCW1lbWNweSh2YWx1ZTY0LCBkYXRhX2FkZHIsIGJ5 dGVzKTsNCj4gPiArCX0gZWxzZSBpZiAoZnVuY3Rpb24gPT0gQUNQSV9XUklURSkgew0KPiA+ICsJ CW1lbWNweShkYXRhX2FkZHIsIHZhbHVlNjQsIGJ5dGVzKTsNCj4gPiArCX0gZWxzZSB7DQo+ID4g KwkJbXV0ZXhfdW5sb2NrKCZvcHJfZGV2LT5sb2NrKTsNCj4gPiArCQlyZXR1cm4gQUVfQkFEX1BB UkFNRVRFUjsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwltdXRleF91bmxvY2soJm9wcl9kZXYtPmxv Y2spOw0KPiA+ICsNCj4gPiArCXJldHVybiBBRV9PSzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3Rh dGljIGludCBhY3BpX2ZpbmRfZWNsaXRlX2RldmljZShzdHJ1Y3QgaXNodHBfb3ByZWdpb25fZGV2 DQo+ID4gKypvcHJfZGV2KSB7DQo+ID4gKwlzdHJ1Y3QgYWNwaV9kZXZpY2UgKmFkZXY7DQo+ID4g Kw0KPiA+ICsJLyogRmluZCBFQ0xpdGUgZGV2aWNlIGFuZCBpbnN0YWxsIG9wcmVnaW9uIGhhbmRs ZXJzICovDQo+ID4gKwlhZGV2ID0gYWNwaV9kZXZfZ2V0X2ZpcnN0X21hdGNoX2RldigiSU5UQzEw MzUiLCBOVUxMLCAtMSk7DQo+ID4gKwlpZiAoIWFkZXYpIHsNCj4gPiArCQlkZXZfZXJyKGNsX2Rh dGFfdG9fZGV2KG9wcl9kZXYpLCAiZWNsaXRlIEFDUEkgZGV2aWNlIG5vdA0KPiBmb3VuZFxuIik7 DQo+ID4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJb3ByX2Rldi0+ YWRldiA9IGFkZXY7DQo+ID4gKwlhY3BpX2Rldl9wdXQoYWRldik7DQo+IA0KPiBQbGVhc2UgbW92 ZSB0aGlzIHB1dCgpIHRvIHRoZSBlbmQgb2YgZWNsX2lzaHRwX2NsX3JlbW92ZSgpLCBzbyB0aGF0 IG91cg0KPiByZWZlcmVuY2Ugc3RheXMgdmFsaWQgdW50aWwgdGhlIGRyaXZlciBpcyB1bmJvdW5k Lg0KDQpTdXJlLCBJJ2xsIG1vdmUgdGhlbSB0byBlY2xfaXNodHBfY2xfcmVtb3ZlKCkNCg0KPiAN Cj4gPiArDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBh Y3BpX29wcmVnaW9uX2luaXQoc3RydWN0IGlzaHRwX29wcmVnaW9uX2RldiAqb3ByX2Rldikgew0K PiA+ICsJYWNwaV9zdGF0dXMgc3RhdHVzOw0KPiA+ICsNCj4gPiArCXN0YXR1cyA9IGFjcGlfaW5z dGFsbF9hZGRyZXNzX3NwYWNlX2hhbmRsZXIob3ByX2Rldi0+YWRldi0NCj4gPmhhbmRsZSwNCj4g PiArDQo+IEVDTElURV9DTURfT1BSRUdJT05fSUQsDQo+ID4gKw0KPiBlY2xfb3ByZWdpb25fY21k X2hhbmRsZXIsDQo+ID4gKwkJCQkJCSAgICBOVUxMLCBvcHJfZGV2KTsNCj4gPiArCWlmIChBQ1BJ X0ZBSUxVUkUoc3RhdHVzKSkgew0KPiA+ICsJCWRldl9lcnIoY2xfZGF0YV90b19kZXYob3ByX2Rl diksDQo+ID4gKwkJCSJjbWQgc3BhY2UgaGFuZGxlciBpbnN0YWxsIGZhaWxlZFxuIik7DQo+ID4g KwkJcmV0dXJuIC1FTk9ERVY7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJc3RhdHVzID0gYWNwaV9p bnN0YWxsX2FkZHJlc3Nfc3BhY2VfaGFuZGxlcihvcHJfZGV2LT5hZGV2LQ0KPiA+aGFuZGxlLA0K PiA+ICsNCj4gRUNMSVRFX0RBVEFfT1BSRUdJT05fSUQsDQo+ID4gKw0KPiBlY2xfb3ByZWdpb25f ZGF0YV9oYW5kbGVyLA0KPiA+ICsJCQkJCQkgICAgTlVMTCwgb3ByX2Rldik7DQo+ID4gKwlpZiAo QUNQSV9GQUlMVVJFKHN0YXR1cykpIHsNCj4gPiArCQlkZXZfZXJyKGNsX2RhdGFfdG9fZGV2KG9w cl9kZXYpLA0KPiA+ICsJCQkiZGF0YSBzcGFjZSBoYW5kbGVyIGluc3RhbGwgZmFpbGVkXG4iKTsN Cj4gPiArDQo+ID4gKwkJYWNwaV9yZW1vdmVfYWRkcmVzc19zcGFjZV9oYW5kbGVyKG9wcl9kZXYt PmFkZXYtDQo+ID5oYW5kbGUsDQo+ID4gKwkJCQkJCSAgRUNMSVRFX0NNRF9PUFJFR0lPTl9JRCwN Cj4gPiArCQkJCQkJICBlY2xfb3ByZWdpb25fY21kX2hhbmRsZXIpOw0KPiA+ICsJCXJldHVybiAt RU5PREVWOw0KPiA+ICsJfQ0KPiA+ICsJb3ByX2Rldi0+YWNwaV9pbml0X2RvbmUgPSB0cnVlOw0K PiA+ICsNCj4gPiArCWRldl9kYmcoY2xfZGF0YV90b19kZXYob3ByX2RldiksICJPcHJlZ2lvbiBo YW5kbGVycyBhcmUNCj4gPiAraW5zdGFsbGVkXG4iKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgYWNwaV9vcHJlZ2lvbl9kZWluaXQoc3Ry dWN0IGlzaHRwX29wcmVnaW9uX2RldiAqb3ByX2RldikNCj4gPiArew0KPiA+ICsJYWNwaV9yZW1v dmVfYWRkcmVzc19zcGFjZV9oYW5kbGVyKG9wcl9kZXYtPmFkZXYtPmhhbmRsZSwNCj4gPiArCQkJ CQkgIEVDTElURV9DTURfT1BSRUdJT05fSUQsDQo+ID4gKwkJCQkJICBlY2xfb3ByZWdpb25fY21k X2hhbmRsZXIpOw0KPiA+ICsNCj4gPiArCWFjcGlfcmVtb3ZlX2FkZHJlc3Nfc3BhY2VfaGFuZGxl cihvcHJfZGV2LT5hZGV2LT5oYW5kbGUsDQo+ID4gKwkJCQkJICBFQ0xJVEVfREFUQV9PUFJFR0lP Tl9JRCwNCj4gPiArCQkJCQkgIGVjbF9vcHJlZ2lvbl9kYXRhX2hhbmRsZXIpOw0KPiA+ICsJb3By X2Rldi0+YWNwaV9pbml0X2RvbmUgPSBmYWxzZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGlj IHZvaWQgZWNsX2FjcGlfaW52b2tlX2RzbShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspIHsNCj4g PiArCXN0cnVjdCBpc2h0cF9vcHJlZ2lvbl9kZXYgKm9wcl9kZXY7DQo+ID4gKwl1bmlvbiBhY3Bp X29iamVjdCAqb2JqOw0KPiA+ICsNCj4gPiArCW9wcl9kZXYgPSBjb250YWluZXJfb2Yod29yaywg c3RydWN0IGlzaHRwX29wcmVnaW9uX2RldiwNCj4gZXZlbnRfd29yayk7DQo+ID4gKwlpZiAoIW9w cl9kZXYtPmFjcGlfaW5pdF9kb25lKQ0KPiA+ICsJCXJldHVybjsNCj4gPiArDQo+ID4gKwlvYmog PSBhY3BpX2V2YWx1YXRlX2RzbShvcHJfZGV2LT5hZGV2LT5oYW5kbGUsICZlY2xfYWNwaV9ndWlk LCAwLA0KPiA+ICsJCQkJb3ByX2Rldi0+ZHNtX2V2ZW50X2lkLCBOVUxMKTsNCj4gPiArCWlmICgh b2JqKSB7DQo+ID4gKwkJZGV2X3dhcm4oY2xfZGF0YV90b19kZXYob3ByX2RldiksICJfRFNNIGZu IGNhbGwgZmFpbGVkXG4iKTsNCj4gPiArCQlyZXR1cm47DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJ ZGV2X2RiZyhjbF9kYXRhX3RvX2RldihvcHJfZGV2KSwgIkV4ZWMgRFNNIGZ1bmN0aW9uIGNvZGU6 ICVkDQo+IHN1Y2Nlc3NcbiIsDQo+ID4gKwkJb3ByX2Rldi0+ZHNtX2V2ZW50X2lkKTsNCj4gPiAr DQo+ID4gKwlBQ1BJX0ZSRUUob2JqKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQg ZWNsX2lzaF9wcm9jZXNzX3J4X2RhdGEoc3RydWN0IGlzaHRwX29wcmVnaW9uX2Rldg0KPiA+ICsq b3ByX2Rldikgew0KPiA+ICsJc3RydWN0IGVjbF9tZXNzYWdlICptZXNzYWdlID0NCj4gPiArCQko c3RydWN0IGVjbF9tZXNzYWdlICopb3ByX2Rldi0+cmItPmJ1ZmZlci5kYXRhOw0KPiA+ICsNCj4g PiArCWRldl9kYmcoY2xfZGF0YV90b19kZXYob3ByX2RldiksDQo+ID4gKwkJIltpc2hfcmRdIFJl c3A6IG9mZiA6ICV4LCBsZW4gOiAleFxuIiwNCj4gPiArCQltZXNzYWdlLT5oZWFkZXIub2Zmc2V0 LA0KPiA+ICsJCW1lc3NhZ2UtPmhlYWRlci5kYXRhX2xlbik7DQo+ID4gKw0KPiA+ICsJaWYgKCht ZXNzYWdlLT5oZWFkZXIub2Zmc2V0ICsgbWVzc2FnZS0+aGVhZGVyLmRhdGFfbGVuKSA+DQo+ID4g KwkJCUVDTF9EQVRBX09QUl9CVUZMRU4pIHsNCj4gPiArCQlyZXR1cm47DQo+ID4gKwl9DQo+ID4g Kw0KPiA+ICsJbWVtY3B5KG9wcl9kZXYtPm9wcl9jb250ZXh0LmRhdGFfYXJlYS5kYXRhICsgbWVz c2FnZS0NCj4gPmhlYWRlci5vZmZzZXQsDQo+ID4gKwkgICAgICAgbWVzc2FnZS0+cGF5bG9hZCwg bWVzc2FnZS0+aGVhZGVyLmRhdGFfbGVuKTsNCj4gPiArDQo+ID4gKwlvcHJfZGV2LT5pc2hfcmVh ZF9kb25lID0gdHJ1ZTsNCj4gPiArCXdha2VfdXBfaW50ZXJydXB0aWJsZSgmb3ByX2Rldi0+cmVh ZF93YWl0KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgZWNsX2lzaF9wcm9jZXNz X3J4X2V2ZW50KHN0cnVjdCBpc2h0cF9vcHJlZ2lvbl9kZXYNCj4gPiArKm9wcl9kZXYpIHsNCj4g PiArCXN0cnVjdCBlY2xfbWVzc2FnZV9oZWFkZXIgKmhlYWRlciA9DQo+ID4gKwkJKHN0cnVjdCBl Y2xfbWVzc2FnZV9oZWFkZXIgKilvcHJfZGV2LT5yYi0+YnVmZmVyLmRhdGE7DQo+ID4gKw0KPiA+ ICsJZGV2X2RiZyhjbF9kYXRhX3RvX2RldihvcHJfZGV2KSwNCj4gPiArCQkiW2lzaF9ldl0gRXZ0 IHJlY2VpdmVkOiAlOHhcbiIsIGhlYWRlci0+ZXZlbnQpOw0KPiA+ICsNCj4gPiArCW9wcl9kZXYt PmRzbV9ldmVudF9pZCA9IGhlYWRlci0+ZXZlbnQ7DQo+ID4gKwlzY2hlZHVsZV93b3JrKCZvcHJf ZGV2LT5ldmVudF93b3JrKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBlY2xfaXNo X2NsX2VuYWJsZV9ldmVudHMoc3RydWN0IGlzaHRwX29wcmVnaW9uX2RldiAqb3ByX2RldiwNCj4g PiArCQkJCSAgICBib29sIGNvbmZpZ19lbmFibGUpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBlY2xf bWVzc2FnZSBtZXNzYWdlOw0KPiA+ICsJaW50IGxlbjsNCj4gPiArDQo+ID4gKwltZXNzYWdlLmhl YWRlci52ZXJzaW9uID0gRUNMX0lTSF9IRUFERVJfVkVSU0lPTjsNCj4gPiArCW1lc3NhZ2UuaGVh ZGVyLmRhdGFfdHlwZSA9IEVDTF9NU0dfREFUQTsNCj4gPiArCW1lc3NhZ2UuaGVhZGVyLnJlcXVl c3RfdHlwZSA9IEVDTF9JU0hfV1JJVEU7DQo+ID4gKwltZXNzYWdlLmhlYWRlci5vZmZzZXQgPSBF Q0xfRVZFTlRTX05PVElGWTsNCj4gPiArCW1lc3NhZ2UuaGVhZGVyLmRhdGFfbGVuID0gMTsNCj4g PiArCW1lc3NhZ2UucGF5bG9hZFswXSA9IGNvbmZpZ19lbmFibGU7DQo+ID4gKw0KPiA+ICsJbGVu ID0gc2l6ZW9mKHN0cnVjdCBlY2xfbWVzc2FnZV9oZWFkZXIpICsgbWVzc2FnZS5oZWFkZXIuZGF0 YV9sZW47DQo+ID4gKw0KPiA+ICsJcmV0dXJuIGlzaHRwX2NsX3NlbmQob3ByX2Rldi0+ZWNsX2lz aHRwX2NsLCAodWludDhfdCAqKSZtZXNzYWdlLA0KPiA+ICtsZW4pOyB9DQo+ID4gKw0KPiA+ICtz dGF0aWMgdm9pZCBlY2xfaXNodHBfY2xfZXZlbnRfY2Ioc3RydWN0IGlzaHRwX2NsX2RldmljZSAq Y2xfZGV2aWNlKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgaXNodHBfY2wgKmVjbF9pc2h0cF9jbCA9 IGlzaHRwX2dldF9kcnZkYXRhKGNsX2RldmljZSk7DQo+ID4gKwlzdHJ1Y3QgaXNodHBfb3ByZWdp b25fZGV2ICpvcHJfZGV2Ow0KPiA+ICsJc3RydWN0IGVjbF9tZXNzYWdlX2hlYWRlciAqaGVhZGVy Ow0KPiA+ICsJc3RydWN0IGlzaHRwX2NsX3JiICpyYjsNCj4gPiArDQo+ID4gKwlvcHJfZGV2ID0g aXNodHBfZ2V0X2NsaWVudF9kYXRhKGVjbF9pc2h0cF9jbCk7DQo+ID4gKwl3aGlsZSAoKHJiID0g aXNodHBfY2xfcnhfZ2V0X3JiKG9wcl9kZXYtPmVjbF9pc2h0cF9jbCkpICE9IE5VTEwpIHsNCj4g PiArCQlvcHJfZGV2LT5yYiA9IHJiOw0KPiA+ICsJCWhlYWRlciA9IChzdHJ1Y3QgZWNsX21lc3Nh Z2VfaGVhZGVyICopcmItPmJ1ZmZlci5kYXRhOw0KPiA+ICsNCj4gPiArCQlpZiAoaGVhZGVyLT5k YXRhX3R5cGUgPT0gRUNMX01TR19EQVRBKQ0KPiA+ICsJCQllY2xfaXNoX3Byb2Nlc3NfcnhfZGF0 YShvcHJfZGV2KTsNCj4gPiArCQllbHNlIGlmIChoZWFkZXItPmRhdGFfdHlwZSA9PSBFQ0xfTVNH X0VWRU5UKQ0KPiA+ICsJCQllY2xfaXNoX3Byb2Nlc3NfcnhfZXZlbnQob3ByX2Rldik7DQo+ID4g KwkJZWxzZQ0KPiA+ICsJCQkvKiBHb3QgYW4gZXZlbnQgd2l0aCB3cm9uZyBkYXRhX3R5cGUsIGln bm9yZSBpdCAqLw0KPiA+ICsJCQlkZXZfZXJyKGNsX2RhdGFfdG9fZGV2KG9wcl9kZXYpLA0KPiA+ ICsJCQkJIltpc2hfY2JdIFJlY2VpdmVkIHdyb25nIGRhdGFfdHlwZVxuIik7DQo+ID4gKw0KPiA+ ICsJCWlzaHRwX2NsX2lvX3JiX3JlY3ljbGUocmIpOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgaW50IGVjbF9pc2h0cF9jbF9pbml0KHN0cnVjdCBpc2h0cF9jbCAqZWNsX2lz aHRwX2NsKSB7DQo+ID4gKwlzdHJ1Y3QgaXNodHBfb3ByZWdpb25fZGV2ICpvcHJfZGV2ID0NCj4g PiArCQlpc2h0cF9nZXRfY2xpZW50X2RhdGEoZWNsX2lzaHRwX2NsKTsNCj4gPiArCXN0cnVjdCBp c2h0cF9md19jbGllbnQgKmZ3X2NsaWVudDsNCj4gPiArCXN0cnVjdCBpc2h0cF9kZXZpY2UgKmRl djsNCj4gPiArCWludCBydjsNCj4gPiArDQo+ID4gKwlydiA9IGlzaHRwX2NsX2xpbmsoZWNsX2lz aHRwX2NsKTsNCj4gPiArCWlmIChydikgew0KPiA+ICsJCWRldl9lcnIoY2xfZGF0YV90b19kZXYo b3ByX2RldiksICJpc2h0cF9jbF9saW5rIGZhaWxlZFxuIik7DQo+ID4gKwkJcmV0dXJuCXJ2Ow0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCWRldiA9IGlzaHRwX2dldF9pc2h0cF9kZXZpY2UoZWNsX2lz aHRwX2NsKTsNCj4gPiArDQo+ID4gKwkvKiBDb25uZWN0IHRvIEZXIGNsaWVudCAqLw0KPiA+ICsJ aXNodHBfc2V0X3R4X3Jpbmdfc2l6ZShlY2xfaXNodHBfY2wsIEVDTF9DTF9UWF9SSU5HX1NJWkUp Ow0KPiA+ICsJaXNodHBfc2V0X3J4X3Jpbmdfc2l6ZShlY2xfaXNodHBfY2wsIEVDTF9DTF9SWF9S SU5HX1NJWkUpOw0KPiA+ICsNCj4gPiArCWZ3X2NsaWVudCA9IGlzaHRwX2Z3X2NsX2dldF9jbGll bnQoZGV2LCAmZWNsX2lzaHRwX2d1aWQpOw0KPiA+ICsJaWYgKCFmd19jbGllbnQpIHsNCj4gPiAr CQlkZXZfZXJyKGNsX2RhdGFfdG9fZGV2KG9wcl9kZXYpLCAiZncgY2xpZW50IG5vdCBmb3VuZFxu Iik7DQo+ID4gKwkJcmV0dXJuIC1FTk9FTlQ7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJaXNodHBf Y2xfc2V0X2Z3X2NsaWVudF9pZChlY2xfaXNodHBfY2wsDQo+ID4gKwkJCQkgIGlzaHRwX2dldF9m d19jbGllbnRfaWQoZndfY2xpZW50KSk7DQo+ID4gKw0KPiA+ICsJaXNodHBfc2V0X2Nvbm5lY3Rp b25fc3RhdGUoZWNsX2lzaHRwX2NsLCBJU0hUUF9DTF9DT05ORUNUSU5HKTsNCj4gPiArDQo+ID4g KwlydiA9IGlzaHRwX2NsX2Nvbm5lY3QoZWNsX2lzaHRwX2NsKTsNCj4gPiArCWlmIChydikgew0K PiA+ICsJCWRldl9lcnIoY2xfZGF0YV90b19kZXYob3ByX2RldiksICJjbGllbnQgY29ubmVjdCBm YWlsZWRcbiIpOw0KPiA+ICsNCj4gPiArCQlpc2h0cF9jbF91bmxpbmsoZWNsX2lzaHRwX2NsKTsN Cj4gPiArCQlyZXR1cm4gcnY7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJZGV2X2RiZyhjbF9kYXRh X3RvX2RldihvcHJfZGV2KSwgIkhvc3QgY29ubmVjdGVkIHRvIGZ3IGNsaWVudFxuIik7DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGVjbF9p c2h0cF9jbF9kZWluaXQoc3RydWN0IGlzaHRwX2NsICplY2xfaXNodHBfY2wpIHsNCj4gPiArCWlz aHRwX2NsX3VubGluayhlY2xfaXNodHBfY2wpOw0KPiA+ICsJaXNodHBfY2xfZmx1c2hfcXVldWVz KGVjbF9pc2h0cF9jbCk7DQo+ID4gKwlpc2h0cF9jbF9mcmVlKGVjbF9pc2h0cF9jbCk7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGVjbF9pc2h0cF9jbF9yZXNldF9oYW5kbGVyKHN0 cnVjdCB3b3JrX3N0cnVjdCAqd29yaykgew0KPiA+ICsJc3RydWN0IGlzaHRwX29wcmVnaW9uX2Rl diAqb3ByX2RldjsNCj4gPiArCXN0cnVjdCBpc2h0cF9jbF9kZXZpY2UgKmNsX2RldmljZTsNCj4g PiArCXN0cnVjdCBpc2h0cF9jbCAqZWNsX2lzaHRwX2NsOw0KPiA+ICsJaW50IHJ2Ow0KPiA+ICsJ aW50IHJldHJ5Ow0KPiA+ICsNCj4gPiArCW9wcl9kZXYgPSBjb250YWluZXJfb2Yod29yaywgc3Ry dWN0IGlzaHRwX29wcmVnaW9uX2RldiwNCj4gcmVzZXRfd29yayk7DQo+ID4gKw0KPiA+ICsJb3By X2Rldi0+aXNoX2xpbmtfcmVhZHkgPSBmYWxzZTsNCj4gPiArDQo+ID4gKwljbF9kZXZpY2UgPSBv cHJfZGV2LT5jbF9kZXZpY2U7DQo+ID4gKwllY2xfaXNodHBfY2wgPSBvcHJfZGV2LT5lY2xfaXNo dHBfY2w7DQo+ID4gKw0KPiA+ICsJZWNsX2lzaHRwX2NsX2RlaW5pdChlY2xfaXNodHBfY2wpOw0K PiA+ICsNCj4gPiArCWVjbF9pc2h0cF9jbCA9IGlzaHRwX2NsX2FsbG9jYXRlKGNsX2RldmljZSk7 DQo+ID4gKwlpZiAoIWVjbF9pc2h0cF9jbCkNCj4gPiArCQlyZXR1cm47DQo+ID4gKw0KPiA+ICsJ aXNodHBfc2V0X2RydmRhdGEoY2xfZGV2aWNlLCBlY2xfaXNodHBfY2wpOw0KPiA+ICsJaXNodHBf c2V0X2NsaWVudF9kYXRhKGVjbF9pc2h0cF9jbCwgb3ByX2Rldik7DQo+ID4gKw0KPiA+ICsJb3By X2Rldi0+ZWNsX2lzaHRwX2NsID0gZWNsX2lzaHRwX2NsOw0KPiA+ICsNCj4gPiArCWZvciAocmV0 cnkgPSAwOyByZXRyeSA8IDM7ICsrcmV0cnkpIHsNCj4gPiArCQlydiA9IGVjbF9pc2h0cF9jbF9p bml0KGVjbF9pc2h0cF9jbCk7DQo+ID4gKwkJaWYgKCFydikNCj4gPiArCQkJYnJlYWs7DQo+ID4g Kwl9DQo+ID4gKwlpZiAocnYpIHsNCj4gPiArCQlpc2h0cF9jbF9mcmVlKGVjbF9pc2h0cF9jbCk7 DQo+ID4gKwkJb3ByX2Rldi0+ZWNsX2lzaHRwX2NsID0gTlVMTDsNCj4gPiArCQlkZXZfZXJyKGNs X2RhdGFfdG9fZGV2KG9wcl9kZXYpLA0KPiA+ICsJCQkiW2lzaF9yc3RdIFJlc2V0IGZhaWxlZC4g TGluayBub3QgcmVhZHkuXG4iKTsNCj4gPiArCQlyZXR1cm47DQo+ID4gKwl9DQo+ID4gKw0KPiA+ ICsJaXNodHBfcmVnaXN0ZXJfZXZlbnRfY2IoY2xfZGV2aWNlLCBlY2xfaXNodHBfY2xfZXZlbnRf Y2IpOw0KPiA+ICsJZGV2X2luZm8oY2xfZGF0YV90b19kZXYob3ByX2RldiksDQo+ID4gKwkJICJb aXNoX3JzdF0gUmVzZXQgU3VjY2Vzcy4gTGluayByZWFkeS5cbiIpOw0KPiA+ICsNCj4gPiArCW9w cl9kZXYtPmlzaF9saW5rX3JlYWR5ID0gdHJ1ZTsNCj4gPiArDQo+ID4gKwlpZiAob3ByX2Rldi0+ YWNwaV9pbml0X2RvbmUpDQo+ID4gKwkJcmV0dXJuOw0KPiA+ICsNCj4gPiArCXJ2ID0gYWNwaV9v cHJlZ2lvbl9pbml0KG9wcl9kZXYpOw0KPiA+ICsJaWYgKHJ2KSB7DQo+ID4gKwkJZGV2X2Vycihj bF9kYXRhX3RvX2RldihvcHJfZGV2KSwNCj4gPiArCQkJIkFDUEkgb3ByZWdpb24gaW5pdCBmYWls ZWRcbiIpOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGVjbF9pc2h0 cF9jbF9wcm9iZShzdHJ1Y3QgaXNodHBfY2xfZGV2aWNlICpjbF9kZXZpY2UpIHsNCj4gPiArCXN0 cnVjdCBpc2h0cF9jbCAqZWNsX2lzaHRwX2NsOw0KPiA+ICsJc3RydWN0IGlzaHRwX29wcmVnaW9u X2RldiAqb3ByX2RldjsNCj4gPiArCWludCBydjsNCj4gPiArDQo+ID4gKwlvcHJfZGV2ID0gZGV2 bV9remFsbG9jKGlzaHRwX2RldmljZShjbF9kZXZpY2UpLCBzaXplb2YoKm9wcl9kZXYpLA0KPiA+ ICsJCQkgICAgICAgR0ZQX0tFUk5FTCk7DQo+ID4gKwlpZiAoIW9wcl9kZXYpDQo+ID4gKwkJcmV0 dXJuIC1FTk9NRU07DQo+ID4gKw0KPiA+ICsJZWNsX2lzaHRwX2NsID0gaXNodHBfY2xfYWxsb2Nh dGUoY2xfZGV2aWNlKTsNCj4gPiArCWlmICghZWNsX2lzaHRwX2NsKQ0KPiA+ICsJCXJldHVybiAt RU5PTUVNOw0KPiA+ICsNCj4gPiArCWlzaHRwX3NldF9kcnZkYXRhKGNsX2RldmljZSwgZWNsX2lz aHRwX2NsKTsNCj4gPiArCWlzaHRwX3NldF9jbGllbnRfZGF0YShlY2xfaXNodHBfY2wsIG9wcl9k ZXYpOw0KPiA+ICsJb3ByX2Rldi0+ZWNsX2lzaHRwX2NsID0gZWNsX2lzaHRwX2NsOw0KPiA+ICsJ b3ByX2Rldi0+Y2xfZGV2aWNlID0gY2xfZGV2aWNlOw0KPiA+ICsNCj4gPiArCWluaXRfd2FpdHF1 ZXVlX2hlYWQoJm9wcl9kZXYtPnJlYWRfd2FpdCk7DQo+ID4gKwlJTklUX1dPUksoJm9wcl9kZXYt PmV2ZW50X3dvcmssIGVjbF9hY3BpX2ludm9rZV9kc20pOw0KPiA+ICsJSU5JVF9XT1JLKCZvcHJf ZGV2LT5yZXNldF93b3JrLCBlY2xfaXNodHBfY2xfcmVzZXRfaGFuZGxlcik7DQo+ID4gKw0KPiA+ ICsJLyogSW5pdGlhbGl6ZSBpc2ggY2xpZW50IGRldmljZSAqLw0KPiA+ICsJcnYgPSBlY2xfaXNo dHBfY2xfaW5pdChlY2xfaXNodHBfY2wpOw0KPiA+ICsJaWYgKHJ2KSB7DQo+ID4gKwkJZGV2X2Vy cihjbF9kYXRhX3RvX2RldihvcHJfZGV2KSwgIkNsaWVudCBpbml0IGZhaWxlZFxuIik7DQo+ID4g KwkJZ290byBlcnJfZXhpdDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlkZXZfZGJnKGNsX2RhdGFf dG9fZGV2KG9wcl9kZXYpLCAiZWNsaXRlLWlzaHRwIGNsaWVudA0KPiA+ICtpbml0aWFsaXNlZFxu Iik7DQo+ID4gKw0KPiA+ICsJLyogUmVnaXN0ZXIgYSBoYW5kbGVyIGZvciBlY2xpdGUgZncgZXZl bnRzICovDQo+ID4gKwlpc2h0cF9yZWdpc3Rlcl9ldmVudF9jYihjbF9kZXZpY2UsIGVjbF9pc2h0 cF9jbF9ldmVudF9jYik7DQo+IA0KPiBlY2xfaXNodHBfY2xfZXZlbnRfY2IgbWF5IHF1ZXVlIGV2 ZW50X3dvcmsgd2hpY2ggdXNlcyB0aGUgYWRldiBwb2ludGVyLA0KPiBzbyB0aGlzIG5lZWRzIHRv IGJlIG1vdmVkIHRvIGFmdGVyIHRoZSBhY3BpX2ZpbmRfZWNsaXRlX2RldmljZSgpIGNhbGwuDQo+ IA0KDQpJJ2xsIG1vdmUgdGhlbSB0byB0aGUgZW5kIG9mIHByb2JlKCksIGl0IG1ha2VzIHNlbnNl Lg0KDQo+ID4gKw0KPiA+ICsJb3ByX2Rldi0+aXNoX2xpbmtfcmVhZHkgPSB0cnVlOw0KPiA+ICsJ bXV0ZXhfaW5pdCgmb3ByX2Rldi0+bG9jayk7DQo+ID4gKw0KPiA+ICsJLyogTm93IGZpbmQgQUNQ SSBkZXZpY2UgYW5kIGluaXQgb3ByZWdpb24gaGFuZGxlcnMgKi8NCj4gPiArCXJ2ID0gYWNwaV9m aW5kX2VjbGl0ZV9kZXZpY2Uob3ByX2Rldik7DQo+ID4gKwlpZiAocnYpIHsNCj4gPiArCQlkZXZf ZXJyKGNsX2RhdGFfdG9fZGV2KG9wcl9kZXYpLCAiRUNMaXRlIEFDUEkgSUQgbm90DQo+IGZvdW5k XG4iKTsNCj4gPiArCQlnb3RvIGVycl9leGl0Ow0KPiA+ICsJfQ0KPiA+ICsJcnYgPSBhY3BpX29w cmVnaW9uX2luaXQob3ByX2Rldik7DQo+ID4gKwlpZiAocnYpIHsNCj4gPiArCQlkZXZfZXJyKGNs X2RhdGFfdG9fZGV2KG9wcl9kZXYpLCAiQUNQSSBvcHJlZ2lvbiBpbml0DQo+IGZhaWxlZFxuIik7 DQo+ID4gKwkJZ290byBlcnJfZXhpdDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiBSZXByb2Jl IGRldmljZXMgZGVwZW5kaW5nIG9uIEVDTGl0ZSAtIGJhdHRlcnksIGZhbiwgZXRjLiAqLw0KPiA+ ICsJYWNwaV9kZXZfY2xlYXJfZGVwZW5kZW5jaWVzKG9wcl9kZXYtPmFkZXYpOw0KPiA+ICsNCj4g PiArCXJldHVybiAwOw0KPiA+ICtlcnJfZXhpdDoNCj4gPiArCWlzaHRwX3NldF9jb25uZWN0aW9u X3N0YXRlKGVjbF9pc2h0cF9jbCwNCj4gSVNIVFBfQ0xfRElTQ09OTkVDVElORyk7DQo+ID4gKwlp c2h0cF9jbF9kaXNjb25uZWN0KGVjbF9pc2h0cF9jbCk7DQo+ID4gKwllY2xfaXNodHBfY2xfZGVp bml0KGVjbF9pc2h0cF9jbCk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJ2Ow0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtzdGF0aWMgdm9pZCBlY2xfaXNodHBfY2xfcmVtb3ZlKHN0cnVjdCBpc2h0cF9jbF9k ZXZpY2UgKmNsX2RldmljZSkgew0KPiA+ICsJc3RydWN0IGlzaHRwX2NsICplY2xfaXNodHBfY2wg PSBpc2h0cF9nZXRfZHJ2ZGF0YShjbF9kZXZpY2UpOw0KPiA+ICsJc3RydWN0IGlzaHRwX29wcmVn aW9uX2RldiAqb3ByX2RldiA9DQo+ID4gKwkJaXNodHBfZ2V0X2NsaWVudF9kYXRhKGVjbF9pc2h0 cF9jbCk7DQo+ID4gKw0KPiA+ICsJaWYgKG9wcl9kZXYtPmFjcGlfaW5pdF9kb25lKQ0KPiA+ICsJ CWFjcGlfb3ByZWdpb25fZGVpbml0KG9wcl9kZXYpOw0KPiA+ICsNCj4gPiArCWNhbmNlbF93b3Jr X3N5bmMoJm9wcl9kZXYtPnJlc2V0X3dvcmspOw0KPiA+ICsJY2FuY2VsX3dvcmtfc3luYygmb3By X2Rldi0+ZXZlbnRfd29yayk7DQo+IA0KPiBEb2VzIHRoZSBJU0ggYnVzIGd1YXJhbnRlZSB0aGF0 IGVjbF9pc2h0cF9jbF9ldmVudF9jYiBhbmQNCj4gZWNsX2lzaHRwX2NsX3Jlc2V0IHdpbGwgbm90 IGdldCBjYWxsZWQgd2hlbiBlY2xfaXNodHBfY2xfcmVtb3ZlKCkgZ2V0IGNhbGxlZCA/DQo+IE90 aGVyd2lzZSB0aGVzZQ0KPiAyIHdvcmtzIG1pZ2h0IGdldCByZXF1ZXVlZCBhdCB0aGlzIHBvaW50 Lg0KPiANClRoZSBjdXJyZW50IHBsYXRmb3JtIGVuYWJsZXMgYW55IG5vdGlmaWNhdGlvbiBmcm9t IFBTRSBGVyB0byB0aGlzIGRyaXZlciAoZWNsX2lzaHRwX2NsX2V2ZW50X2NiKCkgZ2V0cyBjYWxs ZWQgb25seSANCmFmdGVyIGZpcnN0IEFDUEkgY29tbWFuZCB3aGljaCBpcyBhbiBFTkFCTEVfRVZF TlRTIG1lc3NhZ2UgdG8gRlcpIGFmdGVyIGFjcGlfb3ByZWdpb25faW5pdCgpDQpTbyB0aGlzIHNj ZW5hcmlvIHdvbid0IGhhcHBlbiBhdGxlYXN0IGhlcmUuIEJ1dCBhcyBmYXIgYXMgZmFpbHNhZmlu ZyB0aGUgZHJpdmVyIGZyb20gYnVncywgSSdsbCBtb3ZlIHRoZW0gYWZ0ZXIuDQpUaGFuayB5b3Ug Zm9yIHBvaW50aW5nIG91dC4NCg0KPiA+ICsNCj4gPiArCWlzaHRwX3NldF9jb25uZWN0aW9uX3N0 YXRlKGVjbF9pc2h0cF9jbCwNCj4gSVNIVFBfQ0xfRElTQ09OTkVDVElORyk7DQo+IA0KPiBUaGlz IGlzIG5vdCBkb25lIGJ5IHRoZSBJU0ggYnVzIGNvZGUgPyBJIGd1ZXNzIHRoYXQgYWxzbyBtZWFu cyB0aGF0IGJlZm9yZQ0KPiB0aGlzIHRoZSBlY2xfaXNodHBfY2xfZXZlbnRfY2IgYW5kIGVjbF9p c2h0cF9jbF9yZXNldCBjYWxsYmFja3MgbWlnaHQgc3RpbGwgZ2V0DQo+IGNhbGxlZCA/DQo+IA0K PiBJZiBzbyB0aGVuIHRoZSBjYW5jZWxfd29ya19zeW5jIG5lZWRzIHRvIGJlIGRvbmUgbGF0ZXIu DQoNCklTSFRQX0NMX0RJU0NPTk5FQ1RJTkcgaXMgbm90IGRvbmUgYnkgdGhlIGJ1cy4gVGhpcyBB UEkgaXMgZXhwb3NlZCB0byBiZSBjYWxsZWQgYnkgdGhlIGNsaWVudCBkcml2ZXIuDQpUaGF0IGJl aW5nIHNhaWQsICBjYW5jZWxfd29ya19zeW5jKCkgbmVlZHMgdG8gYmUgY2FsbGVkIGFmdGVyIHRo aXMuIEknbGwgaW5jbHVkZSB0aGlzIGNoYW5nZSBhcyB3ZWxsIGluIFYzLg0KDQo+IA0KPiBSZWdh cmRzLA0KPiANCj4gSGFucw0KPiANCj4gDQo+ID4gKwlpc2h0cF9jbF9kaXNjb25uZWN0KGVjbF9p c2h0cF9jbCk7DQo+ID4gKwllY2xfaXNodHBfY2xfZGVpbml0KGVjbF9pc2h0cF9jbCk7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgZWNsX2lzaHRwX2NsX3Jlc2V0KHN0cnVjdCBpc2h0 cF9jbF9kZXZpY2UgKmNsX2RldmljZSkgew0KPiA+ICsJc3RydWN0IGlzaHRwX2NsICplY2xfaXNo dHBfY2wgPSBpc2h0cF9nZXRfZHJ2ZGF0YShjbF9kZXZpY2UpOw0KPiA+ICsJc3RydWN0IGlzaHRw X29wcmVnaW9uX2RldiAqb3ByX2RldiA9DQo+ID4gKwkJaXNodHBfZ2V0X2NsaWVudF9kYXRhKGVj bF9pc2h0cF9jbCk7DQo+ID4gKw0KPiA+ICsJc2NoZWR1bGVfd29yaygmb3ByX2Rldi0+cmVzZXRf d29yayk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRp YyBpbnQgZWNsX2lzaHRwX2NsX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNlKSB7DQo+ID4g KwlzdHJ1Y3QgaXNodHBfY2xfZGV2aWNlICpjbF9kZXZpY2UgPSBpc2h0cF9kZXZfdG9fY2xfZGV2 aWNlKGRldmljZSk7DQo+ID4gKwlzdHJ1Y3QgaXNodHBfY2wgKmVjbF9pc2h0cF9jbCA9IGlzaHRw X2dldF9kcnZkYXRhKGNsX2RldmljZSk7DQo+ID4gKwlzdHJ1Y3QgaXNodHBfb3ByZWdpb25fZGV2 ICpvcHJfZGV2ID0NCj4gPiArCQlpc2h0cF9nZXRfY2xpZW50X2RhdGEoZWNsX2lzaHRwX2NsKTsN Cj4gPiArDQo+ID4gKwlpZiAoYWNwaV90YXJnZXRfc3lzdGVtX3N0YXRlKCkgPT0gQUNQSV9TVEFU RV9TMCkNCj4gPiArCQlyZXR1cm4gMDsNCj4gPiArDQo+ID4gKwlhY3BpX29wcmVnaW9uX2RlaW5p dChvcHJfZGV2KTsNCj4gPiArCWVjbF9pc2hfY2xfZW5hYmxlX2V2ZW50cyhvcHJfZGV2LCBmYWxz ZSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgZWNsX2lzaHRwX2NsX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXZpY2UpIHsNCj4gPiArCS8q IEEgcmVzZXQgaXMgZXhwZWN0ZWQgdG8gY2FsbCBhZnRlciBhbiBTeC4gQXQgdGhpcyBwb2ludA0K PiA+ICsJICogd2UgYXJlIG5vdCBzdXJlIGlmIHRoZSBsaW5rIGlzIHVwIG9yIG5vdCB0byByZXN0 b3JlIGFueXRoaW5nLA0KPiA+ICsJICogc28gZG8gbm90aGluZyBpbiByZXN1bWUgcGF0aA0KPiA+ ICsJICovDQo+ID4gKwlyZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0 IHN0cnVjdCBkZXZfcG1fb3BzIGVjbF9pc2h0cF9wbV9vcHMgPSB7DQo+ID4gKwkuc3VzcGVuZCA9 IGVjbF9pc2h0cF9jbF9zdXNwZW5kLA0KPiA+ICsJLnJlc3VtZSA9IGVjbF9pc2h0cF9jbF9yZXN1 bWUsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IGlzaHRwX2NsX2RyaXZlciBl Y2xfaXNodHBfY2xfZHJpdmVyID0gew0KPiA+ICsJLm5hbWUgPSAiaXNodHAtZWNsaXRlIiwNCj4g PiArCS5ndWlkID0gJmVjbF9pc2h0cF9ndWlkLA0KPiA+ICsJLnByb2JlID0gZWNsX2lzaHRwX2Ns X3Byb2JlLA0KPiA+ICsJLnJlbW92ZSA9IGVjbF9pc2h0cF9jbF9yZW1vdmUsDQo+ID4gKwkucmVz ZXQgPSBlY2xfaXNodHBfY2xfcmVzZXQsDQo+ID4gKwkuZHJpdmVyLnBtID0gJmVjbF9pc2h0cF9w bV9vcHMsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IF9faW5pdCBlY2xfaXNodHBf aW5pdCh2b2lkKSB7DQo+ID4gKwlyZXR1cm4gaXNodHBfY2xfZHJpdmVyX3JlZ2lzdGVyKCZlY2xf aXNodHBfY2xfZHJpdmVyLCBUSElTX01PRFVMRSk7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRp YyB2b2lkIF9fZXhpdCBlY2xfaXNodHBfZXhpdCh2b2lkKSB7DQo+ID4gKwlyZXR1cm4gaXNodHBf Y2xfZHJpdmVyX3VucmVnaXN0ZXIoJmVjbF9pc2h0cF9jbF9kcml2ZXIpOw0KPiA+ICt9DQo+ID4g Kw0KPiA+ICtsYXRlX2luaXRjYWxsKGVjbF9pc2h0cF9pbml0KTsNCj4gPiArbW9kdWxlX2V4aXQo ZWNsX2lzaHRwX2V4aXQpOw0KPiA+ICsNCj4gPiArTU9EVUxFX0RFU0NSSVBUSU9OKCJJU0ggSVNI VFAgZWNsaXRlIGNsaWVudCBvcHJlZ2lvbiBkcml2ZXIiKTsNCj4gPiArTU9EVUxFX0FVVEhPUigi SyBOYWR1dmFsYXRoLCBTdW1lc2gNCj4gPiArPHN1bWVzaC5rLm5hZHV2YWxhdGhAaW50ZWwuY29t PiIpOw0KPiA+ICsNCj4gPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCB2MiIpOw0KPiA+ICtNT0RVTEVf QUxJQVMoImlzaHRwOioiKTsNCj4gPg0KDQpJJ2xsIHB1dCB0aHJvdWdoIHNvbWUgdGVzdHMgYW5k IHN1Ym1pdCBWMyBpZiB5b3UgZG9uJ3QgaGF2ZSBhbnkgb3RoZXIgY29tbWVudHMuDQoNCg==