From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH v2 07/16] drm/i915/gen9: Allow skl_allocate_pipe_ddb() to operate on in-flight state (v2) Date: Tue, 19 Apr 2016 19:26:14 -0700 Message-ID: <1461119183-14267-8-git-send-email-matthew.d.roper@intel.com> References: <1461119183-14267-1-git-send-email-matthew.d.roper@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7C7876E8B3 for ; Wed, 20 Apr 2016 02:27:06 +0000 (UTC) In-Reply-To: <1461119183-14267-1-git-send-email-matthew.d.roper@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org V2UgZXZlbnR1YWxseSB3YW50IHRvIGNhbGN1bGF0ZSB3YXRlcm1hcmsgdmFsdWVzIGF0IGF0b21p YyAnY2hlY2snIHRpbWUKaW5zdGVhZCBvZiBhdG9taWMgJ2NvbW1pdCcgdGltZSBzbyB0aGF0IGFu eSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbnMKdGhhdCByZXN1bHQgaW4gaW1wb3NzaWJsZSB3YXRl cm1hcmsgcmVxdWlyZW1lbnRzIGFyZSBwcm9wZXJseSByZWplY3RlZC4KVGhlIGZpcnN0IHN0ZXAg YWxvbmcgdGhpcyBwYXRoIGlzIHRvIGFsbG9jYXRlIHRoZSBEREIgYXQgYXRvbWljICdjaGVjaycK dGltZS4gIEFzIHdlIHBlcmZvcm0gdGhpcyB0cmFuc2l0aW9uLCBhbGxvdyB0aGUgbWFpbiBhbGxv Y2F0aW9uIGZ1bmN0aW9uCnRvIG9wZXJhdGUgc3VjY2Vzc2Z1bGx5IG9uIGVpdGhlciBhbiBpbi1m bGlnaHQgc3RhdGUgb3IgYW4KYWxyZWFkeS1jb21taXRlZCBzdGF0ZS4gIE9uY2Ugd2UgY29tcGxl dGUgdGhlIHRyYW5zaXRpb24gaW4gYSBmdXR1cmUKcGF0Y2gsIHdlJ2xsIGNvbWUgYmFjayBhbmQg cmVtb3ZlIHRoZSB1bm5lY2Vzc2FyeSBsb2dpYyBmb3IgdGhlCmFscmVhZHktY29tbWl0dGVkIGNh c2UuCgp2MjogUmViYXNlL3JlZmFjdG9yOyB3ZSBzaG91bGQgbm8gbG9uZ2VyIG5lZWQgdG8gZ3Jh YiBleHRyYSBwbGFuZSBzdGF0ZXMKICAgIHdoaWxlIGFsbG9jYXRpbmcgdGhlIEREQiBzaW5jZSB3 ZSBjYW4gcHVsbCBjYWNoZWQgZGF0YSByYXRlcyBhbmQKICAgIG1pbmltdW0gYmxvY2sgY291bnRz IGZyb20gdGhlIENSVEMgc3RhdGUgZm9yIGFueSBwbGFuZXMgdGhhdCBhcmVuJ3QKICAgIGJlaW5n IG1vZGlmaWVkIGJ5IHRoaXMgdHJhbnNhY3Rpb24uCgpTaWduZWQtb2ZmLWJ5OiBNYXR0IFJvcGVy IDxtYXR0aGV3LmQucm9wZXJAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmggfCAgIDYgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgfCAxNzkg KysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2Vk LCAxMzkgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKaW5kZXggODUxMDJhZC4uZTkxZDM5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0z MjQsNiArMzI0LDEyIEBAIHN0cnVjdCBpOTE1X2hvdHBsdWcgewogCQkJICAgICZkZXYtPm1vZGVf Y29uZmlnLnBsYW5lX2xpc3QsCVwKIAkJCSAgICBiYXNlLmhlYWQpCiAKKyNkZWZpbmUgZm9yX2Vh Y2hfaW50ZWxfcGxhbmVfbWFzayhkZXYsIGludGVsX3BsYW5lLCBwbGFuZV9tYXNrKQkJXAorCWxp c3RfZm9yX2VhY2hfZW50cnkoaW50ZWxfcGxhbmUsICZkZXYtPm1vZGVfY29uZmlnLnBsYW5lX2xp c3QsCVwKKwkJCSAgICBiYXNlLmhlYWQpCQkJCQlcCisJCWZvcl9lYWNoX2lmICgocGxhbmVfbWFz aykgJgkJCQlcCisJCQkgICAgICgxIDw8IGRybV9wbGFuZV9pbmRleCgmaW50ZWxfcGxhbmUtPmJh c2UpKSkKKwogI2RlZmluZSBmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxf Y3J0YywgaW50ZWxfcGxhbmUpCVwKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGludGVsX3BsYW5lLAkJ CQlcCiAJCQkgICAgJihkZXYpLT5tb2RlX2NvbmZpZy5wbGFuZV9saXN0LAkJXApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMKaW5kZXggNDc5YTg5MC4uNjQwMzA1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w bS5jCkBAIC0yODQ5LDEzICsyODQ5LDE4IEBAIHNrbF93bV9wbGFuZV9pZChjb25zdCBzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lKQogc3RhdGljIHZvaWQKIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2Nh dGlvbl9saW1pdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICBjb25zdCBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAotCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF93bV9j b25maWcgKmNvbmZpZywKLQkJCQkgICBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MgLyogb3V0 ICovKQorCQkJCSAgIHN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZywKKwkJCQkgICBzdHJ1 Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MsIC8qIG91dCAqLworCQkJCSAgIGludCAqbnVtX2FjdGl2 ZSAvKiBvdXQgKi8pCiB7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3N0YXRl LT5iYXNlLnN0YXRlOworCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0g dG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGRybV9jcnRjICpmb3JfY3J0YyA9IGNz dGF0ZS0+YmFzZS5jcnRjOwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKIAl1bnNpZ25lZCBpbnQg cGlwZV9zaXplLCBkZGJfc2l6ZTsKIAlpbnQgbnRoX2FjdGl2ZV9waXBlOworCWludCBwaXBlID0g dG9faW50ZWxfY3J0Yyhmb3JfY3J0YyktPnBpcGU7CiAKIAlpZiAoIWNzdGF0ZS0+YmFzZS5hY3Rp dmUpIHsKIAkJYWxsb2MtPnN0YXJ0ID0gMDsKQEAgLTI4NzAsMjUgKzI4NzUsNTkgQEAgc2tsX2Rk Yl9nZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCiAJ ZGRiX3NpemUgLT0gNDsgLyogNCBibG9ja3MgZm9yIGJ5cGFzcyBwYXRoIGFsbG9jYXRpb24gKi8K IAotCW50aF9hY3RpdmVfcGlwZSA9IDA7Ci0JZm9yX2VhY2hfY3J0YyhkZXYsIGNydGMpIHsKLQkJ aWYgKCF0b19pbnRlbF9jcnRjKGNydGMpLT5hY3RpdmUpCi0JCQljb250aW51ZTsKKwkvKgorCSAq IEZJWE1FOiBBdCB0aGUgbW9tZW50IHdlIG1heSBiZSBjYWxsZWQgb24gZWl0aGVyIGluLWZsaWdo dCBvciBmdWxseQorCSAqIGNvbW1pdHRlZCBjc3RhdGUncy4gIE9uY2Ugd2UgZnVsbHkgbW92ZSBE REIgYWxsb2NhdGlvbiBpbiB0aGUgY2hlY2sKKwkgKiBwaGFzZSwgd2UnbGwgb25seSBiZSBjYWxs ZWQgb24gaW4tZmxpZ2h0IHN0YXRlcyBhbmQgdGhlICdlbHNlJworCSAqIGJyYW5jaCBoZXJlIHdp bGwgZ28gYXdheS4KKwkgKgorCSAqIFRoZSAnZWxzZScgYnJhbmNoIGlzIHNsaWdodGx5IHJhY3kg aGVyZSwgYnV0IGl0IHdhcyByYWN5IHRvIGJlZ2luCisJICogd2l0aDsgc2luY2UgaXQncyBnb2lu ZyBhd2F5IHNvb24sIG5vIGVmZm9ydCBpcyBtYWRlIHRvIGFkZHJlc3MgdGhhdC4KKwkgKi8KKwlp ZiAoc3RhdGUpIHsKKwkJLyoKKwkJICogSWYgdGhlIHN0YXRlIGRvZXNuJ3QgY2hhbmdlIHRoZSBh Y3RpdmUgQ1JUQydzLCB0aGVuIHRoZXJlJ3MKKwkJICogbm8gbmVlZCB0byByZWNhbGN1bGF0ZTsg dGhlIGV4aXN0aW5nIHBpcGUgYWxsb2NhdGlvbiBsaW1pdHMKKwkJICogc2hvdWxkIHJlbWFpbiB1 bmNoYW5nZWQuICBOb3RlIHRoYXQgd2UncmUgc2FmZSBmcm9tIHJhY2luZworCQkgKiBjb21taXRz IHNpbmNlIGFueSByYWNpbmcgY29tbWl0IHRoYXQgY2hhbmdlcyB0aGUgYWN0aXZlIENSVEMKKwkJ ICogbGlzdCB3b3VsZCBuZWVkIHRvIGdyYWIgX2FsbF8gY3J0YyBsb2NrcywgaW5jbHVkaW5nIHRo ZSBvbmUKKwkJICogd2UgY3VycmVudGx5IGhvbGQuCisJCSAqLworCQlpZiAoIWludGVsX3N0YXRl LT5hY3RpdmVfcGlwZV9jaGFuZ2VzKSB7CisJCQkqYWxsb2MgPSBkZXZfcHJpdi0+d20uc2tsX2h3 LmRkYi5waXBlW3BpcGVdOworCQkJKm51bV9hY3RpdmUgPSBod2VpZ2h0MzIoZGV2X3ByaXYtPmFj dGl2ZV9jcnRjcyk7CisJCQlyZXR1cm47CisJCX0KIAotCQlpZiAoY3J0YyA9PSBmb3JfY3J0YykK LQkJCWJyZWFrOworCQkqbnVtX2FjdGl2ZSA9IGh3ZWlnaHQzMihpbnRlbF9zdGF0ZS0+YWN0aXZl X2NydGNzKTsKKwkJbnRoX2FjdGl2ZV9waXBlID0gaHdlaWdodDMyKGludGVsX3N0YXRlLT5hY3Rp dmVfY3J0Y3MgJgorCQkJCQkgICAgKGRybV9jcnRjX21hc2soZm9yX2NydGMpIC0gMSkpOworCQlw aXBlX3NpemUgPSBkZGJfc2l6ZSAvIGh3ZWlnaHQzMihpbnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNz KTsKKwkJYWxsb2MtPnN0YXJ0ID0gbnRoX2FjdGl2ZV9waXBlICogZGRiX3NpemUgLyAqbnVtX2Fj dGl2ZTsKKwkJYWxsb2MtPmVuZCA9IGFsbG9jLT5zdGFydCArIHBpcGVfc2l6ZTsKKwl9IGVsc2Ug eworCQludGhfYWN0aXZlX3BpcGUgPSAwOworCQlmb3JfZWFjaF9jcnRjKGRldiwgY3J0Yykgewor CQkJaWYgKCF0b19pbnRlbF9jcnRjKGNydGMpLT5hY3RpdmUpCisJCQkJY29udGludWU7CiAKLQkJ bnRoX2FjdGl2ZV9waXBlKys7Ci0JfQorCQkJaWYgKGNydGMgPT0gZm9yX2NydGMpCisJCQkJYnJl YWs7CiAKLQlwaXBlX3NpemUgPSBkZGJfc2l6ZSAvIGNvbmZpZy0+bnVtX3BpcGVzX2FjdGl2ZTsK LQlhbGxvYy0+c3RhcnQgPSBudGhfYWN0aXZlX3BpcGUgKiBkZGJfc2l6ZSAvIGNvbmZpZy0+bnVt X3BpcGVzX2FjdGl2ZTsKLQlhbGxvYy0+ZW5kID0gYWxsb2MtPnN0YXJ0ICsgcGlwZV9zaXplOwor CQkJbnRoX2FjdGl2ZV9waXBlKys7CisJCX0KKworCQlwaXBlX3NpemUgPSBkZGJfc2l6ZSAvIGNv bmZpZy0+bnVtX3BpcGVzX2FjdGl2ZTsKKwkJYWxsb2MtPnN0YXJ0ID0gbnRoX2FjdGl2ZV9waXBl ICogZGRiX3NpemUgLworCQkJY29uZmlnLT5udW1fcGlwZXNfYWN0aXZlOworCQlhbGxvYy0+ZW5k ID0gYWxsb2MtPnN0YXJ0ICsgcGlwZV9zaXplOworCQkqbnVtX2FjdGl2ZSA9IGNvbmZpZy0+bnVt X3BpcGVzX2FjdGl2ZTsKKwl9CiB9CiAKLXN0YXRpYyB1bnNpZ25lZCBpbnQgc2tsX2N1cnNvcl9h bGxvY2F0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZykKK3N0YXRpYyB1 bnNpZ25lZCBpbnQgc2tsX2N1cnNvcl9hbGxvY2F0aW9uKGludCBudW1fYWN0aXZlKQogewotCWlm IChjb25maWctPm51bV9waXBlc19hY3RpdmUgPT0gMSkKKwlpZiAobnVtX2FjdGl2ZSA9PSAxKQog CQlyZXR1cm4gMzI7CiAKIAlyZXR1cm4gODsKQEAgLTMwNTQsMzMgKzMwOTMsNDggQEAgc2tsX2dl dF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmludGVs X2NzdGF0ZSkKIAlyZXR1cm4gdG90YWxfZGF0YV9yYXRlOwogfQogCi1zdGF0aWMgdm9pZAorc3Rh dGljIGludAogc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUsCiAJCSAgICAgIHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmRkYiAvKiBvdXQgKi8p CiB7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3N0YXRlLT5iYXNlLnN0YXRl OwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+YmFzZS5jcnRjOwogCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZyA9 ICZkZXZfcHJpdi0+d20uY29uZmlnOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjKTsKIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lOwor CXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0 ZTsKIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CiAJc3RydWN0IHNrbF9kZGJf ZW50cnkgKmFsbG9jID0gJmRkYi0+cGlwZVtwaXBlXTsKIAl1aW50MTZfdCBhbGxvY19zaXplLCBz dGFydCwgY3Vyc29yX2Jsb2NrczsKIAl1aW50MTZfdCAqbWluaW11bSA9IGNzdGF0ZS0+d20uc2ts Lm1pbmltdW1fYmxvY2tzOwogCXVpbnQxNl90ICp5X21pbmltdW0gPSBjc3RhdGUtPndtLnNrbC5t aW5pbXVtX3lfYmxvY2tzOwogCXVuc2lnbmVkIGludCB0b3RhbF9kYXRhX3JhdGU7CisJaW50IG51 bV9hY3RpdmU7CisJaW50IGlkLCBpOworCisJaWYgKCFjc3RhdGUtPmJhc2UuYWN0aXZlKSB7CisJ CWRkYi0+cGlwZVtwaXBlXS5zdGFydCA9IGRkYi0+cGlwZVtwaXBlXS5lbmQgPSAwOworCQltZW1z ZXQoZGRiLT5wbGFuZVtwaXBlXSwgMCwKKwkJICAgICAgIEk5MTVfTUFYX1BMQU5FUyAqIHNpemVv ZihzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSkpOworCQltZW1zZXQoZGRiLT55X3BsYW5lW3BpcGVdLCAw LAorCQkgICAgICAgSTkxNV9NQVhfUExBTkVTICogc2l6ZW9mKHN0cnVjdCBza2xfZGRiX2VudHJ5 KSk7CisJCXJldHVybiAwOworCX0KIAotCXNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1p dHMoZGV2LCBjc3RhdGUsIGNvbmZpZywgYWxsb2MpOworCXNrbF9kZGJfZ2V0X3BpcGVfYWxsb2Nh dGlvbl9saW1pdHMoZGV2LCBjc3RhdGUsIGNvbmZpZywgYWxsb2MsCisJCQkJCSAgICZudW1fYWN0 aXZlKTsKIAlhbGxvY19zaXplID0gc2tsX2RkYl9lbnRyeV9zaXplKGFsbG9jKTsKIAlpZiAoYWxs b2Nfc2l6ZSA9PSAwKSB7CiAJCW1lbXNldChkZGItPnBsYW5lW3BpcGVdLCAwLCBzaXplb2YoZGRi LT5wbGFuZVtwaXBlXSkpOwogCQltZW1zZXQoJmRkYi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09S XSwgMCwKIAkJICAgICAgIHNpemVvZihkZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl0pKTsK LQkJcmV0dXJuOworCQlyZXR1cm4gMDsKIAl9CiAKLQljdXJzb3JfYmxvY2tzID0gc2tsX2N1cnNv cl9hbGxvY2F0aW9uKGNvbmZpZyk7CisJY3Vyc29yX2Jsb2NrcyA9IHNrbF9jdXJzb3JfYWxsb2Nh dGlvbihudW1fYWN0aXZlKTsKIAlkZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NVUlNPUl0uc3RhcnQg PSBhbGxvYy0+ZW5kIC0gY3Vyc29yX2Jsb2NrczsKIAlkZGItPnBsYW5lW3BpcGVdW1BMQU5FX0NV UlNPUl0uZW5kID0gYWxsb2MtPmVuZDsKIApAQCAtMzA4OCwyMyArMzE0Miw1NyBAQCBza2xfYWxs b2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAlhbGxvYy0+ ZW5kIC09IGN1cnNvcl9ibG9ja3M7CiAKIAkvKiAxLiBBbGxvY2F0ZSB0aGUgbWluaW51bSByZXF1 aXJlZCBibG9ja3MgZm9yIGVhY2ggYWN0aXZlIHBsYW5lICovCi0JbWVtc2V0KG1pbmltdW0sIDAs IHNpemVvZih1aW50MTZfdCkgKiBJOTE1X01BWF9QTEFORVMpOwotCW1lbXNldCh5X21pbmltdW0s IDAsIHNpemVvZih1aW50MTZfdCkgKiBJOTE1X01BWF9QTEFORVMpOwotCWZvcl9lYWNoX2ludGVs X3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9wbGFuZSkgewotCQlzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSA9ICZpbnRlbF9wbGFuZS0+YmFzZTsKLQkJc3RydWN0IGRybV9mcmFt ZWJ1ZmZlciAqZmIgPSBwbGFuZS0+c3RhdGUtPmZiOwotCQlpbnQgaWQgPSBza2xfd21fcGxhbmVf aWQoaW50ZWxfcGxhbmUpOworCS8qCisJICogVE9ETzogUmVtb3ZlIHN1cHBvcnQgZm9yIGFscmVh ZHktY29tbWl0dGVkIHN0YXRlIG9uY2Ugd2UKKwkgKiBvbmx5IGFsbG9jYXRlIEREQiBvbiBpbi1m bGlnaHQgc3RhdGVzLgorCSAqLworCWlmIChzdGF0ZSkgeworCQlmb3JfZWFjaF9wbGFuZV9pbl9z dGF0ZShzdGF0ZSwgcGxhbmUsIHBzdGF0ZSwgaSkgeworCQkJaW50ZWxfcGxhbmUgPSB0b19pbnRl bF9wbGFuZShwbGFuZSk7CisJCQlpZCA9IHNrbF93bV9wbGFuZV9pZChpbnRlbF9wbGFuZSk7CiAK LQkJaWYgKCF0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpLT52aXNpYmxlKQotCQkJ Y29udGludWU7CisJCQlpZiAoaW50ZWxfcGxhbmUtPnBpcGUgIT0gcGlwZSkKKwkJCQljb250aW51 ZTsKIAotCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKQotCQkJY29u dGludWU7CisJCQlpZiAoIXRvX2ludGVsX3BsYW5lX3N0YXRlKHBzdGF0ZSktPnZpc2libGUpIHsK KwkJCQltaW5pbXVtW2lkXSA9IDA7CisJCQkJeV9taW5pbXVtW2lkXSA9IDA7CisJCQkJY29udGlu dWU7CisJCQl9CisJCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VSU09SKSB7 CisJCQkJbWluaW11bVtpZF0gPSAwOworCQkJCXlfbWluaW11bVtpZF0gPSAwOworCQkJCWNvbnRp bnVlOworCQkJfQorCisJCQltaW5pbXVtW2lkXSA9IDg7CisJCQlpZiAocHN0YXRlLT5mYi0+cGl4 ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikKKwkJCQl5X21pbmltdW1baWRdID0gODsKKwkJ CWVsc2UKKwkJCQl5X21pbmltdW1baWRdID0gMDsKKwkJfQorCX0gZWxzZSB7CisJCW1lbXNldCht aW5pbXVtLCAwLCBzaXplb2YodWludDE2X3QpICogSTkxNV9NQVhfUExBTkVTKTsKKwkJbWVtc2V0 KHlfbWluaW11bSwgMCwgc2l6ZW9mKHVpbnQxNl90KSAqIEk5MTVfTUFYX1BMQU5FUyk7CisJCWZv cl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9wbGFuZSkg eworCQkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSAmaW50ZWxfcGxhbmUtPmJhc2U7CisJCQlz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lLT5zdGF0ZS0+ZmI7CisJCQlpbnQgaWQg PSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOworCisJCQlpZiAoIXRvX2ludGVsX3BsYW5l X3N0YXRlKHBsYW5lLT5zdGF0ZSktPnZpc2libGUpCisJCQkJY29udGludWU7CisKKwkJCWlmIChw bGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCisJCQkJY29udGludWU7CisKKwkJ CW1pbmltdW1baWRdID0gODsKKwkJCXlfbWluaW11bVtpZF0gPSAoZmItPnBpeGVsX2Zvcm1hdCA9 PSBEUk1fRk9STUFUX05WMTIpID8gOCA6IDA7CisJCX0KKwl9CiAKLQkJbWluaW11bVtpZF0gPSA4 OwotCQlhbGxvY19zaXplIC09IG1pbmltdW1baWRdOwotCQl5X21pbmltdW1baWRdID0gKGZiLT5w aXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKSA/IDggOiAwOwotCQlhbGxvY19zaXplIC09 IHlfbWluaW11bVtpZF07CisJZm9yIChpID0gMDsgaSA8IFBMQU5FX0NVUlNPUjsgaSsrKSB7CisJ CWFsbG9jX3NpemUgLT0gbWluaW11bVtpXTsKKwkJYWxsb2Nfc2l6ZSAtPSB5X21pbmltdW1baV07 CiAJfQogCiAJLyoKQEAgLTMxMTUsMjEgKzMyMDMsMTQgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRi KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJICovCiAJdG90YWxfZGF0YV9yYXRl ID0gc2tsX2dldF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoY3N0YXRlKTsKIAlpZiAodG90YWxf ZGF0YV9yYXRlID09IDApCi0JCXJldHVybjsKKwkJcmV0dXJuIDA7CiAKIAlzdGFydCA9IGFsbG9j LT5zdGFydDsKIAlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0Yywg aW50ZWxfcGxhbmUpIHsKLQkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSAmaW50ZWxfcGxhbmUt PmJhc2U7Ci0JCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSA9IGludGVsX3BsYW5lLT5i YXNlLnN0YXRlOwogCQl1bnNpZ25lZCBpbnQgZGF0YV9yYXRlLCB5X2RhdGFfcmF0ZTsKIAkJdWlu dDE2X3QgcGxhbmVfYmxvY2tzLCB5X3BsYW5lX2Jsb2NrcyA9IDA7CiAJCWludCBpZCA9IHNrbF93 bV9wbGFuZV9pZChpbnRlbF9wbGFuZSk7CiAKLQkJaWYgKCF0b19pbnRlbF9wbGFuZV9zdGF0ZShw c3RhdGUpLT52aXNpYmxlKQotCQkJY29udGludWU7Ci0JCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1f UExBTkVfVFlQRV9DVVJTT1IpCi0JCQljb250aW51ZTsKLQogCQlkYXRhX3JhdGUgPSBjc3RhdGUt PndtLnNrbC5wbGFuZV9kYXRhX3JhdGVbaWRdOwogCiAJCS8qCkBAIC0zMTQxLDggKzMyMjIsMTEg QEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUs CiAJCXBsYW5lX2Jsb2NrcyArPSBkaXZfdTY0KCh1aW50NjRfdClhbGxvY19zaXplICogZGF0YV9y YXRlLAogCQkJCQl0b3RhbF9kYXRhX3JhdGUpOwogCi0JCWRkYi0+cGxhbmVbcGlwZV1baWRdLnN0 YXJ0ID0gc3RhcnQ7Ci0JCWRkYi0+cGxhbmVbcGlwZV1baWRdLmVuZCA9IHN0YXJ0ICsgcGxhbmVf YmxvY2tzOworCQkvKiBMZWF2ZSBkaXNhYmxlZCBwbGFuZXMgYXQgKDAsMCkgKi8KKwkJaWYgKGRh dGFfcmF0ZSkgeworCQkJZGRiLT5wbGFuZVtwaXBlXVtpZF0uc3RhcnQgPSBzdGFydDsKKwkJCWRk Yi0+cGxhbmVbcGlwZV1baWRdLmVuZCA9IHN0YXJ0ICsgcGxhbmVfYmxvY2tzOworCQl9CiAKIAkJ c3RhcnQgKz0gcGxhbmVfYmxvY2tzOwogCkBAIC0zMTU1LDEyICszMjM5LDE1IEBAIHNrbF9hbGxv Y2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCQl5X3BsYW5l X2Jsb2NrcyArPSBkaXZfdTY0KCh1aW50NjRfdClhbGxvY19zaXplICogeV9kYXRhX3JhdGUsCiAJ CQkJCXRvdGFsX2RhdGFfcmF0ZSk7CiAKLQkJZGRiLT55X3BsYW5lW3BpcGVdW2lkXS5zdGFydCA9 IHN0YXJ0OwotCQlkZGItPnlfcGxhbmVbcGlwZV1baWRdLmVuZCA9IHN0YXJ0ICsgeV9wbGFuZV9i bG9ja3M7CisJCWlmICh5X2RhdGFfcmF0ZSkgeworCQkJZGRiLT55X3BsYW5lW3BpcGVdW2lkXS5z dGFydCA9IHN0YXJ0OworCQkJZGRiLT55X3BsYW5lW3BpcGVdW2lkXS5lbmQgPSBzdGFydCArIHlf cGxhbmVfYmxvY2tzOworCQl9CiAKIAkJc3RhcnQgKz0geV9wbGFuZV9ibG9ja3M7CiAJfQogCisJ cmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB1aW50MzJfdCBza2xfcGlwZV9waXhlbF9yYXRlKGNvbnN0 IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjb25maWcpCkBAIC0zNjUxLDcgKzM3MzgsNyBAQCBz dGF0aWMgYm9vbCBza2xfdXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5z dGF0ZSk7CiAKLQlza2xfYWxsb2NhdGVfcGlwZV9kZGIoY3N0YXRlLCBkZGIpOworCVdBUk5fT04o c2tsX2FsbG9jYXRlX3BpcGVfZGRiKGNzdGF0ZSwgZGRiKSAhPSAwKTsKIAlza2xfYnVpbGRfcGlw ZV93bShjc3RhdGUsIGRkYiwgcGlwZV93bSk7CiAKIAlpZiAoIW1lbWNtcCgmaW50ZWxfY3J0Yy0+ d20uYWN0aXZlLnNrbCwgcGlwZV93bSwgc2l6ZW9mKCpwaXBlX3dtKSkpCi0tIAoyLjEuNAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==