From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: [PATCH v2 08/16] drm/i915/gen9: Compute DDB allocation at atomic check time (v2) Date: Tue, 19 Apr 2016 19:26:15 -0700 Message-ID: <1461119183-14267-9-git-send-email-matthew.d.roper@intel.com> References: <1461119183-14267-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 F2D4E6E8AE for ; Wed, 20 Apr 2016 02:27:13 +0000 (UTC) In-Reply-To: <1461119183-14267-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+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwgIDUgKysrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxOCArKysrKysrKysrCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgMyArKwogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcG0uYyAgICAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCiA0IGZpbGVzIGNoYW5nZWQsIDk2IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAppbmRleCBlOTFkMzlkLi41NTUyMmI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAg LTMzOSw2ICszMzksMTAgQEAgc3RydWN0IGk5MTVfaG90cGx1ZyB7CiAjZGVmaW5lIGZvcl9lYWNo X2ludGVsX2NydGMoZGV2LCBpbnRlbF9jcnRjKSBcCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShpbnRl bF9jcnRjLCAmZGV2LT5tb2RlX2NvbmZpZy5jcnRjX2xpc3QsIGJhc2UuaGVhZCkKIAorI2RlZmlu ZSBmb3JfZWFjaF9pbnRlbF9jcnRjX21hc2soZGV2LCBpbnRlbF9jcnRjLCBjcnRjX21hc2spIFwK KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGludGVsX2NydGMsICZkZXYtPm1vZGVfY29uZmlnLmNydGNf bGlzdCwgYmFzZS5oZWFkKSBcCisJCWZvcl9lYWNoX2lmICgoY3J0Y19tYXNrKSAmICgxIDw8IGRy bV9jcnRjX2luZGV4KCZpbnRlbF9jcnRjLT5iYXNlKSkpCisKICNkZWZpbmUgZm9yX2VhY2hfaW50 ZWxfZW5jb2RlcihkZXYsIGludGVsX2VuY29kZXIpCQlcCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShp bnRlbF9lbmNvZGVyLAkJCVwKIAkJCSAgICAmKGRldiktPm1vZGVfY29uZmlnLmVuY29kZXJfbGlz dCwJXApAQCAtNTk0LDYgKzU5OCw3IEBAIHN0cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsK IAkJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKm5ld3N0YXRlKTsKIAl2b2lkICgq aW5pdGlhbF93YXRlcm1hcmtzKShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKTsKIAl2 b2lkICgqb3B0aW1pemVfd2F0ZXJtYXJrcykoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNzdGF0 ZSk7CisJaW50ICgqY29tcHV0ZV9nbG9iYWxfd2F0ZXJtYXJrcykoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKTsKIAl2b2lkICgqdXBkYXRlX3dtKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMp OwogCWludCAoKm1vZGVzZXRfY2FsY19jZGNsaykoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKTsKIAl2b2lkICgqbW9kZXNldF9jb21taXRfY2RjbGspKHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggZGVlMzlk NC4uYzk3MGUzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTMzMTUs NiArMTMzMTUsNyBAQCBzdGF0aWMgaW50IGludGVsX21vZGVzZXRfY2hlY2tzKHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSkKIHN0YXRpYyB2b2lkIGNhbGNfd2F0ZXJtYXJrX2RhdGEoc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBzdGF0ZS0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRlICppbnRlbF9zdGF0ZSA9IHRvX2lu dGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjOwogCXN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqY3N0YXRlOwpAQCAtMTMzNDQsNiArMTMzNDUsMTAgQEAgc3RhdGlj IHZvaWQgY2FsY193YXRlcm1hcmtfZGF0YShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUp CiAJCSAgICBwc3RhdGUtPmNydGNfaCAhPSBwc3RhdGUtPnNyY19oID4+IDE2KQogCQkJaW50ZWxf c3RhdGUtPndtX2NvbmZpZy5zcHJpdGVzX3NjYWxlZCA9IHRydWU7CiAJfQorCisJLyogSXMgdGhl cmUgcGxhdGZvcm0tc3BlY2lmaWMgd2F0ZXJtYXJrIGluZm9ybWF0aW9uIHRvIGNhbGN1bGF0ZT8g Ki8KKwlpZiAoZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9nbG9iYWxfd2F0ZXJtYXJrcykKKwkJ ZGV2X3ByaXYtPmRpc3BsYXkuY29tcHV0ZV9nbG9iYWxfd2F0ZXJtYXJrcyhzdGF0ZSk7CiB9CiAK IC8qKgpAQCAtMTM3MTEsNiArMTM3MTYsMTkgQEAgc3RhdGljIGludCBpbnRlbF9hdG9taWNfY29t bWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWludGVsX21vZGVzZXRfdmVyaWZ5X2NydGMo Y3J0Yywgb2xkX2NydGNfc3RhdGUsIGNydGMtPnN0YXRlKTsKIAl9CiAKKwkvKgorCSAqIFRlbXBv cmFyeSBzYW5pdHkgY2hlY2s6IG1ha2Ugc3VyZSBvdXIgcHJlLWNvbXB1dGVkIEREQiBtYXRjaGVz IHRoZQorCSAqIG9uZSB3ZSBhY3R1YWxseSB3aW5kIHVwIHByb2dyYW1taW5nLgorCSAqCisJICog Tm90IGEgZ3JlYXQgcGxhY2UgdG8gcHV0IHRoaXMsIGJ1dCB0aGUgZWFzaWVzdCBwbGFjZSB3ZSBo YXZlIGFjY2VzcworCSAqIHRvIGJvdGggdGhlIHByZS1jb21wdXRlZCBhbmQgZmluYWwgRERCJ3M7 IHdlJ2xsIGJlIHJlbW92aW5nIHRoaXMKKwkgKiBjaGVjayBpbiB0aGUgbmV4dCBwYXRjaCBhbnl3 YXkuCisJICovCisJV0FSTihJU19HRU45KGRldikgJiYKKwkgICAgIG1lbWNtcCgmaW50ZWxfc3Rh dGUtPmRkYiwgJmRldl9wcml2LT53bS5za2xfcmVzdWx0cy5kZGIsCisJCSAgICBzaXplb2YoaW50 ZWxfc3RhdGUtPmRkYikpLAorCSAgICAgIlByZS1jb21wdXRlZCBEREIgZG9lcyBub3QgbWF0Y2gg ZmluYWwgRERCIVxuIik7CisKIAlpZiAoaW50ZWxfc3RhdGUtPm1vZGVzZXQpCiAJCWludGVsX2Rp c3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fTU9ERVNFVCk7CiAKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggNDQzZGM4NS4uMjI4MjQ5NCAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKQEAgLTMxMSw2ICszMTEsOSBAQCBzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl IHsKIAkgKiBkb24ndCBib3RoZXIgY2FsY3VsYXRpbmcgaW50ZXJtZWRpYXRlIHdhdGVybWFya3Mu CiAJICovCiAJYm9vbCBza2lwX2ludGVybWVkaWF0ZV93bTsKKworCS8qIEdlbjkrIG9ubHkgKi8K KwlzdHJ1Y3Qgc2tsX2RkYl9hbGxvY2F0aW9uIGRkYjsKIH07CiAKIHN0cnVjdCBpbnRlbF9wbGFu ZV9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwppbmRleCA2NDAzMDVhLi4wY2MzNDQzIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3BtLmMKQEAgLTM4MTQsNiArMzgxNCw3NSBAQCBzdGF0aWMgdm9p ZCBza2xfY2xlYXJfd20oc3RydWN0IHNrbF93bV92YWx1ZXMgKndhdGVybWFya3MsIGVudW0gcGlw ZSBwaXBlKQogCiB9CiAKK3N0YXRpYyBpbnQKK3NrbF9jb21wdXRlX2RkYihzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGUpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHN0YXRlLT5k ZXY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwor CXN0cnVjdCBpbnRlbF9hdG9taWNfc3RhdGUgKmludGVsX3N0YXRlID0gdG9faW50ZWxfYXRvbWlj X3N0YXRlKHN0YXRlKTsKKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKKwl1bnNpZ25l ZCByZWFsbG9jX3BpcGVzID0gZGV2X3ByaXYtPmFjdGl2ZV9jcnRjczsKKwlpbnQgcmV0OworCisJ LyoKKwkgKiBJZiB0aGUgbW9kZXNldCBjaGFuZ2VzIHdoaWNoIENSVEMncyBhcmUgYWN0aXZlLCB3 ZSBuZWVkIHRvCisJICogcmVjb21wdXRlIHRoZSBEREIgYWxsb2NhdGlvbiBmb3IgKmFsbCogYWN0 aXZlIHBpcGVzLCBldmVuCisJICogdGhvc2UgdGhhdCB3ZXJlbid0IG90aGVyd2lzZSBiZWluZyBt b2RpZmllZCBpbiBhbnkgd2F5IGJ5IHRoaXMKKwkgKiBhdG9taWMgY29tbWl0LiAgRHVlIHRvIHRo ZSBzaHJpbmtpbmcgb2YgdGhlIHBlci1waXBlIGFsbG9jYXRpb25zCisJICogd2hlbiBuZXcgYWN0 aXZlIENSVEMncyBhcmUgYWRkZWQsIGl0J3MgcG9zc2libGUgZm9yIGEgcGlwZSB0aGF0CisJICog d2Ugd2VyZSBhbHJlYWR5IHVzaW5nIGFuZCBhcmVuJ3QgY2hhbmdpbmcgYXQgYWxsIGhlcmUgdG8g c3VkZGVubHkKKwkgKiBiZWNvbWUgaW52YWxpZCBpZiBpdHMgRERCIG5lZWRzIGV4Y2VlZHMgaXRz IG5ldyBhbGxvY2F0aW9uLgorCSAqCisJICogTm90ZSB0aGF0IGlmIHdlIHdpbmQgdXAgZG9pbmcg YSBmdWxsIEREQiByZWNvbXB1dGUsIHdlIGNhbid0IGxldAorCSAqIGFueSBvdGhlciBkaXNwbGF5 IHVwZGF0ZXMgcmFjZSB3aXRoIHRoaXMgdHJhbnNhY3Rpb24sIHNvIHdlIG5lZWQKKwkgKiB0byBn cmFiIHRoZSBsb2NrIG9uICphbGwqIENSVEMncy4KKwkgKi8KKwlpZiAoaW50ZWxfc3RhdGUtPmFj dGl2ZV9waXBlX2NoYW5nZXMpCisJCXJlYWxsb2NfcGlwZXMgPSB+MDsKKworCWZvcl9lYWNoX2lu dGVsX2NydGNfbWFzayhkZXYsIGludGVsX2NydGMsIHJlYWxsb2NfcGlwZXMpIHsKKwkJc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKmNzdGF0ZTsKKworCQljc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0 X2NydGNfc3RhdGUoc3RhdGUsIGludGVsX2NydGMpOworCQlpZiAoSVNfRVJSKGNzdGF0ZSkpCisJ CQlyZXR1cm4gUFRSX0VSUihjc3RhdGUpOworCisJCXJldCA9IHNrbF9hbGxvY2F0ZV9waXBlX2Rk Yihjc3RhdGUsICZpbnRlbF9zdGF0ZS0+ZGRiKTsKKwkJaWYgKHJldCkKKwkJCXJldHVybiByZXQ7 CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3NrbF9jb21wdXRlX3dtKHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7CisJ c3RydWN0IGRybV9jcnRjX3N0YXRlICpjc3RhdGU7CisJaW50IHJldCwgaTsKKwlib29sIGNoYW5n ZWQgPSBmYWxzZTsKKworCS8qCisJICogSWYgdGhpcyB0cmFuc2FjdGlvbiBpc24ndCBhY3R1YWxs eSB0b3VjaGluZyBhbnkgQ1JUQydzLCBkb24ndAorCSAqIGJvdGhlciB3aXRoIHdhdGVybWFyayBj YWxjdWxhdGlvbi4gIE5vdGUgdGhhdCBpZiB3ZSBwYXNzIHRoaXMKKwkgKiB0ZXN0LCB3ZSdyZSBn dWFyYW50ZWVkIHRvIGhvbGQgYXQgbGVhc3Qgb25lIENSVEMgc3RhdGUgbXV0ZXgsCisJICogd2hp Y2ggbWVhbnMgd2UgY2FuIHNhZmVseSB1c2UgdmFsdWVzIGxpa2UgZGV2X3ByaXYtPmFjdGl2ZV9j cnRjcworCSAqIHNpbmNlIGFueSByYWNpbmcgY29tbWl0cyB0aGF0IHdhbnQgdG8gdXBkYXRlIHRo ZW0gd291bGQgbmVlZCB0bworCSAqIGhvbGQgX2FsbF8gQ1JUQyBzdGF0ZSBtdXRleGVzLgorCSAq LworCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNzdGF0ZSwgaSkKKwkJY2hh bmdlZCA9IHRydWU7CisJaWYgKCFjaGFuZ2VkKQorCQlyZXR1cm4gMDsKKworCXJldCA9IHNrbF9j b21wdXRlX2RkYihzdGF0ZSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCXJldHVybiAw OworfQorCiBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX3dtKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykK IHsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7 CkBAIC03MzUxLDYgKzc0MjAsNyBAQCB2b2lkIGludGVsX2luaXRfcG0oc3RydWN0IGRybV9kZXZp Y2UgKmRldikKIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewogCQlza2xfc2V0dXBf d21fbGF0ZW5jeShkZXYpOwogCQlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfd20gPSBza2xfdXBk YXRlX3dtOworCQlkZXZfcHJpdi0+ZGlzcGxheS5jb21wdXRlX2dsb2JhbF93YXRlcm1hcmtzID0g c2tsX2NvbXB1dGVfd207CiAJfSBlbHNlIGlmIChIQVNfUENIX1NQTElUKGRldikpIHsKIAkJaWxr X3NldHVwX3dtX2xhdGVuY3koZGV2KTsKIAotLSAKMi4xLjQKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=