From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH v4 15/17] drm/i915/gen9: Calculate watermarks during atomic 'check' Date: Mon, 9 May 2016 18:21:46 -0700 Message-ID: <1462843308-27639-16-git-send-email-matthew.d.roper@intel.com> References: <1462843308-27639-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 mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id A50BC6E416 for ; Tue, 10 May 2016 01:25:18 +0000 (UTC) In-Reply-To: <1462843308-27639-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 TW92aW5nIHdhdGVybWFyayBjYWxjdWxhdGlvbiBpbnRvIHRoZSBjaGVjayBwaGFzZSB3aWxsIGFs bG93IHVzIHRvIHRvCnJlamVjdCBkaXNwbGF5IGNvbmZpZ3VyYXRpb25zIGZvciB3aGljaCB0aGVy ZSBhcmUgbm8gdmFsaWQgd2F0ZXJtYXJrCnZhbHVlcyBiZWZvcmUgd2Ugc3RhcnQgdHJ5aW5nIHRv IHByb2dyYW0gdGhlIGhhcmR3YXJlIChhbHRob3VnaCB0aG9zZQp0ZXN0cyB3aWxsIGNvbWUgaW4g YSBzdWJzZXF1ZW50IHBhdGNoKS4KCkFub3RoZXIgYWR2YW50YWdlIG9mIG1vdmluZyB0aGlzIGNh bGN1bGF0aW9uIHRvIHRoZSBjaGVjayBwaGFzZSBpcyB0aGF0CndlIGNhbiBjYWxjdWxhdGUgdGhl IHdhdGVybWFya3MgaW4gYSBzaW5nbGUgc2hvdCBhcyBwYXJ0IG9mIHRoZSBhdG9taWMKdHJhbnNh Y3Rpb24uICBUaGUgd2F0ZXJtYXJrIGludGVyZmFjZXMgd2UgaW5oZXJpdGVkIGZyb20gb3VyIGxl Z2FjeQptb2Rlc2V0dGluZyBkYXlzIGFyZSBhIGJpdCBicm9rZW4gaW4gdGhlIGF0b21pYyBkZXNp Z24gYmVjYXVzZSB0aGV5IHVzZQpwZXItY3J0YyBlbnRyeSBwb2ludHMgYnV0IGFjdHVhbGx5IHJl LWNhbGN1bGF0ZSBhbmQgcmUtcHJvZ3JhbSBzb21ldGhpbmcKdGhhdCBpcyByZWFsbHkgbW9yZSBv ZiBhIGdsb2JhbCBzdGF0ZS4gIFRoYXQgd29ya2VkIG9rYXkgaW4gdGhlIGxlZ2FjeQptb2Rlc2V0 dGluZyB3b3JsZCBiZWNhdXNlIG9wZXJhdGlvbnMgb25seSBldmVyIHVwZGF0ZWQgYSBzaW5nbGUg Q1JUQyBhdAphIHRpbWUuICBIb3dldmVyIGluIHRoZSBhdG9taWMgd29ybGQsIGEgdHJhbnNhY3Rp b24gY2FuIGludm9sdmUgbXVsdGlwbGUKQ1JUQydzLCB3aGljaCBtZWFucyB3ZSB3aW5kIHVwIGNv bXB1dGluZyBhbmQgcHJvZ3JhbW1pbmcgdGhlIHdhdGVybWFya3MKTnhOIHRpbWVzICh3aGVyZSBO IGlzIHRoZSBudW1iZXIgb2YgQ1JUQydzIGludm9sdmVkKS4gIFdpdGggdGhpcyBwYXRjaAp3ZSBl bGltaW5hdGUgdGhlIHJlZHVuZGFudCByZS1jYWxjdWxhdGlvbiBvZiB3YXRlcm1hcmsgZGF0YSBm b3IgYXRvbWljCnN0YXRlcyAod2hpY2ggd2FzIHRoZSBjYXVzZSBvZiB0aGUgV0FSTl9PTighd21f Y2hhbmdlZCkgcHJvYmxlbXMgdGhhdApoYXZlIHBsYWd1ZWQgdXMgZm9yIGEgd2hpbGUpLgoKV2Ug c3RpbGwgbmVlZCB0byB3b3JrIG9uIHRoZSAnY29tbWl0JyBzaWRlIG9mIHdhdGVybWFyayBoYW5k bGluZyBzbyB0aGF0CndlIGFyZW4ndCBkb2luZyByZWR1bmRhbnQgTnhOIHByb2dyYW1taW5nIG9m IHdhdGVybWFya3MsIGJ1dCB0aGF0J3MKY29udGVudCBmb3IgZnV0dXJlIHBhdGNoZXMuCgpCdWd6 aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODkwNTUK QnVnemlsbGE6IGh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvc2hvd19idWcuY2dpP2lkPTky MTgxClNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+ ClJldmlld2VkLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXgu aW50ZWwuY29tPgpUZXN0ZWQtYnk6IENlemFyIEJ1cmxhY3UgPGNlemFyLmJ1cmxhY3VAaW50ZWwu Y29tPgpUZXN0ZWQtYnk6IERhbmllbCBTdG9uZSA8ZGFuaWVsc0Bjb2xsYWJvcmEuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAgMiArLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wbS5jICAgICAgfCAxMzggKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIDMgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwgOTAgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDE2NzM4ZmMuLmVmZDRjNDIgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEzNjAwLDcgKzEzNjAwLDcgQEAg c3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAK IAlkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKGRldiwgc3RhdGUpOwogCWRldl9wcml2LT53 bS5jb25maWcgPSBpbnRlbF9zdGF0ZS0+d21fY29uZmlnOwotCWRldl9wcml2LT53bS5za2xfcmVz dWx0cy5kZGIgPSBpbnRlbF9zdGF0ZS0+ZGRiOworCWRldl9wcml2LT53bS5za2xfcmVzdWx0cyA9 IGludGVsX3N0YXRlLT53bV9yZXN1bHRzOwogCWludGVsX3NoYXJlZF9kcGxsX2NvbW1pdChzdGF0 ZSk7CiAKIAlpZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKaW5kZXggNTMyZjE0NC4uY2FmY2Q4MGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBA IC0zMTQsNyArMzE0LDcgQEAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSB7CiAJYm9vbCBza2lw X2ludGVybWVkaWF0ZV93bTsKIAogCS8qIEdlbjkrIG9ubHkgKi8KLQlzdHJ1Y3Qgc2tsX2RkYl9h bGxvY2F0aW9uIGRkYjsKKwlzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyB3bV9yZXN1bHRzOwogfTsKIAog c3RydWN0IGludGVsX3BsYW5lX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCmluZGV4IGI3 NGFmM2UuLjE4ZjQ2ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bt LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtMzIyMSwyMyArMzIy MSw2IEBAIHN0YXRpYyB1aW50MzJfdCBza2xfd21fbWV0aG9kMih1aW50MzJfdCBwaXhlbF9yYXRl LCB1aW50MzJfdCBwaXBlX2h0b3RhbCwKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgYm9vbCBz a2xfZGRiX2FsbG9jYXRpb25fY2hhbmdlZChjb25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9u ICpuZXdfZGRiLAotCQkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YykKLXsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfY3J0Yy0+YmFzZS5kZXY7Ci0J c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlj b25zdCBzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uICpjdXJfZGRiID0gJmRldl9wcml2LT53bS5z a2xfaHcuZGRiOwotCi0JLyoKLQkgKiBJZiBkZGIgYWxsb2NhdGlvbiBvZiBwaXBlcyBjaGFuZ2Vk LCBpdCBtYXkgcmVxdWlyZSByZWNhbGN1bGF0aW9uIG9mCi0JICogd2F0ZXJtYXJrcwotCSAqLwot CWlmIChtZW1jbXAobmV3X2RkYi0+cGlwZSwgY3VyX2RkYi0+cGlwZSwgc2l6ZW9mKG5ld19kZGIt PnBpcGUpKSkKLQkJcmV0dXJuIHRydWU7Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KIHN0YXRpYyBp bnQgc2tsX2NvbXB1dGVfcGxhbmVfd20oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCQkJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJCQkJc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICppbnRlbF9wc3RhdGUsCkBAIC0zNzE2LDY2ICszNjk5LDkgQEAg c3RhdGljIGludCBza2xfdXBkYXRlX3BpcGVfd20oc3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3Rh dGUsCiAJZWxzZQogCQkqY2hhbmdlZCA9IHRydWU7CiAKLQlpbnRlbF9jcnRjLT53bS5hY3RpdmUu c2tsID0gKnBpcGVfd207Ci0KIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgc2tsX3VwZGF0 ZV9vdGhlcl9waXBlX3dtKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCi0JCQkJICAgICBzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMsCi0JCQkJICAgICBzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqcikKLXsKLQlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqdGhpc19j cnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKLQotCS8qCi0JICogSWYgdGhlIFdNIHVwZGF0ZSBo YXNuJ3QgY2hhbmdlZCB0aGUgYWxsb2NhdGlvbiBmb3IgdGhpc19jcnRjICh0aGUKLQkgKiBjcnRj IHdlIGFyZSBjdXJyZW50bHkgY29tcHV0aW5nIHRoZSBuZXcgV00gdmFsdWVzIGZvciksIG90aGVy Ci0JICogZW5hYmxlZCBjcnRjcyB3aWxsIGtlZXAgdGhlIHNhbWUgYWxsb2NhdGlvbiBhbmQgd2Ug ZG9uJ3QgbmVlZCB0bwotCSAqIHJlY29tcHV0ZSBhbnl0aGluZyBmb3IgdGhlbS4KLQkgKi8KLQlp ZiAoIXNrbF9kZGJfYWxsb2NhdGlvbl9jaGFuZ2VkKCZyLT5kZGIsIHRoaXNfY3J0YykpCi0JCXJl dHVybjsKLQotCS8qCi0JICogT3RoZXJ3aXNlLCBiZWNhdXNlIG9mIHRoaXNfY3J0YyBiZWluZyBm cmVzaGx5IGVuYWJsZWQvZGlzYWJsZWQsIHRoZQotCSAqIG90aGVyIGFjdGl2ZSBwaXBlcyBuZWVk IG5ldyBEREIgYWxsb2NhdGlvbiBhbmQgV00gdmFsdWVzLgotCSAqLwotCWZvcl9lYWNoX2ludGVs X2NydGMoZGV2LCBpbnRlbF9jcnRjKSB7Ci0JCXN0cnVjdCBza2xfcGlwZV93bSBwaXBlX3dtID0g e307Ci0JCWJvb2wgd21fY2hhbmdlZDsKLQotCQlpZiAodGhpc19jcnRjLT5waXBlID09IGludGVs X2NydGMtPnBpcGUpCi0JCQljb250aW51ZTsKLQotCQlpZiAoIWludGVsX2NydGMtPmFjdGl2ZSkK LQkJCWNvbnRpbnVlOwotCi0JCXNrbF91cGRhdGVfcGlwZV93bShpbnRlbF9jcnRjLT5iYXNlLnN0 YXRlLAotCQkJCSAgICZyLT5kZGIsICZwaXBlX3dtLCAmd21fY2hhbmdlZCk7Ci0KLQkJLyoKLQkJ ICogSWYgd2UgZW5kIHVwIHJlLWNvbXB1dGluZyB0aGUgb3RoZXIgcGlwZSBXTSB2YWx1ZXMsIGl0 J3MKLQkJICogYmVjYXVzZSBpdCB3YXMgcmVhbGx5IG5lZWRlZCwgc28gd2UgZXhwZWN0IHRoZSBX TSB2YWx1ZXMgdG8KLQkJICogYmUgZGlmZmVyZW50LgotCQkgKi8KLQkJV0FSTl9PTighd21fY2hh bmdlZCk7Ci0KLQkJc2tsX2NvbXB1dGVfd21fcmVzdWx0cyhkZXYsICZwaXBlX3dtLCByLCBpbnRl bF9jcnRjKTsKLQkJci0+ZGlydHlfcGlwZXMgfD0gZHJtX2NydGNfbWFzaygmaW50ZWxfY3J0Yy0+ YmFzZSk7Ci0JfQotfQotCi1zdGF0aWMgdm9pZCBza2xfY2xlYXJfd20oc3RydWN0IHNrbF93bV92 YWx1ZXMgKndhdGVybWFya3MsIGVudW0gcGlwZSBwaXBlKQotewotCXdhdGVybWFya3MtPndtX2xp bmV0aW1lW3BpcGVdID0gMDsKLQltZW1zZXQod2F0ZXJtYXJrcy0+cGxhbmVbcGlwZV0sIDAsCi0J ICAgICAgIHNpemVvZih1aW50MzJfdCkgKiA4ICogSTkxNV9NQVhfUExBTkVTKTsKLQltZW1zZXQo d2F0ZXJtYXJrcy0+cGxhbmVfdHJhbnNbcGlwZV0sCi0JICAgICAgIDAsIHNpemVvZih1aW50MzJf dCkgKiBJOTE1X01BWF9QTEFORVMpOwotCXdhdGVybWFya3MtPnBsYW5lX3RyYW5zW3BpcGVdW1BM QU5FX0NVUlNPUl0gPSAwOwotfQotCiBzdGF0aWMgaW50CiBza2xfY29tcHV0ZV9kZGIoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewpAQCAtMzc4Myw2ICszNzA5LDcgQEAgc2tsX2Nv bXB1dGVfZGRiKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGludGVsX2F0b21p Y19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwogCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOworCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24g KmRkYiA9ICZpbnRlbF9zdGF0ZS0+d21fcmVzdWx0cy5kZGI7CiAJdW5zaWduZWQgcmVhbGxvY19w aXBlcyA9IGRldl9wcml2LT5hY3RpdmVfY3J0Y3M7CiAJaW50IHJldDsKIApAQCAtMzgwOCw4ICsz NzM1LDEwIEBAIHNrbF9jb21wdXRlX2RkYihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp CiAJICogYW55IG90aGVyIGRpc3BsYXkgdXBkYXRlcyByYWNlIHdpdGggdGhpcyB0cmFuc2FjdGlv biwgc28gd2UgbmVlZAogCSAqIHRvIGdyYWIgdGhlIGxvY2sgb24gKmFsbCogQ1JUQydzLgogCSAq LwotCWlmIChpbnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVfY2hhbmdlcykKKwlpZiAoaW50ZWxfc3Rh dGUtPmFjdGl2ZV9waXBlX2NoYW5nZXMpIHsKIAkJcmVhbGxvY19waXBlcyA9IH4wOworCQlpbnRl bF9zdGF0ZS0+d21fcmVzdWx0cy5kaXJ0eV9waXBlcyA9IH4wOworCX0KIAogCWZvcl9lYWNoX2lu dGVsX2NydGNfbWFzayhkZXYsIGludGVsX2NydGMsIHJlYWxsb2NfcGlwZXMpIHsKIAkJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZTsKQEAgLTM4MTgsNyArMzc0Nyw3IEBAIHNrbF9jb21w dXRlX2RkYihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJCWlmIChJU19FUlIoY3N0 YXRlKSkKIAkJCXJldHVybiBQVFJfRVJSKGNzdGF0ZSk7CiAKLQkJcmV0ID0gc2tsX2FsbG9jYXRl X3BpcGVfZGRiKGNzdGF0ZSwgJmludGVsX3N0YXRlLT5kZGIpOworCQlyZXQgPSBza2xfYWxsb2Nh dGVfcGlwZV9kZGIoY3N0YXRlLCBkZGIpOwogCQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKIAl9 CkBAIC0zODMxLDggKzM3NjAsMTEgQEAgc2tsX2NvbXB1dGVfd20oc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKIAlzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmNzdGF0ZTsKLQlpbnQgcmV0LCBpOworCXN0cnVjdCBpbnRlbF9hdG9taWNfc3Rh dGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWljX3N0YXRlKHN0YXRlKTsKKwlzdHJ1Y3Qg c2tsX3dtX3ZhbHVlcyAqcmVzdWx0cyA9ICZpbnRlbF9zdGF0ZS0+d21fcmVzdWx0czsKKwlzdHJ1 Y3Qgc2tsX3BpcGVfd20gKnBpcGVfd207CiAJYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisJaW50IHJl dCwgaTsKIAogCS8qCiAJICogSWYgdGhpcyB0cmFuc2FjdGlvbiBpc24ndCBhY3R1YWxseSB0b3Vj aGluZyBhbnkgQ1JUQydzLCBkb24ndApAQCAtMzg0NywxMCArMzc3OSw0NSBAQCBza2xfY29tcHV0 ZV93bShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJaWYgKCFjaGFuZ2VkKQogCQly ZXR1cm4gMDsKIAorCS8qIENsZWFyIGFsbCBkaXJ0eSBmbGFncyAqLworCXJlc3VsdHMtPmRpcnR5 X3BpcGVzID0gMDsKKwogCXJldCA9IHNrbF9jb21wdXRlX2RkYihzdGF0ZSk7CiAJaWYgKHJldCkK IAkJcmV0dXJuIHJldDsKIAorCS8qCisJICogQ2FsY3VsYXRlIFdNJ3MgZm9yIGFsbCBwaXBlcyB0 aGF0IGFyZSBwYXJ0IG9mIHRoaXMgdHJhbnNhY3Rpb24uCisJICogTm90ZSB0aGF0IHRoZSBEREIg YWxsb2NhdGlvbiBhYm92ZSBtYXkgaGF2ZSBhZGRlZCBtb3JlIENSVEMncyB0aGF0CisJICogd2Vy ZW4ndCBvdGhlcndpc2UgYmVpbmcgbW9kaWZpZWQgKGFuZCBzZXQgYml0cyBpbiBkaXJ0eV9waXBl cykgaWYKKwkgKiBwaXBlIGFsbG9jYXRpb25zIGhhZCB0byBjaGFuZ2UuCisJICoKKwkgKiBGSVhN RTogIE5vdyB0aGF0IHdlJ3JlIGRvaW5nIHRoaXMgaW4gdGhlIGF0b21pYyBjaGVjayBwaGFzZSwg d2UKKwkgKiBzaG91bGQgYWxsb3cgc2tsX3VwZGF0ZV9waXBlX3dtKCkgdG8gcmV0dXJuIGZhaWx1 cmUgaW4gY2FzZXMgd2hlcmUKKwkgKiBubyBzdWl0YWJsZSB3YXRlcm1hcmsgdmFsdWVzIGNhbiBi ZSBmb3VuZC4KKwkgKi8KKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjc3Rh dGUsIGkpIHsKKwkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRj KGNydGMpOworCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqaW50ZWxfY3N0YXRlID0KKwkJCXRv X2ludGVsX2NydGNfc3RhdGUoY3N0YXRlKTsKKworCQlwaXBlX3dtID0gJmludGVsX2NzdGF0ZS0+ d20uc2tsLm9wdGltYWw7CisJCXJldCA9IHNrbF91cGRhdGVfcGlwZV93bShjc3RhdGUsICZyZXN1 bHRzLT5kZGIsIHBpcGVfd20sCisJCQkJCSAmY2hhbmdlZCk7CisJCWlmIChyZXQpCisJCQlyZXR1 cm4gcmV0OworCisJCWlmIChjaGFuZ2VkKQorCQkJcmVzdWx0cy0+ZGlydHlfcGlwZXMgfD0gZHJt X2NydGNfbWFzayhjcnRjKTsKKworCQlpZiAoKHJlc3VsdHMtPmRpcnR5X3BpcGVzICYgZHJtX2Ny dGNfbWFzayhjcnRjKSkgPT0gMCkKKwkJCS8qIFRoaXMgcGlwZSdzIFdNJ3MgZGlkIG5vdCBjaGFu Z2UgKi8KKwkJCWNvbnRpbnVlOworCisJCWludGVsX2NzdGF0ZS0+dXBkYXRlX3dtX3ByZSA9IHRy dWU7CisJCXNrbF9jb21wdXRlX3dtX3Jlc3VsdHMoY3J0Yy0+ZGV2LCBwaXBlX3dtLCByZXN1bHRz LCBpbnRlbF9jcnRjKTsKKwl9CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMzg2MiwyNiArMzgyOSwy MSBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlz dHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqcmVzdWx0cyA9ICZkZXZfcHJpdi0+d20uc2tsX3Jlc3VsdHM7 CiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUo Y3J0Yy0+c3RhdGUpOwogCXN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bSA9ICZjc3RhdGUtPndt LnNrbC5vcHRpbWFsOwotCWJvb2wgd21fY2hhbmdlZDsKIAotCS8qIENsZWFyIGFsbCBkaXJ0eSBm bGFncyAqLwotCXJlc3VsdHMtPmRpcnR5X3BpcGVzID0gMDsKLQotCXNrbF9jbGVhcl93bShyZXN1 bHRzLCBpbnRlbF9jcnRjLT5waXBlKTsKLQotCXNrbF91cGRhdGVfcGlwZV93bShjcnRjLT5zdGF0 ZSwgJnJlc3VsdHMtPmRkYiwgcGlwZV93bSwgJndtX2NoYW5nZWQpOwotCWlmICghd21fY2hhbmdl ZCkKKwlpZiAoKHJlc3VsdHMtPmRpcnR5X3BpcGVzICYgZHJtX2NydGNfbWFzayhjcnRjKSkgPT0g MCkKIAkJcmV0dXJuOwogCi0Jc2tsX2NvbXB1dGVfd21fcmVzdWx0cyhkZXYsIHBpcGVfd20sIHJl c3VsdHMsIGludGVsX2NydGMpOwotCXJlc3VsdHMtPmRpcnR5X3BpcGVzIHw9IGRybV9jcnRjX21h c2soJmludGVsX2NydGMtPmJhc2UpOworCWludGVsX2NydGMtPndtLmFjdGl2ZS5za2wgPSAqcGlw ZV93bTsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT53bS53bV9tdXRleCk7CiAKLQlza2xfdXBk YXRlX290aGVyX3BpcGVfd20oZGV2LCBjcnRjLCByZXN1bHRzKTsKIAlza2xfd3JpdGVfd21fdmFs dWVzKGRldl9wcml2LCByZXN1bHRzKTsKIAlza2xfZmx1c2hfd21fdmFsdWVzKGRldl9wcml2LCBy ZXN1bHRzKTsKIAogCS8qIHN0b3JlIHRoZSBuZXcgY29uZmlndXJhdGlvbiAqLwogCWRldl9wcml2 LT53bS5za2xfaHcgPSAqcmVzdWx0czsKKworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPndtLndt X211dGV4KTsKIH0KIAogc3RhdGljIHZvaWQgaWxrX2NvbXB1dGVfd21fY29uZmlnKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCi0tIAoyLjEuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==