From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <fmontorsi@empirix.com>
Received: from bilemail2.empirix.com (bilemail2.empirix.com [208.67.76.246])
 by dpdk.org (Postfix) with ESMTP id 4865D5949
 for <dev@dpdk.org>; Fri,  9 Oct 2015 12:14:04 +0200 (CEST)
Received: from BILEMAIL1.empirix.com (10.17.8.30) by bilemail2.empirix.com
 (10.17.8.31) with Microsoft SMTP Server (TLS) id 15.0.775.38; Fri, 9 Oct 2015
 06:13:44 -0400
Received: from BILEMAIL1.empirix.com ([fe80::f9e0:9293:2523:f021]) by
 bilemail1.empirix.com ([fe80::f9e0:9293:2523:f021%22]) with mapi id
 15.00.0775.031; Fri, 9 Oct 2015 06:13:33 -0400
From: "Montorsi, Francesco" <fmontorsi@empirix.com>
To: "Montorsi, Francesco" <fmontorsi@empirix.com>, Panu Matilainen
 <pmatilai@redhat.com>, Thomas Monjalon <thomas.monjalon@6wind.com>
Thread-Topic: [dpdk-dev] rte_eal_init() alternative?
Thread-Index: AdDlfPBIBcvmYGE5S+iOMZ1NcwR9ugAI2wEAAAB5coAHDcC0gAAtFSkAAAURmZAACgLk8A==
Date: Fri, 9 Oct 2015 10:13:32 +0000
Message-ID: <786931fdd268483eb6623389603dfbb6@bilemail1.empirix.com>
References: <44e664970fef4bff942eaee5c7eaca67@bilemail1.empirix.com>
 <20150902125650.GA10364@bricha3-MOBL3> <3003120.8bdQ5bCz5C@xps13>
 <c529a882e7f74cbdb9c58802d04e08b1@bilemail1.empirix.com>
 <56177A00.9060201@redhat.com>
 <69ead0cc07ec49f884b92de0756de3df@bilemail1.empirix.com>
In-Reply-To: <69ead0cc07ec49f884b92de0756de3df@bilemail1.empirix.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-originating-ip: [10.12.50.106]
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] rte_eal_init() alternative?
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Fri, 09 Oct 2015 10:14:04 -0000

PiA+IEl0IHNlZW1zIHRoZSBwYXRjaCBtaXNzZWQgdGhlIGJvYXQgOikNCj4gDQo+IENvcnJlY3Qs
IHNvcnJ5LiBJJ20gYXR0YWNoaW5nIGl0IG5vdy4NCk9rLCBmb3Igc29tZSByZWFzb24gdGhlIGVt
YWlsIGNsaWVudCBpcyByZW1vdmluZyB0aGUgYXR0YWNobWVudC4uLiBJJ20gY29weWluZyBhbmQg
cGFzdGluZyBpdDoNCih0aGUgcG9pbnRzIG1hcmtlZCBhcyBUT0RPIGFyZSBmdW5jdGlvbnMgdGhh
dCBzdGlsbCBjb250YWluIHJ0ZV9wYW5pYygpIGNhbGxzLi4uKQ0KDQoNCg0KDQo9PT09IGRwZGst
Mi4xLjAvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2VhbF9jb21tb25fbG9nLmMgLSBkcGRrLTIuMS4w
L2xpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfY29tbW9uX2xvZy5jID09PT0NCj09PT0gZHBkay0y
LjEuMC9saWIvbGlicnRlX2VhbC9jb21tb24vaW5jbHVkZS9ydGVfZWFsLmggLSBkcGRrLTIuMS4w
L2xpYi9saWJydGVfZWFsL2NvbW1vbi9pbmNsdWRlL3J0ZV9lYWwuaCA9PT09DQotLS0gL3RtcC90
bXAuNjIyMC4zNwkyMDE1LTEwLTA4IDE2OjE1OjIyLjQwMjYwNzQwNCArMDIwMA0KKysrIGRwZGst
Mi4xLjAvbGliL2xpYnJ0ZV9lYWwvY29tbW9uL2luY2x1ZGUvcnRlX2VhbC5oCTIwMTUtMTAtMDgg
MTU6NTc6MjEuNDQyNjI3MTUyICswMjAwDQpAQCAtMTQxLDYgKzE0MSw5IEBADQogICogcmV0dXJu
aW5nLiBTZWUgYWxzbyB0aGUgcnRlX2VhbF9nZXRfY29uZmlndXJhdGlvbigpIGZ1bmN0aW9uLiBO
b3RlOg0KICAqIFRoaXMgYmVoYXZpb3IgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLg0KICAqDQor
ICogVGhpcyBmdW5jdGlvbiB3aWxsIGxvZyBhbmQgZXZlbnR1YWxseSBhYm9ydCB0aGUgZW50aXJl
IGFwcGxpY2F0aW9uIGlmDQorICogaW5pdGlhbGl6YXRpb24gZmFpbHMuDQorICoNCiAgKiBAcGFy
YW0gYXJnYw0KICAqICAgVGhlIGFyZ2MgYXJndW1lbnQgdGhhdCB3YXMgZ2l2ZW4gdG8gdGhlIG1h
aW4oKSBmdW5jdGlvbi4NCiAgKiBAcGFyYW0gYXJndg0KQEAgLTE1Myw2ICsxNTYsMjcgQEANCiAg
KiAgIC0gT24gZmFpbHVyZSwgYSBuZWdhdGl2ZSBlcnJvciB2YWx1ZS4NCiAgKi8NCiBpbnQgcnRl
X2VhbF9pbml0KGludCBhcmdjLCBjaGFyICoqYXJndik7DQorDQorLyoqDQorICogSW5pdGlhbGl6
ZSB0aGUgRW52aXJvbm1lbnQgQWJzdHJhY3Rpb24gTGF5ZXIgKEVBTCkuDQorICoNCisgKiBQbGVh
c2UgcmVmZXIgdG8gcnRlX2VhbF9pbml0KCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uDQorICogVGhl
IGRpZmZlcmVuY2UgYmV0d2VlbiBydGVfZWFsX2luaXQoKSBhbmQgcnRlX2VhbF9pbml0X3Jhdygp
DQorICogaXMgdGhhdCB0aGUgbGF0dGVyIHdpbGwgbmV2ZXIgYWJvcnQgdGhlIGVudGlyZSBwcm9j
ZXNzIGJ1dCByYXRoZXINCisgKiB3aWxsIGp1c3QgbG9nIGFuIGVycm9yIGFuZCByZXR1cm4gYW4g
ZXJyb3IgY29kZS4NCisgKg0KKyAqIEBwYXJhbSBsb2dpZA0KKyAqICAgQSBzdHJpbmcgdGhhdCBp
ZGVudGlmaWVzIHRoZSB3aG9sZSBwcm9jZXNzLCB1c2VkIHRvIHByZWZpeCBsb2cgbWVzc2FnZXM7
DQorICogICBvbiBMaW51eCB3aWxsIGJlIHVzZWQgYXMgdGhlICdpZGVudCcgcGFyYW1ldGVyIG9m
IHRoZSBzeXNsb2cgZmFjaWxpdHkgb3BlbmxvZygpLg0KKyAqIEBwYXJhbSBjZmcNCisgKiAgIFRo
ZSBpbnRlcm5hbCBjb25maWd1cmF0aW9uIGZvciBSVEUgRUFMLg0KKyAqIEByZXR1cm4NCisgKiAg
IC0gT24gc3VjY2VzcywgemVyby4NCisgKiAgIC0gT24gZmFpbHVyZSwgYSBuZWdhdGl2ZSBlcnJv
ciB2YWx1ZS4NCisgKi8NCitzdHJ1Y3QgaW50ZXJuYWxfY29uZmlnOw0KK2ludCBydGVfZWFsX2lu
aXRfcmF3KGNvbnN0IGNoYXIqIGxvZ2lkLCBzdHJ1Y3QgaW50ZXJuYWxfY29uZmlnICpjZmcpOw0K
Kw0KIC8qKg0KICAqIFVzYWdlIGZ1bmN0aW9uIHR5cGVkZWYgdXNlZCBieSB0aGUgYXBwbGljYXRp
b24gdXNhZ2UgZnVuY3Rpb24uDQogICoNCj09PT0gZHBkay0yLjEuMC9saWIvbGlicnRlX2VhbC9s
aW51eGFwcC9lYWwvZWFsLmMgLSBkcGRrLTIuMS4wL2xpYi9saWJydGVfZWFsL2xpbnV4YXBwL2Vh
bC9lYWwuYyA9PT09DQotLS0gL3RtcC90bXAuNjIyMC43NQkyMDE1LTEwLTA4IDE2OjE1OjIyLjQw
NjYwNzQwNCArMDIwMA0KKysrIGRwZGstMi4xLjAvbGliL2xpYnJ0ZV9lYWwvbGludXhhcHAvZWFs
L2VhbC5jCTIwMTUtMTAtMDggMTY6MTU6MTAuMTA2NjA3NjI4ICswMjAwDQpAQCAtMTc4LDcgKzE3
OCw3IEBADQogICogb24gb3RoZXIgcGFydHMsIGUuZy4gbWVtem9uZXMsIHRvIGRldGVjdCBpZiB0
aGVyZSBhcmUgcnVubmluZyBzZWNvbmRhcnkNCiAgKiBwcm9jZXNzZXMuICovDQogc3RhdGljIHZv
aWQNCi1ydGVfZWFsX2NvbmZpZ19jcmVhdGUodm9pZCkNCitydGVfZWFsX2NvbmZpZ19jcmVhdGUo
dm9pZCkJCQkvLyBUT0RPDQogew0KIAl2b2lkICpydGVfbWVtX2NmZ19hZGRyOw0KIAlpbnQgcmV0
dmFsOw0KQEAgLTIzMiw3ICsyMzIsNyBAQA0KIA0KIC8qIGF0dGFjaCB0byBhbiBleGlzdGluZyBz
aGFyZWQgbWVtb3J5IGNvbmZpZyAqLw0KIHN0YXRpYyB2b2lkDQotcnRlX2VhbF9jb25maWdfYXR0
YWNoKHZvaWQpDQorcnRlX2VhbF9jb25maWdfYXR0YWNoKHZvaWQpCQkJLy8gVE9ETw0KIHsNCiAJ
c3RydWN0IHJ0ZV9tZW1fY29uZmlnICptZW1fY29uZmlnOw0KIA0KQEAgLTI1OCw3ICsyNTgsNyBA
QA0KIA0KIC8qIHJlYXR0YWNoIHRoZSBzaGFyZWQgY29uZmlnIGF0IGV4YWN0IG1lbW9yeSBsb2Nh
dGlvbiBwcmltYXJ5IHByb2Nlc3MgaGFzIGl0ICovDQogc3RhdGljIHZvaWQNCi1ydGVfZWFsX2Nv
bmZpZ19yZWF0dGFjaCh2b2lkKQ0KK3J0ZV9lYWxfY29uZmlnX3JlYXR0YWNoKHZvaWQpCQkvLyBU
T0RPDQogew0KIAlzdHJ1Y3QgcnRlX21lbV9jb25maWcgKm1lbV9jb25maWc7DQogCXZvaWQgKnJ0
ZV9tZW1fY2ZnX2FkZHI7DQpAQCAtMzA1LDcgKzMwNSw3IEBADQogDQogLyogU2V0cyB1cCBydGVf
Y29uZmlnIHN0cnVjdHVyZSB3aXRoIHRoZSBwb2ludGVyIHRvIHNoYXJlZCBtZW1vcnkgY29uZmln
LiovDQogc3RhdGljIHZvaWQNCi1ydGVfY29uZmlnX2luaXQodm9pZCkNCitydGVfY29uZmlnX2lu
aXQodm9pZCkJCS8vIFRPRE8NCiB7DQogCXJ0ZV9jb25maWcucHJvY2Vzc190eXBlID0gaW50ZXJu
YWxfY29uZmlnLnByb2Nlc3NfdHlwZTsNCiANCkBAIC03MjQsMjUgKzcyNCwxNyBAQA0KICNlbmRp
Zg0KIH0NCiANCi0vKiBMYXVuY2ggdGhyZWFkcywgY2FsbGVkIGF0IGFwcGxpY2F0aW9uIGluaXQo
KS4gKi8NCisNCisvKiBMYXVuY2ggdGhyZWFkcywgY2FsbGVkIGF0IGFwcGxpY2F0aW9uIGluaXQo
KS4gTG9ncyBhbmQgYWJvcnRzIG9uIGNyaXRpY2FsIGVycm9ycy4gKi8NCiBpbnQNCiBydGVfZWFs
X2luaXQoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQ0KIHsNCi0JaW50IGksIGZjdHJldCwgcmV0Ow0K
LQlwdGhyZWFkX3QgdGhyZWFkX2lkOw0KLQlzdGF0aWMgcnRlX2F0b21pYzMyX3QgcnVuX29uY2Ug
PSBSVEVfQVRPTUlDMzJfSU5JVCgwKTsNCi0Jc3RydWN0IHNoYXJlZF9kcml2ZXIgKnNvbGliID0g
TlVMTDsNCisJaW50IGZjdHJldDsNCiAJY29uc3QgY2hhciAqbG9naWQ7DQotCWNoYXIgY3B1c2V0
W1JURV9DUFVfQUZGSU5JVFlfU1RSX0xFTl07DQotDQotCWlmICghcnRlX2F0b21pYzMyX3Rlc3Rf
YW5kX3NldCgmcnVuX29uY2UpKQ0KLQkJcmV0dXJuIC0xOw0KIA0KIAlsb2dpZCA9IHN0cnJjaHIo
YXJndlswXSwgJy8nKTsNCiAJbG9naWQgPSBzdHJkdXAobG9naWQgPyBsb2dpZCArIDE6IGFyZ3Zb
MF0pOw0KIA0KLQl0aHJlYWRfaWQgPSBwdGhyZWFkX3NlbGYoKTsNCi0NCiAJaWYgKHJ0ZV9lYWxf
bG9nX2Vhcmx5X2luaXQoKSA8IDApDQogCQlydGVfcGFuaWMoIkNhbm5vdCBpbml0IGVhcmx5IGxv
Z3NcbiIpOw0KIA0KQEAgLTc1MSwxOCArNzQzLDU0IEBADQogCS8qIHNldCBsb2cgbGV2ZWwgYXMg
ZWFybHkgYXMgcG9zc2libGUgKi8NCiAJcnRlX3NldF9sb2dfbGV2ZWwoaW50ZXJuYWxfY29uZmln
LmxvZ19sZXZlbCk7DQogDQotCWlmIChydGVfZWFsX2NwdV9pbml0KCkgPCAwKQ0KLQkJcnRlX3Bh
bmljKCJDYW5ub3QgZGV0ZWN0IGxjb3Jlc1xuIik7DQotDQogCWZjdHJldCA9IGVhbF9wYXJzZV9h
cmdzKGFyZ2MsIGFyZ3YpOw0KIAlpZiAoZmN0cmV0IDwgMCkNCiAJCWV4aXQoMSk7DQogDQorCWlm
IChydGVfZWFsX2luaXRfcmF3KGxvZ2lkLCBOVUxMKSA8IDApDQorCQlydGVfcGFuaWMoIkVycm9y
cyBlbmNvdW50ZXJlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIENhbm5vdCBwcm9jZWVkLlxuIik7
DQorDQorCXJldHVybiBmY3RyZXQ7DQorfQ0KKw0KKy8qIExpYnJhcnktc3R5bGUgaW5pdCgpLCB3
aWxsIGF0dGVtcHQgaW5pdGlhbGl6YXRpb24sIGxvZyBvbiBlcnJvcnMgYW5kIHJldHVybjsNCisg
KiBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJ0ZV9wYW5pYygpIG9yIGV4aXQoKSB0aGUgd2hvbGUg
cHJvY2Vzcy4gKi8NCitpbnQNCitydGVfZWFsX2luaXRfcmF3KGNvbnN0IGNoYXIqIGxvZ2lkLCBz
dHJ1Y3QgaW50ZXJuYWxfY29uZmlnICpjZmcpDQorew0KKwlpbnQgaSwgcmV0Ow0KKwlwdGhyZWFk
X3QgdGhyZWFkX2lkOw0KKwlzdGF0aWMgcnRlX2F0b21pYzMyX3QgcnVuX29uY2UgPSBSVEVfQVRP
TUlDMzJfSU5JVCgwKTsNCisJc3RydWN0IHNoYXJlZF9kcml2ZXIgKnNvbGliID0gTlVMTDsNCisJ
Y2hhciBjcHVzZXRbUlRFX0NQVV9BRkZJTklUWV9TVFJfTEVOXTsNCisNCisJaWYgKCFydGVfYXRv
bWljMzJfdGVzdF9hbmRfc2V0KCZydW5fb25jZSkpDQorCQlyZXR1cm4gLTE7DQorDQorCXRocmVh
ZF9pZCA9IHB0aHJlYWRfc2VsZigpOw0KKwlpZiAocnRlX2VhbF9sb2dfZWFybHlfaW5pdCgpIDwg
MCkgew0KKwkJUlRFX0xPRyAoRVJSLCBFQUwsICJDYW5ub3QgaW5pdCBlYXJseSBsb2dzXG4iKTsN
CisJCXJldHVybiAtMTsNCisJfQ0KKw0KKwlpZiAoY2ZnKQ0KKwkJbWVtY3B5KCZpbnRlcm5hbF9j
b25maWcsIGNmZywgc2l6ZW9mKCpjZmcpKTsNCisNCisJLyogc2V0IGxvZyBsZXZlbCBhcyBlYXJs
eSBhcyBwb3NzaWJsZSAqLw0KKwlydGVfc2V0X2xvZ19sZXZlbChpbnRlcm5hbF9jb25maWcubG9n
X2xldmVsKTsNCisNCisJaWYgKHJ0ZV9lYWxfY3B1X2luaXQoKSA8IDApIHsNCisJCVJURV9MT0cg
KEVSUiwgRUFMLCAiQ2Fubm90IGRldGVjdCBsY29yZXNcbiIpOw0KKwkJcmV0dXJuIC0xOw0KKwl9
DQorDQogCWlmIChpbnRlcm5hbF9jb25maWcubm9faHVnZXRsYmZzID09IDAgJiYNCiAJCQlpbnRl
cm5hbF9jb25maWcucHJvY2Vzc190eXBlICE9IFJURV9QUk9DX1NFQ09OREFSWSAmJg0KIAkJCWlu
dGVybmFsX2NvbmZpZy54ZW5fZG9tMF9zdXBwb3J0ID09IDAgJiYNCi0JCQllYWxfaHVnZXBhZ2Vf
aW5mb19pbml0KCkgPCAwKQ0KLQkJcnRlX3BhbmljKCJDYW5ub3QgZ2V0IGh1Z2VwYWdlIGluZm9y
bWF0aW9uXG4iKTsNCisJCQllYWxfaHVnZXBhZ2VfaW5mb19pbml0KCkgPCAwKSB7DQorCQlSVEVf
TE9HIChFUlIsIEVBTCwgIkNhbm5vdCBnZXQgaHVnZXBhZ2UgaW5mb3JtYXRpb25cbiIpOw0KKwkJ
cmV0dXJuIC0xOw0KKwl9DQogDQogCWlmIChpbnRlcm5hbF9jb25maWcubWVtb3J5ID09IDAgJiYg
aW50ZXJuYWxfY29uZmlnLmZvcmNlX3NvY2tldHMgPT0gMCkgew0KIAkJaWYgKGludGVybmFsX2Nv
bmZpZy5ub19odWdldGxiZnMpDQpAQCAtNzg2LDQyICs4MTQsNjIgQEANCiANCiAJcnRlX2NvbmZp
Z19pbml0KCk7DQogDQotCWlmIChydGVfZWFsX3BjaV9pbml0KCkgPCAwKQ0KLQkJcnRlX3Bhbmlj
KCJDYW5ub3QgaW5pdCBQQ0lcbiIpOw0KKwlpZiAocnRlX2VhbF9wY2lfaW5pdCgpIDwgMCkgew0K
KwkJUlRFX0xPRyAoRVJSLCBFQUwsICJDYW5ub3QgaW5pdCBQQ0lcbiIpOw0KKwkJcmV0dXJuIC0x
Ow0KKwl9DQogDQogI2lmZGVmIFJURV9MSUJSVEVfSVZTSE1FTQ0KLQlpZiAocnRlX2VhbF9pdnNo
bWVtX2luaXQoKSA8IDApDQotCQlydGVfcGFuaWMoIkNhbm5vdCBpbml0IElWU0hNRU1cbiIpOw0K
KwlpZiAocnRlX2VhbF9pdnNobWVtX2luaXQoKSA8IDApIHsNCisJCVJURV9MT0cgKEVSUiwgRUFM
LCAiQ2Fubm90IGluaXQgSVZTSE1FTVxuIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCiAjZW5kaWYN
CiANCi0JaWYgKHJ0ZV9lYWxfbWVtb3J5X2luaXQoKSA8IDApDQotCQlydGVfcGFuaWMoIkNhbm5v
dCBpbml0IG1lbW9yeVxuIik7DQorCWlmIChydGVfZWFsX21lbW9yeV9pbml0KCkgPCAwKSB7DQor
CQlSVEVfTE9HIChFUlIsIEVBTCwgIkNhbm5vdCBpbml0IG1lbW9yeVxuIik7DQorCQlyZXR1cm4g
LTE7DQorCX0NCiANCiAJLyogdGhlIGRpcmVjdG9yaWVzIGFyZSBsb2NrZWQgZHVyaW5nIGVhbF9o
dWdlcGFnZV9pbmZvX2luaXQgKi8NCiAJZWFsX2h1Z2VkaXJzX3VubG9jaygpOw0KIA0KLQlpZiAo
cnRlX2VhbF9tZW16b25lX2luaXQoKSA8IDApDQotCQlydGVfcGFuaWMoIkNhbm5vdCBpbml0IG1l
bXpvbmVcbiIpOw0KKwlpZiAocnRlX2VhbF9tZW16b25lX2luaXQoKSA8IDApIHsNCisJCVJURV9M
T0cgKEVSUiwgRUFMLCAiQ2Fubm90IGluaXQgbWVtem9uZVxuIik7DQorCQlyZXR1cm4gLTE7DQor
CX0NCiANCi0JaWYgKHJ0ZV9lYWxfdGFpbHFzX2luaXQoKSA8IDApDQotCQlydGVfcGFuaWMoIkNh
bm5vdCBpbml0IHRhaWwgcXVldWVzIGZvciBvYmplY3RzXG4iKTsNCisJaWYgKHJ0ZV9lYWxfdGFp
bHFzX2luaXQoKSA8IDApIHsNCisJCVJURV9MT0cgKEVSUiwgRUFMLCAiQ2Fubm90IGluaXQgdGFp
bCBxdWV1ZXMgZm9yIG9iamVjdHNcbiIpOw0KKwkJcmV0dXJuIC0xOw0KKwl9DQogDQogI2lmZGVm
IFJURV9MSUJSVEVfSVZTSE1FTQ0KLQlpZiAocnRlX2VhbF9pdnNobWVtX29ial9pbml0KCkgPCAw
KQ0KLQkJcnRlX3BhbmljKCJDYW5ub3QgaW5pdCBJVlNITUVNIG9iamVjdHNcbiIpOw0KKwlpZiAo
cnRlX2VhbF9pdnNobWVtX29ial9pbml0KCkgPCAwKSB7DQorCQlSVEVfTE9HIChFUlIsIEVBTCwg
IkNhbm5vdCBpbml0IElWU0hNRU0gb2JqZWN0c1xuIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCiAj
ZW5kaWYNCiANCi0JaWYgKHJ0ZV9lYWxfbG9nX2luaXQobG9naWQsIGludGVybmFsX2NvbmZpZy5z
eXNsb2dfZmFjaWxpdHkpIDwgMCkNCi0JCXJ0ZV9wYW5pYygiQ2Fubm90IGluaXQgbG9nc1xuIik7
DQorCWlmIChydGVfZWFsX2xvZ19pbml0KGxvZ2lkLCBpbnRlcm5hbF9jb25maWcuc3lzbG9nX2Zh
Y2lsaXR5KSA8IDApIHsNCisJCVJURV9MT0cgKEVSUiwgRUFMLCAiQ2Fubm90IGluaXQgbG9nc1xu
Iik7DQorCQlyZXR1cm4gLTE7DQorCX0NCiANCi0JaWYgKHJ0ZV9lYWxfYWxhcm1faW5pdCgpIDwg
MCkNCi0JCXJ0ZV9wYW5pYygiQ2Fubm90IGluaXQgaW50ZXJydXB0LWhhbmRsaW5nIHRocmVhZFxu
Iik7DQorCWlmIChydGVfZWFsX2FsYXJtX2luaXQoKSA8IDApIHsNCisJCVJURV9MT0cgKEVSUiwg
RUFMLCAiQ2Fubm90IGluaXQgYWxhcm1cbiIpOw0KKwkJcmV0dXJuIC0xOw0KKwl9DQogDQotCWlm
IChydGVfZWFsX2ludHJfaW5pdCgpIDwgMCkNCi0JCXJ0ZV9wYW5pYygiQ2Fubm90IGluaXQgaW50
ZXJydXB0LWhhbmRsaW5nIHRocmVhZFxuIik7DQorCWlmIChydGVfZWFsX2ludHJfaW5pdCgpIDwg
MCkgew0KKwkJUlRFX0xPRyAoRVJSLCBFQUwsICJDYW5ub3QgaW5pdCBpbnRlcnJ1cHQtaGFuZGxp
bmcgdGhyZWFkXG4iKTsNCisJCXJldHVybiAtMTsNCisJfQ0KIA0KLQlpZiAocnRlX2VhbF90aW1l
cl9pbml0KCkgPCAwKQ0KLQkJcnRlX3BhbmljKCJDYW5ub3QgaW5pdCBIUEVUIG9yIFRTQyB0aW1l
cnNcbiIpOw0KKwlpZiAocnRlX2VhbF90aW1lcl9pbml0KCkgPCAwKSB7DQorCQlSVEVfTE9HIChF
UlIsIEVBTCwgIkNhbm5vdCBpbml0IEhQRVQgb3IgVFNDIHRpbWVyc1xuIik7DQorCQlyZXR1cm4g
LTE7DQorCX0NCiANCiAJZWFsX2NoZWNrX21lbV9vbl9sb2NhbF9zb2NrZXQoKTsNCiANCkBAIC04
NDIsOCArODkwLDEwIEBADQogCQlydGVfY29uZmlnLm1hc3Rlcl9sY29yZSwgKGludCl0aHJlYWRf
aWQsIGNwdXNldCwNCiAJCXJldCA9PSAwID8gIiIgOiAiLi4uIik7DQogDQotCWlmIChydGVfZWFs
X2Rldl9pbml0KCkgPCAwKQ0KLQkJcnRlX3BhbmljKCJDYW5ub3QgaW5pdCBwbWQgZGV2aWNlc1xu
Iik7DQorCWlmIChydGVfZWFsX2Rldl9pbml0KCkgPCAwKSB7DQorCQlSVEVfTE9HIChFUlIsIEVB
TCwgIkNhbm5vdCBpbml0IHBtZCBkZXZpY2VzXG4iKTsNCisJCXJldHVybiAtMTsNCisJfQ0KIA0K
IAlSVEVfTENPUkVfRk9SRUFDSF9TTEFWRShpKSB7DQogDQpAQCAtODUxLDE4ICs5MDEsMjQgQEAN
CiAJCSAqIGNyZWF0ZSBjb21tdW5pY2F0aW9uIHBpcGVzIGJldHdlZW4gbWFzdGVyIHRocmVhZA0K
IAkJICogYW5kIGNoaWxkcmVuDQogCQkgKi8NCi0JCWlmIChwaXBlKGxjb3JlX2NvbmZpZ1tpXS5w
aXBlX21hc3RlcjJzbGF2ZSkgPCAwKQ0KLQkJCXJ0ZV9wYW5pYygiQ2Fubm90IGNyZWF0ZSBwaXBl
XG4iKTsNCi0JCWlmIChwaXBlKGxjb3JlX2NvbmZpZ1tpXS5waXBlX3NsYXZlMm1hc3RlcikgPCAw
KQ0KLQkJCXJ0ZV9wYW5pYygiQ2Fubm90IGNyZWF0ZSBwaXBlXG4iKTsNCisJCWlmIChwaXBlKGxj
b3JlX2NvbmZpZ1tpXS5waXBlX21hc3RlcjJzbGF2ZSkgPCAwKSB7DQorCQkJUlRFX0xPRyAoRVJS
LCBFQUwsICJDYW5ub3QgY3JlYXRlIHBpcGVcbiIpOw0KKwkJCXJldHVybiAtMTsNCisJCX0NCisJ
CWlmIChwaXBlKGxjb3JlX2NvbmZpZ1tpXS5waXBlX3NsYXZlMm1hc3RlcikgPCAwKSB7DQorCQkJ
UlRFX0xPRyAoRVJSLCBFQUwsICJDYW5ub3QgY3JlYXRlIHBpcGVcbiIpOw0KKwkJCXJldHVybiAt
MTsNCisJCX0NCiANCiAJCWxjb3JlX2NvbmZpZ1tpXS5zdGF0ZSA9IFdBSVQ7DQogDQogCQkvKiBj
cmVhdGUgYSB0aHJlYWQgZm9yIGVhY2ggbGNvcmUgKi8NCiAJCXJldCA9IHB0aHJlYWRfY3JlYXRl
KCZsY29yZV9jb25maWdbaV0udGhyZWFkX2lkLCBOVUxMLA0KIAkJCQkgICAgIGVhbF90aHJlYWRf
bG9vcCwgTlVMTCk7DQotCQlpZiAocmV0ICE9IDApDQotCQkJcnRlX3BhbmljKCJDYW5ub3QgY3Jl
YXRlIHRocmVhZFxuIik7DQorCQlpZiAocmV0ICE9IDApIHsNCisJCQlSVEVfTE9HIChFUlIsIEVB
TCwgIkNhbm5vdCBjcmVhdGUgdGhyZWFkXG4iKTsNCisJCQlyZXR1cm4gLTE7DQorCQl9DQogCX0N
CiANCiAJLyoNCkBAIC04NzMsMTIgKzkyOSwxNSBAQA0KIAlydGVfZWFsX21wX3dhaXRfbGNvcmUo
KTsNCiANCiAJLyogUHJvYmUgJiBJbml0aWFsaXplIFBDSSBkZXZpY2VzICovDQotCWlmIChydGVf
ZWFsX3BjaV9wcm9iZSgpKQ0KLQkJcnRlX3BhbmljKCJDYW5ub3QgcHJvYmUgUENJXG4iKTsNCisJ
aWYgKHJ0ZV9lYWxfcGNpX3Byb2JlKCkpIHsNCisJCVJURV9MT0cgKEVSUiwgRUFMLCAiQ2Fubm90
IHByb2JlIFBDSVxuIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCiANCi0JcmV0dXJuIGZjdHJldDsN
CisJcmV0dXJuIDA7DQogfQ0KIA0KKw0KIC8qIGdldCBjb3JlIHJvbGUgKi8NCiBlbnVtIHJ0ZV9s
Y29yZV9yb2xlX3QNCiBydGVfZWFsX2xjb3JlX3JvbGUodW5zaWduZWQgbGNvcmVfaWQpDQoNCg==