From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: Re: [PATCH v2 04/37] drm/i915/region: support continuous allocations Date: Fri, 28 Jun 2019 00:01:40 +0100 Message-ID: <156167650083.21507.1302829380416596340@skylake-alporthouse-com> References: <20190627205633.1143-1-matthew.auld@intel.com> <20190627205633.1143-5-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 962AA6E84F for ; Thu, 27 Jun 2019 23:01:45 +0000 (UTC) In-Reply-To: <20190627205633.1143-5-matthew.auld@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matthew Auld , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UXVvdGluZyBNYXR0aGV3IEF1bGQgKDIwMTktMDYtMjcgMjE6NTY6MDApCj4gU29tZSBvYmplY3Rz IG1heSBuZWVkIHRvIGJlIGFsbG9jYXRlZCBhcyBhIGNvbnRpbnVvdXMgYmxvY2ssIHRoaW5raW5n Cj4gYWhlYWQgdGhlIHZhcmlvdXMga2VybmVsIGlvX21hcHBpbmcgaW50ZXJmYWNlcyBzZWVtIHRv IGV4cGVjdCBpdC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVs ZEBpbnRlbC5jb20+Cj4gQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxpbnV4 LmludGVsLmNvbT4KPiBDYzogQWJkaWVsIEphbnVsZ3VlIDxhYmRpZWwuamFudWxndWVAbGludXgu aW50ZWwuY29tPgo+IC0tLQo+ICAuLi4vZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmplY3Rf dHlwZXMuaCAgfCAgIDQgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tZW1vcnlfcmVn aW9uLmMgICAgfCAgIDcgKy0KPiAgLi4uL2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlf cmVnaW9uLmMgIHwgMTUyICsrKysrKysrKysrKysrKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvbW9ja19yZWdpb24uYyAgfCAgIDMgKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDE2 MCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0X3R5cGVzLmgKPiBpbmRleCA4NzAwMGZjMjRhYjMu LjFjNGI5OWU1MDdjMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fb2JqZWN0X3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkx NV9nZW1fb2JqZWN0X3R5cGVzLmgKPiBAQCAtMTMzLDYgKzEzMywxMCBAQCBzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCB7Cj4gICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGJhdGNoX3Bvb2xfbGlu azsKPiAgICAgICAgIEk5MTVfU0VMRlRFU1RfREVDTEFSRShzdHJ1Y3QgbGlzdF9oZWFkIHN0X2xp bmspOwo+ICAKPiArICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4gKyNkZWZpbmUgSTkxNV9C T19BTExPQ19DT05USUdVT1VTICgxPDwwKQpCSVQoMCkKPiArI2RlZmluZSBJOTE1X0JPX0FMTE9D X0ZMQUdTIChJOTE1X0JPX0FMTE9DX0NPTlRJR1VPVVMpCj4gKwo+ICAgICAgICAgLyoKPiAgICAg ICAgICAqIElzIHRoZSBvYmplY3QgdG8gYmUgbWFwcGVkIGFzIHJlYWQtb25seSB0byB0aGUgR1BV Cj4gICAgICAgICAgKiBPbmx5IGhvbm91cmVkIGlmIGhhcmR3YXJlIGhhcyByZWxldmFudCBwdGUg Yml0Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdp b24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uYwo+IGluZGV4 IDcyMWI0N2U0NjQ5Mi4uOWI2YTMyYmZhMjBkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX21lbW9yeV9yZWdpb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX21lbW9yeV9yZWdpb24uYwo+IEBAIC05MCw2ICs5MCw3IEBAIGk5MTVfbWVtb3J5X3Jl Z2lvbl9nZXRfcGFnZXNfYnVkZHkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAg ewo+ICAgICAgICAgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSA9IG9iai0+bWVtb3J5 X3JlZ2lvbjsKPiAgICAgICAgIHJlc291cmNlX3NpemVfdCBzaXplID0gb2JqLT5iYXNlLnNpemU7 Cj4gKyAgICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MgPSBvYmotPmZsYWdzOwoKV2FzIHVuc2lnbmVk IGxvbmcuCgo+ICAgICAgICAgc3RydWN0IHNnX3RhYmxlICpzdDsKPiAgICAgICAgIHN0cnVjdCBz Y2F0dGVybGlzdCAqc2c7Cj4gICAgICAgICB1bnNpZ25lZCBpbnQgc2dfcGFnZV9zaXplczsKPiBA QCAtMTMwLDcgKzEzMSw3IEBAIGk5MTVfbWVtb3J5X3JlZ2lvbl9nZXRfcGFnZXNfYnVkZHkoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgICAgICAgICAgICAgICAgICAgICAgICBp ZiAoIUlTX0VSUihibG9jaykpCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh azsKPiAgCj4gLSAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvcmRlci0tKSB7Cj4gKyAgICAg ICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgSTkxNV9CT19BTExPQ19DT05USUdVT1VTIHx8 ICFvcmRlci0tKSB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZV9z aXplX3QgdGFyZ2V0Owo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVycjsK PiAgCj4gQEAgLTIxOSw2ICsyMjAsOSBAQCBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3JlZ2lvbihz dHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lvbiAqbWVtLAo+ICAgICAgICAgaWYgKCFtZW0pCj4gICAg ICAgICAgICAgICAgIHJldHVybiBFUlJfUFRSKC1FTk9ERVYpOwo+ICAKPiArICAgICAgIGlmIChm bGFncyAmIH5JOTE1X0JPX0FMTE9DX0ZMQUdTKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gRVJS X1BUUigtRUlOVkFMKTsKPiArCj4gICAgICAgICBzaXplID0gcm91bmRfdXAoc2l6ZSwgbWVtLT5t aW5fcGFnZV9zaXplKTsKPiAgCj4gICAgICAgICBHRU1fQlVHX09OKCFzaXplKTsKPiBAQCAtMjM2 LDYgKzI0MCw3IEBAIGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfcmVnaW9uKHN0cnVjdCBpbnRlbF9t ZW1vcnlfcmVnaW9uICptZW0sCj4gIAo+ICAgICAgICAgSU5JVF9MSVNUX0hFQUQoJm9iai0+Ymxv Y2tzKTsKPiAgICAgICAgIG9iai0+bWVtb3J5X3JlZ2lvbiA9IG1lbTsKPiArICAgICAgIG9iai0+ ZmxhZ3MgPSBmbGFnczsKPiAgCj4gICAgICAgICBtdXRleF9sb2NrKCZtZW0tPm9ial9sb2NrKTsK PiAgICAgICAgIGxpc3RfYWRkKCZvYmotPnJlZ2lvbl9saW5rLCAmbWVtLT5vYmplY3RzKTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9y ZWdpb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVn aW9uLmMKPiBpbmRleCBlY2U0OTk4Njk3NDcuLmM5ZGU4YjUwMzllNCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaW50ZWxfbWVtb3J5X3JlZ2lvbi5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYwo+ IEBAIC03OCwxNyArNzgsMTcgQEAgc3RhdGljIGludCBpZ3RfbW9ja19maWxsKHZvaWQgKmFyZykK PiAgCj4gIHN0YXRpYyB2b2lkIGlndF9tYXJrX2V2aWN0YWJsZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqKQo+ICB7Cj4gLSAgICAgICBpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMo b2JqKTsKPiArICAgICAgIGlmIChpOTE1X2dlbV9vYmplY3RfaGFzX3Bpbm5lZF9wYWdlcyhvYmop KQo+ICsgICAgICAgICAgICAgICBpOTE1X2dlbV9vYmplY3RfdW5waW5fcGFnZXMob2JqKTsKPiAg ICAgICAgIG9iai0+bW0ubWFkdiA9IEk5MTVfTUFEVl9ET05UTkVFRDsKPiAgICAgICAgIGxpc3Rf bW92ZSgmb2JqLT5yZWdpb25fbGluaywgJm9iai0+bWVtb3J5X3JlZ2lvbi0+cHVyZ2VhYmxlKTsK PiAgfQo+ICAKPiAtc3RhdGljIGludCBpZ3RfbW9ja19ldmljdCh2b2lkICphcmcpCj4gK3N0YXRp YyBpbnQgaWd0X2ZyYWdfcmVnaW9uKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqb2JqZWN0cykKPiAg ewo+IC0gICAgICAgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSA9IGFyZzsKPiAgICAg ICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gICAgICAgICB1bnNpZ25lZCBs b25nIG5fb2JqZWN0czsKPiAtICAgICAgIExJU1RfSEVBRChvYmplY3RzKTsKPiAgICAgICAgIHJl c291cmNlX3NpemVfdCB0YXJnZXQ7Cj4gICAgICAgICByZXNvdXJjZV9zaXplX3QgdG90YWw7Cj4g ICAgICAgICBpbnQgZXJyID0gMDsKPiBAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBpbnQgaWd0 X21vY2tfZXZpY3Qodm9pZCAqYXJnKQo+ICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJy X2Nsb3NlX29iamVjdHM7Cj4gICAgICAgICAgICAgICAgIH0KPiAgCj4gLSAgICAgICAgICAgICAg IGxpc3RfYWRkKCZvYmotPnN0X2xpbmssICZvYmplY3RzKTsKPiArICAgICAgICAgICAgICAgbGlz dF9hZGQoJm9iai0+c3RfbGluaywgb2JqZWN0cyk7Cj4gIAo+ICAgICAgICAgICAgICAgICBlcnIg PSBpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7Cj4gICAgICAgICAgICAgICAgIGlmIChl cnIpCj4gQEAgLTExOCw2ICsxMTgsMzkgQEAgc3RhdGljIGludCBpZ3RfbW9ja19ldmljdCh2b2lk ICphcmcpCj4gICAgICAgICAgICAgICAgICAgICAgICAgaWd0X21hcmtfZXZpY3RhYmxlKG9iaik7 Cj4gICAgICAgICB9Cj4gIAo+ICsgICAgICAgcmV0dXJuIDA7Cj4gKwo+ICtlcnJfY2xvc2Vfb2Jq ZWN0czoKPiArICAgICAgIGNsb3NlX29iamVjdHMob2JqZWN0cyk7Cj4gKyAgICAgICByZXR1cm4g ZXJyOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpZ3RfZGVmcmFnX3JlZ2lvbihzdHJ1Y3QgbGlz dF9oZWFkICpvYmplY3RzKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqOwo+ICsKPiArICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCBvYmplY3RzLCBz dF9saW5rKSB7Cj4gKyAgICAgICAgICAgICAgIGlmIChvYmotPm1tLm1hZHYgPT0gSTkxNV9NQURW X1dJTExORUVEKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlndF9tYXJrX2V2aWN0YWJsZShv YmopOwo+ICsgICAgICAgfQo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGlndF9tb2NrX2V2aWN0KHZv aWQgKmFyZykKPiArewo+ICsgICAgICAgc3RydWN0IGludGVsX21lbW9yeV9yZWdpb24gKm1lbSA9 IGFyZzsKPiArICAgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gKyAgICAg ICBMSVNUX0hFQUQob2JqZWN0cyk7Cj4gKyAgICAgICByZXNvdXJjZV9zaXplX3QgdGFyZ2V0Owo+ ICsgICAgICAgcmVzb3VyY2Vfc2l6ZV90IHRvdGFsOwo+ICsgICAgICAgaW50IGVycjsKPiArCj4g KyAgICAgICBlcnIgPSBpZ3RfZnJhZ19yZWdpb24obWVtLCAmb2JqZWN0cyk7Cj4gKyAgICAgICBp ZiAoZXJyKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gZXJyOwo+ICsKPiArICAgICAgIHRvdGFs ID0gcmVzb3VyY2Vfc2l6ZSgmbWVtLT5yZWdpb24pOwo+ICsgICAgICAgdGFyZ2V0ID0gbWVtLT5t bS5taW5fc2l6ZTsKPiArCj4gICAgICAgICB3aGlsZSAodGFyZ2V0IDw9IHRvdGFsIC8gMikgewo+ ICAgICAgICAgICAgICAgICBvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX3JlZ2lvbihtZW0s IHRhcmdldCwgMCk7Cj4gICAgICAgICAgICAgICAgIGlmIChJU19FUlIob2JqKSkgewo+IEBAIC0x NDgsMTEgKzE4MSwxMjAgQEAgc3RhdGljIGludCBpZ3RfbW9ja19ldmljdCh2b2lkICphcmcpCj4g ICAgICAgICByZXR1cm4gZXJyOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW50IGlndF9tb2NrX2NvbnRp bnVvdXModm9pZCAqYXJnKQo+ICt7Cj4gKyAgICAgICBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3JlZ2lv biAqbWVtID0gYXJnOwo+ICsgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsK PiArICAgICAgIExJU1RfSEVBRChvYmplY3RzKTsKPiArICAgICAgIHJlc291cmNlX3NpemVfdCB0 YXJnZXQ7Cj4gKyAgICAgICByZXNvdXJjZV9zaXplX3QgdG90YWw7Cj4gKyAgICAgICBpbnQgZXJy Owo+ICsKPiArICAgICAgIGVyciA9IGlndF9mcmFnX3JlZ2lvbihtZW0sICZvYmplY3RzKTsKPiAr ICAgICAgIGlmIChlcnIpCj4gKyAgICAgICAgICAgICAgIHJldHVybiBlcnI7Cj4gKwo+ICsgICAg ICAgdG90YWwgPSByZXNvdXJjZV9zaXplKCZtZW0tPnJlZ2lvbik7Cj4gKyAgICAgICB0YXJnZXQg PSB0b3RhbCAvIDI7Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIFNhbml0eSBjaGVjayB0 aGF0IHdlIGNhbiBhbGxvY2F0ZSBhbGwgb2YgdGhlIGF2YWlsYWJsZSBmcmFnbWVudGVkCj4gKyAg ICAgICAgKiBzcGFjZS4KPiArICAgICAgICAqLwo+ICsgICAgICAgb2JqID0gaTkxNV9nZW1fb2Jq ZWN0X2NyZWF0ZV9yZWdpb24obWVtLCB0YXJnZXQsIDApOwo+ICsgICAgICAgaWYgKElTX0VSUihv YmopKSB7Cj4gKyAgICAgICAgICAgICAgIGVyciA9IFBUUl9FUlIob2JqKTsKPiArICAgICAgICAg ICAgICAgZ290byBlcnJfY2xvc2Vfb2JqZWN0czsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBs aXN0X2FkZCgmb2JqLT5zdF9saW5rLCAmb2JqZWN0cyk7Cj4gKwo+ICsgICAgICAgZXJyID0gaTkx NV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmopOwo+ICsgICAgICAgaWYgKGVycikgewo+ICsgICAg ICAgICAgICAgICBwcl9lcnIoImZhaWxlZCB0byBhbGxvY2F0ZSBhdmFpbGFibGUgc3BhY2VcbiIp Owo+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV9vYmplY3RzOwo+ICsgICAgICAgfQo+ ICsKPiArICAgICAgIGlndF9tYXJrX2V2aWN0YWJsZShvYmopOwo+ICsKPiArICAgICAgIC8qIFRy eSB0aGUgc21hbGxlc3QgcG9zc2libGUgc2l6ZSAtLSBzaG91bGQgc3VjY2VlZCAqLwo+ICsgICAg ICAgb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9yZWdpb24obWVtLCBtZW0tPm1tLm1pbl9z aXplLAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSTkxNV9C T19BTExPQ19DT05USUdVT1VTKTsKPiArICAgICAgIGlmIChJU19FUlIob2JqKSkgewo+ICsgICAg ICAgICAgICAgICBlcnIgPSBQVFJfRVJSKG9iaik7Cj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJy X2Nsb3NlX29iamVjdHM7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgbGlzdF9hZGQoJm9iai0+ c3RfbGluaywgJm9iamVjdHMpOwo+ICsKPiArICAgICAgIGVyciA9IGk5MTVfZ2VtX29iamVjdF9w aW5fcGFnZXMob2JqKTsKPiArICAgICAgIGlmIChlcnIpIHsKPiArICAgICAgICAgICAgICAgcHJf ZXJyKCJmYWlsZWQgdG8gYWxsb2NhdGUgc21hbGxlc3QgcG9zc2libGUgc2l6ZVxuIik7Cj4gKyAg ICAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlX29iamVjdHM7Cj4gKyAgICAgICB9Cj4gKwo+ICsg ICAgICAgaWd0X21hcmtfZXZpY3RhYmxlKG9iaik7Cj4gKwo+ICsgICAgICAgaWYgKG9iai0+bW0u cGFnZXMtPm5lbnRzICE9IDEpIHsKPiArICAgICAgICAgICAgICAgcHJfZXJyKCJbMV1vYmplY3Qg c3BhbnMgbXVsdGlwbGUgc2cgZW50cmllc1xuIik7Cj4gKyAgICAgICAgICAgICAgIGVyciA9IC1F SU5WQUw7Cj4gKyAgICAgICAgICAgICAgIGdvdG8gZXJyX2Nsb3NlX29iamVjdHM7Cj4gKyAgICAg ICB9Cj4gKwo+ICsgICAgICAgLyoKPiArICAgICAgICAqIEV2ZW4gdGhvdWdoIHRoZXJlIGlzIGVu b3VnaCBmcmVlIHNwYWNlIGZvciB0aGUgYWxsb2NhdGlvbiwgd2UKPiArICAgICAgICAqIHNob3Vs ZG4ndCBiZSBhYmxlIHRvIGFsbG9jYXRlIGl0LCBnaXZlbiB0aGF0IGl0IGlzIGZyYWdtZW50ZWQs IGFuZAo+ICsgICAgICAgICogbm9uLWNvbnRpbnVvdXMuCj4gKyAgICAgICAgKi8KPiArICAgICAg IG9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfcmVnaW9uKG1lbSwgdGFyZ2V0LCBJOTE1X0JP X0FMTE9DX0NPTlRJR1VPVVMpOwo+ICsgICAgICAgaWYgKElTX0VSUihvYmopKSB7Cj4gKyAgICAg ICAgICAgICAgIGVyciA9IFBUUl9FUlIob2JqKTsKPiArICAgICAgICAgICAgICAgZ290byBlcnJf Y2xvc2Vfb2JqZWN0czsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBsaXN0X2FkZCgmb2JqLT5z dF9saW5rLCAmb2JqZWN0cyk7Cj4gKwo+ICsgICAgICAgZXJyID0gaTkxNV9nZW1fb2JqZWN0X3Bp bl9wYWdlcyhvYmopOwo+ICsgICAgICAgaWYgKCFlcnIpIHsKPiArICAgICAgICAgICAgICAgcHJf ZXJyKCJleHBlY3RlZCBhbGxvY2F0aW9uIHRvIGZhaWxcbiIpOwo+ICsgICAgICAgICAgICAgICBl cnIgPSAtRUlOVkFMOwo+ICsgICAgICAgICAgICAgICBnb3RvIGVycl9jbG9zZV9vYmplY3RzOwo+ ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlndF9kZWZyYWdfcmVnaW9uKCZvYmplY3RzKTsKPiAr Cj4gKyAgICAgICAvKiBTaG91bGQgbm93IHN1Y2NlZWQgKi8KPiArICAgICAgIG9iaiA9IGk5MTVf Z2VtX29iamVjdF9jcmVhdGVfcmVnaW9uKG1lbSwgdGFyZ2V0LCBJOTE1X0JPX0FMTE9DX0NPTlRJ R1VPVVMpOwo+ICsgICAgICAgaWYgKElTX0VSUihvYmopKSB7Cj4gKyAgICAgICAgICAgICAgIGVy ciA9IFBUUl9FUlIob2JqKTsKPiArICAgICAgICAgICAgICAgZ290byBlcnJfY2xvc2Vfb2JqZWN0 czsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBsaXN0X2FkZCgmb2JqLT5zdF9saW5rLCAmb2Jq ZWN0cyk7Cj4gKwo+ICsgICAgICAgZXJyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9wYWdlcyhvYmop Owo+ICsgICAgICAgaWYgKGVycikgewo+ICsgICAgICAgICAgICAgICBwcl9lcnIoImZhaWxlZCB0 byBhbGxvY2F0ZSBmcm9tIGRlZnJhZ2VkIGFyZWFcbiIpOwo+ICsgICAgICAgICAgICAgICBnb3Rv IGVycl9jbG9zZV9vYmplY3RzOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGlmIChvYmotPm1t LnBhZ2VzLT5uZW50cyAhPSAxKSB7Cj4gKyAgICAgICAgICAgICAgIHByX2Vycigib2JqZWN0IHNw YW5zIG11bHRpcGxlIHNnIGVudHJpZXNcbiIpOwo+ICsgICAgICAgICAgICAgICBlcnIgPSAtRUlO VkFMOwo+ICsgICAgICAgfQo+ICsKPiArZXJyX2Nsb3NlX29iamVjdHM6Cj4gKyAgICAgICBjbG9z ZV9vYmplY3RzKCZvYmplY3RzKTsKPiArCj4gKyAgICAgICByZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ ICBpbnQgaW50ZWxfbWVtb3J5X3JlZ2lvbl9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQo+ICB7Cj4gICAg ICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0gewo+ICAgICAg ICAgICAgICAgICBTVUJURVNUKGlndF9tb2NrX2ZpbGwpLAo+ICAgICAgICAgICAgICAgICBTVUJU RVNUKGlndF9tb2NrX2V2aWN0KSwKPiArICAgICAgICAgICAgICAgU1VCVEVTVChpZ3RfbW9ja19j b250aW51b3VzKSwKPiAgICAgICAgIH07Cj4gICAgICAgICBzdHJ1Y3QgaW50ZWxfbWVtb3J5X3Jl Z2lvbiAqbWVtOwo+ICAgICAgICAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTU7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3JlZ2lvbi5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfcmVnaW9uLmMKPiBpbmRleCA4MGVh ZmRjNTQ5MjcuLjllZWRhOGY0NWYzOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvbW9ja19yZWdpb24uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9tb2NrX3JlZ2lvbi5jCj4gQEAgLTIwLDYgKzIwLDkgQEAgbW9ja19vYmplY3RfY3Jl YXRlKHN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICptZW0sCj4gICAgICAgICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAgICAgICAgdW5zaWduZWQgaW50IGNhY2hlX2xldmVs Owo+ICAKPiArICAgICAgIGlmIChmbGFncyAmIEk5MTVfQk9fQUxMT0NfQ09OVElHVU9VUykKPiAr ICAgICAgICAgICAgICAgc2l6ZSA9IHJvdW5kdXBfcG93X29mX3R3byhzaXplKTsKPiArCj4gICAg ICAgICBpZiAoc2l6ZSA+IEJJVChtZW0tPm1tLm1heF9vcmRlcikgKiBtZW0tPm1tLm1pbl9zaXpl KQo+ICAgICAgICAgICAgICAgICByZXR1cm4gRVJSX1BUUigtRTJCSUcpOwo+ICAKPiAtLSAKPiAy LjIwLjEKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Xwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4