From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [CI 07/17] drm/i915/gen9: Allow skl_allocate_pipe_ddb() to operate on in-flight state (v3) Date: Thu, 12 May 2016 07:06:01 -0700 Message-ID: <1463061971-19638-8-git-send-email-matthew.d.roper@intel.com> References: <1463061971-19638-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 7949F6E8BE for ; Thu, 12 May 2016 14:06:25 +0000 (UTC) In-Reply-To: <1463061971-19638-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 IG1vZGlmaWVkIGJ5IHRoaXMgdHJhbnNhY3Rpb24uCgp2MzoKIC0gU2ltcGxpZnkgbWVtc2V0cyB0 byBjbGVhciBEREIgcGxhbmUgZW50cmllcy4gIChNYWFydGVuKQogLSBEcm9wIGEgcmVkdW5kYW50 IG1lbXNldCBvZiBwbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdIHRoYXQgd2FzIGFkZGVkCiAgIGJ5 IGFuIGVhcmxpZXIgQ29jY2luZWxsZSBwYXRjaC4gIChNYWFydGVuKQogLSBBc3NpZ24gKm51bV9h Y3RpdmUgYXQgdGhlIHRvcCBvZiBza2xfZGRiX2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRzKCkK ICAgc28gdGhhdCBubyBjb2RlIHBhdGhzIHJldHVybiB3aXRob3V0IHNldHRpbmcgaXQuICAoa2J1 aWxkIHJvYm90KQoKQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51 eC5pbnRlbC5jb20+ClNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBp bnRlbC5jb20+ClJldmlld2VkLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9y c3RAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg fCAgIDYgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMgfCAxNzkgKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAxMzkgaW5z ZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXgg N2EwYjUxMy4uZDU5MDg3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0zMjQsNiArMzI0 LDEyIEBAIHN0cnVjdCBpOTE1X2hvdHBsdWcgewogCQkJICAgICZkZXYtPm1vZGVfY29uZmlnLnBs YW5lX2xpc3QsCVwKIAkJCSAgICBiYXNlLmhlYWQpCiAKKyNkZWZpbmUgZm9yX2VhY2hfaW50ZWxf cGxhbmVfbWFzayhkZXYsIGludGVsX3BsYW5lLCBwbGFuZV9tYXNrKQkJXAorCWxpc3RfZm9yX2Vh Y2hfZW50cnkoaW50ZWxfcGxhbmUsICZkZXYtPm1vZGVfY29uZmlnLnBsYW5lX2xpc3QsCVwKKwkJ CSAgICBiYXNlLmhlYWQpCQkJCQlcCisJCWZvcl9lYWNoX2lmICgocGxhbmVfbWFzaykgJgkJCQlc CisJCQkgICAgICgxIDw8IGRybV9wbGFuZV9pbmRleCgmaW50ZWxfcGxhbmUtPmJhc2UpKSkKKwog I2RlZmluZSBmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxfY3J0YywgaW50 ZWxfcGxhbmUpCVwKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGludGVsX3BsYW5lLAkJCQlcCiAJCQkg ICAgJihkZXYpLT5tb2RlX2NvbmZpZy5wbGFuZV9saXN0LAkJXApkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKaW5kZXggMDViMDRhNi4uY2EzOGY2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC0y ODQ5LDEzICsyODQ5LDI1IEBAIHNrbF93bV9wbGFuZV9pZChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxh bmUgKnBsYW5lKQogc3RhdGljIHZvaWQKIHNrbF9kZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1p dHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqY3N0YXRlLAotCQkJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNv bmZpZywKLQkJCQkgICBzdHJ1Y3Qgc2tsX2RkYl9lbnRyeSAqYWxsb2MgLyogb3V0ICovKQorCQkJ CSAgIHN0cnVjdCBpbnRlbF93bV9jb25maWcgKmNvbmZpZywKKwkJCQkgICBzdHJ1Y3Qgc2tsX2Rk Yl9lbnRyeSAqYWxsb2MsIC8qIG91dCAqLworCQkJCSAgIGludCAqbnVtX2FjdGl2ZSAvKiBvdXQg Ki8pCiB7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlID0gY3N0YXRlLT5iYXNlLnN0 YXRlOworCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxf YXRvbWljX3N0YXRlKHN0YXRlKTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGRldik7CiAJc3RydWN0IGRybV9jcnRjICpmb3JfY3J0YyA9IGNzdGF0ZS0+YmFz ZS5jcnRjOwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKIAl1bnNpZ25lZCBpbnQgcGlwZV9zaXpl LCBkZGJfc2l6ZTsKIAlpbnQgbnRoX2FjdGl2ZV9waXBlOworCWludCBwaXBlID0gdG9faW50ZWxf Y3J0Yyhmb3JfY3J0YyktPnBpcGU7CisKKwlpZiAoaW50ZWxfc3RhdGUgJiYgaW50ZWxfc3RhdGUt PmFjdGl2ZV9waXBlX2NoYW5nZXMpCisJCSpudW1fYWN0aXZlID0gaHdlaWdodDMyKGludGVsX3N0 YXRlLT5hY3RpdmVfY3J0Y3MpOworCWVsc2UgaWYgKGludGVsX3N0YXRlKQorCQkqbnVtX2FjdGl2 ZSA9IGh3ZWlnaHQzMihkZXZfcHJpdi0+YWN0aXZlX2NydGNzKTsKKwllbHNlCisJCSpudW1fYWN0 aXZlID0gY29uZmlnLT5udW1fcGlwZXNfYWN0aXZlOwogCiAJaWYgKCFjc3RhdGUtPmJhc2UuYWN0 aXZlKSB7CiAJCWFsbG9jLT5zdGFydCA9IDA7CkBAIC0yODcwLDI1ICsyODgyLDU2IEBAIHNrbF9k ZGJfZ2V0X3BpcGVfYWxsb2NhdGlvbl9saW1pdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAog CWRkYl9zaXplIC09IDQ7IC8qIDQgYmxvY2tzIGZvciBieXBhc3MgcGF0aCBhbGxvY2F0aW9uICov CiAKLQludGhfYWN0aXZlX3BpcGUgPSAwOwotCWZvcl9lYWNoX2NydGMoZGV2LCBjcnRjKSB7Ci0J CWlmICghdG9faW50ZWxfY3J0YyhjcnRjKS0+YWN0aXZlKQotCQkJY29udGludWU7CisJLyoKKwkg KiBGSVhNRTogQXQgdGhlIG1vbWVudCB3ZSBtYXkgYmUgY2FsbGVkIG9uIGVpdGhlciBpbi1mbGln aHQgb3IgZnVsbHkKKwkgKiBjb21taXR0ZWQgY3N0YXRlJ3MuICBPbmNlIHdlIGZ1bGx5IG1vdmUg RERCIGFsbG9jYXRpb24gaW4gdGhlIGNoZWNrCisJICogcGhhc2UsIHdlJ2xsIG9ubHkgYmUgY2Fs bGVkIG9uIGluLWZsaWdodCBzdGF0ZXMgYW5kIHRoZSAnZWxzZScKKwkgKiBicmFuY2ggaGVyZSB3 aWxsIGdvIGF3YXkuCisJICoKKwkgKiBUaGUgJ2Vsc2UnIGJyYW5jaCBpcyBzbGlnaHRseSByYWN5 IGhlcmUsIGJ1dCBpdCB3YXMgcmFjeSB0byBiZWdpbgorCSAqIHdpdGg7IHNpbmNlIGl0J3MgZ29p bmcgYXdheSBzb29uLCBubyBlZmZvcnQgaXMgbWFkZSB0byBhZGRyZXNzIHRoYXQuCisJICovCisJ aWYgKHN0YXRlKSB7CisJCS8qCisJCSAqIElmIHRoZSBzdGF0ZSBkb2Vzbid0IGNoYW5nZSB0aGUg YWN0aXZlIENSVEMncywgdGhlbiB0aGVyZSdzCisJCSAqIG5vIG5lZWQgdG8gcmVjYWxjdWxhdGU7 IHRoZSBleGlzdGluZyBwaXBlIGFsbG9jYXRpb24gbGltaXRzCisJCSAqIHNob3VsZCByZW1haW4g dW5jaGFuZ2VkLiAgTm90ZSB0aGF0IHdlJ3JlIHNhZmUgZnJvbSByYWNpbmcKKwkJICogY29tbWl0 cyBzaW5jZSBhbnkgcmFjaW5nIGNvbW1pdCB0aGF0IGNoYW5nZXMgdGhlIGFjdGl2ZSBDUlRDCisJ CSAqIGxpc3Qgd291bGQgbmVlZCB0byBncmFiIF9hbGxfIGNydGMgbG9ja3MsIGluY2x1ZGluZyB0 aGUgb25lCisJCSAqIHdlIGN1cnJlbnRseSBob2xkLgorCQkgKi8KKwkJaWYgKCFpbnRlbF9zdGF0 ZS0+YWN0aXZlX3BpcGVfY2hhbmdlcykgeworCQkJKmFsbG9jID0gZGV2X3ByaXYtPndtLnNrbF9o dy5kZGIucGlwZVtwaXBlXTsKKwkJCXJldHVybjsKKwkJfQogCi0JCWlmIChjcnRjID09IGZvcl9j cnRjKQotCQkJYnJlYWs7CisJCW50aF9hY3RpdmVfcGlwZSA9IGh3ZWlnaHQzMihpbnRlbF9zdGF0 ZS0+YWN0aXZlX2NydGNzICYKKwkJCQkJICAgIChkcm1fY3J0Y19tYXNrKGZvcl9jcnRjKSAtIDEp KTsKKwkJcGlwZV9zaXplID0gZGRiX3NpemUgLyBod2VpZ2h0MzIoaW50ZWxfc3RhdGUtPmFjdGl2 ZV9jcnRjcyk7CisJCWFsbG9jLT5zdGFydCA9IG50aF9hY3RpdmVfcGlwZSAqIGRkYl9zaXplIC8g Km51bV9hY3RpdmU7CisJCWFsbG9jLT5lbmQgPSBhbGxvYy0+c3RhcnQgKyBwaXBlX3NpemU7CisJ fSBlbHNlIHsKKwkJbnRoX2FjdGl2ZV9waXBlID0gMDsKKwkJZm9yX2VhY2hfY3J0YyhkZXYsIGNy dGMpIHsKKwkJCWlmICghdG9faW50ZWxfY3J0YyhjcnRjKS0+YWN0aXZlKQorCQkJCWNvbnRpbnVl OwogCi0JCW50aF9hY3RpdmVfcGlwZSsrOwotCX0KKwkJCWlmIChjcnRjID09IGZvcl9jcnRjKQor CQkJCWJyZWFrOwogCi0JcGlwZV9zaXplID0gZGRiX3NpemUgLyBjb25maWctPm51bV9waXBlc19h Y3RpdmU7Ci0JYWxsb2MtPnN0YXJ0ID0gbnRoX2FjdGl2ZV9waXBlICogZGRiX3NpemUgLyBjb25m aWctPm51bV9waXBlc19hY3RpdmU7Ci0JYWxsb2MtPmVuZCA9IGFsbG9jLT5zdGFydCArIHBpcGVf c2l6ZTsKKwkJCW50aF9hY3RpdmVfcGlwZSsrOworCQl9CisKKwkJcGlwZV9zaXplID0gZGRiX3Np emUgLyBjb25maWctPm51bV9waXBlc19hY3RpdmU7CisJCWFsbG9jLT5zdGFydCA9IG50aF9hY3Rp dmVfcGlwZSAqIGRkYl9zaXplIC8KKwkJCWNvbmZpZy0+bnVtX3BpcGVzX2FjdGl2ZTsKKwkJYWxs b2MtPmVuZCA9IGFsbG9jLT5zdGFydCArIHBpcGVfc2l6ZTsKKwl9CiB9CiAKLXN0YXRpYyB1bnNp Z25lZCBpbnQgc2tsX2N1cnNvcl9hbGxvY2F0aW9uKGNvbnN0IHN0cnVjdCBpbnRlbF93bV9jb25m aWcgKmNvbmZpZykKK3N0YXRpYyB1bnNpZ25lZCBpbnQgc2tsX2N1cnNvcl9hbGxvY2F0aW9uKGlu dCBudW1fYWN0aXZlKQogewotCWlmIChjb25maWctPm51bV9waXBlc19hY3RpdmUgPT0gMSkKKwlp ZiAobnVtX2FjdGl2ZSA9PSAxKQogCQlyZXR1cm4gMzI7CiAKIAlyZXR1cm4gODsKQEAgLTMwNTQs MzMgKzMwOTcsNDQgQEAgc2tsX2dldF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmludGVsX2NzdGF0ZSkKIAlyZXR1cm4gdG90YWxfZGF0YV9yYXRlOwog fQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGludAogc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJCSAgICAgIHN0cnVjdCBza2xfZGRiX2FsbG9j YXRpb24gKmRkYiAvKiBvdXQgKi8pCiB7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl ID0gY3N0YXRlLT5iYXNlLnN0YXRlOwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+ YmFzZS5jcnRjOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRl bF93bV9jb25maWcgKmNvbmZpZyA9ICZkZXZfcHJpdi0+d20uY29uZmlnOwogCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAlzdHJ1Y3QgaW50ZWxf cGxhbmUgKmludGVsX3BsYW5lOworCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOworCXN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKnBzdGF0ZTsKIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBp cGU7CiAJc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jID0gJmRkYi0+cGlwZVtwaXBlXTsKIAl1 aW50MTZfdCBhbGxvY19zaXplLCBzdGFydCwgY3Vyc29yX2Jsb2NrczsKIAl1aW50MTZfdCAqbWlu aW11bSA9IGNzdGF0ZS0+d20uc2tsLm1pbmltdW1fYmxvY2tzOwogCXVpbnQxNl90ICp5X21pbmlt dW0gPSBjc3RhdGUtPndtLnNrbC5taW5pbXVtX3lfYmxvY2tzOwogCXVuc2lnbmVkIGludCB0b3Rh bF9kYXRhX3JhdGU7CisJaW50IG51bV9hY3RpdmU7CisJaW50IGlkLCBpOwogCi0Jc2tsX2RkYl9n ZXRfcGlwZV9hbGxvY2F0aW9uX2xpbWl0cyhkZXYsIGNzdGF0ZSwgY29uZmlnLCBhbGxvYyk7CisJ aWYgKCFjc3RhdGUtPmJhc2UuYWN0aXZlKSB7CisJCWRkYi0+cGlwZVtwaXBlXS5zdGFydCA9IGRk Yi0+cGlwZVtwaXBlXS5lbmQgPSAwOworCQltZW1zZXQoZGRiLT5wbGFuZVtwaXBlXSwgMCwgc2l6 ZW9mKGRkYi0+cGxhbmVbcGlwZV0pKTsKKwkJbWVtc2V0KGRkYi0+eV9wbGFuZVtwaXBlXSwgMCwg c2l6ZW9mKGRkYi0+eV9wbGFuZVtwaXBlXSkpOworCQlyZXR1cm4gMDsKKwl9CisKKwlza2xfZGRi X2dldF9waXBlX2FsbG9jYXRpb25fbGltaXRzKGRldiwgY3N0YXRlLCBjb25maWcsIGFsbG9jLAor CQkJCQkgICAmbnVtX2FjdGl2ZSk7CiAJYWxsb2Nfc2l6ZSA9IHNrbF9kZGJfZW50cnlfc2l6ZShh bGxvYyk7CiAJaWYgKGFsbG9jX3NpemUgPT0gMCkgewogCQltZW1zZXQoZGRiLT5wbGFuZVtwaXBl XSwgMCwgc2l6ZW9mKGRkYi0+cGxhbmVbcGlwZV0pKTsKLQkJbWVtc2V0KCZkZGItPnBsYW5lW3Bp cGVdW1BMQU5FX0NVUlNPUl0sIDAsCi0JCSAgICAgICBzaXplb2YoZGRiLT5wbGFuZVtwaXBlXVtQ TEFORV9DVVJTT1JdKSk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIDA7CiAJfQogCi0JY3Vyc29yX2Js b2NrcyA9IHNrbF9jdXJzb3JfYWxsb2NhdGlvbihjb25maWcpOworCWN1cnNvcl9ibG9ja3MgPSBz a2xfY3Vyc29yX2FsbG9jYXRpb24obnVtX2FjdGl2ZSk7CiAJZGRiLT5wbGFuZVtwaXBlXVtQTEFO RV9DVVJTT1JdLnN0YXJ0ID0gYWxsb2MtPmVuZCAtIGN1cnNvcl9ibG9ja3M7CiAJZGRiLT5wbGFu ZVtwaXBlXVtQTEFORV9DVVJTT1JdLmVuZCA9IGFsbG9jLT5lbmQ7CiAKQEAgLTMwODgsMjEgKzMx NDIsNTUgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUsCiAJYWxsb2MtPmVuZCAtPSBjdXJzb3JfYmxvY2tzOwogCiAJLyogMS4gQWxsb2NhdGUg dGhlIG1pbmludW0gcmVxdWlyZWQgYmxvY2tzIGZvciBlYWNoIGFjdGl2ZSBwbGFuZSAqLwotCWZv cl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9wbGFuZSkg ewotCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9ICZpbnRlbF9wbGFuZS0+YmFzZTsKLQkJc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZS0+c3RhdGUtPmZiOwotCQlpbnQgaWQgPSBz a2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOworCS8qCisJICogVE9ETzogUmVtb3ZlIHN1cHBv cnQgZm9yIGFscmVhZHktY29tbWl0dGVkIHN0YXRlIG9uY2Ugd2UKKwkgKiBvbmx5IGFsbG9jYXRl IEREQiBvbiBpbi1mbGlnaHQgc3RhdGVzLgorCSAqLworCWlmIChzdGF0ZSkgeworCQlmb3JfZWFj aF9wbGFuZV9pbl9zdGF0ZShzdGF0ZSwgcGxhbmUsIHBzdGF0ZSwgaSkgeworCQkJaW50ZWxfcGxh bmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7CisJCQlpZCA9IHNrbF93bV9wbGFuZV9pZChpbnRl bF9wbGFuZSk7CiAKLQkJaWYgKCF0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpLT52 aXNpYmxlKQotCQkJY29udGludWU7CisJCQlpZiAoaW50ZWxfcGxhbmUtPnBpcGUgIT0gcGlwZSkK KwkJCQljb250aW51ZTsKIAotCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfQ1VS U09SKQotCQkJY29udGludWU7CisJCQlpZiAoIXRvX2ludGVsX3BsYW5lX3N0YXRlKHBzdGF0ZSkt PnZpc2libGUpIHsKKwkJCQltaW5pbXVtW2lkXSA9IDA7CisJCQkJeV9taW5pbXVtW2lkXSA9IDA7 CisJCQkJY29udGludWU7CisJCQl9CisJCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZ UEVfQ1VSU09SKSB7CisJCQkJbWluaW11bVtpZF0gPSAwOworCQkJCXlfbWluaW11bVtpZF0gPSAw OworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQltaW5pbXVtW2lkXSA9IDg7CisJCQlpZiAocHN0 YXRlLT5mYi0+cGl4ZWxfZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMikKKwkJCQl5X21pbmltdW1b aWRdID0gODsKKwkJCWVsc2UKKwkJCQl5X21pbmltdW1baWRdID0gMDsKKwkJfQorCX0gZWxzZSB7 CisJCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9w bGFuZSkgeworCQkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSAmaW50ZWxfcGxhbmUtPmJhc2U7 CisJCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHBsYW5lLT5zdGF0ZS0+ZmI7CisJCQlp bnQgaWQgPSBza2xfd21fcGxhbmVfaWQoaW50ZWxfcGxhbmUpOworCisJCQlpZiAoIXRvX2ludGVs X3BsYW5lX3N0YXRlKHBsYW5lLT5zdGF0ZSktPnZpc2libGUpCisJCQkJY29udGludWU7CisKKwkJ CWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCisJCQkJY29udGludWU7 CisKKwkJCW1pbmltdW1baWRdID0gODsKKwkJCXlfbWluaW11bVtpZF0gPSAoZmItPnBpeGVsX2Zv cm1hdCA9PSBEUk1fRk9STUFUX05WMTIpID8gOCA6IDA7CisJCX0KKwl9CiAKLQkJbWluaW11bVtp ZF0gPSA4OwotCQlhbGxvY19zaXplIC09IG1pbmltdW1baWRdOwotCQl5X21pbmltdW1baWRdID0g KGZiLT5waXhlbF9mb3JtYXQgPT0gRFJNX0ZPUk1BVF9OVjEyKSA/IDggOiAwOwotCQlhbGxvY19z aXplIC09IHlfbWluaW11bVtpZF07CisJZm9yIChpID0gMDsgaSA8IFBMQU5FX0NVUlNPUjsgaSsr KSB7CisJCWFsbG9jX3NpemUgLT0gbWluaW11bVtpXTsKKwkJYWxsb2Nfc2l6ZSAtPSB5X21pbmlt dW1baV07CiAJfQogCiAJLyoKQEAgLTMxMTMsMjEgKzMyMDEsMTQgQEAgc2tsX2FsbG9jYXRlX3Bp cGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJICovCiAJdG90YWxfZGF0 YV9yYXRlID0gc2tsX2dldF90b3RhbF9yZWxhdGl2ZV9kYXRhX3JhdGUoY3N0YXRlKTsKIAlpZiAo dG90YWxfZGF0YV9yYXRlID09IDApCi0JCXJldHVybjsKKwkJcmV0dXJuIDA7CiAKIAlzdGFydCA9 IGFsbG9jLT5zdGFydDsKIAlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldiwgaW50ZWxf Y3J0YywgaW50ZWxfcGxhbmUpIHsKLQkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSAmaW50ZWxf cGxhbmUtPmJhc2U7Ci0JCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzdGF0ZSA9IGludGVsX3Bs YW5lLT5iYXNlLnN0YXRlOwogCQl1bnNpZ25lZCBpbnQgZGF0YV9yYXRlLCB5X2RhdGFfcmF0ZTsK IAkJdWludDE2X3QgcGxhbmVfYmxvY2tzLCB5X3BsYW5lX2Jsb2NrcyA9IDA7CiAJCWludCBpZCA9 IHNrbF93bV9wbGFuZV9pZChpbnRlbF9wbGFuZSk7CiAKLQkJaWYgKCF0b19pbnRlbF9wbGFuZV9z dGF0ZShwc3RhdGUpLT52aXNpYmxlKQotCQkJY29udGludWU7Ci0JCWlmIChwbGFuZS0+dHlwZSA9 PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpCi0JCQljb250aW51ZTsKLQogCQlkYXRhX3JhdGUgPSBj c3RhdGUtPndtLnNrbC5wbGFuZV9kYXRhX3JhdGVbaWRdOwogCiAJCS8qCkBAIC0zMTM5LDggKzMy MjAsMTEgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpj c3RhdGUsCiAJCXBsYW5lX2Jsb2NrcyArPSBkaXZfdTY0KCh1aW50NjRfdClhbGxvY19zaXplICog ZGF0YV9yYXRlLAogCQkJCQl0b3RhbF9kYXRhX3JhdGUpOwogCi0JCWRkYi0+cGxhbmVbcGlwZV1b aWRdLnN0YXJ0ID0gc3RhcnQ7Ci0JCWRkYi0+cGxhbmVbcGlwZV1baWRdLmVuZCA9IHN0YXJ0ICsg cGxhbmVfYmxvY2tzOworCQkvKiBMZWF2ZSBkaXNhYmxlZCBwbGFuZXMgYXQgKDAsMCkgKi8KKwkJ aWYgKGRhdGFfcmF0ZSkgeworCQkJZGRiLT5wbGFuZVtwaXBlXVtpZF0uc3RhcnQgPSBzdGFydDsK KwkJCWRkYi0+cGxhbmVbcGlwZV1baWRdLmVuZCA9IHN0YXJ0ICsgcGxhbmVfYmxvY2tzOworCQl9 CiAKIAkJc3RhcnQgKz0gcGxhbmVfYmxvY2tzOwogCkBAIC0zMTUzLDEyICszMjM3LDE1IEBAIHNr bF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCQl5 X3BsYW5lX2Jsb2NrcyArPSBkaXZfdTY0KCh1aW50NjRfdClhbGxvY19zaXplICogeV9kYXRhX3Jh dGUsCiAJCQkJCXRvdGFsX2RhdGFfcmF0ZSk7CiAKLQkJZGRiLT55X3BsYW5lW3BpcGVdW2lkXS5z dGFydCA9IHN0YXJ0OwotCQlkZGItPnlfcGxhbmVbcGlwZV1baWRdLmVuZCA9IHN0YXJ0ICsgeV9w bGFuZV9ibG9ja3M7CisJCWlmICh5X2RhdGFfcmF0ZSkgeworCQkJZGRiLT55X3BsYW5lW3BpcGVd W2lkXS5zdGFydCA9IHN0YXJ0OworCQkJZGRiLT55X3BsYW5lW3BpcGVdW2lkXS5lbmQgPSBzdGFy dCArIHlfcGxhbmVfYmxvY2tzOworCQl9CiAKIAkJc3RhcnQgKz0geV9wbGFuZV9ibG9ja3M7CiAJ fQogCisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyB1aW50MzJfdCBza2xfcGlwZV9waXhlbF9yYXRl KGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjb25maWcpCkBAIC0zNjQ5LDcgKzM3MzYs NyBAQCBzdGF0aWMgYm9vbCBza2xfdXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRj LAogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK IAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShj cnRjLT5zdGF0ZSk7CiAKLQlza2xfYWxsb2NhdGVfcGlwZV9kZGIoY3N0YXRlLCBkZGIpOworCVdB Uk5fT04oc2tsX2FsbG9jYXRlX3BpcGVfZGRiKGNzdGF0ZSwgZGRiKSAhPSAwKTsKIAlza2xfYnVp bGRfcGlwZV93bShjc3RhdGUsIGRkYiwgcGlwZV93bSk7CiAKIAlpZiAoIW1lbWNtcCgmaW50ZWxf Y3J0Yy0+d20uYWN0aXZlLnNrbCwgcGlwZV93bSwgc2l6ZW9mKCpwaXBlX3dtKSkpCi0tIAoyLjEu NAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==