From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH v3 14/16] drm/i915/gen9: Calculate watermarks during atomic 'check' Date: Thu, 21 Apr 2016 16:17:08 -0700 Message-ID: <1461280630-7477-15-git-send-email-matthew.d.roper@intel.com> References: <1461280630-7477-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 4EF5B6EDCB for ; Thu, 21 Apr 2016 23:19:39 +0000 (UTC) In-Reply-To: <1461280630-7477-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 aW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAg MiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAyICstCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCAxMzggKysrKysrKysrKysrKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwgOTAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDdlOGZh ODguLjhiZWRmMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEzNTk5 LDcgKzEzNTk5LDcgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAKIAlkcm1fYXRvbWljX2hlbHBlcl9zd2FwX3N0YXRlKGRldiwgc3RhdGUp OwogCWRldl9wcml2LT53bS5jb25maWcgPSBpbnRlbF9zdGF0ZS0+d21fY29uZmlnOwotCWRldl9w cml2LT53bS5za2xfcmVzdWx0cy5kZGIgPSBpbnRlbF9zdGF0ZS0+ZGRiOworCWRldl9wcml2LT53 bS5za2xfcmVzdWx0cyA9IGludGVsX3N0YXRlLT53bV9yZXN1bHRzOwogCWludGVsX3NoYXJlZF9k cGxsX2NvbW1pdChzdGF0ZSk7CiAKIAlpZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQpIHsKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggMjI4MjQ5NC4uNjMxNjIxNSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKQEAgLTMxMyw3ICszMTMsNyBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl IHsKIAlib29sIHNraXBfaW50ZXJtZWRpYXRlX3dtOwogCiAJLyogR2VuOSsgb25seSAqLwotCXN0 cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gZGRiOworCXN0cnVjdCBza2xfd21fdmFsdWVzIHdtX3Jl c3VsdHM7CiB9OwogCiBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMKaW5kZXggNjI2MDlhYi4uZmU1YWRjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBA IC0zMjIxLDIzICszMjIxLDYgQEAgc3RhdGljIHVpbnQzMl90IHNrbF93bV9tZXRob2QyKHVpbnQz Ml90IHBpeGVsX3JhdGUsIHVpbnQzMl90IHBpcGVfaHRvdGFsLAogCXJldHVybiByZXQ7CiB9CiAK LXN0YXRpYyBib29sIHNrbF9kZGJfYWxsb2NhdGlvbl9jaGFuZ2VkKGNvbnN0IHN0cnVjdCBza2xf ZGRiX2FsbG9jYXRpb24gKm5ld19kZGIsCi0JCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjKQotewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRj LT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwotCWNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKmN1cl9kZGIgPSAm ZGV2X3ByaXYtPndtLnNrbF9ody5kZGI7Ci0KLQkvKgotCSAqIElmIGRkYiBhbGxvY2F0aW9uIG9m IHBpcGVzIGNoYW5nZWQsIGl0IG1heSByZXF1aXJlIHJlY2FsY3VsYXRpb24gb2YKLQkgKiB3YXRl cm1hcmtzCi0JICovCi0JaWYgKG1lbWNtcChuZXdfZGRiLT5waXBlLCBjdXJfZGRiLT5waXBlLCBz aXplb2YobmV3X2RkYi0+cGlwZSkpKQotCQlyZXR1cm4gdHJ1ZTsKLQotCXJldHVybiBmYWxzZTsK LX0KLQogc3RhdGljIGludCBza2xfY29tcHV0ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0 ZSwKIAkJCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKmludGVsX3BzdGF0ZSwKQEAgLTM3MTYs NjYgKzM2OTksOSBAQCBzdGF0aWMgaW50IHNrbF91cGRhdGVfcGlwZV93bShzdHJ1Y3QgZHJtX2Ny dGNfc3RhdGUgKmNzdGF0ZSwKIAllbHNlCiAJCSpjaGFuZ2VkID0gdHJ1ZTsKIAotCWludGVsX2Ny dGMtPndtLmFjdGl2ZS5za2wgPSAqcGlwZV93bTsKLQogCXJldHVybiAwOwogfQogCi1zdGF0aWMg dm9pZCBza2xfdXBkYXRlX290aGVyX3BpcGVfd20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJ CQkgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKLQkJCQkgICAgIHN0cnVjdCBza2xfd21fdmFs dWVzICpyKQotewotCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwotCXN0cnVjdCBpbnRl bF9jcnRjICp0aGlzX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwotCi0JLyoKLQkgKiBJZiB0 aGUgV00gdXBkYXRlIGhhc24ndCBjaGFuZ2VkIHRoZSBhbGxvY2F0aW9uIGZvciB0aGlzX2NydGMg KHRoZQotCSAqIGNydGMgd2UgYXJlIGN1cnJlbnRseSBjb21wdXRpbmcgdGhlIG5ldyBXTSB2YWx1 ZXMgZm9yKSwgb3RoZXIKLQkgKiBlbmFibGVkIGNydGNzIHdpbGwga2VlcCB0aGUgc2FtZSBhbGxv Y2F0aW9uIGFuZCB3ZSBkb24ndCBuZWVkIHRvCi0JICogcmVjb21wdXRlIGFueXRoaW5nIGZvciB0 aGVtLgotCSAqLwotCWlmICghc2tsX2RkYl9hbGxvY2F0aW9uX2NoYW5nZWQoJnItPmRkYiwgdGhp c19jcnRjKSkKLQkJcmV0dXJuOwotCi0JLyoKLQkgKiBPdGhlcndpc2UsIGJlY2F1c2Ugb2YgdGhp c19jcnRjIGJlaW5nIGZyZXNobHkgZW5hYmxlZC9kaXNhYmxlZCwgdGhlCi0JICogb3RoZXIgYWN0 aXZlIHBpcGVzIG5lZWQgbmV3IEREQiBhbGxvY2F0aW9uIGFuZCBXTSB2YWx1ZXMuCi0JICovCi0J Zm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGludGVsX2NydGMpIHsKLQkJc3RydWN0IHNrbF9waXBl X3dtIHBpcGVfd20gPSB7fTsKLQkJYm9vbCB3bV9jaGFuZ2VkOwotCi0JCWlmICh0aGlzX2NydGMt PnBpcGUgPT0gaW50ZWxfY3J0Yy0+cGlwZSkKLQkJCWNvbnRpbnVlOwotCi0JCWlmICghaW50ZWxf Y3J0Yy0+YWN0aXZlKQotCQkJY29udGludWU7Ci0KLQkJc2tsX3VwZGF0ZV9waXBlX3dtKGludGVs X2NydGMtPmJhc2Uuc3RhdGUsCi0JCQkJICAgJnItPmRkYiwgJnBpcGVfd20sICZ3bV9jaGFuZ2Vk KTsKLQotCQkvKgotCQkgKiBJZiB3ZSBlbmQgdXAgcmUtY29tcHV0aW5nIHRoZSBvdGhlciBwaXBl IFdNIHZhbHVlcywgaXQncwotCQkgKiBiZWNhdXNlIGl0IHdhcyByZWFsbHkgbmVlZGVkLCBzbyB3 ZSBleHBlY3QgdGhlIFdNIHZhbHVlcyB0bwotCQkgKiBiZSBkaWZmZXJlbnQuCi0JCSAqLwotCQlX QVJOX09OKCF3bV9jaGFuZ2VkKTsKLQotCQlza2xfY29tcHV0ZV93bV9yZXN1bHRzKGRldiwgJnBp cGVfd20sIHIsIGludGVsX2NydGMpOwotCQlyLT5kaXJ0eV9waXBlcyB8PSBkcm1fY3J0Y19tYXNr KCZpbnRlbF9jcnRjLT5iYXNlKTsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lkIHNrbF9jbGVhcl93bShz dHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqd2F0ZXJtYXJrcywgZW51bSBwaXBlIHBpcGUpCi17Ci0Jd2F0 ZXJtYXJrcy0+d21fbGluZXRpbWVbcGlwZV0gPSAwOwotCW1lbXNldCh3YXRlcm1hcmtzLT5wbGFu ZVtwaXBlXSwgMCwKLQkgICAgICAgc2l6ZW9mKHVpbnQzMl90KSAqIDggKiBJOTE1X01BWF9QTEFO RVMpOwotCW1lbXNldCh3YXRlcm1hcmtzLT5wbGFuZV90cmFuc1twaXBlXSwKLQkgICAgICAgMCwg c2l6ZW9mKHVpbnQzMl90KSAqIEk5MTVfTUFYX1BMQU5FUyk7Ci0Jd2F0ZXJtYXJrcy0+cGxhbmVf dHJhbnNbcGlwZV1bUExBTkVfQ1VSU09SXSA9IDA7Ci19Ci0KIHN0YXRpYyBpbnQKIHNrbF9jb21w dXRlX2RkYihzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CkBAIC0zNzgzLDYgKzM3 MDksNyBAQCBza2xfY29tcHV0ZV9kZGIoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQog CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1 Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0 ZShzdGF0ZSk7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7CisJc3RydWN0IHNrbF9k ZGJfYWxsb2NhdGlvbiAqZGRiID0gJmludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRkYjsKIAl1bnNp Z25lZCByZWFsbG9jX3BpcGVzID0gZGV2X3ByaXYtPmFjdGl2ZV9jcnRjczsKIAlpbnQgcmV0Owog CkBAIC0zNzk5LDggKzM3MjYsMTAgQEAgc2tsX2NvbXB1dGVfZGRiKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKIAkgKiBhbnkgb3RoZXIgZGlzcGxheSB1cGRhdGVzIHJhY2Ugd2l0aCB0 aGlzIHRyYW5zYWN0aW9uLCBzbyB3ZSBuZWVkCiAJICogdG8gZ3JhYiB0aGUgbG9jayBvbiAqYWxs KiBDUlRDJ3MuCiAJICovCi0JaWYgKGludGVsX3N0YXRlLT5hY3RpdmVfcGlwZV9jaGFuZ2VzKQor CWlmIChpbnRlbF9zdGF0ZS0+YWN0aXZlX3BpcGVfY2hhbmdlcykgewogCQlyZWFsbG9jX3BpcGVz ID0gfjA7CisJCWludGVsX3N0YXRlLT53bV9yZXN1bHRzLmRpcnR5X3BpcGVzID0gfjA7CisJfQog CiAJZm9yX2VhY2hfaW50ZWxfY3J0Y19tYXNrKGRldiwgaW50ZWxfY3J0YywgcmVhbGxvY19waXBl cykgewogCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlOwpAQCAtMzgwOSw3ICszNzM4 LDcgQEAgc2tsX2NvbXB1dGVfZGRiKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJ aWYgKElTX0VSUihjc3RhdGUpKQogCQkJcmV0dXJuIFBUUl9FUlIoY3N0YXRlKTsKIAotCQlyZXQg PSBza2xfYWxsb2NhdGVfcGlwZV9kZGIoY3N0YXRlLCAmaW50ZWxfc3RhdGUtPmRkYik7CisJCXJl dCA9IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihjc3RhdGUsIGRkYik7CiAJCWlmIChyZXQpCiAJCQly ZXR1cm4gcmV0OwogCX0KQEAgLTM4MjIsOCArMzc1MSwxMSBAQCBza2xfY29tcHV0ZV93bShzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwog CXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlOwotCWludCByZXQsIGk7CisJc3RydWN0IGlu dGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3RhdGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3Rh dGUpOworCXN0cnVjdCBza2xfd21fdmFsdWVzICpyZXN1bHRzID0gJmludGVsX3N0YXRlLT53bV9y ZXN1bHRzOworCXN0cnVjdCBza2xfcGlwZV93bSAqcGlwZV93bTsKIAlib29sIGNoYW5nZWQgPSBm YWxzZTsKKwlpbnQgcmV0LCBpOwogCiAJLyoKIAkgKiBJZiB0aGlzIHRyYW5zYWN0aW9uIGlzbid0 IGFjdHVhbGx5IHRvdWNoaW5nIGFueSBDUlRDJ3MsIGRvbid0CkBAIC0zODM4LDEwICszNzcwLDQ1 IEBAIHNrbF9jb21wdXRlX3dtKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlpZiAo IWNoYW5nZWQpCiAJCXJldHVybiAwOwogCisJLyogQ2xlYXIgYWxsIGRpcnR5IGZsYWdzICovCisJ cmVzdWx0cy0+ZGlydHlfcGlwZXMgPSAwOworCiAJcmV0ID0gc2tsX2NvbXB1dGVfZGRiKHN0YXRl KTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCisJLyoKKwkgKiBDYWxjdWxhdGUgV00ncyBm b3IgYWxsIHBpcGVzIHRoYXQgYXJlIHBhcnQgb2YgdGhpcyB0cmFuc2FjdGlvbi4KKwkgKiBOb3Rl IHRoYXQgdGhlIEREQiBhbGxvY2F0aW9uIGFib3ZlIG1heSBoYXZlIGFkZGVkIG1vcmUgQ1JUQydz IHRoYXQKKwkgKiB3ZXJlbid0IG90aGVyd2lzZSBiZWluZyBtb2RpZmllZCAoYW5kIHNldCBiaXRz IGluIGRpcnR5X3BpcGVzKSBpZgorCSAqIHBpcGUgYWxsb2NhdGlvbnMgaGFkIHRvIGNoYW5nZS4K KwkgKgorCSAqIEZJWE1FOiAgTm93IHRoYXQgd2UncmUgZG9pbmcgdGhpcyBpbiB0aGUgYXRvbWlj IGNoZWNrIHBoYXNlLCB3ZQorCSAqIHNob3VsZCBhbGxvdyBza2xfdXBkYXRlX3BpcGVfd20oKSB0 byByZXR1cm4gZmFpbHVyZSBpbiBjYXNlcyB3aGVyZQorCSAqIG5vIHN1aXRhYmxlIHdhdGVybWFy ayB2YWx1ZXMgY2FuIGJlIGZvdW5kLgorCSAqLworCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3Rh dGUsIGNydGMsIGNzdGF0ZSwgaSkgeworCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9 IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9j c3RhdGUgPQorCQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjc3RhdGUpOworCisJCXBpcGVfd20gPSAm aW50ZWxfY3N0YXRlLT53bS5za2wub3B0aW1hbDsKKwkJcmV0ID0gc2tsX3VwZGF0ZV9waXBlX3dt KGNzdGF0ZSwgJnJlc3VsdHMtPmRkYiwgcGlwZV93bSwKKwkJCQkJICZjaGFuZ2VkKTsKKwkJaWYg KHJldCkKKwkJCXJldHVybiByZXQ7CisKKwkJaWYgKGNoYW5nZWQpCisJCQlyZXN1bHRzLT5kaXJ0 eV9waXBlcyB8PSBkcm1fY3J0Y19tYXNrKGNydGMpOworCisJCWlmICgocmVzdWx0cy0+ZGlydHlf cGlwZXMgJiBkcm1fY3J0Y19tYXNrKGNydGMpKSA9PSAwKQorCQkJLyogVGhpcyBwaXBlJ3MgV00n cyBkaWQgbm90IGNoYW5nZSAqLworCQkJY29udGludWU7CisKKwkJaW50ZWxfY3N0YXRlLT51cGRh dGVfd21fcHJlID0gdHJ1ZTsKKwkJc2tsX2NvbXB1dGVfd21fcmVzdWx0cyhjcnRjLT5kZXYsIHBp cGVfd20sIHJlc3VsdHMsIGludGVsX2NydGMpOworCX0KKwogCXJldHVybiAwOwogfQogCkBAIC0z ODUzLDI2ICszODIwLDIxIEBAIHN0YXRpYyB2b2lkIHNrbF91cGRhdGVfd20oc3RydWN0IGRybV9j cnRjICpjcnRjKQogCXN0cnVjdCBza2xfd21fdmFsdWVzICpyZXN1bHRzID0gJmRldl9wcml2LT53 bS5za2xfcmVzdWx0czsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50 ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dt ID0gJmNzdGF0ZS0+d20uc2tsLm9wdGltYWw7Ci0JYm9vbCB3bV9jaGFuZ2VkOwogCi0JLyogQ2xl YXIgYWxsIGRpcnR5IGZsYWdzICovCi0JcmVzdWx0cy0+ZGlydHlfcGlwZXMgPSAwOwotCi0Jc2ts X2NsZWFyX3dtKHJlc3VsdHMsIGludGVsX2NydGMtPnBpcGUpOwotCi0Jc2tsX3VwZGF0ZV9waXBl X3dtKGNydGMtPnN0YXRlLCAmcmVzdWx0cy0+ZGRiLCBwaXBlX3dtLCAmd21fY2hhbmdlZCk7Ci0J aWYgKCF3bV9jaGFuZ2VkKQorCWlmICgocmVzdWx0cy0+ZGlydHlfcGlwZXMgJiBkcm1fY3J0Y19t YXNrKGNydGMpKSA9PSAwKQogCQlyZXR1cm47CiAKLQlza2xfY29tcHV0ZV93bV9yZXN1bHRzKGRl diwgcGlwZV93bSwgcmVzdWx0cywgaW50ZWxfY3J0Yyk7Ci0JcmVzdWx0cy0+ZGlydHlfcGlwZXMg fD0gZHJtX2NydGNfbWFzaygmaW50ZWxfY3J0Yy0+YmFzZSk7CisJaW50ZWxfY3J0Yy0+d20uYWN0 aXZlLnNrbCA9ICpwaXBlX3dtOworCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPndtLndtX211dGV4 KTsKIAotCXNrbF91cGRhdGVfb3RoZXJfcGlwZV93bShkZXYsIGNydGMsIHJlc3VsdHMpOwogCXNr bF93cml0ZV93bV92YWx1ZXMoZGV2X3ByaXYsIHJlc3VsdHMpOwogCXNrbF9mbHVzaF93bV92YWx1 ZXMoZGV2X3ByaXYsIHJlc3VsdHMpOwogCiAJLyogc3RvcmUgdGhlIG5ldyBjb25maWd1cmF0aW9u ICovCiAJZGV2X3ByaXYtPndtLnNrbF9odyA9ICpyZXN1bHRzOworCisJbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+d20ud21fbXV0ZXgpOwogfQogCiBzdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9j b25maWcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLS0gCjIuMS40CgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK