From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.5 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7B1DCC5518A for ; Wed, 22 Apr 2020 07:49:41 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 384DB2070B for ; Wed, 22 Apr 2020 07:49:41 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="kpqNx2m2" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 384DB2070B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C7A246E9EA; Wed, 22 Apr 2020 07:49:40 +0000 (UTC) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2058.outbound.protection.outlook.com [40.107.92.58]) by gabe.freedesktop.org (Postfix) with ESMTPS id 46BB96E9E5 for ; Wed, 22 Apr 2020 07:49:39 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MZiqbUuB3zhgNYIyr2VC6Y5Ef6SU5KXzV2jv2loPOt8rQ0olX+Ej3TaNWWmHrqkyHJdOBUmlMO08ugL8xDlU4TOZY00Nb7B7NyLnPvcfNpfkVi5P5wUFQl9az/ALPHdUvMjlx66ehAgq526aQZYSgzK4913HGT3Ft/WFl/jYfq7wsxmzekIRvGnDE9WzrPjclB9MHyduicqTBIOfitjSu5Hc17mD9MHEQhODNzX0bEy57iTATVoTQ2TqlIFHSBQpGsnuFeS24CO5v+Ad8RyoHFMSgkHktlo9le2qM+fniZJM5RRREcloZbEbsqMDFU5zc3x1Ue/VGmQ51JT2oyX3lg== 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=r6LeO13RiVeZO4SwKp2Fomnef0GNuY8+8hPpbXwCl6U=; b=bcgjKbDPrccfCbyetUc8yYUet3pJlb/fQ3FC+i7UayrtPrLdt0YsTV7EEDr9vDdjhBhygwBEUxeVAcyydDe1m98jcAKzyYbcFDYTVK6PCXU89hyHVHd3XjADsVmtwvXtQNPGHAqtDB4OtSrTKLyAXw7Z3SAUgIcCgmqw1BvcmZ8C2BtJX8CmBYE+jvAuq8SV26uXMuDlQ6C/qhzZib+vA4taU9ttNhTp28tm59Aq9HoI/juFTVhyHZ91SP9W4Rn/WnIfSG6b4up2C8ruNNiLS2NztaV1jZyAAUvOGld4DgsuzJ9+HlaAdB/t9cPLUPzM1DJ54jhGJqJ4AbEanDPV0w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=r6LeO13RiVeZO4SwKp2Fomnef0GNuY8+8hPpbXwCl6U=; b=kpqNx2m2sdBvN6bcuQDohC6wR9hlMKU2KeYz9asMHbgilq0WErZ4ql0CbBm28HcEcfyXxrHJAJX5ZKXli4xMoUiO3Bc4SULeB1EsQVwBoagg+140v3EnO+o8IcKxYcLxeI6z1R6UeV7nMgC92dF3U2vuBr+sBEHdovZl8GgCPgA= Received: from MN2PR12MB3039.namprd12.prod.outlook.com (2603:10b6:208:c9::27) by MN2PR12MB4551.namprd12.prod.outlook.com (2603:10b6:208:263::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.29; Wed, 22 Apr 2020 07:49:33 +0000 Received: from MN2PR12MB3039.namprd12.prod.outlook.com ([fe80::58b5:b730:f260:a425]) by MN2PR12MB3039.namprd12.prod.outlook.com ([fe80::58b5:b730:f260:a425%7]) with mapi id 15.20.2921.030; Wed, 22 Apr 2020 07:49:33 +0000 From: "Tao, Yintian" To: "Koenig, Christian" , "Liu, Monk" , "Liu, Shaoyun" , "Kuehling, Felix" Subject: RE: [PATCH] drm/amdgpu: refine kiq access register Thread-Topic: [PATCH] drm/amdgpu: refine kiq access register Thread-Index: AQHWGGByviDGdSAj+kywaUPnLT4nHqiEuYbggAADdwCAAAEdoIAAA7eAgAAAYhA= Date: Wed, 22 Apr 2020 07:49:33 +0000 Message-ID: References: <20200422044228.20986-1-yttao@amd.com> <9ce5395a-aebf-f205-5237-5fd4c40a6449@amd.com> <21d25270-181b-af96-35b6-bf5fa04e14eb@gmail.com> In-Reply-To: <21d25270-181b-af96-35b6-bf5fa04e14eb@gmail.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Yintian.Tao@amd.com; x-originating-ip: [180.167.199.189] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 6989debf-188b-476c-1e7f-08d7e691b263 x-ms-traffictypediagnostic: MN2PR12MB4551:|MN2PR12MB4551: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 03818C953D x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR12MB3039.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(10009020)(4636009)(39860400002)(346002)(136003)(366004)(396003)(376002)(86362001)(186003)(5660300002)(45080400002)(33656002)(6506007)(53546011)(2906002)(66574012)(26005)(478600001)(7696005)(6636002)(30864003)(966005)(66446008)(66556008)(316002)(64756008)(4326008)(66476007)(55016002)(9686003)(66946007)(52536014)(81156014)(110136005)(76116006)(71200400001)(8676002)(8936002)(559001)(579004); DIR:OUT; SFP:1101; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: QZcTXA3FsmmB3g4iPqzVAAA084qvC6U2rW+msV39pv/hR3VftAEw9CLdCVU6znzKAUsYW2WCjC0t+yjTXbb4WiD2dds1uLqdQQPHK7D/Se6aurLvH60t4wV16BZnILZs+ZvI4C+z9fPFR388jctTDkzdh+zx5M1TENb6wquPRoz3BB60u4XjoFQZQBTusiJQGREllsRZTBFCSLPJP9OEMhkWHWe+nvdux41O3gHHSyPXh0zGz6RO5GOvQ0Y29WqIhPJ4SQTDKWJPnd4ikjCn3ZtQODCsYnFIzZsLm2hrXYuDqrHQqidiFQYfCwY73oOUxEriX+SeiN8qQbymy47WFNArS50RdN8wMdhpzKzu6BiSAoxtUeWFMp/pwpkm/o/VGUtmAlmuf44sNMBxjrVH8zsmEz3pOn1IYIDuEJ3hiH23VJKbkU0qoPYilC4IZFI6h5IqQk5NRZj8OJdg4HVYyNFzCEG5qQdOnPsrDWmlURI= x-ms-exchange-antispam-messagedata: +a6ANWLron/E98LWlOlGEfy0i1+Ev3B4A6eRPXK5h6HS+XcVsyVuXFhqZWCgSoaFkly5merWy4kv0h8oy2vdH+IcY+l66w/rilrVgQISTu3G+EVtFkJrsAHKH3MDEPKHZC7NqYrwENnsfteEc36bbw== MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6989debf-188b-476c-1e7f-08d7e691b263 X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Apr 2020 07:49:33.1332 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 2l31ihVKRpLeaTkA8swQ2ivXVvPXUZSVS0kQvDbPFrfN4h+C7tyvDr3JzaHqoZzH X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR12MB4551 X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "amd-gfx@lists.freedesktop.org" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" SGkgQ2hyaXN0aWFuDQoNCg0KUGxlYXNlIHNlZSBpbmxpbmUgY29tbWVudHMuDQotLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2tvZW5pZy5sZWljaHR6 dW1lcmtlbkBnbWFpbC5jb20+IA0KU2VudDogMjAyMOW5tDTmnIgyMuaXpSAxNTo0MA0KVG86IFRh bywgWWludGlhbiA8WWludGlhbi5UYW9AYW1kLmNvbT47IEtvZW5pZywgQ2hyaXN0aWFuIDxDaHJp c3RpYW4uS29lbmlnQGFtZC5jb20+OyBMaXUsIE1vbmsgPE1vbmsuTGl1QGFtZC5jb20+OyBMaXUs IFNoYW95dW4gPFNoYW95dW4uTGl1QGFtZC5jb20+OyBLdWVobGluZywgRmVsaXggPEZlbGl4Lkt1 ZWhsaW5nQGFtZC5jb20+DQpDYzogYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNClN1Ympl Y3Q6IFJlOiBbUEFUQ0hdIGRybS9hbWRncHU6IHJlZmluZSBraXEgYWNjZXNzIHJlZ2lzdGVyDQoN CkFtIDIyLjA0LjIwIHVtIDA5OjM1IHNjaHJpZWIgVGFvLCBZaW50aWFuOg0KPiBIaSAgQ2hyaXN0 aWFuDQo+DQo+DQo+PiBCVUdfT04oaW5faW50ZXJydXB0KCkpOw0KPiBUaGF0IHdvbid0IHdvcmsg bGlrZSB0aGlzLiBUaGUgS0lRIGlzIGFsc28gdXNlZCBpbiBpbnRlcnJ1cHQgY29udGV4dCBpbiB0 aGUgZHJpdmVyLCB0aGF0J3Mgd2h5IHdlIHVzZWQgc3Bpbl9sb2NrX2lycXNhdmUoKS4NCj4gW3l0 dGFvXTogQWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGRybS1uZXh0IGNvZGUsIEkgaGF2ZSBub3Qg ZmluZCB3aGVyZSB0byBhY2Nlc3MgcmVnaXN0ZXIgdGhyb3VnaCBLSVEuDQo+IAkJQW5kIHlvdSBu ZWVkIHRvIHdhaXQgZm9yIHRoZSBmcmVlIGtpcSByaW5nIGJ1ZmZlciBzcGFjZSBpZiB0aGVyZSBp cyBubyBmcmVlIGtpcSByaW5nIGJ1ZmZlciwgaGVyZSwgeW91IHdhaXQgYXQgaW50ZXJydXB0IGNv bnRleHQgaXMgaWxsZWdhbC4NCg0KV2FpdGluZyBpbiBhdG9taWMgY29udGV4dCBpcyBpbGxlZ2Fs IGFzIHdlbGwsIGJ1dCB3ZSBkb24ndCBoYXZlIG11Y2ggb3RoZXIgY2hvaWNlLg0KW3l0dGFvXTog bm8sIHRoZXJlIGlzIG5vIHNsZWVwIGluIGF0b21pYyBjb250ZXh0IGF0IG15IHBhdGNoLg0KDQpX ZSBqdXN0IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgd2FpdGluZyBuZXZlciBoYXBwZW5zIGJ5IG1h a2luZyB0aGUgYnVmZmVycyBsYXJnZSBlbm91Z2ggYW5kIGlmIGl0IHN0aWxsIGhhcHBlbnMgcHJp bnQgYW5kIGVycm9yLg0KW3l0dGFvXTogdGhpcyBpcyBub3QgdGhlIGdvb2QgY2hvaWNlIGJlY2F1 c2UgS01EIG5lZWQgdG8gcHJvdGVjdCBpdCBpbnN0ZWFkIG9mIGhvcGluZyB1c2VyIG5vdCBmcmVx dWVudGx5IGludm9rZSBLSVEgYWNlc3MuDQoNCj4gQW5kIEkgd291bGQgZWl0aGVyIHNheSB0aGF0 IHdlIHNob3VsZCB1c2UgdGhlIHRyaWNrIHdpdGggdGhlIE5PUCB0byByZXNlcnZlIHNwYWNlIG9u IHRoZSByaW5nIGJ1ZmZlciBvciBjYWxsIGFtZGdwdV9kZXZpY2Vfd2JfZ2V0KCkgZm9yIGVhY2gg cmVhZC4gYW1kZ3B1X2RldmljZV93Yl9nZXQoKSBhbHNvIHVzZXMgZmluZF9maXJzdF96ZXJvX2Jp dCgpIGFuZCBzaG91bGQgd29yayBlcXVhbGx5IHdlbGwuDQo+IFt5dHRhb106IHNvcnJ5LCBjYW4g eW91IGdpdmUgbWUgbW9yZSBkZXRhaWxzIGFib3V0IGhvdyB0byB1c2UgTk9QIHRvIHJlc2VydmUg c3BhY2U/IEkgd2lsbCB1c2UgYW1kZ3B1X2RldmljZV93Yl9nZXQoKSBmb3IgdGhlIHJlYWQgb3Bl cmF0aW9uLg0KDQpXZSBjb3VsZCB1c2UgdGhlIE5PUCBQTTQgY29tbWFuZCBhcyBGZWxpeCBzdWdn ZXN0ZWQsIHRoaXMgY29tbWFuZCBoYXMgYSANCmhlYWRlcitsZW5ndGggYW5kIHNheXMgdGhhdCB0 aGUgbmV4dCBYIGR3IHNob3VsZCBiZSBpZ25vcmUgb24gdGhlIHJpbmcNCmJ1ZmZlci4NCg0KQnV0 IEkgdGhpbmsgdXNpbmcgYW1kZ3B1X2RldmljZV93Yl9nZXQoKSBpcyBiZXR0ZXIgYW55d2F5Lg0K W3l0dGFvXTogeWVzLCBJIGFncmVlZCB3aXRoIGFtZGdwdV9kZXZpY2Vfd2JfZ2V0KCkgbWV0aG9k IGJlY2F1c2UgaXQgd2lsbCBmaXggcHJldmVudCBwb3RlbnRpYWwgcmVhZCByYWNlIGNvbmRpdGlv biBidXQgTk9QIG1ldGhvZCB3aWxsIG5vdCBwcmV2ZW50IGl0DQoNClJlZ2FyZHMsDQpDaHJpc3Rp YW4uDQoNCj4NCj4NCj4NCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogS29l bmlnLCBDaHJpc3RpYW4gPENocmlzdGlhbi5Lb2VuaWdAYW1kLmNvbT4NCj4gU2VudDogMjAyMOW5 tDTmnIgyMuaXpSAxNToyMw0KPiBUbzogVGFvLCBZaW50aWFuIDxZaW50aWFuLlRhb0BhbWQuY29t PjsgTGl1LCBNb25rIDxNb25rLkxpdUBhbWQuY29tPjsgTGl1LCBTaGFveXVuIDxTaGFveXVuLkxp dUBhbWQuY29tPjsgS3VlaGxpbmcsIEZlbGl4IDxGZWxpeC5LdWVobGluZ0BhbWQuY29tPg0KPiBD YzogYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4gU3ViamVjdDogUmU6IFtQQVRDSF0g ZHJtL2FtZGdwdTogcmVmaW5lIGtpcSBhY2Nlc3MgcmVnaXN0ZXINCj4NCj4+IEJVR19PTihpbl9p bnRlcnJ1cHQoKSk7DQo+IFRoYXQgd29uJ3Qgd29yayBsaWtlIHRoaXMuIFRoZSBLSVEgaXMgYWxz byB1c2VkIGluIGludGVycnVwdCBjb250ZXh0IGluIHRoZSBkcml2ZXIsIHRoYXQncyB3aHkgd2Ug dXNlZCBzcGluX2xvY2tfaXJxc2F2ZSgpLg0KPg0KPiBBbmQgSSB3b3VsZCBlaXRoZXIgc2F5IHRo YXQgd2Ugc2hvdWxkIHVzZSB0aGUgdHJpY2sgd2l0aCB0aGUgTk9QIHRvIHJlc2VydmUgc3BhY2Ug b24gdGhlIHJpbmcgYnVmZmVyIG9yIGNhbGwgYW1kZ3B1X2RldmljZV93Yl9nZXQoKSBmb3IgZWFj aCByZWFkLiBhbWRncHVfZGV2aWNlX3diX2dldCgpIGFsc28gdXNlcyBmaW5kX2ZpcnN0X3plcm9f Yml0KCkgYW5kIHNob3VsZCB3b3JrIGVxdWFsbHkgd2VsbC4NCj4NCj4gWW91IGFsc28gZG9uJ3Qg bmVlZCB0byB3b3JyeSB0byBtdWNoIGFib3V0IG92ZXJmbG93aW5nIHRoZSB3YiBhcmVhLg0KPiBT aW5jZSB3ZSBydW4gaW4gYW4gYXRvbWljIGNvbnRleHQgd2UgY2FuIGhhdmUgYXQgbW9zdCB0aGUg bnVtYmVyIG9mIENQVSBpbiB0aGUgc3lzdGVtICsgaW50ZXJydXB0IGNvbnRleHQgaGVyZS4NCj4N Cj4gUmVnYXJkcywNCj4gQ2hyaXN0aWFuLg0KPg0KPiBBbSAyMi4wNC4yMCB1bSAwOToxMSBzY2hy aWViIFRhbywgWWludGlhbjoNCj4+IEFkZCBGZWxpeCBhbmQgU2hhb3l1bg0KPj4NCj4+IC0tLS0t T3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+PiBGcm9tOiBZaW50aWFuIFRhbyA8eXR0YW9AYW1kLmNv bT4NCj4+IFNlbnQ6IDIwMjDlubQ05pyIMjLml6UgMTI6NDINCj4+IFRvOiBLb2VuaWcsIENocmlz dGlhbiA8Q2hyaXN0aWFuLktvZW5pZ0BhbWQuY29tPjsgTGl1LCBNb25rDQo+PiA8TW9uay5MaXVA YW1kLmNvbT4NCj4+IENjOiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgVGFvLCBZaW50 aWFuIDxZaW50aWFuLlRhb0BhbWQuY29tPg0KPj4gU3ViamVjdDogW1BBVENIXSBkcm0vYW1kZ3B1 OiByZWZpbmUga2lxIGFjY2VzcyByZWdpc3Rlcg0KPj4NCj4+IEFjY29yZGluZyB0byB0aGUgY3Vy cmVudCBraXEgYWNjZXNzIHJlZ2lzdGVyIG1ldGhvZCwgdGhlcmUgd2lsbCBiZSByYWNlIGNvbmRp dGlvbiB3aGVuIHVzaW5nIEtJUSB0byByZWFkIHJlZ2lzdGVyIGlmIG11bHRpcGxlIGNsaWVudHMg d2FudCB0byByZWFkIGF0IHNhbWUgdGltZSBqdXN0IGxpa2UgdGhlIGV4cGFtcGxlIGJlbG93Og0K Pj4gMS4gY2xpZW50LUEgc3RhcnQgdG8gcmVhZCBSRUctMCB0aHJvZ3VoIEtJUSAyLiBjbGllbnQt QSBwb2xsIHRoZSBzZXFuby0wIDMuIGNsaWVudC1CIHN0YXJ0IHRvIHJlYWQgUkVHLTEgdGhyb3Vn aCBLSVEgNC4gY2xpZW50LUIgcG9sbCB0aGUgc2Vxbm8tMSA1LiB0aGUga2lxIGNvbXBsZXRlIHRo ZXNlIHR3byByZWFkIG9wZXJhdGlvbiA2LiBjbGllbnQtQSB0byByZWFkIHRoZSByZWdpc3RlciBh dCB0aGUgd2IgYnVmZmVyIGFuZA0KPj4gICAgICBnZXQgUkVHLTEgdmFsdWUNCj4+DQo+PiBBbmQg aWYgdGhlcmUgYXJlIG11bHRpcGxlIGNsaWVudHMgdG8gZnJlcXVlbnRseSB3cml0ZSByZWdpc3Rl cnMgdGhyb3VnaCBLSVEgd2hpY2ggbWF5IHJhaXNlIHRoZSBLSVEgcmluZyBidWZmZXIgb3Zlcndy aXR0ZW4gcHJvYmxlbS4NCj4+DQo+PiBUaGVyZWZvcmUsIGFsbG9jYXRlIGZpeGVkIG51bWJlciB3 YiBzbG90IGZvciBycmVnIHVzZSBhbmQgbGltaXQgdGhlIHN1Ym1pdCBudW1iZXIgd2hpY2ggZGVw ZW5kcyBvbiB0aGUga2lxIHJpbmdfc2l6ZSBpbiBvcmRlciB0byBwcmV2ZW50IHRoZSBvdmVyd3Jp dHRlbiBwcm9ibGVtLg0KPj4NCj4+IFNpZ25lZC1vZmYtYnk6IFlpbnRpYW4gVGFvIDx5dHRhb0Bh bWQuY29tPg0KPj4gLS0tDQo+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUu aCAgICAgICAgICAgfCAgIDcgKy0NCj4+ICAgIC4uLi9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1k a2ZkX2dmeF92MTAuYyAgICB8ICAxMiArLQ0KPj4gICAgLi4uL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHVfYW1ka2ZkX2dmeF92OS5jIHwgIDEyICstDQo+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfZ2Z4LmMgICAgICAgfCAxMjkgKysrKysrKysrKysrKysrKy0tDQo+PiAg ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Z4LmggICAgICAgfCAgIDYgKy0N Cj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmggICAgICB8ICAg NiArLQ0KPj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZpcnQuYyAgICAg IHwgIDEzICstDQo+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjEwXzAuYyAg ICAgICAgfCAgIDggKy0NCj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8w LmMgICAgICAgICB8ICAgOCArLQ0KPj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4 X3Y5XzAuYyAgICAgICAgIHwgIDM0ICsrKy0tDQo+PiAgICBkcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nbWNfdjEwXzAuYyAgICAgICAgfCAgMTIgKy0NCj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2dtY192OV8wLmMgICAgICAgICB8ICAxMiArLQ0KPj4gICAgMTIgZmlsZXMgY2hh bmdlZCwgMjExIGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQ0KPj4NCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaA0KPj4gYi9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaA0KPj4gaW5kZXggNGUxZDRjZmU3YTlmLi40NTMwZTBk ZTQyNTcgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUu aA0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgNCj4+IEBAIC01 MjYsNyArNTI2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGFtZGdwdV9zZXRfaWJfdmFsdWUoc3Ry dWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsDQo+PiAgICAvKg0KPj4gICAgICogV3JpdGViYWNrDQo+ PiAgICAgKi8NCj4+IC0jZGVmaW5lIEFNREdQVV9NQVhfV0IgMTI4CS8qIFJlc2VydmUgYXQgbW9z dCAxMjggV0Igc2xvdHMgZm9yIGFtZGdwdS1vd25lZCByaW5ncy4gKi8NCj4+ICsjZGVmaW5lIEFN REdQVV9NQVhfV0IgMjU2CS8qIFJlc2VydmUgYXQgbW9zdCAyNTYgV0Igc2xvdHMgZm9yIGFtZGdw dS1vd25lZCByaW5ncy4gKi8NCj4+ICAgIA0KPj4gICAgc3RydWN0IGFtZGdwdV93YiB7DQo+PiAg ICAJc3RydWN0IGFtZGdwdV9ibwkqd2Jfb2JqOw0KPj4gQEAgLTEwMjgsNiArMTAyOCwxMSBAQCBi b29sIGFtZGdwdV9kZXZpY2VfaGFzX2RjX3N1cHBvcnQoc3RydWN0DQo+PiBhbWRncHVfZGV2aWNl ICphZGV2KTsNCj4+ICAgIA0KPj4gICAgaW50IGVtdV9zb2NfYXNpY19pbml0KHN0cnVjdCBhbWRn cHVfZGV2aWNlICphZGV2KTsNCj4+ICAgIA0KPj4gK2ludCBhbWRncHVfZ2Z4X2tpcV9sb2NrKHN0 cnVjdCBhbWRncHVfa2lxICpraXEsIGJvb2wgcmVhZCk7IHZvaWQNCj4+ICthbWRncHVfZ2Z4X2tp cV91bmxvY2soc3RydWN0IGFtZGdwdV9raXEgKmtpcSk7DQo+PiArDQo+PiArdm9pZCBhbWRncHVf Z2Z4X2tpcV9jb25zdW1lKHN0cnVjdCBhbWRncHVfa2lxICpraXEsIHVpbnQzMl90ICpvZmZzKTsN Cj4+ICt2b2lkIGFtZGdwdV9nZnhfa2lxX3Jlc3RvcmUoc3RydWN0IGFtZGdwdV9raXEgKmtpcSwg dWludDMyX3QgKm9mZnMpOw0KPj4gICAgLyoNCj4+ICAgICAqIFJlZ2lzdGVycyByZWFkICYgd3Jp dGUgZnVuY3Rpb25zLg0KPj4gICAgICovDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjEwLmMNCj4+IGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjEwLmMNCj4+IGluZGV4IDY5MWM4OTcwNWJj ZC4uMDM0YzlmNDE2NDk5IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjEwLmMNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3YxMC5jDQo+PiBAQCAtMzA5LDYgKzMwOSw3IEBAIHN0 YXRpYyBpbnQga2dkX2hpcV9tcWRfbG9hZChzdHJ1Y3Qga2dkX2RldiAqa2dkLCB2b2lkICptcWQs DQo+PiAgICAJCQkgICAgdWludDMyX3QgZG9vcmJlbGxfb2ZmKQ0KPj4gICAgew0KPj4gICAgCXN0 cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZ2V0X2FtZGdwdV9kZXZpY2Uoa2dkKTsNCj4+ICsJ c3RydWN0IGFtZGdwdV9raXEgKmtpcSA9ICZhZGV2LT5nZngua2lxOw0KPj4gICAgCXN0cnVjdCBh bWRncHVfcmluZyAqa2lxX3JpbmcgPSAmYWRldi0+Z2Z4LmtpcS5yaW5nOw0KPj4gICAgCXN0cnVj dCB2MTBfY29tcHV0ZV9tcWQgKm07DQo+PiAgICAJdWludDMyX3QgbWVjLCBwaXBlOw0KPj4gQEAg LTMyNCwxMyArMzI1LDE5IEBAIHN0YXRpYyBpbnQga2dkX2hpcV9tcWRfbG9hZChzdHJ1Y3Qga2dk X2RldiAqa2dkLCB2b2lkICptcWQsDQo+PiAgICAJcHJfZGVidWcoImtmZDogc2V0IEhJUSwgbWVj OiVkLCBwaXBlOiVkLCBxdWV1ZTolZC5cbiIsDQo+PiAgICAJCSBtZWMsIHBpcGUsIHF1ZXVlX2lk KTsNCj4+ICAgIA0KPj4gLQlzcGluX2xvY2soJmFkZXYtPmdmeC5raXEucmluZ19sb2NrKTsNCj4+ ICsJciA9IGFtZGdwdV9nZnhfa2lxX2xvY2soa2lxLCBmYWxzZSk7DQo+PiArCWlmIChyKSB7DQo+ PiArCQlwcl9lcnIoImZhaWxlZCB0byBsb2NrIGtpcVxuIik7DQo+PiArCQlnb3RvIG91dF91bmxv Y2s7DQo+PiArCX0NCj4+ICsNCj4+ICAgIAlyID0gYW1kZ3B1X3JpbmdfYWxsb2Moa2lxX3Jpbmcs IDcpOw0KPj4gICAgCWlmIChyKSB7DQo+PiAgICAJCXByX2VycigiRmFpbGVkIHRvIGFsbG9jIEtJ USAoJWQpLlxuIiwgcik7DQo+PiAgICAJCWdvdG8gb3V0X3VubG9jazsNCj4+ICAgIAl9DQo+PiAg ICANCj4+ICsJYW1kZ3B1X2dmeF9raXFfY29uc3VtZShraXEsIE5VTEwpOw0KPj4gICAgCWFtZGdw dV9yaW5nX3dyaXRlKGtpcV9yaW5nLCBQQUNLRVQzKFBBQ0tFVDNfTUFQX1FVRVVFUywgNSkpOw0K Pj4gICAgCWFtZGdwdV9yaW5nX3dyaXRlKGtpcV9yaW5nLA0KPj4gICAgCQkJICBQQUNLRVQzX01B UF9RVUVVRVNfUVVFVUVfU0VMKDApIHwgLyogUXVldWVfU2VsICovIEBAIC0zNTAsOCArMzU3LDkg QEAgc3RhdGljIGludCBrZ2RfaGlxX21xZF9sb2FkKHN0cnVjdCBrZ2RfZGV2ICprZ2QsIHZvaWQg Km1xZCwNCj4+ICAgIAlhbWRncHVfcmluZ193cml0ZShraXFfcmluZywgbS0+Y3BfaHFkX3BxX3dw dHJfcG9sbF9hZGRyX2hpKTsNCj4+ICAgIAlhbWRncHVfcmluZ19jb21taXQoa2lxX3JpbmcpOw0K Pj4gICAgDQo+PiArCWFtZGdwdV9nZnhfa2lxX3Jlc3RvcmUoa2lxLCBOVUxMKTsNCj4+ICAgIG91 dF91bmxvY2s6DQo+PiAtCXNwaW5fdW5sb2NrKCZhZGV2LT5nZngua2lxLnJpbmdfbG9jayk7DQo+ PiArCWFtZGdwdV9nZnhfa2lxX3VubG9jaygmYWRldi0+Z2Z4LmtpcSk7DQo+PiAgICAJcmVsZWFz ZV9xdWV1ZShrZ2QpOw0KPj4gICAgDQo+PiAgICAJcmV0dXJuIHI7DQo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2FtZGtmZF9nZnhfdjkuYw0KPj4gYi9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfYW1ka2ZkX2dmeF92OS5jDQo+PiBpbmRl eCBkZjg0MWMyYWM1ZTcuLmYyNDNkOTk5MGNlZCAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y5LmMNCj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9hbWRrZmRfZ2Z4X3Y5LmMNCj4+IEBAIC0zMDcsNiAr MzA3LDcgQEAgaW50IGtnZF9nZnhfdjlfaGlxX21xZF9sb2FkKHN0cnVjdCBrZ2RfZGV2ICprZ2Qs IHZvaWQgKm1xZCwNCj4+ICAgIAkJCSAgICB1aW50MzJfdCBkb29yYmVsbF9vZmYpDQo+PiAgICB7 DQo+PiAgICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBnZXRfYW1kZ3B1X2RldmljZShr Z2QpOw0KPj4gKwlzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxID0gJmFkZXYtPmdmeC5raXE7DQo+PiAg ICAJc3RydWN0IGFtZGdwdV9yaW5nICpraXFfcmluZyA9ICZhZGV2LT5nZngua2lxLnJpbmc7DQo+ PiAgICAJc3RydWN0IHY5X21xZCAqbTsNCj4+ICAgIAl1aW50MzJfdCBtZWMsIHBpcGU7DQo+PiBA QCAtMzIyLDEzICszMjMsMTkgQEAgaW50IGtnZF9nZnhfdjlfaGlxX21xZF9sb2FkKHN0cnVjdCBr Z2RfZGV2ICprZ2QsIHZvaWQgKm1xZCwNCj4+ICAgIAlwcl9kZWJ1Zygia2ZkOiBzZXQgSElRLCBt ZWM6JWQsIHBpcGU6JWQsIHF1ZXVlOiVkLlxuIiwNCj4+ICAgIAkJIG1lYywgcGlwZSwgcXVldWVf aWQpOw0KPj4gICAgDQo+PiAtCXNwaW5fbG9jaygmYWRldi0+Z2Z4LmtpcS5yaW5nX2xvY2spOw0K Pj4gKwlyID0gYW1kZ3B1X2dmeF9raXFfbG9jayhraXEsIGZhbHNlKTsNCj4+ICsJaWYgKHIpIHsN Cj4+ICsJCXByX2VycigiZmFpbGVkIHRvIGxvY2sga2lxXG4iKTsNCj4+ICsJCWdvdG8gb3V0X3Vu bG9jazsNCj4+ICsJfQ0KPj4gKw0KPj4gICAgCXIgPSBhbWRncHVfcmluZ19hbGxvYyhraXFfcmlu ZywgNyk7DQo+PiAgICAJaWYgKHIpIHsNCj4+ICAgIAkJcHJfZXJyKCJGYWlsZWQgdG8gYWxsb2Mg S0lRICglZCkuXG4iLCByKTsNCj4+ICAgIAkJZ290byBvdXRfdW5sb2NrOw0KPj4gICAgCX0NCj4+ ICAgIA0KPj4gKwlhbWRncHVfZ2Z4X2tpcV9jb25zdW1lKGtpcSwgTlVMTCk7DQo+PiAgICAJYW1k Z3B1X3Jpbmdfd3JpdGUoa2lxX3JpbmcsIFBBQ0tFVDMoUEFDS0VUM19NQVBfUVVFVUVTLCA1KSk7 DQo+PiAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUoa2lxX3JpbmcsDQo+PiAgICAJCQkgIFBBQ0tFVDNf TUFQX1FVRVVFU19RVUVVRV9TRUwoMCkgfCAvKiBRdWV1ZV9TZWwgKi8gQEAgLTM0OCw4ICszNTUs OSBAQCBpbnQga2dkX2dmeF92OV9oaXFfbXFkX2xvYWQoc3RydWN0IGtnZF9kZXYgKmtnZCwgdm9p ZCAqbXFkLA0KPj4gICAgCWFtZGdwdV9yaW5nX3dyaXRlKGtpcV9yaW5nLCBtLT5jcF9ocWRfcHFf d3B0cl9wb2xsX2FkZHJfaGkpOw0KPj4gICAgCWFtZGdwdV9yaW5nX2NvbW1pdChraXFfcmluZyk7 DQo+PiAgICANCj4+ICsJYW1kZ3B1X2dmeF9raXFfcmVzdG9yZShraXEsIE5VTEwpOw0KPj4gICAg b3V0X3VubG9jazoNCj4+IC0Jc3Bpbl91bmxvY2soJmFkZXYtPmdmeC5raXEucmluZ19sb2NrKTsN Cj4+ICsJYW1kZ3B1X2dmeF9raXFfdW5sb2NrKCZhZGV2LT5nZngua2lxKTsNCj4+ICAgIAlyZWxl YXNlX3F1ZXVlKGtnZCk7DQo+PiAgICANCj4+ICAgIAlyZXR1cm4gcjsNCj4+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Z4LmMNCj4+IGIvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dmeC5jDQo+PiBpbmRleCBlYTU3NmI0MjYwYTQuLmM2 YjFjNzdiNWVhYyAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9nZnguYw0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dm eC5jDQo+PiBAQCAtMjk1LDIzICsyOTUsOTkgQEAgc3RhdGljIGludCBhbWRncHVfZ2Z4X2tpcV9h Y3F1aXJlKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LA0KPj4gICAgCXJldHVybiAtRUlOVkFM Ow0KPj4gICAgfQ0KPj4gICAgDQo+PiArdm9pZCBhbWRncHVfZ2Z4X2tpcV9yZWdfb2Zmc19nZXQo c3RydWN0IGFtZGdwdV9raXEgKmtpcSwNCj4+ICsJCQkJIHVpbnQzMl90ICpvZmZzZXQpDQo+PiAr ew0KPj4gKwl1aW50MzJfdCB0bXAgPSAwOw0KPj4gKw0KPj4gKwl0bXAgPSBmaW5kX2ZpcnN0X3pl cm9fYml0KGtpcS0+dXNlZCwNCj4+ICsJCQkJICAgICAga2lxLT5udW1fc2xvdCk7DQo+PiArCWlm ICh0bXAgPCBraXEtPm51bV9zbG90KSB7DQo+PiArCQlfX3NldF9iaXQodG1wLCBraXEtPnVzZWQp Ow0KPj4gKwkJKm9mZnNldCA9IGtpcS0+cmVnX3ZhbF9vZmZzW3RtcF07DQo+PiArCX0NCj4+ICt9 DQo+PiArDQo+PiArdm9pZCBhbWRncHVfZ2Z4X2tpcV9yZWdfb2Zmc19mcmVlKHN0cnVjdCBhbWRn cHVfa2lxICpraXEsDQo+PiArCQkJCSB1aW50MzJfdCBvZmZzZXQpDQo+PiArew0KPj4gKwl1aW50 MzJfdCB0bXAgPSAwOw0KPj4gKw0KPj4gKwl0bXAgPSAob2Zmc2V0IC0ga2lxLT5yZWdfdmFsX29m ZnNbMF0pID4+IDM7DQo+PiArCWlmICh0bXAgPCBraXEtPm51bV9zbG90KQ0KPj4gKwkJX19jbGVh cl9iaXQodG1wLCBraXEtPnVzZWQpOw0KPj4gK30NCj4+ICsNCj4+ICtpbnQgYW1kZ3B1X2dmeF9r aXFfbG9jayhzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxLCBib29sIHJlYWQpIHsNCj4+ICsJaW50IHJl dHJ5ID0gTUFYX0tJUV9SRUdfVFJZOw0KPj4gKw0KPj4gKwlCVUdfT04oaW5faW50ZXJydXB0KCkp Ow0KPj4gKwl3aGlsZSAocmV0cnktLSA+IDApIHsNCj4+ICsJCXNwaW5fbG9jaygma2lxLT5yaW5n X2xvY2spOw0KPj4gKwkJaWYgKChhdG9taWM2NF9yZWFkKCZraXEtPnN1Ym1pdF9hdmFpbCkgPiAw KSAmJg0KPj4gKwkJICAgIChyZWFkID8gZmluZF9maXJzdF96ZXJvX2JpdChraXEtPnVzZWQsIGtp cS0+bnVtX3Nsb3QpIDwNCj4+ICsJCSAgICAga2lxLT5udW1fc2xvdCA6IDEpKSB7DQo+PiArCQkJ CWJyZWFrOw0KPj4gKwkJfSBlbHNlIHsNCj4+ICsJCQlzcGluX3VubG9jaygma2lxLT5yaW5nX2xv Y2spOw0KPj4gKwkJCW1zbGVlcCgyKTsNCj4+ICsJCQljb250aW51ZTsNCj4+ICsJCX0NCj4+ICsN Cj4+ICsJfQ0KPj4gKw0KPj4gKwlpZiAocmV0cnkgPiAwKQ0KPj4gKwkJcmV0dXJuIDA7DQo+PiAr CWVsc2UNCj4+ICsJCXJldHVybiAtRVRJTUU7DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQgYW1kZ3B1 X2dmeF9raXFfdW5sb2NrKHN0cnVjdCBhbWRncHVfa2lxICpraXEpIHsNCj4+ICsJc3Bpbl91bmxv Y2soJmtpcS0+cmluZ19sb2NrKTsNCj4+ICt9DQo+PiArDQo+PiArdm9pZCBhbWRncHVfZ2Z4X2tp cV9jb25zdW1lKHN0cnVjdCBhbWRncHVfa2lxICpraXEsIHVpbnQzMl90ICpvZmZzKSB7DQo+PiAr CWF0b21pYzY0X2RlYygma2lxLT5zdWJtaXRfYXZhaWwpOw0KPj4gKwlpZiAob2ZmcykNCj4+ICsJ CWFtZGdwdV9nZnhfa2lxX3JlZ19vZmZzX2dldChraXEsIG9mZnMpOw0KPj4gKw0KPj4gK30NCj4+ ICsNCj4+ICt2b2lkIGFtZGdwdV9nZnhfa2lxX3Jlc3RvcmUoc3RydWN0IGFtZGdwdV9raXEgKmtp cSwgdWludDMyX3QgKm9mZnMpIHsNCj4+ICsJYXRvbWljNjRfaW5jKCZraXEtPnN1Ym1pdF9hdmFp bCk7DQo+PiArCWlmIChvZmZzKQ0KPj4gKwkJYW1kZ3B1X2dmeF9raXFfcmVnX29mZnNfZnJlZShr aXEsICpvZmZzKTsgfQ0KPj4gKw0KPj4gICAgaW50IGFtZGdwdV9nZnhfa2lxX2luaXRfcmluZyhz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+ICAgIAkJCSAgICAgc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nLA0KPj4gICAgCQkJICAgICBzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMgKmlycSkNCj4+ ICAgIHsNCj4+ICAgIAlzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxID0gJmFkZXYtPmdmeC5raXE7DQo+ PiAtCWludCByID0gMDsNCj4+ICsJaW50IHIgPSAwLCBpLCBqOw0KPj4gICAgDQo+PiAgICAJc3Bp bl9sb2NrX2luaXQoJmtpcS0+cmluZ19sb2NrKTsNCj4+ICAgIA0KPj4gLQlyID0gYW1kZ3B1X2Rl dmljZV93Yl9nZXQoYWRldiwgJmtpcS0+cmVnX3ZhbF9vZmZzKTsNCj4+IC0JaWYgKHIpDQo+PiAt CQlyZXR1cm4gcjsNCj4+ICsJZm9yIChpID0gMDsgaSA8IE1BWF9LSVFfUlJFR19OVU07IGkrKykg ew0KPj4gKwkJciA9IGFtZGdwdV9kZXZpY2Vfd2JfZ2V0KGFkZXYsICZraXEtPnJlZ192YWxfb2Zm c1tpXSk7DQo+PiArCQlpZiAocikgew0KPj4gKwkJCWZvciAoaiA9IDA7IGogPCBpOyBqKyspDQo+ PiArCQkJCWFtZGdwdV9kZXZpY2Vfd2JfZnJlZShhZGV2LCBraXEtPnJlZ192YWxfb2Zmc1tqXSk7 DQo+PiArCQkJcmV0dXJuIHI7DQo+PiArCQl9DQo+PiArCX0NCj4+ICAgIA0KPj4gICAgCXJpbmct PmFkZXYgPSBOVUxMOw0KPj4gICAgCXJpbmctPnJpbmdfb2JqID0gTlVMTDsNCj4+ICAgIAlyaW5n LT51c2VfZG9vcmJlbGwgPSB0cnVlOw0KPj4gICAgCXJpbmctPmRvb3JiZWxsX2luZGV4ID0gYWRl di0+ZG9vcmJlbGxfaW5kZXgua2lxOw0KPj4gKwlraXEtPm51bV9zbG90ID0gTUFYX0tJUV9SUkVH X05VTTsNCj4+ICsJbWVtc2V0KCZraXEtPnVzZWQsIDAsIHNpemVvZihraXEtPnVzZWQpKTsNCj4+ ICsNCj4+ICAgIA0KPj4gICAgCXIgPSBhbWRncHVfZ2Z4X2tpcV9hY3F1aXJlKGFkZXYsIHJpbmcp Ow0KPj4gICAgCWlmIChyKQ0KPj4gQEAgLTMyNSwxMyArNDAxLDIwIEBAIGludCBhbWRncHVfZ2Z4 X2tpcV9pbml0X3Jpbmcoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsDQo+PiAgICAJCQkgICAg IEFNREdQVV9SSU5HX1BSSU9fREVGQVVMVCk7DQo+PiAgICAJaWYgKHIpDQo+PiAgICAJCWRldl93 YXJuKGFkZXYtPmRldiwgIiglZCkgZmFpbGVkIHRvIGluaXQga2lxIHJpbmdcbiIsIHIpOw0KPj4g KwllbHNlDQo+PiArCQlhdG9taWM2NF9zZXQoJmtpcS0+c3VibWl0X2F2YWlsLCByaW5nLT5yaW5n X3NpemUgLyA0IC8NCj4+ICsJCQkgICAgIChyaW5nLT5mdW5jcy0+YWxpZ25fbWFzayArIDEpKTsN Cj4+ICAgIA0KPj4gICAgCXJldHVybiByOw0KPj4gICAgfQ0KPj4gICAgDQo+PiAgICB2b2lkIGFt ZGdwdV9nZnhfa2lxX2ZyZWVfcmluZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpICB7DQo+PiAt CWFtZGdwdV9kZXZpY2Vfd2JfZnJlZShyaW5nLT5hZGV2LCByaW5nLT5hZGV2LT5nZngua2lxLnJl Z192YWxfb2Zmcyk7DQo+PiArCXN0cnVjdCBhbWRncHVfa2lxICpraXEgPSAmcmluZy0+YWRldi0+ Z2Z4LmtpcTsNCj4+ICsJaW50IGkgPSAwOw0KPj4gKw0KPj4gKwlmb3IgKGkgPSAwOyBpIDwgTUFY X0tJUV9SUkVHX05VTTsgaSsrKQ0KPj4gKwkJYW1kZ3B1X2RldmljZV93Yl9mcmVlKHJpbmctPmFk ZXYsIGtpcS0+cmVnX3ZhbF9vZmZzW2ldKTsNCj4+ICAgIAlhbWRncHVfcmluZ19maW5pKHJpbmcp Ow0KPj4gICAgfQ0KPj4gICAgDQo+PiBAQCAtNjcxLDE5ICs3NTQsMjQgQEAgaW50IGFtZGdwdV9n ZnhfY3BfZWNjX2Vycm9yX2lycShzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgIHVpbnQzMl90 IGFtZGdwdV9raXFfcnJlZyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdWludDMyX3QgcmVn KSAgew0KPj4gICAgCXNpZ25lZCBsb25nIHIsIGNudCA9IDA7DQo+PiAtCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7DQo+PiAtCXVpbnQzMl90IHNlcTsNCj4+ICsJdWludDMyX3Qgc2VxLCByZWdfdmFsX29m ZnMgPSAwLCB2YWx1ZSA9IDA7DQo+PiAgICAJc3RydWN0IGFtZGdwdV9raXEgKmtpcSA9ICZhZGV2 LT5nZngua2lxOw0KPj4gICAgCXN0cnVjdCBhbWRncHVfcmluZyAqcmluZyA9ICZraXEtPnJpbmc7 DQo+PiAgICANCj4+ICAgIAlCVUdfT04oIXJpbmctPmZ1bmNzLT5lbWl0X3JyZWcpOw0KPj4gICAg DQo+PiAtCXNwaW5fbG9ja19pcnFzYXZlKCZraXEtPnJpbmdfbG9jaywgZmxhZ3MpOw0KPj4gKwly ID0gYW1kZ3B1X2dmeF9raXFfbG9jayhraXEsIHRydWUpOw0KPj4gKwlpZiAocikgew0KPj4gKwkJ cHJfZXJyKCJmYWlsZWQgdG8gbG9jayBraXFcbiIpOw0KPj4gKwkJZ290byBraXFfcmVhZF9leGl0 Ow0KPj4gKwl9DQo+PiArDQo+PiArCWFtZGdwdV9nZnhfa2lxX2NvbnN1bWUoa2lxLCAmcmVnX3Zh bF9vZmZzKTsNCj4+ICAgIAlhbWRncHVfcmluZ19hbGxvYyhyaW5nLCAzMik7DQo+PiAtCWFtZGdw dV9yaW5nX2VtaXRfcnJlZyhyaW5nLCByZWcpOw0KPj4gKwlhbWRncHVfcmluZ19lbWl0X3JyZWco cmluZywgcmVnLCByZWdfdmFsX29mZnMpOw0KPj4gICAgCWFtZGdwdV9mZW5jZV9lbWl0X3BvbGxp bmcocmluZywgJnNlcSk7DQo+PiAgICAJYW1kZ3B1X3JpbmdfY29tbWl0KHJpbmcpOw0KPj4gLQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZraXEtPnJpbmdfbG9jaywgZmxhZ3MpOw0KPj4gKwlhbWRn cHVfZ2Z4X2tpcV91bmxvY2soa2lxKTsNCj4+ICAgIA0KPj4gICAgCXIgPSBhbWRncHVfZmVuY2Vf d2FpdF9wb2xsaW5nKHJpbmcsIHNlcSwgTUFYX0tJUV9SRUdfV0FJVCk7DQo+PiAgICANCj4+IEBA IC03MDcsOSArNzk1LDE0IEBAIHVpbnQzMl90IGFtZGdwdV9raXFfcnJlZyhzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgdWludDMyX3QgcmVnKQ0KPj4gICAgCWlmIChjbnQgPiBNQVhfS0lRX1JF R19UUlkpDQo+PiAgICAJCWdvdG8gZmFpbGVkX2tpcV9yZWFkOw0KPj4gICAgDQo+PiAtCXJldHVy biBhZGV2LT53Yi53YltraXEtPnJlZ192YWxfb2Zmc107DQo+PiArCW1iKCk7DQo+PiArCXZhbHVl ID0gYWRldi0+d2Iud2JbcmVnX3ZhbF9vZmZzXTsNCj4+ICsJYW1kZ3B1X2dmeF9raXFfcmVzdG9y ZShraXEsICZyZWdfdmFsX29mZnMpOw0KPj4gKwlyZXR1cm4gdmFsdWU7DQo+PiAgICANCj4+ICAg IGZhaWxlZF9raXFfcmVhZDoNCj4+ICsJYW1kZ3B1X2dmeF9raXFfcmVzdG9yZShraXEsICZyZWdf dmFsX29mZnMpOw0KPj4gK2tpcV9yZWFkX2V4aXQ6DQo+PiAgICAJcHJfZXJyKCJmYWlsZWQgdG8g cmVhZCByZWc6JXhcbiIsIHJlZyk7DQo+PiAgICAJcmV0dXJuIH4wOw0KPj4gICAgfQ0KPj4gQEAg LTcxNywxOSArODEwLDI0IEBAIHVpbnQzMl90IGFtZGdwdV9raXFfcnJlZyhzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwgdWludDMyX3QgcmVnKSAgdm9pZCBhbWRncHVfa2lxX3dyZWcoc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHVpbnQzMl90IHJlZywgdWludDMyX3QgdikgIHsNCj4+ICAg IAlzaWduZWQgbG9uZyByLCBjbnQgPSAwOw0KPj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOw0KPj4g ICAgCXVpbnQzMl90IHNlcTsNCj4+ICAgIAlzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxID0gJmFkZXYt PmdmeC5raXE7DQo+PiAgICAJc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nID0gJmtpcS0+cmluZzsN Cj4+ICAgIA0KPj4gICAgCUJVR19PTighcmluZy0+ZnVuY3MtPmVtaXRfd3JlZyk7DQo+PiAgICAN Cj4+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJmtpcS0+cmluZ19sb2NrLCBmbGFncyk7DQo+PiArCXIg PSBhbWRncHVfZ2Z4X2tpcV9sb2NrKGtpcSwgZmFsc2UpOw0KPj4gKwlpZiAocikgew0KPj4gKwkJ cHJfZXJyKCJmYWlsZWQgdG8gbG9jayBraXFcbiIpOw0KPj4gKwkJZ290byBraXFfd3JpdGVfZXhp dDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlhbWRncHVfZ2Z4X2tpcV9jb25zdW1lKGtpcSwgTlVMTCk7 DQo+PiAgICAJYW1kZ3B1X3JpbmdfYWxsb2MocmluZywgMzIpOw0KPj4gICAgCWFtZGdwdV9yaW5n X2VtaXRfd3JlZyhyaW5nLCByZWcsIHYpOw0KPj4gICAgCWFtZGdwdV9mZW5jZV9lbWl0X3BvbGxp bmcocmluZywgJnNlcSk7DQo+PiAgICAJYW1kZ3B1X3JpbmdfY29tbWl0KHJpbmcpOw0KPj4gLQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZraXEtPnJpbmdfbG9jaywgZmxhZ3MpOw0KPj4gKwlhbWRn cHVfZ2Z4X2tpcV91bmxvY2soa2lxKTsNCj4+ICAgIA0KPj4gICAgCXIgPSBhbWRncHVfZmVuY2Vf d2FpdF9wb2xsaW5nKHJpbmcsIHNlcSwgTUFYX0tJUV9SRUdfV0FJVCk7DQo+PiAgICANCj4+IEBA IC03NTQsOCArODUyLDExIEBAIHZvaWQgYW1kZ3B1X2tpcV93cmVnKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LCB1aW50MzJfdCByZWcsIHVpbnQzMl90IHYpDQo+PiAgICAJaWYgKGNudCA+IE1B WF9LSVFfUkVHX1RSWSkNCj4+ICAgIAkJZ290byBmYWlsZWRfa2lxX3dyaXRlOw0KPj4gICAgDQo+ PiArCWFtZGdwdV9nZnhfa2lxX3Jlc3RvcmUoa2lxLCBOVUxMKTsNCj4+ICAgIAlyZXR1cm47DQo+ PiAgICANCj4+ICAgIGZhaWxlZF9raXFfd3JpdGU6DQo+PiArCWFtZGdwdV9nZnhfa2lxX3Jlc3Rv cmUoa2lxLCBOVUxMKTsNCj4+ICtraXFfd3JpdGVfZXhpdDoNCj4+ICAgIAlwcl9lcnIoImZhaWxl ZCB0byB3cml0ZSByZWc6JXhcbiIsIHJlZyk7ICB9IGRpZmYgLS1naXQNCj4+IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2dmeC5oDQo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9nZnguaA0KPj4gaW5kZXggNjM0NzQ2ODI5MDI0Li5iYjA1NTk0YzI3ZTAg MTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZ2Z4LmgN Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9nZnguaA0KPj4gQEAg LTk2LDYgKzk2LDcgQEAgc3RydWN0IGtpcV9wbTRfZnVuY3Mgew0KPj4gICAgCWludCBpbnZhbGlk YXRlX3RsYnNfc2l6ZTsNCj4+ICAgIH07DQo+PiAgICANCj4+ICsjZGVmaW5lIE1BWF9LSVFfUlJF R19OVU0gNjQNCj4+ICAgIHN0cnVjdCBhbWRncHVfa2lxIHsNCj4+ICAgIAl1NjQJCQllb3BfZ3B1 X2FkZHI7DQo+PiAgICAJc3RydWN0IGFtZGdwdV9ibwkqZW9wX29iajsNCj4+IEBAIC0xMDMsNyAr MTA0LDEwIEBAIHN0cnVjdCBhbWRncHVfa2lxIHsNCj4+ICAgIAlzdHJ1Y3QgYW1kZ3B1X3JpbmcJ cmluZzsNCj4+ICAgIAlzdHJ1Y3QgYW1kZ3B1X2lycV9zcmMJaXJxOw0KPj4gICAgCWNvbnN0IHN0 cnVjdCBraXFfcG00X2Z1bmNzICpwbWY7DQo+PiAtCXVpbnQzMl90CQkJcmVnX3ZhbF9vZmZzOw0K Pj4gKwl1aW50MzJfdAkJcmVnX3ZhbF9vZmZzW01BWF9LSVFfUlJFR19OVU1dOw0KPj4gKwlhdG9t aWM2NF90CQlzdWJtaXRfYXZhaWw7DQo+PiArCXVpbnQzMl90CQludW1fc2xvdDsNCj4+ICsJdW5z aWduZWQgbG9uZwkJdXNlZFtESVZfUk9VTkRfVVAoTUFYX0tJUV9SUkVHX05VTSwgQklUU19QRVJf TE9ORyldOw0KPj4gICAgfTsNCj4+ICAgIA0KPj4gICAgLyoNCj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5oDQo+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmgNCj4+IGluZGV4IGY2MTY2NGVlNDk0MC4uYjBlYTRm NjdhNmUxIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3JpbmcuaA0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jpbmcu aA0KPj4gQEAgLTE4MSw3ICsxODEsOCBAQCBzdHJ1Y3QgYW1kZ3B1X3JpbmdfZnVuY3Mgew0KPj4g ICAgCXZvaWQgKCplbmRfdXNlKShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOw0KPj4gICAgCXZv aWQgKCplbWl0X3N3aXRjaF9idWZmZXIpIChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOw0KPj4g ICAgCXZvaWQgKCplbWl0X2NudHhjbnRsKSAoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50 MzJfdCBmbGFncyk7DQo+PiAtCXZvaWQgKCplbWl0X3JyZWcpKHN0cnVjdCBhbWRncHVfcmluZyAq cmluZywgdWludDMyX3QgcmVnKTsNCj4+ICsJdm9pZCAoKmVtaXRfcnJlZykoc3RydWN0IGFtZGdw dV9yaW5nICpyaW5nLCB1aW50MzJfdCByZWcsDQo+PiArCQkJICB1aW50MzJfdCByZWdfdmFsX29m ZnMpOw0KPj4gICAgCXZvaWQgKCplbWl0X3dyZWcpKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywg dWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOw0KPj4gICAgCXZvaWQgKCplbWl0X3JlZ193YWl0 KShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJlZywNCj4+ICAgIAkJCSAgICAg IHVpbnQzMl90IHZhbCwgdWludDMyX3QgbWFzayk7IEBAIC0yNjUsNyArMjY2LDcgQEAgc3RydWN0 DQo+PiBhbWRncHVfcmluZyB7ICAjZGVmaW5lIGFtZGdwdV9yaW5nX2VtaXRfaGRwX2ZsdXNoKHIp IChyKS0+ZnVuY3MtPmVtaXRfaGRwX2ZsdXNoKChyKSkgICNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1p dF9zd2l0Y2hfYnVmZmVyKHIpIChyKS0+ZnVuY3MtPmVtaXRfc3dpdGNoX2J1ZmZlcigocikpDQo+ PiAgICAjZGVmaW5lIGFtZGdwdV9yaW5nX2VtaXRfY250eGNudGwociwgZCkNCj4+IChyKS0+ZnVu Y3MtPmVtaXRfY250eGNudGwoKHIpLCAoZCkpIC0jZGVmaW5lIGFtZGdwdV9yaW5nX2VtaXRfcnJl ZyhyLA0KPj4gZCkgKHIpLT5mdW5jcy0+ZW1pdF9ycmVnKChyKSwgKGQpKQ0KPj4gKyNkZWZpbmUg YW1kZ3B1X3JpbmdfZW1pdF9ycmVnKHIsIGQsIG8pIChyKS0+ZnVuY3MtPmVtaXRfcnJlZygociks DQo+PiArKGQpLA0KPj4gKyhvKSkNCj4+ICAgICNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF93cmVn KHIsIGQsIHYpIChyKS0+ZnVuY3MtPmVtaXRfd3JlZygociksIChkKSwgKHYpKSAgI2RlZmluZSBh bWRncHVfcmluZ19lbWl0X3JlZ193YWl0KHIsIGQsIHYsIG0pIChyKS0+ZnVuY3MtPmVtaXRfcmVn X3dhaXQoKHIpLCAoZCksICh2KSwgKG0pKSAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3JlZ193 cml0ZV9yZWdfd2FpdChyLCBkMCwgZDEsIHYsIG0pIChyKS0+ZnVuY3MtPmVtaXRfcmVnX3dyaXRl X3JlZ193YWl0KChyKSwgKGQwKSwgKGQxKSwgKHYpLCAobSkpIEBAIC0zMDgsNiArMzA5LDcgQEAg c3RhdGljIGlubGluZSB2b2lkIGFtZGdwdV9yaW5nX3dyaXRlKHN0cnVjdCBhbWRncHVfcmluZyAq cmluZywgdWludDMyX3QgdikgIHsNCj4+ICAgIAlpZiAocmluZy0+Y291bnRfZHcgPD0gMCkNCj4+ ICAgIAkJRFJNX0VSUk9SKCJhbWRncHU6IHdyaXRpbmcgbW9yZSBkd29yZHMgdG8gdGhlIHJpbmcg dGhhbg0KPj4gZXhwZWN0ZWQhXG4iKTsNCj4+ICsNCj4+ICAgIAlyaW5nLT5yaW5nW3JpbmctPndw dHIrKyAmIHJpbmctPmJ1Zl9tYXNrXSA9IHY7DQo+PiAgICAJcmluZy0+d3B0ciAmPSByaW5nLT5w dHJfbWFzazsNCj4+ICAgIAlyaW5nLT5jb3VudF9kdy0tOw0KPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92aXJ0LmMNCj4+IGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1X3ZpcnQuYw0KPj4gaW5kZXggOGMxMDA4NGY0NGVmLi5kZDU0ZWE4 MDJhOWEgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf dmlydC5jDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfdmlydC5j DQo+PiBAQCAtNTYsMTMgKzU2LDE5IEBAIHZvaWQgYW1kZ3B1X3ZpcnRfa2lxX3JlZ193cml0ZV9y ZWdfd2FpdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+ICAgIAl1bnNpZ25lZCBsb25n IGZsYWdzOw0KPj4gICAgCXVpbnQzMl90IHNlcTsNCj4+ICAgIA0KPj4gLQlzcGluX2xvY2tfaXJx c2F2ZSgma2lxLT5yaW5nX2xvY2ssIGZsYWdzKTsNCj4+ICsJciA9IGFtZGdwdV9nZnhfa2lxX2xv Y2soa2lxLCBmYWxzZSk7DQo+PiArCWlmIChyKSB7DQo+PiArCQlwcl9lcnIoImZhaWxlZCB0byBs b2NrIGtpcVxuIik7DQo+PiArCQlnb3RvIGZhaWxlZF9leGl0Ow0KPj4gKwl9DQo+PiArDQo+PiAr CWFtZGdwdV9nZnhfa2lxX2NvbnN1bWUoa2lxLCBOVUxMKTsNCj4+ICAgIAlhbWRncHVfcmluZ19h bGxvYyhyaW5nLCAzMik7DQo+PiAgICAJYW1kZ3B1X3JpbmdfZW1pdF9yZWdfd3JpdGVfcmVnX3dh aXQocmluZywgcmVnMCwgcmVnMSwNCj4+ICAgIAkJCQkJICAgIHJlZiwgbWFzayk7DQo+PiAgICAJ YW1kZ3B1X2ZlbmNlX2VtaXRfcG9sbGluZyhyaW5nLCAmc2VxKTsNCj4+ICAgIAlhbWRncHVfcmlu Z19jb21taXQocmluZyk7DQo+PiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmtpcS0+cmluZ19s b2NrLCBmbGFncyk7DQo+PiArCWFtZGdwdV9nZnhfa2lxX3VubG9jayhraXEpOw0KPj4gICAgDQo+ PiAgICAJciA9IGFtZGdwdV9mZW5jZV93YWl0X3BvbGxpbmcocmluZywgc2VxLCBNQVhfS0lRX1JF R19XQUlUKTsNCj4+ICAgIA0KPj4gQEAgLTgwLDkgKzg2LDEyIEBAIHZvaWQgYW1kZ3B1X3ZpcnRf a2lxX3JlZ193cml0ZV9yZWdfd2FpdChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwNCj4+ICAg IAlpZiAoY250ID4gTUFYX0tJUV9SRUdfVFJZKQ0KPj4gICAgCQlnb3RvIGZhaWxlZF9raXE7DQo+ PiAgICANCj4+ICsJYW1kZ3B1X2dmeF9raXFfcmVzdG9yZShraXEsIE5VTEwpOw0KPj4gICAgCXJl dHVybjsNCj4+ICAgIA0KPj4gICAgZmFpbGVkX2tpcToNCj4+ICsJYW1kZ3B1X2dmeF9raXFfcmVz dG9yZShraXEsIE5VTEwpOw0KPj4gK2ZhaWxlZF9leGl0Og0KPj4gICAgCXByX2VycigiZmFpbGVk IHRvIHdyaXRlIHJlZyAleCB3YWl0IHJlZyAleFxuIiwgcmVnMCwgcmVnMSk7ICB9DQo+PiAgICAN Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjEwXzAuYw0K Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjEwXzAuYw0KPj4gaW5kZXggMGEw M2UyYWQ1ZDk1Li43ODUzZGJjM2M4YmQgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9nZnhfdjEwXzAuYw0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvZ2Z4X3YxMF8wLmMNCj4+IEBAIC03NTk0LDEwICs3NTk0LDEwIEBAIHN0YXRpYyB2b2lkIGdm eF92MTBfMF9yaW5nX2VtaXRfZnJhbWVfY250bChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIGJv b2wgc3RhcnQsDQo+PiAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgdiB8IEZSQU1FX0NNRChz dGFydCA/IDAgOiAxKSk7ICB9DQo+PiAgICANCj4+IC1zdGF0aWMgdm9pZCBnZnhfdjEwXzBfcmlu Z19lbWl0X3JyZWcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLA0KPj4gdWludDMyX3QgcmVnKQ0K Pj4gK3N0YXRpYyB2b2lkIGdmeF92MTBfMF9yaW5nX2VtaXRfcnJlZyhzdHJ1Y3QgYW1kZ3B1X3Jp bmcgKnJpbmcsIHVpbnQzMl90IHJlZywNCj4+ICsJCQkJICAgICB1aW50MzJfdCByZWdfdmFsX29m ZnMpDQo+PiAgICB7DQo+PiAgICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5h ZGV2Ow0KPj4gLQlzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxID0gJmFkZXYtPmdmeC5raXE7DQo+PiAg ICANCj4+ICAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCBQQUNLRVQzKFBBQ0tFVDNfQ09QWV9E QVRBLCA0KSk7DQo+PiAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCB8CS8qIHNyYzogcmVn aXN0ZXIqLw0KPj4gQEAgLTc2MDYsOSArNzYwNiw5IEBAIHN0YXRpYyB2b2lkIGdmeF92MTBfMF9y aW5nX2VtaXRfcnJlZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJlZykNCj4+ ICAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCByZWcpOw0KPj4gICAgCWFtZGdwdV9yaW5nX3dy aXRlKHJpbmcsIDApOw0KPj4gICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIGxvd2VyXzMyX2Jp dHMoYWRldi0+d2IuZ3B1X2FkZHIgKw0KPj4gLQkJCQlraXEtPnJlZ192YWxfb2ZmcyAqIDQpKTsN Cj4+ICsJCQkJcmVnX3ZhbF9vZmZzICogNCkpOw0KPj4gICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJp bmcsIHVwcGVyXzMyX2JpdHMoYWRldi0+d2IuZ3B1X2FkZHIgKw0KPj4gLQkJCQlraXEtPnJlZ192 YWxfb2ZmcyAqIDQpKTsNCj4+ICsJCQkJcmVnX3ZhbF9vZmZzICogNCkpOw0KPj4gICAgfQ0KPj4g ICAgDQo+PiAgICBzdGF0aWMgdm9pZCBnZnhfdjEwXzBfcmluZ19lbWl0X3dyZWcoc3RydWN0IGFt ZGdwdV9yaW5nICpyaW5nLA0KPj4gdWludDMyX3QgcmVnLCBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y4XzAuYw0KPj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9nZnhfdjhfMC5jDQo+PiBpbmRleCBmYzZjMmYyYmM3NmMuLmJkYmQ5MmQ0ZmU0NSAxMDA2 NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMNCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OF8wLmMNCj4+IEBAIC02MzgzLDEw ICs2MzgzLDEwIEBAIHN0YXRpYyB2b2lkIGdmeF92OF8wX3JpbmdfZW1pdF9wYXRjaF9jb25kX2V4 ZWMoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1bnNpZ25lDQo+PiAgICAJCXJpbmctPnJpbmdb b2Zmc2V0XSA9IChyaW5nLT5yaW5nX3NpemUgPj4gMikgLSBvZmZzZXQgKyBjdXI7ICB9DQo+PiAg ICANCj4+IC1zdGF0aWMgdm9pZCBnZnhfdjhfMF9yaW5nX2VtaXRfcnJlZyhzdHJ1Y3QgYW1kZ3B1 X3JpbmcgKnJpbmcsDQo+PiB1aW50MzJfdCByZWcpDQo+PiArc3RhdGljIHZvaWQgZ2Z4X3Y4XzBf cmluZ19lbWl0X3JyZWcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCByZWcsDQo+ PiArCQkJCSAgICB1aW50MzJfdCByZWdfdmFsX29mZnMpDQo+PiAgICB7DQo+PiAgICAJc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2Ow0KPj4gLQlzdHJ1Y3QgYW1kZ3B1X2tp cSAqa2lxID0gJmFkZXYtPmdmeC5raXE7DQo+PiAgICANCj4+ICAgIAlhbWRncHVfcmluZ193cml0 ZShyaW5nLCBQQUNLRVQzKFBBQ0tFVDNfQ09QWV9EQVRBLCA0KSk7DQo+PiAgICAJYW1kZ3B1X3Jp bmdfd3JpdGUocmluZywgMCB8CS8qIHNyYzogcmVnaXN0ZXIqLw0KPj4gQEAgLTYzOTUsOSArNjM5 NSw5IEBAIHN0YXRpYyB2b2lkIGdmeF92OF8wX3JpbmdfZW1pdF9ycmVnKHN0cnVjdCBhbWRncHVf cmluZyAqcmluZywgdWludDMyX3QgcmVnKQ0KPj4gICAgCWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcs IHJlZyk7DQo+PiAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCk7DQo+PiAgICAJYW1kZ3B1 X3Jpbmdfd3JpdGUocmluZywgbG93ZXJfMzJfYml0cyhhZGV2LT53Yi5ncHVfYWRkciArDQo+PiAt CQkJCWtpcS0+cmVnX3ZhbF9vZmZzICogNCkpOw0KPj4gKwkJCQlyZWdfdmFsX29mZnMgKiA0KSk7 DQo+PiAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgdXBwZXJfMzJfYml0cyhhZGV2LT53Yi5n cHVfYWRkciArDQo+PiAtCQkJCWtpcS0+cmVnX3ZhbF9vZmZzICogNCkpOw0KPj4gKwkJCQlyZWdf dmFsX29mZnMgKiA0KSk7DQo+PiAgICB9DQo+PiAgICANCj4+ICAgIHN0YXRpYyB2b2lkIGdmeF92 OF8wX3JpbmdfZW1pdF93cmVnKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywNCj4+IHVpbnQzMl90 IHJlZywgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMN Cj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3Y5XzAuYw0KPj4gaW5kZXggODRm Y2Y4NDIzMTZkLi5mN2RkMTAzNjk4NmUgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9nZnhfdjlfMC5jDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9nZnhfdjlfMC5jDQo+PiBAQCAtNDA0MiwxNCArNDA0MiwyMCBAQCBzdGF0aWMgaW50IGdmeF92 OV8wX3NvZnRfcmVzZXQodm9pZCAqaGFuZGxlKSAgc3RhdGljIHVpbnQ2NF90IGdmeF92OV8wX2tp cV9yZWFkX2Nsb2NrKHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2KSAgew0KPj4gICAgCXNpZ25l ZCBsb25nIHIsIGNudCA9IDA7DQo+PiAtCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+PiAtCXVpbnQz Ml90IHNlcTsNCj4+ICsJdWludDMyX3Qgc2VxLCByZWdfdmFsX29mZnM7DQo+PiArCXVpbnQ2NF90 IHZhbHVlID0gMDsNCj4+ICAgIAlzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxID0gJmFkZXYtPmdmeC5r aXE7DQo+PiAgICAJc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nID0gJmtpcS0+cmluZzsNCj4+ICAg IA0KPj4gICAgCUJVR19PTighcmluZy0+ZnVuY3MtPmVtaXRfcnJlZyk7DQo+PiAgICANCj4+IC0J c3Bpbl9sb2NrX2lycXNhdmUoJmtpcS0+cmluZ19sb2NrLCBmbGFncyk7DQo+PiArCXIgPSBhbWRn cHVfZ2Z4X2tpcV9sb2NrKGtpcSwgdHJ1ZSk7DQo+PiArCWlmIChyKSB7DQo+PiArCQlwcl9lcnIo ImZhaWxlZCB0byBsb2NrIGtpcVxuIik7DQo+PiArCQlnb3RvIGZhaWxlZF9raXFfZXhpdDsNCj4+ ICsJfQ0KPj4gKw0KPj4gKwlhbWRncHVfZ2Z4X2tpcV9jb25zdW1lKGtpcSwgJnJlZ192YWxfb2Zm cyk7DQo+PiAgICAJYW1kZ3B1X3JpbmdfYWxsb2MocmluZywgMzIpOw0KPj4gICAgCWFtZGdwdV9y aW5nX3dyaXRlKHJpbmcsIFBBQ0tFVDMoUEFDS0VUM19DT1BZX0RBVEEsIDQpKTsNCj4+ICAgIAlh bWRncHVfcmluZ193cml0ZShyaW5nLCA5IHwJLyogc3JjOiByZWdpc3RlciovDQo+PiBAQCAtNDA1 OSwxMiArNDA2NSwxMiBAQCBzdGF0aWMgdWludDY0X3QgZ2Z4X3Y5XzBfa2lxX3JlYWRfY2xvY2so c3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYpDQo+PiAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmlu ZywgMCk7DQo+PiAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgMCk7DQo+PiAgICAJYW1kZ3B1 X3Jpbmdfd3JpdGUocmluZywgbG93ZXJfMzJfYml0cyhhZGV2LT53Yi5ncHVfYWRkciArDQo+PiAt CQkJCWtpcS0+cmVnX3ZhbF9vZmZzICogNCkpOw0KPj4gKwkJCQlyZWdfdmFsX29mZnMgKiA0KSk7 DQo+PiAgICAJYW1kZ3B1X3Jpbmdfd3JpdGUocmluZywgdXBwZXJfMzJfYml0cyhhZGV2LT53Yi5n cHVfYWRkciArDQo+PiAtCQkJCWtpcS0+cmVnX3ZhbF9vZmZzICogNCkpOw0KPj4gKwkJCQlyZWdf dmFsX29mZnMgKiA0KSk7DQo+PiAgICAJYW1kZ3B1X2ZlbmNlX2VtaXRfcG9sbGluZyhyaW5nLCAm c2VxKTsNCj4+ICAgIAlhbWRncHVfcmluZ19jb21taXQocmluZyk7DQo+PiAtCXNwaW5fdW5sb2Nr X2lycXJlc3RvcmUoJmtpcS0+cmluZ19sb2NrLCBmbGFncyk7DQo+PiArCWFtZGdwdV9nZnhfa2lx X3VubG9jayhraXEpOw0KPj4gICAgDQo+PiAgICAJciA9IGFtZGdwdV9mZW5jZV93YWl0X3BvbGxp bmcocmluZywgc2VxLCBNQVhfS0lRX1JFR19XQUlUKTsNCj4+ICAgIA0KPj4gQEAgLTQwODgsMTAg KzQwOTQsMTQgQEAgc3RhdGljIHVpbnQ2NF90IGdmeF92OV8wX2tpcV9yZWFkX2Nsb2NrKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2KQ0KPj4gICAgCWlmIChjbnQgPiBNQVhfS0lRX1JFR19UUlkp DQo+PiAgICAJCWdvdG8gZmFpbGVkX2tpcV9yZWFkOw0KPj4gICAgDQo+PiAtCXJldHVybiAodWlu dDY0X3QpYWRldi0+d2Iud2Jba2lxLT5yZWdfdmFsX29mZnNdIHwNCj4+IC0JCSh1aW50NjRfdClh ZGV2LT53Yi53YltraXEtPnJlZ192YWxfb2ZmcyArIDEgXSA8PCAzMlVMTDsNCj4+ICsJdmFsdWUg PSAodWludDY0X3QpYWRldi0+d2Iud2JbcmVnX3ZhbF9vZmZzXSB8DQo+PiArCQkodWludDY0X3Qp YWRldi0+d2Iud2JbcmVnX3ZhbF9vZmZzICsgMSBdIDw8IDMyVUxMOw0KPj4gICAgDQo+PiArCWFt ZGdwdV9nZnhfa2lxX3Jlc3RvcmUoa2lxLCAmcmVnX3ZhbF9vZmZzKTsNCj4+ICsJcmV0dXJuIHZh bHVlOw0KPj4gICAgZmFpbGVkX2tpcV9yZWFkOg0KPj4gKwlhbWRncHVfZ2Z4X2tpcV9yZXN0b3Jl KGtpcSwgJnJlZ192YWxfb2Zmcyk7DQo+PiArZmFpbGVkX2tpcV9leGl0Og0KPj4gICAgCXByX2Vy cigiZmFpbGVkIHRvIHJlYWQgZ3B1IGNsb2NrXG4iKTsNCj4+ICAgIAlyZXR1cm4gfjA7DQo+PiAg ICB9DQo+PiBAQCAtNTQ4MiwxMCArNTQ5MiwxMCBAQCBzdGF0aWMgdm9pZCBnZnhfdjlfMF9yaW5n X2VtaXRfcGF0Y2hfY29uZF9leGVjKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdW5zaWduZQ0K Pj4gICAgCQlyaW5nLT5yaW5nW29mZnNldF0gPSAocmluZy0+cmluZ19zaXplPj4yKSAtIG9mZnNl dCArIGN1cjsgIH0NCj4+ICAgIA0KPj4gLXN0YXRpYyB2b2lkIGdmeF92OV8wX3JpbmdfZW1pdF9y cmVnKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywNCj4+IHVpbnQzMl90IHJlZykNCj4+ICtzdGF0 aWMgdm9pZCBnZnhfdjlfMF9yaW5nX2VtaXRfcnJlZyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcs IHVpbnQzMl90IHJlZywNCj4+ICsJCQkJICAgIHVpbnQzMl90IHJlZ192YWxfb2ZmcykNCj4+ICAg IHsNCj4+ICAgIAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IHJpbmctPmFkZXY7DQo+PiAt CXN0cnVjdCBhbWRncHVfa2lxICpraXEgPSAmYWRldi0+Z2Z4LmtpcTsNCj4+ICAgIA0KPj4gICAg CWFtZGdwdV9yaW5nX3dyaXRlKHJpbmcsIFBBQ0tFVDMoUEFDS0VUM19DT1BZX0RBVEEsIDQpKTsN Cj4+ICAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCAwIHwJLyogc3JjOiByZWdpc3RlciovDQo+ PiBAQCAtNTQ5NCw5ICs1NTA0LDkgQEAgc3RhdGljIHZvaWQgZ2Z4X3Y5XzBfcmluZ19lbWl0X3Jy ZWcoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCByZWcpDQo+PiAgICAJYW1kZ3B1 X3Jpbmdfd3JpdGUocmluZywgcmVnKTsNCj4+ICAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCAw KTsNCj4+ICAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCBsb3dlcl8zMl9iaXRzKGFkZXYtPndi LmdwdV9hZGRyICsNCj4+IC0JCQkJa2lxLT5yZWdfdmFsX29mZnMgKiA0KSk7DQo+PiArCQkJCXJl Z192YWxfb2ZmcyAqIDQpKTsNCj4+ICAgIAlhbWRncHVfcmluZ193cml0ZShyaW5nLCB1cHBlcl8z Ml9iaXRzKGFkZXYtPndiLmdwdV9hZGRyICsNCj4+IC0JCQkJa2lxLT5yZWdfdmFsX29mZnMgKiA0 KSk7DQo+PiArCQkJCXJlZ192YWxfb2ZmcyAqIDQpKTsNCj4+ICAgIH0NCj4+ICAgIA0KPj4gICAg c3RhdGljIHZvaWQgZ2Z4X3Y5XzBfcmluZ19lbWl0X3dyZWcoc3RydWN0IGFtZGdwdV9yaW5nICpy aW5nLA0KPj4gdWludDMyX3QgcmVnLCBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvZ21jX3YxMF8wLmMNCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Yx MF8wLmMNCj4+IGluZGV4IDMwYjc1ZDc5ZWZkYi4uNmI0ZGMwZWQ0ZmZmIDEwMDY0NA0KPj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3YxMF8wLmMNCj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dtY192MTBfMC5jDQo+PiBAQCAtNDIyLDIwICs0MjIsMjgg QEAgc3RhdGljIGludCBnbWNfdjEwXzBfZmx1c2hfZ3B1X3RsYl9wYXNpZChzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwNCj4+ICAgIAlzdHJ1Y3QgYW1kZ3B1X2tpcSAqa2lxID0gJmFkZXYtPmdm eC5raXE7DQo+PiAgICANCj4+ICAgIAlpZiAoYW1kZ3B1X2VtdV9tb2RlID09IDAgJiYgcmluZy0+ c2NoZWQucmVhZHkpIHsNCj4+IC0JCXNwaW5fbG9jaygmYWRldi0+Z2Z4LmtpcS5yaW5nX2xvY2sp Ow0KPj4gKwkJciA9IGFtZGdwdV9nZnhfa2lxX2xvY2soa2lxLCBmYWxzZSk7DQo+PiArCQlpZiAo cikgew0KPj4gKwkJCXByX2VycigiZmFpbGVkIHRvIGxvY2sga2lxXG4iKTsNCj4+ICsJCQlyZXR1 cm4gLUVUSU1FOw0KPj4gKwkJfQ0KPj4gKw0KPj4gICAgCQkvKiAyIGR3b3JkcyBmbHVzaCArIDgg ZHdvcmRzIGZlbmNlICovDQo+PiAgICAJCWFtZGdwdV9yaW5nX2FsbG9jKHJpbmcsIGtpcS0+cG1m LT5pbnZhbGlkYXRlX3RsYnNfc2l6ZSArIDgpOw0KPj4gKwkJYW1kZ3B1X2dmeF9raXFfY29uc3Vt ZShraXEsIE5VTEwpOw0KPj4gICAgCQlraXEtPnBtZi0+a2lxX2ludmFsaWRhdGVfdGxicyhyaW5n LA0KPj4gICAgCQkJCQlwYXNpZCwgZmx1c2hfdHlwZSwgYWxsX2h1Yik7DQo+PiAgICAJCWFtZGdw dV9mZW5jZV9lbWl0X3BvbGxpbmcocmluZywgJnNlcSk7DQo+PiAgICAJCWFtZGdwdV9yaW5nX2Nv bW1pdChyaW5nKTsNCj4+IC0JCXNwaW5fdW5sb2NrKCZhZGV2LT5nZngua2lxLnJpbmdfbG9jayk7 DQo+PiArCQlhbWRncHVfZ2Z4X2tpcV91bmxvY2soa2lxKTsNCj4+ICAgIAkJciA9IGFtZGdwdV9m ZW5jZV93YWl0X3BvbGxpbmcocmluZywgc2VxLCBhZGV2LT51c2VjX3RpbWVvdXQpOw0KPj4gICAg CQlpZiAociA8IDEpIHsNCj4+ICAgIAkJCURSTV9FUlJPUigid2FpdCBmb3Iga2lxIGZlbmNlIGVy cm9yOiAlbGQuXG4iLCByKTsNCj4+ICsJCQlhbWRncHVfZ2Z4X2tpcV9yZXN0b3JlKGtpcSwgZmFs c2UpOw0KPj4gICAgCQkJcmV0dXJuIC1FVElNRTsNCj4+ICAgIAkJfQ0KPj4gICAgDQo+PiArCQlh bWRncHVfZ2Z4X2tpcV9yZXN0b3JlKGtpcSwgTlVMTCk7DQo+PiAgICAJCXJldHVybiAwOw0KPj4g ICAgCX0NCj4+ICAgIA0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2dtY192OV8wLmMNCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ21jX3Y5XzAuYw0K Pj4gaW5kZXggZmVjZGJjNDcxOTgzLi42MjM4NzAyYzgwYjQgMTAwNjQ0DQo+PiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nbWNfdjlfMC5jDQo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9nbWNfdjlfMC5jDQo+PiBAQCAtNjEzLDcgKzYxMywxMyBAQCBzdGF0aWMg aW50IGdtY192OV8wX2ZsdXNoX2dwdV90bGJfcGFzaWQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYsDQo+PiAgICAJCWlmICh2ZWdhMjBfeGdtaV93YSkNCj4+ICAgIAkJCW5kdyArPSBraXEtPnBt Zi0+aW52YWxpZGF0ZV90bGJzX3NpemU7DQo+PiAgICANCj4+IC0JCXNwaW5fbG9jaygmYWRldi0+ Z2Z4LmtpcS5yaW5nX2xvY2spOw0KPj4gKwkJciA9IGFtZGdwdV9nZnhfa2lxX2xvY2soa2lxLCBm YWxzZSk7DQo+PiArCQlpZiAocikgew0KPj4gKwkJCXByX2VycigiZmFpbGVkIHRvIGxvY2sga2lx XG4iKTsNCj4+ICsJCQlyZXR1cm4gLUVUSU1FOw0KPj4gKwkJfQ0KPj4gKw0KPj4gKwkJYW1kZ3B1 X2dmeF9raXFfY29uc3VtZShraXEsIE5VTEwpOw0KPj4gICAgCQkvKiAyIGR3b3JkcyBmbHVzaCAr IDggZHdvcmRzIGZlbmNlICovDQo+PiAgICAJCWFtZGdwdV9yaW5nX2FsbG9jKHJpbmcsIG5kdyk7 DQo+PiAgICAJCWlmICh2ZWdhMjBfeGdtaV93YSkNCj4+IEBAIC02MjMsMTMgKzYyOSwxNSBAQCBz dGF0aWMgaW50IGdtY192OV8wX2ZsdXNoX2dwdV90bGJfcGFzaWQoc3RydWN0IGFtZGdwdV9kZXZp Y2UgKmFkZXYsDQo+PiAgICAJCQkJCXBhc2lkLCBmbHVzaF90eXBlLCBhbGxfaHViKTsNCj4+ICAg IAkJYW1kZ3B1X2ZlbmNlX2VtaXRfcG9sbGluZyhyaW5nLCAmc2VxKTsNCj4+ICAgIAkJYW1kZ3B1 X3JpbmdfY29tbWl0KHJpbmcpOw0KPj4gLQkJc3Bpbl91bmxvY2soJmFkZXYtPmdmeC5raXEucmlu Z19sb2NrKTsNCj4+ICsJCWFtZGdwdV9nZnhfa2lxX3VubG9jayhraXEpOw0KPj4gICAgCQlyID0g YW1kZ3B1X2ZlbmNlX3dhaXRfcG9sbGluZyhyaW5nLCBzZXEsIGFkZXYtPnVzZWNfdGltZW91dCk7 DQo+PiAgICAJCWlmIChyIDwgMSkgew0KPj4gICAgCQkJRFJNX0VSUk9SKCJ3YWl0IGZvciBraXEg ZmVuY2UgZXJyb3I6ICVsZC5cbiIsIHIpOw0KPj4gKwkJCWFtZGdwdV9nZnhfa2lxX3Jlc3RvcmUo a2lxLCBOVUxMKTsNCj4+ICAgIAkJCXJldHVybiAtRVRJTUU7DQo+PiAgICAJCX0NCj4+ICAgIA0K Pj4gKwkJYW1kZ3B1X2dmeF9raXFfcmVzdG9yZShraXEsIE5VTEwpOw0KPj4gICAgCQlyZXR1cm4g MDsNCj4+ICAgIAl9DQo+PiAgICANCj4+IC0tDQo+PiAyLjE3LjENCj4+DQo+IF9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IGFtZC1nZnggbWFpbGluZyBs aXN0DQo+IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnDQo+IGh0dHBzOi8vbmFtMTEuc2Fm ZWxpbmtzLnByb3RlY3Rpb24ub3V0bG9vay5jb20vP3VybD1odHRwcyUzQSUyRiUyRmxpc3RzLmZy ZWVkZXNrdG9wLm9yZyUyRm1haWxtYW4lMkZsaXN0aW5mbyUyRmFtZC1nZngmYW1wO2RhdGE9MDIl N0MwMSU3Q1lpbnRpYW4uVGFvJTQwYW1kLmNvbSU3QzE2ZDVjYWVhYjM0NDQ3OGEzOTU4MDhkN2U2 OTA3MGQzJTdDM2RkODk2MWZlNDg4NGU2MDhlMTFhODJkOTk0ZTE4M2QlN0MwJTdDMCU3QzYzNzIz MTM4MDM2NjU1NjU5MyZhbXA7c2RhdGE9bVJuUnpsU2xGdWZlSHl0UG1DTGpLbFNvbjJWNlNTU0Ml MkZ4eDljNTVGMmdVJTNEJmFtcDtyZXNlcnZlZD0wDQoNCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vYW1kLWdmeAo=