From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Kumar, Mahesh" Subject: [PATCH v3 3/9] drm/i915/skl: New ddb allocation algorithm Date: Fri, 9 Sep 2016 13:31:00 +0530 Message-ID: <20160909080106.17506-4-mahesh1.kumar@intel.com> References: <20160909080106.17506-1-mahesh1.kumar@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id A7D326E726 for ; Fri, 9 Sep 2016 07:57:36 +0000 (UTC) In-Reply-To: <20160909080106.17506-1-mahesh1.kumar@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 Cc: paulo.r.zanoni@intel.com List-Id: intel-gfx@lists.freedesktop.org RnJvbTogTWFoZXNoIEt1bWFyIDxtYWhlc2gxLmt1bWFyQGludGVsLmNvbT4KClRoaXMgcGF0Y2gg aW1wbGVtZW50cyBuZXcgRERCIGFsbG9jYXRpb24gYWxnb3JpdGhtIGFzIHBlciBIVyB0ZWFtCnN1 Z2dlc3Rpb24uIFRoaXMgYWxnbyB0YWtlY2FyZSBvZiBzY2VuYXJpbyB3aGVyZSB3ZSBhbGxvY2F0 ZSBsZXNzIEREQgpmb3IgdGhlIHBsYW5lcyB3aXRoIGxvd2VyIHJlbGF0aXZlIHBpeGVsIHJhdGUs IGJ1dCB0aGV5IHJlcXVpcmUgbW9yZSBEREIKdG8gd29yay4KSXQgYWxzbyB0YWtlcyBjYXJlIG9m IGVuYWJsaW5nIHNhbWUgd2F0ZXJtYXJrIGxldmVsIGZvciBlYWNoCnBsYW5lLCBmb3IgZWZmaWNp ZW50IHBvd2VyIHNhdmluZy4KCkNoYW5nZXMgc2luY2UgdjE6CiAtIFJlYmFzZSBvbiB0b3Agb2Yg UGF1bG8ncyBwYXRjaCBzZXJpZXMKClNpZ25lZC1vZmYtYnk6IE1haGVzaCBLdW1hciA8bWFoZXNo MS5rdW1hckBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyB8 IDEyOSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgNjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMKaW5kZXggY2ZkOWI3ZDEuLjdjNzBlMDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpA QCAtMzM0OCw2ICszMzQ4LDcgQEAgc2tsX2RkYl9taW5fYWxsb2MoY29uc3Qgc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAqcHN0YXRlLAogCiBzdGF0aWMgaW50CiBza2xfYWxsb2NhdGVfcGlwZV9kZGIo c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKKwkJICAgICAgc3RydWN0IHNrbF9waXBl X3dtICpwaXBlX3dtLAogCQkgICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgLyog b3V0ICovKQogewogCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNzdGF0ZS0+YmFz ZS5zdGF0ZTsKQEAgLTMzNjMsOCArMzM2NCwxMSBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAl1aW50MTZfdCAqbWluaW11bSA9IGNzdGF0 ZS0+d20uc2tsLm1pbmltdW1fYmxvY2tzOwogCXVpbnQxNl90ICp5X21pbmltdW0gPSBjc3RhdGUt PndtLnNrbC5taW5pbXVtX3lfYmxvY2tzOwogCXVuc2lnbmVkIGludCB0b3RhbF9kYXRhX3JhdGU7 CisJdWludDE2X3QgdG90YWxfbWluX2Jsb2NrcyA9IDA7CisJdWludDE2X3QgdG90YWxfbGV2ZWxf ZGRiID0gMDsKIAlpbnQgbnVtX2FjdGl2ZTsKLQlpbnQgaWQsIGk7CisJaW50IG1heF9sZXZlbCwg bGV2ZWw7CisJaW50IGlkLCBpLCByZXQgPSAwOwogCiAJaWYgKFdBUk5fT04oIXN0YXRlKSkKIAkJ cmV0dXJuIDA7CkBAIC0zMzgwLDYgKzMzODQsNyBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAlhbGxvY19zaXplID0gc2tsX2RkYl9lbnRy eV9zaXplKGFsbG9jKTsKIAlpZiAoYWxsb2Nfc2l6ZSA9PSAwKSB7CiAJCW1lbXNldChkZGItPnBs YW5lW3BpcGVdLCAwLCBzaXplb2YoZGRiLT5wbGFuZVtwaXBlXSkpOworCQltZW1zZXQoZGRiLT55 X3BsYW5lW3BpcGVdLCAwLCBzaXplb2YoZGRiLT55X3BsYW5lW3BpcGVdKSk7CiAJCXJldHVybiAw OwogCX0KIApAQCAtMzQxMywxOSArMzQxOCw0MiBAQCBza2xfYWxsb2NhdGVfcGlwZV9kZGIoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgUExB TkVfQ1VSU09SOyBpKyspIHsKLQkJYWxsb2Nfc2l6ZSAtPSBtaW5pbXVtW2ldOwotCQlhbGxvY19z aXplIC09IHlfbWluaW11bVtpXTsKKwkJdG90YWxfbWluX2Jsb2NrcyArPSBtaW5pbXVtW2ldOwor CQl0b3RhbF9taW5fYmxvY2tzICs9IHlfbWluaW11bVtpXTsKIAl9CiAKLQkvKgotCSAqIDIuIERp c3RyaWJ1dGUgdGhlIHJlbWFpbmluZyBzcGFjZSBpbiBwcm9wb3J0aW9uIHRvIHRoZSBhbW91bnQg b2YKLQkgKiBkYXRhIGVhY2ggcGxhbmUgbmVlZHMgdG8gZmV0Y2ggZnJvbSBtZW1vcnkuCi0JICoK LQkgKiBGSVhNRTogd2UgbWF5IG5vdCBhbGxvY2F0ZSBldmVyeSBzaW5nbGUgYmxvY2sgaGVyZS4K LQkgKi8KKwlmb3IgKGxldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXYpOyBsZXZlbCA+PSAwOyBs ZXZlbC0tKSB7CisJCXRvdGFsX2xldmVsX2RkYiA9IDA7CisJCWZvciAoaSA9IDA7IGkgPCBQTEFO RV9DVVJTT1I7IGkrKykgeworCQkJLyoKKwkJCSAqIFRPRE86IFdlIHNob3VsZCBjYWxjdWxhdGUg d2F0ZXJtYXJrIHZhbHVlcyBmb3IgWS9VVgorCQkJICogcGxhbmUgYm90aCBpbiBjYXNlIG9mIE5W MTIgZm9ybWF0IGFuZCB1c2UgYm90aCB2YWx1ZXMKKwkJCSAqIGZvciBkZGIgY2FsY3VsYXRpb24s IEFzIE5WMTIgaXMgZGlzYWJsZWQgYXMgb2Ygbm93LgorCQkJICogdXNpbmcgb25seSBzaW5nbGUg cGxhbmUgdmFsdWUgaGVyZS4KKwkJCSAqLworCQkJdWludDE2X3QgbWluID0gbWluaW11bVtpXSAr IHlfbWluaW11bVtpXTsKKwkJCXVpbnQxNl90IHBsYW5lX2xldmVsX2RkYl93bSA9CisJCQkJbWF4 KHBpcGVfd20tPndtW2xldmVsXS5wbGFuZV9yZXNfYltpXSwgbWluKTsKKwkJCXRvdGFsX2xldmVs X2RkYiArPSBwbGFuZV9sZXZlbF9kZGJfd207CisJCX0KKworCQlpZiAodG90YWxfbGV2ZWxfZGRi IDw9IGFsbG9jX3NpemUpCisJCQlicmVhazsKKwl9CisKKwlpZiAoKGxldmVsIDwgMCkgfHwgKHRv dGFsX21pbl9ibG9ja3MgPiBhbGxvY19zaXplKSkgeworCQlEUk1fREVCVUdfS01TKCJSZXF1ZXN0 ZWQgZGlzcGxheSBjb25maWd1cmF0aW9uIGV4Y2VlZHMgc3lzdGVtIEREQiBsaW1pdGF0aW9ucyIp OworCQlEUk1fREVCVUdfS01TKCJtaW5pbXVtIHJlcXVpcmVkICVkLyVkXG4iLCAobGV2ZWwgPCAw KSA/CisJCQkJdG90YWxfbGV2ZWxfZGRiIDogdG90YWxfbWluX2Jsb2NrcywgYWxsb2Nfc2l6ZSk7 CisJCXJldCA9IC1FSU5WQUw7CisJCWdvdG8gZXhpdDsKKwl9CisJbWF4X2xldmVsID0gbGV2ZWw7 CisJYWxsb2Nfc2l6ZSAtPSB0b3RhbF9sZXZlbF9kZGI7CisKIAl0b3RhbF9kYXRhX3JhdGUgPSBz a2xfZ2V0X3RvdGFsX3JlbGF0aXZlX2RhdGFfcmF0ZShjc3RhdGUpOwogCWlmICh0b3RhbF9kYXRh X3JhdGUgPT0gMCkKLQkJcmV0dXJuIDA7CisJCWdvdG8gZXhpdDsKIAogCXN0YXJ0ID0gYWxsb2Mt PnN0YXJ0OwogCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBp bnRlbF9wbGFuZSkgewpAQCAtMzQ0MCw3ICszNDY4LDggQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRi KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJCSAqIHByb21vdGUgdGhlIGV4cHJl c3Npb24gdG8gNjQgYml0cyB0byBhdm9pZCBvdmVyZmxvd2luZywgdGhlCiAJCSAqIHJlc3VsdCBp cyA8IGF2YWlsYWJsZSBhcyBkYXRhX3JhdGUgLyB0b3RhbF9kYXRhX3JhdGUgPCAxCiAJCSAqLwot CQlwbGFuZV9ibG9ja3MgPSBtaW5pbXVtW2lkXTsKKwkJcGxhbmVfYmxvY2tzID0gbWF4KHBpcGVf d20tPndtW21heF9sZXZlbF0ucGxhbmVfcmVzX2JbaWRdLAorCQkJCQltaW5pbXVtW2lkXSk7CiAJ CXBsYW5lX2Jsb2NrcyArPSBkaXZfdTY0KCh1aW50NjRfdClhbGxvY19zaXplICogZGF0YV9yYXRl LAogCQkJCQl0b3RhbF9kYXRhX3JhdGUpOwogCkBAIC0zNDU0LDYgKzM0ODMsOCBAQCBza2xfYWxs b2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAogCQkvKgog CQkgKiBhbGxvY2F0aW9uIGZvciB5X3BsYW5lIHBhcnQgb2YgcGxhbmFyIGZvcm1hdDoKKwkJICog VE9ETzogT25jZSB3ZSBzdGFydCBjYWxjdWxhdGluZyB3YXRlcm1hcmsgdmFsdWVzIGZvciBZL1VW CisJCSAqIHBsYW5lIGJvdGggY29uc2lkZXIgaXQgZm9yIGluaXRpYWwgYWxsb3dlZCB3bSBibG9j a3MuCiAJCSAqLwogCQl5X2RhdGFfcmF0ZSA9IGNzdGF0ZS0+d20uc2tsLnBsYW5lX3lfZGF0YV9y YXRlW2lkXTsKIApAQCAtMzQ2Nyw5ICszNDk4LDIyIEBAIHNrbF9hbGxvY2F0ZV9waXBlX2RkYihz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCQl9CiAKIAkJc3RhcnQgKz0geV9wbGFu ZV9ibG9ja3M7CisKKwkJLyoKKwkJICogTm93IGVuYWJsZSBhbGwgbGV2ZWxzIGluIFdNIHN0cnVj dHVyZSB3aGljaCBjYW4gYmUgZW5hYmxlZAorCQkgKiB1c2luZyBjdXJyZW50IEREQiBhbGxvY2F0 aW9uCisJCSAqLworCQlmb3IgKGkgPSBpbGtfd21fbWF4X2xldmVsKGRldik7IGkgPiAwOyBpLS0p IHsKKwkJCWlmIChpID4gbWF4X2xldmVsIHx8IHBpcGVfd20tPndtW2ldLnBsYW5lX3Jlc19sW2lk XSA+IDMxCisJCQkJCXx8IHBpcGVfd20tPndtW2ldLnBsYW5lX3Jlc19iW2lkXSA9PSAwKQorCQkJ CXBpcGVfd20tPndtW2ldLnBsYW5lX2VuW2lkXSA9IGZhbHNlOworCQkJZWxzZQorCQkJCXBpcGVf d20tPndtW2ldLnBsYW5lX2VuW2lkXSA9IHRydWU7CisJCX0KIAl9CiAKLQlyZXR1cm4gMDsKK2V4 aXQ6CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHVpbnQzMl90IHNrbF9waXBlX3BpeGVsX3Jh dGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNvbmZpZykKQEAgLTM1NDAsNyArMzU4 NCw2IEBAIHN0YXRpYyB1aW50MzJfdCBza2xfYWRqdXN0ZWRfcGxhbmVfcGl4ZWxfcmF0ZShjb25z dCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0CiBzdGF0aWMgaW50IHNrbF9jb21wdXRlX3Bs YW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCQkJCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0 ZSAqaW50ZWxfcHN0YXRlLAotCQkJCXVpbnQxNl90IGRkYl9hbGxvY2F0aW9uLAogCQkJCWludCBs ZXZlbCwKIAkJCQlzdHJ1Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd20pCiB7CkBAIC0zNTU5LDEyICsz NjAyLDkgQEAgc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJc3RydWN0IHNrbF93bV9sZXZlbCAqcmVzdWx0ID0g JnBpcGVfd20tPndtW2xldmVsXTsKIAl1aW50MTZfdCAqb3V0X2Jsb2NrcyA9ICZyZXN1bHQtPnBs YW5lX3Jlc19iW2lkXTsKIAl1aW50OF90ICpvdXRfbGluZXMgPSAmcmVzdWx0LT5wbGFuZV9yZXNf bFtpZF07Ci0JYm9vbCAqZW5hYmxlZCA9ICZyZXN1bHQtPnBsYW5lX2VuW2lkXTsKIAotCWlmIChs YXRlbmN5ID09IDAgfHwgIWNzdGF0ZS0+YmFzZS5hY3RpdmUgfHwgIWludGVsX3BzdGF0ZS0+YmFz ZS52aXNpYmxlKSB7Ci0JCSplbmFibGVkID0gZmFsc2U7CisJaWYgKGxhdGVuY3kgPT0gMCB8fCAh Y3N0YXRlLT5iYXNlLmFjdGl2ZSB8fCAhaW50ZWxfcHN0YXRlLT5iYXNlLnZpc2libGUpCiAJCXJl dHVybiAwOwotCX0KIAogCXdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoJmludGVsX3BzdGF0ZS0+YmFz ZS5zcmMpID4+IDE2OwogCWhlaWdodCA9IGRybV9yZWN0X2hlaWdodCgmaW50ZWxfcHN0YXRlLT5i YXNlLnNyYykgPj4gMTY7CkBAIC0zNjQ5LDU0ICszNjg5LDI3IEBAIHN0YXRpYyBpbnQgc2tsX2Nv bXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAog CQl9CiAJfQogCi0JaWYgKHJlc19ibG9ja3MgPj0gZGRiX2FsbG9jYXRpb24gfHwgcmVzX2xpbmVz ID4gMzEpIHsKLQkJKmVuYWJsZWQgPSBmYWxzZTsKLQotCQkvKgotCQkgKiBJZiB0aGVyZSBhcmUg bm8gdmFsaWQgbGV2ZWwgMCB3YXRlcm1hcmtzLCB0aGVuIHdlIGNhbid0Ci0JCSAqIHN1cHBvcnQg dGhpcyBkaXNwbGF5IGNvbmZpZ3VyYXRpb24uCi0JCSAqLwotCQlpZiAobGV2ZWwpIHsKLQkJCXJl dHVybiAwOwotCQl9IGVsc2UgewotCQkJRFJNX0RFQlVHX0tNUygiUmVxdWVzdGVkIGRpc3BsYXkg Y29uZmlndXJhdGlvbiBleGNlZWRzIHN5c3RlbSB3YXRlcm1hcmsgbGltaXRhdGlvbnNcbiIpOwot CQkJRFJNX0RFQlVHX0tNUygiUGxhbmUgJWQuJWQ6IGJsb2NrcyByZXF1aXJlZCA9ICV1LyV1LCBs aW5lcyByZXF1aXJlZCA9ICV1LzMxXG4iLAotCQkJCSAgICAgIHRvX2ludGVsX2NydGMoY3N0YXRl LT5iYXNlLmNydGMpLT5waXBlLAotCQkJCSAgICAgIHNrbF93bV9wbGFuZV9pZCh0b19pbnRlbF9w bGFuZShwc3RhdGUtPnBsYW5lKSksCi0JCQkJICAgICAgcmVzX2Jsb2NrcywgZGRiX2FsbG9jYXRp b24sIHJlc19saW5lcyk7Ci0KLQkJCXJldHVybiAtRUlOVkFMOwotCQl9Ci0JfQotCiAJKm91dF9i bG9ja3MgPSByZXNfYmxvY2tzOwogCSpvdXRfbGluZXMgPSByZXNfbGluZXM7Ci0JKmVuYWJsZWQg PSB0cnVlOwogCiAJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQKIHNrbF9jb21wdXRlX3dtX2xl dmVsKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKLQkJICAgICBzdHJ1 Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIsCiAJCSAgICAgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNzdGF0ZSwKIAkJICAgICBpbnQgbGV2ZWwsCiAJCSAgICAgc3RydWN0IHNrbF9waXBlX3dt ICpwaXBlX3dtKQogewogCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IGNzdGF0ZS0+ YmFzZS5zdGF0ZTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3N0YXRlLT5iYXNlLmNydGMpOwogCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwogCXN0cnVj dCBpbnRlbF9wbGFuZSAqaW50ZWxfcGxhbmU7CiAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpp bnRlbF9wc3RhdGU7Ci0JdWludDE2X3QgZGRiX2Jsb2NrczsKLQllbnVtIHBpcGUgcGlwZSA9IGlu dGVsX2NydGMtPnBpcGU7CiAJaW50IHJldDsKIAogCWZvcl9lYWNoX2ludGVsX3BsYW5lX21hc2so JmRldl9wcml2LT5kcm0sCiAJCQkJICBpbnRlbF9wbGFuZSwKIAkJCQkgIGNzdGF0ZS0+YmFzZS5w bGFuZV9tYXNrKSB7Ci0JCWludCBpID0gc2tsX3dtX3BsYW5lX2lkKGludGVsX3BsYW5lKTsKLQog CQlwbGFuZSA9ICZpbnRlbF9wbGFuZS0+YmFzZTsKIAkJaW50ZWxfcHN0YXRlID0gTlVMTDsKIAkJ aWYgKHN0YXRlKQpAQCAtMzcyMiwxMiArMzczNSw5IEBAIHNrbF9jb21wdXRlX3dtX2xldmVsKGNv bnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCQlXQVJOX09OKCFpbnRl bF9wc3RhdGUtPmJhc2UuZmIpOwogCi0JCWRkYl9ibG9ja3MgPSBza2xfZGRiX2VudHJ5X3NpemUo JmRkYi0+cGxhbmVbcGlwZV1baV0pOwotCiAJCXJldCA9IHNrbF9jb21wdXRlX3BsYW5lX3dtKGRl dl9wcml2LAogCQkJCQkgICBjc3RhdGUsCiAJCQkJCSAgIGludGVsX3BzdGF0ZSwKLQkJCQkJICAg ZGRiX2Jsb2NrcywKIAkJCQkJICAgbGV2ZWwsCiAJCQkJCSAgIHBpcGVfd20pOwogCQlpZiAocmV0 KQpAQCAtMzc4NCwxMSArMzc5NCwxNSBAQCBzdGF0aWMgaW50IHNrbF9idWlsZF9waXBlX3dtKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJbWVtc2V0KHBpcGVfd20sIDAsIHNpemVv ZigqcGlwZV93bSkpOwogCiAJZm9yIChsZXZlbCA9IDA7IGxldmVsIDw9IG1heF9sZXZlbDsgbGV2 ZWwrKykgewotCQlyZXQgPSBza2xfY29tcHV0ZV93bV9sZXZlbChkZXZfcHJpdiwgZGRiLCBjc3Rh dGUsCisJCXJldCA9IHNrbF9jb21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBjc3RhdGUsCiAJCQkJ CSAgIGxldmVsLCBwaXBlX3dtKTsKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAJfQorCXJl dCA9IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihjc3RhdGUsIHBpcGVfd20sIGRkYik7CisJaWYgKHJl dCkKKwkJcmV0dXJuIHJldDsKKwogCXBpcGVfd20tPmxpbmV0aW1lID0gc2tsX2NvbXB1dGVfbGlu ZXRpbWVfd20oY3N0YXRlKTsKIAogCXNrbF9jb21wdXRlX3RyYW5zaXRpb25fd20oY3N0YXRlLCAm cGlwZV93bS0+dHJhbnNfd20pOwpAQCAtMzk3NiwxMyArMzk5MCwxMiBAQCBwaXBlc19tb2RpZmll ZChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB9CiAKIHN0YXRpYyBpbnQKLXNrbF9j b21wdXRlX2RkYihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCitza2xfaW5jbHVkZV9h ZmZlY3RlZF9waXBlcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmlu dGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKIAlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YzsKLQlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgPSAmaW50 ZWxfc3RhdGUtPndtX3Jlc3VsdHMuZGRiOwogCXVpbnQzMl90IHJlYWxsb2NfcGlwZXMgPSBwaXBl c19tb2RpZmllZChzdGF0ZSk7CiAJaW50IHJldDsKIApAQCAtNDAzNSwxMCArNDA0OCw2IEBAIHNr bF9jb21wdXRlX2RkYihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCWlmIChJU19F UlIoY3N0YXRlKSkKIAkJCXJldHVybiBQVFJfRVJSKGNzdGF0ZSk7CiAKLQkJcmV0ID0gc2tsX2Fs bG9jYXRlX3BpcGVfZGRiKGNzdGF0ZSwgZGRiKTsKLQkJaWYgKHJldCkKLQkJCXJldHVybiByZXQ7 Ci0KIAkJcmV0ID0gZHJtX2F0b21pY19hZGRfYWZmZWN0ZWRfcGxhbmVzKHN0YXRlLCAmaW50ZWxf Y3J0Yy0+YmFzZSk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwpAQCAtNDA5MiwxOSArNDEw MSwxNSBAQCBza2xfY29tcHV0ZV93bShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJ LyogQ2xlYXIgYWxsIGRpcnR5IGZsYWdzICovCiAJcmVzdWx0cy0+ZGlydHlfcGlwZXMgPSAwOwog Ci0JcmV0ID0gc2tsX2NvbXB1dGVfZGRiKHN0YXRlKTsKKwlyZXQgPSBza2xfaW5jbHVkZV9hZmZl Y3RlZF9waXBlcyhzdGF0ZSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAogCS8qCiAJICog Q2FsY3VsYXRlIFdNJ3MgZm9yIGFsbCBwaXBlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoaXMgdHJhbnNh Y3Rpb24uCi0JICogTm90ZSB0aGF0IHRoZSBEREIgYWxsb2NhdGlvbiBhYm92ZSBtYXkgaGF2ZSBh ZGRlZCBtb3JlIENSVEMncyB0aGF0Ci0JICogd2VyZW4ndCBvdGhlcndpc2UgYmVpbmcgbW9kaWZp ZWQgKGFuZCBzZXQgYml0cyBpbiBkaXJ0eV9waXBlcykgaWYKLQkgKiBwaXBlIGFsbG9jYXRpb25z IGhhZCB0byBjaGFuZ2UuCi0JICoKLQkgKiBGSVhNRTogIE5vdyB0aGF0IHdlJ3JlIGRvaW5nIHRo aXMgaW4gdGhlIGF0b21pYyBjaGVjayBwaGFzZSwgd2UKLQkgKiBzaG91bGQgYWxsb3cgc2tsX3Vw ZGF0ZV9waXBlX3dtKCkgdG8gcmV0dXJuIGZhaWx1cmUgaW4gY2FzZXMgd2hlcmUKLQkgKiBubyBz dWl0YWJsZSB3YXRlcm1hcmsgdmFsdWVzIGNhbiBiZSBmb3VuZC4KKwkgKiBOb3RlIHRoYXQgYWZm ZWN0ZWQgcGlwZSBjYWxjdWxhdGlvbiBhYm92ZSBtYXkgaGF2ZSBhZGRlZCBtb3JlCisJICogQ1JU QydzIHRoYXQgd2VyZW4ndCBvdGhlcndpc2UgYmVpbmcgbW9kaWZpZWQgKGFuZCBzZXQgYml0cyBp bgorCSAqIGRpcnR5X3BpcGVzKSBpZiBwaXBlIGFsbG9jYXRpb25zIGhhZCB0byBjaGFuZ2UuCiAJ ICovCiAJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3N0YXRlLCBpKSB7CiAJ CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLS0g CjIuOC4zCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK