From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 17BD26F863 for ; Fri, 1 Nov 2019 20:14:48 +0000 (UTC) From: Imre Deak Date: Fri, 1 Nov 2019 22:13:09 +0200 Message-Id: <20191101201311.7309-1-imre.deak@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t 1/3] lib/rendercopy: Add AUX page table support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , 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: Brian Welty List-ID: T24gR0VOMTIrIHRoZSBBVVggQ0NTIHN1cmZhY2VzIHJlcXVpcmVkIGJ5IHRoZSByZW5kZXIgYW5k IG1lZGlhCmNvbXByZXNzaW9uIG11c3QgYmUgc3BlY2lmaWVkIGJ5IGEgMyBsZXZlbCBwYWdlIHRh YmxlIGRpcmVjdG9yeSwgd2hpY2gKdHJhbnNsYXRlcyB0aGUgbWFpbiBzdXJmYWNlIGdyYXBoaWNz IGFkZHJlc3MgdG8gdGhlIEFVWCBDQ1Mgc3VyZmFjZQpncmFwaGljcyBhZGRyZXNzLiBGb3IgdGhp cyBwdXJwb3NlIGFkZCBzdXBwb3J0IGZvciBjcmVhdGluZyBhIEdFTSBidWZmZXIKdG8gdHJhbnNs YXRlIHRoZSBsaW5lYXIgc3VyZmFjZSBhZGRyZXNzIHJhbmdlIHRvIHRoZSBsaW5lYXIgQVVYIHN1 cmZhY2UKYWRkcmVzcyByYW5nZS4KClRoZSBidWZmZXJzIGNvbnRhaW5pbmcgdGhlIG1haW4gc3Vy ZmFjZSBtdXN0IGJlIHBpbm5lZCBkb3duLCBzaW5jZSB0aGUKZGlyZWN0b3J5IHRhYmxlIGVudHJ5 IGluZGljZXMgZGVwZW5kIG9uIHRoZSBzdXJmYWNlIGFkZHJlc3MsIGFuZCB0aGV5Cm11c3QgYmUg NjRrQiBhbGlnbmVkLiBUaGUgcGFnZSB0YWJsZSBjYW4gYmUgcmVsb2NhdGVkIE9UT0gsIHNvIGFs bG93CnRoYXQgYW5kIGVtaXQgdGhlIHJlcXVpcmVkIHJlbG9jYXRpb24gZW50cmllcy4KCkNjOiBN aWthIEthaG9sYSA8bWlrYS5rYWhvbGFAaW50ZWwuY29tPgpDYzogQnJpYW4gV2VsdHkgPGJyaWFu LndlbHR5QGludGVsLmNvbT4KQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgpDYzogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4K U2lnbmVkLW9mZi1ieTogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgotLS0KIGxpYi9p Z3RfYXV4X3BndGFibGUuYyB8IDM4MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysKIGxpYi9pZ3RfYXV4X3BndGFibGUuaCB8ICAyMSArKysKIGxpYi9pbnRlbF9yZWcu aCAgICAgICB8ICAgMyArCiBsaWIvbWVzb24uYnVpbGQgICAgICAgfCAgIDEgKwogbGliL3JlbmRl cmNvcHlfZ2VuOS5jIHwgMTIxICsrKysrKysrKysrKystCiA1IGZpbGVzIGNoYW5nZWQsIDUyMSBp bnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pZ3Rf YXV4X3BndGFibGUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pZ3RfYXV4X3BndGFibGUuaAoK ZGlmZiAtLWdpdCBhL2xpYi9pZ3RfYXV4X3BndGFibGUuYyBiL2xpYi9pZ3RfYXV4X3BndGFibGUu YwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMC4uYWFhMjRjZmQKLS0tIC9kZXYv bnVsbAorKysgYi9saWIvaWd0X2F1eF9wZ3RhYmxlLmMKQEAgLTAsMCArMSwzODEgQEAKKyNpbmNs dWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisKKyNpbmNsdWRlICJkcm10ZXN0 LmgiCisjaW5jbHVkZSAiaWd0X2F1eF9wZ3RhYmxlLmgiCisjaW5jbHVkZSAiaW50ZWxfYnVmbWdy LmgiCisjaW5jbHVkZSAiaW50ZWxfYmF0Y2hidWZmZXIuaCIKKyNpbmNsdWRlICJpb2N0bF93cmFw cGVycy5oIgorCisjaW5jbHVkZSAiaTkxNS9nZW1fbW1hbi5oIgorCisjZGVmaW5lIEJJVFNfUEVS X0xPTkcJCShzaXplb2YobG9uZykgKiA4KQorI2RlZmluZSBCSVRNQVNLKGUsIHMpCQkoKH4wVUwg PDwgKHMpKSAmIFwKKwkJCQkgKH4wVUwgPj4gKEJJVFNfUEVSX0xPTkcgLSAxIC0gKGUpKSkpCisK KyNkZWZpbmUgQUxJR05fRE9XTih4LCBhKQlBTElHTigoeCkgLSAoKGEpIC0gMSksIChhKSkKKwor I2RlZmluZSBDTF9TSVpFCQkJNjQKKy8qCisgKiBUaGUgc2l6ZSBvZiBhIGJsb2NrIG9uIHRoZSBD Q1Mgc3VyZmFjZSB0aGF0IGlzIGNvdmVyZWQvcG9pbnRlZCB0byBieSBvbmUKKyAqIEwxIEFVWCBw YWdldGFibGUgZW50cnkuIFRoaXMgc2l6ZSBjb3JyZXNwb25kcyB0byB0aGUgMTw8OCBhbGlnbm1l bnQgb2YgdGhlCisgKiBwb2ludGVycyBpbiB0aGUgTDEgZW50cnkuCisgKi8KKyNkZWZpbmUgQ0NT X0JMT0NLX1NJWkUJCSg0ICogQ0xfU0laRSkKKy8qCisgKiAyNTYgYnl0ZXMgcGVyIENDUyBibG9j ayBzaXplICoKKyAqIDggICBiaXRzIHBlciBieXRlIC8KKyAqIDIgICBiaXRzIHBlciBzdXJmYWNl IENMICoKKyAqIDY0ICBieXRlcyBwZXIgc3VyZmFjZSBDTAorICovCisjZGVmaW5lIFNVUkZBQ0Vf QkxPQ0tfU0laRQkoQ0NTX0JMT0NLX1NJWkUgKiA4IC8gMiAqIENMX1NJWkUpCisjZGVmaW5lIEFV WF9QR1RBQkxFX1ZBTElECTEKKyNkZWZpbmUgQVVYX1BHVEFCTEVfTEVWRUxTCTMKKworI2RlZmlu ZSBBRERSRVNTX0JJVFMJCTQ4CisKKyNkZWZpbmUgbWF4KGEsIGIpCQkoKGEpID4gKGIpID8gKGEp IDogKGIpKQorCitzdHJ1Y3QgcGd0YWJsZV9sZXZlbF9kZXNjIHsKKwlpbnQgaWR4X3NoaWZ0Owor CWludCBpZHhfYml0czsKKwlpbnQgZW50cnlfcHRyX3NoaWZ0OworCWludCB0YWJsZV9zaXplOwor fTsKKworc3RydWN0IHBndGFibGVfbGV2ZWxfaW5mbyB7CisJY29uc3Qgc3RydWN0IHBndGFibGVf bGV2ZWxfZGVzYyAqZGVzYzsKKwlpbnQgdGFibGVfY291bnQ7CisJaW50IGFsbG9jX2Jhc2U7CisJ aW50IGFsbG9jX3B0cjsKK307CisKK3N0cnVjdCBwZ3RhYmxlIHsKKwlpbnQgbGV2ZWxzOworCXN0 cnVjdCBwZ3RhYmxlX2xldmVsX2luZm8gKmxldmVsX2luZm87CisJaW50IHNpemU7CisJaW50IG1h eF9hbGlnbjsKKwlkcm1faW50ZWxfYm8gKmJvOworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBw Z3RhYmxlX2xldmVsX2Rlc2MgYXV4X3BndGFibGVfZGVzY1tBVVhfUEdUQUJMRV9MRVZFTFNdID0g eworCXsKKwkJLmlkeF9zaGlmdCA9IDE2LAorCQkuaWR4X2JpdHMgPSA4LAorCQkuZW50cnlfcHRy X3NoaWZ0ID0gOCwKKwkJLnRhYmxlX3NpemUgPSA4ICogMTAyNCwKKwl9LAorCXsKKwkJLmlkeF9z aGlmdCA9IDI0LAorCQkuaWR4X2JpdHMgPSAxMiwKKwkJLmVudHJ5X3B0cl9zaGlmdCA9IDEzLAor CQkudGFibGVfc2l6ZSA9IDMyICogMTAyNCwKKwl9LAorCXsKKwkJLmlkeF9zaGlmdCA9IDM2LAor CQkuaWR4X2JpdHMgPSAxMiwKKwkJLmVudHJ5X3B0cl9zaGlmdCA9IDE1LAorCQkudGFibGVfc2l6 ZSA9IDMyICogMTAyNCwKKwl9LAorfTsKKworc3RhdGljIGludAorcGd0X3RhYmxlX2NvdW50KGlu dCBhZGRyZXNzX2JpdHMsCisJCWNvbnN0IHN0cnVjdCBpZ3RfYXV4X3BndGFibGVfcmFuZ2UgKnJh bmdlcywgaW50IHJhbmdlX2NvdW50KQoreworCXVpbnQ2NF90IGVuZDsKKwlpbnQgY291bnQ7CisJ aW50IGk7CisKKwljb3VudCA9IDA7CisJZW5kID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgcmFuZ2Vf Y291bnQ7IGkrKykgeworCQljb25zdCBzdHJ1Y3QgaWd0X2F1eF9wZ3RhYmxlX3JhbmdlICpyID0g JnJhbmdlc1tpXTsKKwkJdWludDY0X3Qgc3RhcnQ7CisKKwkJLyogV2UgcmVxdWlyZSByYW5nZXMg dG8gYmUgc29ydGVkLiAqLworCQlpZ3RfYXNzZXJ0KGkgPT0gMCB8fAorCQkJICAgci0+c3VyZmFj ZV9iYXNlID49IHJhbmdlc1tpIC0gMV0uc3VyZmFjZV9iYXNlICsKKwkJCQkJICAgICAgcmFuZ2Vz W2kgLSAxXS5zdXJmYWNlX3NpemUpOworCisJCXN0YXJ0ID0gQUxJR05fRE9XTihyLT5zdXJmYWNl X2Jhc2UsIDFVTCA8PCBhZGRyZXNzX2JpdHMpOworCQkvKiBBdm9pZCBkb3VibGUgY291bnRpbmcg Zm9yIG92ZXJsYXBwaW5nIGFsaWduZWQgcmFuZ2VzLiAqLworCQlzdGFydCA9IG1heChzdGFydCwg ZW5kKTsKKworCQllbmQgPSBBTElHTihyLT5zdXJmYWNlX2Jhc2UgKyByLT5zdXJmYWNlX3NpemUs CisJCQkgICAgMVVMIDw8IGFkZHJlc3NfYml0cyk7CisJCWlndF9hc3NlcnQoZW5kID49IHN0YXJ0 KTsKKworCQljb3VudCArPSAoZW5kIC0gc3RhcnQpID4+IGFkZHJlc3NfYml0czsKKwl9CisKKwly ZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyB2b2lkCitwZ3RfY2FsY19zaXplKHN0cnVjdCBwZ3Rh YmxlICpwZ3QsCisJICAgICAgY29uc3Qgc3RydWN0IGlndF9hdXhfcGd0YWJsZV9yYW5nZSAqcmFu Z2VzLCBpbnQgcmFuZ2VfY291bnQpCit7CisJaW50IGxldmVsOworCisJcGd0LT5zaXplID0gMDsK KworCWZvciAobGV2ZWwgPSBwZ3QtPmxldmVsczsgbGV2ZWwgPiAwOyBsZXZlbC0tKSB7CisJCXN0 cnVjdCBwZ3RhYmxlX2xldmVsX2luZm8gKmxpID0gJnBndC0+bGV2ZWxfaW5mb1tsZXZlbCAtIDFd OworCisJCWxpLT5hbGxvY19iYXNlID0gQUxJR04ocGd0LT5zaXplLCBsaS0+ZGVzYy0+dGFibGVf c2l6ZSk7CisJCWxpLT5hbGxvY19wdHIgPSBsaS0+YWxsb2NfYmFzZTsKKworCQlsaS0+dGFibGVf Y291bnQgPSBwZ3RfdGFibGVfY291bnQobGktPmRlc2MtPmlkeF9zaGlmdCArCisJCQkJCQkgIGxp LT5kZXNjLT5pZHhfYml0cywKKwkJCQkJCSAgcmFuZ2VzLCByYW5nZV9jb3VudCk7CisKKwkJcGd0 LT5zaXplID0gbGktPmFsbG9jX2Jhc2UgKworCQkJICAgIGxpLT50YWJsZV9jb3VudCAqIGxpLT5k ZXNjLT50YWJsZV9zaXplOworCX0KK30KKworc3RhdGljIHVpbnQ2NF90IHBndF9hbGxvY190YWJs ZShzdHJ1Y3QgcGd0YWJsZSAqcGd0LCBpbnQgbGV2ZWwpCit7CisJc3RydWN0IHBndGFibGVfbGV2 ZWxfaW5mbyAqbGkgPSAmcGd0LT5sZXZlbF9pbmZvW2xldmVsIC0gMV07CisJdWludDY0X3QgdGFi bGU7CisKKwl0YWJsZSA9IGxpLT5hbGxvY19wdHI7CisJbGktPmFsbG9jX3B0ciArPSBsaS0+ZGVz Yy0+dGFibGVfc2l6ZTsKKworCWlndF9hc3NlcnQobGktPmFsbG9jX3B0ciA8PQorCQkgICBsaS0+ YWxsb2NfYmFzZSArIGxpLT50YWJsZV9jb3VudCAqIGxpLT5kZXNjLT50YWJsZV9zaXplKTsKKwor CXJldHVybiB0YWJsZTsKK30KKworc3RhdGljIGludCBwZ3RfYWRkcmVzc19pbmRleChzdHJ1Y3Qg cGd0YWJsZSAqcGd0LCBpbnQgbGV2ZWwsIHVpbnQ2NF90IGFkZHJlc3MpCit7CisJY29uc3Qgc3Ry dWN0IHBndGFibGVfbGV2ZWxfZGVzYyAqbGQgPSBwZ3QtPmxldmVsX2luZm9bbGV2ZWwgLSAxXS5k ZXNjOworCXVpbnQ2NF90IG1hc2sgPSBCSVRNQVNLKGxkLT5pZHhfc2hpZnQgKyBsZC0+aWR4X2Jp dHMgLSAxLAorCQkJCWxkLT5pZHhfc2hpZnQpOworCisJcmV0dXJuIChhZGRyZXNzICYgbWFzaykg Pj4gbGQtPmlkeF9zaGlmdDsKK30KKworc3RhdGljIHVpbnQ2NF90IHB0cl9tYXNrKHN0cnVjdCBw Z3RhYmxlICpwZ3QsIGludCBsZXZlbCkKK3sKKwljb25zdCBzdHJ1Y3QgcGd0YWJsZV9sZXZlbF9k ZXNjICpsZCA9IHBndC0+bGV2ZWxfaW5mb1tsZXZlbCAtIDFdLmRlc2M7CisKKwlyZXR1cm4gQklU TUFTSyhBRERSRVNTX0JJVFMgLSAxLCBsZC0+ZW50cnlfcHRyX3NoaWZ0KTsKK30KKworc3RhdGlj IHVpbnQ2NF90IHBndF9lbnRyeV9wdHIoc3RydWN0IHBndGFibGUgKnBndCwgaW50IGxldmVsLCB1 aW50NjRfdCBlbnRyeSkKK3sKKwlyZXR1cm4gZW50cnkgJiBwdHJfbWFzayhwZ3QsIGxldmVsKTsK K30KKworc3RhdGljIHVpbnQ2NF90IHBndF9ta2VudHJ5KHN0cnVjdCBwZ3RhYmxlICpwZ3QsIGlu dCBsZXZlbCwgdWludDY0X3QgcHRyLAorCQkJICAgIHVpbnQ2NF90IGZsYWdzKQoreworCWlndF9h c3NlcnQoIShwdHIgJiB+cHRyX21hc2socGd0LCBsZXZlbCkpKTsKKworCXJldHVybiBwdHIgfCBm bGFnczsKK30KKworc3RhdGljIHVpbnQ2NF90CitwZ3RfZ2V0X3RhYmxlKHN0cnVjdCBwZ3RhYmxl ICpwZ3QsIHVpbnQ2NF90IHBhcmVudF90YWJsZSwKKwkgICAgICBpbnQgbGV2ZWwsIHVpbnQ2NF90 IGFkZHJlc3MsIHVpbnQ2NF90IGZsYWdzKQoreworCXVpbnQ2NF90ICp0YWJsZV9wdHIgPSBwZ3Qt PmJvLT52aXJ0dWFsICsgcGFyZW50X3RhYmxlOworCWludCBlbnRyeV9pZHggPSBwZ3RfYWRkcmVz c19pbmRleChwZ3QsIGxldmVsLCBhZGRyZXNzKTsKKwl1aW50NjRfdCAqZW50cnlfcHRyOworCisJ ZW50cnlfcHRyID0gJnRhYmxlX3B0cltlbnRyeV9pZHhdOworCWlmICghKmVudHJ5X3B0cikgewor CQl1aW50NjRfdCBjaGlsZF90YWJsZSA9IHBndF9hbGxvY190YWJsZShwZ3QsIGxldmVsIC0gMSk7 CisKKwkJKmVudHJ5X3B0ciA9IHBndF9ta2VudHJ5KHBndCwgbGV2ZWwsIGNoaWxkX3RhYmxlLCBm bGFncyk7CisKKwkJZHJtX2ludGVsX2JvX2VtaXRfcmVsb2MocGd0LT5ibywKKwkJCQkJcGFyZW50 X3RhYmxlICsgZW50cnlfaWR4ICogc2l6ZW9mKHVpbnQ2NF90KSwKKwkJCQkJcGd0LT5ibywgKmVu dHJ5X3B0ciwKKwkJCQkJSTkxNV9HRU1fRE9NQUlOX0lOU1RSVUNUSU9OLCAwKTsKKwl9CisKKwly ZXR1cm4gcGd0X2VudHJ5X3B0cihwZ3QsIGxldmVsLCAqZW50cnlfcHRyKTsKK30KKworc3RhdGlj IHZvaWQKK3BndF9zZXRfbDFfZW50cnkoc3RydWN0IHBndGFibGUgKnBndCwgdWludDY0X3QgbDFf dGFibGUsCisJCSB1aW50NjRfdCBhZGRyZXNzLCB1aW50NjRfdCBwdHIsIHVpbnQ2NF90IGZsYWdz KQoreworCXVpbnQ2NF90ICpsMV90YWJsZV9wdHI7CisJdWludDY0X3QgKmwxX2VudHJ5X3B0cjsK KworCWwxX3RhYmxlX3B0ciA9IHBndC0+Ym8tPnZpcnR1YWwgKyBsMV90YWJsZTsKKwlsMV9lbnRy eV9wdHIgPSAmbDFfdGFibGVfcHRyW3BndF9hZGRyZXNzX2luZGV4KHBndCwgMSwgYWRkcmVzcyld OworCSpsMV9lbnRyeV9wdHIgPSBwZ3RfbWtlbnRyeShwZ3QsIDEsIHB0ciwgZmxhZ3MpOworfQor CitzdGF0aWMgdWludDY0X3QgcGd0X2dldF9sMV9mbGFncyhjb25zdCBzdHJ1Y3QgaWd0X2F1eF9w Z3RhYmxlX3JhbmdlICpyYW5nZSkKK3sKKwkvKgorCSAqIFRoZSBvZmZzZXQgb2YgLnRpbGVfbW9k ZSBpc24ndCBzcGVjaWZlZCBieSBic3BlYywgaXQncyB3aGF0IE1lc2EKKwkgKiB1c2VzLgorCSAq LworCXVuaW9uIHsKKwkJc3RydWN0IHsKKwkJCXVpbnQ2NF90CXZhbGlkOjE7CisJCQl1aW50NjRf dAljb21wcmVzc2lvbl9tb2Q6MjsKKwkJCXVpbnQ2NF90CWxvc3N5X2NvbXByZXNzaW9uOjE7CisJ CQl1aW50NjRfdAlwYWQ6NDsKKwkJCXVpbnQ2NF90CWFkZHI6NDA7CisJCQl1aW50NjRfdAlwYWQy OjQ7CisJCQl1aW50NjRfdAl0aWxlX21vZGU6MjsKKwkJCXVpbnQ2NF90CWRlcHRoOjM7CisJCQl1 aW50NjRfdAl5Y3I6MTsKKwkJCXVpbnQ2NF90CWZvcm1hdDo2OworCQl9IGU7CisJCXVpbnQ2NF90 IGw7CisJfSBlbnRyeSA9IHsKKwkJLmUgPSB7CisJCQkudmFsaWQgPSAxLAorCQkJLnRpbGVfbW9k ZSA9IHJhbmdlLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWSA/IDEgOiAwLAorCQkJLmRlcHRoID0g NSwJCS8qIDMyYnBwICovCisJCQkuZm9ybWF0ID0gMHhBLAkJLyogQjhHOFI4QThfVU5PUk0gKi8K KwkJfQorCX07CisKKwkvKgorCSAqIFRPRE86IENsYXJpZnkgaWYgWWYgaXMgc3VwcG9ydGVkIGFu ZCBpZiB3ZSBuZWVkIHRvIGRpZmZlcmVudGlhdGUKKwkgKiAgICAgICBZcyBhbmQgWWYuCisJICog ICAgICAgQWRkIHN1cHBvcnQgZm9yIG1vcmUgZm9ybWF0cy4KKwkgKi8KKwlpZ3RfYXNzZXJ0KHJh bmdlLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWSB8fAorCQkgICByYW5nZS0+dGlsaW5nID09IEk5 MTVfVElMSU5HX1lmIHx8CisJCSAgIHJhbmdlLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWXMpOwor CisJaWd0X2Fzc2VydChyYW5nZS0+YnBwID09IDMyKTsKKworCXJldHVybiBlbnRyeS5sOworfQor CitzdGF0aWMgdWludDY0X3QgcGd0X2dldF9seF9mbGFncyh2b2lkKQoreworCXVuaW9uIHsKKwkJ c3RydWN0IHsKKwkJCXVpbnQ2NF90ICAgICAgICB2YWxpZDoxOworCQkJdWludDY0X3QgICAgICAg IGFkZHI6NDc7CisJCQl1aW50NjRfdCAgICAgICAgcGFkOjE2OworCQl9IGU7CisJCXVpbnQ2NF90 IGw7CisJfSBlbnRyeSA9IHsKKwkJLmUgPSB7CisJCQkudmFsaWQgPSAxLAorCQl9CisJfTsKKwor CXJldHVybiBlbnRyeS5sOworfQorCitzdGF0aWMgdm9pZAorcGd0X3BvcHVsYXRlX2VudHJpZXNf Zm9yX3JhbmdlKHN0cnVjdCBwZ3RhYmxlICpwZ3QsCisJCQkgICAgICAgY29uc3Qgc3RydWN0IGln dF9hdXhfcGd0YWJsZV9yYW5nZSAqcmFuZ2UsCisJCQkgICAgICAgZHJtX2ludGVsX2JvICpibywK KwkJCSAgICAgICB1aW50NjRfdCB0b3BfdGFibGUpCit7CisJdWludDY0X3Qgc3VyZmFjZV9hZGRy ID0gcmFuZ2UtPnN1cmZhY2VfYmFzZTsKKwl1aW50NjRfdCBzdXJmYWNlX2VuZCA9IHN1cmZhY2Vf YWRkciArIHJhbmdlLT5zdXJmYWNlX3NpemU7CisJdWludDY0X3QgYXV4X2FkZHIgPSByYW5nZS0+ YXV4X2Jhc2U7CisJdWludDY0X3QgbDFfZmxhZ3MgPSBwZ3RfZ2V0X2wxX2ZsYWdzKHJhbmdlKTsK Kwl1aW50NjRfdCBseF9mbGFncyA9IHBndF9nZXRfbHhfZmxhZ3MoKTsKKworCXBndC0+Ym8gPSBi bzsKKworCWZvciAoOyBzdXJmYWNlX2FkZHIgPCBzdXJmYWNlX2VuZDsKKwkgICAgIHN1cmZhY2Vf YWRkciArPSBTVVJGQUNFX0JMT0NLX1NJWkUsIGF1eF9hZGRyICs9IENDU19CTE9DS19TSVpFKSB7 CisJCXVpbnQ2NF90IHRhYmxlID0gdG9wX3RhYmxlOworCQlpbnQgbGV2ZWw7CisKKwkJZm9yIChs ZXZlbCA9IHBndC0+bGV2ZWxzOyBsZXZlbCA+IDE7IGxldmVsLS0pCisJCQl0YWJsZSA9IHBndF9n ZXRfdGFibGUocGd0LCB0YWJsZSwgbGV2ZWwsCisJCQkJCSAgICAgIHN1cmZhY2VfYWRkciwgbHhf ZmxhZ3MpOworCisJCXBndF9zZXRfbDFfZW50cnkocGd0LCB0YWJsZSwgc3VyZmFjZV9hZGRyLCBh dXhfYWRkciwgbDFfZmxhZ3MpOworCX0KK30KKworc3RhdGljIHZvaWQgcGd0X3BvcHVsYXRlX2Vu dHJpZXMoc3RydWN0IHBndGFibGUgKnBndCwKKwkJCQkgY29uc3Qgc3RydWN0IGlndF9hdXhfcGd0 YWJsZV9yYW5nZSAqcmFuZ2VzLAorCQkJCSBpbnQgcmFuZ2VfY291bnQsCisJCQkJIGRybV9pbnRl bF9ibyAqZ2VtX2JvKQoreworCXVpbnQ2NF90IHRvcF90YWJsZTsKKwlpbnQgaTsKKworCWlndF9h c3NlcnQoZ2VtX2JvLT5zaXplID49IHBndC0+c2l6ZSk7CisJbWVtc2V0KGdlbV9iby0+dmlydHVh bCwgMCwgcGd0LT5zaXplKTsKKworCXRvcF90YWJsZSA9IHBndF9hbGxvY190YWJsZShwZ3QsIHBn dC0+bGV2ZWxzKTsKKwkvKiBUb3AgbGV2ZWwgdGFibGUgbXVzdCBiZSBhdCBvZmZzZXQgMC4gKi8K KwlpZ3RfYXNzZXJ0KHRvcF90YWJsZSA9PSAwKTsKKworCWZvciAoaSA9IDA7IGkgPCByYW5nZV9j b3VudDsgaSsrKQorCQlwZ3RfcG9wdWxhdGVfZW50cmllc19mb3JfcmFuZ2UocGd0LCAmcmFuZ2Vz W2ldLCBnZW1fYm8sCisJCQkJCSAgICAgICB0b3BfdGFibGUpOworfQorCitzdGF0aWMgc3RydWN0 IHBndGFibGUgKgorcGd0X2NyZWF0ZShjb25zdCBzdHJ1Y3QgcGd0YWJsZV9sZXZlbF9kZXNjICps ZXZlbF9kZXNjcywgaW50IGxldmVscywKKwkgICBjb25zdCBzdHJ1Y3QgaWd0X2F1eF9wZ3RhYmxl X3JhbmdlICpyYW5nZXMsIGludCByYW5nZV9jb3VudCkKK3sKKwlzdHJ1Y3QgcGd0YWJsZSAqcGd0 OworCWludCBsZXZlbDsKKworCXBndCA9IGNhbGxvYygxLCBzaXplb2YoKnBndCkpOworCWlndF9h c3NlcnQocGd0KTsKKworCXBndC0+bGV2ZWxzID0gbGV2ZWxzOworCisJcGd0LT5sZXZlbF9pbmZv ID0gY2FsbG9jKGxldmVscywgc2l6ZW9mKCpwZ3QtPmxldmVsX2luZm8pKTsKKwlpZ3RfYXNzZXJ0 KHBndC0+bGV2ZWxfaW5mbyk7CisKKwlmb3IgKGxldmVsID0gMDsgbGV2ZWwgPCBwZ3QtPmxldmVs czsgbGV2ZWwrKykgeworCQlzdHJ1Y3QgcGd0YWJsZV9sZXZlbF9pbmZvICpsaSA9ICZwZ3QtPmxl dmVsX2luZm9bbGV2ZWxdOworCisJCWxpLT5kZXNjID0gJmxldmVsX2Rlc2NzW2xldmVsXTsKKwkJ aWYgKGxpLT5kZXNjLT50YWJsZV9zaXplID4gcGd0LT5tYXhfYWxpZ24pCisJCQlwZ3QtPm1heF9h bGlnbiA9IGxpLT5kZXNjLT50YWJsZV9zaXplOworCX0KKworCXBndF9jYWxjX3NpemUocGd0LCBy YW5nZXMsIHJhbmdlX2NvdW50KTsKKworCXJldHVybiBwZ3Q7Cit9CisKK3N0YXRpYyB2b2lkIHBn dF9kZXN0cm95KHN0cnVjdCBwZ3RhYmxlICpwZ3QpCit7CisJZnJlZShwZ3QtPmxldmVsX2luZm8p OworCWZyZWUocGd0KTsKK30KKworZHJtX2ludGVsX2JvICoKK2lndF9hdXhfcGd0YWJsZV9jcmVh dGUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkgICAgICAgY29uc3Qgc3RydWN0IGlndF9h dXhfcGd0YWJsZV9yYW5nZSAqcmFuZ2VzLAorCQkgICAgICAgaW50IHJhbmdlX2NvdW50KQorewor CXN0cnVjdCBwZ3RhYmxlICpwZ3Q7CisJZHJtX2ludGVsX2JvICpnZW1fYm87CisKKwlwZ3QgPSBw Z3RfY3JlYXRlKGF1eF9wZ3RhYmxlX2Rlc2MsIEFVWF9QR1RBQkxFX0xFVkVMUywKKwkJCSByYW5n ZXMsIHJhbmdlX2NvdW50KTsKKworCWdlbV9ibyA9IGRybV9pbnRlbF9ib19hbGxvY19mb3JfcmVu ZGVyKGJ1Zm1nciwKKwkJCQkJICAgICAgICJhdXggcGd0IiwKKwkJCQkJICAgICAgIHBndC0+c2l6 ZSwgcGd0LT5tYXhfYWxpZ24pOworCWlndF9hc3NlcnQoZ2VtX2JvKTsKKworCWlndF9hc3NlcnQo ZHJtX2ludGVsX2JvX21hcChnZW1fYm8sIHRydWUpID09IDApOworCXBndF9wb3B1bGF0ZV9lbnRy aWVzKHBndCwgcmFuZ2VzLCByYW5nZV9jb3VudCwgZ2VtX2JvKTsKKwlpZ3RfYXNzZXJ0KGRybV9p bnRlbF9ib191bm1hcChnZW1fYm8pID09IDApOworCisJcGd0X2Rlc3Ryb3kocGd0KTsKKworCXJl dHVybiBnZW1fYm87Cit9CmRpZmYgLS1naXQgYS9saWIvaWd0X2F1eF9wZ3RhYmxlLmggYi9saWIv aWd0X2F1eF9wZ3RhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjY0 YzZiMjFmCi0tLSAvZGV2L251bGwKKysrIGIvbGliL2lndF9hdXhfcGd0YWJsZS5oCkBAIC0wLDAg KzEsMjEgQEAKKyNpZm5kZWYgX0lHVF9BVVhfUEdUQUJMRV9IXworI2RlZmluZSBfSUdUX0FVWF9Q R1RBQkxFX0hfCisKKyNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKKworc3RydWN0IGlndF9hdXhf cGd0YWJsZTsKKworc3RydWN0IGlndF9hdXhfcGd0YWJsZV9yYW5nZSB7CisJdWludDY0X3Qgc3Vy ZmFjZV9iYXNlOworCXVpbnQ2NF90IHN1cmZhY2Vfc2l6ZTsKKwl1aW50NjRfdCBhdXhfYmFzZTsK Kwl1aW50MzJfdCB0aWxpbmc7CisJaW50IGJwcDsKK307CisKK2RybV9pbnRlbF9ibyAqCitpZ3Rf YXV4X3BndGFibGVfY3JlYXRlKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJICAgICAgIGNv bnN0IHN0cnVjdCBpZ3RfYXV4X3BndGFibGVfcmFuZ2UgKnJhbmdlcywKKwkJICAgICAgIGludCBy YW5nZV9jb3VudCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbGliL2ludGVsX3JlZy5oIGIvbGli L2ludGVsX3JlZy5oCmluZGV4IDA2OTQ0MGNiLi5lNzI2M2NlMSAxMDA2NDQKLS0tIGEvbGliL2lu dGVsX3JlZy5oCisrKyBiL2xpYi9pbnRlbF9yZWcuaApAQCAtNjczLDYgKzY3Myw4IEBAIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogI2RlZmlu ZSBSSU5HX1ZBTElEICAgICAgICAgIDB4MDAwMDAwMDEKICNkZWZpbmUgUklOR19JTlZBTElEICAg ICAgICAweDAwMDAwMDAwCiAKKyNkZWZpbmUgR0VOMTJfR0ZYX0FVWF9UQUJMRV9CQVNFX0FERFIJ MHg0MjAwCisKIAogCiAvKiBCaXRCbHQgSW5zdHJ1Y3Rpb25zCkBAIC0yNTcwLDYgKzI1NzIsNyBA QCBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K IAogI2RlZmluZSBNSV9MT0FEX1NDQU5fTElORVNfSU5DTAkJKDB4MTI8PDIzKQogI2RlZmluZSBN SV9MT0FEX1JFR0lTVEVSX0lNTQkJKCgweDIyIDw8IDIzKSB8IDEpCisjZGVmaW5lIE1JX0xPQURf UkVHSVNURVJfTUVNCQkoKDB4MjkgPDwgMjMpIHwgKDQgLSAyKSkKIAogLyogRmx1c2ggKi8KICNk ZWZpbmUgTUlfRkxVU0gJCQkoMHgwNDw8MjMpCmRpZmYgLS1naXQgYS9saWIvbWVzb24uYnVpbGQg Yi9saWIvbWVzb24uYnVpbGQKaW5kZXggMjIxYWUyOGMuLjIxMzVkZGYzIDEwMDY0NAotLS0gYS9s aWIvbWVzb24uYnVpbGQKKysrIGIvbGliL21lc29uLmJ1aWxkCkBAIC00Niw2ICs0Niw3IEBAIGxp Yl9zb3VyY2VzID0gWwogCSdzd19zeW5jLmMnLAogCSdpbnRlbF9yZWdfbWFwLmMnLAogCSdpbnRl bF9pb3NmLmMnLAorCSdpZ3RfYXV4X3BndGFibGUuYycsCiAJJ2lndF9rbXMuYycsCiAJJ2lndF9m Yi5jJywKIAknaWd0X2NvcmUuYycsCmRpZmYgLS1naXQgYS9saWIvcmVuZGVyY29weV9nZW45LmMg Yi9saWIvcmVuZGVyY29weV9nZW45LmMKaW5kZXggNjk0ZWIzY2YuLjMxZTM4YzJiIDEwMDY0NAot LS0gYS9saWIvcmVuZGVyY29weV9nZW45LmMKKysrIGIvbGliL3JlbmRlcmNvcHlfZ2VuOS5jCkBA IC0xNSw2ICsxNSw3IEBACiAjaW5jbHVkZSA8aTkxNV9kcm0uaD4KIAogI2luY2x1ZGUgImRybXRl c3QuaCIKKyNpbmNsdWRlICJpZ3RfYXV4X3BndGFibGUuaCIKICNpbmNsdWRlICJpbnRlbF9idWZt Z3IuaCIKICNpbmNsdWRlICJpbnRlbF9iYXRjaGJ1ZmZlci5oIgogI2luY2x1ZGUgImludGVsX2lv LmgiCkBAIC05NzIsMTkgKzk3MywxMTMgQEAgc3RhdGljIHZvaWQgZ2VuOF9lbWl0X3ByaW1pdGl2 ZShzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLCB1aW50MzJfdCBvZmZzZXQKIAogI2Rl ZmluZSBCQVRDSF9TVEFURV9TUExJVCAyMDQ4CiAKK3N0YXRpYyB2b2lkCitnZW4xMl9lbWl0X2F1 eF9wZ3RhYmxlX3N0YXRlKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsIHVpbnQzMl90 IHN0YXRlKQoreworCWlmICghc3RhdGUpCisJCXJldHVybjsKKworCU9VVF9CQVRDSChNSV9MT0FE X1JFR0lTVEVSX01FTSk7CisJT1VUX0JBVENIKEdFTjEyX0dGWF9BVVhfVEFCTEVfQkFTRV9BRERS KTsKKwlPVVRfUkVMT0MoYmF0Y2gtPmJvLCBJOTE1X0dFTV9ET01BSU5fSU5TVFJVQ1RJT04sIDAs IHN0YXRlKTsKKwlPVVRfQkFUQ0goTUlfTk9PUCk7CisKKwlPVVRfQkFUQ0goTUlfTE9BRF9SRUdJ U1RFUl9NRU0pOworCU9VVF9CQVRDSChHRU4xMl9HRlhfQVVYX1RBQkxFX0JBU0VfQUREUiArIDQp OworCU9VVF9SRUxPQyhiYXRjaC0+Ym8sIEk5MTVfR0VNX0RPTUFJTl9JTlNUUlVDVElPTiwgMCwg c3RhdGUgKyA0KTsKKwlPVVRfQkFUQ0goTUlfTk9PUCk7Cit9CisKK3N0YXRpYyBpbnQgYWRkX2F1 eF9wZ3RhYmxlX3JhbmdlKGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpidWYsCisJCQkJIHN0cnVjdCBp Z3RfYXV4X3BndGFibGVfcmFuZ2UgKnJhbmdlLAorCQkJCSB1aW50NjRfdCAqcGluX29mZnNldCkK K3sKKwlpZiAoIWJ1Zi0+YXV4LnN0cmlkZSkKKwkJcmV0dXJuIDA7CisKKwlkcm1faW50ZWxfYm9f c2V0X3NvZnRwaW5fb2Zmc2V0KGJ1Zi0+Ym8sICpwaW5fb2Zmc2V0KTsKKwlpZ3RfYXNzZXJ0KGJ1 Zi0+Ym8tPm9mZnNldDY0ID09ICpwaW5fb2Zmc2V0KTsKKworCXJhbmdlLT5zdXJmYWNlX2Jhc2Ug PSAqcGluX29mZnNldDsKKwlyYW5nZS0+c3VyZmFjZV9zaXplID0gYnVmLT5zaXplOworCXJhbmdl LT5hdXhfYmFzZSA9ICpwaW5fb2Zmc2V0ICsgYnVmLT5hdXgub2Zmc2V0OworCXJhbmdlLT50aWxp bmcgPSBidWYtPnRpbGluZzsKKwlyYW5nZS0+YnBwID0gYnVmLT5icHA7CisKKwkvKiBUaGUgR0VO MTIrIGNvbXByZXNzZWQgbWFpbiBzdXJmYWNlIG11c3QgYmUgNjRrQiBhbGlnbmVkLiAgKi8KKwkq cGluX29mZnNldCA9IEFMSUdOKCpwaW5fb2Zmc2V0ICsgYnVmLT5iby0+c2l6ZSwgMHgxMDAwMCk7 CisKKwlyZXR1cm4gMTsKK30KKworc3RhdGljIGRybV9pbnRlbF9ibyAqCitnZW4xMl9jcmVhdGVf YXV4X3BndGFibGVfYm8oZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkJICAgIGNvbnN0IHN0 cnVjdCBpZ3RfYnVmICpkc3RfYnVmLAorCQkJICAgIGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpzcmNf YnVmKQoreworCXN0cnVjdCBpZ3RfYXV4X3BndGFibGVfcmFuZ2UgcmFuZ2VzWzJdOworCWludCBy YW5nZV9jb3VudDsKKwl1aW50NjRfdCBwaW5fb2Zmc2V0OworCWRybV9pbnRlbF9ibyAqZ2VtX2Jv OworCisJcmFuZ2VfY291bnQgPSAwOworCXBpbl9vZmZzZXQgPSAwOworCisJcmFuZ2VfY291bnQg Kz0gYWRkX2F1eF9wZ3RhYmxlX3JhbmdlKGRzdF9idWYsCisJCQkJCSAgICAgJnJhbmdlc1tyYW5n ZV9jb3VudF0sICZwaW5fb2Zmc2V0KTsKKwlyYW5nZV9jb3VudCArPSBhZGRfYXV4X3BndGFibGVf cmFuZ2Uoc3JjX2J1ZiwKKwkJCQkJICAgICAmcmFuZ2VzW3JhbmdlX2NvdW50XSwgJnBpbl9vZmZz ZXQpOworCisJaWYgKCFyYW5nZV9jb3VudCkKKwkJcmV0dXJuIE5VTEw7CisKKwlnZW1fYm8gPSBp Z3RfYXV4X3BndGFibGVfY3JlYXRlKGJ1Zm1nciwgcmFuZ2VzLCByYW5nZV9jb3VudCk7CisJaWd0 X2Fzc2VydChnZW1fYm8pOworCisJcmV0dXJuIGdlbV9ibzsKK30KKworc3RhdGljIHVpbnQzMl90 CitnZW4xMl9jcmVhdGVfYXV4X3BndGFibGVfc3RhdGUoc3RydWN0IGludGVsX2JhdGNoYnVmZmVy ICpiYXRjaCwKKwkJCSAgICAgICBkcm1faW50ZWxfYm8gKmF1eF9wZ3RhYmxlX2JvKQoreworCXVp bnQ2NF90ICpwZ3RhYmxlX3B0cjsKKwl1aW50MzJfdCBwZ3RhYmxlX3B0cl9vZmZzZXQ7CisJaW50 IHJldDsKKworCWlmICghYXV4X3BndGFibGVfYm8pCisJCXJldHVybiAwOworCisJcGd0YWJsZV9w dHIgPSBpbnRlbF9iYXRjaGJ1ZmZlcl9zdWJkYXRhX2FsbG9jKGJhdGNoLAorCQkJCQkJICAgICAg c2l6ZW9mKCpwZ3RhYmxlX3B0ciksCisJCQkJCQkgICAgICBzaXplb2YoKnBndGFibGVfcHRyKSk7 CisJcGd0YWJsZV9wdHJfb2Zmc2V0ID0gaW50ZWxfYmF0Y2hidWZmZXJfc3ViZGF0YV9vZmZzZXQo YmF0Y2gsCisJCQkJCQkJICAgICAgcGd0YWJsZV9wdHIpOworCisJcmV0ID0gZHJtX2ludGVsX2Jv X2VtaXRfcmVsb2MoYmF0Y2gtPmJvLCBwZ3RhYmxlX3B0cl9vZmZzZXQsCisJCQkJICAgICAgYXV4 X3BndGFibGVfYm8sIDAsCisJCQkJICAgICAgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwgMCk7CisJ YXNzZXJ0KHJldCA9PSAwKTsKKworCXJldHVybiBwZ3RhYmxlX3B0cl9vZmZzZXQ7Cit9CisKIHN0 YXRpYwogdm9pZCBfZ2VuOV9yZW5kZXJfY29weWZ1bmMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVy ICpiYXRjaCwKIAkJCSAgZHJtX2ludGVsX2NvbnRleHQgKmNvbnRleHQsCiAJCQkgIGNvbnN0IHN0 cnVjdCBpZ3RfYnVmICpzcmMsIHVuc2lnbmVkIHNyY194LAogCQkJICB1bnNpZ25lZCBzcmNfeSwg dW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKIAkJCSAgY29uc3Qgc3RydWN0IGlndF9i dWYgKmRzdCwgdW5zaWduZWQgZHN0X3gsCi0JCQkgIHVuc2lnbmVkIGRzdF95LCBjb25zdCB1aW50 MzJfdCBwc19rZXJuZWxbXVs0XSwKKwkJCSAgdW5zaWduZWQgZHN0X3ksCisJCQkgIGRybV9pbnRl bF9ibyAqYXV4X3BndGFibGVfYm8sCisJCQkgIGNvbnN0IHVpbnQzMl90IHBzX2tlcm5lbFtdWzRd LAogCQkJICB1aW50MzJfdCBwc19rZXJuZWxfc2l6ZSkKIHsKIAl1aW50MzJfdCBwc19zYW1wbGVy X3N0YXRlLCBwc19rZXJuZWxfb2ZmLCBwc19iaW5kaW5nX3RhYmxlOwogCXVpbnQzMl90IHNjaXNz b3Jfc3RhdGU7CiAJdWludDMyX3QgdmVydGV4X2J1ZmZlcjsKIAl1aW50MzJfdCBiYXRjaF9lbmQ7 CisJdWludDMyX3QgYXV4X3BndGFibGVfc3RhdGU7CiAKIAlpZ3RfYXNzZXJ0KHNyYy0+YnBwID09 IGRzdC0+YnBwKTsKIAlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF93aXRoX2NvbnRleHQoYmF0Y2gs IGNvbnRleHQpOwpAQCAtMTAwNyw2ICsxMTAyLDEwIEBAIHZvaWQgX2dlbjlfcmVuZGVyX2NvcHlm dW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAJdmlld3BvcnQuY2Nfc3RhdGUg PSBnZW42X2NyZWF0ZV9jY192aWV3cG9ydChiYXRjaCk7CiAJdmlld3BvcnQuc2ZfY2xpcF9zdGF0 ZSA9IGdlbjdfY3JlYXRlX3NmX2NsaXBfdmlld3BvcnQoYmF0Y2gpOwogCXNjaXNzb3Jfc3RhdGUg PSBnZW42X2NyZWF0ZV9zY2lzc29yX3JlY3QoYmF0Y2gpOworCisJYXV4X3BndGFibGVfc3RhdGUg PSBnZW4xMl9jcmVhdGVfYXV4X3BndGFibGVfc3RhdGUoYmF0Y2gsCisJCQkJCQkJICAgYXV4X3Bn dGFibGVfYm8pOworCiAJLyogVE9ETzogdGhlcmVlIGlzIG90aGVyIHN0YXRlIHdoaWNoIGlzbid0 IHNldHVwICovCiAKIAlhc3NlcnQoYmF0Y2gtPnB0ciA8ICZiYXRjaC0+YnVmZmVyWzQwOTVdKTsK QEAgLTEwMTgsNiArMTExNyw4IEBAIHZvaWQgX2dlbjlfcmVuZGVyX2NvcHlmdW5jKHN0cnVjdCBp bnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAJT1VUX0JBVENIKEc0WF9QSVBFTElORV9TRUxFQ1Qg fCBQSVBFTElORV9TRUxFQ1RfM0QgfAogCQkJCUdFTjlfUElQRUxJTkVfU0VMRUNUSU9OX01BU0sp OwogCisJZ2VuMTJfZW1pdF9hdXhfcGd0YWJsZV9zdGF0ZShiYXRjaCwgYXV4X3BndGFibGVfc3Rh dGUpOworCiAJZ2VuOF9lbWl0X3NpcChiYXRjaCk7CiAKIAlnZW43X2VtaXRfcHVzaF9jb25zdGFu dHMoYmF0Y2gpOwpAQCAtMTA5Miw4ICsxMTkzLDggQEAgdm9pZCBnZW45X3JlbmRlcl9jb3B5ZnVu YyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAogCiB7CiAJX2dlbjlfcmVuZGVyX2Nv cHlmdW5jKGJhdGNoLCBjb250ZXh0LCBzcmMsIHNyY194LCBzcmNfeSwKLQkJCSAgd2lkdGgsIGhl aWdodCwgZHN0LCBkc3RfeCwgZHN0X3ksIHBzX2tlcm5lbF9nZW45LAotCQkJICBzaXplb2YocHNf a2VybmVsX2dlbjkpKTsKKwkJCSAgd2lkdGgsIGhlaWdodCwgZHN0LCBkc3RfeCwgZHN0X3ksIE5V TEwsCisJCQkgIHBzX2tlcm5lbF9nZW45LCBzaXplb2YocHNfa2VybmVsX2dlbjkpKTsKIH0KIAog dm9pZCBnZW4xMV9yZW5kZXJfY29weWZ1bmMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRj aCwKQEAgLTExMDQsOCArMTIwNSw4IEBAIHZvaWQgZ2VuMTFfcmVuZGVyX2NvcHlmdW5jKHN0cnVj dCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAKIHsKIAlfZ2VuOV9yZW5kZXJfY29weWZ1bmMo YmF0Y2gsIGNvbnRleHQsIHNyYywgc3JjX3gsIHNyY195LAotCQkJICB3aWR0aCwgaGVpZ2h0LCBk c3QsIGRzdF94LCBkc3RfeSwgcHNfa2VybmVsX2dlbjExLAotCQkJICBzaXplb2YocHNfa2VybmVs X2dlbjExKSk7CisJCQkgIHdpZHRoLCBoZWlnaHQsIGRzdCwgZHN0X3gsIGRzdF95LCBOVUxMLAor CQkJICBwc19rZXJuZWxfZ2VuMTEsIHNpemVvZihwc19rZXJuZWxfZ2VuMTEpKTsKIH0KIAogdm9p ZCBnZW4xMl9yZW5kZXJfY29weWZ1bmMoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwK QEAgLTExMTUsNyArMTIxNiwxNSBAQCB2b2lkIGdlbjEyX3JlbmRlcl9jb3B5ZnVuYyhzdHJ1Y3Qg aW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAogCQkJICAgY29uc3Qgc3RydWN0IGlndF9idWYgKmRz dCwgdW5zaWduZWQgZHN0X3gsIHVuc2lnbmVkIGRzdF95KQogCiB7CisJZHJtX2ludGVsX2JvICph dXhfcGd0YWJsZV9ibzsKKworCWF1eF9wZ3RhYmxlX2JvID0gZ2VuMTJfY3JlYXRlX2F1eF9wZ3Rh YmxlX2JvKGJhdGNoLT5idWZtZ3IsIGRzdCwgc3JjKTsKKwogCV9nZW45X3JlbmRlcl9jb3B5ZnVu YyhiYXRjaCwgY29udGV4dCwgc3JjLCBzcmNfeCwgc3JjX3ksCi0JCQkgIHdpZHRoLCBoZWlnaHQs IGRzdCwgZHN0X3gsIGRzdF95LCBnZW4xMl9yZW5kZXJfY29weSwKKwkJCSAgd2lkdGgsIGhlaWdo dCwgZHN0LCBkc3RfeCwgZHN0X3ksCisJCQkgIGF1eF9wZ3RhYmxlX2JvLAorCQkJICBnZW4xMl9y ZW5kZXJfY29weSwKIAkJCSAgc2l6ZW9mKGdlbjEyX3JlbmRlcl9jb3B5KSk7CisKKwlkcm1faW50 ZWxfYm9fdW5yZWZlcmVuY2UoYXV4X3BndGFibGVfYm8pOwogfQotLSAKMi4xNy4xCgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcg bGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=