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 48033C352AA for ; Tue, 1 Oct 2019 17:50:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id E1D27215EA for ; Tue, 1 Oct 2019 17:50:05 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=distech-controls.com header.i=@distech-controls.com header.b="E+hDlfcD" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726460AbfJARuF (ORCPT ); Tue, 1 Oct 2019 13:50:05 -0400 Received: from mx0a-002ab301.pphosted.com ([148.163.150.161]:63120 "EHLO mx0a-002ab301.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726060AbfJARuF (ORCPT ); Tue, 1 Oct 2019 13:50:05 -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 x91HaCLx031353 for ; Tue, 1 Oct 2019 13:50:00 -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=I+jewDDS+AIF4oERaQyEjcufKwDxPKNxYNZqAt2GTYA=; b=E+hDlfcDDoqm+CzS6pz+Z0AftO2Rwli7teTf1gRpHEqlh4SF3uAPCLSkiBvOsGH7l1zp /1ba9QTNklWAZFIWNDFA914vB2DtlA6+s4wvqWLao9LsX239k2Zj8+EsqphCaAPw66/O rzX+pSoFSq8bZD3mnBGz/mP205lPycJXHuwFN4hiZOYkC1nYT5iOgri5JB1nv+DCqqTz GpO9CRQHLa0pEvBkM2bkkEnZVJMCKCH1dG1EJ8OzZKanGd8Xyb95/uwGO3L0xkeKeSsb D09IVvMgbJjskq1nafP5sOdAZgEXCdwx1l3PTwEWc7J1qFy2ZauVzQRyIT7T8vf6kRwn Sg== Received: from nam01-by2-obe.outbound.protection.outlook.com (mail-by2nam01lp2059.outbound.protection.outlook.com [104.47.34.59]) by mx0a-002ab301.pphosted.com with ESMTP id 2vaej32tne-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT) for ; Tue, 01 Oct 2019 13:49:56 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=oZi32kh9R8ko7LqPWh/682vhLxn1b+qeuAOBUcDz1YVy3J477HXamjkQyVVFbcAcsdmtgRnIMHCy82Xq5Kc6D+wWJOyG934xs3aQtIuc6kLRC8cDQxwZL5W+x6Us/OphjpyB+Rb4x3Vp0DeY2bBsC85zKOX8AxutTlddFqd6vEC0siVu6Gp6hOUL2pB2AR9SpDIUi+t7B6N0SQ1bF6reFqg2h25IZ+40PmPSM0jrxuc1pdhXh/POSfvvcRUOguVoX4GrZ/CC4E0cV6Rdhfy5pdxVFDCzefYIjhyVBmf8AQRyQPHtrXHh6YJ0//LlXQZEtTbGmZYLVfUMiUQ6MMhPww== 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=I+jewDDS+AIF4oERaQyEjcufKwDxPKNxYNZqAt2GTYA=; b=na4kgPtci89VguJQdjuBuNsB+pK48nNTtIncyV776bp1SI0byAcQt0tbh//PORlgwc9oEVKpoSbkRZvHSUqgbeLkiJk8icOhdzlcvNDwjcZtdOOgV2iY+fFZBHW64+W3W/N/HEI2QzcSKUAL5MWUaHdebf6IOSOOmbg97iPAO1rPlEZPYtXf1AgzahFNwSAJwRiSSMAunAMO7Ld7QMjn2zHAKmBuk3WlD/Td0dOLtdbRbNZLMdDDjX4JdIZr99V0taoAS0FUJva+nburzw805x8P8VAdr7kRBs/9sJmjkjPIDZ+2rOeW1zcPGRVhRT3dgd7eAkDC5qcDk84Tp0faeg== 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 BL0PR01MB4578.prod.exchangelabs.com (20.177.241.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2305.20; Tue, 1 Oct 2019 17:49:52 +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.017; Tue, 1 Oct 2019 17:49:52 +0000 From: "Tremblay, Eric" To: "linux-hwmon@vger.kernel.org" Subject: [PATCH v2 1/2] hwmon: Add driver for Texas Instruments TMP512/513 sensor chips Thread-Topic: [PATCH v2 1/2] hwmon: Add driver for Texas Instruments TMP512/513 sensor chips Thread-Index: AdV4gInK7/KYgOLqT9q6XTOR6BBJ8A== Date: Tue, 1 Oct 2019 17:49:52 +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: 4c2b2b04-106c-451a-d7f5-08d74697c367 x-ms-office365-filtering-ht: Tenant x-ms-traffictypediagnostic: BL0PR01MB4578: x-ms-exchange-purlcount: 4 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 0177904E6B x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(136003)(396003)(376002)(346002)(366004)(199004)(189003)(14454004)(102836004)(9686003)(30864003)(5640700003)(966005)(52536014)(476003)(6306002)(186003)(5660300002)(2351001)(6506007)(8676002)(7696005)(55016002)(26005)(33656002)(66066001)(99286004)(74316002)(86362001)(81156014)(8936002)(71200400001)(71190400001)(66946007)(81166006)(66446008)(64756008)(66476007)(66556008)(6916009)(76116006)(2906002)(25786009)(486006)(6436002)(7736002)(478600001)(3846002)(256004)(316002)(2501003)(14444005)(6116002)(305945005)(2004002)(579004)(559001);DIR:OUT;SFP:1101;SCL:1;SRVR:BL0PR01MB4578;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: RoPSjyF45PRhJWMWFAQrT+MxcDgqtDBhkd9TigCSGgQKyuFxpA6m5m5FRchyn7jJfk6Kn5UGAVser4m5rn9rNt2OZl0f1SZ++2WDrdpNyRY0h3BB9OEP6sXY9y5woCPuZDlwDD0D869oqO//1J371dg0i7l6XYUcGUYfHbvYT9OonwFZVM+5Yyy8yU190qe3dCZ3YRKtej1k4blw55SLGzn597+kYACD733+trAa1qJY/M2c0bK7BDm8ZolWlKj6rs+6dREPTQ8mtpT50cCHoW+GKq/QlArgllxwC2YiRbps0hU0pIjjZ5O0qblJ+TfMkUbHQW0BIu4zcM3YxL6ZmSbsVa6KwhEsEoMRLKw6ctKa9Dj5gb3wqAVHX5QMT2qq0RDLv+lUc6bds7ebqeDYtNJHMActyMrFldzO0DEVBxtnRhEDEP59o8QeiYkUNHrsZj4cReuCctpn/zfMhY9AcA== 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: 4c2b2b04-106c-451a-d7f5-08d74697c367 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Oct 2019 17:49:52.6074 (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: w7yTHGRgF/u/owvEYV1Sx/g5M7o4PW6ikFe4Ht2p/jmplFnnwCKuf9wK5Nj36tnNx9CHiUlraBc8yKl2yeJcSQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR01MB4578 X-Proofpoint-Processed: True X-Proofpoint-Spam-Details: rule=outbound_spam_notspam policy=outbound_spam score=0 phishscore=0 bulkscore=0 lowpriorityscore=0 impostorscore=0 malwarescore=0 mlxlogscore=999 spamscore=0 priorityscore=1501 mlxscore=0 adultscore=0 suspectscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1908290000 definitions=main-1910010144 Sender: linux-hwmon-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-hwmon@vger.kernel.org aHdtb246IEFkZCBkcml2ZXIgZm9yIFRleGFzIEluc3RydW1lbnRzIFRNUDUxMi81MTMgc2Vuc29y DQoNClRJJ3MgVE1QNTEyLzUxMyBhcmUgSTJDL1NNQnVzIHN5c3RlbSBtb25pdG9yIGNoaXBzLiBU aGVzZSBjaGlwcw0KbW9uaXRvciB0aGUgc3VwcGx5IHZvbHRhZ2UsIHN1cHBseSBjdXJyZW50LCBw b3dlciBjb25zdW1wdGlvbg0KYW5kIHByb3ZpZGUgb25lIGxvY2FsIGFuZCB1cCB0byB0aHJlZSAo VE1QNTEzKSByZW1vdGUgdGVtcGVyYXR1cmUgc2Vuc29ycy4NCg0KSXQgaGFzIGJlZW4gdGVzdGVk IHVzaW5nIGEgVEkgVE1QNTEzIGRldmVsb3BtZW50IGtpdCAoVE1QNTEzRVZNKQ0KDQpTaWduZWQt b2ZmLWJ5OiBFcmljIFRyZW1ibGF5IDxldHJlbWJsYXlAZGlzdGVjaC1jb250cm9scy5jb20+DQot LS0NCiBEb2N1bWVudGF0aW9uL2h3bW9uL3RtcDUxMy5yc3QgfCAgOTggKysrKw0KIE1BSU5UQUlO RVJTICAgICAgICAgICAgICAgICAgICB8ICAgNyArDQogZHJpdmVycy9od21vbi9LY29uZmlnICAg ICAgICAgIHwgIDEwICsNCiBkcml2ZXJzL2h3bW9uL01ha2VmaWxlICAgICAgICAgfCAgIDEgKw0K IGRyaXZlcnMvaHdtb24vdG1wNTEzLmMgICAgICAgICB8IDgwMCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysNCiA1IGZpbGVzIGNoYW5nZWQsIDkxNiBpbnNlcnRpb25zKCspDQogY3Jl YXRlIG1vZGUgMTAwNjQ0IERvY3VtZW50YXRpb24vaHdtb24vdG1wNTEzLnJzdA0KIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2h3bW9uL3RtcDUxMy5jDQoNCmRpZmYgLS1naXQgYS9Eb2N1bWVu dGF0aW9uL2h3bW9uL3RtcDUxMy5yc3QgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3RtcDUxMy5yc3QN Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjNiYTZmNmYxNDIyMA0K LS0tIC9kZXYvbnVsbA0KKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi90bXA1MTMucnN0DQpAQCAt MCwwICsxLDk4IEBADQorLi4gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCitLZXJu ZWwgZHJpdmVyIHRtcDUxMw0KKz09PT09PT09PT09PT09PT09PT09DQorDQorU3VwcG9ydGVkIGNo aXBzOg0KKw0KKyAgKiBUZXhhcyBJbnN0cnVtZW50cyBUTVA1MTINCisNCisgICAgUHJlZml4OiAn dG1wNTEyJw0KKw0KKyAgICBEYXRhc2hlZXQ6IGh0dHA6Ly93d3cudGkuY29tL2xpdC9kcy9zeW1s aW5rL3RtcDUxMi5wZGYNCisNCisgICogVGV4YXMgSW5zdHJ1bWVudHMgVE1QNTEzDQorDQorICAg IFByZWZpeDogJ3RtcDUxMycNCisNCisgICAgRGF0YXNoZWV0OiBodHRwOi8vd3d3LnRpLmNvbS9s aXQvZHMvc3ltbGluay90bXA1MTMucGRmDQorDQorQXV0aG9yczoNCisNCisJRXJpYyBUcmVtYmxh eSA8ZXRyZW1ibGF5QGRpc3RlY2gtY29udHJvbHMuY29tPg0KKw0KK0Rlc2NyaXB0aW9uDQorLS0t LS0tLS0tLS0NCisNCitUaGlzIGRyaXZlciBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIFRleGFzIElu c3RydW1lbnRzIFRNUDUxMiwgYW5kIFRNUDUxMw0KK3RlbXBlcmF0dXJlIGFuZCBwb3dlciBzdXBw bHkgc2Vuc29yIGNoaXBzLiBUaGVzZSBjaGlwcyBpbXBsZW1lbnQgb25lDQorbG9jYWwgYW5kIHVw IHRvIHRocmVlIChUTVA1MTMpIHRlbXBlcmF0dXJlIHNlbnNvcnMuIFRoZSBjaGlwcyBhbHNvIGlt cGxlbWVudA0KK3Bvd2VyIHN1cHBseSBtb25pdG9yaW5nIHN1Y2ggYXMgc2h1bnQgdm9sdGFnZSwg c2h1bnQgY3VycmVudCwgYnVzIHZvbHRhZ2UNCithbmQgcG93ZXIgY29uc3VtcHRpb24uDQorDQor VGhlIHRlbXBlcmF0dXJlcyBhcmUgbWVhc3VyZWQgaW4gZGVncmVlcyBDZWxzaXVzIHdpdGggYSBy YW5nZSBvZg0KKy00MCB0byArIDEyNSBkZWdyZXNzIENlbGNpdXMgd2l0aCBhIHJlc29sdXRpb24g b2YgMC4wNjI1IGRlZ3JlZSBDLg0KKw0KK1RoZSBkcml2ZXIgZXhwb3J0cyB0aGUgdGVtcGVyYXR1 cmUgdmFsdWVzIHZpYSB0aGUgZm9sbG93aW5nIHN5c2ZzIGZpbGVzOg0KKw0KKyoqdGVtcFsxLTRd X2lucHV0KioNCisNCisqKnRlbXBbMS00XV9jcml0KioNCisNCisqKnRlbXBbMS00XV9jcml0X2Fs YXJtKioNCisNCitUaGUgc2h1bnQgdm9sdGFnZSBpcyBtZWFzdXJlZCBpbiBtaWNybyB2b2x0cy4g VGhlcmUgYXJlIGZvdXIgY29uZmlndXJhYmxlDQorcmFuZ2U6IDMyMG1WLCAxNjBtViwgODBtViBh bmQgNDBtViBhbGwgb2YgdGhlbSB3aXRoIGEgcmVzb2x1dGlvbiBvZiAxMCB1Vi4NCitUaGUgcmFu Z2UgZGVwZW5kcyBvbiB0aGUgcGdhIGdhaW4gc3BlY2lmaWVkIGluIHRoZSBkZXZpY2UgdHJlZQ0K K3dpdGggInBnYS1nYWluIiAoZGVmYXVsdCB0byA4KS4gVGhlIHJhbmdlIHdpbGwgYmUgZXF1YWwg dG8gcGdhIGdhaW4NCittdWx0aXBseSBieSA0MG1WLg0KKw0KK1RoZSBkcml2ZXIgZXhwb3J0cyB0 aGUgc2h1bnQgdm9sdGFnZSB2YWx1ZXMgdmlhIHRoZSBmb2xsb3dpbmcgc3lzRnMgZmlsZXM6DQor DQorKippbjBfaW5wdXQqKg0KKw0KKyoqaW4wX2xjcml0KioNCisNCisqKmluMF9sY3JpdF9hbGFy bSoqDQorDQorKippbjBfY3JpdCoqDQorDQorKippbjBfY3JpdF9hbGFybSoqDQorDQorVGhlIGJ1 cyB2b2x0YWdlIGlzIG1lYXN1cmVkIGluIG1pbGxpIHZvbHRzLiBUaGVyZSBhcmUgdHdvIGNvbmZp Z3VhYmxlDQorcmFuZ2U6IDMyViBhbmQgMTZWIGJvdGggd2l0aCBhIHJlc29sdXRpb24gb2YgNG1W LiBJdCBjYW4gYmUgY29uZmlndXJlZCBpbiB0aGUNCitkZXZpY2UgdHJlZSB3aXRoICJidXMtdm9s dGFnZS1yYW5nZSIgKGRlZmF1bHQgdG8gMzJWKTsNCisNCitUaGUgZHJpdmVyIGV4cG9ydHMgdGhl IGJ1cyB2b2x0YWdlIHZhbHVlcyB2aWEgdGhlIGZvbGxvd2luZyBzeXNGcyBmaWxlczoNCisNCisq KmluMF9pbnB1dCoqDQorDQorKippbjBfbGNyaXQqKg0KKw0KKyoqaW4wX2xjcml0X2FsYXJtKioN CisNCisqKmluMF9jcml0KioNCisNCisqKmluMF9jcml0X2FsYXJtKioNCisNCitUaGUgcG93ZXIg YW5kIHRoZSBjdXJyZW50cyByYW5nZSBhbmQgcmVzb2x1dGlvbiBkZXBlbmRzIG9uIHRoZSBjYWxp YnJhdGlvbg0KK3JlZ2lzdGVyIHZhbHVlLiBUaG9zZSB2YWx1ZXMgYXJlIGNhbGN1bGF0ZSBieSB0 aGUgaGFyZHdhcmUgdXNpbmcgdGhvc2UNCitmb3JtdWxhOg0KKw0KK0N1cnJlbnQgPSAoU2h1bnRW b2x0YWdlICogQ2FsaWJyYXRpb25SZWdpc3RlcikgLyA0MDk2DQorUG93ZXIgICA9IChDdXJyZW50 ICogQnVzVm9sdGFnZSkgLyA1MDAwDQorDQorVGhlIGRyaXZlciBleHBvcnRzIHRoZSBjdXJyZW50 IGFuZCBwb3dlciB2YWx1ZXMgdmlhIHRoZSBmb2xsb3dpbmcgc3lzRnMgZmlsZXM6DQorDQorKipj dXJyMF9pbnB1dCoqDQorDQorKipwb3dlcjFfaW5wdXQqKg0KKw0KKyoqcG93ZXIxX2NyaXQqKg0K Kw0KKyoqcG93ZXIxX2NyaXRfYWxhcm0qKg0KKw0KK1RoZSBjYWxpYnJhdGlvbiBwcm9jZXNzIGZv bGxvdyB0aGUgcHJvY2VkdXJlIG9mIHRoZSBkYXRhc2hlZXQgKHdpdGhvdXQgb3ZlcmZsb3cpDQor YW5kIGRlcGVuZCBvbiB0aGUgc2h1bnQgcmVzaXN0b3IgdmFsdWUsIG5lZWRlZCBpbiB0aGUgZGV2 aWNlIHRyZWUgInNodW50LXJlc2lzdG9yLW1vaG0iLg0KK0l0IGFsc28gZGVwZW5kcyBvbiB0aGUg cGdhIGdhaW4gYW5kIHRoZSBtYXhpbXVtIGV4cGVjdGVkIGN1cnJlbnQsIGFsc28gc3BlY2lmaWVk IGZyb20NCit0aGUgZGV2aWNlIHRyZWUgIm1heC1leHBlY3RlZC1jdXJyZW50LW1hIi4gSWYgbm90 IHNwZWNpZmllZCBpdCBkZWZhdWx0IHRvIHRoZSBtYXhpbXVtDQorcG9zc2libGUgY3VycmVudCBk ZXBlbmRpbmcgb24gdGhlIHBnYSBnYWluLg0KZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJ TlRBSU5FUlMNCmluZGV4IDI5NmRlMmI1MWM4My4uMWQxM2U1YmU2NjYxIDEwMDY0NA0KLS0tIGEv TUFJTlRBSU5FUlMNCisrKyBiL01BSU5UQUlORVJTDQpAQCAtMTYzNjksNiArMTYzNjksMTMgQEAg UzoJTWFpbnRhaW5lZA0KIEY6CURvY3VtZW50YXRpb24vaHdtb24vdG1wNDAxLnJzdA0KIEY6CWRy aXZlcnMvaHdtb24vdG1wNDAxLmMNCiANCitUTVA1MTMgSEFSRFdBUkUgTU9OSVRPUiBEUklWRVIN CitNOglFcmljIFRyZW1ibGF5IDxldHJlbWJsYXlAZGlzdGVjaC1jb250cm9scy5jb20+DQorTDoJ bGludXgtaHdtb25Admdlci5rZXJuZWwub3JnDQorUzoJTWFpbnRhaW5lZA0KK0Y6CURvY3VtZW50 YXRpb24vaHdtb24vdG1wNTEzLnJzdA0KK0Y6CWRyaXZlcnMvaHdtb24vdG1wNTEzLmMNCisNCiBU TVBGUyAoU0hNRU0gRklMRVNZU1RFTSkNCiBNOglIdWdoIERpY2tpbnMgPGh1Z2hkQGdvb2dsZS5j b20+DQogTDoJbGludXgtbW1Aa3ZhY2sub3JnDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9od21vbi9L Y29uZmlnIGIvZHJpdmVycy9od21vbi9LY29uZmlnDQppbmRleCAxM2E2YjRhZmI0YjMuLjkyNmUz Yzk4ZGJkZiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvaHdtb24vS2NvbmZpZw0KKysrIGIvZHJpdmVy cy9od21vbi9LY29uZmlnDQpAQCAtMTcwOSw2ICsxNzA5LDE2IEBAIGNvbmZpZyBTRU5TT1JTX1RN UDQyMQ0KIAkgIFRoaXMgZHJpdmVyIGNhbiBhbHNvIGJlIGJ1aWx0IGFzIGEgbW9kdWxlLiBJZiBz bywgdGhlIG1vZHVsZQ0KIAkgIHdpbGwgYmUgY2FsbGVkIHRtcDQyMS4NCiANCitjb25maWcgU0VO U09SU19UTVA1MTMNCisJdHJpc3RhdGUgIlRleGFzIEluc3RydW1lbnRzIFRNUDUxMyBhbmQgY29t cGF0aWJsZXMiDQorCWRlcGVuZHMgb24gSTJDDQorCWhlbHANCisJICBJZiB5b3Ugc2F5IHllcyBo ZXJlIHlvdSBnZXQgc3VwcG9ydCBmb3IgVGV4YXMgSW5zdHJ1bWVudHMgVE1QNTEyLA0KKwkgIGFu ZCBUTVA1MTMgdGVtcGVyYXR1cmUgYW5kIHBvd2VyIHN1cHBseSBzZW5zb3IgY2hpcHMuDQorDQor CSAgVGhpcyBkcml2ZXIgY2FuIGFsc28gYmUgYnVpbHQgYXMgYSBtb2R1bGUuIElmIHNvLCB0aGUg bW9kdWxlDQorCSAgd2lsbCBiZSBjYWxsZWQgdG1wNTEzLg0KKw0KIGNvbmZpZyBTRU5TT1JTX1ZF WFBSRVNTDQogCXRyaXN0YXRlICJWZXJzYXRpbGUgRXhwcmVzcyINCiAJZGVwZW5kcyBvbiBWRVhQ UkVTU19DT05GSUcNCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL01ha2VmaWxlIGIvZHJpdmVy cy9od21vbi9NYWtlZmlsZQ0KaW5kZXggNDBjMDM2ZWE0NWU2Li43NjI2NDIyOTE5MTQgMTAwNjQ0 DQotLS0gYS9kcml2ZXJzL2h3bW9uL01ha2VmaWxlDQorKysgYi9kcml2ZXJzL2h3bW9uL01ha2Vm aWxlDQpAQCAtMTY2LDYgKzE2Niw3IEBAIG9iai0kKENPTkZJR19TRU5TT1JTX1RNUDEwMykJKz0g dG1wMTAzLm8NCiBvYmotJChDT05GSUdfU0VOU09SU19UTVAxMDgpCSs9IHRtcDEwOC5vDQogb2Jq LSQoQ09ORklHX1NFTlNPUlNfVE1QNDAxKQkrPSB0bXA0MDEubw0KIG9iai0kKENPTkZJR19TRU5T T1JTX1RNUDQyMSkJKz0gdG1wNDIxLm8NCitvYmotJChDT05GSUdfU0VOU09SU19UTVA1MTMpCSs9 IHRtcDUxMy5vDQogb2JqLSQoQ09ORklHX1NFTlNPUlNfVkVYUFJFU1MpCSs9IHZleHByZXNzLWh3 bW9uLm8NCiBvYmotJChDT05GSUdfU0VOU09SU19WSUFfQ1BVVEVNUCkrPSB2aWEtY3B1dGVtcC5v DQogb2JqLSQoQ09ORklHX1NFTlNPUlNfVklBNjg2QSkJKz0gdmlhNjg2YS5vDQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9od21vbi90bXA1MTMuYyBiL2RyaXZlcnMvaHdtb24vdG1wNTEzLmMNCm5ldyBm aWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMDAuLjA1NzVhNjIzNzQ2MA0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvZHJpdmVycy9od21vbi90bXA1MTMuYw0KQEAgLTAsMCArMSw4MDAgQEAN CisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KKy8qDQorICogRHJpdmVyIGZv ciBUZXhhcyBJbnN0cnVtZW50cyBUTVA1MTIsIFRNUDUxMyBwb3dlciBtb25pdG9yIGNoaXBzDQor ICoNCisgKiBUTVA1MTM6DQorICogVGhlcm1hbC9Qb3dlciBNYW5hZ2VtZW50IHdpdGggVHJpcGxl IFJlbW90ZSBhbmQNCisgKiBMb2NhbCBUZW1wZXJhdHVyZSBTZW5zb3IgYW5kIEN1cnJlbnQgU2h1 bnQgTW9uaXRvcg0KKyAqIERhdGFzaGVldDogaHR0cDovL3d3dy50aS5jb20vbGl0L2dwbi90bXA1 MTMNCisgKg0KKyAqIFRNUDUxMjoNCisgKiBUaGVybWFsL1Bvd2VyIE1hbmFnZW1lbnQgd2l0aCBE dWFsIFJlbW90ZQ0KKyAqCWFuZCBMb2NhbCBUZW1wZXJhdHVyZSBTZW5zb3IgYW5kIEN1cnJlbnQg U2h1bnQgTW9uaXRvcg0KKyAqIERhdGFzaGVldDogaHR0cDovL3d3dy50aS5jb20vbGl0L2dwbi90 bXA1MTINCisgKg0KKyAqIENvcHlyaWdodCAoQykgMjAxOSBFcmljIFRyZW1ibGF5IDxldHJlbWJs YXlAZGlzdGVjaGNvbnRyb2xzLmNvbT4NCisgKg0KKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQorICogaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkNCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB2ZXJzaW9uIDIgb2YgdGhl IExpY2Vuc2UuDQorICovDQorDQorI2luY2x1ZGUgPGxpbnV4L2Vyci5oPg0KKyNpbmNsdWRlIDxs aW51eC9od21vbi5oPg0KKyNpbmNsdWRlIDxsaW51eC9od21vbi1zeXNmcy5oPg0KKyNpbmNsdWRl IDxsaW51eC9pMmMuaD4NCisjaW5jbHVkZSA8bGludXgvaW5pdC5oPg0KKyNpbmNsdWRlIDxsaW51 eC9rZXJuZWwuaD4NCisjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQorI2luY2x1ZGUgPGxpbnV4 L29mX2RldmljZS5oPg0KKyNpbmNsdWRlIDxsaW51eC9vZi5oPg0KKyNpbmNsdWRlIDxsaW51eC9y ZWdtYXAuaD4NCisjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KKyNpbmNsdWRlIDxsaW51eC91dGls X21hY3Jvcy5oPg0KKw0KKy8vIGNvbW1vbiByZWdpc3RlciBkZWZpbml0aW9uDQorI2RlZmluZSBU TVA1MVhfU0hVTlRfQ09ORklHCQkweDAwDQorI2RlZmluZSBUTVA1MVhfVEVNUF9DT05GSUcJCTB4 MDENCisjZGVmaW5lIFRNUDUxWF9TVEFUVVMJCQkweDAyDQorI2RlZmluZSBUTVA1MVhfU01CVVNf QUxFUlQJCTB4MDMNCisjZGVmaW5lIFRNUDUxWF9TSFVOVF9WT0xUQUdFX1JFU1VMVAkweDA0DQor I2RlZmluZSBUTVA1MVhfQlVTX1ZPTFRBR0VfUkVTVUxUCTB4MDUNCisjZGVmaW5lIFRNUDUxWF9Q T1dFUl9SRVNVTFQJCTB4MDYNCisjZGVmaW5lIFRNUDUxWF9TSFVOVF9DVVJSRU5UX1JFU1VMVAkw eDA3DQorI2RlZmluZSBUTVA1MVhfTE9DQUxfVEVNUF9SRVNVTFQJMHgwOA0KKyNkZWZpbmUgVE1Q NTFYX1JFTU9URV9URU1QX1JFU1VMVF8xCTB4MDkNCisjZGVmaW5lIFRNUDUxWF9SRU1PVEVfVEVN UF9SRVNVTFRfMgkweDBBDQorI2RlZmluZSBUTVA1MVhfU0hVTlRfVk9MVEFHRV9IX0xJTUlUCTB4 MEMNCisjZGVmaW5lIFRNUDUxWF9TSFVOVF9WT0xUQUdFX0xfTElNSVQJMHgwRA0KKyNkZWZpbmUg VE1QNTFYX0JVU19WT0xUQUdFX0hfTElNSVQJMHgwRQ0KKyNkZWZpbmUgVE1QNTFYX0JVU19WT0xU QUdFX0xfTElNSVQJMHgwRg0KKyNkZWZpbmUgVE1QNTFYX1BPV0VSX0xJTUlUCQkweDEwDQorI2Rl ZmluZSBUTVA1MVhfTE9DQUxfVEVNUF9MSU1JVAkweDExDQorI2RlZmluZSBUTVA1MVhfUkVNT1RF X1RFTVBfTElNSVRfMQkweDEyDQorI2RlZmluZSBUTVA1MVhfUkVNT1RFX1RFTVBfTElNSVRfMgkw eDEzDQorI2RlZmluZSBUTVA1MVhfU0hVTlRfQ0FMSUJSQVRJT04JMHgxNQ0KKyNkZWZpbmUgVE1Q NTFYX05fRkFDVE9SX0FORF9IWVNUXzEJMHgxNg0KKyNkZWZpbmUgVE1QNTFYX05fRkFDVE9SXzIJ CTB4MTcNCisjZGVmaW5lIFRNUDUxWF9NQU5fSURfUkVHCQkweEZFDQorI2RlZmluZSBUTVA1MVhf REVWSUNFX0lEX1JFRwkJMHhGRg0KKw0KKy8vIFRNUDUxMyBzcGVjaWZpYyByZWdpc3RlciBkZWZp bml0aW9uDQorI2RlZmluZSBUTVA1MTNfUkVNT1RFX1RFTVBfUkVTVUxUXzMJMHgwQg0KKyNkZWZp bmUgVE1QNTEzX1JFTU9URV9URU1QX0xJTUlUXzMJMHgxNA0KKyNkZWZpbmUgVE1QNTEzX05fRkFD VE9SXzMJCTB4MTgNCisNCisvLyBDb21tb24gYXR0cnMsIGFuZCBOVUxMDQorI2RlZmluZSBUTVA1 MVhfTUFOVUZBQ1RVUkVSX0lECQkweDU1RkYNCisNCisjZGVmaW5lIFRNUDUxMl9ERVZJQ0VfSUQJ CTB4MjJGRg0KKyNkZWZpbmUgVE1QNTEzX0RFVklDRV9JRAkJMHgyM0ZGDQorDQorLy8gRGVmYXVs dCBjb25maWcNCisjZGVmaW5lIFRNUDUxWF9TSFVOVF9DT05GSUdfREVGQVVMVAkweDM5OUYNCisj ZGVmaW5lIFRNUDUxWF9URU1QX0xJTUlUX0RFRkFVTFQJMHgyQTgwDQorI2RlZmluZSBUTVA1MVhf TUFYX1JFR0lTVEVSX0FERFIJMHhGRg0KKw0KKyNkZWZpbmUgVE1QNTEyX1RFTVBfQ09ORklHX0RF RkFVTFQJMHhCRjgwDQorI2RlZmluZSBUTVA1MTNfVEVNUF9DT05GSUdfREVGQVVMVAkweEZGODAN CisNCisvLyBNYXNrIGFuZCBzaGlmdA0KKyNkZWZpbmUgQ1VSUkVOVF9TRU5TRV9WT0xUQUdFXzMy MF9NQVNLCTB4MTgwMA0KKyNkZWZpbmUgQ1VSUkVOVF9TRU5TRV9WT0xUQUdFXzE2MF9NQVNLCTB4 MTAwMA0KKyNkZWZpbmUgQ1VSUkVOVF9TRU5TRV9WT0xUQUdFXzgwX01BU0sJMHgwODAwDQorI2Rl ZmluZSBDVVJSRU5UX1NFTlNFX1ZPTFRBR0VfNDBfTUFTSwkwDQorDQorI2RlZmluZSBUTVA1MVhf QlVTX1ZPTFRBR0VfTUFTSwkweDIwMDANCisjZGVmaW5lIFRNUDUxWF9QR0FfTUFTSwkJCTB4MTgw MA0KKyNkZWZpbmUgVE1QNTFYX05fRkFDVE9SX01BU0sJCTB4RkYwMA0KKyNkZWZpbmUgVE1QNTFY X0hZU1RfTUFTSwkJMHgwMEZGDQorDQorI2RlZmluZSBUTVA1MVhfQlVTX1ZPTFRBR0VfU0hJRlQJ Mw0KKyNkZWZpbmUgVE1QNTFYX1RFTVBfU0hJRlQJCTMNCisNCisvLyBBbGFybXMNCisjZGVmaW5l IFRNUDUxWF9TSFVOVF9WT0xUQUdFX0hfTElNSVRfUE9TCTE1DQorI2RlZmluZSBUTVA1MVhfU0hV TlRfVk9MVEFHRV9MX0xJTUlUX1BPUwkxNA0KKyNkZWZpbmUgVE1QNTFYX0JVU19WT0xUQUdFX0hf TElNSVRfUE9TCQkxMw0KKyNkZWZpbmUgVE1QNTFYX0JVU19WT0xUQUdFX0xfTElNSVRfUE9TCQkx Mg0KKyNkZWZpbmUgVE1QNTFYX1BPV0VSX0xJTUlUX1BPUwkJCTExDQorI2RlZmluZSBUTVA1MVhf TE9DQUxfVEVNUF9MSU1JVF9QT1MJCTEwDQorI2RlZmluZSBUTVA1MVhfUkVNT1RFX1RFTVBfTElN SVRfMV9QT1MJCTkNCisjZGVmaW5lIFRNUDUxWF9SRU1PVEVfVEVNUF9MSU1JVF8yX1BPUwkJOA0K KyNkZWZpbmUgVE1QNTEzX1JFTU9URV9URU1QX0xJTUlUXzNfUE9TCQk3DQorDQorLy8gVmFsdWUg dHlwZSBmb3IgcmVnaXN0ZXIgd2l0aCBtb3JlIHRoYW4gb25lIHZhbHVlDQorI2RlZmluZSBUTVA1 MVhfTl9GQUNUT1JfRUxFTQkJMA0KKyNkZWZpbmUgVE1QNTFYX0hZU1RfRUxFTQkJMQ0KKw0KK3N0 YXRpYyBjb25zdCB1OCBUTVA1MVhfVEVNUF9JTlBVVFs0XSA9IHsNCisJVE1QNTFYX0xPQ0FMX1RF TVBfUkVTVUxULA0KKwlUTVA1MVhfUkVNT1RFX1RFTVBfUkVTVUxUXzEsDQorCVRNUDUxWF9SRU1P VEVfVEVNUF9SRVNVTFRfMiwNCisJVE1QNTEzX1JFTU9URV9URU1QX1JFU1VMVF8zDQorfTsNCisN CitzdGF0aWMgY29uc3QgdTggVE1QNTFYX1RFTVBfQ1JJVFs0XSA9IHsNCisJVE1QNTFYX0xPQ0FM X1RFTVBfTElNSVQsDQorCVRNUDUxWF9SRU1PVEVfVEVNUF9MSU1JVF8xLA0KKwlUTVA1MVhfUkVN T1RFX1RFTVBfTElNSVRfMiwNCisJVE1QNTEzX1JFTU9URV9URU1QX0xJTUlUXzMNCit9Ow0KKw0K K3N0YXRpYyBjb25zdCB1OCBUTVA1MVhfVEVNUF9DUklUX0FMQVJNWzRdID0gew0KKwlUTVA1MVhf TE9DQUxfVEVNUF9MSU1JVF9QT1MsDQorCVRNUDUxWF9SRU1PVEVfVEVNUF9MSU1JVF8xX1BPUywN CisJVE1QNTFYX1JFTU9URV9URU1QX0xJTUlUXzJfUE9TLA0KKwlUTVA1MTNfUkVNT1RFX1RFTVBf TElNSVRfM19QT1MNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCB1OCBUTVA1MVhfSU5fSU5QVVRbMl0g PSB7DQorCVRNUDUxWF9TSFVOVF9WT0xUQUdFX1JFU1VMVCwNCisJVE1QNTFYX0JVU19WT0xUQUdF X1JFU1VMVA0KK307DQorDQorc3RhdGljIGNvbnN0IHU4IFRNUDUxWF9JTl9DUklUWzJdID0gew0K KwlUTVA1MVhfU0hVTlRfVk9MVEFHRV9IX0xJTUlULA0KKwlUTVA1MVhfQlVTX1ZPTFRBR0VfSF9M SU1JVA0KK307DQorDQorc3RhdGljIGNvbnN0IHU4IFRNUDUxWF9JTl9MQ1JJVFsyXSA9IHsNCisJ VE1QNTFYX1NIVU5UX1ZPTFRBR0VfTF9MSU1JVCwNCisJVE1QNTFYX0JVU19WT0xUQUdFX0xfTElN SVQNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCB1OCBUTVA1MVhfSU5fQ1JJVF9BTEFSTVsyXSA9IHsN CisJVE1QNTFYX1NIVU5UX1ZPTFRBR0VfSF9MSU1JVF9QT1MsDQorCVRNUDUxWF9CVVNfVk9MVEFH RV9IX0xJTUlUX1BPUw0KK307DQorDQorc3RhdGljIGNvbnN0IHU4IFRNUDUxWF9JTl9MQ1JJVF9B TEFSTVsyXSA9IHsNCisJVE1QNTFYX1NIVU5UX1ZPTFRBR0VfTF9MSU1JVF9QT1MsDQorCVRNUDUx WF9CVVNfVk9MVEFHRV9MX0xJTUlUX1BPUw0KK307DQorDQorc3RhdGljIGNvbnN0IHU4IFRNUDUx WF9DVVJSX0lOUFVUWzFdID0gew0KKwlUTVA1MVhfU0hVTlRfQ1VSUkVOVF9SRVNVTFQNCit9Ow0K Kw0KK3N0YXRpYyBjb25zdCB1OCBUTVA1MVhfUE9XRVJfSU5QVVRbMV0gPSB7DQorCVRNUDUxWF9Q T1dFUl9SRVNVTFQNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCB1OCBUTVA1MVhfUE9XRVJfQ1JJVFsx XSA9IHsNCisJVE1QNTFYX1BPV0VSX0xJTUlUDQorfTsNCisNCitzdGF0aWMgY29uc3QgdTggVE1Q NTFYX1BPV0VSX0NSSVRfQUxBUk1bMV0gPSB7DQorCVRNUDUxWF9QT1dFUl9MSU1JVF9QT1MNCit9 Ow0KKw0KKw0KK3N0YXRpYyBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyB0bXA1MXhfcmVnbWFwX2NvbmZp ZyA9IHsNCisJLnJlZ19iaXRzID0gOCwNCisJLnZhbF9iaXRzID0gMTYsDQorfTsNCisNCitlbnVt IHRtcDUxeF9pZHMgew0KKwl0bXA1MTIsIHRtcDUxMw0KK307DQorDQorc3RydWN0IHRtcDUxeF9j b25maWcgew0KKwl1MTYgc2h1bnRfY29uZmlnOw0KKwl1OCBwZ2Ffc2hpZnQ7DQorCXUxNiBwZ2Ff Z2FpbjsNCisJdTMyIHJzaHVudDsNCisJczMyIG1heF9jdXJyX21hOw0KKw0KKwl1MTYgdGVtcF9j b25maWc7DQorDQorCXU4IHRlbXBfaHlzdDsNCisJdTggdGVtcDJfbmZhY3RvcjsNCisJdTggdGVt cDNfbmZhY3RvcjsNCisJdTggdGVtcDRfbmZhY3RvcjsNCisNCisJdTMyIGN1cnJfbHNiOw0KKwl1 MzIgcHdyX2xzYjsNCisJdTggcmVnaXN0ZXJzOw0KK307DQorDQorc3RydWN0IHRtcDUxeF9kYXRh IHsNCisJc3RydWN0IHRtcDUxeF9jb25maWcgKmNvbmZpZzsNCisJZW51bSB0bXA1MXhfaWRzIGlk Ow0KKwlzdHJ1Y3QgcmVnbWFwICpyZWdtYXA7DQorCXN0cnVjdCBtdXRleCBjb25maWdfbG9jazsN Cit9Ow0KKw0KK3N0YXRpYyBzdHJ1Y3QgdG1wNTF4X2NvbmZpZyB0bXA1MXhfY29uZmlnW10gPSB7 DQorCVt0bXA1MTJdID0gew0KKwkJLnNodW50X2NvbmZpZyA9IFRNUDUxWF9TSFVOVF9DT05GSUdf REVGQVVMVCwNCisJCS5wZ2Ffc2hpZnQgPSAxLA0KKwkJLnBnYV9nYWluID0gOCwNCisJCS50ZW1w X2NvbmZpZyA9IFRNUDUxMl9URU1QX0NPTkZJR19ERUZBVUxULA0KKwkJLnJlZ2lzdGVycyA9IFRN UDUxWF9NQVhfUkVHSVNURVJfQUREUiwNCisJfSwNCisJW3RtcDUxM10gPSB7DQorCQkuc2h1bnRf Y29uZmlnID0gVE1QNTFYX1NIVU5UX0NPTkZJR19ERUZBVUxULA0KKwkJLnBnYV9zaGlmdCA9IDEs DQorCQkucGdhX2dhaW4gPSA4LA0KKwkJLnRlbXBfY29uZmlnID0gVE1QNTEzX1RFTVBfQ09ORklH X0RFRkFVTFQsDQorCQkucmVnaXN0ZXJzID0gVE1QNTFYX01BWF9SRUdJU1RFUl9BRERSLA0KKwl9 LA0KK307DQorDQorc3RhdGljIGxvbmcgdG1wNTF4X2dldF92YWx1ZShzdHJ1Y3QgZGV2aWNlICpk ZXYsIHU4IHJlZywgdTggcG9zLA0KKwkJCSAgICB1bnNpZ25lZCBpbnQgcmVndmFsKQ0KK3sNCisJ c3RydWN0IHRtcDUxeF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQorCXN0cnVj dCB0bXA1MXhfY29uZmlnICpjb25maWcgPSBkYXRhLT5jb25maWc7DQorCWxvbmcgdmFsOw0KKw0K Kwlzd2l0Y2ggKHJlZykgew0KKwljYXNlIFRNUDUxWF9TVEFUVVM6DQorCQl2YWwgPSAocmVndmFs ID4+IHBvcykgJiAxOw0KKwkJYnJlYWs7DQorCWNhc2UgVE1QNTFYX1NIVU5UX0NBTElCUkFUSU9O Og0KKwkJdmFsID0gcmVndmFsOw0KKwkJYnJlYWs7DQorCWNhc2UgVE1QNTFYX1NIVU5UX1ZPTFRB R0VfUkVTVUxUOg0KKwljYXNlIFRNUDUxWF9TSFVOVF9WT0xUQUdFX0hfTElNSVQ6DQorCWNhc2Ug VE1QNTFYX1NIVU5UX1ZPTFRBR0VfTF9MSU1JVDoNCisJCS8qDQorCQkgKiAyJ3MgY29tcGxpbWVu dCBudW1iZXIgc2hpZnRlZCBieSBvbmUgdG8gZm91ciBkZXBlbmRpbmcNCisJCSAqIG9uIHRoZSBw Z2EgZ2FpbiBzZXR0aW5nLg0KKwkJICogMWxzYiA9IDEwdVYNCisJCSAqLw0KKwkJdmFsID0gc2ln bl9leHRlbmQzMihyZWd2YWwsIDE2IC0gY29uZmlnLT5wZ2Ffc2hpZnQpOw0KKwkJdmFsID0gRElW X1JPVU5EX0NMT1NFU1QodmFsLCAxMDApOw0KKwkJYnJlYWs7DQorCWNhc2UgVE1QNTFYX0JVU19W T0xUQUdFX1JFU1VMVDoNCisJY2FzZSBUTVA1MVhfQlVTX1ZPTFRBR0VfSF9MSU1JVDoNCisJY2Fz ZSBUTVA1MVhfQlVTX1ZPTFRBR0VfTF9MSU1JVDoNCisJCS8vIDFsc2IgPSA0dVYNCisJCXZhbCA9 IChyZWd2YWwgPj4gVE1QNTFYX0JVU19WT0xUQUdFX1NISUZUKSAqIDQ7DQorCQlicmVhazsNCisJ Y2FzZSBUTVA1MVhfUE9XRVJfUkVTVUxUOg0KKwljYXNlIFRNUDUxWF9QT1dFUl9MSU1JVDoNCisJ CS8vIFBvd2VyID0gKGN1cnJlbnQgKiBCdXNWb2x0YWdlKSAvIDUwMDANCisJCXZhbCA9IHJlZ3Zh bCAqIGNvbmZpZy0+cHdyX2xzYjsNCisJCWJyZWFrOw0KKwljYXNlIFRNUDUxWF9TSFVOVF9DVVJS RU5UX1JFU1VMVDoNCisJCS8vIEN1cnJlbnQgPSAoU2h1bnRWb2x0YWdlICogQ2FsaWJyYXRpb25S ZWdpc3RlcikgLyA0MDk2DQorCQl2YWwgPSBzaWduX2V4dGVuZDMyKHJlZ3ZhbCwgMTUpICogY29u ZmlnLT5jdXJyX2xzYjsNCisJCWJyZWFrOw0KKwljYXNlIFRNUDUxWF9MT0NBTF9URU1QX1JFU1VM VDoNCisJY2FzZSBUTVA1MVhfUkVNT1RFX1RFTVBfUkVTVUxUXzE6DQorCWNhc2UgVE1QNTFYX1JF TU9URV9URU1QX1JFU1VMVF8yOg0KKwljYXNlIFRNUDUxM19SRU1PVEVfVEVNUF9SRVNVTFRfMzoN CisJY2FzZSBUTVA1MVhfTE9DQUxfVEVNUF9MSU1JVDoNCisJY2FzZSBUTVA1MVhfUkVNT1RFX1RF TVBfTElNSVRfMToNCisJY2FzZSBUTVA1MVhfUkVNT1RFX1RFTVBfTElNSVRfMjoNCisJY2FzZSBU TVA1MTNfUkVNT1RFX1RFTVBfTElNSVRfMzoNCisJCS8vIDFsc2IgPSAwLjA2MjUgZGVncmVlcyBj ZW50aWdyYWRlDQorCQl2YWwgPSBESVZfUk9VTkRfQ0xPU0VTVCgocmVndmFsID4+IFRNUDUxWF9U RU1QX1NISUZUKSAqIDYyNSwNCisJCQkJCTEwKTsNCisJCWJyZWFrOw0KKwlkZWZhdWx0Og0KKwkJ Ly8gUHJvZ3JhbW1lciBnb29mZWQNCisJCVdBUk5fT05fT05DRSgxKTsNCisJCXZhbCA9IDA7DQor CQlicmVhazsNCisJfQ0KKw0KKwlyZXR1cm4gdmFsOw0KK30NCisNCitzdGF0aWMgaW50IHRtcDUx eF9zZXRfdmFsdWUoc3RydWN0IGRldmljZSAqZGV2LCB1OCByZWcsIGxvbmcgdmFsKQ0KK3sNCisJ c3RydWN0IHRtcDUxeF9kYXRhICpkYXRhID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQorCXN0cnVj dCB0bXA1MXhfY29uZmlnICpjb25maWcgPSBkYXRhLT5jb25maWc7DQorCWludCByZWd2YWwsIHJl dDsNCisNCisJbXV0ZXhfbG9jaygmZGF0YS0+Y29uZmlnX2xvY2spOw0KKw0KKwlzd2l0Y2ggKHJl Zykgew0KKwljYXNlIFRNUDUxWF9TSFVOVF9WT0xUQUdFX0hfTElNSVQ6DQorCWNhc2UgVE1QNTFY X1NIVU5UX1ZPTFRBR0VfTF9MSU1JVDoNCisJCS8vIDFsc2IgPSAxMHVWDQorCQlyZWd2YWwgPSB2 YWwgKiAxMDA7DQorCQlicmVhazsNCisJY2FzZSBUTVA1MVhfQlVTX1ZPTFRBR0VfSF9MSU1JVDoN CisJY2FzZSBUTVA1MVhfQlVTX1ZPTFRBR0VfTF9MSU1JVDoNCisJCS8vIDFsc2IgPSA0dVYNCisJ CXJlZ3ZhbCA9IERJVl9ST1VORF9DTE9TRVNUKHZhbCwgNCkgPDwgVE1QNTFYX0JVU19WT0xUQUdF X1NISUZUOw0KKwkJYnJlYWs7DQorCWNhc2UgVE1QNTFYX1BPV0VSX0xJTUlUOg0KKwkJcmVndmFs ID0gRElWX1JPVU5EX0NMT1NFU1QodmFsLCBjb25maWctPnB3cl9sc2IpOw0KKwkJYnJlYWs7DQor CWNhc2UgVE1QNTFYX0xPQ0FMX1RFTVBfTElNSVQ6DQorCWNhc2UgVE1QNTFYX1JFTU9URV9URU1Q X0xJTUlUXzE6DQorCWNhc2UgVE1QNTFYX1JFTU9URV9URU1QX0xJTUlUXzI6DQorCWNhc2UgVE1Q NTEzX1JFTU9URV9URU1QX0xJTUlUXzM6DQorCQkvLyAxbHNiID0gMC4wNjI1IGRlZ3JlZXMgY2Vu dGlncmFkZQ0KKwkJcmVndmFsID0gRElWX1JPVU5EX0NMT1NFU1QodmFsICogMTAsIDYyNSkgPDwg VE1QNTFYX1RFTVBfU0hJRlQ7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCS8vIFByb2dyYW1t ZXIgZ29vZmVkDQorCQlXQVJOX09OX09OQ0UoMSk7DQorCQlyZWd2YWwgPSAwOw0KKwkJYnJlYWs7 DQorCX0NCisNCisJZGV2X2RiZyhkZXYsICJ3cml0ZSByZWdpc3RlciAlMDJYLCB2YWwgPSAweCUw NHhcbiIsIHJlZywgcmVndmFsKTsNCisNCisJcmV0ID0gcmVnbWFwX3dyaXRlKGRhdGEtPnJlZ21h cCwgcmVnLCByZWd2YWwpOw0KKw0KKwltdXRleF91bmxvY2soJmRhdGEtPmNvbmZpZ19sb2NrKTsN CisNCisJcmV0dXJuIHJldDsNCit9DQorDQorc3RhdGljIGludCB0bXA1MXhfcmVhZF9yZWcoc3Ry dWN0IGRldmljZSAqZGV2LCBpbnQgcmVnLCB1bnNpZ25lZCBpbnQgKnJlZ3ZhbCkNCit7DQorCXN0 cnVjdCB0bXA1MXhfZGF0YSAqZGF0YSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KKwlpbnQgcmV0 Ow0KKw0KKwlkZXZfZGJnKGRldiwgIlN0YXJ0aW5nIHJlZ2lzdGVyICUwMlggcmVhZFxuIiwgcmVn KTsNCisNCisJcmV0ID0gcmVnbWFwX3JlYWQoZGF0YS0+cmVnbWFwLCByZWcsIHJlZ3ZhbCk7DQor CWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsNCisNCisJZGV2X2RiZyhkZXYsICJyZWFkICUw MlgsIHZhbCA9IDB4JTA0eFxuIiwgcmVnLCAqcmVndmFsKTsNCisNCisJcmV0dXJuIDA7DQorfQ0K Kw0KK3N0YXRpYyBpbnQgdG1wNTF4X3JlYWQoc3RydWN0IGRldmljZSAqZGV2LCBlbnVtIGh3bW9u X3NlbnNvcl90eXBlcyB0eXBlLA0KKwkJICAgICAgIHUzMiBhdHRyLCBpbnQgY2hhbm5lbCwgbG9u ZyAqdmFsKQ0KK3sNCisJaW50IHJldDsNCisJdTMyIHJlZ3ZhbDsNCisJdTggcG9zID0gMCwgcmVn ID0gMDsNCisNCisJc3dpdGNoICh0eXBlKSB7DQorCWNhc2UgaHdtb25fdGVtcDoNCisJCXN3aXRj aCAoYXR0cikgew0KKwkJY2FzZSBod21vbl90ZW1wX2lucHV0Og0KKwkJCXJlZyA9IFRNUDUxWF9U RU1QX0lOUFVUW2NoYW5uZWxdOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBod21vbl90ZW1wX2NyaXRf YWxhcm06DQorCQkJcmVnID0gVE1QNTFYX1NUQVRVUzsNCisJCQlwb3MgPSBUTVA1MVhfVEVNUF9D UklUX0FMQVJNW2NoYW5uZWxdOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBod21vbl90ZW1wX2NyaXQ6 DQorCQkJcmVnID0gVE1QNTFYX1RFTVBfQ1JJVFtjaGFubmVsXTsNCisJCQlicmVhazsNCisJCX0N CisJCWJyZWFrOw0KKwljYXNlIGh3bW9uX2luOg0KKwkJc3dpdGNoIChhdHRyKSB7DQorCQljYXNl IGh3bW9uX2luX2lucHV0Og0KKwkJCXJlZyA9IFRNUDUxWF9JTl9JTlBVVFtjaGFubmVsXTsNCisJ CQlicmVhazsNCisJCWNhc2UgaHdtb25faW5fbGNyaXRfYWxhcm06DQorCQkJcmVnID0gVE1QNTFY X1NUQVRVUzsNCisJCQlwb3MgPSBUTVA1MVhfSU5fTENSSVRfQUxBUk1bY2hhbm5lbF07DQorCQkJ YnJlYWs7DQorCQljYXNlIGh3bW9uX2luX2NyaXRfYWxhcm06DQorCQkJcmVnID0gVE1QNTFYX1NU QVRVUzsNCisJCQlwb3MgPSBUTVA1MVhfSU5fQ1JJVF9BTEFSTVtjaGFubmVsXTsNCisJCQlicmVh azsNCisJCWNhc2UgaHdtb25faW5fbGNyaXQ6DQorCQkJcmVnID0gVE1QNTFYX0lOX0xDUklUW2No YW5uZWxdOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBod21vbl9pbl9jcml0Og0KKwkJCXJlZyA9IFRN UDUxWF9JTl9DUklUW2NoYW5uZWxdOw0KKwkJCWJyZWFrOw0KKwkJfQ0KKwkJYnJlYWs7DQorCWNh c2UgaHdtb25fY3VycjoNCisJCXN3aXRjaCAoYXR0cikgew0KKwkJY2FzZSBod21vbl9jdXJyX2lu cHV0Og0KKwkJCXJlZyA9IFRNUDUxWF9DVVJSX0lOUFVUW2NoYW5uZWxdOw0KKwkJCWJyZWFrOw0K KwkJfQ0KKwkJYnJlYWs7DQorCWNhc2UgaHdtb25fcG93ZXI6DQorCQlzd2l0Y2ggKGF0dHIpIHsN CisJCWNhc2UgaHdtb25fcG93ZXJfaW5wdXQ6DQorCQkJcmVnID0gVE1QNTFYX1BPV0VSX0lOUFVU W2NoYW5uZWxdOw0KKwkJCWJyZWFrOw0KKwkJY2FzZSBod21vbl9wb3dlcl9jcml0X2FsYXJtOg0K KwkJCXJlZyA9IFRNUDUxWF9TVEFUVVM7DQorCQkJcG9zID0gVE1QNTFYX1BPV0VSX0NSSVRfQUxB Uk1bY2hhbm5lbF07DQorCQkJYnJlYWs7DQorCQljYXNlIGh3bW9uX3Bvd2VyX2NyaXQ6DQorCQkJ cmVnID0gVE1QNTFYX1BPV0VSX0NSSVRbY2hhbm5lbF07DQorCQkJYnJlYWs7DQorCQl9DQorCQli cmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorDQorCXJldCA9IHRtcDUxeF9yZWFk X3JlZyhkZXYsIHJlZywgJnJlZ3ZhbCk7DQorCWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsN CisNCisJKnZhbCA9IHRtcDUxeF9nZXRfdmFsdWUoZGV2LCByZWcsIHBvcywgcmVndmFsKTsNCisJ cmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgdG1wNTF4X3dyaXRlKHN0cnVjdCBkZXZpY2Ug KmRldiwgZW51bSBod21vbl9zZW5zb3JfdHlwZXMgdHlwZSwNCisJCQl1MzIgYXR0ciwgaW50IGNo YW5uZWwsIGxvbmcgdmFsKQ0KK3sNCisJdTggcmVnID0gMDsNCisNCisJc3dpdGNoICh0eXBlKSB7 DQorCWNhc2UgaHdtb25fdGVtcDoNCisJCXN3aXRjaCAoYXR0cikgew0KKwkJY2FzZSBod21vbl90 ZW1wX2NyaXQ6DQorCQkJcmVnID0gVE1QNTFYX1RFTVBfQ1JJVFtjaGFubmVsXTsNCisJCQlicmVh azsNCisJCX0NCisJCWJyZWFrOw0KKwljYXNlIGh3bW9uX2luOg0KKwkJc3dpdGNoIChhdHRyKSB7 DQorCQljYXNlIGh3bW9uX2luX2xjcml0Og0KKwkJCXJlZyA9IFRNUDUxWF9JTl9MQ1JJVFtjaGFu bmVsXTsNCisJCQlicmVhazsNCisJCWNhc2UgaHdtb25faW5fY3JpdDoNCisJCQlyZWcgPSBUTVA1 MVhfSU5fQ1JJVFtjaGFubmVsXTsNCisJCQlicmVhazsNCisJCX0NCisJCWJyZWFrOw0KKwljYXNl IGh3bW9uX3Bvd2VyOg0KKwkJc3dpdGNoIChhdHRyKSB7DQorCQljYXNlIGh3bW9uX3Bvd2VyX2Ny aXQ6DQorCQkJcmVnID0gVE1QNTFYX1BPV0VSX0NSSVRbY2hhbm5lbF07DQorCQkJYnJlYWs7DQor CQl9DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorDQorCWlmIChyZWcg IT0gMCkNCisJCXJldHVybiB0bXA1MXhfc2V0X3ZhbHVlKGRldiwgcmVnLCB2YWwpOw0KKwllbHNl DQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7DQorfQ0KKw0KK3N0YXRpYyB1bW9kZV90IHRtcDUxeF9p c192aXNpYmxlKGNvbnN0IHZvaWQgKl9kYXRhLA0KKwkJCQkgZW51bSBod21vbl9zZW5zb3JfdHlw ZXMgdHlwZSwgdTMyIGF0dHIsDQorCQkJCSBpbnQgY2hhbm5lbCkNCit7DQorCWNvbnN0IHN0cnVj dCB0bXA1MXhfZGF0YSAqZGF0YSA9IF9kYXRhOw0KKw0KKwlzd2l0Y2ggKHR5cGUpIHsNCisJY2Fz ZSBod21vbl90ZW1wOg0KKwkJaWYgKGRhdGEtPmlkID09IHRtcDUxMiAmJiBjaGFubmVsID09IDQp DQorCQkJcmV0dXJuIDA7DQorCQlzd2l0Y2ggKGF0dHIpIHsNCisJCWNhc2UgaHdtb25fdGVtcF9p bnB1dDoNCisJCWNhc2UgaHdtb25fdGVtcF9jcml0X2FsYXJtOg0KKwkJCXJldHVybiAwNDQ0Ow0K KwkJY2FzZSBod21vbl90ZW1wX2NyaXQ6DQorCQkJcmV0dXJuIDA2NDQ7DQorCQl9DQorCQlicmVh azsNCisJY2FzZSBod21vbl9pbjoNCisJCXN3aXRjaCAoYXR0cikgew0KKwkJY2FzZSBod21vbl9p bl9pbnB1dDoNCisJCWNhc2UgaHdtb25faW5fbGNyaXRfYWxhcm06DQorCQljYXNlIGh3bW9uX2lu X2NyaXRfYWxhcm06DQorCQkJcmV0dXJuIDA0NDQ7DQorCQljYXNlIGh3bW9uX2luX2xjcml0Og0K KwkJY2FzZSBod21vbl9pbl9jcml0Og0KKwkJCXJldHVybiAwNjQ0Ow0KKwkJfQ0KKwkJYnJlYWs7 DQorCWNhc2UgaHdtb25fY3VycjoNCisJCXN3aXRjaCAoYXR0cikgew0KKwkJY2FzZSBod21vbl9j dXJyX2lucHV0Og0KKwkJCXJldHVybiAwNDQ0Ow0KKwkJfQ0KKwkJYnJlYWs7DQorCWNhc2UgaHdt b25fcG93ZXI6DQorCQlzd2l0Y2ggKGF0dHIpIHsNCisJCWNhc2UgaHdtb25fcG93ZXJfaW5wdXQ6 DQorCQljYXNlIGh3bW9uX3Bvd2VyX2NyaXRfYWxhcm06DQorCQkJcmV0dXJuIDA0NDQ7DQorCQlj YXNlIGh3bW9uX3Bvd2VyX2NyaXQ6DQorCQkJcmV0dXJuIDA2NDQ7DQorCQl9DQorCQlicmVhazsN CisJZGVmYXVsdDoNCisJCWJyZWFrOw0KKwl9DQorCXJldHVybiAwOw0KK30NCisNCitzdGF0aWMg Y29uc3Qgc3RydWN0IGh3bW9uX2NoYW5uZWxfaW5mbyAqdG1wNTF4X2luZm9bXSA9IHsNCisJSFdN T05fQ0hBTk5FTF9JTkZPKHRlbXAsDQorCQkJICAgSFdNT05fVF9JTlBVVCB8IEhXTU9OX1RfQ1JJ VCB8IEhXTU9OX1RfQ1JJVF9BTEFSTSwNCisJCQkgICBIV01PTl9UX0lOUFVUIHwgSFdNT05fVF9D UklUIHwgSFdNT05fVF9DUklUX0FMQVJNLA0KKwkJCSAgIEhXTU9OX1RfSU5QVVQgfCBIV01PTl9U X0NSSVQgfCBIV01PTl9UX0NSSVRfQUxBUk0sDQorCQkJICAgSFdNT05fVF9JTlBVVCB8IEhXTU9O X1RfQ1JJVCB8IEhXTU9OX1RfQ1JJVF9BTEFSTSksDQorCUhXTU9OX0NIQU5ORUxfSU5GTyhpbiwN CisJCQkgICBIV01PTl9JX0lOUFVUIHwgSFdNT05fSV9MQ1JJVCB8IEhXTU9OX0lfTENSSVRfQUxB Uk0gfA0KKwkJCSAgIEhXTU9OX0lfQ1JJVCB8IEhXTU9OX0lfQ1JJVF9BTEFSTSwNCisJCQkgICBI V01PTl9JX0lOUFVUIHwgSFdNT05fSV9MQ1JJVCB8IEhXTU9OX0lfTENSSVRfQUxBUk0gfA0KKwkJ CSAgIEhXTU9OX0lfQ1JJVCB8IEhXTU9OX0lfQ1JJVF9BTEFSTSksDQorCUhXTU9OX0NIQU5ORUxf SU5GTyhjdXJyLA0KKwkJCSAgIEhXTU9OX0NfSU5QVVQpLA0KKwlIV01PTl9DSEFOTkVMX0lORk8o cG93ZXIsDQorCQkJICAgSFdNT05fUF9JTlBVVCB8IEhXTU9OX1BfQ1JJVCB8IEhXTU9OX1BfQ1JJ VF9BTEFSTSksDQorCU5VTEwNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fb3Bz IHRtcDUxeF9od21vbl9vcHMgPSB7DQorCS5pc192aXNpYmxlID0gdG1wNTF4X2lzX3Zpc2libGUs DQorCS5yZWFkID0gdG1wNTF4X3JlYWQsDQorCS53cml0ZSA9IHRtcDUxeF93cml0ZSwNCit9Ow0K Kw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgaHdtb25fY2hpcF9pbmZvIHRtcDUxeF9jaGlwX2luZm8g PSB7DQorCS5vcHMgPSAmdG1wNTF4X2h3bW9uX29wcywNCisJLmluZm8gPSB0bXA1MXhfaW5mbywN Cit9Ow0KKw0KKy8qDQorICogQ2FsaWJyYXRlIHRoZSB0bXA1MXggZm9sbG93aW5nIHRoZSBkYXRh c2hlZXQgbWV0aG9kDQorICovDQorc3RhdGljIGludCB0bXA1MXhfY2FsaWJyYXRlKHN0cnVjdCB0 bXA1MXhfZGF0YSAqZGF0YSkNCit7DQorCWludCByc2h1bnQgPSBkYXRhLT5jb25maWctPnJzaHVu dDsNCisJaW50IHZzaHVudF9tYXggPSBkYXRhLT5jb25maWctPnBnYV9nYWluICogNDA7DQorCWlu dCB2YWwsIG1heF9jdXJyX21hOw0KKw0KKwltYXhfY3Vycl9tYSA9IERJVl9ST1VORF9DTE9TRVNU KHZzaHVudF9tYXggKiAxMDAwICogMTAwMCwgcnNodW50KTsNCisJaWYgKG1heF9jdXJyX21hIDwg ZGF0YS0+Y29uZmlnLT5tYXhfY3Vycl9tYSkNCisJCWRhdGEtPmNvbmZpZy0+bWF4X2N1cnJfbWEg PSBtYXhfY3Vycl9tYTsNCisNCisJLyoNCisJICogQ2FsY3VsYXRlIHRoZSBtaW5pbWFsIGJpdCBy ZXNvbHV0aW9uIGZvciB0aGUgY3VycmVudCBhbmQgdGhlIHBvd2VyLg0KKwkgKiBUaG9zZSB2YWx1 ZXMgd2lsbCBiZSB1c2VkIGR1cmluZyByZWdpc3RlciBpbnRlcnByZXRhdGlvbi4NCisJICovDQor CWRhdGEtPmNvbmZpZy0+Y3Vycl9sc2IgPQ0KKwkJRElWX1JPVU5EX0NMT1NFU1QoZGF0YS0+Y29u ZmlnLT5tYXhfY3Vycl9tYSAqIDEwMDAsIDMyNzY3KTsNCisJZGF0YS0+Y29uZmlnLT5wd3JfbHNi ID0gMjAgKiBkYXRhLT5jb25maWctPmN1cnJfbHNiOw0KKw0KKwl2YWwgPSBESVZfUk9VTkRfQ0xP U0VTVChkYXRhLT5jb25maWctPmN1cnJfbHNiICogcnNodW50LCAxMDAwICogMTAwMCk7DQorCXZh bCA9IERJVl9ST1VORF9DTE9TRVNUKDQwOTYwLCB2YWwpOw0KKw0KKwlyZXR1cm4gcmVnbWFwX3dy aXRlKGRhdGEtPnJlZ21hcCwgVE1QNTFYX1NIVU5UX0NBTElCUkFUSU9OLCB2YWwpOw0KK30NCisN CisvKg0KKyAqIEluaXRpYWxpemUgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIGNhbGlicmF0aW9uIHJl Z2lzdGVycy4NCisgKi8NCitzdGF0aWMgaW50IHRtcDUxeF9pbml0KHN0cnVjdCB0bXA1MXhfZGF0 YSAqZGF0YSkNCit7DQorCXVuc2lnbmVkIGludCByZWd2YWw7DQorCWludCByZXQgPSByZWdtYXBf d3JpdGUoZGF0YS0+cmVnbWFwLCBUTVA1MVhfU0hVTlRfQ09ORklHLA0KKwkJCSAgICAgICBkYXRh LT5jb25maWctPnNodW50X2NvbmZpZyk7DQorCWlmIChyZXQgPCAwKQ0KKwkJcmV0dXJuIHJldDsN CisNCisJcmV0ID0gcmVnbWFwX3dyaXRlKGRhdGEtPnJlZ21hcCwgVE1QNTFYX1RFTVBfQ09ORklH LA0KKwkJCSAgICAgICBkYXRhLT5jb25maWctPnRlbXBfY29uZmlnKTsNCisJaWYgKHJldCA8IDAp DQorCQlyZXR1cm4gcmV0Ow0KKw0KKwkvLyBuRmFjdG9yIDEgYW5kIGh5c3RlcmVzaXMgY29uZmln dXJhdGlvbg0KKwlyZWd2YWwgPSAoZGF0YS0+Y29uZmlnLT50ZW1wMl9uZmFjdG9yIDw8IDgpICYg ZGF0YS0+Y29uZmlnLT50ZW1wX2h5c3Q7DQorCXJldCA9IHJlZ21hcF93cml0ZShkYXRhLT5yZWdt YXAsIFRNUDUxWF9OX0ZBQ1RPUl9BTkRfSFlTVF8xLCByZWd2YWwpOw0KKwlpZiAocmV0IDwgMCkN CisJCXJldHVybiByZXQ7DQorDQorCS8vIG5GYWN0b3IgMiBhbmQgMyBjb25maWd1cmF0aW9uDQor CXJldCA9IHJlZ21hcF93cml0ZShkYXRhLT5yZWdtYXAsIFRNUDUxWF9OX0ZBQ1RPUl8yLA0KKwkJ CSAgIGRhdGEtPmNvbmZpZy0+dGVtcDNfbmZhY3RvciA8PCA4KTsNCisJaWYgKHJldCA8IDApDQor CQlyZXR1cm4gcmV0Ow0KKw0KKwlpZiAoZGF0YS0+aWQgPT0gdG1wNTEzKSB7DQorCQlyZXQgPSBy ZWdtYXBfd3JpdGUoZGF0YS0+cmVnbWFwLCBUTVA1MTNfTl9GQUNUT1JfMywNCisJCQkJICAgZGF0 YS0+Y29uZmlnLT50ZW1wM19uZmFjdG9yIDw8IDgpOw0KKwkJaWYgKHJldCA8IDApDQorCQkJcmV0 dXJuIHJldDsNCisJfQ0KKw0KKwlyZXQgPSB0bXA1MXhfY2FsaWJyYXRlKGRhdGEpOw0KKwlpZiAo cmV0IDwgMCkNCisJCXJldHVybiByZXQ7DQorDQorCS8vIFJlYWQgdGhlIHN0YXR1cyByZWdpc3Rl ciBiZWZvcmUgdXNpbmcgYXMgdGhlIGRhdGFzaGVldCBwcm9wb3NlDQorCXJldCA9IHJlZ21hcF9y ZWFkKGRhdGEtPnJlZ21hcCwgVE1QNTFYX1NUQVRVUywgJnJlZ3ZhbCk7DQorCWlmIChyZXQgPCAw KQ0KKwkJcmV0dXJuIHJldDsNCisNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBz dHJ1Y3QgaTJjX2RldmljZV9pZCB0bXA1MXhfaWRbXSA9IHsNCisJeyAidG1wNTEyIiwgdG1wNTEy IH0sDQorCXsgInRtcDUxMyIsIHRtcDUxMyB9LA0KKwl7IH0NCit9Ow0KK01PRFVMRV9ERVZJQ0Vf VEFCTEUoaTJjLCB0bXA1MXhfaWQpOw0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNl X2lkIHRtcDUxeF9vZl9tYXRjaFtdID0gew0KKwl7DQorCQkuY29tcGF0aWJsZSA9ICJ0aSx0bXA1 MTIiLA0KKwkJLmRhdGEgPSAodm9pZCAqKXRtcDUxMg0KKwl9LA0KKwl7DQorCQkuY29tcGF0aWJs ZSA9ICJ0aSx0bXA1MTMiLA0KKwkJLmRhdGEgPSAodm9pZCAqKXRtcDUxMw0KKwl9LA0KKwl7IH0s DQorfTsNCitNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCB0bXA1MXhfb2ZfbWF0Y2gpOw0KKw0KK3N0 YXRpYyBpbnQgdG1wNTF4X3ZidXNfbWF4X3RvX3JlZyhzdHJ1Y3QgdG1wNTF4X2NvbmZpZyAqY29u ZmlnLCB1MzIgdmJ1c19tYXgpDQorew0KKwlpZiAodmJ1c19tYXggPT0gMzIpDQorCQljb25maWct PnNodW50X2NvbmZpZyB8PSBUTVA1MVhfQlVTX1ZPTFRBR0VfTUFTSzsNCisJZWxzZSBpZiAodmJ1 c19tYXggPT0gMTYpDQorCQljb25maWctPnNodW50X2NvbmZpZyAmPSB+VE1QNTFYX0JVU19WT0xU QUdFX01BU0s7DQorCWVsc2UNCisJCXJldHVybiAtRUlOVkFMOw0KKwlyZXR1cm4gMDsNCit9DQor DQorc3RhdGljIGludCB0bXA1MXhfcGdhX2dhaW5fdG9fcmVnKHN0cnVjdCB0bXA1MXhfY29uZmln ICpjb25maWcsIHUzMiBwZ2FfZ2FpbikNCit7DQorCWNvbmZpZy0+c2h1bnRfY29uZmlnICY9IH5U TVA1MVhfUEdBX01BU0s7DQorCWNvbmZpZy0+cGdhX2dhaW4gPSBwZ2FfZ2FpbjsNCisNCisJLy8g VGhlIHNoaWZ0IGRlcGVuZCBvbiB0aGUgZ2FpbiA4PTQsIDQ9MywgMj0yLCAxPTENCisJY29uZmln LT5wZ2Ffc2hpZnQgPSA1IC0gZmZzKHBnYV9nYWluKTsNCisNCisJaWYgKHBnYV9nYWluID09IDgp DQorCQljb25maWctPnNodW50X2NvbmZpZyB8PSBDVVJSRU5UX1NFTlNFX1ZPTFRBR0VfMzIwX01B U0s7DQorCWVsc2UgaWYgKHBnYV9nYWluID09IDQpDQorCQljb25maWctPnNodW50X2NvbmZpZyB8 PSBDVVJSRU5UX1NFTlNFX1ZPTFRBR0VfMTYwX01BU0s7DQorCWVsc2UgaWYgKHBnYV9nYWluID09 IDIpDQorCQljb25maWctPnNodW50X2NvbmZpZyB8PSBDVVJSRU5UX1NFTlNFX1ZPTFRBR0VfODBf TUFTSzsNCisJZWxzZSBpZiAocGdhX2dhaW4gPT0gMSkNCisJCWNvbmZpZy0+c2h1bnRfY29uZmln IHw9IENVUlJFTlRfU0VOU0VfVk9MVEFHRV80MF9NQVNLOw0KKwllbHNlDQorCQlyZXR1cm4gLUVJ TlZBTDsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBpbnQgdG1wNTF4X3BhcnNlX2Rldmlj ZV90cmVlKHN0cnVjdCBkZXZpY2UgKmRldiwNCisJCQkJICAgIHN0cnVjdCB0bXA1MXhfZGF0YSAq ZGF0YSkNCit7DQorCWludCByZXQ7DQorCXUzMiB2YWw7DQorDQorCS8vIE1hbmRhdG9yeSBmaWVs ZHMNCisJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoZGV2LT5vZl9ub2RlLCAic2h1bnQtcmVz aXN0b3ItdW9obSIsICZ2YWwpOw0KKwlpZiAocmV0IDwgMCkNCisJCXJldHVybiAtRU5PREVWOw0K KwlkYXRhLT5jb25maWctPnJzaHVudCA9IHZhbDsNCisNCisJLy8gT3B0aW9uYWwgZmllbGRzDQor CXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRldi0+b2Zfbm9kZSwgImJ1cy12b2x0YWdlLXJh bmdlIiwgJnZhbCk7DQorCWlmIChyZXQgPj0gMCkgew0KKwkJcmV0ID0gdG1wNTF4X3ZidXNfbWF4 X3RvX3JlZyhkYXRhLT5jb25maWcsIHZhbCk7DQorCQlpZiAocmV0IDwgMCkNCisJCQlyZXR1cm4g cmV0Ow0KKwl9DQorDQorCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRldi0+b2Zfbm9kZSwg InBnYS1nYWluIiwgJnZhbCk7DQorCWlmIChyZXQgPj0gMCkgew0KKwkJcmV0ID0gdG1wNTF4X3Bn YV9nYWluX3RvX3JlZyhkYXRhLT5jb25maWcsIHZhbCk7DQorCQlpZiAocmV0IDwgMCkNCisJCQly ZXR1cm4gcmV0Ow0KKwl9DQorDQorCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRldi0+b2Zf bm9kZSwgIm1heC1leHBlY3RlZC1jdXJyZW50LW1hIiwNCisJCQkJICAgJnZhbCk7DQorCWlmIChy ZXQgPj0gMCkNCisJCWRhdGEtPmNvbmZpZy0+bWF4X2N1cnJfbWEgPSB2YWw7DQorDQorCXJldCA9 IG9mX3Byb3BlcnR5X3JlYWRfdTMyKGRldi0+b2Zfbm9kZSwgInRlbXBfaHlzdGVyZXNpcyIsICZ2 YWwpOw0KKwlpZiAocmV0ID49IDApIHsNCisJCWlmICh2YWwgPiAweEZGKQ0KKwkJCXJldHVybiAt RUlOVkFMOw0KKwkJZGF0YS0+Y29uZmlnLT50ZW1wX2h5c3QgPSB2YWw7DQorCX0NCisNCisJcmV0 ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIoZGV2LT5vZl9ub2RlLCAidGVtcF8yX25mYWN0b3IiLCAm dmFsKTsNCisJaWYgKHJldCA+PSAwKSB7DQorCQlpZiAodmFsID4gMHhGRikNCisJCQlyZXR1cm4g LUVJTlZBTDsNCisJCWRhdGEtPmNvbmZpZy0+dGVtcDJfbmZhY3RvciA9IHZhbDsNCisJfQ0KKw0K KwlyZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihkZXYtPm9mX25vZGUsICJ0ZW1wXzNfbmZhY3Rv ciIsICZ2YWwpOw0KKwlpZiAocmV0ID49IDApIHsNCisJCWlmICh2YWwgPiAweEZGKQ0KKwkJCXJl dHVybiAtRUlOVkFMOw0KKwkJZGF0YS0+Y29uZmlnLT50ZW1wM19uZmFjdG9yID0gdmFsOw0KKwl9 DQorDQorCWlmIChkYXRhLT5pZCA9PSB0bXA1MTMpIHsNCisJCXJldCA9IG9mX3Byb3BlcnR5X3Jl YWRfdTMyKGRldi0+b2Zfbm9kZSwgInRlbXBfNF9uZmFjdG9yIiwNCisJCQkJCSAgICZ2YWwpOw0K KwkJaWYgKHJldCA+PSAwKSB7DQorCQkJaWYgKHZhbCA+IDB4RkYpDQorCQkJCXJldHVybiAtRUlO VkFMOw0KKwkJCWRhdGEtPmNvbmZpZy0+dGVtcDRfbmZhY3RvciA9IHZhbDsNCisJCX0NCisJfQ0K Kw0KKwlyZXR1cm4gMDsNCit9DQorDQorc3RhdGljIGludCB0bXA1MXhfcHJvYmUoc3RydWN0IGky Y19jbGllbnQgKmNsaWVudCwNCisJCQljb25zdCBzdHJ1Y3QgaTJjX2RldmljZV9pZCAqaWQpDQor ew0KKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmY2xpZW50LT5kZXY7DQorCXN0cnVjdCB0bXA1MXhf ZGF0YSAqZGF0YTsNCisJc3RydWN0IGRldmljZSAqaHdtb25fZGV2Ow0KKwlpbnQgcmV0Ow0KKwll bnVtIHRtcDUxeF9pZHMgY2hpcDsNCisNCisJaWYgKGNsaWVudC0+ZGV2Lm9mX25vZGUpDQorCQlj aGlwID0gKGVudW0gdG1wNTF4X2lkcylvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoJmNsaWVudC0+ ZGV2KTsNCisJZWxzZQ0KKwkJcmV0dXJuIC1FTk9ERVY7DQorDQorCWRhdGEgPSBkZXZtX2t6YWxs b2MoZGV2LCBzaXplb2YoKmRhdGEpLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFkYXRhKQ0KKwkJcmV0 dXJuIC1FTk9NRU07DQorDQorCWRhdGEtPmNvbmZpZyA9ICZ0bXA1MXhfY29uZmlnW2NoaXBdOw0K KwlkYXRhLT5pZCA9IGNoaXA7DQorCW11dGV4X2luaXQoJmRhdGEtPmNvbmZpZ19sb2NrKTsNCisN CisJcmV0ID0gdG1wNTF4X3BhcnNlX2RldmljZV90cmVlKGRldiwgZGF0YSk7DQorCWlmIChyZXQg PCAwKSB7DQorCQlkZXZfZXJyKGRldiwgImVycm9yIGNvbmZpZ3VyaW5nIHRoZSBkZXZpY2U6ICVk XG4iLCByZXQpOw0KKwkJcmV0dXJuIHJldDsNCisJfQ0KKw0KKwl0bXA1MXhfcmVnbWFwX2NvbmZp Zy5tYXhfcmVnaXN0ZXIgPSBkYXRhLT5jb25maWctPnJlZ2lzdGVyczsNCisJZGF0YS0+cmVnbWFw ID0gZGV2bV9yZWdtYXBfaW5pdF9pMmMoY2xpZW50LCAmdG1wNTF4X3JlZ21hcF9jb25maWcpOw0K KwlpZiAoSVNfRVJSKGRhdGEtPnJlZ21hcCkpIHsNCisJCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRv IGFsbG9jYXRlIHJlZ2lzdGVyIG1hcFxuIik7DQorCQlyZXR1cm4gUFRSX0VSUihkYXRhLT5yZWdt YXApOw0KKwl9DQorDQorCXJldCA9IHRtcDUxeF9pbml0KGRhdGEpOw0KKwlpZiAocmV0IDwgMCkg ew0KKwkJZGV2X2VycihkZXYsICJlcnJvciBjb25maWd1cmluZyB0aGUgZGV2aWNlOiAlZFxuIiwg cmV0KTsNCisJCXJldHVybiAtRU5PREVWOw0KKwl9DQorDQorCWh3bW9uX2RldiA9IGRldm1faHdt b25fZGV2aWNlX3JlZ2lzdGVyX3dpdGhfaW5mbyhkZXYsIGNsaWVudC0+bmFtZSwNCisJCQkJCQkJ ICAgZGF0YSwNCisJCQkJCQkJICAgJnRtcDUxeF9jaGlwX2luZm8sDQorCQkJCQkJCSAgIE5VTEwp Ow0KKwlpZiAoSVNfRVJSKGh3bW9uX2RldikpDQorCQlyZXR1cm4gUFRSX0VSUihod21vbl9kZXYp Ow0KKw0KKwlkZXZfZGJnKGRldiwgInBvd2VyIG1vbml0b3IgJXNcbiIsIGlkLT5uYW1lKTsNCisN CisJcmV0dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBzdHJ1Y3QgaTJjX2RyaXZlciB0bXA1MXhfZHJp dmVyID0gew0KKwkuZHJpdmVyID0gew0KKwkJLm5hbWUJPSAidG1wNTF4IiwNCisJCS5vZl9tYXRj aF90YWJsZSA9IG9mX21hdGNoX3B0cih0bXA1MXhfb2ZfbWF0Y2gpLA0KKwl9LA0KKwkucHJvYmUJ CT0gdG1wNTF4X3Byb2JlLA0KKwkuaWRfdGFibGUJPSB0bXA1MXhfaWQsDQorfTsNCisNCittb2R1 bGVfaTJjX2RyaXZlcih0bXA1MXhfZHJpdmVyKTsNCisNCitNT0RVTEVfQVVUSE9SKCJFcmljIFRy ZW1ibGF5IDxldHJlbWJsYXlAZGlzdGVjaGNvbnRyb2xzLmNvbT4iKTsNCitNT0RVTEVfREVTQ1JJ UFRJT04oInRtcDUxeCBkcml2ZXIiKTsNCitNT0RVTEVfTElDRU5TRSgiR1BMIik7DQotLSANCjIu MTcuMQ0KDQo=