From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lionel Landwerlin Subject: [PATCH v8 04/13] drm/i915/perf: allow for CS OA configs to be created lazily Date: Tue, 9 Jul 2019 15:33:42 +0300 Message-ID: <20190709123351.5645-5-lionel.g.landwerlin@intel.com> References: <20190709123351.5645-1-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4DC34896F7 for ; Tue, 9 Jul 2019 12:34:17 +0000 (UTC) In-Reply-To: <20190709123351.5645-1-lionel.g.landwerlin@intel.com> 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 List-Id: intel-gfx@lists.freedesktop.org SGVyZSB3ZSBpbnRyb2R1Y2UgYSBtZWNoYW5pc20gYnkgd2hpY2ggdGhlIGV4ZWNidWYgcGFydCBv ZiB0aGUgaTkxNQpkcml2ZXIgd2lsbCBiZSBhYmxlIHRvIHJlcXVlc3QgdGhhdCBhIGJhdGNoIGJ1 ZmZlciBjb250YWluaW5nIHRoZQpwcm9ncmFtbWluZyBmb3IgYSBwYXJ0aWN1bGFyIE9BIGNvbmZp ZyBiZSBjcmVhdGVkLgoKV2UnbGwgZXhlY3V0ZSB0aGVzZSBPQSBjb25maWd1cmF0aW9uIGJ1ZmZl cnMgcmlnaHQgYmVmb3JlIGV4ZWN1dGluZyBhCnNldCBvZiB1c2Vyc3BhY2UgY29tbWFuZHMgc28g dGhhdCBhIHBhcnRpY3VsYXIgdXNlciBiYXRjaGJ1ZmZlciBiZQpleGVjdXRlZCB3aXRoIGEgZ2l2 ZW4gT0EgY29uZmlndXJhdGlvbi4KClRoaXMgbWVjaGFuaXNtIGVzc2VudGlhbGx5IGFsbG93cyB0 aGUgdXNlcnNwYWNlIGRyaXZlciB0byBnbyB0aHJvdWdoCnNldmVyYWwgT0EgY29uZmlndXJhdGlv biB3aXRob3V0IGhhdmluZyB0byBvcGVuL2Nsb3NlIHRoZSBpOTE1L3BlcmYKc3RyZWFtLgoKdjI6 IE5vIG5lZWQgZm9yIGxvY2tpbmcgb24gb2JqZWN0IE9BIGNvbmZpZyBvYmplY3QgY3JlYXRpb24g KENocmlzKQogICAgRmx1c2ggY3B1IG1hcHBpbmcgb2YgT0EgY29uZmlnIChDaHJpcykKCnYzOiBQ cm9wZXJseSBkZWFsIHdpdGggdGhlIHBlcmZfbWV0cmljIGxvY2sgKENocmlzL0xpb25lbCkKClNp Z25lZC1vZmYtYnk6IExpb25lbCBMYW5kd2VybGluIDxsaW9uZWwuZy5sYW5kd2VybGluQGludGVs LmNvbT4KUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2dwdV9jb21tYW5kcy5oIHwgICAx ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgIHwgIDI0ICsr LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgICAgICAgICAgICAgfCAxODYgKysr KysrKysrKysrKysrLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAxNzUgaW5zZXJ0aW9ucygrKSwgMzYg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf Z3B1X2NvbW1hbmRzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ncHVfY29tbWFu ZHMuaAppbmRleCBlZWMzMWUzNmFjYTcuLmU3ZWZmOWRiMzQzZSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3B1X2NvbW1hbmRzLmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3QvaW50ZWxfZ3B1X2NvbW1hbmRzLmgKQEAgLTEyNiw2ICsxMjYsNyBAQAogICov CiAjZGVmaW5lIE1JX0xPQURfUkVHSVNURVJfSU1NKHgpCU1JX0lOU1RSKDB4MjIsIDIqKHgpLTEp CiAjZGVmaW5lICAgTUlfTFJJX0ZPUkNFX1BPU1RFRAkJKDE8PDEyKQorI2RlZmluZSBNSV9MT0FE X1JFR0lTVEVSX0lNTV9NQVhfUkVHUyAoMTI2KQogI2RlZmluZSBNSV9TVE9SRV9SRUdJU1RFUl9N RU0gICAgICAgIE1JX0lOU1RSKDB4MjQsIDEpCiAjZGVmaW5lIE1JX1NUT1JFX1JFR0lTVEVSX01F TV9HRU44ICAgTUlfSU5TVFIoMHgyNCwgMikKICNkZWZpbmUgICBNSV9TUk1fTFJNX0dMT0JBTF9H VFQJCSgxPDwyMikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGU0YjAxMDA4NWYyZC4uMDQx OWRmZDBkZWEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTEwOTYsNiArMTA5Niw4IEBA IHN0cnVjdCBpOTE1X29hX3JlZyB7CiB9OwogCiBzdHJ1Y3QgaTkxNV9vYV9jb25maWcgeworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1OworCiAJY2hhciB1dWlkW1VVSURfU1RSSU5HX0xF TiArIDFdOwogCWludCBpZDsKIApAQCAtMTExMCw2ICsxMTEyLDEwIEBAIHN0cnVjdCBpOTE1X29h X2NvbmZpZyB7CiAJc3RydWN0IGF0dHJpYnV0ZSAqYXR0cnNbMl07CiAJc3RydWN0IGRldmljZV9h dHRyaWJ1dGUgc3lzZnNfbWV0cmljX2lkOwogCisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsKKworCXN0cnVjdCBsaXN0X2hlYWQgdm1hX2xpbms7CisKIAlhdG9taWNfdCByZWZfY291 bnQ7CiB9OwogCkBAIC0xNjkzLDExICsxNjk5LDIxIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl IHsKIAkJc3RydWN0IG11dGV4IG1ldHJpY3NfbG9jazsKIAogCQkvKgotCQkgKiBMaXN0IG9mIGR5 bmFtaWMgY29uZmlndXJhdGlvbnMsIHlvdSBuZWVkIHRvIGhvbGQKLQkJICogZGV2X3ByaXYtPnBl cmYubWV0cmljc19sb2NrIHRvIGFjY2VzcyBpdC4KKwkJICogTGlzdCBvZiBkeW5hbWljIGNvbmZp Z3VyYXRpb25zIChzdHJ1Y3QgaTkxNV9vYV9jb25maWcpLCB5b3UKKwkJICogbmVlZCB0byBob2xk IGRldl9wcml2LT5wZXJmLm1ldHJpY3NfbG9jayB0byBhY2Nlc3MgaXQuCiAJCSAqLwogCQlzdHJ1 Y3QgaWRyIG1ldHJpY3NfaWRyOwogCisJCS8qCisJCSAqIExpc3Qgb2YgZHluYW1pYyBjb25maWd1 cmF0aW9ucyAoc3RydWN0IGk5MTVfb2FfY29uZmlnKQorCQkgKiB3aGljaCBoYXZlIGFuIGFsbG9j YXRlZCBidWZmZXIgaW4gR0dUVCBmb3IgcmVjb25maWd1cmF0aW9uLAorCQkgKiB5b3UgbmVlZCB0 byBob2xkIGRldl9wcml2LT5wZXJmLm1ldHJpY3NfbG9jayB0byBhY2Nlc3MgaXQuCisJCSAqIEVs ZW1lbnRzIGFyZSBhZGRlZCB0byB0aGUgbGlzdCBsYXppbGx5IG9uIGV4ZWNidWYgKHdoZW4gYQor CQkgKiBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gaXMgcmVxdWVzdGVkKS4gVGhlIGxpc3QgaXMg ZnJlZWQKKwkJICogdXBvbiBjbG9zaW5nIHRoZSBwZXJmIHN0cmVhbS4KKwkJICovCisJCXN0cnVj dCBsaXN0X2hlYWQgbWV0cmljc19idWZmZXJzOworCiAJCS8qCiAJCSAqIExvY2sgYXNzb2NpYXRl ZCB3aXRoIGFueXRoaW5nIGJlbG93IHdpdGhpbiB0aGlzIHN0cnVjdHVyZQogCQkgKiBleGNlcHQg ZXhjbHVzaXZlX3N0cmVhbS4KQEAgLTI1ODYsNiArMjYwMiwxMCBAQCBpbnQgaTkxNV9wZXJmX3Jl bW92ZV9jb25maWdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIHZv aWQgaTkxNV9vYV9pbml0X3JlZ19zdGF0ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs CiAJCQkgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAogCQkJICAgIHUzMiAqcmVnX3N0YXRl KTsKK2ludCBpOTE1X3BlcmZfZ2V0X29hX2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwKKwkJCSAgICBpbnQgbWV0cmljc19zZXQsCisJCQkgICAgc3RydWN0IGk5MTVfb2FfY29u ZmlnICoqb3V0X2NvbmZpZywKKwkJCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqKm91 dF9vYmopOwogCiAvKiBpOTE1X2dlbV9ldmljdC5jICovCiBpbnQgX19tdXN0X2NoZWNrIGk5MTVf Z2VtX2V2aWN0X3NvbWV0aGluZyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wZXJmLmMKaW5kZXggZmVkOTU5MTgxNzczLi44ODJkNzA1NmFlYzMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcGVyZi5jCkBAIC0zNjYsOSArMzY2LDIwIEBAIHN0cnVjdCBwZXJmX29w ZW5fcHJvcGVydGllcyB7CiAJaW50IG9hX3BlcmlvZF9leHBvbmVudDsKIH07CiAKLXN0YXRpYyB2 b2lkIGZyZWVfb2FfY29uZmlnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJ CSAgIHN0cnVjdCBpOTE1X29hX2NvbmZpZyAqb2FfY29uZmlnKQorc3RhdGljIHZvaWQgcHV0X29h X2NvbmZpZyhzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZykKIHsKKwlpZiAoIWF0b21p Y19kZWNfYW5kX3Rlc3QoJm9hX2NvbmZpZy0+cmVmX2NvdW50KSkKKwkJcmV0dXJuOworCisJaWYg KG9hX2NvbmZpZy0+b2JqKSB7CisJCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gb2Ff Y29uZmlnLT5pOTE1OworCisJCW11dGV4X2xvY2soJmk5MTUtPnBlcmYubWV0cmljc19sb2NrKTsK KwkJbGlzdF9kZWwoJm9hX2NvbmZpZy0+dm1hX2xpbmspOworCQlpOTE1X2dlbV9vYmplY3RfcHV0 KG9hX2NvbmZpZy0+b2JqKTsKKwkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5wZXJmLm1ldHJpY3NfbG9j ayk7CisJfQorCiAJaWYgKCFQVFJfRVJSKG9hX2NvbmZpZy0+ZmxleF9yZWdzKSkKIAkJa2ZyZWUo b2FfY29uZmlnLT5mbGV4X3JlZ3MpOwogCWlmICghUFRSX0VSUihvYV9jb25maWctPmJfY291bnRl cl9yZWdzKSkKQEAgLTM3OCwzOCArMzg5LDEyNCBAQCBzdGF0aWMgdm9pZCBmcmVlX29hX2NvbmZp ZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJa2ZyZWUob2FfY29uZmlnKTsK IH0KIAotc3RhdGljIHZvaWQgcHV0X29hX2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCi0JCQkgIHN0cnVjdCBpOTE1X29hX2NvbmZpZyAqb2FfY29uZmlnKQorc3RhdGlj IHUzMiAqd3JpdGVfY3NfbWlfbHJpKHUzMiAqY3MsIGNvbnN0IHN0cnVjdCBpOTE1X29hX3JlZyAq cmVnX2RhdGEsIHUzMiBuX3JlZ3MpCiB7Ci0JaWYgKCFhdG9taWNfZGVjX2FuZF90ZXN0KCZvYV9j b25maWctPnJlZl9jb3VudCkpCi0JCXJldHVybjsKKwl1MzIgaTsKKworCWZvciAoaSA9IDA7IGkg PCBuX3JlZ3M7IGkrKykgeworCQlpZiAoKGkgJSBNSV9MT0FEX1JFR0lTVEVSX0lNTV9NQVhfUkVH UykgPT0gMCkgeworCQkJdTMyIG5fbHJpID0gbWluKG5fcmVncyAtIGksCisJCQkJCSh1MzIpIE1J X0xPQURfUkVHSVNURVJfSU1NX01BWF9SRUdTKTsKKworCQkJKmNzKysgPSBNSV9MT0FEX1JFR0lT VEVSX0lNTShuX2xyaSk7CisJCX0KKwkJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChyZWdf ZGF0YVtpXS5hZGRyKTsKKwkJKmNzKysgPSByZWdfZGF0YVtpXS52YWx1ZTsKKwl9CiAKLQlmcmVl X29hX2NvbmZpZyhkZXZfcHJpdiwgb2FfY29uZmlnKTsKKwlyZXR1cm4gY3M7CiB9CiAKLXN0YXRp YyBpbnQgZ2V0X29hX2NvbmZpZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0J CQkgaW50IG1ldHJpY3Nfc2V0LAotCQkJIHN0cnVjdCBpOTE1X29hX2NvbmZpZyAqKm91dF9jb25m aWcpCitzdGF0aWMgaW50IGFsbG9jX29hX2NvbmZpZ19idWZmZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCisJCQkJICBzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZykKIHsK LQlpbnQgcmV0OworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpibzsKKwlzaXplX3QgY29u ZmlnX2xlbmd0aCA9IDA7CisJdTMyICpjczsKIAotCWlmIChtZXRyaWNzX3NldCA9PSAxKSB7Ci0J CSpvdXRfY29uZmlnID0gJmRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnOwotCQlhdG9taWNf aW5jKCZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5yZWZfY291bnQpOwotCQlyZXR1cm4g MDsKKwlpZiAob2FfY29uZmlnLT5tdXhfcmVnc19sZW4gPiAwKSB7CisJCWNvbmZpZ19sZW5ndGgg Kz0gRElWX1JPVU5EX1VQKG9hX2NvbmZpZy0+bXV4X3JlZ3NfbGVuLAorCQkJCQkgICAgICBNSV9M T0FEX1JFR0lTVEVSX0lNTV9NQVhfUkVHUykgKiA0OworCQljb25maWdfbGVuZ3RoICs9IG9hX2Nv bmZpZy0+bXV4X3JlZ3NfbGVuICogODsKKwl9CisJaWYgKG9hX2NvbmZpZy0+Yl9jb3VudGVyX3Jl Z3NfbGVuID4gMCkgeworCQljb25maWdfbGVuZ3RoICs9IERJVl9ST1VORF9VUChvYV9jb25maWct PmJfY291bnRlcl9yZWdzX2xlbiwKKwkJCQkJICAgICAgTUlfTE9BRF9SRUdJU1RFUl9JTU1fTUFY X1JFR1MpICogNDsKKwkJY29uZmlnX2xlbmd0aCArPSBvYV9jb25maWctPmJfY291bnRlcl9yZWdz X2xlbiAqIDg7CisJfQorCWlmIChvYV9jb25maWctPmZsZXhfcmVnc19sZW4gPiAwKSB7CisJCWNv bmZpZ19sZW5ndGggKz0gRElWX1JPVU5EX1VQKG9hX2NvbmZpZy0+ZmxleF9yZWdzX2xlbiwKKwkJ CQkJICAgICAgTUlfTE9BRF9SRUdJU1RFUl9JTU1fTUFYX1JFR1MpICogNDsKKwkJY29uZmlnX2xl bmd0aCArPSBvYV9jb25maWctPmZsZXhfcmVnc19sZW4gKiA4OwogCX0KKwljb25maWdfbGVuZ3Ro ICs9IDQ7IC8qIE1JX0JBVENIX0JVRkZFUl9FTkQgKi8KKwljb25maWdfbGVuZ3RoID0gQUxJR04o Y29uZmlnX2xlbmd0aCwgSTkxNV9HVFRfUEFHRV9TSVpFKTsKIAotCXJldCA9IG11dGV4X2xvY2tf aW50ZXJydXB0aWJsZSgmZGV2X3ByaXYtPnBlcmYubWV0cmljc19sb2NrKTsKKwlibyA9IGk5MTVf Z2VtX29iamVjdF9jcmVhdGVfc2htZW0oaTkxNSwgY29uZmlnX2xlbmd0aCk7CisJaWYgKElTX0VS UihibykpCisJCXJldHVybiBQVFJfRVJSKGJvKTsKKworCWNzID0gaTkxNV9nZW1fb2JqZWN0X3Bp bl9tYXAoYm8sIEk5MTVfTUFQX1dCKTsKKwlpZiAoSVNfRVJSKGNzKSkgeworCQlpOTE1X2dlbV9v YmplY3RfcHV0KGJvKTsKKwkJcmV0dXJuIFBUUl9FUlIoY3MpOworCX0KKworCWNzID0gd3JpdGVf Y3NfbWlfbHJpKGNzLCBvYV9jb25maWctPm11eF9yZWdzLCBvYV9jb25maWctPm11eF9yZWdzX2xl bik7CisJY3MgPSB3cml0ZV9jc19taV9scmkoY3MsIG9hX2NvbmZpZy0+Yl9jb3VudGVyX3JlZ3Ms IG9hX2NvbmZpZy0+Yl9jb3VudGVyX3JlZ3NfbGVuKTsKKwljcyA9IHdyaXRlX2NzX21pX2xyaShj cywgb2FfY29uZmlnLT5mbGV4X3JlZ3MsIG9hX2NvbmZpZy0+ZmxleF9yZWdzX2xlbik7CisKKwkq Y3MrKyA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7CisKKwlpOTE1X2dlbV9vYmplY3RfZmx1c2hfbWFw KGJvKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGJvKTsKKworCW9hX2NvbmZpZy0+b2Jq ID0gYm87CisKKwlyZXR1cm4gMDsKK30KKworaW50IGk5MTVfcGVyZl9nZXRfb2FfY29uZmlnKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAorCQkJICAgIGludCBtZXRyaWNzX3NldCwKKwkJ CSAgICBzdHJ1Y3QgaTkxNV9vYV9jb25maWcgKipvdXRfY29uZmlnLAorCQkJICAgIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICoqb3V0X29iaikKK3sKKwlpbnQgcmV0ID0gMDsKKwlzdHJ1Y3Qg aTkxNV9vYV9jb25maWcgKm9hX2NvbmZpZzsKKworCWlmICghaTkxNS0+cGVyZi5pbml0aWFsaXpl ZCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUo Jmk5MTUtPnBlcmYubWV0cmljc19sb2NrKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0J Km91dF9jb25maWcgPSBpZHJfZmluZCgmZGV2X3ByaXYtPnBlcmYubWV0cmljc19pZHIsIG1ldHJp Y3Nfc2V0KTsKLQlpZiAoISpvdXRfY29uZmlnKQotCQlyZXQgPSAtRUlOVkFMOwotCWVsc2UKLQkJ YXRvbWljX2luYygmKCpvdXRfY29uZmlnKS0+cmVmX2NvdW50KTsKKwlpZiAobWV0cmljc19zZXQg PT0gMSkgeworCQlvYV9jb25maWcgPSAmaTkxNS0+cGVyZi5vYS50ZXN0X2NvbmZpZzsKKwl9IGVs c2UgeworCQlvYV9jb25maWcgPSBpZHJfZmluZCgmaTkxNS0+cGVyZi5tZXRyaWNzX2lkciwgbWV0 cmljc19zZXQpOworCQlpZiAoIW9hX2NvbmZpZykgeworCQkJcmV0ID0gLUVJTlZBTDsKKwkJCWdv dG8gZXJyX3VubG9jazsKKwkJfQorCX0KKworCWlmIChvdXRfY29uZmlnKSB7CisJCWF0b21pY19p bmMoJm9hX2NvbmZpZy0+cmVmX2NvdW50KTsKKwkJKm91dF9jb25maWcgPSBvYV9jb25maWc7CisJ fQogCi0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2xvY2spOworCWlmIChv dXRfb2JqKSB7CisJCWlmIChvYV9jb25maWctPm9iaikgeworCQkJKm91dF9vYmogPSBpOTE1X2dl bV9vYmplY3RfZ2V0KG9hX2NvbmZpZy0+b2JqKTsKKwkJfSBlbHNlIHsKKwkJCXJldCA9IGFsbG9j X29hX2NvbmZpZ19idWZmZXIoaTkxNSwgb2FfY29uZmlnKTsKKwkJCWlmIChyZXQpCisJCQkJZ290 byBlcnJfdW5sb2NrOworCisJCQlsaXN0X2FkZCgmb2FfY29uZmlnLT52bWFfbGluaywKKwkJCQkg Jmk5MTUtPnBlcmYubWV0cmljc19idWZmZXJzKTsKKwkJCSpvdXRfb2JqID0gaTkxNV9nZW1fb2Jq ZWN0X2dldChvYV9jb25maWctPm9iaik7CisJCX0KKwl9CisKK2Vycl91bmxvY2s6CisJbXV0ZXhf dW5sb2NrKCZpOTE1LT5wZXJmLm1ldHJpY3NfbG9jayk7CisKKwlpZiAocmV0ICYmIG91dF9jb25m aWcpIHsKKwkJcHV0X29hX2NvbmZpZyhvYV9jb25maWcpOworCQkqb3V0X2NvbmZpZyA9IE5VTEw7 CisJfQogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTEzODAsNyArMTQ3Nyw3IEBAIHN0YXRpYyB2b2lk IGk5MTVfb2Ffc3RyZWFtX2Rlc3Ryb3koc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSkK IAlpZiAoc3RyZWFtLT5jdHgpCiAJCW9hX3B1dF9yZW5kZXJfY3R4X2lkKHN0cmVhbSk7CiAKLQlw dXRfb2FfY29uZmlnKGRldl9wcml2LCBzdHJlYW0tPm9hX2NvbmZpZyk7CisJcHV0X29hX2NvbmZp ZyhzdHJlYW0tPm9hX2NvbmZpZyk7CiAKIAlpZiAoZGV2X3ByaXYtPnBlcmYub2Euc3B1cmlvdXNf cmVwb3J0X3JzLm1pc3NlZCkgewogCQlEUk1fTk9URSgiJWQgc3B1cmlvdXMgT0EgcmVwb3J0IG5v dGljZXMgc3VwcHJlc3NlZCBkdWUgdG8gcmF0ZWxpbWl0aW5nXG4iLApAQCAtMjExNyw3ICsyMjE0 LDggQEAgc3RhdGljIGludCBpOTE1X29hX3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3Ry ZWFtICpzdHJlYW0sCiAJCX0KIAl9CiAKLQlyZXQgPSBnZXRfb2FfY29uZmlnKGRldl9wcml2LCBw cm9wcy0+bWV0cmljc19zZXQsICZzdHJlYW0tPm9hX2NvbmZpZyk7CisJcmV0ID0gaTkxNV9wZXJm X2dldF9vYV9jb25maWcoZGV2X3ByaXYsIHByb3BzLT5tZXRyaWNzX3NldCwKKwkJCQkgICAgICAm c3RyZWFtLT5vYV9jb25maWcsIE5VTEwpOwogCWlmIChyZXQpIHsKIAkJRFJNX0RFQlVHKCJJbnZh bGlkIE9BIGNvbmZpZyBpZD0laVxuIiwgcHJvcHMtPm1ldHJpY3Nfc2V0KTsKIAkJZ290byBlcnJf Y29uZmlnOwpAQCAtMjE1NSw2ICsyMjUzLDggQEAgc3RhdGljIGludCBpOTE1X29hX3N0cmVhbV9p bml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCWdvdG8gZXJyX2VuYWJsZTsK IAl9CiAKKwlEUk1fREVCVUcoIm9wZW5pbmcgc3RyZWFtIG9hIGNvbmZpZyB1dWlkPSVzXG4iLCBz dHJlYW0tPm9hX2NvbmZpZy0+dXVpZCk7CisKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0u c3RydWN0X211dGV4KTsKIAogCXJldHVybiAwOwpAQCAtMjE2OCw3ICsyMjY4LDcgQEAgc3RhdGlj IGludCBpOTE1X29hX3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0s CiAJZnJlZV9vYV9idWZmZXIoZGV2X3ByaXYpOwogCiBlcnJfb2FfYnVmX2FsbG9jOgotCXB1dF9v YV9jb25maWcoZGV2X3ByaXYsIHN0cmVhbS0+b2FfY29uZmlnKTsKKwlwdXRfb2FfY29uZmlnKHN0 cmVhbS0+b2FfY29uZmlnKTsKIAogCWludGVsX3VuY29yZV9mb3JjZXdha2VfcHV0KCZkZXZfcHJp di0+dW5jb3JlLCBGT1JDRVdBS0VfQUxMKTsKIAlpbnRlbF9ydW50aW1lX3BtX3B1dCgmZGV2X3By aXYtPnJ1bnRpbWVfcG0sIHN0cmVhbS0+d2FrZXJlZik7CkBAIC0yNTM1LDkgKzI2MzUsMjEgQEAg c3RhdGljIGludCBpOTE1X3BlcmZfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qg ZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtID0gZmlsZS0+ cHJpdmF0ZV9kYXRhOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVh bS0+ZGV2X3ByaXY7CisJc3RydWN0IGk5MTVfb2FfY29uZmlnICpvYV9jb25maWcsICpuZXh0Owog CiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBlcmYubG9jayk7CisKIAlpOTE1X3BlcmZfZGVzdHJv eV9sb2NrZWQoc3RyZWFtKTsKKworCS8qIERpc3Bvc2Ugb2YgYWxsIG9hIGNvbmZpZyBiYXRjaCBi dWZmZXJzLiAqLworCW11dGV4X2xvY2soJmRldl9wcml2LT5wZXJmLm1ldHJpY3NfbG9jayk7CisJ bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKG9hX2NvbmZpZywgbmV4dCwgJmRldl9wcml2LT5wZXJm Lm1ldHJpY3NfYnVmZmVycywgdm1hX2xpbmspIHsKKwkJbGlzdF9kZWwoJm9hX2NvbmZpZy0+dm1h X2xpbmspOworCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9hX2NvbmZpZy0+b2JqKTsKKwkJb2FfY29u ZmlnLT5vYmogPSBOVUxMOworCX0KKwltdXRleF91bmxvY2soJmRldl9wcml2LT5wZXJmLm1ldHJp Y3NfbG9jayk7CisKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5wZXJmLmxvY2spOwogCiAJLyog UmVsZWFzZSB0aGUgcmVmZXJlbmNlIHRoZSBwZXJmIHN0cmVhbSBrZXB0IG9uIHRoZSBkcml2ZXIu ICovCkBAIC0yOTczLDYgKzMwODUsNyBAQCB2b2lkIGk5MTVfcGVyZl9yZWdpc3RlcihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaWYgKHJldCkKIAkJZ290byBzeXNmc19lcnJv cjsKIAorCWRldl9wcml2LT5wZXJmLm9hLnRlc3RfY29uZmlnLmk5MTUgPSBkZXZfcHJpdjsKIAlh dG9taWNfc2V0KCZkZXZfcHJpdi0+cGVyZi5vYS50ZXN0X2NvbmZpZy5yZWZfY291bnQsIDEpOwog CiAJZ290byBleGl0OwpAQCAtMzIyOSw2ICszMzQyLDcgQEAgaW50IGk5MTVfcGVyZl9hZGRfY29u ZmlnX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCXJldHVybiAt RU5PTUVNOwogCX0KIAorCW9hX2NvbmZpZy0+aTkxNSA9IGRldl9wcml2OwogCWF0b21pY19zZXQo Jm9hX2NvbmZpZy0+cmVmX2NvdW50LCAxKTsKIAogCWlmICghdXVpZF9pc192YWxpZChhcmdzLT51 dWlkKSkgewpAQCAtMzMyOCw3ICszNDQyLDcgQEAgaW50IGk5MTVfcGVyZl9hZGRfY29uZmlnX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiBzeXNmc19lcnI6CiAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2xvY2spOwogcmVnX2VycjoKLQlwdXRf b2FfY29uZmlnKGRldl9wcml2LCBvYV9jb25maWcpOworCXB1dF9vYV9jb25maWcob2FfY29uZmln KTsKIAlEUk1fREVCVUcoIkZhaWxlZCB0byBhZGQgbmV3IE9BIGNvbmZpZ1xuIik7CiAJcmV0dXJu IGVycjsKIH0KQEAgLTMzNjQsMTMgKzM0NzgsMTMgQEAgaW50IGk5MTVfcGVyZl9yZW1vdmVfY29u ZmlnX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAKIAlyZXQgPSBt dXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldl9wcml2LT5wZXJmLm1ldHJpY3NfbG9jayk7CiAJ aWYgKHJldCkKLQkJZ290byBsb2NrX2VycjsKKwkJcmV0dXJuIHJldDsKIAogCW9hX2NvbmZpZyA9 IGlkcl9maW5kKCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2lkciwgKmFyZyk7CiAJaWYgKCFvYV9j b25maWcpIHsKIAkJRFJNX0RFQlVHKCJGYWlsZWQgdG8gcmVtb3ZlIHVua25vd24gT0EgY29uZmln XG4iKTsKIAkJcmV0ID0gLUVOT0VOVDsKLQkJZ290byBjb25maWdfZXJyOworCQlnb3RvIGVycl91 bmxvY2s7CiAJfQogCiAJR0VNX0JVR19PTigqYXJnICE9IG9hX2NvbmZpZy0+aWQpOwpAQCAtMzM4 MCwxMyArMzQ5NCwxNiBAQCBpbnQgaTkxNV9wZXJmX3JlbW92ZV9jb25maWdfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAogCWlkcl9yZW1vdmUoJmRldl9wcml2LT5w ZXJmLm1ldHJpY3NfaWRyLCAqYXJnKTsKIAorCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBlcmYu bWV0cmljc19sb2NrKTsKKwogCURSTV9ERUJVRygiUmVtb3ZlZCBjb25maWcgJXMgaWQ9JWlcbiIs IG9hX2NvbmZpZy0+dXVpZCwgb2FfY29uZmlnLT5pZCk7CiAKLQlwdXRfb2FfY29uZmlnKGRldl9w cml2LCBvYV9jb25maWcpOworCXB1dF9vYV9jb25maWcob2FfY29uZmlnKTsKKworCXJldHVybiAw OwogCi1jb25maWdfZXJyOgorZXJyX3VubG9jazoKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5w ZXJmLm1ldHJpY3NfbG9jayk7Ci1sb2NrX2VycjoKIAlyZXR1cm4gcmV0OwogfQogCkBAIC0zNTI4 LDYgKzM2NDUsOCBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAkJaW5pdF93YWl0cXVldWVfaGVhZCgmZGV2X3ByaXYtPnBlcmYub2EucG9s bF93cSk7CiAKIAkJSU5JVF9MSVNUX0hFQUQoJmRldl9wcml2LT5wZXJmLnN0cmVhbXMpOworCQlJ TklUX0xJU1RfSEVBRCgmZGV2X3ByaXYtPnBlcmYubWV0cmljc19idWZmZXJzKTsKKwogCQltdXRl eF9pbml0KCZkZXZfcHJpdi0+cGVyZi5sb2NrKTsKIAkJc3Bpbl9sb2NrX2luaXQoJmRldl9wcml2 LT5wZXJmLm9hLm9hX2J1ZmZlci5wdHJfbG9jayk7CiAKQEAgLTM1NDQsMTAgKzM2NjMsOSBAQCB2 b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAog c3RhdGljIGludCBkZXN0cm95X2NvbmZpZyhpbnQgaWQsIHZvaWQgKnAsIHZvaWQgKmRhdGEpCiB7 Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGF0YTsKIAlzdHJ1Y3QgaTkx NV9vYV9jb25maWcgKm9hX2NvbmZpZyA9IHA7CiAKLQlwdXRfb2FfY29uZmlnKGRldl9wcml2LCBv YV9jb25maWcpOworCXB1dF9vYV9jb25maWcob2FfY29uZmlnKTsKIAogCXJldHVybiAwOwogfQpA QCAtMzU2MSw3ICszNjc5LDcgQEAgdm9pZCBpOTE1X3BlcmZfZmluaShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJaWYgKCFkZXZfcHJpdi0+cGVyZi5pbml0aWFsaXplZCkKIAkJ cmV0dXJuOwogCi0JaWRyX2Zvcl9lYWNoKCZkZXZfcHJpdi0+cGVyZi5tZXRyaWNzX2lkciwgZGVz dHJveV9jb25maWcsIGRldl9wcml2KTsKKwlpZHJfZm9yX2VhY2goJmRldl9wcml2LT5wZXJmLm1l dHJpY3NfaWRyLCBkZXN0cm95X2NvbmZpZywgTlVMTCk7CiAJaWRyX2Rlc3Ryb3koJmRldl9wcml2 LT5wZXJmLm1ldHJpY3NfaWRyKTsKIAogCXVucmVnaXN0ZXJfc3lzY3RsX3RhYmxlKGRldl9wcml2 LT5wZXJmLnN5c2N0bF9oZWFkZXIpOwotLSAKMi4yMi4wCgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZng=