From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v2 1/5] drm/i915: Make i915_engine_info pretty printer to standalone Date: Mon, 09 Oct 2017 14:48:30 +0300 Message-ID: <87mv50zgmp.fsf@gaia.fi.intel.com> References: <20171009110301.21705-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 13DBE6E30E for ; Mon, 9 Oct 2017 11:52:41 +0000 (UTC) In-Reply-To: <20171009110301.21705-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gV2UgY2Fu IHVzZSBkcm1fcHJpbnRlciB0byBoaWRlIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHByaW50ayBh bmQKPiBzZXFfcHJpbnRmLCBhbmQgc28gbWFrZSB0aGUgaTkxNV9lbmdpbmVfaW5mbyBwcmV0dHkg cHJpbnRlciBhYmxlIHRvIGJlCj4gY2FsbGVkIGZyb20gZGlmZmVyZW50IGNvbnRleHRzIGFuZCBu b3QganVzdCBkZWJ1Z2ZzLiBGb3IgaW5zdGFuY2UsIEkKPiB3YW50IHRvIHVzZSB0aGUgcHJldHR5 IHByaW50ZXIgdG8gZGVidWcga3NlbGZ0ZXN0cy4KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBNaWthIEt1b3BwYWxhIDxtaWth Lmt1b3BwYWxhQGludGVsLmNvbT4KCldpdGggdGhpcywgdHJpYWdpbmcgYWxsIGtpbmRzIG9mIGVu Z2luZSBwcm9ibGVtcyBpcyBlYXNpZXIKYW5kIHBlcmhhcHMgR0VNX0VOR0lORV9CVUdfT04gb3Ig c2ltaWxhciBtaWdodCBhbHNvIGVtZXJnZS4KClJldmlld2VkLWJ5OiBNaWthIEt1b3BwYWxhIDxt aWthLmt1b3BwYWxhQGxpbnV4LmludGVsLmNvbT4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jICAgICB8IDE0OCArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgfCAxNjAgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5oIHwgICA0ICsKPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNjggaW5zZXJ0aW9ucygr KSwgMTQ0IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBp bmRleCBmNzgxN2M2Njc5NTguLjllYzJiY2Q5YTY5NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gQEAgLTMyOTIsOSArMzI5Miw5IEBAIHN0YXRpYyBpbnQgaTkxNV9kaXNw bGF5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gIHN0YXRpYyBpbnQg aTkxNV9lbmdpbmVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKPiAgewo+ ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9kZV90b19pOTE1KG0tPnBy aXZhdGUpOwo+IC0Jc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvciA9ICZkZXZfcHJpdi0+Z3B1 X2Vycm9yOwo+ICAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICAJZW51bSBpbnRl bF9lbmdpbmVfaWQgaWQ7Cj4gKwlzdHJ1Y3QgZHJtX3ByaW50ZXIgcDsKPiAgCj4gIAlpbnRlbF9y dW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4gIAo+IEBAIC0zMzAzLDE0OSArMzMwMyw5IEBAIHN0 YXRpYyBpbnQgaTkxNV9lbmdpbmVfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNl ZCkKPiAgCXNlcV9wcmludGYobSwgIkdsb2JhbCBhY3RpdmUgcmVxdWVzdHM6ICVkXG4iLAo+ICAJ CSAgIGRldl9wcml2LT5ndC5hY3RpdmVfcmVxdWVzdHMpOwo+ICAKPiAtCWZvcl9lYWNoX2VuZ2lu ZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewo+IC0JCXN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAq YiA9ICZlbmdpbmUtPmJyZWFkY3J1bWJzOwo+IC0JCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcnE7Cj4gLQkJc3RydWN0IHJiX25vZGUgKnJiOwo+IC0JCXU2NCBhZGRyOwo+IC0KPiAtCQlz ZXFfcHJpbnRmKG0sICIlc1xuIiwgZW5naW5lLT5uYW1lKTsKPiAtCQlzZXFfcHJpbnRmKG0sICJc dGN1cnJlbnQgc2Vxbm8gJXgsIGxhc3QgJXgsIGhhbmdjaGVjayAleCBbJWQgbXNdLCBpbmZsaWdo dCAlZFxuIiwKPiAtCQkJICAgaW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpLAo+IC0JCQkg ICBpbnRlbF9lbmdpbmVfbGFzdF9zdWJtaXQoZW5naW5lKSwKPiAtCQkJICAgZW5naW5lLT5oYW5n Y2hlY2suc2Vxbm8sCj4gLQkJCSAgIGppZmZpZXNfdG9fbXNlY3MoamlmZmllcyAtIGVuZ2luZS0+ aGFuZ2NoZWNrLmFjdGlvbl90aW1lc3RhbXApLAo+IC0JCQkgICBlbmdpbmUtPnRpbWVsaW5lLT5p bmZsaWdodF9zZXFub3MpOwo+IC0JCXNlcV9wcmludGYobSwgIlx0UmVzZXQgY291bnQ6ICVkXG4i LAo+IC0JCQkgICBpOTE1X3Jlc2V0X2VuZ2luZV9jb3VudChlcnJvciwgZW5naW5lKSk7Cj4gLQo+ IC0JCXJjdV9yZWFkX2xvY2soKTsKPiAtCj4gLQkJc2VxX3ByaW50ZihtLCAiXHRSZXF1ZXN0czpc biIpOwo+IC0KPiAtCQlycSA9IGxpc3RfZmlyc3RfZW50cnkoJmVuZ2luZS0+dGltZWxpbmUtPnJl cXVlc3RzLAo+IC0JCQkJICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0LCBsaW5rKTsK PiAtCQlpZiAoJnJxLT5saW5rICE9ICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cykKPiAtCQkJ cHJpbnRfcmVxdWVzdChtLCBycSwgIlx0XHRmaXJzdCAgIik7Cj4gLQo+IC0JCXJxID0gbGlzdF9s YXN0X2VudHJ5KCZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywKPiAtCQkJCSAgICAgc3RydWN0 IGRybV9pOTE1X2dlbV9yZXF1ZXN0LCBsaW5rKTsKPiAtCQlpZiAoJnJxLT5saW5rICE9ICZlbmdp bmUtPnRpbWVsaW5lLT5yZXF1ZXN0cykKPiAtCQkJcHJpbnRfcmVxdWVzdChtLCBycSwgIlx0XHRs YXN0ICAgIik7Cj4gLQo+IC0JCXJxID0gaTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChlbmdp bmUpOwo+IC0JCWlmIChycSkgewo+IC0JCQlwcmludF9yZXF1ZXN0KG0sIHJxLCAiXHRcdGFjdGl2 ZSAiKTsKPiAtCQkJc2VxX3ByaW50ZihtLAo+IC0JCQkJICAgIlx0XHRbaGVhZCAlMDR4LCBwb3N0 Zml4ICUwNHgsIHRhaWwgJTA0eCwgYmF0Y2ggMHglMDh4XyUwOHhdXG4iLAo+IC0JCQkJICAgcnEt PmhlYWQsIHJxLT5wb3N0Zml4LCBycS0+dGFpbCwKPiAtCQkJCSAgIHJxLT5iYXRjaCA/IHVwcGVy XzMyX2JpdHMocnEtPmJhdGNoLT5ub2RlLnN0YXJ0KSA6IH4wdSwKPiAtCQkJCSAgIHJxLT5iYXRj aCA/IGxvd2VyXzMyX2JpdHMocnEtPmJhdGNoLT5ub2RlLnN0YXJ0KSA6IH4wdSk7Cj4gLQkJfQo+ IC0KPiAtCQlzZXFfcHJpbnRmKG0sICJcdFJJTkdfU1RBUlQ6IDB4JTA4eCBbMHglMDh4XVxuIiwK PiAtCQkJICAgSTkxNV9SRUFEKFJJTkdfU1RBUlQoZW5naW5lLT5tbWlvX2Jhc2UpKSwKPiAtCQkJ ICAgcnEgPyBpOTE1X2dndHRfb2Zmc2V0KHJxLT5yaW5nLT52bWEpIDogMCk7Cj4gLQkJc2VxX3By aW50ZihtLCAiXHRSSU5HX0hFQUQ6ICAweCUwOHggWzB4JTA4eF1cbiIsCj4gLQkJCSAgIEk5MTVf UkVBRChSSU5HX0hFQUQoZW5naW5lLT5tbWlvX2Jhc2UpKSAmIEhFQURfQUREUiwKPiAtCQkJICAg cnEgPyBycS0+cmluZy0+aGVhZCA6IDApOwo+IC0JCXNlcV9wcmludGYobSwgIlx0UklOR19UQUlM OiAgMHglMDh4IFsweCUwOHhdXG4iLAo+IC0JCQkgICBJOTE1X1JFQUQoUklOR19UQUlMKGVuZ2lu ZS0+bW1pb19iYXNlKSkgJiBUQUlMX0FERFIsCj4gLQkJCSAgIHJxID8gcnEtPnJpbmctPnRhaWwg OiAwKTsKPiAtCQlzZXFfcHJpbnRmKG0sICJcdFJJTkdfQ1RMOiAgIDB4JTA4eCBbJXNdXG4iLAo+ IC0JCQkgICBJOTE1X1JFQUQoUklOR19DVEwoZW5naW5lLT5tbWlvX2Jhc2UpKSwKPiAtCQkJICAg STkxNV9SRUFEKFJJTkdfQ1RMKGVuZ2luZS0+bW1pb19iYXNlKSkgJiAoUklOR19XQUlUIHwgUklO R19XQUlUX1NFTUFQSE9SRSkgPyAid2FpdGluZyIgOiAiIik7Cj4gLQo+IC0JCXJjdV9yZWFkX3Vu bG9jaygpOwo+IC0KPiAtCQlhZGRyID0gaW50ZWxfZW5naW5lX2dldF9hY3RpdmVfaGVhZChlbmdp bmUpOwo+IC0JCXNlcV9wcmludGYobSwgIlx0QUNUSEQ6ICAweCUwOHhfJTA4eFxuIiwKPiAtCQkJ ICAgdXBwZXJfMzJfYml0cyhhZGRyKSwgbG93ZXJfMzJfYml0cyhhZGRyKSk7Cj4gLQkJYWRkciA9 IGludGVsX2VuZ2luZV9nZXRfbGFzdF9iYXRjaF9oZWFkKGVuZ2luZSk7Cj4gLQkJc2VxX3ByaW50 ZihtLCAiXHRCQkFERFI6IDB4JTA4eF8lMDh4XG4iLAo+IC0JCQkgICB1cHBlcl8zMl9iaXRzKGFk ZHIpLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTsKPiAtCj4gLQkJaWYgKGk5MTVfbW9kcGFyYW1zLmVu YWJsZV9leGVjbGlzdHMpIHsKPiAtCQkJY29uc3QgdTMyICpod3MgPSAmZW5naW5lLT5zdGF0dXNf cGFnZS5wYWdlX2FkZHJbSTkxNV9IV1NfQ1NCX0JVRjBfSU5ERVhdOwo+IC0JCQlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2V4ZWNsaXN0cyAqIGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0 czsKPiAtCQkJdTMyIHB0ciwgcmVhZCwgd3JpdGU7Cj4gLQkJCXVuc2lnbmVkIGludCBpZHg7Cj4g LQo+IC0JCQlzZXFfcHJpbnRmKG0sICJcdEV4ZWNsaXN0IHN0YXR1czogMHglMDh4ICUwOHhcbiIs Cj4gLQkJCQkgICBJOTE1X1JFQUQoUklOR19FWEVDTElTVF9TVEFUVVNfTE8oZW5naW5lKSksCj4g LQkJCQkgICBJOTE1X1JFQUQoUklOR19FWEVDTElTVF9TVEFUVVNfSEkoZW5naW5lKSkpOwo+IC0K PiAtCQkJcHRyID0gSTkxNV9SRUFEKFJJTkdfQ09OVEVYVF9TVEFUVVNfUFRSKGVuZ2luZSkpOwo+ IC0JCQlyZWFkID0gR0VOOF9DU0JfUkVBRF9QVFIocHRyKTsKPiAtCQkJd3JpdGUgPSBHRU44X0NT Ql9XUklURV9QVFIocHRyKTsKPiAtCQkJc2VxX3ByaW50ZihtLCAiXHRFeGVjbGlzdCBDU0IgcmVh ZCAlZCBbJWQgY2FjaGVkXSwgd3JpdGUgJWQgWyVkIGZyb20gaHdzXSwgaW50ZXJydXB0IHBvc3Rl ZD8gJXNcbiIsCj4gLQkJCQkgICByZWFkLCBleGVjbGlzdHMtPmNzYl9oZWFkLAo+IC0JCQkJICAg d3JpdGUsCj4gLQkJCQkgICBpbnRlbF9yZWFkX3N0YXR1c19wYWdlKGVuZ2luZSwgaW50ZWxfaHdz X2NzYl93cml0ZV9pbmRleChlbmdpbmUtPmk5MTUpKSwKPiAtCQkJCSAgIHllc25vKHRlc3RfYml0 KEVOR0lORV9JUlFfRVhFQ0xJU1QsCj4gLQkJCQkJCSAgJmVuZ2luZS0+aXJxX3Bvc3RlZCkpKTsK PiAtCQkJaWYgKHJlYWQgPj0gR0VOOF9DU0JfRU5UUklFUykKPiAtCQkJCXJlYWQgPSAwOwo+IC0J CQlpZiAod3JpdGUgPj0gR0VOOF9DU0JfRU5UUklFUykKPiAtCQkJCXdyaXRlID0gMDsKPiAtCQkJ aWYgKHJlYWQgPiB3cml0ZSkKPiAtCQkJCXdyaXRlICs9IEdFTjhfQ1NCX0VOVFJJRVM7Cj4gLQkJ CXdoaWxlIChyZWFkIDwgd3JpdGUpIHsKPiAtCQkJCWlkeCA9ICsrcmVhZCAlIEdFTjhfQ1NCX0VO VFJJRVM7Cj4gLQkJCQlzZXFfcHJpbnRmKG0sICJcdEV4ZWNsaXN0IENTQlslZF06IDB4JTA4eCBb MHglMDh4IGluIGh3c3BdLCBjb250ZXh0OiAlZCBbJWQgaW4gaHdzcF1cbiIsCj4gLQkJCQkJICAg aWR4LAo+IC0JCQkJCSAgIEk5MTVfUkVBRChSSU5HX0NPTlRFWFRfU1RBVFVTX0JVRl9MTyhlbmdp bmUsIGlkeCkpLAo+IC0JCQkJCSAgIGh3c1tpZHggKiAyXSwKPiAtCQkJCQkgICBJOTE1X1JFQUQo UklOR19DT05URVhUX1NUQVRVU19CVUZfSEkoZW5naW5lLCBpZHgpKSwKPiAtCQkJCQkgICBod3Nb aWR4ICogMiArIDFdKTsKPiAtCQkJfQo+IC0KPiAtCQkJcmN1X3JlYWRfbG9jaygpOwo+IC0JCQlm b3IgKGlkeCA9IDA7IGlkeCA8IGV4ZWNsaXN0c19udW1fcG9ydHMoZXhlY2xpc3RzKTsgaWR4Kysp IHsKPiAtCQkJCXVuc2lnbmVkIGludCBjb3VudDsKPiAtCj4gLQkJCQlycSA9IHBvcnRfdW5wYWNr KCZleGVjbGlzdHMtPnBvcnRbaWR4XSwgJmNvdW50KTsKPiAtCQkJCWlmIChycSkgewo+IC0JCQkJ CXNlcV9wcmludGYobSwgIlx0XHRFTFNQWyVkXSBjb3VudD0lZCwgIiwKPiAtCQkJCQkJICAgaWR4 LCBjb3VudCk7Cj4gLQkJCQkJcHJpbnRfcmVxdWVzdChtLCBycSwgInJxOiAiKTsKPiAtCQkJCX0g ZWxzZSB7Cj4gLQkJCQkJc2VxX3ByaW50ZihtLCAiXHRcdEVMU1BbJWRdIGlkbGVcbiIsCj4gLQkJ CQkJCSAgIGlkeCk7Cj4gLQkJCQl9Cj4gLQkJCX0KPiAtCQkJcmN1X3JlYWRfdW5sb2NrKCk7Cj4g LQo+IC0JCQlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPiAtCQkJZm9y IChyYiA9IGV4ZWNsaXN0cy0+Zmlyc3Q7IHJiOyByYiA9IHJiX25leHQocmIpKSB7Cj4gLQkJCQlz dHJ1Y3QgaTkxNV9wcmlvbGlzdCAqcCA9Cj4gLQkJCQkJcmJfZW50cnkocmIsIHR5cGVvZigqcCks IG5vZGUpOwo+IC0KPiAtCQkJCWxpc3RfZm9yX2VhY2hfZW50cnkocnEsICZwLT5yZXF1ZXN0cywK PiAtCQkJCQkJICAgIHByaW90cmVlLmxpbmspCj4gLQkJCQkJcHJpbnRfcmVxdWVzdChtLCBycSwg Ilx0XHRRICIpOwo+IC0JCQl9Cj4gLQkJCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1lbGlu ZS0+bG9jayk7Cj4gLQkJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gNikgewo+IC0J CQlzZXFfcHJpbnRmKG0sICJcdFBQX0RJUl9CQVNFOiAweCUwOHhcbiIsCj4gLQkJCQkgICBJOTE1 X1JFQUQoUklOR19QUF9ESVJfQkFTRShlbmdpbmUpKSk7Cj4gLQkJCXNlcV9wcmludGYobSwgIlx0 UFBfRElSX0JBU0VfUkVBRDogMHglMDh4XG4iLAo+IC0JCQkJICAgSTkxNV9SRUFEKFJJTkdfUFBf RElSX0JBU0VfUkVBRChlbmdpbmUpKSk7Cj4gLQkJCXNlcV9wcmludGYobSwgIlx0UFBfRElSX0RD TFY6IDB4JTA4eFxuIiwKPiAtCQkJCSAgIEk5MTVfUkVBRChSSU5HX1BQX0RJUl9EQ0xWKGVuZ2lu ZSkpKTsKPiAtCQl9Cj4gLQo+IC0JCXNwaW5fbG9ja19pcnEoJmItPnJiX2xvY2spOwo+IC0JCWZv ciAocmIgPSByYl9maXJzdCgmYi0+d2FpdGVycyk7IHJiOyByYiA9IHJiX25leHQocmIpKSB7Cj4g LQkJCXN0cnVjdCBpbnRlbF93YWl0ICp3ID0gcmJfZW50cnkocmIsIHR5cGVvZigqdyksIG5vZGUp Owo+IC0KPiAtCQkJc2VxX3ByaW50ZihtLCAiXHQlcyBbJWRdIHdhaXRpbmcgZm9yICV4XG4iLAo+ IC0JCQkJICAgdy0+dHNrLT5jb21tLCB3LT50c2stPnBpZCwgdy0+c2Vxbm8pOwo+IC0JCX0KPiAt CQlzcGluX3VubG9ja19pcnEoJmItPnJiX2xvY2spOwo+IC0KPiAtCQlzZXFfcHV0cyhtLCAiXG4i KTsKPiAtCX0KPiArCXAgPSBkcm1fc2VxX2ZpbGVfcHJpbnRlcihtKTsKPiArCWZvcl9lYWNoX2Vu Z2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkKPiArCQlpbnRlbF9lbmdpbmVfZHVtcChlbmdpbmUs ICZwKTsKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gaW5kZXggODA3YTdhYWZjMDg5Li5hNTli MmEzMGZmNWEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5l X2NzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+IEBA IC0yMiw2ICsyMiw4IEBACj4gICAqCj4gICAqLwo+ICAKPiArI2luY2x1ZGUgPGRybS9kcm1fcHJp bnQuaD4KPiArCj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfcmlu Z2J1ZmZlci5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfbHJjLmgiCj4gQEAgLTE2MTYsNiArMTYxOCwx NjQgQEAgYm9vbCBpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKPiAgCX0KPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgcHJpbnRfcmVxdWVz dChzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0sCj4gKwkJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpycSwKPiArCQkJICBjb25zdCBjaGFyICpwcmVmaXgpCj4gK3sKPiArCWRybV9wcmludGYo bSwgIiVzJXggWyV4OiV4XSBwcmlvPSVkIEAgJWRtczogJXNcbiIsIHByZWZpeCwKPiArCQkgICBy cS0+Z2xvYmFsX3NlcW5vLCBycS0+Y3R4LT5od19pZCwgcnEtPmZlbmNlLnNlcW5vLAo+ICsJCSAg IHJxLT5wcmlvdHJlZS5wcmlvcml0eSwKPiArCQkgICBqaWZmaWVzX3RvX21zZWNzKGppZmZpZXMg LSBycS0+ZW1pdHRlZF9qaWZmaWVzKSwKPiArCQkgICBycS0+dGltZWxpbmUtPmNvbW1vbi0+bmFt ZSk7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfZW5naW5lX2R1bXAoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0pCj4gK3sKPiArCXN0cnVjdCBpbnRl bF9icmVhZGNydW1icyAqYiA9ICZlbmdpbmUtPmJyZWFkY3J1bWJzOwo+ICsJc3RydWN0IGk5MTVf Z3B1X2Vycm9yICplcnJvciA9ICZlbmdpbmUtPmk5MTUtPmdwdV9lcnJvcjsKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGVuZ2luZS0+aTkxNTsKPiArCXN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcnE7Cj4gKwlzdHJ1Y3QgcmJfbm9kZSAqcmI7Cj4gKwl1NjQgYWRk cjsKPiArCj4gKwlkcm1fcHJpbnRmKG0sICIlc1xuIiwgZW5naW5lLT5uYW1lKTsKPiArCWRybV9w cmludGYobSwgIlx0Y3VycmVudCBzZXFubyAleCwgbGFzdCAleCwgaGFuZ2NoZWNrICV4IFslZCBt c10sIGluZmxpZ2h0ICVkXG4iLAo+ICsJCSAgIGludGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5l KSwKPiArCQkgICBpbnRlbF9lbmdpbmVfbGFzdF9zdWJtaXQoZW5naW5lKSwKPiArCQkgICBlbmdp bmUtPmhhbmdjaGVjay5zZXFubywKPiArCQkgICBqaWZmaWVzX3RvX21zZWNzKGppZmZpZXMgLSBl bmdpbmUtPmhhbmdjaGVjay5hY3Rpb25fdGltZXN0YW1wKSwKPiArCQkgICBlbmdpbmUtPnRpbWVs aW5lLT5pbmZsaWdodF9zZXFub3MpOwo+ICsJZHJtX3ByaW50ZihtLCAiXHRSZXNldCBjb3VudDog JWRcbiIsCj4gKwkJICAgaTkxNV9yZXNldF9lbmdpbmVfY291bnQoZXJyb3IsIGVuZ2luZSkpOwo+ ICsKPiArCXJjdV9yZWFkX2xvY2soKTsKPiArCj4gKwlkcm1fcHJpbnRmKG0sICJcdFJlcXVlc3Rz OlxuIik7Cj4gKwo+ICsJcnEgPSBsaXN0X2ZpcnN0X2VudHJ5KCZlbmdpbmUtPnRpbWVsaW5lLT5y ZXF1ZXN0cywKPiArCQkJICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0LCBsaW5rKTsK PiArCWlmICgmcnEtPmxpbmsgIT0gJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzKQo+ICsJCXBy aW50X3JlcXVlc3QobSwgcnEsICJcdFx0Zmlyc3QgICIpOwo+ICsKPiArCXJxID0gbGlzdF9sYXN0 X2VudHJ5KCZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cywKPiArCQkJICAgICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QsIGxpbmspOwo+ICsJaWYgKCZycS0+bGluayAhPSAmZW5naW5lLT50 aW1lbGluZS0+cmVxdWVzdHMpCj4gKwkJcHJpbnRfcmVxdWVzdChtLCBycSwgIlx0XHRsYXN0ICAg Iik7Cj4gKwo+ICsJcnEgPSBpOTE1X2dlbV9maW5kX2FjdGl2ZV9yZXF1ZXN0KGVuZ2luZSk7Cj4g KwlpZiAocnEpIHsKPiArCQlwcmludF9yZXF1ZXN0KG0sIHJxLCAiXHRcdGFjdGl2ZSAiKTsKPiAr CQlkcm1fcHJpbnRmKG0sCj4gKwkJCSAgICJcdFx0W2hlYWQgJTA0eCwgcG9zdGZpeCAlMDR4LCB0 YWlsICUwNHgsIGJhdGNoIDB4JTA4eF8lMDh4XVxuIiwKPiArCQkJICAgcnEtPmhlYWQsIHJxLT5w b3N0Zml4LCBycS0+dGFpbCwKPiArCQkJICAgcnEtPmJhdGNoID8gdXBwZXJfMzJfYml0cyhycS0+ YmF0Y2gtPm5vZGUuc3RhcnQpIDogfjB1LAo+ICsJCQkgICBycS0+YmF0Y2ggPyBsb3dlcl8zMl9i aXRzKHJxLT5iYXRjaC0+bm9kZS5zdGFydCkgOiB+MHUpOwo+ICsJfQo+ICsKPiArCWRybV9wcmlu dGYobSwgIlx0UklOR19TVEFSVDogMHglMDh4IFsweCUwOHhdXG4iLAo+ICsJCSAgIEk5MTVfUkVB RChSSU5HX1NUQVJUKGVuZ2luZS0+bW1pb19iYXNlKSksCj4gKwkJICAgcnEgPyBpOTE1X2dndHRf b2Zmc2V0KHJxLT5yaW5nLT52bWEpIDogMCk7Cj4gKwlkcm1fcHJpbnRmKG0sICJcdFJJTkdfSEVB RDogIDB4JTA4eCBbMHglMDh4XVxuIiwKPiArCQkgICBJOTE1X1JFQUQoUklOR19IRUFEKGVuZ2lu ZS0+bW1pb19iYXNlKSkgJiBIRUFEX0FERFIsCj4gKwkJICAgcnEgPyBycS0+cmluZy0+aGVhZCA6 IDApOwo+ICsJZHJtX3ByaW50ZihtLCAiXHRSSU5HX1RBSUw6ICAweCUwOHggWzB4JTA4eF1cbiIs Cj4gKwkJICAgSTkxNV9SRUFEKFJJTkdfVEFJTChlbmdpbmUtPm1taW9fYmFzZSkpICYgVEFJTF9B RERSLAo+ICsJCSAgIHJxID8gcnEtPnJpbmctPnRhaWwgOiAwKTsKPiArCWRybV9wcmludGYobSwg Ilx0UklOR19DVEw6ICAgMHglMDh4IFslc11cbiIsCj4gKwkJICAgSTkxNV9SRUFEKFJJTkdfQ1RM KGVuZ2luZS0+bW1pb19iYXNlKSksCj4gKwkJICAgSTkxNV9SRUFEKFJJTkdfQ1RMKGVuZ2luZS0+ bW1pb19iYXNlKSkgJiAoUklOR19XQUlUIHwgUklOR19XQUlUX1NFTUFQSE9SRSkgPyAid2FpdGlu ZyIgOiAiIik7Cj4gKwo+ICsJcmN1X3JlYWRfdW5sb2NrKCk7Cj4gKwo+ICsJYWRkciA9IGludGVs X2VuZ2luZV9nZXRfYWN0aXZlX2hlYWQoZW5naW5lKTsKPiArCWRybV9wcmludGYobSwgIlx0QUNU SEQ6ICAweCUwOHhfJTA4eFxuIiwKPiArCQkgICB1cHBlcl8zMl9iaXRzKGFkZHIpLCBsb3dlcl8z Ml9iaXRzKGFkZHIpKTsKPiArCWFkZHIgPSBpbnRlbF9lbmdpbmVfZ2V0X2xhc3RfYmF0Y2hfaGVh ZChlbmdpbmUpOwo+ICsJZHJtX3ByaW50ZihtLCAiXHRCQkFERFI6IDB4JTA4eF8lMDh4XG4iLAo+ ICsJCSAgIHVwcGVyXzMyX2JpdHMoYWRkciksIGxvd2VyXzMyX2JpdHMoYWRkcikpOwo+ICsKPiAr CWlmIChpOTE1X21vZHBhcmFtcy5lbmFibGVfZXhlY2xpc3RzKSB7Cj4gKwkJY29uc3QgdTMyICpo d3MgPSAmZW5naW5lLT5zdGF0dXNfcGFnZS5wYWdlX2FkZHJbSTkxNV9IV1NfQ1NCX0JVRjBfSU5E RVhdOwo+ICsJCXN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3Rz ID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwo+ICsJCXUzMiBwdHIsIHJlYWQsIHdyaXRlOwo+ICsJCXVu c2lnbmVkIGludCBpZHg7Cj4gKwo+ICsJCWRybV9wcmludGYobSwgIlx0RXhlY2xpc3Qgc3RhdHVz OiAweCUwOHggJTA4eFxuIiwKPiArCQkJICAgSTkxNV9SRUFEKFJJTkdfRVhFQ0xJU1RfU1RBVFVT X0xPKGVuZ2luZSkpLAo+ICsJCQkgICBJOTE1X1JFQUQoUklOR19FWEVDTElTVF9TVEFUVVNfSEko ZW5naW5lKSkpOwo+ICsKPiArCQlwdHIgPSBJOTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19Q VFIoZW5naW5lKSk7Cj4gKwkJcmVhZCA9IEdFTjhfQ1NCX1JFQURfUFRSKHB0cik7Cj4gKwkJd3Jp dGUgPSBHRU44X0NTQl9XUklURV9QVFIocHRyKTsKPiArCQlkcm1fcHJpbnRmKG0sICJcdEV4ZWNs aXN0IENTQiByZWFkICVkIFslZCBjYWNoZWRdLCB3cml0ZSAlZCBbJWQgZnJvbSBod3NdLCBpbnRl cnJ1cHQgcG9zdGVkPyAlc1xuIiwKPiArCQkJICAgcmVhZCwgZXhlY2xpc3RzLT5jc2JfaGVhZCwK PiArCQkJICAgd3JpdGUsCj4gKwkJCSAgIGludGVsX3JlYWRfc3RhdHVzX3BhZ2UoZW5naW5lLCBp bnRlbF9od3NfY3NiX3dyaXRlX2luZGV4KGVuZ2luZS0+aTkxNSkpLAo+ICsJCQkgICB5ZXNubyh0 ZXN0X2JpdChFTkdJTkVfSVJRX0VYRUNMSVNULAo+ICsJCQkJCSAgJmVuZ2luZS0+aXJxX3Bvc3Rl ZCkpKTsKPiArCQlpZiAocmVhZCA+PSBHRU44X0NTQl9FTlRSSUVTKQo+ICsJCQlyZWFkID0gMDsK PiArCQlpZiAod3JpdGUgPj0gR0VOOF9DU0JfRU5UUklFUykKPiArCQkJd3JpdGUgPSAwOwo+ICsJ CWlmIChyZWFkID4gd3JpdGUpCj4gKwkJCXdyaXRlICs9IEdFTjhfQ1NCX0VOVFJJRVM7Cj4gKwkJ d2hpbGUgKHJlYWQgPCB3cml0ZSkgewo+ICsJCQlpZHggPSArK3JlYWQgJSBHRU44X0NTQl9FTlRS SUVTOwo+ICsJCQlkcm1fcHJpbnRmKG0sICJcdEV4ZWNsaXN0IENTQlslZF06IDB4JTA4eCBbMHgl MDh4IGluIGh3c3BdLCBjb250ZXh0OiAlZCBbJWQgaW4gaHdzcF1cbiIsCj4gKwkJCQkgICBpZHgs Cj4gKwkJCQkgICBJOTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19CVUZfTE8oZW5naW5lLCBp ZHgpKSwKPiArCQkJCSAgIGh3c1tpZHggKiAyXSwKPiArCQkJCSAgIEk5MTVfUkVBRChSSU5HX0NP TlRFWFRfU1RBVFVTX0JVRl9ISShlbmdpbmUsIGlkeCkpLAo+ICsJCQkJICAgaHdzW2lkeCAqIDIg KyAxXSk7Cj4gKwkJfQo+ICsKPiArCQlyY3VfcmVhZF9sb2NrKCk7Cj4gKwkJZm9yIChpZHggPSAw OyBpZHggPCBleGVjbGlzdHNfbnVtX3BvcnRzKGV4ZWNsaXN0cyk7IGlkeCsrKSB7Cj4gKwkJCXVu c2lnbmVkIGludCBjb3VudDsKPiArCj4gKwkJCXJxID0gcG9ydF91bnBhY2soJmV4ZWNsaXN0cy0+ cG9ydFtpZHhdLCAmY291bnQpOwo+ICsJCQlpZiAocnEpIHsKPiArCQkJCWRybV9wcmludGYobSwg Ilx0XHRFTFNQWyVkXSBjb3VudD0lZCwgIiwKPiArCQkJCQkgICBpZHgsIGNvdW50KTsKPiArCQkJ CXByaW50X3JlcXVlc3QobSwgcnEsICJycTogIik7Cj4gKwkJCX0gZWxzZSB7Cj4gKwkJCQlkcm1f cHJpbnRmKG0sICJcdFx0RUxTUFslZF0gaWRsZVxuIiwKPiArCQkJCQkgICBpZHgpOwo+ICsJCQl9 Cj4gKwkJfQo+ICsJCXJjdV9yZWFkX3VubG9jaygpOwo+ICsKPiArCQlzcGluX2xvY2tfaXJxKCZl bmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKPiArCQlmb3IgKHJiID0gZXhlY2xpc3RzLT5maXJzdDsg cmI7IHJiID0gcmJfbmV4dChyYikpIHsKPiArCQkJc3RydWN0IGk5MTVfcHJpb2xpc3QgKnAgPQo+ ICsJCQkJcmJfZW50cnkocmIsIHR5cGVvZigqcCksIG5vZGUpOwo+ICsKPiArCQkJbGlzdF9mb3Jf ZWFjaF9lbnRyeShycSwgJnAtPnJlcXVlc3RzLAo+ICsJCQkJCSAgICBwcmlvdHJlZS5saW5rKQo+ ICsJCQkJcHJpbnRfcmVxdWVzdChtLCBycSwgIlx0XHRRICIpOwo+ICsJCX0KPiArCQlzcGluX3Vu bG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwo+ICsJfSBlbHNlIGlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID4gNikgewo+ICsJCWRybV9wcmludGYobSwgIlx0UFBfRElSX0JBU0U6IDB4 JTA4eFxuIiwKPiArCQkJICAgSTkxNV9SRUFEKFJJTkdfUFBfRElSX0JBU0UoZW5naW5lKSkpOwo+ ICsJCWRybV9wcmludGYobSwgIlx0UFBfRElSX0JBU0VfUkVBRDogMHglMDh4XG4iLAo+ICsJCQkg ICBJOTE1X1JFQUQoUklOR19QUF9ESVJfQkFTRV9SRUFEKGVuZ2luZSkpKTsKPiArCQlkcm1fcHJp bnRmKG0sICJcdFBQX0RJUl9EQ0xWOiAweCUwOHhcbiIsCj4gKwkJCSAgIEk5MTVfUkVBRChSSU5H X1BQX0RJUl9EQ0xWKGVuZ2luZSkpKTsKPiArCX0KPiArCj4gKwlzcGluX2xvY2tfaXJxKCZiLT5y Yl9sb2NrKTsKPiArCWZvciAocmIgPSByYl9maXJzdCgmYi0+d2FpdGVycyk7IHJiOyByYiA9IHJi X25leHQocmIpKSB7Cj4gKwkJc3RydWN0IGludGVsX3dhaXQgKncgPSByYl9lbnRyeShyYiwgdHlw ZW9mKCp3KSwgbm9kZSk7Cj4gKwo+ICsJCWRybV9wcmludGYobSwgIlx0JXMgWyVkXSB3YWl0aW5n IGZvciAleFxuIiwKPiArCQkJICAgdy0+dHNrLT5jb21tLCB3LT50c2stPnBpZCwgdy0+c2Vxbm8p Owo+ICsJfQo+ICsJc3Bpbl91bmxvY2tfaXJxKCZiLT5yYl9sb2NrKTsKPiArCj4gKwlkcm1fcHJp bnRmKG0sICJcbiIpOwo+ICt9Cj4gKwo+ICAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVf U0VMRlRFU1QpCj4gICNpbmNsdWRlICJzZWxmdGVzdHMvbW9ja19lbmdpbmUuYyIKPiAgI2VuZGlm Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDBmZWRkYTE3 NDg4Yy4uMTcxODZmMDY3NDA4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuaAo+IEBAIC03LDYgKzcsOCBAQAo+ICAjaW5jbHVkZSAiaTkxNV9nZW1fdGltZWxpbmUu aCIKPiAgI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKPiAgCj4gK3N0cnVjdCBkcm1fcHJpbnRl cjsKPiArCj4gICNkZWZpbmUgSTkxNV9DTURfSEFTSF9PUkRFUiA5Cj4gIAo+ICAvKiBFYXJseSBn ZW4yIGRldmljZXMgaGF2ZSBhIGNhY2hlbGluZSBvZiBqdXN0IDMyIGJ5dGVzLCB1c2luZyA2NCBp cyBvdmVya2lsbCwKPiBAQCAtODM5LDQgKzg0MSw2IEBAIHZvaWQgaW50ZWxfZW5naW5lc19yZXNl dF9kZWZhdWx0X3N1Ym1pc3Npb24oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICAK PiAgYm9vbCBpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSk7Cj4gIAo+ICt2b2lkIGludGVsX2VuZ2luZV9kdW1wKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwgc3RydWN0IGRybV9wcmludGVyICpwKTsKPiArCj4gICNlbmRpZiAv KiBfSU5URUxfUklOR0JVRkZFUl9IXyAqLwo+IC0tIAo+IDIuMTQuMgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK