From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 614706E191 for ; Wed, 6 Nov 2019 06:54:49 +0000 (UTC) From: Imre Deak Date: Wed, 6 Nov 2019 08:53:08 +0200 Message-Id: <20191106065308.25833-1-imre.deak@intel.com> In-Reply-To: <20191105214220.6394-1-imre.deak@intel.com> References: <20191105214220.6394-1-imre.deak@intel.com> MIME-Version: 1.0 Subject: [igt-dev] [PATCH v4 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 bG93CnRoYXQgYW5kIGVtaXQgdGhlIHJlcXVpcmVkIHJlbG9jYXRpb24gZW50cmllcy4KCnYyOgot IE1ha2UgbGV2ZWwgdmFyaWFibGVzIHRvIGJlIDAgYmFzZWQgKGwxLi5sMyAtPiBsZXZlbD0wLi4y KS4KLSBBZGQgbWlzc2luZyBkcm1faW50ZWxfYm9fc2V0X3NvZnRwaW5fb2Zmc2V0KCkgc3R1YiB0 byBmaXggYnVpbGQgb24KICBub24tSW50ZWwgYXJjaHMuCi0gRml4IG1pc3Npbmcgb2Zmc2V0cyBp biByZWxvYyBlbnRyaWVzIG9mIGFscmVhZHkgYm91bmQgb2JqZWN0cy4gKENocmlzKQotIFJhbmRv bWl6ZSBwaW4gb2Zmc2V0cywgdG8gdHJ5IHRvIGF2b2lkIGV2aWN0aW9uLiAoQ2hyaXMpCi0gUmVt b3ZlIHJlZHVuZGFudCBNSV9OT09QUyBhcm91bmQgTUlfTE9BRF9SRUdJU1RFUl9NRU0KLSBTdG9w IHVzaW5nIGV4cGxpY2l0IHJlbG9jIGNhY2hlIGRvbWFpbnMsIGFzIHRoZXNlIGRvbid0IG1ha2Ug c2Vuc2Ugb24KICBHRU4xMiBhbnl3YXkuIChDaHJpcykKLSBGaXggbWlzc2luZyBhdXRvdG9vbHMg c3VwcG9ydC4gKENocmlzKQotIHMvaWd0X2F1eF9wZ3RhYmxlL2ludGVsX2F1eF9wZ3RhYmxlLywg c2luY2UgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgSW50ZWwKICBzcGVjaWZpYy4gKENocmlzKQp2MzoK LSBNYWtlIHN1cmUgYWxsIG9iamVjdHMgd2l0aCBhbiBBVVggc3VyZmFjZSBhcmUgcGlubmVkLgp2 NDoKLSBzL01JX0xPQURfUkVHSVNURVJfTUVNL01JX0xPQURfUkVHSVNURVJfTUVNX0dFTjgvIChD aHJpcykKLSBGaXggdXNpbmcgYnVmLT5iby0+c2l6ZSBpbnN0ZWFkIG9mIGJ1Zi0+c2l6ZSB3aGVu IGZpbmRpbmcgYSBmcmVlCiAgcmFuZ2UgZm9yIGEgcGlubmVkIG9iai4KLSBGaXggYWxpZ25tZW50 IG9mIHRoZSByZXNlcnZlZCBzcGFjZSBzdGFydCBmb3IgYSBwaW5uZWQgb2JqLgotIE1vdmUgZ2Vu MTJfZW1pdF9hdXhfcGd0YWJsZV9zdGF0ZSgpIHRvIGl0cyBsb2dpY2FsIHNwb3QuCgpDYzogTWlr YSBLYWhvbGEgPG1pa2Eua2Fob2xhQGludGVsLmNvbT4KQ2M6IEJyaWFuIFdlbHR5IDxicmlhbi53 ZWx0eUBpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KQ2M6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClNp Z25lZC1vZmYtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KLS0tCiBsaWIvTWFr ZWZpbGUuc291cmNlcyAgICAgICAgIHwgICAxICsKIGxpYi9kcm10ZXN0LmggICAgICAgICAgICAg ICAgfCAgIDkgKwogbGliL2ludGVsX2F1eF9wZ3RhYmxlLmMgICAgICB8IDM3NyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwogbGliL2ludGVsX2F1eF9wZ3RhYmxlLmggICAgICB8 ICAxMiArKwogbGliL2ludGVsX3JlZy5oICAgICAgICAgICAgICB8ICAgMiArCiBsaWIvbWVzb24u YnVpbGQgICAgICAgICAgICAgIHwgICAxICsKIGxpYi9yZW5kZXJjb3B5X2dlbjkuYyAgICAgICAg fCAyMzQgKysrKysrKysrKysrKysrKysrKysrLQogbGliL3N0dWJzL2RybS9pbnRlbF9idWZtZ3Iu YyB8ICAgNiArCiA4IGZpbGVzIGNoYW5nZWQsIDYzNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9u cygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYi9pbnRlbF9hdXhfcGd0YWJsZS5jCiBjcmVhdGUg bW9kZSAxMDA2NDQgbGliL2ludGVsX2F1eF9wZ3RhYmxlLmgKCmRpZmYgLS1naXQgYS9saWIvTWFr ZWZpbGUuc291cmNlcyBiL2xpYi9NYWtlZmlsZS5zb3VyY2VzCmluZGV4IGNmMDk0YWI4Li4xZDBm NDVmNyAxMDA2NDQKLS0tIGEvbGliL01ha2VmaWxlLnNvdXJjZXMKKysrIGIvbGliL01ha2VmaWxl LnNvdXJjZXMKQEAgLTEwMCw2ICsxMDAsNyBAQCBsaWJfc291cmNlX2xpc3QgPQkgCVwKIAlzdXJm YWNlZm9ybWF0LmgJCVwKIAlzd19zeW5jLmMJCVwKIAlzd19zeW5jLmgJCVwKKwlpbnRlbF9hdXhf cGd0YWJsZS5jCVwKIAlpbnRlbF9yZWdfbWFwLmMJCVwKIAlpbnRlbF9pb3NmLmMJCVwKIAlpZ3Rf a21zLmMJCVwKZGlmZiAtLWdpdCBhL2xpYi9kcm10ZXN0LmggYi9saWIvZHJtdGVzdC5oCmluZGV4 IDYxNGY1N2U2Li4wNWViMDg2MCAxMDA2NDQKLS0tIGEvbGliL2RybXRlc3QuaAorKysgYi9saWIv ZHJtdGVzdC5oCkBAIC03Nyw2ICs3NywxNSBAQCB2b2lkIF9fc2V0X2ZvcmNlZF9kcml2ZXIoY29u c3QgY2hhciAqbmFtZSk7CiAgKi8KICNkZWZpbmUgQUxJR04odiwgYSkgKCgodikgKyAoYSktMSkg JiB+KChhKS0xKSkKIAorLyoqCisgKiBBTElHTl9ET1dOOgorICogQHY6IHZhbHVlIHRvIGJlIGFs aWduZWQgZG93bgorICogQGE6IGFsaWdubWVudCB1bml0IGluIGJ5dGVzCisgKgorICogTWFjcm8g dG8gYWxpZ24gZG93biBhIHZhbHVlIEB2IHRvIGEgc3BlY2lmaWVkIHVuaXQgQGEuCisgKi8KKyNk ZWZpbmUgQUxJR05fRE9XTih4LCBhKQlBTElHTigoeCkgLSAoKGEpIC0gMSksIChhKSkKKwogaW50 IGRybV9vcGVuX2RyaXZlcihpbnQgY2hpcHNldCk7CiBpbnQgZHJtX29wZW5fZHJpdmVyX21hc3Rl cihpbnQgY2hpcHNldCk7CiBpbnQgZHJtX29wZW5fZHJpdmVyX3JlbmRlcihpbnQgY2hpcHNldCk7 CmRpZmYgLS1naXQgYS9saWIvaW50ZWxfYXV4X3BndGFibGUuYyBiL2xpYi9pbnRlbF9hdXhfcGd0 YWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwLi5lMTI0OWRlZQotLS0g L2Rldi9udWxsCisrKyBiL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5jCkBAIC0wLDAgKzEsMzc3IEBA CisjaW5jbHVkZSA8c3RkYm9vbC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAi ZHJtdGVzdC5oIgorI2luY2x1ZGUgImludGVsX2F1eF9wZ3RhYmxlLmgiCisjaW5jbHVkZSAiaW50 ZWxfYmF0Y2hidWZmZXIuaCIKKyNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKKyNpbmNsdWRlICJp b2N0bF93cmFwcGVycy5oIgorCisjaW5jbHVkZSAiaTkxNS9nZW1fbW1hbi5oIgorCisjZGVmaW5l IEJJVFNfUEVSX0xPTkcJCShzaXplb2YobG9uZykgKiA4KQorI2RlZmluZSBCSVRNQVNLKGUsIHMp CQkoKH4wVUwgPDwgKHMpKSAmIFwKKwkJCQkgKH4wVUwgPj4gKEJJVFNfUEVSX0xPTkcgLSAxIC0g KGUpKSkpCisKKy8qIFRoZSB1bml0IHNpemUgdG8gd2hpY2ggdGhlIEFVWCBDQ1Mgc3VyZmFjZSBp cyBhbGlnbmVkIHRvLiAqLworI2RlZmluZSBBVVhfQ0NTX1VOSVRfU0laRQk2NAorLyoKKyAqIFRo ZSBibG9jayBzaXplIG9uIHRoZSBBVVggQ0NTIHN1cmZhY2Ugd2hpY2ggaXMgbWFwcGVkIGJ5IG9u ZSBMMSBBVVgKKyAqIHBhZ2V0YWJsZSBlbnRyeS4KKyAqLworI2RlZmluZSBBVVhfQ0NTX0JMT0NL X1NJWkUJKDQgKiBBVVhfQ0NTX1VOSVRfU0laRSkKKy8qCisgKiBUaGUgYmxvY2sgc2l6ZSBvbiB0 aGUgbWFpbiBzdXJmYWNlIG1hcHBlZCBieSBvbmUgQVVYIENDUyBibG9jazoKKyAqICAgMjU2IGJ5 dGVzIHBlciBDQ1MgYmxvY2sgKgorICogICA4ICAgYml0cyBwZXIgYnl0ZSAvCisgKiAgIDIgICBi aXRzIHBlciBtYWluIHN1cmZhY2UgQ0wgKgorICogICA2NCAgYnl0ZXMgcGVyIG1haW4gc3VyZmFj ZSBDTAorICovCisjZGVmaW5lIE1BSU5fU1VSRkFDRV9CTE9DS19TSVpFCShBVVhfQ0NTX0JMT0NL X1NJWkUgKiA4IC8gMiAqIDY0KQorCisjZGVmaW5lIEdGWF9BRERSRVNTX0JJVFMJNDgKKworI2Rl ZmluZSBtYXgoYSwgYikJCSgoYSkgPiAoYikgPyAoYSkgOiAoYikpCisKK3N0cnVjdCBwZ3RhYmxl X2xldmVsX2Rlc2MgeworCWludCBpZHhfc2hpZnQ7CisJaW50IGlkeF9iaXRzOworCWludCBlbnRy eV9wdHJfc2hpZnQ7CisJaW50IHRhYmxlX3NpemU7Cit9OworCitzdHJ1Y3QgcGd0YWJsZV9sZXZl bF9pbmZvIHsKKwljb25zdCBzdHJ1Y3QgcGd0YWJsZV9sZXZlbF9kZXNjICpkZXNjOworCWludCB0 YWJsZV9jb3VudDsKKwlpbnQgYWxsb2NfYmFzZTsKKwlpbnQgYWxsb2NfcHRyOworfTsKKworc3Ry dWN0IHBndGFibGUgeworCWludCBsZXZlbHM7CisJc3RydWN0IHBndGFibGVfbGV2ZWxfaW5mbyAq bGV2ZWxfaW5mbzsKKwlpbnQgc2l6ZTsKKwlpbnQgbWF4X2FsaWduOworCWRybV9pbnRlbF9ibyAq Ym87Cit9OworCitzdGF0aWMgaW50CitwZ3RfdGFibGVfY291bnQoaW50IGFkZHJlc3NfYml0cywg Y29uc3Qgc3RydWN0IGlndF9idWYgKipidWZzLCBpbnQgYnVmX2NvdW50KQoreworCXVpbnQ2NF90 IGVuZDsKKwlpbnQgY291bnQ7CisJaW50IGk7CisKKwljb3VudCA9IDA7CisJZW5kID0gMDsKKwlm b3IgKGkgPSAwOyBpIDwgYnVmX2NvdW50OyBpKyspIHsKKwkJY29uc3Qgc3RydWN0IGlndF9idWYg KmJ1ZiA9IGJ1ZnNbaV07CisJCXVpbnQ2NF90IHN0YXJ0OworCisJCS8qIFdlIHJlcXVpcmUgYnVm cyB0byBiZSBzb3J0ZWQuICovCisJCWlndF9hc3NlcnQoaSA9PSAwIHx8CisJCQkgICBidWYtPmJv LT5vZmZzZXQ2NCA+PSBidWZzW2kgLSAxXS0+Ym8tPm9mZnNldDY0ICsKKwkJCQkJCWJ1ZnNbaSAt IDFdLT5iby0+c2l6ZSk7CisKKwkJc3RhcnQgPSBBTElHTl9ET1dOKGJ1Zi0+Ym8tPm9mZnNldDY0 LCAxVUwgPDwgYWRkcmVzc19iaXRzKTsKKwkJLyogQXZvaWQgZG91YmxlIGNvdW50aW5nIGZvciBv dmVybGFwcGluZyBhbGlnbmVkIGJ1ZnMuICovCisJCXN0YXJ0ID0gbWF4KHN0YXJ0LCBlbmQpOwor CisJCWVuZCA9IEFMSUdOKGJ1Zi0+Ym8tPm9mZnNldDY0ICsgYnVmLT5zaXplLCAxVUwgPDwgYWRk cmVzc19iaXRzKTsKKwkJaWd0X2Fzc2VydChlbmQgPj0gc3RhcnQpOworCisJCWNvdW50ICs9IChl bmQgLSBzdGFydCkgPj4gYWRkcmVzc19iaXRzOworCX0KKworCXJldHVybiBjb3VudDsKK30KKwor c3RhdGljIHZvaWQKK3BndF9jYWxjX3NpemUoc3RydWN0IHBndGFibGUgKnBndCwgY29uc3Qgc3Ry dWN0IGlndF9idWYgKipidWZzLCBpbnQgYnVmX2NvdW50KQoreworCWludCBsZXZlbDsKKworCXBn dC0+c2l6ZSA9IDA7CisKKwlmb3IgKGxldmVsID0gcGd0LT5sZXZlbHMgLSAxOyBsZXZlbCA+PSAw OyBsZXZlbC0tKSB7CisJCXN0cnVjdCBwZ3RhYmxlX2xldmVsX2luZm8gKmxpID0gJnBndC0+bGV2 ZWxfaW5mb1tsZXZlbF07CisKKwkJbGktPmFsbG9jX2Jhc2UgPSBBTElHTihwZ3QtPnNpemUsIGxp LT5kZXNjLT50YWJsZV9zaXplKTsKKwkJbGktPmFsbG9jX3B0ciA9IGxpLT5hbGxvY19iYXNlOwor CisJCWxpLT50YWJsZV9jb3VudCA9IHBndF90YWJsZV9jb3VudChsaS0+ZGVzYy0+aWR4X3NoaWZ0 ICsKKwkJCQkJCSAgbGktPmRlc2MtPmlkeF9iaXRzLAorCQkJCQkJICBidWZzLCBidWZfY291bnQp OworCisJCXBndC0+c2l6ZSA9IGxpLT5hbGxvY19iYXNlICsKKwkJCSAgICBsaS0+dGFibGVfY291 bnQgKiBsaS0+ZGVzYy0+dGFibGVfc2l6ZTsKKwl9Cit9CisKK3N0YXRpYyB1aW50NjRfdCBwZ3Rf YWxsb2NfdGFibGUoc3RydWN0IHBndGFibGUgKnBndCwgaW50IGxldmVsKQoreworCXN0cnVjdCBw Z3RhYmxlX2xldmVsX2luZm8gKmxpID0gJnBndC0+bGV2ZWxfaW5mb1tsZXZlbF07CisJdWludDY0 X3QgdGFibGU7CisKKwl0YWJsZSA9IGxpLT5hbGxvY19wdHI7CisJbGktPmFsbG9jX3B0ciArPSBs aS0+ZGVzYy0+dGFibGVfc2l6ZTsKKworCWlndF9hc3NlcnQobGktPmFsbG9jX3B0ciA8PQorCQkg ICBsaS0+YWxsb2NfYmFzZSArIGxpLT50YWJsZV9jb3VudCAqIGxpLT5kZXNjLT50YWJsZV9zaXpl KTsKKworCXJldHVybiB0YWJsZTsKK30KKworc3RhdGljIGludCBwZ3RfYWRkcmVzc19pbmRleChz dHJ1Y3QgcGd0YWJsZSAqcGd0LCBpbnQgbGV2ZWwsIHVpbnQ2NF90IGFkZHJlc3MpCit7CisJY29u c3Qgc3RydWN0IHBndGFibGVfbGV2ZWxfZGVzYyAqbGQgPSBwZ3QtPmxldmVsX2luZm9bbGV2ZWxd LmRlc2M7CisJdWludDY0X3QgbWFzayA9IEJJVE1BU0sobGQtPmlkeF9zaGlmdCArIGxkLT5pZHhf Yml0cyAtIDEsCisJCQkJbGQtPmlkeF9zaGlmdCk7CisKKwlyZXR1cm4gKGFkZHJlc3MgJiBtYXNr KSA+PiBsZC0+aWR4X3NoaWZ0OworfQorCitzdGF0aWMgdWludDY0X3QgcHRyX21hc2soc3RydWN0 IHBndGFibGUgKnBndCwgaW50IGxldmVsKQoreworCWNvbnN0IHN0cnVjdCBwZ3RhYmxlX2xldmVs X2Rlc2MgKmxkID0gcGd0LT5sZXZlbF9pbmZvW2xldmVsXS5kZXNjOworCisJcmV0dXJuIEJJVE1B U0soR0ZYX0FERFJFU1NfQklUUyAtIDEsIGxkLT5lbnRyeV9wdHJfc2hpZnQpOworfQorCitzdGF0 aWMgdWludDY0X3QgcGd0X2VudHJ5X3B0cihzdHJ1Y3QgcGd0YWJsZSAqcGd0LCBpbnQgbGV2ZWws IHVpbnQ2NF90IGVudHJ5KQoreworCXVpbnQ2NF90IHB0ciA9IGVudHJ5ICYgcHRyX21hc2socGd0 LCBsZXZlbCk7CisKKwlpZiAobGV2ZWwpCisJCXB0ciAtPSBwZ3QtPmJvLT5vZmZzZXQ2NDsKKwlp Z3RfYXNzZXJ0KCEocHRyICYgfnB0cl9tYXNrKHBndCwgbGV2ZWwpKSk7CisKKwlyZXR1cm4gcHRy OworfQorCitzdGF0aWMgdWludDY0X3QgcGd0X21rZW50cnkoc3RydWN0IHBndGFibGUgKnBndCwg aW50IGxldmVsLCB1aW50NjRfdCBwdHIsCisJCQkgICAgdWludDY0X3QgZmxhZ3MpCit7CisJaWYg KGxldmVsKQorCQlwdHIgKz0gcGd0LT5iby0+b2Zmc2V0NjQ7CisJaWd0X2Fzc2VydCghKHB0ciAm IH5wdHJfbWFzayhwZ3QsIGxldmVsKSkpOworCisJcmV0dXJuIHB0ciB8IGZsYWdzOworfQorCitz dGF0aWMgdWludDY0X3QKK3BndF9nZXRfdGFibGUoc3RydWN0IHBndGFibGUgKnBndCwgdWludDY0 X3QgcGFyZW50X3RhYmxlLAorCSAgICAgIGludCBsZXZlbCwgdWludDY0X3QgYWRkcmVzcywgdWlu dDY0X3QgZmxhZ3MpCit7CisJdWludDY0X3QgKnRhYmxlX3B0ciA9IHBndC0+Ym8tPnZpcnR1YWwg KyBwYXJlbnRfdGFibGU7CisJaW50IGVudHJ5X2lkeCA9IHBndF9hZGRyZXNzX2luZGV4KHBndCwg bGV2ZWwsIGFkZHJlc3MpOworCXVpbnQ2NF90ICplbnRyeV9wdHI7CisKKwllbnRyeV9wdHIgPSAm dGFibGVfcHRyW2VudHJ5X2lkeF07CisJaWYgKCEqZW50cnlfcHRyKSB7CisJCXVpbnQ2NF90IGNo aWxkX3RhYmxlID0gcGd0X2FsbG9jX3RhYmxlKHBndCwgbGV2ZWwgLSAxKTsKKworCQkqZW50cnlf cHRyID0gcGd0X21rZW50cnkocGd0LCBsZXZlbCwgY2hpbGRfdGFibGUsIGZsYWdzKTsKKworCQlk cm1faW50ZWxfYm9fZW1pdF9yZWxvYyhwZ3QtPmJvLAorCQkJCQlwYXJlbnRfdGFibGUgKyBlbnRy eV9pZHggKiBzaXplb2YodWludDY0X3QpLAorCQkJCQlwZ3QtPmJvLCAqZW50cnlfcHRyLCAwLCAw KTsKKwl9CisKKwlyZXR1cm4gcGd0X2VudHJ5X3B0cihwZ3QsIGxldmVsLCAqZW50cnlfcHRyKTsK K30KKworc3RhdGljIHZvaWQKK3BndF9zZXRfbDFfZW50cnkoc3RydWN0IHBndGFibGUgKnBndCwg dWludDY0X3QgbDFfdGFibGUsCisJCSB1aW50NjRfdCBhZGRyZXNzLCB1aW50NjRfdCBwdHIsIHVp bnQ2NF90IGZsYWdzKQoreworCXVpbnQ2NF90ICpsMV90YWJsZV9wdHI7CisJdWludDY0X3QgKmwx X2VudHJ5X3B0cjsKKworCWwxX3RhYmxlX3B0ciA9IHBndC0+Ym8tPnZpcnR1YWwgKyBsMV90YWJs ZTsKKwlsMV9lbnRyeV9wdHIgPSAmbDFfdGFibGVfcHRyW3BndF9hZGRyZXNzX2luZGV4KHBndCwg MCwgYWRkcmVzcyldOworCSpsMV9lbnRyeV9wdHIgPSBwZ3RfbWtlbnRyeShwZ3QsIDAsIHB0ciwg ZmxhZ3MpOworfQorCitzdGF0aWMgdWludDY0X3QgcGd0X2dldF9sMV9mbGFncyhjb25zdCBzdHJ1 Y3QgaWd0X2J1ZiAqYnVmKQoreworCS8qCisJICogVGhlIG9mZnNldCBvZiAudGlsZV9tb2RlIGlz bid0IHNwZWNpZmVkIGJ5IGJzcGVjLCBpdCdzIHdoYXQgTWVzYQorCSAqIHVzZXMuCisJICovCisJ dW5pb24geworCQlzdHJ1Y3QgeworCQkJdWludDY0X3QJdmFsaWQ6MTsKKwkJCXVpbnQ2NF90CWNv bXByZXNzaW9uX21vZDoyOworCQkJdWludDY0X3QJbG9zc3lfY29tcHJlc3Npb246MTsKKwkJCXVp bnQ2NF90CXBhZDo0OworCQkJdWludDY0X3QJYWRkcjo0MDsKKwkJCXVpbnQ2NF90CXBhZDI6NDsK KwkJCXVpbnQ2NF90CXRpbGVfbW9kZToyOworCQkJdWludDY0X3QJZGVwdGg6MzsKKwkJCXVpbnQ2 NF90CXljcjoxOworCQkJdWludDY0X3QJZm9ybWF0OjY7CisJCX0gZTsKKwkJdWludDY0X3QgbDsK Kwl9IGVudHJ5ID0geworCQkuZSA9IHsKKwkJCS52YWxpZCA9IDEsCisJCQkudGlsZV9tb2RlID0g YnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWSA/IDEgOiAwLAorCQkJLmRlcHRoID0gNSwJCS8q IDMyYnBwICovCisJCQkuZm9ybWF0ID0gMHhBLAkJLyogQjhHOFI4QThfVU5PUk0gKi8KKwkJfQor CX07CisKKwkvKgorCSAqIFRPRE86IENsYXJpZnkgaWYgWWYgaXMgc3VwcG9ydGVkIGFuZCBpZiB3 ZSBuZWVkIHRvIGRpZmZlcmVudGlhdGUKKwkgKiAgICAgICBZcyBhbmQgWWYuCisJICogICAgICAg QWRkIHN1cHBvcnQgZm9yIG1vcmUgZm9ybWF0cy4KKwkgKi8KKwlpZ3RfYXNzZXJ0KGJ1Zi0+dGls aW5nID09IEk5MTVfVElMSU5HX1kgfHwKKwkJICAgYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdf WWYgfHwKKwkJICAgYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWXMpOworCisJaWd0X2Fzc2Vy dChidWYtPmJwcCA9PSAzMik7CisKKwlyZXR1cm4gZW50cnkubDsKK30KKworc3RhdGljIHVpbnQ2 NF90IHBndF9nZXRfbHhfZmxhZ3Modm9pZCkKK3sKKwl1bmlvbiB7CisJCXN0cnVjdCB7CisJCQl1 aW50NjRfdCAgICAgICAgdmFsaWQ6MTsKKwkJCXVpbnQ2NF90ICAgICAgICBhZGRyOjQ3OworCQkJ dWludDY0X3QgICAgICAgIHBhZDoxNjsKKwkJfSBlOworCQl1aW50NjRfdCBsOworCX0gZW50cnkg PSB7CisJCS5lID0geworCQkJLnZhbGlkID0gMSwKKwkJfQorCX07CisKKwlyZXR1cm4gZW50cnku bDsKK30KKworc3RhdGljIHZvaWQKK3BndF9wb3B1bGF0ZV9lbnRyaWVzX2Zvcl9idWYoc3RydWN0 IHBndGFibGUgKnBndCwKKwkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLAorCQkJ ICAgICAgIHVpbnQ2NF90IHRvcF90YWJsZSkKK3sKKwl1aW50NjRfdCBzdXJmYWNlX2FkZHIgPSBi dWYtPmJvLT5vZmZzZXQ2NDsKKwl1aW50NjRfdCBzdXJmYWNlX2VuZCA9IHN1cmZhY2VfYWRkciAr IGJ1Zi0+c2l6ZTsKKwl1aW50NjRfdCBhdXhfYWRkciA9IGJ1Zi0+Ym8tPm9mZnNldDY0ICsgYnVm LT5hdXgub2Zmc2V0OworCXVpbnQ2NF90IGwxX2ZsYWdzID0gcGd0X2dldF9sMV9mbGFncyhidWYp OworCXVpbnQ2NF90IGx4X2ZsYWdzID0gcGd0X2dldF9seF9mbGFncygpOworCisJZm9yICg7IHN1 cmZhY2VfYWRkciA8IHN1cmZhY2VfZW5kOworCSAgICAgc3VyZmFjZV9hZGRyICs9IE1BSU5fU1VS RkFDRV9CTE9DS19TSVpFLAorCSAgICAgYXV4X2FkZHIgKz0gQVVYX0NDU19CTE9DS19TSVpFKSB7 CisJCXVpbnQ2NF90IHRhYmxlID0gdG9wX3RhYmxlOworCQlpbnQgbGV2ZWw7CisKKwkJZm9yIChs ZXZlbCA9IHBndC0+bGV2ZWxzIC0gMTsgbGV2ZWwgPj0gMTsgbGV2ZWwtLSkKKwkJCXRhYmxlID0g cGd0X2dldF90YWJsZShwZ3QsIHRhYmxlLCBsZXZlbCwKKwkJCQkJICAgICAgc3VyZmFjZV9hZGRy LCBseF9mbGFncyk7CisKKwkJcGd0X3NldF9sMV9lbnRyeShwZ3QsIHRhYmxlLCBzdXJmYWNlX2Fk ZHIsIGF1eF9hZGRyLCBsMV9mbGFncyk7CisJfQorfQorCitzdGF0aWMgdm9pZCBwZ3RfcG9wdWxh dGVfZW50cmllcyhzdHJ1Y3QgcGd0YWJsZSAqcGd0LAorCQkJCSBjb25zdCBzdHJ1Y3QgaWd0X2J1 ZiAqKmJ1ZnMsCisJCQkJIGludCBidWZfY291bnQsCisJCQkJIGRybV9pbnRlbF9ibyAqcGd0X2Jv KQoreworCXVpbnQ2NF90IHRvcF90YWJsZTsKKwlpbnQgaTsKKworCXBndC0+Ym8gPSBwZ3RfYm87 CisKKwlpZ3RfYXNzZXJ0KHBndF9iby0+c2l6ZSA+PSBwZ3QtPnNpemUpOworCW1lbXNldChwZ3Rf Ym8tPnZpcnR1YWwsIDAsIHBndC0+c2l6ZSk7CisKKwl0b3BfdGFibGUgPSBwZ3RfYWxsb2NfdGFi bGUocGd0LCBwZ3QtPmxldmVscyAtIDEpOworCS8qIFRvcCBsZXZlbCB0YWJsZSBtdXN0IGJlIGF0 IG9mZnNldCAwLiAqLworCWlndF9hc3NlcnQodG9wX3RhYmxlID09IDApOworCisJZm9yIChpID0g MDsgaSA8IGJ1Zl9jb3VudDsgaSsrKQorCQlwZ3RfcG9wdWxhdGVfZW50cmllc19mb3JfYnVmKHBn dCwgYnVmc1tpXSwgdG9wX3RhYmxlKTsKK30KKworc3RhdGljIHN0cnVjdCBwZ3RhYmxlICoKK3Bn dF9jcmVhdGUoY29uc3Qgc3RydWN0IHBndGFibGVfbGV2ZWxfZGVzYyAqbGV2ZWxfZGVzY3MsIGlu dCBsZXZlbHMsCisJICAgY29uc3Qgc3RydWN0IGlndF9idWYgKipidWZzLCBpbnQgYnVmX2NvdW50 KQoreworCXN0cnVjdCBwZ3RhYmxlICpwZ3Q7CisJaW50IGxldmVsOworCisJcGd0ID0gY2FsbG9j KDEsIHNpemVvZigqcGd0KSk7CisJaWd0X2Fzc2VydChwZ3QpOworCisJcGd0LT5sZXZlbHMgPSBs ZXZlbHM7CisKKwlwZ3QtPmxldmVsX2luZm8gPSBjYWxsb2MobGV2ZWxzLCBzaXplb2YoKnBndC0+ bGV2ZWxfaW5mbykpOworCWlndF9hc3NlcnQocGd0LT5sZXZlbF9pbmZvKTsKKworCWZvciAobGV2 ZWwgPSAwOyBsZXZlbCA8IHBndC0+bGV2ZWxzOyBsZXZlbCsrKSB7CisJCXN0cnVjdCBwZ3RhYmxl X2xldmVsX2luZm8gKmxpID0gJnBndC0+bGV2ZWxfaW5mb1tsZXZlbF07CisKKwkJbGktPmRlc2Mg PSAmbGV2ZWxfZGVzY3NbbGV2ZWxdOworCQlpZiAobGktPmRlc2MtPnRhYmxlX3NpemUgPiBwZ3Qt Pm1heF9hbGlnbikKKwkJCXBndC0+bWF4X2FsaWduID0gbGktPmRlc2MtPnRhYmxlX3NpemU7CisJ fQorCisJcGd0X2NhbGNfc2l6ZShwZ3QsIGJ1ZnMsIGJ1Zl9jb3VudCk7CisKKwlyZXR1cm4gcGd0 OworfQorCitzdGF0aWMgdm9pZCBwZ3RfZGVzdHJveShzdHJ1Y3QgcGd0YWJsZSAqcGd0KQorewor CWZyZWUocGd0LT5sZXZlbF9pbmZvKTsKKwlmcmVlKHBndCk7Cit9CisKK2RybV9pbnRlbF9ibyAq CitpbnRlbF9hdXhfcGd0YWJsZV9jcmVhdGUoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLAorCQkg ICAgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKipidWZzLCBpbnQgYnVmX2NvdW50KQoreworCXN0 YXRpYyBjb25zdCBzdHJ1Y3QgcGd0YWJsZV9sZXZlbF9kZXNjIGxldmVsX2Rlc2NbXSA9IHsKKwkJ eworCQkJLmlkeF9zaGlmdCA9IDE2LAorCQkJLmlkeF9iaXRzID0gOCwKKwkJCS5lbnRyeV9wdHJf c2hpZnQgPSA4LAorCQkJLnRhYmxlX3NpemUgPSA4ICogMTAyNCwKKwkJfSwKKwkJeworCQkJLmlk eF9zaGlmdCA9IDI0LAorCQkJLmlkeF9iaXRzID0gMTIsCisJCQkuZW50cnlfcHRyX3NoaWZ0ID0g MTMsCisJCQkudGFibGVfc2l6ZSA9IDMyICogMTAyNCwKKwkJfSwKKwkJeworCQkJLmlkeF9zaGlm dCA9IDM2LAorCQkJLmlkeF9iaXRzID0gMTIsCisJCQkuZW50cnlfcHRyX3NoaWZ0ID0gMTUsCisJ CQkudGFibGVfc2l6ZSA9IDMyICogMTAyNCwKKwkJfSwKKwl9OworCXN0cnVjdCBwZ3RhYmxlICpw Z3Q7CisJZHJtX2ludGVsX2JvICpwZ3RfYm87CisKKwlwZ3QgPSBwZ3RfY3JlYXRlKGxldmVsX2Rl c2MsIEFSUkFZX1NJWkUobGV2ZWxfZGVzYyksIGJ1ZnMsIGJ1Zl9jb3VudCk7CisKKwlwZ3RfYm8g PSBkcm1faW50ZWxfYm9fYWxsb2NfZm9yX3JlbmRlcihidWZtZ3IsICJhdXggcGd0IiwKKwkJCQkJ ICAgICAgIHBndC0+c2l6ZSwgcGd0LT5tYXhfYWxpZ24pOworCWlndF9hc3NlcnQocGd0X2JvKTsK KworCWlndF9hc3NlcnQoZHJtX2ludGVsX2JvX21hcChwZ3RfYm8sIHRydWUpID09IDApOworCXBn dF9wb3B1bGF0ZV9lbnRyaWVzKHBndCwgYnVmcywgYnVmX2NvdW50LCBwZ3RfYm8pOworCWlndF9h c3NlcnQoZHJtX2ludGVsX2JvX3VubWFwKHBndF9ibykgPT0gMCk7CisKKwlwZ3RfZGVzdHJveShw Z3QpOworCisJcmV0dXJuIHBndF9ibzsKK30KZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9hdXhfcGd0 YWJsZS5oIGIvbGliL2ludGVsX2F1eF9wZ3RhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAuLmMwZjAwMWI0Ci0tLSAvZGV2L251bGwKKysrIGIvbGliL2ludGVsX2F1eF9w Z3RhYmxlLmgKQEAgLTAsMCArMSwxMiBAQAorI2lmbmRlZiBfX0lOVEVMX0FVWF9QR1RBQkxFX0hf XworI2RlZmluZSBfX0lOVEVMX0FVWF9QR1RBQkxFX0hfXworCisjaW5jbHVkZSAiaW50ZWxfYnVm bWdyLmgiCisKK3N0cnVjdCBpZ3RfYnVmOworCitkcm1faW50ZWxfYm8gKgoraW50ZWxfYXV4X3Bn dGFibGVfY3JlYXRlKGRybV9pbnRlbF9idWZtZ3IgKmJ1Zm1nciwKKwkJCSBjb25zdCBzdHJ1Y3Qg aWd0X2J1ZiAqKmJ1ZnMsIGludCBidWZfY291bnQpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2xp Yi9pbnRlbF9yZWcuaCBiL2xpYi9pbnRlbF9yZWcuaAppbmRleCAwNjk0NDBjYi4uODRmNzQ2YTYg MTAwNjQ0Ci0tLSBhL2xpYi9pbnRlbF9yZWcuaAorKysgYi9saWIvaW50ZWxfcmVnLmgKQEAgLTY3 Myw2ICs2NzMsNyBAQCBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRI RSBTT0ZUV0FSRS4KICNkZWZpbmUgUklOR19WQUxJRCAgICAgICAgICAweDAwMDAwMDAxCiAjZGVm aW5lIFJJTkdfSU5WQUxJRCAgICAgICAgMHgwMDAwMDAwMAogCisjZGVmaW5lIEdFTjEyX0dGWF9B VVhfVEFCTEVfQkFTRV9BRERSCTB4NDIwMAogCiAKIC8qIEJpdEJsdCBJbnN0cnVjdGlvbnMKQEAg LTI1NzAsNiArMjU3MSw3IEBAIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1Mg SU4gVEhFIFNPRlRXQVJFLgogCiAjZGVmaW5lIE1JX0xPQURfU0NBTl9MSU5FU19JTkNMCQkoMHgx Mjw8MjMpCiAjZGVmaW5lIE1JX0xPQURfUkVHSVNURVJfSU1NCQkoKDB4MjIgPDwgMjMpIHwgMSkK KyNkZWZpbmUgTUlfTE9BRF9SRUdJU1RFUl9NRU1fR0VOOAkoKDB4MjkgPDwgMjMpIHwgKDQgLSAy KSkKIAogLyogRmx1c2ggKi8KICNkZWZpbmUgTUlfRkxVU0gJCQkoMHgwNDw8MjMpCmRpZmYgLS1n aXQgYS9saWIvbWVzb24uYnVpbGQgYi9saWIvbWVzb24uYnVpbGQKaW5kZXggMjIxYWUyOGMuLjMz ZmVmNDg2IDEwMDY0NAotLS0gYS9saWIvbWVzb24uYnVpbGQKKysrIGIvbGliL21lc29uLmJ1aWxk CkBAIC00NCw2ICs0NCw3IEBAIGxpYl9zb3VyY2VzID0gWwogCSdyZW5kZXJjb3B5X2dlbjguYycs CiAJJ3JlbmRlcmNvcHlfZ2VuOS5jJywKIAknc3dfc3luYy5jJywKKwknaW50ZWxfYXV4X3BndGFi bGUuYycsCiAJJ2ludGVsX3JlZ19tYXAuYycsCiAJJ2ludGVsX2lvc2YuYycsCiAJJ2lndF9rbXMu YycsCmRpZmYgLS1naXQgYS9saWIvcmVuZGVyY29weV9nZW45LmMgYi9saWIvcmVuZGVyY29weV9n ZW45LmMKaW5kZXggNjk0ZWIzY2YuLmUzZjJhZjI1IDEwMDY0NAotLS0gYS9saWIvcmVuZGVyY29w eV9nZW45LmMKKysrIGIvbGliL3JlbmRlcmNvcHlfZ2VuOS5jCkBAIC0xNSw2ICsxNSw3IEBACiAj aW5jbHVkZSA8aTkxNV9kcm0uaD4KIAogI2luY2x1ZGUgImRybXRlc3QuaCIKKyNpbmNsdWRlICJp bnRlbF9hdXhfcGd0YWJsZS5oIgogI2luY2x1ZGUgImludGVsX2J1Zm1nci5oIgogI2luY2x1ZGUg ImludGVsX2JhdGNoYnVmZmVyLmgiCiAjaW5jbHVkZSAiaW50ZWxfaW8uaCIKQEAgLTk3MiwxOSAr OTczLDIyNiBAQCBzdGF0aWMgdm9pZCBnZW44X2VtaXRfcHJpbWl0aXZlKHN0cnVjdCBpbnRlbF9i YXRjaGJ1ZmZlciAqYmF0Y2gsIHVpbnQzMl90IG9mZnNldAogCiAjZGVmaW5lIEJBVENIX1NUQVRF X1NQTElUIDIwNDgKIAorc3RhdGljIHZvaWQKK2F1eF9wZ3RhYmxlX2ZpbmRfbWF4X2ZyZWVfcmFu Z2UoY29uc3Qgc3RydWN0IGlndF9idWYgKipidWZzLCBpbnQgYnVmX2NvdW50LAorCQkJCXVpbnQ2 NF90ICpyYW5nZV9zdGFydCwgdWludDY0X3QgKnJhbmdlX3NpemUpCit7CisJLyoKKwkgKiBLZWVw IHRoZSBmaXJzdCBwYWdlIHJlc2VydmVkLCBzbyB3ZSBjYW4gZGlmZmVyZW50aWF0ZSBwaW5uZWQK KwkgKiBvYmplY3RzIGJhc2VkIG9uIGEgbm9uLU5VTEwgb2Zmc2V0LgorCSAqLworCXVpbnQ2NF90 IHN0YXJ0ID0gMHgxMDAwOworCS8qIEZvciBub3cgYWxsb2Mgb25seSBmcm9tIHRoZSBmaXJzdCA0 R0IgYWRkcmVzcyBzcGFjZS4gKi8KKwljb25zdCB1aW50NjRfdCBlbmQgPSAxVUxMIDw8IDMyOwor CXVpbnQ2NF90IG1heF9yYW5nZV9zdGFydCA9IDA7CisJdWludDY0X3QgbWF4X3JhbmdlX3NpemUg PSAwOworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IGJ1Zl9jb3VudDsgaSsrKSB7CisJCWlm IChidWZzW2ldLT5iby0+b2Zmc2V0NjQgPj0gZW5kKQorCQkJYnJlYWs7CisKKwkJaWYgKGJ1ZnNb aV0tPmJvLT5vZmZzZXQ2NCAtIHN0YXJ0ID4gbWF4X3JhbmdlX3NpemUpIHsKKwkJCW1heF9yYW5n ZV9zdGFydCA9IHN0YXJ0OworCQkJbWF4X3JhbmdlX3NpemUgPSBidWZzW2ldLT5iby0+b2Zmc2V0 NjQgLSBzdGFydDsKKwkJfQorCQlzdGFydCA9IGJ1ZnNbaV0tPmJvLT5vZmZzZXQ2NCArIGJ1ZnNb aV0tPmJvLT5zaXplOworCX0KKworCWlmIChzdGFydCA8IGVuZCAmJiBlbmQgLSBzdGFydCA+IG1h eF9yYW5nZV9zaXplKSB7CisJCW1heF9yYW5nZV9zdGFydCA9IHN0YXJ0OworCQltYXhfcmFuZ2Vf c2l6ZSA9IGVuZCAtIHN0YXJ0OworCX0KKworCSpyYW5nZV9zdGFydCA9IG1heF9yYW5nZV9zdGFy dDsKKwkqcmFuZ2Vfc2l6ZSA9IG1heF9yYW5nZV9zaXplOworfQorCitzdGF0aWMgdWludDY0X3QK K2F1eF9wZ3RhYmxlX2ZpbmRfZnJlZV9yYW5nZShjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqKmJ1ZnMs IGludCBidWZfY291bnQsCisJCQkgICAgdWludDMyX3Qgc2l6ZSkKK3sKKwl1aW50NjRfdCByYW5n ZV9zdGFydDsKKwl1aW50NjRfdCByYW5nZV9zaXplOworCS8qIEEgY29tcHJlc3NlZCBzdXJmYWNl IG11c3QgYmUgNjRrQiBhbGlnbmVkLiAqLworCWNvbnN0IHVpbnQzMl90IGFsaWduID0gMHgxMDAw MDsKKwlpbnQgcGFkOworCisJYXV4X3BndGFibGVfZmluZF9tYXhfZnJlZV9yYW5nZShidWZzLCBi dWZfY291bnQsCisJCQkJCSZyYW5nZV9zdGFydCwgJnJhbmdlX3NpemUpOworCisJcGFkID0gQUxJ R04ocmFuZ2Vfc3RhcnQsIGFsaWduKSAtIHJhbmdlX3N0YXJ0OworCXJhbmdlX3N0YXJ0ICs9IHBh ZDsKKwlyYW5nZV9zaXplIC09IHBhZDsKKwlpZ3RfYXNzZXJ0KHJhbmdlX3NpemUgPj0gc2l6ZSk7 CisKKwlyZXR1cm4gcmFuZ2Vfc3RhcnQgKyBBTElHTl9ET1dOKHJhbmQoKSAlIChyYW5nZV9zaXpl IC0gc2l6ZSksIGFsaWduKTsKK30KKworc3RhdGljIHZvaWQKK2F1eF9wZ3RhYmxlX3Jlc2VydmVf cmFuZ2UoY29uc3Qgc3RydWN0IGlndF9idWYgKipidWZzLCBpbnQgYnVmX2NvdW50LAorCQkJICBj b25zdCBzdHJ1Y3QgaWd0X2J1ZiAqbmV3X2J1ZikKK3sKKwlpbnQgaTsKKworCWlmIChuZXdfYnVm LT5hdXguc3RyaWRlKSB7CisJCXVpbnQ2NF90IHBpbl9vZmZzZXQgPSBuZXdfYnVmLT5iby0+b2Zm c2V0NjQ7CisKKwkJaWYgKCFwaW5fb2Zmc2V0KQorCQkJcGluX29mZnNldCA9IGF1eF9wZ3RhYmxl X2ZpbmRfZnJlZV9yYW5nZShidWZzLAorCQkJCQkJCQkgYnVmX2NvdW50LAorCQkJCQkJCQkgbmV3 X2J1Zi0+Ym8tPnNpemUpOworCQlkcm1faW50ZWxfYm9fc2V0X3NvZnRwaW5fb2Zmc2V0KG5ld19i dWYtPmJvLCBwaW5fb2Zmc2V0KTsKKwkJaWd0X2Fzc2VydChuZXdfYnVmLT5iby0+b2Zmc2V0NjQg PT0gcGluX29mZnNldCk7CisJfQorCisJZm9yIChpID0gMDsgaSA8IGJ1Zl9jb3VudDsgaSsrKQor CQlpZiAoYnVmc1tpXS0+Ym8tPm9mZnNldDY0ID4gbmV3X2J1Zi0+Ym8tPm9mZnNldDY0KQorCQkJ YnJlYWs7CisKKwltZW1tb3ZlKCZidWZzW2kgKyAxXSwgJmJ1ZnNbaV0sIHNpemVvZihidWZzWzBd KSAqIChidWZfY291bnQgLSBpKSk7CisKKwlidWZzW2ldID0gbmV3X2J1ZjsKK30KKworc3RydWN0 IGF1eF9wZ3RhYmxlX2luZm8geworCWludCBidWZfY291bnQ7CisJY29uc3Qgc3RydWN0IGlndF9i dWYgKmJ1ZnNbMl07CisJdWludDY0X3QgYnVmX3Bpbl9vZmZzZXRzWzJdOworCWRybV9pbnRlbF9i byAqcGd0YWJsZV9ibzsKK307CisKK3N0YXRpYyB2b2lkCitnZW4xMl9hdXhfcGd0YWJsZV9pbml0 KHN0cnVjdCBhdXhfcGd0YWJsZV9pbmZvICppbmZvLAorCQkgICAgICAgZHJtX2ludGVsX2J1Zm1n ciAqYnVmbWdyLAorCQkgICAgICAgY29uc3Qgc3RydWN0IGlndF9idWYgKnNyY19idWYsCisJCSAg ICAgICBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqZHN0X2J1ZikKK3sKKwljb25zdCBzdHJ1Y3QgaWd0 X2J1ZiAqYnVmc1syXTsKKwljb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqcmVzZXJ2ZWRfYnVmc1syXTsK KwlpbnQgcmVzZXJ2ZWRfYnVmX2NvdW50OworCWludCBpOworCisJaWYgKCFzcmNfYnVmLT5hdXgu c3RyaWRlICYmICFkc3RfYnVmLT5hdXguc3RyaWRlKQorCQlyZXR1cm47CisKKwlidWZzWzBdID0g c3JjX2J1ZjsKKwlidWZzWzFdID0gZHN0X2J1ZjsKKworCS8qCisJICogSWRlYWxseSB3ZSdkIG5l ZWQgYW4gSUdULXdpZGUgR0ZYIGFkZHJlc3Mgc3BhY2UgYWxsb2NhdG9yLCB3aGljaAorCSAqIHdv dWxkIGNvbnNpZGVyIGFsbCBhbGxvY2F0aW9ucyBhbmQgdGh1cyBhdm9pZCBldmljdGlvbnMuIEZv ciBub3cgdXNlCisJICogYSBzaW1wbGVyIHNjaGVtZSBoZXJlLCB3aGljaCBvbmx5IGNvbnNpZGVy cyB0aGUgYnVmZmVycyBpbnZvbHZlZCBpbgorCSAqIHRoZSBibGl0LCB3aGljaCBzaG91bGQgYXQg bGVhc3QgbWluaW1pemUgdGhlIGNoYW5jZSBmb3IgZXZpY3Rpb25zCisJICogaW4gdGhlIGNhc2Ug b2Ygc3Vic2VxdWVudCBibGl0czoKKwkgKiAgIDEuIElmIHRoZXkgd2VyZSBhbHJlYWR5IGJvdW5k IChiby0+b2Zmc2V0NjQgIT0gMCksIHVzZSB0aGlzCisJICogICAgICBhZGRyZXNzLgorCSAqICAg Mi4gUGljayBhIHJhbmdlIHJhbmRvbWx5IGZyb20gdGhlIDRHQiBhZGRyZXNzIHNwYWNlLCB0aGF0 IGlzIG5vdAorCSAqICAgICAgYWxyZWFkeSBvY2N1cGllZCBieSBhIGJvdW5kIG9iamVjdCwgb3Ig YW4gb2JqZWN0IHdlIHBpbm5lZC4KKwkgKi8KKwlyZXNlcnZlZF9idWZfY291bnQgPSAwOworCS8q IEZpcnN0IHJlc2VydmUgc3BhY2UgZm9yIGFueSBidWZzIHRoYXQgYXJlIGJvdW5kIGFscmVhZHku ICovCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYnVmcyk7IGkrKykKKwkJaWYgKGJ1ZnNb aV0tPmJvLT5vZmZzZXQ2NCkKKwkJCWF1eF9wZ3RhYmxlX3Jlc2VydmVfcmFuZ2UocmVzZXJ2ZWRf YnVmcywKKwkJCQkJCSAgcmVzZXJ2ZWRfYnVmX2NvdW50KyssCisJCQkJCQkgIGJ1ZnNbaV0pOwor CisJLyogTmV4dCwgcmVzZXJ2ZSBzcGFjZSBmb3IgdW5ib3VuZCBidWZzIHdpdGggYW4gQVVYIHN1 cmZhY2UuICovCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYnVmcyk7IGkrKykKKwkJaWYg KCFidWZzW2ldLT5iby0+b2Zmc2V0NjQgJiYgYnVmc1tpXS0+YXV4LnN0cmlkZSkKKwkJCWF1eF9w Z3RhYmxlX3Jlc2VydmVfcmFuZ2UocmVzZXJ2ZWRfYnVmcywKKwkJCQkJCSAgcmVzZXJ2ZWRfYnVm X2NvdW50KyssCisJCQkJCQkgIGJ1ZnNbaV0pOworCisJLyogQ3JlYXRlIEFVWCBwZ3RhYmxlIGVu dHJpZXMgb25seSBmb3IgYnVmcyB3aXRoIGFuIEFVWCBzdXJmYWNlICovCisJaW5mby0+YnVmX2Nv dW50ID0gMDsKKwlmb3IgKGkgPSAwOyBpIDwgcmVzZXJ2ZWRfYnVmX2NvdW50OyBpKyspIHsKKwkJ aWYgKCFyZXNlcnZlZF9idWZzW2ldLT5hdXguc3RyaWRlKQorCQkJY29udGludWU7CisKKwkJaW5m by0+YnVmc1tpbmZvLT5idWZfY291bnRdID0gcmVzZXJ2ZWRfYnVmc1tpXTsKKwkJaW5mby0+YnVm X3Bpbl9vZmZzZXRzW2luZm8tPmJ1Zl9jb3VudF0gPQorCQkJcmVzZXJ2ZWRfYnVmc1tpXS0+Ym8t Pm9mZnNldDY0OworCQlpbmZvLT5idWZfY291bnQrKzsKKwl9CisKKwlpbmZvLT5wZ3RhYmxlX2Jv ID0gaW50ZWxfYXV4X3BndGFibGVfY3JlYXRlKGJ1Zm1nciwKKwkJCQkJCSAgICBpbmZvLT5idWZz LAorCQkJCQkJICAgIGluZm8tPmJ1Zl9jb3VudCk7CisJaWd0X2Fzc2VydChpbmZvLT5wZ3RhYmxl X2JvKTsKK30KKworc3RhdGljIHZvaWQKK2dlbjEyX2F1eF9wZ3RhYmxlX2NsZWFudXAoc3RydWN0 IGF1eF9wZ3RhYmxlX2luZm8gKmluZm8pCit7CisJaW50IGk7CisKKwkvKiBDaGVjayB0aGF0IHRo ZSBwaW5uZWQgYnVmcyBrZXB0IHRoZWlyIG9mZnNldCBhZnRlciB0aGUgZXhlYy4gKi8KKwlmb3Ig KGkgPSAwOyBpIDwgaW5mby0+YnVmX2NvdW50OyBpKyspCisJCWlndF9hc3NlcnRfZXFfdTY0KGlu Zm8tPmJ1ZnNbaV0tPmJvLT5vZmZzZXQ2NCwKKwkJCQkgIGluZm8tPmJ1Zl9waW5fb2Zmc2V0c1tp XSk7CisKKwlkcm1faW50ZWxfYm9fdW5yZWZlcmVuY2UoaW5mby0+cGd0YWJsZV9ibyk7Cit9CisK K3N0YXRpYyB1aW50MzJfdAorZ2VuMTJfY3JlYXRlX2F1eF9wZ3RhYmxlX3N0YXRlKHN0cnVjdCBp bnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCisJCQkgICAgICAgZHJtX2ludGVsX2JvICphdXhfcGd0 YWJsZV9ibykKK3sKKwl1aW50NjRfdCAqcGd0YWJsZV9wdHI7CisJdWludDMyX3QgcGd0YWJsZV9w dHJfb2Zmc2V0OworCWludCByZXQ7CisKKwlpZiAoIWF1eF9wZ3RhYmxlX2JvKQorCQlyZXR1cm4g MDsKKworCXBndGFibGVfcHRyID0gaW50ZWxfYmF0Y2hidWZmZXJfc3ViZGF0YV9hbGxvYyhiYXRj aCwKKwkJCQkJCSAgICAgIHNpemVvZigqcGd0YWJsZV9wdHIpLAorCQkJCQkJICAgICAgc2l6ZW9m KCpwZ3RhYmxlX3B0cikpOworCXBndGFibGVfcHRyX29mZnNldCA9IGludGVsX2JhdGNoYnVmZmVy X3N1YmRhdGFfb2Zmc2V0KGJhdGNoLAorCQkJCQkJCSAgICAgIHBndGFibGVfcHRyKTsKKworCSpw Z3RhYmxlX3B0ciA9IGF1eF9wZ3RhYmxlX2JvLT5vZmZzZXQ2NDsKKwlyZXQgPSBkcm1faW50ZWxf Ym9fZW1pdF9yZWxvYyhiYXRjaC0+Ym8sIHBndGFibGVfcHRyX29mZnNldCwKKwkJCQkgICAgICBh dXhfcGd0YWJsZV9ibywgMCwKKwkJCQkgICAgICAwLCAwKTsKKwlhc3NlcnQocmV0ID09IDApOwor CisJcmV0dXJuIHBndGFibGVfcHRyX29mZnNldDsKK30KKworc3RhdGljIHZvaWQKK2dlbjEyX2Vt aXRfYXV4X3BndGFibGVfc3RhdGUoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwgdWlu dDMyX3Qgc3RhdGUpCit7CisJaWYgKCFzdGF0ZSkKKwkJcmV0dXJuOworCisJT1VUX0JBVENIKE1J X0xPQURfUkVHSVNURVJfTUVNX0dFTjgpOworCU9VVF9CQVRDSChHRU4xMl9HRlhfQVVYX1RBQkxF X0JBU0VfQUREUik7CisJT1VUX1JFTE9DKGJhdGNoLT5ibywgMCwgMCwgc3RhdGUpOworCisJT1VU X0JBVENIKE1JX0xPQURfUkVHSVNURVJfTUVNX0dFTjgpOworCU9VVF9CQVRDSChHRU4xMl9HRlhf QVVYX1RBQkxFX0JBU0VfQUREUiArIDQpOworCU9VVF9SRUxPQyhiYXRjaC0+Ym8sIDAsIDAsIHN0 YXRlICsgNCk7Cit9CisKIHN0YXRpYwogdm9pZCBfZ2VuOV9yZW5kZXJfY29weWZ1bmMoc3RydWN0 IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwKIAkJCSAgZHJtX2ludGVsX2NvbnRleHQgKmNvbnRl eHQsCiAJCQkgIGNvbnN0IHN0cnVjdCBpZ3RfYnVmICpzcmMsIHVuc2lnbmVkIHNyY194LAogCQkJ ICB1bnNpZ25lZCBzcmNfeSwgdW5zaWduZWQgd2lkdGgsIHVuc2lnbmVkIGhlaWdodCwKIAkJCSAg Y29uc3Qgc3RydWN0IGlndF9idWYgKmRzdCwgdW5zaWduZWQgZHN0X3gsCi0JCQkgIHVuc2lnbmVk IGRzdF95LCBjb25zdCB1aW50MzJfdCBwc19rZXJuZWxbXVs0XSwKKwkJCSAgdW5zaWduZWQgZHN0 X3ksCisJCQkgIGRybV9pbnRlbF9ibyAqYXV4X3BndGFibGVfYm8sCisJCQkgIGNvbnN0IHVpbnQz Ml90IHBzX2tlcm5lbFtdWzRdLAogCQkJICB1aW50MzJfdCBwc19rZXJuZWxfc2l6ZSkKIHsKIAl1 aW50MzJfdCBwc19zYW1wbGVyX3N0YXRlLCBwc19rZXJuZWxfb2ZmLCBwc19iaW5kaW5nX3RhYmxl OwogCXVpbnQzMl90IHNjaXNzb3Jfc3RhdGU7CiAJdWludDMyX3QgdmVydGV4X2J1ZmZlcjsKIAl1 aW50MzJfdCBiYXRjaF9lbmQ7CisJdWludDMyX3QgYXV4X3BndGFibGVfc3RhdGU7CiAKIAlpZ3Rf YXNzZXJ0KHNyYy0+YnBwID09IGRzdC0+YnBwKTsKIAlpbnRlbF9iYXRjaGJ1ZmZlcl9mbHVzaF93 aXRoX2NvbnRleHQoYmF0Y2gsIGNvbnRleHQpOwpAQCAtMTAwNyw2ICsxMjE1LDEwIEBAIHZvaWQg X2dlbjlfcmVuZGVyX2NvcHlmdW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAJ dmlld3BvcnQuY2Nfc3RhdGUgPSBnZW42X2NyZWF0ZV9jY192aWV3cG9ydChiYXRjaCk7CiAJdmll d3BvcnQuc2ZfY2xpcF9zdGF0ZSA9IGdlbjdfY3JlYXRlX3NmX2NsaXBfdmlld3BvcnQoYmF0Y2gp OwogCXNjaXNzb3Jfc3RhdGUgPSBnZW42X2NyZWF0ZV9zY2lzc29yX3JlY3QoYmF0Y2gpOworCisJ YXV4X3BndGFibGVfc3RhdGUgPSBnZW4xMl9jcmVhdGVfYXV4X3BndGFibGVfc3RhdGUoYmF0Y2gs CisJCQkJCQkJICAgYXV4X3BndGFibGVfYm8pOworCiAJLyogVE9ETzogdGhlcmVlIGlzIG90aGVy IHN0YXRlIHdoaWNoIGlzbid0IHNldHVwICovCiAKIAlhc3NlcnQoYmF0Y2gtPnB0ciA8ICZiYXRj aC0+YnVmZmVyWzQwOTVdKTsKQEAgLTEwMTgsNiArMTIzMCw4IEBAIHZvaWQgX2dlbjlfcmVuZGVy X2NvcHlmdW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAJT1VUX0JBVENIKEc0 WF9QSVBFTElORV9TRUxFQ1QgfCBQSVBFTElORV9TRUxFQ1RfM0QgfAogCQkJCUdFTjlfUElQRUxJ TkVfU0VMRUNUSU9OX01BU0spOwogCisJZ2VuMTJfZW1pdF9hdXhfcGd0YWJsZV9zdGF0ZShiYXRj aCwgYXV4X3BndGFibGVfc3RhdGUpOworCiAJZ2VuOF9lbWl0X3NpcChiYXRjaCk7CiAKIAlnZW43 X2VtaXRfcHVzaF9jb25zdGFudHMoYmF0Y2gpOwpAQCAtMTA5Miw4ICsxMzA2LDggQEAgdm9pZCBn ZW45X3JlbmRlcl9jb3B5ZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAogCiB7 CiAJX2dlbjlfcmVuZGVyX2NvcHlmdW5jKGJhdGNoLCBjb250ZXh0LCBzcmMsIHNyY194LCBzcmNf eSwKLQkJCSAgd2lkdGgsIGhlaWdodCwgZHN0LCBkc3RfeCwgZHN0X3ksIHBzX2tlcm5lbF9nZW45 LAotCQkJICBzaXplb2YocHNfa2VybmVsX2dlbjkpKTsKKwkJCSAgd2lkdGgsIGhlaWdodCwgZHN0 LCBkc3RfeCwgZHN0X3ksIE5VTEwsCisJCQkgIHBzX2tlcm5lbF9nZW45LCBzaXplb2YocHNfa2Vy bmVsX2dlbjkpKTsKIH0KIAogdm9pZCBnZW4xMV9yZW5kZXJfY29weWZ1bmMoc3RydWN0IGludGVs X2JhdGNoYnVmZmVyICpiYXRjaCwKQEAgLTExMDQsOCArMTMxOCw4IEBAIHZvaWQgZ2VuMTFfcmVu ZGVyX2NvcHlmdW5jKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsCiAKIHsKIAlfZ2Vu OV9yZW5kZXJfY29weWZ1bmMoYmF0Y2gsIGNvbnRleHQsIHNyYywgc3JjX3gsIHNyY195LAotCQkJ ICB3aWR0aCwgaGVpZ2h0LCBkc3QsIGRzdF94LCBkc3RfeSwgcHNfa2VybmVsX2dlbjExLAotCQkJ ICBzaXplb2YocHNfa2VybmVsX2dlbjExKSk7CisJCQkgIHdpZHRoLCBoZWlnaHQsIGRzdCwgZHN0 X3gsIGRzdF95LCBOVUxMLAorCQkJICBwc19rZXJuZWxfZ2VuMTEsIHNpemVvZihwc19rZXJuZWxf Z2VuMTEpKTsKIH0KIAogdm9pZCBnZW4xMl9yZW5kZXJfY29weWZ1bmMoc3RydWN0IGludGVsX2Jh dGNoYnVmZmVyICpiYXRjaCwKQEAgLTExMTUsNyArMTMyOSwxNSBAQCB2b2lkIGdlbjEyX3JlbmRl cl9jb3B5ZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLAogCQkJICAgY29uc3Qg c3RydWN0IGlndF9idWYgKmRzdCwgdW5zaWduZWQgZHN0X3gsIHVuc2lnbmVkIGRzdF95KQogCiB7 CisJc3RydWN0IGF1eF9wZ3RhYmxlX2luZm8gcGd0YWJsZV9pbmZvID0geyB9OworCisJZ2VuMTJf YXV4X3BndGFibGVfaW5pdCgmcGd0YWJsZV9pbmZvLCBiYXRjaC0+YnVmbWdyLCBzcmMsIGRzdCk7 CisKIAlfZ2VuOV9yZW5kZXJfY29weWZ1bmMoYmF0Y2gsIGNvbnRleHQsIHNyYywgc3JjX3gsIHNy Y195LAotCQkJICB3aWR0aCwgaGVpZ2h0LCBkc3QsIGRzdF94LCBkc3RfeSwgZ2VuMTJfcmVuZGVy X2NvcHksCisJCQkgIHdpZHRoLCBoZWlnaHQsIGRzdCwgZHN0X3gsIGRzdF95LAorCQkJICBwZ3Rh YmxlX2luZm8ucGd0YWJsZV9ibywKKwkJCSAgZ2VuMTJfcmVuZGVyX2NvcHksCiAJCQkgIHNpemVv ZihnZW4xMl9yZW5kZXJfY29weSkpOworCisJZ2VuMTJfYXV4X3BndGFibGVfY2xlYW51cCgmcGd0 YWJsZV9pbmZvKTsKIH0KZGlmZiAtLWdpdCBhL2xpYi9zdHVicy9kcm0vaW50ZWxfYnVmbWdyLmMg Yi9saWIvc3R1YnMvZHJtL2ludGVsX2J1Zm1nci5jCmluZGV4IGY4NzQ1MmFjLi5jYmFiMjQ4NCAx MDA2NDQKLS0tIGEvbGliL3N0dWJzL2RybS9pbnRlbF9idWZtZ3IuYworKysgYi9saWIvc3R1YnMv ZHJtL2ludGVsX2J1Zm1nci5jCkBAIC0yMzMsNiArMjMzLDEyIEBAIGludCBkcm1faW50ZWxfYm9f c2V0X3RpbGluZyhkcm1faW50ZWxfYm8gKmJvLCB1aW50MzJfdCAqIHRpbGluZ19tb2RlLAogCXJl dHVybiAtRU5PREVWOwogfQogCitpbnQgZHJtX2ludGVsX2JvX3NldF9zb2Z0cGluX29mZnNldChk cm1faW50ZWxfYm8gKmJvLCB1aW50NjRfdCBvZmZzZXQpCit7CisJaWd0X3JlcXVpcmVfZihmYWxz ZSwgbWlzc2luZ19zdXBwb3J0X3N0cik7CisJcmV0dXJuIC1FTk9ERVY7Cit9CisKIGludCBkcm1f aW50ZWxfYm9fZGlzYWJsZV9yZXVzZShkcm1faW50ZWxfYm8gKmJvKQogewogCWlndF9yZXF1aXJl X2YoZmFsc2UsIG1pc3Npbmdfc3VwcG9ydF9zdHIpOwotLSAKMi4xNy4xCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdApp Z3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXY=