From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH v3 08/16] drm/i915/gen9: Compute DDB allocation at atomic check time (v2) Date: Thu, 21 Apr 2016 16:17:02 -0700 Message-ID: <1461280630-7477-9-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 0226B6EDCC for ; Thu, 21 Apr 2016 23:18:34 +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 Q2FsY3VsYXRlIHRoZSBEREIgYmxvY2tzIG5lZWRlZCB0byBzYXRpc2Z5IHRoZSBjdXJyZW50IGF0 b21pYwp0cmFuc2FjdGlvbiBhdCBhdG9taWMgY2hlY2sgdGltZS4gIFRoaXMgaXMgYSBwcmVyZXF1 aXNpdGUgdG8gY2FsY3VsYXRpbmcKU0tMIHdhdGVybWFya3MgZHVyaW5nIHRoZSAnY2hlY2snIHBo YXNlIGFuZCByZWplY3RpbmcgYW55IGNvbmZpZ3VyYXRpb25zCnRoYXQgd2UgY2FuJ3QgZmluZCB2 YWxpZCB3YXRlcm1hcmtzIGZvci4KCkR1ZSB0byB0aGUgbmF0dXJlIG9mIEREQiBhbGxvY2F0aW9u LCBpdCdzIHBvc3NpYmxlIGZvciB0aGUgYWRkaXRpb24gb2YgYQpuZXcgQ1JUQyB0byBtYWtlIHRo ZSB3YXRlcm1hcmsgY29uZmlndXJhdGlvbiBhbHJlYWR5IGluIHVzZSBvbiBhbm90aGVyLAp1bmNo YW5nZWQgQ1JUQyBiZWNvbWUgaW52YWxpZC4gIEEgY2hhbmdlIGluIHdoaWNoIENSVEMncyBhcmUg YWN0aXZlCnRyaWdnZXJzIGEgcmVjb21wdXRlIG9mIHRoZSBlbnRpcmUgRERCLCB3aGljaCB1bmZv cnR1bmF0ZWx5IG1lYW5zIHdlCm5lZWQgdG8gZGlzYWxsb3cgYW55IG90aGVyIGF0b21pYyBjb21t aXRzIGZyb20gcmFjaW5nIHdpdGggc3VjaCBhbgp1cGRhdGUuICBJZiB0aGUgYWN0aXZlIENSVEMn cyBjaGFuZ2UsIHdlIG5lZWQgdG8gZ3JhYiB0aGUgbG9jayBvbiBhbGwKQ1JUQydzIGFuZCBydW4g YWxsIENSVEMncyB0aHJvdWdoIHRoZWlyICdjaGVjaycgaGFuZGxlciB0byByZWNvbXB1dGUgYW5k CnJlLWNoZWNrIHRoZWlyIHBlci1DUlRDIEREQiBhbGxvY2F0aW9ucy4KCk5vdGUgdGhhdCB3aXRo IHRoaXMgcGF0Y2ggd2Ugb25seSBjb21wdXRlIHRoZSBEREIgYWxsb2NhdGlvbiBidXQgd2UKZG9u J3QgYWN0dWFsbHkgdXNlIHRoZSBjb21wdXRlZCB2YWx1ZXMgZHVyaW5nIHdhdGVybWFyayBwcm9n cmFtbWluZyB5ZXQuCkZvciBlYXNlIG9mIHJldmlldy90ZXN0aW5nL2Jpc2VjdGluZywgd2Ugc3Rp bGwgcmVjb21wdXRlIHRoZSBEREIgYXQKd2F0ZXJtYXJrIHByb2dyYW1taW5nIHRpbWUgYW5kIGp1 c3QgV0FSTigpIGlmIGl0IGRvZXNuJ3QgbWF0Y2ggdGhlCnByZWNvbXB1dGVkIHZhbHVlcy4gIEEg ZnV0dXJlIHBhdGNoIHdpbGwgc3dpdGNoIG92ZXIgdG8gdXNpbmcgdGhlCnByZWNvbXB1dGVkIHZh bHVlcyBvbmNlIHdlJ3JlIHN1cmUgdGhleSdyZSBiZWluZyBwcm9wZXJseSBjb21wdXRlZC4KCkFu b3RoZXIgY2xhcmlmeWluZyBub3RlOiAgRERCIGFsbG9jYXRpb24gaXRzZWxmIHNob3VsZG4ndCBl dmVyIGZhaWwgd2l0aAp0aGUgYWxnb3JpdGhtIHdlIHVzZSB0b2RheSAoaS5lLiwgd2UgaGF2ZSBl bm91Z2ggRERCIGJsb2NrcyBvbiBCWFQgdG8Kc3VwcG9ydCB0aGUgbWluaW11bSBuZWVkcyBvZiB0 aGUgd29yc3QtY2FzZSBzY2VuYXJpbyBvZiBldmVyeSBwaXBlL3BsYW5lCmVuYWJsZWQgYXQgZnVs bCBzaXplKS4gIEhvd2V2ZXIgdGhlIHdhdGVybWFya3MgY2FsY3VsYXRpb25zIGJhc2VkIG9uIHRo ZQpEREIgbWF5IGZhaWwgYW5kIHdlJ2xsIGJlIG1vdmluZyB0aG9zZSB0byB0aGUgYXRvbWljIGNo ZWNrIGFzIHdlbGwgaW4KZnV0dXJlIHBhdGNoZXMuCgp2MjoKIC0gU2tpcCBEREIgY2FsY3VsYXRp b25zIGluIHRoZSByYXJlIGNhc2Ugd2hlcmUgb3VyIHRyYW5zYWN0aW9uIGRvZXNuJ3QKICAgYWN0 dWFsbHkgdG91Y2ggYW55IENSVEMncyBhdCBhbGwuICBBc3N1bWluZyBhdCBsZWFzdCBvbmUgQ1JU QyBzdGF0ZQogICBpcyBwcmVzZW50IGluIG91ciB0cmFuc2FjdGlvbiwgdGhlbiBpdCBtZWFucyB3 ZSBjYW4ndCByYWNlIHdpdGggYW55CiAgIHRyYW5zYWN0aW9ucyB0aGF0IHdvdWxkIHVwZGF0ZSBk ZXZfcHJpdi0+YWN0aXZlX2NydGNzICh3aGljaCByZXF1aXJlcwogICBfYWxsXyBDUlRDIGxvY2tz KS4KClNpZ25lZC1vZmYtYnk6IE1hdHQgUm9wZXIgPG1hdHRoZXcuZC5yb3BlckBpbnRlbC5jb20+ ClJldmlld2VkLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXgu aW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICA1 ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTggKysrKysrKysr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgIDMgKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMgICAgICB8IDcwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA5NiBpbnNlcnRpb25zKCspCgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKaW5kZXggMjc1ZmJhNC4uY2YwZDM3YiAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCkBAIC0zMzksNiArMzM5LDEwIEBAIHN0cnVjdCBpOTE1X2hvdHBsdWcgewogI2RlZmlu ZSBmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwgaW50ZWxfY3J0YykgXAogCWxpc3RfZm9yX2VhY2hf ZW50cnkoaW50ZWxfY3J0YywgJmRldi0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBiYXNlLmhlYWQp CiAKKyNkZWZpbmUgZm9yX2VhY2hfaW50ZWxfY3J0Y19tYXNrKGRldiwgaW50ZWxfY3J0YywgY3J0 Y19tYXNrKSBcCisJbGlzdF9mb3JfZWFjaF9lbnRyeShpbnRlbF9jcnRjLCAmZGV2LT5tb2RlX2Nv bmZpZy5jcnRjX2xpc3QsIGJhc2UuaGVhZCkgXAorCQlmb3JfZWFjaF9pZiAoKGNydGNfbWFzaykg JiAoMSA8PCBkcm1fY3J0Y19pbmRleCgmaW50ZWxfY3J0Yy0+YmFzZSkpKQorCiAjZGVmaW5lIGZv cl9lYWNoX2ludGVsX2VuY29kZXIoZGV2LCBpbnRlbF9lbmNvZGVyKQkJXAogCWxpc3RfZm9yX2Vh Y2hfZW50cnkoaW50ZWxfZW5jb2RlciwJCQlcCiAJCQkgICAgJihkZXYpLT5tb2RlX2NvbmZpZy5l bmNvZGVyX2xpc3QsCVwKQEAgLTU5NCw2ICs1OTgsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZGlzcGxh eV9mdW5jcyB7CiAJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpuZXdzdGF0ZSk7 CiAJdm9pZCAoKmluaXRpYWxfd2F0ZXJtYXJrcykoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNz dGF0ZSk7CiAJdm9pZCAoKm9wdGltaXplX3dhdGVybWFya3MpKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjc3RhdGUpOworCWludCAoKmNvbXB1dGVfZ2xvYmFsX3dhdGVybWFya3MpKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSk7CiAJdm9pZCAoKnVwZGF0ZV93bSkoc3RydWN0IGRybV9j cnRjICpjcnRjKTsKIAlpbnQgKCptb2Rlc2V0X2NhbGNfY2RjbGspKHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSk7CiAJdm9pZCAoKm1vZGVzZXRfY29tbWl0X2NkY2xrKShzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmlu ZGV4IGRlZTM5ZDQuLmM5NzBlM2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK QEAgLTEzMzE1LDYgKzEzMzE1LDcgQEAgc3RhdGljIGludCBpbnRlbF9tb2Rlc2V0X2NoZWNrcyhz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiBzdGF0aWMgdm9pZCBjYWxjX3dhdGVybWFy a19kYXRhKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gc3RhdGUtPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGRldik7CiAJc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSAqaW50ZWxfc3Rh dGUgPSB0b19pbnRlbF9hdG9taWNfc3RhdGUoc3RhdGUpOwogCXN0cnVjdCBkcm1fY3J0YyAqY3J0 YzsKIAlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNzdGF0ZTsKQEAgLTEzMzQ0LDYgKzEzMzQ1LDEw IEBAIHN0YXRpYyB2b2lkIGNhbGNfd2F0ZXJtYXJrX2RhdGEoc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlKQogCQkgICAgcHN0YXRlLT5jcnRjX2ggIT0gcHN0YXRlLT5zcmNfaCA+PiAxNikK IAkJCWludGVsX3N0YXRlLT53bV9jb25maWcuc3ByaXRlc19zY2FsZWQgPSB0cnVlOwogCX0KKwor CS8qIElzIHRoZXJlIHBsYXRmb3JtLXNwZWNpZmljIHdhdGVybWFyayBpbmZvcm1hdGlvbiB0byBj YWxjdWxhdGU/ICovCisJaWYgKGRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfZ2xvYmFsX3dhdGVy bWFya3MpCisJCWRldl9wcml2LT5kaXNwbGF5LmNvbXB1dGVfZ2xvYmFsX3dhdGVybWFya3Moc3Rh dGUpOwogfQogCiAvKioKQEAgLTEzNzExLDYgKzEzNzE2LDE5IEBAIHN0YXRpYyBpbnQgaW50ZWxf YXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlpbnRlbF9tb2Rlc2V0X3Zl cmlmeV9jcnRjKGNydGMsIG9sZF9jcnRjX3N0YXRlLCBjcnRjLT5zdGF0ZSk7CiAJfQogCisJLyoK KwkgKiBUZW1wb3Jhcnkgc2FuaXR5IGNoZWNrOiBtYWtlIHN1cmUgb3VyIHByZS1jb21wdXRlZCBE REIgbWF0Y2hlcyB0aGUKKwkgKiBvbmUgd2UgYWN0dWFsbHkgd2luZCB1cCBwcm9ncmFtbWluZy4K KwkgKgorCSAqIE5vdCBhIGdyZWF0IHBsYWNlIHRvIHB1dCB0aGlzLCBidXQgdGhlIGVhc2llc3Qg cGxhY2Ugd2UgaGF2ZSBhY2Nlc3MKKwkgKiB0byBib3RoIHRoZSBwcmUtY29tcHV0ZWQgYW5kIGZp bmFsIEREQidzOyB3ZSdsbCBiZSByZW1vdmluZyB0aGlzCisJICogY2hlY2sgaW4gdGhlIG5leHQg cGF0Y2ggYW55d2F5LgorCSAqLworCVdBUk4oSVNfR0VOOShkZXYpICYmCisJICAgICBtZW1jbXAo JmludGVsX3N0YXRlLT5kZGIsICZkZXZfcHJpdi0+d20uc2tsX3Jlc3VsdHMuZGRiLAorCQkgICAg c2l6ZW9mKGludGVsX3N0YXRlLT5kZGIpKSwKKwkgICAgICJQcmUtY29tcHV0ZWQgRERCIGRvZXMg bm90IG1hdGNoIGZpbmFsIEREQiFcbiIpOworCiAJaWYgKGludGVsX3N0YXRlLT5tb2Rlc2V0KQog CQlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX01PREVTRVQp OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDQ0M2RjODUuLjIyODI0OTQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC0zMTEsNiArMzExLDkgQEAgc3RydWN0IGludGVsX2F0 b21pY19zdGF0ZSB7CiAJICogZG9uJ3QgYm90aGVyIGNhbGN1bGF0aW5nIGludGVybWVkaWF0ZSB3 YXRlcm1hcmtzLgogCSAqLwogCWJvb2wgc2tpcF9pbnRlcm1lZGlhdGVfd207CisKKwkvKiBHZW45 KyBvbmx5ICovCisJc3RydWN0IHNrbF9kZGJfYWxsb2NhdGlvbiBkZGI7CiB9OwogCiBzdHJ1Y3Qg aW50ZWxfcGxhbmVfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggNzgzODBiYS4u ZmNhNDRmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCkBAIC0zODEyLDYgKzM4MTIsNzUgQEAg c3RhdGljIHZvaWQgc2tsX2NsZWFyX3dtKHN0cnVjdCBza2xfd21fdmFsdWVzICp3YXRlcm1hcmtz LCBlbnVtIHBpcGUgcGlwZSkKIAogfQogCitzdGF0aWMgaW50Citza2xfY29tcHV0ZV9kZGIoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBzdGF0ZS0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2lu dGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7CisJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7 CisJdW5zaWduZWQgcmVhbGxvY19waXBlcyA9IGRldl9wcml2LT5hY3RpdmVfY3J0Y3M7CisJaW50 IHJldDsKKworCS8qCisJICogSWYgdGhlIG1vZGVzZXQgY2hhbmdlcyB3aGljaCBDUlRDJ3MgYXJl IGFjdGl2ZSwgd2UgbmVlZCB0bworCSAqIHJlY29tcHV0ZSB0aGUgRERCIGFsbG9jYXRpb24gZm9y ICphbGwqIGFjdGl2ZSBwaXBlcywgZXZlbgorCSAqIHRob3NlIHRoYXQgd2VyZW4ndCBvdGhlcndp c2UgYmVpbmcgbW9kaWZpZWQgaW4gYW55IHdheSBieSB0aGlzCisJICogYXRvbWljIGNvbW1pdC4g IER1ZSB0byB0aGUgc2hyaW5raW5nIG9mIHRoZSBwZXItcGlwZSBhbGxvY2F0aW9ucworCSAqIHdo ZW4gbmV3IGFjdGl2ZSBDUlRDJ3MgYXJlIGFkZGVkLCBpdCdzIHBvc3NpYmxlIGZvciBhIHBpcGUg dGhhdAorCSAqIHdlIHdlcmUgYWxyZWFkeSB1c2luZyBhbmQgYXJlbid0IGNoYW5naW5nIGF0IGFs bCBoZXJlIHRvIHN1ZGRlbmx5CisJICogYmVjb21lIGludmFsaWQgaWYgaXRzIEREQiBuZWVkcyBl eGNlZWRzIGl0cyBuZXcgYWxsb2NhdGlvbi4KKwkgKgorCSAqIE5vdGUgdGhhdCBpZiB3ZSB3aW5k IHVwIGRvaW5nIGEgZnVsbCBEREIgcmVjb21wdXRlLCB3ZSBjYW4ndCBsZXQKKwkgKiBhbnkgb3Ro ZXIgZGlzcGxheSB1cGRhdGVzIHJhY2Ugd2l0aCB0aGlzIHRyYW5zYWN0aW9uLCBzbyB3ZSBuZWVk CisJICogdG8gZ3JhYiB0aGUgbG9jayBvbiAqYWxsKiBDUlRDJ3MuCisJICovCisJaWYgKGludGVs X3N0YXRlLT5hY3RpdmVfcGlwZV9jaGFuZ2VzKQorCQlyZWFsbG9jX3BpcGVzID0gfjA7CisKKwlm b3JfZWFjaF9pbnRlbF9jcnRjX21hc2soZGV2LCBpbnRlbF9jcnRjLCByZWFsbG9jX3BpcGVzKSB7 CisJCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjc3RhdGU7CisKKwkJY3N0YXRlID0gaW50ZWxf YXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBpbnRlbF9jcnRjKTsKKwkJaWYgKElTX0VSUihj c3RhdGUpKQorCQkJcmV0dXJuIFBUUl9FUlIoY3N0YXRlKTsKKworCQlyZXQgPSBza2xfYWxsb2Nh dGVfcGlwZV9kZGIoY3N0YXRlLCAmaW50ZWxfc3RhdGUtPmRkYik7CisJCWlmIChyZXQpCisJCQly ZXR1cm4gcmV0OworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50Citza2xfY29tcHV0 ZV93bShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IGRybV9jcnRj ICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlOworCWludCByZXQsIGk7CisJ Ym9vbCBjaGFuZ2VkID0gZmFsc2U7CisKKwkvKgorCSAqIElmIHRoaXMgdHJhbnNhY3Rpb24gaXNu J3QgYWN0dWFsbHkgdG91Y2hpbmcgYW55IENSVEMncywgZG9uJ3QKKwkgKiBib3RoZXIgd2l0aCB3 YXRlcm1hcmsgY2FsY3VsYXRpb24uICBOb3RlIHRoYXQgaWYgd2UgcGFzcyB0aGlzCisJICogdGVz dCwgd2UncmUgZ3VhcmFudGVlZCB0byBob2xkIGF0IGxlYXN0IG9uZSBDUlRDIHN0YXRlIG11dGV4 LAorCSAqIHdoaWNoIG1lYW5zIHdlIGNhbiBzYWZlbHkgdXNlIHZhbHVlcyBsaWtlIGRldl9wcml2 LT5hY3RpdmVfY3J0Y3MKKwkgKiBzaW5jZSBhbnkgcmFjaW5nIGNvbW1pdHMgdGhhdCB3YW50IHRv IHVwZGF0ZSB0aGVtIHdvdWxkIG5lZWQgdG8KKwkgKiBob2xkIF9hbGxfIENSVEMgc3RhdGUgbXV0 ZXhlcy4KKwkgKi8KKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBjcnRjLCBjc3RhdGUs IGkpCisJCWNoYW5nZWQgPSB0cnVlOworCWlmICghY2hhbmdlZCkKKwkJcmV0dXJuIDA7CisKKwly ZXQgPSBza2xfY29tcHV0ZV9kZGIoc3RhdGUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK KwlyZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQgc2tsX3VwZGF0ZV93bShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMpCiB7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwpAQCAtNzM0OSw2ICs3NDE4LDcgQEAgdm9pZCBpbnRlbF9pbml0X3BtKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpIHsKIAkJ c2tsX3NldHVwX3dtX2xhdGVuY3koZGV2KTsKIAkJZGV2X3ByaXYtPmRpc3BsYXkudXBkYXRlX3dt ID0gc2tsX3VwZGF0ZV93bTsKKwkJZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9nbG9iYWxfd2F0 ZXJtYXJrcyA9IHNrbF9jb21wdXRlX3dtOwogCX0gZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXYp KSB7CiAJCWlsa19zZXR1cF93bV9sYXRlbmN5KGRldik7CiAKLS0gCjIuMS40CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBs aXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK