Received: by 2002:a25:1506:0:0:0:0:0 with SMTP id 6csp1183713ybv; Sun, 23 Feb 2020 01:04:20 -0800 (PST) X-Google-Smtp-Source: APXvYqxxkPIWgo+z45cP4K3eZZDhYbRW5NX6l/tt14E93Rl/R+d/Oq5tIbvhUK1wJEQLKwXCrN4K X-Received: by 2002:aca:b187:: with SMTP id a129mr8824378oif.175.1582448660778; Sun, 23 Feb 2020 01:04:20 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1582448660; cv=pass; d=google.com; s=arc-20160816; b=Pok4H76ySWgq0nE3r2+guz6LFEhWMo3Gacu1OctdnmTpHyld7LvvY4Uy+M6iIWZA40 evV99HwDBiyTqTJv9s7o5jf0nAfusF8MUru2IztREyNZB35AG/jF5MAyuOmtqqqUmGxF ubhjKoctxpJWQn8j/V/z0qS2VfHTMm6aztNZw9onP6IqDu1c8n3UnfgdytaB+TFW/iEu rKFXM5T0kQz1sIWHMAzKHR2CwY5e2atWqZ3V4SwvPCFVGxZl6psIODikaAaP/9nniUFv r7MEKJzu+3V9CP4wIC1ZTjrYqSUL2yhbSxeNNNNRPbpk1PU0xfccsZecs/HBTjlqUfUf Ojkw== 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 :wdcipoutbound: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=rmQEgxj+FDzQSo4rVHU/o0WNItA+QIENksX6b+oCutA=; b=Obg4u6tA06p2d6D4wQVbql4zwyv6WDX2TSbhVNRVQdtwJGLDVaA5JjEmVMjvZ5fiH7 S3XUA652nM2SgJSjvM20ZfYDeecbyboWMP1P0B2aRimB+1Gyy2/wiVp29OksHVrqjfQv cSjJlT16QpuUvpTbR52+5Fj+M3Vw8ktjXoqZ8qfenO5CSnOP2AKGMObH6xfDNp3usxec v4LgBV94bIOInfhPnM+wvH+CAASXu3MKfv2XgC0F+S8gosmOOt25Zw5hqjQ/zVrgeitS Yrn9dH/Jk5dq/R9vjYEa+iwVpa/2l1m5fGl0AX99uH4pJAbttwm8TOVjIgtd2GaqCZbw wCfA== ARC-Authentication-Results: i=2; mx.google.com; dkim=fail header.i=@wdc.com header.s=dkim.wdc.com header.b="geWwfsy/"; dkim=pass header.i=@sharedspace.onmicrosoft.com header.s=selector2-sharedspace-onmicrosoft-com header.b=QpWb4XE9; arc=pass (i=1 spf=pass spfdomain=wdc.com dkim=pass dkdomain=wdc.com dmarc=pass fromdomain=wdc.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=fail (p=NONE sp=NONE dis=NONE) header.from=wdc.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s129si3725033oig.177.2020.02.23.01.04.06; Sun, 23 Feb 2020 01:04:20 -0800 (PST) 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=fail header.i=@wdc.com header.s=dkim.wdc.com header.b="geWwfsy/"; dkim=pass header.i=@sharedspace.onmicrosoft.com header.s=selector2-sharedspace-onmicrosoft-com header.b=QpWb4XE9; arc=pass (i=1 spf=pass spfdomain=wdc.com dkim=pass dkdomain=wdc.com dmarc=pass fromdomain=wdc.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=fail (p=NONE sp=NONE dis=NONE) header.from=wdc.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726748AbgBWJD7 (ORCPT + 99 others); Sun, 23 Feb 2020 04:03:59 -0500 Received: from esa4.hgst.iphmx.com ([216.71.154.42]:17671 "EHLO esa4.hgst.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725980AbgBWJD7 (ORCPT ); Sun, 23 Feb 2020 04:03:59 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=wdc.com; i=@wdc.com; q=dns/txt; s=dkim.wdc.com; t=1582448638; x=1613984638; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=rmQEgxj+FDzQSo4rVHU/o0WNItA+QIENksX6b+oCutA=; b=geWwfsy/naZEJav3G6Y03rzRwusC4GC0Xqe10d0FMKnaWHnf4BKMyXe4 E7yz91tR6dYO4GA/BEJ2/w1IdaKJbD7p545uMSl0msiUwm1uLg6fQhZfD yqsgtXXKnuSH4G5nwgDut0U4gyL4fqEjJvPDOZQtBvc2o/8OEHw06E1o9 4NqiO3q/YmulB4Muqhm6138lX9DlL9IAS2wJwX6qP2GAJjfNLVx7I2XmH 9KhdHtuSnU3ZhjAEjTKwICRYPLj10IKENxwUrFScVzyA+n2sXyXMUohe3 xguMvxtZhtAQLyeJsVrkSoJJTp6vqtQZ/iS2z/RFH4mfUY5Q3aGqRUd41 Q==; IronPort-SDR: pPiBqJ9JAPZXh7fKxy6sW8waG6GE7k5Rmh+067jnVffucAsw3tNZBI6XE6lPXi21EMKk0g5uon pgqS9ITx9SNn7QqieJs0nvsQuZNy2SzKCiqCUCT6+kmgyAPTQEBTzC3flEvgH7ST2FAq9SlllB 9JPCmDwNy4wnENDP0zxmWOiqCFEgoxZ9ZzwV1XCEnx16MmtgkcXYuSSnVvVSRF6gdYiSzCzDf0 bUqlp0K+9vrViCsPVM+qMewj891jDRj3EvfvimgcxFFIsBM8epaYe9k4GUv6Gh173tkR0xgopy BG8= X-IronPort-AV: E=Sophos;i="5.70,475,1574092800"; d="scan'208";a="130488529" Received: from mail-cys01nam02lp2059.outbound.protection.outlook.com (HELO NAM02-CY1-obe.outbound.protection.outlook.com) ([104.47.37.59]) by ob1.hgst.iphmx.com with ESMTP; 23 Feb 2020 17:03:56 +0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n8IrIfI8fQE51DlXuMx9WxakKn/i3VQhTLuXJlWz8Uu0CC5AWWP6KTTsjEbxc01RfvcSyzoiVQ2PgZ4BwESPj0ZTBdU5QQKA5IVDANsQHJ5EGJ+ojyOGW9/MWH7eg1CrHYYJ7I4v/m5DW0X72UJ/EQQ5LJfQK4Z4XuRh04MLxXuiodXcXTpVrXOkZNlVdZnU0wHKflJR3ECahpORF72J2zKyBfu3+JM1ZKWlKEavJkV9dGA7NTAnZrr9+pkHDaOslQTGv85yyyhlS/OiuIY/VuBdJBj9SDfu8mExL66YntmCPl0wVHSrLpQT/7YPw/wD5IlV/OY6HpEKQNHxauVIJQ== 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=rmQEgxj+FDzQSo4rVHU/o0WNItA+QIENksX6b+oCutA=; b=D7CkPMCHGo3rp7OUqJ0WQLPQ0DMjay2R3Qv7JkPvdcIhZL8a78ufUTFfHlzSzPB/d+e9OD/NHi5LyRX6PIM8fEssQLAn1jYHnNIEs2MuIRMc1H8N1fcoGFVqqvbRSu36pZAo7NjQpipd0siw++Vh8oYefFZk/ki10IiJBrmcmH70Wos46zLpE6lGQ7auUd9avNVuor/sQ8GinpC/LqgNWBDs8hF0vshH4SGORc3GlBEO8AVYvhk1eqKH2v02QeK+lwzVzalTFj7o9elXZ9w8/uAJakRBuRvVOwBdvb/Ry1NoHafkUCiPI9CJkl8xcVdLReBdPlbCGLBWCGhLEhBB8Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=wdc.com; dmarc=pass action=none header.from=wdc.com; dkim=pass header.d=wdc.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sharedspace.onmicrosoft.com; s=selector2-sharedspace-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rmQEgxj+FDzQSo4rVHU/o0WNItA+QIENksX6b+oCutA=; b=QpWb4XE96GuwMbHXuLH8zobboH3IbllTv0Mr2AcWemLx7LpuVeqmrmXWE7S+Aaa38qskq7a6qk71TH2JFpd9Jf0Fx+m57prloHek37jg2aPf679jjkg8+jEg+v6Qx2RCos6TFhkvA2zNha8JxwQA9aKgMscamVDd2VJouirdCwQ= Received: from MN2PR04MB6991.namprd04.prod.outlook.com (2603:10b6:208:1e1::17) by MN2PR04MB6240.namprd04.prod.outlook.com (2603:10b6:208:e2::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2750.21; Sun, 23 Feb 2020 09:03:55 +0000 Received: from MN2PR04MB6991.namprd04.prod.outlook.com ([fe80::3885:5fac:44af:5de7]) by MN2PR04MB6991.namprd04.prod.outlook.com ([fe80::3885:5fac:44af:5de7%7]) with mapi id 15.20.2750.021; Sun, 23 Feb 2020 09:03:55 +0000 From: Avri Altman To: Asutosh Das , "subhashj@codeaurora.org" , "cang@codeaurora.org" , "rnayak@codeaurora.org" , "vinholikatti@gmail.com" , "jejb@linux.vnet.ibm.com" , "martin.petersen@oracle.com" , "linux-scsi@vger.kernel.org" CC: "linux-arm-msm@vger.kernel.org" , Alim Akhtar , "James E.J. Bottomley" , Stanley Chu , Bean Huo , Tomas Winkler , Colin Ian King , Bart Van Assche , Venkat Gopalakrishnan , Bjorn Andersson , open list Subject: RE: [ 1/2] scsi: ufs: add write booster feature support Thread-Topic: [ 1/2] scsi: ufs: add write booster feature support Thread-Index: AQHV6Rh2ZTwBYaR27UCCKm4Ugks9U6gofiRA Date: Sun, 23 Feb 2020 09:03:54 +0000 Message-ID: References: <0eb182e6731bc4ce0c1d6a97f102155d7186520f.1582330473.git.asutoshd@codeaurora.org> In-Reply-To: <0eb182e6731bc4ce0c1d6a97f102155d7186520f.1582330473.git.asutoshd@codeaurora.org> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Avri.Altman@wdc.com; x-originating-ip: [212.25.79.133] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 3fafcf25-8992-4986-3b46-08d7b83f4f66 x-ms-traffictypediagnostic: MN2PR04MB6240: x-microsoft-antispam-prvs: wdcipoutbound: EOP-TRUE x-ms-oob-tlc-oobclassifiers: OLM:2887; x-forefront-prvs: 0322B4EDE1 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(4636009)(376002)(346002)(366004)(136003)(396003)(39860400002)(189003)(199004)(54906003)(55016002)(30864003)(2906002)(33656002)(110136005)(9686003)(4326008)(316002)(7696005)(52536014)(6506007)(7416002)(71200400001)(5660300002)(478600001)(86362001)(66446008)(66946007)(64756008)(66556008)(186003)(66476007)(8676002)(81156014)(8936002)(81166006)(76116006)(26005)(579004)(559001);DIR:OUT;SFP:1102;SCL:1;SRVR:MN2PR04MB6240;H:MN2PR04MB6991.namprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: t3Ggllq2s49PLFoo45RivMHjLl4/aeDWll8VY8f1vR7SYNLTWR2Wwc8DFnOr84HaGTaQrn0CIielAJawPy1rm92aAH/jtbRg6oslyBB/hQDdDjE+eUVa1jxwdkHw3iJ0bVONKGm7E+cxxTmcqR3czpraa2rTc9NucFCYfoDZL+Guy2h6qcud2EeZOqPCTBx5g1nt1wuuNTL+XizQfEe0HLLXzqQT21B2dt8iurjpnrappXCSg6TU+f6hMug7KM0oi6J7/hraPahE+8mnS3/aarwqIfJ49F1VnlsLGt8Vt5Noeyxa2xVkS4sdvsL+dY0BtRsD3M9Do/7+1tkWSkBJ4lC2s5lTvjYtBUg3ebvAIRjKmVFUEzns3aqZ2epy3ZSTf37KKkd9LruadtWw0k/ntgvC3lR2K2Kym/MievSwVIBqwzCSNXrKKne7a9uFND7Q x-ms-exchange-antispam-messagedata: vNe3DxrmaGTaH9IImS1gAIb/38/WPWsYl9AUD41QyC6vs2RaHo+IOkbZEAFJiERkZzq5Gj9TPuEON1qEB6ZoCLtG0G4xqOAVSkpcljU/VKuJxoa5JOZ9fyaGmpUYc9zWcahsDLSEBm29L9WAD9s60g== x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: wdc.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3fafcf25-8992-4986-3b46-08d7b83f4f66 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Feb 2020 09:03:54.8883 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b61c8803-16f3-4c35-9b17-6f65f441df86 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: R0CKk1u76mt59USFus1SMWZod+BG+zC0cgAKTiFegOLsPyrDyV/hMnGMVVe9ZuWIg93IA+M0zgxP1Jm+CuBXzw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR04MB6240 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksDQo+IA0KPiANCk1heWJlIGFkZCBmZXcgd29yZHMgZXhwbGFpbmluZyB3aGF0IHRoaXMgZmVh dHVyZSBpcyBhbGwgYWJvdXQuDQoNCj4gV3JpdGUgQm9vc3RlciBlbmFibGU6IFNXIHdpbGwgZW5h YmxlIHRoZSBmZWF0dXJlDQo+IHdoZW4gY2xvY2tzIGFyZSBzY2FsZWQgdXAuDQo+IE9uY2UgY2xv Y2tzIGFuZCBnZWFyIGFyZSBzY2FsZWQgdXAsDQo+IFNXIHdpbGwgc2V0IOKAnGZXcml0ZUJvb3N0 ZXJFbuKAnSBmbGFnDQo+IGJlZm9yZSBleGl0aW5nIGZyb20gdWZzaGNkX2RldmZyZXFfc2NhbGUo KSBmdW5jdGlvbi4NCj4gDQo+IFdyaXRlIEJvb3N0ZXIgZGlzYWJsZTogU1cgd2lsbCBkaXNhYmxl IHRoZSBmZWF0dXJlLA0KPiB3aGVuIGNsb2NrcyBhcmUgc2NhbGVkIGRvd24uIE9uY2UgY2xvY2tz IGFuZCBnZWFyDQo+IGFyZSBzY2FsZWQgZG93biwgU1cgd2lsbCBjbGVhciDigJxmV3JpdGVCb29z dGVyRW7igJ0gZmxhZw0KPiBiZWZvcmUgZXhpdGluZyBmcm9tIHVmc2hjZF9kZXZmcmVxX3NjYWxl KCkgZnVuY3Rpb24uDQpBdCB0aGlzIHBvaW50IEkgYW0gbm90IGNvbnZpbmNlZCB0aGF0IGFsbCBy ZWFkZXJzIGFyZSBpbnRlcmVzdGluZyB3aGljaCBmbGFnIGRvZXMgd2hhdC4NCk1heWJlIGp1c3Qg c2F5aW5nIHRoYXQgeW91IGFyZSBpbnRlbmRpbmcgdG8gdXNlIHRoZSBjbG9jayBzY2FsaW5nIG1l Y2hhbmlzbSB0byBzZXQgV0Igb24vb2ZmLA0KV2hpY2ggaXMsIElNSE8sIGFuIGV4Y2VsbGVudCBk ZXNpZ24gY2hvaWNlLg0KQWxzbyBoZXJlIGlzIGEgZ29vZCBwbGFjZSB0byBleHBsYWluIHRoYXQg YWx0aG91Z2ggaXQgaXMgbm90IGx1bi1zcGVjaWZpYyBhbmQgd2lsbCB0dXJuIFdCIG9uIGZvciBy ZWFkcyBhcyB3ZWxsLA0KSXQgaXMgYSBzZWNvbmQgb3JkZXIgbWlzcyBhbmQgaGFzIG5lZ2xpZ2li bGUgaW1wYWN0IG9mIHRoZSBvdmVyYWxsIHBlcmZvcm1hbmNlLg0KDQpCZWZvcmUgdGhlIG5leHQg cGFyYWdyYXBoIHlvdSBuZWVkIHRvIGV4cGxhaW4gYWJvdXQgdGhlIHZhcmlvdXMgV0IgYnVmZmVy IGZsdXNoIG9wdGlvbnMgLSANCk5vdCBhbGwgcmVhZGVycyBhcmUgZmFtaWxpYXIgd2l0aCB0aGUg bGF0ZXN0IHNwZWMgdG8gaXRzIGRldGFpbHMuDQoNCj4gDQo+IFdyaXRlIEJvb3N0ZXIgQnVmZmVy IGZsdXNoIHdpbGwgYmUgZW5hYmxlZCBpbiBmb2xsb3dpbmcgY2FzZXM6DQo+ICAxLiBEdXJpbmcg cnVudGltZSBzdXNwZW5kLCBkcml2ZXIgd291bGQgcXVlcnkNCj4gICAgIGJBdmFpbGFibGVXcml0 ZUJvb3N0ZXJCdWZmZXJTaXplIGF0dHJpYnV0ZSBhbmQgZW5hYmxlIHRoZQ0KPiAgICAgV3JpdGUg Qm9vc3RlciBCdWZmZXIgRmx1c2ggaWYgbGVzcyB0aGFuIDMwJSBXcml0ZSBCb29zdGVyDQo+ICAg ICBCdWZmZXIgaXMgYXZhaWxhYmxlLg0KQWdhaW4sIGp1c3QgZXhwbGFpbiB3aHkgbWFrZSB5b3Vy IGZsdXNoIHBhcnQgb2YgdGhlIHBvd2VyIG1hbmFnZW1lbnQgZmxvdywNCldpdGhvdXQgdGhlIGdv cnkgZGV0YWlscyBvZiB0aGUgZXhhY3QgYXR0cmlidXRlLCBldGMuDQoNCj4gDQo+IFdyaXRlIEJv b3N0ZXIgQnVmZmVyIGZsdXNoIHdpbGwgYmUgZGlzYWJsZWQgaW4gZm9sbG93aW5nIGNhc2U6DQo+ IER1cmluZyBydW50aW1lIHN1c3BlbmQsIGlmIGF2YWlsYWJsZSBidWZmZXIgc2l6ZSBpcyA+MzAl LA0KPiB0aGVuIFdyaXRlIEJvb3N0ZXIgRmx1c2ggd2lsbCBiZSBzdG9wcGVkIGJ5DQo+IGNsZWFy aW5nIGZXcml0ZUJvb3N0ZXJCdWZmZXJGbHVzaEVuIGZsYWcuDQo+IA0KDQpBbmQgaGVyZSBhIHdv cmQgb2YgdGhlIHZhcmlvdXMgdXNlciBzcGFjZSBjb25maWd1cmF0aW9uIG9wdGlvbiwNCkFsdGhv dWdoIEkgd291bGQgbG9vayBmb3Igd2F5cyB0byBtaW5pbWl6ZSB0aGUgZXhwb3N1cmUgb2YgdGhl IFdCIGRyaXZlciwNClRvIHRoZSB3YXkgdGhlIHBsYXRmb3JtIHZlbmRvciBwcm92aXNpb24gaXRz IGRldmljZS4NCiANCj4gSW4gbm9uLXJlZHVjdGlvbiBjYXNlLCBkdXJpbmcgcnVudGltZS1zdXNw ZW5kLA0KPiBkQ3VycmVudFdyaXRlQm9vc3RlckJ1ZmZlclNpemUgYXR0cmlidXRlIHdvdWxkIGRl dGVybWluZQ0KPiBpZiBmbHVzaCBpcyBwb3NzaWJsZS4NCj4gSWYgdGhpcyB2YWx1ZSBpcyA+IDAg YW5kIGF2YWlsQnVmIGlzIGxlc3MNCj4gdGhhbiAzMCUgdGhlbiBmbHVzaCBpcyBuZWVkZWQgYW5k IHZjYyBuZWVkcyB0byBiZSBPTi4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IEFzdXRvc2ggRGFzIDxh c3V0b3NoZEBjb2RlYXVyb3JhLm9yZz4NCj4gU2lnbmVkLW9mZi1ieTogU3ViaGFzaCBKYWRhdmFu aSA8c3ViaGFzaGpAY29kZWF1cm9yYS5vcmc+DQoNCkZvciBSRkMgaXRzIGZpbmUsIGJ1dCB3aGVu IHlvdSdsbCBzZW5kIGl0IGZvciByZXZpZXcsDQpUaGlzIHBhdGNoIHNob3VsZCBiZSBkaXZpZGVk IGludG8gNC01IHBhdGNoZXMsIG1pbmltdW0uDQoNCj4gLS0tDQo+ICBkcml2ZXJzL3Njc2kvdWZz L3Vmcy1zeXNmcy5jIHwgIDQxICsrKysrKy0NCj4gIGRyaXZlcnMvc2NzaS91ZnMvdWZzLmggICAg ICAgfCAgNjEgKysrKysrKystDQo+ICBkcml2ZXJzL3Njc2kvdWZzL3Vmc2hjZC5jICAgIHwgMjg2 DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4gIGRyaXZl cnMvc2NzaS91ZnMvdWZzaGNkLmggICAgfCAgIDkgKysNCj4gIDQgZmlsZXMgY2hhbmdlZCwgMzkw IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9zY3NpL3Vmcy91ZnMtc3lzZnMuYyBiL2RyaXZlcnMvc2NzaS91ZnMvdWZzLXN5c2ZzLmMNCj4g aW5kZXggZGJkZjhiMC4uNDUwNWUyNyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9zY3NpL3Vmcy91 ZnMtc3lzZnMuYw0KPiArKysgYi9kcml2ZXJzL3Njc2kvdWZzL3Vmcy1zeXNmcy5jDQo+IEBAIC0y NzQsNiArMjc0LDEwIEBAIFVGU19ERVZJQ0VfREVTQ19QQVJBTShkZXZpY2VfdmVyc2lvbiwNCj4g X0RFVl9WRVIsIDIpOw0KPiAgVUZTX0RFVklDRV9ERVNDX1BBUkFNKG51bWJlcl9vZl9zZWN1cmVf d3BhLCBfTlVNX1NFQ19XUEEsIDEpOw0KPiAgVUZTX0RFVklDRV9ERVNDX1BBUkFNKHBzYV9tYXhf ZGF0YV9zaXplLCBfUFNBX01BWF9EQVRBLCA0KTsNCj4gIFVGU19ERVZJQ0VfREVTQ19QQVJBTShw c2Ffc3RhdGVfdGltZW91dCwgX1BTQV9UTVQsIDEpOw0KPiArVUZTX0RFVklDRV9ERVNDX1BBUkFN KGV4dF9mZWF0dXJlX3N1cCwgX0VYVF9VRlNfRkVBVFVSRV9TVVAsIDQpOw0KPiArVUZTX0RFVklD RV9ERVNDX1BBUkFNKHdiX3ByZXN2X3VzX2VuLCBfV0JfVVNfUkVEX0VOLCAxKTsNCj4gK1VGU19E RVZJQ0VfREVTQ19QQVJBTSh3Yl90eXBlLCBfV0JfVFlQRSwgMSk7DQo+ICtVRlNfREVWSUNFX0RF U0NfUEFSQU0od2Jfc2hhcmVkX2FsbG9jX3VuaXRzLA0KPiBfV0JfU0hBUkVEX0FMTE9DX1VOSVRT LCA0KTsNCj4gDQo+ICBzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqdWZzX3N5c2ZzX2RldmljZV9k ZXNjcmlwdG9yW10gPSB7DQo+ICAgICAgICAgJmRldl9hdHRyX2RldmljZV90eXBlLmF0dHIsDQo+ IEBAIC0zMDIsNiArMzA2LDEwIEBAIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlDQo+ICp1ZnNfc3lz ZnNfZGV2aWNlX2Rlc2NyaXB0b3JbXSA9IHsNCj4gICAgICAgICAmZGV2X2F0dHJfbnVtYmVyX29m X3NlY3VyZV93cGEuYXR0ciwNCj4gICAgICAgICAmZGV2X2F0dHJfcHNhX21heF9kYXRhX3NpemUu YXR0ciwNCj4gICAgICAgICAmZGV2X2F0dHJfcHNhX3N0YXRlX3RpbWVvdXQuYXR0ciwNCj4gKyAg ICAgICAmZGV2X2F0dHJfZXh0X2ZlYXR1cmVfc3VwLmF0dHIsDQo+ICsgICAgICAgJmRldl9hdHRy X3diX3ByZXN2X3VzX2VuLmF0dHIsDQo+ICsgICAgICAgJmRldl9hdHRyX3diX3R5cGUuYXR0ciwN Cj4gKyAgICAgICAmZGV2X2F0dHJfd2Jfc2hhcmVkX2FsbG9jX3VuaXRzLmF0dHIsDQo+ICAgICAg ICAgTlVMTCwNCj4gIH07DQo+IA0KPiBAQCAtMzcxLDYgKzM3OSwxMiBAQA0KPiBVRlNfR0VPTUVU UllfREVTQ19QQVJBTShlbmg0X21lbW9yeV9tYXhfYWxsb2NfdW5pdHMsDQo+ICAgICAgICAgX0VO TTRfTUFYX05VTV9VTklUUywgNCk7DQo+IA0KPiBVRlNfR0VPTUVUUllfREVTQ19QQVJBTShlbmg0 X21lbW9yeV9jYXBhY2l0eV9hZGp1c3RtZW50X2ZhY3RvciwNCj4gICAgICAgICBfRU5NNF9DQVBf QURKX0ZDVFIsIDIpOw0KPiArVUZTX0dFT01FVFJZX0RFU0NfUEFSQU0od2JfbWF4X2FsbG9jX3Vu aXRzLA0KPiBfV0JfTUFYX0FMTE9DX1VOSVRTLCA0KTsNCj4gK1VGU19HRU9NRVRSWV9ERVNDX1BB UkFNKHdiX21heF93Yl9sdW5zLCBfV0JfTUFYX1dCX0xVTlMsDQo+IDEpOw0KPiArVUZTX0dFT01F VFJZX0RFU0NfUEFSQU0od2JfYnVmZl9jYXBfYWRqLCBfV0JfQlVGRl9DQVBfQURKLA0KPiAxKTsN Cj4gK1VGU19HRU9NRVRSWV9ERVNDX1BBUkFNKHdiX3N1cF9yZWRfdHlwZSwgX1dCX1NVUF9SRURf VFlQRSwNCj4gMSk7DQo+ICtVRlNfR0VPTUVUUllfREVTQ19QQVJBTSh3Yl9zdXBfd2JfdHlwZSwg X1dCX1NVUF9XQl9UWVBFLCAxKTsNCj4gKw0KPiANCj4gIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRl ICp1ZnNfc3lzZnNfZ2VvbWV0cnlfZGVzY3JpcHRvcltdID0gew0KPiAgICAgICAgICZkZXZfYXR0 cl9yYXdfZGV2aWNlX2NhcGFjaXR5LmF0dHIsDQo+IEBAIC00MDIsNiArNDE2LDExIEBAIHN0YXRp YyBzdHJ1Y3QgYXR0cmlidXRlDQo+ICp1ZnNfc3lzZnNfZ2VvbWV0cnlfZGVzY3JpcHRvcltdID0g ew0KPiAgICAgICAgICZkZXZfYXR0cl9lbmgzX21lbW9yeV9jYXBhY2l0eV9hZGp1c3RtZW50X2Zh Y3Rvci5hdHRyLA0KPiAgICAgICAgICZkZXZfYXR0cl9lbmg0X21lbW9yeV9tYXhfYWxsb2NfdW5p dHMuYXR0ciwNCj4gICAgICAgICAmZGV2X2F0dHJfZW5oNF9tZW1vcnlfY2FwYWNpdHlfYWRqdXN0 bWVudF9mYWN0b3IuYXR0ciwNCj4gKyAgICAgICAmZGV2X2F0dHJfd2JfbWF4X2FsbG9jX3VuaXRz LmF0dHIsDQo+ICsgICAgICAgJmRldl9hdHRyX3diX21heF93Yl9sdW5zLmF0dHIsDQo+ICsgICAg ICAgJmRldl9hdHRyX3diX2J1ZmZfY2FwX2Fkai5hdHRyLA0KPiArICAgICAgICZkZXZfYXR0cl93 Yl9zdXBfcmVkX3R5cGUuYXR0ciwNCj4gKyAgICAgICAmZGV2X2F0dHJfd2Jfc3VwX3diX3R5cGUu YXR0ciwNCj4gICAgICAgICBOVUxMLA0KPiAgfTsNCj4gDQo+IEBAIC02MDgsNyArNjI3LDcgQEAg c3RhdGljIHNzaXplX3QgX25hbWUjI19zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwNCj4gXA0KPiAg ICAgICAgIGlmICh1ZnNoY2RfcXVlcnlfZmxhZyhoYmEsIFVQSVVfUVVFUllfT1BDT0RFX1JFQURf RkxBRywgICAgICAgICBcDQo+ICAgICAgICAgICAgICAgICBRVUVSWV9GTEFHX0lETiMjX3VuYW1l LCAmZmxhZykpICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gICAgICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiAtICAgICAgIHJldHVybiBzcHJpbnRmKGJ1ZiwgIiVzXG4iLCBmbGFnID8gInRydWUiIDogImZh bHNlIik7ICAgICAgICAgICBcDQo+ICsgICAgICAgcmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9T SVpFLCAiJXNcbiIsIGZsYWcgPyAidHJ1ZSIgOiAiZmFsc2UiKTsgXA0KVGhpcyBzaG91bGQgYmUg c2VudCBhcyBhIHNlcGFyYXRlIGJ1ZyBmaXggLSBub3QgYXMgcGFydCBvZiB0aGUgV0Igc2VyaWVz DQoNCj4gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiAgc3RhdGljIERFVklDRV9BVFRSX1JPKF9uYW1lKQ0K PiANCj4gQEAgLTYyMCw2ICs2MzksOSBAQCBVRlNfRkxBRyhsaWZlX3NwYW5fbW9kZV9lbmFibGUs DQo+IF9MSUZFX1NQQU5fTU9ERV9FTkFCTEUpOw0KPiAgVUZTX0ZMQUcocGh5X3Jlc291cmNlX3Jl bW92YWwsIF9GUEhZUkVTT1VSQ0VSRU1PVkFMKTsNCj4gIFVGU19GTEFHKGJ1c3lfcnRjLCBfQlVT WV9SVEMpOw0KPiAgVUZTX0ZMQUcoZGlzYWJsZV9md191cGRhdGUsIF9QRVJNQU5FTlRMWV9ESVNB QkxFX0ZXX1VQREFURSk7DQo+ICtVRlNfRkxBRyh3Yl9lbmFibGUsIF9XQl9FTik7DQo+ICtVRlNf RkxBRyh3Yl9mbHVzaF9lbiwgX1dCX0JVRkZfRkxVU0hfRU4pOw0KPiArVUZTX0ZMQUcod2JfZmx1 c2hfZHVyaW5nX2g4LCBfV0JfQlVGRl9GTFVTSF9EVVJJTkdfSElCRVJOOCk7DQo+IA0KPiAgc3Rh dGljIHN0cnVjdCBhdHRyaWJ1dGUgKnVmc19zeXNmc19kZXZpY2VfZmxhZ3NbXSA9IHsNCj4gICAg ICAgICAmZGV2X2F0dHJfZGV2aWNlX2luaXQuYXR0ciwNCj4gQEAgLTYzMCw2ICs2NTIsOSBAQCBz dGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqdWZzX3N5c2ZzX2RldmljZV9mbGFnc1tdID0gew0KPiAg ICAgICAgICZkZXZfYXR0cl9waHlfcmVzb3VyY2VfcmVtb3ZhbC5hdHRyLA0KPiAgICAgICAgICZk ZXZfYXR0cl9idXN5X3J0Yy5hdHRyLA0KPiAgICAgICAgICZkZXZfYXR0cl9kaXNhYmxlX2Z3X3Vw ZGF0ZS5hdHRyLA0KPiArICAgICAgICZkZXZfYXR0cl93Yl9lbmFibGUuYXR0ciwNCj4gKyAgICAg ICAmZGV2X2F0dHJfd2JfZmx1c2hfZW4uYXR0ciwNCj4gKyAgICAgICAmZGV2X2F0dHJfd2JfZmx1 c2hfZHVyaW5nX2g4LmF0dHIsDQo+ICAgICAgICAgTlVMTCwNCj4gIH07DQo+IA0KPiBAQCAtNjQ3 LDcgKzY3Miw3IEBAIHN0YXRpYyBzc2l6ZV90IF9uYW1lIyNfc2hvdyhzdHJ1Y3QgZGV2aWNlICpk ZXYsDQo+IFwNCj4gICAgICAgICBpZiAodWZzaGNkX3F1ZXJ5X2F0dHIoaGJhLCBVUElVX1FVRVJZ X09QQ09ERV9SRUFEX0FUVFIsICAgICAgICAgXA0KPiAgICAgICAgICAgICAgICAgUVVFUllfQVRU Ul9JRE4jI191bmFtZSwgMCwgMCwgJnZhbHVlKSkgICAgICAgICAgICAgICAgICBcDQo+ICAgICAg ICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gLSAgICAgICByZXR1cm4gc3ByaW50ZihidWYsICIweCUwOFhcbiIsIHZh bHVlKTsgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgIHJldHVybiBzbnByaW50 ZihidWYsIFBBR0VfU0laRSwgIjB4JTA4WFxuIiwgdmFsdWUpOyAgICAgICAgICAgICBcDQpkaXR0 bw0KDQo+ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gIHN0YXRpYyBERVZJQ0VfQVRUUl9STyhfbmFtZSkN Cj4gDQo+IEBAIC02NjcsNiArNjkyLDExIEBAIFVGU19BVFRSSUJVVEUoZXhjZXB0aW9uX2V2ZW50 X3N0YXR1cywNCj4gX0VFX1NUQVRVUyk7DQo+ICBVRlNfQVRUUklCVVRFKGZmdV9zdGF0dXMsIF9G RlVfU1RBVFVTKTsNCj4gIFVGU19BVFRSSUJVVEUocHNhX3N0YXRlLCBfUFNBX1NUQVRFKTsNCj4g IFVGU19BVFRSSUJVVEUocHNhX2RhdGFfc2l6ZSwgX1BTQV9EQVRBX1NJWkUpOw0KPiArVUZTX0FU VFJJQlVURSh3Yl9mbHVzaF9zdGF0dXMsIF9XQl9GTFVTSF9TVEFUVVMpOw0KPiArVUZTX0FUVFJJ QlVURSh3Yl9hdmFpbF9idWYsIF9BVkFJTF9XQl9CVUZGX1NJWkUpOw0KPiArVUZTX0FUVFJJQlVU RSh3Yl9saWZlX3RpbWVfZXN0LCBfV0JfQlVGRl9MSUZFX1RJTUVfRVNUKTsNCj4gK1VGU19BVFRS SUJVVEUod2JfY3VyX2J1ZiwgX0NVUlJfV0JfQlVGRl9TSVpFKTsNCj4gKw0KPiANCj4gIHN0YXRp YyBzdHJ1Y3QgYXR0cmlidXRlICp1ZnNfc3lzZnNfYXR0cmlidXRlc1tdID0gew0KPiAgICAgICAg ICZkZXZfYXR0cl9ib290X2x1bl9lbmFibGVkLmF0dHIsDQo+IEBAIC02ODUsNiArNzE1LDEwIEBA IHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICp1ZnNfc3lzZnNfYXR0cmlidXRlc1tdID0gew0KPiAg ICAgICAgICZkZXZfYXR0cl9mZnVfc3RhdHVzLmF0dHIsDQo+ICAgICAgICAgJmRldl9hdHRyX3Bz YV9zdGF0ZS5hdHRyLA0KPiAgICAgICAgICZkZXZfYXR0cl9wc2FfZGF0YV9zaXplLmF0dHIsDQo+ ICsgICAgICAgJmRldl9hdHRyX3diX2ZsdXNoX3N0YXR1cy5hdHRyLA0KPiArICAgICAgICZkZXZf YXR0cl93Yl9hdmFpbF9idWYuYXR0ciwNCj4gKyAgICAgICAmZGV2X2F0dHJfd2JfbGlmZV90aW1l X2VzdC5hdHRyLA0KPiArICAgICAgICZkZXZfYXR0cl93Yl9jdXJfYnVmLmF0dHIsDQo+ICAgICAg ICAgTlVMTCwNCj4gIH07DQo+IA0KPiBAQCAtNzM2LDYgKzc3MCw4IEBAIFVGU19VTklUX0RFU0Nf UEFSQU0ocHJvdmlzaW9uaW5nX3R5cGUsDQo+IF9QUk9WSVNJT05JTkdfVFlQRSwgMSk7DQo+ICBV RlNfVU5JVF9ERVNDX1BBUkFNKHBoeXNpY2FsX21lbW9yeV9yZXNvdXJzZV9jb3VudCwNCj4gX1BI WV9NRU1fUlNSQ19DTlQsIDgpOw0KPiAgVUZTX1VOSVRfREVTQ19QQVJBTShjb250ZXh0X2NhcGFi aWxpdGllcywgX0NUWF9DQVBBQklMSVRJRVMsIDIpOw0KPiAgVUZTX1VOSVRfREVTQ19QQVJBTShs YXJnZV91bml0X2dyYW51bGFyaXR5LCBfTEFSR0VfVU5JVF9TSVpFX00xLA0KPiAxKTsNCj4gK1VG U19VTklUX0RFU0NfUEFSQU0od2JfYnVmX2FsbG9jX3VuaXRzLCBfV0JfQlVGX0FMTE9DX1VOSVRT LA0KPiA0KTsNCj4gKw0KPiANCj4gIHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICp1ZnNfc3lzZnNf dW5pdF9kZXNjcmlwdG9yW10gPSB7DQo+ICAgICAgICAgJmRldl9hdHRyX2Jvb3RfbHVuX2lkLmF0 dHIsDQo+IEBAIC03NTEsNiArNzg3LDcgQEAgc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnVmc19z eXNmc191bml0X2Rlc2NyaXB0b3JbXSA9DQo+IHsNCj4gICAgICAgICAmZGV2X2F0dHJfcGh5c2lj YWxfbWVtb3J5X3Jlc291cnNlX2NvdW50LmF0dHIsDQo+ICAgICAgICAgJmRldl9hdHRyX2NvbnRl eHRfY2FwYWJpbGl0aWVzLmF0dHIsDQo+ICAgICAgICAgJmRldl9hdHRyX2xhcmdlX3VuaXRfZ3Jh bnVsYXJpdHkuYXR0ciwNCj4gKyAgICAgICAmZGV2X2F0dHJfd2JfYnVmX2FsbG9jX3VuaXRzLmF0 dHIsDQo+ICAgICAgICAgTlVMTCwNCj4gIH07DQoNCllvdSBtaWdodCB3YW50IHRvIGNvbnNpZGVy IGV4cG9zaW5nIHRoZSBjbG9jayBzY2FsaW5nIGdvdmVybm9yIGF0dHJpYnV0ZSBoZXJlIGFzIHdl bGwsDQpCZWNhdXNlDQphKSB3ZSBzaG91bGQgZG8gdGhhdCBhbHJlYWR5IGFzIGl0IGNvbnRyb2wg YW4gZXNzZW50aWFsIHBhcnQgb2YgdGhlIHVmcyBkcml2ZXIsIGFuZA0KYikgaXQgY29udHJvbCBX QiBub3cgYXMgd2VsbA0KDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Vmcy91ZnMu aCBiL2RyaXZlcnMvc2NzaS91ZnMvdWZzLmgNCj4gaW5kZXggOTkwY2I0OC4uZmZjNGUxOCAxMDA2 NDQNCj4gLS0tIGEvZHJpdmVycy9zY3NpL3Vmcy91ZnMuaA0KPiArKysgYi9kcml2ZXJzL3Njc2kv dWZzL3Vmcy5oDQo+IEBAIC02Myw2ICs2Myw3IEBADQo+ICAjZGVmaW5lIFVGU19VUElVX01BWF9V TklUX05VTV9JRCAgICAgICAweDdGDQo+ICAjZGVmaW5lIFVGU19NQVhfTFVOUyAgICAgICAgICAg KFNDU0lfV19MVU5fQkFTRSArDQo+IFVGU19VUElVX01BWF9VTklUX05VTV9JRCkNCj4gICNkZWZp bmUgVUZTX1VQSVVfV0xVTl9JRCAgICAgICAoMSA8PCA3KQ0KPiArI2RlZmluZSBVRlNfVVBJVV9N QVhfR0VORVJBTF9MVU4gICAgICAgOA0KQXJlIHlvdSB1c2luZyB0aGlzIGZvciDigJxMVSBkZWRp Y2F0ZWQgYnVmZmVyIiBjYXNlPw0KSW4gdGhhdCBjYXNlIG1heWJlIE1BWF9ERURJQ0FURURfQlVG RkVSUz8NCg0KPiANCj4gIC8qIFdlbGwga25vd24gbG9naWNhbCB1bml0IGlkIGluIExVTiBmaWVs ZCBvZiBVUElVICovDQo+ICBlbnVtIHsNCj4gQEAgLTE0MCw2ICsxNDEsOSBAQCBlbnVtIGZsYWdf aWRuIHsNCj4gICAgICAgICBRVUVSWV9GTEFHX0lETl9CVVNZX1JUQyAgICAgICAgICAgICAgICAg ICAgICAgICA9IDB4MDksDQo+ICAgICAgICAgUVVFUllfRkxBR19JRE5fUkVTRVJWRUQzICAgICAg ICAgICAgICAgICAgICAgICAgPSAweDBBLA0KPiAgICAgICAgIFFVRVJZX0ZMQUdfSUROX1BFUk1B TkVOVExZX0RJU0FCTEVfRldfVVBEQVRFICAgID0gMHgwQiwNCj4gKyAgICAgICBRVUVSWV9GTEFH X0lETl9XQl9FTiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MEUsDQo+ICsgICAgICAg UVVFUllfRkxBR19JRE5fV0JfQlVGRl9GTFVTSF9FTiAgICAgICAgICAgICAgICAgPSAweDBGLA0K PiArICAgICAgIFFVRVJZX0ZMQUdfSUROX1dCX0JVRkZfRkxVU0hfRFVSSU5HX0hJQkVSTjggICAg ID0gMHgxMCwNCj4gIH07DQo+IA0KPiAgLyogQXR0cmlidXRlIGlkbiBmb3IgUXVlcnkgcmVxdWVz dHMgKi8NCj4gQEAgLTE2OCw2ICsxNzIsMTAgQEAgZW51bSBhdHRyX2lkbiB7DQo+ICAgICAgICAg UVVFUllfQVRUUl9JRE5fUFNBX1NUQVRFICAgICAgICAgICAgICAgID0gMHgxNSwNCj4gICAgICAg ICBRVUVSWV9BVFRSX0lETl9QU0FfREFUQV9TSVpFICAgICAgICAgICAgPSAweDE2LA0KPiAgICAg ICAgIFFVRVJZX0FUVFJfSUROX1JFRl9DTEtfR0FUSU5HX1dBSVRfVElNRSA9IDB4MTcsDQo+ICsg ICAgICAgUVVFUllfQVRUUl9JRE5fV0JfRkxVU0hfU1RBVFVTICAgICAgICAgID0gMHgxQywNCj4g KyAgICAgICBRVUVSWV9BVFRSX0lETl9BVkFJTF9XQl9CVUZGX1NJWkUgICAgICAgPSAweDFELA0K PiArICAgICAgIFFVRVJZX0FUVFJfSUROX1dCX0JVRkZfTElGRV9USU1FX0VTVCAgICA9IDB4MUUs DQo+ICsgICAgICAgUVVFUllfQVRUUl9JRE5fQ1VSUl9XQl9CVUZGX1NJWkUgICAgICAgID0gMHgx RiwNCj4gIH07DQo+IA0KPiAgLyogRGVzY3JpcHRvciBpZG4gZm9yIFF1ZXJ5IHJlcXVlc3RzICov DQo+IEBAIC0xOTEsNyArMTk5LDcgQEAgZW51bSBkZXNjX2hlYWRlcl9vZmZzZXQgew0KPiAgfTsN Cj4gDQo+ICBlbnVtIHVmc19kZXNjX2RlZl9zaXplIHsNCj4gLSAgICAgICBRVUVSWV9ERVNDX0RF VklDRV9ERUZfU0laRSAgICAgICAgICAgICAgPSAweDQwLA0KPiArICAgICAgIFFVRVJZX0RFU0Nf REVWSUNFX0RFRl9TSVpFICAgICAgICAgICAgICA9IDB4NTksDQo+ICAgICAgICAgUVVFUllfREVT Q19DT05GSUdVUkFUSU9OX0RFRl9TSVpFICAgICAgID0gMHg5MCwNCj4gICAgICAgICBRVUVSWV9E RVNDX1VOSVRfREVGX1NJWkUgICAgICAgICAgICAgICAgPSAweDIzLA0KPiAgICAgICAgIFFVRVJZ X0RFU0NfSU5URVJDT05ORUNUX0RFRl9TSVpFICAgICAgICA9IDB4MDYsDQo+IEBAIC0yMTksNiAr MjI3LDcgQEAgZW51bSB1bml0X2Rlc2NfcGFyYW0gew0KPiAgICAgICAgIFVOSVRfREVTQ19QQVJB TV9QSFlfTUVNX1JTUkNfQ05UICAgICAgICA9IDB4MTgsDQo+ICAgICAgICAgVU5JVF9ERVNDX1BB UkFNX0NUWF9DQVBBQklMSVRJRVMgICAgICAgID0gMHgyMCwNCj4gICAgICAgICBVTklUX0RFU0Nf UEFSQU1fTEFSR0VfVU5JVF9TSVpFX00xICAgICAgPSAweDIyLA0KPiArICAgICAgIFVOSVRfREVT Q19QQVJBTV9XQl9CVUZfQUxMT0NfVU5JVFMgICAgICA9IDB4MjksDQo+ICB9Ow0KV2Ugc2hvdWxk IHJlYWxseSBjb21lIHVwIHdpdGggYSB3YXkgdG8gYXZvaWQgdGhpcyBhbm5veWluZyBoYWJpdCBv ZiBqZWRlYyB0byBrZWVwIGNoYW5naW5nIHRoZSBkZXNjcmlwdG9yIHNpemVzLg0KQnV0IHRoaXMg aXMgb3V0IG9mIHNjb3BlIG9mIHRoaXMgcGF0Y2hzZXQuDQoNCj4gDQo+ICAvKiBEZXZpY2UgZGVz Y3JpcHRvciBwYXJhbWV0ZXJzIG9mZnNldHMgaW4gYnl0ZXMqLw0KPiBAQCAtMjU4LDYgKzI2Nywx MCBAQCBlbnVtIGRldmljZV9kZXNjX3BhcmFtIHsNCj4gICAgICAgICBERVZJQ0VfREVTQ19QQVJB TV9QU0FfTUFYX0RBVEEgICAgICAgICAgPSAweDI1LA0KPiAgICAgICAgIERFVklDRV9ERVNDX1BB UkFNX1BTQV9UTVQgICAgICAgICAgICAgICA9IDB4MjksDQo+ICAgICAgICAgREVWSUNFX0RFU0Nf UEFSQU1fUFJEQ1RfUkVWICAgICAgICAgICAgID0gMHgyQSwNCj4gKyAgICAgICBERVZJQ0VfREVT Q19QQVJBTV9FWFRfVUZTX0ZFQVRVUkVfU1VQICAgPSAweDRGLA0KPiArICAgICAgIERFVklDRV9E RVNDX1BBUkFNX1dCX1VTX1JFRF9FTiAgICAgICAgICA9IDB4NTMsDQo+ICsgICAgICAgREVWSUNF X0RFU0NfUEFSQU1fV0JfVFlQRSAgICAgICAgICAgICAgID0gMHg1NCwNCj4gKyAgICAgICBERVZJ Q0VfREVTQ19QQVJBTV9XQl9TSEFSRURfQUxMT0NfVU5JVFMgPSAweDU1LA0KPiAgfTsNCj4gDQo+ ICAvKiBJbnRlcmNvbm5lY3QgZGVzY3JpcHRvciBwYXJhbWV0ZXJzIG9mZnNldHMgaW4gYnl0ZXMq Lw0KPiBAQCAtMzAyLDYgKzMxNSwxMSBAQCBlbnVtIGdlb21ldHJ5X2Rlc2NfcGFyYW0gew0KPiAg ICAgICAgIEdFT01FVFJZX0RFU0NfUEFSQU1fRU5NNF9NQVhfTlVNX1VOSVRTICA9IDB4M0UsDQo+ ICAgICAgICAgR0VPTUVUUllfREVTQ19QQVJBTV9FTk00X0NBUF9BREpfRkNUUiAgID0gMHg0MiwN Cj4gICAgICAgICBHRU9NRVRSWV9ERVNDX1BBUkFNX09QVF9MT0dfQkxLX1NJWkUgICAgPSAweDQ0 LA0KPiArICAgICAgIEdFT01FVFJZX0RFU0NfUEFSQU1fV0JfTUFYX0FMTE9DX1VOSVRTICA9IDB4 NEYsDQo+ICsgICAgICAgR0VPTUVUUllfREVTQ19QQVJBTV9XQl9NQVhfV0JfTFVOUyAgICAgID0g MHg1MywNCj4gKyAgICAgICBHRU9NRVRSWV9ERVNDX1BBUkFNX1dCX0JVRkZfQ0FQX0FESiAgICAg PSAweDU0LA0KPiArICAgICAgIEdFT01FVFJZX0RFU0NfUEFSQU1fV0JfU1VQX1JFRF9UWVBFICAg ICA9IDB4NTUsDQo+ICsgICAgICAgR0VPTUVUUllfREVTQ19QQVJBTV9XQl9TVVBfV0JfVFlQRSAg ICAgID0gMHg1NiwNCj4gIH07DQo+IA0KPiAgLyogSGVhbHRoIGRlc2NyaXB0b3IgcGFyYW1ldGVy cyBvZmZzZXRzIGluIGJ5dGVzKi8NCj4gQEAgLTMzMyw2ICszNTEsMTEgQEAgZW51bSB7DQo+ICAg ICAgICAgVUZTSENEX0FNUCAgICAgICAgICAgICAgPSAzLA0KPiAgfTsNCj4gDQo+ICsvKiBQb3Nz aWJsZSB2YWx1ZXMgZm9yIGRFeHRlbmRlZFVGU0ZlYXR1cmVzU3VwcG9ydCAqLw0KPiArZW51bSB7 DQo+ICsgICAgICAgVUZTX0RFVl9XUklURV9CT09TVEVSX1NVUCAgICAgICA9IEJJVCg4KSwNCj4g K307DQo+ICsNCj4gICNkZWZpbmUgUE9XRVJfREVTQ19NQVhfU0laRSAgICAgICAgICAgICAgICAg ICAgMHg2Mg0KPiAgI2RlZmluZSBQT1dFUl9ERVNDX01BWF9BQ1RWX0lDQ19MVkxTICAgICAgICAg ICAxNg0KPiANCj4gQEAgLTQ0Nyw2ICs0NzAsMzggQEAgZW51bSB1ZnNfZGV2X3B3cl9tb2RlIHsN Cj4gICAgICAgICBVRlNfUE9XRVJET1dOX1BXUl9NT0RFICA9IDMsDQo+ICB9Ow0KPiANCj4gK2Vu dW0gdWZzX2Rldl93Yl9idWZfYXZhaWxfc2l6ZSB7DQo+ICsgICAgICAgVUZTX1dCXzBfUEVSQ0VO VF9CVUZfUkVNQUlOID0gMHgwLA0KPiArICAgICAgIFVGU19XQl8xMF9QRVJDRU5UX0JVRl9SRU1B SU4gPSAweDEsDQo+ICsgICAgICAgVUZTX1dCXzIwX1BFUkNFTlRfQlVGX1JFTUFJTiA9IDB4MiwN Cj4gKyAgICAgICBVRlNfV0JfMzBfUEVSQ0VOVF9CVUZfUkVNQUlOID0gMHgzLA0KPiArICAgICAg IFVGU19XQl80MF9QRVJDRU5UX0JVRl9SRU1BSU4gPSAweDQsDQo+ICsgICAgICAgVUZTX1dCXzUw X1BFUkNFTlRfQlVGX1JFTUFJTiA9IDB4NSwNCj4gKyAgICAgICBVRlNfV0JfNjBfUEVSQ0VOVF9C VUZfUkVNQUlOID0gMHg2LA0KPiArICAgICAgIFVGU19XQl83MF9QRVJDRU5UX0JVRl9SRU1BSU4g PSAweDcsDQo+ICsgICAgICAgVUZTX1dCXzgwX1BFUkNFTlRfQlVGX1JFTUFJTiA9IDB4OCwNCj4g KyAgICAgICBVRlNfV0JfOTBfUEVSQ0VOVF9CVUZfUkVNQUlOID0gMHg5LA0KPiArICAgICAgIFVG U19XQl8xMDBfUEVSQ0VOVF9CVUZfUkVNQUlOID0gMHhBLA0KPiArfTsNCldoeSBkbyBuZWVkIGFs bCB0aGlzPw0KSnVzdCBkZWZpbmUgdGhlIHRocmVzaG9sZCB5b3UgbmVlZC4NCg0KPiArDQo+ICtl bnVtIHVmc19kZXZfd2JfYnVmX2xpZmVfdGltZV9lc3Qgew0KPiArICAgICAgIFVGU19XQl8wXzEw X1BFUkNFTlRfVVNFRCA9IDB4MSwNCj4gKyAgICAgICBVRlNfV0JfMTBfMjBfUEVSQ0VOVF9VU0VE ID0gMHgyLA0KPiArICAgICAgIFVGU19XQl8yMF8zMF9QRVJDRU5UX1VTRUQgPSAweDMsDQo+ICsg ICAgICAgVUZTX1dCXzMwXzQwX1BFUkNFTlRfVVNFRCA9IDB4NCwNCj4gKyAgICAgICBVRlNfV0Jf NDBfNTBfUEVSQ0VOVF9VU0VEID0gMHg1LA0KPiArICAgICAgIFVGU19XQl81MF82MF9QRVJDRU5U X1VTRUQgPSAweDYsDQo+ICsgICAgICAgVUZTX1dCXzYwXzcwX1BFUkNFTlRfVVNFRCA9IDB4NywN Cj4gKyAgICAgICBVRlNfV0JfNzBfODBfUEVSQ0VOVF9VU0VEID0gMHg4LA0KPiArICAgICAgIFVG U19XQl84MF85MF9QRVJDRU5UX1VTRUQgPSAweDksDQo+ICsgICAgICAgVUZTX1dCXzkwXzEwMF9Q RVJDRU5UX1VTRUQgPSAweEEsDQo+ICsgICAgICAgVUZTX1dCX01BWF9VU0VEID0gMHhCLA0KPiAr fTsNCkhlcmUgYWxzby4NCg0KDQo+ICsNCj4gK2VudW0gdWZzX2Rldl93Yl9idWZfdXNlcl9jYXBf Y29uZmlnIHsNCj4gKyAgICAgICBVRlNfV0JfQlVGRl9QUkVTRVJWRV9VU0VSX1NQQUNFID0gMSwN Cj4gKyAgICAgICBVRlNfV0JfQlVGRl9VU0VSX1NQQUNFX1JFRF9FTiA9IDIsDQo+ICt9Ow0KPiAg LyoqDQo+ICAgKiBzdHJ1Y3QgdXRwX2NtZF9yc3AgLSBSZXNwb25zZSBVUElVIHN0cnVjdHVyZQ0K PiAgICogQHJlc2lkdWFsX3RyYW5zZmVyX2NvdW50OiBSZXNpZHVhbCB0cmFuc2ZlciBjb3VudCBE Vy0zDQo+IEBAIC01MzcsNiArNTkyLDEwIEBAIHN0cnVjdCB1ZnNfZGV2X2luZm8gew0KPiAgICAg ICAgIHU4ICptb2RlbDsNCj4gICAgICAgICB1MTYgd3NwZWN2ZXJzaW9uOw0KPiAgICAgICAgIHUz MiBjbGtfZ2F0aW5nX3dhaXRfdXM7DQo+ICsgICAgICAgdTMyIGRfZXh0X3Vmc19mZWF0dXJlX3N1 cDsNCj4gKyAgICAgICB1OCBiX3diX2J1ZmZlcl90eXBlOw0KPiArICAgICAgIGJvb2wgd2JfY29u ZmlnX2x1bjsNCj4gKyAgICAgICBib29sIGtlZXBfdmNjX29uOw0KZG9jIHBsZWFzZSAtIHByb3Bl ciBzdHJ1Y3QgZG9jIHRoaXMgdGltZQ0KDQo+ICB9Ow0KPiANCj4gIC8qKg0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9zY3NpL3Vmcy91ZnNoY2QuYyBiL2RyaXZlcnMvc2NzaS91ZnMvdWZzaGNkLmMN Cj4gaW5kZXggZjRhYTEwZi4uNGNjMWZiNCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9zY3NpL3Vm cy91ZnNoY2QuYw0KPiArKysgYi9kcml2ZXJzL3Njc2kvdWZzL3Vmc2hjZC5jDQo+IEBAIC00Nyw2 ICs0Nyw3IEBADQo+ICAjaW5jbHVkZSAidW5pcHJvLmgiDQo+ICAjaW5jbHVkZSAidWZzLXN5c2Zz LmgiDQo+ICAjaW5jbHVkZSAidWZzX2JzZy5oIg0KPiArI2luY2x1ZGUgPGxpbnV4L2Jsa2Rldi5o Pg0KPiANCj4gICNkZWZpbmUgQ1JFQVRFX1RSQUNFX1BPSU5UUw0KPiAgI2luY2x1ZGUgPHRyYWNl L2V2ZW50cy91ZnMuaD4NCj4gQEAgLTI2Myw2ICsyNjQsMTMgQEAgc3RhdGljIGludCB1ZnNoY2Rf c2NhbGVfY2xrcyhzdHJ1Y3QgdWZzX2hiYSAqaGJhLA0KPiBib29sIHNjYWxlX3VwKTsNCj4gIHN0 YXRpYyBpcnFyZXR1cm5fdCB1ZnNoY2RfaW50cihpbnQgaXJxLCB2b2lkICpfX2hiYSk7DQo+ICBz dGF0aWMgaW50IHVmc2hjZF9jaGFuZ2VfcG93ZXJfbW9kZShzdHJ1Y3QgdWZzX2hiYSAqaGJhLA0K PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB1ZnNfcGFfbGF5ZXJfYXR0ciAq cHdyX21vZGUpOw0KPiArc3RhdGljIGJvb2wgdWZzaGNkX3diX3N1cChzdHJ1Y3QgdWZzX2hiYSAq aGJhKTsNCj4gK3N0YXRpYyBpbnQgdWZzaGNkX3diX2N0cmwoc3RydWN0IHVmc19oYmEgKmhiYSwg Ym9vbCBlbmFibGUpOw0KPiArc3RhdGljIGludCB1ZnNoY2Rfd2JfYnVmX2ZsdXNoX2VuYWJsZShz dHJ1Y3QgdWZzX2hiYSAqaGJhKTsNCj4gK3N0YXRpYyBpbnQgdWZzaGNkX3diX2J1Zl9mbHVzaF9k aXNhYmxlKHN0cnVjdCB1ZnNfaGJhICpoYmEpOw0KPiArc3RhdGljIGJvb2wgdWZzaGNkX3diX2lz X2J1Zl9mbHVzaF9uZWVkZWQoc3RydWN0IHVmc19oYmEgKmhiYSk7DQo+ICtzdGF0aWMgaW50IHVm c2hjZF93Yl90b2dnbGVfZmx1c2hfZHVyaW5nX2g4KHN0cnVjdCB1ZnNfaGJhICpoYmEsIGJvb2wN Cj4gc2V0KTsNCj4gKw0KPiAgc3RhdGljIGlubGluZSBib29sIHVmc2hjZF92YWxpZF90YWcoc3Ry dWN0IHVmc19oYmEgKmhiYSwgaW50IHRhZykNCj4gIHsNCj4gICAgICAgICByZXR1cm4gdGFnID49 IDAgJiYgdGFnIDwgaGJhLT5udXRyczsNCj4gQEAgLTI4NCw2ICsyOTIsMzggQEAgc3RhdGljIGlu bGluZSB2b2lkIHVmc2hjZF9kaXNhYmxlX2lycShzdHJ1Y3QgdWZzX2hiYQ0KPiAqaGJhKQ0KPiAg ICAgICAgIH0NCj4gIH0NCj4gDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgdWZzaGNkX3diX3RvZ2ds ZV9mbHVzaChzdHJ1Y3QgdWZzX2hiYSAqaGJhKQ0KPiArew0KPiArICAgICAgIC8qDQo+ICsgICAg ICAgICogUXVlcnkgZEF2YWlsYWJsZVdyaXRlQm9vc3RlckJ1ZmZlclNpemUgYXR0cmlidXRlIGFu ZCBlbmFibGUNCj4gKyAgICAgICAgKiB0aGUgV3JpdGUgQm9vc3RlckJ1ZmZlciBGbHVzaCBpZiBv bmx5IDMwJSBXcml0ZSBCb29zdGVyDQo+ICsgICAgICAgICogQnVmZmVyIGlzIGF2YWlsYWJsZS4N Cj4gKyAgICAgICAgKiBJbiByZWR1Y3Rpb24gY2FzZSwgZmx1c2ggb25seSBpZiAxMCUgaXMgYXZh aWxhYmxlDQo+ICsgICAgICAgICovDQo+ICsgICAgICAgaWYgKHVmc2hjZF93Yl9pc19idWZfZmx1 c2hfbmVlZGVkKGhiYSkpDQo+ICsgICAgICAgICAgICAgICB1ZnNoY2Rfd2JfYnVmX2ZsdXNoX2Vu YWJsZShoYmEpOw0KPiArICAgICAgIGVsc2UNCj4gKyAgICAgICAgICAgICAgIHVmc2hjZF93Yl9i dWZfZmx1c2hfZGlzYWJsZShoYmEpOw0KPiArfQ0KVGhlcmUgYXJlIHZvaWNlcyBjYWxsaW5nIHRv IHNldCBmbHVzaCBvbiBoaWJlcm5hdGUgb24gaW5pdCwgYW5kIG5ldmVyIHRvdWNoIGl0IGFnYWlu Lg0KSSB0aGluayB5b3UgbmVlZCwgYm90aCBpbiB5b3VyIGNvbW1pdCBsb2csIGFuZCBoZXJlIGFz IHdlbGwsDQphZGQgYSBjb21tZW50IGV4cGxhaW5pbmcgd2h5IHRvZ2dsaW5nIGlzIGV2ZW4gbmVl ZGVkLg0KDQo+ICsNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCB1ZnNoY2Rfd2JfY29uZmlnKHN0cnVj dCB1ZnNfaGJhICpoYmEpDQo+ICt7DQo+ICsgICAgICAgaW50IHJldDsNCj4gKw0KPiArICAgICAg IGlmICghdWZzaGNkX3diX3N1cChoYmEpKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiAr DQo+ICsgICAgICAgcmV0ID0gdWZzaGNkX3diX2N0cmwoaGJhLCB0cnVlKTsNCj4gKyAgICAgICBp ZiAocmV0KQ0KPiArICAgICAgICAgICAgICAgZGV2X2VycihoYmEtPmRldiwgIiVzOiBFbmFibGUg V0IgZmFpbGVkOiAlZFxuIiwgX19mdW5jX18sIHJldCk7DQo+ICsgICAgICAgZWxzZQ0KPiArICAg ICAgICAgICAgICAgZGV2X2luZm8oaGJhLT5kZXYsICIlczogV3JpdGUgQm9vc3RlciBDb25maWd1 cmVkXG4iLCBfX2Z1bmNfXyk7DQo+ICsgICAgICAgcmV0ID0gdWZzaGNkX3diX3RvZ2dsZV9mbHVz aF9kdXJpbmdfaDgoaGJhLCB0cnVlKTsNCj4gKyAgICAgICBpZiAocmV0KQ0KPiArICAgICAgICAg ICAgICAgZGV2X2VycihoYmEtPmRldiwgIiVzOiBFbiBXQiBmbHVzaCBkdXJpbmcgSDg6IGZhaWxl ZDogJWRcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCByZXQpOw0KPiAr fQ0KPiArDQo+ICBzdGF0aWMgdm9pZCB1ZnNoY2Rfc2NzaV91bmJsb2NrX3JlcXVlc3RzKHN0cnVj dCB1ZnNfaGJhICpoYmEpDQo+ICB7DQo+ICAgICAgICAgaWYgKGF0b21pY19kZWNfYW5kX3Rlc3Qo JmhiYS0+c2NzaV9ibG9ja19yZXFzX2NudCkpDQo+IEBAIC0xMTM5LDYgKzExNzksOCBAQCBzdGF0 aWMgaW50IHVmc2hjZF9kZXZmcmVxX3NjYWxlKHN0cnVjdCB1ZnNfaGJhDQo+ICpoYmEsIGJvb2wg c2NhbGVfdXApDQo+ICAgICAgICAgfQ0KPiANCj4gICAgICAgICByZXQgPSB1ZnNoY2Rfdm9wc19j bGtfc2NhbGVfbm90aWZ5KGhiYSwgc2NhbGVfdXAsIFBPU1RfQ0hBTkdFKTsNCj4gKyAgICAgICAv KiBFbmFibGUgV3JpdGUgQm9vc3RlciBpZiB3ZSBoYXZlIHNjYWxlZCB1cCBlbHNlIGRpc2FibGUg aXQgKi8NCj4gKyAgICAgICB1ZnNoY2Rfd2JfY3RybChoYmEsIHNjYWxlX3VwKTsNCj4gDQo+ICBv dXQ6DQo+ICAgICAgICAgdWZzaGNkX2Nsb2NrX3NjYWxpbmdfdW5wcmVwYXJlKGhiYSk7DQo+IEBA IC00NTcyLDYgKzQ2MTQsMzcgQEAgc3RhdGljIGludCB1ZnNoY2RfZ2V0X2x1X3dwKHN0cnVjdCB1 ZnNfaGJhICpoYmEsDQo+ICAgICAgICAgcmV0dXJuIHJldDsNCj4gIH0NCj4gDQo+ICsvKg0KPiAr ICogdWZzaGNkX2dldF93Yl9hbGxvY191bml0cyAtIHJldHVybnMNCj4gImRMVU51bVdyaXRlQm9v c3RlckJ1ZmZlckFsbG9jVW5pdHMiDQo+ICsgKiBAaGJhOiBwZXItYWRhcHRlciBpbnN0YW5jZQ0K PiArICogQGx1bjogVUZTIGRldmljZSBsdW4gaWQNCj4gKyAqIEBkX2x1bl93YmJfYXU6IHBvaW50 ZXIgdG8gYnVmZmVyIHRvIGhvbGQgdGhlIExVJ3MgYWxsb2MgdW5pdHMgaW5mbw0KPiArICoNCj4g KyAqIFJldHVybnMgMCBpbiBjYXNlIG9mIHN1Y2Nlc3MgYW5kIGRfbHVuX3diYl9hdSB3b3VsZCBi ZSByZXR1cm5lZA0KPiArICogUmV0dXJucyAtRU5PVFNVUFAgaWYgcmVhZGluZyBkX2x1bl93YmJf YXUgaXMgbm90IHN1cHBvcnRlZC4NCj4gKyAqIFJldHVybnMgLUVJTlZBTCBpbiBjYXNlIG9mIGlu dmFsaWQgcGFyYW1ldGVycyBwYXNzZWQgdG8gdGhpcyBmdW5jdGlvbi4NCj4gKyAqLw0KPiArc3Rh dGljIGludCB1ZnNoY2RfZ2V0X3diX2FsbG9jX3VuaXRzKHN0cnVjdCB1ZnNfaGJhICpoYmEsDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICB1OCBsdW4sDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICB1OCAqZF9sdW5fd2JiX2F1KQ0KPiArew0KPiArICAgICAgIGludCByZXQ7DQo+ ICsNCj4gKyAgICAgICBpZiAoIWRfbHVuX3diYl9hdSkNCj4gKyAgICAgICAgICAgICAgIHJldCA9 IC1FSU5WQUw7DQo+ICsNCj4gKyAgICAgICAvKiBXQiBjYW4gYmUgc3VwcG9ydGVkIG9ubHkgZnJv bSBMVTAuLkxVNyAqLw0KPiArICAgICAgIGVsc2UgaWYgKGx1biA+PSBVRlNfVVBJVV9NQVhfR0VO RVJBTF9MVU4pDQo+ICsgICAgICAgICAgICAgICByZXQgPSAtRU5PVFNVUFA7DQo+ICsgICAgICAg ZWxzZQ0KPiArICAgICAgICAgICAgICAgcmV0ID0gdWZzaGNkX3JlYWRfdW5pdF9kZXNjX3BhcmFt KGhiYSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHVuLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVTklUX0RFU0NfUEFS QU1fV0JfQlVGX0FMTE9DX1VOSVRTLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkX2x1bl93YmJfYXUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVvZigqZF9sdW5fd2JiX2F1KSk7DQo+ICsgICAgICAgcmV0dXJuIHJl dDsNCj4gK30NCj4gKw0KPiAgLyoqDQo+ICAgKiB1ZnNoY2RfZ2V0X2x1X3Bvd2VyX29uX3dwX3N0 YXR1cyAtIGdldCBMVSdzIHBvd2VyIG9uIHdyaXRlIHByb3RlY3QNCj4gICAqIHN0YXR1cw0KPiBA QCAtNTE5NCw2ICs1MjY3LDE2NSBAQCBzdGF0aWMgdm9pZA0KPiB1ZnNoY2RfYmtvcHNfZXhjZXB0 aW9uX2V2ZW50X2hhbmRsZXIoc3RydWN0IHVmc19oYmEgKmhiYSkNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgZXJyKTsNCj4gIH0NCj4gDQo+ICtzdGF0aWMgYm9v bCB1ZnNoY2Rfd2Jfc3VwKHN0cnVjdCB1ZnNfaGJhICpoYmEpDQo+ICt7DQo+ICsgICAgICAgcmV0 dXJuICgoaGJhLT5kZXZfaW5mby5kX2V4dF91ZnNfZmVhdHVyZV9zdXAgJg0KPiArICAgICAgICAg ICAgICAgICAgVUZTX0RFVl9XUklURV9CT09TVEVSX1NVUCkgJiYNCj4gKyAgICAgICAgICAgICAg ICAgKGhiYS0+ZGV2X2luZm8uYl93Yl9idWZmZXJfdHlwZQ0KPiArICAgICAgICAgICAgICAgICAg fHwgaGJhLT5kZXZfaW5mby53Yl9jb25maWdfbHVuKSk7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBp bnQgdWZzaGNkX3diX2N0cmwoc3RydWN0IHVmc19oYmEgKmhiYSwgYm9vbCBlbmFibGUpDQo+ICt7 DQo+ICsgICAgICAgaW50IHJldDsNCj4gKyAgICAgICBlbnVtIHF1ZXJ5X29wY29kZSBvcGNvZGU7 DQo+ICsNCj4gKyAgICAgICBpZiAoIXVmc2hjZF93Yl9zdXAoaGJhKSkNCj4gKyAgICAgICAgICAg ICAgIHJldHVybiAwOw0KPiArDQo+ICsgICAgICAgaWYgKGVuYWJsZSkNCj4gKyAgICAgICAgICAg ICAgIG9wY29kZSA9IFVQSVVfUVVFUllfT1BDT0RFX1NFVF9GTEFHOw0KPiArICAgICAgIGVsc2UN Cj4gKyAgICAgICAgICAgICAgIG9wY29kZSA9IFVQSVVfUVVFUllfT1BDT0RFX0NMRUFSX0ZMQUc7 DQpJZiBhbHJlYWR5IHdiX2VuYWJsZWQgaXMgZW5hYmxlZC9kaXNhYmxlZCBubyBwb2ludCB0byBz ZW5kIHRoZSBxdWVyeSByZXF1ZXN0DQoNCj4gKw0KPiArICAgICAgIHJldCA9IHVmc2hjZF9xdWVy eV9mbGFnX3JldHJ5KGhiYSwgb3Bjb2RlLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZX0ZMQUdfSUROX1dCX0VOLCBOVUxMKTsNCklmIHdlIGFyZSBpbiBhIG5v bi1zaGFyZWQtYnVmZmVyIG1vZGUgLSB5b3UgbmVlZCB0byBzZW5kIHRoZSBmbGFnIHRvIHRoZSBh cHBsaWNhYmxlIGx1bi4NCldCIGludHJvZHVjZXMgdGhlIGZpcnN0IG5vdC1kZXZpY2UtbGV2ZWwg ZmxhZ3MuDQpOZWVkIHRvIGFkanVzdCB1ZnNoY2RfcXVlcnlfZmxhZyBmb3IgaXQgLSBpbiBhIHBy ZXBhcmF0b3J5IHBhdGNoLi4uDQoNClNhbWUgZ29lcyB0byB0aGUgcmVzdCBvZiB5b3VyIGNvZGUg dGhhdCBxdWVyeSBmbGFncyBhbmQgYXR0cmlidXRlcw0KDQo+ICsgICAgICAgaWYgKHJldCkgew0K PiArICAgICAgICAgICAgICAgZGV2X2VycihoYmEtPmRldiwgIiVzIHdyaXRlIGJvb3N0ZXIgJXMg ZmFpbGVkICVkXG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgZW5hYmxl ID8gImVuYWJsZSIgOiAiZGlzYWJsZSIsIHJldCk7DQo+ICsgICAgICAgICAgICAgICByZXR1cm4g cmV0Ow0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIGhiYS0+d2JfZW5hYmxlZCA9IGVuYWJs ZTsNCj4gKyAgICAgICBkZXZfZGJnKGhiYS0+ZGV2LCAiJXMgd3JpdGUgYm9vc3RlciAlcyAlZFxu IiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgX19mdW5jX18sIGVuYWJsZSA/ICJlbmFibGUi IDogImRpc2FibGUiLCByZXQpOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIHJldDsNCj4gK30NCj4g Kw0KPiArc3RhdGljIGludCB1ZnNoY2Rfd2JfdG9nZ2xlX2ZsdXNoX2R1cmluZ19oOChzdHJ1Y3Qg dWZzX2hiYSAqaGJhLCBib29sIHNldCkNCj4gK3sNCj4gKyAgICAgICBpbnQgdmFsOw0KPiArDQo+ ICsgICAgICAgaWYgKHNldCkNCj4gKyAgICAgICAgICAgICAgIHZhbCA9ICBVUElVX1FVRVJZX09Q Q09ERV9TRVRfRkxBRzsNCj4gKyAgICAgICBlbHNlDQo+ICsgICAgICAgICAgICAgICB2YWwgPSBV UElVX1FVRVJZX09QQ09ERV9DTEVBUl9GTEFHOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIHVmc2hj ZF9xdWVyeV9mbGFnX3JldHJ5KGhiYSwgdmFsLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVVFUllfRkxBR19JRE5fV0JfQlVGRl9GTFVTSF9EVVJJTkdfSElCRVJOOCwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBpbnQgdWZzaGNkX3diX2J1Zl9mbHVzaF9lbmFibGUoc3RydWN0IHVmc19oYmEgKmhi YSkNCj4gK3sNCj4gKyAgICAgICBpbnQgcmV0Ow0KPiArDQo+ICsgICAgICAgaWYgKCF1ZnNoY2Rf d2Jfc3VwKGhiYSkgfHwgaGJhLT53Yl9idWZfZmx1c2hfZW5hYmxlZCkNCj4gKyAgICAgICAgICAg ICAgIHJldHVybiAwOw0KPiArDQo+ICsgICAgICAgcmV0ID0gdWZzaGNkX3F1ZXJ5X2ZsYWdfcmV0 cnkoaGJhLCBVUElVX1FVRVJZX09QQ09ERV9TRVRfRkxBRywNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWV9GTEFHX0lETl9XQl9CVUZGX0ZMVVNIX0VOLCBOVUxM KTsNCj4gKyAgICAgICBpZiAocmV0KQ0KPiArICAgICAgICAgICAgICAgZGV2X2VycihoYmEtPmRl diwgIiVzIFdCIC0gYnVmIGZsdXNoIGVuYWJsZSBmYWlsZWQgJWRcbiIsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIF9fZnVuY19fLCByZXQpOw0KPiArICAgICAgIGVsc2UNCj4gKyAgICAgICAg ICAgICAgIGhiYS0+d2JfYnVmX2ZsdXNoX2VuYWJsZWQgPSB0cnVlOw0KPiArDQo+ICsgICAgICAg ZGV2X2RiZyhoYmEtPmRldiwgIldCIC0gRmx1c2ggZW5hYmxlZDogJWRcbiIsIHJldCk7DQo+ICsg ICAgICAgcmV0dXJuIHJldDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCB1ZnNoY2Rfd2JfYnVm X2ZsdXNoX2Rpc2FibGUoc3RydWN0IHVmc19oYmEgKmhiYSkNCj4gK3sNCj4gKyAgICAgICBpbnQg cmV0Ow0KPiArDQo+ICsgICAgICAgaWYgKCF1ZnNoY2Rfd2Jfc3VwKGhiYSkgfHwgIWhiYS0+d2Jf YnVmX2ZsdXNoX2VuYWJsZWQpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gMDsNCj4gKw0KPiAr ICAgICAgIHJldCA9IHVmc2hjZF9xdWVyeV9mbGFnX3JldHJ5KGhiYSwNCj4gVVBJVV9RVUVSWV9P UENPREVfQ0xFQVJfRkxBRywNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWV9GTEFHX0lETl9XQl9CVUZGX0ZMVVNIX0VOLCBOVUxMKTsNCj4gKyAgICAgICBpZiAo cmV0KSB7DQo+ICsgICAgICAgICAgICAgICBkZXZfd2FybihoYmEtPmRldiwgIiVzOiBXQiAtIGJ1 ZiBmbHVzaCBkaXNhYmxlIGZhaWxlZCAlZFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg X19mdW5jX18sIHJldCk7DQo+ICsgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAgICAgIGhi YS0+d2JfYnVmX2ZsdXNoX2VuYWJsZWQgPSBmYWxzZTsNCj4gKyAgICAgICAgICAgICAgIGRldl9k YmcoaGJhLT5kZXYsICJXQiAtIEZsdXNoIGRpc2FibGVkOiAlZFxuIiwgcmV0KTsNCj4gKyAgICAg ICB9DQo+ICsNCj4gKyAgICAgICByZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICtzdGF0aWMgYm9v bCB1ZnNoY2Rfd2JfaXNfYnVmX2ZsdXNoX25lZWRlZChzdHJ1Y3QgdWZzX2hiYSAqaGJhKQ0KPiAr ew0KPiArICAgICAgIGludCByZXQ7DQo+ICsgICAgICAgdTMyIGN1cl9idWYsIHN0YXR1cywgYXZh aWxfYnVmOw0KPiArDQo+ICsgICAgICAgaWYgKCF1ZnNoY2Rfd2Jfc3VwKGhiYSkpDQo+ICsgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgICAgICByZXQgPSB1ZnNoY2RfcXVl cnlfYXR0cl9yZXRyeShoYmEsDQo+IFVQSVVfUVVFUllfT1BDT0RFX1JFQURfQVRUUiwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWV9BVFRSX0lETl9BVkFJTF9X Ql9CVUZGX1NJWkUsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg MCwgJmF2YWlsX2J1Zik7DQo+ICsgICAgICAgaWYgKHJldCkgew0KPiArICAgICAgICAgICAgICAg ZGV2X3dhcm4oaGJhLT5kZXYsICIlcyBkQXZhaWxhYmxlV3JpdGVCb29zdGVyQnVmZmVyU2l6ZSBy ZWFkDQo+IGZhaWxlZCAlZFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19f LCByZXQpOw0KPiArICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiArICAgICAgIH0NCj4g Kw0KPiArICAgICAgIHJldCA9IHVmc2hjZF92b3BzX2dldF91c2VyX2NhcF9tb2RlKGhiYSk7DQo+ ICsgICAgICAgaWYgKHJldCA8PSAwKSB7DQo+ICsgICAgICAgICAgICAgICBkZXZfZGJnKGhiYS0+ ZGV2LCAiR2V0IHVzZXItY2FwIHJlZHVjdGlvbiBtb2RlOiBmYWlsZWQ6ICVkXG4iLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICByZXQpOw0KPiArICAgICAgICAgICAgICAgLyogTW9zdCBjb21t b25seSB1c2VkICovDQo+ICsgICAgICAgICAgICAgICByZXQgPSBVRlNfV0JfQlVGRl9QUkVTRVJW RV9VU0VSX1NQQUNFOw0KPiArICAgICAgIH0NCk5vdCBzdXJlIEkgdW5kZXJzdGFuZCBob3cgZmx1 c2ggaXMgcmVsYXRlZCB0byB0aGUgcmVkdWNlZC9ub24tcmVkdWNlZCBidWZmZXIgY29uZmlnPw0K DQo+ICsNCj4gKyAgICAgICBoYmEtPmRldl9pbmZvLmtlZXBfdmNjX29uID0gZmFsc2U7DQo+ICsg ICAgICAgaWYgKHJldCA9PSBVRlNfV0JfQlVGRl9VU0VSX1NQQUNFX1JFRF9FTikgew0KPiArICAg ICAgICAgICAgICAgaWYgKGF2YWlsX2J1ZiA8PSBVRlNfV0JfMTBfUEVSQ0VOVF9CVUZfUkVNQUlO KSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGhiYS0+ZGV2X2luZm8ua2VlcF92Y2Nfb24g PSB0cnVlOw0KPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCj4gKyAgICAg ICAgICAgICAgIH0NCj4gKyAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCj4gKyAgICAgICB9 IGVsc2UgaWYgKHJldCA9PSBVRlNfV0JfQlVGRl9QUkVTRVJWRV9VU0VSX1NQQUNFKSB7DQo+ICsg ICAgICAgICAgICAgICByZXQgPSB1ZnNoY2RfcXVlcnlfYXR0cl9yZXRyeShoYmEsDQo+IFVQSVVf UVVFUllfT1BDT0RFX1JFQURfQVRUUiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZX0FUVFJfSUROX0NVUlJfV0JfQlVGRl9TSVpFLA0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwgJmN1cl9idWYp Ow0KPiArICAgICAgICAgICAgICAgaWYgKHJldCkgew0KPiArICAgICAgICAgICAgICAgICAgICAg ICBkZXZfZXJyKGhiYS0+ZGV2LCAiJXMgZEN1cldyaXRlQm9vc3RlckJ1ZmZlclNpemUgcmVhZCBm YWlsZWQNCj4gJWRcbiIsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVu Y19fLCByZXQpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQo+ICsg ICAgICAgICAgICAgICB9DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGlmICghY3VyX2J1Zikgew0K PiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfaW5mbyhoYmEtPmRldiwgImRDdXJXQkJ1Zjog JWQgV0IgZGlzYWJsZWQgdW50aWwgZnJlZS0NCj4gc3BhY2UgaXMgYXZhaWxhYmxlXG4iLA0KPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJfYnVmKTsNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KPiArICAgICAgICAgICAgICAgfQ0KPiArDQo+ICsg ICAgICAgICAgICAgICByZXQgPSB1ZnNoY2RfZ2V0X2VlX3N0YXR1cyhoYmEsICZzdGF0dXMpOw0K UmVzcG9uZGluZyB0byB1cmdlbnQgZmx1c2ggZXhjZXB0aW9uIGV2ZW50LCBzaG91bGQgeW91IGRl Y2lkZSB0byBhZGQgaXQsDQpTaG91bGQgYmUgZG9uZSBhcyBwYXJ0IG9mIHVmc2hjZF9leGNlcHRp b25fZXZlbnRfaGFuZGxlciwgYW5kIG5vdCBoZXJlLg0KDQo+ICsgICAgICAgICAgICAgICBpZiAo cmV0KSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRldl9lcnIoaGJhLT5kZXYsICIlczog ZmFpbGVkIHRvIGdldCBleGNlcHRpb24gc3RhdHVzICVkXG4iLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIF9fZnVuY19fLCByZXQpOw0KPiArICAgICAgICAgICAgICAgICAgICAg ICBpZiAoYXZhaWxfYnVmIDwgVUZTX1dCXzQwX1BFUkNFTlRfQlVGX1JFTUFJTikgew0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhiYS0+ZGV2X2luZm8ua2VlcF92Y2Nfb24gPSB0 cnVlOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KPiAr ICAgICAgICAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVy biBmYWxzZTsNCj4gKyAgICAgICAgICAgICAgIH0NCj4gKw0KPiArICAgICAgICAgICAgICAgc3Rh dHVzICY9IGhiYS0+ZWVfY3RybF9tYXNrOw0KPiArDQo+ICsgICAgICAgICAgICAgICBpZiAoKHN0 YXR1cyAmIE1BU0tfRUVfVVJHRU5UX0JLT1BTKSB8fA0KPiArICAgICAgICAgICAgICAgICAgIChh dmFpbF9idWYgPCBVRlNfV0JfNDBfUEVSQ0VOVF9CVUZfUkVNQUlOKSkgew0KPiArICAgICAgICAg ICAgICAgICAgICAgICBoYmEtPmRldl9pbmZvLmtlZXBfdmNjX29uID0gdHJ1ZTsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQo+ICsgICAgICAgICAgICAgICB9DQo+ICsg ICAgICAgfQ0KPiArICAgICAgIHJldHVybiBmYWxzZTsNClRoaXMgZnVuY3Rpb24gZm9sbG93IHNv bWUgd2lyZWQgbG9naWMsIHRoYXQgbmVlZHMgdG8gYmUgZnVydGhlciBleHBsYWluZWQNCg0KPiAr fQ0KPiArDQo+ICAvKioNCj4gICAqIHVmc2hjZF9leGNlcHRpb25fZXZlbnRfaGFuZGxlciAtIGhh bmRsZSBleGNlcHRpb25zIHJhaXNlZCBieSBkZXZpY2UNCj4gICAqIEB3b3JrOiBwb2ludGVyIHRv IHdvcmsgZGF0YQ0KPiBAQCAtNjYyOSw3ICs2ODYxLDggQEAgc3RhdGljIGludCB1ZnNfZ2V0X2Rl dmljZV9kZXNjKHN0cnVjdCB1ZnNfaGJhDQo+ICpoYmEpDQo+ICAgICAgICAgaW50IGVycjsNCj4g ICAgICAgICBzaXplX3QgYnVmZl9sZW47DQo+ICAgICAgICAgdTggbW9kZWxfaW5kZXg7DQo+IC0g ICAgICAgdTggKmRlc2NfYnVmOw0KPiArICAgICAgIHU4ICpkZXNjX2J1Ziwgd2JfYnVmWzRdOw0K PiArICAgICAgIHUzMiBsdW4sIHJlczsNCj4gICAgICAgICBzdHJ1Y3QgdWZzX2Rldl9pbmZvICpk ZXZfaW5mbyA9ICZoYmEtPmRldl9pbmZvOw0KPiANCj4gICAgICAgICBidWZmX2xlbiA9IG1heF90 KHNpemVfdCwgaGJhLT5kZXNjX3NpemUuZGV2X2Rlc2MsDQo+IEBAIC02NjYwLDYgKzY4OTMsNDAg QEAgc3RhdGljIGludCB1ZnNfZ2V0X2RldmljZV9kZXNjKHN0cnVjdCB1ZnNfaGJhDQo+ICpoYmEp DQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY19idWZbREVWSUNF X0RFU0NfUEFSQU1fU1BFQ19WRVIgKyAxXTsNCj4gDQo+ICAgICAgICAgbW9kZWxfaW5kZXggPSBk ZXNjX2J1ZltERVZJQ0VfREVTQ19QQVJBTV9QUkRDVF9OQU1FXTsNCj4gKyAgICAgICAvKiBFbmFi bGUgV0Igb25seSBmb3IgVUZTLTMuMSBPUiBpZiBkZXNjIGxlbiA+PSAweDU5ICovDQo+ICsgICAg ICAgaWYgKGRldl9pbmZvLT53c3BlY3ZlcnNpb24gPj0gMHgzMTApIHsNCj4gKyAgICAgICAgICAg ICAgIGhiYS0+ZGV2X2luZm8uZF9leHRfdWZzX2ZlYXR1cmVfc3VwID0NCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgZGVzY19idWZbREVWSUNFX0RFU0NfUEFSQU1fRVhUX1VGU19GRUFUVVJFX1NV UF0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDw8IDI0IHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGVzY19idWZb REVWSUNFX0RFU0NfUEFSQU1fRVhUX1VGU19GRUFUVVJFX1NVUCArIDFdDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8PCAx NiB8DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGRlc2NfYnVmW0RFVklDRV9ERVNDX1BBUkFN X0VYVF9VRlNfRkVBVFVSRV9TVVAgKyAyXQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDwgOCB8DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgIGRlc2NfYnVmW0RFVklDRV9ERVNDX1BBUkFNX0VYVF9VRlNfRkVBVFVSRV9T VVAgKyAzXTsNCj4gKw0KPiArICAgICAgICAgICAgICAgaGJhLT5kZXZfaW5mby5iX3diX2J1ZmZl cl90eXBlID0NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGVzY19idWZbREVWSUNFX0RFU0Nf UEFSQU1fV0JfVFlQRV07DQo+ICsNCj4gKyAgICAgICAgICAgICAgIGlmIChoYmEtPmRldl9pbmZv LmJfd2JfYnVmZmVyX3R5cGUpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc2tpcF91 bml0X2Rlc2M7DQpDb21tZW50IHBsZWFzZSwgZS5nLjoNCi8qIGJXcml0ZUJvb3N0ZXJCdWZmZXJU eXBlIGluZGljYXRlcyB0aGF0IHRoZSBXQiBidWZmZXIgaXMgY29uZmlndXJlZCBhcyBhIHNoYXJl ZCBidWZmZXIgbW9kZSAqLw0KQW5kIGluc3RlYWQgdGhlIGdvdG8gcGFjayBpdGVyYXRpbmcgdGhl IHVuaXQgZGVzY3JpcHRvcnMgaW4gYSBoZWxwZXI/DQoNCj4gKw0KPiArICAgICAgICAgICAgICAg aGJhLT5kZXZfaW5mby53Yl9jb25maWdfbHVuID0gZmFsc2U7DQo+ICsgICAgICAgICAgICAgICBm b3IgKGx1biA9IDA7IGx1biA8IFVGU19VUElVX01BWF9HRU5FUkFMX0xVTjsgbHVuKyspIHsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgbWVtc2V0KHdiX2J1ZiwgMCwgc2l6ZW9mKHdiX2J1Zikp Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSB1ZnNoY2RfZ2V0X3diX2FsbG9jX3Vu aXRzKGhiYSwgbHVuLCB3Yl9idWYpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJy KQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KPiArDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgIHJlcyA9IHdiX2J1ZlswXSA8PCAyNCB8IHdiX2J1ZlsxXSA8PCAx NiB8DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2JfYnVmWzJdIDw8IDggfCB3 Yl9idWZbM107DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMpIHsNCj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBoYmEtPmRldl9pbmZvLndiX2NvbmZpZ19sdW4gPSB0 cnVlOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KTWF5YmUgeW91 IHdhbnQgdG8gYmUgYXdhcmUgd2hpY2ggbHVucyBoYXMgYSBXQiBidWZmZXIsIGFuZCBvZiBpdHMg V0IgYnVmZmVyIHNpemUuDQpBbmQgYXMgdGhlIGNsb2NrIHNjYWxpbmcgbWVjaGFuaXNtIGlzIHVu d2FyZSBvZiB3aGljaCB3cml0ZXMgZ29lcyB0byB3aGljaCBsdW4sDQpFeHBsYWluIHRoYXQgYXMg d2VsbC4NCg0KPiArICAgICAgICAgICAgICAgICAgICAgICB9DQo+ICsgICAgICAgICAgICAgICB9 DQo+ICsgICAgICAgfQ0KPiArDQo+ICtza2lwX3VuaXRfZGVzYzoNCj4gICAgICAgICBlcnIgPSB1 ZnNoY2RfcmVhZF9zdHJpbmdfZGVzYyhoYmEsIG1vZGVsX2luZGV4LA0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZkZXZfaW5mby0+bW9kZWwsIFNEX0FTQ0lJX1NURCk7 DQo+ICAgICAgICAgaWYgKGVyciA8IDApIHsNCj4gQEAgLTcxNjIsNiArNzQyOSw3IEBAIHN0YXRp YyBpbnQgdWZzaGNkX3Byb2JlX2hiYShzdHJ1Y3QgdWZzX2hiYSAqaGJhLA0KPiBib29sIGFzeW5j KQ0KPiANCj4gICAgICAgICAvKiBzZXQgdGhlIHN0YXRlIGFzIG9wZXJhdGlvbmFsIGFmdGVyIHN3 aXRjaGluZyB0byBkZXNpcmVkIGdlYXIgKi8NCj4gICAgICAgICBoYmEtPnVmc2hjZF9zdGF0ZSA9 IFVGU0hDRF9TVEFURV9PUEVSQVRJT05BTDsNCj4gKyAgICAgICB1ZnNoY2Rfd2JfY29uZmlnKGhi YSk7DQpFbmFibGluZyBXQiByZWdhcmRsZXNzIG9mIGNsb2NrIHNjYWxpbmcgb24gaW5pdD8NCldo eSBub3QganVzdCB1ZnNoY2Rfd2JfdG9nZ2xlX2ZsdXNoX2R1cmluZ19oOCgpDQoNCj4gDQo+ICAg ICAgICAgLyogRW5hYmxlIEF1dG8tSGliZXJuYXRlIGlmIGNvbmZpZ3VyZWQgKi8NCj4gICAgICAg ICB1ZnNoY2RfYXV0b19oaWJlcm44X2VuYWJsZShoYmEpOw0KPiBAQCAtNzgyMywxMiArODA5MSwx NiBAQCBzdGF0aWMgdm9pZCB1ZnNoY2RfdnJlZ19zZXRfbHBtKHN0cnVjdCB1ZnNfaGJhDQo+ICpo YmEpDQo+ICAgICAgICAgICoNCj4gICAgICAgICAgKiBJZ25vcmUgdGhlIGVycm9yIHJldHVybmVk IGJ5IHVmc2hjZF90b2dnbGVfdnJlZygpIGFzIGRldmljZSBpcyBhbnl3YXkNCj4gICAgICAgICAg KiBpbiBsb3cgcG93ZXIgc3RhdGUgd2hpY2ggd291bGQgc2F2ZSBzb21lIHBvd2VyLg0KPiArICAg ICAgICAqDQo+ICsgICAgICAgICogSWYgV3JpdGUgQm9vc3RlciBpcyBlbmFibGVkIGFuZCB0aGUg ZGV2aWNlIG5lZWRzIHRvIGZsdXNoIHRoZSBXQg0KPiArICAgICAgICAqIGJ1ZmZlciBPUiBpZiBi a29wcyBzdGF0dXMgaXMgdXJnZW50IGZvciBXQiwga2VlcCBWY2Mgb24uDQpJIGFtIG5vdCBzdXJl IHRoYXQgeW91IHdhbnQgdG8gZW50YWlsIFdCIGFuZCBia29wcyB0b2dldGhlciBpbiB0aGUgc2Ft ZSBwYXRjaC4NCklmIHlvdSBhcmUgY2hhbmdpbmcgdGhlIGxvZ2ljIG9mIHRoaXMgZnVuY3Rpb24g d2l0aCByZXNwZWN0IG9mIGJrb3BzIC0gDQpEbyB0aGF0IEluIGEgc2VwYXJhdGUgcGF0Y2gsIG5v dCByZWxhdGVkIHRvIFdCLg0KDQo+ICAgICAgICAgICovDQo+ICAgICAgICAgaWYgKHVmc2hjZF9p c191ZnNfZGV2X3Bvd2Vyb2ZmKGhiYSkgJiYgdWZzaGNkX2lzX2xpbmtfb2ZmKGhiYSkgJiYNCj4g ICAgICAgICAgICAgIWhiYS0+ZGV2X2luZm8uaXNfbHVfcG93ZXJfb25fd3ApIHsNCj4gICAgICAg ICAgICAgICAgIHVmc2hjZF9zZXR1cF92cmVnKGhiYSwgZmFsc2UpOw0KPiAgICAgICAgIH0gZWxz ZSBpZiAoIXVmc2hjZF9pc191ZnNfZGV2X2FjdGl2ZShoYmEpKSB7DQo+IC0gICAgICAgICAgICAg ICB1ZnNoY2RfdG9nZ2xlX3ZyZWcoaGJhLT5kZXYsIGhiYS0+dnJlZ19pbmZvLnZjYywgZmFsc2Up Ow0KPiArICAgICAgICAgICAgICAgaWYgKCFoYmEtPmRldl9pbmZvLmtlZXBfdmNjX29uKQ0KPiAr ICAgICAgICAgICAgICAgICAgICAgICB1ZnNoY2RfdG9nZ2xlX3ZyZWcoaGJhLT5kZXYsIGhiYS0+ dnJlZ19pbmZvLnZjYywgZmFsc2UpOw0KPiAgICAgICAgICAgICAgICAgaWYgKCF1ZnNoY2RfaXNf bGlua19hY3RpdmUoaGJhKSkgew0KPiAgICAgICAgICAgICAgICAgICAgICAgICB1ZnNoY2RfY29u ZmlnX3ZyZWdfbHBtKGhiYSwgaGJhLT52cmVnX2luZm8udmNjcSk7DQo+ICAgICAgICAgICAgICAg ICAgICAgICAgIHVmc2hjZF9jb25maWdfdnJlZ19scG0oaGJhLCBoYmEtPnZyZWdfaW5mby52Y2Nx Mik7DQo+IEBAIC03OTUyLDExICs4MjI0LDE2IEBAIHN0YXRpYyBpbnQgdWZzaGNkX3N1c3BlbmQo c3RydWN0IHVmc19oYmEgKmhiYSwNCj4gZW51bSB1ZnNfcG1fb3AgcG1fb3ApDQo+ICAgICAgICAg ICAgICAgICAgICAgICAgIC8qIG1ha2Ugc3VyZSB0aGF0IGF1dG8gYmtvcHMgaXMgZGlzYWJsZWQg Ki8NCj4gICAgICAgICAgICAgICAgICAgICAgICAgdWZzaGNkX2Rpc2FibGVfYXV0b19ia29wcyho YmEpOw0KPiAgICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICAgICAgICAgdWZzaGNkX3diX3Rv Z2dsZV9mbHVzaChoYmEpOw0KPiArICAgICAgIH0gZWxzZSBpZiAoIXVmc2hjZF9pc19ydW50aW1l X3BtKHBtX29wKSkgew0KPiArICAgICAgICAgICAgICAgdWZzaGNkX3diX2J1Zl9mbHVzaF9kaXNh YmxlKGhiYSk7DQo+ICsgICAgICAgICAgICAgICBoYmEtPmRldl9pbmZvLmtlZXBfdmNjX29uID0g ZmFsc2U7DQo+ICAgICAgICAgfQ0KPiANCj4gICAgICAgICBpZiAoKHJlcV9kZXZfcHdyX21vZGUg IT0gaGJhLT5jdXJyX2Rldl9wd3JfbW9kZSkgJiYNCj4gLSAgICAgICAgICAgICgodWZzaGNkX2lz X3J1bnRpbWVfcG0ocG1fb3ApICYmICFoYmEtPmF1dG9fYmtvcHNfZW5hYmxlZCkgfHwNCj4gLSAg ICAgICAgICAgICAgIXVmc2hjZF9pc19ydW50aW1lX3BtKHBtX29wKSkpIHsNCj4gKyAgICAgICAg ICAgKCh1ZnNoY2RfaXNfcnVudGltZV9wbShwbV9vcCkgJiYgKCFoYmEtPmF1dG9fYmtvcHNfZW5h YmxlZCkNCj4gKyAgICAgICAgICAgICAmJiAhaGJhLT53Yl9idWZfZmx1c2hfZW5hYmxlZCkgfHwN Cj4gKyAgICAgICAgICAgICF1ZnNoY2RfaXNfcnVudGltZV9wbShwbV9vcCkpKSB7DQo+ICAgICAg ICAgICAgICAgICAvKiBlbnN1cmUgdGhhdCBia29wcyBpcyBkaXNhYmxlZCAqLw0KPiAgICAgICAg ICAgICAgICAgdWZzaGNkX2Rpc2FibGVfYXV0b19ia29wcyhoYmEpOw0KPiAgICAgICAgICAgICAg ICAgcmV0ID0gdWZzaGNkX3NldF9kZXZfcHdyX21vZGUoaGJhLCByZXFfZGV2X3B3cl9tb2RlKTsN Cj4gQEAgLTgwNzgsNiArODM1NSw3IEBAIHN0YXRpYyBpbnQgdWZzaGNkX3Jlc3VtZShzdHJ1Y3Qg dWZzX2hiYSAqaGJhLA0KPiBlbnVtIHVmc19wbV9vcCBwbV9vcCkNCj4gICAgICAgICAgICAgICAg ICAgICAgICAgZ290byB2ZW5kb3Jfc3VzcGVuZDsNCj4gICAgICAgICB9DQo+IA0KPiArICAgICAg IHVmc2hjZF93Yl9idWZfZmx1c2hfZGlzYWJsZShoYmEpOw0KPiAgICAgICAgIGlmICghdWZzaGNk X2lzX3Vmc19kZXZfYWN0aXZlKGhiYSkpIHsNCj4gICAgICAgICAgICAgICAgIHJldCA9IHVmc2hj ZF9zZXRfZGV2X3B3cl9tb2RlKGhiYSwgVUZTX0FDVElWRV9QV1JfTU9ERSk7DQo+ICAgICAgICAg ICAgICAgICBpZiAocmV0KQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Vmcy91ZnNoY2Qu aCBiL2RyaXZlcnMvc2NzaS91ZnMvdWZzaGNkLmgNCj4gaW5kZXggOGY1MTZiMi4uNmYzNmZmMyAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9zY3NpL3Vmcy91ZnNoY2QuaA0KPiArKysgYi9kcml2ZXJz L3Njc2kvdWZzL3Vmc2hjZC5oDQo+IEBAIC0zMjcsNiArMzI3LDcgQEAgc3RydWN0IHVmc19oYmFf dmFyaWFudF9vcHMgew0KPiAgICAgICAgIHZvaWQgICAgKCpkYmdfcmVnaXN0ZXJfZHVtcCkoc3Ry dWN0IHVmc19oYmEgKmhiYSk7DQo+ICAgICAgICAgaW50ICAgICAoKnBoeV9pbml0aWFsaXphdGlv bikoc3RydWN0IHVmc19oYmEgKik7DQo+ICAgICAgICAgdm9pZCAgICAoKmRldmljZV9yZXNldCko c3RydWN0IHVmc19oYmEgKmhiYSk7DQo+ICsgICAgICAgdTMyICAgICAoKmdldF91c2VyX2NhcF9t b2RlKShzdHJ1Y3QgdWZzX2hiYSAqaGJhKTsNCk1ha2UgdGhlIG5hbWUgaW5kaWNhdGUgdGhhdCB0 aGlzIGlzIFdCIHJlbGF0ZWQ/DQoNCj4gIH07DQo+IA0KPiAgLyogY2xvY2sgZ2F0aW5nIHN0YXRl ICAqLw0KPiBAQCAtNzMxLDYgKzczMiw4IEBAIHN0cnVjdCB1ZnNfaGJhIHsNCj4gDQo+ICAgICAg ICAgc3RydWN0IGRldmljZSAgICAgICAgICAgYnNnX2RldjsNCj4gICAgICAgICBzdHJ1Y3QgcmVx dWVzdF9xdWV1ZSAgICAqYnNnX3F1ZXVlOw0KPiArICAgICAgIGJvb2wgd2JfYnVmX2ZsdXNoX2Vu YWJsZWQ7DQo+ICsgICAgICAgYm9vbCB3Yl9lbmFibGVkOw0KPiAgfTsNCj4gDQo+ICAvKiBSZXR1 cm5zIHRydWUgaWYgY2xvY2tzIGNhbiBiZSBnYXRlZC4gT3RoZXJ3aXNlIGZhbHNlICovDQo+IEBA IC0xMTIzLDQgKzExMjYsMTAgQEAgc3RhdGljIGlubGluZSB1OCB1ZnNoY2Rfc2NzaV90b191cGl1 X2x1bih1bnNpZ25lZA0KPiBpbnQgc2NzaV9sdW4pDQo+ICBpbnQgdWZzaGNkX2R1bXBfcmVncyhz dHJ1Y3QgdWZzX2hiYSAqaGJhLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbGVuLA0KPiAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICpwcmVmaXgpOw0KPiANCj4gK3N0YXRpYyBpbmxpbmUg dW5zaWduZWQgaW50IHVmc2hjZF92b3BzX2dldF91c2VyX2NhcF9tb2RlKHN0cnVjdCB1ZnNfaGJh DQo+ICpoYmEpDQo+ICt7DQo+ICsgICAgICAgaWYgKGhiYS0+dm9wcyAmJiBoYmEtPnZvcHMtPmdl dF91c2VyX2NhcF9tb2RlKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIGhiYS0+dm9wcy0+Z2V0 X3VzZXJfY2FwX21vZGUoaGJhKTsNCj4gKyAgICAgICByZXR1cm4gMDsNCj4gK30NCj4gICNlbmRp ZiAvKiBFbmQgb2YgSGVhZGVyICovDQo+IC0tDQo+IFF1YWxjb21tIElubm92YXRpb24gQ2VudGVy LCBJbmMuIGlzIGEgbWVtYmVyIG9mIENvZGUgQXVyb3JhIEZvcnVtLCBhDQo+IExpbnV4IEZvdW5k YXRpb24gQ29sbGFib3JhdGl2ZSBQcm9qZWN0Lg0KDQoNClRoYW5rcywNCkF2cmkNCg==