From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH 3/8] drm/i915: Extract i915_gem_obj_prepare_shmem_write() Date: Thu, 09 Jun 2016 15:47:55 +0300 Message-ID: <1465476475.9670.23.camel@linux.intel.com> References: <1465471779-20765-1-git-send-email-chris@chris-wilson.co.uk> <1465471779-20765-4-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 049F66EBB0 for ; Thu, 9 Jun 2016 12:48:08 +0000 (UTC) In-Reply-To: <1465471779-20765-4-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gdG8sIDIwMTYtMDYtMDkgYXQgMTI6MjkgKzAxMDAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBU aGlzIGlzIGEgY29tcGFuaW9uIHRvIGk5MTVfZ2VtX29ial9wcmVwYXJlX3NobWVtX3JlYWQoKSB0 aGF0IHByZXBhcmVzCj4gdGhlIGJhY2tpbmcgc3RvcmFnZSBmb3IgZGlyZWN0IHdyaXRlcy4gSXQg Zmlyc3Qgc2VyaWFsaXNlcyB3aXRoIHRoZSBHUFUsCj4gcGlucyB0aGUgYmFja2luZyBzdG9yYWdl IGFuZCB0aGVuIGluZGljYXRlcyB3aGF0IGNsZnVzaGVzIGFyZSByZXF1aXJlZCBpbgo+IG9yZGVy IGZvciB0aGUgd3JpdGVzIHRvIGJlIGNvaGVyZW50Lgo+IAo+IFdoaWxzdCBoZXJlLCBmaXggc3Vw cG9ydCBmb3IgYW5jaWVudCBDUFVzIHdpdGhvdXQgY2xmbHVzaCBmb3Igd2hpY2ggd2UKPiBjYW5u b3QgZG8gdGhlIEdUVCtjbGZsdXNoIHRyaWNrcy4KPiAKCkNvdWxkIGFkZCBoZXJlIHRoYXQgV0FS TiBpcyBraWNrZWQKCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+Cj4gLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2NtZF9wYXJz ZXIuYyB8wqDCoMKgMiArLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaMKgwqDC oMKgwqDCoMKgwqB8wqDCoMKgNiArLQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u Y8KgwqDCoMKgwqDCoMKgwqB8IDExOSArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0K PiDCoDMgZmlsZXMgY2hhbmdlZCwgODMgaW5zZXJ0aW9ucygrKSwgNDQgZGVsZXRpb25zKC0pCj4g Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNlci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9jbWRfcGFyc2VyLmMKPiBpbmRleCBiMGZkNmE3YjA2 MDMuLmRlMDM4ZGE2YzAxYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2NtZF9wYXJzZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfY21kX3BhcnNl ci5jCj4gQEAgLTk3MCw3ICs5NzAsNyBAQCBzdGF0aWMgdTMyICpjb3B5X2JhdGNoKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpkZXN0X29iaiwKPiDCoAkJwqDCoMKgwqDCoMKgwqB1MzIgYmF0 Y2hfc3RhcnRfb2Zmc2V0LAo+IMKgCQnCoMKgwqDCoMKgwqDCoHUzMiBiYXRjaF9sZW4pCj4gwqB7 Cj4gLQlpbnQgbmVlZHNfY2xmbHVzaCA9IDA7Cj4gKwl1bnNpZ25lZCBuZWVkc19jbGZsdXNoOwoK TWlsZGx5IGlycml0YXRlZCBieSBpbm51ZW5kbyB0byBib29sZWFuLiBOb3Qgc3VyZSB3aHkgbm90 IGp1c3QgImZsYWdzIi4KCj4gwqAJdm9pZCAqc3JjX2Jhc2UsICpzcmM7Cj4gwqAJdm9pZCAqZHN0 ID0gTlVMTDsKPiDCoAlpbnQgcmV0Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGIz MzNjZjQ5MjNiYy4uZWYzMjFmODRlNWZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g QEAgLTMwMjYsNyArMzAyNiwxMSBAQCB2b2lkIGk5MTVfZ2VtX3JlbGVhc2VfYWxsX21tYXBzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gwqB2b2lkIGk5MTVfZ2VtX3JlbGVh c2VfbW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKPiDCoAo+IMKgaW50IGk5 MTVfZ2VtX29ial9wcmVwYXJlX3NobWVtX3JlYWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKPiAtCQkJCcKgwqDCoMKgaW50ICpuZWVkc19jbGZsdXNoKTsKPiArCQkJCcKgwqDCoMKg dW5zaWduZWQgKm5lZWRzX2NsZmx1c2gpOwo+ICtpbnQgaTkxNV9nZW1fb2JqX3ByZXBhcmVfc2ht ZW1fd3JpdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJCcKgwqDCoMKg wqB1bnNpZ25lZCAqbmVlZHNfY2xmbHVzaCk7Cj4gKyNkZWZpbmUgQ0xGTFVTSF9CRUZPUkUgMHgx Cj4gKyNkZWZpbmUgQ0xGTFVTSF9BRlRFUiAweDIKPiDCoAo+IMKgaW50IF9fbXVzdF9jaGVjayBp OTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmop Owo+IMKgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggYTQxZmEwMWViMDI0Li5jNmQw NmNiMjExOTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtNTYzLDM0ICs1NjMs OTUgQEAgX19jb3B5X2Zyb21fdXNlcl9zd2l6emxlZChjaGFyICpncHVfdmFkZHIsIGludCBncHVf b2Zmc2V0LAo+IMKgICogZmx1c2ggdGhlIG9iamVjdCBmcm9tIHRoZSBDUFUgY2FjaGUuCj4gwqAg Ki8KPiDCoGludCBpOTE1X2dlbV9vYmpfcHJlcGFyZV9zaG1lbV9yZWFkKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQnCoMKgwqDCoGludCAqbmVlZHNfY2xmbHVzaCkKPiAr CQkJCcKgwqDCoMKgdW5zaWduZWQgKm5lZWRzX2NsZmx1c2gpCj4gwqB7Cj4gwqAJaW50IHJldDsK PiDCoAo+IMKgCSpuZWVkc19jbGZsdXNoID0gMDsKPiAtCj4gLQlpZiAoV0FSTl9PTigob2JqLT5v cHMtPmZsYWdzICYgSTkxNV9HRU1fT0JKRUNUX0hBU19TVFJVQ1RfUEFHRSkgPT0gMCkpCj4gKwlp ZiAoKG9iai0+b3BzLT5mbGFncyAmIEk5MTVfR0VNX09CSkVDVF9IQVNfU1RSVUNUX1BBR0UpID09 IDApCgpXaHkgbm8gbW9yZSBXQVJOPwoKPiDCoAkJcmV0dXJuIC1FSU5WQUw7Cj4gwqAKPiDCoAlp ZiAoIShvYmotPmJhc2UucmVhZF9kb21haW5zICYgSTkxNV9HRU1fRE9NQUlOX0NQVSkpIHsKPiAr CQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmcob2JqLCB0cnVlKTsKPiArCQlp ZiAocmV0KQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsKPiDCoAkJLyogSWYgd2UncmUgbm90IGluIHRo ZSBjcHUgcmVhZCBkb21haW4sIHNldCBvdXJzZWxmIGludG8gdGhlIGd0dAo+IMKgCQnCoCogcmVh ZCBkb21haW4gYW5kIG1hbnVhbGx5IGZsdXNoIGNhY2hlbGluZXMgKGlmIHJlcXVpcmVkKS4gVGhp cwo+IMKgCQnCoCogb3B0aW1pemVzIGZvciB0aGUgY2FzZSB3aGVuIHRoZSBncHUgd2lsbCBkaXJ0 eSB0aGUgZGF0YQo+IMKgCQnCoCogYW55d2F5IGFnYWluIGJlZm9yZSB0aGUgbmV4dCBwcmVhZCBo YXBwZW5zLiAqLwo+IMKgCQkqbmVlZHNfY2xmbHVzaCA9ICFjcHVfY2FjaGVfaXNfY29oZXJlbnQo b2JqLT5iYXNlLmRldiwKPiDCoAkJCQkJCQlvYmotPmNhY2hlX2xldmVsKTsKCk1heWJlIGFkZCBD TEZMVVNIX05PTkUgYW5kIHVzZSA/OiwgdGhpcyBpcyBkZWNlaXZpbmcgbm93IHRoYXQgaXQncyBu b3QKYm9vbGVhbiwgYW5kIHRoYXQncyB3aHkgdGhlIG5hbWUgc2hvdWxkIGJlIGNoYW5nZWQgdG9v LgoKPiAtCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJpbmcob2JqLCB0cnVlKTsK PiArCX0KPiArCj4gKwlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9iaik7Cj4gKwlp ZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdl cyhvYmopOwo+ICsKPiArCWlmICgqbmVlZHNfY2xmbHVzaCAmJiAhYm9vdF9jcHVfaGFzKFg4Nl9G RUFUVVJFX0NMRkxVU0gpKSB7CgpZb3VyIG93biBjb21tZW50IGFwcGxpZXMgaGVyZS4KCj4gKwkJ cmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKG9iaiwgZmFsc2UpOwo+ICsJ CWlmIChyZXQpIHsKPiArCQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7Cj4gKwkJ CXJldHVybiByZXQ7Cj4gKwkJfQo+ICsJCSpuZWVkc19jbGZsdXNoID0gMDsKPiArCX0KPiArCj4g KwlyZXR1cm4gMDsKPiArfQo+ICsKPiAraW50IGk5MTVfZ2VtX29ial9wcmVwYXJlX3NobWVtX3dy aXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJCQnCoMKgwqDCoHVuc2ln bmVkICpuZWVkc19jbGZsdXNoKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCSpuZWVkc19jbGZs dXNoID0gMDsKPiArCWlmICgob2JqLT5vcHMtPmZsYWdzICYgSTkxNV9HRU1fT0JKRUNUX0hBU19T VFJVQ1RfUEFHRSkgPT0gMCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAob2JqLT5i YXNlLndyaXRlX2RvbWFpbiAhPSBJOTE1X0dFTV9ET01BSU5fQ1BVKSB7Cj4gKwkJcmV0ID0gaTkx NV9nZW1fb2JqZWN0X3dhaXRfcmVuZGVyaW5nKG9iaiwgZmFsc2UpOwo+IMKgCQlpZiAocmV0KQo+ IMKgCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJLyogSWYgd2UncmUgbm90IGluIHRoZSBjcHUgd3Jp dGUgZG9tYWluLCBzZXQgb3Vyc2VsZiBpbnRvIHRoZQo+ICsJCcKgKiBndHQgd3JpdGUgZG9tYWlu IGFuZCBtYW51YWxseSBmbHVzaCBjYWNoZWxpbmVzIChhcyByZXF1aXJlZCkuCj4gKwkJwqAqIFRo aXMgb3B0aW1pemVzIGZvciB0aGUgY2FzZSB3aGVuIHRoZSBncHUgd2lsbCB1c2UgdGhlIGRhdGEK PiArCQnCoCogcmlnaHQgYXdheSBhbmQgd2UgdGhlcmVmb3JlIGhhdmUgdG8gY2xmbHVzaCBhbnl3 YXkuCj4gKwkJwqAqLwo+ICsJCSpuZWVkc19jbGZsdXNoIHw9IGNwdV93cml0ZV9uZWVkc19jbGZs dXNoKG9iaikgPDwgMTsKPiDCoAl9Cj4gwqAKPiArCS8qIFNhbWUgdHJpY2sgYXBwbGllcyB0byBp bnZhbGlkYXRlIHBhcnRpYWxseSB3cml0dGVuIGNhY2hlbGluZXMgcmVhZAo+ICsJwqAqIGJlZm9y ZSB3cml0aW5nLgo+ICsJwqAqLwo+ICsJaWYgKChvYmotPmJhc2UucmVhZF9kb21haW5zICYgSTkx NV9HRU1fRE9NQUlOX0NQVSkgPT0gMCkKPiArCQkqbmVlZHNfY2xmbHVzaCB8PSAhY3B1X2NhY2hl X2lzX2NvaGVyZW50KG9iai0+YmFzZS5kZXYsCj4gKwkJCQkJCQnCoG9iai0+Y2FjaGVfbGV2ZWwp Owo+ICsKPiDCoAlyZXQgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2VzKG9iaik7Cj4gwqAJaWYg KHJldCkKPiDCoAkJcmV0dXJuIHJldDsKPiDCoAo+IMKgCWk5MTVfZ2VtX29iamVjdF9waW5fcGFn ZXMob2JqKTsKPiDCoAo+IC0JcmV0dXJuIHJldDsKPiArCWlmICgqbmVlZHNfY2xmbHVzaCAmJiAh Ym9vdF9jcHVfaGFzKFg4Nl9GRUFUVVJFX0NMRkxVU0gpKSB7Cj4gKwkJcmV0ID0gaTkxNV9nZW1f b2JqZWN0X3NldF90b19jcHVfZG9tYWluKG9iaiwgdHJ1ZSk7Cj4gKwkJaWYgKHJldCkgewo+ICsJ CQlpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKPiArCQkJcmV0dXJuIHJldDsKPiAr CQl9Cj4gKwkJKm5lZWRzX2NsZmx1c2ggPSAwOwo+ICsJfQoKUmVsYXRpdmVseSBsYXJnZSBjb21t b24gbWlkLXNlY3Rpb24gaW4gdGhlc2UgdHdvLCBzdGF0aWMgZnVuYz8KCk90aGVyd2lzZSBsb29r cyBmaW5lIHRvIG1lLCB0aG9zZSBleHBsYWluZWQgb3IgZml4ZWQ7CgpSZXZpZXdlZC1ieTogSm9v bmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgoKUmVnYXJkcywg Sm9vbmFzCgo+ICsKPiArCWlmICgoKm5lZWRzX2NsZmx1c2ggJiBDTEZMVVNIX0FGVEVSKSA9PSAw KQo+ICsJCW9iai0+Y2FjaGVfZGlydHkgPSB0cnVlOwo+ICsKPiArCWludGVsX2ZiX29ial9pbnZh bGlkYXRlKG9iaiwgT1JJR0lOX0NQVSk7Cj4gKwlvYmotPmRpcnR5ID0gMTsKPiArCXJldHVybiAw Owo+ICvCoH0KPiDCoAo+IMKgLyogUGVyLXBhZ2UgY29weSBmdW5jdGlvbiBmb3IgdGhlIHNobWVt IHByZWFkIGZhc3RwYXRoLgo+IEBAIC05OTksNDEgKzEwNjAsMTcgQEAgaTkxNV9nZW1fc2htZW1f cHdyaXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gwqAJaW50IHNobWVtX3BhZ2Vfb2Zmc2V0 LCBwYWdlX2xlbmd0aCwgcmV0ID0gMDsKPiDCoAlpbnQgb2JqX2RvX2JpdDE3X3N3aXp6bGluZywg cGFnZV9kb19iaXQxN19zd2l6emxpbmc7Cj4gwqAJaW50IGhpdF9zbG93cGF0aCA9IDA7Cj4gLQlp bnQgbmVlZHNfY2xmbHVzaF9hZnRlciA9IDA7Cj4gLQlpbnQgbmVlZHNfY2xmbHVzaF9iZWZvcmUg PSAwOwo+ICsJdW5zaWduZWQgbmVlZHNfY2xmbHVzaDsKPiDCoAlzdHJ1Y3Qgc2dfcGFnZV9pdGVy IHNnX2l0ZXI7Cj4gwqAKPiAtCXVzZXJfZGF0YSA9IHU2NF90b191c2VyX3B0cihhcmdzLT5kYXRh X3B0cik7Cj4gLQlyZW1haW4gPSBhcmdzLT5zaXplOwo+IC0KPiAtCW9ial9kb19iaXQxN19zd2l6 emxpbmcgPSBpOTE1X2dlbV9vYmplY3RfbmVlZHNfYml0MTdfc3dpenpsZShvYmopOwo+IC0KPiAt CWlmIChvYmotPmJhc2Uud3JpdGVfZG9tYWluICE9IEk5MTVfR0VNX0RPTUFJTl9DUFUpIHsKPiAt CQkvKiBJZiB3ZSdyZSBub3QgaW4gdGhlIGNwdSB3cml0ZSBkb21haW4sIHNldCBvdXJzZWxmIGlu dG8gdGhlIGd0dAo+IC0JCcKgKiB3cml0ZSBkb21haW4gYW5kIG1hbnVhbGx5IGZsdXNoIGNhY2hl bGluZXMgKGlmIHJlcXVpcmVkKS4gVGhpcwo+IC0JCcKgKiBvcHRpbWl6ZXMgZm9yIHRoZSBjYXNl IHdoZW4gdGhlIGdwdSB3aWxsIHVzZSB0aGUgZGF0YQo+IC0JCcKgKiByaWdodCBhd2F5IGFuZCB3 ZSB0aGVyZWZvcmUgaGF2ZSB0byBjbGZsdXNoIGFueXdheS4gKi8KPiAtCQluZWVkc19jbGZsdXNo X2FmdGVyID0gY3B1X3dyaXRlX25lZWRzX2NsZmx1c2gob2JqKTsKPiAtCQlyZXQgPSBpOTE1X2dl bV9vYmplY3Rfd2FpdF9yZW5kZXJpbmcob2JqLCBmYWxzZSk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJ cmV0dXJuIHJldDsKPiAtCX0KPiAtCS8qIFNhbWUgdHJpY2sgYXBwbGllcyB0byBpbnZhbGlkYXRl IHBhcnRpYWxseSB3cml0dGVuIGNhY2hlbGluZXMgcmVhZAo+IC0JwqAqIGJlZm9yZSB3cml0aW5n LiAqLwo+IC0JaWYgKChvYmotPmJhc2UucmVhZF9kb21haW5zICYgSTkxNV9HRU1fRE9NQUlOX0NQ VSkgPT0gMCkKPiAtCQluZWVkc19jbGZsdXNoX2JlZm9yZSA9Cj4gLQkJCSFjcHVfY2FjaGVfaXNf Y29oZXJlbnQoZGV2LCBvYmotPmNhY2hlX2xldmVsKTsKPiAtCj4gLQlyZXQgPSBpOTE1X2dlbV9v YmplY3RfZ2V0X3BhZ2VzKG9iaik7Cj4gKwlyZXQgPSBpOTE1X2dlbV9vYmpfcHJlcGFyZV9zaG1l bV93cml0ZShvYmosICZuZWVkc19jbGZsdXNoKTsKPiDCoAlpZiAocmV0KQo+IMKgCQlyZXR1cm4g cmV0Owo+IMKgCj4gLQlpbnRlbF9mYl9vYmpfaW52YWxpZGF0ZShvYmosIE9SSUdJTl9DUFUpOwo+ IC0KPiAtCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKPiAtCj4gKwlvYmpfZG9fYml0 MTdfc3dpenpsaW5nID0gaTkxNV9nZW1fb2JqZWN0X25lZWRzX2JpdDE3X3N3aXp6bGUob2JqKTsK PiArCXVzZXJfZGF0YSA9IHU2NF90b191c2VyX3B0cihhcmdzLT5kYXRhX3B0cik7Cj4gwqAJb2Zm c2V0ID0gYXJncy0+b2Zmc2V0Owo+IC0Jb2JqLT5kaXJ0eSA9IDE7Cj4gKwlyZW1haW4gPSBhcmdz LT5zaXplOwo+IMKgCj4gwqAJZm9yX2VhY2hfc2dfcGFnZShvYmotPnBhZ2VzLT5zZ2wsICZzZ19p dGVyLCBvYmotPnBhZ2VzLT5uZW50cywKPiDCoAkJCcKgb2Zmc2V0ID4+IFBBR0VfU0hJRlQpIHsK PiBAQCAtMTA1Nyw3ICsxMDk0LDcgQEAgaTkxNV9nZW1fc2htZW1fcHdyaXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCj4gwqAJCS8qIElmIHdlIGRvbid0IG92ZXJ3cml0ZSBhIGNhY2hlbGluZSBj b21wbGV0ZWx5IHdlIG5lZWQgdG8gYmUKPiDCoAkJwqAqIGNhcmVmdWwgdG8gaGF2ZSB1cC10by1k YXRlIGRhdGEgYnkgZmlyc3QgY2xmbHVzaGluZy4gRG9uJ3QKPiDCoAkJwqAqIG92ZXJjb21wbGlj YXRlIHRoaW5ncyBhbmQgZmx1c2ggdGhlIGVudGlyZSBwYXRjaC4gKi8KPiAtCQlwYXJ0aWFsX2Nh Y2hlbGluZV93cml0ZSA9IG5lZWRzX2NsZmx1c2hfYmVmb3JlICYmCj4gKwkJcGFydGlhbF9jYWNo ZWxpbmVfd3JpdGUgPSBuZWVkc19jbGZsdXNoICYgQ0xGTFVTSF9CRUZPUkUgJiYKPiDCoAkJCSgo c2htZW1fcGFnZV9vZmZzZXQgfCBwYWdlX2xlbmd0aCkKPiDCoAkJCQkmIChib290X2NwdV9kYXRh Lng4Nl9jbGZsdXNoX3NpemUgLSAxKSk7Cj4gwqAKPiBAQCAtMTA2Nyw3ICsxMTA0LDcgQEAgaTkx NV9nZW1fc2htZW1fcHdyaXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gwqAJCXJldCA9IHNo bWVtX3B3cml0ZV9mYXN0KHBhZ2UsIHNobWVtX3BhZ2Vfb2Zmc2V0LCBwYWdlX2xlbmd0aCwKPiDC oAkJCQkJdXNlcl9kYXRhLCBwYWdlX2RvX2JpdDE3X3N3aXp6bGluZywKPiDCoAkJCQkJcGFydGlh bF9jYWNoZWxpbmVfd3JpdGUsCj4gLQkJCQkJbmVlZHNfY2xmbHVzaF9hZnRlcik7Cj4gKwkJCQkJ bmVlZHNfY2xmbHVzaCAmIENMRkxVU0hfQUZURVIpOwo+IMKgCQlpZiAocmV0ID09IDApCj4gwqAJ CQlnb3RvIG5leHRfcGFnZTsKPiDCoAo+IEBAIC0xMDc2LDcgKzExMTMsNyBAQCBpOTE1X2dlbV9z aG1lbV9wd3JpdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiDCoAkJcmV0ID0gc2htZW1fcHdy aXRlX3Nsb3cocGFnZSwgc2htZW1fcGFnZV9vZmZzZXQsIHBhZ2VfbGVuZ3RoLAo+IMKgCQkJCQl1 c2VyX2RhdGEsIHBhZ2VfZG9fYml0MTdfc3dpenpsaW5nLAo+IMKgCQkJCQlwYXJ0aWFsX2NhY2hl bGluZV93cml0ZSwKPiAtCQkJCQluZWVkc19jbGZsdXNoX2FmdGVyKTsKPiArCQkJCQluZWVkc19j bGZsdXNoICYgQ0xGTFVTSF9BRlRFUik7Cj4gwqAKPiDCoAkJbXV0ZXhfbG9jaygmZGV2LT5zdHJ1 Y3RfbXV0ZXgpOwo+IMKgCj4gQEAgLTEwOTgsMTcgKzExMzUsMTUgQEAgb3V0Ogo+IMKgCQnCoCog Y2FjaGVsaW5lcyBpbi1saW5lIHdoaWxlIHdyaXRpbmcgYW5kIHRoZSBvYmplY3QgbW92ZWQKPiDC oAkJwqAqIG91dCBvZiB0aGUgY3B1IHdyaXRlIGRvbWFpbiB3aGlsZSB3ZSd2ZSBkcm9wcGVkIHRo ZSBsb2NrLgo+IMKgCQnCoCovCj4gLQkJaWYgKCFuZWVkc19jbGZsdXNoX2FmdGVyICYmCj4gKwkJ aWYgKCEobmVlZHNfY2xmbHVzaCAmIENMRkxVU0hfQUZURVIpICYmCj4gwqAJCcKgwqDCoMKgb2Jq LT5iYXNlLndyaXRlX2RvbWFpbiAhPSBJOTE1X0dFTV9ET01BSU5fQ1BVKSB7Cj4gwqAJCQlpZiAo aTkxNV9nZW1fY2xmbHVzaF9vYmplY3Qob2JqLCBvYmotPnBpbl9kaXNwbGF5KSkKPiAtCQkJCW5l ZWRzX2NsZmx1c2hfYWZ0ZXIgPSB0cnVlOwo+ICsJCQkJbmVlZHNfY2xmbHVzaCB8PSBDTEZMVVNI X0FGVEVSOwo+IMKgCQl9Cj4gwqAJfQo+IMKgCj4gLQlpZiAobmVlZHNfY2xmbHVzaF9hZnRlcikK PiArCWlmIChuZWVkc19jbGZsdXNoICYgQ0xGTFVTSF9BRlRFUikKPiDCoAkJaTkxNV9nZW1fY2hp cHNldF9mbHVzaCh0b19pOTE1KGRldikpOwo+IC0JZWxzZQo+IC0JCW9iai0+Y2FjaGVfZGlydHkg PSB0cnVlOwo+IMKgCj4gwqAJaW50ZWxfZmJfb2JqX2ZsdXNoKG9iaiwgZmFsc2UsIE9SSUdJTl9D UFUpOwo+IMKgCXJldHVybiByZXQ7Ci0tIApKb29uYXMgTGFodGluZW4KT3BlbiBTb3VyY2UgVGVj aG5vbG9neSBDZW50ZXIKSW50ZWwgQ29ycG9yYXRpb24KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==