Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp2885791pxa; Tue, 25 Aug 2020 06:11:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyznlIT5+KBNfJb4IO1yp3TMjUB6xSbB5uO0+pOATtICTWVoGUGQcYlVEIrVUDwhVcUexsW X-Received: by 2002:a17:906:fa8d:: with SMTP id lt13mr10109164ejb.140.1598361063630; Tue, 25 Aug 2020 06:11:03 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1598361063; cv=pass; d=google.com; s=arc-20160816; b=JZFPv9T2CKJHji3LC7SK/tjZrdz626t0xSdPrll4/39YipOJ0FmiQUHGY8HPw2K8ZE EYVgA0M9heUriGVd7u/XZFCsbufh+TbexNqWYXJzZPDgZk1aPiGCuflEVONTM3NFgMra t1Hf/+/sVNBQWpKyO3FBaHp0TFq3RklHhtBkVnRCtXBZkTdRzLwEQthYpoZLhI6jnCB8 Bmi3xFpXSKrkiCcnAYNSMEzj3NdS7O4LiX501Cbu3sKZwpHgMJHiXbqz3T9wpbulCUOj WQWjL0UTY5i2uJMOc+IxdvZK0IlGfUKHhtyqI10W/3lcNtyrRsVmh6ixa5eYn3MYxOhJ SjTw== 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-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:dkim-signature:ironport-sdr:dkim-signature; bh=5QijySrr7W+r9URhCTUZDxfrmd8bbro9+RC8mkWSi6o=; b=pqGUdPpUfDbYzI3nK03ajxP83UB/09ETyQPaGU/oIYc9mO0qDbwrls6NRSJa/uek4R T89dXjDyCdgNDvs8YzPu4DdDft7S3cR01/LS0T7xq57ETz67s+ojccPALuNNFdQ/VAAj Ag98FchjcCRAzIowoL5GhWLxXICSelzDbvJtCq0F8RXuJ5iUSBA3P/evQZJu7u8D+yG0 r87Y+oCE5Xoyo9HLNFQo068FBmZWoHM11JGs5dG8ycO/vnBKdwpZ7/rCjdHI4JTPtT1h OS3Y0vBnluEllkKLDZwnkOJqPKMwHu1g+Vp7oZvdtbJbVLp9oS0dg3bPWXDS8SgsjII4 4BOQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=fail header.i=@microchip.com header.s=mchp header.b=VRdq6xP2; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=tRP5jdBD; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t9si9005801eji.436.2020.08.25.06.10.40; Tue, 25 Aug 2020 06:11:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@microchip.com header.s=mchp header.b=VRdq6xP2; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=tRP5jdBD; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727798AbgHYMoj (ORCPT + 99 others); Tue, 25 Aug 2020 08:44:39 -0400 Received: from esa6.microchip.iphmx.com ([216.71.154.253]:16669 "EHLO esa6.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727034AbgHYMoh (ORCPT ); Tue, 25 Aug 2020 08:44:37 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1598359474; x=1629895474; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=5QijySrr7W+r9URhCTUZDxfrmd8bbro9+RC8mkWSi6o=; b=VRdq6xP2jvf3YNEKS2LlL6Yk4YO5ZMUZCWsaXWtJ8pyGEqMJ9CqTrxmc 5+bsQYmMnO7M/2/wJTiIhGffy6eriQfTYkFiThXZjsDfivjwMYmmQBayH UnyX8dgH7zyoMTJQ0CChXSg4UGugXsHz+FRMC7ZV6bKhTBiYQolekwne3 emraQ1b8GcX2o94FQDRzY0UlzJPpZl8GAsONJjjGsNyweD2QDm1crnupF zzXXKzS4IRgnHp/MuVtHAocZ2XuIOxzyURWdjb/q5orVo12oTQBjo+aGT dPwvI/1vFwn81Ns7c1qWaixsjnjl1FQnENE3Eu48osugQGO2mb1hjIn/h g==; IronPort-SDR: gmLBir0lUFKZsGCnYJR9h5Vi7ZCvrEduDrczWzCnrONXNDqDoOCDJmJ78Xi0tMIoRa/lYIZ1cL gNVGL/VmeoDVGcfeyGuOy7HwiZRbOKOQJ9mCkrGtTWqekwoKA+WJvNqqDGRm6g87Ytl5VB+gbG baih+27rQWyEXfSpa1TyiyDYldlSxwRgJfs7mLvu59fyrXKWMU9vZ2mCHjP+sf5w1uirroq+En zSe2EgprxP/bJ3CJ+MOMKtBDqLtrHB1ikxTtJgwqZ2jHoj7tzq9ZabigDEONXscOf3fbEYW63g V9s= X-IronPort-AV: E=Sophos;i="5.76,352,1592895600"; d="scan'208";a="24163823" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 25 Aug 2020 05:44:33 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3; Tue, 25 Aug 2020 05:44:30 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1979.3 via Frontend Transport; Tue, 25 Aug 2020 05:43:52 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lGJVu6IzsYOGiD533KZ1eJSKv+NkXvSJ/gsCS/bivgD7r7VnKkl5tPl2Rlop4gu0M/JzToPOQ2mI1zER81rbBnip6eR/m+T+UeiOdS4hq/DPr4d7+ZH9t7t4jBujllpbvxqvnkZq7rrc+nLUXH0FzkPMWCc7nHtwVdKcv99dbxBlZNc2rvrwcDZTg80K4DdyKdWdHqP763lM0g7WFTV4yTEXNbnWw++VSHz1WZrWnLR8iUhHlrCN9VGlUwlI76jDVo3gZ2R7GZgdhnqLYE/+SlLFnU2+9ks8wvsDfHgJJUZsG++syUtwvwrK59TYMrhn1xVLEnUvS992aUtkQ6SpRg== 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=5QijySrr7W+r9URhCTUZDxfrmd8bbro9+RC8mkWSi6o=; b=oPe5qAy84xXTGSN1sM4gFATI2i4UqDFsGFyVyBg/wHwC4a3t/PwskTXJZVaV422XBaya5LI4587sU3QLgVx+yzy0eDd4PGI4vIOitx8P2uiXe8e/9LzZFJiMVloVERk5Rq/ZBiulb6lpLOxshLt4OL1azUbdubHUvLN/sSIacSl04GxNbELGxWXiwUb/Eb1bXEFf9WkFwbGsd/1MlDHwIl5zgvVhEI90BYWWs410zj4yRDyPKLVZRcfkPH/Yy+/dhn+ifqpyTv8hedPhYC6hZT83uVlWZVN3b1+CORuDDpGle4w8u1H2IfQ2OCha2oXnnU5Txq2Vo1ydqFUFKBdqnw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=5QijySrr7W+r9URhCTUZDxfrmd8bbro9+RC8mkWSi6o=; b=tRP5jdBDTfglThBEe5jWa4NY3znc3eq07LOFSO8M5f5/ESyqoT3lkg4vrT5COsJOdF0A6KWukMXvVNunyftcYCZLNf/V3dN0WmCOCOQ6cWYwvIfY7SZGmd8riyWVuUEZxrUVqDsUu9SQCApPa+BZY7ZxCSKL5rESejphR2mMqds= Received: from BYAPR11MB2999.namprd11.prod.outlook.com (2603:10b6:a03:90::17) by BYAPR11MB3495.namprd11.prod.outlook.com (2603:10b6:a03:8a::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3305.26; Tue, 25 Aug 2020 12:44:29 +0000 Received: from BYAPR11MB2999.namprd11.prod.outlook.com ([fe80::9d17:b603:ad42:a2d4]) by BYAPR11MB2999.namprd11.prod.outlook.com ([fe80::9d17:b603:ad42:a2d4%7]) with mapi id 15.20.3305.026; Tue, 25 Aug 2020 12:44:29 +0000 From: To: CC: , , , , , , Subject: Re: [PATCH v2 3/4] media: misc: introduce microchip_csi2dc driver Thread-Topic: [PATCH v2 3/4] media: misc: introduce microchip_csi2dc driver Thread-Index: AQHWUQ4mOuXzPvUgsk212jcYF2r4kqk25HEAgBI0YwA= Date: Tue, 25 Aug 2020 12:44:29 +0000 Message-ID: <77ea2a54-3f70-dc18-98ed-85f0cfb062c4@microchip.com> References: <20200703074416.55272-1-eugen.hristev@microchip.com> <20200703074416.55272-4-eugen.hristev@microchip.com> <20200813224418.GM840@valkosipuli.retiisi.org.uk> In-Reply-To: <20200813224418.GM840@valkosipuli.retiisi.org.uk> Accept-Language: en-US, ro-RO Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 authentication-results: iki.fi; dkim=none (message not signed) header.d=none;iki.fi; dmarc=none action=none header.from=microchip.com; x-originating-ip: [86.121.125.215] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7d0f5ba6-5150-4e21-a37a-08d848f49bbe x-ms-traffictypediagnostic: BYAPR11MB3495: x-microsoft-antispam-prvs: x-bypassexternaltag: True x-ms-oob-tlc-oobclassifiers: OLM:5236; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: iLEsIIV8lR3bXwQnu+QdwTEk9qIvccD86Yq3gnP+bt9XamcBbf2wqjf5dAIQVW+qX/io3kp/XIOVVnTpn9Pgc+7ZBi+46337xdR057931IG3jUcNCyhBEIsiaHti/v9SXOorneVTyisz+TOIn8DcTRE4gBaVpI4cbr0tgd/GkfB24R32wLNSUdAOSGD6uGZG/YA1m0ae/lKV+bfmdennoyK58lCEkVHnY+Wi/B5Gpd5b6oHcbMT6Afnt5E7lbouinnwFwtTX+8Zm1/gXwo/AjCUxEhZohSRqP7ImdqutIz2KzzIdJcltAyr4XD9Ertq3vM8L7pCepcLR53nSvbRLwE9qYgp6HLBaKb/XIUUCxBjAxIsUP/tMnpBSLDY1jIez7J3CiqYcX9S/e1irbv6rEnbwPh/dQz+G7Nf3PYKCVBA= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR11MB2999.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(39840400004)(136003)(396003)(376002)(346002)(366004)(26005)(36756003)(4326008)(8936002)(186003)(6506007)(53546011)(2616005)(31696002)(478600001)(316002)(71200400001)(91956017)(66946007)(2906002)(6512007)(76116006)(86362001)(83380400001)(5660300002)(8676002)(6916009)(66446008)(64756008)(6486002)(30864003)(54906003)(66476007)(31686004)(66556008)(461764006)(43740500002)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: 10BdT0pIdcxrMn0bsWP/LY28bS9h/kqu7Jm0dnq2X0RtGrgGgLDEa93RVxITztjvRrkKxOZEd2knElhvixXdDzy5IcGJ8vxBKQMCCdcKll3zaFVT3ol6mNAyza6w9lYOs6jJO0Ed2MhkBlnCgFZaXNEnljWaX1nqDAApVvH8ZpgP3v1rbJcUAFs3g1Q1cTeRxgt3+Hap8Hxua9wNSr03CYa8uwGea7d1SH6yvUSbTtcpFKAIZWfyxH8cTvLDuM1NmwOSAJ0WITHaSYIEqvgLcnFYqCPBlzAphNbQgDQLEwenRUJ+aQOc6X6Fi98wobb+i2rMdsqlpm//AdA5XuwPnGjVPZ9AUYB/4D6hbhSENsf84wlkLeTvb2o982lbuVckA4OeHj5t1MHhmlg2kzQKKZDyFtxa7WF9d+hHm3kw601fIEwo5UdnOwqYGKc3gNBCQsZUC1ifZpgFwsWcILCvc/LuELYbCAhoANTeImaejoNZX+hiwPBDxRhjiMoPAFgYVZARC5UfgY3dWf/hn4GV1ATBNNWtoWpbNy9K4XOowigT+hbolbSN96pwpAmwNGeVyjjxx4xlLgMIdWgnGJqMFMAelzOj81Ax1Q4Ih7wRMba4b1P6zPrzCgAoEeC3zM+KhJ5Pp6Yjym6Qx3fVtSb7iw== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-ID: <380B277144F638438C1B8AD5D6854207@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BYAPR11MB2999.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7d0f5ba6-5150-4e21-a37a-08d848f49bbe X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Aug 2020 12:44:29.3268 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mA3AHBV+0XhacgNBP63ZadT/LVyiyoz2ODCEEhm7dCbBg4jUlzgEDPiDewKeKEHNhiUhiOXqoYqfwgQ4BbKVsH17GHD30GOQJZZfI2VqyIw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR11MB3495 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gMTQuMDguMjAyMCAwMTo0NCwgU2FrYXJpIEFpbHVzIHdyb3RlOg0KDQo+IEhpIEV1Z2VuLA0K PiANCj4gVGhhbmtzIGZvciB0aGUgcGF0Y2guDQoNCkhlbGxvIFNha2FyaSwNCg0KVGhhbmtzIGZv ciByZXZpZXdpbmcuDQoNCj4gDQo+IE9uIEZyaSwgSnVsIDAzLCAyMDIwIGF0IDEwOjQ0OjE1QU0g KzAzMDAsIEV1Z2VuIEhyaXN0ZXYgd3JvdGU6DQo+PiBNaWNyb2NoaXAgQ1NJMkRDIChDU0kyIERl bXVsdGlwbGV4ZXIgQ29udHJvbGxlcikgaXMgYSBtaXNjIGJyaWRnZSBkZXZpY2UNCj4+IHRoYXQg Y29udmVydHMgYSBieXRlIHN0cmVhbSBpbiBJREkgU3lub3BzeXMgZm9ybWF0IChjb21pbmcgZnJv bSBhIENTSTJIT1NUKQ0KPj4gdG8gYSBwaXhlbCBzdHJlYW0gdGhhdCBjYW4gYmUgY2FwdHVyZWQg YnkgYSBzZW5zb3IgY29udHJvbGxlci4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBFdWdlbiBIcmlz dGV2IDxldWdlbi5ocmlzdGV2QG1pY3JvY2hpcC5jb20+DQo+PiAtLS0NCj4+ICAgZHJpdmVycy9t ZWRpYS9taXNjL0tjb25maWcgICAgICAgICAgICB8ICAgOSArDQo+PiAgIGRyaXZlcnMvbWVkaWEv bWlzYy9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKw0KPj4gICBkcml2ZXJzL21lZGlhL21pc2Mv bWljcm9jaGlwX2NzaTJkYy5jIHwgNzA1ICsrKysrKysrKysrKysrKysrKysrKysrKysrDQo+PiAg IDMgZmlsZXMgY2hhbmdlZCwgNzE1IGluc2VydGlvbnMoKykNCj4+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvbWVkaWEvbWlzYy9taWNyb2NoaXBfY3NpMmRjLmMNCj4+DQo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS9taXNjL0tjb25maWcgYi9kcml2ZXJzL21lZGlhL21pc2MvS2Nv bmZpZw0KPj4gaW5kZXggMjA2ZjM5Zjg2ZjQ2Li44NmU4OTJhNDFlYmEgMTAwNjQ0DQo+PiAtLS0g YS9kcml2ZXJzL21lZGlhL21pc2MvS2NvbmZpZw0KPj4gKysrIGIvZHJpdmVycy9tZWRpYS9taXNj L0tjb25maWcNCj4+IEBAIC04LDYgKzgsMTUgQEAgbWVudSAiTWlzY2VsbGFuZW91cyBoZWxwZXIg Y2hpcHMiDQo+Pg0KPj4gICBjb21tZW50ICJWYXJpb3VzIGhlbHBlciBjaGlwcyINCj4+DQo+PiAr Y29uZmlnIFZJREVPX01JQ1JPQ0hJUF9DU0kyREMNCj4+ICsgICAgIHRyaXN0YXRlICJNaWNyb2No aXAgQ1NJMiBEZW11eCBDb250cm9sbGVyIg0KPj4gKyAgICAgZGVwZW5kcyBvbiBWSURFT19WNEwy DQo+PiArICAgICBoZWxwDQo+PiArICAgICAgIENTSTIgRGVtdXggQ29udHJvbGxlciBkcml2ZXIu IENTSTJEQyBpcyBhIGhlbHBlciBjaGlwDQo+PiArICAgICAgIHRoYXQgY29udmVydHMgSURJIGlu dGVyZmFjZSBieXRlIHN0cmVhbSB0byBhIHBhcmFsbGVsIHBpeGVsIHN0cmVhbS4NCj4+ICsgICAg ICAgSXQgc3VwcG9ydHMgdmFyaW91cyBSQVcgZm9ybWF0cyBhcyBpbnB1dC4NCj4+ICsgICAgICAg UGVyZm9ybXMgY2xvY2sgZG9tYWluIGNyb3NzaW5nIGJldHdlZW4gaGFyZHdhcmUgYmxvY2tzLg0K Pj4gKw0KPj4gICBlbmRtZW51DQo+Pg0KPj4gICBlbmRpZg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvbWVkaWEvbWlzYy9NYWtlZmlsZSBiL2RyaXZlcnMvbWVkaWEvbWlzYy9NYWtlZmlsZQ0KPj4g aW5kZXggZjY2NTU0Y2Q1YzQ1Li44NjQ3Nzc4MWI3YWYgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJz L21lZGlhL21pc2MvTWFrZWZpbGUNCj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvbWlzYy9NYWtlZmls ZQ0KPj4gQEAgLTEgKzEsMiBAQA0KPj4gICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwt Mi4wDQo+PiArb2JqLSQoQ09ORklHX1ZJREVPX01JQ1JPQ0hJUF9DU0kyREMpICs9IG1pY3JvY2hp cF9jc2kyZGMubw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvbWlzYy9taWNyb2NoaXBf Y3NpMmRjLmMgYi9kcml2ZXJzL21lZGlhL21pc2MvbWljcm9jaGlwX2NzaTJkYy5jDQo+PiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAwLi40OTRiN2MxMzdiMTcNCj4+ IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2RyaXZlcnMvbWVkaWEvbWlzYy9taWNyb2NoaXBfY3Np MmRjLmMNCj4+IEBAIC0wLDAgKzEsNzA1IEBADQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjANCj4+ICsvKg0KPj4gKyAqIE1pY3JvY2hpcCBDU0kyIERlbXV4IENvbnRyb2xs ZXIgKENTSTJEQykgZHJpdmVyDQo+PiArICoNCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTgtMjAy MCBNaWNyb2NoaXAgVGVjaG5vbG9neSwgSW5jLg0KPj4gKyAqDQo+PiArICogQXV0aG9yOiBFdWdl biBIcmlzdGV2IDxldWdlbi5ocmlzdGV2QG1pY3JvY2hpcC5jb20+DQo+PiArICoNCj4+ICsgKi8N Cj4+ICsNCj4+ICsjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L21v ZHVsZS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9v Zl9ncmFwaC5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4NCj4+ICsj aW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC92aWRlb2Rl djIuaD4NCj4+ICsNCj4+ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1kZXZpY2UuaD4NCj4+ICsjaW5j bHVkZSA8bWVkaWEvdjRsMi1md25vZGUuaD4NCj4+ICsjaW5jbHVkZSA8bWVkaWEvdjRsMi1zdWJk ZXYuaD4NCj4+ICsjaW5jbHVkZSA8bWVkaWEvdmlkZW9idWYyLWRtYS1jb250aWcuaD4NCj4+ICsN Cj4+ICsvKiBHbG9iYWwgY29uZmlndXJhdGlvbiByZWdpc3RlciAqLw0KPj4gKyNkZWZpbmUgQ1NJ MkRDX0dDRkcgICAgICAgICAgICAgICAgICAweDANCj4+ICsNCj4+ICsvKiBNSVBJIHNlbnNvciBw aXhlbCBjbG9jayBpcyBmcmVlIHJ1bm5pbmcgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19HQ0ZHX01J UElGUk4gICAgICAgICAgQklUKDApDQo+PiArLyogT3V0cHV0IHdhdmVmb3JtIGludGVyLWxpbmUg bWluaW11bSBkZWxheSAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX0dDRkdfSExDKHYpICAgICAgICAg ICAoKHYpIDw8IDQpDQo+PiArI2RlZmluZSBDU0kyRENfR0NGR19ITENfTUFTSyAgICAgICAgIEdF Tk1BU0soNywgNCkNCj4+ICsNCj4+ICsvKiBHbG9iYWwgY29udHJvbCByZWdpc3RlciAqLw0KPj4g KyNkZWZpbmUgQ1NJMkRDX0dDVExSICAgICAgICAgICAgICAgICAweDA0DQo+PiArI2RlZmluZSBD U0kyRENfR0NUTFJfU1dSU1QgICAgICAgICAgIEJJVCgwKQ0KPj4gKw0KPj4gKy8qIEdsb2JhbCBz dGF0dXMgcmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19HUyAgICAgICAgICAgICAgICAg ICAgMHgwOA0KPj4gKw0KPj4gKy8qIFNTUCBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyICovDQo+ PiArI2RlZmluZSBDU0kyRENfU1NQSVMgICAgICAgICAgICAgICAgIDB4MjgNCj4+ICsvKiBQaXBl IHVwZGF0ZSByZWdpc3RlciAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1BVICAgICAgICAgICAgICAg ICAgICAweEMwDQo+PiArLyogVmlkZW8gcGlwZSBhdHRyaWJ1dGVzIHVwZGF0ZSAqLw0KPj4gKyNk ZWZpbmUgQ1NJMkRDX1BVX1ZQICAgICAgICAgICAgICAgICBCSVQoMCkNCj4+ICsNCj4+ICsvKiBQ aXBlIHVwZGF0ZSBzdGF0dXMgcmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19QVVMgICAg ICAgICAgICAgICAgICAgMHhDNA0KPj4gKw0KPj4gKy8qIFZpZGVvIHBpcGVsaW5lIGVuYWJsZSBy ZWdpc3RlciAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQRSAgICAgICAgICAgICAgICAgICAweEY4 DQo+PiArI2RlZmluZSBDU0kyRENfVlBFX0VOQUJMRSAgICAgICAgICAgIEJJVCgwKQ0KPj4gKw0K Pj4gKy8qIFZpZGVvIHBpcGVsaW5lIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgKi8NCj4+ICsjZGVm aW5lIENTSTJEQ19WUENGRyAgICAgICAgICAgICAgICAgMHhGQw0KPj4gKy8qIERhdGEgdHlwZSAq Lw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX0RUKHYpICAgICAgICAgICAoKHYpIDw8IDApDQo+ PiArI2RlZmluZSBDU0kyRENfVlBDRkdfRFRfTUFTSyAgICAgICAgIEdFTk1BU0soNSwgMCkNCj4+ ICsvKiBWaXJ0dWFsIGNoYW5uZWwgaWRlbnRpZmllciAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQ Q0ZHX1ZDKHYpICAgICAgICAgICAoKHYpIDw8IDYpDQo+PiArI2RlZmluZSBDU0kyRENfVlBDRkdf VkNfTUFTSyAgICAgICAgIEdFTk1BU0soNywgNikNCj4+ICsvKiBEZWNvbXByZXNzaW9uIGVuYWJs ZSAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX0RFICAgICAgICAgICAgICAgICAgICAgIEJJ VCg4KQ0KPj4gKy8qIERlY29kZXIgbW9kZSAqLw0KPj4gKyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX0RN KHYpICAgICAgICAgICAoKHYpIDw8IDkpDQo+PiArI2RlZmluZSBDU0kyRENfVlBDRkdfRE1fREVD T0RFUjhUTzEyIDANCj4+ICsvKiBEZWNvZGVyIHByZWRpY3RvciAyIHNlbGVjdGlvbiAqLw0KPj4g KyNkZWZpbmUgQ1NJMkRDX1ZQQ0ZHX0RQMiAgICAgICAgICAgICBCSVQoMTIpDQo+PiArLyogUmVj b21tZW5kZWQgbWVtb3J5IHN0b3JhZ2UgKi8NCj4+ICsjZGVmaW5lIENTSTJEQ19WUENGR19STVMg ICAgICAgICAgICAgQklUKDEzKQ0KPj4gKy8qIFBvc3QgYWRqdXN0bWVudCAqLw0KPj4gKyNkZWZp bmUgQ1NJMkRDX1ZQQ0ZHX1BBICAgICAgICAgICAgICAgICAgICAgIEJJVCgxNCkNCj4+ICsNCj4+ ICsvKiBWaWRlbyBwaXBlbGluZSBjb2x1bW4gcmVnaXN0ZXIgKi8NCj4+ICsjZGVmaW5lIENTSTJE Q19WUENPTCAgICAgICAgICAgICAgICAgMHgxMDANCj4+ICsvKiBDb2x1bW4gbnVtYmVyICovDQo+ PiArI2RlZmluZSBDU0kyRENfVlBDT0xfQ09MKHYpICAgICAgICAgICgodikgPDwgMCkNCj4+ICsj ZGVmaW5lIENTSTJEQ19WUENPTF9DT0xfTUFTSyAgICAgICAgICAgICAgICBHRU5NQVNLKDE1LCAw KQ0KPj4gKw0KPj4gKy8qIFZpZGVvIHBpcGVsaW5lIHJvdyByZWdpc3RlciAqLw0KPj4gKyNkZWZp bmUgQ1NJMkRDX1ZQUk9XICAgICAgICAgICAgICAgICAweDEwNA0KPj4gKy8qIFJvdyBudW1iZXIg Ki8NCj4+ICsjZGVmaW5lIENTSTJEQ19WUFJPV19ST1codikgICAgICAgICAgKCh2KSA8PCAwKQ0K Pj4gKyNkZWZpbmUgQ1NJMkRDX1ZQUk9XX1JPV19NQVNLICAgICAgICAgICAgICAgIEdFTk1BU0so MTUsIDApDQo+PiArDQo+PiArLyogVmVyc2lvbiByZWdpc3RlciAqLw0KPj4gKyNkZWZpbmUgQ1NJ MkRDX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgICAgIDB4MUZDDQo+PiArDQo+PiArLyogcmVn aXN0ZXIgcmVhZC93cml0ZSBoZWxwZXJzICovDQo+PiArI2RlZmluZSBjc2kyZGNfcmVhZGwoc3Qs IHJlZykgICAgICAgICAgICAgICAgcmVhZGxfcmVsYXhlZCgoc3QpLT5iYXNlICsgKHJlZykpDQo+ PiArI2RlZmluZSBjc2kyZGNfd3JpdGVsKHN0LCByZWcsIHZhbCkgIHdyaXRlbF9yZWxheGVkKCh2 YWwpLCAoc3QpLT5iYXNlICsgKHJlZykpDQo+PiArDQo+PiArLyogc3VwcG9ydGVkIFJBVyBkYXRh IHR5cGVzICovDQo+PiArI2RlZmluZSBDU0kyRENfRFRfUkFXNiAgICAgICAgICAgICAgICAgICAg ICAgMHgyOA0KPj4gKyNkZWZpbmUgQ1NJMkRDX0RUX1JBVzcgICAgICAgICAgICAgICAgICAgICAg IDB4MjkNCj4+ICsjZGVmaW5lIENTSTJEQ19EVF9SQVc4ICAgICAgICAgICAgICAgICAgICAgICAw eDJBDQo+PiArI2RlZmluZSBDU0kyRENfRFRfUkFXMTAgICAgICAgICAgICAgICAgICAgICAgMHgy Qg0KPj4gKyNkZWZpbmUgQ1NJMkRDX0RUX1JBVzEyICAgICAgICAgICAgICAgICAgICAgIDB4MkMN Cj4+ICsjZGVmaW5lIENTSTJEQ19EVF9SQVcxNCAgICAgICAgICAgICAgICAgICAgICAweDJEDQo+ PiArDQo+PiArc3RydWN0IGNzaTJkY19mb3JtYXQgew0KPj4gKyAgICAgdTMyICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBtYnVzX2NvZGU7DQo+PiArICAgICB1MzIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGR0Ow0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCBjc2kyZGNf Zm9ybWF0IGNzaTJkY19mb3JtYXRzX2xpc3RbXSA9IHsNCj4gDQo+IGNvbnN0DQo+IA0KPj4gKyAg ICAgew0KPj4gKyAgICAgICAgICAgICAubWJ1c19jb2RlID0gICAgICAgICAgICBNRURJQV9CVVNf Rk1UX1NSR0dCMTBfMVgxMCwNCj4+ICsgICAgICAgICAgICAgLmR0ID0gICAgICAgICAgICAgICAg ICAgQ1NJMkRDX0RUX1JBVzEwLA0KPj4gKyAgICAgfSwNCj4+ICt9Ow0KPj4gKw0KPj4gK2VudW0g bWlwaV9jc2lfcGFkcyB7DQo+PiArICAgICBDU0kyRENfUEFEX1NJTksgICAgICAgICAgICAgICAg ID0gMCwNCj4+ICsgICAgIENTSTJEQ19QQURfU09VUkNFICAgICAgICAgICAgICAgPSAxLA0KPj4g KyAgICAgQ1NJMkRDX1BBRFNfTlVNICAgICAgICAgICAgICAgICA9IDIsDQo+PiArfTsNCj4+ICsN Cj4+ICtzdHJ1Y3QgY3NpMmRjX2RldmljZSB7DQo+PiArICAgICB2b2lkIF9faW9tZW0gICAgICAg ICAgICAgICAgICAgICpiYXNlOw0KPj4gKyAgICAgc3RydWN0IHY0bDJfc3ViZGV2ICAgICAgICAg ICAgICBjc2kyZGNfc2Q7DQo+PiArICAgICBzdHJ1Y3QgZGV2aWNlICAgICAgICAgICAgICAgICAg ICpkZXY7DQo+PiArICAgICBzdHJ1Y3QgdjRsMl9kZXZpY2UgICAgICAgICAgICAgIHY0bDJfZGV2 Ow0KPj4gKyAgICAgc3RydWN0IGNsayAgICAgICAgICAgICAgICAgICAgICAqcGNsazsNCj4+ICsg ICAgIHN0cnVjdCBjbGsgICAgICAgICAgICAgICAgICAgICAgKnNjY2s7DQo+PiArDQo+PiArICAg ICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZGVvX3BpcGU7DQo+PiArDQo+PiAr ICAgICB1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bV9mbXRzOw0KPj4gKyAgICAg c3RydWN0IGNzaTJkY19mb3JtYXQgICAgICAgICAgICAqKmZvcm1hdHM7DQo+PiArDQo+PiArICAg ICBzdHJ1Y3QgY3NpMmRjX2Zvcm1hdCAgICAgICAgICAgICpjdXJfZm10Ow0KPj4gKyAgICAgc3Ry dWN0IGNzaTJkY19mb3JtYXQgICAgICAgICAgICAqdHJ5X2ZtdDsNCj4+ICsNCj4+ICsgICAgIHN0 cnVjdCBtZWRpYV9wYWQgICAgICAgICAgICAgICAgcGFkc1tDU0kyRENfUEFEU19OVU1dOw0KPj4g Kw0KPj4gKyAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGtfZ2F0ZWQ7DQo+ PiArICAgICB1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVyX2xpbmVfZGVsYXk7 DQo+PiArICAgICB1MzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZjOw0KPj4gKw0KPj4g KyAgICAgc3RydWN0IHY0bDJfYXN5bmNfc3ViZGV2ICAgICAgICAqYXNkOw0KPj4gKyAgICAgc3Ry dWN0IHY0bDJfYXN5bmNfbm90aWZpZXIgICAgICBub3RpZmllcjsNCj4+ICsNCj4+ICsgICAgIHN0 cnVjdCB2NGwyX3N1YmRldiAgICAgICAgICAgICAgKmlucHV0X3NkOw0KPj4gKyAgICAgYm9vbCAg ICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWQ7DQo+PiArfTsNCj4+ICsNCj4+ICtz dGF0aWMgdm9pZCBjc2kyZGNfdnBfdXBkYXRlKHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMp DQo+PiArew0KPj4gKyAgICAgdTMyIHZwOw0KPj4gKw0KPj4gKyAgICAgdnAgPSBDU0kyRENfVlBD RkdfRFQoY3NpMmRjLT5jdXJfZm10LT5kdCkgJiBDU0kyRENfVlBDRkdfRFRfTUFTSzsNCj4+ICsg ICAgIHZwIHw9IENTSTJEQ19WUENGR19WQyhjc2kyZGMtPnZjKSAmIENTSTJEQ19WUENGR19WQ19N QVNLOw0KPj4gKyAgICAgdnAgJj0gfkNTSTJEQ19WUENGR19ERTsNCj4+ICsgICAgIHZwIHw9IENT STJEQ19WUENGR19ETShDU0kyRENfVlBDRkdfRE1fREVDT0RFUjhUTzEyKTsNCj4+ICsgICAgIHZw ICY9IH5DU0kyRENfVlBDRkdfRFAyOw0KPj4gKyAgICAgdnAgJj0gfkNTSTJEQ19WUENGR19STVM7 DQo+PiArICAgICB2cCB8PSBDU0kyRENfVlBDRkdfUEE7DQo+PiArDQo+PiArICAgICBjc2kyZGNf d3JpdGVsKGNzaTJkYywgQ1NJMkRDX1ZQQ0ZHLCB2cCk7DQo+PiArICAgICBjc2kyZGNfd3JpdGVs KGNzaTJkYywgQ1NJMkRDX1ZQRSwgQ1NJMkRDX1ZQRV9FTkFCTEUpOw0KPj4gKyAgICAgY3NpMmRj X3dyaXRlbChjc2kyZGMsIENTSTJEQ19QVSwgQ1NJMkRDX1BVX1ZQKTsNCj4+ICt9DQo+PiArDQo+ PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjX3NkX3RvX2NzaTJk Y19kZXZpY2UNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVj dCB2NGwyX3N1YmRldiAqY3NpMmRjX3NkKQ0KPiANCj4gSSdkIHN1Z2dlc3Qgd3JhcHBpbmcgYWZ0 ZXIgdGhlIGFzdGVyaXNrLg0KPiANCj4+ICt7DQo+PiArICAgICByZXR1cm4gY29udGFpbmVyX29m KGNzaTJkY19zZCwgc3RydWN0IGNzaTJkY19kZXZpY2UsIGNzaTJkY19zZCk7DQo+PiArfQ0KPj4g Kw0KPj4gK3N0YXRpYyBpbnQgY3NpMmRjX2VudW1fbWJ1c19jb2RlKHN0cnVjdCB2NGwyX3N1YmRl diAqY3NpMmRjX3NkLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2 NGwyX3N1YmRldl9wYWRfY29uZmlnICpjZmcsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X21idXNfY29kZV9lbnVtICpjb2RlKQ0KPj4gK3sNCj4+ ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBjc2kyZGNfc2RfdG9fY3NpMmRj X2RldmljZShjc2kyZGNfc2QpOw0KPj4gKw0KPj4gKyAgICAgaWYgKGNvZGUtPmluZGV4ID49IGNz aTJkYy0+bnVtX2ZtdHMpDQo+PiArICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4gKw0K Pj4gKyAgICAgY29kZS0+Y29kZSA9IGNzaTJkYy0+Zm9ybWF0c1tjb2RlLT5pbmRleF0tPm1idXNf Y29kZTsNCj4+ICsgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGNz aTJkY190cnlfZm10KHN0cnVjdCB2NGwyX3N1YmRldiAqY3NpMmRjX3NkLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X3BhZF9jb25maWcgKmNmZywNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9mb3JtYXQgKnJlcV9mbXQp DQo+PiArew0KPj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9IGNzaTJkY19z ZF90b19jc2kyZGNfZGV2aWNlKGNzaTJkY19zZCk7DQo+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2Zv cm1hdCAqZm10Ow0KPj4gKw0KPj4gKyAgICAgaWYgKCFjc2kyZGMtPmNvbXBsZXRlZCkgew0KPj4g KyAgICAgICAgICAgICBkZXZfZGJnKChjc2kyZGMpLT5kZXYsICJzdWJkZXYgbm90IHJlZ2lzdGVy ZWQgeWV0XG4iKTsNCj4gDQo+IFVoLi4uIGJ1dCBjYW4geW91IGVuZCB1cCBoZXJlPw0KDQpZZXMs IGlmIHRoZSBzdWJkZXZpY2UgaGFzIG5vdCB5ZXQgcmVnaXN0ZXJlZC4NClRoZSBDU0kyREMgcmVn aXN0ZXJzIGFzIGEgc3ViZGV2aWNlIGZvciB0aGUgbmV4dCBlbGVtZW50IGluIHBpcGVsaW5lIA0K cmVnYXJkbGVzcyBvZiBpdCdzIG93biBzdWJkZXZpY2UuDQpJIGVuY291bnRlcmVkIGlzc3VlcyB3 aGVuIHRyeWluZyB0byByZWdpc3RlciB0aGUgY3NpMmRjIGF0IGEgbGF0ZXIgcG9pbnQgDQp0aGFu IHByb2JlIHRpbWUgKGF0IHRoZSBtb21lbnQgb2YgaXQncyBvd24gY29tcGxldGlvbiB3aGVuIHRo ZSBzdWJkZXYgaXMgDQpyZWFkeSkuDQpEbyB5b3UgdGhpbmsgSSBuZWVkIHRvIGNoYW5nZSAsIGFu ZCBoYXZlIGNzaTJkYyByZWdpc3RlcnMgaXRzZWxmIGZvciB0aGUgDQpuZXh0IGVsZW1lbnQgYXQg YSBsYXRlciBwb2ludCA/DQoNCj4gDQo+PiArICAgICAgICAgICAgIHJldHVybiAwOw0KPj4gKyAg ICAgfQ0KPj4gKw0KPj4gKyAgICAgZm9yIChmbXQgPSBjc2kyZGMtPmZvcm1hdHNbMF07IGZtdDsg Zm10KyspDQo+PiArICAgICAgICAgICAgIGlmIChyZXFfZm10LT5mb3JtYXQuY29kZSA9PSBmbXQt Pm1idXNfY29kZSkNCj4+ICsgICAgICAgICAgICAgICAgICAgICBjc2kyZGMtPnRyeV9mbXQgPSBm bXQ7DQo+PiArDQo+PiArICAgICAvKiBpbiBjYXNlIHdlIGNvdWxkIG5vdCBmaW5kIHRoZSBkZXNp cmVkIGZvcm1hdCwgZGVmYXVsdCB0byBzb21ldGhpbmcgKi8NCj4+ICsgICAgIGlmICghY3NpMmRj LT50cnlfZm10ICB8fA0KPj4gKyAgICAgICAgIHJlcV9mbXQtPmZvcm1hdC5jb2RlICE9IGNzaTJk Yy0+dHJ5X2ZtdC0+bWJ1c19jb2RlKSB7DQo+PiArICAgICAgICAgICAgIGNzaTJkYy0+dHJ5X2Zt dCA9IGNzaTJkYy0+Zm9ybWF0c1swXTsNCj4+ICsgICAgICAgICAgICAgcmVxX2ZtdC0+Zm9ybWF0 LmNvZGUgPSBjc2kyZGMtPmZvcm1hdHNbMF0tPm1idXNfY29kZTsNCj4+ICsgICAgIH0NCj4+ICsN Cj4+ICsgICAgIHJldHVybiB2NGwyX3N1YmRldl9jYWxsKGNzaTJkYy0+aW5wdXRfc2QsIHBhZCwg c2V0X2ZtdCwgY2ZnLCByZXFfZm10KTsNCj4gDQo+IEZvciBNQy1lbmFibGVkIGRyaXZlcnMgKGku ZS4gYWxzbyB0aG9zZSBleHBvc2luZyBzdWItZGV2aWNlIG5vZGVzKSB0aGUNCj4gZm9ybWF0cyBh cmUgc2V0IChhbmQgYWxzbyBlbnVtZXJhdGVkKSBieSB0aGUgdXNlciBhbmQgdmFsaWRhdGVkIGJ5 IHRoZQ0KPiBkcml2ZXIuIFNlZSBlLmcuIGlwdTMtY2lvMiBkcml2ZXIgZm9yIGFuIGV4YW1wbGUu IEl0IGFsc28gaW5jbHVkZXMgRE1BLg0KDQpUbyBmdWxseSB1bmRlcnN0YW5kLCBJIGRvIG5vdCBu ZWVkIHRvIG1ha2UgYSBzdWJkZXYgY2FsbCA/IEp1c3QgdmFsaWRhdGUgDQpvciBpbnZhbGlkYXRl IHRoZSB0cnkgZm9ybWF0ID8NCg0KPiANCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjc2ky ZGNfc2V0X2ZtdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNzaTJkY19zZCwNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9wYWRfY29uZmlnICpjZmcsDQo+PiArICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpyZXFfZm10KQ0K Pj4gK3sNCj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBjc2kyZGNfc2Rf dG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0KPj4gKyAgICAgaW50IHJldDsNCj4+ICsNCj4+ ICsgICAgIGlmICghY3NpMmRjLT5jb21wbGV0ZWQpIHsNCj4+ICsgICAgICAgICAgICAgZGV2X2Ri ZygoY3NpMmRjKS0+ZGV2LCAic3ViZGV2IG5vdCByZWdpc3RlcmVkIHlldFxuIik7DQo+PiArICAg ICAgICAgICAgIHJldHVybiAwOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgY3NpMmRjX3Ry eV9mbXQoY3NpMmRjX3NkLCBjZmcsIHJlcV9mbXQpOw0KPj4gKw0KPj4gKyAgICAgaWYgKGNzaTJk Yy0+dHJ5X2ZtdC0+bWJ1c19jb2RlICE9IHJlcV9mbXQtPmZvcm1hdC5jb2RlKSB7DQo+PiArICAg ICAgICAgICAgIGRldl9kYmcoY3NpMmRjLT5kZXYsICJDU0kyREMgdW5zdXBwb3J0ZWQgZm9ybWF0 IDB4JXhcbiIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgcmVxX2ZtdC0+Zm9ybWF0LmNvZGUp Ow0KPj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ ICsgICAgIHJldCA9IHY0bDJfc3ViZGV2X2NhbGwoY3NpMmRjLT5pbnB1dF9zZCwgcGFkLCBzZXRf Zm10LCBjZmcsIHJlcV9mbXQpOw0KPj4gKyAgICAgaWYgKHJldCkgew0KPj4gKyAgICAgICAgICAg ICBkZXZfZXJyKGNzaTJkYy0+ZGV2LCAiaW5wdXQgc3ViZGV2IGZhaWxlZCAlZFxuIiwgcmV0KTsN Cj4+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAg IGNzaTJkYy0+Y3VyX2ZtdCA9IGNzaTJkYy0+dHJ5X2ZtdDsNCj4+ICsgICAgIC8qIHVwZGF0ZSB2 aWRlbyBwaXBlICovDQo+PiArICAgICBjc2kyZGNfdnBfdXBkYXRlKGNzaTJkYyk7DQo+PiArDQo+ PiArICAgICBkZXZfZGJnKGNzaTJkYy0+ZGV2LCAiQ1NJMkRDIG5ldyBmb3JtYXQ6IDB4JXhcbiIs IHJlcV9mbXQtPmZvcm1hdC5jb2RlKTsNCj4+ICsgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgaW50IGNzaTJkY19mb3JtYXRzX2luaXQoc3RydWN0IGNzaTJkY19kZXZpY2Ug KmNzaTJkYykNCj4+ICt7DQo+PiArICAgICBpbnQgaSwgajsNCj4+ICsgICAgIHN0cnVjdCBjc2ky ZGNfZm9ybWF0ICpmbXQgPSAmY3NpMmRjX2Zvcm1hdHNfbGlzdFswXTsNCj4+ICsNCj4+ICsgICAg IGNzaTJkYy0+bnVtX2ZtdHMgPSAxOw0KPj4gKw0KPj4gKyAgICAgY3NpMmRjLT5mb3JtYXRzID0g ZGV2bV9rY2FsbG9jKGNzaTJkYy0+ZGV2LCBjc2kyZGMtPm51bV9mbXRzLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigqY3NpMmRjLT5mb3JtYXRzKSwgR0ZQ X0tFUk5FTCk7DQo+PiArDQo+PiArICAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IEFSUkFZX1NJ WkUoY3NpMmRjX2Zvcm1hdHNfbGlzdCk7IGkrKywgZm10KyspDQo+PiArICAgICAgICAgICAgIGlm IChmbXQtPm1idXNfY29kZSA9PSBNRURJQV9CVVNfRk1UX1NSR0dCMTBfMVgxMCkNCj4+ICsgICAg ICAgICAgICAgICAgICAgICBjc2kyZGMtPmZvcm1hdHNbaisrXSA9IGZtdDsNCj4+ICsgICAgIHJl dHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGNzaTJkY19zX3Bvd2VyKHN0cnVj dCB2NGwyX3N1YmRldiAqY3NpMmRjX3NkLCBpbnQgb24pDQo+IA0KPiBQbGVhc2UgdXNlIHJ1bnRp bWUgUE0gaW5zdGVhZC4NCg0KQW5kIGluIHRoaXMgY2FzZSwgc19wb3dlciBvbi9vZmYgd2lsbCBi ZSB1bnVzZWQ/DQpUaGUgcnVudGltZSBQTSB3aWxsIHBvd2VyIG9uIHRoZSBwaXBlbGluZSB3aGVu IGNhcHR1cmUgaXMgcmVxdWlyZWQgb3IgaXQgDQp3aWxsIGhhdmUgaXQgcG93ZXJlZCBvbiBtb3Jl IHRoYW4gdGhhdCA/DQpDdXJyZW50bHkgaW4gbXkgZXhwZXJpbWVudHMgd2hlbiBzdG9wcGluZyB0 aGUgc3RyZWFtaW5nLCBzX3Bvd2VyIG9mZiBpcyANCmFsc28gY2FsbGVkIGFmdGVyd2FyZHMsIGFu ZCB0aGUgQ1NJMkRDIGNhbiBiZSByZXNldCwgYXMgdGhlIE1JUEkgbGFuZXMgDQptdXN0IHJlYWNo IGEgc3RvcCBzdGF0ZSB0byByZWluaXRpYWxpemUgY2FwdHVyZSBsYXRlci4NCg0KPiANCj4+ICt7 DQo+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjID0gY3NpMmRjX3NkX3RvX2Nz aTJkY19kZXZpY2UoY3NpMmRjX3NkKTsNCj4+ICsgICAgIGludCByZXQgPSAwOw0KPj4gKw0KPj4g KyAgICAgaWYgKCFjc2kyZGMtPmNvbXBsZXRlZCkgew0KPj4gKyAgICAgICAgICAgICBkZXZfZGJn KChjc2kyZGMpLT5kZXYsICJzdWJkZXYgbm90IHJlZ2lzdGVyZWQgeWV0XG4iKTsNCj4+ICsgICAg ICAgICAgICAgcmV0dXJuIDA7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICBpZiAob24pDQo+ PiArICAgICAgICAgICAgIHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShjc2kyZGMtPnNjY2spOw0K Pj4gKyAgICAgZWxzZQ0KPj4gKyAgICAgICAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoY3Np MmRjLT5zY2NrKTsNCj4+ICsgICAgIGlmIChyZXQpDQo+PiArICAgICAgICAgICAgIGRldl9lcnIo Y3NpMmRjLT5kZXYsICJmYWlsZWQgdG8gZW5hYmxlIHNjY2s6ICVkXG4iLCByZXQpOw0KPj4gKw0K Pj4gKyAgICAgLyogaWYgcG93ZXJpbmcgdXAsIGRlYXNzZXJ0IHJlc2V0IGxpbmUgKi8NCj4+ICsg ICAgIGlmIChvbikNCj4+ICsgICAgICAgICAgICAgY3NpMmRjX3dyaXRlbChjc2kyZGMsIENTSTJE Q19HQ1RMUiwgQ1NJMkRDX0dDVExSX1NXUlNUKTsNCj4+ICsNCj4+ICsgICAgIHJldCA9IHY0bDJf c3ViZGV2X2NhbGwoY3NpMmRjLT5pbnB1dF9zZCwgY29yZSwgc19wb3dlciwgb24pOw0KPj4gKw0K Pj4gKyAgICAgLyogaWYgcG93ZXJpbmcgZG93biwgYXNzZXJ0IHJlc2V0IGxpbmUgKi8NCj4+ICsg ICAgIGlmICghb24pDQo+PiArICAgICAgICAgICAgIGNzaTJkY193cml0ZWwoY3NpMmRjLCBDU0ky RENfR0NUTFIsICFDU0kyRENfR0NUTFJfU1dSU1QpOw0KPj4gKw0KPj4gKyAgICAgcmV0dXJuIHJl dDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfc19zdHJlYW0oc3RydWN0IHY0 bDJfc3ViZGV2ICpjc2kyZGNfc2QsIGludCBlbmFibGUpDQo+PiArew0KPj4gKyAgICAgc3RydWN0 IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9IGNzaTJkY19zZF90b19jc2kyZGNfZGV2aWNlKGNzaTJk Y19zZCk7DQo+PiArDQo+PiArICAgICBpZiAoIWNzaTJkYy0+Y29tcGxldGVkKSB7DQo+PiArICAg ICAgICAgICAgIGRldl9kYmcoKGNzaTJkYyktPmRldiwgInN1YmRldiBub3QgcmVnaXN0ZXJlZCB5 ZXRcbiIpOw0KPj4gKyAgICAgICAgICAgICByZXR1cm4gMDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ ICsgICAgIHJldHVybiB2NGwyX3N1YmRldl9jYWxsKGNzaTJkYy0+aW5wdXRfc2QsIHZpZGVvLCBz X3N0cmVhbSwgZW5hYmxlKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfZ19m cmFtZV9pbnRlcnZhbChzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNzaTJkY19zZCwNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2NGwyX3N1YmRldl9mcmFtZV9pbnRlcnZh bCAqaW50ZXJ2YWwpDQo+PiArew0KPj4gKyAgICAgc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJk YyA9IGNzaTJkY19zZF90b19jc2kyZGNfZGV2aWNlKGNzaTJkY19zZCk7DQo+PiArDQo+PiArICAg ICBpZiAoIWNzaTJkYy0+Y29tcGxldGVkKSB7DQo+PiArICAgICAgICAgICAgIGRldl9kYmcoKGNz aTJkYyktPmRldiwgInN1YmRldiBub3QgcmVnaXN0ZXJlZCB5ZXRcbiIpOw0KPj4gKyAgICAgICAg ICAgICByZXR1cm4gMDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIHJldHVybiB2NGwyX3N1 YmRldl9jYWxsKGNzaTJkYy0+aW5wdXRfc2QsIHZpZGVvLCBnX2ZyYW1lX2ludGVydmFsLA0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJ2YWwpOw0KPj4gK30NCj4+ICsNCj4+ ICtzdGF0aWMgaW50IGNzaTJkY19zX2ZyYW1lX2ludGVydmFsKHN0cnVjdCB2NGwyX3N1YmRldiAq Y3NpMmRjX3NkLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0 bDJfc3ViZGV2X2ZyYW1lX2ludGVydmFsICppbnRlcnZhbCkNCj4+ICt7DQo+PiArICAgICBzdHJ1 Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjID0gY3NpMmRjX3NkX3RvX2NzaTJkY19kZXZpY2UoY3Np MmRjX3NkKTsNCj4+ICsNCj4+ICsgICAgIGlmICghY3NpMmRjLT5jb21wbGV0ZWQpIHsNCj4+ICsg ICAgICAgICAgICAgZGV2X2RiZygoY3NpMmRjKS0+ZGV2LCAic3ViZGV2IG5vdCByZWdpc3RlcmVk IHlldFxuIik7DQo+PiArICAgICAgICAgICAgIHJldHVybiAwOw0KPj4gKyAgICAgfQ0KPj4gKw0K Pj4gKyAgICAgcmV0dXJuIHY0bDJfc3ViZGV2X2NhbGwoY3NpMmRjLT5pbnB1dF9zZCwgdmlkZW8s IHNfZnJhbWVfaW50ZXJ2YWwsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRl cnZhbCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgY3NpMmRjX2VudW1fZnJhbWVfc2l6 ZShzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNzaTJkY19zZCwNCj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X3BhZF9jb25maWcgKmNmZywNCj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X2ZyYW1lX3NpemVf ZW51bSAqZnNlKQ0KPj4gK3sNCj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMg PSBjc2kyZGNfc2RfdG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0KPj4gKw0KPj4gKyAgICAg aWYgKCFjc2kyZGMtPmNvbXBsZXRlZCkgew0KPj4gKyAgICAgICAgICAgICBkZXZfZGJnKChjc2ky ZGMpLT5kZXYsICJzdWJkZXYgbm90IHJlZ2lzdGVyZWQgeWV0XG4iKTsNCj4+ICsgICAgICAgICAg ICAgcmV0dXJuIDA7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICByZXR1cm4gdjRsMl9zdWJk ZXZfY2FsbChjc2kyZGMtPmlucHV0X3NkLCBwYWQsIGVudW1fZnJhbWVfc2l6ZSwgY2ZnLA0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnNlKTsNCj4+ICt9DQo+PiArDQo+PiArc3Rh dGljIGludCBjc2kyZGNfZW51bV9mcmFtZV9pbnRlcnZhbChzdHJ1Y3QgdjRsMl9zdWJkZXYgKmNz aTJkY19zZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB2 NGwyX3N1YmRldl9wYWRfY29uZmlnICpjZmcsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZnJhbWVfaW50ZXJ2YWxfZW51bSAqZmllKQ0K Pj4gK3sNCj4+ICsgICAgIHN0cnVjdCBjc2kyZGNfZGV2aWNlICpjc2kyZGMgPSBjc2kyZGNfc2Rf dG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0KPj4gKw0KPj4gKyAgICAgaWYgKCFjc2kyZGMt PmNvbXBsZXRlZCkgew0KPj4gKyAgICAgICAgICAgICBkZXZfZGJnKChjc2kyZGMpLT5kZXYsICJz dWJkZXYgbm90IHJlZ2lzdGVyZWQgeWV0XG4iKTsNCj4+ICsgICAgICAgICAgICAgcmV0dXJuIDA7 DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICByZXR1cm4gdjRsMl9zdWJkZXZfY2FsbChjc2ky ZGMtPmlucHV0X3NkLCBwYWQsIGVudW1fZnJhbWVfaW50ZXJ2YWwsIGNmZywNCj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGZpZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1 Y3QgdjRsMl9zdWJkZXZfY29yZV9vcHMgY3NpMmRjX2NvcmVfb3BzID0gew0KPj4gKyAgICAgLnNf cG93ZXIgPSBjc2kyZGNfc19wb3dlciwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3Qg djRsMl9zdWJkZXZfcGFkX29wcyBjc2kyZGNfcGFkX29wcyA9IHsNCj4+ICsgICAgIC5lbnVtX21i dXNfY29kZSA9IGNzaTJkY19lbnVtX21idXNfY29kZSwNCj4+ICsgICAgIC5zZXRfZm10ID0gY3Np MmRjX3NldF9mbXQsDQo+PiArICAgICAuZW51bV9mcmFtZV9zaXplID0gY3NpMmRjX2VudW1fZnJh bWVfc2l6ZSwNCj4+ICsgICAgIC5lbnVtX2ZyYW1lX2ludGVydmFsID0gY3NpMmRjX2VudW1fZnJh bWVfaW50ZXJ2YWwsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0IHY0bDJfc3ViZGV2 X3ZpZGVvX29wcyBjc2kyZGNfdmlkZW9fb3BzID0gew0KPj4gKyAgICAgLnNfc3RyZWFtID0gY3Np MmRjX3Nfc3RyZWFtLA0KPj4gKyAgICAgLmdfZnJhbWVfaW50ZXJ2YWwgPSBjc2kyZGNfZ19mcmFt ZV9pbnRlcnZhbCwNCj4+ICsgICAgIC5zX2ZyYW1lX2ludGVydmFsID0gY3NpMmRjX3NfZnJhbWVf aW50ZXJ2YWwsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0IHY0bDJfc3ViZGV2X29w cyBjc2kyZGNfc3ViZGV2X29wcyA9IHsNCj4+ICsgICAgIC5jb3JlID0gJmNzaTJkY19jb3JlX29w cywNCj4+ICsgICAgIC5wYWQgPSAmY3NpMmRjX3BhZF9vcHMsDQo+PiArICAgICAudmlkZW8gPSAm Y3NpMmRjX3ZpZGVvX29wcywNCj4+ICt9Ow0KPiANCj4gY29uc3QuIEFwcGxpZXMgdG8gYWxsIGFi b3ZlLg0KPiANCj4+ICsNCj4+ICtzdGF0aWMgaW50IGNzaTJkY19hc3luY19ib3VuZChzdHJ1Y3Qg djRsMl9hc3luY19ub3RpZmllciAqbm90aWZpZXIsDQo+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHY0bDJfc3ViZGV2ICpzdWJkZXYsDQo+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RydWN0IHY0bDJfYXN5bmNfc3ViZGV2ICphc2QpDQo+PiArew0KPj4gKyAgICAg c3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYyA9IGNvbnRhaW5lcl9vZihub3RpZmllci0+djRs Ml9kZXYsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBj c2kyZGNfZGV2aWNlLCB2NGwyX2Rldik7DQo+PiArICAgICBjc2kyZGMtPmlucHV0X3NkID0gc3Vi ZGV2Ow0KPj4gKw0KPj4gKyAgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBp bnQgY3NpMmRjX2FzeW5jX2NvbXBsZXRlKHN0cnVjdCB2NGwyX2FzeW5jX25vdGlmaWVyICpub3Rp ZmllcikNCj4+ICt7DQo+PiArICAgICBzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjID0gY29u dGFpbmVyX29mKG5vdGlmaWVyLT52NGwyX2RldiwNCj4gDQo+IEl0J2QgYmUgY2xlYW5lciB0byB3 cmFwIGFmdGVyICI9Ii4gT3IgYWxpZ24gdGhlIGxpbmVzIGJlbG93IGFmdGVyICIoIi4NCj4gDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjc2kyZGNfZGV2 aWNlLCB2NGwyX2Rldik7DQo+PiArICAgICBpbnQgcmV0Ow0KPj4gKw0KPj4gKyAgICAgcmV0ID0g djRsMl9kZXZpY2VfcmVnaXN0ZXJfc3ViZGV2X25vZGVzKCZjc2kyZGMtPnY0bDJfZGV2KTsNCj4+ ICsgICAgIGlmIChyZXQgPCAwKSB7DQo+PiArICAgICAgICAgICAgIHY0bDJfZXJyKCZjc2kyZGMt PnY0bDJfZGV2LCAiZmFpbGVkIHRvIHJlZ2lzdGVyIHN1YmRldiBub2Rlc1xuIik7DQo+PiArICAg ICAgICAgICAgIHJldHVybiByZXQ7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICBjc2kyZGNf d3JpdGVsKGNzaTJkYywgQ1NJMkRDX0dDRkcsDQo+PiArICAgICAgICAgICAgICAgICAgIChDU0ky RENfR0NGR19ITEMoY3NpMmRjLT5pbnRlcl9saW5lX2RlbGF5KSAmDQo+PiArICAgICAgICAgICAg ICAgICAgIENTSTJEQ19HQ0ZHX0hMQ19NQVNLKSB8DQo+PiArICAgICAgICAgICAgICAgICAgIChj c2kyZGMtPmNsa19nYXRlZCA/IDAgOiBDU0kyRENfR0NGR19NSVBJRlJOKSk7DQo+PiArDQo+PiAr ICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRDX1ZQQ09MLA0KPj4gKyAgICAgICAgICAg ICAgICAgICBDU0kyRENfVlBDT0xfQ09MKDB4RkZGKSAmIENTSTJEQ19WUENPTF9DT0xfTUFTSyk7 DQo+PiArICAgICBjc2kyZGNfd3JpdGVsKGNzaTJkYywgQ1NJMkRDX1ZQUk9XLA0KPj4gKyAgICAg ICAgICAgICAgICAgICBDU0kyRENfVlBST1dfUk9XKDB4RkZGKSAmIENTSTJEQ19WUFJPV19ST1df TUFTSyk7DQo+PiArDQo+PiArICAgICBjc2kyZGMtPmNvbXBsZXRlZCA9IHRydWU7DQo+PiArDQo+ PiArICAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IHY0bDJfYXN5bmNfbm90aWZpZXJfb3BlcmF0aW9ucyBjc2kyZGNfYXN5bmNfb3BzID0gew0KPj4g KyAgICAgLmJvdW5kID0gY3NpMmRjX2FzeW5jX2JvdW5kLA0KPj4gKyAgICAgLmNvbXBsZXRlID0g Y3NpMmRjX2FzeW5jX2NvbXBsZXRlLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIHZvaWQgY3Np MmRjX2NsZWFudXBfbm90aWZpZXIoc3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYykNCj4+ICt7 DQo+PiArICAgICB2NGwyX2FzeW5jX25vdGlmaWVyX3VucmVnaXN0ZXIoJmNzaTJkYy0+bm90aWZp ZXIpOw0KPj4gKyAgICAgdjRsMl9hc3luY19ub3RpZmllcl9jbGVhbnVwKCZjc2kyZGMtPm5vdGlm aWVyKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfcHJlcGFyZV9ub3RpZmll cihzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3NpMmRjLA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IGRldmljZV9ub2RlICppbnB1dF9wYXJlbnQpDQo+PiArew0KPj4g KyAgICAgaW50IHJldDsNCj4+ICsNCj4+ICsgICAgIHY0bDJfYXN5bmNfbm90aWZpZXJfaW5pdCgm Y3NpMmRjLT5ub3RpZmllcik7DQo+PiArDQo+PiArICAgICBjc2kyZGMtPmFzZCA9IGt6YWxsb2Mo c2l6ZW9mKCpjc2kyZGMtPmFzZCksIEdGUF9LRVJORUwpOw0KPj4gKyAgICAgaWYgKCFjc2kyZGMt PmFzZCkNCj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+PiArDQo+PiArICAgICBj c2kyZGMtPmFzZC0+bWF0Y2hfdHlwZSA9IFY0TDJfQVNZTkNfTUFUQ0hfRldOT0RFOw0KPj4gKyAg ICAgY3NpMmRjLT5hc2QtPm1hdGNoLmZ3bm9kZSA9IG9mX2Z3bm9kZV9oYW5kbGUoaW5wdXRfcGFy ZW50KTsNCj4+ICsNCj4+ICsgICAgIHJldCA9IHY0bDJfYXN5bmNfbm90aWZpZXJfYWRkX3N1YmRl digmY3NpMmRjLT5ub3RpZmllciwgY3NpMmRjLT5hc2QpOw0KPj4gKyAgICAgaWYgKHJldCkgew0K Pj4gKyAgICAgICAgICAgICBkZXZfZXJyKGNzaTJkYy0+ZGV2LCAiZmFpbGVkIHRvIGFkZCBhc3lu YyBub3RpZmllci5cbiIpOw0KPj4gKyAgICAgICAgICAgICB2NGwyX2FzeW5jX25vdGlmaWVyX2Ns ZWFudXAoJmNzaTJkYy0+bm90aWZpZXIpOw0KPj4gKyAgICAgICAgICAgICBnb3RvIGNzaTJkY19w cmVwYXJlX25vdGlmaWVyX2VycjsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIGNzaTJkYy0+ bm90aWZpZXIub3BzID0gJmNzaTJkY19hc3luY19vcHM7DQo+PiArDQo+PiArICAgICByZXQgPSB2 NGwyX2FzeW5jX25vdGlmaWVyX3JlZ2lzdGVyKCZjc2kyZGMtPnY0bDJfZGV2LA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3NpMmRjLT5ub3RpZmllcik7DQo+ PiArDQo+PiArICAgICBpZiAocmV0KSB7DQo+PiArICAgICAgICAgICAgIGRldl9lcnIoY3NpMmRj LT5kZXYsICJmYWlsIHRvIHJlZ2lzdGVyIGFzeW5jIG5vdGlmaWVyLlxuIik7DQo+PiArICAgICAg ICAgICAgIGdvdG8gY3NpMmRjX3ByZXBhcmVfbm90aWZpZXJfZXJyOw0KPj4gKyAgICAgfQ0KPj4g Kw0KPj4gK2NzaTJkY19wcmVwYXJlX25vdGlmaWVyX2VycjoNCj4+ICsgICAgIG9mX25vZGVfcHV0 KGlucHV0X3BhcmVudCk7DQo+PiArDQo+PiArICAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgaW50IGNzaTJkY19vZl9wYXJzZShzdHJ1Y3QgY3NpMmRjX2RldmljZSAqY3Np MmRjLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqb2Zf bm9kZSkNCj4+ICt7DQo+PiArICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKmlucHV0X25vZGUsICpz aW5rX25vZGUsICppbnB1dF9wYXJlbnQ7DQo+PiArICAgICBzdHJ1Y3QgdjRsMl9md25vZGVfZW5k cG9pbnQgaW5wdXRfZW5kcG9pbnQsIHNpbmtfZW5kcG9pbnQ7DQo+PiArICAgICBpbnQgcmV0Ow0K Pj4gKw0KPj4gKyAgICAgbWVtc2V0KCZpbnB1dF9lbmRwb2ludCwgMCwgc2l6ZW9mKGlucHV0X2Vu ZHBvaW50KSk7DQo+PiArICAgICBtZW1zZXQoJnNpbmtfZW5kcG9pbnQsIDAsIHNpemVvZihzaW5r X2VuZHBvaW50KSk7DQo+IA0KPiBDb3VsZCB5b3UgYXNzaWduIGEgZmllbGQgdG8gMCBpbiB0aGUg ZGVjbGFyYXRpb24gaW5zdGVhZD8NCj4gDQo+IFlvdSBzaG91bGQgYWxzbyBzZXQgdGhlIGJ1cyB0 eXBlIGFzIEkgYmVsaWV2ZSB0aGUgZHJpdmVyIHN1cHBvcnRzIGEgc2luZ2xlDQo+IG9uZSBhdCBi b3RoIGVuZHBvaW50cy4NCg0KSSB0aG91Z2h0IGFib3V0IHRoYXQsIGJ1dCBvbiB0aGUgaW5wdXQg cGFkLCB3aGF0IGJ1cyB0eXBlIEkgY2FuIHVzZSA/IA0KU3lub3BzeXMgSURJIGlzIG5vdCBhdmFp bGFibGUgaW4ga2VybmVsLg0KDQo+IA0KPiBZb3UgY291bGQgYWxzbyB1c2UgdGhlIGZ3bm9kZSBw cm9wZXJ0eSBBUEkgaW5zdGVhZCBzbyB5b3UgY291bGQgYXZvaWQNCj4gb2ZfZndub2RlX2hhbmRs ZSgpIC0tLSB1cCB0byB5b3UuDQo+IA0KPj4gKw0KPj4gKyAgICAgaW5wdXRfbm9kZSA9IG9mX2dy YXBoX2dldF9uZXh0X2VuZHBvaW50KG9mX25vZGUsIE5VTEwpOw0KPj4gKw0KPj4gKyAgICAgaWYg KCFpbnB1dF9ub2RlKSB7DQo+PiArICAgICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsICJt aXNzaW5nIHBvcnQgbm9kZSBhdCAlcywgaW5wdXQgbm9kZSBpcyBtYW5kYXRvcnkuXG4iLA0KPj4g KyAgICAgICAgICAgICAgICAgICAgIG9mX25vZGUtPmZ1bGxfbmFtZSk7DQo+PiArICAgICAgICAg ICAgIHJldHVybiAtRUlOVkFMOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgcmV0ID0gdjRs Ml9md25vZGVfZW5kcG9pbnRfcGFyc2Uob2ZfZndub2RlX2hhbmRsZShpbnB1dF9ub2RlKSwNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnB1dF9lbmRwb2ludCk7 DQo+PiArDQo+PiArICAgICBpZiAocmV0KSB7DQo+PiArICAgICAgICAgICAgIGRldl9lcnIoY3Np MmRjLT5kZXYsICJlbmRwb2ludCBub3QgZGVmaW5lZCBhdCAlc1xuIiwNCj4+ICsgICAgICAgICAg ICAgICAgICAgICBvZl9ub2RlLT5mdWxsX25hbWUpOw0KPj4gKyAgICAgICAgICAgICByZXR1cm4g cmV0Ow0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgaW5wdXRfcGFyZW50ID0gb2ZfZ3JhcGhf Z2V0X3JlbW90ZV9wb3J0X3BhcmVudChpbnB1dF9ub2RlKTsNCj4+ICsgICAgIGlmICghaW5wdXRf cGFyZW50KSB7DQo+PiArICAgICAgICAgICAgIGRldl9lcnIoY3NpMmRjLT5kZXYsICJjb3VsZCBu b3QgZ2V0IGlucHV0IG5vZGUncyBwYXJlbnQgbm9kZS5cbiIpOw0KPj4gKyAgICAgICAgICAgICBy ZXR1cm4gLUVJTlZBTDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIHNpbmtfbm9kZSA9IG9m X2dyYXBoX2dldF9uZXh0X2VuZHBvaW50KG9mX25vZGUsIGlucHV0X25vZGUpOw0KPiANCj4gWW91 J2xsIG5lZWQgdG8gb2J0YWluIHRoZSBlbmRwb2ludHMgYnkgcG9ydCBoZXJlIChhbmQgYWJvdmUs IHRvbykuDQoNCkkgb2J0YWluIHRoZW0gaW4gdGhlIG9yZGVyIGluIHRoZSBkZXZpY2UgdHJlZSwg b25lIGJ5IG9uZS4gWW91IHN1Z2dlc3QgDQp0byB1c2UgYSBkaWZmZXJlbnQgQVBJIHN1Y2ggdGhh dCB0aGV5IGFyZSBvYnRhaW5lZCBieSBwb3J0IG51bWJlciA/DQoNCj4gDQo+PiArDQo+PiArICAg ICBpZiAoc2lua19ub2RlKQ0KPj4gKyAgICAgICAgICAgICByZXQgPSB2NGwyX2Z3bm9kZV9lbmRw b2ludF9wYXJzZShvZl9md25vZGVfaGFuZGxlKHNpbmtfbm9kZSksDQo+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaW5rX2VuZHBvaW50KTsNCj4+ICsN Cj4+ICsgICAgIGlmICghc2lua19ub2RlIHx8IHJldCkgew0KPj4gKyAgICAgICAgICAgICBkZXZf aW5mbyhjc2kyZGMtPmRldiwgIm1pc3Npbmcgc2luayBub2RlIGF0ICVzLCBkYXRhIHBpcGUgYXZh aWxhYmxlIG9ubHkuXG4iLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICBvZl9ub2RlLT5mdWxs X25hbWUpOw0KPj4gKyAgICAgfSBlbHNlIHsNCj4+ICsgICAgICAgICAgICAgY3NpMmRjLT52aWRl b19waXBlID0gdHJ1ZTsNCj4+ICsgICAgICAgICAgICAgY3NpMmRjLT52YyA9IHNpbmtfZW5kcG9p bnQuYmFzZS5pZDsNCj4+ICsNCj4+ICsgICAgICAgICAgICAgZGV2X2RiZyhjc2kyZGMtPmRldiwg ImJsb2NrICVzICVkLiVkLT4lZC4lZCB2aWRlbyBwaXBlIFZDICVkXG4iLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgIG9mX25vZGUtPmZ1bGxfbmFtZSwgaW5wdXRfZW5kcG9pbnQuYmFzZS5wb3J0 LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgIGlucHV0X2VuZHBvaW50LmJhc2UuaWQsIHNpbmtf ZW5kcG9pbnQuYmFzZS5wb3J0LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgIHNpbmtfZW5kcG9p bnQuYmFzZS5pZCwgY3NpMmRjLT52Yyk7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICBjc2ky ZGMtPmNsa19nYXRlZCA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChvZl9ub2RlLA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvY2hpcCxjbGst Z2F0ZWQiKTsNCj4+ICsNCj4+ICsgICAgIGRldl9kYmcoY3NpMmRjLT5kZXYsICIlcyBjbG9ja1xu IiwNCj4+ICsgICAgICAgICAgICAgKGNzaTJkYy0+Y2xrX2dhdGVkID8gIkdhdGVkIiA6ICJGcmVl IHJ1bm5pbmciKSk7DQo+IA0KPiBFeHRyYSBwYXJlbnRoZXNlcy4NCj4gDQo+PiArDQo+PiArICAg ICByZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMihvZl9ub2RlLCAibWljcm9jaGlwLGludGVyLWxp bmUtZGVsYXkiLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNzaTJkYy0+ aW50ZXJfbGluZV9kZWxheSk7DQo+PiArDQo+PiArICAgICBpZiAocmV0IHx8IGNzaTJkYy0+aW50 ZXJfbGluZV9kZWxheSA+IDE2KSB7DQo+PiArICAgICAgICAgICAgIGRldl9kYmcoY3NpMmRjLT5k ZXYsICJhc3N1bWluZyBpbnRlciBsaW5lIGRlbGF5ID0gMTYgY2xvY2tzIik7DQo+PiArICAgICAg ICAgICAgIGNzaTJkYy0+aW50ZXJfbGluZV9kZWxheSA9IDE2Ow0KPj4gKyAgICAgICAgICAgICBy ZXQgPSAwOw0KPj4gKyAgICAgfQ0KPj4gKyAgICAgLyogaGFyZHdhcmUgYXV0b21hdGljYWxseSBh ZGRzIDEgKi8NCj4+ICsgICAgIGNzaTJkYy0+aW50ZXJfbGluZV9kZWxheS0tOw0KPiANCj4gV2hh dCBoYXBwZW5zIGlmIDAgd2FzIHJlYWQgZnJvbSBEVD8NCj4gDQo+PiArDQo+PiArICAgICAvKiBw cmVwYXJlIGFzeW5jIG5vdGlmaWVyIGZvciBzdWJkZXZpY2UgY29tcGxldGlvbiAqLw0KPj4gKw0K Pj4gKyAgICAgaWYgKHNpbmtfbm9kZSkNCj4+ICsgICAgICAgICAgICAgb2Zfbm9kZV9wdXQoc2lu a19ub2RlKTsNCj4gDQo+IG9mX25vZGVfcHV0KCkgaXMgTlVMTC1zYWZlLg0KPiANCj4+ICsgICAg IG9mX25vZGVfcHV0KGlucHV0X25vZGUpOw0KPj4gKw0KPj4gKyAgICAgcmV0dXJuIGNzaTJkY19w cmVwYXJlX25vdGlmaWVyKGNzaTJkYywgaW5wdXRfcGFyZW50KTsNCj4+ICt9DQo+PiArDQo+PiAr c3RhdGljIGludCBjc2kyZGNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4+ ICt7DQo+PiArICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Ow0KPj4gKyAgICAg c3RydWN0IGNzaTJkY19kZXZpY2UgKmNzaTJkYzsNCj4+ICsgICAgIHN0cnVjdCByZXNvdXJjZSAq cmVzID0gTlVMTDsNCj4+ICsgICAgIGludCByZXQgPSAwOw0KPj4gKw0KPj4gKyAgICAgY3NpMmRj ID0gZGV2bV9remFsbG9jKGRldiwgc2l6ZW9mKCpjc2kyZGMpLCBHRlBfS0VSTkVMKTsNCj4+ICsg ICAgIGlmICghY3NpMmRjKQ0KPj4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4+ICsN Cj4+ICsgICAgIGNzaTJkYy0+ZGV2ID0gZGV2Ow0KPj4gKw0KPj4gKyAgICAgcmVzID0gcGxhdGZv cm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsNCj4+ICsgICAgIGlmICgh cmVzKQ0KPj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsgICAgIGNz aTJkYy0+YmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7DQo+PiArDQo+PiAr ICAgICBpZiAoSVNfRVJSKGNzaTJkYy0+YmFzZSkpIHsNCj4+ICsgICAgICAgICAgICAgZGV2X2Vy cihkZXYsICJiYXNlIGFkZHJlc3Mgbm90IHNldFxuIik7DQo+PiArICAgICAgICAgICAgIHJldHVy biBQVFJfRVJSKGNzaTJkYy0+YmFzZSk7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICBjc2ky ZGMtPnBjbGsgPSBkZXZtX2Nsa19nZXQoZGV2LCAicGNsayIpOw0KPj4gKyAgICAgaWYgKElTX0VS Uihjc2kyZGMtPnBjbGspKSB7DQo+PiArICAgICAgICAgICAgIHJldCA9IFBUUl9FUlIoY3NpMmRj LT5wY2xrKTsNCj4+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IHBj bGs6ICVkXG4iLCByZXQpOw0KPj4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPj4gKyAgICAg fQ0KPj4gKw0KPj4gKyAgICAgcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKGNzaTJkYy0+cGNsayk7 DQo+PiArICAgICBpZiAocmV0KSB7DQo+PiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiZmFp bGVkIHRvIGVuYWJsZSBwY2xrOiAlZFxuIiwgcmV0KTsNCj4+ICsgICAgICAgICAgICAgcmV0dXJu IHJldDsNCj4+ICsgICAgIH0NCj4+ICsNCj4+ICsgICAgIGNzaTJkYy0+c2NjayA9IGRldm1fY2xr X2dldChkZXYsICJzY2NrIik7DQo+PiArICAgICBpZiAoSVNfRVJSKGNzaTJkYy0+c2NjaykpIHsN Cj4+ICsgICAgICAgICAgICAgcmV0ID0gUFRSX0VSUihjc2kyZGMtPnNjY2spOw0KPj4gKyAgICAg ICAgICAgICBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBnZXQgc2NjazogJWRcbiIsIHJldCk7DQo+ PiArICAgICAgICAgICAgIGdvdG8gY3NpMmRjX2Nsa19mYWlsOw0KPj4gKyAgICAgfQ0KPj4gKw0K Pj4gKyAgICAgcmV0ID0gdjRsMl9kZXZpY2VfcmVnaXN0ZXIoZGV2LCAmY3NpMmRjLT52NGwyX2Rl dik7DQo+PiArICAgICBpZiAocmV0KSB7DQo+PiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAi dW5hYmxlIHRvIHJlZ2lzdGVyIHY0bDIgZGV2aWNlLlxuIik7DQo+PiArICAgICAgICAgICAgIGdv dG8gY3NpMmRjX2Nsa19mYWlsOw0KPj4gKyAgICAgfQ0KPj4gKw0KPj4gKyAgICAgdjRsMl9zdWJk ZXZfaW5pdCgmY3NpMmRjLT5jc2kyZGNfc2QsICZjc2kyZGNfc3ViZGV2X29wcyk7DQo+PiArDQo+ PiArICAgICBjc2kyZGMtPmNzaTJkY19zZC5vd25lciA9IFRISVNfTU9EVUxFOw0KPj4gKw0KPiAN Cj4gTm8gbmVlZCBmb3IgYSBuZXdsaW5lLg0KPiANCj4+ICsgICAgIGNzaTJkYy0+Y3NpMmRjX3Nk LmRldiA9IGRldjsNCj4+ICsgICAgIHNucHJpbnRmKGNzaTJkYy0+Y3NpMmRjX3NkLm5hbWUsIHNp emVvZihjc2kyZGMtPmNzaTJkY19zZC5uYW1lKSwNCj4+ICsgICAgICAgICAgICAgICIlcy4lZCIs ICJDU0kyREMiLCAwKTsNCj4gDQo+IFRoZSBudW1iZXIgaXMgYWx3YXlzIHplcm8uDQo+IA0KPj4g Kw0KPj4gKyAgICAgY3NpMmRjLT5jc2kyZGNfc2QuZmxhZ3MgfD0gVjRMMl9TVUJERVZfRkxfSEFT X0RFVk5PREU7DQo+PiArICAgICBjc2kyZGMtPmNzaTJkY19zZC5lbnRpdHkuZnVuY3Rpb24gPSBN RURJQV9FTlRfRl9WSURfSUZfQlJJREdFOw0KPj4gKyAgICAgY3NpMmRjLT5wYWRzW0NTSTJEQ19Q QURfU0lOS10uZmxhZ3MgPSBNRURJQV9QQURfRkxfU0lOSzsNCj4+ICsgICAgIGNzaTJkYy0+cGFk c1tDU0kyRENfUEFEX1NPVVJDRV0uZmxhZ3MgPSBNRURJQV9QQURfRkxfU09VUkNFOw0KPj4gKw0K Pj4gKyAgICAgcmV0ID0gbWVkaWFfZW50aXR5X3BhZHNfaW5pdCgmY3NpMmRjLT5jc2kyZGNfc2Qu ZW50aXR5LCBDU0kyRENfUEFEU19OVU0sDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNzaTJkYy0+cGFkcyk7DQo+PiArICAgICBpZiAocmV0IDwgMCkgew0KPj4gKyAgICAg ICAgICAgICBkZXZfZXJyKGRldiwgIm1lZGlhIGVudGl0eSBpbml0IGZhaWxlZFxuIik7DQo+PiAr ICAgICAgICAgICAgIGdvdG8gY3NpMmRjX3Byb2JlX2VudGl0eV9lcnI7DQo+PiArICAgICB9DQo+ PiArDQo+PiArICAgICB2NGwyX3NldF9zdWJkZXZkYXRhKCZjc2kyZGMtPmNzaTJkY19zZCwgcGRl dik7DQo+PiArDQo+PiArICAgICBwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCAmY3NpMmRjLT5j c2kyZGNfc2QpOw0KPj4gKw0KPj4gKyAgICAgcmV0ID0gY3NpMmRjX29mX3BhcnNlKGNzaTJkYywg ZGV2LT5vZl9ub2RlKTsNCj4+ICsgICAgIGlmIChyZXQpDQo+PiArICAgICAgICAgICAgIGdvdG8g Y3NpMmRjX3Byb2JlX2VudGl0eV9lcnI7DQo+PiArDQo+PiArICAgICByZXQgPSBjc2kyZGNfZm9y bWF0c19pbml0KGNzaTJkYyk7DQo+PiArICAgICBpZiAocmV0KQ0KPj4gKyAgICAgICAgICAgICBn b3RvIGNzaTJkY19wcm9iZV9lcnJvcjsNCj4+ICsNCj4+ICsgICAgIHJldCA9IHY0bDJfYXN5bmNf cmVnaXN0ZXJfc3ViZGV2KCZjc2kyZGMtPmNzaTJkY19zZCk7DQo+PiArICAgICBpZiAocmV0KSB7 IC8vIHJldCA9IC1FUFJPQkVfREVGRVI7DQo+IA0KPiBPb3BzLg0KPiANCj4+ICsgICAgICAgICAg ICAgZ290byBjc2kyZGNfcHJvYmVfZXJyb3I7DQo+PiArICAgICB9DQo+PiArDQo+PiArICAgICBw bV9ydW50aW1lX3NldF9hY3RpdmUoZGV2KTsNCj4+ICsgICAgIHBtX3J1bnRpbWVfZW5hYmxlKGRl dik7DQo+PiArICAgICBwbV9yZXF1ZXN0X2lkbGUoZGV2KTsNCj4+ICsNCj4+ICsgICAgIHByX2lu Zm8oIk1pY3JvY2hpcCBDU0kyREMgdmVyc2lvbiAleFxuIiwNCj4+ICsgICAgICAgICAgICAgY3Np MmRjX3JlYWRsKGNzaTJkYywgQ1NJMkRDX1ZFUlNJT04pKTsNCj4gDQo+IFdoYXQgaGFwcGVucyBp ZiB0aGUgZGV2aWNlIHdhcyBwb3dlcmVkIGRvd24gYWxyZWFkeT8NCg0KSSBhbSBtb3ZpbmcgdGhl IGluZm8gbGluZSBiZWZvcmUgcG1fcmVxdWVzdF9pZGxlLCBpZiB0aGlzIHdhcyB3aGF0IHlvdSAN CmhhZCBpbiBtaW5kLg0KDQpJIGFtIHNlbmRpbmcgYSB2MyBvZiB0aGUgcGF0Y2gsIHdpdGggc29t ZSBvZiB0aGUgY29tbWVudHMgYWRkcmVzc2VkLiANClNvbWUgb3RoZXJzIEkgZG8gbm90IGZ1bGx5 IHVuZGVyc3RhbmQgeWV0IGhvdyB0byBjaGFuZ2UuIEhvcGVmdWxseSB5b3VyIA0KcmVwbGllcyB3 aWxsIGhlbHAgbWUgZmluZCB0aGUgd2F5Lg0KDQpUaGFua3MgYWdhaW4sDQpFdWdlbg0KPiANCj4+ ICsNCj4+ICsgICAgIHJldHVybiAwOw0KPj4gKw0KPj4gK2NzaTJkY19wcm9iZV9lcnJvcjoNCj4+ ICsgICAgIHY0bDJfYXN5bmNfdW5yZWdpc3Rlcl9zdWJkZXYoJmNzaTJkYy0+Y3NpMmRjX3NkKTsN Cj4+ICsgICAgIGNzaTJkY19jbGVhbnVwX25vdGlmaWVyKGNzaTJkYyk7DQo+PiArDQo+PiArY3Np MmRjX3Byb2JlX2VudGl0eV9lcnI6DQo+PiArICAgICBtZWRpYV9lbnRpdHlfY2xlYW51cCgmY3Np MmRjLT5jc2kyZGNfc2QuZW50aXR5KTsNCj4+ICsgICAgIHY0bDJfZGV2aWNlX3VucmVnaXN0ZXIo JmNzaTJkYy0+djRsMl9kZXYpOw0KPj4gK2NzaTJkY19jbGtfZmFpbDoNCj4+ICsgICAgIGNsa19k aXNhYmxlX3VucHJlcGFyZShjc2kyZGMtPnBjbGspOw0KPj4gKyAgICAgcmV0dXJuIHJldDsNCj4+ ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjc2kyZGNfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpDQo+PiArew0KPj4gKyAgICAgc3RydWN0IHY0bDJfc3ViZGV2ICpjc2kyZGNf c2QgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4+ICsgICAgIHN0cnVjdCBjc2kyZGNf ZGV2aWNlICpjc2kyZGMgPSBjc2kyZGNfc2RfdG9fY3NpMmRjX2RldmljZShjc2kyZGNfc2QpOw0K Pj4gKw0KPj4gKyAgICAgcG1fcnVudGltZV9kaXNhYmxlKCZwZGV2LT5kZXYpOw0KPj4gKyAgICAg Y3NpMmRjX2NsZWFudXBfbm90aWZpZXIoY3NpMmRjKTsNCj4+ICsgICAgIG1lZGlhX2VudGl0eV9j bGVhbnVwKCZjc2kyZGMtPmNzaTJkY19zZC5lbnRpdHkpOw0KPj4gKyAgICAgdjRsMl9kZXZpY2Vf dW5yZWdpc3RlcigmY3NpMmRjLT52NGwyX2Rldik7DQo+PiArICAgICBjbGtfZGlzYWJsZV91bnBy ZXBhcmUoY3NpMmRjLT5wY2xrKTsNCj4+ICsNCj4+ICsgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ ICsNCj4+ICtzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGNzaTJkY19ydW50aW1lX3N1c3BlbmQo c3RydWN0IGRldmljZSAqZGV2KQ0KPj4gK3sNCj4+ICsgICAgIHJldHVybiAwOw0KPj4gK30NCj4+ ICsNCj4+ICtzdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIGNzaTJkY19ydW50aW1lX3Jlc3VtZShz dHJ1Y3QgZGV2aWNlICpkZXYpDQo+PiArew0KPj4gKyAgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4g Kw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBjc2kyZGNfZGV2X3BtX29wcyA9 IHsNCj4+ICsgICAgIFNFVF9SVU5USU1FX1BNX09QUyhjc2kyZGNfcnVudGltZV9zdXNwZW5kLCBj c2kyZGNfcnVudGltZV9yZXN1bWUsIE5VTEwpDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCBjc2kyZGNfb2ZfbWF0Y2hbXSA9IHsNCj4+ICsgICAgIHsg LmNvbXBhdGlibGUgPSAibWljcm9jaGlwLHNhbWE3ZzUtY3NpMmRjIiB9LA0KPj4gKyAgICAgeyB9 DQo+PiArfTsNCj4+ICsNCj4+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBjc2kyZGNfb2ZfbWF0 Y2gpOw0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGNzaTJkY19kcml2 ZXIgPSB7DQo+PiArICAgICAucHJvYmUgID0gY3NpMmRjX3Byb2JlLA0KPj4gKyAgICAgLnJlbW92 ZSA9IGNzaTJkY19yZW1vdmUsDQo+PiArICAgICAuZHJpdmVyID0gew0KPj4gKyAgICAgICAgICAg ICAubmFtZSAgICAgICAgICAgPSAibWljcm9jaGlwLWNzaTJkYyIsDQo+PiArICAgICAgICAgICAg IC5wbSAgICAgICAgICAgICA9ICZjc2kyZGNfZGV2X3BtX29wcywNCj4+ICsgICAgICAgICAgICAg Lm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKGNzaTJkY19vZl9tYXRjaCksDQo+PiArICAg ICB9LA0KPj4gK307DQo+PiArDQo+PiArbW9kdWxlX3BsYXRmb3JtX2RyaXZlcihjc2kyZGNfZHJp dmVyKTsNCj4+ICsNCj4+ICtNT0RVTEVfQVVUSE9SKCJFdWdlbiBIcmlzdGV2IDxldWdlbi5ocmlz dGV2QG1pY3JvY2hpcC5jb20+Iik7DQo+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJNaWNyb2NoaXAg Q1NJMiBEZW11eCBDb250cm9sbGVyIGRyaXZlciIpOw0KPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwg djIiKTsNCj4+ICtNT0RVTEVfU1VQUE9SVEVEX0RFVklDRSgidmlkZW8iKTsNCj4gDQo+IC0tDQo+ IEtpbmQgcmVnYXJkcywNCj4gDQo+IFNha2FyaSBBaWx1cw0KPiANCg0K