From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 1/2] drm/i915: Make i915_engine_info pretty printer to standalone Date: Fri, 6 Oct 2017 13:56:07 +0100 Message-ID: <20171006125608.8387-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 fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 26D536E960 for ; Fri, 6 Oct 2017 12:56:23 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org V2UgY2FuIHVzZSBkcm1fcHJpbnRlciB0byBoaWRlIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHBy aW50ayBhbmQKc2VxX3ByaW50ZiwgYW5kIHNvIG1ha2UgdGhlIGk5MTVfZW5naW5lX2luZm8gcHJl dHR5IHByaW50ZXIgYWJsZSB0byBiZQpjYWxsZWQgZnJvbSBkaWZmZXJlbnQgY29udGV4dHMgYW5k IG5vdCBqdXN0IGRlYnVnZnMuIEZvciBpbnN0YW5jZSwgSQp3YW50IHRvIHVzZSB0aGUgcHJldHR5 IHByaW50ZXIgdG8gZGVidWcga3NlbGZ0ZXN0cy4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9w cGFsYUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMg ICAgIHwgMTQ4ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9lbmdpbmVfY3MuYyAgfCAxNjAgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8ICAgNCArCiAz IGZpbGVzIGNoYW5nZWQsIDE2OCBpbnNlcnRpb25zKCspLCAxNDQgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCA4NGFiNzdjMDJkM2UuLjhiMDliOTRiN2Qy ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTMyMzksOSArMzIzOSw5IEBA IHN0YXRpYyBpbnQgaTkxNV9kaXNwbGF5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1 bnVzZWQpCiBzdGF0aWMgaW50IGk5MTVfZW5naW5lX2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2 b2lkICp1bnVzZWQpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gbm9k ZV90b19pOTE1KG0tPnByaXZhdGUpOwotCXN0cnVjdCBpOTE1X2dwdV9lcnJvciAqZXJyb3IgPSAm ZGV2X3ByaXYtPmdwdV9lcnJvcjsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAJ ZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisJc3RydWN0IGRybV9wcmludGVyIHA7CiAKIAlpbnRl bF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CiAKQEAgLTMyNTAsMTQ5ICszMjUwLDkgQEAgc3Rh dGljIGludCBpOTE1X2VuZ2luZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2Vk KQogCXNlcV9wcmludGYobSwgIkdsb2JhbCBhY3RpdmUgcmVxdWVzdHM6ICVkXG4iLAogCQkgICBk ZXZfcHJpdi0+Z3QuYWN0aXZlX3JlcXVlc3RzKTsKIAotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUs IGRldl9wcml2LCBpZCkgewotCQlzdHJ1Y3QgaW50ZWxfYnJlYWRjcnVtYnMgKmIgPSAmZW5naW5l LT5icmVhZGNydW1iczsKLQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTsKLQkJc3Ry dWN0IHJiX25vZGUgKnJiOwotCQl1NjQgYWRkcjsKLQotCQlzZXFfcHJpbnRmKG0sICIlc1xuIiwg ZW5naW5lLT5uYW1lKTsKLQkJc2VxX3ByaW50ZihtLCAiXHRjdXJyZW50IHNlcW5vICV4LCBsYXN0 ICV4LCBoYW5nY2hlY2sgJXggWyVkIG1zXSwgaW5mbGlnaHQgJWRcbiIsCi0JCQkgICBpbnRlbF9l bmdpbmVfZ2V0X3NlcW5vKGVuZ2luZSksCi0JCQkgICBpbnRlbF9lbmdpbmVfbGFzdF9zdWJtaXQo ZW5naW5lKSwKLQkJCSAgIGVuZ2luZS0+aGFuZ2NoZWNrLnNlcW5vLAotCQkJICAgamlmZmllc190 b19tc2VjcyhqaWZmaWVzIC0gZW5naW5lLT5oYW5nY2hlY2suYWN0aW9uX3RpbWVzdGFtcCksCi0J CQkgICBlbmdpbmUtPnRpbWVsaW5lLT5pbmZsaWdodF9zZXFub3MpOwotCQlzZXFfcHJpbnRmKG0s ICJcdFJlc2V0IGNvdW50OiAlZFxuIiwKLQkJCSAgIGk5MTVfcmVzZXRfZW5naW5lX2NvdW50KGVy cm9yLCBlbmdpbmUpKTsKLQotCQlyY3VfcmVhZF9sb2NrKCk7Ci0KLQkJc2VxX3ByaW50ZihtLCAi XHRSZXF1ZXN0czpcbiIpOwotCi0JCXJxID0gbGlzdF9maXJzdF9lbnRyeSgmZW5naW5lLT50aW1l bGluZS0+cmVxdWVzdHMsCi0JCQkJICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0LCBs aW5rKTsKLQkJaWYgKCZycS0+bGluayAhPSAmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMpCi0J CQlwcmludF9yZXF1ZXN0KG0sIHJxLCAiXHRcdGZpcnN0ICAiKTsKLQotCQlycSA9IGxpc3RfbGFz dF9lbnRyeSgmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMsCi0JCQkJICAgICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QsIGxpbmspOwotCQlpZiAoJnJxLT5saW5rICE9ICZlbmdpbmUtPnRp bWVsaW5lLT5yZXF1ZXN0cykKLQkJCXByaW50X3JlcXVlc3QobSwgcnEsICJcdFx0bGFzdCAgICIp OwotCi0JCXJxID0gaTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChlbmdpbmUpOwotCQlpZiAo cnEpIHsKLQkJCXByaW50X3JlcXVlc3QobSwgcnEsICJcdFx0YWN0aXZlICIpOwotCQkJc2VxX3By aW50ZihtLAotCQkJCSAgICJcdFx0W2hlYWQgJTA0eCwgcG9zdGZpeCAlMDR4LCB0YWlsICUwNHgs IGJhdGNoIDB4JTA4eF8lMDh4XVxuIiwKLQkJCQkgICBycS0+aGVhZCwgcnEtPnBvc3RmaXgsIHJx LT50YWlsLAotCQkJCSAgIHJxLT5iYXRjaCA/IHVwcGVyXzMyX2JpdHMocnEtPmJhdGNoLT5ub2Rl LnN0YXJ0KSA6IH4wdSwKLQkJCQkgICBycS0+YmF0Y2ggPyBsb3dlcl8zMl9iaXRzKHJxLT5iYXRj aC0+bm9kZS5zdGFydCkgOiB+MHUpOwotCQl9Ci0KLQkJc2VxX3ByaW50ZihtLCAiXHRSSU5HX1NU QVJUOiAweCUwOHggWzB4JTA4eF1cbiIsCi0JCQkgICBJOTE1X1JFQUQoUklOR19TVEFSVChlbmdp bmUtPm1taW9fYmFzZSkpLAotCQkJICAgcnEgPyBpOTE1X2dndHRfb2Zmc2V0KHJxLT5yaW5nLT52 bWEpIDogMCk7Ci0JCXNlcV9wcmludGYobSwgIlx0UklOR19IRUFEOiAgMHglMDh4IFsweCUwOHhd XG4iLAotCQkJICAgSTkxNV9SRUFEKFJJTkdfSEVBRChlbmdpbmUtPm1taW9fYmFzZSkpICYgSEVB RF9BRERSLAotCQkJICAgcnEgPyBycS0+cmluZy0+aGVhZCA6IDApOwotCQlzZXFfcHJpbnRmKG0s ICJcdFJJTkdfVEFJTDogIDB4JTA4eCBbMHglMDh4XVxuIiwKLQkJCSAgIEk5MTVfUkVBRChSSU5H X1RBSUwoZW5naW5lLT5tbWlvX2Jhc2UpKSAmIFRBSUxfQUREUiwKLQkJCSAgIHJxID8gcnEtPnJp bmctPnRhaWwgOiAwKTsKLQkJc2VxX3ByaW50ZihtLCAiXHRSSU5HX0NUTDogICAweCUwOHggWyVz XVxuIiwKLQkJCSAgIEk5MTVfUkVBRChSSU5HX0NUTChlbmdpbmUtPm1taW9fYmFzZSkpLAotCQkJ ICAgSTkxNV9SRUFEKFJJTkdfQ1RMKGVuZ2luZS0+bW1pb19iYXNlKSkgJiAoUklOR19XQUlUIHwg UklOR19XQUlUX1NFTUFQSE9SRSkgPyAid2FpdGluZyIgOiAiIik7Ci0KLQkJcmN1X3JlYWRfdW5s b2NrKCk7Ci0KLQkJYWRkciA9IGludGVsX2VuZ2luZV9nZXRfYWN0aXZlX2hlYWQoZW5naW5lKTsK LQkJc2VxX3ByaW50ZihtLCAiXHRBQ1RIRDogIDB4JTA4eF8lMDh4XG4iLAotCQkJICAgdXBwZXJf MzJfYml0cyhhZGRyKSwgbG93ZXJfMzJfYml0cyhhZGRyKSk7Ci0JCWFkZHIgPSBpbnRlbF9lbmdp bmVfZ2V0X2xhc3RfYmF0Y2hfaGVhZChlbmdpbmUpOwotCQlzZXFfcHJpbnRmKG0sICJcdEJCQURE UjogMHglMDh4XyUwOHhcbiIsCi0JCQkgICB1cHBlcl8zMl9iaXRzKGFkZHIpLCBsb3dlcl8zMl9i aXRzKGFkZHIpKTsKLQotCQlpZiAoaTkxNV9tb2RwYXJhbXMuZW5hYmxlX2V4ZWNsaXN0cykgewot CQkJY29uc3QgdTMyICpod3MgPSAmZW5naW5lLT5zdGF0dXNfcGFnZS5wYWdlX2FkZHJbSTkxNV9I V1NfQ1NCX0JVRjBfSU5ERVhdOwotCQkJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBj b25zdCBleGVjbGlzdHMgPSAmZW5naW5lLT5leGVjbGlzdHM7Ci0JCQl1MzIgcHRyLCByZWFkLCB3 cml0ZTsKLQkJCXVuc2lnbmVkIGludCBpZHg7Ci0KLQkJCXNlcV9wcmludGYobSwgIlx0RXhlY2xp c3Qgc3RhdHVzOiAweCUwOHggJTA4eFxuIiwKLQkJCQkgICBJOTE1X1JFQUQoUklOR19FWEVDTElT VF9TVEFUVVNfTE8oZW5naW5lKSksCi0JCQkJICAgSTkxNV9SRUFEKFJJTkdfRVhFQ0xJU1RfU1RB VFVTX0hJKGVuZ2luZSkpKTsKLQotCQkJcHRyID0gSTkxNV9SRUFEKFJJTkdfQ09OVEVYVF9TVEFU VVNfUFRSKGVuZ2luZSkpOwotCQkJcmVhZCA9IEdFTjhfQ1NCX1JFQURfUFRSKHB0cik7Ci0JCQl3 cml0ZSA9IEdFTjhfQ1NCX1dSSVRFX1BUUihwdHIpOwotCQkJc2VxX3ByaW50ZihtLCAiXHRFeGVj bGlzdCBDU0IgcmVhZCAlZCBbJWQgY2FjaGVkXSwgd3JpdGUgJWQgWyVkIGZyb20gaHdzXSwgaW50 ZXJydXB0IHBvc3RlZD8gJXNcbiIsCi0JCQkJICAgcmVhZCwgZXhlY2xpc3RzLT5jc2JfaGVhZCwK LQkJCQkgICB3cml0ZSwKLQkJCQkgICBpbnRlbF9yZWFkX3N0YXR1c19wYWdlKGVuZ2luZSwgaW50 ZWxfaHdzX2NzYl93cml0ZV9pbmRleChlbmdpbmUtPmk5MTUpKSwKLQkJCQkgICB5ZXNubyh0ZXN0 X2JpdChFTkdJTkVfSVJRX0VYRUNMSVNULAotCQkJCQkJICAmZW5naW5lLT5pcnFfcG9zdGVkKSkp OwotCQkJaWYgKHJlYWQgPj0gR0VOOF9DU0JfRU5UUklFUykKLQkJCQlyZWFkID0gMDsKLQkJCWlm ICh3cml0ZSA+PSBHRU44X0NTQl9FTlRSSUVTKQotCQkJCXdyaXRlID0gMDsKLQkJCWlmIChyZWFk ID4gd3JpdGUpCi0JCQkJd3JpdGUgKz0gR0VOOF9DU0JfRU5UUklFUzsKLQkJCXdoaWxlIChyZWFk IDwgd3JpdGUpIHsKLQkJCQlpZHggPSArK3JlYWQgJSBHRU44X0NTQl9FTlRSSUVTOwotCQkJCXNl cV9wcmludGYobSwgIlx0RXhlY2xpc3QgQ1NCWyVkXTogMHglMDh4IFsweCUwOHggaW4gaHdzcF0s IGNvbnRleHQ6ICVkIFslZCBpbiBod3NwXVxuIiwKLQkJCQkJICAgaWR4LAotCQkJCQkgICBJOTE1 X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19CVUZfTE8oZW5naW5lLCBpZHgpKSwKLQkJCQkJICAg aHdzW2lkeCAqIDJdLAotCQkJCQkgICBJOTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19CVUZf SEkoZW5naW5lLCBpZHgpKSwKLQkJCQkJICAgaHdzW2lkeCAqIDIgKyAxXSk7Ci0JCQl9Ci0KLQkJ CXJjdV9yZWFkX2xvY2soKTsKLQkJCWZvciAoaWR4ID0gMDsgaWR4IDwgZXhlY2xpc3RzX251bV9w b3J0cyhleGVjbGlzdHMpOyBpZHgrKykgewotCQkJCXVuc2lnbmVkIGludCBjb3VudDsKLQotCQkJ CXJxID0gcG9ydF91bnBhY2soJmV4ZWNsaXN0cy0+cG9ydFtpZHhdLCAmY291bnQpOwotCQkJCWlm IChycSkgewotCQkJCQlzZXFfcHJpbnRmKG0sICJcdFx0RUxTUFslZF0gY291bnQ9JWQsICIsCi0J CQkJCQkgICBpZHgsIGNvdW50KTsKLQkJCQkJcHJpbnRfcmVxdWVzdChtLCBycSwgInJxOiAiKTsK LQkJCQl9IGVsc2UgewotCQkJCQlzZXFfcHJpbnRmKG0sICJcdFx0RUxTUFslZF0gaWRsZVxuIiwK LQkJCQkJCSAgIGlkeCk7Ci0JCQkJfQotCQkJfQotCQkJcmN1X3JlYWRfdW5sb2NrKCk7Ci0KLQkJ CXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwotCQkJZm9yIChyYiA9IGV4 ZWNsaXN0cy0+Zmlyc3Q7IHJiOyByYiA9IHJiX25leHQocmIpKSB7Ci0JCQkJc3RydWN0IGk5MTVf cHJpb2xpc3QgKnAgPQotCQkJCQlyYl9lbnRyeShyYiwgdHlwZW9mKCpwKSwgbm9kZSk7Ci0KLQkJ CQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJxLCAmcC0+cmVxdWVzdHMsCi0JCQkJCQkgICAgcHJpb3Ry ZWUubGluaykKLQkJCQkJcHJpbnRfcmVxdWVzdChtLCBycSwgIlx0XHRRICIpOwotCQkJfQotCQkJ c3Bpbl91bmxvY2tfaXJxKCZlbmdpbmUtPnRpbWVsaW5lLT5sb2NrKTsKLQkJfSBlbHNlIGlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID4gNikgewotCQkJc2VxX3ByaW50ZihtLCAiXHRQUF9ESVJfQkFT RTogMHglMDh4XG4iLAotCQkJCSAgIEk5MTVfUkVBRChSSU5HX1BQX0RJUl9CQVNFKGVuZ2luZSkp KTsKLQkJCXNlcV9wcmludGYobSwgIlx0UFBfRElSX0JBU0VfUkVBRDogMHglMDh4XG4iLAotCQkJ CSAgIEk5MTVfUkVBRChSSU5HX1BQX0RJUl9CQVNFX1JFQUQoZW5naW5lKSkpOwotCQkJc2VxX3By aW50ZihtLCAiXHRQUF9ESVJfRENMVjogMHglMDh4XG4iLAotCQkJCSAgIEk5MTVfUkVBRChSSU5H X1BQX0RJUl9EQ0xWKGVuZ2luZSkpKTsKLQkJfQotCi0JCXNwaW5fbG9ja19pcnEoJmItPnJiX2xv Y2spOwotCQlmb3IgKHJiID0gcmJfZmlyc3QoJmItPndhaXRlcnMpOyByYjsgcmIgPSByYl9uZXh0 KHJiKSkgewotCQkJc3RydWN0IGludGVsX3dhaXQgKncgPSByYl9lbnRyeShyYiwgdHlwZW9mKCp3 KSwgbm9kZSk7Ci0KLQkJCXNlcV9wcmludGYobSwgIlx0JXMgWyVkXSB3YWl0aW5nIGZvciAleFxu IiwKLQkJCQkgICB3LT50c2stPmNvbW0sIHctPnRzay0+cGlkLCB3LT5zZXFubyk7Ci0JCX0KLQkJ c3Bpbl91bmxvY2tfaXJxKCZiLT5yYl9sb2NrKTsKLQotCQlzZXFfcHV0cyhtLCAiXG4iKTsKLQl9 CisJcCA9IGRybV9zZXFfZmlsZV9wcmludGVyKG0pOworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUs IGRldl9wcml2LCBpZCkKKwkJaW50ZWxfZW5naW5lX2R1bXAoZW5naW5lLCAmcCk7CiAKIAlpbnRl bF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5n aW5lX2NzLmMKaW5kZXggODA3YTdhYWZjMDg5Li5hNTliMmEzMGZmNWEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCkBAIC0yMiw2ICsyMiw4IEBACiAgKgogICovCiAKKyNp bmNsdWRlIDxkcm0vZHJtX3ByaW50Lmg+CisKICNpbmNsdWRlICJpOTE1X2Rydi5oIgogI2luY2x1 ZGUgImludGVsX3JpbmdidWZmZXIuaCIKICNpbmNsdWRlICJpbnRlbF9scmMuaCIKQEAgLTE2MTYs NiArMTYxOCwxNjQgQEAgYm9vbCBpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAl9CiB9CiAKK3N0YXRpYyB2b2lkIHByaW50X3JlcXVl c3Qoc3RydWN0IGRybV9wcmludGVyICptLAorCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJxLAorCQkJICBjb25zdCBjaGFyICpwcmVmaXgpCit7CisJZHJtX3ByaW50ZihtLCAiJXMl eCBbJXg6JXhdIHByaW89JWQgQCAlZG1zOiAlc1xuIiwgcHJlZml4LAorCQkgICBycS0+Z2xvYmFs X3NlcW5vLCBycS0+Y3R4LT5od19pZCwgcnEtPmZlbmNlLnNlcW5vLAorCQkgICBycS0+cHJpb3Ry ZWUucHJpb3JpdHksCisJCSAgIGppZmZpZXNfdG9fbXNlY3MoamlmZmllcyAtIHJxLT5lbWl0dGVk X2ppZmZpZXMpLAorCQkgICBycS0+dGltZWxpbmUtPmNvbW1vbi0+bmFtZSk7Cit9CisKK3ZvaWQg aW50ZWxfZW5naW5lX2R1bXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBzdHJ1Y3Qg ZHJtX3ByaW50ZXIgKm0pCit7CisJc3RydWN0IGludGVsX2JyZWFkY3J1bWJzICpiID0gJmVuZ2lu ZS0+YnJlYWRjcnVtYnM7CisJc3RydWN0IGk5MTVfZ3B1X2Vycm9yICplcnJvciA9ICZlbmdpbmUt Pmk5MTUtPmdwdV9lcnJvcjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBl bmdpbmUtPmk5MTU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycTsKKwlzdHJ1Y3Qg cmJfbm9kZSAqcmI7CisJdTY0IGFkZHI7CisKKwlkcm1fcHJpbnRmKG0sICIlc1xuIiwgZW5naW5l LT5uYW1lKTsKKwlkcm1fcHJpbnRmKG0sICJcdGN1cnJlbnQgc2Vxbm8gJXgsIGxhc3QgJXgsIGhh bmdjaGVjayAleCBbJWQgbXNdLCBpbmZsaWdodCAlZFxuIiwKKwkJICAgaW50ZWxfZW5naW5lX2dl dF9zZXFubyhlbmdpbmUpLAorCQkgICBpbnRlbF9lbmdpbmVfbGFzdF9zdWJtaXQoZW5naW5lKSwK KwkJICAgZW5naW5lLT5oYW5nY2hlY2suc2Vxbm8sCisJCSAgIGppZmZpZXNfdG9fbXNlY3Moamlm ZmllcyAtIGVuZ2luZS0+aGFuZ2NoZWNrLmFjdGlvbl90aW1lc3RhbXApLAorCQkgICBlbmdpbmUt PnRpbWVsaW5lLT5pbmZsaWdodF9zZXFub3MpOworCWRybV9wcmludGYobSwgIlx0UmVzZXQgY291 bnQ6ICVkXG4iLAorCQkgICBpOTE1X3Jlc2V0X2VuZ2luZV9jb3VudChlcnJvciwgZW5naW5lKSk7 CisKKwlyY3VfcmVhZF9sb2NrKCk7CisKKwlkcm1fcHJpbnRmKG0sICJcdFJlcXVlc3RzOlxuIik7 CisKKwlycSA9IGxpc3RfZmlyc3RfZW50cnkoJmVuZ2luZS0+dGltZWxpbmUtPnJlcXVlc3RzLAor CQkJICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0LCBsaW5rKTsKKwlpZiAoJnJxLT5s aW5rICE9ICZlbmdpbmUtPnRpbWVsaW5lLT5yZXF1ZXN0cykKKwkJcHJpbnRfcmVxdWVzdChtLCBy cSwgIlx0XHRmaXJzdCAgIik7CisKKwlycSA9IGxpc3RfbGFzdF9lbnRyeSgmZW5naW5lLT50aW1l bGluZS0+cmVxdWVzdHMsCisJCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCwgbGlu ayk7CisJaWYgKCZycS0+bGluayAhPSAmZW5naW5lLT50aW1lbGluZS0+cmVxdWVzdHMpCisJCXBy aW50X3JlcXVlc3QobSwgcnEsICJcdFx0bGFzdCAgICIpOworCisJcnEgPSBpOTE1X2dlbV9maW5k X2FjdGl2ZV9yZXF1ZXN0KGVuZ2luZSk7CisJaWYgKHJxKSB7CisJCXByaW50X3JlcXVlc3QobSwg cnEsICJcdFx0YWN0aXZlICIpOworCQlkcm1fcHJpbnRmKG0sCisJCQkgICAiXHRcdFtoZWFkICUw NHgsIHBvc3RmaXggJTA0eCwgdGFpbCAlMDR4LCBiYXRjaCAweCUwOHhfJTA4eF1cbiIsCisJCQkg ICBycS0+aGVhZCwgcnEtPnBvc3RmaXgsIHJxLT50YWlsLAorCQkJICAgcnEtPmJhdGNoID8gdXBw ZXJfMzJfYml0cyhycS0+YmF0Y2gtPm5vZGUuc3RhcnQpIDogfjB1LAorCQkJICAgcnEtPmJhdGNo ID8gbG93ZXJfMzJfYml0cyhycS0+YmF0Y2gtPm5vZGUuc3RhcnQpIDogfjB1KTsKKwl9CisKKwlk cm1fcHJpbnRmKG0sICJcdFJJTkdfU1RBUlQ6IDB4JTA4eCBbMHglMDh4XVxuIiwKKwkJICAgSTkx NV9SRUFEKFJJTkdfU1RBUlQoZW5naW5lLT5tbWlvX2Jhc2UpKSwKKwkJICAgcnEgPyBpOTE1X2dn dHRfb2Zmc2V0KHJxLT5yaW5nLT52bWEpIDogMCk7CisJZHJtX3ByaW50ZihtLCAiXHRSSU5HX0hF QUQ6ICAweCUwOHggWzB4JTA4eF1cbiIsCisJCSAgIEk5MTVfUkVBRChSSU5HX0hFQUQoZW5naW5l LT5tbWlvX2Jhc2UpKSAmIEhFQURfQUREUiwKKwkJICAgcnEgPyBycS0+cmluZy0+aGVhZCA6IDAp OworCWRybV9wcmludGYobSwgIlx0UklOR19UQUlMOiAgMHglMDh4IFsweCUwOHhdXG4iLAorCQkg ICBJOTE1X1JFQUQoUklOR19UQUlMKGVuZ2luZS0+bW1pb19iYXNlKSkgJiBUQUlMX0FERFIsCisJ CSAgIHJxID8gcnEtPnJpbmctPnRhaWwgOiAwKTsKKwlkcm1fcHJpbnRmKG0sICJcdFJJTkdfQ1RM OiAgIDB4JTA4eCBbJXNdXG4iLAorCQkgICBJOTE1X1JFQUQoUklOR19DVEwoZW5naW5lLT5tbWlv X2Jhc2UpKSwKKwkJICAgSTkxNV9SRUFEKFJJTkdfQ1RMKGVuZ2luZS0+bW1pb19iYXNlKSkgJiAo UklOR19XQUlUIHwgUklOR19XQUlUX1NFTUFQSE9SRSkgPyAid2FpdGluZyIgOiAiIik7CisKKwly Y3VfcmVhZF91bmxvY2soKTsKKworCWFkZHIgPSBpbnRlbF9lbmdpbmVfZ2V0X2FjdGl2ZV9oZWFk KGVuZ2luZSk7CisJZHJtX3ByaW50ZihtLCAiXHRBQ1RIRDogIDB4JTA4eF8lMDh4XG4iLAorCQkg ICB1cHBlcl8zMl9iaXRzKGFkZHIpLCBsb3dlcl8zMl9iaXRzKGFkZHIpKTsKKwlhZGRyID0gaW50 ZWxfZW5naW5lX2dldF9sYXN0X2JhdGNoX2hlYWQoZW5naW5lKTsKKwlkcm1fcHJpbnRmKG0sICJc dEJCQUREUjogMHglMDh4XyUwOHhcbiIsCisJCSAgIHVwcGVyXzMyX2JpdHMoYWRkciksIGxvd2Vy XzMyX2JpdHMoYWRkcikpOworCisJaWYgKGk5MTVfbW9kcGFyYW1zLmVuYWJsZV9leGVjbGlzdHMp IHsKKwkJY29uc3QgdTMyICpod3MgPSAmZW5naW5lLT5zdGF0dXNfcGFnZS5wYWdlX2FkZHJbSTkx NV9IV1NfQ1NCX0JVRjBfSU5ERVhdOworCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2V4ZWNsaXN0cyAq IGNvbnN0IGV4ZWNsaXN0cyA9ICZlbmdpbmUtPmV4ZWNsaXN0czsKKwkJdTMyIHB0ciwgcmVhZCwg d3JpdGU7CisJCXVuc2lnbmVkIGludCBpZHg7CisKKwkJZHJtX3ByaW50ZihtLCAiXHRFeGVjbGlz dCBzdGF0dXM6IDB4JTA4eCAlMDh4XG4iLAorCQkJICAgSTkxNV9SRUFEKFJJTkdfRVhFQ0xJU1Rf U1RBVFVTX0xPKGVuZ2luZSkpLAorCQkJICAgSTkxNV9SRUFEKFJJTkdfRVhFQ0xJU1RfU1RBVFVT X0hJKGVuZ2luZSkpKTsKKworCQlwdHIgPSBJOTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19Q VFIoZW5naW5lKSk7CisJCXJlYWQgPSBHRU44X0NTQl9SRUFEX1BUUihwdHIpOworCQl3cml0ZSA9 IEdFTjhfQ1NCX1dSSVRFX1BUUihwdHIpOworCQlkcm1fcHJpbnRmKG0sICJcdEV4ZWNsaXN0IENT QiByZWFkICVkIFslZCBjYWNoZWRdLCB3cml0ZSAlZCBbJWQgZnJvbSBod3NdLCBpbnRlcnJ1cHQg cG9zdGVkPyAlc1xuIiwKKwkJCSAgIHJlYWQsIGV4ZWNsaXN0cy0+Y3NiX2hlYWQsCisJCQkgICB3 cml0ZSwKKwkJCSAgIGludGVsX3JlYWRfc3RhdHVzX3BhZ2UoZW5naW5lLCBpbnRlbF9od3NfY3Ni X3dyaXRlX2luZGV4KGVuZ2luZS0+aTkxNSkpLAorCQkJICAgeWVzbm8odGVzdF9iaXQoRU5HSU5F X0lSUV9FWEVDTElTVCwKKwkJCQkJICAmZW5naW5lLT5pcnFfcG9zdGVkKSkpOworCQlpZiAocmVh ZCA+PSBHRU44X0NTQl9FTlRSSUVTKQorCQkJcmVhZCA9IDA7CisJCWlmICh3cml0ZSA+PSBHRU44 X0NTQl9FTlRSSUVTKQorCQkJd3JpdGUgPSAwOworCQlpZiAocmVhZCA+IHdyaXRlKQorCQkJd3Jp dGUgKz0gR0VOOF9DU0JfRU5UUklFUzsKKwkJd2hpbGUgKHJlYWQgPCB3cml0ZSkgeworCQkJaWR4 ID0gKytyZWFkICUgR0VOOF9DU0JfRU5UUklFUzsKKwkJCWRybV9wcmludGYobSwgIlx0RXhlY2xp c3QgQ1NCWyVkXTogMHglMDh4IFsweCUwOHggaW4gaHdzcF0sIGNvbnRleHQ6ICVkIFslZCBpbiBo d3NwXVxuIiwKKwkJCQkgICBpZHgsCisJCQkJICAgSTkxNV9SRUFEKFJJTkdfQ09OVEVYVF9TVEFU VVNfQlVGX0xPKGVuZ2luZSwgaWR4KSksCisJCQkJICAgaHdzW2lkeCAqIDJdLAorCQkJCSAgIEk5 MTVfUkVBRChSSU5HX0NPTlRFWFRfU1RBVFVTX0JVRl9ISShlbmdpbmUsIGlkeCkpLAorCQkJCSAg IGh3c1tpZHggKiAyICsgMV0pOworCQl9CisKKwkJcmN1X3JlYWRfbG9jaygpOworCQlmb3IgKGlk eCA9IDA7IGlkeCA8IGV4ZWNsaXN0c19udW1fcG9ydHMoZXhlY2xpc3RzKTsgaWR4KyspIHsKKwkJ CXVuc2lnbmVkIGludCBjb3VudDsKKworCQkJcnEgPSBwb3J0X3VucGFjaygmZXhlY2xpc3RzLT5w b3J0W2lkeF0sICZjb3VudCk7CisJCQlpZiAocnEpIHsKKwkJCQlkcm1fcHJpbnRmKG0sICJcdFx0 RUxTUFslZF0gY291bnQ9JWQsICIsCisJCQkJCSAgIGlkeCwgY291bnQpOworCQkJCXByaW50X3Jl cXVlc3QobSwgcnEsICJycTogIik7CisJCQl9IGVsc2UgeworCQkJCWRybV9wcmludGYobSwgIlx0 XHRFTFNQWyVkXSBpZGxlXG4iLAorCQkJCQkgICBpZHgpOworCQkJfQorCQl9CisJCXJjdV9yZWFk X3VubG9jaygpOworCisJCXNwaW5fbG9ja19pcnEoJmVuZ2luZS0+dGltZWxpbmUtPmxvY2spOwor CQlmb3IgKHJiID0gZXhlY2xpc3RzLT5maXJzdDsgcmI7IHJiID0gcmJfbmV4dChyYikpIHsKKwkJ CXN0cnVjdCBpOTE1X3ByaW9saXN0ICpwID0KKwkJCQlyYl9lbnRyeShyYiwgdHlwZW9mKCpwKSwg bm9kZSk7CisKKwkJCWxpc3RfZm9yX2VhY2hfZW50cnkocnEsICZwLT5yZXF1ZXN0cywKKwkJCQkJ ICAgIHByaW90cmVlLmxpbmspCisJCQkJcHJpbnRfcmVxdWVzdChtLCBycSwgIlx0XHRRICIpOwor CQl9CisJCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT50aW1lbGluZS0+bG9jayk7CisJfSBlbHNl IGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gNikgeworCQlkcm1fcHJpbnRmKG0sICJcdFBQX0RJ Ul9CQVNFOiAweCUwOHhcbiIsCisJCQkgICBJOTE1X1JFQUQoUklOR19QUF9ESVJfQkFTRShlbmdp bmUpKSk7CisJCWRybV9wcmludGYobSwgIlx0UFBfRElSX0JBU0VfUkVBRDogMHglMDh4XG4iLAor CQkJICAgSTkxNV9SRUFEKFJJTkdfUFBfRElSX0JBU0VfUkVBRChlbmdpbmUpKSk7CisJCWRybV9w cmludGYobSwgIlx0UFBfRElSX0RDTFY6IDB4JTA4eFxuIiwKKwkJCSAgIEk5MTVfUkVBRChSSU5H X1BQX0RJUl9EQ0xWKGVuZ2luZSkpKTsKKwl9CisKKwlzcGluX2xvY2tfaXJxKCZiLT5yYl9sb2Nr KTsKKwlmb3IgKHJiID0gcmJfZmlyc3QoJmItPndhaXRlcnMpOyByYjsgcmIgPSByYl9uZXh0KHJi KSkgeworCQlzdHJ1Y3QgaW50ZWxfd2FpdCAqdyA9IHJiX2VudHJ5KHJiLCB0eXBlb2YoKncpLCBu b2RlKTsKKworCQlkcm1fcHJpbnRmKG0sICJcdCVzIFslZF0gd2FpdGluZyBmb3IgJXhcbiIsCisJ CQkgICB3LT50c2stPmNvbW0sIHctPnRzay0+cGlkLCB3LT5zZXFubyk7CisJfQorCXNwaW5fdW5s b2NrX2lycSgmYi0+cmJfbG9jayk7CisKKwlkcm1fcHJpbnRmKG0sICJcbiIpOworfQorCiAjaWYg SVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCiAjaW5jbHVkZSAic2VsZnRlc3Rz L21vY2tfZW5naW5lLmMiCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaAppbmRleCAwZmVkZGExNzQ4OGMuLjE3MTg2ZjA2NzQwOCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtNyw2ICs3LDggQEAKICNpbmNsdWRlICJpOTE1X2dl bV90aW1lbGluZS5oIgogI2luY2x1ZGUgImk5MTVfc2VsZnRlc3QuaCIKIAorc3RydWN0IGRybV9w cmludGVyOworCiAjZGVmaW5lIEk5MTVfQ01EX0hBU0hfT1JERVIgOQogCiAvKiBFYXJseSBnZW4y IGRldmljZXMgaGF2ZSBhIGNhY2hlbGluZSBvZiBqdXN0IDMyIGJ5dGVzLCB1c2luZyA2NCBpcyBv dmVya2lsbCwKQEAgLTgzOSw0ICs4NDEsNiBAQCB2b2lkIGludGVsX2VuZ2luZXNfcmVzZXRfZGVm YXVsdF9zdWJtaXNzaW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKIAogYm9vbCBp bnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZSk7CiAKK3ZvaWQgaW50ZWxfZW5naW5lX2R1bXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lLCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApOworCiAjZW5kaWYgLyogX0lOVEVMX1JJTkdCVUZG RVJfSF8gKi8KLS0gCjIuMTQuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==