Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp5462021ybg; Tue, 22 Oct 2019 03:42:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqw6qOozunBEjJdKjKiyCyuJGuLMwkOAG1oqN70Lp2v3+KHVbzowSx9SlMAGCxcFRxcXDnw0 X-Received: by 2002:a17:906:9497:: with SMTP id t23mr4196859ejx.202.1571740965183; Tue, 22 Oct 2019 03:42:45 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1571740965; cv=pass; d=google.com; s=arc-20160816; b=Vs/+ToK92xi3ATv0GEdr58pWk0oS425XX6x5R6UUXyLIcqt/cAUsDonIcXypluABDQ T//5abp5ylCLsi2FkqGrO6JvacqcLR1U1EB7ToVFfrq+LofFWRTvZNW2Uki8NZFh+tKd V3427v0t09OAKT3AMoPTsjXVYI0R24fBqY+B/eEWTIhiGikLzU7hmDqQXjvBdgZYI7S3 Q2q6t8x5ScvcEHMmLf0YWONWOrx7eGG2noIPMJ/P9q4HiAoHSLGMV9vHLp1bGaL4hZ8y GpTcuowDBUGOv2avT7oF3ZYCcprauPJtW7hkHMveMRLNNvJmem+5saLF3IuNy0+/l2dF v3cw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature :dkim-signature; bh=vegBSVu7V00Rpsl1ji5haqS2jV8WogLoYXlsLWEKTMs=; b=M2HFrgHZweI5TTnxJDY0Fx33lcGQ82XadczBMifPbaYVS48blUbMcQk2YjpVGJIbQ/ 8ENfmOMx3SLk3t3j/icwlkRqv7wUXoykxB32YLI88IMYqjGt6UyO0yHSPgO0NJqmodZV PTiHvIV4Y6tBQmPs9u9fwGYYSoxtz22xjII0CaO7mkiWflJfS5nGd+vcOuNayHYZvANX UI1yMIlubddA7cVUvi/dkGiwc6/swQpjkOOoq8Cj6MeERkKZgBjqGosfWhUeumuwPIho 2v6AzziyMvktqQJTJ/8IssBofXRedNTX3CO87q5WqxbnPs4Q7jN0LwJdOezLJX76dvTC +vJQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@cadence.com header.s=proofpoint header.b=TdUDMPPz; dkim=pass header.i=@cadence.com header.s=selector2 header.b="UlC45/oq"; arc=pass (i=1 spf=pass spfdomain=cadence.com dkim=pass dkdomain=cadence.com dmarc=pass fromdomain=cadence.com); spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cadence.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y2si11875693eds.98.2019.10.22.03.42.20; Tue, 22 Oct 2019 03:42:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@cadence.com header.s=proofpoint header.b=TdUDMPPz; dkim=pass header.i=@cadence.com header.s=selector2 header.b="UlC45/oq"; arc=pass (i=1 spf=pass spfdomain=cadence.com dkim=pass dkdomain=cadence.com dmarc=pass fromdomain=cadence.com); spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=cadence.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388372AbfJVKkz (ORCPT + 99 others); Tue, 22 Oct 2019 06:40:55 -0400 Received: from mx0b-0014ca01.pphosted.com ([208.86.201.193]:63190 "EHLO mx0a-0014ca01.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388032AbfJVKkz (ORCPT ); Tue, 22 Oct 2019 06:40:55 -0400 Received: from pps.filterd (m0042333.ppops.net [127.0.0.1]) by mx0b-0014ca01.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id x9MAcrT8032131; Tue, 22 Oct 2019 03:40:45 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=proofpoint; bh=vegBSVu7V00Rpsl1ji5haqS2jV8WogLoYXlsLWEKTMs=; b=TdUDMPPznedP76POK2ztFHi87nch4PPzISuwiyhJMEXpXMCyBi6vc1tUVkz2Sabf2j80 /4/8XvD9SKIMUj8A1i1wE2jNz+4H+hJ0EtGhNAHxKvJHrECnLSnzDzITatfyrFGWyzNG q24fOTrV43TcECN4ZeJXQ/jeD9PWf8zYmG0T7J7uR4AmjqEq1gx8je5e9P+kKnAcjBAa Lg2PIOy/jae5gM4dgX1KgZPPVP32xDP3FPy292YqnOa1qe5KV45FsCwKlols2wdG194E TvbdniwP45ZCsyGFn7gylcpQyuZHg4ooqoDMsUXBXfPO1NFM1Nce+OUdoMW0fnsL+yht uw== Received: from nam02-cy1-obe.outbound.protection.outlook.com (mail-cys01nam02lp2052.outbound.protection.outlook.com [104.47.37.52]) by mx0b-0014ca01.pphosted.com with ESMTP id 2vqx2x9yc3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 22 Oct 2019 03:40:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OhIHkqPlpxsPJEpIFn2K3EAVz9VpjZ0HfAw7L+YjKpOYRwYuPonQIqfM4bxNsGVFZZI58NwSpccwd3aHx5WBr2M3Mf3rqMi6f3rIzn6ThxIvV42muWh6jfsPT0s6S5jQPA0x0J3Vf3vN6tmBDCZteeeBkVkD4GHGPSTJ5/H8p5PI7fFGzah5zfXkB6Y87O7WUasD0sgASR0enIyiPzEwXj3+LiQMR/QF8EVk1LVRtqbdw3F2JfyiMgTZJNRfHHsOffp2UFeStRee5DlxUFMbVeK+YVAwD27q5+SibziSLzEJGrCWpQZ5SqTZy+qkwOdmWApFJbbVPiR//cYQf4Nxqg== 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=vegBSVu7V00Rpsl1ji5haqS2jV8WogLoYXlsLWEKTMs=; b=E9pQNKvZK81IyZMR3srHubkz1oD2stf9vAqFKvsEqxiP6D4TNSTzo9E/LzAc/Q1zc6ISfF1h0fFaBvIKvynnKA4mQuPrLag+6zbeCaRNgjAFNBb/r0og87ieAEkwZg3yVudF3k75W8MnkNyzOvN+U0mKsC9XfklHKqs1oqF9nTlIGy8XJVgDRI+MvZKrTUO6y7Dv+2tzStNaNaNcVSvHXkii4+GL4ayYU1EaV/qsiD6k9v7eVp7GUfcAhgSj10AUNJh8AShepzdHMD5qdyzXVTk8v2gESn7+Q9bqMfBvHDFxtWHifWtLDfcLr/bobxOGo8eQYKpvNnmCoMjN81XPcw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cadence.com; dmarc=pass action=none header.from=cadence.com; dkim=pass header.d=cadence.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vegBSVu7V00Rpsl1ji5haqS2jV8WogLoYXlsLWEKTMs=; b=UlC45/oqQjVokYxqZnnYKsFHVmYj/UnB1CskIwyr3XMCffg+s+x1rqmHUcDuNyb3z12qq0blC1lOelUysU0+ZAimMqc+qRolbLNkEmpxFiqr6R7Ei6e1M5EGPyXgnfs33dFPfomvoZjjIREGek4MLEZ3tMOvwufGRnVI0qacR14= Received: from MWHPR07MB3853.namprd07.prod.outlook.com (10.172.101.140) by MWHPR07MB3167.namprd07.prod.outlook.com (10.172.97.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2347.17; Tue, 22 Oct 2019 10:40:43 +0000 Received: from MWHPR07MB3853.namprd07.prod.outlook.com ([fe80::684c:973d:d098:5c83]) by MWHPR07MB3853.namprd07.prod.outlook.com ([fe80::684c:973d:d098:5c83%2]) with mapi id 15.20.2347.029; Tue, 22 Oct 2019 10:40:42 +0000 From: Tom Joseph To: Kishon Vijay Abraham I , "linux-pci@vger.kernel.org" CC: Lorenzo Pieralisi , Bjorn Helgaas , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v2] PCI: cadence: Refactor driver to use as a core library Thread-Topic: [PATCH v2] PCI: cadence: Refactor driver to use as a core library Thread-Index: AQHVhFUjWC1bdR1eHEmUjgxS5fSODKdlCQ2AgAF1cDA= Date: Tue, 22 Oct 2019 10:40:42 +0000 Message-ID: References: <1571252912-7354-1-git-send-email-tjoseph@cadence.com> <3d1290b7-dce2-3dd6-3857-b4373f98700a@ti.com> In-Reply-To: <3d1290b7-dce2-3dd6-3857-b4373f98700a@ti.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-ref: PG1ldGE+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNcdGpvc2VwaFxhcHBkYXRhXHJvYW1pbmdcMDlkODQ5YjYtMzJkMy00YTQwLTg1ZWUtNmI4NGJhMjllMzViXG1zZ3NcbXNnLTYzZDM4OTE1LWY0YjgtMTFlOS04OTE2LTU4OTFjZjc3ZDUzMFxhbWUtdGVzdFw2M2QzODkxNi1mNGI4LTExZTktODkxNi01ODkxY2Y3N2Q1MzBib2R5LnR4dCIgc3o9IjIyOTQzIiB0PSIxMzIxNjIxNDQ0MDgwMjgwMjUiIGg9InNDeWQ2SFJQbUpjcTMwc2dJLzZkTnNTQzd5az0iIGlkPSIiIGJsPSIwIiBibz0iMSIvPjwvbWV0YT4= x-dg-rorf: true x-originating-ip: [94.175.212.46] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: bb47fd3b-c730-424c-728e-08d756dc49ed x-ms-traffictypediagnostic: MWHPR07MB3167: x-ms-exchange-purlcount: 1 x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4941; x-forefront-prvs: 01986AE76B x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(39860400002)(366004)(396003)(376002)(346002)(136003)(36092001)(13464003)(54534003)(199004)(189003)(53546011)(229853002)(305945005)(7736002)(14454004)(316002)(81156014)(81166006)(55236004)(6436002)(102836004)(74316002)(8936002)(256004)(25786009)(14444005)(5660300002)(71200400001)(476003)(71190400001)(486006)(26005)(4326008)(8676002)(52536014)(7696005)(66066001)(11346002)(76116006)(186003)(55016002)(86362001)(30864003)(6246003)(33656002)(64756008)(446003)(478600001)(19627235002)(66556008)(2906002)(66476007)(2501003)(9686003)(66446008)(66946007)(966005)(6116002)(3846002)(99286004)(6306002)(110136005)(54906003)(76176011)(6506007)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:MWHPR07MB3167;H:MWHPR07MB3853.namprd07.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: cadence.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Su2lJIgwtOVHq0UjGPkdAQdh5Gj3zWXNGxccPZPzuZIOeMu1gPgC+gQO6JfJ8dUVH9m5RL8Jo2QZY3ckIxtn2mhmKDNT5SCUWkNKJCFdkfvEqbzozaKeUEvzau2bQBX6kmXItRKaRZD9dlKuh+sEVZFAb/CXU6mR2bMIQ2kSteYR7KRRV0lhEBvVy3ozTHIRmXY2E0VE/pjNWjN8rmb6FXmXRGnOKX3T5F7OQ2IcKxf+M4luADgaW5TGW5Qwgj3wBqYOzlZTFqVaH2n4hQ+Hxiyei1b+eYJX9lUEyc27uoM3TW47MV1tQ7bbZVdKKqoxKqdFx67vnyqFG+ZdONPRodheQpBoCtqy/Ss5XZImo7Y4j6cmbdSLwtM+KnukGorksacsCzWlfrmpK145ZSTUocP9pIv9TxwNeolFNZeRNm+crbvhrX4fu+ISmhvM1KBrvu111WOePOcx0IoJAntcaDtyUc86CLM4nxmdfiOA0MEJhKn3bpM22xRUNYTQNhLG x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: cadence.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb47fd3b-c730-424c-728e-08d756dc49ed X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Oct 2019 10:40:42.7517 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: d36035c5-6ce6-4662-a3dc-e762e61ae4c9 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HJTMxtaXgXpNbyQ0Klmvka3dUWKbuTmXysVYAICzn9xixsRu714hDPeYiNQT4WdAC52g1y1dwuD7/Ss1y4P3zzKbzi+OcK4SCa78X8CoOcA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR07MB3167 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.95,1.0.8 definitions=2019-10-22_03:2019-10-22,2019-10-22 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_check_notspam policy=outbound_check score=0 mlxlogscore=999 bulkscore=0 clxscore=1015 phishscore=0 adultscore=0 spamscore=0 suspectscore=0 malwarescore=0 priorityscore=1501 lowpriorityscore=0 mlxscore=0 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-1908290000 definitions=main-1910220096 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgS2lzaG9uLA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IEtpc2hv biBWaWpheSBBYnJhaGFtIEkgPGtpc2hvbkB0aS5jb20+DQo+IFNlbnQ6IDIxIE9jdG9iZXIgMjAx OSAxMzoxMw0KPiBUbzogVG9tIEpvc2VwaCA8dGpvc2VwaEBjYWRlbmNlLmNvbT47IGxpbnV4LXBj aUB2Z2VyLmtlcm5lbC5vcmcNCj4gQ2M6IExvcmVuem8gUGllcmFsaXNpIDxsb3JlbnpvLnBpZXJh bGlzaUBhcm0uY29tPjsgQmpvcm4gSGVsZ2Fhcw0KPiA8YmhlbGdhYXNAZ29vZ2xlLmNvbT47IGxp bnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2Ml0gUENJ OiBjYWRlbmNlOiBSZWZhY3RvciBkcml2ZXIgdG8gdXNlIGFzIGEgY29yZSBsaWJyYXJ5DQo+IA0K PiBFWFRFUk5BTCBNQUlMDQo+IA0KPiANCj4gVG9tLA0KPiANCj4gDQo+IA0KPiBPbiAxNy8xMC8x OSAxMjozOCBBTSwgVG9tIEpvc2VwaCB3cm90ZToNCj4gDQo+ID4gQWxsIHRoZSBwbGF0Zm9ybSBy ZWxhdGVkIEFQSXMvU3RydWN0dXJlcyBpbiB0aGUgZHJpdmVyIGlzIGV4dHJhY3RlZA0KPiANCj4g PiAgb3V0IHRvIGEgc2VwYXJhdGUgZmlsZSAocGNpZS1jYWRlbmNlLXBsYXQuYykuIFRoaXMgZW5h YmxlcyB0aGUNCj4gDQo+ID4gIGRyaXZlciB0byBiZSB1c2VkIGFzIGEgY29yZSBsaWJyYXJ5LCB3 aGljaCBjb3VsZCBub3cgYmUgdXNlZCBieQ0KPiANCj4gPiAgb3RoZXIgcGxhdGZvcm0gZHJpdmVy cy4gVGVzdGluZyBkb25lIHVzaW5nIHNpbXVsYXRpb24gZW52aXJvbm1lbnQuDQo+IA0KPiANCj4g DQo+IEJqb3JuIGhhcyBnaXZlbiBhIGxpc3Qgb2YgZ3VpZGVsaW5lcyB0byBmb2xsb3cgd2hpbGUg cG9zdGluZyB0aGUgcGF0Y2guIFBsZWFzZQ0KPiANCj4gc2VlIGlmIHlvdSBtZWV0IGFsbCBvZiB0 aGVtIGZvciB0aGUgY2hhbmdlIGxvZy4NCj4gDQo+IA0KPiANCj4gaHR0cHM6Ly91cmxkZWZlbnNl LnByb29mcG9pbnQuY29tL3YyL3VybD91PWh0dHBzLQ0KPiAzQV9fbG9yZS5rZXJuZWwub3JnX2xp bnV4LTJEcGNpXzIwMTcxMDI2MjIzNzAxLkdBMjU2NDktNDBiaGVsZ2Fhcy0NCj4gMkRnbGFwdG9w LnJvYW0uY29ycC5nb29nbGUuY29tXyZkPUR3SUNhUSZjPWFVcTk4M0wycHVlMkZxS0ZvUDZQDQo+ IEdITUpReW9KN2tsM3MzR1otDQo+IF9oYVhxWSZyPTJwOUl2WHZYMlVSQVlyUlE0UWQxeDFjc2hn QWtDQXE3d1E0eThyRFVvQjgmbT03SS0NCj4gSWZlSUt0QnRiekVXOGlKQW1sR0FoMnp3UXdkSy0N Cj4gS3QzMUR0am13Nkkmcz1ZZkRzeFA2dG44amVzQWFrTTBLbFBuRHBNaXBKZ29WVEx0NUI0dGFk UXVrJmU9DQo+IA0KVGhhbmtzIGEgbG90IGZvciBwb2ludGluZyB0byB0aGlzIGRvY3VtZW50LiBJ dCBsb29rcyB2ZXJ5IHVzZWZ1bC4NClNvIGZhciBJIHdhcyBvbmx5IG1ha2luZyB1c2Ugb2YgY2hl Y2twYXRjaC5wbCBhcyB0aGUgY3JpdGVyaWEgZm9yIGZvcm1hdHRpbmcgcnVsZXMuDQo+ID4NCj4g DQo+ID4gU2lnbmVkLW9mZi1ieTogVG9tIEpvc2VwaCA8dGpvc2VwaEBjYWRlbmNlLmNvbT4NCj4g DQo+ID4gLS0tDQo+IA0KPiA+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWcgICAgICAg ICAgICAgfCAgMjggKysrKysNCj4gDQo+ID4gIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvTWFrZWZp bGUgICAgICAgICAgICB8ICAgMSArDQo+IA0KPiA+ICBkcml2ZXJzL3BjaS9jb250cm9sbGVyL3Bj aWUtY2FkZW5jZS1lcC5jICAgfCAgOTYgKy0tLS0tLS0tLS0tLS0tLQ0KPiANCj4gPiAgZHJpdmVy cy9wY2kvY29udHJvbGxlci9wY2llLWNhZGVuY2UtaG9zdC5jIHwgIDk2ICsrLS0tLS0tLS0tLS0t LS0NCj4gDQo+ID4gIGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1jYWRlbmNlLXBsYXQuYyB8 IDE3NA0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiANCj4gPiAgZHJpdmVycy9w Y2kvY29udHJvbGxlci9wY2llLWNhZGVuY2UuaCAgICAgIHwgIDgyICsrKysrKysrKysrKysrDQo+ IA0KPiA+ICA2IGZpbGVzIGNoYW5nZWQsIDI5NyBpbnNlcnRpb25zKCspLCAxODAgZGVsZXRpb25z KC0pDQo+IA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wY2kvY29udHJvbGxlci9w Y2llLWNhZGVuY2UtcGxhdC5jDQo+IA0KPiA+DQo+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3BjaS9jb250cm9sbGVyL0tjb25maWcgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL0tjb25maWcN Cj4gDQo+ID4gaW5kZXggZmU5ZjlmMS4uY2FmYmVkMCAxMDA2NDQNCj4gDQo+ID4gLS0tIGEvZHJp dmVycy9wY2kvY29udHJvbGxlci9LY29uZmlnDQo+IA0KPiA+ICsrKyBiL2RyaXZlcnMvcGNpL2Nv bnRyb2xsZXIvS2NvbmZpZw0KPiANCj4gPiBAQCAtNDgsNiArNDgsMzQgQEAgY29uZmlnIFBDSUVf Q0FERU5DRV9FUA0KPiANCj4gPiAgCSAgZW5kcG9pbnQgbW9kZS4gVGhpcyBQQ0llIGNvbnRyb2xs ZXIgbWF5IGJlIGVtYmVkZGVkIGludG8gbWFueQ0KPiANCj4gPiAgCSAgZGlmZmVyZW50IHZlbmRv cnMgU29Dcy4NCj4gDQo+ID4NCj4gDQo+ID4gK2NvbmZpZyBQQ0lFX0NBREVOQ0VfUExBVA0KPiAN Cj4gPiArCWJvb2wNCj4gDQo+ID4gKw0KPiANCj4gPiArY29uZmlnIFBDSUVfQ0FERU5DRV9QTEFU X0hPU1QNCj4gDQo+ID4gKwlib29sICJDYWRlbmNlIFBDSWUgcGxhdGZvcm0gaG9zdCBjb250cm9s bGVyIg0KPiANCj4gPiArCWRlcGVuZHMgb24gT0YNCj4gDQo+ID4gKwlkZXBlbmRzIG9uIFBDSQ0K PiANCj4gPiArCXNlbGVjdCBJUlFfRE9NQUlODQo+IA0KPiA+ICsJc2VsZWN0IFBDSUVfQ0FERU5D RQ0KPiANCj4gPiArCXNlbGVjdCBQQ0lFX0NBREVOQ0VfSE9TVA0KPiANCj4gPiArCXNlbGVjdCBQ Q0lFX0NBREVOQ0VfUExBVA0KPiANCj4gPiArCWhlbHANCj4gDQo+ID4gKwkgIFNheSBZIGhlcmUg aWYgeW91IHdhbnQgdG8gc3VwcG9ydCB0aGUgQ2FkZW5jZSBQQ0llIHBsYXRmb3JtDQo+IGNvbnRy b2xsZXIgaW4NCj4gDQo+ID4gKwkgIGhvc3QgbW9kZS4gVGhpcyBQQ0llIGNvbnRyb2xsZXIgbWF5 IGJlIGVtYmVkZGVkIGludG8gbWFueQ0KPiBkaWZmZXJlbnQNCj4gDQo+ID4gKwkgIHZlbmRvcnMg U29Dcy4NCj4gDQo+ID4gKw0KPiANCj4gPiArY29uZmlnIFBDSUVfQ0FERU5DRV9QTEFUX0VQDQo+ IA0KPiA+ICsJYm9vbCAiQ2FkZW5jZSBQQ0llIHBsYXRmb3JtIGVuZHBvaW50IGNvbnRyb2xsZXIi DQo+IA0KPiA+ICsJZGVwZW5kcyBvbiBPRg0KPiANCj4gPiArCWRlcGVuZHMgb24gUENJX0VORFBP SU5UDQo+IA0KPiA+ICsJc2VsZWN0IFBDSUVfQ0FERU5DRQ0KPiANCj4gPiArCXNlbGVjdCBQQ0lF X0NBREVOQ0VfRVANCj4gDQo+ID4gKwlzZWxlY3QgUENJRV9DQURFTkNFX1BMQVQNCj4gDQo+ID4g KwloZWxwDQo+IA0KPiA+ICsJICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHRvIHN1cHBvcnQgdGhl IENhZGVuY2UgUENJZSAgcGxhdGZvcm0NCj4gY29udHJvbGxlciBpbg0KPiANCj4gPiArCSAgZW5k cG9pbnQgbW9kZS4gVGhpcyBQQ0llIGNvbnRyb2xsZXIgbWF5IGJlIGVtYmVkZGVkIGludG8gbWFu eQ0KPiANCj4gPiArCSAgZGlmZmVyZW50IHZlbmRvcnMgU29Dcy4NCj4gDQo+ID4gKw0KPiANCj4g PiAgZW5kbWVudQ0KPiANCj4gPg0KPiANCj4gPiAgY29uZmlnIFBDSUVfWElMSU5YX05XTA0KPiAN Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9NYWtlZmlsZQ0KPiBiL2Ry aXZlcnMvcGNpL2NvbnRyb2xsZXIvTWFrZWZpbGUNCj4gDQo+ID4gaW5kZXggZDU2YTUwNy4uNjc2 YTQxZSAxMDA2NDQNCj4gDQo+ID4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9NYWtlZmls ZQ0KPiANCj4gPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL01ha2VmaWxlDQo+IA0KPiA+ IEBAIC0yLDYgKzIsNyBAQA0KPiANCj4gPiAgb2JqLSQoQ09ORklHX1BDSUVfQ0FERU5DRSkgKz0g cGNpZS1jYWRlbmNlLm8NCj4gDQo+ID4gIG9iai0kKENPTkZJR19QQ0lFX0NBREVOQ0VfSE9TVCkg Kz0gcGNpZS1jYWRlbmNlLWhvc3Qubw0KPiANCj4gPiAgb2JqLSQoQ09ORklHX1BDSUVfQ0FERU5D RV9FUCkgKz0gcGNpZS1jYWRlbmNlLWVwLm8NCj4gDQo+ID4gK29iai0kKENPTkZJR19QQ0lFX0NB REVOQ0VfUExBVCkgKz0gcGNpZS1jYWRlbmNlLXBsYXQubw0KPiANCj4gPiAgb2JqLSQoQ09ORklH X1BDSV9GVFBDSTEwMCkgKz0gcGNpLWZ0cGNpMTAwLm8NCj4gDQo+ID4gIG9iai0kKENPTkZJR19Q Q0lfSFlQRVJWKSArPSBwY2ktaHlwZXJ2Lm8NCj4gDQo+ID4gIG9iai0kKENPTkZJR19QQ0lfTVZF QlUpICs9IHBjaS1tdmVidS5vDQo+IA0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250 cm9sbGVyL3BjaWUtY2FkZW5jZS1lcC5jDQo+IGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ll LWNhZGVuY2UtZXAuYw0KPiANCj4gPiBpbmRleCBkZWY3ODIwLi4xYzE3M2RhIDEwMDY0NA0KPiAN Cj4gPiAtLS0gYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtY2FkZW5jZS1lcC5jDQo+IA0K PiA+ICsrKyBiL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1jYWRlbmNlLWVwLmMNCj4gDQo+ ID4gQEAgLTE3LDM1ICsxNyw2IEBADQo+IA0KPiA+ICAjZGVmaW5lIENETlNfUENJRV9FUF9JUlFf UENJX0FERFJfTk9ORQkJMHgxDQo+IA0KPiA+ICAjZGVmaW5lIENETlNfUENJRV9FUF9JUlFfUENJ X0FERFJfTEVHQUNZCTB4Mw0KPiANCj4gPg0KPiANCj4gPiAtLyoqDQo+IA0KPiA+IC0gKiBzdHJ1 Y3QgY2Ruc19wY2llX2VwIC0gcHJpdmF0ZSBkYXRhIGZvciB0aGlzIFBDSWUgZW5kcG9pbnQgY29u dHJvbGxlcg0KPiBkcml2ZXINCj4gDQo+ID4gLSAqIEBwY2llOiBDYWRlbmNlIFBDSWUgY29udHJv bGxlcg0KPiANCj4gPiAtICogQG1heF9yZWdpb25zOiBtYXhpbXVtIG51bWJlciBvZiByZWdpb25z IHN1cHBvcnRlZCBieSBoYXJkd2FyZQ0KPiANCj4gPiAtICogQG9iX3JlZ2lvbl9tYXA6IGJpdG1h c2sgb2YgbWFwcGVkIG91dGJvdW5kIHJlZ2lvbnMNCj4gDQo+ID4gLSAqIEBvYl9hZGRyOiBiYXNl IGFkZHJlc3NlcyBpbiB0aGUgQVhJIGJ1cyB3aGVyZSB0aGUgb3V0Ym91bmQgcmVnaW9ucw0KPiBz dGFydA0KPiANCj4gPiAtICogQGlycV9waHlzX2FkZHI6IGJhc2UgYWRkcmVzcyBvbiB0aGUgQVhJ IGJ1cyB3aGVyZSB0aGUgTVNJL2xlZ2FjeQ0KPiBJUlENCj4gDQo+ID4gLSAqCQkgICBkZWRpY2F0 ZWQgb3V0Ym91bmQgcmVnaW9ucyBpcyBtYXBwZWQuDQo+IA0KPiA+IC0gKiBAaXJxX2NwdV9hZGRy OiBiYXNlIGFkZHJlc3MgaW4gdGhlIENQVSBzcGFjZSB3aGVyZSBhIHdyaXRlIGFjY2Vzcw0KPiB0 cmlnZ2Vycw0KPiANCj4gPiAtICoJCSAgdGhlIHNlbmRpbmcgb2YgYSBtZW1vcnkgd3JpdGUgKE1T SSkgLyBub3JtYWwgbWVzc2FnZQ0KPiAobGVnYWN5DQo+IA0KPiA+IC0gKgkJICBJUlEpIFRMUCB0 aHJvdWdoIHRoZSBQQ0llIGJ1cy4NCj4gDQo+ID4gLSAqIEBpcnFfcGNpX2FkZHI6IHVzZWQgdG8g c2F2ZSB0aGUgY3VycmVudCBtYXBwaW5nIG9mIHRoZSBNU0kvbGVnYWN5IElSUQ0KPiANCj4gPiAt ICoJCSAgZGVkaWNhdGVkIG91dGJvdW5kIHJlZ2lvbi4NCj4gDQo+ID4gLSAqIEBpcnFfcGNpX2Zu OiB0aGUgbGF0ZXN0IFBDSSBmdW5jdGlvbiB0aGF0IGhhcyB1cGRhdGVkIHRoZSBtYXBwaW5nIG9m DQo+IA0KPiA+IC0gKgkJdGhlIE1TSS9sZWdhY3kgSVJRIGRlZGljYXRlZCBvdXRib3VuZCByZWdp b24uDQo+IA0KPiA+IC0gKiBAaXJxX3BlbmRpbmc6IGJpdG1hc2sgb2YgYXNzZXJ0ZWQgbGVnYWN5 IElSUXMuDQo+IA0KPiA+IC0gKi8NCj4gDQo+ID4gLXN0cnVjdCBjZG5zX3BjaWVfZXAgew0KPiAN Cj4gPiAtCXN0cnVjdCBjZG5zX3BjaWUJCXBjaWU7DQo+IA0KPiA+IC0JdTMyCQkJCW1heF9yZWdp b25zOw0KPiANCj4gPiAtCXVuc2lnbmVkIGxvbmcJCQlvYl9yZWdpb25fbWFwOw0KPiANCj4gPiAt CXBoeXNfYWRkcl90CQkJKm9iX2FkZHI7DQo+IA0KPiA+IC0JcGh5c19hZGRyX3QJCQlpcnFfcGh5 c19hZGRyOw0KPiANCj4gPiAtCXZvaWQgX19pb21lbQkJCSppcnFfY3B1X2FkZHI7DQo+IA0KPiA+ IC0JdTY0CQkJCWlycV9wY2lfYWRkcjsNCj4gDQo+ID4gLQl1OAkJCQlpcnFfcGNpX2ZuOw0KPiAN Cj4gPiAtCXU4CQkJCWlycV9wZW5kaW5nOw0KPiANCj4gPiAtfTsNCj4gDQo+ID4gLQ0KPiANCj4g PiAgc3RhdGljIGludCBjZG5zX3BjaWVfZXBfd3JpdGVfaGVhZGVyKHN0cnVjdCBwY2lfZXBjICpl cGMsIHU4IGZuLA0KPiANCj4gPiAgCQkJCSAgICAgc3RydWN0IHBjaV9lcGZfaGVhZGVyICpoZHIp DQo+IA0KPiA+ICB7DQo+IA0KPiA+IEBAIC00MjQsMjggKzM5NSwxNyBAQCBzdGF0aWMgY29uc3Qg c3RydWN0IHBjaV9lcGNfb3BzDQo+IGNkbnNfcGNpZV9lcGNfb3BzID0gew0KPiANCj4gPiAgCS5n ZXRfZmVhdHVyZXMJPSBjZG5zX3BjaWVfZXBfZ2V0X2ZlYXR1cmVzLA0KPiANCj4gPiAgfTsNCj4g DQo+ID4NCj4gDQo+ID4gLXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNkbnNfcGNp ZV9lcF9vZl9tYXRjaFtdID0gew0KPiANCj4gPiAtCXsgLmNvbXBhdGlibGUgPSAiY2RucyxjZG5z LXBjaWUtZXAiIH0sDQo+IA0KPiA+IC0NCj4gDQo+ID4gLQl7IH0sDQo+IA0KPiA+IC19Ow0KPiAN Cj4gPg0KPiANCj4gPiAtc3RhdGljIGludCBjZG5zX3BjaWVfZXBfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikNCj4gDQo+ID4gK2ludCBjZG5zX3BjaWVfZXBfc2V0dXAoc3RydWN0 IGNkbnNfcGNpZV9lcCAqZXApDQo+IA0KPiA+ICB7DQo+IA0KPiA+IC0Jc3RydWN0IGRldmljZSAq ZGV2ID0gJnBkZXYtPmRldjsNCj4gDQo+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBlcC0+cGNp ZS5kZXY7DQo+IA0KPiA+ICsJc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRm b3JtX2RldmljZShkZXYpOw0KPiANCj4gPiAgCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYt Pm9mX25vZGU7DQo+IA0KPiA+IC0Jc3RydWN0IGNkbnNfcGNpZV9lcCAqZXA7DQo+IA0KPiA+IC0J c3RydWN0IGNkbnNfcGNpZSAqcGNpZTsNCj4gDQo+ID4gLQlzdHJ1Y3QgcGNpX2VwYyAqZXBjOw0K PiANCj4gPiArCXN0cnVjdCBjZG5zX3BjaWUgKnBjaWUgPSAmZXAtPnBjaWU7DQo+IA0KPiA+ICAJ c3RydWN0IHJlc291cmNlICpyZXM7DQo+IA0KPiA+ICsJc3RydWN0IHBjaV9lcGMgKmVwYzsNCj4g DQo+ID4gIAlpbnQgcmV0Ow0KPiANCj4gPiAtCWludCBwaHlfY291bnQ7DQo+IA0KPiA+IC0NCj4g DQo+ID4gLQllcCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZXApLCBHRlBfS0VSTkVMKTsN Cj4gDQo+ID4gLQlpZiAoIWVwKQ0KPiANCj4gPiAtCQlyZXR1cm4gLUVOT01FTTsNCj4gDQo+ID4N Cj4gDQo+ID4gLQlwY2llID0gJmVwLT5wY2llOw0KPiANCj4gPiAgCXBjaWUtPmlzX3JjID0gZmFs c2U7DQo+IA0KPiA+DQo+IA0KPiA+ICAJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlX2J5bmFt ZShwZGV2LCBJT1JFU09VUkNFX01FTSwNCj4gInJlZyIpOw0KPiANCj4gPiBAQCAtNDc0LDE5ICs0 MzQsNiBAQCBzdGF0aWMgaW50IGNkbnNfcGNpZV9lcF9wcm9iZShzdHJ1Y3QNCj4gcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQ0KPiANCj4gPiAgCWlmICghZXAtPm9iX2FkZHIpDQo+IA0KPiA+ICAJCXJl dHVybiAtRU5PTUVNOw0KPiANCj4gPg0KPiANCj4gPiAtCXJldCA9IGNkbnNfcGNpZV9pbml0X3Bo eShkZXYsIHBjaWUpOw0KPiANCj4gPiAtCWlmIChyZXQpIHsNCj4gDQo+ID4gLQkJZGV2X2Vycihk ZXYsICJmYWlsZWQgdG8gaW5pdCBwaHlcbiIpOw0KPiANCj4gPiAtCQlyZXR1cm4gcmV0Ow0KPiAN Cj4gPiAtCX0NCj4gDQo+ID4gLQlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCBwY2llKTsNCj4g DQo+ID4gLQlwbV9ydW50aW1lX2VuYWJsZShkZXYpOw0KPiANCj4gPiAtCXJldCA9IHBtX3J1bnRp bWVfZ2V0X3N5bmMoZGV2KTsNCj4gDQo+ID4gLQlpZiAocmV0IDwgMCkgew0KPiANCj4gPiAtCQlk ZXZfZXJyKGRldiwgInBtX3J1bnRpbWVfZ2V0X3N5bmMoKSBmYWlsZWRcbiIpOw0KPiANCj4gPiAt CQlnb3RvIGVycl9nZXRfc3luYzsNCj4gDQo+ID4gLQl9DQo+IA0KPiA+IC0NCj4gDQo+ID4gIAkv KiBEaXNhYmxlIGFsbCBidXQgZnVuY3Rpb24gMCAoYW55d2F5IEJJVCgwKSBpcyBoYXJkd2lyZWQg dG8gMSkuICovDQo+IA0KPiA+ICAJY2Ruc19wY2llX3dyaXRlbChwY2llLCBDRE5TX1BDSUVfTE1f RVBfRlVOQ19DRkcsIEJJVCgwKSk7DQo+IA0KPiA+DQo+IA0KPiA+IEBAIC01MjgsMzggKzQ3NSw1 IEBAIHN0YXRpYyBpbnQgY2Ruc19wY2llX2VwX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpDQo+IA0KPiA+ICAgZXJyX2luaXQ6DQo+IA0KPiA+ICAJcG1fcnVudGltZV9wdXRf c3luYyhkZXYpOw0KPiANCj4gPg0KPiANCj4gPiAtIGVycl9nZXRfc3luYzoNCj4gDQo+ID4gLQlw bV9ydW50aW1lX2Rpc2FibGUoZGV2KTsNCj4gDQo+ID4gLQljZG5zX3BjaWVfZGlzYWJsZV9waHko cGNpZSk7DQo+IA0KPiA+IC0JcGh5X2NvdW50ID0gcGNpZS0+cGh5X2NvdW50Ow0KPiANCj4gPiAt CXdoaWxlIChwaHlfY291bnQtLSkNCj4gDQo+ID4gLQkJZGV2aWNlX2xpbmtfZGVsKHBjaWUtPmxp bmtbcGh5X2NvdW50XSk7DQo+IA0KPiA+IC0NCj4gDQo+ID4gIAlyZXR1cm4gcmV0Ow0KPiANCj4g PiAgfQ0KPiANCj4gPiAtDQo+IA0KPiA+IC1zdGF0aWMgdm9pZCBjZG5zX3BjaWVfZXBfc2h1dGRv d24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gDQo+ID4gLXsNCj4gDQo+ID4gLQlz dHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiANCj4gPiAtCXN0cnVjdCBjZG5zX3Bj aWUgKnBjaWUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gDQo+ID4gLQlpbnQgcmV0Ow0KPiAN Cj4gPiAtDQo+IA0KPiA+IC0JcmV0ID0gcG1fcnVudGltZV9wdXRfc3luYyhkZXYpOw0KPiANCj4g PiAtCWlmIChyZXQgPCAwKQ0KPiANCj4gPiAtCQlkZXZfZGJnKGRldiwgInBtX3J1bnRpbWVfcHV0 X3N5bmMgZmFpbGVkXG4iKTsNCj4gDQo+ID4gLQ0KPiANCj4gPiAtCXBtX3J1bnRpbWVfZGlzYWJs ZShkZXYpOw0KPiANCj4gPiAtDQo+IA0KPiA+IC0JY2Ruc19wY2llX2Rpc2FibGVfcGh5KHBjaWUp Ow0KPiANCj4gPiAtfQ0KPiANCj4gPiAtDQo+IA0KPiA+IC1zdGF0aWMgc3RydWN0IHBsYXRmb3Jt X2RyaXZlciBjZG5zX3BjaWVfZXBfZHJpdmVyID0gew0KPiANCj4gPiAtCS5kcml2ZXIgPSB7DQo+ IA0KPiA+IC0JCS5uYW1lID0gImNkbnMtcGNpZS1lcCIsDQo+IA0KPiA+IC0JCS5vZl9tYXRjaF90 YWJsZSA9IGNkbnNfcGNpZV9lcF9vZl9tYXRjaCwNCj4gDQo+ID4gLQkJLnBtCT0gJmNkbnNfcGNp ZV9wbV9vcHMsDQo+IA0KPiA+IC0JfSwNCj4gDQo+ID4gLQkucHJvYmUgPSBjZG5zX3BjaWVfZXBf cHJvYmUsDQo+IA0KPiA+IC0JLnNodXRkb3duID0gY2Ruc19wY2llX2VwX3NodXRkb3duLA0KPiAN Cj4gPiAtfTsNCj4gDQo+ID4gLWJ1aWx0aW5fcGxhdGZvcm1fZHJpdmVyKGNkbnNfcGNpZV9lcF9k cml2ZXIpOw0KPiANCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ll LWNhZGVuY2UtaG9zdC5jDQo+IGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWNhZGVuY2Ut aG9zdC5jDQo+IA0KPiA+IGluZGV4IDk3ZTI1MTAuLjUwODE5MDggMTAwNjQ0DQo+IA0KPiA+IC0t LSBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1jYWRlbmNlLWhvc3QuYw0KPiANCj4gPiAr KysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtY2FkZW5jZS1ob3N0LmMNCj4gDQo+ID4g QEAgLTExLDMzICsxMSw2IEBADQo+IA0KPiA+DQo+IA0KPiA+ICAjaW5jbHVkZSAicGNpZS1jYWRl bmNlLmgiDQo+IA0KPiA+DQo+IA0KPiA+IC0vKioNCj4gDQo+ID4gLSAqIHN0cnVjdCBjZG5zX3Bj aWVfcmMgLSBwcml2YXRlIGRhdGEgZm9yIHRoaXMgUENJZSBSb290IENvbXBsZXggZHJpdmVyDQo+ IA0KPiA+IC0gKiBAcGNpZTogQ2FkZW5jZSBQQ0llIGNvbnRyb2xsZXINCj4gDQo+ID4gLSAqIEBk ZXY6IHBvaW50ZXIgdG8gUENJZSBkZXZpY2UNCj4gDQo+ID4gLSAqIEBjZmdfcmVzOiBzdGFydC9l bmQgb2Zmc2V0cyBpbiB0aGUgcGh5c2ljYWwgc3lzdGVtIG1lbW9yeSB0byBtYXAgUENJDQo+IA0K PiA+IC0gKiAgICAgICAgICAgY29uZmlndXJhdGlvbiBzcGFjZSBhY2Nlc3Nlcw0KPiANCj4gPiAt ICogQGJ1c19yYW5nZTogZmlyc3QvbGFzdCBidXNlcyBiZWhpbmQgdGhlIFBDSWUgaG9zdCBjb250 cm9sbGVyDQo+IA0KPiA+IC0gKiBAY2ZnX2Jhc2U6IElPIG1hcHBlZCB3aW5kb3cgdG8gYWNjZXNz IHRoZSBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSBvZg0KPiBhDQo+IA0KPiA+IC0gKiAgICAgICAg ICAgIHNpbmdsZSBmdW5jdGlvbiBhdCBhIHRpbWUNCj4gDQo+ID4gLSAqIEBtYXhfcmVnaW9uczog bWF4aW11bSBudW1iZXIgb2YgcmVnaW9ucyBzdXBwb3J0ZWQgYnkgdGhlDQo+IGhhcmR3YXJlDQo+ IA0KPiA+IC0gKiBAbm9fYmFyX25iaXRzOiBOdW1iZXIgb2YgYml0cyB0byBrZWVwIGZvciBpbmJv dW5kIChQQ0llIC0+IENQVSkNCj4gYWRkcmVzcw0KPiANCj4gPiAtICogICAgICAgICAgICAgICAg dHJhbnNsYXRpb24gKG5iaXRzIHNldHMgaW50byB0aGUgIm5vIEJBUiBtYXRjaCIgcmVnaXN0ZXIp DQo+IA0KPiA+IC0gKiBAdmVuZG9yX2lkOiBQQ0kgdmVuZG9yIElEDQo+IA0KPiA+IC0gKiBAZGV2 aWNlX2lkOiBQQ0kgZGV2aWNlIElEDQo+IA0KPiA+IC0gKi8NCj4gDQo+ID4gLXN0cnVjdCBjZG5z X3BjaWVfcmMgew0KPiANCj4gPiAtCXN0cnVjdCBjZG5zX3BjaWUJcGNpZTsNCj4gDQo+ID4gLQlz dHJ1Y3QgZGV2aWNlCQkqZGV2Ow0KPiANCj4gPiAtCXN0cnVjdCByZXNvdXJjZQkJKmNmZ19yZXM7 DQo+IA0KPiA+IC0Jc3RydWN0IHJlc291cmNlCQkqYnVzX3JhbmdlOw0KPiANCj4gPiAtCXZvaWQg X19pb21lbQkJKmNmZ19iYXNlOw0KPiANCj4gPiAtCXUzMgkJCW1heF9yZWdpb25zOw0KPiANCj4g PiAtCXUzMgkJCW5vX2Jhcl9uYml0czsNCj4gDQo+ID4gLQl1MTYJCQl2ZW5kb3JfaWQ7DQo+IA0K PiA+IC0JdTE2CQkJZGV2aWNlX2lkOw0KPiANCj4gPiAtfTsNCj4gDQo+ID4gLQ0KPiANCj4gPiAg c3RhdGljIHZvaWQgX19pb21lbSAqY2Ruc19wY2lfbWFwX2J1cyhzdHJ1Y3QgcGNpX2J1cyAqYnVz LCB1bnNpZ25lZA0KPiBpbnQgZGV2Zm4sDQo+IA0KPiA+ICAJCQkJICAgICAgaW50IHdoZXJlKQ0K PiANCj4gPiAgew0KPiANCj4gPiBAQCAtOTIsMTEgKzY1LDYgQEAgc3RhdGljIHN0cnVjdCBwY2lf b3BzIGNkbnNfcGNpZV9ob3N0X29wcyA9IHsNCj4gDQo+ID4gIAkud3JpdGUJCT0gcGNpX2dlbmVy aWNfY29uZmlnX3dyaXRlLA0KPiANCj4gPiAgfTsNCj4gDQo+ID4NCj4gDQo+ID4gLXN0YXRpYyBj b25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNkbnNfcGNpZV9ob3N0X29mX21hdGNoW10gPSB7DQo+ IA0KPiA+IC0JeyAuY29tcGF0aWJsZSA9ICJjZG5zLGNkbnMtcGNpZS1ob3N0IiB9LA0KPiANCj4g PiAtDQo+IA0KPiA+IC0JeyB9LA0KPiANCj4gPiAtfTsNCj4gDQo+ID4NCj4gDQo+ID4gIHN0YXRp YyBpbnQgY2Ruc19wY2llX2hvc3RfaW5pdF9yb290X3BvcnQoc3RydWN0IGNkbnNfcGNpZV9yYyAq cmMpDQo+IA0KPiA+ICB7DQo+IA0KPiA+IEBAIC0xMzYsMTAgKzEwNCwxMCBAQCBzdGF0aWMgaW50 IGNkbnNfcGNpZV9ob3N0X2luaXRfcm9vdF9wb3J0KHN0cnVjdA0KPiBjZG5zX3BjaWVfcmMgKnJj KQ0KPiANCj4gPiAgc3RhdGljIGludCBjZG5zX3BjaWVfaG9zdF9pbml0X2FkZHJlc3NfdHJhbnNs YXRpb24oc3RydWN0IGNkbnNfcGNpZV9yYyAqcmMpDQo+IA0KPiA+ICB7DQo+IA0KPiA+ICAJc3Ry dWN0IGNkbnNfcGNpZSAqcGNpZSA9ICZyYy0+cGNpZTsNCj4gDQo+ID4gLQlzdHJ1Y3QgcmVzb3Vy Y2UgKmNmZ19yZXMgPSByYy0+Y2ZnX3JlczsNCj4gDQo+ID4gIAlzdHJ1Y3QgcmVzb3VyY2UgKm1l bV9yZXMgPSBwY2llLT5tZW1fcmVzOw0KPiANCj4gPiAgCXN0cnVjdCByZXNvdXJjZSAqYnVzX3Jh bmdlID0gcmMtPmJ1c19yYW5nZTsNCj4gDQo+ID4gLQlzdHJ1Y3QgZGV2aWNlICpkZXYgPSByYy0+ ZGV2Ow0KPiANCj4gPiArCXN0cnVjdCByZXNvdXJjZSAqY2ZnX3JlcyA9IHJjLT5jZmdfcmVzOw0K PiANCj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaWUtPmRldjsNCj4gDQo+ID4gIAlzdHJ1 Y3QgZGV2aWNlX25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOw0KPiANCj4gPiAgCXN0cnVjdCBvZl9w Y2lfcmFuZ2VfcGFyc2VyIHBhcnNlcjsNCj4gDQo+ID4gIAlzdHJ1Y3Qgb2ZfcGNpX3JhbmdlIHJh bmdlOw0KPiANCj4gPiBAQCAtMjMzLDI3ICsyMDEsMjIgQEAgc3RhdGljIGludCBjZG5zX3BjaWVf aG9zdF9pbml0KHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gDQo+ID4gIAlyZXR1cm4gZXJyOw0KPiAN Cj4gPiAgfQ0KPiANCj4gPg0KPiANCj4gPiAtc3RhdGljIGludCBjZG5zX3BjaWVfaG9zdF9wcm9i ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiANCj4gPiAraW50IGNkbnNfcGNpZV9o b3N0X3NldHVwKHN0cnVjdCBjZG5zX3BjaWVfcmMgKnJjKQ0KPiANCj4gPiAgew0KPiANCj4gPiAt CXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+IA0KPiA+ICsJc3RydWN0IGRldmlj ZSAqZGV2ID0gcmMtPnBjaWUuZGV2Ow0KPiANCj4gPiArCXN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYgPSB0b19wbGF0Zm9ybV9kZXZpY2UoZGV2KTsNCj4gDQo+ID4gIAlzdHJ1Y3QgZGV2aWNl X25vZGUgKm5wID0gZGV2LT5vZl9ub2RlOw0KPiANCj4gPiAgCXN0cnVjdCBwY2lfaG9zdF9icmlk Z2UgKmJyaWRnZTsNCj4gDQo+ID4gIAlzdHJ1Y3QgbGlzdF9oZWFkIHJlc291cmNlczsNCj4gDQo+ ID4gLQlzdHJ1Y3QgY2Ruc19wY2llX3JjICpyYzsNCj4gDQo+ID4gIAlzdHJ1Y3QgY2Ruc19wY2ll ICpwY2llOw0KPiANCj4gPiAgCXN0cnVjdCByZXNvdXJjZSAqcmVzOw0KPiANCj4gPiAgCWludCBy ZXQ7DQo+IA0KPiA+IC0JaW50IHBoeV9jb3VudDsNCj4gDQo+ID4NCj4gDQo+ID4gLQlicmlkZ2Ug PSBkZXZtX3BjaV9hbGxvY19ob3N0X2JyaWRnZShkZXYsIHNpemVvZigqcmMpKTsNCj4gDQo+ID4g KwlicmlkZ2UgPSBwY2lfaG9zdF9icmlkZ2VfZnJvbV9wcml2KHJjKTsNCj4gDQo+ID4gIAlpZiAo IWJyaWRnZSkNCj4gDQo+ID4gIAkJcmV0dXJuIC1FTk9NRU07DQo+IA0KPiA+DQo+IA0KPiA+IC0J cmMgPSBwY2lfaG9zdF9icmlkZ2VfcHJpdihicmlkZ2UpOw0KPiANCj4gPiAtCXJjLT5kZXYgPSBk ZXY7DQo+IA0KPiA+IC0NCj4gDQo+ID4gIAlwY2llID0gJnJjLT5wY2llOw0KPiANCj4gPiAtCXBj aWUtPmlzX3JjID0gdHJ1ZTsNCj4gDQo+IA0KPiANCj4gaXNfcmMgY2FuIGJlIGxlZnQgaW4gaG9z dF9zZXR1cC4NCj4gDQpUaGFua3MuIEkgd2lsbCB1cGRhdGUuDQo+ID4NCj4gDQo+ID4gIAlyYy0+ bWF4X3JlZ2lvbnMgPSAzMjsNCj4gDQo+ID4gIAlvZl9wcm9wZXJ0eV9yZWFkX3UzMihucCwgImNk bnMsbWF4LW91dGJvdW5kLXJlZ2lvbnMiLCAmcmMtDQo+ID5tYXhfcmVnaW9ucyk7DQo+IA0KPiA+ IEBAIC0yODcsMjEgKzI1MCw4IEBAIHN0YXRpYyBpbnQgY2Ruc19wY2llX2hvc3RfcHJvYmUoc3Ry dWN0DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gDQo+ID4gIAkJZGV2X2VycihkZXYsICJt aXNzaW5nIFwibWVtXCJcbiIpOw0KPiANCj4gPiAgCQlyZXR1cm4gLUVJTlZBTDsNCj4gDQo+ID4g IAl9DQo+IA0KPiA+IC0JcGNpZS0+bWVtX3JlcyA9IHJlczsNCj4gDQo+ID4NCj4gDQo+ID4gLQly ZXQgPSBjZG5zX3BjaWVfaW5pdF9waHkoZGV2LCBwY2llKTsNCj4gDQo+ID4gLQlpZiAocmV0KSB7 DQo+IA0KPiA+IC0JCWRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGluaXQgcGh5XG4iKTsNCj4gDQo+ ID4gLQkJcmV0dXJuIHJldDsNCj4gDQo+ID4gLQl9DQo+IA0KPiA+IC0JcGxhdGZvcm1fc2V0X2Ry dmRhdGEocGRldiwgcGNpZSk7DQo+IA0KPiA+IC0NCj4gDQo+ID4gLQlwbV9ydW50aW1lX2VuYWJs ZShkZXYpOw0KPiANCj4gPiAtCXJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTsNCj4gDQo+ ID4gLQlpZiAocmV0IDwgMCkgew0KPiANCj4gPiAtCQlkZXZfZXJyKGRldiwgInBtX3J1bnRpbWVf Z2V0X3N5bmMoKSBmYWlsZWRcbiIpOw0KPiANCj4gPiAtCQlnb3RvIGVycl9nZXRfc3luYzsNCj4g DQo+ID4gLQl9DQo+IA0KPiA+ICsJcGNpZS0+bWVtX3JlcyA9IHJlczsNCj4gDQo+ID4NCj4gDQo+ ID4gIAlyZXQgPSBjZG5zX3BjaWVfaG9zdF9pbml0KGRldiwgJnJlc291cmNlcywgcmMpOw0KPiAN Cj4gPiAgCWlmIChyZXQpDQo+IA0KPiA+IEBAIC0zMjYsMzcgKzI3Niw1IEBAIHN0YXRpYyBpbnQg Y2Ruc19wY2llX2hvc3RfcHJvYmUoc3RydWN0DQo+IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4g DQo+ID4gICBlcnJfaW5pdDoNCj4gDQo+ID4gIAlwbV9ydW50aW1lX3B1dF9zeW5jKGRldik7DQo+ IA0KPiA+DQo+IA0KPiA+IC0gZXJyX2dldF9zeW5jOg0KPiANCj4gPiAtCXBtX3J1bnRpbWVfZGlz YWJsZShkZXYpOw0KPiANCj4gPiAtCWNkbnNfcGNpZV9kaXNhYmxlX3BoeShwY2llKTsNCj4gDQo+ ID4gLQlwaHlfY291bnQgPSBwY2llLT5waHlfY291bnQ7DQo+IA0KPiA+IC0Jd2hpbGUgKHBoeV9j b3VudC0tKQ0KPiANCj4gPiAtCQlkZXZpY2VfbGlua19kZWwocGNpZS0+bGlua1twaHlfY291bnRd KTsNCj4gDQo+ID4gLQ0KPiANCj4gPiAgCXJldHVybiByZXQ7DQo+IA0KPiA+ICB9DQo+IA0KPiA+ IC0NCj4gDQo+ID4gLXN0YXRpYyB2b2lkIGNkbnNfcGNpZV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQ0KPiANCj4gPiAtew0KPiANCj4gPiAtCXN0cnVjdCBkZXZpY2UgKmRl diA9ICZwZGV2LT5kZXY7DQo+IA0KPiA+IC0Jc3RydWN0IGNkbnNfcGNpZSAqcGNpZSA9IGRldl9n ZXRfZHJ2ZGF0YShkZXYpOw0KPiANCj4gPiAtCWludCByZXQ7DQo+IA0KPiA+IC0NCj4gDQo+ID4g LQlyZXQgPSBwbV9ydW50aW1lX3B1dF9zeW5jKGRldik7DQo+IA0KPiA+IC0JaWYgKHJldCA8IDAp DQo+IA0KPiA+IC0JCWRldl9kYmcoZGV2LCAicG1fcnVudGltZV9wdXRfc3luYyBmYWlsZWRcbiIp Ow0KPiANCj4gPiAtDQo+IA0KPiA+IC0JcG1fcnVudGltZV9kaXNhYmxlKGRldik7DQo+IA0KPiA+ IC0JY2Ruc19wY2llX2Rpc2FibGVfcGh5KHBjaWUpOw0KPiANCj4gPiAtfQ0KPiANCj4gPiAtDQo+ IA0KPiA+IC1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBjZG5zX3BjaWVfaG9zdF9kcml2 ZXIgPSB7DQo+IA0KPiA+IC0JLmRyaXZlciA9IHsNCj4gDQo+ID4gLQkJLm5hbWUgPSAiY2Rucy1w Y2llLWhvc3QiLA0KPiANCj4gPiAtCQkub2ZfbWF0Y2hfdGFibGUgPSBjZG5zX3BjaWVfaG9zdF9v Zl9tYXRjaCwNCj4gDQo+ID4gLQkJLnBtCT0gJmNkbnNfcGNpZV9wbV9vcHMsDQo+IA0KPiA+IC0J fSwNCj4gDQo+ID4gLQkucHJvYmUgPSBjZG5zX3BjaWVfaG9zdF9wcm9iZSwNCj4gDQo+ID4gLQku c2h1dGRvd24gPSBjZG5zX3BjaWVfc2h1dGRvd24sDQo+IA0KPiA+IC19Ow0KPiANCj4gPiAtYnVp bHRpbl9wbGF0Zm9ybV9kcml2ZXIoY2Ruc19wY2llX2hvc3RfZHJpdmVyKTsNCj4gDQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1jYWRlbmNlLXBsYXQuYw0KPiBi L2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1jYWRlbmNlLXBsYXQuYw0KPiANCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiANCj4gPiBpbmRleCAwMDAwMDAwLi5mNWM2YmY2DQo+IA0KPiA+ IC0tLSAvZGV2L251bGwNCj4gDQo+ID4gKysrIGIvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2ll LWNhZGVuY2UtcGxhdC5jDQo+IA0KPiA+IEBAIC0wLDAgKzEsMTc0IEBADQo+IA0KPiA+ICsvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiANCj4gPiArLyoNCj4gDQo+ID4gKyAq IENhZGVuY2UgUENJZSBwbGF0Zm9ybSAgZHJpdmVyLg0KPiANCj4gPiArICoNCj4gDQo+ID4gKyAq IENvcHlyaWdodCAoYykgMjAxOSwgQ2FkZW5jZSBEZXNpZ24gU3lzdGVtcw0KPiANCj4gPiArICog QXV0aG9yOiBUb20gSm9zZXBoIDx0am9zZXBoQGNhZGVuY2UuY29tPg0KPiANCj4gPiArICovDQo+ IA0KPiA+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQo+IA0KPiA+ICsjaW5jbHVkZSA8bGlu dXgvb2ZfYWRkcmVzcy5oPg0KPiANCj4gPiArI2luY2x1ZGUgPGxpbnV4L29mX3BjaS5oPg0KPiAN Cj4gPiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiANCj4gPiArI2luY2x1 ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4NCj4gDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9kZXZp Y2UuaD4NCj4gDQo+ID4gKyNpbmNsdWRlICJwY2llLWNhZGVuY2UuaCINCj4gDQo+ID4gKw0KPiAN Cj4gPiArLyoqDQo+IA0KPiA+ICsgKiBzdHJ1Y3QgY2Ruc19wbGF0X3BjaWUgLSBwcml2YXRlIGRh dGEgZm9yIHRoaXMgUENJZSBwbGF0Zm9ybSBkcml2ZXINCj4gDQo+ID4gKyAqIEBwY2llOiBDYWRl bmNlIFBDSWUgY29udHJvbGxlcg0KPiANCj4gPiArICogQGlzX3JjOiBTZXQgdG8gMSBpbmRpY2F0 ZXMgdGhlIFBDSWUgY29udHJvbGxlciBtb2RlIGlzIFJvb3QgQ29tcGxleCwNCj4gDQo+ID4gKyAq ICAgICAgICAgaWYgMCBpdCBpcyBpbiBFbmRwb2ludCBtb2RlLg0KPiANCj4gPiArICovDQo+IA0K PiA+ICtzdHJ1Y3QgY2Ruc19wbGF0X3BjaWUgew0KPiANCj4gPiArCXN0cnVjdCBjZG5zX3BjaWUg ICAgICAgICpwY2llOw0KPiANCj4gPiArCWJvb2wgaXNfcmM7DQo+IA0KPiA+ICt9Ow0KPiANCj4g PiArDQo+IA0KPiA+ICtzdHJ1Y3QgY2Ruc19wbGF0X3BjaWVfb2ZfZGF0YSB7DQo+IA0KPiA+ICsJ Ym9vbCBpc19yYzsNCj4gDQo+ID4gK307DQo+IA0KPiA+ICsNCj4gDQo+ID4gK3N0YXRpYyBjb25z dCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNkbnNfcGxhdF9wY2llX29mX21hdGNoW107DQo+IA0KPiA+ ICsNCj4gDQo+ID4gK3N0YXRpYyBpbnQgY2Ruc19wbGF0X3BjaWVfcHJvYmUoc3RydWN0IHBsYXRm b3JtX2RldmljZSAqcGRldikNCj4gDQo+ID4gK3sNCj4gDQo+ID4gKwljb25zdCBzdHJ1Y3QgY2Ru c19wbGF0X3BjaWVfb2ZfZGF0YSAqZGF0YTsNCj4gDQo+ID4gKwlzdHJ1Y3QgY2Ruc19wbGF0X3Bj aWUgKmNkbnNfcGxhdF9wY2llOw0KPiANCj4gPiArCWNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQg Km1hdGNoOw0KPiANCj4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7DQo+IA0K PiA+ICsJc3RydWN0IHBjaV9ob3N0X2JyaWRnZSAqYnJpZGdlOw0KPiANCj4gPiArCXN0cnVjdCBj ZG5zX3BjaWVfZXAgKmVwOw0KPiANCj4gPiArCXN0cnVjdCBjZG5zX3BjaWVfcmMgKnJjOw0KPiAN Cj4gPiArCWludCBwaHlfY291bnQ7DQo+IA0KPiA+ICsJYm9vbCBpc19yYzsNCj4gDQo+ID4gKwlp bnQgcmV0Ow0KPiANCj4gPiArDQo+IA0KPiA+ICsJbWF0Y2ggPSBvZl9tYXRjaF9kZXZpY2UoY2Ru c19wbGF0X3BjaWVfb2ZfbWF0Y2gsIGRldik7DQo+IA0KPiA+ICsJaWYgKCFtYXRjaCkNCj4gDQo+ ID4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+IA0KPiA+ICsNCj4gDQo+ID4gKwlkYXRhID0gKHN0cnVj dCBjZG5zX3BsYXRfcGNpZV9vZl9kYXRhICopbWF0Y2gtPmRhdGE7DQo+IA0KPiA+ICsJaXNfcmMg PSBkYXRhLT5pc19yYzsNCj4gDQo+ID4gKw0KPiANCj4gPiArCXByX2RlYnVnKCIgU3RhcnRlZCAl cyB3aXRoIGlzX3JjOiAlZFxuIiwgX19mdW5jX18sIGlzX3JjKTsNCj4gDQo+ID4gKwljZG5zX3Bs YXRfcGNpZSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqY2Ruc19wbGF0X3BjaWUpLA0KPiBH RlBfS0VSTkVMKTsNCj4gDQo+ID4gKwlpZiAoIWNkbnNfcGxhdF9wY2llKQ0KPiANCj4gPiArCQly ZXR1cm4gLUVOT01FTTsNCj4gDQo+ID4gKw0KPiANCj4gPiArCXBsYXRmb3JtX3NldF9kcnZkYXRh KHBkZXYsIGNkbnNfcGxhdF9wY2llKTsNCj4gDQo+ID4gKwlpZiAoaXNfcmMpIHsNCj4gDQo+ID4g KwkJaWYgKCFJU19FTkFCTEVEKENPTkZJR19QQ0lFX0NBREVOQ0VfUExBVF9IT1NUKSkNCj4gDQo+ ID4gKwkJCXJldHVybiAtRU5PREVWOw0KPiANCj4gPiArDQo+IA0KPiA+ICsJCWJyaWRnZSA9IGRl dm1fcGNpX2FsbG9jX2hvc3RfYnJpZGdlKGRldiwgc2l6ZW9mKCpyYykpOw0KPiANCj4gPiArCQlp ZiAoIWJyaWRnZSkNCj4gDQo+ID4gKwkJCXJldHVybiAtRU5PTUVNOw0KPiANCj4gPiArDQo+IA0K PiA+ICsJCXJjID0gcGNpX2hvc3RfYnJpZGdlX3ByaXYoYnJpZGdlKTsNCj4gDQo+ID4gKwkJcmMt PnBjaWUuZGV2ID0gZGV2Ow0KPiANCj4gPiArCQljZG5zX3BsYXRfcGNpZS0+cGNpZSA9ICZyYy0+ cGNpZTsNCj4gDQo+ID4gKwkJY2Ruc19wbGF0X3BjaWUtPmlzX3JjID0gaXNfcmM7DQo+IA0KPiA+ ICsNCj4gDQo+ID4gKwkJcmV0ID0gY2Ruc19wY2llX2luaXRfcGh5KGRldiwgY2Ruc19wbGF0X3Bj aWUtPnBjaWUpOw0KPiANCj4gPiArCQlpZiAocmV0KSB7DQo+IA0KPiA+ICsJCQlkZXZfZXJyKGRl diwgImZhaWxlZCB0byBpbml0IHBoeVxuIik7DQo+IA0KPiA+ICsJCQlyZXR1cm4gcmV0Ow0KPiAN Cj4gPiArCQl9DQo+IA0KPiA+ICsJCXBtX3J1bnRpbWVfZW5hYmxlKGRldik7DQo+IA0KPiA+ICsJ CXJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTsNCj4gDQo+ID4gKwkJaWYgKHJldCA8IDAp IHsNCj4gDQo+ID4gKwkJCWRldl9lcnIoZGV2LCAicG1fcnVudGltZV9nZXRfc3luYygpIGZhaWxl ZFxuIik7DQo+IA0KPiA+ICsJCQlnb3RvIGVycl9nZXRfc3luYzsNCj4gDQo+ID4gKwkJfQ0KPiAN Cj4gPiArDQo+IA0KPiA+ICsJCXJldCA9IGNkbnNfcGNpZV9ob3N0X3NldHVwKHJjKTsNCj4gDQo+ ID4gKwkJaWYgKHJldCkNCj4gDQo+ID4gKwkJCWdvdG8gZXJyX2luaXQ7DQo+IA0KPiA+ICsJfSBl bHNlIHsNCj4gDQo+ID4gKwkJaWYgKCFJU19FTkFCTEVEKENPTkZJR19QQ0lFX0NBREVOQ0VfUExB VF9FUCkpDQo+IA0KPiA+ICsJCQlyZXR1cm4gLUVOT0RFVjsNCj4gDQo+ID4gKw0KPiANCj4gPiAr CQllcCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZXApLCBHRlBfS0VSTkVMKTsNCj4gDQo+ ID4gKwkJaWYgKCFlcCkNCj4gDQo+ID4gKwkJCXJldHVybiAtRU5PTUVNOw0KPiANCj4gPiArDQo+ IA0KPiA+ICsJCWVwLT5wY2llLmRldiA9IGRldjsNCj4gDQo+ID4gKwkJY2Ruc19wbGF0X3BjaWUt PnBjaWUgPSAmZXAtPnBjaWU7DQo+IA0KPiA+ICsJCWNkbnNfcGxhdF9wY2llLT5pc19yYyA9IGlz X3JjOw0KPiANCj4gPiArDQo+IA0KPiA+ICsJCXJldCA9IGNkbnNfcGNpZV9pbml0X3BoeShkZXYs IGNkbnNfcGxhdF9wY2llLT5wY2llKTsNCj4gDQo+ID4gKwkJaWYgKHJldCkgew0KPiANCj4gPiAr CQkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gaW5pdCBwaHlcbiIpOw0KPiANCj4gPiArCQkJcmV0 dXJuIHJldDsNCj4gDQo+ID4gKwkJfQ0KPiANCj4gPiArDQo+IA0KPiA+ICsJCXBtX3J1bnRpbWVf ZW5hYmxlKGRldik7DQo+IA0KPiA+ICsJCXJldCA9IHBtX3J1bnRpbWVfZ2V0X3N5bmMoZGV2KTsN Cj4gDQo+ID4gKwkJaWYgKHJldCA8IDApIHsNCj4gDQo+ID4gKwkJCWRldl9lcnIoZGV2LCAicG1f cnVudGltZV9nZXRfc3luYygpIGZhaWxlZFxuIik7DQo+IA0KPiA+ICsJCQlnb3RvIGVycl9nZXRf c3luYzsNCj4gDQo+ID4gKwkJfQ0KPiANCj4gPiArDQo+IA0KPiA+ICsJCXJldCA9IGNkbnNfcGNp ZV9lcF9zZXR1cChlcCk7DQo+IA0KPiA+ICsJCWlmIChyZXQpDQo+IA0KPiA+ICsJCQlnb3RvIGVy cl9pbml0Ow0KPiANCj4gPiArCX0NCj4gDQo+ID4gKw0KPiANCj4gPiArIGVycl9pbml0Og0KPiAN Cj4gPiArCXBtX3J1bnRpbWVfcHV0X3N5bmMoZGV2KTsNCj4gDQo+ID4gKw0KPiANCj4gPiArIGVy cl9nZXRfc3luYzoNCj4gDQo+ID4gKwlwbV9ydW50aW1lX2Rpc2FibGUoZGV2KTsNCj4gDQo+ID4g KwljZG5zX3BjaWVfZGlzYWJsZV9waHkoY2Ruc19wbGF0X3BjaWUtPnBjaWUpOw0KPiANCj4gPiAr CXBoeV9jb3VudCA9IGNkbnNfcGxhdF9wY2llLT5wY2llLT5waHlfY291bnQ7DQo+IA0KPiA+ICsJ d2hpbGUgKHBoeV9jb3VudC0tKQ0KPiANCj4gPiArCQlkZXZpY2VfbGlua19kZWwoY2Ruc19wbGF0 X3BjaWUtPnBjaWUtPmxpbmtbcGh5X2NvdW50XSk7DQo+IA0KPiA+ICsNCj4gDQo+ID4gKwlyZXR1 cm4gMDsNCj4gDQo+ID4gK30NCj4gDQo+ID4gKw0KPiANCj4gPiArc3RhdGljIHZvaWQgY2Ruc19w bGF0X3BjaWVfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gDQo+ID4g K3sNCj4gDQo+ID4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPiANCj4gPiAr CXN0cnVjdCBjZG5zX3BjaWUgKnBjaWUgPSBkZXZfZ2V0X2RydmRhdGEoZGV2KTsNCj4gDQo+ID4g KwlpbnQgcmV0Ow0KPiANCj4gPiArDQo+IA0KPiA+ICsJcmV0ID0gcG1fcnVudGltZV9wdXRfc3lu YyhkZXYpOw0KPiANCj4gPiArCWlmIChyZXQgPCAwKQ0KPiANCj4gPiArCQlkZXZfZGJnKGRldiwg InBtX3J1bnRpbWVfcHV0X3N5bmMgZmFpbGVkXG4iKTsNCj4gDQo+ID4gKw0KPiANCj4gPiArCXBt X3J1bnRpbWVfZGlzYWJsZShkZXYpOw0KPiANCj4gPiArDQo+IA0KPiA+ICsJY2Ruc19wY2llX2Rp c2FibGVfcGh5KHBjaWUpOw0KPiANCj4gPiArfQ0KPiANCj4gPiArDQo+IA0KPiA+ICtzdGF0aWMg Y29uc3Qgc3RydWN0IGNkbnNfcGxhdF9wY2llX29mX2RhdGEgY2Ruc19wbGF0X3BjaWVfaG9zdF9v Zl9kYXRhDQo+ID0gew0KPiANCj4gPiArCS5pc19yYyA9IHRydWUsDQo+IA0KPiA+ICt9Ow0KPiAN Cj4gPiArDQo+IA0KPiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNkbnNfcGxhdF9wY2llX29mX2Rh dGEgY2Ruc19wbGF0X3BjaWVfZXBfb2ZfZGF0YSA9IHsNCj4gDQo+ID4gKwkuaXNfcmMgPSBmYWxz ZSwNCj4gDQo+ID4gK307DQo+IA0KPiA+ICsNCj4gDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg b2ZfZGV2aWNlX2lkIGNkbnNfcGxhdF9wY2llX29mX21hdGNoW10gPSB7DQo+IA0KPiA+ICsJew0K PiANCj4gPiArCQkuY29tcGF0aWJsZSA9ICJjZG5zLGNkbnMtcGNpZS1ob3N0IiwNCj4gDQo+ID4g KwkJLmRhdGEgPSAmY2Ruc19wbGF0X3BjaWVfaG9zdF9vZl9kYXRhLA0KPiANCj4gPiArCX0sDQo+ IA0KPiA+ICsJew0KPiANCj4gPiArCQkuY29tcGF0aWJsZSA9ICJjZG5zLGNkbnMtcGNpZS1lcCIs DQo+IA0KPiA+ICsJCS5kYXRhID0gJmNkbnNfcGxhdF9wY2llX2VwX29mX2RhdGEsDQo+IA0KPiA+ ICsJfSwNCj4gDQo+ID4gKwl7fSwNCj4gDQo+ID4gK307DQo+IA0KPiA+ICsNCj4gDQo+ID4gK3N0 YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNkbnNfcGxhdF9wY2llX2RyaXZlciA9IHsNCj4g DQo+ID4gKwkuZHJpdmVyID0gew0KPiANCj4gPiArCQkubmFtZSA9ICJjZG5zLXBjaWUiLA0KPiAN Cj4gPiArCQkub2ZfbWF0Y2hfdGFibGUgPSBjZG5zX3BsYXRfcGNpZV9vZl9tYXRjaCwNCj4gDQo+ ID4gKwkJLnBtCT0gJmNkbnNfcGNpZV9wbV9vcHMsDQo+IA0KPiA+ICsJfSwNCj4gDQo+ID4gKwku cHJvYmUgPSBjZG5zX3BsYXRfcGNpZV9wcm9iZSwNCj4gDQo+ID4gKwkuc2h1dGRvd24gPSBjZG5z X3BsYXRfcGNpZV9zaHV0ZG93biwNCj4gDQo+ID4gK307DQo+IA0KPiA+ICtidWlsdGluX3BsYXRm b3JtX2RyaXZlcihjZG5zX3BsYXRfcGNpZV9kcml2ZXIpOw0KPiANCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWNhZGVuY2UuaA0KPiBiL2RyaXZlcnMvcGNpL2Nv bnRyb2xsZXIvcGNpZS1jYWRlbmNlLmgNCj4gDQo+ID4gaW5kZXggYWU2YmYyYS4uNjJlOWRjZCAx MDA2NDQNCj4gDQo+ID4gLS0tIGEvZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLWNhZGVuY2Uu aA0KPiANCj4gPiArKysgYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtY2FkZW5jZS5oDQo+ IA0KPiA+IEBAIC0xOTAsNiArMTkwLDggQEAgZW51bSBjZG5zX3BjaWVfcnBfYmFyIHsNCj4gDQo+ ID4gIAkoKChjb2RlKSA8PCA4KSAmIENETlNfUENJRV9OT1JNQUxfTVNHX0NPREVfTUFTSykNCj4g DQo+ID4gICNkZWZpbmUgQ0ROU19QQ0lFX01TR19OT19EQVRBCQkJQklUKDE2KQ0KPiANCj4gPg0K PiANCj4gPiArc3RydWN0IGNkbnNfcGNpZTsNCj4gDQo+ID4gKw0KPiANCj4gPiAgZW51bSBjZG5z X3BjaWVfbXNnX2NvZGUgew0KPiANCj4gPiAgCU1TR19DT0RFX0FTU0VSVF9JTlRBCT0gMHgyMCwN Cj4gDQo+ID4gIAlNU0dfQ09ERV9BU1NFUlRfSU5UQgk9IDB4MjEsDQo+IA0KPiA+IEBAIC0yMjEs NiArMjIzLDExIEBAIGVudW0gY2Ruc19wY2llX21zZ19yb3V0aW5nIHsNCj4gDQo+ID4gIAlNU0df Uk9VVElOR19HQVRIRVIsDQo+IA0KPiA+ICB9Ow0KPiANCj4gPg0KPiANCj4gPiArDQo+IA0KPiA+ ICtzdHJ1Y3QgY2Ruc19wY2llX2NvbW1vbl9vcHMgew0KPiANCj4gPiArCWludAkoKmNkbnNfc3Rh cnRfbGluaykoc3RydWN0IGNkbnNfcGNpZSAqcGNpZSwgYm9vbCBzdGFydCk7DQo+IA0KPiA+ICsJ Ym9vbAkoKmNkbnNfaXNfbGlua191cCkoc3RydWN0IGNkbnNfcGNpZSAqcGNpZSk7DQo+IA0KPiA+ ICt9Ow0KPiANCj4gDQo+IA0KPiBUaGlzIHN0cnVjdHVyZSBpcyBkZWZpbmVkIGhlcmUgYW5kIG5v dCB1c2VkIGFueXdoZXJlLiBZb3UgY291bGQgY3JlYXRlIGENCj4gbmV3DQo+IA0KPiBwYXRjaCB0 byBhZGQgdGhpcyBzdHJ1Y3R1cmUgYW5kIHVzZSBpdCBpbiBjYWRlbmNlIGNvcmUuDQo+IA0KVGhh bmtzIGZvciBzcG90dGluZyB0aGlzLiBJIHdpbGwgbW92ZSBpdCB0byBuZXh0IHBhdGNoIGFzIHN1 Z2dlc3RlZC4NCj4gDQo+IA0KPiBUaGFua3MNCj4gDQo+IEtpc2hvbg0KDQo=