From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 3/5] drm/i915/guc: Simplify intel_guc_load() Date: Fri, 16 Dec 2016 15:50:33 +0000 Message-ID: References: <20161215154708.31521-1-arkadiusz.hiler@intel.com> <20161215154708.31521-4-arkadiusz.hiler@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id D27276EC73 for ; Fri, 16 Dec 2016 15:50:36 +0000 (UTC) In-Reply-To: <20161215154708.31521-4-arkadiusz.hiler@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Arkadiusz Hiler , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE1LzEyLzIwMTYgMTU6NDcsIEFya2FkaXVzeiBIaWxlciB3cm90ZToKPiBDdXJyZW50IHZl cnNpb24gb2YgaW50ZWxfZ3VjX2xvYWQoKSBkb2VzIGEgbG90Ogo+ICAtIGNhcmVzIGFib3V0IHN1 Ym1pc3Npb24KPiAgLSBsb2FkcyBodWMKCk5vdCB5ZXQsIG5vPyBTbyBpbnN0ZWFkIHlvdSBjb3Vs ZCBzYXkgdGhhdCB5b3UgYXJlIHByZXBhcmluZyB0aGUgCmdyb3VuZHdvcmtzIHRvIG1ha2UgYWRk aW5nIGluIHRoZSBIdUMgZml0IGJldHRlci4KCj4gIC0gaW1wbGVtZW50IFdBCj4KPiBUaGlzIGNo YW5nZSBvZmZsb2FkcyBzb21lIG9mIHRoZSBsb2dpYyB0byBpbnRlbF91Y19sb2FkKCksIHdoaWNo IG5vdwo+IGNhcmVzIGFib3V0IHRoZSBhYm92ZS4KPgo+IENjOiBBbnVzaGEgU3JpdmF0c2EgPGFu dXNoYS5zcml2YXRzYUBpbnRlbC5jb20+Cj4gQ2M6IEplZmYgTWNHZWUgPGplZmYubWNnZWVAaW50 ZWwuY29tPgo+IENjOiBNaWNoYWwgV2luaWFyc2tpIDxtaWNoYWwud2luaWFyc2tpQGludGVsLmNv bT4KPiBTaWduZWQtb2ZmLWJ5OiBBcmthZGl1c3ogSGlsZXIgPGFya2FkaXVzei5oaWxlckBpbnRl bC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8 ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgfCAxMjYg KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdWMuYyAgICAgICAgIHwgIDgzICsrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oICAgICAgICAgfCAgIDggKysKPiAgNCBmaWxlcyBjaGFu Z2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgMTA5IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4gaW5kZXggNmFmNGU4NS4uNzZiNTJjNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYwo+IEBAIC00NDEyLDcgKzQ0MTIsNyBAQCBpOTE1X2dlbV9pbml0X2h3KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWludGVsX21vY3NfaW5pdF9sM2NjX3RhYmxl KGRldl9wcml2KTsKPgo+ICAJLyogV2UgY2FuJ3QgZW5hYmxlIGNvbnRleHRzIHVudGlsIGFsbCBm aXJtd2FyZSBpcyBsb2FkZWQgKi8KPiAtCXJldCA9IGludGVsX2d1Y19sb2FkKGRldl9wcml2KTsK PiArCXJldCA9IGludGVsX3VjX2xvYWQoZGV2X3ByaXYpOwo+ICAJaWYgKHJldCkKPiAgCQlnb3Rv IG91dDsKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9h ZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKPiBpbmRleCBm OGIyOGIxLi5iNzZiNTU2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d1Y19sb2FkZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2Fk ZXIuYwo+IEBAIC05Nyw3ICs5Nyw3IEBAIGNvbnN0IGNoYXIgKmludGVsX2d1Y19md19zdGF0dXNf cmVwcihlbnVtIGludGVsX2d1Y19md19zdGF0dXMgc3RhdHVzKQo+ICAJfQo+ICB9Owo+Cj4gLXN0 YXRpYyB2b2lkIGd1Y19pbnRlcnJ1cHRzX3JlbGVhc2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICt2b2lkIGd1Y19pbnRlcnJ1cHRzX3JlbGVhc2Uoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmU7Cj4gIAllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiBAQCAtMTE1LDcgKzExNSw3IEBAIHN0 YXRpYyB2b2lkIGd1Y19pbnRlcnJ1cHRzX3JlbGVhc2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ICAJSTkxNV9XUklURShHVUNfV0RfVkVDU19JRVIsIDApOwo+ICB9Cj4KPiAt c3RhdGljIHZvaWQgZ3VjX2ludGVycnVwdHNfY2FwdHVyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gK3ZvaWQgZ3VjX2ludGVycnVwdHNfY2FwdHVyZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZTsKPiAgCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+IEBAIC0zMzQsNyArMzM0LDcgQEAg c3RhdGljIGludCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJcmV0dXJuIHJldDsKPiAgfQo+Cj4gLXN0YXRpYyB1MzIgZ3VjX3dvcGNtX3Np emUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt1MzIgZ3VjX3dvcGNtX3Np emUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gIAl1MzIgd29wY21f c2l6ZSA9IEdVQ19XT1BDTV9UT1A7Cj4KPiBAQCAtNDE3LDcgKzQxNyw3IEBAIHN0YXRpYyBpbnQg Z3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJcmV0 dXJuIHJldDsKPiAgfQo+Cj4gLXN0YXRpYyBpbnQgZ3VjX2h3X3Jlc2V0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAraW50IGd1Y19od19yZXNldChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCWludCByZXQ7Cj4gIAl1MzIgZ3VjX3N0YXR1czsK PiBAQCAtNDUyLDc1ICs0NTIsMzcgQEAgaW50IGludGVsX2d1Y19sb2FkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJc3RydWN0IGludGVsX2d1Y19mdyAqZ3VjX2Z3 ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICAJY29uc3QgY2hhciAqZndfcGF0aCA9IGd1Y19m dy0+Z3VjX2Z3X3BhdGg7Cj4gLQlpbnQgcmV0cmllcywgcmV0LCBlcnI7Cj4gKwlpbnQgcmV0Owo+ Cj4gIAlEUk1fREVCVUdfRFJJVkVSKCJHdUMgZncgc3RhdHVzOiBwYXRoICVzLCBmZXRjaCAlcywg bG9hZCAlc1xuIiwKPiAgCQlmd19wYXRoLAo+ICAJCWludGVsX2d1Y19md19zdGF0dXNfcmVwcihn dWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpLAo+ICAJCWludGVsX2d1Y19md19zdGF0dXNfcmVw cihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykpOwo+Cj4gLQkvKiBMb2FkaW5nIGZvcmJpZGRl biwgb3Igbm8gZmlybXdhcmUgdG8gbG9hZD8gKi8KPiAtCWlmICghaTkxNS5lbmFibGVfZ3VjX2xv YWRpbmcpIHsKPiAtCQllcnIgPSAwOwo+IC0JCWdvdG8gZmFpbDsKPiAtCX0gZWxzZSBpZiAoZndf cGF0aCA9PSBOVUxMKSB7Cj4gKwlpZiAoZndfcGF0aCA9PSBOVUxMKSB7Cj4gIAkJLyogRGV2aWNl IGlzIGtub3duIHRvIGhhdmUgbm8gdUNvZGUgKGUuZy4gbm8gR3VDKSAqLwo+IC0JCWVyciA9IC1F TlhJTzsKPiAtCQlnb3RvIGZhaWw7Cj4gKwkJcmV0dXJuIC1FTlhJTzsKPiAgCX0gZWxzZSBpZiAo KmZ3X3BhdGggPT0gJ1wwJykgewo+ICAJCS8qIERldmljZSBoYXMgYSBHdUMgYnV0IHdlIGRvbid0 IGtub3cgd2hhdCBmL3cgdG8gbG9hZD8gKi8KPiAgCQlXQVJOKDEsICJObyBHdUMgZmlybXdhcmUg a25vd24gZm9yIHRoaXMgcGxhdGZvcm0hXG4iKTsKPiAtCQllcnIgPSAtRU5PREVWOwo+IC0JCWdv dG8gZmFpbDsKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiAgCX0KPgo+ICAJLyogRmV0Y2ggZmFpbGVk LCBvciBhbHJlYWR5IGZldGNoZWQgYnV0IGZhaWxlZCB0byBsb2FkPyAqLwo+ICAJaWYgKGd1Y19m dy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyAhPSBHVUNfRklSTVdBUkVfU1VDQ0VTUykgewo+IC0JCWVy ciA9IC1FSU87Cj4gLQkJZ290byBmYWlsOwo+ICsJCXJldHVybiAtRUlPOwo+ICAJfSBlbHNlIGlm IChndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9PSBHVUNfRklSTVdBUkVfRkFJTCkgewo+IC0J CWVyciA9IC1FTk9FWEVDOwo+IC0JCWdvdG8gZmFpbDsKPiArCQlyZXR1cm4gLUVOT0VYRUM7Cj4g IAl9Cj4KPiAtCWd1Y19pbnRlcnJ1cHRzX3JlbGVhc2UoZGV2X3ByaXYpOwo+IC0JZ2VuOV9yZXNl dF9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4gLQo+ICAJZ3VjX2Z3LT5ndWNfZndfbG9hZF9z dGF0dXMgPSBHVUNfRklSTVdBUkVfUEVORElORzsKPgo+IC0JRFJNX0RFQlVHX0RSSVZFUigiR3VD IGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCj4gLQkJaW50ZWxfZ3VjX2Z3X3N0YXR1 c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyksCj4gLQkJaW50ZWxfZ3VjX2Z3X3N0 YXR1c19yZXByKGd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzKSk7Cj4gLQo+IC0JZXJyID0gaTkx NV9ndWNfc3VibWlzc2lvbl9pbml0KGRldl9wcml2KTsKPiAtCWlmIChlcnIpCj4gLQkJZ290byBm YWlsOwo+IC0KPiAtCS8qCj4gLQkgKiBXYUVuYWJsZXVLZXJuZWxIZWFkZXJWYWxpZEZpeDpza2ws Ynh0Cj4gLQkgKiBGb3IgQlhULCB0aGlzIGlzIG9ubHkgdXB0byBCMCBidXQgYmVsb3cgV0EgaXMg cmVxdWlyZWQgZm9yIGxhdGVyCj4gLQkgKiBzdGVwcGluZ3MgYWxzbyBzbyB0aGlzIGlzIGV4dGVu ZGVkIGFzIHdlbGwuCj4gLQkgKi8KPiAgCS8qIFdhRW5hYmxlR3VDQm9vdEhhc2hDaGVja05vdFNl dDpza2wsYnh0ICovCj4gLQlmb3IgKHJldHJpZXMgPSAzOyA7ICkgewo+IC0JCS8qCj4gLQkJICog QWx3YXlzIHJlc2V0IHRoZSBHdUMganVzdCBiZWZvcmUgKHJlKWxvYWRpbmcsIHNvCj4gLQkJICog dGhhdCB0aGUgc3RhdGUgYW5kIHRpbWluZyBhcmUgZmFpcmx5IHByZWRpY3RhYmxlCj4gLQkJICov Cj4gLQkJZXJyID0gZ3VjX2h3X3Jlc2V0KGRldl9wcml2KTsKPiAtCQlpZiAoZXJyKQo+IC0JCQln b3RvIGZhaWw7Cj4gKwkvKiB3ZSBtYXkgd2FudCB0byByZXRyeSBndWMgdWNvZGUgdHJhbnNmZXIg Ki8KPiArCXJldCA9IGd1Y191Y29kZV94ZmVyKGRldl9wcml2KTsKPgo+IC0JCWVyciA9IGd1Y191 Y29kZV94ZmVyKGRldl9wcml2KTsKPiAtCQlpZiAoIWVycikKPiAtCQkJYnJlYWs7Cj4gLQo+IC0J CWlmICgtLXJldHJpZXMgPT0gMCkKPiAtCQkJZ290byBmYWlsOwo+IC0KPiAtCQlEUk1fSU5GTygi R3VDIGZ3IGxvYWQgZmFpbGVkOiAlZDsgd2lsbCByZXNldCBhbmQgIgo+IC0JCQkgInJldHJ5ICVk IG1vcmUgdGltZShzKVxuIiwgZXJyLCByZXRyaWVzKTsKPiAtCX0KPiArCWlmIChyZXQpCj4gKwkJ cmV0dXJuIC1FQUdBSU47Cj4KPiAgCWd1Y19mdy0+Z3VjX2Z3X2xvYWRfc3RhdHVzID0gR1VDX0ZJ Uk1XQVJFX1NVQ0NFU1M7Cj4KPiBAQCAtNTI4LDYzICs0OTAsNyBAQCBpbnQgaW50ZWxfZ3VjX2xv YWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWludGVsX2d1Y19md19z dGF0dXNfcmVwcihndWNfZnctPmd1Y19md19mZXRjaF9zdGF0dXMpLAo+ICAJCWludGVsX2d1Y19m d19zdGF0dXNfcmVwcihndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cykpOwo+Cj4gLQlpZiAoaTkx NS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pIHsKPiAtCQlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID49 IDApCj4gLQkJCWdlbjlfZW5hYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiAtCj4gLQkJ ZXJyID0gaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoZGV2X3ByaXYpOwo+IC0JCWlmIChlcnIp Cj4gLQkJCWdvdG8gZmFpbDsKPiAtCQlndWNfaW50ZXJydXB0c19jYXB0dXJlKGRldl9wcml2KTsK PiAtCX0KPiAtCj4gIAlyZXR1cm4gMDsKPiAtCj4gLWZhaWw6Cj4gLQlpZiAoZ3VjX2Z3LT5ndWNf ZndfbG9hZF9zdGF0dXMgPT0gR1VDX0ZJUk1XQVJFX1BFTkRJTkcpCj4gLQkJZ3VjX2Z3LT5ndWNf ZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfRkFJTDsKCllvdSBzZWVtIHRvIGhhdmUgbG9z dCB0aGlzIHN0YXRlIHRyYW5zaXRpb24gYXQgbGVhc3QgaW4gdGhlIAplbmFibGVfZ3VjX2xvYWRp bmcgPSAwIGNhc2UuIFdhcyB0aGF0IGRlbGliZXJhdGU/IEkgaGF2ZSBubyBpZGVhIGlmIHRoYXQg CmlzIGltcG9ydGFudCBzbyBqdXN0IGFuIG9ic2VydmF0aW9uLgoKPiAtCj4gLQlndWNfaW50ZXJy dXB0c19yZWxlYXNlKGRldl9wcml2KTsKPiAtCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShk ZXZfcHJpdik7Cj4gLQlpOTE1X2d1Y19zdWJtaXNzaW9uX2ZpbmkoZGV2X3ByaXYpOwo+IC0KPiAt CS8qCj4gLQkgKiBXZSd2ZSBmYWlsZWQgdG8gbG9hZCB0aGUgZmlybXdhcmUgOigKPiAtCSAqCj4g LQkgKiBEZWNpZGUgd2hldGhlciB0byBkaXNhYmxlIEd1QyBzdWJtaXNzaW9uIGFuZCBmYWxsIGJh Y2sgdG8KPiAtCSAqIGV4ZWNsaXN0IG1vZGUsIGFuZCB3aGV0aGVyIHRvIGhpZGUgdGhlIGVycm9y IGJ5IHJldHVybmluZwo+IC0JICogemVybyBvciB0byByZXR1cm4gLUVJTywgd2hpY2ggdGhlIGNh bGxlciB3aWxsIHRyZWF0IGFzIGEKPiAtCSAqIG5vbmZhdGFsIGVycm9yIChpLmUuIGl0IGRvZXNu J3QgcHJldmVudCBkcml2ZXIgbG9hZCwgYnV0Cj4gLQkgKiBtYXJrcyB0aGUgR1BVIGFzIHdlZGdl ZCB1bnRpbCByZXNldCkuCj4gLQkgKi8KPiAtCWlmIChpOTE1LmVuYWJsZV9ndWNfbG9hZGluZyA+ IDEpIHsKPiAtCQlyZXQgPSAtRUlPOwo+IC0JfSBlbHNlIGlmIChpOTE1LmVuYWJsZV9ndWNfc3Vi bWlzc2lvbiA+IDEpIHsKPiAtCQlyZXQgPSAtRUlPOwo+IC0JfSBlbHNlIHsKPiAtCQlyZXQgPSAw Owo+IC0JfQo+IC0KPiAtCWlmIChlcnIgPT0gMCAmJiAhSEFTX0dVQ19VQ09ERShkZXZfcHJpdikp Cj4gLQkJOwkvKiBEb24ndCBtZW50aW9uIHRoZSBHdUMhICovCj4gLQllbHNlIGlmIChlcnIgPT0g MCkKPiAtCQlEUk1fSU5GTygiR3VDIGZpcm13YXJlIGxvYWQgc2tpcHBlZFxuIik7Cj4gLQllbHNl IGlmIChyZXQgIT0gLUVJTykKPiAtCQlEUk1fTk9URSgiR3VDIGZpcm13YXJlIGxvYWQgZmFpbGVk OiAlZFxuIiwgZXJyKTsKPiAtCWVsc2UKPiAtCQlEUk1fV0FSTigiR3VDIGZpcm13YXJlIGxvYWQg ZmFpbGVkOiAlZFxuIiwgZXJyKTsKPiAtCj4gLQlpZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Np b24pIHsKPiAtCQlpZiAoZndfcGF0aCA9PSBOVUxMKQo+IC0JCQlEUk1fSU5GTygiR3VDIHN1Ym1p c3Npb24gd2l0aG91dCBmaXJtd2FyZSBub3Qgc3VwcG9ydGVkXG4iKTsKPiAtCQlpZiAocmV0ID09 IDApCj4gLQkJCURSTV9OT1RFKCJGYWxsaW5nIGJhY2sgZnJvbSBHdUMgc3VibWlzc2lvbiB0byBl eGVjbGlzdCBtb2RlXG4iKTsKPiAtCQllbHNlCj4gLQkJCURSTV9FUlJPUigiR3VDIGluaXQgZmFp bGVkOiAlZFxuIiwgcmV0KTsKPiAtCX0KPiAtCWk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uID0g MDsKPiAtCj4gLQlyZXR1cm4gcmV0Owo+ICB9Cj4KPiAgc3RhdGljIHZvaWQgZ3VjX2Z3X2ZldGNo KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBAQCAtNzU3LDYgKzY2MywxMCBA QCB2b2lkIGludGVsX2d1Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiAgCWd1Y19mdy0+Z3VjX2Z3X2ZldGNoX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9OT05FOwo+ICAJ Z3VjX2Z3LT5ndWNfZndfbG9hZF9zdGF0dXMgPSBHVUNfRklSTVdBUkVfTk9ORTsKPgo+ICsJLyog Y2FuJ3QgZW5hYmxlIGd1YyBzdWJtaXNzaW9uIHdpdGhvdXQgZ3VjICovCj4gKwlpZiAoIWk5MTUu ZW5hYmxlX2d1Y19sb2FkaW5nKQo+ICsJCWk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uID0gMDsK PiArCj4gIAkvKiBFYXJseSAoYW5kIHNpbGVudCkgcmV0dXJuIGlmIEd1QyBsb2FkaW5nIGlzIGRp c2FibGVkICovCj4gIAlpZiAoIWk5MTUuZW5hYmxlX2d1Y19sb2FkaW5nKQo+ICAJCXJldHVybjsK CllvdSBnb3QgdHdvIHNhbWUgY29uZGl0aW9ucyBvbmUgYWZ0ZXIgYW5vdGhlciwgbWF5YmUgbWVy Z2UgdGhlbT8KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5jCj4gaW5kZXggOGVlYzAzNS4uNGUxODRl ZGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmMKPiBAQCAtMzUsNiArMzUsODkgQEAgdm9p ZCBpbnRlbF91Y19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWlu dGVsX2d1Y19pbml0KGRldl9wcml2KTsKPiAgfQo+Cj4gK2ludCBpbnRlbF91Y19sb2FkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJc3RydWN0IGludGVsX2d1Y19m dyAqZ3VjX2Z3ID0gJmRldl9wcml2LT5ndWMuZ3VjX2Z3Owo+ICsJaW50IHJldCwgcmV0cmllczsK PiArCj4gKwkvKiBndWMgbm90IGVuYWJsZWQsIG5vdGhpbmcgdG8gZG8gKi8KPiArCWlmICghaTkx NS5lbmFibGVfZ3VjX2xvYWRpbmcpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJZ3VjX2ludGVycnVw dHNfcmVsZWFzZShkZXZfcHJpdik7Cj4gKwlnZW45X3Jlc2V0X2d1Y19pbnRlcnJ1cHRzKGRldl9w cml2KTsKPiArCj4gKwlndWNfZnctPmd1Y19md19sb2FkX3N0YXR1cyA9IEdVQ19GSVJNV0FSRV9Q RU5ESU5HOwo+ICsKPiArCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbikgewo+ICsJCXJl dCA9IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChkZXZfcHJpdik7Cj4gKwkJaWYgKHJldCkKPiAr CQkJZ290byBmYWlsOwo+ICsJfQo+ICsKPiArCS8qIFdhRW5hYmxlR3VDQm9vdEhhc2hDaGVja05v dFNldDpza2wsYnh0ICovCj4gKwlyZXRyaWVzID0gR1VDX1dBX0hBU0hfQ0hFQ0tfTk9UX1NFVF9B VFRFUE1UUzsKPiArCXdoaWxlIChyZXRyaWVzLS0pIHsKPiArCQkvKgo+ICsJCSAqIEFsd2F5cyBy ZXNldCB0aGUgR3VDIGp1c3QgYmVmb3JlIChyZSlsb2FkaW5nLCBzbwo+ICsJCSAqIHRoYXQgdGhl IHN0YXRlIGFuZCB0aW1pbmcgYXJlIGZhaXJseSBwcmVkaWN0YWJsZQo+ICsJCSAqLwo+ICsJCXJl dCA9IGd1Y19od19yZXNldChkZXZfcHJpdik7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBmYWls Owo+ICsKPiArCQlyZXQgPSBpbnRlbF9ndWNfbG9hZChkZXZfcHJpdik7Cj4gKwkJaWYgKHJldCA9 PSAwIHx8IHJldCAhPSAtRUFHQUlOKQo+ICsJCQlicmVhazsKPiArCj4gKwkJRFJNX0lORk8oIkd1 QyBmdyBsb2FkIGZhaWxlZDogJWQ7IHdpbGwgcmVzZXQgYW5kICIKPiArCQkJICJyZXRyeSAlZCBt b3JlIHRpbWUocylcbiIsIHJldCwgcmV0cmllcyk7Cj4gKwl9Cj4gKwo+ICsJLyogZGlkIHdlIHN1 Y2NlZGVkIG9yIHJ1biBvdXQgb2YgcmV0cmllcz8gKi8KCiJIYXZlIHdlIHN1Y2NlZWRlZCIgSSB0 aGluay4KCj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZmFpbDsKClRoZXJlIHdhcyBhIGRlYnVnIG1l c3NhZ2Ugcm91bmQgYWJvdXQgaGVyZSBJIHRoaW5rIHdoaWNoIGxvZ2dlZCB0aGF0IHRoZSAKZmly bXdhcmUgd2FzIHN1Y2Nlc3NmdWxseSBsb2FkZWQuIEkgdGhpbmsgaXQgaXMgZ29vZCB0byBoYXZl IGl0LiBJIHRoaW5rIApldmVuIGxvZ2dpbmcgdGhlIG1ham9yIGFuZCBtaW5vciB3b3VsZCBiZSBn b29kIGFuZCBtYXliZSBldmVuIGF0IAppbmZvcm1hdGlvbmFsIGxldmVsPwoKPiArCj4gKwlpZiAo aTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pIHsKPiArCQlpZiAoaTkxNS5ndWNfbG9nX2xldmVs ID49IDApCj4gKwkJCWdlbjlfZW5hYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiArCj4g KwkJcmV0ID0gaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUoZGV2X3ByaXYpOwo+ICsJCWlmIChy ZXQpCj4gKwkJCWdvdG8gZmFpbDsKPiArCQlndWNfaW50ZXJydXB0c19jYXB0dXJlKGRldl9wcml2 KTsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2ZhaWw6Cj4gKwkvKgo+ICsJICogV2Un dmUgZmFpbGVkIHRvIGxvYWQgdGhlIGZpcm13YXJlIDooCj4gKwkgKgo+ICsJICogRGVjaWRlIHdo ZXRoZXIgdG8gZGlzYWJsZSBHdUMgc3VibWlzc2lvbiBhbmQgZmFsbCBiYWNrIHRvCj4gKwkgKiBl eGVjbGlzdCBtb2RlLCBhbmQgd2hldGhlciB0byBoaWRlIHRoZSBlcnJvciBieSByZXR1cm5pbmcK PiArCSAqIHplcm8gb3IgdG8gcmV0dXJuIC1FSU8sIHdoaWNoIHRoZSBjYWxsZXIgd2lsbCB0cmVh dCBhcyBhCj4gKwkgKiBub25mYXRhbCBlcnJvciAoaS5lLiBpdCBkb2Vzbid0IHByZXZlbnQgZHJp dmVyIGxvYWQsIGJ1dAo+ICsJICogbWFya3MgdGhlIEdQVSBhcyB3ZWRnZWQgdW50aWwgcmVzZXQp Lgo+ICsJICovCj4gKwlpZiAoaTkxNS5lbmFibGVfZ3VjX2xvYWRpbmcgPiAxIHx8IGk5MTUuZW5h YmxlX2d1Y19zdWJtaXNzaW9uID4gMSkKPiArCQlyZXQgPSAtRUlPOwo+ICsJZWxzZQo+ICsJCXJl dCA9IDA7Cj4gKwo+ICsJaWYgKGk5MTUuZW5hYmxlX2d1Y19zdWJtaXNzaW9uKSB7Cj4gKwkJaTkx NS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24gPSAwOwo+ICsJCURSTV9JTkZPKCJHdUMgc3VibWlzc2lv biB3aXRob3V0IGZpcm13YXJlIG5vdCBzdXBwb3J0ZWRcbiIpOwo+ICsJCURSTV9OT1RFKCJGYWxs aW5nIGJhY2sgZnJvbSBHdUMgc3VibWlzc2lvbiB0byBleGVjbGlzdCBtb2RlXG4iKTsKPiArCX0K PiArCj4gKwlndWNfaW50ZXJydXB0c19yZWxlYXNlKGRldl9wcml2KTsKPiArCWk5MTVfZ3VjX3N1 Ym1pc3Npb25fZGlzYWJsZShkZXZfcHJpdik7Cj4gKwlpOTE1X2d1Y19zdWJtaXNzaW9uX2Zpbmko ZGV2X3ByaXYpOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gIC8qCj4gICAqIFJlYWQg R3VDIGNvbW1hbmQvc3RhdHVzIHJlZ2lzdGVyIChTT0ZUX1NDUkFUQ0hfMCkKPiAgICogUmV0dXJu IHRydWUgaWYgaXQgY29udGFpbnMgYSByZXNwb25zZSByYXRoZXIgdGhhbiBhIGNvbW1hbmQKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VjLmgKPiBpbmRleCBlYzFhNWIyLi44OWM3ZTFmIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91Yy5oCj4gQEAgLTI4LDYgKzI4LDkgQEAKPiAgI2luY2x1ZGUgImk5MTVf Z3VjX3JlZy5oIgo+ICAjaW5jbHVkZSAiaW50ZWxfcmluZ2J1ZmZlci5oIgo+Cj4gKy8qIFdhRW5h YmxlR3VDQm9vdEhhc2hDaGVja05vdFNldDpza2wsYnh0ICovCj4gKyNkZWZpbmUgR1VDX1dBX0hB U0hfQ0hFQ0tfTk9UX1NFVF9BVFRFUE1UUyAzCj4gKwo+ICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3Q7Cj4KPiAgLyoKPiBAQCAtMTcxLDYgKzE3NCw3IEBAIHN0cnVjdCBpbnRlbF9ndWMgewo+ ICAvKiBpbnRlbF91Yy5jICovCj4gIHZvaWQgaW50ZWxfdWNfaW5pdF9lYXJseShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGludGVsX3VjX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAraW50IGludGVsX3VjX2xvYWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgYm9vbCBpbnRlbF9ndWNfcmVjdihzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiAqc3RhdHVzKTsKPiAgaW50IGludGVsX2d1 Y19zZW5kKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4p Owo+ICBpbnQgaW50ZWxfZ3VjX3NhbXBsZV9mb3JjZXdha2Uoc3RydWN0IGludGVsX2d1YyAqZ3Vj KTsKPiBAQCAtMTg1LDYgKzE4OSwxMCBAQCBleHRlcm4gdm9pZCBpbnRlbF9ndWNfZmluaShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICBleHRlcm4gY29uc3QgY2hhciAqaW50 ZWxfZ3VjX2Z3X3N0YXR1c19yZXByKGVudW0gaW50ZWxfZ3VjX2Z3X3N0YXR1cyBzdGF0dXMpOwo+ ICBleHRlcm4gaW50IGludGVsX2d1Y19zdXNwZW5kKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7Cj4gIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICt2b2lkIGd1Y19pbnRlcnJ1cHRzX3JlbGVhc2Uoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9pZCBndWNfaW50ZXJydXB0c19jYXB0 dXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK2ludCBndWNfaHdfcmVz ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdTMyIGd1Y193b3BjbV9z aXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4KPiAgLyogaTkxNV9ndWNf c3VibWlzc2lvbi5jICovCj4gIGludCBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPgoKSSB3YXMganVzdCByZWFkaW5nIGl0IHNvIEkg Y2FuIHJldmlldyA1LzUgYXMgeW91IGhhdmUgYXNrZWQgbWUgdG8gbG9vayAKYXQgdGhhdCBvbmUu CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=