From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [RFC 6/8] drm/i915: Calculate ILK-style watermarks during atomic check (v2) Date: Wed, 1 Jul 2015 19:25:59 -0700 Message-ID: <1435803961-30079-7-git-send-email-matthew.d.roper@intel.com> References: <1435803961-30079-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id A49576E408 for ; Wed, 1 Jul 2015 19:26:45 -0700 (PDT) In-Reply-To: <1435803961-30079-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 Q2FsY3VsYXRlIHBpcGUgd2F0ZXJtYXJrcyBkdXJpbmcgYXRvbWljIGNhbGN1bGF0aW9uIHBoYXNl LCBiYXNlZCBvbiB0aGUKY29udGVudHMgb2YgdGhlIGF0b21pYyB0cmFuc2FjdGlvbidzIHN0YXRl IHN0cnVjdHVyZS4gIFdlIHN0aWxsIHByb2dyYW0KdGhlIHdhdGVybWFya3MgYXQgdGhlIHNhbWUg dGltZSB3ZSBkaWQgYmVmb3JlLCBidXQgdGhlIGNvbXB1dGF0aW9uIG5vdwpoYXBwZW5zIG11Y2gg ZWFybGllci4KCldoaWxlIHRoaXMgcGF0Y2ggaXNuJ3QgdG9vIGV4Y2l0aW5nIGJ5IGl0c2VsZiwg aXQgcGF2ZXMgdGhlIHdheSBmb3IKZnV0dXJlIHBhdGNoZXMuICBUaGUgZXZlbnR1YWwgZ29hbCAo d2hpY2ggd2lsbCBiZSByZWFsaXplZCBpbiBmdXR1cmUKcGF0Y2hlcyBpbiB0aGlzIHNlcmllcykg aXMgdG8gY2FsY3VsYXRlIG11bHRpcGxlIHNldHMgdXAgd2F0ZXJtYXJrCnZhbHVlcyB1cCBmcm9u dCwgYW5kIHRoZW4gcHJvZ3JhbSB0aGVtIGF0IGRpZmZlcmVudCB0aW1lcyAocHJlLSB2cwpwb3N0 LXZibGFuaykgb24gdGhlIHBsYXRmb3JtcyB0aGF0IG5lZWQgYSB0d28tc3RlcCB3YXRlcm1hcmsg dXBkYXRlLgoKV2hpbGUgd2UncmUgYXQgaXQsIHMvaW50ZWxfY29tcHV0ZV9waXBlX3dtL2lsa19j b21wdXRlX3BpcGVfd20vIHNpbmNlCnRoaXMgZnVuY3Rpb24gb25seSBhcHBsaWVzIHRvIElMSy1z dHlsZSB3YXRlcm1hcmtzIGFuZCB3ZSBoYXZlIGEKY29tcGxldGVseSBkaWZmZXJlbnQgZnVuY3Rp b24gZm9yIFNLTC1zdHlsZSB3YXRlcm1hcmtzLgoKTm90ZSB0aGF0IHRoZSBvcmlnaW5hbCBjb2Rl IGhhZCBhIG1lbWNtcCgpIGluIGlsa191cGRhdGVfd20oKSB0byBhdm9pZApjYWxsaW5nIGlsa19w cm9ncmFtX3dhdGVybWFya3MoKSBpZiB0aGUgd2F0ZXJtYXJrcyBoYWRuJ3QgY2hhbmdlZC4gIFRo aXMKbWVtY21wIHZhbmlzaGVzIGhlcmUsIHdoaWNoIG1lYW5zIHdlIG1heSBkbyBzb21lIHVubmVj ZXNzYXJ5IHJlc3VsdApnZW5lcmF0aW9uIGFuZCBtZXJnaW5nIGluIGNhc2VzIHdoZXJlIHdhdGVy bWFya3MgZGlkbid0IGNoYW5nZSwgYnV0IHRoZQpsb3dlci1sZXZlbCBmdW5jdGlvbiBpbGtfd3Jp dGVfd21fdmFsdWVzIGFscmVhZHkgbWFrZXMgc3VyZSB0aGF0IHdlCmRvbid0IGFjdHVhbGx5IHRy eSB0byBwcm9ncmFtIHRoZSB3YXRlcm1hcmsgcmVnaXN0ZXJzIGFnYWluLgoKdjI6IFNxdWFzaCBh IGZldyBjb21taXRzIGZyb20gdGhlIG9yaWdpbmFsIHNlcmllcyB0b2dldGhlcjsgbm8gbG9uZ2Vy CiAgICBsZWF2ZSBwcmUtY2FsY3VsYXRlZCB3bSdzIGluIGEgc2VwYXJhdGUgdGVtcG9yYXJ5IHN0 cnVjdHVyZSBzaW5jZQogICAgaXQncyBlYXNpZXIgdG8gZm9sbG93IHRoZSBsb2dpYyBpZiB3ZSBq dXN0IGN1dCBvdmVyIHRvIHVzaW5nIHRoZQogICAgcHJlLWNhbGN1bGF0ZWQgdmFsdWVzIGRpcmVj dGx5LgoKU2lnbmVkLW9mZi1ieTogTWF0dCBSb3BlciA8bWF0dGhldy5kLnJvcGVyQGludGVsLmNv bT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgMiArCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgNiArKysKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BtLmMgICAgICB8IDg3ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQogNCBm aWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaAppbmRleCA2YWE4MDgzLi4yNzc0OTc2IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKQEAgLTYyMSw2ICs2MjEsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZGlzcGxheV9mdW5jcyB7 CiAJCQkgIGludCB0YXJnZXQsIGludCByZWZjbGssCiAJCQkgIHN0cnVjdCBkcGxsICptYXRjaF9j bG9jaywKIAkJCSAgc3RydWN0IGRwbGwgKmJlc3RfY2xvY2spOworCWludCAoKmNvbXB1dGVfcGlw ZV93bSkoc3RydWN0IGRybV9jcnRjICpjcnRjLAorCQkJICAgICAgIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSk7CiAJdm9pZCAoKnVwZGF0ZV93bSkoc3RydWN0IGRybV9jcnRjICpjcnRj KTsKIAl2b2lkICgqdXBkYXRlX3Nwcml0ZV93bSkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJ CQkJIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YwppbmRleCAzNmFlM2Y3Li40NmI2MmNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCkBAIC0xMTg1Nyw2ICsxMTg1NywxMiBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWlj X2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCXJldHVybiByZXQ7CiAJfQogCisJaWYg KGRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfcGlwZV93bSkgeworCQlyZXQgPSBkZXZfcHJpdi0+ ZGlzcGxheS5jb21wdXRlX3BpcGVfd20oY3J0Yywgc3RhdGUpOworCQlpZiAocmV0KQorCQkJcmV0 dXJuIHJldDsKKwl9CisKIAlyZXR1cm4gaW50ZWxfYXRvbWljX3NldHVwX3NjYWxlcnMoZGV2LCBp bnRlbF9jcnRjLCBwaXBlX2NvbmZpZyk7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5k ZXggYzIzY2Y3ZC4uMzM1YjI0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTE0NDUs NiArMTQ0NSw4IEBAIGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUsCiBpbnQgaW50ZWxfYXRvbWljX3NldHVwX3NjYWxlcnMoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKIAlzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7CitpbnQgaW50ZWxfY2hlY2tfY3J0YyhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCisJCSAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdGF0ZSk7 CiAKIC8qIGludGVsX2F0b21pY19wbGFuZS5jICovCiBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KmludGVsX2NyZWF0ZV9wbGFuZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSk7CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYwppbmRleCAwZTI4ODA2Li5jNmU3MzVmIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3BtLmMKQEAgLTIwMzksOSArMjAzOSwxMSBAQCBzdGF0aWMgdm9pZCBpbGtfY29tcHV0ZV93 bV9sZXZlbChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJIGNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAogCQkJCSBpbnQgbGV2ZWwsCiAJCQkJ IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCisJCQkJIHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqcHJpc3RhdGUsCisJCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3Byc3Rh dGUsCisJCQkJIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqY3Vyc3RhdGUsCiAJCQkJIHN0cnVj dCBpbnRlbF93bV9sZXZlbCAqcmVzdWx0KQogewotCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxf cGxhbmU7CiAJdWludDE2X3QgcHJpX2xhdGVuY3kgPSBkZXZfcHJpdi0+d20ucHJpX2xhdGVuY3lb bGV2ZWxdOwogCXVpbnQxNl90IHNwcl9sYXRlbmN5ID0gZGV2X3ByaXYtPndtLnNwcl9sYXRlbmN5 W2xldmVsXTsKIAl1aW50MTZfdCBjdXJfbGF0ZW5jeSA9IGRldl9wcml2LT53bS5jdXJfbGF0ZW5j eVtsZXZlbF07CkBAIC0yMDUzLDI5ICsyMDU1LDExIEBAIHN0YXRpYyB2b2lkIGlsa19jb21wdXRl X3dtX2xldmVsKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJY3Vy X2xhdGVuY3kgKj0gNTsKIAl9CiAKLQlmb3JfZWFjaF9pbnRlbF9wbGFuZV9vbl9jcnRjKGRldl9w cml2LT5kZXYsIGludGVsX2NydGMsIGludGVsX3BsYW5lKSB7Ci0JCXN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSAqcHN0YXRlID0KLQkJCXRvX2ludGVsX3BsYW5lX3N0YXRlKGludGVsX3BsYW5lLT5i YXNlLnN0YXRlKTsKLQotCQlzd2l0Y2ggKGludGVsX3BsYW5lLT5iYXNlLnR5cGUpIHsKLQkJY2Fz ZSBEUk1fUExBTkVfVFlQRV9QUklNQVJZOgotCQkJcmVzdWx0LT5wcmlfdmFsID0gaWxrX2NvbXB1 dGVfcHJpX3dtKGNzdGF0ZSwgcHN0YXRlLAotCQkJCQkJCSAgICAgcHJpX2xhdGVuY3ksCi0JCQkJ CQkJICAgICBsZXZlbCk7Ci0JCQlyZXN1bHQtPmZiY192YWwgPSBpbGtfY29tcHV0ZV9mYmNfd20o Y3N0YXRlLCBwc3RhdGUsCi0JCQkJCQkJICAgICByZXN1bHQtPnByaV92YWwpOwotCQkJYnJlYWs7 Ci0JCWNhc2UgRFJNX1BMQU5FX1RZUEVfT1ZFUkxBWToKLQkJCXJlc3VsdC0+c3ByX3ZhbCA9IGls a19jb21wdXRlX3Nwcl93bShjc3RhdGUsIHBzdGF0ZSwKLQkJCQkJCQkgICAgIHNwcl9sYXRlbmN5 KTsKLQkJCWJyZWFrOwotCQljYXNlIERSTV9QTEFORV9UWVBFX0NVUlNPUjoKLQkJCXJlc3VsdC0+ Y3VyX3ZhbCA9IGlsa19jb21wdXRlX2N1cl93bShjc3RhdGUsIHBzdGF0ZSwKLQkJCQkJCQkgICAg IGN1cl9sYXRlbmN5KTsKLQkJCWJyZWFrOwotCQl9Ci0JfQotCisJcmVzdWx0LT5wcmlfdmFsID0g aWxrX2NvbXB1dGVfcHJpX3dtKGNzdGF0ZSwgcHJpc3RhdGUsCisJCQkJCSAgICAgcHJpX2xhdGVu Y3ksIGxldmVsKTsKKwlyZXN1bHQtPnNwcl92YWwgPSBpbGtfY29tcHV0ZV9zcHJfd20oY3N0YXRl LCBzcHJzdGF0ZSwgc3ByX2xhdGVuY3kpOworCXJlc3VsdC0+Y3VyX3ZhbCA9IGlsa19jb21wdXRl X2N1cl93bShjc3RhdGUsIGN1cnN0YXRlLCBjdXJfbGF0ZW5jeSk7CisJcmVzdWx0LT5mYmNfdmFs ID0gaWxrX2NvbXB1dGVfZmJjX3dtKGNzdGF0ZSwgcHJpc3RhdGUsIHJlc3VsdC0+cHJpX3ZhbCk7 CiAJcmVzdWx0LT5lbmFibGUgPSB0cnVlOwogfQogCkBAIC0yMzU1LDE1ICsyMzM5LDIwIEBAIHN0 YXRpYyB2b2lkIGlsa19jb21wdXRlX3dtX2NvbmZpZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog fQogCiAvKiBDb21wdXRlIG5ldyB3YXRlcm1hcmtzIGZvciB0aGUgcGlwZSAqLwotc3RhdGljIGJv b2wgaW50ZWxfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUs Ci0JCQkJICBzdHJ1Y3QgaW50ZWxfcGlwZV93bSAqcGlwZV93bSkKK3N0YXRpYyBpbnQgaWxrX2Nv bXB1dGVfcGlwZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkgICAgICAgc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewotCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGNzdGF0 ZS0+YmFzZS5jcnRjOworCXN0cnVjdCBpbnRlbF9waXBlX3dtICpwaXBlX3dtOwogCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50 ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJc3RydWN0IGRybV9jcnRjX3N0YXRlICpj czsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gTlVMTDsKIAlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKmludGVsX3BsYW5lOworCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBzOworCXN0 cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqcHJpc3RhdGUgPSBOVUxMOwogCXN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqc3Byc3RhdGUgPSBOVUxMOworCXN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq Y3Vyc3RhdGUgPSBOVUxMOwogCWludCBsZXZlbCwgbWF4X2xldmVsID0gaWxrX3dtX21heF9sZXZl bChkZXYpOwogCS8qIExQMCB3YXRlcm1hcmsgbWF4aW11bXMgZGVwZW5kIG9uIHRoaXMgcGlwZSBh bG9uZSAqLwogCXN0cnVjdCBpbnRlbF93bV9jb25maWcgY29uZmlnID0gewpAQCAtMjM3MSwxMSAr MjM2MCwyNiBAQCBzdGF0aWMgYm9vbCBpbnRlbF9jb21wdXRlX3BpcGVfd20oc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNzdGF0ZSwKIAl9OwogCXN0cnVjdCBpbGtfd21fbWF4aW11bXMgbWF4Owog CisJY3MgPSBkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKKwlpZiAoSVNf RVJSKGNzKSkKKwkJcmV0dXJuIFBUUl9FUlIoY3MpOworCWVsc2UKKwkJY3N0YXRlID0gdG9faW50 ZWxfY3J0Y19zdGF0ZShjcyk7CisKKwlwaXBlX3dtID0gJmNzdGF0ZS0+d20uYWN0aXZlLmlsazsK KwogCWZvcl9lYWNoX2ludGVsX3BsYW5lX29uX2NydGMoZGV2LCBpbnRlbF9jcnRjLCBpbnRlbF9w bGFuZSkgewotCQlpZiAoaW50ZWxfcGxhbmUtPmJhc2UudHlwZSA9PSBEUk1fUExBTkVfVFlQRV9P VkVSTEFZKSB7Ci0JCQlzcHJzdGF0ZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRlKGludGVsX3BsYW5l LT5iYXNlLnN0YXRlKTsKLQkJCWJyZWFrOwotCQl9CisJCXBzID0gZHJtX2F0b21pY19nZXRfcGxh bmVfc3RhdGUoc3RhdGUsCisJCQkJCQkmaW50ZWxfcGxhbmUtPmJhc2UpOworCQlpZiAoSVNfRVJS KHBzKSkKKwkJCXJldHVybiBQVFJfRVJSKHBzKTsKKworCQlpZiAoaW50ZWxfcGxhbmUtPmJhc2Uu dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQorCQkJcHJpc3RhdGUgPSB0b19pbnRlbF9w bGFuZV9zdGF0ZShwcyk7CisJCWVsc2UgaWYgKGludGVsX3BsYW5lLT5iYXNlLnR5cGUgPT0gRFJN X1BMQU5FX1RZUEVfT1ZFUkxBWSkKKwkJCXNwcnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUo cHMpOworCQllbHNlIGlmIChpbnRlbF9wbGFuZS0+YmFzZS50eXBlID09IERSTV9QTEFORV9UWVBF X0NVUlNPUikKKwkJCWN1cnN0YXRlID0gdG9faW50ZWxfcGxhbmVfc3RhdGUocHMpOwogCX0KIAog CWNvbmZpZy5zcHJpdGVzX2VuYWJsZWQgPSBzcHJzdGF0ZS0+dmlzaWJsZTsKQEAgLTIzODQsNyAr MjM4OCw3IEBAIHN0YXRpYyBib29sIGludGVsX2NvbXB1dGVfcGlwZV93bShzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3N0YXRlLAogCQlkcm1fcmVjdF9oZWlnaHQoJnNwcnN0YXRlLT5kc3QpICE9 IGRybV9yZWN0X2hlaWdodCgmc3Byc3RhdGUtPnNyYykgPj4gMTY7CiAKIAlwaXBlX3dtLT5waXBl X2VuYWJsZWQgPSBjc3RhdGUtPmJhc2UuYWN0aXZlOwotCXBpcGVfd20tPnNwcml0ZXNfZW5hYmxl ZCA9IHNwcnN0YXRlLT52aXNpYmxlOworCXBpcGVfd20tPnNwcml0ZXNfZW5hYmxlZCA9IGNvbmZp Zy5zcHJpdGVzX2VuYWJsZWQ7CiAJcGlwZV93bS0+c3ByaXRlc19zY2FsZWQgPSBjb25maWcuc3By aXRlc19zY2FsZWQ7CiAKIAkvKiBJTEsvU05COiBMUDIrIHdhdGVybWFya3Mgb25seSB3L28gc3By aXRlcyAqLwpAQCAtMjM5NSw3ICsyMzk5LDggQEAgc3RhdGljIGJvb2wgaW50ZWxfY29tcHV0ZV9w aXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJaWYgKGNvbmZpZy5zcHJp dGVzX3NjYWxlZCkKIAkJbWF4X2xldmVsID0gMDsKIAotCWlsa19jb21wdXRlX3dtX2xldmVsKGRl dl9wcml2LCBpbnRlbF9jcnRjLCAwLCBjc3RhdGUsICZwaXBlX3dtLT53bVswXSk7CisJaWxrX2Nv bXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYsIGludGVsX2NydGMsIDAsIGNzdGF0ZSwKKwkJCSAgICAg cHJpc3RhdGUsIHNwcnN0YXRlLCBjdXJzdGF0ZSwgJnBpcGVfd20tPndtWzBdKTsKIAogCWlmIChJ U19IQVNXRUxMKGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpCiAJCXBpcGVfd20tPmxpbmV0aW1l ID0gaHN3X2NvbXB1dGVfbGluZXRpbWVfd20oZGV2LCBjcnRjKTsKQEAgLTI0MDUsMTQgKzI0MTAs MTUgQEAgc3RhdGljIGJvb2wgaW50ZWxfY29tcHV0ZV9waXBlX3dtKHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpjc3RhdGUsCiAKIAkvKiBBdCBsZWFzdCBMUDAgbXVzdCBiZSB2YWxpZCAqLwogCWlm ICghaWxrX3ZhbGlkYXRlX3dtX2xldmVsKDAsICZtYXgsICZwaXBlX3dtLT53bVswXSkpCi0JCXJl dHVybiBmYWxzZTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAKIAlpbGtfY29tcHV0ZV93bV9yZWdfbWF4 aW11bXMoZGV2LCAxLCAmbWF4KTsKIAogCWZvciAobGV2ZWwgPSAxOyBsZXZlbCA8PSBtYXhfbGV2 ZWw7IGxldmVsKyspIHsKIAkJc3RydWN0IGludGVsX3dtX2xldmVsIHdtID0ge307CiAKLQkJaWxr X2NvbXB1dGVfd21fbGV2ZWwoZGV2X3ByaXYsIGludGVsX2NydGMsIGxldmVsLCBjc3RhdGUsICZ3 bSk7CisJCWlsa19jb21wdXRlX3dtX2xldmVsKGRldl9wcml2LCBpbnRlbF9jcnRjLCBsZXZlbCwg Y3N0YXRlLAorCQkJCSAgICAgcHJpc3RhdGUsIHNwcnN0YXRlLCBjdXJzdGF0ZSwgJndtKTsKIAog CQkvKgogCQkgKiBEaXNhYmxlIGFueSB3YXRlcm1hcmsgbGV2ZWwgdGhhdCBleGNlZWRzIHRoZQpA QCAtMjQyNSw3ICsyNDMxLDcgQEAgc3RhdGljIGJvb2wgaW50ZWxfY29tcHV0ZV9waXBlX3dtKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGUsCiAJCXBpcGVfd20tPndtW2xldmVsXSA9IHdt OwogCX0KIAotCXJldHVybiB0cnVlOworCXJldHVybiAwOwogfQogCiAvKgpAQCAtMzc1Miw3ICsz NzU4LDYgQEAgc3RhdGljIHZvaWQgaWxrX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjcnRjLT5kZXYp OwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsK IAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShj cnRjLT5zdGF0ZSk7Ci0Jc3RydWN0IGludGVsX3BpcGVfd20gcGlwZV93bSA9IHt9OwogCiAJLyoK IAkgKiBJVkIgd29ya2Fyb3VuZDogbXVzdCBkaXNhYmxlIGxvdyBwb3dlciB3YXRlcm1hcmtzIGZv ciBhdCBsZWFzdApAQCAtMzc2NiwxMyArMzc3MSw2IEBAIHN0YXRpYyB2b2lkIGlsa191cGRhdGVf d20oc3RydWN0IGRybV9jcnRjICpjcnRjKQogCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoY3J0Yy0+ ZGV2LCBpbnRlbF9jcnRjLT5waXBlKTsKIAl9CiAKLQlpbnRlbF9jb21wdXRlX3BpcGVfd20oY3N0 YXRlLCAmcGlwZV93bSk7Ci0KLQlpZiAoIW1lbWNtcCgmY3N0YXRlLT53bS5hY3RpdmUuaWxrLCAm cGlwZV93bSwgc2l6ZW9mKHBpcGVfd20pKSkKLQkJcmV0dXJuOwotCi0JY3N0YXRlLT53bS5hY3Rp dmUuaWxrID0gcGlwZV93bTsKLQogCWlsa19wcm9ncmFtX3dhdGVybWFya3MoZGV2X3ByaXYpOwog fQogCkBAIC03MDQ5LDYgKzcwNDcsNyBAQCB2b2lkIGludGVsX2luaXRfcG0oc3RydWN0IGRybV9k ZXZpY2UgKmRldikKIAkJICAgICghSVNfR0VONShkZXYpICYmIGRldl9wcml2LT53bS5wcmlfbGF0 ZW5jeVswXSAmJgogCQkgICAgIGRldl9wcml2LT53bS5zcHJfbGF0ZW5jeVswXSAmJiBkZXZfcHJp di0+d20uY3VyX2xhdGVuY3lbMF0pKSB7CiAJCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20g PSBpbGtfdXBkYXRlX3dtOworCQkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9waXBlX3dtID0g aWxrX2NvbXB1dGVfcGlwZV93bTsKIAkJfSBlbHNlIHsKIAkJCURSTV9ERUJVR19LTVMoIkZhaWxl ZCB0byByZWFkIGRpc3BsYXkgcGxhbmUgbGF0ZW5jeS4gIgogCQkJCSAgICAgICJEaXNhYmxlIEN4 U1JcbiIpOwotLSAKMi4xLjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==