From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Tvrtko Ursulin Date: Mon, 20 May 2019 15:47:18 +0100 Message-Id: <20190520144739.13111-7-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20190520144739.13111-1-tvrtko.ursulin@linux.intel.com> References: <20190520144739.13111-1-tvrtko.ursulin@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH i-g-t 06/27] wsim/media-bench: i915 balancing List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClN1cHBvcnQg aTkxNSB2aXJ0dWFsIGVuZ2luZSBmcm9tIGdlbV93c2ltICgtYiBpOTE1KSBhbmQgbWVkaWEtYmVu Y2gucGwKCnYyOgogKiBBZGQgdm1fZGVzdHJveS4gKENocmlzKQogKiBSZW1vdmUgdW5uZWVkZWQg YnJhY2VzLiAoQ2hyaXMpCgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVy c3VsaW5AaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+Ci0tLQogYmVuY2htYXJrcy9nZW1fd3NpbS5jICB8IDMwMiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLQogc2NyaXB0cy9tZWRpYS1iZW5jaC5wbCB8 ICAgOSArLQogMiBmaWxlcyBjaGFuZ2VkLCAyNjUgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvYmVuY2htYXJrcy9nZW1fd3NpbS5jIGIvYmVuY2htYXJrcy9nZW1f d3NpbS5jCmluZGV4IDQ4NTY4Y2U0MDY2ZS4uYWZiNTNmNDExNGQyIDEwMDY0NAotLS0gYS9iZW5j aG1hcmtzL2dlbV93c2ltLmMKKysrIGIvYmVuY2htYXJrcy9nZW1fd3NpbS5jCkBAIC0xNDIsNiAr MTQyLDE0IEBAIHN0cnVjdCB3X3N0ZXAKIAogREVDTEFSRV9FV01BKHVpbnQ2NF90LCBydCwgNCwg MikKIAorc3RydWN0IGN0eCB7CisJdWludDMyX3QgaWQ7CisJaW50IHByaW9yaXR5OworCWJvb2wg dGFyZ2V0c19pbnN0YW5jZTsKKwlib29sIHdhbnRzX2JhbGFuY2U7CisJdW5zaWduZWQgaW50IHN0 YXRpY192Y3M7Cit9OworCiBzdHJ1Y3Qgd29ya2xvYWQKIHsKIAl1bnNpZ25lZCBpbnQgaWQ7CkBA IC0xNjMsMTEgKzE3MSw3IEBAIHN0cnVjdCB3b3JrbG9hZAogCXN0cnVjdCB0aW1lc3BlYyByZXBl YXRfc3RhcnQ7CiAKIAl1bnNpZ25lZCBpbnQgbnJfY3R4czsKLQlzdHJ1Y3QgewotCQl1aW50MzJf dCBpZDsKLQkJaW50IHByaW9yaXR5OwotCQl1bnNpZ25lZCBpbnQgc3RhdGljX3ZjczsKLQl9ICpj dHhfbGlzdDsKKwlzdHJ1Y3QgY3R4ICpjdHhfbGlzdDsKIAogCWludCBzeW5jX3RpbWVsaW5lOwog CXVpbnQzMl90IHN5bmNfc2Vxbm87CkBAIC0yMjQsNiArMjI4LDcgQEAgc3RhdGljIGludCBmZDsK ICNkZWZpbmUgSEVBUlRCRUFUCSgxPDw3KQogI2RlZmluZSBHTE9CQUxfQkFMQU5DRQkoMTw8OCkK ICNkZWZpbmUgREVQU1lOQwkJKDE8PDkpCisjZGVmaW5lIEk5MTUJCSgxPDwxMCkKIAogI2RlZmlu ZSBTRVFOT19JRFgoZW5naW5lKSAoKGVuZ2luZSkgKiAxNikKICNkZWZpbmUgU0VRTk9fT0ZGU0VU KGVuZ2luZSkgKFNFUU5PX0lEWChlbmdpbmUpICogc2l6ZW9mKHVpbnQzMl90KSkKQEAgLTg0MSw3 ICs4NDYsMTAgQEAgZWJfc2V0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIy ICplYiwKIAlpZiAoZW5naW5lID09IFZDUzIgJiYgKGZsYWdzICYgVkNTMlJFTUFQKSkKIAkJZW5n aW5lID0gQkNTOwogCi0JZWItPmZsYWdzID0gZWJfZW5naW5lX21hcFtlbmdpbmVdOworCWlmICgo ZmxhZ3MgJiBJOTE1KSAmJiBlbmdpbmUgPT0gVkNTKQorCQllYi0+ZmxhZ3MgPSAwOworCWVsc2UK KwkJZWItPmZsYWdzID0gZWJfZW5naW5lX21hcFtlbmdpbmVdOwogfQogCiBzdGF0aWMgdm9pZApA QCAtODY3LDYgKzg3NSwyMyBAQCBnZXRfc3RhdHVzX29iamVjdHMoc3RydWN0IHdvcmtsb2FkICp3 cmspCiAJCXJldHVybiB3cmstPnN0YXR1c19vYmplY3Q7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgY3R4 ICoKK19fZ2V0X2N0eChzdHJ1Y3Qgd29ya2xvYWQgKndyaywgc3RydWN0IHdfc3RlcCAqdykKK3sK KwlyZXR1cm4gJndyay0+Y3R4X2xpc3Rbdy0+Y29udGV4dCAqIDJdOworfQorCitzdGF0aWMgdWlu dDMyX3QKK2dldF9jdHhpZChzdHJ1Y3Qgd29ya2xvYWQgKndyaywgc3RydWN0IHdfc3RlcCAqdykK K3sKKwlzdHJ1Y3QgY3R4ICpjdHggPSBfX2dldF9jdHgod3JrLCB3KTsKKworCWlmIChjdHgtPnRh cmdldHNfaW5zdGFuY2UgJiYgY3R4LT53YW50c19iYWxhbmNlICYmIHctPmVuZ2luZSA9PSBWQ1Mp CisJCXJldHVybiB3cmstPmN0eF9saXN0W3ctPmNvbnRleHQgKiAyICsgMV0uaWQ7CisJZWxzZQor CQlyZXR1cm4gd3JrLT5jdHhfbGlzdFt3LT5jb250ZXh0ICogMl0uaWQ7Cit9CisKIHN0YXRpYyB2 b2lkCiBhbGxvY19zdGVwX2JhdGNoKHN0cnVjdCB3b3JrbG9hZCAqd3JrLCBzdHJ1Y3Qgd19zdGVw ICp3LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CkBAIC05MTksNyArOTQ0LDcgQEAgYWxsb2Nfc3Rl cF9iYXRjaChzdHJ1Y3Qgd29ya2xvYWQgKndyaywgc3RydWN0IHdfc3RlcCAqdywgdW5zaWduZWQg aW50IGZsYWdzKQogCiAJdy0+ZWIuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIody0+b2Jq KTsKIAl3LT5lYi5idWZmZXJfY291bnQgPSBqICsgMTsKLQl3LT5lYi5yc3ZkMSA9IHdyay0+Y3R4 X2xpc3Rbdy0+Y29udGV4dF0uaWQ7CisJdy0+ZWIucnN2ZDEgPSBnZXRfY3R4aWQod3JrLCB3KTsK IAogCWlmIChmbGFncyAmIFNXQVBWQ1MgJiYgZW5naW5lID09IFZDUzEpCiAJCWVuZ2luZSA9IFZD UzI7CkBAIC05MzIsMTcgKzk1Nyw0OCBAQCBhbGxvY19zdGVwX2JhdGNoKHN0cnVjdCB3b3JrbG9h ZCAqd3JrLCBzdHJ1Y3Qgd19zdGVwICp3LCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJCXByaW50Zigi JXh8Iiwgdy0+b2JqW2ldLmhhbmRsZSk7CiAJcHJpbnRmKCIgJTEwbHUgZmxhZ3M9JWxseCBiYj0l eFsldV0gY3R4WyV1XT0ldVxuIiwKIAkJdy0+YmJfc3osIHctPmViLmZsYWdzLCB3LT5iYl9oYW5k bGUsIGosIHctPmNvbnRleHQsCi0JCXdyay0+Y3R4X2xpc3Rbdy0+Y29udGV4dF0uaWQpOworCQln ZXRfY3R4aWQod3JrLCB3KSk7CiAjZW5kaWYKIH0KIAorc3RhdGljIHZvaWQgX19jdHhfc2V0X3By aW8odWludDMyX3QgY3R4X2lkLCB1bnNpZ25lZCBpbnQgcHJpbykKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW0gcGFyYW0gPSB7CisJCS5jdHhfaWQgPSBjdHhfaWQsCisJCS5w YXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWSwKKwkJLnZhbHVlID0gcHJpbywKKwl9 OworCisJaWYgKHByaW8pCisJCWdlbV9jb250ZXh0X3NldF9wYXJhbShmZCwgJnBhcmFtKTsKK30K Kworc3RhdGljIGludCBfX3ZtX2Rlc3Ryb3koaW50IGk5MTUsIHVpbnQzMl90IHZtX2lkKQorewor CXN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29udHJvbCBjdGwgPSB7IC52bV9pZCA9IHZtX2lkIH07 CisJaW50IGVyciA9IDA7CisKKwlpZiAoaWd0X2lvY3RsKGk5MTUsIERSTV9JT0NUTF9JOTE1X0dF TV9WTV9ERVNUUk9ZLCAmY3RsKSkgeworCQllcnIgPSAtZXJybm87CisJCWlndF9hc3N1bWUoZXJy KTsKKwl9CisKKwllcnJubyA9IDA7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIHZvaWQgdm1f ZGVzdHJveShpbnQgaTkxNSwgdWludDMyX3Qgdm1faWQpCit7CisJaWd0X2Fzc2VydF9lcShfX3Zt X2Rlc3Ryb3koaTkxNSwgdm1faWQpLCAwKTsKK30KKwogc3RhdGljIHZvaWQKIHByZXBhcmVfd29y a2xvYWQodW5zaWduZWQgaW50IGlkLCBzdHJ1Y3Qgd29ya2xvYWQgKndyaywgdW5zaWduZWQgaW50 IGZsYWdzKQogewogCXVuc2lnbmVkIGludCBjdHhfdmNzOwogCWludCBtYXhfY3R4ID0gLTE7CiAJ c3RydWN0IHdfc3RlcCAqdzsKLQlpbnQgaTsKKwlpbnQgaSwgajsKIAogCXdyay0+aWQgPSBpZDsK IAl3cmstPnBybmcgPSByYW5kKCk7CkBAIC05NzUsNDUgKzEwMzEsMTg3IEBAIHByZXBhcmVfd29y a2xvYWQodW5zaWduZWQgaW50IGlkLCBzdHJ1Y3Qgd29ya2xvYWQgKndyaywgdW5zaWduZWQgaW50 IGZsYWdzKQogCQl9CiAJfQogCisJLyoKKwkgKiBQcmUtc2NhbiB3b3JrbG9hZCBzdGVwcyB0byBh bGxvY2F0ZSBjb250ZXh0IGxpc3Qgc3RvcmFnZS4KKwkgKi8KIAlmb3IgKGkgPSAwLCB3ID0gd3Jr LT5zdGVwczsgaSA8IHdyay0+bnJfc3RlcHM7IGkrKywgdysrKSB7Ci0JCWlmICgoaW50KXctPmNv bnRleHQgPiBtYXhfY3R4KSB7Ci0JCQlpbnQgZGVsdGEgPSB3LT5jb250ZXh0ICsgMSAtIHdyay0+ bnJfY3R4czsKKwkJaW50IGN0eCA9IHctPmNvbnRleHQgKiAyICsgMTsgLyogT2RkIHNsb3RzIGFy ZSBzcGVjaWFsLiAqLworCQlpbnQgZGVsdGE7CisKKwkJaWYgKGN0eCA8PSBtYXhfY3R4KQorCQkJ Y29udGludWU7CisKKwkJZGVsdGEgPSBjdHggKyAxIC0gd3JrLT5ucl9jdHhzOwogCi0JCQl3cmst Pm5yX2N0eHMgKz0gZGVsdGE7Ci0JCQl3cmstPmN0eF9saXN0ID0gcmVhbGxvYyh3cmstPmN0eF9s aXN0LAotCQkJCQkJd3JrLT5ucl9jdHhzICoKLQkJCQkJCXNpemVvZigqd3JrLT5jdHhfbGlzdCkp OwotCQkJbWVtc2V0KCZ3cmstPmN0eF9saXN0W3dyay0+bnJfY3R4cyAtIGRlbHRhXSwgMCwKLQkJ CSAgICAgICBkZWx0YSAqIHNpemVvZigqd3JrLT5jdHhfbGlzdCkpOworCQl3cmstPm5yX2N0eHMg Kz0gZGVsdGE7CisJCXdyay0+Y3R4X2xpc3QgPSByZWFsbG9jKHdyay0+Y3R4X2xpc3QsCisJCQkJ CXdyay0+bnJfY3R4cyAqIHNpemVvZigqd3JrLT5jdHhfbGlzdCkpOworCQltZW1zZXQoJndyay0+ Y3R4X2xpc3Rbd3JrLT5ucl9jdHhzIC0gZGVsdGFdLCAwLAorCQkJZGVsdGEgKiBzaXplb2YoKndy ay0+Y3R4X2xpc3QpKTsKIAotCQkJbWF4X2N0eCA9IHctPmNvbnRleHQ7CisJCW1heF9jdHggPSBj dHg7CisJfQorCisJLyoKKwkgKiBJZGVudGlmeSBpZiBjb250ZXh0cyB0YXJnZXQgc3BlY2lmaWMg ZW5naW5lIGluc3RhbmNlcyBhbmQgaWYgdGhleQorCSAqIHdhbnQgdG8gYmUgYmFsYW5jZWQuCisJ ICovCisJZm9yIChqID0gMDsgaiA8IHdyay0+bnJfY3R4czsgaiArPSAyKSB7CisJCWJvb2wgdGFy Z2V0cyA9IGZhbHNlOworCQlib29sIGJhbGFuY2UgPSBmYWxzZTsKKworCQlmb3IgKGkgPSAwLCB3 ID0gd3JrLT5zdGVwczsgaSA8IHdyay0+bnJfc3RlcHM7IGkrKywgdysrKSB7CisJCQlpZiAody0+ dHlwZSAhPSBCQVRDSCkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKHctPmNvbnRleHQgIT0gKGog LyAyKSkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKHctPmVuZ2luZSA9PSBWQ1MpCisJCQkJYmFs YW5jZSA9IHRydWU7CisJCQllbHNlCisJCQkJdGFyZ2V0cyA9IHRydWU7CiAJCX0KIAotCQlpZiAo IXdyay0+Y3R4X2xpc3Rbdy0+Y29udGV4dF0uaWQpIHsKLQkJCXN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9jcmVhdGUgYXJnID0ge307CisJCWlmIChmbGFncyAmIEk5MTUpIHsKKwkJCXdyay0+ Y3R4X2xpc3Rbal0udGFyZ2V0c19pbnN0YW5jZSA9IHRhcmdldHM7CisJCQl3cmstPmN0eF9saXN0 W2pdLndhbnRzX2JhbGFuY2UgPSBiYWxhbmNlOworCQl9CisJfQogCi0JCQlkcm1Jb2N0bChmZCwg RFJNX0lPQ1RMX0k5MTVfR0VNX0NPTlRFWFRfQ1JFQVRFLCAmYXJnKTsKLQkJCWlndF9hc3NlcnQo YXJnLmN0eF9pZCk7CisJLyoKKwkgKiBDcmVhdGUgYW5kIGNvbmZpZ3VyZSBjb250ZXh0cy4KKwkg Ki8KKwlmb3IgKGkgPSAwOyBpIDwgd3JrLT5ucl9jdHhzOyBpICs9IDIpIHsKKwkJc3RydWN0IGN0 eCAqY3R4ID0gJndyay0+Y3R4X2xpc3RbaV07CisJCXVpbnQzMl90IGN0eF9pZCwgc2hhcmVfdm0g PSAwOwogCi0JCQl3cmstPmN0eF9saXN0W3ctPmNvbnRleHRdLmlkID0gYXJnLmN0eF9pZDsKKwkJ aWYgKGN0eC0+aWQpCisJCQljb250aW51ZTsKIAotCQkJaWYgKGZsYWdzICYgR0xPQkFMX0JBTEFO Q0UpIHsKLQkJCQl3cmstPmN0eF9saXN0W3ctPmNvbnRleHRdLnN0YXRpY192Y3MgPSBjb250ZXh0 X3Zjc19ycjsKLQkJCQljb250ZXh0X3Zjc19yciBePSAxOwotCQkJfSBlbHNlIHsKLQkJCQl3cmst PmN0eF9saXN0W3ctPmNvbnRleHRdLnN0YXRpY192Y3MgPSBjdHhfdmNzOwotCQkJCWN0eF92Y3Mg Xj0gMTsKLQkJCX0KKwkJaWYgKGZsYWdzICYgSTkxNSkgeworCQkJc3RydWN0IGRybV9pOTE1X2dl bV9jb250ZXh0X2NyZWF0ZV9leHRfc2V0cGFyYW0gZXh0ID0geworCQkJCS5iYXNlLm5hbWUgPSBJ OTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9TRVRQQVJBTSwKKwkJCQkucGFyYW0ucGFyYW0gPSBJOTE1 X0NPTlRFWFRfUEFSQU1fVk0sCisJCQl9OworCQkJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X2NyZWF0ZV9leHQgYXJncyA9IHsgfTsKIAotCQkJaWYgKHdyay0+cHJpbykgeworCQkJLyogRmlu ZCBleGlzdGluZyBjb250ZXh0IHRvIHNoYXJlIHBwZ3R0IHdpdGguICovCisJCQlmb3IgKGogPSAw OyBqIDwgd3JrLT5ucl9jdHhzOyBqKyspIHsKIAkJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfcGFyYW0gcGFyYW0gPSB7Ci0JCQkJCS5jdHhfaWQgPSBhcmcuY3R4X2lkLAotCQkJCQkucGFy YW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFksCi0JCQkJCS52YWx1ZSA9IHdyay0+cHJp bywKKwkJCQkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1ZNLAogCQkJCX07Ci0JCQkJZ2Vt X2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmcGFyYW0pOworCisJCQkJaWYgKCF3cmstPmN0eF9saXN0 W2pdLmlkKQorCQkJCQljb250aW51ZTsKKworCQkJCXBhcmFtLmN0eF9pZCA9IHdyay0+Y3R4X2xp c3Rbal0uaWQ7CisKKwkJCQlnZW1fY29udGV4dF9nZXRfcGFyYW0oZmQsICZwYXJhbSk7CisJCQkJ aWd0X2Fzc2VydChwYXJhbS52YWx1ZSk7CisKKwkJCQlzaGFyZV92bSA9IHBhcmFtLnZhbHVlOwor CisJCQkJZXh0LnBhcmFtLnZhbHVlID0gc2hhcmVfdm07CisJCQkJYXJncy5mbGFncyA9CisJCQkJ ICAgIEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfVVNFX0VYVEVOU0lPTlM7CisJCQkJYXJncy5l eHRlbnNpb25zID0gdG9fdXNlcl9wb2ludGVyKCZleHQpOworCQkJCWJyZWFrOwogCQkJfQorCisJ CQlpZiAoIWN0eC0+dGFyZ2V0c19pbnN0YW5jZSkKKwkJCQlhcmdzLmZsYWdzIHw9CisJCQkJICAg ICBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1NJTkdMRV9USU1FTElORTsKKworCQkJZHJtSW9j dGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0NSRUFURV9FWFQsCisJCQkJICZhcmdz KTsKKworCQkJY3R4X2lkID0gYXJncy5jdHhfaWQ7CisJCX0gZWxzZSB7CisJCQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlIGFyZ3MgPSB7fTsKKworCQkJZHJtSW9jdGwoZmQsIERS TV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0NSRUFURSwgJmFyZ3MpOworCQkJY3R4X2lkID0gYXJn cy5jdHhfaWQ7CisJCX0KKworCQlpZ3RfYXNzZXJ0KGN0eF9pZCk7CisJCWN0eC0+aWQgPSBjdHhf aWQ7CisKKwkJaWYgKGZsYWdzICYgR0xPQkFMX0JBTEFOQ0UpIHsKKwkJCWN0eC0+c3RhdGljX3Zj cyA9IGNvbnRleHRfdmNzX3JyOworCQkJY29udGV4dF92Y3NfcnIgXj0gMTsKKwkJfSBlbHNlIHsK KwkJCWN0eC0+c3RhdGljX3ZjcyA9IGN0eF92Y3M7CisJCQljdHhfdmNzIF49IDE7CiAJCX0KKwor CQlfX2N0eF9zZXRfcHJpbyhjdHhfaWQsIHdyay0+cHJpbyk7CisKKwkJLyoKKwkJICogRG8gd2Ug bmVlZCBhIHNlcGFyYXRlIGNvbnRleHQgdG8gc2F0aXNmeSB0aGlzIHdvcmtsb2FkcyB3aGljaAor CQkgKiBib3RoIHdhbnQgdG8gdGFyZ2V0IHNwZWNpZmljIGVuZ2luZXMgYW5kIGJlIGJhbGFuY2Vk IGJ5IGk5MTU/CisJCSAqLworCQlpZiAoKGZsYWdzICYgSTkxNSkgJiYgY3R4LT53YW50c19iYWxh bmNlICYmCisJCSAgICBjdHgtPnRhcmdldHNfaW5zdGFuY2UpIHsKKwkJCXN0cnVjdCBkcm1faTkx NV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtIGV4dCA9IHsKKwkJCQkuYmFzZS5uYW1l ID0gSTkxNV9DT05URVhUX0NSRUFURV9FWFRfU0VUUEFSQU0sCisJCQkJLnBhcmFtLnBhcmFtID0g STkxNV9DT05URVhUX1BBUkFNX1ZNLAorCQkJCS5wYXJhbS52YWx1ZSA9IHNoYXJlX3ZtLAorCQkJ fTsKKwkJCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0IGFyZ3MgPSB7CisJ CQkJLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIoJmV4dCksCisJCQkJLmZsYWdzID0KKwkJ CQkgICAgSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19VU0VfRVhURU5TSU9OUyB8CisJCQkJICAg IEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfU0lOR0xFX1RJTUVMSU5FLAorCQkJfTsKKworCQkJ aWd0X2Fzc2VydChzaGFyZV92bSk7CisKKwkJCWRybUlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9H RU1fQ09OVEVYVF9DUkVBVEVfRVhULAorCQkJCSAmYXJncyk7CisKKwkJCWlndF9hc3NlcnQoYXJn cy5jdHhfaWQpOworCQkJY3R4X2lkID0gYXJncy5jdHhfaWQ7CisJCQl3cmstPmN0eF9saXN0W2kg KyAxXS5pZCA9IGFyZ3MuY3R4X2lkOworCisJCQlfX2N0eF9zZXRfcHJpbyhjdHhfaWQsIHdyay0+ cHJpbyk7CisJCX0KKworCQlpZiAoY3R4LT53YW50c19iYWxhbmNlKSB7CisJCQlJOTE1X0RFRklO RV9DT05URVhUX0VOR0lORVNfTE9BRF9CQUxBTkNFKGxvYWRfYmFsYW5jZSwgMikgPSB7CisJCQkJ LmJhc2UubmFtZSA9IEk5MTVfQ09OVEVYVF9FTkdJTkVTX0VYVF9MT0FEX0JBTEFOQ0UsCisJCQkJ Lm51bV9zaWJsaW5ncyA9IDIsCisJCQkJLmVuZ2luZXMgPSB7CisJCQkJCXsgLmVuZ2luZV9jbGFz cyA9IEk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPLAorCQkJCQkgIC5lbmdpbmVfaW5zdGFuY2UgPSAw IH0sCisJCQkJCXsgLmVuZ2luZV9jbGFzcyA9IEk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPLAorCQkJ CQkgIC5lbmdpbmVfaW5zdGFuY2UgPSAxIH0sCisJCQkJfSwKKwkJCX07CisJCQlJOTE1X0RFRklO RV9DT05URVhUX1BBUkFNX0VOR0lORVMoc2V0X2VuZ2luZXMsIDMpID0geworCQkJCS5leHRlbnNp b25zID0gdG9fdXNlcl9wb2ludGVyKCZsb2FkX2JhbGFuY2UpLAorCQkJCS5lbmdpbmVzID0gewor CQkJCQl7IC5lbmdpbmVfY2xhc3MgPSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElELAorCQkJCQkg IC5lbmdpbmVfaW5zdGFuY2UgPSBJOTE1X0VOR0lORV9DTEFTU19JTlZBTElEX05PTkUgfSwKKwkJ CQkJeyAuZW5naW5lX2NsYXNzID0gSTkxNV9FTkdJTkVfQ0xBU1NfVklERU8sCisJCQkJCSAgLmVu Z2luZV9pbnN0YW5jZSA9IDAgfSwKKwkJCQkJeyAuZW5naW5lX2NsYXNzID0gSTkxNV9FTkdJTkVf Q0xBU1NfVklERU8sCisJCQkJCSAgLmVuZ2luZV9pbnN0YW5jZSA9IDEgfSwKKwkJCQl9LAorCQkJ fTsKKworCQkJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHBhcmFtID0geworCQkJ CS5jdHhfaWQgPSBjdHhfaWQsCisJCQkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lO RVMsCisJCQkJLnNpemUgPSBzaXplb2Yoc2V0X2VuZ2luZXMpLAorCQkJCS52YWx1ZSA9IHRvX3Vz ZXJfcG9pbnRlcigmc2V0X2VuZ2luZXMpLAorCQkJfTsKKworCQkJZ2VtX2NvbnRleHRfc2V0X3Bh cmFtKGZkLCAmcGFyYW0pOworCQl9CisKKwkJaWYgKHNoYXJlX3ZtKQorCQkJdm1fZGVzdHJveShm ZCwgc2hhcmVfdm0pOwogCX0KIAogCS8qIFJlY29yZCBkZWZhdWx0IHByZWVtcHRpb24uICovCkBA IC0xMDI5LDcgKzEyMjcsNiBAQCBwcmVwYXJlX3dvcmtsb2FkKHVuc2lnbmVkIGludCBpZCwgc3Ry dWN0IHdvcmtsb2FkICp3cmssIHVuc2lnbmVkIGludCBmbGFncykKIAkgKi8KIAlmb3IgKGkgPSAw LCB3ID0gd3JrLT5zdGVwczsgaSA8IHdyay0+bnJfc3RlcHM7IGkrKywgdysrKSB7CiAJCXN0cnVj dCB3X3N0ZXAgKncyOwotCQlpbnQgajsKIAogCQlpZiAody0+dHlwZSAhPSBQUkVFTVBUSU9OKQog CQkJY29udGludWU7CkBAIC0xMzg3LDcgKzE1ODQsNyBAQCBzdGF0aWMgZW51bSBpbnRlbF9lbmdp bmVfaWQKIGNvbnRleHRfYmFsYW5jZShjb25zdCBzdHJ1Y3Qgd29ya2xvYWRfYmFsYW5jZXIgKmJh bGFuY2VyLAogCQlzdHJ1Y3Qgd29ya2xvYWQgKndyaywgc3RydWN0IHdfc3RlcCAqdykKIHsKLQly ZXR1cm4gZ2V0X3Zjc19lbmdpbmUod3JrLT5jdHhfbGlzdFt3LT5jb250ZXh0XS5zdGF0aWNfdmNz KTsKKwlyZXR1cm4gZ2V0X3Zjc19lbmdpbmUoX19nZXRfY3R4KHdyaywgdyktPnN0YXRpY192Y3Mp OwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50CkBAIC0xNTgxLDYgKzE3NzgsMTIgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCB3b3JrbG9hZF9iYWxhbmNlciBhbGxfYmFsYW5jZXJzW10gPSB7CiAJCS5n ZXRfcWQgPSBnZXRfZW5naW5lX2J1c3ksCiAJCS5iYWxhbmNlID0gYnVzeV9hdmdfYmFsYW5jZSwK IAl9LAorCXsKKwkJLmlkID0gMTEsCisJCS5uYW1lID0gImk5MTUiLAorCQkuZGVzYyA9ICJpOTE1 IGJhbGFuY2luZy4iLAorCQkuZmxhZ3MgPSBJOTE1LAorCX0sCiB9OwogCiBzdGF0aWMgdW5zaWdu ZWQgaW50CkBAIC0xOTU5LDcgKzIxNjIsOCBAQCBzdGF0aWMgdm9pZCAqcnVuX3dvcmtsb2FkKHZv aWQgKmRhdGEpCiAJCQlsYXN0X3N5bmMgPSBmYWxzZTsKIAogCQkJd3JrLT5ucl9iYltlbmdpbmVd Kys7Ci0JCQlpZiAoZW5naW5lID09IFZDUyAmJiB3cmstPmJhbGFuY2VyKSB7CisJCQlpZiAoZW5n aW5lID09IFZDUyAmJiB3cmstPmJhbGFuY2VyICYmCisJCQkgICAgd3JrLT5iYWxhbmNlci0+YmFs YW5jZSkgewogCQkJCWVuZ2luZSA9IHdyay0+YmFsYW5jZXItPmJhbGFuY2Uod3JrLT5iYWxhbmNl ciwKIAkJCQkJCQkJd3JrLCB3KTsKIAkJCQl3cmstPm5yX2JiW2VuZ2luZV0rKzsKQEAgLTIzODYs NiArMjU5MCwxMiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXJldHVybiAx OwogCX0KIAorCWlmICgoZmxhZ3MgJiBWQ1MyUkVNQVApICYmIChmbGFncyAmIEk5MTUpKSB7CisJ CWlmICh2ZXJib3NlKQorCQkJZnByaW50ZihzdGRlcnIsICJWQ1MgcmVtYXBwaW5nIG5vdCBzdXBw b3J0ZWQgd2l0aCBpOTE1IGJhbGFuY2luZyFcbiIpOworCQlyZXR1cm4gMTsKKwl9CisKIAlpZiAo IW5vcF9jYWxpYnJhdGlvbikgewogCQlpZiAodmVyYm9zZSA+IDEpCiAJCQlwcmludGYoIkNhbGli cmF0aW5nIG5vcCBkZWxheSB3aXRoICV1JSUgdG9sZXJhbmNlLi4uXG4iLApAQCAtMjQ3MSwxMSAr MjY4MSwxNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXByaW50ZigiJXUg Y2xpZW50JXMuXG4iLCBjbGllbnRzLCBjbGllbnRzID4gMSA/ICJzIiA6ICIiKTsKIAkJaWYgKGZs YWdzICYgU1dBUFZDUykKIAkJCXByaW50ZigiU3dhcHBpbmcgVkNTIHJpbmdzIGJldHdlZW4gY2xp ZW50cy5cbiIpOwotCQlpZiAoZmxhZ3MgJiBHTE9CQUxfQkFMQU5DRSkKLQkJCXByaW50ZigiVXNp bmcgJXMgYmFsYW5jZXIgaW4gZ2xvYmFsIG1vZGUuXG4iLAotCQkJICAgICAgIGJhbGFuY2VyLT5u YW1lKTsKLQkJZWxzZSBpZiAoYmFsYW5jZXIpCisJCWlmIChmbGFncyAmIEdMT0JBTF9CQUxBTkNF KSB7CisJCQlpZiAoZmxhZ3MgJiBJOTE1KSB7CisJCQkJcHJpbnRmKCJJZ25vcmluZyBnbG9iYWwg YmFsYW5jaW5nIHdpdGggaTkxNSFcbiIpOworCQkJCWZsYWdzICY9IH5HTE9CQUxfQkFMQU5DRTsK KwkJCX0gZWxzZSB7CisJCQkJcHJpbnRmKCJVc2luZyAlcyBiYWxhbmNlciBpbiBnbG9iYWwgbW9k ZS5cbiIsCisJCQkJICAgICAgIGJhbGFuY2VyLT5uYW1lKTsKKwkJCX0KKwkJfSBlbHNlIGlmIChi YWxhbmNlcikgewogCQkJcHJpbnRmKCJVc2luZyAlcyBiYWxhbmNlci5cbiIsIGJhbGFuY2VyLT5u YW1lKTsKKwkJfQogCX0KIAogCWlmIChtYXN0ZXJfd29ya2xvYWQgPj0gMCAmJiBjbGllbnRzID09 IDEpCkBAIC0yNDkyLDcgKzI3MDgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCWlmIChmbGFncyAmIFNXQVBWQ1MgJiYgaSAmIDEpCiAJCQlmbGFnc18gJj0gflNXQVBWQ1M7 CiAKLQkJaWYgKGZsYWdzICYgR0xPQkFMX0JBTEFOQ0UpIHsKKwkJaWYgKChmbGFncyAmIEdMT0JB TF9CQUxBTkNFKSAmJiAhKGZsYWdzICYgSTkxNSkpIHsKIAkJCXdbaV0tPmJhbGFuY2VyID0gJmds b2JhbF9iYWxhbmNlcjsKIAkJCXdbaV0tPmdsb2JhbF93cmsgPSB3WzBdOwogCQkJd1tpXS0+Z2xv YmFsX2JhbGFuY2VyID0gYmFsYW5jZXI7CmRpZmYgLS1naXQgYS9zY3JpcHRzL21lZGlhLWJlbmNo LnBsIGIvc2NyaXB0cy9tZWRpYS1iZW5jaC5wbAppbmRleCBmMWNkNTlhMjUzYzIuLjFjZDgyMDVm ZjA3YyAxMDA3NTUKLS0tIGEvc2NyaXB0cy9tZWRpYS1iZW5jaC5wbAorKysgYi9zY3JpcHRzL21l ZGlhLWJlbmNoLnBsCkBAIC00OSwxMCArNDksMTEgQEAgbXkgJG5vcDsKIG15ICVvcHRzOwogCiBt eSBAYmFsYW5jZXJzID0gKCAncnInLCAncmFuZCcsICdxZCcsICdxZHInLCAncWRhdmcnLCAncnQn LCAncnRyJywgJ3J0YXZnJywKLQkJICAnY29udGV4dCcsICdidXN5JywgJ2J1c3ktYXZnJyApOwor CQkgICdjb250ZXh0JywgJ2J1c3knLCAnYnVzeS1hdmcnLCAnaTkxNScgKTsKIG15ICViYWxfc2tp cF9IID0gKCAncnInID0+IDEsICdyYW5kJyA9PiAxLCAnY29udGV4dCcgPT4gMSwgLCAnYnVzeScg PT4gMSwKLQkJICAgJ2J1c3ktYXZnJyA9PiAxICk7Ci1teSAlYmFsX3NraXBfUiA9ICgpOworCQkg ICAnYnVzeS1hdmcnID0+IDEsICdpOTE1JyA9PiAxICk7CitteSAlYmFsX3NraXBfUiA9ICggJ2k5 MTUnID0+IDEgKTsKK215ICViYWxfc2tpcF9HID0gKCAnaTkxNScgPT4gMSApOwogCiBteSBAd29y a2xvYWRzID0gKAogCSdtZWRpYV9sb2FkX2JhbGFuY2VfMTdpNy53c2ltJywKQEAgLTQ5OCw2ICs0 OTksOCBAQCBmb3JlYWNoIG15ICR3cmsgKEBzYXR1cmF0aW9uX3dvcmtsb2FkcykgewogCQkJCW15 ICRiaWQ7CiAKIAkJCQlpZiAoJGJhbCBuZSAnJykgeworCQkJCQluZXh0IEdCQUwgaWYgJEcgPX4g Jy1HJyBhbmQgZXhpc3RzICRiYWxfc2tpcF9HeyRiYWx9OworCiAJCQkJCXB1c2ggQHhhcmdzLCAi LWIgJGJhbCI7CiAJCQkJCXB1c2ggQHhhcmdzLCAnLVInIHVubGVzcyBleGlzdHMgJGJhbF9za2lw X1J7JGJhbH07CiAJCQkJCXB1c2ggQHhhcmdzLCAkRyBpZiAkRyBuZSAnJzsKLS0gCjIuMjAuMQoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4