From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [CI 15/17] drm/i915/gen9: Calculate watermarks during atomic 'check' Date: Thu, 12 May 2016 07:06:09 -0700 Message-ID: <1463061971-19638-16-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 B3BBF6E8BD 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 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 aW50ZWwuY29tPgpUZXN0ZWQtYnk6IERhbmllbCBTdG9uZSA8ZGFuaWVsc0Bjb2xsYWJvcmEuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAgMiArLQogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCAxMzggKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgNTIgaW5zZXJ0aW9ucygrKSwgOTAgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDMzZjZjNGIuLjc5MGFl N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTEzNjAxLDcgKzEzNjAx LDcgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29tbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCiAJZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0ZShkZXYsIHN0YXRlKTsKIAlkZXZfcHJp di0+d20uY29uZmlnID0gaW50ZWxfc3RhdGUtPndtX2NvbmZpZzsKIAlkZXZfcHJpdi0+d20uZGlz dHJ1c3RfYmlvc193bSA9IGZhbHNlOwotCWRldl9wcml2LT53bS5za2xfcmVzdWx0cy5kZGIgPSBp bnRlbF9zdGF0ZS0+ZGRiOworCWRldl9wcml2LT53bS5za2xfcmVzdWx0cyA9IGludGVsX3N0YXRl LT53bV9yZXN1bHRzOwogCWludGVsX3NoYXJlZF9kcGxsX2NvbW1pdChzdGF0ZSk7CiAKIAlpZiAo aW50ZWxfc3RhdGUtPm1vZGVzZXQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggYzlh NGM0Mi4uYjQ3Nzk3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTMxNCw3ICszMTQs NyBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlIHsKIAlib29sIHNraXBfaW50ZXJtZWRpYXRl X3dtOwogCiAJLyogR2VuOSsgb25seSAqLwotCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gZGRi OworCXN0cnVjdCBza2xfd21fdmFsdWVzIHdtX3Jlc3VsdHM7CiB9OwogCiBzdHJ1Y3QgaW50ZWxf cGxhbmVfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggMWQ4NDA3YS4uM2IwMGUw ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC0zMjIxLDIzICszMjIxLDYgQEAgc3RhdGlj IHVpbnQzMl90IHNrbF93bV9tZXRob2QyKHVpbnQzMl90IHBpeGVsX3JhdGUsIHVpbnQzMl90IHBp cGVfaHRvdGFsLAogCXJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBib29sIHNrbF9kZGJfYWxsb2Nh dGlvbl9jaGFuZ2VkKGNvbnN0IHN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gKm5ld19kZGIsCi0J CQkJICAgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQotewotCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCWNvbnN0IHN0cnVjdCBz a2xfZGRiX2FsbG9jYXRpb24gKmN1cl9kZGIgPSAmZGV2X3ByaXYtPndtLnNrbF9ody5kZGI7Ci0K LQkvKgotCSAqIElmIGRkYiBhbGxvY2F0aW9uIG9mIHBpcGVzIGNoYW5nZWQsIGl0IG1heSByZXF1 aXJlIHJlY2FsY3VsYXRpb24gb2YKLQkgKiB3YXRlcm1hcmtzCi0JICovCi0JaWYgKG1lbWNtcChu ZXdfZGRiLT5waXBlLCBjdXJfZGRiLT5waXBlLCBzaXplb2YobmV3X2RkYi0+cGlwZSkpKQotCQly ZXR1cm4gdHJ1ZTsKLQotCXJldHVybiBmYWxzZTsKLX0KLQogc3RhdGljIGludCBza2xfY29tcHV0 ZV9wbGFuZV93bShjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAkJCQlzdHJ1Y3QgaW50ZWxfcGxhbmVf c3RhdGUgKmludGVsX3BzdGF0ZSwKQEAgLTM3MTYsNjYgKzM2OTksOSBAQCBzdGF0aWMgaW50IHNr bF91cGRhdGVfcGlwZV93bShzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNzdGF0ZSwKIAllbHNlCiAJ CSpjaGFuZ2VkID0gdHJ1ZTsKIAotCWludGVsX2NydGMtPndtLmFjdGl2ZS5za2wgPSAqcGlwZV93 bTsKLQogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBza2xfdXBkYXRlX290aGVyX3BpcGVf d20oc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJCQkgICAgIHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKLQkJCQkgICAgIHN0cnVjdCBza2xfd21fdmFsdWVzICpyKQotewotCXN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjOwotCXN0cnVjdCBpbnRlbF9jcnRjICp0aGlzX2NydGMgPSB0b19pbnRl bF9jcnRjKGNydGMpOwotCi0JLyoKLQkgKiBJZiB0aGUgV00gdXBkYXRlIGhhc24ndCBjaGFuZ2Vk IHRoZSBhbGxvY2F0aW9uIGZvciB0aGlzX2NydGMgKHRoZQotCSAqIGNydGMgd2UgYXJlIGN1cnJl bnRseSBjb21wdXRpbmcgdGhlIG5ldyBXTSB2YWx1ZXMgZm9yKSwgb3RoZXIKLQkgKiBlbmFibGVk IGNydGNzIHdpbGwga2VlcCB0aGUgc2FtZSBhbGxvY2F0aW9uIGFuZCB3ZSBkb24ndCBuZWVkIHRv Ci0JICogcmVjb21wdXRlIGFueXRoaW5nIGZvciB0aGVtLgotCSAqLwotCWlmICghc2tsX2RkYl9h bGxvY2F0aW9uX2NoYW5nZWQoJnItPmRkYiwgdGhpc19jcnRjKSkKLQkJcmV0dXJuOwotCi0JLyoK LQkgKiBPdGhlcndpc2UsIGJlY2F1c2Ugb2YgdGhpc19jcnRjIGJlaW5nIGZyZXNobHkgZW5hYmxl ZC9kaXNhYmxlZCwgdGhlCi0JICogb3RoZXIgYWN0aXZlIHBpcGVzIG5lZWQgbmV3IEREQiBhbGxv Y2F0aW9uIGFuZCBXTSB2YWx1ZXMuCi0JICovCi0JZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGlu dGVsX2NydGMpIHsKLQkJc3RydWN0IHNrbF9waXBlX3dtIHBpcGVfd20gPSB7fTsKLQkJYm9vbCB3 bV9jaGFuZ2VkOwotCi0JCWlmICh0aGlzX2NydGMtPnBpcGUgPT0gaW50ZWxfY3J0Yy0+cGlwZSkK LQkJCWNvbnRpbnVlOwotCi0JCWlmICghaW50ZWxfY3J0Yy0+YWN0aXZlKQotCQkJY29udGludWU7 Ci0KLQkJc2tsX3VwZGF0ZV9waXBlX3dtKGludGVsX2NydGMtPmJhc2Uuc3RhdGUsCi0JCQkJICAg JnItPmRkYiwgJnBpcGVfd20sICZ3bV9jaGFuZ2VkKTsKLQotCQkvKgotCQkgKiBJZiB3ZSBlbmQg dXAgcmUtY29tcHV0aW5nIHRoZSBvdGhlciBwaXBlIFdNIHZhbHVlcywgaXQncwotCQkgKiBiZWNh dXNlIGl0IHdhcyByZWFsbHkgbmVlZGVkLCBzbyB3ZSBleHBlY3QgdGhlIFdNIHZhbHVlcyB0bwot CQkgKiBiZSBkaWZmZXJlbnQuCi0JCSAqLwotCQlXQVJOX09OKCF3bV9jaGFuZ2VkKTsKLQotCQlz a2xfY29tcHV0ZV93bV9yZXN1bHRzKGRldiwgJnBpcGVfd20sIHIsIGludGVsX2NydGMpOwotCQly LT5kaXJ0eV9waXBlcyB8PSBkcm1fY3J0Y19tYXNrKCZpbnRlbF9jcnRjLT5iYXNlKTsKLQl9Ci19 Ci0KLXN0YXRpYyB2b2lkIHNrbF9jbGVhcl93bShzdHJ1Y3Qgc2tsX3dtX3ZhbHVlcyAqd2F0ZXJt YXJrcywgZW51bSBwaXBlIHBpcGUpCi17Ci0Jd2F0ZXJtYXJrcy0+d21fbGluZXRpbWVbcGlwZV0g PSAwOwotCW1lbXNldCh3YXRlcm1hcmtzLT5wbGFuZVtwaXBlXSwgMCwKLQkgICAgICAgc2l6ZW9m KHVpbnQzMl90KSAqIDggKiBJOTE1X01BWF9QTEFORVMpOwotCW1lbXNldCh3YXRlcm1hcmtzLT5w bGFuZV90cmFuc1twaXBlXSwKLQkgICAgICAgMCwgc2l6ZW9mKHVpbnQzMl90KSAqIEk5MTVfTUFY X1BMQU5FUyk7Ci0Jd2F0ZXJtYXJrcy0+cGxhbmVfdHJhbnNbcGlwZV1bUExBTkVfQ1VSU09SXSA9 IDA7Ci19Ci0KIHN0YXRpYyBpbnQKIHNrbF9jb21wdXRlX2RkYihzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpCiB7CkBAIC0zNzgzLDYgKzM3MDksNyBAQCBza2xfY29tcHV0ZV9kZGIoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRl bF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7CiAJc3RydWN0IGludGVsX2Ny dGMgKmludGVsX2NydGM7CisJc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiAqZGRiID0gJmludGVs X3N0YXRlLT53bV9yZXN1bHRzLmRkYjsKIAl1bnNpZ25lZCByZWFsbG9jX3BpcGVzID0gZGV2X3By aXYtPmFjdGl2ZV9jcnRjczsKIAlpbnQgcmV0OwogCkBAIC0zODA4LDggKzM3MzUsMTAgQEAgc2ts X2NvbXB1dGVfZGRiKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkgKiBhbnkgb3Ro ZXIgZGlzcGxheSB1cGRhdGVzIHJhY2Ugd2l0aCB0aGlzIHRyYW5zYWN0aW9uLCBzbyB3ZSBuZWVk CiAJICogdG8gZ3JhYiB0aGUgbG9jayBvbiAqYWxsKiBDUlRDJ3MuCiAJICovCi0JaWYgKGludGVs X3N0YXRlLT5hY3RpdmVfcGlwZV9jaGFuZ2VzKQorCWlmIChpbnRlbF9zdGF0ZS0+YWN0aXZlX3Bp cGVfY2hhbmdlcykgewogCQlyZWFsbG9jX3BpcGVzID0gfjA7CisJCWludGVsX3N0YXRlLT53bV9y ZXN1bHRzLmRpcnR5X3BpcGVzID0gfjA7CisJfQogCiAJZm9yX2VhY2hfaW50ZWxfY3J0Y19tYXNr KGRldiwgaW50ZWxfY3J0YywgcmVhbGxvY19waXBlcykgewogCQlzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqY3N0YXRlOwpAQCAtMzgxOCw3ICszNzQ3LDcgQEAgc2tsX2NvbXB1dGVfZGRiKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJaWYgKElTX0VSUihjc3RhdGUpKQogCQkJcmV0 dXJuIFBUUl9FUlIoY3N0YXRlKTsKIAotCQlyZXQgPSBza2xfYWxsb2NhdGVfcGlwZV9kZGIoY3N0 YXRlLCAmaW50ZWxfc3RhdGUtPmRkYik7CisJCXJldCA9IHNrbF9hbGxvY2F0ZV9waXBlX2RkYihj c3RhdGUsIGRkYik7CiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KQEAgLTM4MzEsOCAr Mzc2MCwxMSBAQCBza2xfY29tcHV0ZV93bShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp CiB7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0 YXRlOwotCWludCByZXQsIGk7CisJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3Rh dGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOworCXN0cnVjdCBza2xfd21fdmFsdWVz ICpyZXN1bHRzID0gJmludGVsX3N0YXRlLT53bV9yZXN1bHRzOworCXN0cnVjdCBza2xfcGlwZV93 bSAqcGlwZV93bTsKIAlib29sIGNoYW5nZWQgPSBmYWxzZTsKKwlpbnQgcmV0LCBpOwogCiAJLyoK IAkgKiBJZiB0aGlzIHRyYW5zYWN0aW9uIGlzbid0IGFjdHVhbGx5IHRvdWNoaW5nIGFueSBDUlRD J3MsIGRvbid0CkBAIC0zODQ3LDEwICszNzc5LDQ1IEBAIHNrbF9jb21wdXRlX3dtKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAlpZiAoIWNoYW5nZWQpCiAJCXJldHVybiAwOwogCisJ LyogQ2xlYXIgYWxsIGRpcnR5IGZsYWdzICovCisJcmVzdWx0cy0+ZGlydHlfcGlwZXMgPSAwOwor CiAJcmV0ID0gc2tsX2NvbXB1dGVfZGRiKHN0YXRlKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0 OwogCisJLyoKKwkgKiBDYWxjdWxhdGUgV00ncyBmb3IgYWxsIHBpcGVzIHRoYXQgYXJlIHBhcnQg b2YgdGhpcyB0cmFuc2FjdGlvbi4KKwkgKiBOb3RlIHRoYXQgdGhlIEREQiBhbGxvY2F0aW9uIGFi b3ZlIG1heSBoYXZlIGFkZGVkIG1vcmUgQ1JUQydzIHRoYXQKKwkgKiB3ZXJlbid0IG90aGVyd2lz ZSBiZWluZyBtb2RpZmllZCAoYW5kIHNldCBiaXRzIGluIGRpcnR5X3BpcGVzKSBpZgorCSAqIHBp cGUgYWxsb2NhdGlvbnMgaGFkIHRvIGNoYW5nZS4KKwkgKgorCSAqIEZJWE1FOiAgTm93IHRoYXQg d2UncmUgZG9pbmcgdGhpcyBpbiB0aGUgYXRvbWljIGNoZWNrIHBoYXNlLCB3ZQorCSAqIHNob3Vs ZCBhbGxvdyBza2xfdXBkYXRlX3BpcGVfd20oKSB0byByZXR1cm4gZmFpbHVyZSBpbiBjYXNlcyB3 aGVyZQorCSAqIG5vIHN1aXRhYmxlIHdhdGVybWFyayB2YWx1ZXMgY2FuIGJlIGZvdW5kLgorCSAq LworCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNzdGF0ZSwgaSkgeworCQlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJCXN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICppbnRlbF9jc3RhdGUgPQorCQkJdG9faW50ZWxfY3J0Y19z dGF0ZShjc3RhdGUpOworCisJCXBpcGVfd20gPSAmaW50ZWxfY3N0YXRlLT53bS5za2wub3B0aW1h bDsKKwkJcmV0ID0gc2tsX3VwZGF0ZV9waXBlX3dtKGNzdGF0ZSwgJnJlc3VsdHMtPmRkYiwgcGlw ZV93bSwKKwkJCQkJICZjaGFuZ2VkKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7CisKKwkJ aWYgKGNoYW5nZWQpCisJCQlyZXN1bHRzLT5kaXJ0eV9waXBlcyB8PSBkcm1fY3J0Y19tYXNrKGNy dGMpOworCisJCWlmICgocmVzdWx0cy0+ZGlydHlfcGlwZXMgJiBkcm1fY3J0Y19tYXNrKGNydGMp KSA9PSAwKQorCQkJLyogVGhpcyBwaXBlJ3MgV00ncyBkaWQgbm90IGNoYW5nZSAqLworCQkJY29u dGludWU7CisKKwkJaW50ZWxfY3N0YXRlLT51cGRhdGVfd21fcHJlID0gdHJ1ZTsKKwkJc2tsX2Nv bXB1dGVfd21fcmVzdWx0cyhjcnRjLT5kZXYsIHBpcGVfd20sIHJlc3VsdHMsIGludGVsX2NydGMp OworCX0KKwogCXJldHVybiAwOwogfQogCkBAIC0zODYyLDI2ICszODI5LDIxIEBAIHN0YXRpYyB2 b2lkIHNrbF91cGRhdGVfd20oc3RydWN0IGRybV9jcnRjICpjcnRjKQogCXN0cnVjdCBza2xfd21f dmFsdWVzICpyZXN1bHRzID0gJmRldl9wcml2LT53bS5za2xfcmVzdWx0czsKIAlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7 CiAJc3RydWN0IHNrbF9waXBlX3dtICpwaXBlX3dtID0gJmNzdGF0ZS0+d20uc2tsLm9wdGltYWw7 Ci0JYm9vbCB3bV9jaGFuZ2VkOwogCi0JLyogQ2xlYXIgYWxsIGRpcnR5IGZsYWdzICovCi0JcmVz dWx0cy0+ZGlydHlfcGlwZXMgPSAwOwotCi0Jc2tsX2NsZWFyX3dtKHJlc3VsdHMsIGludGVsX2Ny dGMtPnBpcGUpOwotCi0Jc2tsX3VwZGF0ZV9waXBlX3dtKGNydGMtPnN0YXRlLCAmcmVzdWx0cy0+ ZGRiLCBwaXBlX3dtLCAmd21fY2hhbmdlZCk7Ci0JaWYgKCF3bV9jaGFuZ2VkKQorCWlmICgocmVz dWx0cy0+ZGlydHlfcGlwZXMgJiBkcm1fY3J0Y19tYXNrKGNydGMpKSA9PSAwKQogCQlyZXR1cm47 CiAKLQlza2xfY29tcHV0ZV93bV9yZXN1bHRzKGRldiwgcGlwZV93bSwgcmVzdWx0cywgaW50ZWxf Y3J0Yyk7Ci0JcmVzdWx0cy0+ZGlydHlfcGlwZXMgfD0gZHJtX2NydGNfbWFzaygmaW50ZWxfY3J0 Yy0+YmFzZSk7CisJaW50ZWxfY3J0Yy0+d20uYWN0aXZlLnNrbCA9ICpwaXBlX3dtOworCisJbXV0 ZXhfbG9jaygmZGV2X3ByaXYtPndtLndtX211dGV4KTsKIAotCXNrbF91cGRhdGVfb3RoZXJfcGlw ZV93bShkZXYsIGNydGMsIHJlc3VsdHMpOwogCXNrbF93cml0ZV93bV92YWx1ZXMoZGV2X3ByaXYs IHJlc3VsdHMpOwogCXNrbF9mbHVzaF93bV92YWx1ZXMoZGV2X3ByaXYsIHJlc3VsdHMpOwogCiAJ Lyogc3RvcmUgdGhlIG5ldyBjb25maWd1cmF0aW9uICovCiAJZGV2X3ByaXYtPndtLnNrbF9odyA9 ICpyZXN1bHRzOworCisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+d20ud21fbXV0ZXgpOwogfQog CiBzdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93bV9jb25maWcoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKLS0gCjIuMS40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK