From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: References: <20190508100958.32637-1-chris@chris-wilson.co.uk> <20190508100958.32637-5-chris@chris-wilson.co.uk> From: Tvrtko Ursulin Message-ID: <434f6c78-7ff3-04f5-096c-461a0409680b@linux.intel.com> Date: Tue, 14 May 2019 11:15:12 +0100 MIME-Version: 1.0 In-Reply-To: <20190508100958.32637-5-chris@chris-wilson.co.uk> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 05/16] i915/gem_ctx_create: Basic checks for constructor properties List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Chris Wilson , intel-gfx@lists.freedesktop.org Cc: igt-dev@lists.freedesktop.org List-ID: Ck9uIDA4LzA1LzIwMTkgMTE6MDksIENocmlzIFdpbHNvbiB3cm90ZToKPiBDaGVjayB0aGF0IHRo ZSBleHRlbmRlZCBjcmVhdGUgaW50ZXJmYWNlIGFjY2VwdHMgc2V0cGFyYW0uCj4gCj4gU2lnbmVk LW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4g ICB0ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRlLmMgfCAyMjUgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKy0tCj4gICAxIGZpbGUgY2hhbmdlZCwgMjEzIGluc2VydGlvbnMoKyksIDEy IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRl LmMgYi90ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRlLmMKPiBpbmRleCBhNjY0MDcwZGIuLjliNGZk ZGJlNyAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRlLmMKPiArKysgYi90 ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRlLmMKPiBAQCAtMzMsNiArMzMsNyBAQAo+ICAgI2luY2x1 ZGUgPHRpbWUuaD4KPiAgIAo+ICAgI2luY2x1ZGUgImlndF9yYW5kLmgiCj4gKyNpbmNsdWRlICJz d19zeW5jLmgiCj4gICAKPiAgICNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9TSElGVCAgICAg ICgxMykKPiAgICNkZWZpbmUgTE9DQUxfSTkxNV9FWEVDX0JTRF9NQVNLICAgICAgICgzIDw8IExP Q0FMX0k5MTVfRVhFQ19CU0RfU0hJRlQpCj4gQEAgLTQ1LDEyICs0NiwzMyBAQCBzdGF0aWMgdW5z aWduZWQgYWxsX25lbmdpbmU7Cj4gICBzdGF0aWMgdW5zaWduZWQgcHBndHRfZW5naW5lc1sxNl07 Cj4gICBzdGF0aWMgdW5zaWduZWQgcHBndHRfbmVuZ2luZTsKPiAgIAo+IC1zdGF0aWMgaW50IF9f Z2VtX2NvbnRleHRfY3JlYXRlX2xvY2FsKGludCBmZCwgc3RydWN0IGRybV9pOTE1X2dlbV9jb250 ZXh0X2NyZWF0ZSAqYXJnKQo+ICtzdGF0aWMgaW50IGNyZWF0ZV9pb2N0bChpbnQgZmQsIHN0cnVj dCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGUgKmFyZykKPiAgIHsKPiAtCWludCByZXQgPSAw Owo+IC0JaWYgKGRybUlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEUs IGFyZykpCj4gLQkJcmV0ID0gLWVycm5vOwo+IC0JcmV0dXJuIHJldDsKPiArCWludCBlcnI7Cj4g Kwo+ICsJZXJyID0gMDsKPiArCWlmIChpZ3RfaW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9D T05URVhUX0NSRUFURSwgYXJnKSkgewo+ICsJCWVyciA9IC1lcnJubzsKPiArCQlpZ3RfYXNzZXJ0 KGVycik7Cj4gKwl9Cj4gKwo+ICsJZXJybm8gPSAwOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsK PiArc3RhdGljIGludCBjcmVhdGVfZXh0X2lvY3RsKGludCBpOTE1LAo+ICsJCQkgICAgc3RydWN0 IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHQgKmFyZykKPiArewo+ICsJaW50IGVycjsK PiArCj4gKwllcnIgPSAwOwo+ICsJaWYgKGlndF9pb2N0bChpOTE1LCBEUk1fSU9DVExfSTkxNV9H RU1fQ09OVEVYVF9DUkVBVEVfRVhULCBhcmcpKSB7Cj4gKwkJZXJyID0gLWVycm5vOwo+ICsJCWln dF9hc3N1bWUoZXJyKTsKPiArCX0KPiArCj4gKwllcnJubyA9IDA7Cj4gKwlyZXR1cm4gZXJyOwo+ ICAgfQo+ICAgCj4gICBzdGF0aWMgZG91YmxlIGVsYXBzZWQoY29uc3Qgc3RydWN0IHRpbWVzcGVj ICpzdGFydCwKPiBAQCAtMzA4LDYgKzMzMCwxODcgQEAgc3RhdGljIHZvaWQgbWF4aW11bShpbnQg ZmQsIGludCBuY3B1cywgdW5zaWduZWQgbW9kZSkKPiAgIAlmcmVlKGNvbnRleHRzKTsKPiAgIH0K PiAgIAo+ICtzdGF0aWMgdm9pZCBiYXNpY19leHRfcGFyYW0oaW50IGk5MTUpCj4gK3sKPiArCXN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtIGV4dCA9IHsKPiAr CQl7IC5uYW1lID0gSTkxNV9DT05URVhUX0NSRUFURV9FWFRfU0VUUEFSQU0gfSwKPiArCX07Cj4g KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dCBjcmVhdGUgPSB7Cj4gKwkJ LmZsYWdzID0gSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19VU0VfRVhURU5TSU9OUwo+ICsJfTsK PiArCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBnZXQ7Cj4gKwo+ICsJaWd0X3Jl cXVpcmUoY3JlYXRlX2V4dF9pb2N0bChpOTE1LCAmY3JlYXRlKSA9PSAwKTsKPiArCWdlbV9jb250 ZXh0X2Rlc3Ryb3koaTkxNSwgY3JlYXRlLmN0eF9pZCk7Cj4gKwo+ICsJY3JlYXRlLmV4dGVuc2lv bnMgPSAtMXVsbDsKPiArCWlndF9hc3NlcnRfZXEoY3JlYXRlX2V4dF9pb2N0bChpOTE1LCAmY3Jl YXRlKSwgLUVGQVVMVCk7Cj4gKwo+ICsJY3JlYXRlLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50 ZXIoJmV4dCk7Cj4gKwlpZ3RfYXNzZXJ0X2VxKGNyZWF0ZV9leHRfaW9jdGwoaTkxNSwgJmNyZWF0 ZSksIC1FSU5WQUwpOwo+ICsKPiArCWV4dC5wYXJhbS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJB TV9QUklPUklUWTsKPiArCWlmIChjcmVhdGVfZXh0X2lvY3RsKGk5MTUsICZjcmVhdGUpICE9IC1F Tk9ERVYpIHsKPiArCQlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOwo+ ICsKPiArCQlleHQuYmFzZS5uZXh0X2V4dGVuc2lvbiA9IC0xdWxsOwo+ICsJCWlndF9hc3NlcnRf ZXEoY3JlYXRlX2V4dF9pb2N0bChpOTE1LCAmY3JlYXRlKSwgLUVGQVVMVCk7Cj4gKwkJZXh0LmJh c2UubmV4dF9leHRlbnNpb24gPSB0b191c2VyX3BvaW50ZXIoJmV4dCk7Cj4gKwkJaWd0X2Fzc2Vy dF9lcShjcmVhdGVfZXh0X2lvY3RsKGk5MTUsICZjcmVhdGUpLCAtRTJCSUcpOwo+ICsJCWV4dC5i YXNlLm5leHRfZXh0ZW5zaW9uID0gMDsKPiArCj4gKwkJZXh0LnBhcmFtLnZhbHVlID0gMzI7Cj4g KwkJaWd0X2Fzc2VydF9lcShjcmVhdGVfZXh0X2lvY3RsKGk5MTUsICZjcmVhdGUpLCAwKTsKPiAr Cj4gKwkJbWVtc2V0KCZnZXQsIDAsIHNpemVvZihnZXQpKTsKPiArCQlnZXQuY3R4X2lkID0gY3Jl YXRlLmN0eF9pZDsKPiArCQlnZXQucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFk7 Cj4gKwkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZnZXQpOwo+ICsJCWlndF9hc3NlcnRf ZXEoZ2V0LnZhbHVlLCBleHQucGFyYW0udmFsdWUpOwo+ICsKPiArCQlnZW1fY29udGV4dF9kZXN0 cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOwo+ICsJfQo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBj aGVja19zaW5nbGVfdGltZWxpbmUoaW50IGk5MTUsIHVpbnQzMl90IGN0eCwgaW50IG51bV9lbmdp bmVzKQo+ICt7Cj4gKyNkZWZpbmUgUkNTX1RJTUVTVEFNUCAoMHgyMDAwICsgMHgzNTgpCj4gKwlj b25zdCBpbnQgZ2VuID0gaW50ZWxfZ2VuKGludGVsX2dldF9kcm1fZGV2aWQoaTkxNSkpOwo+ICsJ Y29uc3QgaW50IGhhc182NGJpdF9yZWxvYyA9IGdlbiA+PSA4Owo+ICsJc3RydWN0IGRybV9pOTE1 X2dlbV9leGVjX29iamVjdDIgcmVzdWx0cyA9IHsgLmhhbmRsZSA9IGdlbV9jcmVhdGUoaTkxNSwg NDA5NikgfTsKPiArCWNvbnN0IHVpbnQzMl90IGJiZSA9IE1JX0JBVENIX0JVRkZFUl9FTkQ7Cj4g KwlpbnQgdGltZWxpbmUgPSBzd19zeW5jX3RpbWVsaW5lX2NyZWF0ZSgpOwo+ICsJdWludDMyX3Qg bGFzdCwgKm1hcDsKPiArCj4gKwl7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVy MiBleGVjYnVmID0gewo+ICsJCQkuYnVmZmVyc19wdHIgPSB0b191c2VyX3BvaW50ZXIoJnJlc3Vs dHMpLAo+ICsJCQkuYnVmZmVyX2NvdW50ID0gMSwKPiArCQkJLnJzdmQxID0gY3R4LAo+ICsJCX07 Cj4gKwkJZ2VtX3dyaXRlKGk5MTUsIHJlc3VsdHMuaGFuZGxlLCAwLCAmYmJlLCBzaXplb2YoYmJl KSk7Cj4gKwkJZ2VtX2V4ZWNidWYoaTkxNSwgJmV4ZWNidWYpOwo+ICsJCXJlc3VsdHMuZmxhZ3Mg PSBFWEVDX09CSkVDVF9QSU5ORUQ7Cj4gKwl9Cj4gKwo+ICsJZm9yIChpbnQgaSA9IDA7IGkgPCBu dW1fZW5naW5lczsgaSsrKSB7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIg b2JqWzJdID0gewo+ICsJCQlyZXN1bHRzLCAvKiB3cml0ZSBoYXphcmQgbGllcyEgKi8KPiArCQkJ eyAuaGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1LCA0MDk2KSB9LAo+ICsJCX07Cj4gKwkJc3RydWN0 IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmID0gewo+ICsJCQkuYnVmZmVyc19wdHIg PSB0b191c2VyX3BvaW50ZXIob2JqKSwKPiArCQkJLmJ1ZmZlcl9jb3VudCA9IDIsCj4gKwkJCS5y c3ZkMSA9IGN0eCwKPiArCQkJLnJzdmQyID0gc3dfc3luY190aW1lbGluZV9jcmVhdGVfZmVuY2Uo dGltZWxpbmUsIG51bV9lbmdpbmVzIC0gaSksCj4gKwkJCS5mbGFncyA9IGkgfCBJOTE1X0VYRUNf RkVOQ0VfSU4sCj4gKwkJfTsKPiArCQl1aW50NjRfdCBvZmZzZXQgPSByZXN1bHRzLm9mZnNldCAr IDQgKiBpOwo+ICsJCXVpbnQzMl90ICpjczsKPiArCQlpbnQgaiA9IDA7Cj4gKwo+ICsJCWNzID0g Z2VtX21tYXBfX2NwdShpOTE1LCBvYmpbMV0uaGFuZGxlLCAwLCA0MDk2LCBQUk9UX1dSSVRFKTsK PiArCj4gKwkJY3Nbal0gPSAweDI0IDw8IDIzIHwgMTsgLyogU1JNICovCj4gKwkJaWYgKGhhc182 NGJpdF9yZWxvYykKPiArCQkJY3Nbal0rKzsKPiArCQlqKys7Cj4gKwkJY3NbaisrXSA9IFJDU19U SU1FU1RBTVA7Cj4gKwkJY3NbaisrXSA9IG9mZnNldDsKPiArCQlpZiAoaGFzXzY0Yml0X3JlbG9j KQo+ICsJCQljc1tqKytdID0gb2Zmc2V0ID4+IDMyOwo+ICsJCWNzW2orK10gPSBNSV9CQVRDSF9C VUZGRVJfRU5EOwo+ICsKPiArCQltdW5tYXAoY3MsIDQwOTYpOwo+ICsKPiArCQlnZW1fZXhlY2J1 ZihpOTE1LCAmZXhlY2J1Zik7Cj4gKwkJZ2VtX2Nsb3NlKGk5MTUsIG9ialsxXS5oYW5kbGUpOwo+ ICsJCWNsb3NlKGV4ZWNidWYucnN2ZDIpOwo+ICsJfQo+ICsJY2xvc2UodGltZWxpbmUpOwo+ICsJ Z2VtX3N5bmMoaTkxNSwgcmVzdWx0cy5oYW5kbGUpOwo+ICsKPiArCW1hcCA9IGdlbV9tbWFwX19j cHUoaTkxNSwgcmVzdWx0cy5oYW5kbGUsIDAsIDQwOTYsIFBST1RfUkVBRCk7Cj4gKwlnZW1fc2V0 X2RvbWFpbihpOTE1LCByZXN1bHRzLmhhbmRsZSwgSTkxNV9HRU1fRE9NQUlOX0NQVSwgMCk7Cj4g KwlnZW1fY2xvc2UoaTkxNSwgcmVzdWx0cy5oYW5kbGUpOwo+ICsKPiArCWxhc3QgPSBtYXBbMF07 Cj4gKwlmb3IgKGludCBpID0gMTsgaSA8IG51bV9lbmdpbmVzOyBpKyspIHsKPiArCQlpZ3RfYXNz ZXJ0X2YoKG1hcFtpXSAtIGxhc3QpID4gMCwKPiArCQkJICAgICAiRW5naW5lIGluc3RhbmNlIFsl ZF0gZXhlY3V0ZWQgdG9vIGVhcmx5OiB0aGlzOiV4LCBsYXN0OiV4XG4iLAo+ICsJCQkgICAgIGks IG1hcFtpXSwgbGFzdCk7Cj4gKwkJbGFzdCA9IG1hcFtpXTsKPiArCX0KCkhtLi4gYXJlbid0IHR3 byBzdyBmZW5jZXMgKHR3byBzZXFub3MpIGp1c3QgYSBuZWVkbGVzcyBjb21wbGljYXRpb24gLSAK c2luY2UgdGhlIGV4ZWN1dGlvbiBvcmRlciBpbiB0aGUgc2luZ2xlIHRpbWVsaW5lIGlzIGNvbnRy b2xsZWQgYnkgCnN1Ym1pc3Npb24gb3JkZXIuIFRoZSBzdGF0ZW1lbnQgaXMgdHJ1ZSBvbmx5IHdo ZW4gY29tcG91bmRlZCB3aXRoIHRoZSAKZmFjdCB0aGF0IHlvdSBzaWduYWwgYm90aCBmZW5jZXMg YXQgdGhlIHNhbWUgdGltZS4gSSBhbSB0aGlua2luZyB0aGF0IGlmIAppdCB3YXNuJ3QgYSBzaW5n bGUgdGltZWxpbmUgY29udGV4dCB3aGF0IHdvdWxkIGhhcHBlbi4gRmVuY2VzIHdvdWxkIGJlIApz aWduYWxlZCBpbiBvcmRlciwgYnV0IGV4ZWN1dGlvbiBkb2VzIG5vdCBoYXZlIHRvIGhhcHBlbiBp biBvcmRlci4gVGhhdCAKaXQgZG9lcyBpcyBhIHByb3BlcnR5IG9mIHNpbmdsZSB0aW1lbGluZSBh bmQgbm90IGZlbmNlIG9yZGVyaW5nLiBTbyB0d28gCmlucHV0IGZlbmNlcyB3aXRoIHR3byBzZXFu b3MgaXMgbWlzbGVhZGluZy4gU2luZ2xlIHBsdWcgd291bGQgZG8gSSB0aGluawoKT3IgeW91IGFy ZSB0aGlua2luZyB0byBudWRnZSB0aGUgZHJpdmVyIHRvIGRvIHRoZSByaWdodCB0aGluZz8gQnV0 IGluIAp0aGF0IGNhc2UgSSB0aGluayB5b3UnZCBuZWVkIHRvIG1hbnVhbGx5IGFkdmFuY2UgdGhl IGZpcnN0IHNlcW5vICgybmQgCmJhdGNoKSBmaXJzdCBhbmQgd2FpdCBhIGJpdCB0byBjaGVjayBp dCBoYXNuJ3QgYmVlbiBleGVjdXRlLiBUaGVuIHNpZ25hbCAKdGhlIHNlY29uZCBzZXFubyAoZmly c3QgYmF0Y2gpIGFuZCBydW4gdGhlIGFib3ZlIGNoZWNrIHRvIHNlZSB0aGV5IGhhdmUgCmJlZW4g ZXhlY3V0ZWQgaW4gb3JkZXIuCgo+ICsJbXVubWFwKG1hcCwgNDA5Nik7Cj4gK30KPiArCj4gK3N0 YXRpYyB2b2lkIGlyaXNfcGlwZWxpbmUoaW50IGk5MTUpCj4gK3sKPiArI2lmZGVmIEk5MTVfREVG SU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUwoKUmVtb3ZlIHRoaXMgSSBleHBlY3Q/Cgo+ICsjZGVm aW5lIFJDUzAgezAsIDB9Cj4gKwlJOTE1X0RFRklORV9DT05URVhUX1BBUkFNX0VOR0lORVMoZW5n aW5lcywgMikgPSB7Cj4gKwkJLmVuZ2luZXMgPSB7IFJDUzAsIFJDUzAgfQo+ICsJfTsKPiArCXN0 cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtIHBfZW5naW5lcyA9 IHsKPiArCQkuYmFzZSA9IHsKPiArCQkJLm5hbWUgPSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9T RVRQQVJBTSwKPiArCQkJLm5leHRfZXh0ZW5zaW9uID0gMCwgLyogZW5kIG9mIGNoYWluICovCj4g KwkJfSwKPiArCQkucGFyYW0gPSB7Cj4gKwkJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9F TkdJTkVTLAo+ICsJCQkudmFsdWUgPSB0b191c2VyX3BvaW50ZXIoJmVuZ2luZXMpLAo+ICsJCQku c2l6ZSA9IHNpemVvZihlbmdpbmVzKSwKPiArCQl9LAo+ICsJfTsKPiArCXN0cnVjdCBkcm1faTkx NV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtIHBfcmVjb3ZlciA9IHsKPiArCQkuYmFz ZSA9IHsKPiArCQkJLm5hbWUgPUk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNLAo+ICsJ CQkubmV4dF9leHRlbnNpb24gPSB0b191c2VyX3BvaW50ZXIoJnBfZW5naW5lcyksCj4gKwkJfSwK PiArCQkucGFyYW0gPSB7Cj4gKwkJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9SRUNPVkVS QUJMRSwKPiArCQkJLnZhbHVlID0gMCwKPiArCQl9LAo+ICsJfTsKPiArCXN0cnVjdCBkcm1faTkx NV9nZW1fY29udGV4dF9jcmVhdGVfZXh0X3NldHBhcmFtIHBfcHJpbyA9IHsKPiArCQkuYmFzZSA9 IHsKPiArCQkJLm5hbWUgPUk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNLAo+ICsJCQku bmV4dF9leHRlbnNpb24gPSB0b191c2VyX3BvaW50ZXIoJnBfcmVjb3ZlciksCj4gKwkJfSwKPiAr CQkucGFyYW0gPSB7Cj4gKwkJCS5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWSwK PiArCQkJLnZhbHVlID0gNzY4LAo+ICsJCX0sCj4gKwl9Owo+ICsJc3RydWN0IGRybV9pOTE1X2dl bV9jb250ZXh0X2NyZWF0ZV9leHQgY3JlYXRlID0gewo+ICsJCS5mbGFncyA9IChJOTE1X0NPTlRF WFRfQ1JFQVRFX0ZMQUdTX1NJTkdMRV9USU1FTElORSB8Cj4gKwkJCSAgSTkxNV9DT05URVhUX0NS RUFURV9GTEFHU19VU0VfRVhURU5TSU9OUyksCj4gKwl9Owo+ICsJc3RydWN0IGRybV9pOTE1X2dl bV9jb250ZXh0X3BhcmFtIGdldDsKPiArCj4gKwlpZ3RfcmVxdWlyZShjcmVhdGVfZXh0X2lvY3Rs KGk5MTUsICZjcmVhdGUpID09IDApOwoKQ29udGV4dCBkZXN0cm95IGhlcmUgSSB0aGluay4KCj4g Kwo+ICsJY3JlYXRlLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50ZXIoJnBfcHJpbyk7Cj4gKwlp Z3RfYXNzZXJ0X2VxKGNyZWF0ZV9leHRfaW9jdGwoaTkxNSwgJmNyZWF0ZSksIDApOwo+ICsKPiAr CW1lbXNldCgmZ2V0LCAwLCBzaXplb2YoZ2V0KSk7Cj4gKwlnZXQuY3R4X2lkID0gY3JlYXRlLmN0 eF9pZDsKPiArCWdldC5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWTsKPiArCWdl bV9jb250ZXh0X2dldF9wYXJhbShpOTE1LCAmZ2V0KTsKPiArCWlndF9hc3NlcnRfZXEoZ2V0LnZh bHVlLCBwX3ByaW8ucGFyYW0udmFsdWUpOwo+ICsKPiArCW1lbXNldCgmZ2V0LCAwLCBzaXplb2Yo Z2V0KSk7Cj4gKwlnZXQuY3R4X2lkID0gY3JlYXRlLmN0eF9pZDsKPiArCWdldC5wYXJhbSA9IEk5 MTVfQ09OVEVYVF9QQVJBTV9SRUNPVkVSQUJMRTsKPiArCWdlbV9jb250ZXh0X2dldF9wYXJhbShp OTE1LCAmZ2V0KTsKPiArCWlndF9hc3NlcnRfZXEoZ2V0LnZhbHVlLCAwKTsKPiArCj4gKwljaGVj a19zaW5nbGVfdGltZWxpbmUoaTkxNSwgY3JlYXRlLmN0eF9pZCwgMik7Cj4gKwo+ICsJZ2VtX2Nv bnRleHRfZGVzdHJveShpOTE1LCBjcmVhdGUuY3R4X2lkKTsKPiArI2VuZGlmIC8qIEk5MTVfREVG SU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUyAqLwo+ICt9Cj4gKwo+ICAgaWd0X21haW4KPiAgIHsK PiAgIAljb25zdCBpbnQgbmNwdXMgPSBzeXNjb25mKF9TQ19OUFJPQ0VTU09SU19PTkxOKTsKPiBA QCAtMzQwLDE3ICs1NDMsMTUgQEAgaWd0X21haW4KPiAgIAkJbWVtc2V0KCZjcmVhdGUsIDAsIHNp emVvZihjcmVhdGUpKTsKPiAgIAkJY3JlYXRlLmN0eF9pZCA9IHJhbmQoKTsKPiAgIAkJY3JlYXRl LnBhZCA9IDA7Cj4gLQkJaWd0X2Fzc2VydF9lcShfX2dlbV9jb250ZXh0X2NyZWF0ZV9sb2NhbChm ZCwgJmNyZWF0ZSksIDApOwo+ICsJCWlndF9hc3NlcnRfZXEoY3JlYXRlX2lvY3RsKGZkLCAmY3Jl YXRlKSwgMCk7Cj4gICAJCWlndF9hc3NlcnQoY3JlYXRlLmN0eF9pZCAhPSAwKTsKPiAgIAkJZ2Vt X2NvbnRleHRfZGVzdHJveShmZCwgY3JlYXRlLmN0eF9pZCk7Cj4gICAJfQo+ICAgCj4gLQlpZ3Rf c3VidGVzdCgiaW52YWxpZC1wYWQiKSB7Cj4gLQkJbWVtc2V0KCZjcmVhdGUsIDAsIHNpemVvZihj cmVhdGUpKTsKPiAtCQljcmVhdGUuY3R4X2lkID0gcmFuZCgpOwo+IC0JCWNyZWF0ZS5wYWQgPSAx Owo+IC0JCWlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9jcmVhdGVfbG9jYWwoZmQsICZjcmVh dGUpLCAtRUlOVkFMKTsKPiAtCX0KPiArCWlndF9zdWJ0ZXN0KCJleHQtcGFyYW0iKQo+ICsJCWJh c2ljX2V4dF9wYXJhbShmZCk7CgpiYXNpYy1leHQtcGFyYW0/IERvIHdlIGV2ZW4gcmVseSBvbiBi YXNpYyBwcmVmaXggdGhlc2UgZGF5cz8KCj4gKwlpZ3Rfc3VidGVzdCgiaXJpcy1waXBlbGluZSIp Cj4gKwkJaXJpc19waXBlbGluZShmZCk7Cj4gICAKPiAgIAlpZ3Rfc3VidGVzdCgibWF4aW11bS1t ZW0iKQo+ICAgCQltYXhpbXVtKGZkLCBuY3B1cywgQ0hFQ0tfUkFNKTsKPiAKClJlZ2FyZHMsCgpU dnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0 LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2