From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 02/17] drm/i915: Allow sharing the idle-barrier from other kernel requests Date: Tue, 30 Jul 2019 14:30:20 +0100 Message-ID: <20190730133035.1977-3-chris@chris-wilson.co.uk> References: <20190730133035.1977-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 C7FB16E511 for ; Tue, 30 Jul 2019 13:30:56 +0000 (UTC) In-Reply-To: <20190730133035.1977-1-chris@chris-wilson.co.uk> 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 QnkgcGxhY2luZyBvdXIgaWRsZS1iYXJyaWVycyBpbiB0aGUgaTkxNV9hY3RpdmUgZmVuY2UgdHJl ZSwgd2UgZXhwb3NlCnRob3NlIGZvciByZXVzZSBieSBvdGhlciBjb21wb25lbnRzIHRoYXQgYXJl IGlzc3VpbmcgcmVxdWVzdHMgYWxvbmcgdGhlCmtlcm5lbF9jb250ZXh0LiBSZXVzaW5nIHRoZSBw cm90by1iYXJyaWVyIGFjdGl2ZV9ub2RlIGlzIHBlcmZlY3RseSBmaW5lCmFzIHRoZSBuZXcgcmVx dWVzdCBpbXBsaWVzIGEgY29udGV4dC1zd2l0Y2gsIGFuZCBzbyBhbiBvcHBvcnR1bmUgcG9pbnQK dG8gcnVuIHRoZSBpZGxlLWJhcnJpZXIuIEhvd2V2ZXIsIHRoZSBwcm90by1iYXJyaWVyIGlzIG5v dCBlcXVpdmFsZW50CnRvIGEgbm9ybWFsIGFjdGl2ZV9ub2RlIGFuZCBjYXJlIG11c3QgYmUgdGFr ZW4gdG8gYXZvaWQgZGVyZWZlcmVuY2luZyB0aGUKRVJSX1BUUiB1c2VkIGFzIGl0cyByZXF1ZXN0 IG1hcmtlci4KClJlcG9ydGVkLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdl cmxpbkBpbnRlbC5jb20+CkZpeGVzOiBjZTQ3NmM4MGI4YmYgKCJkcm0vaTkxNTogS2VlcCBjb250 ZXh0cyBwaW5uZWQgdW50aWwgYWZ0ZXIgdGhlIG5leHQga2VybmVsIGNvbnRleHQgc3dpdGNoIikK Rml4ZXM6IGE5ODc3ZGEyZDYyOSAoImRybS9pOTE1L29hOiBSZWNvbmZpZ3VyZSBjb250ZXh0cyBv biB0aGUgZmx5IikKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+CkNjOiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBpbnRl bC5jb20+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuYyAgICAgICB8ICA0MCArKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaCAgICAgICB8ICAxMyArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMgICAgIHwgICAyICstCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9jb250ZXh0LmMgICAgfCAzMTAgKysrKysr KysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jICAgICAgICAg ICAgfCAyNDYgKysrKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZl LmggICAgICAgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmVf dHlwZXMuaCAgICAgIHwgICAyICstCiAuLi4vZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9z ZWxmdGVzdHMuaCAgfCAgIDMgKy0KIDggZmlsZXMgY2hhbmdlZCwgNTU1IGluc2VydGlvbnMoKyks IDYzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRl eHQuYwppbmRleCBkNjRiNDVmN2VjNmQuLjIxMWFjNjU2OGE1ZCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2NvbnRleHQuYwpAQCAtMTYyLDIzICsxNjIsNDEgQEAgc3RhdGljIGludCBf X2ludGVsX2NvbnRleHRfYWN0aXZlKHN0cnVjdCBpOTE1X2FjdGl2ZSAqYWN0aXZlKQogCWlmIChl cnIpCiAJCWdvdG8gZXJyX3Jpbmc7CiAKKwlyZXR1cm4gMDsKKworZXJyX3Jpbmc6CisJaW50ZWxf cmluZ191bnBpbihjZS0+cmluZyk7CitlcnJfcHV0OgorCWludGVsX2NvbnRleHRfcHV0KGNlKTsK KwlyZXR1cm4gZXJyOworfQorCitpbnQgaW50ZWxfY29udGV4dF9hY3RpdmVfYWNxdWlyZShzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJaW50IGVycjsKKworCWVyciA9IGk5MTVfYWN0aXZl X2FjcXVpcmUoJmNlLT5hY3RpdmUpOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKIAkvKiBQ cmVhbGxvY2F0ZSB0cmFja2luZyBub2RlcyAqLwogCWlmICghaTkxNV9nZW1fY29udGV4dF9pc19r ZXJuZWwoY2UtPmdlbV9jb250ZXh0KSkgewogCQllcnIgPSBpOTE1X2FjdGl2ZV9hY3F1aXJlX3By ZWFsbG9jYXRlX2JhcnJpZXIoJmNlLT5hY3RpdmUsCiAJCQkJCQkJICAgICAgY2UtPmVuZ2luZSk7 Ci0JCWlmIChlcnIpCi0JCQlnb3RvIGVycl9zdGF0ZTsKKwkJaWYgKGVycikgeworCQkJaTkxNV9h Y3RpdmVfcmVsZWFzZSgmY2UtPmFjdGl2ZSk7CisJCQlyZXR1cm4gZXJyOworCQl9CiAJfQogCiAJ cmV0dXJuIDA7Cit9CiAKLWVycl9zdGF0ZToKLQlfX2NvbnRleHRfdW5waW5fc3RhdGUoY2UtPnN0 YXRlKTsKLWVycl9yaW5nOgotCWludGVsX3JpbmdfdW5waW4oY2UtPnJpbmcpOwotZXJyX3B1dDoK LQlpbnRlbF9jb250ZXh0X3B1dChjZSk7Ci0JcmV0dXJuIGVycjsKK3ZvaWQgaW50ZWxfY29udGV4 dF9hY3RpdmVfcmVsZWFzZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCit7CisJLyogTm9kZXMg cHJlYWxsb2NhdGVkIGluIGludGVsX2NvbnRleHRfYWN0aXZlKCkgKi8KKwlpOTE1X2FjdGl2ZV9h Y3F1aXJlX2JhcnJpZXIoJmNlLT5hY3RpdmUpOworCWk5MTVfYWN0aXZlX3JlbGVhc2UoJmNlLT5h Y3RpdmUpOwogfQogCiB2b2lkCkBAIC0yOTcsMyArMzE1LDcgQEAgc3RydWN0IGk5MTVfcmVxdWVz dCAqaW50ZWxfY29udGV4dF9jcmVhdGVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Up CiAKIAlyZXR1cm4gcnE7CiB9CisKKyNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxG VEVTVCkKKyNpbmNsdWRlICJzZWxmdGVzdF9jb250ZXh0LmMiCisjZW5kaWYKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaAppbmRleCAyM2M3ZTRjMGNlN2MuLjA3Zjk5MjRkZTQ4 ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfY29udGV4dC5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2NvbnRleHQuaApAQCAtMTA0LDE3ICsx MDQsOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaW50ZWxfY29udGV4dF9leGl0KHN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSkKIAkJY2UtPm9wcy0+ZXhpdChjZSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUg aW50IGludGVsX2NvbnRleHRfYWN0aXZlX2FjcXVpcmUoc3RydWN0IGludGVsX2NvbnRleHQgKmNl KQotewotCXJldHVybiBpOTE1X2FjdGl2ZV9hY3F1aXJlKCZjZS0+YWN0aXZlKTsKLX0KLQotc3Rh dGljIGlubGluZSB2b2lkIGludGVsX2NvbnRleHRfYWN0aXZlX3JlbGVhc2Uoc3RydWN0IGludGVs X2NvbnRleHQgKmNlKQotewotCS8qIE5vZGVzIHByZWFsbG9jYXRlZCBpbiBpbnRlbF9jb250ZXh0 X2FjdGl2ZSgpICovCi0JaTkxNV9hY3RpdmVfYWNxdWlyZV9iYXJyaWVyKCZjZS0+YWN0aXZlKTsK LQlpOTE1X2FjdGl2ZV9yZWxlYXNlKCZjZS0+YWN0aXZlKTsKLX0KK2ludCBpbnRlbF9jb250ZXh0 X2FjdGl2ZV9hY3F1aXJlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSk7Cit2b2lkIGludGVsX2Nv bnRleHRfYWN0aXZlX3JlbGVhc2Uoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKTsKIAogc3RhdGlj IGlubGluZSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqaW50ZWxfY29udGV4dF9nZXQoc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf cG0uYwppbmRleCBlNzRmYmYwNGE2OGQuLmNlNTQwOTI0NzVkYSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX3BtLmMKQEAgLTkwLDcgKzkwLDcgQEAgc3RhdGljIGJvb2wg c3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IAkvKiBDaGVjayBhZ2FpbiBvbiB0aGUgbmV4dCByZXRpcmVtZW50LiAqLwogCWVuZ2luZS0+d2Fr ZXJlZl9zZXJpYWwgPSBlbmdpbmUtPnNlcmlhbCArIDE7CiAKLQlpOTE1X3JlcXVlc3RfYWRkX2Jh cnJpZXJzKHJxKTsKKwlpOTE1X3JlcXVlc3RfYWRkX2FjdGl2ZV9iYXJyaWVycyhycSk7CiAJX19p OTE1X3JlcXVlc3RfY29tbWl0KHJxKTsKIAogCXJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmQzOWI1NTk0Y2IwMgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2NvbnRleHQuYwpAQCAtMCwwICsxLDMxMCBAQAorLyoKKyAq IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisgKgorICogQ29weXJpZ2h0IMKpIDIw MTkgSW50ZWwgQ29ycG9yYXRpb24KKyAqLworCisjaW5jbHVkZSAiaTkxNV9zZWxmdGVzdC5oIgor I2luY2x1ZGUgImludGVsX2d0LmgiCisKKyNpbmNsdWRlICJnZW0vc2VsZnRlc3RzL21vY2tfY29u dGV4dC5oIgorI2luY2x1ZGUgInNlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5oIgorI2luY2x1ZGUg InNlbGZ0ZXN0cy9tb2NrX2RybS5oIgorCitzdGF0aWMgaW50IHJlcXVlc3Rfc3luYyhzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlsb25nIHRpbWVvdXQ7CisJaW50IGVyciA9IDA7CisKKwlp OTE1X3JlcXVlc3RfZ2V0KHJxKTsKKworCWk5MTVfcmVxdWVzdF9hZGQocnEpOworCXRpbWVvdXQg PSBpOTE1X3JlcXVlc3Rfd2FpdChycSwgMCwgSFogLyAxMCk7CisJaWYgKHRpbWVvdXQgPCAwKQor CQllcnIgPSB0aW1lb3V0OworCWVsc2UKKwkJaTkxNV9yZXF1ZXN0X3JldGlyZV91cHRvKHJxKTsK KworCWk5MTVfcmVxdWVzdF9wdXQocnEpOworCisJcmV0dXJuIGVycjsKK30KKworc3RhdGljIGlu dCBjb250ZXh0X3N5bmMoc3RydWN0IGludGVsX2NvbnRleHQgKmNlKQoreworCXN0cnVjdCBpbnRl bF90aW1lbGluZSAqdGwgPSBjZS0+cmluZy0+dGltZWxpbmU7CisJaW50IGVyciA9IDA7CisKKwlk byB7CisJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCQlsb25nIHRpbWVvdXQ7CisKKwkJcmN1 X3JlYWRfbG9jaygpOworCQlycSA9IHJjdV9kZXJlZmVyZW5jZSh0bC0+bGFzdF9yZXF1ZXN0LnJl cXVlc3QpOworCQlpZiAocnEpCisJCQlycSA9IGk5MTVfcmVxdWVzdF9nZXRfcmN1KHJxKTsKKwkJ cmN1X3JlYWRfdW5sb2NrKCk7CisJCWlmICghcnEpCisJCQlicmVhazsKKworCQl0aW1lb3V0ID0g aTkxNV9yZXF1ZXN0X3dhaXQocnEsIDAsIEhaIC8gMTApOworCQlpZiAodGltZW91dCA8IDApCisJ CQllcnIgPSB0aW1lb3V0OworCQllbHNlCisJCQlpOTE1X3JlcXVlc3RfcmV0aXJlX3VwdG8ocnEp OworCisJCWk5MTVfcmVxdWVzdF9wdXQocnEpOworCX0gd2hpbGUgKCFlcnIpOworCisJcmV0dXJu IGVycjsKK30KKworc3RhdGljIGludCBfX2xpdmVfYWN0aXZlX2NvbnRleHQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lLAorCQkJCSBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqZml4bWUp Cit7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOworCWludCBwYXNzOworCWludCBlcnI7CisK KwkvKgorCSAqIFdlIGtlZXAgYWN0aXZlIGNvbnRleHRzIGFsaXZlIHVudGlsIGFmdGVyIGEgc3Vi c2VxdWVudCBjb250ZXh0CisJICogc3dpdGNoIGFzIHRoZSBmaW5hbCB3cml0ZSBmcm9tIHRoZSBj b250ZXh0LXNhdmUgd2lsbCBiZSBhZnRlcgorCSAqIHdlIHJldGlyZSB0aGUgZmluYWwgcmVxdWVz dC4gV2UgdHJhY2sgd2hlbiB3ZSB1bnBpbiB0aGUgY29udGV4dCwKKwkgKiB1bmRlciB0aGUgcHJl c3VtcHRpb24gdGhhdCB0aGUgZmluYWwgcGluIGlzIGZyb20gdGhlIGxhc3QgcmVxdWVzdCwKKwkg KiBhbmQgaW5zdGVhZCBvZiBpbW1lZGlhdGVseSB1bnBpbm5pbmcgdGhlIGNvbnRleHQsIHdlIGFk ZCBhIHRhc2sKKwkgKiB0byB1bnBpbiB0aGUgY29udGV4dCBmcm9tIHRoZSBuZXh0IGlkbGUtYmFy cmllci4KKwkgKgorCSAqIFRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgdGhlIGNvbnRleHQgaXMg a2VwdCBhbGl2ZSB1bnRpbCBhCisJICogc3Vic2VxdWVudCBpZGxlLWJhcnJpZXIgKGVtaXR0ZWQg d2hlbiB0aGUgZW5naW5lIHdha2VyZWYgaGl0cyAwCisJICogd2l0aCBubyBtb3JlIG91dHN0YW5k aW5nIHJlcXVlc3RzKS4KKwkgKi8KKworCWlmIChpbnRlbF9lbmdpbmVfcG1faXNfYXdha2UoZW5n aW5lKSkgeworCQlwcl9lcnIoIiVzIGlzIGF3YWtlIGJlZm9yZSBzdGFydGluZyAlcyFcbiIsCisJ CSAgICAgICBlbmdpbmUtPm5hbWUsIF9fZnVuY19fKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQor CisJY2UgPSBpbnRlbF9jb250ZXh0X2NyZWF0ZShmaXhtZSwgZW5naW5lKTsKKwlpZiAoIWNlKQor CQlyZXR1cm4gLUVOT01FTTsKKworCWZvciAocGFzcyA9IDA7IHBhc3MgPD0gMjsgcGFzcysrKSB7 CisJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCisJCXJxID0gaW50ZWxfY29udGV4dF9jcmVh dGVfcmVxdWVzdChjZSk7CisJCWlmIChJU19FUlIocnEpKSB7CisJCQllcnIgPSBQVFJfRVJSKHJx KTsKKwkJCWdvdG8gZXJyOworCQl9CisKKwkJZXJyID0gcmVxdWVzdF9zeW5jKHJxKTsKKwkJaWYg KGVycikKKwkJCWdvdG8gZXJyOworCisJCS8qIENvbnRleHQgd2lsbCBiZSBrZXB0IGFjdGl2ZSB1 bnRpbCBhZnRlciBhbiBpZGxlLWJhcnJpZXIuICovCisJCWlmIChpOTE1X2FjdGl2ZV9pc19pZGxl KCZjZS0+YWN0aXZlKSkgeworCQkJcHJfZXJyKCJjb250ZXh0IGlzIG5vdCBhY3RpdmU7IGV4cGVj dGVkIGlkbGUtYmFycmllciAoJXMgcGFzcyAlZClcbiIsCisJCQkgICAgICAgZW5naW5lLT5uYW1l LCBwYXNzKTsKKwkJCWVyciA9IC1FSU5WQUw7CisJCQlnb3RvIGVycjsKKwkJfQorCisJCWlmICgh aW50ZWxfZW5naW5lX3BtX2lzX2F3YWtlKGVuZ2luZSkpIHsKKwkJCXByX2VycigiJXMgaXMgYXNs ZWVwIGJlZm9yZSBpZGxlLWJhcnJpZXJcbiIsCisJCQkgICAgICAgZW5naW5lLT5uYW1lKTsKKwkJ CWVyciA9IC1FSU5WQUw7CisJCQlnb3RvIGVycjsKKwkJfQorCX0KKworCS8qIE5vdyBtYWtlIHN1 cmUgb3VyIGlkbGUtYmFycmllcnMgYXJlIGZsdXNoZWQgKi8KKwllcnIgPSBjb250ZXh0X3N5bmMo ZW5naW5lLT5rZXJuZWxfY29udGV4dCk7CisJaWYgKGVycikKKwkJZ290byBlcnI7CisKKwlpZiAo IWk5MTVfYWN0aXZlX2lzX2lkbGUoJmNlLT5hY3RpdmUpKSB7CisJCXByX2VycigiY29udGV4dCBp cyBzdGlsbCBhY3RpdmUhIik7CisJCWVyciA9IC1FSU5WQUw7CisJfQorCisJaWYgKGludGVsX2Vu Z2luZV9wbV9pc19hd2FrZShlbmdpbmUpKSB7CisJCXN0cnVjdCBkcm1fcHJpbnRlciBwID0gZHJt X2RlYnVnX3ByaW50ZXIoX19mdW5jX18pOworCisJCWludGVsX2VuZ2luZV9kdW1wKGVuZ2luZSwg JnAsCisJCQkJICAiJXMgaXMgc3RpbGwgYXdha2UgYWZ0ZXIgaWRsZS1iYXJyaWVyc1xuIiwKKwkJ CQkgIGVuZ2luZS0+bmFtZSk7CisJCUdFTV9UUkFDRV9EVU1QKCk7CisKKwkJZXJyID0gLUVJTlZB TDsKKwkJZ290byBlcnI7CisJfQorCitlcnI6CisJaW50ZWxfY29udGV4dF9wdXQoY2UpOworCXJl dHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgbGl2ZV9hY3RpdmVfY29udGV4dCh2b2lkICphcmcp Cit7CisJc3RydWN0IGludGVsX2d0ICpndCA9IGFyZzsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmU7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmZpeG1lOworCWVudW0gaW50ZWxf ZW5naW5lX2lkIGlkOworCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKKwlpbnQgZXJyID0gMDsKKwor CWZpbGUgPSBtb2NrX2ZpbGUoZ3QtPmk5MTUpOworCWlmIChJU19FUlIoZmlsZSkpCisJCXJldHVy biBQVFJfRVJSKGZpbGUpOworCisJbXV0ZXhfbG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0 ZXgpOworCisJZml4bWUgPSBsaXZlX2NvbnRleHQoZ3QtPmk5MTUsIGZpbGUpOworCWlmICghZml4 bWUpIHsKKwkJZXJyID0gLUVOT01FTTsKKwkJZ290byB1bmxvY2s7CisJfQorCisJZm9yX2VhY2hf ZW5naW5lKGVuZ2luZSwgZ3QtPmk5MTUsIGlkKSB7CisJCWVyciA9IF9fbGl2ZV9hY3RpdmVfY29u dGV4dChlbmdpbmUsIGZpeG1lKTsKKwkJaWYgKGVycikKKwkJCWJyZWFrOworCisJCWVyciA9IGln dF9mbHVzaF90ZXN0KGd0LT5pOTE1LCBJOTE1X1dBSVRfTE9DS0VEKTsKKwkJaWYgKGVycikKKwkJ CWJyZWFrOworCX0KKwordW5sb2NrOgorCW11dGV4X3VubG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOworCW1vY2tfZmlsZV9mcmVlKGd0LT5pOTE1LCBmaWxlKTsKKwlyZXR1cm4gZXJy OworfQorCitzdGF0aWMgaW50IF9fcmVtb3RlX3N5bmMoc3RydWN0IGludGVsX2NvbnRleHQgKmNl LCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqcmVtb3RlKQoreworCXN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxOworCWludCBlcnI7CisKKwllcnIgPSBpbnRlbF9jb250ZXh0X3BpbihyZW1vdGUpOworCWlm IChlcnIpCisJCXJldHVybiBlcnI7CisKKwlycSA9IGludGVsX2NvbnRleHRfY3JlYXRlX3JlcXVl c3QoY2UpOworCWlmIChJU19FUlIocnEpKSB7CisJCWVyciA9IFBUUl9FUlIocnEpOworCQlnb3Rv IHVucGluOworCX0KKworCWVyciA9IGludGVsX2NvbnRleHRfcHJlcGFyZV9yZW1vdGVfcmVxdWVz dChyZW1vdGUsIHJxKTsKKwlpZiAoZXJyKSB7CisJCWk5MTVfcmVxdWVzdF9hZGQocnEpOworCQln b3RvIHVucGluOworCX0KKworCWVyciA9IHJlcXVlc3Rfc3luYyhycSk7CisKK3VucGluOgorCWlu dGVsX2NvbnRleHRfdW5waW4ocmVtb3RlKTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50 IF9fbGl2ZV9yZW1vdGVfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCisJ CQkJIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpmaXhtZSkKK3sKKwlzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqbG9jYWwsICpyZW1vdGU7CisJaW50IHBhc3M7CisJaW50IGVycjsKKworCS8qCisJICog Q2hlY2sgdGhhdCBvdXIgaWRsZSBiYXJyaWVycyBkbyBub3QgaW50ZXJmZXJlIHdpdGggbm9ybWFs CisJICogYWN0aXZpdHkgdHJhY2tpbmcuIEluIHBhcnRpY3VsYXIsIGNoZWNrIHRoYXQgb3BlcmF0 aW5nCisJICogb24gdGhlIGNvbnRleHQgaW1hZ2UgcmVtb3RlbHkgKGludGVsX2NvbnRleHRfcHJl cGFyZV9yZW1vdGVfcmVxdWVzdCksCisJICogd2hpY2ggaW5zZXJ0cyBmb3JlaWduIGZlbmNlcyBp bnRvIGludGVsX2NvbnRleHQuYWN0aXZlLCBkb2VzIG5vdAorCSAqIGNsb2JiZXIgdGhlIGlkbGUt YmFycmllci4KKwkgKi8KKworCXJlbW90ZSA9IGludGVsX2NvbnRleHRfY3JlYXRlKGZpeG1lLCBl bmdpbmUpOworCWlmICghcmVtb3RlKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWxvY2FsID0gaW50 ZWxfY29udGV4dF9jcmVhdGUoZml4bWUsIGVuZ2luZSk7CisJaWYgKCFsb2NhbCkgeworCQllcnIg PSAtRU5PTUVNOworCQlnb3RvIGVycl9yZW1vdGU7CisJfQorCisJZm9yIChwYXNzID0gMDsgcGFz cyA8PSAyOyBwYXNzKyspIHsKKwkJZXJyID0gX19yZW1vdGVfc3luYyhsb2NhbCwgcmVtb3RlKTsK KwkJaWYgKGVycikKKwkJCWJyZWFrOworCisJCWVyciA9IF9fcmVtb3RlX3N5bmMoZW5naW5lLT5r ZXJuZWxfY29udGV4dCwgcmVtb3RlKTsKKwkJaWYgKGVycikKKwkJCWJyZWFrOworCisJCWlmIChp OTE1X2FjdGl2ZV9pc19pZGxlKCZyZW1vdGUtPmFjdGl2ZSkpIHsKKwkJCXByX2VycigicmVtb3Rl IGNvbnRleHQgaXMgbm90IGFjdGl2ZTsgZXhwZWN0ZWQgaWRsZS1iYXJyaWVyICglcyBwYXNzICVk KVxuIiwKKwkJCSAgICAgICBlbmdpbmUtPm5hbWUsIHBhc3MpOworCQkJZXJyID0gLUVJTlZBTDsK KwkJCWJyZWFrOworCQl9CisJfQorCisJaW50ZWxfY29udGV4dF9wdXQobG9jYWwpOworZXJyX3Jl bW90ZToKKwlpbnRlbF9jb250ZXh0X3B1dChyZW1vdGUpOworCXJldHVybiBlcnI7Cit9CisKK3N0 YXRpYyBpbnQgbGl2ZV9yZW1vdGVfY29udGV4dCh2b2lkICphcmcpCit7CisJc3RydWN0IGludGVs X2d0ICpndCA9IGFyZzsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmZpeG1lOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOworCXN0 cnVjdCBkcm1fZmlsZSAqZmlsZTsKKwlpbnQgZXJyID0gMDsKKworCWZpbGUgPSBtb2NrX2ZpbGUo Z3QtPmk5MTUpOworCWlmIChJU19FUlIoZmlsZSkpCisJCXJldHVybiBQVFJfRVJSKGZpbGUpOwor CisJbXV0ZXhfbG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJZml4bWUgPSBs aXZlX2NvbnRleHQoZ3QtPmk5MTUsIGZpbGUpOworCWlmICghZml4bWUpIHsKKwkJZXJyID0gLUVO T01FTTsKKwkJZ290byB1bmxvY2s7CisJfQorCisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZ3Qt Pmk5MTUsIGlkKSB7CisJCWVyciA9IF9fbGl2ZV9yZW1vdGVfY29udGV4dChlbmdpbmUsIGZpeG1l KTsKKwkJaWYgKGVycikKKwkJCWJyZWFrOworCisJCWVyciA9IGlndF9mbHVzaF90ZXN0KGd0LT5p OTE1LCBJOTE1X1dBSVRfTE9DS0VEKTsKKwkJaWYgKGVycikKKwkJCWJyZWFrOworCX0KKwordW5s b2NrOgorCW11dGV4X3VubG9jaygmZ3QtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCW1vY2tf ZmlsZV9mcmVlKGd0LT5pOTE1LCBmaWxlKTsKKwlyZXR1cm4gZXJyOworfQorCitpbnQgaW50ZWxf Y29udGV4dF9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKK3sK KwlzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0geworCQlTVUJURVNU KGxpdmVfYWN0aXZlX2NvbnRleHQpLAorCQlTVUJURVNUKGxpdmVfcmVtb3RlX2NvbnRleHQpLAor CX07CisJc3RydWN0IGludGVsX2d0ICpndCA9ICZpOTE1LT5ndDsKKworCWlmIChpbnRlbF9ndF9p c193ZWRnZWQoZ3QpKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBpbnRlbF9ndF9saXZlX3N1YnRl c3RzKHRlc3RzLCBndCk7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2FjdGl2ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmUuYwppbmRleCBkMzJk YjhhNGRiNWMuLjNkNTBhMjdlZDE2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9hY3RpdmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5jCkBA IC0zMyw2ICszMywzOCBAQCBzdHJ1Y3QgYWN0aXZlX25vZGUgewogCXU2NCB0aW1lbGluZTsKIH07 CiAKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGFjdGl2ZV9ub2RlICoKK25vZGVfZnJvbV9hY3RpdmUo c3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKmFjdGl2ZSkKK3sKKwlyZXR1cm4gY29udGFpbmVy X29mKGFjdGl2ZSwgc3RydWN0IGFjdGl2ZV9ub2RlLCBiYXNlKTsKK30KKworI2RlZmluZSBnZXRf cHJlYWxsb2NhdGVkX2JhcnJpZXJzKHgpIGxsaXN0X2RlbF9hbGwoJih4KS0+cHJlYWxsb2NhdGVk X2JhcnJpZXJzKQorCitzdGF0aWMgaW5saW5lIGJvb2wgaXNfYmFycmllcihjb25zdCBzdHJ1Y3Qg aTkxNV9hY3RpdmVfcmVxdWVzdCAqYWN0aXZlKQoreworCXJldHVybiBJU19FUlIocmN1X2FjY2Vz c19wb2ludGVyKGFjdGl2ZS0+cmVxdWVzdCkpOworfQorCitzdGF0aWMgaW5saW5lIHN0cnVjdCBs bGlzdF9ub2RlICpiYXJyaWVyX3RvX2xsKHN0cnVjdCBhY3RpdmVfbm9kZSAqbm9kZSkKK3sKKwlH RU1fQlVHX09OKCFpc19iYXJyaWVyKCZub2RlLT5iYXNlKSk7CisJcmV0dXJuIChzdHJ1Y3QgbGxp c3Rfbm9kZSAqKSZub2RlLT5iYXNlLmxpbms7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqCitiYXJyaWVyX3RvX2VuZ2luZShzdHJ1Y3QgYWN0aXZlX25vZGUgKm5v ZGUpCit7CisJR0VNX0JVR19PTighaXNfYmFycmllcigmbm9kZS0+YmFzZSkpOworCXJldHVybiAo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqKW5vZGUtPmJhc2UubGluay5wcmV2OworfQorCitzdGF0 aWMgaW5saW5lIHN0cnVjdCBhY3RpdmVfbm9kZSAqYmFycmllcl9mcm9tX2xsKHN0cnVjdCBsbGlz dF9ub2RlICp4KQoreworCXJldHVybiBjb250YWluZXJfb2YoKHN0cnVjdCBsaXN0X2hlYWQgKil4 LAorCQkJICAgIHN0cnVjdCBhY3RpdmVfbm9kZSwgYmFzZS5saW5rKTsKK30KKwogI2lmIElTX0VO QUJMRUQoQ09ORklHX0RSTV9JOTE1X0RFQlVHX0dFTSkgJiYgSVNfRU5BQkxFRChDT05GSUdfREVC VUdfT0JKRUNUUykKIAogc3RhdGljIHZvaWQgKmFjdGl2ZV9kZWJ1Z19oaW50KHZvaWQgKmFkZHIp CkBAIC0xMjcsNyArMTU5LDcgQEAgYWN0aXZlX3JldGlyZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJl ZikKIHN0YXRpYyB2b2lkCiBub2RlX3JldGlyZShzdHJ1Y3QgaTkxNV9hY3RpdmVfcmVxdWVzdCAq YmFzZSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiB7Ci0JYWN0aXZlX3JldGlyZShjb250YWlu ZXJfb2YoYmFzZSwgc3RydWN0IGFjdGl2ZV9ub2RlLCBiYXNlKS0+cmVmKTsKKwlhY3RpdmVfcmV0 aXJlKG5vZGVfZnJvbV9hY3RpdmUoYmFzZSktPnJlZik7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgaTkx NV9hY3RpdmVfcmVxdWVzdCAqCkBAIC0xODQsNiArMjE2LDcgQEAgYWN0aXZlX2luc3RhbmNlKHN0 cnVjdCBpOTE1X2FjdGl2ZSAqcmVmLCB1NjQgaWR4KQogCXJlZi0+Y2FjaGUgPSBub2RlOwogCW11 dGV4X3VubG9jaygmcmVmLT5tdXRleCk7CiAKKwlCVUlMRF9CVUdfT04ob2Zmc2V0b2YodHlwZW9m KCpub2RlKSwgYmFzZSkpOwogCXJldHVybiAmbm9kZS0+YmFzZTsKIH0KIApAQCAtMjAxLDExICsy MzQsMzcgQEAgdm9pZCBfX2k5MTVfYWN0aXZlX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUsCiAJcmVmLT5yZXRpcmUgPSByZXRpcmU7CiAJcmVmLT50cmVlID0gUkJfUk9PVDsKIAly ZWYtPmNhY2hlID0gTlVMTDsKLQlpbml0X2xsaXN0X2hlYWQoJnJlZi0+YmFycmllcnMpOworCWlu aXRfbGxpc3RfaGVhZCgmcmVmLT5wcmVhbGxvY2F0ZWRfYmFycmllcnMpOwogCWF0b21pY19zZXQo JnJlZi0+Y291bnQsIDApOwogCV9fbXV0ZXhfaW5pdCgmcmVmLT5tdXRleCwgImk5MTVfYWN0aXZl Iiwga2V5KTsKIH0KIAorc3RhdGljIGJvb2wgX19hY3RpdmVfZGVsX2JhcnJpZXIoc3RydWN0IGk5 MTVfYWN0aXZlICpyZWYsCisJCQkJIHN0cnVjdCBhY3RpdmVfbm9kZSAqbm9kZSkKK3sKKwlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBiYXJyaWVyX3RvX2VuZ2luZShub2RlKTsKKwlz dHJ1Y3QgbGxpc3Rfbm9kZSAqaGVhZCA9IE5VTEwsICp0YWlsID0gTlVMTDsKKwlzdHJ1Y3QgbGxp c3Rfbm9kZSAqcG9zLCAqbmV4dDsKKworCUdFTV9CVUdfT04obm9kZS0+dGltZWxpbmUgIT0gZW5n aW5lLT5rZXJuZWxfY29udGV4dC0+cmluZy0+dGltZWxpbmUtPmZlbmNlX2NvbnRleHQpOworCisJ bGxpc3RfZm9yX2VhY2hfc2FmZShwb3MsIG5leHQsIGxsaXN0X2RlbF9hbGwoJmVuZ2luZS0+YmFy cmllcl90YXNrcykpIHsKKwkJaWYgKG5vZGUgPT0gYmFycmllcl9mcm9tX2xsKHBvcykpIHsKKwkJ CW5vZGUgPSBOVUxMOworCQkJY29udGludWU7CisJCX0KKworCQlwb3MtPm5leHQgPSBoZWFkOwor CQloZWFkID0gcG9zOworCQlpZiAoIXRhaWwpCisJCQl0YWlsID0gcG9zOworCX0KKwlpZiAoaGVh ZCkKKwkJbGxpc3RfYWRkX2JhdGNoKGhlYWQsIHRhaWwsICZlbmdpbmUtPmJhcnJpZXJfdGFza3Mp OworCisJcmV0dXJuICFub2RlOworfQorCiBpbnQgaTkxNV9hY3RpdmVfcmVmKHN0cnVjdCBpOTE1 X2FjdGl2ZSAqcmVmLAogCQkgICAgdTY0IHRpbWVsaW5lLAogCQkgICAgc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEpCkBAIC0yMjQsOCArMjgzLDE1IEBAIGludCBpOTE1X2FjdGl2ZV9yZWYoc3RydWN0 IGk5MTVfYWN0aXZlICpyZWYsCiAJCWdvdG8gb3V0OwogCX0KIAotCWlmICghaTkxNV9hY3RpdmVf cmVxdWVzdF9pc3NldChhY3RpdmUpKQotCQlhdG9taWNfaW5jKCZyZWYtPmNvdW50KTsKKwlpZiAo aXNfYmFycmllcihhY3RpdmUpKSB7IC8qIHByb3RvLW5vZGUgdXNlZCBieSBvdXIgaWRsZSBiYXJy aWVyICovCisJCV9fYWN0aXZlX2RlbF9iYXJyaWVyKHJlZiwgbm9kZV9mcm9tX2FjdGl2ZShhY3Rp dmUpKTsKKwkJUkNVX0lOSVRfUE9JTlRFUihhY3RpdmUtPnJlcXVlc3QsIE5VTEwpOworCQlJTklU X0xJU1RfSEVBRCgmYWN0aXZlLT5saW5rKTsKKwl9IGVsc2UgeworCQlpZiAoIWk5MTVfYWN0aXZl X3JlcXVlc3RfaXNzZXQoYWN0aXZlKSkKKwkJCWF0b21pY19pbmMoJnJlZi0+Y291bnQpOworCX0K KwlHRU1fQlVHX09OKCFhdG9taWNfcmVhZCgmcmVmLT5jb3VudCkpOwogCV9faTkxNV9hY3RpdmVf cmVxdWVzdF9zZXQoYWN0aXZlLCBycSk7CiAKIG91dDoKQEAgLTMxMiw2ICszNzgsMTEgQEAgaW50 IGk5MTVfYWN0aXZlX3dhaXQoc3RydWN0IGk5MTVfYWN0aXZlICpyZWYpCiAJfQogCiAJcmJ0cmVl X3Bvc3RvcmRlcl9mb3JfZWFjaF9lbnRyeV9zYWZlKGl0LCBuLCAmcmVmLT50cmVlLCBub2RlKSB7 CisJCWlmIChpc19iYXJyaWVyKCZpdC0+YmFzZSkpIHsgLyogdW5jb25uZWN0ZWQgaWRsZS1iYXJy aWVyICovCisJCQllcnIgPSAtRUJVU1k7CisJCQlicmVhazsKKwkJfQorCiAJCWVyciA9IGk5MTVf YWN0aXZlX3JlcXVlc3RfcmV0aXJlKCZpdC0+YmFzZSwgQktMKHJlZikpOwogCQlpZiAoZXJyKQog CQkJYnJlYWs7CkBAIC0zNzQsNiArNDQ1LDc5IEBAIHZvaWQgaTkxNV9hY3RpdmVfZmluaShzdHJ1 Y3QgaTkxNV9hY3RpdmUgKnJlZikKIH0KICNlbmRpZgogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNf aWRsZV9iYXJyaWVyKHN0cnVjdCBhY3RpdmVfbm9kZSAqbm9kZSwgdTY0IGlkeCkKK3sKKwlyZXR1 cm4gbm9kZS0+dGltZWxpbmUgPT0gaWR4ICYmICFpOTE1X2FjdGl2ZV9yZXF1ZXN0X2lzc2V0KCZu b2RlLT5iYXNlKTsKK30KKworc3RhdGljIHN0cnVjdCBhY3RpdmVfbm9kZSAqaWRsZV9iYXJyaWVy KHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmLCB1NjQgaWR4KQoreworCXN0cnVjdCByYl9ub2RlICpw cmV2LCAqcDsKKworCWlmIChSQl9FTVBUWV9ST09UKCZyZWYtPnRyZWUpKQorCQlyZXR1cm4gTlVM TDsKKworCW11dGV4X2xvY2soJnJlZi0+bXV0ZXgpOworCUdFTV9CVUdfT04oaTkxNV9hY3RpdmVf aXNfaWRsZShyZWYpKTsKKworCS8qCisJICogVHJ5IHRvIHJldXNlIGFueSBleGlzdGluZyBiYXJy aWVyIG5vZGVzIGFscmVhZHkgYWxsb2NhdGVkIGZvciB0aGlzCisJICogaTkxNV9hY3RpdmUsIGR1 ZSB0byBvdmVybGFwcGluZyBhY3RpdmUgcGhhc2VzIHRoZXJlIGlzIGxpa2VseSBhCisJICogbm9k ZSBrZXB0IGFsaXZlIChhcyB3ZSByZXVzZSBiZWZvcmUgcGFya2luZykuIFdlIHByZWZlciB0byBy ZXVzZQorCSAqIGNvbXBsZXRlbHkgaWRsZSBiYXJyaWVycyAobGVzcyBoYXNzbGUgaW4gbWFuaXB1 bGF0aW5nIHRoZSBsbGlzdHMpLAorCSAqIGJ1dCBvdGhlcndpc2UgYW55IHdpbGwgZG8uCisJICov CisJaWYgKHJlZi0+Y2FjaGUgJiYgaXNfaWRsZV9iYXJyaWVyKHJlZi0+Y2FjaGUsIGlkeCkpIHsK KwkJcCA9ICZyZWYtPmNhY2hlLT5ub2RlOworCQlnb3RvIG1hdGNoOworCX0KKworCXByZXYgPSBO VUxMOworCXAgPSByZWYtPnRyZWUucmJfbm9kZTsKKwl3aGlsZSAocCkgeworCQlzdHJ1Y3QgYWN0 aXZlX25vZGUgKm5vZGUgPQorCQkJcmJfZW50cnkocCwgc3RydWN0IGFjdGl2ZV9ub2RlLCBub2Rl KTsKKworCQlpZiAoaXNfaWRsZV9iYXJyaWVyKG5vZGUsIGlkeCkpCisJCQlnb3RvIG1hdGNoOwor CisJCXByZXYgPSBwOworCQlpZiAobm9kZS0+dGltZWxpbmUgPCBpZHgpCisJCQlwID0gcC0+cmJf cmlnaHQ7CisJCWVsc2UKKwkJCXAgPSBwLT5yYl9sZWZ0OworCX0KKworCWZvciAocCA9IHByZXY7 IHA7IHAgPSByYl9uZXh0KHApKSB7CisJCXN0cnVjdCBhY3RpdmVfbm9kZSAqbm9kZSA9CisJCQly Yl9lbnRyeShwLCBzdHJ1Y3QgYWN0aXZlX25vZGUsIG5vZGUpOworCisJCWlmIChub2RlLT50aW1l bGluZSA+IGlkeCkKKwkJCWJyZWFrOworCisJCWlmIChub2RlLT50aW1lbGluZSA8IGlkeCkKKwkJ CWNvbnRpbnVlOworCisJCWlmICghaTkxNV9hY3RpdmVfcmVxdWVzdF9pc3NldCgmbm9kZS0+YmFz ZSkpCisJCQlnb3RvIG1hdGNoOworCisJCWlmIChpc19iYXJyaWVyKCZub2RlLT5iYXNlKSAmJiBf X2FjdGl2ZV9kZWxfYmFycmllcihyZWYsIG5vZGUpKQorCQkJZ290byBtYXRjaDsKKwl9CisKKwlt dXRleF91bmxvY2soJnJlZi0+bXV0ZXgpOworCisJcmV0dXJuIE5VTEw7CisKK21hdGNoOgorCXJi X2VyYXNlKHAsICZyZWYtPnRyZWUpOyAvKiBIaWRlIGZyb20gd2FpdHMgYW5kIHNpYmxpbmcgYWxs b2NhdGlvbnMgKi8KKwlpZiAocCA9PSAmcmVmLT5jYWNoZS0+bm9kZSkKKwkJcmVmLT5jYWNoZSA9 IE5VTEw7CisJbXV0ZXhfdW5sb2NrKCZyZWYtPm11dGV4KTsKKworCXJldHVybiByYl9lbnRyeShw LCBzdHJ1Y3QgYWN0aXZlX25vZGUsIG5vZGUpOworfQorCiBpbnQgaTkxNV9hY3RpdmVfYWNxdWly ZV9wcmVhbGxvY2F0ZV9iYXJyaWVyKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmLAogCQkJCQkgICAg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogewpAQCAtMzgyLDM5ICs1MjYsNTIgQEAg aW50IGk5MTVfYWN0aXZlX2FjcXVpcmVfcHJlYWxsb2NhdGVfYmFycmllcihzdHJ1Y3QgaTkxNV9h Y3RpdmUgKnJlZiwKIAlzdHJ1Y3QgbGxpc3Rfbm9kZSAqcG9zLCAqbmV4dDsKIAlpbnQgZXJyOwog Ci0JR0VNX0JVR19PTighbWFzayk7CisJR0VNX0JVR19PTighbGxpc3RfZW1wdHkoJnJlZi0+cHJl YWxsb2NhdGVkX2JhcnJpZXJzKSk7CisKKwkvKgorCSAqIFByZWFsbG9jYXRlIGEgbm9kZSBmb3Ig ZWFjaCBwaHlzaWNhbCBlbmdpbmUgc3VwcG9ydGluZyB0aGUgdGFyZ2V0CisJICogZW5naW5lIChy ZW1lbWJlciB2aXJ0dWFsIGVuZ2luZXMgaGF2ZSBtb3JlIHRoYW4gb25lIHNpYmxpbmcpLgorCSAq IFdlIGNhbiB0aGVuIHVzZSB0aGUgcHJlYWxsb2NhdGVkIG5vZGVzIGluCisJICogaTkxNV9hY3Rp dmVfYWNxdWlyZV9iYXJyaWVyKCkKKwkgKi8KIAlmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVuZ2lu ZSwgaTkxNSwgbWFzaywgdG1wKSB7Ci0JCXN0cnVjdCBpbnRlbF9jb250ZXh0ICprY3R4ID0gZW5n aW5lLT5rZXJuZWxfY29udGV4dDsKKwkJdTY0IGlkeCA9IGVuZ2luZS0+a2VybmVsX2NvbnRleHQt PnJpbmctPnRpbWVsaW5lLT5mZW5jZV9jb250ZXh0OwogCQlzdHJ1Y3QgYWN0aXZlX25vZGUgKm5v ZGU7CiAKLQkJbm9kZSA9IGttZW1fY2FjaGVfYWxsb2MoZ2xvYmFsLnNsYWJfY2FjaGUsIEdGUF9L RVJORUwpOwotCQlpZiAodW5saWtlbHkoIW5vZGUpKSB7Ci0JCQllcnIgPSAtRU5PTUVNOwotCQkJ Z290byB1bndpbmQ7CisJCW5vZGUgPSBpZGxlX2JhcnJpZXIocmVmLCBpZHgpOworCQlpZiAoIW5v ZGUpIHsKKwkJCW5vZGUgPSBrbWVtX2NhY2hlX2FsbG9jKGdsb2JhbC5zbGFiX2NhY2hlLCBHRlBf S0VSTkVMKTsKKwkJCWlmICghbm9kZSkgeworCQkJCWVyciA9IEVOT01FTTsKKwkJCQlnb3RvIHVu d2luZDsKKwkJCX0KKworCQkJUkNVX0lOSVRfUE9JTlRFUihub2RlLT5iYXNlLnJlcXVlc3QsIE5V TEwpOworCQkJbm9kZS0+YmFzZS5yZXRpcmUgPSBub2RlX3JldGlyZTsKKwkJCW5vZGUtPnRpbWVs aW5lID0gaWR4OworCQkJbm9kZS0+cmVmID0gcmVmOwogCQl9CiAKLQkJaTkxNV9hY3RpdmVfcmVx dWVzdF9pbml0KCZub2RlLT5iYXNlLAotCQkJCQkgKHZvaWQgKillbmdpbmUsIG5vZGVfcmV0aXJl KTsKLQkJbm9kZS0+dGltZWxpbmUgPSBrY3R4LT5yaW5nLT50aW1lbGluZS0+ZmVuY2VfY29udGV4 dDsKLQkJbm9kZS0+cmVmID0gcmVmOwotCQlhdG9taWNfaW5jKCZyZWYtPmNvdW50KTsKKwkJaWYg KCFpOTE1X2FjdGl2ZV9yZXF1ZXN0X2lzc2V0KCZub2RlLT5iYXNlKSkgeworCQkJUkNVX0lOSVRf UE9JTlRFUihub2RlLT5iYXNlLnJlcXVlc3QsIEVSUl9QVFIoLUVBR0FJTikpOworCQkJbm9kZS0+ YmFzZS5saW5rLnByZXYgPSAodm9pZCAqKWVuZ2luZTsKKwkJCWF0b21pY19pbmMoJnJlZi0+Y291 bnQpOworCQl9CiAKKwkJR0VNX0JVR19PTihiYXJyaWVyX3RvX2VuZ2luZShub2RlKSAhPSBlbmdp bmUpOworCQlsbGlzdF9hZGQoYmFycmllcl90b19sbChub2RlKSwgJnJlZi0+cHJlYWxsb2NhdGVk X2JhcnJpZXJzKTsKIAkJaW50ZWxfZW5naW5lX3BtX2dldChlbmdpbmUpOwotCQlsbGlzdF9hZGQo KHN0cnVjdCBsbGlzdF9ub2RlICopJm5vZGUtPmJhc2UubGluaywKLQkJCSAgJnJlZi0+YmFycmll cnMpOwogCX0KIAogCXJldHVybiAwOwogCiB1bndpbmQ6Ci0JbGxpc3RfZm9yX2VhY2hfc2FmZShw b3MsIG5leHQsIGxsaXN0X2RlbF9hbGwoJnJlZi0+YmFycmllcnMpKSB7Ci0JCXN0cnVjdCBhY3Rp dmVfbm9kZSAqbm9kZTsKKwlsbGlzdF9mb3JfZWFjaF9zYWZlKHBvcywgbmV4dCwgZ2V0X3ByZWFs bG9jYXRlZF9iYXJyaWVycyhyZWYpKSB7CisJCXN0cnVjdCBhY3RpdmVfbm9kZSAqbm9kZSA9IGJh cnJpZXJfZnJvbV9sbChwb3MpOwogCi0JCW5vZGUgPSBjb250YWluZXJfb2YoKHN0cnVjdCBsaXN0 X2hlYWQgKilwb3MsCi0JCQkJICAgIHR5cGVvZigqbm9kZSksIGJhc2UubGluayk7Ci0JCWVuZ2lu ZSA9ICh2b2lkICopcmN1X2FjY2Vzc19wb2ludGVyKG5vZGUtPmJhc2UucmVxdWVzdCk7CisJCWF0 b21pY19kZWMoJnJlZi0+Y291bnQpOworCQlpbnRlbF9lbmdpbmVfcG1fcHV0KGJhcnJpZXJfdG9f ZW5naW5lKG5vZGUpKTsKIAotCQlpbnRlbF9lbmdpbmVfcG1fcHV0KGVuZ2luZSk7CiAJCWttZW1f Y2FjaGVfZnJlZShnbG9iYWwuc2xhYl9jYWNoZSwgbm9kZSk7CiAJfQogCXJldHVybiBlcnI7CkBA IC00MjYsMjUgKzU4MywyNyBAQCB2b2lkIGk5MTVfYWN0aXZlX2FjcXVpcmVfYmFycmllcihzdHJ1 Y3QgaTkxNV9hY3RpdmUgKnJlZikKIAogCUdFTV9CVUdfT04oaTkxNV9hY3RpdmVfaXNfaWRsZShy ZWYpKTsKIAorCS8qCisJICogVHJhbnNmZXIgdGhlIGxpc3Qgb2YgcHJlYWxsb2NhdGVkIGJhcnJp ZXJzIGludG8gdGhlCisJICogaTkxNV9hY3RpdmUgcmJ0cmVlLCBidXQgb25seSBhcyBwcm90by1u b2Rlcy4gVGhleSB3aWxsIGJlCisJICogcG9wdWxhdGVkIGJ5IGk5MTVfcmVxdWVzdF9hZGRfYWN0 aXZlX2JhcnJpZXIoKSB0byBwb2ludCB0byB0aGUKKwkgKiByZXF1ZXN0IHRoYXQgd2lsbCBldmVu dHVhbGx5IHJlbGVhc2UgdGhlbS4KKwkgKi8KIAltdXRleF9sb2NrX25lc3RlZCgmcmVmLT5tdXRl eCwgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwotCWxsaXN0X2Zvcl9lYWNoX3NhZmUocG9zLCBuZXh0 LCBsbGlzdF9kZWxfYWxsKCZyZWYtPmJhcnJpZXJzKSkgewotCQlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmU7Ci0JCXN0cnVjdCBhY3RpdmVfbm9kZSAqbm9kZTsKKwlsbGlzdF9mb3JfZWFj aF9zYWZlKHBvcywgbmV4dCwgZ2V0X3ByZWFsbG9jYXRlZF9iYXJyaWVycyhyZWYpKSB7CisJCXN0 cnVjdCBhY3RpdmVfbm9kZSAqbm9kZSA9IGJhcnJpZXJfZnJvbV9sbChwb3MpOworCQlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBiYXJyaWVyX3RvX2VuZ2luZShub2RlKTsKIAkJc3Ry dWN0IHJiX25vZGUgKipwLCAqcGFyZW50OwogCi0JCW5vZGUgPSBjb250YWluZXJfb2YoKHN0cnVj dCBsaXN0X2hlYWQgKilwb3MsCi0JCQkJICAgIHR5cGVvZigqbm9kZSksIGJhc2UubGluayk7Ci0K LQkJZW5naW5lID0gKHZvaWQgKilyY3VfYWNjZXNzX3BvaW50ZXIobm9kZS0+YmFzZS5yZXF1ZXN0 KTsKLQkJUkNVX0lOSVRfUE9JTlRFUihub2RlLT5iYXNlLnJlcXVlc3QsIEVSUl9QVFIoLUVBR0FJ TikpOwotCiAJCXBhcmVudCA9IE5VTEw7CiAJCXAgPSAmcmVmLT50cmVlLnJiX25vZGU7CiAJCXdo aWxlICgqcCkgeworCQkJc3RydWN0IGFjdGl2ZV9ub2RlICppdDsKKwogCQkJcGFyZW50ID0gKnA7 Ci0JCQlpZiAocmJfZW50cnkocGFyZW50LAotCQkJCSAgICAgc3RydWN0IGFjdGl2ZV9ub2RlLAot CQkJCSAgICAgbm9kZSktPnRpbWVsaW5lIDwgbm9kZS0+dGltZWxpbmUpCisKKwkJCWl0ID0gcmJf ZW50cnkocGFyZW50LCBzdHJ1Y3QgYWN0aXZlX25vZGUsIG5vZGUpOworCQkJaWYgKGl0LT50aW1l bGluZSA8IG5vZGUtPnRpbWVsaW5lKQogCQkJCXAgPSAmcGFyZW50LT5yYl9yaWdodDsKIAkJCWVs c2UKIAkJCQlwID0gJnBhcmVudC0+cmJfbGVmdDsKQEAgLTQ1MiwyMCArNjExLDI5IEBAIHZvaWQg aTkxNV9hY3RpdmVfYWNxdWlyZV9iYXJyaWVyKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKQogCQly Yl9saW5rX25vZGUoJm5vZGUtPm5vZGUsIHBhcmVudCwgcCk7CiAJCXJiX2luc2VydF9jb2xvcigm bm9kZS0+bm9kZSwgJnJlZi0+dHJlZSk7CiAKLQkJbGxpc3RfYWRkKChzdHJ1Y3QgbGxpc3Rfbm9k ZSAqKSZub2RlLT5iYXNlLmxpbmssCi0JCQkgICZlbmdpbmUtPmJhcnJpZXJfdGFza3MpOworCQls bGlzdF9hZGQoYmFycmllcl90b19sbChub2RlKSwgJmVuZ2luZS0+YmFycmllcl90YXNrcyk7CiAJ CWludGVsX2VuZ2luZV9wbV9wdXQoZW5naW5lKTsKIAl9CiAJbXV0ZXhfdW5sb2NrKCZyZWYtPm11 dGV4KTsKIH0KIAotdm9pZCBpOTE1X3JlcXVlc3RfYWRkX2JhcnJpZXJzKHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxKQordm9pZCBpOTE1X3JlcXVlc3RfYWRkX2FjdGl2ZV9iYXJyaWVycyhzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycSkKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSBy cS0+ZW5naW5lOwogCXN0cnVjdCBsbGlzdF9ub2RlICpub2RlLCAqbmV4dDsKIAotCWxsaXN0X2Zv cl9lYWNoX3NhZmUobm9kZSwgbmV4dCwgbGxpc3RfZGVsX2FsbCgmZW5naW5lLT5iYXJyaWVyX3Rh c2tzKSkKKwlHRU1fQlVHX09OKGludGVsX2VuZ2luZV9pc192aXJ0dWFsKGVuZ2luZSkpOworCUdF TV9CVUdfT04ocnEtPnRpbWVsaW5lICE9IGVuZ2luZS0+a2VybmVsX2NvbnRleHQtPnJpbmctPnRp bWVsaW5lKTsKKworCS8qCisJICogQXR0YWNoIHRoZSBsaXN0IG9mIHByb3RvLWZlbmNlcyB0byB0 aGUgaW4tZmxpZ2h0IHJlcXVlc3Qgc3VjaAorCSAqIHRoYXQgdGhlIHBhcmVudCBpOTE1X2FjdGl2 ZSB3aWxsIGJlIHJlbGVhc2VkIHdoZW4gdGhpcyByZXF1ZXN0CisJICogaXMgcmV0aXJlZC4KKwkg Ki8KKwlsbGlzdF9mb3JfZWFjaF9zYWZlKG5vZGUsIG5leHQsIGxsaXN0X2RlbF9hbGwoJmVuZ2lu ZS0+YmFycmllcl90YXNrcykpIHsKKwkJUkNVX0lOSVRfUE9JTlRFUihiYXJyaWVyX2Zyb21fbGwo bm9kZSktPmJhc2UucmVxdWVzdCwgcnEpOwogCQlsaXN0X2FkZF90YWlsKChzdHJ1Y3QgbGlzdF9o ZWFkICopbm9kZSwgJnJxLT5hY3RpdmVfbGlzdCk7CisJfQogfQogCiBpbnQgaTkxNV9hY3RpdmVf cmVxdWVzdF9zZXQoc3RydWN0IGk5MTVfYWN0aXZlX3JlcXVlc3QgKmFjdGl2ZSwKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2FjdGl2ZS5oCmluZGV4IGJhNjhiMDc3ZWM2Yy4uNTY2MzM2Yzk5ZWQ3IDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2FjdGl2ZS5oCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlLmgKQEAgLTQxMyw2ICs0MTMsNiBAQCBzdGF0aWMgaW5s aW5lIHZvaWQgaTkxNV9hY3RpdmVfZmluaShzdHJ1Y3QgaTkxNV9hY3RpdmUgKnJlZikgeyB9CiBp bnQgaTkxNV9hY3RpdmVfYWNxdWlyZV9wcmVhbGxvY2F0ZV9iYXJyaWVyKHN0cnVjdCBpOTE1X2Fj dGl2ZSAqcmVmLAogCQkJCQkgICAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIHZv aWQgaTkxNV9hY3RpdmVfYWNxdWlyZV9iYXJyaWVyKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKTsK LXZvaWQgaTkxNV9yZXF1ZXN0X2FkZF9iYXJyaWVycyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSk7 Cit2b2lkIGk5MTVfcmVxdWVzdF9hZGRfYWN0aXZlX2JhcnJpZXJzKHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxKTsKIAogI2VuZGlmIC8qIF9JOTE1X0FDVElWRV9IXyAqLwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmVfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfYWN0aXZlX3R5cGVzLmgKaW5kZXggNzQ3NDNkZDBkNWYwLi5hZTNlZTQ0MWMxMTQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfYWN0aXZlX3R5cGVzLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9hY3RpdmVfdHlwZXMuaApAQCAtNDIsNyArNDIs NyBAQCBzdHJ1Y3QgaTkxNV9hY3RpdmUgewogCWludCAoKmFjdGl2ZSkoc3RydWN0IGk5MTVfYWN0 aXZlICpyZWYpOwogCXZvaWQgKCpyZXRpcmUpKHN0cnVjdCBpOTE1X2FjdGl2ZSAqcmVmKTsKIAot CXN0cnVjdCBsbGlzdF9oZWFkIGJhcnJpZXJzOworCXN0cnVjdCBsbGlzdF9oZWFkIHByZWFsbG9j YXRlZF9iYXJyaWVyczsKIH07CiAKICNlbmRpZiAvKiBfSTkxNV9BQ1RJVkVfVFlQRVNfSF8gKi8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2Vs ZnRlc3RzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0 ZXN0cy5oCmluZGV4IDJiMzFhNGVlMGI0Yy4uYTg0MWQzZjliZWRjIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmgKQEAgLTE1 LDYgKzE1LDcgQEAgc2VsZnRlc3Qod29ya2Fyb3VuZHMsIGludGVsX3dvcmthcm91bmRzX2xpdmVf c2VsZnRlc3RzKQogc2VsZnRlc3QodGltZWxpbmVzLCBpbnRlbF90aW1lbGluZV9saXZlX3NlbGZ0 ZXN0cykKIHNlbGZ0ZXN0KHJlcXVlc3RzLCBpOTE1X3JlcXVlc3RfbGl2ZV9zZWxmdGVzdHMpCiBz ZWxmdGVzdChhY3RpdmUsIGk5MTVfYWN0aXZlX2xpdmVfc2VsZnRlc3RzKQorc2VsZnRlc3QoZ3Rf Y29udGV4dHMsIGludGVsX2NvbnRleHRfbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChvYmplY3Rz LCBpOTE1X2dlbV9vYmplY3RfbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChtbWFuLCBpOTE1X2dl bV9tbWFuX2xpdmVfc2VsZnRlc3RzKQogc2VsZnRlc3QoZG1hYnVmLCBpOTE1X2dlbV9kbWFidWZf bGl2ZV9zZWxmdGVzdHMpCkBAIC0yNCw3ICsyNSw3IEBAIHNlbGZ0ZXN0KGd0dCwgaTkxNV9nZW1f Z3R0X2xpdmVfc2VsZnRlc3RzKQogc2VsZnRlc3QoZ2VtLCBpOTE1X2dlbV9saXZlX3NlbGZ0ZXN0 cykKIHNlbGZ0ZXN0KGV2aWN0LCBpOTE1X2dlbV9ldmljdF9saXZlX3NlbGZ0ZXN0cykKIHNlbGZ0 ZXN0KGh1Z2VwYWdlcywgaTkxNV9nZW1faHVnZV9wYWdlX2xpdmVfc2VsZnRlc3RzKQotc2VsZnRl c3QoY29udGV4dHMsIGk5MTVfZ2VtX2NvbnRleHRfbGl2ZV9zZWxmdGVzdHMpCitzZWxmdGVzdChn ZW1fY29udGV4dHMsIGk5MTVfZ2VtX2NvbnRleHRfbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChi bHQsIGk5MTVfZ2VtX29iamVjdF9ibHRfbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChjbGllbnQs IGk5MTVfZ2VtX2NsaWVudF9ibHRfbGl2ZV9zZWxmdGVzdHMpCiBzZWxmdGVzdChyZXNldCwgaW50 ZWxfcmVzZXRfbGl2ZV9zZWxmdGVzdHMpCi0tIAoyLjIyLjAKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==