From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 4/4] drm/i915: expose EU topology through sysfs Date: Mon, 20 Nov 2017 16:13:19 +0000 Message-ID: <2c007984-be6e-5160-1903-2ab7d0a57e22@linux.intel.com> References: <20171120122316.25830-1-lionel.g.landwerlin@intel.com> <20171120122316.25830-5-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 94C3E89E03 for ; Mon, 20 Nov 2017 16:13:23 +0000 (UTC) In-Reply-To: <20171120122316.25830-5-lionel.g.landwerlin@intel.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lionel Landwerlin , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDIwLzExLzIwMTcgMTI6MjMsIExpb25lbCBMYW5kd2VybGluIHdyb3RlOgo+IFdpdGggdGhl IGludHJvZHVjdGlvbiBvZiBhc3ltZXRyaWMgc2xpY2VzIGluIENOTCwgd2UgY2Fubm90IHJlbHkg b24KPiB0aGUgcHJldmlvdXMgU1VCU0xJQ0VfTUFTSyBnZXRwYXJhbS4gSGVyZSB3ZSBpbnRyb2R1 Y2UgYSBtb3JlIGRldGFpbGVkCj4gd2F5IG9mIHF1ZXJ5aW5nIHRoZSBHZW4ncyBHUFUgdG9wb2xv Z3kgdGhhdCBkb2Vzbid0IGFnZ3JlZ2F0ZSBudW1iZXJzLgo+IAo+IFRoaXMgaXMgZXNzZW50aWFs IGZvciBtb25pdG9yaW5nIHBhcnRzIG9mIHRoZSBHUFUgd2l0aCB0aGUgT0EgdW5pdCwKPiBiZWNh dXNlIHNpZ25hbHMgbmVlZCB0byBiZSBhY2NvdW50ZWQgcHJvcGVybHkgYmFzZWQgb24gd2hldGhl ciBwYXJ0IG9mCj4gdGhlIEdQVSBoYXMgYmVlbiBmdXNlZCBvZmYuIFRoZSBjdXJyZW50IGFnZ3Jl Z2F0ZWQgbnVtYmVycyBsaWtlCj4gRVVfVE9UQUwgZG8gbm90IGdpdmVzIHVzIHN1ZmZpY2llbnQg aW5mb3JtYXRpb24uCj4gCj4gSGVyZSBpcyB0aGUgc3lzZnMgbGF5b3V0IG9uIGEgU2t5bGFrZSBH VDQgOgo+IAo+IC9zeXMvZGV2aWNlcy9wY2kwMDAwOjAwLzAwMDA6MDA6MDIuMC9kcm0vY2FyZDAv Z3QvcmNzLzAvCj4g4pSc4pSA4pSAIGNhcGFiaWxpdGllcwo+IOKUnOKUgOKUgCBjbGFzcwo+IOKU nOKUgOKUgCBpZAo+IOKUnOKUgOKUgCBtYXhfZXVzX3Blcl9zdWJzbGljZQo+IOKUnOKUgOKUgCBt YXhfc2xpY2VzCj4g4pSc4pSA4pSAIG1heF9zdWJzbGljZXNfcGVyX3NsaWNlCj4g4pSc4pSA4pSA IHNsaWNlMAo+IOKUgsKgwqAg4pSc4pSA4pSAIHN1YnNsaWNlMAo+IOKUgsKgwqAg4pSCwqDCoCDi lJTilIDilIAgZXVzX2VuYWJsZWRfbWFzawo+IOKUgsKgwqAg4pSc4pSA4pSAIHN1YnNsaWNlMQo+ IOKUgsKgwqAg4pSCwqDCoCDilJTilIDilIAgZXVzX2VuYWJsZWRfbWFzawo+IOKUgsKgwqAg4pSc 4pSA4pSAIHN1YnNsaWNlMgo+IOKUgsKgwqAg4pSCwqDCoCDilJTilIDilIAgZXVzX2VuYWJsZWRf bWFzawo+IOKUgsKgwqAg4pSc4pSA4pSAIHN1YnNsaWNlMwo+IOKUgsKgwqAg4pSCwqDCoCDilJTi lIDilIAgZXVzX2VuYWJsZWRfbWFzawo+IOKUgsKgwqAg4pSU4pSA4pSAIHN1YnNsaWNlc19lbmFi bGVkX21hc2sKPiDilJzilIDilIAgc2xpY2UxCj4g4pSCwqDCoCDilJzilIDilIAgc3Vic2xpY2Uw Cj4g4pSCwqDCoCDilILCoMKgIOKUlOKUgOKUgCBldXNfZW5hYmxlZF9tYXNrCj4g4pSCwqDCoCDi lJzilIDilIAgc3Vic2xpY2UxCj4g4pSCwqDCoCDilILCoMKgIOKUlOKUgOKUgCBldXNfZW5hYmxl ZF9tYXNrCj4g4pSCwqDCoCDilJzilIDilIAgc3Vic2xpY2UyCj4g4pSCwqDCoCDilILCoMKgIOKU lOKUgOKUgCBldXNfZW5hYmxlZF9tYXNrCj4g4pSCwqDCoCDilJzilIDilIAgc3Vic2xpY2UzCj4g 4pSCwqDCoCDilILCoMKgIOKUlOKUgOKUgCBldXNfZW5hYmxlZF9tYXNrCj4g4pSCwqDCoCDilJTi lIDilIAgc3Vic2xpY2VzX2VuYWJsZWRfbWFzawo+IOKUnOKUgOKUgCBzbGljZTIKPiDilILCoMKg IOKUnOKUgOKUgCBzdWJzbGljZTAKPiDilILCoMKgIOKUgsKgwqAg4pSU4pSA4pSAIGV1c19lbmFi bGVkX21hc2sKPiDilILCoMKgIOKUnOKUgOKUgCBzdWJzbGljZTEKPiDilILCoMKgIOKUgsKgwqAg 4pSU4pSA4pSAIGV1c19lbmFibGVkX21hc2sKPiDilILCoMKgIOKUnOKUgOKUgCBzdWJzbGljZTIK PiDilILCoMKgIOKUgsKgwqAg4pSU4pSA4pSAIGV1c19lbmFibGVkX21hc2sKPiDilILCoMKgIOKU nOKUgOKUgCBzdWJzbGljZTMKPiDilILCoMKgIOKUgsKgwqAg4pSU4pSA4pSAIGV1c19lbmFibGVk X21hc2sKPiDilILCoMKgIOKUlOKUgOKUgCBzdWJzbGljZXNfZW5hYmxlZF9tYXNrCj4g4pSU4pSA 4pSAIHNsaWNlc19lbmFibGVkX21hc2sKCkZvciB0aGUgdG9wb2xvZ3kgbGF5b3V0IEkgZG9uJ3Qg ZmVlbCBsaWtlIGFuIGV4cGVydC4gOigKCklzIGl0IG1vcmUgY29ycmVjdCBmb3IgaXQgdG8gYmUg cGVyIGVuZ2luZSBpbnN0YW5jZSwgb3IgcGVyIGNsYXNzPwoKU2hvdWxkIGl0IGdvIHVuZGVyIHRo ZSB0b3BvbG9neSBzdWJkaXI/CgpTaG91bGQgdGhlcmUgYmUgYSBzeW1saW5rIGZyb20gcmNzLzAv dG9wb2xvZ3kgLT4gLi4vdG9wb2xvZ3kgPwoKU2hvdWxkIHRoZSBvcmdhbml6YXRpb24gYmUgd2l0 aCBtb3JlIHN1YmRpcnMgbGlrZSAKdG9wb2xvZ3kvc2xpY2UvMC9zdWJzbGljZS8wL2V1c19lbmFi bGVkX21hc2s/CgpJcyAoc3ViKXNsaWNlc19lbmFibGVkX21hc2sgcmVxdWlyZWQvaGVscGZ1bCBv ciBpdCBjYW4gYmUgaW5mZXJyZWQgZnJvbSAKZW51bWVyYXRpbmcgdGhlIHNsaWNlcz8KClNhbWUg Zm9yIG1heF9zbGljZXM/IE9yIHBlcmhhcHMgaXQgaXMgYSBkaWZmZXJlbnQgbWVhbmluZyB0aGFu IHRoZSAKZW5hYmxlZCBtYXNrPwoKU29ycnksIHRoaXMgaXMgbm90IHZlcnkgY29uc3RydWN0aXZl LCBtb3JlIHF1ZXN0aW9ucyB0aGFuIGFuc3dlcnMuLi4gOigKClJlZ2FyZHMsCgpUdnJ0a28KCj4g Cj4gRWFjaCBlbmFibGVkX21hc2sgZmlsZSBnaXZlcyB1cyBhIG1hc2sgb2YgdGhlIGVuYWJsZWQg dW5pdHMgOgo+IAo+ICQgY2F0IC9zeXMvZGV2aWNlcy9wY2kwMDAwXDowMC8wMDAwXDowMFw6MDIu MC9kcm0vY2FyZDAvZ3QvcmNzLzAvc2xpY2VzX2VuYWJsZWRfbWFzawo+IDB4Nwo+IAo+ICQgY2F0 IC9zeXMvZGV2aWNlcy9wY2kwMDAwXDowMC8wMDAwXDowMFw6MDIuMC9kcm0vY2FyZDAvZ3QvcmNz LzAvc2xpY2UwL3N1YnNsaWNlMi9ldXNfZW5hYmxlZF9tYXNrCj4gMHhmZgo+IAo+IHYyOiBNb3Zl IHRvcG9sb2d5IGJlbG93IHJjcyBlbmdpbmUgKENocmlzKQo+ICAgICAgQWRkIG1heF9ldXNfcGVy X3N1YnNsaWNlL21heF9zbGljZXMvbWF4X3N1YnNsaWNlc19wZXJfc2xpY2UgKExpb25lbCkKPiAK PiB2MzogUmVuYW1lIGVuYWJsZWRfbWFzayAoTGlvbmVsKQo+IAo+IFNpZ25lZC1vZmYtYnk6IExp b25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVsLmNvbT4KPiAtLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICB8ICAyNiArKysrKysKPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYyB8IDE4OCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ICAgMiBmaWxlcyBjaGFuZ2VkLCAyMTQgaW5zZXJ0aW9ucygrKQo+ IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGRiNTUwMzIyMjA3Yy4uMWFjMGExOTFl OGZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTIyNTksNiArMjI1OSwyNCBA QCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgewo+ICAgCXU4IHZvbHRhZ2VfbGV2ZWw7Cj4gICB9 Owo+ICAgCj4gK3N0cnVjdCBpbnRlbF90b3BvbG9neV9rb2JqZWN0IHsKPiArCXN0cnVjdCBrb2Jq ZWN0IGtvYmo7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXY7Cj4gK307Cj4g Kwo+ICtzdHJ1Y3QgaW50ZWxfc2xpY2Vfa29iamVjdCB7Cj4gKwlzdHJ1Y3Qga29iamVjdCBrb2Jq Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2Owo+ICsJdTggc2xpY2VfaW5k ZXg7Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgaW50ZWxfc3Vic2xpY2Vfa29iamVjdCB7Cj4gKwlzdHJ1 Y3Qga29iamVjdCBrb2JqOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2Owo+ ICsJdTggc2xpY2VfaW5kZXg7Cj4gKwl1OCBzdWJzbGljZV9pbmRleDsKPiArfTsKPiArCj4gICBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgZHJtOwo+ICAg Cj4gQEAgLTI3MzIsNiArMjc1MCwxNCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gICAJ c3RydWN0IHsKPiAgIAkJc3RydWN0IGtvYmplY3Qga29iajsKPiAgIAkJc3RydWN0IGtvYmplY3Qg Y2xhc3Nlc19rb2Jqc1tNQVhfRU5HSU5FX0NMQVNTXTsKPiArCj4gKwkJc3RydWN0IHN5c2ZzX3Ns aWNlIHsKPiArCQkJc3RydWN0IGludGVsX3NsaWNlX2tvYmplY3Qga29iajsKPiArCj4gKwkJCXN0 cnVjdCBzeXNmc19zdWJzbGljZSB7Cj4gKwkJCQlzdHJ1Y3QgaW50ZWxfc3Vic2xpY2Vfa29iamVj dCBrb2JqOwo+ICsJCQl9IHN1YnNsaWNlc1tHRU5fTUFYX1NVQlNMSUNFU107Cj4gKwkJfSBzbGlj ZXNbR0VOX01BWF9TTElDRVNdOwo+ICAgCX0gZ3RfdG9wb2xvZ3k7Cj4gICAKPiAgIAkvKiBBYnN0 cmFjdCB0aGUgc3VibWlzc2lvbiBtZWNoYW5pc20gKGxlZ2FjeSByaW5nYnVmZmVyIG9yIGV4ZWNs aXN0cykgYXdheSAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5 c2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKPiBpbmRleCBmZDA0ZDBi OTNlYWYuLmRmOWQ4ZmRiY2IwYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3N5c2ZzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKPiBA QCAtNTU5LDYgKzU1OSwxNzQgQEAgc3RhdGljIHZvaWQgaTkxNV9zZXR1cF9lcnJvcl9jYXB0dXJl KHN0cnVjdCBkZXZpY2UgKmtkZXYpIHt9Cj4gICBzdGF0aWMgdm9pZCBpOTE1X3RlYXJkb3duX2Vy cm9yX2NhcHR1cmUoc3RydWN0IGRldmljZSAqa2Rldikge30KPiAgICNlbmRpZgo+ICAgCj4gK3N0 YXRpYyBzdHJ1Y3QgYXR0cmlidXRlIHNsaWNlc19lbmFibGVkX21hc2tfYXR0ciA9IHsKPiArCS5u YW1lID0gInNsaWNlc19lbmFibGVkX21hc2siLAo+ICsJLm1vZGUgPSAwNDQ0LAo+ICt9Owo+ICsK PiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgc3Vic2xpY2VzX2VuYWJsZWRfbWFza19hdHRyID0g ewo+ICsJLm5hbWUgPSAic3Vic2xpY2VzX2VuYWJsZWRfbWFzayIsCj4gKwkubW9kZSA9IDA0NDQs Cj4gK307Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSBldXNfZW5hYmxlZF9tYXNrX2F0 dHIgPSB7Cj4gKwkubmFtZSA9ICJldXNfZW5hYmxlZF9tYXNrIiwKPiArCS5tb2RlID0gMDQ0NCwK PiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlIG1heF9zbGljZXNfYXR0ciA9IHsK PiArCS5uYW1lID0gIm1heF9zbGljZXMiLAo+ICsJLm1vZGUgPSAwNDQ0LAo+ICt9Owo+ICsKPiAr c3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgbWF4X3N1YnNsaWNlc19wZXJfc2xpY2VfYXR0ciA9IHsK PiArCS5uYW1lID0gIm1heF9zdWJzbGljZXNfcGVyX3NsaWNlIiwKPiArCS5tb2RlID0gMDQ0NCwK PiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlIG1heF9ldXNfcGVyX3N1YnNsaWNl X2F0dHIgPSB7Cj4gKwkubmFtZSA9ICJtYXhfZXVzX3Blcl9zdWJzbGljZSIsCj4gKwkubW9kZSA9 IDA0NDQsCj4gK307Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtzaG93X3NsaWNlX2F0dHIoc3Ry dWN0IGtvYmplY3QgKmtvYmosIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikKPiAr ewo+ICsJc3RydWN0IGludGVsX3NsaWNlX2tvYmplY3QgKmtvYmpfd3JhcHBlciA9Cj4gKwkJY29u dGFpbmVyX29mKGtvYmosIHN0cnVjdCBpbnRlbF9zbGljZV9rb2JqZWN0LCBrb2JqKTsKPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtvYmpfd3JhcHBlci0+ZGV2X3ByaXY7 Cj4gKwljb25zdCBzdHJ1Y3Qgc3NldV9kZXZfaW5mbyAqc3NldSA9ICZJTlRFTF9JTkZPKGRldl9w cml2KS0+c3NldTsKPiArCj4gKwlpZiAoYXR0ciA9PSAmc3Vic2xpY2VzX2VuYWJsZWRfbWFza19h dHRyKSB7Cj4gKwkJcmV0dXJuIHNwcmludGYoYnVmLCAiMHglaGh4XG4iLAo+ICsJCQkgICAgICAg c3NldS0+c3Vic2xpY2VzX21hc2tba29ial93cmFwcGVyLT5zbGljZV9pbmRleF0pOwo+ICsJfQo+ ICsKPiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIjB4MFxuIik7Cj4gK30KPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgc3lzZnNfb3BzIHNsaWNlX29wcyA9IHsKPiArCS5zaG93ID0gc2hvd19zbGlj ZV9hdHRyLAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBrb2JqX3R5cGUgc2xpY2VfdHlwZSA9 IHsKPiArCS5zeXNmc19vcHMgPSAmc2xpY2Vfb3BzLAo+ICt9Owo+ICsKPiArc3RhdGljIHNzaXpl X3QKPiArc2hvd19zdWJzbGljZV9hdHRyKHN0cnVjdCBrb2JqZWN0ICprb2JqLCBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyLCBjaGFyICpidWYpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9zdWJzbGljZV9r b2JqZWN0ICprb2JqX3dyYXBwZXIgPQo+ICsJCWNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgaW50 ZWxfc3Vic2xpY2Vfa29iamVjdCwga29iaik7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBrb2JqX3dyYXBwZXItPmRldl9wcml2Owo+ICsJY29uc3Qgc3RydWN0IHNzZXVf ZGV2X2luZm8gKnNzZXUgPSAmSU5URUxfSU5GTyhkZXZfcHJpdiktPnNzZXU7Cj4gKwlpbnQgc3Vi c2xpY2Vfc3RyaWRlID0gQUxJR04oc3NldS0+bWF4X2V1c19wZXJfc3Vic2xpY2UsIDgpIC8gODsK PiArCWludCBzbGljZV9zdHJpZGUgPSBzc2V1LT5tYXhfc3Vic2xpY2VzICogc3Vic2xpY2Vfc3Ry aWRlOwo+ICsKPiArCWlmIChhdHRyID09ICZldXNfZW5hYmxlZF9tYXNrX2F0dHIpCj4gKwkJcmV0 dXJuIHNwcmludGYoYnVmLCAiMHglaGh4XG4iLAo+ICsJCQkgICAgICAgc3NldS0+ZXVfbWFza1tr b2JqX3dyYXBwZXItPnNsaWNlX2luZGV4ICogc2xpY2Vfc3RyaWRlICsKPiArCQkJCQkgICAgIGtv Ympfd3JhcHBlci0+c3Vic2xpY2VfaW5kZXggKiBzdWJzbGljZV9zdHJpZGVdKTsKPiArCXJldHVy biBzcHJpbnRmKGJ1ZiwgIjB4MFxuIik7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg c3lzZnNfb3BzIHN1YnNsaWNlX29wcyA9IHsKPiArCS5zaG93ID0gc2hvd19zdWJzbGljZV9hdHRy LAo+ICt9Owo+ICsKPiArc3RhdGljIHN0cnVjdCBrb2JqX3R5cGUgc3Vic2xpY2VfdHlwZSA9IHsK PiArCS5zeXNmc19vcHMgPSAmc3Vic2xpY2Vfb3BzLAo+ICt9Owo+ICsKPiArc3RhdGljIGludCBp OTE1X3NldHVwX3Jjc190b3BvbG9neV9zeXNmcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gKwkJCQkJIHN0cnVjdCBrb2JqZWN0ICplbmdpbmVfa29iaikKPiArewo+ICsJY29u c3Qgc3RydWN0IHNzZXVfZGV2X2luZm8gKnNzZXUgPSAmSU5URUxfSU5GTyhkZXZfcHJpdiktPnNz ZXU7Cj4gKwlpbnQgcmV0LCBzLCBzczsKPiArCj4gKwlyZXQgPSBzeXNmc19jcmVhdGVfZmlsZShl bmdpbmVfa29iaiwgJnNsaWNlc19lbmFibGVkX21hc2tfYXR0cik7Cj4gKwlpZiAocmV0KQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0gc3lzZnNfY3JlYXRlX2ZpbGUoZW5naW5lX2tvYmos ICZtYXhfc2xpY2VzX2F0dHIpOwo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiAr CXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlKGVuZ2luZV9rb2JqLCAmbWF4X3N1YnNsaWNlc19wZXJf c2xpY2VfYXR0cik7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJcmV0ID0g c3lzZnNfY3JlYXRlX2ZpbGUoZW5naW5lX2tvYmosICZtYXhfZXVzX3Blcl9zdWJzbGljZV9hdHRy KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlmb3IgKHMgPSAwOyBzIDwg c3NldS0+bWF4X3NsaWNlczsgcysrKSB7Cj4gKwkJc3RydWN0IGludGVsX3NsaWNlX2tvYmplY3Qg KnNsaWNlX2tvYmogPQo+ICsJCQkmZGV2X3ByaXYtPmd0X3RvcG9sb2d5LnNsaWNlc1tzXS5rb2Jq Owo+ICsKPiArCQlzbGljZV9rb2JqLT5kZXZfcHJpdiA9IGRldl9wcml2Owo+ICsJCXNsaWNlX2tv YmotPnNsaWNlX2luZGV4ID0gczsKPiArCQlyZXQgPSBrb2JqZWN0X2luaXRfYW5kX2FkZCgmc2xp Y2Vfa29iai0+a29iaiwgJnNsaWNlX3R5cGUsCj4gKwkJCQkJICAgZW5naW5lX2tvYmosICJzbGlj ZSVpIiwgcyk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0g c3lzZnNfY3JlYXRlX2ZpbGUoJnNsaWNlX2tvYmotPmtvYmosCj4gKwkJCQkJJnN1YnNsaWNlc19l bmFibGVkX21hc2tfYXR0cik7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4g KwkJZm9yIChzcyA9IDA7IHNzIDwgc3NldS0+bWF4X3N1YnNsaWNlczsgc3MrKykgewo+ICsJCQlz dHJ1Y3QgaW50ZWxfc3Vic2xpY2Vfa29iamVjdCAqc3Vic2xpY2Vfa29iaiA9Cj4gKwkJCQkmZGV2 X3ByaXYtPmd0X3RvcG9sb2d5LnNsaWNlc1tzXS5zdWJzbGljZXNbc3NdLmtvYmo7Cj4gKwo+ICsJ CQlzdWJzbGljZV9rb2JqLT5kZXZfcHJpdiA9IGRldl9wcml2Owo+ICsJCQlzdWJzbGljZV9rb2Jq LT5zbGljZV9pbmRleCA9IHM7Cj4gKwkJCXN1YnNsaWNlX2tvYmotPnN1YnNsaWNlX2luZGV4ID0g c3M7Cj4gKwkJCXJldCA9IGtvYmplY3RfaW5pdF9hbmRfYWRkKCZzdWJzbGljZV9rb2JqLT5rb2Jq LAo+ICsJCQkJCQkgICAmc3Vic2xpY2VfdHlwZSwKPiArCQkJCQkJICAgJnNsaWNlX2tvYmotPmtv YmosCj4gKwkJCQkJCSAgICJzdWJzbGljZSVpIiwgc3MpOwo+ICsJCQlpZiAocmV0KQo+ICsJCQkJ cmV0dXJuIHJldDsKPiArCj4gKwkJCXJldCA9IHN5c2ZzX2NyZWF0ZV9maWxlKCZzdWJzbGljZV9r b2JqLT5rb2JqLAo+ICsJCQkJCQkmZXVzX2VuYWJsZWRfbWFza19hdHRyKTsKPiArCQkJaWYgKHJl dCkKPiArCQkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsJfQo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCBpOTE1X3RlYXJkb3duX3Jjc190b3BvbG9neV9zeXNmcyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gKwkJCQkJICAgICBzdHJ1Y3Qga29iamVj dCAqZW5naW5lX2tvYmopCj4gK3sKPiArCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1 ID0gJklOVEVMX0lORk8oZGV2X3ByaXYpLT5zc2V1Owo+ICsJaW50IHMsIHNzOwo+ICsKPiArCWZv ciAocyA9IDA7IHMgPCBzc2V1LT5tYXhfc2xpY2VzOyBzKyspIHsKPiArCQlzdHJ1Y3QgaW50ZWxf c2xpY2Vfa29iamVjdCAqc2xpY2Vfa29iaiA9Cj4gKwkJCSZkZXZfcHJpdi0+Z3RfdG9wb2xvZ3ku c2xpY2VzW3NdLmtvYmo7Cj4gKwo+ICsJCWZvciAoc3MgPSAwOyBzcyA8IHNzZXUtPm1heF9zdWJz bGljZXM7IHNzKyspIHsKPiArCQkJc3RydWN0IGludGVsX3N1YnNsaWNlX2tvYmplY3QgKnN1YnNs aWNlX2tvYmogPQo+ICsJCQkJJmRldl9wcml2LT5ndF90b3BvbG9neS5zbGljZXNbc10uc3Vic2xp Y2VzW3NzXS5rb2JqOwo+ICsKPiArCQkJc3lzZnNfcmVtb3ZlX2ZpbGUoJnN1YnNsaWNlX2tvYmot PmtvYmosCj4gKwkJCQkJICAmZXVzX2VuYWJsZWRfbWFza19hdHRyKTsKPiArCQl9Cj4gKwo+ICsJ CXN5c2ZzX3JlbW92ZV9maWxlKCZzbGljZV9rb2JqLT5rb2JqLAo+ICsJCQkJICAmc3Vic2xpY2Vz X2VuYWJsZWRfbWFza19hdHRyKTsKPiArCX0KPiArCXN5c2ZzX3JlbW92ZV9maWxlKGVuZ2luZV9r b2JqLCAmc2xpY2VzX2VuYWJsZWRfbWFza19hdHRyKTsKPiArCXN5c2ZzX3JlbW92ZV9maWxlKGVu Z2luZV9rb2JqLCAmbWF4X2V1c19wZXJfc3Vic2xpY2VfYXR0cik7Cj4gKwlzeXNmc19yZW1vdmVf ZmlsZShlbmdpbmVfa29iaiwgJm1heF9zdWJzbGljZXNfcGVyX3NsaWNlX2F0dHIpOwo+ICsJc3lz ZnNfcmVtb3ZlX2ZpbGUoZW5naW5lX2tvYmosICZtYXhfc2xpY2VzX2F0dHIpOwo+ICt9Cj4gKwo+ ICAgc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgZW5naW5lX2lkX2F0dHIgPSB7Cj4gICAJLm5hbWUg PSAiaWQiLAo+ICAgCS5tb2RlID0gMDQ0NCwKPiBAQCAtNTc0LDExICs3NDIsMjAgQEAgc2hvd19l bmdpbmVfYXR0cihzdHJ1Y3Qga29iamVjdCAqa29iaiwgc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwg Y2hhciAqYnVmKQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9Cj4g ICAJCWNvbnRhaW5lcl9vZihrb2JqLCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzLCBpbnN0YW5jZV9r b2JqKTsKPiArCWNvbnN0IHN0cnVjdCBzc2V1X2Rldl9pbmZvICpzc2V1ID0gJklOVEVMX0lORk8o ZW5naW5lLT5pOTE1KS0+c3NldTsKPiAgIAo+ICAgCWlmIChhdHRyID09ICZlbmdpbmVfaWRfYXR0 cikKPiAgIAkJcmV0dXJuIHNwcmludGYoYnVmLCAiJWhodVxuIiwgZW5naW5lLT51YWJpX2lkKTsK PiAgIAlpZiAoYXR0ciA9PSAmZW5naW5lX2NsYXNzX2F0dHIpCj4gICAJCXJldHVybiBzcHJpbnRm KGJ1ZiwgIiVoaHVcbiIsIGVuZ2luZS0+dWFiaV9jbGFzcyk7Cj4gKwlpZiAoYXR0ciA9PSAmc2xp Y2VzX2VuYWJsZWRfbWFza19hdHRyKQo+ICsJCXJldHVybiBzcHJpbnRmKGJ1ZiwgIjB4JWhoeFxu Iiwgc3NldS0+c2xpY2VfbWFzayk7Cj4gKwlpZiAoYXR0ciA9PSAmbWF4X2V1c19wZXJfc3Vic2xp Y2VfYXR0cikKPiArCQlyZXR1cm4gc3ByaW50ZihidWYsICIlaGhkXG4iLCBzc2V1LT5tYXhfZXVz X3Blcl9zdWJzbGljZSk7Cj4gKwlpZiAoYXR0ciA9PSAmbWF4X3N1YnNsaWNlc19wZXJfc2xpY2Vf YXR0cikKPiArCQlyZXR1cm4gc3ByaW50ZihidWYsICIlaGhkXG4iLCBzc2V1LT5tYXhfc3Vic2xp Y2VzKTsKPiArCWlmIChhdHRyID09ICZtYXhfc2xpY2VzX2F0dHIpCj4gKwkJcmV0dXJuIHNwcmlu dGYoYnVmLCAiJWhoZFxuIiwgc3NldS0+bWF4X3NsaWNlcyk7Cj4gICAJcmV0dXJuIHNwcmludGYo YnVmLCAiXG4iKTsKPiAgIH0KPiAgIAo+IEBAIC02NzEsNiArODQ4LDEyIEBAIHN0YXRpYyBpbnQg aTkxNV9zZXR1cF9lbmdpbmVzX3N5c2ZzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgIAkJCQlpZiAocmV0KQo+ICAgCQkJCQlyZXR1cm4gcmV0Owo+ICAgCQkJfQo+ICsJCQlp ZiAoZW5naW5lLT5pZCA9PSBSQ1MpIHsKPiArCQkJCXJldCA9IGk5MTVfc2V0dXBfcmNzX3RvcG9s b2d5X3N5c2ZzKGRldl9wcml2LAo+ICsJCQkJCQkJCSAgICAmZW5naW5lLT5pbnN0YW5jZV9rb2Jq KTsKPiArCQkJCWlmIChyZXQpCj4gKwkJCQkJcmV0dXJuIHJldDsKPiArCQkJfQo+ICAgCQl9Cj4g ICAJfQo+ICAgCj4gQEAgLTY4Myw2ICs4NjYsMTEgQEAgc3RhdGljIHZvaWQgaTkxNV90ZWFyZG93 bl9lbmdpbmVzX3N5c2ZzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAll bnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAgIAo+ICAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUs IGRldl9wcml2LCBpZCkgewo+ICsJCWlmIChpZCA9PSBSQ1MpIHsKPiArCQkJaTkxNV90ZWFyZG93 bl9yY3NfdG9wb2xvZ3lfc3lzZnMoZGV2X3ByaXYsCj4gKwkJCQkJCQkgJmVuZ2luZS0+aW5zdGFu Y2Vfa29iaik7Cj4gKwkJfQo+ICsKPiAgIAkJc3lzZnNfcmVtb3ZlX2ZpbGUoJmVuZ2luZS0+aW5z dGFuY2Vfa29iaiwgJmVuZ2luZV9pZF9hdHRyKTsKPiAgIAkJc3lzZnNfcmVtb3ZlX2ZpbGUoJmVu Z2luZS0+aW5zdGFuY2Vfa29iaiwgJmVuZ2luZV9jbGFzc19hdHRyKTsKPiAgIAkJc3lzZnNfcmVt b3ZlX2ZpbGUoJmVuZ2luZS0+Y2FwYWJpbGl0aWVzX2tvYmosCj4gCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=