From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by gabe.freedesktop.org (Postfix) with ESMTPS id 83172897FD for ; Thu, 18 Oct 2018 15:28:28 +0000 (UTC) Received: by mail-wm1-x341.google.com with SMTP id y144-v6so734122wmd.4 for ; Thu, 18 Oct 2018 08:28:28 -0700 (PDT) From: Tvrtko Ursulin Date: Thu, 18 Oct 2018 16:28:02 +0100 Message-Id: <20181018152815.31816-5-tvrtko.ursulin@linux.intel.com> In-Reply-To: <20181018152815.31816-1-tvrtko.ursulin@linux.intel.com> References: <20181018152815.31816-1-tvrtko.ursulin@linux.intel.com> Subject: [igt-dev] [PATCH i-g-t 04/17] wsim/media-bench: i915 balancing List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: igt-dev@lists.freedesktop.org Cc: Intel-gfx@lists.freedesktop.org, Tvrtko Ursulin List-ID: RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClN1cHBvcnQg aTkxNSB2aXJ0dWFsIGVuZ2luZSBmcm9tIGdlbV93c2ltICgtYiBpOTE1KSBhbmQgbWVkaWEtYmVu Y2gucGwKClNpZ25lZC1vZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRl bC5jb20+Ci0tLQogYmVuY2htYXJrcy9nZW1fd3NpbS5jICB8IDI4OSArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLQogc2NyaXB0cy9tZWRpYS1iZW5jaC5wbCB8ICAgOSAr LQogMiBmaWxlcyBjaGFuZ2VkLCAyNTEgaW5zZXJ0aW9ucygrKSwgNDcgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvYmVuY2htYXJrcy9nZW1fd3NpbS5jIGIvYmVuY2htYXJrcy9nZW1fd3NpbS5j CmluZGV4IGUwNzA5NDg3ODk3Yi4uZTFjNzM4NTUxNTBiIDEwMDY0NAotLS0gYS9iZW5jaG1hcmtz L2dlbV93c2ltLmMKKysrIGIvYmVuY2htYXJrcy9nZW1fd3NpbS5jCkBAIC01OSw2ICs1OSwyMCBA QAogI2RlZmluZSBMT0NBTF9JOTE1X0VYRUNfRkVOQ0VfSU4gICAgICAgICAgICAgICgxPDwxNikK ICNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0ZFTkNFX09VVCAgICAgICAgICAgICAoMTw8MTcpCiAK K3N0cnVjdCBsb2NhbF9kcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfdjIgeworCS8qICBvdXRw dXQ6IGlkIG9mIG5ldyBjb250ZXh0Ki8KKwlfX3UzMiBjdHhfaWQ7CisJX191MzIgZmxhZ3M7Cisj ZGVmaW5lIExPQ0FMX0k5MTVfR0VNX0NPTlRFWFRfU0hBUkVfR1RUCTB4MQorI2RlZmluZSBMT0NB TF9JOTE1X0dFTV9DT05URVhUX1NJTkdMRV9USU1FTElORQkweDIKKwlfX3UzMiBzaGFyZV9jdHg7 CisJX191MzIgcGFkOworfTsKKworI2RlZmluZSBMT0NBTF9EUk1fSU9DVExfSTkxNV9HRU1fQ09O VEVYVF9DUkVBVEUJRFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09O VEVYVF9DUkVBVEUsIHN0cnVjdCBsb2NhbF9kcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfdjIp CisKKyNkZWZpbmUgTE9DQUxfSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMJMHg3CisKIGVudW0g aW50ZWxfZW5naW5lX2lkIHsKIAlSQ1MsCiAJQkNTLApAQCAtMTQzLDYgKzE1NywxNCBAQCBzdHJ1 Y3Qgd19zdGVwCiAKIERFQ0xBUkVfRVdNQSh1aW50NjRfdCwgcnQsIDQsIDIpCiAKK3N0cnVjdCBj dHggeworCXVpbnQzMl90IGlkOworCWludCBwcmlvcml0eTsKKwlib29sIHRhcmdldHNfaW5zdGFu Y2U7CisJYm9vbCB3YW50c19iYWxhbmNlOworCXVuc2lnbmVkIGludCBzdGF0aWNfdmNzOworfTsK Kwogc3RydWN0IHdvcmtsb2FkCiB7CiAJdW5zaWduZWQgaW50IGlkOwpAQCAtMTY0LDExICsxODYs NyBAQCBzdHJ1Y3Qgd29ya2xvYWQKIAlzdHJ1Y3QgdGltZXNwZWMgcmVwZWF0X3N0YXJ0OwogCiAJ dW5zaWduZWQgaW50IG5yX2N0eHM7Ci0Jc3RydWN0IHsKLQkJdWludDMyX3QgaWQ7Ci0JCWludCBw cmlvcml0eTsKLQkJdW5zaWduZWQgaW50IHN0YXRpY192Y3M7Ci0JfSAqY3R4X2xpc3Q7CisJc3Ry dWN0IGN0eCAqY3R4X2xpc3Q7CiAKIAlpbnQgc3luY190aW1lbGluZTsKIAl1aW50MzJfdCBzeW5j X3NlcW5vOwpAQCAtMjI1LDYgKzI0Myw3IEBAIHN0YXRpYyBpbnQgZmQ7CiAjZGVmaW5lIEhFQVJU QkVBVAkoMTw8NykKICNkZWZpbmUgR0xPQkFMX0JBTEFOQ0UJKDE8PDgpCiAjZGVmaW5lIERFUFNZ TkMJCSgxPDw5KQorI2RlZmluZSBJOTE1CQkoMTw8MTApCiAKICNkZWZpbmUgU0VRTk9fSURYKGVu Z2luZSkgKChlbmdpbmUpICogMTYpCiAjZGVmaW5lIFNFUU5PX09GRlNFVChlbmdpbmUpIChTRVFO T19JRFgoZW5naW5lKSAqIHNpemVvZih1aW50MzJfdCkpCkBAIC04MzYsNyArODU1LDExIEBAIGVi X3NldF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiAqZWIsCiAJaWYgKGVu Z2luZSA9PSBWQ1MyICYmIChmbGFncyAmIFZDUzJSRU1BUCkpCiAJCWVuZ2luZSA9IEJDUzsKIAot CWViLT5mbGFncyA9IGViX2VuZ2luZV9tYXBbZW5naW5lXTsKKwlpZiAoKGZsYWdzICYgSTkxNSkg JiYgZW5naW5lID09IFZDUykgeworCQllYi0+ZmxhZ3MgPSAwOworCX0gZWxzZSB7CisJCWViLT5m bGFncyA9IGViX2VuZ2luZV9tYXBbZW5naW5lXTsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC04 NjIsNiArODg1LDIzIEBAIGdldF9zdGF0dXNfb2JqZWN0cyhzdHJ1Y3Qgd29ya2xvYWQgKndyaykK IAkJcmV0dXJuIHdyay0+c3RhdHVzX29iamVjdDsKIH0KIAorc3RhdGljIHN0cnVjdCBjdHggKgor X19nZXRfY3R4KHN0cnVjdCB3b3JrbG9hZCAqd3JrLCBzdHJ1Y3Qgd19zdGVwICp3KQoreworCXJl dHVybiAmd3JrLT5jdHhfbGlzdFt3LT5jb250ZXh0ICogMl07Cit9CisKK3N0YXRpYyB1aW50MzJf dAorZ2V0X2N0eGlkKHN0cnVjdCB3b3JrbG9hZCAqd3JrLCBzdHJ1Y3Qgd19zdGVwICp3KQorewor CXN0cnVjdCBjdHggKmN0eCA9IF9fZ2V0X2N0eCh3cmssIHcpOworCisJaWYgKGN0eC0+dGFyZ2V0 c19pbnN0YW5jZSAmJiBjdHgtPndhbnRzX2JhbGFuY2UgJiYgdy0+ZW5naW5lID09IFZDUykKKwkJ cmV0dXJuIHdyay0+Y3R4X2xpc3Rbdy0+Y29udGV4dCAqIDIgKyAxXS5pZDsKKwllbHNlCisJCXJl dHVybiB3cmstPmN0eF9saXN0W3ctPmNvbnRleHQgKiAyXS5pZDsKK30KKwogc3RhdGljIHZvaWQK IGFsbG9jX3N0ZXBfYmF0Y2goc3RydWN0IHdvcmtsb2FkICp3cmssIHN0cnVjdCB3X3N0ZXAgKncs IHVuc2lnbmVkIGludCBmbGFncykKIHsKQEAgLTkxNCw3ICs5NTQsNyBAQCBhbGxvY19zdGVwX2Jh dGNoKHN0cnVjdCB3b3JrbG9hZCAqd3JrLCBzdHJ1Y3Qgd19zdGVwICp3LCB1bnNpZ25lZCBpbnQg ZmxhZ3MpCiAKIAl3LT5lYi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcih3LT5vYmopOwog CXctPmViLmJ1ZmZlcl9jb3VudCA9IGogKyAxOwotCXctPmViLnJzdmQxID0gd3JrLT5jdHhfbGlz dFt3LT5jb250ZXh0XS5pZDsKKwl3LT5lYi5yc3ZkMSA9IGdldF9jdHhpZCh3cmssIHcpOwogCiAJ aWYgKGZsYWdzICYgU1dBUFZDUyAmJiBlbmdpbmUgPT0gVkNTMSkKIAkJZW5naW5lID0gVkNTMjsK QEAgLTkyNywxNyArOTY3LDI5IEBAIGFsbG9jX3N0ZXBfYmF0Y2goc3RydWN0IHdvcmtsb2FkICp3 cmssIHN0cnVjdCB3X3N0ZXAgKncsIHVuc2lnbmVkIGludCBmbGFncykKIAkJcHJpbnRmKCIleHwi LCB3LT5vYmpbaV0uaGFuZGxlKTsKIAlwcmludGYoIiAlMTBsdSBmbGFncz0lbGx4IGJiPSV4WyV1 XSBjdHhbJXVdPSV1XG4iLAogCQl3LT5iYl9zeiwgdy0+ZWIuZmxhZ3MsIHctPmJiX2hhbmRsZSwg aiwgdy0+Y29udGV4dCwKLQkJd3JrLT5jdHhfbGlzdFt3LT5jb250ZXh0XS5pZCk7CisJCWdldF9j dHhpZCh3cmssIHcpKTsKICNlbmRpZgogfQogCitzdGF0aWMgdm9pZCBfX2N0eF9zZXRfcHJpbyh1 aW50MzJfdCBjdHhfaWQsIHVuc2lnbmVkIGludCBwcmlvKQoreworCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9wYXJhbSBwYXJhbSA9IHsKKwkJLmN0eF9pZCA9IGN0eF9pZCwKKwkJLnBhcmFt ID0gSTkxNV9DT05URVhUX1BBUkFNX1BSSU9SSVRZLAorCQkudmFsdWUgPSBwcmlvLAorCX07CisK KwlpZiAocHJpbykKKwkJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmcGFyYW0pOworfQorCiBz dGF0aWMgdm9pZAogcHJlcGFyZV93b3JrbG9hZCh1bnNpZ25lZCBpbnQgaWQsIHN0cnVjdCB3b3Jr bG9hZCAqd3JrLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiB7CiAJdW5zaWduZWQgaW50IGN0eF92Y3Mg PSAwOwogCWludCBtYXhfY3R4ID0gLTE7CiAJc3RydWN0IHdfc3RlcCAqdzsKLQlpbnQgaTsKKwlp bnQgaSwgajsKIAogCXdyay0+aWQgPSBpZDsKIAl3cmstPnBybmcgPSByYW5kKCk7CkBAIC05Njgs NDQgKzEwMjAsMTc0IEBAIHByZXBhcmVfd29ya2xvYWQodW5zaWduZWQgaW50IGlkLCBzdHJ1Y3Qg d29ya2xvYWQgKndyaywgdW5zaWduZWQgaW50IGZsYWdzKQogCQl9CiAJfQogCisJLyoKKwkgKiBQ cmUtc2NhbiB3b3JrbG9hZCBzdGVwcyB0byBhbGxvY2F0ZSBjb250ZXh0IGxpc3Qgc3RvcmFnZS4K KwkgKi8KIAlmb3IgKGkgPSAwLCB3ID0gd3JrLT5zdGVwczsgaSA8IHdyay0+bnJfc3RlcHM7IGkr KywgdysrKSB7Ci0JCWlmICgoaW50KXctPmNvbnRleHQgPiBtYXhfY3R4KSB7Ci0JCQlpbnQgZGVs dGEgPSB3LT5jb250ZXh0ICsgMSAtIHdyay0+bnJfY3R4czsKKwkJaW50IGN0eCA9IHctPmNvbnRl eHQgKiAyICsgMTsgLyogT2RkIHNsb3RzIGFyZSBzcGVjaWFsLiAqLworCQlpbnQgZGVsdGE7CisK KwkJaWYgKGN0eCA8PSBtYXhfY3R4KQorCQkJY29udGludWU7CisKKwkJZGVsdGEgPSBjdHggKyAx IC0gd3JrLT5ucl9jdHhzOworCisJCXdyay0+bnJfY3R4cyArPSBkZWx0YTsKKwkJd3JrLT5jdHhf bGlzdCA9IHJlYWxsb2Mod3JrLT5jdHhfbGlzdCwKKwkJCQkJd3JrLT5ucl9jdHhzICogc2l6ZW9m KCp3cmstPmN0eF9saXN0KSk7CisJCW1lbXNldCgmd3JrLT5jdHhfbGlzdFt3cmstPm5yX2N0eHMg LSBkZWx0YV0sIDAsCisJCQlkZWx0YSAqIHNpemVvZigqd3JrLT5jdHhfbGlzdCkpOworCisJCW1h eF9jdHggPSBjdHg7CisJfQorCisJLyoKKwkgKiBJZGVudGlmeSBpZiBjb250ZXh0cyB0YXJnZXQg c3BlY2lmaWMgZW5naW5lIGluc3RhbmNlcyBhbmQgaWYgdGhleQorCSAqIHdhbnQgdG8gYmUgYmFs YW5jZWQuCisJICovCisJZm9yIChqID0gMDsgaiA8IHdyay0+bnJfY3R4czsgaiArPSAyKSB7CisJ CWJvb2wgdGFyZ2V0cyA9IGZhbHNlOworCQlib29sIGJhbGFuY2UgPSBmYWxzZTsKKworCQlmb3Ig KGkgPSAwLCB3ID0gd3JrLT5zdGVwczsgaSA8IHdyay0+bnJfc3RlcHM7IGkrKywgdysrKSB7CisJ CQlpZiAody0+dHlwZSAhPSBCQVRDSCkKKwkJCQljb250aW51ZTsKKworCQkJaWYgKHctPmNvbnRl eHQgIT0gKGogLyAyKSkKKwkJCQljb250aW51ZTsKIAotCQkJd3JrLT5ucl9jdHhzICs9IGRlbHRh OwotCQkJd3JrLT5jdHhfbGlzdCA9IHJlYWxsb2Mod3JrLT5jdHhfbGlzdCwKLQkJCQkJCXdyay0+ bnJfY3R4cyAqCi0JCQkJCQlzaXplb2YoKndyay0+Y3R4X2xpc3QpKTsKLQkJCW1lbXNldCgmd3Jr LT5jdHhfbGlzdFt3cmstPm5yX2N0eHMgLSBkZWx0YV0sIDAsCi0JCQkgICAgICAgZGVsdGEgKiBz aXplb2YoKndyay0+Y3R4X2xpc3QpKTsKKwkJCWlmICh3LT5lbmdpbmUgPT0gVkNTKQorCQkJCWJh bGFuY2UgPSB0cnVlOworCQkJZWxzZQorCQkJCXRhcmdldHMgPSB0cnVlOworCQl9CiAKLQkJCW1h eF9jdHggPSB3LT5jb250ZXh0OworCQlpZiAoZmxhZ3MgJiBJOTE1KSB7CisJCQl3cmstPmN0eF9s aXN0W2pdLnRhcmdldHNfaW5zdGFuY2UgPSB0YXJnZXRzOworCQkJd3JrLT5jdHhfbGlzdFtqXS53 YW50c19iYWxhbmNlID0gYmFsYW5jZTsKIAkJfQorCX0KIAotCQlpZiAoIXdyay0+Y3R4X2xpc3Rb dy0+Y29udGV4dF0uaWQpIHsKLQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGUg YXJnID0ge307CisJLyoKKwkgKiBDcmVhdGUgYW5kIGNvbmZpZ3VyZSBjb250ZXh0cy4KKwkgKi8K Kwlmb3IgKGkgPSAwOyBpIDwgd3JrLT5ucl9jdHhzOyBpICs9IDIpIHsKKwkJc3RydWN0IGN0eCAq Y3R4ID0gJndyay0+Y3R4X2xpc3RbaV07CisJCXVpbnQzMl90IGN0eF9pZCwgc2hhcmVfY3R4ID0g MDsKIAotCQkJZHJtSW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0NSRUFURSwg JmFyZyk7Ci0JCQlpZ3RfYXNzZXJ0KGFyZy5jdHhfaWQpOworCQlpZiAoY3R4LT5pZCkKKwkJCWNv bnRpbnVlOwogCi0JCQl3cmstPmN0eF9saXN0W3ctPmNvbnRleHRdLmlkID0gYXJnLmN0eF9pZDsK KwkJaWYgKGZsYWdzICYgSTkxNSkgeworCQkJc3RydWN0IGxvY2FsX2RybV9pOTE1X2dlbV9jb250 ZXh0X2NyZWF0ZV92MiBhcmdzID0geyB9OwogCi0JCQlpZiAoZmxhZ3MgJiBHTE9CQUxfQkFMQU5D RSkgewotCQkJCXdyay0+Y3R4X2xpc3Rbdy0+Y29udGV4dF0uc3RhdGljX3ZjcyA9IGNvbnRleHRf dmNzX3JyOwotCQkJCWNvbnRleHRfdmNzX3JyIF49IDE7Ci0JCQl9IGVsc2UgewotCQkJCXdyay0+ Y3R4X2xpc3Rbdy0+Y29udGV4dF0uc3RhdGljX3ZjcyA9IGN0eF92Y3M7Ci0JCQkJY3R4X3ZjcyBe PSAxOwotCQkJfQorCQkJLyogRmluZCBleGlzdGluZyBjb250ZXh0IHRvIHNoYXJlIHBwZ3R0IHdp dGguICovCisJCQlmb3IgKGogPSAwOyBqIDwgd3JrLT5ucl9jdHhzOyBqKyspIHsKKwkJCQlpZiAo IXdyay0+Y3R4X2xpc3Rbal0uaWQpCisJCQkJCWNvbnRpbnVlOwogCi0JCQlpZiAod3JrLT5wcmlv KSB7Ci0JCQkJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtIHBhcmFtID0gewotCQkJ CQkuY3R4X2lkID0gYXJnLmN0eF9pZCwKLQkJCQkJLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFN X1BSSU9SSVRZLAotCQkJCQkudmFsdWUgPSB3cmstPnByaW8sCi0JCQkJfTsKLQkJCQlnZW1fY29u dGV4dF9zZXRfcGFyYW0oZmQsICZwYXJhbSk7CisJCQkJYXJncy5mbGFncyB8PSBMT0NBTF9JOTE1 X0dFTV9DT05URVhUX1NIQVJFX0dUVDsKKwkJCQlhcmdzLnNoYXJlX2N0eCA9IHNoYXJlX2N0eCA9 CisJCQkJCXdyay0+Y3R4X2xpc3Rbal0uaWQ7CisJCQkJYnJlYWs7CiAJCQl9CisKKwkJCWlmICgh Y3R4LT50YXJnZXRzX2luc3RhbmNlKQorCQkJCWFyZ3MuZmxhZ3MgfD0gTE9DQUxfSTkxNV9HRU1f Q09OVEVYVF9TSU5HTEVfVElNRUxJTkU7CisKKwkJCWRybUlvY3RsKGZkLCBMT0NBTF9EUk1fSU9D VExfSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEUsCisJCQkJICZhcmdzKTsKKworCQkJY3R4X2lkID0g YXJncy5jdHhfaWQ7CisJCX0gZWxzZSB7CisJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRf Y3JlYXRlIGFyZ3MgPSB7fTsKKworCQkJZHJtSW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9D T05URVhUX0NSRUFURSwgJmFyZ3MpOworCQkJY3R4X2lkID0gYXJncy5jdHhfaWQ7CisJCX0KKwor CQlpZ3RfYXNzZXJ0KGN0eF9pZCk7CisJCWN0eC0+aWQgPSBjdHhfaWQ7CisKKwkJaWYgKGZsYWdz ICYgR0xPQkFMX0JBTEFOQ0UpIHsKKwkJCWN0eC0+c3RhdGljX3ZjcyA9IGNvbnRleHRfdmNzX3Jy OworCQkJY29udGV4dF92Y3NfcnIgXj0gMTsKKwkJfSBlbHNlIHsKKwkJCWN0eC0+c3RhdGljX3Zj cyA9IGN0eF92Y3M7CisJCQljdHhfdmNzIF49IDE7CisJCX0KKworCQlfX2N0eF9zZXRfcHJpbyhj dHhfaWQsIHdyay0+cHJpbyk7CisKKwkJLyoKKwkJICogRG8gd2UgbmVlZCBhIHNlcGFyYXRlIGNv bnRleHQgdG8gc2F0aXNmeSB0aGlzIHdvcmtsb2FkcyB3aGljaAorCQkgKiBib3RoIHdhbnQgdG8g dGFyZ2V0IHNwZWNpZmljIGVuZ2luZXMgYW5kIGJlIGJhbGFuY2VkIGJ5IGk5MTU/CisJCSAqLwor CQlpZiAoKGZsYWdzICYgSTkxNSkgJiYgY3R4LT53YW50c19iYWxhbmNlICYmCisJCSAgICBjdHgt PnRhcmdldHNfaW5zdGFuY2UpIHsKKwkJCXN0cnVjdCBsb2NhbF9kcm1faTkxNV9nZW1fY29udGV4 dF9jcmVhdGVfdjIgYXJncyA9IHt9OworCisJCQlpZ3RfYXNzZXJ0KHNoYXJlX2N0eCk7CisKKwkJ CWFyZ3MuZmxhZ3MgPSBMT0NBTF9JOTE1X0dFTV9DT05URVhUX1NJTkdMRV9USU1FTElORSB8CisJ CQkJICAgICBMT0NBTF9JOTE1X0dFTV9DT05URVhUX1NIQVJFX0dUVDsKKwkJCWFyZ3Muc2hhcmVf Y3R4ID0gc2hhcmVfY3R4OworCisJCQlkcm1Jb2N0bChmZCwgTE9DQUxfRFJNX0lPQ1RMX0k5MTVf R0VNX0NPTlRFWFRfQ1JFQVRFLAorCQkJCSAmYXJncyk7CisKKwkJCWlndF9hc3NlcnQoYXJncy5j dHhfaWQpOworCQkJY3R4X2lkID0gYXJncy5jdHhfaWQ7CisJCQl3cmstPmN0eF9saXN0W2kgKyAx XS5pZCA9IGFyZ3MuY3R4X2lkOworCisJCQlfX2N0eF9zZXRfcHJpbyhjdHhfaWQsIHdyay0+cHJp byk7CisJCX0KKworCQlpZiAoY3R4LT53YW50c19iYWxhbmNlKSB7CisJCQkjZGVmaW5lIExPQ0FM X0k5MTVfQ09OVEVYVF9FTkdJTkVTX0VYVF9MT0FEX0JBTEFOQ0UgMAorCisJCQlzdHJ1Y3QgbG9j YWxfaTkxNV91c2VyX2V4dGVuc2lvbiB7CisJCQkJX191NjQgbmV4dF9leHRlbnNpb247CisJCQkJ X191NjQgbmFtZTsKKwkJCX07CisKKwkJCXN0cnVjdCBsb2NhbF9pOTE1X2NvbnRleHRfZW5naW5l c19sb2FkX2JhbGFuY2UgeworCQkJCXN0cnVjdCBsb2NhbF9pOTE1X3VzZXJfZXh0ZW5zaW9uIGJh c2U7CisKKwkJCQlfX3U2NCBmbGFnczsgLyogYWxsIHVuZGVmaW5lZCBmbGFncyBtdXN0IGJlIHpl cm8gKi8KKwkJCQlfX3U2NCBlbmdpbmVzX21hc2s7CisKKwkJCQlfX3U2NCBtYnpbNF07IC8qIHJl c2VydmVkIGZvciBmdXR1cmUgdXNlOyBtdXN0IGJlIHplcm8gKi8KKwkJCX0gbG9hZF9iYWxhbmNl ID0geworCQkJCS5iYXNlLm5hbWUgPSBMT0NBTF9JOTE1X0NPTlRFWFRfRU5HSU5FU19FWFRfTE9B RF9CQUxBTkNFLAorCQkJCS5lbmdpbmVzX21hc2sgPSAtMSwKKwkJCX07CisKKwkJCXN0cnVjdCBs b2NhbF9pOTE1X2NvbnRleHRfcGFyYW1fZW5naW5lcyB7CisJCQkJX191NjQgZXh0ZW5zaW9uczsK KworCQkJCXN0cnVjdCB7CisJCQkJCV9fdTE2IGNsYXNzOyAvKiBzZWUgZW51bSBkcm1faTkxNV9n ZW1fZW5naW5lX2NsYXNzICovCisJCQkJCV9fdTE2IGluc3RhbmNlOworCQkJCX0gZW5naW5lc1sy XTsKKwkJCX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSkgc2V0X2VuZ2luZXMgPSB7CisJCQkJLmV4 dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIoJmxvYWRfYmFsYW5jZSksCisJCQkJLmVuZ2luZXMg PSB7CisJCQkJCXsgLmNsYXNzID0gSTkxNV9FTkdJTkVfQ0xBU1NfVklERU8sCisJCQkJCSAgLmlu c3RhbmNlID0gMCB9LAorCQkJCQl7IC5jbGFzcyA9IEk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPLAor CQkJCQkgIC5pbnN0YW5jZSA9IDEgfSwKKwkJCQl9LAorCQkJfTsKKworCQkJc3RydWN0IGRybV9p OTE1X2dlbV9jb250ZXh0X3BhcmFtIHBhcmFtID0geworCQkJCS5jdHhfaWQgPSBjdHhfaWQsCisJ CQkJLnBhcmFtID0gTE9DQUxfSTkxNV9DT05URVhUX1BBUkFNX0VOR0lORVMsCisJCQkJLnNpemUg PSBzaXplb2Yoc2V0X2VuZ2luZXMpLAorCQkJCS52YWx1ZSA9IHRvX3VzZXJfcG9pbnRlcigmc2V0 X2VuZ2luZXMpLAorCQkJfTsKKworCQkJZ2VtX2NvbnRleHRfc2V0X3BhcmFtKGZkLCAmcGFyYW0p OwogCQl9CiAJfQogCkBAIC0xMzgwLDcgKzE1NjIsNyBAQCBzdGF0aWMgZW51bSBpbnRlbF9lbmdp bmVfaWQKIGNvbnRleHRfYmFsYW5jZShjb25zdCBzdHJ1Y3Qgd29ya2xvYWRfYmFsYW5jZXIgKmJh bGFuY2VyLAogCQlzdHJ1Y3Qgd29ya2xvYWQgKndyaywgc3RydWN0IHdfc3RlcCAqdykKIHsKLQly ZXR1cm4gZ2V0X3Zjc19lbmdpbmUod3JrLT5jdHhfbGlzdFt3LT5jb250ZXh0XS5zdGF0aWNfdmNz KTsKKwlyZXR1cm4gZ2V0X3Zjc19lbmdpbmUoX19nZXRfY3R4KHdyaywgdyktPnN0YXRpY192Y3Mp OwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50CkBAIC0xNTc0LDYgKzE3NTYsMTIgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCB3b3JrbG9hZF9iYWxhbmNlciBhbGxfYmFsYW5jZXJzW10gPSB7CiAJCS5n ZXRfcWQgPSBnZXRfZW5naW5lX2J1c3ksCiAJCS5iYWxhbmNlID0gYnVzeV9hdmdfYmFsYW5jZSwK IAl9LAorCXsKKwkJLmlkID0gMTEsCisJCS5uYW1lID0gImk5MTUiLAorCQkuZGVzYyA9ICJpOTE1 IGJhbGFuY2luZy4iLAorCQkuZmxhZ3MgPSBJOTE1LAorCX0sCiB9OwogCiBzdGF0aWMgdW5zaWdu ZWQgaW50CkBAIC0xOTUyLDcgKzIxNDAsOCBAQCBzdGF0aWMgdm9pZCAqcnVuX3dvcmtsb2FkKHZv aWQgKmRhdGEpCiAJCQlsYXN0X3N5bmMgPSBmYWxzZTsKIAogCQkJd3JrLT5ucl9iYltlbmdpbmVd Kys7Ci0JCQlpZiAoZW5naW5lID09IFZDUyAmJiB3cmstPmJhbGFuY2VyKSB7CisJCQlpZiAoZW5n aW5lID09IFZDUyAmJiB3cmstPmJhbGFuY2VyICYmCisJCQkgICAgd3JrLT5iYWxhbmNlci0+YmFs YW5jZSkgewogCQkJCWVuZ2luZSA9IHdyay0+YmFsYW5jZXItPmJhbGFuY2Uod3JrLT5iYWxhbmNl ciwKIAkJCQkJCQkJd3JrLCB3KTsKIAkJCQl3cmstPm5yX2JiW2VuZ2luZV0rKzsKQEAgLTIzNzks NiArMjU2OCwxMiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXJldHVybiAx OwogCX0KIAorCWlmICgoZmxhZ3MgJiBWQ1MyUkVNQVApICYmIChmbGFncyAmIEk5MTUpKSB7CisJ CWlmICh2ZXJib3NlKQorCQkJZnByaW50ZihzdGRlcnIsICJWQ1MgcmVtYXBwaW5nIG5vdCBzdXBw b3J0ZWQgd2l0aCBpOTE1IGJhbGFuY2luZyFcbiIpOworCQlyZXR1cm4gMTsKKwl9CisKIAlpZiAo IW5vcF9jYWxpYnJhdGlvbikgewogCQlpZiAodmVyYm9zZSA+IDEpCiAJCQlwcmludGYoIkNhbGli cmF0aW5nIG5vcCBkZWxheSB3aXRoICV1JSUgdG9sZXJhbmNlLi4uXG4iLApAQCAtMjQ2NCwxMSAr MjY1OSwxNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXByaW50ZigiJXUg Y2xpZW50JXMuXG4iLCBjbGllbnRzLCBjbGllbnRzID4gMSA/ICJzIiA6ICIiKTsKIAkJaWYgKGZs YWdzICYgU1dBUFZDUykKIAkJCXByaW50ZigiU3dhcHBpbmcgVkNTIHJpbmdzIGJldHdlZW4gY2xp ZW50cy5cbiIpOwotCQlpZiAoZmxhZ3MgJiBHTE9CQUxfQkFMQU5DRSkKLQkJCXByaW50ZigiVXNp bmcgJXMgYmFsYW5jZXIgaW4gZ2xvYmFsIG1vZGUuXG4iLAotCQkJICAgICAgIGJhbGFuY2VyLT5u YW1lKTsKLQkJZWxzZSBpZiAoYmFsYW5jZXIpCisJCWlmIChmbGFncyAmIEdMT0JBTF9CQUxBTkNF KSB7CisJCQlpZiAoZmxhZ3MgJiBJOTE1KSB7CisJCQkJcHJpbnRmKCJJZ25vcmluZyBnbG9iYWwg YmFsYW5jaW5nIHdpdGggaTkxNSFcbiIpOworCQkJCWZsYWdzICY9IH5HTE9CQUxfQkFMQU5DRTsK KwkJCX0gZWxzZSB7CisJCQkJcHJpbnRmKCJVc2luZyAlcyBiYWxhbmNlciBpbiBnbG9iYWwgbW9k ZS5cbiIsCisJCQkJICAgICAgIGJhbGFuY2VyLT5uYW1lKTsKKwkJCX0KKwkJfSBlbHNlIGlmIChi YWxhbmNlcikgewogCQkJcHJpbnRmKCJVc2luZyAlcyBiYWxhbmNlci5cbiIsIGJhbGFuY2VyLT5u YW1lKTsKKwkJfQogCX0KIAogCWlmIChtYXN0ZXJfd29ya2xvYWQgPj0gMCAmJiBjbGllbnRzID09 IDEpCkBAIC0yNDg1LDcgKzI2ODYsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCWlmIChmbGFncyAmIFNXQVBWQ1MgJiYgaSAmIDEpCiAJCQlmbGFnc18gJj0gflNXQVBWQ1M7 CiAKLQkJaWYgKGZsYWdzICYgR0xPQkFMX0JBTEFOQ0UpIHsKKwkJaWYgKChmbGFncyAmIEdMT0JB TF9CQUxBTkNFKSAmJiAhKGZsYWdzICYgSTkxNSkpIHsKIAkJCXdbaV0tPmJhbGFuY2VyID0gJmds b2JhbF9iYWxhbmNlcjsKIAkJCXdbaV0tPmdsb2JhbF93cmsgPSB3WzBdOwogCQkJd1tpXS0+Z2xv YmFsX2JhbGFuY2VyID0gYmFsYW5jZXI7CmRpZmYgLS1naXQgYS9zY3JpcHRzL21lZGlhLWJlbmNo LnBsIGIvc2NyaXB0cy9tZWRpYS1iZW5jaC5wbAppbmRleCAwNjZiNTQyZjk1ZGYuLmRkZjljMGVj MDVjOCAxMDA3NTUKLS0tIGEvc2NyaXB0cy9tZWRpYS1iZW5jaC5wbAorKysgYi9zY3JpcHRzL21l ZGlhLWJlbmNoLnBsCkBAIC00OSwxMCArNDksMTEgQEAgbXkgJG5vcDsKIG15ICVvcHRzOwogCiBt eSBAYmFsYW5jZXJzID0gKCAncnInLCAncmFuZCcsICdxZCcsICdxZHInLCAncWRhdmcnLCAncnQn LCAncnRyJywgJ3J0YXZnJywKLQkJICAnY29udGV4dCcsICdidXN5JywgJ2J1c3ktYXZnJyApOwor CQkgICdjb250ZXh0JywgJ2J1c3knLCAnYnVzeS1hdmcnLCAnaTkxNScgKTsKIG15ICViYWxfc2tp cF9IID0gKCAncnInID0+IDEsICdyYW5kJyA9PiAxLCAnY29udGV4dCcgPT4gMSwgLCAnYnVzeScg PT4gMSwKLQkJICAgJ2J1c3ktYXZnJyA9PiAxICk7Ci1teSAlYmFsX3NraXBfUiA9ICggJ2NvbnRl eHQnID0+IDEgKTsKKwkJICAgJ2J1c3ktYXZnJyA9PiAxLCAnaTkxNScgPT4gMSApOworbXkgJWJh bF9za2lwX1IgPSAoICdjb250ZXh0JyA9PiAxLCAnaTkxNScgPT4gMSApOworbXkgJWJhbF9za2lw X0cgPSAoICdpOTE1JyA9PiAxICk7CiAKIG15IEB3b3JrbG9hZHMgPSAoCiAJJ21lZGlhX2xvYWRf YmFsYW5jZV8xN2k3LndzaW0nLApAQCAtNDk4LDYgKzQ5OSw4IEBAIGZvcmVhY2ggbXkgJHdyayAo QHNhdHVyYXRpb25fd29ya2xvYWRzKSB7CiAJCQkJbXkgJGJpZDsKIAogCQkJCWlmICgkYmFsIG5l ICcnKSB7CisJCQkJCW5leHQgR0JBTCBpZiAkRyA9fiAnLUcnIGFuZCBleGlzdHMgJGJhbF9za2lw X0d7JGJhbH07CisKIAkJCQkJcHVzaCBAeGFyZ3MsICItYiAkYmFsIjsKIAkJCQkJcHVzaCBAeGFy Z3MsICctUicgdW5sZXNzIGV4aXN0cyAkYmFsX3NraXBfUnskYmFsfTsKIAkJCQkJcHVzaCBAeGFy Z3MsICRHIGlmICRHIG5lICcnOwotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2lndC1kZXYK