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=-6.9 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS autolearn=ham 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 43AC6C10F14 for ; Thu, 3 Oct 2019 18:34:27 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E1E632086A for ; Thu, 3 Oct 2019 18:34:26 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=distech-controls.com header.i=@distech-controls.com header.b="HA3JtgFR" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388960AbfJCSe0 (ORCPT ); Thu, 3 Oct 2019 14:34:26 -0400 Received: from mx0a-002ab301.pphosted.com ([148.163.150.161]:49092 "EHLO mx0a-002ab301.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2389478AbfJCSe0 (ORCPT ); Thu, 3 Oct 2019 14:34:26 -0400 Received: from pps.filterd (m0118791.ppops.net [127.0.0.1]) by mx0a-002ab301.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x93IFgG4021519 for ; Thu, 3 Oct 2019 14:34:21 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=distech-controls.com; h=from : to : subject : date : message-id : content-type : content-transfer-encoding : mime-version; s=pps-02182019; bh=0AQhsE/hj3p0b2/iZQgyV/JDHC1ZSY/LpRcf5k55ptc=; b=HA3JtgFRHbZZKg4hAk1SUngEwWhOE0d1GqiMq+RC4YQ5o4DXEi61P7Ms8fqOGoi0TCT4 C0YdJ/TqxMRI5nNWhQmIwGtPOVprDWTKVmPzUzhNri+Sh7pXRYgmYEH1dR1/Hwqaun1C 0nZkVM/rv8kEzoMrTY4kcSYaCmMwI2eP78PXBEBsc0/4GODkALx7Fgp3dF+07cHiW4N1 OOn6X0OST7cRmJtyRVkBFQfeFSacTDml5AtoRH0+4Zqlm3Ii/OUKHzxgCVtNEt0y4gRp R0MEzbVMoKJabuu8btbJ14A6WAiAgnnVvRAVaPBEFtH/xGhp6YcU5lpTb5cLJ/GGL96A 2A== Received: from nam05-dm3-obe.outbound.protection.outlook.com (mail-dm3nam05lp2056.outbound.protection.outlook.com [104.47.49.56]) by mx0a-002ab301.pphosted.com with ESMTP id 2vckb621tn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Thu, 03 Oct 2019 14:34:20 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RmBnekC3j4wQKuYZJ6GbBjH667lZi+iyfZGvF6/9jtzJNuhgsaujaSeIZI42O6GhoFD3LnRJZG/Cris4by+ycznCu5Xi8DhgjBgrk+ZvsKoUaCCc3gjmZ0cjiKFbWq1EmSRVWB5H9xuluh8PL5qREiUd8EFdXZVr0yZIm+AFHHTjZ1BH1oPLEezkNXWiqEoWi08fMGyqFCX0Or9nrV5z5UjhdHzMPhMaksCflWx7Sy2QM9v30q6arfBlmKfMeGDkpQovoN81zPj6MEmdVB0SNLWHYVe/vsgW30WzRX2OWtCAjZHZNIkD1brGE76dPTkw/FLIiS3vBDvvnr0+0ndx3w== 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=0AQhsE/hj3p0b2/iZQgyV/JDHC1ZSY/LpRcf5k55ptc=; b=mA99enXmA0Y8rwqvtWQYTRy4jm5JiiUwftfQ+fgjnrOPlMLFfwJNuvaxBo16fCoZaPVmZLvFs6fBiwKvXSf8e65UtHUykFrxTHQ7GX2SlC8d+E334EIn0P5gHzc0t+1cmN4d+P7nZm7h6ytNjPC8Dow4hvgGwQEQ7i/8VfCMUizdiliJsczKjV59kYmT6YdUQUXkPdx8u7JdN6uEJ/g45lSc22nAGAiGwzu0Onpcu4T8YNS3zsOasAYtYJcqMCHYKSoBoPpJ4CU8Kj1y/wjVp5JRQDm+H9qzbxzeR66nPoE61RbWsU1pvW9hS8fL/xuh55GYinfgtbFGeiBegsUtlA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=distech-controls.com; dmarc=pass action=none header.from=distech-controls.com; dkim=pass header.d=distech-controls.com; arc=none Received: from BL0PR01MB4835.prod.exchangelabs.com (20.177.147.211) by BL0PR01MB4641.prod.exchangelabs.com (20.177.205.204) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2305.20; Thu, 3 Oct 2019 18:34:17 +0000 Received: from BL0PR01MB4835.prod.exchangelabs.com ([fe80::35e9:e131:c84f:e0a5]) by BL0PR01MB4835.prod.exchangelabs.com ([fe80::35e9:e131:c84f:e0a5%3]) with mapi id 15.20.2305.023; Thu, 3 Oct 2019 18:34:17 +0000 From: "Tremblay, Eric" To: "linux-hwmon@vger.kernel.org" Subject: [PATCH v3 1/2] hwmon: Add driver for Texas Instruments TMP512/513 sensor chips Thread-Topic: [PATCH v3 1/2] hwmon: Add driver for Texas Instruments TMP512/513 sensor chips Thread-Index: AdV6GQ+lRNdq59AnRleVYgqb/zl9PA== Date: Thu, 3 Oct 2019 18:34:17 +0000 Message-ID: Accept-Language: en-CA, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mib-plugin: true x-originating-ip: [207.253.3.19] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d087217e-db6f-4729-0b48-08d748304cb5 x-ms-office365-filtering-ht: Tenant x-ms-traffictypediagnostic: BL0PR01MB4641: x-ms-exchange-purlcount: 4 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 01792087B6 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(396003)(136003)(376002)(366004)(346002)(199004)(189003)(74316002)(2501003)(6916009)(7696005)(6116002)(3846002)(6306002)(99286004)(55016002)(9686003)(86362001)(476003)(6506007)(7736002)(305945005)(26005)(316002)(486006)(102836004)(25786009)(66066001)(966005)(478600001)(81156014)(8676002)(14454004)(71190400001)(186003)(81166006)(30864003)(256004)(14444005)(5640700003)(5660300002)(71200400001)(33656002)(2906002)(6436002)(66556008)(66476007)(76116006)(66946007)(66446008)(64756008)(52536014)(2351001)(8936002)(2004002)(579004)(559001);DIR:OUT;SFP:1101;SCL:1;SRVR:BL0PR01MB4641;H:BL0PR01MB4835.prod.exchangelabs.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: distech-controls.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: jwphYjfQyTFp1LQlGJrCgPLrU673mfXNxDnR/Z7qLoIGxwZuFHoTYL/Ii0S6Kj0bC14cY4ecT20jdjc4Llcr7nGETFjfe3uhXsSZLFb3xkyxQcLWir0W8AH8MCDjm6V+wcLy6H6iRPhjKWMPKKIOhn7v4VM6IFqH5iclKflp27zsLBHcIlug+tgcN4rPUm9BYbFdaBPZsZmg2dLXq67Ao4oZOoqVZEPl6ZoyOzZ5hok40wy2cckltkSreowyjAMfeWdHdu3oifMAkSSSe5VdpTcLxEtFdUHI5v3YEcL4HrzN4pta0qRveaE0RLNncw4sTxYfxPPKfFR2dHHkNvP+Zm0+87EU8RP0ifTXncDPPF2xr4nccXNZlWwFDlJEXaCOibR0GvvuqZu6nSIEFz+94CGLAYhy8qNVop3TCguUEkmdj1pbTBA+rZP3t5jPR0/jyeuMjeydxFZm1lpkl6qOpA== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: distech-controls.com X-MS-Exchange-CrossTenant-Network-Message-Id: d087217e-db6f-4729-0b48-08d748304cb5 X-MS-Exchange-CrossTenant-originalarrivaltime: 03 Oct 2019 18:34:17.7378 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: caadbe96-024e-4f67-82ec-fb28ff53d16d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: CiJkM/RELh1m2XaUbJC6NZ6XZlGF/k6pXsm7VJvTlsAg+TYGjYTDXeUM8iKkIbp9CcrliPYs+sofv+ewOfcQwg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR01MB4641 X-Proofpoint-Processed: True X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 malwarescore=0 bulkscore=0 phishscore=0 adultscore=0 mlxlogscore=999 priorityscore=1501 clxscore=1015 suspectscore=0 impostorscore=0 mlxscore=0 lowpriorityscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1908290000 definitions=main-1910030152 Sender: linux-hwmon-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-hwmon@vger.kernel.org aHdtb246IEFkZCBkcml2ZXIgZm9yIFRleGFzIEluc3RydW1lbnRzIFRNUDUxMi81MTMgc2Vuc29y IGNoaXBzLg0KDQpUSSdzIFRNUDUxMi81MTMgYXJlIEkyQy9TTUJ1cyBzeXN0ZW0gbW9uaXRvciBj aGlwcy4gVGhlc2UgY2hpcHMNCm1vbml0b3IgdGhlIHN1cHBseSB2b2x0YWdlLCBzdXBwbHkgY3Vy cmVudCwgcG93ZXIgY29uc3VtcHRpb24NCmFuZCBwcm92aWRlIG9uZSBsb2NhbCBhbmQgdXAgdG8g dGhyZWUgKFRNUDUxMykgcmVtb3RlIHRlbXBlcmF0dXJlIHNlbnNvcnMuDQoNCkl0IGhhcyBiZWVu IHRlc3RlZCB1c2luZyBhIFRJIFRNUDUxMyBkZXZlbG9wbWVudCBraXQgKFRNUDUxM0VWTSkNCg0K U2lnbmVkLW9mZi1ieTogRXJpYyBUcmVtYmxheSA8ZXRyZW1ibGF5QGRpc3RlY2gtY29udHJvbHMu Y29tPg0KLS0tDQogRG9jdW1lbnRhdGlvbi9od21vbi90bXA1MTMucnN0ICAgICAgIHwgMTAyICsr Kw0KIE1BSU5UQUlORVJTICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArDQogZHJpdmVy cy9od21vbi9LY29uZmlnICAgICAgICAgICAgICAgIHwgIDEwICsNCiBkcml2ZXJzL2h3bW9uL01h a2VmaWxlICAgICAgICAgICAgICAgfCAgIDEgKw0KIGRyaXZlcnMvaHdtb24vdG1wNTEzLmMgICAg ICAgICAgICAgICB8IDkwMSArKysrKysrKysrKysrKysrKysrKysrKysrKysNCiBpbmNsdWRlL2xp bnV4L3BsYXRmb3JtX2RhdGEvdG1wNTEzLmggfCAgMjggKw0KIDYgZmlsZXMgY2hhbmdlZCwgMTA0 OSBpbnNlcnRpb25zKCspDQogY3JlYXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vaHdtb24v dG1wNTEzLnJzdA0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2h3bW9uL3RtcDUxMy5jDQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS90bXA1MTMuaA0K DQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi90bXA1MTMucnN0IGIvRG9jdW1lbnRh dGlvbi9od21vbi90bXA1MTMucnN0DQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw MDAwMDAwLi5iMzgzNzc0OGNhN2UNCi0tLSAvZGV2L251bGwNCisrKyBiL0RvY3VtZW50YXRpb24v aHdtb24vdG1wNTEzLnJzdA0KQEAgLTAsMCArMSwxMDIgQEANCisuLiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMA0KK0tlcm5lbCBkcml2ZXIgdG1wNTEzDQorPT09PT09PT09PT09PT09 PT09PT0NCisNCitTdXBwb3J0ZWQgY2hpcHM6DQorDQorICAqIFRleGFzIEluc3RydW1lbnRzIFRN UDUxMg0KKw0KKyAgICBQcmVmaXg6ICd0bXA1MTInDQorDQorICAgIERhdGFzaGVldDogaHR0cDov L3d3dy50aS5jb20vbGl0L2RzL3N5bWxpbmsvdG1wNTEyLnBkZg0KKw0KKyAgKiBUZXhhcyBJbnN0 cnVtZW50cyBUTVA1MTMNCisNCisgICAgUHJlZml4OiAndG1wNTEzJw0KKw0KKyAgICBEYXRhc2hl ZXQ6IGh0dHA6Ly93d3cudGkuY29tL2xpdC9kcy9zeW1saW5rL3RtcDUxMy5wZGYNCisNCitBdXRo b3JzOg0KKw0KKwlFcmljIFRyZW1ibGF5IDxldHJlbWJsYXlAZGlzdGVjaC1jb250cm9scy5jb20+ DQorDQorRGVzY3JpcHRpb24NCistLS0tLS0tLS0tLQ0KKw0KK1RoaXMgZHJpdmVyIGltcGxlbWVu dHMgc3VwcG9ydCBmb3IgVGV4YXMgSW5zdHJ1bWVudHMgVE1QNTEyLCBhbmQgVE1QNTEzDQordGVt cGVyYXR1cmUgYW5kIHBvd2VyIHN1cHBseSBzZW5zb3IgY2hpcHMuIFRoZXNlIGNoaXBzIGltcGxl bWVudCBvbmUNCitsb2NhbCBhbmQgdXAgdG8gdGhyZWUgKFRNUDUxMykgdGVtcGVyYXR1cmUgc2Vu c29ycy4gVGhlIGNoaXBzIGFsc28gaW1wbGVtZW50DQorcG93ZXIgc3VwcGx5IG1vbml0b3Jpbmcg c3VjaCBhcyBzaHVudCB2b2x0YWdlLCBzaHVudCBjdXJyZW50LCBidXMgdm9sdGFnZQ0KK2FuZCBw b3dlciBjb25zdW1wdGlvbi4NCisNCitUaGUgdGVtcGVyYXR1cmVzIGFyZSBtZWFzdXJlZCBpbiBk ZWdyZWVzIENlbHNpdXMgd2l0aCBhIHJhbmdlIG9mDQorLTQwIHRvICsgMTI1IGRlZ3JlZXMgd2l0 aCBhIHJlc29sdXRpb24gb2YgMC4wNjI1IGRlZ3JlZSBDLg0KKw0KK0ZvciBoeXN0ZXJlc2lzIHZh bHVlLCBvbmx5IHRoZSBmaXJzdCBjaGFubmVsIGlzIHdyaXRhYmxlLiBXcml0aW5nIHRvIGl0DQor d2lsbCBhZmZlY3QgYWxsIG90aGVyIHZhbHVlcyBzaW5jZSBlYWNoIGNoYW5uZWxzIGFyZSBzaGFy aW5nIHRoZSBzYW1lDQoraHlzdGVyZXNpcyB2YWx1ZS4gVGhlIGh5c3RlcmVzaXMgaXMgaW4gZGVn cmVlcyBDZWxzaXVzIHdpdGggYSByYW5nZSBvZg0KKzAgdG8gMTI3LjUgZGVncmVlcyB3aXRoIGEg cmVzb2x1dGlvbiBvZiAwLjUgZGVncmVlLg0KKw0KK1RoZSBkcml2ZXIgZXhwb3J0cyB0aGUgdGVt cGVyYXR1cmUgdmFsdWVzIHZpYSB0aGUgZm9sbG93aW5nIHN5c2ZzIGZpbGVzOg0KKw0KKyoqdGVt cFsxLTRdX2lucHV0KioNCisNCisqKnRlbXBbMS00XV9jcml0KioNCisNCisqKnRlbXBbMS00XV9j cml0X2FsYXJtKioNCisNCisqKnRlbXBbMS00XV9jcml0X2h5c3QqKg0KKw0KK1RoZSBzaHVudCB2 b2x0YWdlIGlzIG1lYXN1cmVkIGluIG1pY3JvIHZvbHRzLiBUaGVyZSBhcmUgZm91ciBjb25maWd1 cmFibGUNCityYW5nZTogMzIwbVYsIDE2MG1WLCA4MG1WIGFuZCA0MG1WIGFsbCBvZiB0aGVtIHdp dGggYSByZXNvbHV0aW9uIG9mIDEwIHVWLg0KK1RoZSByYW5nZSBkZXBlbmRzIG9uIHRoZSBwZ2Eg Z2FpbiBzcGVjaWZpZWQgaW4gdGhlIGRldmljZSB0cmVlDQord2l0aCAicGdhLWdhaW4iIChkZWZh dWx0IHRvIDgpLiBUaGUgcmFuZ2Ugd2lsbCBiZSBlcXVhbCB0byBwZ2EgZ2Fpbg0KK211bHRpcGx5 IGJ5IDQwbVYuDQorDQorVGhlIGRyaXZlciBleHBvcnRzIHRoZSBzaHVudCB2b2x0YWdlIHZhbHVl cyB2aWEgdGhlIGZvbGxvd2luZyBzeXNGcyBmaWxlczoNCisNCisqKmluMF9pbnB1dCoqDQorDQor KippbjBfbGNyaXQqKg0KKw0KKyoqaW4wX2xjcml0X2FsYXJtKioNCisNCisqKmluMF9jcml0KioN CisNCisqKmluMF9jcml0X2FsYXJtKioNCisNCitUaGUgYnVzIHZvbHRhZ2UgaXMgbWVhc3VyZWQg aW4gbWlsbGkgdm9sdHMuIFRoZXJlIGFyZSB0d28gY29uZmlndWFibGUNCityYW5nZTogMzJWIGFu ZCAxNlYgYm90aCB3aXRoIGEgcmVzb2x1dGlvbiBvZiA0bVYuIEl0IGNhbiBiZSBjb25maWd1cmVk IGluIHRoZQ0KK2RldmljZSB0cmVlIHdpdGggImJ1cy12b2x0YWdlLXJhbmdlIiAoZGVmYXVsdCB0 byAzMlYpOw0KKw0KK1RoZSBkcml2ZXIgZXhwb3J0cyB0aGUgYnVzIHZvbHRhZ2UgdmFsdWVzIHZp YSB0aGUgZm9sbG93aW5nIHN5c0ZzIGZpbGVzOg0KKw0KKyoqaW4wX2lucHV0KioNCisNCisqKmlu MF9sY3JpdCoqDQorDQorKippbjBfbGNyaXRfYWxhcm0qKg0KKw0KKyoqaW4wX2NyaXQqKg0KKw0K KyoqaW4wX2NyaXRfYWxhcm0qKg0KKw0KK1RoZSBwb3dlciBhbmQgdGhlIGN1cnJlbnRzIHJhbmdl IGFuZCByZXNvbHV0aW9uIGRlcGVuZHMgb24gdGhlIGNhbGlicmF0aW9uDQorcmVnaXN0ZXIgdmFs dWUuIFRob3NlIHZhbHVlcyBhcmUgY2FsY3VsYXRlIGJ5IHRoZSBoYXJkd2FyZSB1c2luZyB0aG9z ZQ0KK2Zvcm11bGE6DQorDQorQ3VycmVudCA9IChTaHVudFZvbHRhZ2UgKiBDYWxpYnJhdGlvblJl Z2lzdGVyKSAvIDQwOTYNCitQb3dlciAgID0gKEN1cnJlbnQgKiBCdXNWb2x0YWdlKSAvIDUwMDAN CisNCitUaGUgZHJpdmVyIGV4cG9ydHMgdGhlIGN1cnJlbnQgYW5kIHBvd2VyIHZhbHVlcyB2aWEg dGhlIGZvbGxvd2luZyBzeXNGcyBmaWxlczoNCisNCisqKmN1cnIwX2lucHV0KioNCisNCisqKnBv d2VyMV9pbnB1dCoqDQorDQorKipwb3dlcjFfY3JpdCoqDQorDQorKipwb3dlcjFfY3JpdF9hbGFy bSoqDQorDQorVGhlIGNhbGlicmF0aW9uIHByb2Nlc3MgZm9sbG93IHRoZSBwcm9jZWR1cmUgb2Yg dGhlIGRhdGFzaGVldCAod2l0aG91dCBvdmVyZmxvdykNCithbmQgZGVwZW5kIG9uIHRoZSBzaHVu dCByZXNpc3RvciB2YWx1ZSBhbmQgdGhlIHBnYV9nYWluIHZhbHVlLg0KZGlmZiAtLWdpdCBhL01B SU5UQUlORVJTIGIvTUFJTlRBSU5FUlMNCmluZGV4IDI5NmRlMmI1MWM4My4uMWQxM2U1YmU2NjYx IDEwMDY0NA0KLS0tIGEvTUFJTlRBSU5FUlMNCisrKyBiL01BSU5UQUlORVJTDQpAQCAtMTYzNjks NiArMTYzNjksMTMgQEAgUzoJTWFpbnRhaW5lZA0KIEY6CURvY3VtZW50YXRpb24vaHdtb24vdG1w NDAxLnJzdA0KIEY6CWRyaXZlcnMvaHdtb24vdG1wNDAxLmMNCiANCitUTVA1MTMgSEFSRFdBUkUg TU9OSVRPUiBEUklWRVINCitNOglFcmljIFRyZW1ibGF5IDxldHJlbWJsYXlAZGlzdGVjaC1jb250 cm9scy5jb20+DQorTDoJbGludXgtaHdtb25Admdlci5rZXJuZWwub3JnDQorUzoJTWFpbnRhaW5l ZA0KK0Y6CURvY3VtZW50YXRpb24vaHdtb24vdG1wNTEzLnJzdA0KK0Y6CWRyaXZlcnMvaHdtb24v dG1wNTEzLmMNCisNCiBUTVBGUyAoU0hNRU0gRklMRVNZU1RFTSkNCiBNOglIdWdoIERpY2tpbnMg PGh1Z2hkQGdvb2dsZS5jb20+DQogTDoJbGludXgtbW1Aa3ZhY2sub3JnDQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9od21vbi9LY29uZmlnIGIvZHJpdmVycy9od21vbi9LY29uZmlnDQppbmRleCAxM2E2 YjRhZmI0YjMuLjkyNmUzYzk4ZGJkZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvaHdtb24vS2NvbmZp Zw0KKysrIGIvZHJpdmVycy9od21vbi9LY29uZmlnDQpAQCAtMTcwOSw2ICsxNzA5LDE2IEBAIGNv bmZpZyBTRU5TT1JTX1RNUDQyMQ0KIAkgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFz IGEgbW9kdWxlLiBJZiBzbywgdGhlIG1vZHVsZQ0KIAkgIHdpbGwgYmUgY2FsbGVkIHRtcDQyMS4N CiANCitjb25maWcgU0VOU09SU19UTVA1MTMNCisJdHJpc3RhdGUgIlRleGFzIEluc3RydW1lbnRz IFRNUDUxMyBhbmQgY29tcGF0aWJsZXMiDQorCWRlcGVuZHMgb24gSTJDDQorCWhlbHANCisJICBJ ZiB5b3Ugc2F5IHllcyBoZXJlIHlvdSBnZXQgc3VwcG9ydCBmb3IgVGV4YXMgSW5zdHJ1bWVudHMg VE1QNTEyLA0KKwkgIGFuZCBUTVA1MTMgdGVtcGVyYXR1cmUgYW5kIHBvd2VyIHN1cHBseSBzZW5z b3IgY2hpcHMuDQorDQorCSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1 bGUuIElmIHNvLCB0aGUgbW9kdWxlDQorCSAgd2lsbCBiZSBjYWxsZWQgdG1wNTEzLg0KKw0KIGNv bmZpZyBTRU5TT1JTX1ZFWFBSRVNTDQogCXRyaXN0YXRlICJWZXJzYXRpbGUgRXhwcmVzcyINCiAJ ZGVwZW5kcyBvbiBWRVhQUkVTU19DT05GSUcNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL01h a2VmaWxlIGIvZHJpdmVycy9od21vbi9NYWtlZmlsZQ0KaW5kZXggNDBjMDM2ZWE0NWU2Li43NjI2 NDIyOTE5MTQgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2h3bW9uL01ha2VmaWxlDQorKysgYi9kcml2 ZXJzL2h3bW9uL01ha2VmaWxlDQpAQCAtMTY2LDYgKzE2Niw3IEBAIG9iai0kKENPTkZJR19TRU5T T1JTX1RNUDEwMykJKz0gdG1wMTAzLm8NCiBvYmotJChDT05GSUdfU0VOU09SU19UTVAxMDgpCSs9 IHRtcDEwOC5vDQogb2JqLSQoQ09ORklHX1NFTlNPUlNfVE1QNDAxKQkrPSB0bXA0MDEubw0KIG9i ai0kKENPTkZJR19TRU5TT1JTX1RNUDQyMSkJKz0gdG1wNDIxLm8NCitvYmotJChDT05GSUdfU0VO U09SU19UTVA1MTMpCSs9IHRtcDUxMy5vDQogb2JqLSQoQ09ORklHX1NFTlNPUlNfVkVYUFJFU1Mp CSs9IHZleHByZXNzLWh3bW9uLm8NCiBvYmotJChDT05GSUdfU0VOU09SU19WSUFfQ1BVVEVNUCkr PSB2aWEtY3B1dGVtcC5vDQogb2JqLSQoQ09ORklHX1NFTlNPUlNfVklBNjg2QSkJKz0gdmlhNjg2 YS5vDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi90bXA1MTMuYyBiL2RyaXZlcnMvaHdtb24v dG1wNTEzLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjgyMGIz OTI0ODJkOA0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZHJpdmVycy9od21vbi90bXA1MTMuYw0KQEAg LTAsMCArMSw5MDEgQEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KKy8q DQorICogRHJpdmVyIGZvciBUZXhhcyBJbnN0cnVtZW50cyBUTVA1MTIsIFRNUDUxMyBwb3dlciBt b25pdG9yIGNoaXBzDQorICoNCisgKiBUTVA1MTM6DQorICogVGhlcm1hbC9Qb3dlciBNYW5hZ2Vt ZW50IHdpdGggVHJpcGxlIFJlbW90ZSBhbmQNCisgKiBMb2NhbCBUZW1wZXJhdHVyZSBTZW5zb3Ig YW5kIEN1cnJlbnQgU2h1bnQgTW9uaXRvcg0KKyAqIERhdGFzaGVldDogaHR0cDovL3d3dy50aS5j b20vbGl0L2dwbi90bXA1MTMNCisgKg0KKyAqIFRNUDUxMjoNCisgKiBUaGVybWFsL1Bvd2VyIE1h bmFnZW1lbnQgd2l0aCBEdWFsIFJlbW90ZQ0KKyAqCWFuZCBMb2NhbCBUZW1wZXJhdHVyZSBTZW5z b3IgYW5kIEN1cnJlbnQgU2h1bnQgTW9uaXRvcg0KKyAqIERhdGFzaGVldDogaHR0cDovL3d3dy50 aS5jb20vbGl0L2dwbi90bXA1MTINCisgKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOSBFcmljIFRy ZW1ibGF5IDxldHJlbWJsYXlAZGlzdGVjaC1jb250cm9scy5jb20+DQorICoNCisgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQ0KKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKyNpbmNsdWRlIDxsaW51eC9lcnIu aD4NCisjaW5jbHVkZSA8bGludXgvaHdtb24uaD4NCisjaW5jbHVkZSA8bGludXgvaHdtb24tc3lz ZnMuaD4NCisjaW5jbHVkZSA8bGludXgvaTJjLmg+DQorI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4N CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0K KyNpbmNsdWRlIDxsaW51eC9vZl9kZXZpY2UuaD4NCisjaW5jbHVkZSA8bGludXgvb2YuaD4NCisj aW5jbHVkZSA8bGludXgvcmVnbWFwLmg+DQorI2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCisjaW5j bHVkZSA8bGludXgvdXRpbF9tYWNyb3MuaD4NCisNCisjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1f ZGF0YS90bXA1MTMuaD4NCisNCisvLyBDb21tb24gcmVnaXN0ZXIgZGVmaW5pdGlvbg0KKyNkZWZp bmUgVE1QNTFYX1NIVU5UX0NPTkZJRwkJMHgwMA0KKyNkZWZpbmUgVE1QNTFYX1RFTVBfQ09ORklH CQkweDAxDQorI2RlZmluZSBUTVA1MVhfU1RBVFVTCQkJMHgwMg0KKyNkZWZpbmUgVE1QNTFYX1NN QlVTX0FMRVJUCQkweDAzDQorI2RlZmluZSBUTVA1MVhfU0hVTlRfVk9MVEFHRV9SRVNVTFQJMHgw NA0KKyNkZWZpbmUgVE1QNTFYX0JVU19WT0xUQUdFX1JFU1VMVAkweDA1DQorI2RlZmluZSBUTVA1 MVhfUE9XRVJfUkVTVUxUCQkweDA2DQorI2RlZmluZSBUTVA1MVhfU0hVTlRfQ1VSUkVOVF9SRVNV TFQJMHgwNw0KKyNkZWZpbmUgVE1QNTFYX0xPQ0FMX1RFTVBfUkVTVUxUCTB4MDgNCisjZGVmaW5l IFRNUDUxWF9SRU1PVEVfVEVNUF9SRVNVTFRfMQkweDA5DQorI2RlZmluZSBUTVA1MVhfUkVNT1RF X1RFTVBfUkVTVUxUXzIJMHgwQQ0KKyNkZWZpbmUgVE1QNTFYX1NIVU5UX1ZPTFRBR0VfSF9MSU1J VAkweDBDDQorI2RlZmluZSBUTVA1MVhfU0hVTlRfVk9MVEFHRV9MX0xJTUlUCTB4MEQNCisjZGVm aW5lIFRNUDUxWF9CVVNfVk9MVEFHRV9IX0xJTUlUCTB4MEUNCisjZGVmaW5lIFRNUDUxWF9CVVNf Vk9MVEFHRV9MX0xJTUlUCTB4MEYNCisjZGVmaW5lIFRNUDUxWF9QT1dFUl9MSU1JVAkJMHgxMA0K KyNkZWZpbmUgVE1QNTFYX0xPQ0FMX1RFTVBfTElNSVQJMHgxMQ0KKyNkZWZpbmUgVE1QNTFYX1JF TU9URV9URU1QX0xJTUlUXzEJMHgxMg0KKyNkZWZpbmUgVE1QNTFYX1JFTU9URV9URU1QX0xJTUlU XzIJMHgxMw0KKyNkZWZpbmUgVE1QNTFYX1NIVU5UX0NBTElCUkFUSU9OCTB4MTUNCisjZGVmaW5l IFRNUDUxWF9OX0ZBQ1RPUl9BTkRfSFlTVF8xCTB4MTYNCisjZGVmaW5lIFRNUDUxWF9OX0ZBQ1RP Ul8yCQkweDE3DQorI2RlZmluZSBUTVA1MVhfTUFOX0lEX1JFRwkJMHhGRQ0KKyNkZWZpbmUgVE1Q NTFYX0RFVklDRV9JRF9SRUcJCTB4RkYNCisNCisvLyBUTVA1MTMgc3BlY2lmaWMgcmVnaXN0ZXIg ZGVmaW5pdGlvbg0KKyNkZWZpbmUgVE1QNTEzX1JFTU9URV9URU1QX1JFU1VMVF8zCTB4MEINCisj ZGVmaW5lIFRNUDUxM19SRU1PVEVfVEVNUF9MSU1JVF8zCTB4MTQNCisjZGVmaW5lIFRNUDUxM19O X0ZBQ1RPUl8zCQkweDE4DQorDQorLy8gQ29tbW9uIGF0dHJzLCBhbmQgTlVMTA0KKyNkZWZpbmUg VE1QNTFYX01BTlVGQUNUVVJFUl9JRAkJMHg1NUZGDQorDQorI2RlZmluZSBUTVA1MTJfREVWSUNF X0lECQkweDIyRkYNCisjZGVmaW5lIFRNUDUxM19ERVZJQ0VfSUQJCTB4MjNGRg0KKw0KKy8vIERl ZmF1bHQgY29uZmlnDQorI2RlZmluZSBUTVA1MVhfU0hVTlRfQ09ORklHX0RFRkFVTFQJMHgzOTlG DQorI2RlZmluZSBUTVA1MVhfVEVNUF9MSU1JVF9ERUZBVUxUCTB4MkE4MA0KKyNkZWZpbmUgVE1Q NTFYX01BWF9SRUdJU1RFUl9BRERSCTB4RkYNCisNCisjZGVmaW5lIFRNUDUxMl9URU1QX0NPTkZJ R19ERUZBVUxUCTB4QkY4MA0KKyNkZWZpbmUgVE1QNTEzX1RFTVBfQ09ORklHX0RFRkFVTFQJMHhG RjgwDQorDQorLy8gTWFzayBhbmQgc2hpZnQNCisjZGVmaW5lIENVUlJFTlRfU0VOU0VfVk9MVEFH RV8zMjBfTUFTSwkweDE4MDANCisjZGVmaW5lIENVUlJFTlRfU0VOU0VfVk9MVEFHRV8xNjBfTUFT SwkweDEwMDANCisjZGVmaW5lIENVUlJFTlRfU0VOU0VfVk9MVEFHRV84MF9NQVNLCTB4MDgwMA0K KyNkZWZpbmUgQ1VSUkVOVF9TRU5TRV9WT0xUQUdFXzQwX01BU0sJMA0KKw0KKyNkZWZpbmUgVE1Q NTFYX0JVU19WT0xUQUdFX01BU0sJCTB4MjAwMA0KKyNkZWZpbmUgVE1QNTFYX1BHQV9NQVNLCQkJ MHgxODAwDQorI2RlZmluZSBUTVA1MVhfSFlTVF9NQVNLCQkweDAwRkYNCisNCisjZGVmaW5lIFRN UDUxWF9CVVNfVk9MVEFHRV9TSElGVAkzDQorI2RlZmluZSBUTVA1MVhfVEVNUF9TSElGVAkJMw0K Kw0KKy8vIEFsYXJtcw0KKyNkZWZpbmUgVE1QNTFYX1NIVU5UX1ZPTFRBR0VfSF9MSU1JVF9QT1MJ MTUNCisjZGVmaW5lIFRNUDUxWF9TSFVOVF9WT0xUQUdFX0xfTElNSVRfUE9TCTE0DQorI2RlZmlu ZSBUTVA1MVhfQlVTX1ZPTFRBR0VfSF9MSU1JVF9QT1MJCTEzDQorI2RlZmluZSBUTVA1MVhfQlVT X1ZPTFRBR0VfTF9MSU1JVF9QT1MJCTEyDQorI2RlZmluZSBUTVA1MVhfUE9XRVJfTElNSVRfUE9T CQkJMTENCisjZGVmaW5lIFRNUDUxWF9MT0NBTF9URU1QX0xJTUlUX1BPUwkJMTANCisjZGVmaW5l IFRNUDUxWF9SRU1PVEVfVEVNUF9MSU1JVF8xX1BPUwkJOQ0KKyNkZWZpbmUgVE1QNTFYX1JFTU9U RV9URU1QX0xJTUlUXzJfUE9TCQk4DQorI2RlZmluZSBUTVA1MTNfUkVNT1RFX1RFTVBfTElNSVRf M19QT1MJCTcNCisNCisvLyBNYXggYW5kIE1pbiB2YWx1ZQ0KKyNkZWZpbmUgTUFYX0JVU19WT0xU QUdFXzMyX0xJTUlUCTMyNzY0DQorI2RlZmluZSBNQVhfQlVTX1ZPTFRBR0VfMTZfTElNSVQJMTYz ODINCisNCisvLyBNYXggcG9zc2libGUgdmFsdWUgaXMgLTI1NiB0byArMjU2IGJ1dCBkYXRhc2hl ZXQgaW5kaWNhdGVkIC00MCB0byAxMjUuDQorI2RlZmluZSBNQVhfVEVNUF9MSU1JVAkJCTEyNTAw MA0KKyNkZWZpbmUgTUlOX1RFTVBfTElNSVQJCQktNDAwMDANCisNCisjZGVmaW5lIE1BWF9ORkFD VE9SCQkJMTI3DQorI2RlZmluZSBNSU5fTkZBQ1RPUgkJCS0xMjgNCisjZGVmaW5lIE1BWF9URU1Q X0hZU1QJCQkxMjc1MDANCisNCitzdGF0aWMgY29uc3QgdTggVE1QNTFYX1RFTVBfSU5QVVRbNF0g PSB7DQorCVRNUDUxWF9MT0NBTF9URU1QX1JFU1VMVCwNCisJVE1QNTFYX1JFTU9URV9URU1QX1JF U1VMVF8xLA0KKwlUTVA1MVhfUkVNT1RFX1RFTVBfUkVTVUxUXzIsDQorCVRNUDUxM19SRU1PVEVf VEVNUF9SRVNVTFRfMw0KK307DQorDQorc3RhdGljIGNvbnN0IHU4IFRNUDUxWF9URU1QX0NSSVRb NF0gPSB7DQorCVRNUDUxWF9MT0NBTF9URU1QX0xJTUlULA0KKwlUTVA1MVhfUkVNT1RFX1RFTVBf TElNSVRfMSwNCisJVE1QNTFYX1JFTU9URV9URU1QX0xJTUlUXzIsDQorCVRNUDUxM19SRU1PVEVf VEVNUF9MSU1JVF8zDQorfTsNCisNCitzdGF0aWMgY29uc3QgdTggVE1QNTFYX1RFTVBfQ1JJVF9B TEFSTVs0XSA9IHsNCisJVE1QNTFYX0xPQ0FMX1RFTVBfTElNSVRfUE9TLA0KKwlUTVA1MVhfUkVN T1RFX1RFTVBfTElNSVRfMV9QT1MsDQorCVRNUDUxWF9SRU1PVEVfVEVNUF9MSU1JVF8yX1BPUywN CisJVE1QNTEzX1JFTU9URV9URU1QX0xJTUlUXzNfUE9TDQorfTsNCisNCitzdGF0aWMgY29uc3Qg dTggVE1QNTFYX1RFTVBfQ1JJVF9IWVNUWzRdID0gew0KKwlUTVA1MVhfTl9GQUNUT1JfQU5EX0hZ U1RfMSwNCisJVE1QNTFYX05fRkFDVE9SX0FORF9IWVNUXzEsDQorCVRNUDUxWF9OX0ZBQ1RPUl9B TkRfSFlTVF8xLA0KKwlUTVA1MVhfTl9GQUNUT1JfQU5EX0hZU1RfMQ0KK307DQorDQorc3RhdGlj IGNvbnN0IHU4IFRNUDUxWF9JTl9JTlBVVFsyXSA9IHsNCisJVE1QNTFYX1NIVU5UX1ZPTFRBR0Vf UkVTVUxULA0KKwlUTVA1MVhfQlVTX1ZPTFRBR0VfUkVTVUxUDQorfTsNCisNCitzdGF0aWMgY29u c3QgdTggVE1QNTFYX0lOX0NSSVRbMl0gPSB7DQorCVRNUDUxWF9TSFVOVF9WT0xUQUdFX0hfTElN SVQsDQorCVRNUDUxWF9CVVNfVk9MVEFHRV9IX0xJTUlUDQorfTsNCisNCitzdGF0aWMgY29uc3Qg dTggVE1QNTFYX0lOX0xDUklUWzJdID0gew0KKwlUTVA1MVhfU0hVTlRfVk9MVEFHRV9MX0xJTUlU LA0KKwlUTVA1MVhfQlVTX1ZPTFRBR0VfTF9MSU1JVA0KK307DQorDQorc3RhdGljIGNvbnN0IHU4 IFRNUDUxWF9JTl9DUklUX0FMQVJNWzJdID0gew0KKwlUTVA1MVhfU0hVTlRfVk9MVEFHRV9IX0xJ TUlUX1BPUywNCisJVE1QNTFYX0JVU19WT0xUQUdFX0hfTElNSVRfUE9TDQorfTsNCisNCitzdGF0 aWMgY29uc3QgdTggVE1QNTFYX0lOX0xDUklUX0FMQVJNWzJdID0gew0KKwlUTVA1MVhfU0hVTlRf Vk9MVEFHRV9MX0xJTUlUX1BPUywNCisJVE1QNTFYX0JVU19WT0xUQUdFX0xfTElNSVRfUE9TDQor fTsNCisNCitzdGF0aWMgY29uc3QgdTggVE1QNTFYX0NVUlJfSU5QVVRbMV0gPSB7DQorCVRNUDUx WF9TSFVOVF9DVVJSRU5UX1JFU1VMVA0KK307DQorDQorc3RhdGljIGNvbnN0IHU4IFRNUDUxWF9Q T1dFUl9JTlBVVFsxXSA9IHsNCisJVE1QNTFYX1BPV0VSX1JFU1VMVA0KK307DQorDQorc3RhdGlj IGNvbnN0IHU4IFRNUDUxWF9QT1dFUl9DUklUWzFdID0gew0KKwlUTVA1MVhfUE9XRVJfTElNSVQN Cit9Ow0KKw0KK3N0YXRpYyBjb25zdCB1OCBUTVA1MVhfUE9XRVJfQ1JJVF9BTEFSTVsxXSA9IHsN CisJVE1QNTFYX1BPV0VSX0xJTUlUX1BPUw0KK307DQorDQorDQorc3RhdGljIHN0cnVjdCByZWdt YXBfY29uZmlnIHRtcDUxeF9yZWdtYXBfY29uZmlnID0gew0KKwkucmVnX2JpdHMgPSA4LA0KKwku dmFsX2JpdHMgPSAxNiwNCit9Ow0KKw0KK2VudW0gdG1wNTF4X2lkcyB7DQorCXRtcDUxMiwgdG1w NTEzDQorfTsNCisNCitzdHJ1Y3QgdG1wNTF4X2NvbmZpZyB7DQorCXUxNiBzaHVudF9jb25maWc7 DQorCXU4IHBnYV9zaGlmdDsNCisJdTE2IHBnYV9nYWluOw0KKwl1MTYgdmJ1c19tYXg7DQorCXUz MiBzaHVudF91b2htczsNCisNCisJdTE2IHRlbXBfY29uZmlnOw0KKw0KKwlzOCB0ZW1wXzJfbmZh Y3RvcjsNCisJczggdGVtcF8zX25mYWN0b3I7DQorCXM4IHRlbXBfNF9uZmFjdG9yOw0KKw0KKwl1 MzIgY3Vycl9sc2I7DQorCXUzMiBwd3JfbHNiOw0KKwl1OCByZWdpc3RlcnM7DQorfTsNCisNCitz dHJ1Y3QgdG1wNTF4X2RhdGEgew0KKwlzdHJ1Y3QgdG1wNTF4X2NvbmZpZyAqY29uZmlnOw0KKwll bnVtIHRtcDUxeF9pZHMgaWQ7DQorCXN0cnVjdCByZWdtYXAgKnJlZ21hcDsNCisJc3RydWN0IG11 dGV4IGNvbmZpZ19sb2NrOw0KK307DQorDQorc3RhdGljIHN0cnVjdCB0bXA1MXhfY29uZmlnIHRt cDUxeF9jb25maWdbXSA9IHsNCisJW3RtcDUxMl0gPSB7DQorCQkuc2h1bnRfY29uZmlnID0gVE1Q NTFYX1NIVU5UX0NPTkZJR19ERUZBVUxULA0KKwkJLnBnYV9zaGlmdCA9IDEsDQorCQkucGdhX2dh aW4gPSA4LA0KKwkJLnZidXNfbWF4ID0gMzIsDQorCQkuc2h1bnRfdW9obXMgPSAwLA0KKwkJLnRl bXBfY29uZmlnID0gVE1QNTEyX1RFTVBfQ09ORklHX0RFRkFVTFQsDQorCQkucmVnaXN0ZXJzID0g VE1QNTFYX01BWF9SRUdJU1RFUl9BRERSLA0KKwl9LA0KKwlbdG1wNTEzXSA9IHsNCisJCS5zaHVu dF9jb25maWcgPSBUTVA1MVhfU0hVTlRfQ09ORklHX0RFRkFVTFQsDQorCQkucGdhX3NoaWZ0ID0g MSwNCisJCS5wZ2FfZ2FpbiA9IDgsDQorCQkudmJ1c19tYXggPSAzMiwNCisJCS5zaHVudF91b2ht cyA9IDAsDQorCQkudGVtcF9jb25maWcgPSBUTVA1MTNfVEVNUF9DT05GSUdfREVGQVVMVCwNCisJ CS5yZWdpc3RlcnMgPSBUTVA1MVhfTUFYX1JFR0lTVEVSX0FERFIsDQorCX0sDQorfTsNCisNCitz dGF0aWMgbG9uZyB0bXA1MXhfZ2V0X3ZhbHVlKHN0cnVjdCBkZXZpY2UgKmRldiwgdTggcmVnLCB1 OCBwb3MsDQorCQkJICAgIHVuc2lnbmVkIGludCByZWd2YWwpDQorew0KKwlzdHJ1Y3QgdG1wNTF4 X2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCisJc3RydWN0IHRtcDUxeF9jb25m aWcgKmNvbmZpZyA9IGRhdGEtPmNvbmZpZzsNCisJbG9uZyB2YWw7DQorDQorCXN3aXRjaCAocmVn KSB7DQorCWNhc2UgVE1QNTFYX1NUQVRVUzoNCisJCXZhbCA9IChyZWd2YWwgPj4gcG9zKSAmIDE7 DQorCQlicmVhazsNCisJY2FzZSBUTVA1MVhfU0hVTlRfVk9MVEFHRV9SRVNVTFQ6DQorCWNhc2Ug VE1QNTFYX1NIVU5UX1ZPTFRBR0VfSF9MSU1JVDoNCisJY2FzZSBUTVA1MVhfU0hVTlRfVk9MVEFH RV9MX0xJTUlUOg0KKwkJLyoNCisJCSAqIDIncyBjb21wbGltZW50IG51bWJlciBzaGlmdGVkIGJ5 IG9uZSB0byBmb3VyIGRlcGVuZGluZw0KKwkJICogb24gdGhlIHBnYSBnYWluIHNldHRpbmcuDQor CQkgKiAxbHNiID0gMTB1Vg0KKwkJICovDQorCQl2YWwgPSBzaWduX2V4dGVuZDMyKHJlZ3ZhbCwg MTcgLSBjb25maWctPnBnYV9zaGlmdCk7DQorCQl2YWwgPSBESVZfUk9VTkRfQ0xPU0VTVCh2YWws IDEwMCk7DQorCQlicmVhazsNCisJY2FzZSBUTVA1MVhfQlVTX1ZPTFRBR0VfUkVTVUxUOg0KKwlj YXNlIFRNUDUxWF9CVVNfVk9MVEFHRV9IX0xJTUlUOg0KKwljYXNlIFRNUDUxWF9CVVNfVk9MVEFH RV9MX0xJTUlUOg0KKwkJLy8gMWxzYiA9IDRtVg0KKwkJdmFsID0gKHJlZ3ZhbCA+PiBUTVA1MVhf QlVTX1ZPTFRBR0VfU0hJRlQpICogNDsNCisJCWJyZWFrOw0KKwljYXNlIFRNUDUxWF9QT1dFUl9S RVNVTFQ6DQorCWNhc2UgVE1QNTFYX1BPV0VSX0xJTUlUOg0KKwkJLy8gUG93ZXIgPSAoY3VycmVu dCAqIEJ1c1ZvbHRhZ2UpIC8gNTAwMA0KKwkJdmFsID0gcmVndmFsICogY29uZmlnLT5wd3JfbHNi Ow0KKwkJYnJlYWs7DQorCWNhc2UgVE1QNTFYX1NIVU5UX0NVUlJFTlRfUkVTVUxUOg0KKwkJLy8g Q3VycmVudCA9IChTaHVudFZvbHRhZ2UgKiBDYWxpYnJhdGlvblJlZ2lzdGVyKSAvIDQwOTYNCisJ CXZhbCA9IHNpZ25fZXh0ZW5kMzIocmVndmFsLCAxNikgKiBjb25maWctPmN1cnJfbHNiOw0KKwkJ YnJlYWs7DQorCWNhc2UgVE1QNTFYX0xPQ0FMX1RFTVBfUkVTVUxUOg0KKwljYXNlIFRNUDUxWF9S RU1PVEVfVEVNUF9SRVNVTFRfMToNCisJY2FzZSBUTVA1MVhfUkVNT1RFX1RFTVBfUkVTVUxUXzI6 DQorCWNhc2UgVE1QNTEzX1JFTU9URV9URU1QX1JFU1VMVF8zOg0KKwljYXNlIFRNUDUxWF9MT0NB TF9URU1QX0xJTUlUOg0KKwljYXNlIFRNUDUxWF9SRU1PVEVfVEVNUF9MSU1JVF8xOg0KKwljYXNl IFRNUDUxWF9SRU1PVEVfVEVNUF9MSU1JVF8yOg0KKwljYXNlIFRNUDUxM19SRU1PVEVfVEVNUF9M SU1JVF8zOg0KKwkJLy8gMWxzYiA9IDAuMDYyNSBkZWdyZWVzIGNlbnRpZ3JhZGUNCisJCXZhbCA9 IHNpZ25fZXh0ZW5kMzIocmVndmFsLCAxNikgPj4gVE1QNTFYX1RFTVBfU0hJRlQ7DQorCQl2YWwg PSBESVZfUk9VTkRfQ0xPU0VTVCh2YWwgKiA2MjUsIDEwKTsNCisJCWJyZWFrOw0KKwljYXNlIFRN UDUxWF9OX0ZBQ1RPUl9BTkRfSFlTVF8xOg0KKwkJLy8gMWxzYiA9IDAuNSBkZWdyZWVzIGNlbnRp Z3JhZGUNCisJCXZhbCA9IChyZWd2YWwgJiBUTVA1MVhfSFlTVF9NQVNLKSAqIDUwMDsNCisJCWJy ZWFrOw0KKwlkZWZhdWx0Og0KKwkJLy8gUHJvZ3JhbW1lciBnb29mZWQNCisJCVdBUk5fT05fT05D RSgxKTsNCisJCXZhbCA9IDA7DQorCQlicmVhazsNCisJfQ0KKw0KKwlyZXR1cm4gdmFsOw0KK30N CisNCitzdGF0aWMgaW50IHRtcDUxeF9zZXRfdmFsdWUoc3RydWN0IGRldmljZSAqZGV2LCB1OCBy ZWcsIGxvbmcgdmFsKQ0KK3sNCisJc3RydWN0IHRtcDUxeF9kYXRhICpkYXRhID0gZGV2X2dldF9k cnZkYXRhKGRldik7DQorCXN0cnVjdCB0bXA1MXhfY29uZmlnICpjb25maWcgPSBkYXRhLT5jb25m aWc7DQorCWludCByZWd2YWwsIHJldCwgbWF4X3ZhbDsNCisJdTMyIG1hc2sgPSAwOw0KKw0KKwlt dXRleF9sb2NrKCZkYXRhLT5jb25maWdfbG9jayk7DQorDQorCXN3aXRjaCAocmVnKSB7DQorCWNh c2UgVE1QNTFYX1NIVU5UX1ZPTFRBR0VfSF9MSU1JVDoNCisJY2FzZSBUTVA1MVhfU0hVTlRfVk9M VEFHRV9MX0xJTUlUOg0KKwkJLy8gMWxzYiA9IDEwdVYNCisJCXZhbCAqPSAxMDA7DQorCQltYXhf dmFsID0gVTE2X01BWCA+PiBjb25maWctPnBnYV9zaGlmdDsNCisJCXJlZ3ZhbCA9IGNsYW1wX3Zh bCh2YWwsIC1tYXhfdmFsLCBtYXhfdmFsKTsNCisJCWJyZWFrOw0KKwljYXNlIFRNUDUxWF9CVVNf Vk9MVEFHRV9IX0xJTUlUOg0KKwljYXNlIFRNUDUxWF9CVVNfVk9MVEFHRV9MX0xJTUlUOg0KKwkJ Ly8gMWxzYiA9IDRtVg0KKwkJbWF4X3ZhbCA9IChjb25maWctPnZidXNfbWF4ID09IDMyKSA/DQor CQkJTUFYX0JVU19WT0xUQUdFXzMyX0xJTUlUIDogTUFYX0JVU19WT0xUQUdFXzE2X0xJTUlUOw0K Kw0KKwkJdmFsID0gY2xhbXBfdmFsKERJVl9ST1VORF9DTE9TRVNUKHZhbCwgNCksIDAsIG1heF92 YWwpOw0KKwkJcmVndmFsID0gdmFsIDw8IFRNUDUxWF9CVVNfVk9MVEFHRV9TSElGVDsNCisJCWJy ZWFrOw0KKwljYXNlIFRNUDUxWF9QT1dFUl9MSU1JVDoNCisJCXJlZ3ZhbCA9IGNsYW1wX3ZhbChE SVZfUk9VTkRfQ0xPU0VTVCh2YWwsIGNvbmZpZy0+cHdyX2xzYiksIDAsDQorCQkJCSAgIFUxNl9N QVgpOw0KKwkJYnJlYWs7DQorCWNhc2UgVE1QNTFYX0xPQ0FMX1RFTVBfTElNSVQ6DQorCWNhc2Ug VE1QNTFYX1JFTU9URV9URU1QX0xJTUlUXzE6DQorCWNhc2UgVE1QNTFYX1JFTU9URV9URU1QX0xJ TUlUXzI6DQorCWNhc2UgVE1QNTEzX1JFTU9URV9URU1QX0xJTUlUXzM6DQorCQkvLyAxbHNiID0g MC4wNjI1IGRlZ3JlZXMgY2VudGlncmFkZQ0KKwkJdmFsID0gY2xhbXBfdmFsKHZhbCwgTUlOX1RF TVBfTElNSVQsIE1BWF9URU1QX0xJTUlUKTsNCisJCXJlZ3ZhbCA9IERJVl9ST1VORF9DTE9TRVNU KHZhbCAqIDEwLCA2MjUpIDw8IFRNUDUxWF9URU1QX1NISUZUOw0KKwkJYnJlYWs7DQorCWNhc2Ug VE1QNTFYX05fRkFDVE9SX0FORF9IWVNUXzE6DQorCQkvLyAxbHNiID0gMC41IGRlZ3JlZXMgY2Vu dGlncmFkZQ0KKwkJdmFsID0gY2xhbXBfdmFsKHZhbCwgMCwgTUFYX1RFTVBfSFlTVCk7DQorCQly ZWd2YWwgPSBESVZfUk9VTkRfQ0xPU0VTVCh2YWwsIDUwMCk7DQorCQltYXNrID0gVE1QNTFYX0hZ U1RfTUFTSzsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJLy8gUHJvZ3JhbW1lciBnb29mZWQN CisJCVdBUk5fT05fT05DRSgxKTsNCisJCXJlZ3ZhbCA9IDA7DQorCQlicmVhazsNCisJfQ0KKw0K KwlpZiAobWFzayA9PSAwKSB7DQorCQlkZXZfZGJnKGRldiwgIndyaXRlIHJlZ2lzdGVyIDB4JTAy eCwgdmFsID0gMHglMDR4XG4iLCByZWcsDQorCQkJcmVndmFsKTsNCisJCXJldCA9IHJlZ21hcF93 cml0ZShkYXRhLT5yZWdtYXAsIHJlZywgcmVndmFsKTsNCisJfSBlbHNlIHsNCisJCWRldl9kYmco ZGV2LCAidXBkYXRlIHJlZyAweCUwMngsIG1hc2sgPSAweCUwNHgsIHZhbCA9IDB4JTA0eFxuIiwN CisJCQlyZWcsIG1hc2ssIHJlZ3ZhbCk7DQorCQlyZXQgPSByZWdtYXBfdXBkYXRlX2JpdHMoZGF0 YS0+cmVnbWFwLCByZWcsIG1hc2ssIHJlZ3ZhbCk7DQorCX0NCisNCisJbXV0ZXhfdW5sb2NrKCZk YXRhLT5jb25maWdfbG9jayk7DQorDQorCXJldHVybiByZXQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQg dG1wNTF4X3JlYWRfcmVnKHN0cnVjdCBkZXZpY2UgKmRldiwgaW50IHJlZywgdW5zaWduZWQgaW50 ICpyZWd2YWwpDQorew0KKwlzdHJ1Y3QgdG1wNTF4X2RhdGEgKmRhdGEgPSBkZXZfZ2V0X2RydmRh dGEoZGV2KTsNCisJaW50IHJldDsNCisNCisJZGV2X2RiZyhkZXYsICJTdGFydGluZyByZWdpc3Rl ciAlMDJYIHJlYWRcbiIsIHJlZyk7DQorDQorCXJldCA9IHJlZ21hcF9yZWFkKGRhdGEtPnJlZ21h cCwgcmVnLCByZWd2YWwpOw0KKwlpZiAocmV0IDwgMCkNCisJCXJldHVybiByZXQ7DQorDQorCWRl dl9kYmcoZGV2LCAicmVhZCAlMDJYLCB2YWwgPSAweCUwNHhcbiIsIHJlZywgKnJlZ3ZhbCk7DQor DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IHRtcDUxeF9yZWFkKHN0cnVjdCBkZXZp Y2UgKmRldiwgZW51bSBod21vbl9zZW5zb3JfdHlwZXMgdHlwZSwNCisJCSAgICAgICB1MzIgYXR0 ciwgaW50IGNoYW5uZWwsIGxvbmcgKnZhbCkNCit7DQorCWludCByZXQ7DQorCXUzMiByZWd2YWw7 DQorCXU4IHBvcyA9IDAsIHJlZyA9IDA7DQorDQorCXN3aXRjaCAodHlwZSkgew0KKwljYXNlIGh3 bW9uX3RlbXA6DQorCQlzd2l0Y2ggKGF0dHIpIHsNCisJCWNhc2UgaHdtb25fdGVtcF9pbnB1dDoN CisJCQlyZWcgPSBUTVA1MVhfVEVNUF9JTlBVVFtjaGFubmVsXTsNCisJCQlicmVhazsNCisJCWNh c2UgaHdtb25fdGVtcF9jcml0X2FsYXJtOg0KKwkJCXJlZyA9IFRNUDUxWF9TVEFUVVM7DQorCQkJ cG9zID0gVE1QNTFYX1RFTVBfQ1JJVF9BTEFSTVtjaGFubmVsXTsNCisJCQlicmVhazsNCisJCWNh c2UgaHdtb25fdGVtcF9jcml0Og0KKwkJCXJlZyA9IFRNUDUxWF9URU1QX0NSSVRbY2hhbm5lbF07 DQorCQkJYnJlYWs7DQorCQljYXNlIGh3bW9uX3RlbXBfY3JpdF9oeXN0Og0KKwkJCXJlZyA9IFRN UDUxWF9URU1QX0NSSVRfSFlTVFtjaGFubmVsXTsNCisJCQlicmVhazsNCisJCX0NCisJCWJyZWFr Ow0KKwljYXNlIGh3bW9uX2luOg0KKwkJc3dpdGNoIChhdHRyKSB7DQorCQljYXNlIGh3bW9uX2lu X2lucHV0Og0KKwkJCXJlZyA9IFRNUDUxWF9JTl9JTlBVVFtjaGFubmVsXTsNCisJCQlicmVhazsN CisJCWNhc2UgaHdtb25faW5fbGNyaXRfYWxhcm06DQorCQkJcmVnID0gVE1QNTFYX1NUQVRVUzsN CisJCQlwb3MgPSBUTVA1MVhfSU5fTENSSVRfQUxBUk1bY2hhbm5lbF07DQorCQkJYnJlYWs7DQor CQljYXNlIGh3bW9uX2luX2NyaXRfYWxhcm06DQorCQkJcmVnID0gVE1QNTFYX1NUQVRVUzsNCisJ CQlwb3MgPSBUTVA1MVhfSU5fQ1JJVF9BTEFSTVtjaGFubmVsXTsNCisJCQlicmVhazsNCisJCWNh c2UgaHdtb25faW5fbGNyaXQ6DQorCQkJcmVnID0gVE1QNTFYX0lOX0xDUklUW2NoYW5uZWxdOw0K KwkJCWJyZWFrOw0KKwkJY2FzZSBod21vbl9pbl9jcml0Og0KKwkJCXJlZyA9IFRNUDUxWF9JTl9D UklUW2NoYW5uZWxdOw0KKwkJCWJyZWFrOw0KKwkJfQ0KKwkJYnJlYWs7DQorCWNhc2UgaHdtb25f Y3VycjoNCisJCXN3aXRjaCAoYXR0cikgew0KKwkJY2FzZSBod21vbl9jdXJyX2lucHV0Og0KKwkJ CXJlZyA9IFRNUDUxWF9DVVJSX0lOUFVUW2NoYW5uZWxdOw0KKwkJCWJyZWFrOw0KKwkJfQ0KKwkJ YnJlYWs7DQorCWNhc2UgaHdtb25fcG93ZXI6DQorCQlzd2l0Y2ggKGF0dHIpIHsNCisJCWNhc2Ug aHdtb25fcG93ZXJfaW5wdXQ6DQorCQkJcmVnID0gVE1QNTFYX1BPV0VSX0lOUFVUW2NoYW5uZWxd Ow0KKwkJCWJyZWFrOw0KKwkJY2FzZSBod21vbl9wb3dlcl9jcml0X2FsYXJtOg0KKwkJCXJlZyA9 IFRNUDUxWF9TVEFUVVM7DQorCQkJcG9zID0gVE1QNTFYX1BPV0VSX0NSSVRfQUxBUk1bY2hhbm5l bF07DQorCQkJYnJlYWs7DQorCQljYXNlIGh3bW9uX3Bvd2VyX2NyaXQ6DQorCQkJcmVnID0gVE1Q NTFYX1BPV0VSX0NSSVRbY2hhbm5lbF07DQorCQkJYnJlYWs7DQorCQl9DQorCQlicmVhazsNCisJ ZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorDQorCWlmIChyZWcgPT0gMCkNCisJCXJldHVybiAt RU9QTk9UU1VQUDsNCisNCisJcmV0ID0gdG1wNTF4X3JlYWRfcmVnKGRldiwgcmVnLCAmcmVndmFs KTsNCisJaWYgKHJldCA8IDApDQorCQlyZXR1cm4gcmV0Ow0KKw0KKwkqdmFsID0gdG1wNTF4X2dl dF92YWx1ZShkZXYsIHJlZywgcG9zLCByZWd2YWwpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3Rh dGljIGludCB0bXA1MXhfd3JpdGUoc3RydWN0IGRldmljZSAqZGV2LCBlbnVtIGh3bW9uX3NlbnNv cl90eXBlcyB0eXBlLA0KKwkJCXUzMiBhdHRyLCBpbnQgY2hhbm5lbCwgbG9uZyB2YWwpDQorew0K Kwl1OCByZWcgPSAwOw0KKw0KKwlzd2l0Y2ggKHR5cGUpIHsNCisJY2FzZSBod21vbl90ZW1wOg0K KwkJc3dpdGNoIChhdHRyKSB7DQorCQljYXNlIGh3bW9uX3RlbXBfY3JpdDoNCisJCQlyZWcgPSBU TVA1MVhfVEVNUF9DUklUW2NoYW5uZWxdOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBod21vbl90ZW1w X2NyaXRfaHlzdDoNCisJCQlyZWcgPSBUTVA1MVhfVEVNUF9DUklUX0hZU1RbY2hhbm5lbF07DQor CQkJYnJlYWs7DQorCQl9DQorCQlicmVhazsNCisJY2FzZSBod21vbl9pbjoNCisJCXN3aXRjaCAo YXR0cikgew0KKwkJY2FzZSBod21vbl9pbl9sY3JpdDoNCisJCQlyZWcgPSBUTVA1MVhfSU5fTENS SVRbY2hhbm5lbF07DQorCQkJYnJlYWs7DQorCQljYXNlIGh3bW9uX2luX2NyaXQ6DQorCQkJcmVn ID0gVE1QNTFYX0lOX0NSSVRbY2hhbm5lbF07DQorCQkJYnJlYWs7DQorCQl9DQorCQlicmVhazsN CisJY2FzZSBod21vbl9wb3dlcjoNCisJCXN3aXRjaCAoYXR0cikgew0KKwkJY2FzZSBod21vbl9w b3dlcl9jcml0Og0KKwkJCXJlZyA9IFRNUDUxWF9QT1dFUl9DUklUW2NoYW5uZWxdOw0KKwkJCWJy ZWFrOw0KKwkJfQ0KKwkJYnJlYWs7DQorCWRlZmF1bHQ6DQorCQlicmVhazsNCisJfQ0KKw0KKwlp ZiAocmVnID09IDApDQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7DQorDQorCXJldHVybiB0bXA1MXhf c2V0X3ZhbHVlKGRldiwgcmVnLCB2YWwpOw0KK30NCisNCitzdGF0aWMgdW1vZGVfdCB0bXA1MXhf aXNfdmlzaWJsZShjb25zdCB2b2lkICpfZGF0YSwNCisJCQkJIGVudW0gaHdtb25fc2Vuc29yX3R5 cGVzIHR5cGUsIHUzMiBhdHRyLA0KKwkJCQkgaW50IGNoYW5uZWwpDQorew0KKwljb25zdCBzdHJ1 Y3QgdG1wNTF4X2RhdGEgKmRhdGEgPSBfZGF0YTsNCisNCisJc3dpdGNoICh0eXBlKSB7DQorCWNh c2UgaHdtb25fdGVtcDoNCisJCWlmIChkYXRhLT5pZCA9PSB0bXA1MTIgJiYgY2hhbm5lbCA9PSA0 KQ0KKwkJCXJldHVybiAwOw0KKwkJc3dpdGNoIChhdHRyKSB7DQorCQljYXNlIGh3bW9uX3RlbXBf aW5wdXQ6DQorCQljYXNlIGh3bW9uX3RlbXBfY3JpdF9hbGFybToNCisJCQlyZXR1cm4gMDQ0NDsN CisJCWNhc2UgaHdtb25fdGVtcF9jcml0Og0KKwkJCXJldHVybiAwNjQ0Ow0KKwkJY2FzZSBod21v bl90ZW1wX2NyaXRfaHlzdDoNCisJCQlpZiAoY2hhbm5lbCA9PSAwKQ0KKwkJCQlyZXR1cm4gMDY0 NDsNCisJCQlyZXR1cm4gMDQ0NDsNCisJCX0NCisJCWJyZWFrOw0KKwljYXNlIGh3bW9uX2luOg0K KwkJc3dpdGNoIChhdHRyKSB7DQorCQljYXNlIGh3bW9uX2luX2lucHV0Og0KKwkJY2FzZSBod21v bl9pbl9sY3JpdF9hbGFybToNCisJCWNhc2UgaHdtb25faW5fY3JpdF9hbGFybToNCisJCQlyZXR1 cm4gMDQ0NDsNCisJCWNhc2UgaHdtb25faW5fbGNyaXQ6DQorCQljYXNlIGh3bW9uX2luX2NyaXQ6 DQorCQkJcmV0dXJuIDA2NDQ7DQorCQl9DQorCQlicmVhazsNCisJY2FzZSBod21vbl9jdXJyOg0K KwkJc3dpdGNoIChhdHRyKSB7DQorCQljYXNlIGh3bW9uX2N1cnJfaW5wdXQ6DQorCQkJcmV0dXJu IDA0NDQ7DQorCQl9DQorCQlicmVhazsNCisJY2FzZSBod21vbl9wb3dlcjoNCisJCXN3aXRjaCAo YXR0cikgew0KKwkJY2FzZSBod21vbl9wb3dlcl9pbnB1dDoNCisJCWNhc2UgaHdtb25fcG93ZXJf Y3JpdF9hbGFybToNCisJCQlyZXR1cm4gMDQ0NDsNCisJCWNhc2UgaHdtb25fcG93ZXJfY3JpdDoN CisJCQlyZXR1cm4gMDY0NDsNCisJCX0NCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJYnJlYWs7 DQorCX0NCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fY2hh bm5lbF9pbmZvICp0bXA1MXhfaW5mb1tdID0gew0KKwlIV01PTl9DSEFOTkVMX0lORk8odGVtcCwN CisJCQkgICBIV01PTl9UX0lOUFVUIHwgSFdNT05fVF9DUklUIHwgSFdNT05fVF9DUklUX0FMQVJN IHwNCisJCQkgICBIV01PTl9UX0NSSVRfSFlTVCwNCisJCQkgICBIV01PTl9UX0lOUFVUIHwgSFdN T05fVF9DUklUIHwgSFdNT05fVF9DUklUX0FMQVJNIHwNCisJCQkgICBIV01PTl9UX0NSSVRfSFlT VCwNCisJCQkgICBIV01PTl9UX0lOUFVUIHwgSFdNT05fVF9DUklUIHwgSFdNT05fVF9DUklUX0FM QVJNIHwNCisJCQkgICBIV01PTl9UX0NSSVRfSFlTVCwNCisJCQkgICBIV01PTl9UX0lOUFVUIHwg SFdNT05fVF9DUklUIHwgSFdNT05fVF9DUklUX0FMQVJNIHwNCisJCQkgICBIV01PTl9UX0NSSVRf SFlTVCksDQorCUhXTU9OX0NIQU5ORUxfSU5GTyhpbiwNCisJCQkgICBIV01PTl9JX0lOUFVUIHwg SFdNT05fSV9MQ1JJVCB8IEhXTU9OX0lfTENSSVRfQUxBUk0gfA0KKwkJCSAgIEhXTU9OX0lfQ1JJ VCB8IEhXTU9OX0lfQ1JJVF9BTEFSTSwNCisJCQkgICBIV01PTl9JX0lOUFVUIHwgSFdNT05fSV9M Q1JJVCB8IEhXTU9OX0lfTENSSVRfQUxBUk0gfA0KKwkJCSAgIEhXTU9OX0lfQ1JJVCB8IEhXTU9O X0lfQ1JJVF9BTEFSTSksDQorCUhXTU9OX0NIQU5ORUxfSU5GTyhjdXJyLA0KKwkJCSAgIEhXTU9O X0NfSU5QVVQpLA0KKwlIV01PTl9DSEFOTkVMX0lORk8ocG93ZXIsDQorCQkJICAgSFdNT05fUF9J TlBVVCB8IEhXTU9OX1BfQ1JJVCB8IEhXTU9OX1BfQ1JJVF9BTEFSTSksDQorCU5VTEwNCit9Ow0K Kw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fb3BzIHRtcDUxeF9od21vbl9vcHMgPSB7DQor CS5pc192aXNpYmxlID0gdG1wNTF4X2lzX3Zpc2libGUsDQorCS5yZWFkID0gdG1wNTF4X3JlYWQs DQorCS53cml0ZSA9IHRtcDUxeF93cml0ZSwNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg aHdtb25fY2hpcF9pbmZvIHRtcDUxeF9jaGlwX2luZm8gPSB7DQorCS5vcHMgPSAmdG1wNTF4X2h3 bW9uX29wcywNCisJLmluZm8gPSB0bXA1MXhfaW5mbywNCit9Ow0KKw0KKy8qDQorICogQ2FsaWJy YXRlIHRoZSB0bXA1MXggZm9sbG93aW5nIHRoZSBkYXRhc2hlZXQgbWV0aG9kDQorICovDQorc3Rh dGljIGludCB0bXA1MXhfY2FsaWJyYXRlKHN0cnVjdCB0bXA1MXhfZGF0YSAqZGF0YSkNCit7DQor CWludCBzaHVudF91b2htcyA9IGRhdGEtPmNvbmZpZy0+c2h1bnRfdW9obXM7DQorCWludCB2c2h1 bnRfbWF4ID0gZGF0YS0+Y29uZmlnLT5wZ2FfZ2FpbiAqIDQwOw0KKwl1NjQgbWF4X2N1cnJfbWEs IHZhbDsNCisJdTMyIGRpdjsNCisNCisJLyoNCisJICogSWYgc2h1bnRfdW9obXMgaXMgZXF1YWwg dG8gMCwgdGhlIGNhbGlicmF0aW9uIHNob3VsZCBiZSBzZXQgdG8gMC4NCisJICogVGhlIGNvbnNl cXVlbmNlIHdpbGwgYmUgdGhhdCB0aGUgY3VycmVudCBhbmQgcG93ZXIgbWVhc3VyZW1lbnQgZW5n aW5lDQorCSAqIG9mIHRoZSBzZW5zb3Igd2lsbCBub3Qgd29yay4gVGVtcGVyYXR1cmUgYW5kIHZv bHRhZ2Ugc2Vuc2luZyB3aWxsDQorCSAqIGNvbnRpbnVlIHRvIHdvcmsuDQorCSAqLw0KKwlpZiAo c2h1bnRfdW9obXMgPT0gMCkNCisJCXJldHVybiByZWdtYXBfd3JpdGUoZGF0YS0+cmVnbWFwLCBU TVA1MVhfU0hVTlRfQ0FMSUJSQVRJT04sIDApOw0KKw0KKwl2YWwgPSB2c2h1bnRfbWF4ICogMTAw MCAqIDEwMDA7DQorCW1heF9jdXJyX21hID0gRElWX1JPVU5EX0NMT1NFU1RfVUxMKHZhbCwgc2h1 bnRfdW9obXMpOw0KKw0KKwkvKg0KKwkgKiBDYWxjdWxhdGUgdGhlIG1pbmltYWwgYml0IHJlc29s dXRpb24gZm9yIHRoZSBjdXJyZW50IGFuZCB0aGUgcG93ZXIuDQorCSAqIFRob3NlIHZhbHVlcyB3 aWxsIGJlIHVzZWQgZHVyaW5nIHJlZ2lzdGVyIGludGVycHJldGF0aW9uLg0KKwkgKi8NCisJdmFs ID0gbWF4X2N1cnJfbWEgKiAxMDAwOw0KKwlkYXRhLT5jb25maWctPmN1cnJfbHNiID0gRElWX1JP VU5EX0NMT1NFU1RfVUxMKHZhbCwgMzI3NjcpOw0KKwlkYXRhLT5jb25maWctPnB3cl9sc2IgPSAy MCAqIGRhdGEtPmNvbmZpZy0+Y3Vycl9sc2I7DQorDQorCXZhbCA9IGRhdGEtPmNvbmZpZy0+Y3Vy cl9sc2IgKiBzaHVudF91b2htczsNCisJZGl2ID0gRElWX1JPVU5EX0NMT1NFU1RfVUxMKHZhbCwg MTAwMCAqIDEwMDApOw0KKwl2YWwgPSBESVZfUk9VTkRfQ0xPU0VTVCg0MDk2MCwgZGl2KTsNCisN CisJcmV0dXJuIHJlZ21hcF93cml0ZShkYXRhLT5yZWdtYXAsIFRNUDUxWF9TSFVOVF9DQUxJQlJB VElPTiwgdmFsKTsNCit9DQorDQorLyoNCisgKiBJbml0aWFsaXplIHRoZSBjb25maWd1cmF0aW9u IGFuZCBjYWxpYnJhdGlvbiByZWdpc3RlcnMuDQorICovDQorc3RhdGljIGludCB0bXA1MXhfaW5p dChzdHJ1Y3QgdG1wNTF4X2RhdGEgKmRhdGEpDQorew0KKwl1bnNpZ25lZCBpbnQgcmVndmFsOw0K KwlpbnQgcmV0ID0gcmVnbWFwX3dyaXRlKGRhdGEtPnJlZ21hcCwgVE1QNTFYX1NIVU5UX0NPTkZJ RywNCisJCQkgICAgICAgZGF0YS0+Y29uZmlnLT5zaHVudF9jb25maWcpOw0KKwlpZiAocmV0IDwg MCkNCisJCXJldHVybiByZXQ7DQorDQorCXJldCA9IHJlZ21hcF93cml0ZShkYXRhLT5yZWdtYXAs IFRNUDUxWF9URU1QX0NPTkZJRywNCisJCQkgICAgICAgZGF0YS0+Y29uZmlnLT50ZW1wX2NvbmZp Zyk7DQorCWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsNCisNCisJLy8gbkZhY3RvciBjb25m aWd1cmF0aW9uDQorCXJldCA9IHJlZ21hcF93cml0ZShkYXRhLT5yZWdtYXAsIFRNUDUxWF9OX0ZB Q1RPUl9BTkRfSFlTVF8xLA0KKwkJCSAgIGRhdGEtPmNvbmZpZy0+dGVtcF8yX25mYWN0b3IgPDwg OCk7DQorCWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsNCisNCisJcmV0ID0gcmVnbWFwX3dy aXRlKGRhdGEtPnJlZ21hcCwgVE1QNTFYX05fRkFDVE9SXzIsDQorCQkJICAgZGF0YS0+Y29uZmln LT50ZW1wXzNfbmZhY3RvciA8PCA4KTsNCisJaWYgKHJldCA8IDApDQorCQlyZXR1cm4gcmV0Ow0K Kw0KKwlpZiAoZGF0YS0+aWQgPT0gdG1wNTEzKSB7DQorCQlyZXQgPSByZWdtYXBfd3JpdGUoZGF0 YS0+cmVnbWFwLCBUTVA1MTNfTl9GQUNUT1JfMywNCisJCQkJICAgZGF0YS0+Y29uZmlnLT50ZW1w XzRfbmZhY3RvciA8PCA4KTsNCisJCWlmIChyZXQgPCAwKQ0KKwkJCXJldHVybiByZXQ7DQorCX0N CisNCisJcmV0ID0gdG1wNTF4X2NhbGlicmF0ZShkYXRhKTsNCisJaWYgKHJldCA8IDApDQorCQly ZXR1cm4gcmV0Ow0KKw0KKwkvLyBSZWFkIHRoZSBzdGF0dXMgcmVnaXN0ZXIgYmVmb3JlIHVzaW5n IGFzIHRoZSBkYXRhc2hlZXQgcHJvcG9zZQ0KKwlyZXQgPSByZWdtYXBfcmVhZChkYXRhLT5yZWdt YXAsIFRNUDUxWF9TVEFUVVMsICZyZWd2YWwpOw0KKwlpZiAocmV0IDwgMCkNCisJCXJldHVybiBy ZXQ7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IGkyY19kZXZp Y2VfaWQgdG1wNTF4X2lkW10gPSB7DQorCXsgInRtcDUxMiIsIHRtcDUxMiB9LA0KKwl7ICJ0bXA1 MTMiLCB0bXA1MTMgfSwNCisJeyB9DQorfTsNCitNT0RVTEVfREVWSUNFX1RBQkxFKGkyYywgdG1w NTF4X2lkKTsNCisNCitzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCB0bXA1MXhfb2Zf bWF0Y2hbXSA9IHsNCisJew0KKwkJLmNvbXBhdGlibGUgPSAidGksdG1wNTEyIiwNCisJCS5kYXRh ID0gKHZvaWQgKil0bXA1MTINCisJfSwNCisJew0KKwkJLmNvbXBhdGlibGUgPSAidGksdG1wNTEz IiwNCisJCS5kYXRhID0gKHZvaWQgKil0bXA1MTMNCisJfSwNCisJeyB9LA0KK307DQorTU9EVUxF X0RFVklDRV9UQUJMRShvZiwgdG1wNTF4X29mX21hdGNoKTsNCisNCitzdGF0aWMgaW50IHRtcDUx eF92YnVzX21heF90b19yZWcoc3RydWN0IGRldmljZSAqZGV2LA0KKwkJCQkgIHN0cnVjdCB0bXA1 MXhfY29uZmlnICpjb25maWcsIHUzMiB2YnVzX21heCkNCit7DQorCWNvbmZpZy0+dmJ1c19tYXgg PSB2YnVzX21heDsNCisJaWYgKHZidXNfbWF4ID09IDMyKSB7DQorCQljb25maWctPnNodW50X2Nv bmZpZyB8PSBUTVA1MVhfQlVTX1ZPTFRBR0VfTUFTSzsNCisJfSBlbHNlIGlmICh2YnVzX21heCA9 PSAxNikgew0KKwkJY29uZmlnLT5zaHVudF9jb25maWcgJj0gflRNUDUxWF9CVVNfVk9MVEFHRV9N QVNLOw0KKwl9IGVsc2Ugew0KKwkJZGV2X2VycihkZXYsICJidXMtdm9sdGFnZS1yYW5nZSBpcyBp bnZhbGlkOiAldVxuIiwgdmJ1c19tYXgpOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0NCisJcmV0 dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgdG1wNTF4X3BnYV9nYWluX3RvX3JlZyhzdHJ1Y3Qg ZGV2aWNlICpkZXYsDQorCQkJCSAgc3RydWN0IHRtcDUxeF9jb25maWcgKmNvbmZpZywgdTMyIHBn YV9nYWluKQ0KK3sNCisJY29uZmlnLT5zaHVudF9jb25maWcgJj0gflRNUDUxWF9QR0FfTUFTSzsN CisJY29uZmlnLT5wZ2FfZ2FpbiA9IHBnYV9nYWluOw0KKw0KKwkvLyBUaGUgc2hpZnQgZGVwZW5k IG9uIHRoZSBnYWluIDg9NCwgND0zLCAyPTIsIDE9MQ0KKwljb25maWctPnBnYV9zaGlmdCA9IDUg LSBmZnMocGdhX2dhaW4pOw0KKw0KKwlpZiAocGdhX2dhaW4gPT0gOCkgew0KKwkJY29uZmlnLT5z aHVudF9jb25maWcgfD0gQ1VSUkVOVF9TRU5TRV9WT0xUQUdFXzMyMF9NQVNLOw0KKwl9IGVsc2Ug aWYgKHBnYV9nYWluID09IDQpIHsNCisJCWNvbmZpZy0+c2h1bnRfY29uZmlnIHw9IENVUlJFTlRf U0VOU0VfVk9MVEFHRV8xNjBfTUFTSzsNCisJfSBlbHNlIGlmIChwZ2FfZ2FpbiA9PSAyKSB7DQor CQljb25maWctPnNodW50X2NvbmZpZyB8PSBDVVJSRU5UX1NFTlNFX1ZPTFRBR0VfODBfTUFTSzsN CisJfSBlbHNlIGlmIChwZ2FfZ2FpbiA9PSAxKSB7DQorCQljb25maWctPnNodW50X2NvbmZpZyB8 PSBDVVJSRU5UX1NFTlNFX1ZPTFRBR0VfNDBfTUFTSzsNCisJfSBlbHNlIHsNCisJCWRldl9lcnIo ZGV2LCAicGdhLWdhaW4gaXMgaW52YWxpZDogJXVcbiIsIHBnYV9nYWluKTsNCisJCXJldHVybiAt RUlOVkFMOw0KKwl9DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMgaW50IHRtcDUxeF91c2Vf cGxhdGZvcm1fZGF0YShzdHJ1Y3QgZGV2aWNlICpkZXYsDQorCQkJCSAgICBzdHJ1Y3QgdG1wNTF4 X2RhdGEgKmRhdGEpDQorew0KKwlpbnQgcmV0Ow0KKwlzdHJ1Y3QgdG1wNTF4X3BsYXRmb3JtX2Rh dGEgKnBkYXRhID0gZGV2X2dldF9wbGF0ZGF0YShkZXYpOw0KKw0KKwlkYXRhLT5jb25maWctPnNo dW50X3VvaG1zID0gcGRhdGEtPnNodW50X3VvaG1zOw0KKwlkYXRhLT5jb25maWctPnRlbXBfMl9u ZmFjdG9yID0gcGRhdGEtPnRlbXBfMl9uZmFjdG9yOw0KKwlkYXRhLT5jb25maWctPnRlbXBfM19u ZmFjdG9yID0gcGRhdGEtPnRlbXBfM19uZmFjdG9yOw0KKw0KKwlpZiAoZGF0YS0+aWQgPT0gdG1w NTEzKQ0KKwkJZGF0YS0+Y29uZmlnLT50ZW1wXzRfbmZhY3RvciA9IHBkYXRhLT50ZW1wXzRfbmZh Y3RvcjsNCisNCisJcmV0ID0gdG1wNTF4X3ZidXNfbWF4X3RvX3JlZyhkZXYsIGRhdGEtPmNvbmZp ZywgcGRhdGEtPnZidXNfbWF4KTsNCisJaWYgKHJldCA8IDApDQorCQlyZXR1cm4gcmV0Ow0KKw0K KwlyZXQgPSB0bXA1MXhfcGdhX2dhaW5fdG9fcmVnKGRldiwgZGF0YS0+Y29uZmlnLCBwZGF0YS0+ cGdhX2dhaW4pOw0KKwlpZiAocmV0IDwgMCkNCisJCXJldHVybiByZXQ7DQorDQorCXJldHVybiAw Ow0KK30NCisNCitzdGF0aWMgaW50IHRtcDUxeF91c2VfZGV2aWNlX3RyZWUoc3RydWN0IGRldmlj ZSAqZGV2LA0KKwkJCQkgICAgc3RydWN0IHRtcDUxeF9kYXRhICpkYXRhKQ0KK3sNCisJaW50IHJl dDsNCisJdTMyIHZhbDsNCisNCisJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoZGV2LT5vZl9u b2RlLCAic2h1bnQtcmVzaXN0b3ItdW9obSIsICZ2YWwpOw0KKwlpZiAocmV0ID49IDApDQorCQlk YXRhLT5jb25maWctPnNodW50X3VvaG1zID0gdmFsOw0KKw0KKwlyZXQgPSBvZl9wcm9wZXJ0eV9y ZWFkX3UzMihkZXYtPm9mX25vZGUsICJidXMtdm9sdGFnZS1yYW5nZSIsICZ2YWwpOw0KKwlpZiAo cmV0ID49IDApIHsNCisJCXJldCA9IHRtcDUxeF92YnVzX21heF90b19yZWcoZGV2LCBkYXRhLT5j b25maWcsIHZhbCk7DQorCQlpZiAocmV0IDwgMCkNCisJCQlyZXR1cm4gcmV0Ow0KKwl9DQorDQor CXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRldi0+b2Zfbm9kZSwgInBnYS1nYWluIiwgJnZh bCk7DQorCWlmIChyZXQgPj0gMCkgew0KKwkJcmV0ID0gdG1wNTF4X3BnYV9nYWluX3RvX3JlZyhk ZXYsIGRhdGEtPmNvbmZpZywgdmFsKTsNCisJCWlmIChyZXQgPCAwKQ0KKwkJCXJldHVybiByZXQ7 DQorCX0NCisNCisJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoZGV2LT5vZl9ub2RlLCAidGVt cF8yX25mYWN0b3IiLCAmdmFsKTsNCisJaWYgKHJldCA+PSAwKQ0KKwkJZGF0YS0+Y29uZmlnLT50 ZW1wXzJfbmZhY3RvciA9DQorCQkJCWNsYW1wX3ZhbCgoKHM4KXZhbCksIE1JTl9ORkFDVE9SLCBN QVhfTkZBQ1RPUik7DQorDQorCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRldi0+b2Zfbm9k ZSwgInRlbXBfM19uZmFjdG9yIiwgJnZhbCk7DQorCWlmIChyZXQgPj0gMCkNCisJCWRhdGEtPmNv bmZpZy0+dGVtcF8zX25mYWN0b3IgPQ0KKwkJCQljbGFtcF92YWwoKChzOCl2YWwpLCBNSU5fTkZB Q1RPUiwgTUFYX05GQUNUT1IpOw0KKw0KKwlpZiAoZGF0YS0+aWQgPT0gdG1wNTEzKSB7DQorCQly ZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihkZXYtPm9mX25vZGUsICJ0ZW1wXzRfbmZhY3RvciIs DQorCQkJCQkgICAmdmFsKTsNCisJCWlmIChyZXQgPj0gMCkNCisJCQlkYXRhLT5jb25maWctPnRl bXBfNF9uZmFjdG9yID0NCisJCQkJY2xhbXBfdmFsKCgoczgpdmFsKSwgTUlOX05GQUNUT1IsIE1B WF9ORkFDVE9SKTsNCisJfQ0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCB0bXA1MXhf cGFyc2VfY29uZmlnX2RhdGEoc3RydWN0IGRldmljZSAqZGV2LA0KKwkJCQkgICAgc3RydWN0IHRt cDUxeF9kYXRhICpkYXRhKQ0KK3sNCisJc3RydWN0IHRtcDUxeF9wbGF0Zm9ybV9kYXRhICpwZGF0 YSA9IGRldl9nZXRfcGxhdGRhdGEoZGV2KTsNCisJaW50IHJldDsNCisNCisJaWYgKGRldi0+b2Zf bm9kZSkNCisJCXJldCA9IHRtcDUxeF91c2VfZGV2aWNlX3RyZWUoZGV2LCBkYXRhKTsNCisJZWxz ZSBpZiAocGRhdGEpDQorCQlyZXQgPSB0bXA1MXhfdXNlX3BsYXRmb3JtX2RhdGEoZGV2LCBkYXRh KTsNCisJZWxzZQ0KKwkJcmV0dXJuIDA7DQorDQorCS8vIENoZWNrIGlmIHNodW50IHZhbHVlIGlz IGNvbXBhdGlibGUgd2l0aCBwZ2EtZ2Fpbg0KKwlpZiAoZGF0YS0+Y29uZmlnLT5zaHVudF91b2ht cyA+DQorCQlkYXRhLT5jb25maWctPnBnYV9nYWluICogNDAgKiAxMDAwICogMTAwMCkgew0KKwkJ ZGV2X2VycihkZXYsDQorCQkJInNodW50LXJlc2lzdG9yLXVvaG06ICV1IGlzIHRvbyBiaWcgZm9y IHBnYV9nYWluOiAldVxuIiwNCisJCQlkYXRhLT5jb25maWctPnNodW50X3VvaG1zLCBkYXRhLT5j b25maWctPnBnYV9nYWluKTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQorDQorCXJldHVybiAw Ow0KK30NCisNCitzdGF0aWMgaW50IHRtcDUxeF9wcm9iZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xp ZW50LA0KKwkJCWNvbnN0IHN0cnVjdCBpMmNfZGV2aWNlX2lkICppZCkNCit7DQorCXN0cnVjdCBk ZXZpY2UgKmRldiA9ICZjbGllbnQtPmRldjsNCisJc3RydWN0IHRtcDUxeF9kYXRhICpkYXRhOw0K KwlzdHJ1Y3QgZGV2aWNlICpod21vbl9kZXY7DQorCWludCByZXQ7DQorCWVudW0gdG1wNTF4X2lk cyBjaGlwOw0KKw0KKwlpZiAoY2xpZW50LT5kZXYub2Zfbm9kZSkNCisJCWNoaXAgPSAoZW51bSB0 bXA1MXhfaWRzKW9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YSgmY2xpZW50LT5kZXYpOw0KKwllbHNl DQorCQljaGlwID0gaWQtPmRyaXZlcl9kYXRhOw0KKw0KKwlkYXRhID0gZGV2bV9remFsbG9jKGRl diwgc2l6ZW9mKCpkYXRhKSwgR0ZQX0tFUk5FTCk7DQorCWlmICghZGF0YSkNCisJCXJldHVybiAt RU5PTUVNOw0KKw0KKwlkYXRhLT5jb25maWcgPSAmdG1wNTF4X2NvbmZpZ1tjaGlwXTsNCisJZGF0 YS0+aWQgPSBjaGlwOw0KKwltdXRleF9pbml0KCZkYXRhLT5jb25maWdfbG9jayk7DQorDQorCXJl dCA9IHRtcDUxeF9wYXJzZV9jb25maWdfZGF0YShkZXYsIGRhdGEpOw0KKwlpZiAocmV0IDwgMCkg ew0KKwkJZGV2X2VycihkZXYsICJlcnJvciBjb25maWd1cmluZyB0aGUgZGV2aWNlOiAlZFxuIiwg cmV0KTsNCisJCXJldHVybiByZXQ7DQorCX0NCisNCisJdG1wNTF4X3JlZ21hcF9jb25maWcubWF4 X3JlZ2lzdGVyID0gZGF0YS0+Y29uZmlnLT5yZWdpc3RlcnM7DQorCWRhdGEtPnJlZ21hcCA9IGRl dm1fcmVnbWFwX2luaXRfaTJjKGNsaWVudCwgJnRtcDUxeF9yZWdtYXBfY29uZmlnKTsNCisJaWYg KElTX0VSUihkYXRhLT5yZWdtYXApKSB7DQorCQlkZXZfZXJyKGRldiwgImZhaWxlZCB0byBhbGxv Y2F0ZSByZWdpc3RlciBtYXBcbiIpOw0KKwkJcmV0dXJuIFBUUl9FUlIoZGF0YS0+cmVnbWFwKTsN CisJfQ0KKw0KKwlyZXQgPSB0bXA1MXhfaW5pdChkYXRhKTsNCisJaWYgKHJldCA8IDApIHsNCisJ CWRldl9lcnIoZGV2LCAiZXJyb3IgY29uZmlndXJpbmcgdGhlIGRldmljZTogJWRcbiIsIHJldCk7 DQorCQlyZXR1cm4gLUVOT0RFVjsNCisJfQ0KKw0KKwlod21vbl9kZXYgPSBkZXZtX2h3bW9uX2Rl dmljZV9yZWdpc3Rlcl93aXRoX2luZm8oZGV2LCBjbGllbnQtPm5hbWUsDQorCQkJCQkJCSAgIGRh dGEsDQorCQkJCQkJCSAgICZ0bXA1MXhfY2hpcF9pbmZvLA0KKwkJCQkJCQkgICBOVUxMKTsNCisJ aWYgKElTX0VSUihod21vbl9kZXYpKQ0KKwkJcmV0dXJuIFBUUl9FUlIoaHdtb25fZGV2KTsNCisN CisJZGV2X2RiZyhkZXYsICJwb3dlciBtb25pdG9yICVzXG4iLCBpZC0+bmFtZSk7DQorDQorCXJl dHVybiAwOw0KK30NCisNCitzdGF0aWMgc3RydWN0IGkyY19kcml2ZXIgdG1wNTF4X2RyaXZlciA9 IHsNCisJLmRyaXZlciA9IHsNCisJCS5uYW1lCT0gInRtcDUxeCIsDQorCQkub2ZfbWF0Y2hfdGFi bGUgPSBvZl9tYXRjaF9wdHIodG1wNTF4X29mX21hdGNoKSwNCisJfSwNCisJLnByb2JlCQk9IHRt cDUxeF9wcm9iZSwNCisJLmlkX3RhYmxlCT0gdG1wNTF4X2lkLA0KK307DQorDQorbW9kdWxlX2ky Y19kcml2ZXIodG1wNTF4X2RyaXZlcik7DQorDQorTU9EVUxFX0FVVEhPUigiRXJpYyBUcmVtYmxh eSA8ZXRyZW1ibGF5QGRpc3RlY2hjb250cm9scy5jb20+Iik7DQorTU9EVUxFX0RFU0NSSVBUSU9O KCJ0bXA1MXggZHJpdmVyIik7DQorTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KZGlmZiAtLWdpdCBh L2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS90bXA1MTMuaCBiL2luY2x1ZGUvbGludXgvcGxh dGZvcm1fZGF0YS90bXA1MTMuaA0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAw MDAwMC4uMDg2ZDU1MmJmZDM2DQotLS0gL2Rldi9udWxsDQorKysgYi9pbmNsdWRlL2xpbnV4L3Bs YXRmb3JtX2RhdGEvdG1wNTEzLmgNCkBAIC0wLDAgKzEsMjggQEANCisvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMCAqLw0KKy8qDQorICogRHJpdmVyIGZvciBUZXhhcyBJbnN0cnVt ZW50cyBUTVA1MTIsIFRNUDUxMyBwb3dlciBtb25pdG9yIGNoaXBzDQorICoNCisgKiBDb3B5cmln aHQgKEMpIDIwMTkgRXJpYyBUcmVtYmxheSA8ZXRyZW1ibGF5QGRpc3RlY2gtY29udHJvbHMuY29t Pg0KKyAqDQorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQ0KKyAqIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZS4NCisgKi8NCisNCisv KioNCisgKiBzdHJ1Y3QgdG1wNTF4X3BsYXRmb3JtX2RhdGEgLSB0bXA1MXggaW5mbw0KKyAqIEBz aHVudF91b2htcwkJc2h1bnQgcmVzaXN0YW5jZSBpbiBtaWNyb29obXMNCisgKiBAcGdhX2dhaW4J CVBHQSBmdW5jdGlvbiBnYWluIDgsIDQsIDIgb3IgMQ0KKyAqIEB2YnVzX21heAkJVGhpcyBpcyBl aXRoZXIgMzJWIG9yIDE2Vg0KKyAqIEB0ZW1wXzJfbmZhY3RvcgluZmFjdG9yIGZvciByZW1vdGUg Y2hhbm5lbCAxDQorICogQHRlbXBfM19uZmFjdG9yCW5mYWN0b3IgZm9yIHJlbW90ZSBjaGFubmVs IDINCisgKiBAdGVtcF80X25mYWN0b3IJbmZhY3RvciBmb3IgcmVtb3RlIGNoYW5uZWwgMw0KKyAq Lw0KK3N0cnVjdCB0bXA1MXhfcGxhdGZvcm1fZGF0YSB7DQorCWxvbmcgc2h1bnRfdW9obXM7DQor CXU4IHBnYV9nYWluOw0KKwl1MTYgdmJ1c19tYXg7DQorCXM4IHRlbXBfMl9uZmFjdG9yOw0KKwlz OCB0ZW1wXzNfbmZhY3RvcjsNCisJczggdGVtcF80X25mYWN0b3I7DQorfTsNCi0tIA0KMi4xNy4x DQoNCg0KDQoNCg0K