From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mahesh Kumar Subject: [PATCH 7/8] drm/i915/skl: New ddb allocation algorithm Date: Tue, 28 Feb 2017 17:01:42 +0530 Message-ID: <20170228113143.8280-8-mahesh1.kumar@intel.com> References: <20170228113143.8280-1-mahesh1.kumar@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 ESMTPS id C3F706E6D1 for ; Tue, 28 Feb 2017 11:29:47 +0000 (UTC) In-Reply-To: <20170228113143.8280-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, maarten.lankhorst@intel.com List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBpbXBsZW1lbnRzIG5ldyBEREIgYWxsb2NhdGlvbiBhbGdvcml0aG0gYXMgcGVy IEhXIHRlYW0KcmVjb21tZW5kYXRpb24uIFRoaXMgYWxnbyB0YWtlY2FyZSBvZiBzY2VuYXJpbyB3 aGVyZSB3ZSBhbGxvY2F0ZSBsZXNzIEREQgpmb3IgdGhlIHBsYW5lcyB3aXRoIGxvd2VyIHJlbGF0 aXZlIHBpeGVsIHJhdGUsIGJ1dCB0aGV5IHJlcXVpcmUgbW9yZSBEREIKdG8gd29yay4KSXQgYWxz byB0YWtlcyBjYXJlIG9mIGVuYWJsaW5nIHNhbWUgd2F0ZXJtYXJrIGxldmVsIGZvciBlYWNoCnBs YW5lLCBmb3IgZWZmaWNpZW50IHBvd2VyIHNhdmluZy4KCkNoYW5nZXMgc2luY2UgdjE6CiAtIFJl YmFzZSBvbiB0b3Agb2YgUGF1bG8ncyBwYXRjaCBzZXJpZXMKCkNoYW5nZXMgc2luY2UgdjI6CiAt IEZpeCB0aGUgZm9yIGxvb3AgY29uZGl0aW9uIHRvIGVuYWJsZSBXTQoKQ2hhbmdlcyBzaW5jZSB2 MzoKIC0gRml4IGNyYXNoIGluIGN1cnNvciBpLWctdCByZXBvcnRlZCBieSBNYWFydGVuCiAtIFJl YmFzZSBhZnRlciBhZGRyZXNzaW5nIFBhdWxvJ3MgY29tbWVudHMKIC0gRmV3IG90aGVyIFVMVCBm aXhlcwpDaGFuZ2VzIHNpbmNlIHY0OgogLSBSZWJhc2Ugb24gZHJtLXRpcAogLSBBZGRlZCBzZXBh cmF0ZSBmdW5jdGlvbiB0byBlbmFibGUgV00gbGV2ZWxzCgpTaWduZWQtb2ZmLWJ5OiBNYWhlc2gg S3VtYXIgPG1haGVzaDEua3VtYXJAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BtLmMgfCAyNTEgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCspLCAxMDEgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggNTFhNDgzYzY4NTIxLi44NDk3OWIwYWY2ODQgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMzM2MiwxMyArMzM2Miw0MSBAQCBza2xfZGRiX2Nh bGNfbWluKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsIGludCBudW1fYWN0 aXZlLAogCW1pbmltdW1bUExBTkVfQ1VSU09SXSA9IHNrbF9jdXJzb3JfYWxsb2NhdGlvbihudW1f YWN0aXZlKTsKIH0KIAorc3RhdGljIHZvaWQKK3NrbF9lbmFibGVfcGxhbmVfd21fbGV2ZWxzKGNv bnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCSAgIHVpbnQxNl90IHBs YW5lX2RkYiwKKwkJCSAgIHVpbnQxNl90IG1heF9sZXZlbCwKKwkJCSAgIHN0cnVjdCBza2xfcGxh bmVfd20gKndtKQoreworCWludCBsZXZlbDsKKwkvKgorCSAqIE5vdyBlbmFibGUgYWxsIGxldmVs cyBpbiBXTSBzdHJ1Y3R1cmUgd2hpY2ggY2FuIGJlIGVuYWJsZWQKKwkgKiB1c2luZyBjdXJyZW50 IEREQiBhbGxvY2F0aW9uCisJICovCisJZm9yIChsZXZlbCA9IGlsa193bV9tYXhfbGV2ZWwoZGV2 X3ByaXYpOyBsZXZlbCA+PSAwOyBsZXZlbC0tKSB7CisJCXN0cnVjdCBza2xfd21fbGV2ZWwgKmxl dmVsX3dtID0gJndtLT53bVtsZXZlbF07CisKKwkJaWYgKGxldmVsID4gbWF4X2xldmVsIHx8IGxl dmVsX3dtLT5wbGFuZV9yZXNfYiA9PSAwCisJCQkJICAgICAgfHwgbGV2ZWxfd20tPnBsYW5lX3Jl c19sID49IDMxCisJCQkJICAgICAgfHwgbGV2ZWxfd20tPnBsYW5lX3Jlc19iID49IHBsYW5lX2Rk YikgeworCQkJbGV2ZWxfd20tPnBsYW5lX2VuID0gZmFsc2U7CisJCQlsZXZlbF93bS0+cGxhbmVf cmVzX2IgPSAwOworCQkJbGV2ZWxfd20tPnBsYW5lX3Jlc19sID0gMDsKKwkJfSBlbHNlIHsKKwkJ CWxldmVsX3dtLT5wbGFuZV9lbiA9IHRydWU7CisJCX0KKwl9Cit9CisKIHN0YXRpYyBpbnQKIHNr bF9hbGxvY2F0ZV9waXBlX2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAotCQkg ICAgICBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgLyogb3V0ICovKQorCQkgICAgICBz dHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpkZGIgLyogb3V0ICovLAorCQkgICAgICBzdHJ1Y3Qg c2tsX3BpcGVfd20gKnBpcGVfd20pCiB7CiAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl ID0gY3N0YXRlLT5iYXNlLnN0YXRlOwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+ YmFzZS5jcnRjOwogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAllbnVtIHBpcGUgcGlw ZSA9IGludGVsX2NydGMtPnBpcGU7CiAJc3RydWN0IHNrbF9kZGJfZW50cnkgKmFsbG9jID0gJmNz dGF0ZS0+d20uc2tsLmRkYjsKQEAgLTMzODEsNiArMzQwOSw4IEBAIHNrbF9hbGxvY2F0ZV9waXBl X2RkYihzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAogCXVuc2lnbmVkIHBsYW5lX2Rh dGFfcmF0ZVtJOTE1X01BWF9QTEFORVNdID0ge307CiAJdW5zaWduZWQgcGxhbmVfeV9kYXRhX3Jh dGVbSTkxNV9NQVhfUExBTkVTXSA9IHt9OwogCXVpbnQxNl90IHRvdGFsX21pbl9ibG9ja3MgPSAw OworCXVpbnQxNl90IHRvdGFsX2xldmVsX2RkYjsKKwlpbnQgbWF4X2xldmVsLCBsZXZlbDsKIAog CS8qIENsZWFyIHRoZSBwYXJ0aXRpb25pbmcgZm9yIGRpc2FibGVkIHBsYW5lcy4gKi8KIAltZW1z ZXQoZGRiLT5wbGFuZVtwaXBlXSwgMCwgc2l6ZW9mKGRkYi0+cGxhbmVbcGlwZV0pKTsKQEAgLTM0 MTksMTAgKzM0NDksNDMgQEAgc2tsX2FsbG9jYXRlX3BpcGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjc3RhdGUsCiAJCXJldHVybi1FSU5WQUw7CiAJfQogCi0JYWxsb2Nfc2l6ZSAtPSB0 b3RhbF9taW5fYmxvY2tzOwotCWRkYi0+cGxhbmVbcGlwZV1bUExBTkVfQ1VSU09SXS5zdGFydCA9 IGFsbG9jLT5lbmQgLSBtaW5pbXVtW1BMQU5FX0NVUlNPUl07CisJYWxsb2Nfc2l6ZSAtPSBtaW5p bXVtW1BMQU5FX0NVUlNPUl07CisJZGRiLT5wbGFuZVtwaXBlXVtQTEFORV9DVVJTT1JdLnN0YXJ0 ID0gYWxsb2MtPmVuZCAtCisJCQkJCQkJbWluaW11bVtQTEFORV9DVVJTT1JdOwogCWRkYi0+cGxh bmVbcGlwZV1bUExBTkVfQ1VSU09SXS5lbmQgPSBhbGxvYy0+ZW5kOwogCisJZm9yIChsZXZlbCA9 IGlsa193bV9tYXhfbGV2ZWwoZGV2X3ByaXYpOyBsZXZlbCA+PSAwOyBsZXZlbC0tKSB7CisJCXRv dGFsX2xldmVsX2RkYiA9IDA7CisJCWZvcl9lYWNoX3BsYW5lX2lkX29uX2NydGMoaW50ZWxfY3J0 YywgcGxhbmVfaWQpIHsKKwkJCS8qCisJCQkgKiBUT0RPOiBXZSBzaG91bGQgY2FsY3VsYXRlIHdh dGVybWFyayB2YWx1ZXMgZm9yIFkvVVYKKwkJCSAqIHBsYW5lIGJvdGggaW4gY2FzZSBvZiBOVjEy IGZvcm1hdCBhbmQgdXNlIGJvdGggdmFsdWVzCisJCQkgKiBmb3IgZGRiIGNhbGN1bGF0aW9uLiBO VjEyIGlzIGRpc2FibGVkIGFzIG9mIG5vdywgU28KKwkJCSAqIHVzaW5nIG9ubHkgc2luZ2xlL1VW IHBsYW5lIHZhbHVlIGhlcmUuCisJCQkgKi8KKwkJCXN0cnVjdCBza2xfcGxhbmVfd20gKndtID0g JnBpcGVfd20tPnBsYW5lc1twbGFuZV9pZF07CisJCQl1aW50MTZfdCBwbGFuZV9yZXNfYiA9IHdt LT53bVtsZXZlbF0ucGxhbmVfcmVzX2I7CisJCQl1aW50MTZfdCBtaW4gPSBtaW5pbXVtW3BsYW5l X2lkXSArIHlfbWluaW11bVtwbGFuZV9pZF07CisKKwkJCWlmIChwbGFuZV9pZCA9PSBQTEFORV9D VVJTT1IpCisJCQkJY29udGludWU7CisKKwkJCXRvdGFsX2xldmVsX2RkYiArPSBtYXgocGxhbmVf cmVzX2IsIG1pbik7CisJCX0KKworCQlpZiAodG90YWxfbGV2ZWxfZGRiIDw9IGFsbG9jX3NpemUp CisJCQlicmVhazsKKwl9CisKKwlpZiAoKGxldmVsIDwgMCkgfHwgKHRvdGFsX21pbl9ibG9ja3Mg PiBhbGxvY19zaXplKSkgeworCQlEUk1fREVCVUdfS01TKCJSZXF1ZXN0ZWQgZGlzcGxheSBjb25m aWd1cmF0aW9uIGV4Y2VlZHMgc3lzdGVtIEREQiBsaW1pdGF0aW9ucyIpOworCQlEUk1fREVCVUdf S01TKCJtaW5pbXVtIHJlcXVpcmVkICVkLyVkXG4iLCAobGV2ZWwgPCAwKSA/CisJCQkJdG90YWxf bGV2ZWxfZGRiIDogdG90YWxfbWluX2Jsb2NrcywgYWxsb2Nfc2l6ZSk7CisJCXJldHVybiAtRUlO VkFMOworCX0KKwltYXhfbGV2ZWwgPSBsZXZlbDsKKwlhbGxvY19zaXplIC09IHRvdGFsX2xldmVs X2RkYjsKKwogCS8qCiAJICogMi4gRGlzdHJpYnV0ZSB0aGUgcmVtYWluaW5nIHNwYWNlIGluIHBy b3BvcnRpb24gdG8gdGhlIGFtb3VudCBvZgogCSAqIGRhdGEgZWFjaCBwbGFuZSBuZWVkcyB0byBm ZXRjaCBmcm9tIG1lbW9yeS4KQEAgLTM0MzgsMTAgKzM1MDEsMTYgQEAgc2tsX2FsbG9jYXRlX3Bp cGVfZGRiKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJc3RhcnQgPSBhbGxvYy0+ c3RhcnQ7CiAJZm9yX2VhY2hfcGxhbmVfaWRfb25fY3J0YyhpbnRlbF9jcnRjLCBwbGFuZV9pZCkg ewogCQl1bnNpZ25lZCBpbnQgZGF0YV9yYXRlLCB5X2RhdGFfcmF0ZTsKLQkJdWludDE2X3QgcGxh bmVfYmxvY2tzLCB5X3BsYW5lX2Jsb2NrcyA9IDA7Ci0KLQkJaWYgKHBsYW5lX2lkID09IFBMQU5F X0NVUlNPUikKKwkJdWludDE2X3QgcGxhbmVfYmxvY2tzID0gMCwgeV9wbGFuZV9ibG9ja3M7CisJ CXN0cnVjdCBza2xfcGxhbmVfd20gKndtID0gJnBpcGVfd20tPnBsYW5lc1twbGFuZV9pZF07CisK KwkJaWYgKHBsYW5lX2lkID09IFBMQU5FX0NVUlNPUikgeworCQkJcGxhbmVfYmxvY2tzID0KKwkJ CQlza2xfZGRiX2VudHJ5X3NpemUoJmRkYi0+cGxhbmVbcGlwZV1bcGxhbmVfaWRdKTsKKwkJCXNr bF9lbmFibGVfcGxhbmVfd21fbGV2ZWxzKGRldl9wcml2LCBwbGFuZV9ibG9ja3MsCisJCQkJCQkg ICBtYXhfbGV2ZWwsIHdtKTsKIAkJCWNvbnRpbnVlOworCQl9CiAKIAkJZGF0YV9yYXRlID0gcGxh bmVfZGF0YV9yYXRlW3BsYW5lX2lkXTsKIApAQCAtMzQ1MCwzMyArMzUxOSwzNSBAQCBza2xfYWxs b2NhdGVfcGlwZV9kZGIoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAkJICogcHJv bW90ZSB0aGUgZXhwcmVzc2lvbiB0byA2NCBiaXRzIHRvIGF2b2lkIG92ZXJmbG93aW5nLCB0aGUK IAkJICogcmVzdWx0IGlzIDwgYXZhaWxhYmxlIGFzIGRhdGFfcmF0ZSAvIHRvdGFsX2RhdGFfcmF0 ZSA8IDEKIAkJICovCi0JCXBsYW5lX2Jsb2NrcyA9IG1pbmltdW1bcGxhbmVfaWRdOwotCQlwbGFu ZV9ibG9ja3MgKz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAqIGRhdGFfcmF0ZSwKLQkJ CQkJdG90YWxfZGF0YV9yYXRlKTsKIAogCQkvKiBMZWF2ZSBkaXNhYmxlZCBwbGFuZXMgYXQgKDAs MCkgKi8KIAkJaWYgKGRhdGFfcmF0ZSkgeworCQkJcGxhbmVfYmxvY2tzID0gbWluaW11bVtwbGFu ZV9pZF07CisJCQlwbGFuZV9ibG9ja3MgKz0gZGl2X3U2NCgodWludDY0X3QpYWxsb2Nfc2l6ZSAq CisJCQkJCWRhdGFfcmF0ZSwgdG90YWxfZGF0YV9yYXRlKTsKIAkJCWRkYi0+cGxhbmVbcGlwZV1b cGxhbmVfaWRdLnN0YXJ0ID0gc3RhcnQ7CiAJCQlkZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXS5l bmQgPSBzdGFydCArIHBsYW5lX2Jsb2NrczsKKwkJCXN0YXJ0ICs9IHBsYW5lX2Jsb2NrczsKIAkJ fQogCi0JCXN0YXJ0ICs9IHBsYW5lX2Jsb2NrczsKLQogCQkvKgogCQkgKiBhbGxvY2F0aW9uIGZv ciB5X3BsYW5lIHBhcnQgb2YgcGxhbmFyIGZvcm1hdDoKKwkJICogVE9ETzogT25jZSB3ZSBzdGFy dCBjYWxjdWxhdGluZyB3YXRlcm1hcmsgdmFsdWVzIGZvciBZL1VWCisJCSAqIHBsYW5lIGJvdGgg Y29uc2lkZXIgaXQgZm9yIGluaXRpYWwgYWxsb3dlZCB3bSBibG9ja3MuCiAJCSAqLwogCQl5X2Rh dGFfcmF0ZSA9IHBsYW5lX3lfZGF0YV9yYXRlW3BsYW5lX2lkXTsKIAotCQl5X3BsYW5lX2Jsb2Nr cyA9IHlfbWluaW11bVtwbGFuZV9pZF07Ci0JCXlfcGxhbmVfYmxvY2tzICs9IGRpdl91NjQoKHVp bnQ2NF90KWFsbG9jX3NpemUgKiB5X2RhdGFfcmF0ZSwKLQkJCQkJdG90YWxfZGF0YV9yYXRlKTsK LQogCQlpZiAoeV9kYXRhX3JhdGUpIHsKKwkJCXlfcGxhbmVfYmxvY2tzID0geV9taW5pbXVtW3Bs YW5lX2lkXTsKKwkJCXlfcGxhbmVfYmxvY2tzICs9IGRpdl91NjQoKHVpbnQ2NF90KWFsbG9jX3Np emUgKgorCQkJCQl5X2RhdGFfcmF0ZSwgdG90YWxfZGF0YV9yYXRlKTsKIAkJCWRkYi0+eV9wbGFu ZVtwaXBlXVtwbGFuZV9pZF0uc3RhcnQgPSBzdGFydDsKIAkJCWRkYi0+eV9wbGFuZVtwaXBlXVtw bGFuZV9pZF0uZW5kID0gc3RhcnQgKyB5X3BsYW5lX2Jsb2NrczsKIAkJfQotCi0JCXN0YXJ0ICs9 IHlfcGxhbmVfYmxvY2tzOworCQlza2xfZW5hYmxlX3BsYW5lX3dtX2xldmVscyhkZXZfcHJpdiwK KwkJCQkJICAgcGxhbmVfYmxvY2tzLAorCQkJCQkgICBtYXhfbGV2ZWwsCisJCQkJCSAgIHdtKTsK IAl9CiAKIAlyZXR1cm4gMDsKQEAgLTM1NjUsMTEgKzM2MzYsOSBAQCBzdGF0aWMgdWludDMyX3Qg c2tsX2FkanVzdGVkX3BsYW5lX3BpeGVsX3JhdGUoY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNzdAogc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNz dGF0ZSwKIAkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSwK LQkJCQl1aW50MTZfdCBkZGJfYWxsb2NhdGlvbiwKIAkJCQlpbnQgbGV2ZWwsCiAJCQkJdWludDE2 X3QgKm91dF9ibG9ja3MsIC8qIG91dCAqLwotCQkJCXVpbnQ4X3QgKm91dF9saW5lcywgLyogb3V0 ICovCi0JCQkJYm9vbCAqZW5hYmxlZCAvKiBvdXQgKi8pCisJCQkJdWludDhfdCAqb3V0X2xpbmVz IC8qIG91dCAqLykKIHsKIAljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwc3RhdGUgPSAm aW50ZWxfcHN0YXRlLT5iYXNlOwogCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0g cHN0YXRlLT5mYjsKQEAgLTM1OTAsMTAgKzM2NTksOCBAQCBzdGF0aWMgaW50IHNrbF9jb21wdXRl X3BsYW5lX3dtKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlib29s IGFwcGx5X21lbW9yeV9id193YSA9IHNrbF9uZWVkc19tZW1vcnlfYndfd2Eoc3RhdGUpOwogCWJv b2wgeV90aWxlZCwgeF90aWxlZDsKIAotCWlmIChsYXRlbmN5ID09IDAgfHwgIWNzdGF0ZS0+YmFz ZS5hY3RpdmUgfHwgIWludGVsX3BzdGF0ZS0+YmFzZS52aXNpYmxlKSB7Ci0JCSplbmFibGVkID0g ZmFsc2U7CisJaWYgKGxhdGVuY3kgPT0gMCB8fCAhY3N0YXRlLT5iYXNlLmFjdGl2ZSB8fCAhaW50 ZWxfcHN0YXRlLT5iYXNlLnZpc2libGUpCiAJCXJldHVybiAwOwotCX0KIAogCXlfdGlsZWQgPSBm Yi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRUQgfHwKIAkJICBmYi0+bW9kaWZp ZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lmX1RJTEVEOwpAQCAtMzY3NCw5ICszNzQxLDYgQEAgc3Rh dGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCiAJCWlmICgoY3BwICogY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0 Y19odG90YWwgLyA1MTIgPCAxKSAmJgogCQkgICAgKHBsYW5lX2J5dGVzX3Blcl9saW5lIC8gNTEy IDwgMSkpCiAJCQlzZWxlY3RlZF9yZXN1bHQgPSBtZXRob2QyOwotCQllbHNlIGlmICgoZGRiX2Fs bG9jYXRpb24gJiYgZGRiX2FsbG9jYXRpb24gLwotCQkJZml4ZWRfMTZfMTZfdG9fdTMyX3JvdW5k X3VwKHBsYW5lX2Jsb2Nrc19wZXJfbGluZSkpID49IDEpCi0JCQlzZWxlY3RlZF9yZXN1bHQgPSBt aW5fZml4ZWRfMTZfMTYobWV0aG9kMSwgbWV0aG9kMik7CiAJCWVsc2UgaWYgKGxhdGVuY3kgPj0g bGluZXRpbWVfdXMpCiAJCQlzZWxlY3RlZF9yZXN1bHQgPSBtZXRob2QyOwogCQllbHNlCkBAIC0z Njk2LDY0ICszNzYwLDQxIEBAIHN0YXRpYyBpbnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qg c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQl9CiAJfQogCi0JaWYgKHJlc19i bG9ja3MgPj0gZGRiX2FsbG9jYXRpb24gfHwgcmVzX2xpbmVzID4gMzEpIHsKLQkJKmVuYWJsZWQg PSBmYWxzZTsKLQotCQkvKgotCQkgKiBJZiB0aGVyZSBhcmUgbm8gdmFsaWQgbGV2ZWwgMCB3YXRl cm1hcmtzLCB0aGVuIHdlIGNhbid0Ci0JCSAqIHN1cHBvcnQgdGhpcyBkaXNwbGF5IGNvbmZpZ3Vy YXRpb24uCi0JCSAqLwotCQlpZiAobGV2ZWwpIHsKLQkJCXJldHVybiAwOwotCQl9IGVsc2Ugewot CQkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBwc3RhdGUtPnBsYW5lOworCWlmIChyZXNfbGlu ZXMgPj0gMzEgJiYgbGV2ZWwgPT0gMCkgeworCQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IHBz dGF0ZS0+cGxhbmU7CiAKLQkJCURSTV9ERUJVR19LTVMoIlJlcXVlc3RlZCBkaXNwbGF5IGNvbmZp Z3VyYXRpb24gZXhjZWVkcyBzeXN0ZW0gd2F0ZXJtYXJrIGxpbWl0YXRpb25zXG4iKTsKLQkJCURS TV9ERUJVR19LTVMoIltQTEFORTolZDolc10gYmxvY2tzIHJlcXVpcmVkID0gJXUvJXUsIGxpbmVz IHJlcXVpcmVkID0gJXUvMzFcbiIsCi0JCQkJICAgICAgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5u YW1lLAotCQkJCSAgICAgIHJlc19ibG9ja3MsIGRkYl9hbGxvY2F0aW9uLCByZXNfbGluZXMpOwot CQkJcmV0dXJuIC1FSU5WQUw7Ci0JCX0KKwkJRFJNX0RFQlVHX0tNUygiUmVxdWVzdGVkIGRpc3Bs YXkgY29uZmlndXJhdGlvbiBleGNlZWRzIHN5c3RlbSB3YXRlcm1hcmsgbGltaXRhdGlvbnNcbiIp OworCQlEUk1fREVCVUdfS01TKCJbUExBTkU6JWQ6JXNdIGxpbmVzIHJlcXVpcmVkID0gJXUvMzFc biIsCisJCQkJcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lLCByZXNfbGluZXMpOwogCX0KIAog CSpvdXRfYmxvY2tzID0gcmVzX2Jsb2NrczsKIAkqb3V0X2xpbmVzID0gcmVzX2xpbmVzOwotCSpl bmFibGVkID0gdHJ1ZTsKIAogCXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50CiBza2xfY29tcHV0 ZV93bV9sZXZlbChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAg ICAgc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiLAogCQkgICAgIHN0cnVjdCBpbnRlbF9j cnRjX3N0YXRlICpjc3RhdGUsCiAJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRl ICppbnRlbF9wc3RhdGUsCiAJCSAgICAgc3RydWN0IHNrbF9wbGFuZV93bSAqd20pCiB7Ci0Jc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNzdGF0ZS0+YmFzZS5j cnRjKTsKLQlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSA9IGludGVsX3BzdGF0ZS0+YmFzZS5wbGFu ZTsKLQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxh bmUpOwotCXVpbnQxNl90IGRkYl9ibG9ja3M7Ci0JZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRj LT5waXBlOwogCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZlbChkZXZfcHJp dik7CiAJaW50IHJldDsKIAogCWlmIChXQVJOX09OKCFpbnRlbF9wc3RhdGUtPmJhc2UuZmIpKQog CQlyZXR1cm4gLUVJTlZBTDsKIAotCWRkYl9ibG9ja3MgPSBza2xfZGRiX2VudHJ5X3NpemUoJmRk Yi0+cGxhbmVbcGlwZV1baW50ZWxfcGxhbmUtPmlkXSk7Ci0KIAlmb3IgKGxldmVsID0gMDsgbGV2 ZWwgPD0gbWF4X2xldmVsOyBsZXZlbCsrKSB7CiAJCXN0cnVjdCBza2xfd21fbGV2ZWwgKnJlc3Vs dCA9ICZ3bS0+d21bbGV2ZWxdOwogCiAJCXJldCA9IHNrbF9jb21wdXRlX3BsYW5lX3dtKGRldl9w cml2LAogCQkJCQkgICBjc3RhdGUsCiAJCQkJCSAgIGludGVsX3BzdGF0ZSwKLQkJCQkJICAgZGRi X2Jsb2NrcywKIAkJCQkJICAgbGV2ZWwsCiAJCQkJCSAgICZyZXN1bHQtPnBsYW5lX3Jlc19iLAot CQkJCQkgICAmcmVzdWx0LT5wbGFuZV9yZXNfbCwKLQkJCQkJICAgJnJlc3VsdC0+cGxhbmVfZW4p OworCQkJCQkgICAmcmVzdWx0LT5wbGFuZV9yZXNfbCk7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4g cmV0OwogCX0KQEAgLTM4MTksOCArMzg2MCw3IEBAIHN0YXRpYyBpbnQgc2tsX2J1aWxkX3BpcGVf d20oc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAogCQl3bSA9ICZwaXBlX3dtLT5w bGFuZXNbcGxhbmVfaWRdOwogCi0JCXJldCA9IHNrbF9jb21wdXRlX3dtX2xldmVsKGRldl9wcml2 LCBkZGIsIGNzdGF0ZSwKLQkJCQkJICAgaW50ZWxfcHN0YXRlLCB3bSk7CisJCXJldCA9IHNrbF9j b21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBjc3RhdGUsIGludGVsX3BzdGF0ZSwgd20pOwogCQlp ZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIApAQCAtMzkzNCw2ICszOTc0LDQ1IEBAIGJvb2wgc2ts X2RkYl9hbGxvY2F0aW9uX292ZXJsYXBzKGNvbnN0IHN0cnVjdCBza2xfZGRiX2VudHJ5ICoqZW50 cmllcywKIAlyZXR1cm4gZmFsc2U7CiB9CiAKK3N0YXRpYyBpbnQKK3NrbF9kZGJfYWRkX2FmZmVj dGVkX3BsYW5lcyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlLAorCQkJICAgIGNvbnN0 IHN0cnVjdCBza2xfcGlwZV93bSAqb2xkX3BpcGVfd20sCisJCQkgICAgY29uc3Qgc3RydWN0IHNr bF9waXBlX3dtICpwaXBlX3dtKQoreworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9 IGNzdGF0ZS0+YmFzZS5zdGF0ZTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc3RhdGUtPmRl djsKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBjc3RhdGUtPmJhc2UuY3J0YzsKKwlzdHJ1Y3Qg aW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBpbnRlbF9h dG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsK KwlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpuZXdfZGRiID0gJmludGVsX3N0YXRlLT53bV9y ZXN1bHRzLmRkYjsKKwlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpjdXJfZGRiID0gJmRldl9w cml2LT53bS5za2xfaHcuZGRiOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRl OworCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOworCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0 Yy0+cGlwZTsKKworCVdBUk5fT04oIWRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2NydGNfc3RhdGUo c3RhdGUsIGNydGMpKTsKKworCWRybV9mb3JfZWFjaF9wbGFuZV9tYXNrKHBsYW5lLCBkZXYsIGNz dGF0ZS0+YmFzZS5wbGFuZV9tYXNrKSB7CisJCWVudW0gcGxhbmVfaWQgcGxhbmVfaWQgPSB0b19p bnRlbF9wbGFuZShwbGFuZSktPmlkOworCQljb25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dtICp3bSA9 ICZwaXBlX3dtLT5wbGFuZXNbcGxhbmVfaWRdOworCQljb25zdCBzdHJ1Y3Qgc2tsX3BsYW5lX3dt ICpvbGRfd20gPSAmb2xkX3BpcGVfd20tPnBsYW5lc1twbGFuZV9pZF07CisKKwkJaWYgKChza2xf ZGRiX2VudHJ5X2VxdWFsKCZjdXJfZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV9pZF0sCisJCQkJCSZu ZXdfZGRiLT5wbGFuZVtwaXBlXVtwbGFuZV9pZF0pICYmCisJCSAgICBza2xfZGRiX2VudHJ5X2Vx dWFsKCZjdXJfZGRiLT55X3BsYW5lW3BpcGVdW3BsYW5lX2lkXSwKKwkJCQkJJm5ld19kZGItPnlf cGxhbmVbcGlwZV1bcGxhbmVfaWRdKSkgJiYKKwkJICAgICFtZW1jbXAod20sIG9sZF93bSwgc2l6 ZW9mKHN0cnVjdCBza2xfcGxhbmVfd20pKSkKKwkJCWNvbnRpbnVlOworCisJCXBsYW5lX3N0YXRl ID0gZHJtX2F0b21pY19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKKwkJaWYgKElTX0VS UihwbGFuZV9zdGF0ZSkpCisJCQlyZXR1cm4gUFRSX0VSUihwbGFuZV9zdGF0ZSk7CisJfQorCisJ cmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgc2tsX3VwZGF0ZV9waXBlX3dtKHN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSAqY3N0YXRlLAogCQkJICAgICAgY29uc3Qgc3RydWN0IHNrbF9waXBlX3dtICpv bGRfcGlwZV93bSwKIAkJCSAgICAgIHN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSwgLyogb3V0 ICovCkBAIC0zOTQ3LDYgKzQwMjYsMTggQEAgc3RhdGljIGludCBza2xfdXBkYXRlX3BpcGVfd20o c3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGUsCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsK IAorCXJldCA9IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihpbnRlbF9jc3RhdGUsIGRkYiwgcGlwZV93 bSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwkvKgorCSAqIFRPRE86IERvIHdlIHN0aWxs IG5lZWQgdG8gYWRkIHBsYW5lcyBpbiBzdGF0ZSwgQXMgV00gdXBkYXRlIGlzCisJICogbm90IHBh cnQgb2YgdXBkYXRlX3BsYW5lIGFueW1vcmUsIFNvIHdtIGZvciBwbGFuZXMgY2FuIGJlIHVwZGF0 ZWQKKwkgKiBpcnJlc3BlY3RpdmUgb2YgdXBkYWRlX3BsYW5lIGNhbGwuCisJICovCisJcmV0ID0g c2tsX2RkYl9hZGRfYWZmZWN0ZWRfcGxhbmVzKGludGVsX2NzdGF0ZSwgb2xkX3BpcGVfd20sIHBp cGVfd20pOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKIAlpZiAoIW1lbWNtcChvbGRfcGlw ZV93bSwgcGlwZV93bSwgc2l6ZW9mKCpwaXBlX3dtKSkpCiAJCSpjaGFuZ2VkID0gZmFsc2U7CiAJ ZWxzZQpAQCAtMzk2OSw0MSArNDA2MCw3IEBAIHBpcGVzX21vZGlmaWVkKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKIH0KIAogc3RhdGljIGludAotc2tsX2RkYl9hZGRfYWZmZWN0ZWRf cGxhbmVzKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUpCi17Ci0Jc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlID0gY3N0YXRlLT5iYXNlLnN0YXRlOwotCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBzdGF0ZS0+ZGV2OwotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0ZS0+ YmFzZS5jcnRjOwotCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0 YyhjcnRjKTsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRl dik7Ci0Jc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9h dG9taWNfc3RhdGUoc3RhdGUpOwotCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm5ld19kZGIg PSAmaW50ZWxfc3RhdGUtPndtX3Jlc3VsdHMuZGRiOwotCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRp b24gKmN1cl9kZGIgPSAmZGV2X3ByaXYtPndtLnNrbF9ody5kZGI7Ci0Jc3RydWN0IGRybV9wbGFu ZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Ci0Jc3RydWN0IGRybV9wbGFuZSAqcGxhbmU7Ci0JZW51bSBw aXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwotCi0JV0FSTl9PTighZHJtX2F0b21pY19nZXRf ZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0YykpOwotCi0JZHJtX2Zvcl9lYWNoX3BsYW5l X21hc2socGxhbmUsIGRldiwgY3N0YXRlLT5iYXNlLnBsYW5lX21hc2spIHsKLQkJZW51bSBwbGFu ZV9pZCBwbGFuZV9pZCA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKS0+aWQ7Ci0KLQkJaWYgKHNrbF9k ZGJfZW50cnlfZXF1YWwoJmN1cl9kZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSwKLQkJCQkJJm5l d19kZGItPnBsYW5lW3BpcGVdW3BsYW5lX2lkXSkgJiYKLQkJICAgIHNrbF9kZGJfZW50cnlfZXF1 YWwoJmN1cl9kZGItPnlfcGxhbmVbcGlwZV1bcGxhbmVfaWRdLAotCQkJCQkmbmV3X2RkYi0+eV9w bGFuZVtwaXBlXVtwbGFuZV9pZF0pKQotCQkJY29udGludWU7Ci0KLQkJcGxhbmVfc3RhdGUgPSBk cm1fYXRvbWljX2dldF9wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOwotCQlpZiAoSVNfRVJSKHBs YW5lX3N0YXRlKSkKLQkJCXJldHVybiBQVFJfRVJSKHBsYW5lX3N0YXRlKTsKLQl9Ci0KLQlyZXR1 cm4gMDsKLX0KLQotc3RhdGljIGludAotc2tsX2NvbXB1dGVfZGRiKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKK3NrbF9pbmNsdWRlX2FmZmVjdGVkX2NydGMoc3RydWN0IGRybV9hdG9t aWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBzdGF0ZS0+ZGV2 OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKQEAg LTQwNjcsMTQgKzQxMjQsNiBAQCBza2xfY29tcHV0ZV9kZGIoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlKQogCQljc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUs IGludGVsX2NydGMpOwogCQlpZiAoSVNfRVJSKGNzdGF0ZSkpCiAJCQlyZXR1cm4gUFRSX0VSUihj c3RhdGUpOwotCi0JCXJldCA9IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihjc3RhdGUsIGRkYik7Ci0J CWlmIChyZXQpCi0JCQlyZXR1cm4gcmV0OwotCi0JCXJldCA9IHNrbF9kZGJfYWRkX2FmZmVjdGVk X3BsYW5lcyhjc3RhdGUpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKIAl9CiAKIAlyZXR1 cm4gMDsKQEAgLTQxNTUsNyArNDIwNCw3IEBAIHNrbF9jb21wdXRlX3dtKHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSkKIAkvKiBDbGVhciBhbGwgZGlydHkgZmxhZ3MgKi8KIAlyZXN1bHRz LT5kaXJ0eV9waXBlcyA9IDA7CiAKLQlyZXQgPSBza2xfY29tcHV0ZV9kZGIoc3RhdGUpOworCXJl dCA9IHNrbF9pbmNsdWRlX2FmZmVjdGVkX2NydGMoc3RhdGUpOwogCWlmIChyZXQpCiAJCXJldHVy biByZXQ7CiAKLS0gCjIuMTEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==