From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Wiles, Keith" Subject: Re: [PATCH v3 3/5] eal: use locks to determine if secondary process is active Date: Wed, 28 Feb 2018 04:17:30 +0000 Message-ID: References: <31f6d9ef676fb1eb0a664c06d62d66f32876dcb6.1519672713.git.anatoly.burakov@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "dev@dpdk.org" , "Tan, Jianfeng" To: "Burakov, Anatoly" Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by dpdk.org (Postfix) with ESMTP id 62DE54C9F for ; Wed, 28 Feb 2018 05:17:33 +0100 (CET) In-Reply-To: Content-Language: en-US Content-ID: <9DFC1DF453465344BCC7328A4ACC82FE@intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" DQoNCj4gT24gRmViIDI3LCAyMDE4LCBhdCA4OjM1IEFNLCBBbmF0b2x5IEJ1cmFrb3YgPGFuYXRv bHkuYnVyYWtvdkBpbnRlbC5jb20+IHdyb3RlOg0KPiANCj4gUHJldmlvdXNseSwgSVBDIHdvdWxk IHJlbW92ZSBzb2NrZXRzIGl0IGNvbnNpZGVycyB0byBiZSAiaW5hY3RpdmUiDQo+IGJhc2VkIG9u IHdoZXRoZXIgdGhleSBoYXZlIHJlc3BvbmRlZC4gQ2hhbmdlIHRoaXMgdG8gY3JlYXRlIGxvY2sN Cj4gZmlsZXMgaW4gYWRkaXRpb24gdG8gc29ja2V0IGZpbGVzLCBzbyB0aGF0IHdlIGNhbiBkZXRl cm1pbmUgaWYNCj4gc2Vjb25kYXJ5IHByb2Nlc3MgaXMgYWN0aXZlIGJlZm9yZSBhdHRlbXB0aW5n IHRvIGNvbW11bmljYXRlIHdpdGgNCj4gaXQuIFRoYXQgd2F5LCB3ZSBjYW4gZGlzdGluZ3Vpc2gg c2Vjb25kYXJpZXMgdGhhdCBhcmUgYWxpdmUgYnV0DQo+IGFyZSBub3QgcmVzcG9uZGluZywgZnJv bSB0aG9zZSB0aGF0IGhhdmUgYWxyZWFkeSBkaWVkLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogQW5h dG9seSBCdXJha292IDxhbmF0b2x5LmJ1cmFrb3ZAaW50ZWwuY29tPg0KPiAtLS0NCj4gDQo+IE5v dGVzOg0KPiAgICB2Mzogbm8gY2hhbmdlcw0KPiANCj4gICAgdjI6IG5vIGNoYW5nZXMNCj4gDQo+ IGxpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfY29tbW9uX3Byb2MuYyB8IDIwNCArKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tLQ0KPiAxIGZpbGUgY2hhbmdlZCwgMTc1IGluc2VydGlvbnMo KyksIDI5IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBhL2xpYi9saWJydGVfZWFsL2Nv bW1vbi9lYWxfY29tbW9uX3Byb2MuYyBiL2xpYi9saWJydGVfZWFsL2NvbW1vbi9lYWxfY29tbW9u X3Byb2MuYw0KPiBpbmRleCBhNmUyNGU2Li43Yzg3OTcxIDEwMDY0NA0KPiAtLS0gYS9saWIvbGli cnRlX2VhbC9jb21tb24vZWFsX2NvbW1vbl9wcm9jLmMNCj4gKysrIGIvbGliL2xpYnJ0ZV9lYWwv Y29tbW9uL2VhbF9jb21tb25fcHJvYy5jDQo+IEBAIC0xMyw2ICsxMyw3IEBADQo+ICNpbmNsdWRl IDxzdGRpby5oPg0KPiAjaW5jbHVkZSA8c3RkbGliLmg+DQo+ICNpbmNsdWRlIDxzdHJpbmcuaD4N Cj4gKyNpbmNsdWRlIDxzeXMvZmlsZS5oPg0KPiAjaW5jbHVkZSA8c3lzL3RpbWUuaD4NCj4gI2lu Y2x1ZGUgPHN5cy90eXBlcy5oPg0KPiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPg0KPiBAQCAtMzIs NiArMzMsNyBAQA0KPiAjaW5jbHVkZSAiZWFsX2ludGVybmFsX2NmZy5oIg0KPiANCj4gc3RhdGlj IGludCBtcF9mZCA9IC0xOw0KPiArc3RhdGljIGludCBsb2NrX2ZkID0gLTE7DQoNCkkgZGlkIG5v dCBmaW5kIHdoZXJlIGxvY2tfZmQgaXMgY2xvc2VkIGluIHRoaXMgY29kZSwgc2hvdWxkIGl0IGJl IGNsb3NlZCBhdCBzb21lIHBvaW50Pw0KDQo+IHN0YXRpYyBjaGFyIG1wX2ZpbHRlcltQQVRIX01B WF07ICAgLyogRmlsdGVyIGZvciBzZWNvbmRhcnkgcHJvY2VzcyBzb2NrZXRzICovDQo+IHN0YXRp YyBjaGFyIG1wX2Rpcl9wYXRoW1BBVEhfTUFYXTsgLyogVGhlIGRpcmVjdG9yeSBwYXRoIGZvciBh bGwgbXAgc29ja2V0cyAqLw0KPiBzdGF0aWMgcHRocmVhZF9tdXRleF90IG1wX211dGV4X2FjdGlv biA9IFBUSFJFQURfTVVURVhfSU5JVElBTElaRVI7DQo+IEBAIC0xMDQsNiArMTA2LDQ2IEBAIGZp bmRfc3luY19yZXF1ZXN0KGNvbnN0IGNoYXIgKmRzdCwgY29uc3QgY2hhciAqYWN0X25hbWUpDQo+ IAlyZXR1cm4gcjsNCj4gfQ0KPiANCj4gK3N0YXRpYyB2b2lkDQo+ICtjcmVhdGVfc29ja2V0X3Bh dGgoY29uc3QgY2hhciAqbmFtZSwgY2hhciAqYnVmLCBpbnQgbGVuKQ0KPiArew0KPiArCWNvbnN0 IGNoYXIgKnByZWZpeCA9IGVhbF9tcF9zb2NrZXRfcGF0aCgpOw0KDQpJIHRob3VnaHQgd2UgbmVl ZGVkIGEgc3BhY2UgaGVyZSBhZnRlciB0aGUgdmFyaWFibGVzLCBubz8NCg0KPiArCWlmIChzdHJs ZW4obmFtZSkgPiAwKQ0KPiArCQlzbnByaW50ZihidWYsIGxlbiwgIiVzXyVzIiwgcHJlZml4LCBu YW1lKTsNCj4gKwllbHNlDQo+ICsJCXNucHJpbnRmKGJ1ZiwgbGVuLCAiJXMiLCBwcmVmaXgpOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZA0KPiArY3JlYXRlX2xvY2tmaWxlX3BhdGgoY29uc3Qg Y2hhciAqbmFtZSwgY2hhciAqYnVmLCBpbnQgbGVuKQ0KPiArew0KPiArCWNvbnN0IGNoYXIgKnBy ZWZpeCA9IGVhbF9tcF9zb2NrZXRfcGF0aCgpOw0KDQpTYW1lIGhlcmUNCj4gKwlpZiAoc3RybGVu KG5hbWUpID4gMSkNCj4gKwkJc25wcmludGYoYnVmLCBsZW4sICIlc2xvY2tfJXMiLCBwcmVmaXgs IG5hbWUpOw0KPiArCWVsc2UNCj4gKwkJc25wcmludGYoYnVmLCBsZW4sICIlc2xvY2siLCBwcmVm aXgpOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgY29uc3QgY2hhciAqDQo+ICtnZXRfcGVlcl9uYW1l KGNvbnN0IGNoYXIgKnNvY2tldF9mdWxsX3BhdGgpDQo+ICt7DQo+ICsJY2hhciBidWZbUEFUSF9N QVhdID0gezB9Ow0KPiArCWludCBsZW47DQo+ICsNCj4gKwkvKiBwcmltYXJ5IHByb2Nlc3MgaGFz IG5vIHBlZXIgbmFtZSAqLw0KPiArCWlmIChzdHJjbXAoc29ja2V0X2Z1bGxfcGF0aCwgZWFsX21w X3NvY2tldF9wYXRoKCkpID09IDApDQo+ICsJCXJldHVybiBOVUxMOw0KPiArDQo+ICsJLyogY29u c3RydWN0IGR1bW15IHNvY2tldCBmaWxlIG5hbWUgLSBtYWtlIGl0IG9uZSBjaGFyYWN0ZXIgbG9u ZyBzbyB0aGF0DQo+ICsJICogd2UgaGl0IHRoZSBjb2RlIHBhdGggd2hlcmUgdW5kZXJzY29yZXMg YXJlIGFkZGVkDQo+ICsJICovDQo+ICsJY3JlYXRlX3NvY2tldF9wYXRoKCJhIiwgYnVmLCBzaXpl b2YoYnVmKSk7DQo+ICsNCj4gKwkvKiB3ZSB3YW50IHRvIGdldCBldmVyeXRoaW5nIGFmdGVyIC9w YXRoLy5ydGVfdW5peF8sIHNvIGRpc2NhcmQgJ2EnICovDQo+ICsJbGVuID0gc3RybGVuKGJ1Zikg LSAxOw0KPiArCXJldHVybiAmc29ja2V0X2Z1bGxfcGF0aFtsZW5dOw0KPiArfQ0KPiArDQo+IGlu dA0KPiBydGVfZWFsX3ByaW1hcnlfcHJvY19hbGl2ZShjb25zdCBjaGFyICpjb25maWdfZmlsZV9w YXRoKQ0KPiB7DQo+IEBAIC0zMzIsOCArMzc0LDI5IEBAIG1wX2hhbmRsZSh2b2lkICphcmcgX19y dGVfdW51c2VkKQ0KPiBzdGF0aWMgaW50DQo+IG9wZW5fc29ja2V0X2ZkKHZvaWQpDQo+IHsNCj4g KwljaGFyIHBlZXJfbmFtZVtQQVRIX01BWF0gPSB7MH07DQo+ICsJY2hhciBsb2NrZmlsZVtQQVRI X01BWF0gPSB7MH07DQo+IAlzdHJ1Y3Qgc29ja2FkZHJfdW4gdW47DQo+IC0JY29uc3QgY2hhciAq cHJlZml4ID0gZWFsX21wX3NvY2tldF9wYXRoKCk7DQo+ICsNCj4gKwlpZiAocnRlX2VhbF9wcm9j ZXNzX3R5cGUoKSA9PSBSVEVfUFJPQ19TRUNPTkRBUlkpDQo+ICsJCXNucHJpbnRmKHBlZXJfbmFt ZSwgc2l6ZW9mKHBlZXJfbmFtZSksICIlZF8lIlBSSXg2NCwNCj4gKwkJCSBnZXRwaWQoKSwgcnRl X3JkdHNjKCkpOw0KPiArDQo+ICsJLyogdHJ5IHRvIGNyZWF0ZSBsb2NrZmlsZSAqLw0KPiArCWNy ZWF0ZV9sb2NrZmlsZV9wYXRoKHBlZXJfbmFtZSwgbG9ja2ZpbGUsIHNpemVvZihsb2NrZmlsZSkp Ow0KPiArDQo+ICsJbG9ja19mZCA9IG9wZW4obG9ja2ZpbGUsIE9fQ1JFQVQgfCBPX1JEV1IpOw0K PiArCWlmIChsb2NrX2ZkIDwgMCkgew0KPiArCQlSVEVfTE9HKEVSUiwgRUFMLCAiZmFpbGVkIHRv IG9wZW4gJyVzJzogJXNcbiIsIGxvY2tmaWxlLA0KPiArCQkJc3RyZXJyb3IoZXJybm8pKTsNCj4g KwkJcmV0dXJuIC0xOw0KPiArCX0NCj4gKwlpZiAoZmxvY2sobG9ja19mZCwgTE9DS19FWCB8IExP Q0tfTkIpKSB7DQo+ICsJCVJURV9MT0coRVJSLCBFQUwsICJmYWlsZWQgdG8gbG9jayAnJXMnOiAl c1xuIiwgbG9ja2ZpbGUsDQo+ICsJCQlzdHJlcnJvcihlcnJubykpOw0KDQpEaWQgbm90IGNsb3Nl IHRoZSBsb2NrX2ZkIGhlcmUuDQoNCj4gKwkJcmV0dXJuIC0xOw0KPiArCX0NCj4gKwkvKiBubyBu ZWVkIHRvIGRvd25ncmFkZSB0byBzaGFyZWQgbG9jayAqLw0KPiANCj4gCW1wX2ZkID0gc29ja2V0 KEFGX1VOSVgsIFNPQ0tfREdSQU0sIDApOw0KPiAJaWYgKG1wX2ZkIDwgMCkgew0KPiBAQCAtMzQz LDEzICs0MDYsMTEgQEAgb3Blbl9zb2NrZXRfZmQodm9pZCkNCj4gDQo+IAltZW1zZXQoJnVuLCAw LCBzaXplb2YodW4pKTsNCj4gCXVuLnN1bl9mYW1pbHkgPSBBRl9VTklYOw0KPiAtCWlmIChydGVf ZWFsX3Byb2Nlc3NfdHlwZSgpID09IFJURV9QUk9DX1BSSU1BUlkpDQo+IC0JCXNucHJpbnRmKHVu LnN1bl9wYXRoLCBzaXplb2YodW4uc3VuX3BhdGgpLCAiJXMiLCBwcmVmaXgpOw0KPiAtCWVsc2Ug ew0KPiAtCQlzbnByaW50Zih1bi5zdW5fcGF0aCwgc2l6ZW9mKHVuLnN1bl9wYXRoKSwgIiVzXyVk XyUiUFJJeDY0LA0KPiAtCQkJIHByZWZpeCwgZ2V0cGlkKCksIHJ0ZV9yZHRzYygpKTsNCj4gLQl9 DQo+ICsNCj4gKwljcmVhdGVfc29ja2V0X3BhdGgocGVlcl9uYW1lLCB1bi5zdW5fcGF0aCwgc2l6 ZW9mKHVuLnN1bl9wYXRoKSk7DQo+ICsNCj4gCXVubGluayh1bi5zdW5fcGF0aCk7IC8qIE1heSBz dGlsbCBleGlzdCBzaW5jZSBsYXN0IHJ1biAqLw0KPiArDQo+IAlpZiAoYmluZChtcF9mZCwgKHN0 cnVjdCBzb2NrYWRkciAqKSZ1biwgc2l6ZW9mKHVuKSkgPCAwKSB7DQo+IAkJUlRFX0xPRyhFUlIs IEVBTCwgImZhaWxlZCB0byBiaW5kICVzOiAlc1xuIiwNCj4gCQkJdW4uc3VuX3BhdGgsIHN0cmVy cm9yKGVycm5vKSk7DQo+IEBAIC0zNjEsNiArNDIyLDQ0IEBAIG9wZW5fc29ja2V0X2ZkKHZvaWQp DQo+IAlyZXR1cm4gbXBfZmQ7DQo+IH0NCj4gDQo+ICsvKiBmaW5kIGNvcnJlc3BvbmRpbmcgbG9j ayBmaWxlIGFuZCB0cnkgdG8gbG9jayBpdCAqLw0KPiArc3RhdGljIGludA0KPiArc29ja2V0X2lz X2FjdGl2ZShjb25zdCBjaGFyICpwZWVyX25hbWUpDQo+ICt7DQo+ICsJY2hhciBsb2NrZmlsZVtQ QVRIX01BWF0gPSB7MH07DQo+ICsJaW50IGZkLCByZXQgPSAtMTsNCj4gKw0KPiArCS8qIGNvbnN0 cnVjdCBsb2NrZmlsZSBmaWxlbmFtZSAqLw0KPiArCWNyZWF0ZV9sb2NrZmlsZV9wYXRoKHBlZXJf bmFtZSwgbG9ja2ZpbGUsIHNpemVvZihsb2NrZmlsZSkpOw0KPiArDQo+ICsJLyogdHJ5IHRvIGxv Y2sgaXQgKi8NCj4gKwlmZCA9IG9wZW4obG9ja2ZpbGUsIE9fQ1JFQVQgfCBPX1JEV1IpOw0KPiAr CWlmIChmZCA8IDApIHsNCj4gKwkJUlRFX0xPRyhFUlIsIEVBTCwgIkNhbm5vdCBvcGVuICclcyc6 ICVzXG4iLCBsb2NrZmlsZSwNCj4gKwkJCXN0cmVycm9yKGVycm5vKSk7DQo+ICsJCXJldHVybiAt MTsNCj4gKwl9DQo+ICsJcmV0ID0gZmxvY2soZmQsIExPQ0tfRVggfCBMT0NLX05CKTsNCj4gKwlp ZiAocmV0IDwgMCkgew0KPiArCQlpZiAoZXJybm8gPT0gRVdPVUxEQkxPQ0spIHsNCj4gKwkJCS8q IGZpbGUgaXMgbG9ja2VkICovDQo+ICsJCQlyZXQgPSAxOw0KPiArCQl9IGVsc2Ugew0KPiArCQkJ UlRFX0xPRyhFUlIsIEVBTCwgIkNhbm5vdCBsb2NrICclcyc6ICVzXG4iLCBsb2NrZmlsZSwNCj4g KwkJCQlzdHJlcnJvcihlcnJubykpOw0KPiArCQkJcmV0ID0gLTE7DQo+ICsJCX0NCj4gKwl9IGVs c2Ugew0KPiArCQlyZXQgPSAwOw0KPiArCQkvKiB1bmxpbmsgbG9ja2ZpbGUgYXV0b21hdGljYWxs eSAqLw0KPiArCQl1bmxpbmsobG9ja2ZpbGUpOw0KPiArCQlmbG9jayhmZCwgTE9DS19VTik7DQo+ ICsJfQ0KPiArCWNsb3NlKGZkKTsNCj4gKw0KPiArCXJldHVybiByZXQ7DQo+ICt9DQo+ICsNCj4g c3RhdGljIGludA0KPiB1bmxpbmtfc29ja2V0cyhjb25zdCBjaGFyICpmaWx0ZXIpDQo+IHsNCj4g QEAgLTM3NiwyOCArNDc1LDMzIEBAIHVubGlua19zb2NrZXRzKGNvbnN0IGNoYXIgKmZpbHRlcikN Cj4gCWRpcl9mZCA9IGRpcmZkKG1wX2Rpcik7DQo+IA0KPiAJd2hpbGUgKChlbnQgPSByZWFkZGly KG1wX2RpcikpKSB7DQo+IC0JCWlmIChmbm1hdGNoKGZpbHRlciwgZW50LT5kX25hbWUsIDApID09 IDApDQo+ICsJCWlmIChmbm1hdGNoKGZpbHRlciwgZW50LT5kX25hbWUsIDApID09IDApIHsNCj4g KwkJCWNvbnN0IGNoYXIgKnBlZXJfbmFtZTsNCj4gKwkJCWNoYXIgcGF0aFtQQVRIX01BWF07DQo+ ICsJCQlpbnQgcmV0Ow0KPiArDQo+ICsJCQlzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIl cy8lcyIsIG1wX2Rpcl9wYXRoLA0KPiArCQkJCSBlbnQtPmRfbmFtZSk7DQo+ICsJCQlwZWVyX25h bWUgPSBnZXRfcGVlcl9uYW1lKHBhdGgpOw0KPiArDQo+ICsJCQlyZXQgPSBzb2NrZXRfaXNfYWN0 aXZlKHBlZXJfbmFtZSk7DQo+ICsJCQlpZiAocmV0IDwgMCkgew0KPiArCQkJCVJURV9MT0coRVJS LCBFQUwsICJFcnJvciBnZXR0aW5nIHNvY2tldCBhY3RpdmUgc3RhdHVzXG7igJ0pOw0KDQpObyBj bG9zZSBmb3IgbXBfZGlyPw0KPiArCQkJCXJldHVybiAtMTsNCj4gKwkJCX0gZWxzZSBpZiAocmV0 ID09IDEpIHsNCj4gKwkJCQlSVEVfTE9HKEVSUiwgRUFMLCAiU29ja2V0IGlzIGFjdGl2ZSAob2xk IHNlY29uZGFyeSBwcm9jZXNzIHN0aWxsIHJ1bm5pbmc/KVxu4oCdKTsNCg0KQW5kIGhlcmUNCj4g KwkJCQlyZXR1cm4gLTE7DQo+ICsJCQl9DQo+ICsJCQlSVEVfTE9HKERFQlVHLCBFQUwsICJSZW1v dmluZyBzdGFsZSBzb2NrZXQgZmlsZSAnJXMnXG4iLA0KPiArCQkJCQllbnQtPmRfbmFtZSk7DQo+ IAkJCXVubGlua2F0KGRpcl9mZCwgZW50LT5kX25hbWUsIDApOw0KDQpEb2VzIHVubGlua2F0KCkg Y2xvc2UgZGlyX2ZkPw0KDQo+ICsJCX0NCj4gCX0NCj4gDQo+IAljbG9zZWRpcihtcF9kaXIpOw0K PiAJcmV0dXJuIDA7DQo+IH0NCj4gDQo+IC1zdGF0aWMgdm9pZA0KPiAtdW5saW5rX3NvY2tldF9i eV9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpDQo+IC17DQo+IC0JY2hhciAqZmlsZW5hbWU7DQo+IC0J Y2hhciAqZnVsbHBhdGggPSBzdHJkdXAocGF0aCk7DQo+IC0NCj4gLQlpZiAoIWZ1bGxwYXRoKQ0K PiAtCQlyZXR1cm47DQo+IC0JZmlsZW5hbWUgPSBiYXNlbmFtZShmdWxscGF0aCk7DQo+IC0JdW5s aW5rX3NvY2tldHMoZmlsZW5hbWUpOw0KPiAtCWZyZWUoZnVsbHBhdGgpOw0KPiAtCVJURV9MT0co SU5GTywgRUFMLCAiUmVtb3ZlIHNvY2tldCAlc1xuIiwgcGF0aCk7DQo+IC19DQo+IC0NCj4gaW50 DQo+IHJ0ZV9tcF9jaGFubmVsX2luaXQodm9pZCkNCj4gew0KPiBAQCAtNDg3LDEwICs1OTEsMjUg QEAgc2VuZF9tc2coY29uc3QgY2hhciAqZHN0X3BhdGgsIHN0cnVjdCBydGVfbXBfbXNnICptc2cs IGludCB0eXBlKQ0KPiAJCXJ0ZV9lcnJubyA9IGVycm5vOw0KPiAJCS8qIENoZWNrIGlmIGl0IGNh dXNlZCBieSBwZWVyIHByb2Nlc3MgZXhpdHMgKi8NCj4gCQlpZiAoZXJybm8gPT0gRUNPTk5SRUZV U0VEKSB7DQo+IC0JCQkvKiBXZSBkb24ndCB1bmxpbmsgdGhlIHByaW1hcnkncyBzb2NrZXQgaGVy ZSAqLw0KPiAtCQkJaWYgKHJ0ZV9lYWxfcHJvY2Vzc190eXBlKCkgPT0gUlRFX1BST0NfUFJJTUFS WSkNCj4gLQkJCQl1bmxpbmtfc29ja2V0X2J5X3BhdGgoZHN0X3BhdGgpOw0KPiAtCQkJcmV0dXJu IDA7DQo+ICsJCQljb25zdCBjaGFyICpwZWVyX25hbWUgPSBnZXRfcGVlcl9uYW1lKGRzdF9wYXRo KTsNCj4gKwkJCWludCBhY3RpdmUsIHJldCA9IDA7DQoNCkhlcmUgd2UgaGF2ZSB2YXJpYWJsZXMg aW4gdGhlIG1pZGRsZSBvZiBhIGJsb2NrIGFnYWluLg0KDQo+ICsNCj4gKwkJCWFjdGl2ZSA9IHJ0 ZV9lYWxfcHJvY2Vzc190eXBlKCkgPT0gUlRFX1BST0NfUFJJTUFSWSA/DQo+ICsJCQkJCXNvY2tl dF9pc19hY3RpdmUocGVlcl9uYW1lKSA6DQo+ICsJCQkJCXJ0ZV9lYWxfcHJpbWFyeV9wcm9jX2Fs aXZlKE5VTEwpOw0KPiArDQo+ICsJCQlpZiAoYWN0aXZlID4gMCkgew0KPiArCQkJCVJURV9MT0co RVJSLCBFQUwsICJDb3VsZG4ndCBjb21tdW5pY2F0ZSB3aXRoIGFjdGl2ZSBwZWVyXG4iKTsNCj4g KwkJCX0gZWxzZSBpZiAoYWN0aXZlIDwgMCkgew0KPiArCQkJCVJURV9MT0coRVJSLCBFQUwsICJD b3VsZG4ndCBnZXQgcGVlciBzdGF0dXNcbiIpOw0KPiArCQkJCXJldCA9IC0xOw0KPiArCQkJfSBl bHNlIGlmIChydGVfZWFsX3Byb2Nlc3NfdHlwZSgpID09IFJURV9QUk9DX1BSSU1BUlkpIHsNCj4g KwkJCQkvKiBwZWVyIGlzbid0IGFjdGl2ZSBhbnltb3JlLCBzbyB1bmxpbmsgaXRzDQo+ICsJCQkJ ICogc29ja2V0Lg0KPiArCQkJCSAqLw0KPiArCQkJCXVubGluayhkc3RfcGF0aCk7DQo+ICsJCQl9 DQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiAJCX0NCj4gCQlpZiAoZXJybm8gPT0gRU5PQlVGUykgew0K PiAJCQlSVEVfTE9HKEVSUiwgRUFMLCAiUGVlciBjYW5ub3QgcmVjZWl2ZSBtZXNzYWdlICVzXG4i LA0KPiBAQCAtNTA4LDcgKzYyNyw3IEBAIHNlbmRfbXNnKGNvbnN0IGNoYXIgKmRzdF9wYXRoLCBz dHJ1Y3QgcnRlX21wX21zZyAqbXNnLCBpbnQgdHlwZSkNCj4gc3RhdGljIGludA0KPiBtcF9zZW5k KHN0cnVjdCBydGVfbXBfbXNnICptc2csIGNvbnN0IGNoYXIgKnBlZXIsIGludCB0eXBlKQ0KPiB7 DQo+IC0JaW50IHJldCA9IDA7DQo+ICsJaW50IGRpcl9mZCwgcmV0ID0gMDsNCj4gCURJUiAqbXBf ZGlyOw0KPiAJc3RydWN0IGRpcmVudCAqZW50Ow0KPiANCj4gQEAgLTUzMCwxNSArNjQ5LDI4IEBA IG1wX3NlbmQoc3RydWN0IHJ0ZV9tcF9tc2cgKm1zZywgY29uc3QgY2hhciAqcGVlciwgaW50IHR5 cGUpDQo+IAkJcnRlX2Vycm5vID0gZXJybm87DQo+IAkJcmV0dXJuIC0xOw0KPiAJfQ0KPiArCWRp cl9mZCA9IGRpcmZkKG1wX2Rpcik7DQoNCndoZW4gaXMgZGlyX2ZkIGNsb3NlZD8NCg0KPiAJd2hp bGUgKChlbnQgPSByZWFkZGlyKG1wX2RpcikpKSB7DQo+IAkJY2hhciBwYXRoW1BBVEhfTUFYXTsN Cj4gKwkJY29uc3QgY2hhciAqcGVlcl9uYW1lOw0KPiArCQlpbnQgYWN0aXZlOw0KPiANCj4gCQlp ZiAoZm5tYXRjaChtcF9maWx0ZXIsIGVudC0+ZF9uYW1lLCAwKSAhPSAwKQ0KPiAJCQljb250aW51 ZTsNCj4gDQo+IAkJc25wcmludGYocGF0aCwgc2l6ZW9mKHBhdGgpLCAiJXMvJXMiLCBtcF9kaXJf cGF0aCwNCj4gCQkJIGVudC0+ZF9uYW1lKTsNCj4gLQkJaWYgKHNlbmRfbXNnKHBhdGgsIG1zZywg dHlwZSkgPCAwKQ0KPiArCQlwZWVyX25hbWUgPSBnZXRfcGVlcl9uYW1lKHBhdGgpOw0KPiArDQo+ ICsJCS8qIG9ubHkgc2VuZCBpZiB3ZSBjYW4gZXhwZWN0IHRvIHJlY2VpdmUgYSByZXBseSwgb3Ro ZXJ3aXNlDQo+ICsJCSAqIHJlbW92ZSB0aGUgc29ja2V0Lg0KPiArCQkgKi8NCj4gKwkJYWN0aXZl ID0gc29ja2V0X2lzX2FjdGl2ZShwZWVyX25hbWUpOw0KPiArCQlpZiAoYWN0aXZlIDwgMCkNCj4g KwkJCXJldCA9IC0xOw0KPiArCQllbHNlIGlmIChhY3RpdmUgPT0gMCkNCj4gKwkJCXVubGlua2F0 KGRpcl9mZCwgZW50LT5kX25hbWUsIDApOw0KPiArCQllbHNlIGlmIChhY3RpdmUgPiAwICYmIHNl bmRfbXNnKHBhdGgsIG1zZywgdHlwZSkgPCAwKQ0KPiAJCQlyZXQgPSAtMTsNCj4gCX0NCj4gDQo+ IEBAIC02NjMsNyArNzk1LDcgQEAgaW50IF9fcnRlX2V4cGVyaW1lbnRhbA0KPiBydGVfbXBfcmVx dWVzdChzdHJ1Y3QgcnRlX21wX21zZyAqcmVxLCBzdHJ1Y3QgcnRlX21wX3JlcGx5ICpyZXBseSwN Cj4gCQljb25zdCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQ0KPiB7DQo+IC0JaW50IHJldCA9IDA7DQo+ ICsJaW50IGRpcl9mZCwgcmV0ID0gMDsNCj4gCURJUiAqbXBfZGlyOw0KPiAJc3RydWN0IGRpcmVu dCAqZW50Ow0KPiAJc3RydWN0IHRpbWV2YWwgbm93Ow0KPiBAQCAtNjk4LDE1ICs4MzAsMjkgQEAg cnRlX21wX3JlcXVlc3Qoc3RydWN0IHJ0ZV9tcF9tc2cgKnJlcSwgc3RydWN0IHJ0ZV9tcF9yZXBs eSAqcmVwbHksDQo+IAkJcnRlX2Vycm5vID0gZXJybm87DQo+IAkJcmV0dXJuIC0xOw0KPiAJfQ0K PiArCWRpcl9mZCA9IGRpcmZkKG1wX2Rpcik7DQoNCldoZW4gaXMgZGlyX2ZkIGNsb3NlZD8NCg0K PiANCj4gCXdoaWxlICgoZW50ID0gcmVhZGRpcihtcF9kaXIpKSkgew0KPiArCQljb25zdCBjaGFy ICpwZWVyX25hbWU7DQo+IAkJY2hhciBwYXRoW1BBVEhfTUFYXTsNCj4gKwkJaW50IGFjdGl2ZTsN Cj4gDQo+IAkJaWYgKGZubWF0Y2gobXBfZmlsdGVyLCBlbnQtPmRfbmFtZSwgMCkgIT0gMCkNCj4g CQkJY29udGludWU7DQo+IA0KPiAJCXNucHJpbnRmKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzLyVz IiwgbXBfZGlyX3BhdGgsDQo+IAkJCSBlbnQtPmRfbmFtZSk7DQo+ICsJCXBlZXJfbmFtZSA9IGdl dF9wZWVyX25hbWUocGF0aCk7DQo+ICsNCj4gKwkJYWN0aXZlID0gc29ja2V0X2lzX2FjdGl2ZShw ZWVyX25hbWUpOw0KPiArDQo+ICsJCWlmIChhY3RpdmUgPCAwKSB7DQo+ICsJCQlyZXQgPSAtMTsN Cj4gKwkJCWJyZWFrOw0KPiArCQl9IGVsc2UgaWYgKGFjdGl2ZSA9PSAwKSB7DQo+ICsJCQl1bmxp bmthdChkaXJfZmQsIGVudC0+ZF9uYW1lLCAwKTsNCj4gKwkJCWNvbnRpbnVlOw0KPiArCQl9DQo+ IA0KPiAJCWlmIChtcF9yZXF1ZXN0X29uZShwYXRoLCByZXEsIHJlcGx5LCAmZW5kKSkNCj4gCQkJ cmV0ID0gLTE7DQo+IC0tIA0KPiAyLjcuNA0KDQpSZWdhcmRzLA0KS2VpdGgNCg0K