From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH v6 5/6] drm/i915: Implement proper clipping for video sprites Date: Wed, 24 Apr 2013 18:52:38 +0300 Message-ID: <1366818759-8707-6-git-send-email-ville.syrjala@linux.intel.com> References: <1366818759-8707-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1366818759-8707-1-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: intel-gfx@lists.freedesktop.org Cc: dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClBy b3Blcmx5IGNsaXAgdGhlIHNvdXJjZSB3aGVuIHRoZSBkZXN0aW5hdGlvbiBnZXRzIGNsaXBwZWQK YnkgdGhlIHBpcGUgZGltZW5zaW9ucy4KClNhZGx5IHRoZSB2aWRlbyBzcHJpdGUgaGFyZHdhcmUg aXMgcmF0aGVyIGxpbWl0ZWQgc28gaXQgY2FuJ3QgZG8gcHJvcGVyCnN1Yi1waXhlbCBwb3N0aXRp b25pbmcuIFJlc29ydCB0byB0cnVuY2F0aW5nIHRoZSBzb3VyY2UgY29vcmRpbmF0ZXMgdG8KKG1h Y3JvKXBpeGVsIGJvdW5kYXJ5LgoKVGhlIHNjYWxpbmcgY2hlY2tzIGFyZSBkb25lIHVzaW5nIHRo ZSBzdHJpY3QgZHJtX3JlZ2lvbiBmdW5jdGlvbnMuCldoaWNoIG1lYW5zIHRoYXQgYW4gZXJyb3Ig aXMgcmV0dXJuZWQgd2hlbiB0aGUgbWluL21heCBzY2FsaW5nCnJhdGlvcyBhcmUgZXhjZWVkZWQu CgpBbHNvIGRvIHNvbWUgYWRkaXRpb25hbCBjaGVja2luZyBhZ2FpbnN0IHZhcmlvdXMgaGFyZHdh cmUgbGltaXRzLgoKdjI6IFRydW5jYXRlIHNyYyBjb29yZHMgaW5zdGVhZCBvZiByb3VuZGluZyB0 byBhdm9pZCBpbmNyZWFzaW5nIHNyYwogICAgdmlld3BvcnQgc2l6ZSwgYW5kIGFkYXB0IHRvIGNo YW5nZXMgaW4gZHJtX2NhbGNfe2gsdn1zY2FsZSgpLgp2MzogQWRhcHQgdG8gZHJtX3JlZ2lvbi0+ ZHJtX3JlY3QgcmVuYW1lLiBGaXggbWlzYWxpZ25lZCBjcnRjX3cgZm9yCiAgICBwYWNrZWQgWVVW IGZvcm1hdHMgd2hlbiBzY2FsaW5nIGlzbid0IHN1cHBvcnRlZC4KdjQ6IFVzZSBzdHJpY3RlciBz Y2FsaW5nIGNoZWNrcywgdXNlIGRybV9yZWN0X2VxdWFscygpCnY1OiBJZiBzcHJpdGUgaXMgYmVs b3cgbWluIHNpemUsIG1ha2UgaXQgaW52aXNpYmxlIGluc3RlYWQgcmV0dXJuaW5nCiAgICBhbiBl cnJvci4KICAgIFVzZSBXQVJOX09OKCkgaW5zdGVhZCBpZiBCVUdfT04oKSwgYW5kIGFkZCBvbmUg dG8gc2FuaXR5IGNoZWNrIHRoZQogICAgc3JjIHZpZXdwb3J0IHNpemUuCnY2OiBBZGQgY29tbWVu dHMgdG8gcmVtaW5kIGFib3V0IHNyYyBhbmQgZHN0IGNvb3JkaW5hdGUgdHlwZXMKClJldmlld2Vk LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KU2lnbmVkLW9mZi1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyB8IDIwNiArKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNTQgaW5zZXJ0aW9ucygrKSwg NTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf c3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwppbmRleCBjN2Qy NWM1Li4wNDRjYzI2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKQEAgLTMyLDYg KzMyLDcgQEAKICNpbmNsdWRlIDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5o PgogI2luY2x1ZGUgPGRybS9kcm1fZm91cmNjLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9yZWN0Lmg+ CiAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+CiAjaW5j bHVkZSAiaTkxNV9kcnYuaCIKQEAgLTU4Myw2ICs1ODQsMjAgQEAgaWxrX2dldF9jb2xvcmtleShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9pbnRlbF9zcHJpdGVfY29sb3JrZXkg KmtleSkKIAkJa2V5LT5mbGFncyA9IEk5MTVfU0VUX0NPTE9SS0VZX05PTkU7CiB9CiAKK3N0YXRp YyBib29sCitmb3JtYXRfaXNfeXV2KHVpbnQzMl90IGZvcm1hdCkKK3sKKwlzd2l0Y2ggKGZvcm1h dCkgeworCWNhc2UgRFJNX0ZPUk1BVF9ZVVlWOgorCWNhc2UgRFJNX0ZPUk1BVF9VWVZZOgorCWNh c2UgRFJNX0ZPUk1BVF9WWVVZOgorCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgorCQlyZXR1cm4gdHJ1 ZTsKKwlkZWZhdWx0OgorCQlyZXR1cm4gZmFsc2U7CisJfQorfQorCiBzdGF0aWMgaW50CiBpbnRl bF91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAq Y3J0YywKIAkJICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGludCBjcnRjX3gsIGludCBj cnRjX3ksCkBAIC02MDAsOSArNjE1LDI5IEBAIGludGVsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWVudW0gdHJhbnNjb2RlciBj cHVfdHJhbnNjb2RlciA9IGludGVsX3BpcGVfdG9fY3B1X3RyYW5zY29kZXIoZGV2X3ByaXYsCiAJ CQkJCQkJCSAgICAgIHBpcGUpOwogCWludCByZXQgPSAwOwotCWludCB4ID0gc3JjX3ggPj4gMTYs IHkgPSBzcmNfeSA+PiAxNjsKLQlpbnQgcHJpbWFyeV93ID0gY3J0Yy0+bW9kZS5oZGlzcGxheSwg cHJpbWFyeV9oID0gY3J0Yy0+bW9kZS52ZGlzcGxheTsKIAlib29sIGRpc2FibGVfcHJpbWFyeSA9 IGZhbHNlOworCWJvb2wgdmlzaWJsZTsKKwlpbnQgaHNjYWxlLCB2c2NhbGU7CisJaW50IG1heF9z Y2FsZSwgbWluX3NjYWxlOworCWludCBwaXhlbF9zaXplID0gZHJtX2Zvcm1hdF9wbGFuZV9jcHAo ZmItPnBpeGVsX2Zvcm1hdCwgMCk7CisJc3RydWN0IGRybV9yZWN0IHNyYyA9IHsKKwkJLyogc2Ft cGxlIGNvb3JkaW5hdGVzIGluIDE2LjE2IGZpeGVkIHBvaW50ICovCisJCS54MSA9IHNyY194LAor CQkueDIgPSBzcmNfeCArIHNyY193LAorCQkueTEgPSBzcmNfeSwKKwkJLnkyID0gc3JjX3kgKyBz cmNfaCwKKwl9OworCXN0cnVjdCBkcm1fcmVjdCBkc3QgPSB7CisJCS8qIGludGVnZXIgcGl4ZWxz ICovCisJCS54MSA9IGNydGNfeCwKKwkJLngyID0gY3J0Y194ICsgY3J0Y193LAorCQkueTEgPSBj cnRjX3ksCisJCS55MiA9IGNydGNfeSArIGNydGNfaCwKKwl9OworCWNvbnN0IHN0cnVjdCBkcm1f cmVjdCBjbGlwID0geworCQkueDIgPSBjcnRjLT5tb2RlLmhkaXNwbGF5LAorCQkueTIgPSBjcnRj LT5tb2RlLnZkaXNwbGF5LAorCX07CiAKIAlpbnRlbF9mYiA9IHRvX2ludGVsX2ZyYW1lYnVmZmVy KGZiKTsKIAlvYmogPSBpbnRlbF9mYi0+b2JqOwpAQCAtNjE4LDE5ICs2NTMsMjMgQEAgaW50ZWxf dXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAJaW50ZWxfcGxhbmUtPnNyY193ID0gc3JjX3c7CiAJaW50ZWxfcGxhbmUtPnNyY19oID0g c3JjX2g7CiAKLQlzcmNfdyA9IHNyY193ID4+IDE2OwotCXNyY19oID0gc3JjX2ggPj4gMTY7Ci0K IAkvKiBQaXBlIG11c3QgYmUgcnVubmluZy4uLiAqLwotCWlmICghKEk5MTVfUkVBRChQSVBFQ09O RihjcHVfdHJhbnNjb2RlcikpICYgUElQRUNPTkZfRU5BQkxFKSkKLQkJcmV0dXJuIC1FSU5WQUw7 Ci0KLQlpZiAoY3J0Y194ID49IHByaW1hcnlfdyB8fCBjcnRjX3kgPj0gcHJpbWFyeV9oKQorCWlm ICghKEk5MTVfUkVBRChQSVBFQ09ORihjcHVfdHJhbnNjb2RlcikpICYgUElQRUNPTkZfRU5BQkxF KSkgeworCQlEUk1fREVCVUdfS01TKCJQaXBlIGRpc2FibGVkXG4iKTsKIAkJcmV0dXJuIC1FSU5W QUw7CisJfQogCiAJLyogRG9uJ3QgbW9kaWZ5IGFub3RoZXIgcGlwZSdzIHBsYW5lICovCi0JaWYg KGludGVsX3BsYW5lLT5waXBlICE9IGludGVsX2NydGMtPnBpcGUpCisJaWYgKGludGVsX3BsYW5l LT5waXBlICE9IGludGVsX2NydGMtPnBpcGUpIHsKKwkJRFJNX0RFQlVHX0tNUygiV3JvbmcgcGxh bmUgPC0+IGNydGMgbWFwcGluZ1xuIik7CiAJCXJldHVybiAtRUlOVkFMOworCX0KKworCS8qIEZJ WE1FIGNoZWNrIGFsbCBnZW4gbGltaXRzICovCisJaWYgKGZiLT53aWR0aCA8IDMgfHwgZmItPmhl aWdodCA8IDMgfHwgZmItPnBpdGNoZXNbMF0gPiAxNjM4NCkgeworCQlEUk1fREVCVUdfS01TKCJV bnN1aXRhYmxlIGZyYW1lYnVmZmVyIGZvciBwbGFuZVxuIik7CisJCXJldHVybiAtRUlOVkFMOwor CX0KIAogCS8qIFNwcml0ZSBwbGFuZXMgY2FuIGJlIGxpbmVhciBvciB4LXRpbGVkIHN1cmZhY2Vz ICovCiAJc3dpdGNoIChvYmotPnRpbGluZ19tb2RlKSB7CkBAIC02MzgsNTUgKzY3NywxMTUgQEAg aW50ZWxfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCiAJCWNhc2UgSTkxNV9USUxJTkdfWDoKIAkJCWJyZWFrOwogCQlkZWZhdWx0Ogor CQkJRFJNX0RFQlVHX0tNUygiVW5zdXBwb3J0ZWQgdGlsaW5nIG1vZGVcbiIpOwogCQkJcmV0dXJu IC1FSU5WQUw7CiAJfQogCi0JLyoKLQkgKiBDbGFtcCB0aGUgd2lkdGggJiBoZWlnaHQgaW50byB0 aGUgdmlzaWJsZSBhcmVhLiAgTm90ZSB3ZSBkb24ndAotCSAqIHRyeSB0byBzY2FsZSB0aGUgc291 cmNlIGlmIHBhcnQgb2YgdGhlIHZpc2libGUgcmVnaW9uIGlzIG9mZnNjcmVlbi4KLQkgKiBUaGUg Y2FsbGVyIG11c3QgaGFuZGxlIHRoYXQgYnkgYWRqdXN0aW5nIHNvdXJjZSBvZmZzZXQgYW5kIHNp emUuCi0JICovCi0JaWYgKChjcnRjX3ggPCAwKSAmJiAoKGNydGNfeCArIGNydGNfdykgPiAwKSkg ewotCQljcnRjX3cgKz0gY3J0Y194OwotCQljcnRjX3ggPSAwOworCW1heF9zY2FsZSA9IGludGVs X3BsYW5lLT5tYXhfZG93bnNjYWxlIDw8IDE2OworCW1pbl9zY2FsZSA9IGludGVsX3BsYW5lLT5j YW5fc2NhbGUgPyAxIDogKDEgPDwgMTYpOworCisJaHNjYWxlID0gZHJtX3JlY3RfY2FsY19oc2Nh bGUoJnNyYywgJmRzdCwgbWluX3NjYWxlLCBtYXhfc2NhbGUpOworCWlmIChoc2NhbGUgPCAwKSB7 CisJCURSTV9ERUJVR19LTVMoIkhvcml6b250YWwgc2NhbGluZyBmYWN0b3Igb3V0IG9mIGxpbWl0 c1xuIik7CisJCWRybV9yZWN0X2RlYnVnX3ByaW50KCZzcmMsIHRydWUpOworCQlkcm1fcmVjdF9k ZWJ1Z19wcmludCgmZHN0LCBmYWxzZSk7CisKKwkJcmV0dXJuIGhzY2FsZTsKIAl9Ci0JaWYgKChj cnRjX3ggKyBjcnRjX3cpIDw9IDApIC8qIE5vdGhpbmcgdG8gZGlzcGxheSAqLwotCQlnb3RvIG91 dDsKLQlpZiAoKGNydGNfeCArIGNydGNfdykgPiBwcmltYXJ5X3cpCi0JCWNydGNfdyA9IHByaW1h cnlfdyAtIGNydGNfeDsKLQotCWlmICgoY3J0Y195IDwgMCkgJiYgKChjcnRjX3kgKyBjcnRjX2gp ID4gMCkpIHsKLQkJY3J0Y19oICs9IGNydGNfeTsKLQkJY3J0Y195ID0gMDsKKworCXZzY2FsZSA9 IGRybV9yZWN0X2NhbGNfdnNjYWxlKCZzcmMsICZkc3QsIG1pbl9zY2FsZSwgbWF4X3NjYWxlKTsK KwlpZiAodnNjYWxlIDwgMCkgeworCQlEUk1fREVCVUdfS01TKCJWZXJ0aWNhbCBzY2FsaW5nIGZh Y3RvciBvdXQgb2YgbGltaXRzXG4iKTsKKwkJZHJtX3JlY3RfZGVidWdfcHJpbnQoJnNyYywgdHJ1 ZSk7CisJCWRybV9yZWN0X2RlYnVnX3ByaW50KCZkc3QsIGZhbHNlKTsKKworCQlyZXR1cm4gdnNj YWxlOwogCX0KLQlpZiAoKGNydGNfeSArIGNydGNfaCkgPD0gMCkgLyogTm90aGluZyB0byBkaXNw bGF5ICovCi0JCWdvdG8gb3V0OwotCWlmIChjcnRjX3kgKyBjcnRjX2ggPiBwcmltYXJ5X2gpCi0J CWNydGNfaCA9IHByaW1hcnlfaCAtIGNydGNfeTsKLQotCWlmICghY3J0Y193IHx8ICFjcnRjX2gp IC8qIEFnYWluLCBub3RoaW5nIHRvIGRpc3BsYXkgKi8KLQkJZ290byBvdXQ7Ci0KLQkvKgotCSAq IFdlIG1heSBub3QgaGF2ZSBhIHNjYWxlciwgZWcuIEhTVyBkb2VzIG5vdCBoYXZlIGl0IGFueSBt b3JlCi0JICovCi0JaWYgKCFpbnRlbF9wbGFuZS0+Y2FuX3NjYWxlICYmIChjcnRjX3cgIT0gc3Jj X3cgfHwgY3J0Y19oICE9IHNyY19oKSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQkvKgotCSAqIFdl IGNhbiB0YWtlIGEgbGFyZ2VyIHNvdXJjZSBhbmQgc2NhbGUgaXQgZG93biwgYnV0Ci0JICogb25s eSBzbyBtdWNoLi4uICAxNnggaXMgdGhlIG1heCBvbiBTTkIuCi0JICovCi0JaWYgKCgoc3JjX3cg KiBzcmNfaCkgLyAoY3J0Y193ICogY3J0Y19oKSkgPiBpbnRlbF9wbGFuZS0+bWF4X2Rvd25zY2Fs ZSkKLQkJcmV0dXJuIC1FSU5WQUw7CisKKwl2aXNpYmxlID0gZHJtX3JlY3RfY2xpcF9zY2FsZWQo JnNyYywgJmRzdCwgJmNsaXAsIGhzY2FsZSwgdnNjYWxlKTsKKworCWNydGNfeCA9IGRzdC54MTsK KwljcnRjX3kgPSBkc3QueTE7CisJY3J0Y193ID0gZHJtX3JlY3Rfd2lkdGgoJmRzdCk7CisJY3J0 Y19oID0gZHJtX3JlY3RfaGVpZ2h0KCZkc3QpOworCisJaWYgKHZpc2libGUpIHsKKwkJLyogTWFr ZSB0aGUgc291cmNlIHZpZXdwb3J0IHNpemUgYW4gZXhhY3QgbXVsdGlwbGUgb2YgdGhlIHNjYWxp bmcgZmFjdG9ycy4gKi8KKwkJZHJtX3JlY3RfYWRqdXN0X3NpemUoJnNyYywKKwkJCQkgICAgIGRy bV9yZWN0X3dpZHRoKCZkc3QpICogaHNjYWxlIC0gZHJtX3JlY3Rfd2lkdGgoJnNyYyksCisJCQkJ ICAgICBkcm1fcmVjdF9oZWlnaHQoJmRzdCkgKiB2c2NhbGUgLSBkcm1fcmVjdF9oZWlnaHQoJnNy YykpOworCisJCS8qIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIHNyYyB2aWV3cG9ydCB3 YXNuJ3QgZW5sYXJnZWQgKi8KKwkJV0FSTl9PTihzcmMueDEgPCAoaW50KSBzcmNfeCB8fAorCQkJ c3JjLnkxIDwgKGludCkgc3JjX3kgfHwKKwkJCXNyYy54MiA+IChpbnQpIChzcmNfeCArIHNyY193 KSB8fAorCQkJc3JjLnkyID4gKGludCkgKHNyY195ICsgc3JjX2gpKTsKKworCQkvKgorCQkgKiBI YXJkd2FyZSBkb2Vzbid0IGhhbmRsZSBzdWJwaXhlbCBjb29yZGluYXRlcy4KKwkJICogQWRqdXN0 IHRvIChtYWNybylwaXhlbCBib3VuZGFyeSwgYnV0IGJlIGNhcmVmdWwgbm90IHRvCisJCSAqIGlu Y3JlYXNlIHRoZSBzb3VyY2Ugdmlld3BvcnQgc2l6ZSwgYmVjYXVzZSB0aGF0IGNvdWxkCisJCSAq IHB1c2ggdGhlIGRvd25zY2FsaW5nIGZhY3RvciBvdXQgb2YgYm91bmRzLgorCQkgKgorCQkgKiBG SVhNRSBTaG91bGQgd2UgYmUgcmVhbGx5IHN0cmljdCBhbmQgcmVqZWN0IHRoZQorCQkgKiBjb25m aWcgaWYgaXQgcmVzdWx0cyBpbiBub24gKG1hY3JvKXBpeGVsIGFsaWduZWQKKwkJICogY29vcmRz PworCQkgKi8KKwkJc3JjX3ggPSBzcmMueDEgPj4gMTY7CisJCXNyY193ID0gZHJtX3JlY3Rfd2lk dGgoJnNyYykgPj4gMTY7CisJCXNyY195ID0gc3JjLnkxID4+IDE2OworCQlzcmNfaCA9IGRybV9y ZWN0X2hlaWdodCgmc3JjKSA+PiAxNjsKKworCQlpZiAoZm9ybWF0X2lzX3l1dihmYi0+cGl4ZWxf Zm9ybWF0KSkgeworCQkJc3JjX3ggJj0gfjE7CisJCQlzcmNfdyAmPSB+MTsKKworCQkJLyoKKwkJ CSAqIE11c3Qga2VlcCBzcmMgYW5kIGRzdCB0aGUKKwkJCSAqIHNhbWUgaWYgd2UgY2FuJ3Qgc2Nh bGUuCisJCQkgKi8KKwkJCWlmICghaW50ZWxfcGxhbmUtPmNhbl9zY2FsZSkKKwkJCQljcnRjX3cg Jj0gfjE7CisKKwkJCWlmIChjcnRjX3cgPT0gMCkKKwkJCQl2aXNpYmxlID0gZmFsc2U7CisJCX0K Kwl9CisKKwkvKiBDaGVjayBzaXplIHJlc3RyaWN0aW9ucyB3aGVuIHNjYWxpbmcgKi8KKwlpZiAo dmlzaWJsZSAmJiAoc3JjX3cgIT0gY3J0Y193IHx8IHNyY19oICE9IGNydGNfaCkpIHsKKwkJdW5z aWduZWQgaW50IHdpZHRoX2J5dGVzOworCisJCVdBUk5fT04oIWludGVsX3BsYW5lLT5jYW5fc2Nh bGUpOworCisJCS8qIEZJWE1FIGludGVybGFjaW5nIG1pbiBoZWlnaHQgaXMgNiAqLworCisJCWlm IChjcnRjX3cgPCAzIHx8IGNydGNfaCA8IDMpCisJCQl2aXNpYmxlID0gZmFsc2U7CisKKwkJaWYg KHNyY193IDwgMyB8fCBzcmNfaCA8IDMpCisJCQl2aXNpYmxlID0gZmFsc2U7CisKKwkJd2lkdGhf Ynl0ZXMgPSAoKHNyY194ICogcGl4ZWxfc2l6ZSkgJiA2MykgKyBzcmNfdyAqIHBpeGVsX3NpemU7 CisKKwkJaWYgKHNyY193ID4gMjA0OCB8fCBzcmNfaCA+IDIwNDggfHwKKwkJICAgIHdpZHRoX2J5 dGVzID4gNDA5NiB8fCBmYi0+cGl0Y2hlc1swXSA+IDQwOTYpIHsKKwkJCURSTV9ERUJVR19LTVMo IlNvdXJjZSBkaW1lbnNpb25zIGV4Y2VlZCBoYXJkd2FyZSBsaW1pdHNcbiIpOworCQkJcmV0dXJu IC1FSU5WQUw7CisJCX0KKwl9CisKKwlkc3QueDEgPSBjcnRjX3g7CisJZHN0LngyID0gY3J0Y194 ICsgY3J0Y193OworCWRzdC55MSA9IGNydGNfeTsKKwlkc3QueTIgPSBjcnRjX3kgKyBjcnRjX2g7 CiAKIAkvKgogCSAqIElmIHRoZSBzcHJpdGUgaXMgY29tcGxldGVseSBjb3ZlcmluZyB0aGUgcHJp bWFyeSBwbGFuZSwKIAkgKiB3ZSBjYW4gZGlzYWJsZSB0aGUgcHJpbWFyeSBhbmQgc2F2ZSBwb3dl ci4KIAkgKi8KLQlpZiAoKGNydGNfeCA9PSAwKSAmJiAoY3J0Y195ID09IDApICYmCi0JICAgIChj cnRjX3cgPT0gcHJpbWFyeV93KSAmJiAoY3J0Y19oID09IHByaW1hcnlfaCkpCi0JCWRpc2FibGVf cHJpbWFyeSA9IHRydWU7CisJZGlzYWJsZV9wcmltYXJ5ID0gZHJtX3JlY3RfZXF1YWxzKCZkc3Qs ICZjbGlwKTsKKwlXQVJOX09OKGRpc2FibGVfcHJpbWFyeSAmJiAhdmlzaWJsZSk7CiAKIAltdXRl eF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAKQEAgLTcwOCw4ICs4MDcsMTIgQEAgaW50ZWxf dXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAJaWYgKCFkaXNhYmxlX3ByaW1hcnkpCiAJCWludGVsX2VuYWJsZV9wcmltYXJ5KGNydGMp OwogCi0JaW50ZWxfcGxhbmUtPnVwZGF0ZV9wbGFuZShwbGFuZSwgZmIsIG9iaiwgY3J0Y194LCBj cnRjX3ksCi0JCQkJICBjcnRjX3csIGNydGNfaCwgeCwgeSwgc3JjX3csIHNyY19oKTsKKwlpZiAo dmlzaWJsZSkKKwkJaW50ZWxfcGxhbmUtPnVwZGF0ZV9wbGFuZShwbGFuZSwgZmIsIG9iaiwKKwkJ CQkJICBjcnRjX3gsIGNydGNfeSwgY3J0Y193LCBjcnRjX2gsCisJCQkJCSAgc3JjX3gsIHNyY195 LCBzcmNfdywgc3JjX2gpOworCWVsc2UKKwkJaW50ZWxfcGxhbmUtPmRpc2FibGVfcGxhbmUocGxh bmUpOwogCiAJaWYgKGRpc2FibGVfcHJpbWFyeSkKIAkJaW50ZWxfZGlzYWJsZV9wcmltYXJ5KGNy dGMpOwpAQCAtNzMyLDcgKzgzNSw2IEBAIGludGVsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiBvdXRfdW5sb2NrOgogCW11dGV4 X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotb3V0OgogCXJldHVybiByZXQ7CiB9CiAKLS0g CjEuOC4xLjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==