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=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable 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 1BF81C282DE for ; Thu, 23 May 2019 05:48:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id D36F321019 for ; Thu, 23 May 2019 05:48:15 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=Mellanox.com header.i=@Mellanox.com header.b="CiMMoEm8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726395AbfEWFsO (ORCPT ); Thu, 23 May 2019 01:48:14 -0400 Received: from mail-eopbgr70045.outbound.protection.outlook.com ([40.107.7.45]:59714 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725806AbfEWFsN (ORCPT ); Thu, 23 May 2019 01:48:13 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4UPpKN2XTlgksYmbeKLBkxotDnAJSQrcuJd0Pg+ObCQ=; b=CiMMoEm8X+B4lJZ+1D3ZlitQ/VxjmaIbb/8yTBKml5Ky8nNiYXnkrUCIBUaDJYOMhbrigWKqEErPBAALlK2AI4423tSNvunsIWSRCKCkrZ0ngcEphqLk5jP9I0Q+8RCA/1wPr8yp43itzeeoxPRhN0pVx7Xug2opbGrF//UnloI= Received: from DB8PR05MB5898.eurprd05.prod.outlook.com (20.179.9.32) by DB8PR05MB6043.eurprd05.prod.outlook.com (20.179.11.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.17; Thu, 23 May 2019 05:47:20 +0000 Received: from DB8PR05MB5898.eurprd05.prod.outlook.com ([fe80::7159:5f3a:906:6aab]) by DB8PR05MB5898.eurprd05.prod.outlook.com ([fe80::7159:5f3a:906:6aab%7]) with mapi id 15.20.1922.013; Thu, 23 May 2019 05:47:20 +0000 From: Saeed Mahameed To: "toke@redhat.com" , "daniel@iogearbox.net" , "ast@kernel.org" , "netdev@vger.kernel.org" , "bjorn.topel@gmail.com" CC: "magnus.karlsson@intel.com" , "bjorn.topel@intel.com" , "jakub.kicinski@netronome.com" , "brouer@redhat.com" , "bpf@vger.kernel.org" Subject: Re: [PATCH bpf-next 1/2] net: xdp: refactor XDP_QUERY_PROG{,_HW} to netdev Thread-Topic: [PATCH bpf-next 1/2] net: xdp: refactor XDP_QUERY_PROG{,_HW} to netdev Thread-Index: AQHVEJ195eKN57x6PkCb2c0ta4df4qZ4NLqA Date: Thu, 23 May 2019 05:47:19 +0000 Message-ID: <883964c3ad30ec49db599241857ceb41d8b35567.camel@mellanox.com> References: <20190522125353.6106-1-bjorn.topel@gmail.com> <20190522125353.6106-2-bjorn.topel@gmail.com> In-Reply-To: <20190522125353.6106-2-bjorn.topel@gmail.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.32.2 (3.32.2-1.fc30) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-originating-ip: [73.15.39.150] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4e17afbc-dba1-4b59-2f44-08d6df421f12 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020);SRVR:DB8PR05MB6043; x-ms-traffictypediagnostic: DB8PR05MB6043: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 00462943DE x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(136003)(346002)(39860400002)(396003)(366004)(376002)(189003)(199004)(36756003)(7416002)(53936002)(2501003)(478600001)(99286004)(229853002)(6436002)(68736007)(6512007)(6116002)(58126008)(6486002)(2906002)(26005)(54906003)(110136005)(66066001)(76176011)(102836004)(186003)(3846002)(6506007)(81156014)(81166006)(8676002)(4326008)(316002)(446003)(8936002)(25786009)(5660300002)(305945005)(66574012)(6246003)(256004)(2201001)(5024004)(66476007)(64756008)(86362001)(30864003)(11346002)(66946007)(91956017)(76116006)(73956011)(14444005)(7736002)(66556008)(66446008)(14454004)(486006)(71190400001)(71200400001)(476003)(2616005)(118296001)(309714004);DIR:OUT;SFP:1101;SCL:1;SRVR:DB8PR05MB6043;H:DB8PR05MB5898.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: n1eqsfrWuYQpcrhm5uhvUQpgasG0VchYvzGQzSq9L8GBYwV1y34Y6Ow5ezttsC/M5kutZ9yxErtV77Zz/5bjf4ZEPSNGMa6e+JkRwW/+QUFFHuECGYdOg+DA+pGwtL3eNHVlDe7puCMUVwWPO8Rw7Q9zUdQ09tSiGNeQA26wNbsmqUVfbSK00Q8C9tsHkrkMidPSvS7n/gbwgzRx/VQ4Htu8fwpTxxb+6kV3FSgf0gnxLGcm2uzsH2MdenfhWkU7T9PP7DAe+N8eEV7Z9ZxWO6RXRqXMSc0CF+GfXICRZoavRefYR3gv1j2bOGbR8Glc+iuZey7tUmo6S/aQ84Cy0316fft8OE/z7jC+i7EhBLXAy9U3WPdIyWQt8JB00KaTSXARVd552GaRHntf92zCGX14tIpoZ/zY/fwdK4OLbGI= Content-Type: text/plain; charset="utf-8" Content-ID: <524D492C22424C4EB6D25539EC9056E5@eurprd05.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4e17afbc-dba1-4b59-2f44-08d6df421f12 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 May 2019 05:47:20.0015 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: saeedm@mellanox.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB8PR05MB6043 Sender: bpf-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org T24gV2VkLCAyMDE5LTA1LTIyIGF0IDE0OjUzICswMjAwLCBCasO2cm4gVMO2cGVsIHdyb3RlOg0K PiBGcm9tOiBCasO2cm4gVMO2cGVsIDxiam9ybi50b3BlbEBpbnRlbC5jb20+DQo+IA0KPiBBbGwg WERQIGNhcGFibGUgZHJpdmVycyBuZWVkIHRvIGltcGxlbWVudCB0aGUgWERQX1FVRVJZX1BST0d7 LF9IV30NCj4gY29tbWFuZCBvZiBuZG9fYnBmLiBUaGUgcXVlcnkgY29kZSBpcyBmYWlybHkgZ2Vu ZXJpYy4gVGhpcyBjb21taXQNCj4gcmVmYWN0b3JzIHRoZSBxdWVyeSBjb2RlIHVwIGZyb20gdGhl IGRyaXZlcnMgdG8gdGhlIG5ldGRldiBsZXZlbC4NCj4gDQo+IFRoZSBzdHJ1Y3QgbmV0X2Rldmlj ZSBoYXMgZ2FpbmVkIGZvdXIgbmV3IG1lbWJlcnMgdHJhY2tpbmcgdGhlIFhEUA0KPiBwcm9ncmFt LCB0aGUgY29ycmVzcG9uZGluZyBwcm9ncmFtIGZsYWdzLCBhbmQgd2hpY2ggcHJvZ3JhbXMNCj4g KFNLQl9NT0RFLCBEUlZfTU9ERSBvciBIV19NT0RFKSB0aGF0IGFyZSBhY3RpdmF0ZWQuDQo+IA0K PiBUaGUgeGRwX3Byb2cgbWVtYmVyLCBwcmV2aW91c2x5IG9ubHkgdXNlZCBmb3IgU0tCX01PREUs IGlzIHNoYXJlZA0KPiB3aXRoDQo+IERSVl9NT0RFLCBzaW5jZSB0aGV5IGFyZSBtdXR1YWxseSBl eGNsdXNpdmUuDQo+IA0KPiBUaGUgcHJvZ3JhbSBxdWVyeSBvcGVyYXRpb25zIGlzIGFsbCBkb25l IHVuZGVyIHRoZSBydG5sIGxvY2suDQo+IEhvd2V2ZXIsDQo+IHRoZSB4ZHBfcHJvZyBtZW1iZXIg aXMgX19yY3UgYW5ub3RhdGVkLCBhbmQgdXNlZCBpbiBhIGxvY2stbGVzcw0KPiBtYW5uZXINCj4g Zm9yIHRoZSBTS0JfTU9ERS4gVGhpcyBpcyBiZWNhdXNlIHRoZSB4ZHBfcHJvZyBtZW1iZXIgaXMg c2hhcmVkIGZyb20NCj4gYQ0KPiBxdWVyeSBwcm9ncmFtIHBlcnNwZWN0aXZlIChhZ2FpbiwgU0tC IGFuZCBEUlYgYXJlIG11dHVhbCBleGNsdXNpdmUpLA0KPiBSQ1UgcmVhZCBhbmQgYXNzaWdubWVu dHMgZnVuY3Rpb25zIGFyZSBzdGlsbCB1c2VkIHdoZW4gYWx0ZXJpbmcNCj4geGRwX3Byb2csIGV2 ZW4gd2hlbiBvbmx5IGZvciBxdWVyaWVzIGluIERSVl9NT0RFLiBUaGlzIGlzIGZvcg0KPiBzcGFy c2UvbG9ja2RlcCBjb3JyZWN0bmVzcy4NCj4gDQo+IEEgbWlub3IgYmVoYXZpb3JhbCBjaGFuZ2Ug d2FzIGRvbmUgZHVyaW5nIHRoaXMgcmVmYWN0b3JpemF0aW9uOyBXaGVuDQo+IHBhc3NpbmcgYSBu ZWdhdGl2ZSBmaWxlIGRlc2NyaXB0b3IgdG8gYSBuZXRkZXYgdG8gZGlzYWJsZSBYRFAsIHRoZQ0K PiBzYW1lIHByb2dyYW0gZmxhZyBhcyB0aGUgcnVubmluZyBwcm9ncmFtIGlzIHJlcXVpcmVkLiBB biBleGFtcGxlLg0KPiANCj4gVGhlIGV0aDAgaXMgRFJWX0RSViBjYXBhYmxlLiBQcmV2aW91c2x5 LCB0aGlzIHdhcyBPSywgYnV0IGNvbmZ1c2luZzoNCj4gDQo+ICAgIyBpcCBsaW5rIHNldCBkZXYg ZXRoMCB4ZHAgb2JqIGZvby5vIHNlYyBtYWluDQo+ICAgIyBpcCBsaW5rIHNldCBkZXYgZXRoMCB4 ZHBnZW5lcmljIG9mZg0KPiANCj4gTm93LCB0aGUgc2FtZSBjb21tYW5kcyBnaXZlOg0KPiANCj4g ICAjIGlwIGxpbmsgc2V0IGRldiBldGgwIHhkcCBvYmogZm9vLm8gc2VjIG1haW4NCj4gICAjIGlw IGxpbmsgc2V0IGRldiBldGgwIHhkcGdlbmVyaWMgb2ZmDQo+ICAgRXJyb3I6IG5hdGl2ZSBhbmQg Z2VuZXJpYyBYRFAgY2FuJ3QgYmUgYWN0aXZlIGF0IHRoZSBzYW1lIHRpbWUuDQo+IA0KPiBTaWdu ZWQtb2ZmLWJ5OiBCasO2cm4gVMO2cGVsIDxiam9ybi50b3BlbEBpbnRlbC5jb20+DQo+IC0tLQ0K PiAgaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCB8ICAxMyArKystLQ0KPiAgbmV0L2NvcmUvZGV2 LmMgICAgICAgICAgICB8IDEyMCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tDQo+ IC0tLS0NCj4gIG5ldC9jb3JlL3J0bmV0bGluay5jICAgICAgfCAgMzMgKystLS0tLS0tLS0NCj4g IDMgZmlsZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgOTAgZGVsZXRpb25zKC0pDQo+IA0K PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaCBiL2luY2x1ZGUvbGludXgv bmV0ZGV2aWNlLmgNCj4gaW5kZXggNDRiNDdlOWRmOTRhLi5iZGNiMjBhMzk0NmMgMTAwNjQ0DQo+ IC0tLSBhL2luY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgNCj4gKysrIGIvaW5jbHVkZS9saW51eC9u ZXRkZXZpY2UuaA0KPiBAQCAtMTk0MCw2ICsxOTQwLDExIEBAIHN0cnVjdCBuZXRfZGV2aWNlIHsN Cj4gICNlbmRpZg0KPiAgCXN0cnVjdCBobGlzdF9ub2RlCWluZGV4X2hsaXN0Ow0KPiAgDQo+ICsJ c3RydWN0IGJwZl9wcm9nCQkqeGRwX3Byb2dfaHc7DQo+ICsJdW5zaWduZWQgaW50CQl4ZHBfZmxh Z3M7DQo+ICsJdTMyCQkJeGRwX3Byb2dfZmxhZ3M7DQo+ICsJdTMyCQkJeGRwX3Byb2dfaHdfZmxh Z3M7DQo+ICsNCg0KDQpNYXliZSBpdCB3aWxsIGJlIG5pY2VyIGlmIHlvdSB3cmFwIGFsbCB4ZHAg cmVsYXRlZCBkYXRhIGluIG9uZSBzdHJ1Y3QsIA0KVGhpcyBpcyBnb29kIGFzIGEgd2VhayBlbmZv cmNlbWVudCBzbyBmdXR1cmUgeGRwIGV4dGVuc2lvbnMgd2lsbCBnbyB0bw0KdGhlIHNhbWUgcGxh Y2UgYW5kIG5vdCBzcHJlYWQgYWxsIGFjcm9zcyB0aGUgbmV0X2RldmljZSBzdHJ1Y3QuDQoNCnRo aXMgaXMgZ29pbmcgdG8gYmUgaGFuZHkgd2hlbiB3ZSBzdGFydCBpbnRyb2R1Y2luZyBYRFAgb2Zm bG9hZHMuDQoNCj4gIC8qDQo+ICAgKiBDYWNoZSBsaW5lcyBtb3N0bHkgdXNlZCBvbiB0cmFuc21p dCBwYXRoDQo+ICAgKi8NCj4gQEAgLTIwNDUsOSArMjA1MCw4IEBAIHN0cnVjdCBuZXRfZGV2aWNl IHsNCj4gIA0KPiAgc3RhdGljIGlubGluZSBib29sIG5ldGlmX2VsaWRlX2dybyhjb25zdCBzdHJ1 Y3QgbmV0X2RldmljZSAqZGV2KQ0KPiAgew0KPiAtCWlmICghKGRldi0+ZmVhdHVyZXMgJiBORVRJ Rl9GX0dSTykgfHwgZGV2LT54ZHBfcHJvZykNCj4gLQkJcmV0dXJuIHRydWU7DQo+IC0JcmV0dXJu IGZhbHNlOw0KPiArCXJldHVybiAhKGRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX0dSTykgfHwNCj4g KwkJZGV2LT54ZHBfZmxhZ3MgJiBYRFBfRkxBR1NfU0tCX01PREU7DQo+ICB9DQo+ICANCj4gICNk ZWZpbmUJTkVUREVWX0FMSUdOCQkzMg0KPiBAQCAtMzY4NCw4ICszNjg4LDcgQEAgc3RydWN0IHNr X2J1ZmYgKmRldl9oYXJkX3N0YXJ0X3htaXQoc3RydWN0DQo+IHNrX2J1ZmYgKnNrYiwgc3RydWN0 IG5ldF9kZXZpY2UgKmRldiwNCj4gIHR5cGVkZWYgaW50ICgqYnBmX29wX3QpKHN0cnVjdCBuZXRf ZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfYnBmDQo+ICpicGYpOw0KPiAgaW50IGRldl9jaGFu Z2VfeGRwX2ZkKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sN Cj4gKmV4dGFjaywNCj4gIAkJICAgICAgaW50IGZkLCB1MzIgZmxhZ3MpOw0KPiAtdTMyIF9fZGV2 X3hkcF9xdWVyeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBicGZfb3BfdCB4ZHBfb3AsDQo+IC0J CSAgICBlbnVtIGJwZl9uZXRkZXZfY29tbWFuZCBjbWQpOw0KPiArdTMyIGRldl94ZHBfcXVlcnko c3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGZsYWdzKTsNCj4gIGludCB4ZHBf dW1lbV9xdWVyeShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1MTYgcXVldWVfaWQpOw0KPiAgDQo+ ICBpbnQgX19kZXZfZm9yd2FyZF9za2Ioc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IHNr X2J1ZmYgKnNrYik7DQo+IGRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rl di5jDQo+IGluZGV4IGI2Yjg1MDVjZmIzZS4uZWFkMTZjM2Y5NTVjIDEwMDY0NA0KPiAtLS0gYS9u ZXQvY29yZS9kZXYuYw0KPiArKysgYi9uZXQvY29yZS9kZXYuYw0KPiBAQCAtODAwNSwzMSArODAw NSwzMSBAQCBpbnQgZGV2X2NoYW5nZV9wcm90b19kb3duX2dlbmVyaWMoc3RydWN0DQo+IG5ldF9k ZXZpY2UgKmRldiwgYm9vbCBwcm90b19kb3duKQ0KPiAgfQ0KPiAgRVhQT1JUX1NZTUJPTChkZXZf Y2hhbmdlX3Byb3RvX2Rvd25fZ2VuZXJpYyk7DQo+ICANCj4gLXUzMiBfX2Rldl94ZHBfcXVlcnko c3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYnBmX29wX3QgYnBmX29wLA0KPiAtCQkgICAgZW51bSBi cGZfbmV0ZGV2X2NvbW1hbmQgY21kKQ0KPiArdTMyIGRldl94ZHBfcXVlcnkoc3RydWN0IG5ldF9k ZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IGZsYWdzKQ0KPiAgew0KPiAtCXN0cnVjdCBuZXRkZXZf YnBmIHhkcDsNCj4gKwlzdHJ1Y3QgYnBmX3Byb2cgKnByb2cgPSBOVUxMOw0KPiAgDQo+IC0JaWYg KCFicGZfb3ApDQo+ICsJaWYgKGh3ZWlnaHQzMihmbGFncykgIT0gMSkNCj4gIAkJcmV0dXJuIDA7 DQo+ICANCj4gLQltZW1zZXQoJnhkcCwgMCwgc2l6ZW9mKHhkcCkpOw0KPiAtCXhkcC5jb21tYW5k ID0gY21kOw0KPiAtDQo+IC0JLyogUXVlcnkgbXVzdCBhbHdheXMgc3VjY2VlZC4gKi8NCj4gLQlX QVJOX09OKGJwZl9vcChkZXYsICZ4ZHApIDwgMCAmJiBjbWQgPT0gWERQX1FVRVJZX1BST0cpOw0K DQpzaW5jZSBub3cgdGhpcyBmdW5jdGlvbiBjYW4gb25seSBxdWVyeSBQUk9HIG9yIFBST0dfSFcg aXQgaXMgYSBnb29kDQp0aW1lIHRvIHJlZmxlY3QgdGhhdCBpbiB0aGUgZnVuY3Rpb24gbmFtZSwg bWF5YmUgZGV2X3hkcF9xdWVyeV9wcm9nIGlzDQphIGJldHRlciBuYW1lID8gDQoNCj4gKwlpZiAo ZmxhZ3MgJiAoWERQX0ZMQUdTX1NLQl9NT0RFIHwgWERQX0ZMQUdTX0RSVl9NT0RFKSkNCj4gKwkJ cHJvZyA9IHJ0bmxfZGVyZWZlcmVuY2UoZGV2LT54ZHBfcHJvZyk7DQo+ICsJZWxzZSBpZiAoZmxh Z3MgJiBYRFBfRkxBR1NfSFdfTU9ERSkNCj4gKwkJcHJvZyA9IGRldi0+eGRwX3Byb2dfaHc7DQo+ ICANCj4gLQlyZXR1cm4geGRwLnByb2dfaWQ7DQo+ICsJcmV0dXJuIHByb2cgPyBwcm9nLT5hdXgt PmlkIDogMDsNCj4gIH0NCj4gIA0KPiAtc3RhdGljIGludCBkZXZfeGRwX2luc3RhbGwoc3RydWN0 IG5ldF9kZXZpY2UgKmRldiwgYnBmX29wX3QgYnBmX29wLA0KPiArc3RhdGljIGludCBkZXZfeGRw X2luc3RhbGwoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50DQo+IHRhcmdldCwN Cj4gIAkJCSAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaywgdTMyIGZsYWdzLA0KPiAg CQkJICAgc3RydWN0IGJwZl9wcm9nICpwcm9nKQ0KPiAgew0KPiArCWJwZl9vcF90IGJwZl9vcCA9 IGRldi0+bmV0ZGV2X29wcy0+bmRvX2JwZjsNCg0KSSB3b3VsZCBhc3NpbmcgYnBmX29wIGJlbG93 IDoNCmJwZl9vcCA9ICh0YXJnZXQgPT0gWERQX0ZMQUdTX1NLQl9NT0RFKSA/DQogICAgICAgICBn ZW5lcmljX3hkcF9pbnN0YWxsIDoNCiAgICAgICAgIGRldi0+bmV0ZGV2X29wcy0+bmRvX2JwZjsN Cg0Kb3IganVzdCBkcm9wIGJwZl9vcCBhbmQgY2FsbCBkZXYtPm5ldGRldl9vcHMtPm5kb19icGYg aW4gdGhlIG9uZSBwbGFjZQ0KaXQgYnBmX29wIGlzIGJlaW5nIGNhbGxlZC4NCg0KPiAgCXN0cnVj dCBuZXRkZXZfYnBmIHhkcDsNCj4gKwlpbnQgZXJyOw0KPiAgDQo+ICAJbWVtc2V0KCZ4ZHAsIDAs IHNpemVvZih4ZHApKTsNCj4gLQlpZiAoZmxhZ3MgJiBYRFBfRkxBR1NfSFdfTU9ERSkNCj4gKwlp ZiAodGFyZ2V0ID09IFhEUF9GTEFHU19IV19NT0RFKQ0KPiAgCQl4ZHAuY29tbWFuZCA9IFhEUF9T RVRVUF9QUk9HX0hXOw0KPiAgCWVsc2UNCj4gIAkJeGRwLmNvbW1hbmQgPSBYRFBfU0VUVVBfUFJP RzsNCj4gQEAgLTgwMzcsMzUgKzgwMzcsNDEgQEAgc3RhdGljIGludCBkZXZfeGRwX2luc3RhbGwo c3RydWN0IG5ldF9kZXZpY2UNCj4gKmRldiwgYnBmX29wX3QgYnBmX29wLA0KPiAgCXhkcC5mbGFn cyA9IGZsYWdzOw0KPiAgCXhkcC5wcm9nID0gcHJvZzsNCg0KQXJlIHlvdSBzdXJlIG5vIG9uZSBp cyB1c2luZyBmbGFncyANCj4gIA0KPiAtCXJldHVybiBicGZfb3AoZGV2LCAmeGRwKTsNCj4gKwll cnIgPSAodGFyZ2V0ID09IFhEUF9GTEFHU19TS0JfTU9ERSkgPw0KPiArCSAgICAgIGdlbmVyaWNf eGRwX2luc3RhbGwoZGV2LCAmeGRwKSA6DQo+ICsJICAgICAgYnBmX29wKGRldiwgJnhkcCk7DQo+ ICsJaWYgKCFlcnIpIHsNCj4gKwkJaWYgKHByb2cpDQo+ICsJCQlkZXYtPnhkcF9mbGFncyB8PSB0 YXJnZXQ7DQo+ICsJCWVsc2UNCj4gKwkJCWRldi0+eGRwX2ZsYWdzICY9IH50YXJnZXQ7DQo+ICsN Cj4gKwkJaWYgKHRhcmdldCA9PSBYRFBfRkxBR1NfSFdfTU9ERSkgew0KPiArCQkJZGV2LT54ZHBf cHJvZ19odyA9IHByb2c7DQo+ICsJCQlkZXYtPnhkcF9wcm9nX2h3X2ZsYWdzID0gZmxhZ3M7DQo+ ICsJCX0gZWxzZSBpZiAodGFyZ2V0ID09IFhEUF9GTEFHU19EUlZfTU9ERSkgew0KPiArCQkJcmN1 X2Fzc2lnbl9wb2ludGVyKGRldi0+eGRwX3Byb2csIHByb2cpOw0KPiArCQkJZGV2LT54ZHBfcHJv Z19mbGFncyA9IGZsYWdzOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICsJcmV0dXJuIGVycjsNCj4g IH0NCj4gIA0KPiAgc3RhdGljIHZvaWQgZGV2X3hkcF91bmluc3RhbGwoc3RydWN0IG5ldF9kZXZp Y2UgKmRldikNCj4gIHsNCj4gLQlzdHJ1Y3QgbmV0ZGV2X2JwZiB4ZHA7DQo+IC0JYnBmX29wX3Qg bmRvX2JwZjsNCj4gLQ0KPiAtCS8qIFJlbW92ZSBnZW5lcmljIFhEUCAqLw0KPiAtCVdBUk5fT04o ZGV2X3hkcF9pbnN0YWxsKGRldiwgZ2VuZXJpY194ZHBfaW5zdGFsbCwgTlVMTCwgMCwNCj4gTlVM TCkpOw0KPiAtDQo+IC0JLyogUmVtb3ZlIGZyb20gdGhlIGRyaXZlciAqLw0KPiAtCW5kb19icGYg PSBkZXYtPm5ldGRldl9vcHMtPm5kb19icGY7DQo+IC0JaWYgKCFuZG9fYnBmKQ0KPiAtCQlyZXR1 cm47DQo+IC0NCj4gLQltZW1zZXQoJnhkcCwgMCwgc2l6ZW9mKHhkcCkpOw0KPiAtCXhkcC5jb21t YW5kID0gWERQX1FVRVJZX1BST0c7DQo+IC0JV0FSTl9PTihuZG9fYnBmKGRldiwgJnhkcCkpOw0K PiAtCWlmICh4ZHAucHJvZ19pZCkNCj4gLQkJV0FSTl9PTihkZXZfeGRwX2luc3RhbGwoZGV2LCBu ZG9fYnBmLCBOVUxMLA0KPiB4ZHAucHJvZ19mbGFncywNCj4gLQkJCQkJTlVMTCkpOw0KPiAtDQo+ IC0JLyogUmVtb3ZlIEhXIG9mZmxvYWQgKi8NCj4gLQltZW1zZXQoJnhkcCwgMCwgc2l6ZW9mKHhk cCkpOw0KPiAtCXhkcC5jb21tYW5kID0gWERQX1FVRVJZX1BST0dfSFc7DQo+IC0JaWYgKCFuZG9f YnBmKGRldiwgJnhkcCkgJiYgeGRwLnByb2dfaWQpDQo+IC0JCVdBUk5fT04oZGV2X3hkcF9pbnN0 YWxsKGRldiwgbmRvX2JwZiwgTlVMTCwNCj4geGRwLnByb2dfZmxhZ3MsDQo+IC0JCQkJCU5VTEwp KTsNCj4gKwlpZiAoZGV2LT54ZHBfZmxhZ3MgJiBYRFBfRkxBR1NfU0tCX01PREUpIHsNCj4gKwkJ V0FSTl9PTihkZXZfeGRwX2luc3RhbGwoZGV2LCBYRFBfRkxBR1NfU0tCX01PREUsDQo+ICsJCQkJ CU5VTEwsIDAsIE5VTEwpKTsNCj4gKwl9DQo+ICsJaWYgKGRldi0+eGRwX2ZsYWdzICYgWERQX0ZM QUdTX0RSVl9NT0RFKSB7DQo+ICsJCVdBUk5fT04oZGV2X3hkcF9pbnN0YWxsKGRldiwgWERQX0ZM QUdTX0RSVl9NT0RFLA0KPiArCQkJCQlOVUxMLCBkZXYtPnhkcF9wcm9nX2ZsYWdzLA0KPiBOVUxM KSk7DQo+ICsJfQ0KPiArCWlmIChkZXYtPnhkcF9mbGFncyAmIFhEUF9GTEFHU19IV19NT0RFKSB7 DQo+ICsJCVdBUk5fT04oZGV2X3hkcF9pbnN0YWxsKGRldiwgWERQX0ZMQUdTX0hXX01PREUsDQo+ ICsJCQkJCU5VTEwsIGRldi0+eGRwX3Byb2dfaHdfZmxhZ3MsDQo+IE5VTEwpKTsNCj4gKwl9DQoN Cmluc3RlYWQgdGhpcyBsb25nICJpZiIgZGFuY2UsIHdoeSBkb24ndCB5b3UganVzdCB1c2UgeGRw LT5mbGFncyBpbnNpZGUNCmRldl94ZHBfaW5zdGFsbCB3aGVuIHByb2cgaXMgTlVMTCA/IA0KSSB3 b3VsZCBldmVuIGNvbnNpZGVyIGludHJvZHVjaW5nIGFuIHVuaW5zdGFsbCBmdW5jdGlvbiwgd2hp Y2ggZG9lc24ndA0KcmVjZWl2ZSBmbGFncywgYW5kIHdpbGwgdXNlIHhkcC0+ZmxhZ3MgZGlyZWN0 bHkuLiANCg0KdW5pbnN0YWxsIGNhbiBiZSBqdXN0IGEgdHdvIGxpbmVyIGZ1bmN0aW9uDQoNCmRl dl94ZHBfdW5pbnN0YWxsKCkgew0KeGRwLnByb2cgPSBOVUxMOw0KKGRldi0+eGRwX2ZsYWdzID09 IFhEUF9GTEFHU19TS0JfTU9ERSkgPw0KICAgICAgZ2VuZXJpY194ZHBfaW5zdGFsbChkZXYsICZ4 ZHApIDoNCiAgICAgIGRldi0+bmV0ZGV2X29wcy0+bmRvX2JwZihkZXYsICZ4ZHApOw0KZGV2LT54 ZHBfZmxhZ3MgJj0gfihYRFBfRkxBR1NfU0tCX01PREUgfCBYRFBfRkxBR1NfSFdfTU9ERSB8DQpY RFBfRkxBR1NfRFJWX01PREUpOw0KfQ0KDQo+ICB9DQo+ICANCj4gIC8qKg0KPiBAQCAtODA4MCw0 MSArODA4Niw0MSBAQCBzdGF0aWMgdm9pZCBkZXZfeGRwX3VuaW5zdGFsbChzdHJ1Y3QNCj4gbmV0 X2RldmljZSAqZGV2KQ0KPiAgaW50IGRldl9jaGFuZ2VfeGRwX2ZkKHN0cnVjdCBuZXRfZGV2aWNl ICpkZXYsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sNCj4gKmV4dGFjaywNCj4gIAkJICAgICAgaW50 IGZkLCB1MzIgZmxhZ3MpDQo+ICB7DQo+IC0JY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzICpv cHMgPSBkZXYtPm5ldGRldl9vcHM7DQo+IC0JZW51bSBicGZfbmV0ZGV2X2NvbW1hbmQgcXVlcnk7 DQo+ICsJYm9vbCBvZmZsb2FkLCBkcnZfc3VwcCA9ICEhZGV2LT5uZXRkZXZfb3BzLT5uZG9fYnBm Ow0KPiAgCXN0cnVjdCBicGZfcHJvZyAqcHJvZyA9IE5VTEw7DQo+IC0JYnBmX29wX3QgYnBmX29w LCBicGZfY2hrOw0KPiAtCWJvb2wgb2ZmbG9hZDsNCj4gKwl1bnNpZ25lZCBpbnQgdGFyZ2V0Ow0K PiAgCWludCBlcnI7DQo+ICANCj4gIAlBU1NFUlRfUlROTCgpOw0KPiAgDQo+ICAJb2ZmbG9hZCA9 IGZsYWdzICYgWERQX0ZMQUdTX0hXX01PREU7DQo+IC0JcXVlcnkgPSBvZmZsb2FkID8gWERQX1FV RVJZX1BST0dfSFcgOiBYRFBfUVVFUllfUFJPRzsNCj4gKwl0YXJnZXQgPSBvZmZsb2FkID8gWERQ X0ZMQUdTX0hXX01PREUgOiBYRFBfRkxBR1NfRFJWX01PREU7DQoNCkkgZG9uJ3QgdGhpbmsgeW91 IHJlYWxseSBuZWVkIHRoaXMgdGFyZ2V0IHBhcmFtZXRlciBpdCBvbmx5IGNvbXBsaWNhdGVzDQp0 aGluZ3MgZm9yIG5vIHJlYXNvbiwgYWxsIGluZm9ybWF0aW9uIHlvdSBuZWVkIGFyZSBhbHJlYWR5 IGluIGZsYWdzIGFuZA0KZGV2LT54ZHBfZmxhZ3MuDQoNCj4gIA0KPiAtCWJwZl9vcCA9IGJwZl9j aGsgPSBvcHMtPm5kb19icGY7DQo+IC0JaWYgKCFicGZfb3AgJiYgKGZsYWdzICYgKFhEUF9GTEFH U19EUlZfTU9ERSB8DQo+IFhEUF9GTEFHU19IV19NT0RFKSkpIHsNCj4gKwlpZiAoIWRydl9zdXBw ICYmIChmbGFncyAmIChYRFBfRkxBR1NfRFJWX01PREUgfA0KPiBYRFBfRkxBR1NfSFdfTU9ERSkp KSB7DQo+ICAJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgInVuZGVybHlpbmcgZHJpdmVyIGRvZXMg bm90DQo+IHN1cHBvcnQgWERQIGluIG5hdGl2ZSBtb2RlIik7DQo+ICAJCXJldHVybiAtRU9QTk9U U1VQUDsNCj4gIAl9DQo+IC0JaWYgKCFicGZfb3AgfHwgKGZsYWdzICYgWERQX0ZMQUdTX1NLQl9N T0RFKSkNCj4gLQkJYnBmX29wID0gZ2VuZXJpY194ZHBfaW5zdGFsbDsNCj4gLQlpZiAoYnBmX29w ID09IGJwZl9jaGspDQo+IC0JCWJwZl9jaGsgPSBnZW5lcmljX3hkcF9pbnN0YWxsOw0KPiArDQo+ ICsJaWYgKCFkcnZfc3VwcCB8fCAoZmxhZ3MgJiBYRFBfRkxBR1NfU0tCX01PREUpKQ0KPiArCQl0 YXJnZXQgPSBYRFBfRkxBR1NfU0tCX01PREU7DQo+ICsNCg0Kc2luY2UgZGV2X3hkcF9pbnN0YWxs IGhhbmRsZXMgYWxsIGNhc2VzIG5vdywgeW91IGRvbid0IG5lZWQgdGhpcyBsb2dpYw0KaGVyZSwg SSB3b3VsZCBtb3ZlIHRoaXMgaW50byBkZXZfeGRwX2luc3RhbGwsIG1heWJlIGludHJvZHVjZSBh IGhlbHBlcg0KZGVkaWNhdGVkIGZ1bmN0aW9uIHRvIGNob29zZSB0aGUgbW9kZSB0byBiZSB1c2Vk Lg0KDQo+ICsJaWYgKCh0YXJnZXQgPT0gWERQX0ZMQUdTX1NLQl9NT0RFICYmDQo+ICsJICAgICBk ZXYtPnhkcF9mbGFncyAmIFhEUF9GTEFHU19EUlZfTU9ERSkgfHwNCj4gKwkgICAgKHRhcmdldCA9 PSBYRFBfRkxBR1NfRFJWX01PREUgJiYNCj4gKwkgICAgIGRldi0+eGRwX2ZsYWdzICYgWERQX0ZM QUdTX1NLQl9NT0RFKSkgew0KPiArCQlOTF9TRVRfRVJSX01TRyhleHRhY2ssICJuYXRpdmUgYW5k IGdlbmVyaWMgWERQIGNhbid0IGJlDQo+IGFjdGl2ZSBhdCB0aGUgc2FtZSB0aW1lIik7DQo+ICsJ CXJldHVybiAtRUVYSVNUOw0KPiArCX0NCj4gIA0KPiAgCWlmIChmZCA+PSAwKSB7DQo+IC0JCWlm ICghb2ZmbG9hZCAmJiBfX2Rldl94ZHBfcXVlcnkoZGV2LCBicGZfY2hrLA0KPiBYRFBfUVVFUllf UFJPRykpIHsNCj4gLQkJCU5MX1NFVF9FUlJfTVNHKGV4dGFjaywgIm5hdGl2ZSBhbmQgZ2VuZXJp YyBYRFANCj4gY2FuJ3QgYmUgYWN0aXZlIGF0IHRoZSBzYW1lIHRpbWUiKTsNCj4gLQkJCXJldHVy biAtRUVYSVNUOw0KPiAtCQl9DQo+IC0JCWlmICgoZmxhZ3MgJiBYRFBfRkxBR1NfVVBEQVRFX0lG X05PRVhJU1QpICYmDQo+IC0JCSAgICBfX2Rldl94ZHBfcXVlcnkoZGV2LCBicGZfb3AsIHF1ZXJ5 KSkgew0KPiArCQlpZiAoZmxhZ3MgJiBYRFBfRkxBR1NfVVBEQVRFX0lGX05PRVhJU1QgJiYNCj4g KwkJICAgIGRldl94ZHBfcXVlcnkoZGV2LCB0YXJnZXQpKSB7DQo+ICAJCQlOTF9TRVRfRVJSX01T RyhleHRhY2ssICJYRFAgcHJvZ3JhbSBhbHJlYWR5DQo+IGF0dGFjaGVkIik7DQo+ICAJCQlyZXR1 cm4gLUVCVVNZOw0KPiAgCQl9DQo+ICANCj4gLQkJcHJvZyA9IGJwZl9wcm9nX2dldF90eXBlX2Rl dihmZCwgQlBGX1BST0dfVFlQRV9YRFAsDQo+IC0JCQkJCSAgICAgYnBmX29wID09IG9wcy0+bmRv X2JwZik7DQo+ICsJCXByb2cgPSBicGZfcHJvZ19nZXRfdHlwZV9kZXYoZmQsIEJQRl9QUk9HX1RZ UEVfWERQLA0KPiBkcnZfc3VwcCk7DQo+ICsNCj4gIAkJaWYgKElTX0VSUihwcm9nKSkNCj4gIAkJ CXJldHVybiBQVFJfRVJSKHByb2cpOw0KPiAgDQo+IEBAIC04MTI1LDcgKzgxMzEsNyBAQCBpbnQg ZGV2X2NoYW5nZV94ZHBfZmQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwNCj4gc3RydWN0IG5ldGxp bmtfZXh0X2FjayAqZXh0YWNrLA0KPiAgCQl9DQo+ICAJfQ0KPiAgDQo+IC0JZXJyID0gZGV2X3hk cF9pbnN0YWxsKGRldiwgYnBmX29wLCBleHRhY2ssIGZsYWdzLCBwcm9nKTsNCj4gKwllcnIgPSBk ZXZfeGRwX2luc3RhbGwoZGV2LCB0YXJnZXQsIGV4dGFjaywgZmxhZ3MsIHByb2cpOw0KPiAgCWlm IChlcnIgPCAwICYmIHByb2cpDQo+ICAJCWJwZl9wcm9nX3B1dChwcm9nKTsNCj4gIA0KPiBkaWZm IC0tZ2l0IGEvbmV0L2NvcmUvcnRuZXRsaW5rLmMgYi9uZXQvY29yZS9ydG5ldGxpbmsuYw0KPiBp bmRleCBhZGNjMDQ1OTUyYzIuLjk5Y2E1OGRiMjk3ZiAxMDA2NDQNCj4gLS0tIGEvbmV0L2NvcmUv cnRuZXRsaW5rLmMNCj4gKysrIGIvbmV0L2NvcmUvcnRuZXRsaW5rLmMNCj4gQEAgLTEzNjAsMzcg KzEzNjAsMTQgQEAgc3RhdGljIGludCBydG5sX2ZpbGxfbGlua19pZm1hcChzdHJ1Y3QNCj4gc2tf YnVmZiAqc2tiLCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQ0KPiAgCXJldHVybiAwOw0KPiAgfQ0K PiAgDQo+IC1zdGF0aWMgdTMyIHJ0bmxfeGRwX3Byb2dfc2tiKHN0cnVjdCBuZXRfZGV2aWNlICpk ZXYpDQo+IC17DQo+IC0JY29uc3Qgc3RydWN0IGJwZl9wcm9nICpnZW5lcmljX3hkcF9wcm9nOw0K PiAtDQo+IC0JQVNTRVJUX1JUTkwoKTsNCj4gLQ0KPiAtCWdlbmVyaWNfeGRwX3Byb2cgPSBydG5s X2RlcmVmZXJlbmNlKGRldi0+eGRwX3Byb2cpOw0KPiAtCWlmICghZ2VuZXJpY194ZHBfcHJvZykN Cj4gLQkJcmV0dXJuIDA7DQo+IC0JcmV0dXJuIGdlbmVyaWNfeGRwX3Byb2ctPmF1eC0+aWQ7DQo+ IC19DQo+IC0NCj4gLXN0YXRpYyB1MzIgcnRubF94ZHBfcHJvZ19kcnYoc3RydWN0IG5ldF9kZXZp Y2UgKmRldikNCj4gLXsNCj4gLQlyZXR1cm4gX19kZXZfeGRwX3F1ZXJ5KGRldiwgZGV2LT5uZXRk ZXZfb3BzLT5uZG9fYnBmLA0KPiBYRFBfUVVFUllfUFJPRyk7DQo+IC19DQo+IC0NCj4gLXN0YXRp YyB1MzIgcnRubF94ZHBfcHJvZ19odyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQ0KPiAtew0KPiAt CXJldHVybiBfX2Rldl94ZHBfcXVlcnkoZGV2LCBkZXYtPm5ldGRldl9vcHMtPm5kb19icGYsDQo+ IC0JCQkgICAgICAgWERQX1FVRVJZX1BST0dfSFcpOw0KPiAtfQ0KPiAtDQo+ICBzdGF0aWMgaW50 IHJ0bmxfeGRwX3JlcG9ydF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0DQo+IG5ldF9k ZXZpY2UgKmRldiwNCj4gIAkJCSAgICAgICB1MzIgKnByb2dfaWQsIHU4ICptb2RlLCB1OCB0Z3Rf bW9kZSwgdTMyDQo+IGF0dHIsDQo+IC0JCQkgICAgICAgdTMyICgqZ2V0X3Byb2dfaWQpKHN0cnVj dCBuZXRfZGV2aWNlDQo+ICpkZXYpKQ0KPiArCQkJICAgICAgIHVuc2lnbmVkIGludCB0Z3RfZmxh Z3MpDQo+ICB7DQo+ICAJdTMyIGN1cnJfaWQ7DQo+ICAJaW50IGVycjsNCj4gIA0KPiAtCWN1cnJf aWQgPSBnZXRfcHJvZ19pZChkZXYpOw0KPiArCWN1cnJfaWQgPSBkZXZfeGRwX3F1ZXJ5KGRldiwg dGd0X2ZsYWdzKTsNCj4gIAlpZiAoIWN1cnJfaWQpDQo+ICAJCXJldHVybiAwOw0KPiAgDQo+IEBA IC0xNDIxLDE1ICsxMzk4LDE1IEBAIHN0YXRpYyBpbnQgcnRubF94ZHBfZmlsbChzdHJ1Y3Qgc2tf YnVmZiAqc2tiLA0KPiBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQ0KPiAgCXByb2dfaWQgPSAwOw0K PiAgCW1vZGUgPSBYRFBfQVRUQUNIRURfTk9ORTsNCj4gIAllcnIgPSBydG5sX3hkcF9yZXBvcnRf b25lKHNrYiwgZGV2LCAmcHJvZ19pZCwgJm1vZGUsDQo+IFhEUF9BVFRBQ0hFRF9TS0IsDQo+IC0J CQkJICBJRkxBX1hEUF9TS0JfUFJPR19JRCwNCj4gcnRubF94ZHBfcHJvZ19za2IpOw0KPiArCQkJ CSAgSUZMQV9YRFBfU0tCX1BST0dfSUQsDQo+IFhEUF9GTEFHU19TS0JfTU9ERSk7DQo+ICAJaWYg KGVycikNCj4gIAkJZ290byBlcnJfY2FuY2VsOw0KPiAgCWVyciA9IHJ0bmxfeGRwX3JlcG9ydF9v bmUoc2tiLCBkZXYsICZwcm9nX2lkLCAmbW9kZSwNCj4gWERQX0FUVEFDSEVEX0RSViwNCj4gLQkJ CQkgIElGTEFfWERQX0RSVl9QUk9HX0lELA0KPiBydG5sX3hkcF9wcm9nX2Rydik7DQo+ICsJCQkJ ICBJRkxBX1hEUF9EUlZfUFJPR19JRCwNCj4gWERQX0ZMQUdTX0RSVl9NT0RFKTsNCj4gIAlpZiAo ZXJyKQ0KPiAgCQlnb3RvIGVycl9jYW5jZWw7DQo+ICAJZXJyID0gcnRubF94ZHBfcmVwb3J0X29u ZShza2IsIGRldiwgJnByb2dfaWQsICZtb2RlLA0KPiBYRFBfQVRUQUNIRURfSFcsDQo+IC0JCQkJ ICBJRkxBX1hEUF9IV19QUk9HX0lELA0KPiBydG5sX3hkcF9wcm9nX2h3KTsNCj4gKwkJCQkgIElG TEFfWERQX0hXX1BST0dfSUQsDQo+IFhEUF9GTEFHU19IV19NT0RFKTsNCj4gIAlpZiAoZXJyKQ0K PiAgCQlnb3RvIGVycl9jYW5jZWw7DQo+ICANCg==