From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Micha=C5=82=20Winiarski?= Subject: [PATCH v4 11/12] drm/i915/guc: Preemption! With GuC Date: Wed, 25 Oct 2017 22:00:19 +0200 Message-ID: <20171025200020.16636-12-michal.winiarski@intel.com> References: <20171025200020.16636-1-michal.winiarski@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id EA8366E30D for ; Wed, 25 Oct 2017 20:05:09 +0000 (UTC) In-Reply-To: <20171025200020.16636-1-michal.winiarski@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 UHJldHR5IHNpbWlsYXIgdG8gd2hhdCB3ZSBoYXZlIG9uIGV4ZWNsaXN0cy4KV2UncmUgcmV1c2lu ZyBtb3N0IG9mIHRoZSBHRU0gY29kZSwgaG93ZXZlciwgZHVlIHRvIEd1QyBxdWlya3Mgd2UgbmVl ZCBhCmNvdXBsZSBvZiBleHRyYSBiaXRzLgpQcmVlbXB0aW9uIGlzIGltcGxlbWVudGVkIGFzIEd1 QyBhY3Rpb24sIGFuZCBhY3Rpb25zIGNhbiBiZSBwcmV0dHkgc2xvdy4KQmVjYXVzZSBvZiB0aGF0 LCB3ZSdyZSB1c2luZyBhIG11dGV4IHRvIHNlcmlhbGl6ZSB0aGVtLiBTaW5jZSB3ZSdyZQpyZXF1 ZXN0aW5nIHByZWVtcHRpb24gZnJvbSB0aGUgdGFza2xldCwgdGhlIHRhc2sgb2YgY3JlYXRpbmcg YSB3b3JraXRlbQphbmQgd3JhcHBpbmcgaXQgaW4gR3VDIGFjdGlvbiBpcyBkZWxlZ2F0ZWQgdG8g YSB3b3JrZXIuCgpUbyBkaXN0aW5ndWlzaCB0aGF0IHByZWVtcHRpb24gaGFzIGZpbmlzaGVkLCB3 ZSdyZSB1c2luZyBhZGRpdGlvbmFsCnBpZWNlIG9mIEhXU1AsIGFuZCBzaW5jZSB3ZSdyZSBub3Qg Z2V0dGluZyBjb250ZXh0IHN3aXRjaCBpbnRlcnJ1cHRzLAp3ZSdyZSBhbHNvIGFkZGluZyBhIHVz ZXIgaW50ZXJydXB0LgoKVGhlIGZhY3QgdGhhdCBvdXIgc3BlY2lhbCBwcmVlbXB0IGNvbnRleHQg aGFzIGNvbXBsZXRlZCB1bmZvcnR1bmF0ZWx5CmRvZXNuJ3QgbWVhbiB0aGF0IHdlJ3JlIHJlYWR5 IHRvIHN1Ym1pdCBuZXcgd29yay4gV2UgYWxzbyBuZWVkIHRvIHdhaXQKZm9yIEd1QyB0byBmaW5p c2ggaXRzIG93biBwcm9jZXNzaW5nLgoKdjI6IERvbid0IGNvbXBpbGUgb3V0IHRoZSB3YWl0IGZv ciBHdUMsIGhhbmRsZSB3b3JrcXVldWUgZmx1c2ggb24gcmVzZXQsCm5vIG5lZWQgZm9yIG9yZGVy ZWQgd29ya3F1ZXVlLCBwdXQgb24gYSByZXZpZXdlciBoYXQgd2hlbiBsb29raW5nIGF0IG15IG93 bgpwYXRjaGVzIChDaHJpcykKTW92ZSBzdHJ1Y3Qgd29yayBhcm91bmQgaW4gaW50ZWxfZ3VjLCBt b3ZlIHVzZXIgaW50ZXJydXB1dCBvdXRzaWRlIG9mCmNvbmRpdGlvbmFsIChNaWNoYcWCKQpLZWVw IHJpbmcgYXJvdW5kIHJhdGhlciB0aGFuIGNoYXNlIHRob3VnaCBpbnRlbF9jb250ZXh0Cgp2Mzog RXh0cmFjdCBXQSBmb3IgZmx1c2hpbmcgZ2d0dCB3cml0ZXMgdG8gYSBoZWxwZXIgKENocmlzKQpL ZWVwIHdvcmtfc3RydWN0IGluIGludGVsX2d1YyByYXRoZXIgdGhhbiBlbmdpbmUgKE1pY2hhxYIp ClVzZSBvcmRlcmVkIHdvcmtxdWV1ZSBmb3IgaW5qZWN0X3ByZWVtcHQgd29ya2VyIHRvIGF2b2lk IEd1QyBxdWlya3MuCgp2NDogRHJvcCBub3cgdW51c2VkIElOVEVMX0dVQ19QUkVFTVBUX09QVElP Tl9JTU1FRElBVEUgKERhbmllbGUpCkRyb3Agc3RyYXkgbmV3bGluZXMsIHVzZSBjb250YWluZXJf b2YgZm9yIGludGVsX2d1YyBpbiB3b3JrZXIsCmNoZWNrIGZvciBwcmVzZW5jZSBvZiB3b3JrcXVl dWUgd2hlbiBmbHVzaGluZyBpdCwgcmF0aGVyIHRoYW4KZW5hYmxlX2d1Y19zdWJtaXNzaW9uIG1v ZHBhcmFtLCByZW9yZGVyIHByZWVtcHQgcG9zdHByb2Nlc3NpbmcgKENocmlzKQoKU2lnbmVkLW9m Zi1ieTogTWljaGHFgiBXaW5pYXJza2kgPG1pY2hhbC53aW5pYXJza2lAaW50ZWwuY29tPgpDYzog Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBKZWZmIE1jR2VlIDxq ZWZmLm1jZ2VlQGludGVsLmNvbT4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVu QGxpbnV4LmludGVsLmNvbT4KQ2M6IE9zY2FyIE1hdGVvIDxvc2Nhci5tYXRlb0BpbnRlbC5jb20+ CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICAgICB8ICAgMyArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICAgIHwgIDEwICsrCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAyMDggKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oICAgICAgICAgICB8ICAg OCArKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAgIHwgICA0ICst CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaCAgICAgICAgICAgfCAgIDEgLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oICAgIHwgICA2ICsKIDcgZmlsZXMg Y2hhbmdlZCwgMjIyIGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCmluZGV4IDdiODcxODAyYWUzNi4uYWY3NDU3NDk1MDljIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKQEAgLTM3Myw4ICszNzMsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ2V0cGFyYW0o c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJCXZhbHVlIHw9IEk5MTVfU0NI RURVTEVSX0NBUF9QUklPUklUWTsKIAogCQkJaWYgKEhBU19MT0dJQ0FMX1JJTkdfUFJFRU1QVElP TihkZXZfcHJpdikgJiYKLQkJCSAgICBpOTE1X21vZHBhcmFtcy5lbmFibGVfZXhlY2xpc3RzICYm Ci0JCQkgICAgIWk5MTVfbW9kcGFyYW1zLmVuYWJsZV9ndWNfc3VibWlzc2lvbikKKwkJCSAgICBp OTE1X21vZHBhcmFtcy5lbmFibGVfZXhlY2xpc3RzKQogCQkJCXZhbHVlIHw9IEk5MTVfU0NIRURV TEVSX0NBUF9QUkVFTVBUSU9OOwogCQl9CiAJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK aW5kZXggZDgwM2VmNWY0YTdmLi5jMjUwNmZiM2E0ODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YwpAQCAtMjkyMSw2ICsyOTIxLDE2IEBAIGk5MTVfZ2VtX3Jlc2V0X3ByZXBhcmVfZW5naW5lKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAl0YXNrbGV0X2tpbGwoJmVuZ2luZS0+ZXhl Y2xpc3RzLmlycV90YXNrbGV0KTsKIAl0YXNrbGV0X2Rpc2FibGUoJmVuZ2luZS0+ZXhlY2xpc3Rz LmlycV90YXNrbGV0KTsKIAorCS8qCisJICogV2UncmUgdXNpbmcgd29ya2VyIHRvIHF1ZXVlIHBy ZWVtcHRpb24gcmVxdWVzdHMgZnJvbSB0aGUgdGFza2xldCBpbgorCSAqIEd1QyBzdWJtaXNzaW9u IG1vZGUuCisJICogRXZlbiB0aG91Z2ggdGFza2xldCB3YXMgZGlzYWJsZWQsIHdlIG1heSBzdGls bCBoYXZlIGEgd29ya2VyIHF1ZXVlZC4KKwkgKiBMZXQncyBtYWtlIHN1cmUgdGhhdCBhbGwgd29y a2VycyBzY2hlZHVsZWQgYmVmb3JlIGRpc2FibGluZyB0aGUKKwkgKiB0YXNrbGV0IGFyZSBjb21w bGV0ZWQgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCB0aGUgcmVzZXQuCisJICovCisJaWYgKGVuZ2lu ZS0+aTkxNS0+Z3VjLnByZWVtcHRfd3EpCisJCWZsdXNoX3dvcmtxdWV1ZShlbmdpbmUtPmk5MTUt Pmd1Yy5wcmVlbXB0X3dxKTsKKwogCWlmIChlbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKQogCQll bmdpbmUtPmlycV9zZXFub19iYXJyaWVyKGVuZ2luZSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCA2MDBlZjlkMzM3NzMuLmM3NjQ3YWZiOTY5ZSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtNTYxLDYg KzU2MSwxMDkgQEAgc3RhdGljIHZvaWQgZ3VjX2FkZF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9ndWMg Kmd1YywKIAlzcGluX3VubG9jaygmY2xpZW50LT53cV9sb2NrKTsKIH0KIAorLyoKKyAqIFdoZW4g d2UncmUgZG9pbmcgc3VibWlzc2lvbnMgdXNpbmcgcmVndWxhciBleGVjbGlzdHMgYmFja2VuZCwg d3JpdGluZyB0bworICogRUxTUCBmcm9tIENQVSBzaWRlIGlzIGVub3VnaCB0byBtYWtlIHN1cmUg dGhhdCB3cml0ZXMgdG8gcmluZ2J1ZmZlciBwYWdlcworICogcGlubmVkIGluIG1hcHBhYmxlIGFw ZXJ0dXJlIHBvcnRpb24gb2YgR0dUVCBhcmUgdmlzaWJsZSB0byBjb21tYW5kIHN0cmVhbWVyLgor ICogV3JpdGVzIGRvbmUgYnkgR3VDIG9uIG91ciBiZWhhbGYgYXJlIG5vdCBndWFyYW50ZWVpbmcg c3VjaCBvcmRlcmluZywKKyAqIHRoZXJlZm9yZSwgdG8gZW5zdXJlIHRoZSBmbHVzaCwgd2UncmUg aXNzdWluZyBhIFBPU1RJTkcgUkVBRC4KKyAqLworc3RhdGljIHZvaWQgZmx1c2hfZ2d0dF93cml0 ZXMoc3RydWN0IGk5MTVfdm1hICp2bWEpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNSh2bWEtPm9iai0+YmFzZS5kZXYpOworCisJaWYgKGk5MTVfdm1hX2lz X21hcF9hbmRfZmVuY2VhYmxlKHZtYSkpCisJCVBPU1RJTkdfUkVBRF9GVyhHVUNfU1RBVFVTKTsK K30KKworI2RlZmluZSBHVUNfUFJFRU1QVF9GSU5JU0hFRCAweDEKKyNkZWZpbmUgR1VDX1BSRUVN UFRfQlJFQURDUlVNQl9EV09SRFMgMHg4CitzdGF0aWMgdm9pZCBpbmplY3RfcHJlZW1wdF9jb250 ZXh0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgZ3VjX3ByZWVtcHRfd29y ayAqcHJlZW1wdF93b3JrID0KKwkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqcHJlZW1wdF93 b3JrKSwgd29yayk7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcHJlZW1wdF93 b3JrLT5lbmdpbmU7CisJc3RydWN0IGludGVsX2d1YyAqZ3VjID0gY29udGFpbmVyX29mKHByZWVt cHRfd29yaywgdHlwZW9mKCpndWMpLAorCQkJCQkgICAgIHByZWVtcHRfd29ya1tlbmdpbmUtPmlk XSk7CisJc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50ID0gZ3VjLT5wcmVlbXB0X2NsaWVu dDsKKwlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZyA9IGNsaWVudC0+b3duZXItPmVuZ2luZVtlbmdp bmUtPmlkXS5yaW5nOworCXUzMiBjdHhfZGVzYyA9IGxvd2VyXzMyX2JpdHMoaW50ZWxfbHJfY29u dGV4dF9kZXNjcmlwdG9yKGNsaWVudC0+b3duZXIsCisJCQkJCQkJCSBlbmdpbmUpKTsKKwl1MzIg KmNzID0gcmluZy0+dmFkZHIgKyByaW5nLT50YWlsOworCXUzMiBkYXRhWzddOworCisJaWYgKGVu Z2luZS0+aWQgPT0gUkNTKSB7CisJCWNzID0gZ2VuOF9lbWl0X2dndHRfd3JpdGVfcmNzKGNzLCBH VUNfUFJFRU1QVF9GSU5JU0hFRCwKKwkJCQlpbnRlbF9od3NfcHJlZW1wdF9kb25lX2FkZHJlc3Mo ZW5naW5lKSk7CisJfSBlbHNlIHsKKwkJY3MgPSBnZW44X2VtaXRfZ2d0dF93cml0ZShjcywgR1VD X1BSRUVNUFRfRklOSVNIRUQsCisJCQkJaW50ZWxfaHdzX3ByZWVtcHRfZG9uZV9hZGRyZXNzKGVu Z2luZSkpOworCQkqY3MrKyA9IE1JX05PT1A7CisJCSpjcysrID0gTUlfTk9PUDsKKwl9CisJKmNz KysgPSBNSV9VU0VSX0lOVEVSUlVQVDsKKwkqY3MrKyA9IE1JX05PT1A7CisKKwlHRU1fQlVHX09O KCFJU19BTElHTkVEKHJpbmctPnNpemUsCisJCQkgICAgICAgR1VDX1BSRUVNUFRfQlJFQURDUlVN Ql9EV09SRFMgKiBzaXplb2YodTMyKSkpOworCUdFTV9CVUdfT04oKHZvaWQgKiljcyAtIChyaW5n LT52YWRkciArIHJpbmctPnRhaWwpICE9CisJCSAgIEdVQ19QUkVFTVBUX0JSRUFEQ1JVTUJfRFdP UkRTICogc2l6ZW9mKHUzMikpOworCisJcmluZy0+dGFpbCArPSBHVUNfUFJFRU1QVF9CUkVBRENS VU1CX0RXT1JEUyAqIHNpemVvZih1MzIpOworCXJpbmctPnRhaWwgJj0gKHJpbmctPnNpemUgLSAx KTsKKworCWZsdXNoX2dndHRfd3JpdGVzKHJpbmctPnZtYSk7CisKKwlzcGluX2xvY2tfaXJxKCZj bGllbnQtPndxX2xvY2spOworCWd1Y193cV9pdGVtX2FwcGVuZChjbGllbnQsIGVuZ2luZS0+Z3Vj X2lkLCBjdHhfZGVzYywKKwkJCSAgIHJpbmctPnRhaWwgLyBzaXplb2YodTY0KSwgMCk7CisJc3Bp bl91bmxvY2tfaXJxKCZjbGllbnQtPndxX2xvY2spOworCisJZGF0YVswXSA9IElOVEVMX0dVQ19B Q1RJT05fUkVRVUVTVF9QUkVFTVBUSU9OOworCWRhdGFbMV0gPSBjbGllbnQtPnN0YWdlX2lkOwor CWRhdGFbMl0gPSBJTlRFTF9HVUNfUFJFRU1QVF9PUFRJT05fRFJPUF9XT1JLX1EgfAorCQkgIElO VEVMX0dVQ19QUkVFTVBUX09QVElPTl9EUk9QX1NVQk1JVF9ROworCWRhdGFbM10gPSBlbmdpbmUt Pmd1Y19pZDsKKwlkYXRhWzRdID0gZ3VjLT5leGVjYnVmX2NsaWVudC0+cHJpb3JpdHk7CisJZGF0 YVs1XSA9IGd1Yy0+ZXhlY2J1Zl9jbGllbnQtPnN0YWdlX2lkOworCWRhdGFbNl0gPSBndWNfZ2d0 dF9vZmZzZXQoZ3VjLT5zaGFyZWRfZGF0YSk7CisKKwlpZiAoV0FSTl9PTihpbnRlbF9ndWNfc2Vu ZChndWMsIGRhdGEsIEFSUkFZX1NJWkUoZGF0YSkpKSkgeworCQlleGVjbGlzdHNfY2xlYXJfYWN0 aXZlKCZlbmdpbmUtPmV4ZWNsaXN0cywKKwkJCQkgICAgICAgRVhFQ0xJU1RTX0FDVElWRV9QUkVF TVBUKTsKKwkJdGFza2xldF9zY2hlZHVsZSgmZW5naW5lLT5leGVjbGlzdHMuaXJxX3Rhc2tsZXQp OworCX0KK30KKworLyoKKyAqIFdlJ3JlIHVzaW5nIHVzZXIgaW50ZXJydXB0IGFuZCBIV1NQIHZh bHVlIHRvIG1hcmsgdGhhdCBwcmVlbXB0aW9uIGhhcworICogZmluaXNoZWQgYW5kIEdQVSBpcyBp ZGxlLiBOb3JtYWxseSwgd2UgY291bGQgdW53aW5kIGFuZCBjb250aW51ZSBzaW1pbGFyIHRvCisg KiBleGVjbGlzdHMgc3VibWlzc2lvbiBwYXRoLiBVbmZvcnR1bmF0ZWx5LCB3aXRoIEd1QyB3ZSBh bHNvIG5lZWQgdG8gd2FpdCBmb3IKKyAqIGl0IHRvIGZpbmlzaCBpdHMgb3duIHBvc3Rwcm9jZXNz aW5nLCBiZWZvcmUgYXR0ZW1wdGluZyB0byBzdWJtaXQuIE90aGVyd2lzZQorICogR3VDIG1heSBz aWxlbnRseSBpZ25vcmUgb3VyIHN1Ym1pc3Npb25zLCBhbmQgdGh1cyB3ZSByaXNrIGxvc2luZyBy ZXF1ZXN0IGF0CisgKiBiZXN0LCBleGVjdXRpbmcgb3V0LW9mLW9yZGVyIGFuZCBjYXVzaW5nIGtl cm5lbCBwYW5pYyBhdCB3b3JzdC4KKyAqLworI2RlZmluZSBHVUNfUFJFRU1QVF9QT1NUUFJPQ0VT U19ERUxBWV9NUyAxMAorc3RhdGljIHZvaWQgd2FpdF9mb3JfZ3VjX3ByZWVtcHRfcmVwb3J0KHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMg PSAmZW5naW5lLT5pOTE1LT5ndWM7CisJc3RydWN0IGd1Y19zaGFyZWRfY3R4X2RhdGEgKmRhdGEg PSBndWMtPnNoYXJlZF9kYXRhX3ZhZGRyOworCXN0cnVjdCBndWNfY3R4X3JlcG9ydCAqcmVwb3J0 ID0KKwkJJmRhdGEtPnByZWVtcHRfY3R4X3JlcG9ydFtlbmdpbmUtPmd1Y19pZF07CisKKwlXQVJO X09OKHdhaXRfZm9yX2F0b21pYyhyZXBvcnQtPnJlcG9ydF9yZXR1cm5fc3RhdHVzID09CisJCQkJ SU5URUxfR1VDX1JFUE9SVF9TVEFUVVNfQ09NUExFVEUsCisJCQkJR1VDX1BSRUVNUFRfUE9TVFBS T0NFU1NfREVMQVlfTVMpKTsKKwkvKgorCSAqIEd1QyBpcyBleHBlY3RpbmcgdGhhdCB3ZSdyZSBh bHNvIGdvaW5nIHRvIGNsZWFyIHRoZSBhZmZlY3RlZCBjb250ZXh0CisJICogY291bnRlciwgbGV0 J3MgYWxzbyByZXNldCB0aGUgcmV0dXJuIHN0YXR1cyB0byBub3QgZGVwZW5kIG9uIEd1QworCSAq IHJlc2V0dGluZyBpdCBhZnRlciByZWNpZXZpbmcgYW5vdGhlciBwcmVlbXB0IGFjdGlvbgorCSAq LworCXJlcG9ydC0+YWZmZWN0ZWRfY291bnQgPSAwOworCXJlcG9ydC0+cmVwb3J0X3JldHVybl9z dGF0dXMgPSBJTlRFTF9HVUNfUkVQT1JUX1NUQVRVU19VTktOT1dOOworfQorCisKIC8qKgogICog aTkxNV9ndWNfc3VibWl0KCkgLSBTdWJtaXQgY29tbWFuZHMgdGhyb3VnaCBHdUMKICAqIEBlbmdp bmU6IGVuZ2luZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbW1hbmRzCkBAIC01NzAsOCArNjczLDcg QEAgc3RhdGljIHZvaWQgZ3VjX2FkZF9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKICAq Lwogc3RhdGljIHZvaWQgaTkxNV9ndWNfc3VibWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5 MTU7Ci0Jc3RydWN0IGludGVsX2d1YyAqZ3VjID0gJmRldl9wcml2LT5ndWM7CisJc3RydWN0IGlu dGVsX2d1YyAqZ3VjID0gJmVuZ2luZS0+aTkxNS0+Z3VjOwogCXN0cnVjdCBpbnRlbF9lbmdpbmVf ZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzID0gJmVuZ2luZS0+ZXhlY2xpc3RzOwogCXN0cnVj dCBleGVjbGlzdF9wb3J0ICpwb3J0ID0gZXhlY2xpc3RzLT5wb3J0OwogCXVuc2lnbmVkIGludCBu OwpAQCAtNTg0LDggKzY4Niw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ3VjX3N1Ym1pdChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJCWlmIChycSAmJiBjb3VudCA9PSAwKSB7CiAJCQlw b3J0X3NldCgmcG9ydFtuXSwgcG9ydF9wYWNrKHJxLCArK2NvdW50KSk7CiAKLQkJCWlmIChpOTE1 X3ZtYV9pc19tYXBfYW5kX2ZlbmNlYWJsZShycS0+cmluZy0+dm1hKSkKLQkJCQlQT1NUSU5HX1JF QURfRlcoR1VDX1NUQVRVUyk7CisJCQlmbHVzaF9nZ3R0X3dyaXRlcyhycS0+cmluZy0+dm1hKTsK IAogCQkJZ3VjX2FkZF9yZXF1ZXN0KGd1YywgcnEpOwogCQl9CkBAIC02MTMsMTMgKzcxNCwzMiBA QCBzdGF0aWMgdm9pZCBpOTE1X2d1Y19kZXF1ZXVlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIAlib29sIHN1Ym1pdCA9IGZhbHNlOwogCXN0cnVjdCByYl9ub2RlICpyYjsKIAotCWlm IChwb3J0X2lzc2V0KHBvcnQpKQotCQlwb3J0Kys7Ci0KIAlzcGluX2xvY2tfaXJxKCZlbmdpbmUt PnRpbWVsaW5lLT5sb2NrKTsKIAlyYiA9IGV4ZWNsaXN0cy0+Zmlyc3Q7CiAJR0VNX0JVR19PTihy Yl9maXJzdCgmZXhlY2xpc3RzLT5xdWV1ZSkgIT0gcmIpOwotCXdoaWxlIChyYikgeworCisJaWYg KCFyYikKKwkJZ290byB1bmxvY2s7CisKKwlpZiAoSEFTX0xPR0lDQUxfUklOR19QUkVFTVBUSU9O KGVuZ2luZS0+aTkxNSkgJiYgcG9ydF9pc3NldChwb3J0KSkgeworCQlzdHJ1Y3QgZ3VjX3ByZWVt cHRfd29yayAqcHJlZW1wdF93b3JrID0KKwkJCSZlbmdpbmUtPmk5MTUtPmd1Yy5wcmVlbXB0X3dv cmtbZW5naW5lLT5pZF07CisKKwkJaWYgKHJiX2VudHJ5KHJiLCBzdHJ1Y3QgaTkxNV9wcmlvbGlz dCwgbm9kZSktPnByaW9yaXR5ID4KKwkJICAgIG1heChwb3J0X3JlcXVlc3QocG9ydCktPnByaW90 cmVlLnByaW9yaXR5LCAwKSkgeworCQkJZXhlY2xpc3RzX3NldF9hY3RpdmUoZXhlY2xpc3RzLAor CQkJCQkgICAgIEVYRUNMSVNUU19BQ1RJVkVfUFJFRU1QVCk7CisJCQlxdWV1ZV93b3JrKGVuZ2lu ZS0+aTkxNS0+Z3VjLnByZWVtcHRfd3EsCisJCQkJICAgJnByZWVtcHRfd29yay0+d29yayk7CisJ CQlnb3RvIHVubG9jazsKKwkJfSBlbHNlIGlmIChwb3J0X2lzc2V0KGxhc3RfcG9ydCkpIHsKKwkJ CWdvdG8gdW5sb2NrOworCQl9CisKKwkJcG9ydCsrOworCX0KKworCWRvIHsKIAkJc3RydWN0IGk5 MTVfcHJpb2xpc3QgKnAgPSByYl9lbnRyeShyYiwgdHlwZW9mKCpwKSwgbm9kZSk7CiAJCXN0cnVj dCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEsICpybjsKIApAQCAtNjQ5LDcgKzc2OSw3IEBAIHN0 YXRpYyB2b2lkIGk5MTVfZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQogCQlJTklUX0xJU1RfSEVBRCgmcC0+cmVxdWVzdHMpOwogCQlpZiAocC0+cHJpb3JpdHkgIT0g STkxNV9QUklPUklUWV9OT1JNQUwpCiAJCQlrbWVtX2NhY2hlX2ZyZWUoZW5naW5lLT5pOTE1LT5w cmlvcml0aWVzLCBwKTsKLQl9CisJfSB3aGlsZSAocmIpOwogZG9uZToKIAlleGVjbGlzdHMtPmZp cnN0ID0gcmI7CiAJaWYgKHN1Ym1pdCkgewpAQCAtNjU3LDYgKzc3Nyw3IEBAIHN0YXRpYyB2b2lk IGk5MTVfZ3VjX2RlcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCQlleGVj bGlzdHNfc2V0X2FjdGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfVVNFUik7CiAJCWk5 MTVfZ3VjX3N1Ym1pdChlbmdpbmUpOwogCX0KK3VubG9jazoKIAlzcGluX3VubG9ja19pcnEoJmVu Z2luZS0+dGltZWxpbmUtPmxvY2spOwogfQogCkBAIC02NjUsOCArNzg2LDYgQEAgc3RhdGljIHZv aWQgaTkxNV9ndWNfaXJxX2hhbmRsZXIodW5zaWduZWQgbG9uZyBkYXRhKQogCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKiBjb25zdCBlbmdpbmUgPSAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqKWRh dGE7CiAJc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMgPSAm ZW5naW5lLT5leGVjbGlzdHM7CiAJc3RydWN0IGV4ZWNsaXN0X3BvcnQgKnBvcnQgPSBleGVjbGlz dHMtPnBvcnQ7Ci0JY29uc3Qgc3RydWN0IGV4ZWNsaXN0X3BvcnQgKiBjb25zdCBsYXN0X3BvcnQg PQotCQkmZXhlY2xpc3RzLT5wb3J0W2V4ZWNsaXN0cy0+cG9ydF9tYXNrXTsKIAlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3JlcXVlc3QgKnJxOwogCiAJcnEgPSBwb3J0X3JlcXVlc3QoJnBvcnRbMF0pOwpA QCAtNjgxLDcgKzgwMCwxOSBAQCBzdGF0aWMgdm9pZCBpOTE1X2d1Y19pcnFfaGFuZGxlcih1bnNp Z25lZCBsb25nIGRhdGEpCiAJaWYgKCFycSkKIAkJZXhlY2xpc3RzX2NsZWFyX2FjdGl2ZShleGVj bGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfVVNFUik7CiAKLQlpZiAoIXBvcnRfaXNzZXQobGFzdF9w b3J0KSkKKwlpZiAoZXhlY2xpc3RzX2lzX2FjdGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJ VkVfUFJFRU1QVCkgJiYKKwkgICAgaW50ZWxfcmVhZF9zdGF0dXNfcGFnZShlbmdpbmUsIEk5MTVf R0VNX0hXU19QUkVFTVBUX0lOREVYKSA9PQorCSAgICBHVUNfUFJFRU1QVF9GSU5JU0hFRCkgewor CQlleGVjbGlzdHNfY2FuY2VsX3BvcnRfcmVxdWVzdHMoJmVuZ2luZS0+ZXhlY2xpc3RzKTsKKwkJ ZXhlY2xpc3RzX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKGV4ZWNsaXN0cyk7CisKKwkJd2Fp dF9mb3JfZ3VjX3ByZWVtcHRfcmVwb3J0KGVuZ2luZSk7CisKKwkJZXhlY2xpc3RzX2NsZWFyX2Fj dGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVfUFJFRU1QVCk7CisJCWludGVsX3dyaXRl X3N0YXR1c19wYWdlKGVuZ2luZSwgSTkxNV9HRU1fSFdTX1BSRUVNUFRfSU5ERVgsIDApOworCX0K KworCWlmICghZXhlY2xpc3RzX2lzX2FjdGl2ZShleGVjbGlzdHMsIEVYRUNMSVNUU19BQ1RJVkVf UFJFRU1QVCkpCiAJCWk5MTVfZ3VjX2RlcXVldWUoZW5naW5lKTsKIH0KIApAQCAtMTA1Niw2ICsx MTg3LDUwIEBAIHN0YXRpYyB2b2lkIGd1Y19hZHNfZGVzdHJveShzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMpCiAJaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmd1Yy0+YWRzX3ZtYSk7CiB9CiAKK3N0 YXRpYyBpbnQgZ3VjX3ByZWVtcHRfd29ya19jcmVhdGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7 CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWVudW0gaW50ZWxfZW5naW5lX2lk IGlkOworCisJLyoKKwkgKiBFdmVuIHRob3VnaCBib3RoIHNlbmRpbmcgR3VDIGFjdGlvbiwgYW5k IGFkZGluZyBhIG5ldyB3b3JraXRlbSB0bworCSAqIEd1QyB3b3JrcXVldWUgYXJlIHNlcmlhbGl6 ZWQgKGVhY2ggd2l0aCBpdHMgb3duIGxvY2tpbmcpLCBzaW5jZQorCSAqIHdlJ3JlIHVzaW5nIG11 dGxpcGxlIGVuZ2luZXMsIGl0J3MgcG9zc2libGUgdGhhdCB3ZSdyZSBnb2luZyB0bworCSAqIGlz c3VlIGEgcHJlZW1wdCByZXF1ZXN0IHdpdGggdHdvIChvciBtb3JlIC0gZWFjaCBmb3IgZGlmZmVy ZW50CisJICogZW5naW5lKSB3b3JraXRlbXMgaW4gR3VDIHF1ZXVlLiBJbiB0aGlzIHNpdHVhdGlv biwgR3VDIG1heSBzdWJtaXQKKwkgKiBhbGwgb2YgdGhlbSwgd2hpY2ggd2lsbCBtYWtlIHVzIHZl cnkgY29uZnVzZWQuCisJICogT3VyIHByZWVtcHRpb24gY29udGV4dHMgbWF5IGV2ZW4gYWxyZWFk eSBiZSBjb21wbGV0ZSAtIGJlZm9yZSB3ZQorCSAqIGV2ZW4gaGFkIHRoZSBjaGFuY2UgdG8gc2Vu dCB0aGUgcHJlZW1wdCBhY3Rpb24gdG8gR3VDIS4gUmF0aGVyCisJICogdGhhbiBpbnRyb2R1Y2lu ZyB5ZXQgYW5vdGhlciBsb2NrLCB3ZSBjYW4ganVzdCB1c2Ugb3JkZXJlZCB3b3JrcXVldWUKKwkg KiB0byBtYWtlIHN1cmUgd2UncmUgYWx3YXlzIHNlbmRpbmcgYSBzaW5nbGUgcHJlZW1wdGlvbiBy ZXF1ZXN0IHdpdGggYQorCSAqIHNpbmdsZSB3b3JraXRlbS4KKwkgKi8KKwlndWMtPnByZWVtcHRf d3EgPSBhbGxvY19vcmRlcmVkX3dvcmtxdWV1ZSgiaTkxNS1ndWNfcHJlZW1wdCIsCisJCQkJCQkg IFdRX0hJR0hQUkkpOworCWlmICghZ3VjLT5wcmVlbXB0X3dxKQorCQlyZXR1cm4gLUVOT01FTTsK KworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkgeworCQlndWMtPnByZWVt cHRfd29ya1tpZF0uZW5naW5lID0gZW5naW5lOworCQlJTklUX1dPUksoJmd1Yy0+cHJlZW1wdF93 b3JrW2lkXS53b3JrLCBpbmplY3RfcHJlZW1wdF9jb250ZXh0KTsKKwl9CisKKwlyZXR1cm4gMDsK K30KKworc3RhdGljIHZvaWQgZ3VjX3ByZWVtcHRfd29ya19kZXN0cm95KHN0cnVjdCBpbnRlbF9n dWMgKmd1YykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9f aTkxNShndWMpOworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwllbnVtIGludGVs X2VuZ2luZV9pZCBpZDsKKworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkK KwkJY2FuY2VsX3dvcmtfc3luYygmZ3VjLT5wcmVlbXB0X3dvcmtbaWRdLndvcmspOworCisJZGVz dHJveV93b3JrcXVldWUoZ3VjLT5wcmVlbXB0X3dxKTsKK30KKwogLyoKICAqIFNldCB1cCB0aGUg bWVtb3J5IHJlc291cmNlcyB0byBiZSBzaGFyZWQgd2l0aCB0aGUgR3VDICh2aWEgdGhlIEdHVFQp CiAgKiBhdCBmaXJtd2FyZSBsb2FkaW5nIHRpbWUuCkBAIC0xMDgwLDEyICsxMjU1LDE4IEBAIGlu dCBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCWlmIChyZXQgPCAwKQogCQlnb3RvIGVycl9zaGFyZWRfZGF0YTsKIAorCXJldCA9IGd1 Y19wcmVlbXB0X3dvcmtfY3JlYXRlKGd1Yyk7CisJaWYgKHJldCkKKwkJZ290byBlcnJfbG9nOwor CiAJcmV0ID0gZ3VjX2Fkc19jcmVhdGUoZ3VjKTsKIAlpZiAocmV0IDwgMCkKLQkJZ290byBlcnJf bG9nOworCQlnb3RvIGVycl93cTsKIAogCXJldHVybiAwOwogCitlcnJfd3E6CisJZ3VjX3ByZWVt cHRfd29ya19kZXN0cm95KGd1Yyk7CiBlcnJfbG9nOgogCWludGVsX2d1Y19sb2dfZGVzdHJveShn dWMpOwogZXJyX3NoYXJlZF9kYXRhOgpAQCAtMTEwMCw2ICsxMjgxLDcgQEAgdm9pZCBpOTE1X2d1 Y19zdWJtaXNzaW9uX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXN0 cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3VjOwogCiAJZ3VjX2Fkc19kZXN0cm95 KGd1Yyk7CisJZ3VjX3ByZWVtcHRfd29ya19kZXN0cm95KGd1Yyk7CiAJaW50ZWxfZ3VjX2xvZ19k ZXN0cm95KGd1Yyk7CiAJZ3VjX3NoYXJlZF9kYXRhX2Rlc3Ryb3koZ3VjKTsKIAlndWNfc3RhZ2Vf ZGVzY19wb29sX2Rlc3Ryb3koZ3VjKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKaW5kZXggNmNh NTVjNWJlZDNjLi41Mzg2MTVmZjVlYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Yy5oCkBAIC0z NCw2ICszNCwxMSBAQAogI2luY2x1ZGUgImk5MTVfZ3VjX3JlZy5oIgogI2luY2x1ZGUgImk5MTVf dm1hLmgiCiAKK3N0cnVjdCBndWNfcHJlZW1wdF93b3JrIHsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmU7CisJc3RydWN0IHdvcmtfc3RydWN0IHdvcms7Cit9OworCiAvKgogICogVG9w IGxldmVsIHN0cnVjdHVyZSBvZiBHdUMuIEl0IGhhbmRsZXMgZmlybXdhcmUgbG9hZGluZyBhbmQg bWFuYWdlcyBjbGllbnQKICAqIHBvb2wgYW5kIGRvb3JiZWxscy4gaW50ZWxfZ3VjIG93bnMgYSBp OTE1X2d1Y19jbGllbnQgdG8gcmVwbGFjZSB0aGUgbGVnYWN5CkBAIC02MCw2ICs2NSw5IEBAIHN0 cnVjdCBpbnRlbF9ndWMgewogCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmV4ZWNidWZfY2xpZW50 OwogCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKnByZWVtcHRfY2xpZW50OwogCisJc3RydWN0IGd1 Y19wcmVlbXB0X3dvcmsgcHJlZW1wdF93b3JrW0k5MTVfTlVNX0VOR0lORVNdOworCXN0cnVjdCB3 b3JrcXVldWVfc3RydWN0ICpwcmVlbXB0X3dxOworCiAJREVDTEFSRV9CSVRNQVAoZG9vcmJlbGxf Yml0bWFwLCBHVUNfTlVNX0RPT1JCRUxMUyk7CiAJLyogQ3ljbGljIGNvdW50ZXIgbW9kIHBhZ2Vz aXplCSovCiAJdTMyIGRiX2NhY2hlbGluZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXgg YjVkMzgyZWY4ZDg1Li42ODQwZWM4ZGIwMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBA IC0zODUsNyArMzg1LDcgQEAgc3RhdGljIHZvaWQgX191bndpbmRfaW5jb21wbGV0ZV9yZXF1ZXN0 cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJfQogfQogCi1zdGF0aWMgdm9pZAor dm9pZAogZXhlY2xpc3RzX3Vud2luZF9pbmNvbXBsZXRlX3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9l bmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMpCiB7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lID0KQEAgLTY5Niw3ICs2OTYsNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZGVxdWV1 ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAJfQogfQogCi1zdGF0aWMgdm9pZAor dm9pZAogZXhlY2xpc3RzX2NhbmNlbF9wb3J0X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVf ZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzKQogewogCXN0cnVjdCBleGVjbGlzdF9wb3J0ICpw b3J0ID0gZXhlY2xpc3RzLT5wb3J0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuaAppbmRleCA2ODlm ZGUxYTYzYTkuLjE3MTgyY2UyOTY3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKQEAgLTEw Nyw3ICsxMDcsNiBAQCBpbnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0b3Ioc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCwKIAlyZXR1cm4gY3R4LT5lbmdpbmVbZW5naW5lLT5pZF0ubHJjX2Rlc2M7 CiB9CiAKLQogLyogRXhlY2xpc3RzICovCiBpbnQgaW50ZWxfc2FuaXRpemVfZW5hYmxlX2V4ZWNs aXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAgIGludCBlbmFi bGVfZXhlY2xpc3RzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAppbmRl eCA0YTVhMDg5ODUzMjguLjY5YWQ4NzVmZDAxMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaApAQCAtNTU3LDYgKzU1NywxMiBAQCBleGVjbGlzdHNfaXNfYWN0aXZlKGNv bnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICpleGVjbGlzdHMsCiAJcmV0dXJuIHRl c3RfYml0KGJpdCwgKHVuc2lnbmVkIGxvbmcgKikmZXhlY2xpc3RzLT5hY3RpdmUpOwogfQogCit2 b2lkCitleGVjbGlzdHNfY2FuY2VsX3BvcnRfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9l eGVjbGlzdHMgKiBjb25zdCBleGVjbGlzdHMpOworCit2b2lkCitleGVjbGlzdHNfdW53aW5kX2lu Y29tcGxldGVfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9leGVjbGlzdHMgKmV4ZWNsaXN0 cyk7CisKIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50CiBleGVjbGlzdHNfbnVtX3BvcnRzKGNv bnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfZXhlY2xpc3RzICogY29uc3QgZXhlY2xpc3RzKQogewot LSAKMi4xMy42CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK