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> <434f6c78-7ff3-04f5-096c-461a0409680b@linux.intel.com> <155794714226.32666.10694962642072980885@skylake-alporthouse-com> From: Tvrtko Ursulin Message-ID: <9cfb5dac-1db4-792c-ae51-ef906fbf6eb0@linux.intel.com> Date: Thu, 16 May 2019 09:38:15 +0100 MIME-Version: 1.0 In-Reply-To: <155794714226.32666.10694962642072980885@skylake-alporthouse-com> 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: Ck9uIDE1LzA1LzIwMTkgMjA6MDUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBRdW90aW5nIFR2cnRr byBVcnN1bGluICgyMDE5LTA1LTE0IDExOjE1OjEyKQo+Pgo+PiBPbiAwOC8wNS8yMDE5IDExOjA5 LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4+PiBDaGVjayB0aGF0IHRoZSBleHRlbmRlZCBjcmVhdGUg aW50ZXJmYWNlIGFjY2VwdHMgc2V0cGFyYW0uCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMg V2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4+PiAtLS0KPj4+ICAgIHRlc3RzL2k5 MTUvZ2VtX2N0eF9jcmVhdGUuYyB8IDIyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrLS0KPj4+ICAgIDEgZmlsZSBjaGFuZ2VkLCAyMTMgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRp b25zKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2N0eF9jcmVhdGUuYyBi L3Rlc3RzL2k5MTUvZ2VtX2N0eF9jcmVhdGUuYwo+Pj4gaW5kZXggYTY2NDA3MGRiLi45YjRmZGRi ZTcgMTAwNjQ0Cj4+PiAtLS0gYS90ZXN0cy9pOTE1L2dlbV9jdHhfY3JlYXRlLmMKPj4+ICsrKyBi L3Rlc3RzL2k5MTUvZ2VtX2N0eF9jcmVhdGUuYwo+Pj4gQEAgLTMzLDYgKzMzLDcgQEAKPj4+ICAg ICNpbmNsdWRlIDx0aW1lLmg+Cj4+PiAgICAKPj4+ICAgICNpbmNsdWRlICJpZ3RfcmFuZC5oIgo+ Pj4gKyNpbmNsdWRlICJzd19zeW5jLmgiCj4+PiAgICAKPj4+ICAgICNkZWZpbmUgTE9DQUxfSTkx NV9FWEVDX0JTRF9TSElGVCAgICAgICgxMykKPj4+ICAgICNkZWZpbmUgTE9DQUxfSTkxNV9FWEVD X0JTRF9NQVNLICAgICAgICgzIDw8IExPQ0FMX0k5MTVfRVhFQ19CU0RfU0hJRlQpCj4+PiBAQCAt NDUsMTIgKzQ2LDMzIEBAIHN0YXRpYyB1bnNpZ25lZCBhbGxfbmVuZ2luZTsKPj4+ICAgIHN0YXRp YyB1bnNpZ25lZCBwcGd0dF9lbmdpbmVzWzE2XTsKPj4+ICAgIHN0YXRpYyB1bnNpZ25lZCBwcGd0 dF9uZW5naW5lOwo+Pj4gICAgCj4+PiAtc3RhdGljIGludCBfX2dlbV9jb250ZXh0X2NyZWF0ZV9s b2NhbChpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGUgKmFyZykKPj4+ ICtzdGF0aWMgaW50IGNyZWF0ZV9pb2N0bChpbnQgZmQsIHN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9jcmVhdGUgKmFyZykKPj4+ICAgIHsKPj4+IC0gICAgIGludCByZXQgPSAwOwo+Pj4gLSAg ICAgaWYgKGRybUlvY3RsKGZkLCBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEUsIGFy ZykpCj4+PiAtICAgICAgICAgICAgIHJldCA9IC1lcnJubzsKPj4+IC0gICAgIHJldHVybiByZXQ7 Cj4+PiArICAgICBpbnQgZXJyOwo+Pj4gKwo+Pj4gKyAgICAgZXJyID0gMDsKPj4+ICsgICAgIGlm IChpZ3RfaW9jdGwoZmQsIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0NSRUFURSwgYXJnKSkg ewo+Pj4gKyAgICAgICAgICAgICBlcnIgPSAtZXJybm87Cj4+PiArICAgICAgICAgICAgIGlndF9h c3NlcnQoZXJyKTsKPj4+ICsgICAgIH0KPj4+ICsKPj4+ICsgICAgIGVycm5vID0gMDsKPj4+ICsg ICAgIHJldHVybiBlcnI7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyBpbnQgY3JlYXRlX2V4dF9p b2N0bChpbnQgaTkxNSwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9p OTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHQgKmFyZykKPj4+ICt7Cj4+PiArICAgICBpbnQgZXJy Owo+Pj4gKwo+Pj4gKyAgICAgZXJyID0gMDsKPj4+ICsgICAgIGlmIChpZ3RfaW9jdGwoaTkxNSwg RFJNX0lPQ1RMX0k5MTVfR0VNX0NPTlRFWFRfQ1JFQVRFX0VYVCwgYXJnKSkgewo+Pj4gKyAgICAg ICAgICAgICBlcnIgPSAtZXJybm87Cj4+PiArICAgICAgICAgICAgIGlndF9hc3N1bWUoZXJyKTsK Pj4+ICsgICAgIH0KPj4+ICsKPj4+ICsgICAgIGVycm5vID0gMDsKPj4+ICsgICAgIHJldHVybiBl cnI7Cj4+PiAgICB9Cj4+PiAgICAKPj4+ICAgIHN0YXRpYyBkb3VibGUgZWxhcHNlZChjb25zdCBz dHJ1Y3QgdGltZXNwZWMgKnN0YXJ0LAo+Pj4gQEAgLTMwOCw2ICszMzAsMTg3IEBAIHN0YXRpYyB2 b2lkIG1heGltdW0oaW50IGZkLCBpbnQgbmNwdXMsIHVuc2lnbmVkIG1vZGUpCj4+PiAgICAgICAg ZnJlZShjb250ZXh0cyk7Cj4+PiAgICB9Cj4+PiAgICAKPj4+ICtzdGF0aWMgdm9pZCBiYXNpY19l eHRfcGFyYW0oaW50IGk5MTUpCj4+PiArewo+Pj4gKyAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9j b250ZXh0X2NyZWF0ZV9leHRfc2V0cGFyYW0gZXh0ID0gewo+Pj4gKyAgICAgICAgICAgICB7IC5u YW1lID0gSTkxNV9DT05URVhUX0NSRUFURV9FWFRfU0VUUEFSQU0gfSwKPj4+ICsgICAgIH07Cj4+ PiArICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dCBjcmVhdGUgPSB7 Cj4+PiArICAgICAgICAgICAgIC5mbGFncyA9IEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfVVNF X0VYVEVOU0lPTlMKPj4+ICsgICAgIH07Cj4+PiArICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2Nv bnRleHRfcGFyYW0gZ2V0Owo+Pj4gKwo+Pj4gKyAgICAgaWd0X3JlcXVpcmUoY3JlYXRlX2V4dF9p b2N0bChpOTE1LCAmY3JlYXRlKSA9PSAwKTsKPj4+ICsgICAgIGdlbV9jb250ZXh0X2Rlc3Ryb3ko aTkxNSwgY3JlYXRlLmN0eF9pZCk7Cj4+PiArCj4+PiArICAgICBjcmVhdGUuZXh0ZW5zaW9ucyA9 IC0xdWxsOwo+Pj4gKyAgICAgaWd0X2Fzc2VydF9lcShjcmVhdGVfZXh0X2lvY3RsKGk5MTUsICZj cmVhdGUpLCAtRUZBVUxUKTsKPj4+ICsKPj4+ICsgICAgIGNyZWF0ZS5leHRlbnNpb25zID0gdG9f dXNlcl9wb2ludGVyKCZleHQpOwo+Pj4gKyAgICAgaWd0X2Fzc2VydF9lcShjcmVhdGVfZXh0X2lv Y3RsKGk5MTUsICZjcmVhdGUpLCAtRUlOVkFMKTsKPj4+ICsKPj4+ICsgICAgIGV4dC5wYXJhbS5w YXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWTsKPj4+ICsgICAgIGlmIChjcmVhdGVf ZXh0X2lvY3RsKGk5MTUsICZjcmVhdGUpICE9IC1FTk9ERVYpIHsKPj4+ICsgICAgICAgICAgICAg Z2VtX2NvbnRleHRfZGVzdHJveShpOTE1LCBjcmVhdGUuY3R4X2lkKTsKPj4+ICsKPj4+ICsgICAg ICAgICAgICAgZXh0LmJhc2UubmV4dF9leHRlbnNpb24gPSAtMXVsbDsKPj4+ICsgICAgICAgICAg ICAgaWd0X2Fzc2VydF9lcShjcmVhdGVfZXh0X2lvY3RsKGk5MTUsICZjcmVhdGUpLCAtRUZBVUxU KTsKPj4+ICsgICAgICAgICAgICAgZXh0LmJhc2UubmV4dF9leHRlbnNpb24gPSB0b191c2VyX3Bv aW50ZXIoJmV4dCk7Cj4+PiArICAgICAgICAgICAgIGlndF9hc3NlcnRfZXEoY3JlYXRlX2V4dF9p b2N0bChpOTE1LCAmY3JlYXRlKSwgLUUyQklHKTsKPj4+ICsgICAgICAgICAgICAgZXh0LmJhc2Uu bmV4dF9leHRlbnNpb24gPSAwOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICBleHQucGFyYW0udmFs dWUgPSAzMjsKPj4+ICsgICAgICAgICAgICAgaWd0X2Fzc2VydF9lcShjcmVhdGVfZXh0X2lvY3Rs KGk5MTUsICZjcmVhdGUpLCAwKTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgbWVtc2V0KCZnZXQs IDAsIHNpemVvZihnZXQpKTsKPj4+ICsgICAgICAgICAgICAgZ2V0LmN0eF9pZCA9IGNyZWF0ZS5j dHhfaWQ7Cj4+PiArICAgICAgICAgICAgIGdldC5wYXJhbSA9IEk5MTVfQ09OVEVYVF9QQVJBTV9Q UklPUklUWTsKPj4+ICsgICAgICAgICAgICAgZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZn ZXQpOwo+Pj4gKyAgICAgICAgICAgICBpZ3RfYXNzZXJ0X2VxKGdldC52YWx1ZSwgZXh0LnBhcmFt LnZhbHVlKTsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgZ2VtX2NvbnRleHRfZGVzdHJveShpOTE1 LCBjcmVhdGUuY3R4X2lkKTsKPj4+ICsgICAgIH0KPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIHZv aWQgY2hlY2tfc2luZ2xlX3RpbWVsaW5lKGludCBpOTE1LCB1aW50MzJfdCBjdHgsIGludCBudW1f ZW5naW5lcykKPj4+ICt7Cj4+PiArI2RlZmluZSBSQ1NfVElNRVNUQU1QICgweDIwMDAgKyAweDM1 OCkKPj4+ICsgICAgIGNvbnN0IGludCBnZW4gPSBpbnRlbF9nZW4oaW50ZWxfZ2V0X2RybV9kZXZp ZChpOTE1KSk7Cj4+PiArICAgICBjb25zdCBpbnQgaGFzXzY0Yml0X3JlbG9jID0gZ2VuID49IDg7 Cj4+PiArICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNfb2JqZWN0MiByZXN1bHRzID0geyAu aGFuZGxlID0gZ2VtX2NyZWF0ZShpOTE1LCA0MDk2KSB9Owo+Pj4gKyAgICAgY29uc3QgdWludDMy X3QgYmJlID0gTUlfQkFUQ0hfQlVGRkVSX0VORDsKPj4+ICsgICAgIGludCB0aW1lbGluZSA9IHN3 X3N5bmNfdGltZWxpbmVfY3JlYXRlKCk7Cj4+PiArICAgICB1aW50MzJfdCBsYXN0LCAqbWFwOwo+ Pj4gKwo+Pj4gKyAgICAgewo+Pj4gKyAgICAgICAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4 ZWNidWZmZXIyIGV4ZWNidWYgPSB7Cj4+PiArICAgICAgICAgICAgICAgICAgICAgLmJ1ZmZlcnNf cHRyID0gdG9fdXNlcl9wb2ludGVyKCZyZXN1bHRzKSwKPj4+ICsgICAgICAgICAgICAgICAgICAg ICAuYnVmZmVyX2NvdW50ID0gMSwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAucnN2ZDEgPSBj dHgsCj4+PiArICAgICAgICAgICAgIH07Cj4+PiArICAgICAgICAgICAgIGdlbV93cml0ZShpOTE1 LCByZXN1bHRzLmhhbmRsZSwgMCwgJmJiZSwgc2l6ZW9mKGJiZSkpOwo+Pj4gKyAgICAgICAgICAg ICBnZW1fZXhlY2J1ZihpOTE1LCAmZXhlY2J1Zik7Cj4+PiArICAgICAgICAgICAgIHJlc3VsdHMu ZmxhZ3MgPSBFWEVDX09CSkVDVF9QSU5ORUQ7Cj4+PiArICAgICB9Cj4+PiArCj4+PiArICAgICBm b3IgKGludCBpID0gMDsgaSA8IG51bV9lbmdpbmVzOyBpKyspIHsKPj4+ICsgICAgICAgICAgICAg c3RydWN0IGRybV9pOTE1X2dlbV9leGVjX29iamVjdDIgb2JqWzJdID0gewo+Pj4gKyAgICAgICAg ICAgICAgICAgICAgIHJlc3VsdHMsIC8qIHdyaXRlIGhhemFyZCBsaWVzISAqLwo+Pj4gKyAgICAg ICAgICAgICAgICAgICAgIHsgLmhhbmRsZSA9IGdlbV9jcmVhdGUoaTkxNSwgNDA5NikgfSwKPj4+ ICsgICAgICAgICAgICAgfTsKPj4+ICsgICAgICAgICAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9l eGVjYnVmZmVyMiBleGVjYnVmID0gewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIC5idWZmZXJz X3B0ciA9IHRvX3VzZXJfcG9pbnRlcihvYmopLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIC5i dWZmZXJfY291bnQgPSAyLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIC5yc3ZkMSA9IGN0eCwK Pj4+ICsgICAgICAgICAgICAgICAgICAgICAucnN2ZDIgPSBzd19zeW5jX3RpbWVsaW5lX2NyZWF0 ZV9mZW5jZSh0aW1lbGluZSwgbnVtX2VuZ2luZXMgLSBpKSwKPj4+ICsgICAgICAgICAgICAgICAg ICAgICAuZmxhZ3MgPSBpIHwgSTkxNV9FWEVDX0ZFTkNFX0lOLAo+Pj4gKyAgICAgICAgICAgICB9 Owo+Pj4gKyAgICAgICAgICAgICB1aW50NjRfdCBvZmZzZXQgPSByZXN1bHRzLm9mZnNldCArIDQg KiBpOwo+Pj4gKyAgICAgICAgICAgICB1aW50MzJfdCAqY3M7Cj4+PiArICAgICAgICAgICAgIGlu dCBqID0gMDsKPj4+ICsKPj4+ICsgICAgICAgICAgICAgY3MgPSBnZW1fbW1hcF9fY3B1KGk5MTUs IG9ialsxXS5oYW5kbGUsIDAsIDQwOTYsIFBST1RfV1JJVEUpOwo+Pj4gKwo+Pj4gKyAgICAgICAg ICAgICBjc1tqXSA9IDB4MjQgPDwgMjMgfCAxOyAvKiBTUk0gKi8KPj4+ICsgICAgICAgICAgICAg aWYgKGhhc182NGJpdF9yZWxvYykKPj4+ICsgICAgICAgICAgICAgICAgICAgICBjc1tqXSsrOwo+ Pj4gKyAgICAgICAgICAgICBqKys7Cj4+PiArICAgICAgICAgICAgIGNzW2orK10gPSBSQ1NfVElN RVNUQU1QOwo+Pj4gKyAgICAgICAgICAgICBjc1tqKytdID0gb2Zmc2V0Owo+Pj4gKyAgICAgICAg ICAgICBpZiAoaGFzXzY0Yml0X3JlbG9jKQo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGNzW2or K10gPSBvZmZzZXQgPj4gMzI7Cj4+PiArICAgICAgICAgICAgIGNzW2orK10gPSBNSV9CQVRDSF9C VUZGRVJfRU5EOwo+Pj4gKwo+Pj4gKyAgICAgICAgICAgICBtdW5tYXAoY3MsIDQwOTYpOwo+Pj4g Kwo+Pj4gKyAgICAgICAgICAgICBnZW1fZXhlY2J1ZihpOTE1LCAmZXhlY2J1Zik7Cj4+PiArICAg ICAgICAgICAgIGdlbV9jbG9zZShpOTE1LCBvYmpbMV0uaGFuZGxlKTsKPj4+ICsgICAgICAgICAg ICAgY2xvc2UoZXhlY2J1Zi5yc3ZkMik7Cj4+PiArICAgICB9Cj4+PiArICAgICBjbG9zZSh0aW1l bGluZSk7Cj4+PiArICAgICBnZW1fc3luYyhpOTE1LCByZXN1bHRzLmhhbmRsZSk7Cj4+PiArCj4+ PiArICAgICBtYXAgPSBnZW1fbW1hcF9fY3B1KGk5MTUsIHJlc3VsdHMuaGFuZGxlLCAwLCA0MDk2 LCBQUk9UX1JFQUQpOwo+Pj4gKyAgICAgZ2VtX3NldF9kb21haW4oaTkxNSwgcmVzdWx0cy5oYW5k bGUsIEk5MTVfR0VNX0RPTUFJTl9DUFUsIDApOwo+Pj4gKyAgICAgZ2VtX2Nsb3NlKGk5MTUsIHJl c3VsdHMuaGFuZGxlKTsKPj4+ICsKPj4+ICsgICAgIGxhc3QgPSBtYXBbMF07Cj4+PiArICAgICBm b3IgKGludCBpID0gMTsgaSA8IG51bV9lbmdpbmVzOyBpKyspIHsKPj4+ICsgICAgICAgICAgICAg aWd0X2Fzc2VydF9mKChtYXBbaV0gLSBsYXN0KSA+IDAsCj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAiRW5naW5lIGluc3RhbmNlIFslZF0gZXhlY3V0ZWQgdG9vIGVhcmx5OiB0aGlzOiV4 LCBsYXN0OiV4XG4iLAo+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgaSwgbWFwW2ldLCBs YXN0KTsKPj4+ICsgICAgICAgICAgICAgbGFzdCA9IG1hcFtpXTsKPj4+ICsgICAgIH0KPj4KPj4g SG0uLiBhcmVuJ3QgdHdvIHN3IGZlbmNlcyAodHdvIHNlcW5vcykganVzdCBhIG5lZWRsZXNzIGNv bXBsaWNhdGlvbiAtCj4+IHNpbmNlIHRoZSBleGVjdXRpb24gb3JkZXIgaW4gdGhlIHNpbmdsZSB0 aW1lbGluZSBpcyBjb250cm9sbGVkIGJ5Cj4+IHN1Ym1pc3Npb24gb3JkZXIuIFRoZSBzdGF0ZW1l bnQgaXMgdHJ1ZSBvbmx5IHdoZW4gY29tcG91bmRlZCB3aXRoIHRoZQo+PiBmYWN0IHRoYXQgeW91 IHNpZ25hbCBib3RoIGZlbmNlcyBhdCB0aGUgc2FtZSB0aW1lLiBJIGFtIHRoaW5raW5nIHRoYXQg aWYKPj4gaXQgd2Fzbid0IGEgc2luZ2xlIHRpbWVsaW5lIGNvbnRleHQgd2hhdCB3b3VsZCBoYXBw ZW4uIEZlbmNlcyB3b3VsZCBiZQo+PiBzaWduYWxlZCBpbiBvcmRlciwgYnV0IGV4ZWN1dGlvbiBk b2VzIG5vdCBoYXZlIHRvIGhhcHBlbiBpbiBvcmRlci4gVGhhdAo+PiBpdCBkb2VzIGlzIGEgcHJv cGVydHkgb2Ygc2luZ2xlIHRpbWVsaW5lIGFuZCBub3QgZmVuY2Ugb3JkZXJpbmcuIFNvIHR3bwo+ PiBpbnB1dCBmZW5jZXMgd2l0aCB0d28gc2Vxbm9zIGlzIG1pc2xlYWRpbmcuIFNpbmdsZSBwbHVn IHdvdWxkIGRvIEkgdGhpbmsKPiAKPiBCdXQgdGhhdCB3b3VsZCBub3QgZGV0ZWN0IHRoZSBjYXNl IHdoZW4gaXQgd2FzIG11bHRpcGxlIHRpbWVsaW5lcy4uLgo+ICAgCj4+IE9yIHlvdSBhcmUgdGhp bmtpbmcgdG8gbnVkZ2UgdGhlIGRyaXZlciB0byBkbyB0aGUgcmlnaHQgdGhpbmc/IEJ1dCBpbgo+ PiB0aGF0IGNhc2UgSSB0aGluayB5b3UnZCBuZWVkIHRvIG1hbnVhbGx5IGFkdmFuY2UgdGhlIGZp cnN0IHNlcW5vICgybmQKPj4gYmF0Y2gpIGZpcnN0IGFuZCB3YWl0IGEgYml0IHRvIGNoZWNrIGl0 IGhhc24ndCBiZWVuIGV4ZWN1dGUuIFRoZW4gc2lnbmFsCj4+IHRoZSBzZWNvbmQgc2Vxbm8gKGZp cnN0IGJhdGNoKSBhbmQgcnVuIHRoZSBhYm92ZSBjaGVjayB0byBzZWUgdGhleSBoYXZlCj4+IGJl ZW4gZXhlY3V0ZWQgaW4gb3JkZXIuCj4gCj4gVGhlIGNoYWxsZW5nZSBpcyB0aGF0IHdlIGRldGVj dCBpZiB0aGUgZHJpdmVyIHVzZXMgMiB0aW1lbGluZXMgaW5zdGVhZAo+IG9mIG9uZS4gU28gdGhh dCBpcyB3aGF0IHdlIHNldHVwIHRvIGRldGVjdC4KCldpdGggYSBzaW5nbGUgc2Vxbm8gYWR2YW5j ZSB3aGF0IGRldGVybWluZXMgdGhlIG9yZGVyIG9mIHNpZ25hbCBkZWxpdmVyeSAKb24gYmxvY2tl ZCBmZW5jZXM/IElzIGl0IGRlZmluZWQgaW4gdGhlIGRtYS1mZW5jZSBjb250cmFjdCBpdCBoYXBw ZW5zIGluIApvcmRlcj8gSWYgaXQgaXMsIHRoZW4gaXMgaXQgZGVmaW5lZCB0aGF0IHdvdWxkIG1h cCB0byBpbiBvcmRlciAKc3VibWlzc2lvbiBpbiBpOTE1IChpZiB0aGUgY29udGV4dHMvdGltZWxp bmVzIHdlcmUgc2VwYXJhdGUpPyAoTWlnaHQgbm90IApJIGFtIHRoaW5raW5nLCBzY2hlZHVsZXIg Y2FuIGRlY2lkZSB3aGF0ZXZlciBpdCB3YW50cy4pCgpTbyBJIGRvbid0IHNlZSBhIHByb2JsZW0g d2l0aCBiZWluZyBtb3JlIGV4cGxpY2l0IGluIHRoaXMgdGVzdCBhbmQgZG9pbmcgCmEgc3RlcCBi eSBzdGVwIHRpbWVsaW5lIGFkdmFuY2Ugc28gaXQgaXMgY29tcGxldGVseSB1bmRlciB0ZXN0J3Mg Y29udHJvbCAKd2hhdCdzIGhhcHBlbmluZy4gQW5kIGl0IHdvdWxkIEFGQUlDUyBkZXRlY3QgdGhl IHR3byB0aW1lbGluZXMgYmVjYXVzZSAKaXQgd291bGQgZXhwZWN0IGZpcnN0IHRpbWVsaW5lIGFk dmFuY2UgbXVzdCBub3QgcmVzdWx0IGluIHJlcXVlc3QgZXhlY3V0aW9uLgoKUmVnYXJkcywKClR2 cnRrbwoKCj4+PiArICAgICBtdW5tYXAobWFwLCA0MDk2KTsKPj4+ICt9Cj4+PiArCj4+PiArc3Rh dGljIHZvaWQgaXJpc19waXBlbGluZShpbnQgaTkxNSkKPj4+ICt7Cj4+PiArI2lmZGVmIEk5MTVf REVGSU5FX0NPTlRFWFRfUEFSQU1fRU5HSU5FUwo+Pgo+PiBSZW1vdmUgdGhpcyBJIGV4cGVjdD8K PiAKPiBEZXBlbmRzIG9uIGxhdGVyIGhlYWRlci4gRWFybHkgcGxhbiB3YXMgdG8gaGF2ZSB0aGUg Yml0cyBhbmQgcGllY2VzCj4gYWRkZWQgcGllY2VtZWFsLCBidXQgdGhlbiBJIGRlY2lkZWQgdG8g YWRkIGEgZnVsbCBmZWF0dXJlIHRlc3QuCj4gCj4+PiArI2RlZmluZSBSQ1MwIHswLCAwfQo+Pj4g KyAgICAgSTkxNV9ERUZJTkVfQ09OVEVYVF9QQVJBTV9FTkdJTkVTKGVuZ2luZXMsIDIpID0gewo+ Pj4gKyAgICAgICAgICAgICAuZW5naW5lcyA9IHsgUkNTMCwgUkNTMCB9Cj4+PiArICAgICB9Owo+ Pj4gKyAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRfc2V0cGFyYW0g cF9lbmdpbmVzID0gewo+Pj4gKyAgICAgICAgICAgICAuYmFzZSA9IHsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICAubmFtZSA9IEk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNLAo+Pj4g KyAgICAgICAgICAgICAgICAgICAgIC5uZXh0X2V4dGVuc2lvbiA9IDAsIC8qIGVuZCBvZiBjaGFp biAqLwo+Pj4gKyAgICAgICAgICAgICB9LAo+Pj4gKyAgICAgICAgICAgICAucGFyYW0gPSB7Cj4+ PiArICAgICAgICAgICAgICAgICAgICAgLnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX0VOR0lO RVMsCj4+PiArICAgICAgICAgICAgICAgICAgICAgLnZhbHVlID0gdG9fdXNlcl9wb2ludGVyKCZl bmdpbmVzKSwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAuc2l6ZSA9IHNpemVvZihlbmdpbmVz KSwKPj4+ICsgICAgICAgICAgICAgfSwKPj4+ICsgICAgIH07Cj4+PiArICAgICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSBwX3JlY292ZXIgPSB7Cj4+PiAr ICAgICAgICAgICAgIC5iYXNlID0gewo+Pj4gKyAgICAgICAgICAgICAgICAgICAgIC5uYW1lID1J OTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9TRVRQQVJBTSwKPj4+ICsgICAgICAgICAgICAgICAgICAg ICAubmV4dF9leHRlbnNpb24gPSB0b191c2VyX3BvaW50ZXIoJnBfZW5naW5lcyksCj4+PiArICAg ICAgICAgICAgIH0sCj4+PiArICAgICAgICAgICAgIC5wYXJhbSA9IHsKPj4+ICsgICAgICAgICAg ICAgICAgICAgICAucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fUkVDT1ZFUkFCTEUsCj4+PiAr ICAgICAgICAgICAgICAgICAgICAgLnZhbHVlID0gMCwKPj4+ICsgICAgICAgICAgICAgfSwKPj4+ ICsgICAgIH07Cj4+PiArICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4 dF9zZXRwYXJhbSBwX3ByaW8gPSB7Cj4+PiArICAgICAgICAgICAgIC5iYXNlID0gewo+Pj4gKyAg ICAgICAgICAgICAgICAgICAgIC5uYW1lID1JOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9TRVRQQVJB TSwKPj4+ICsgICAgICAgICAgICAgICAgICAgICAubmV4dF9leHRlbnNpb24gPSB0b191c2VyX3Bv aW50ZXIoJnBfcmVjb3ZlciksCj4+PiArICAgICAgICAgICAgIH0sCj4+PiArICAgICAgICAgICAg IC5wYXJhbSA9IHsKPj4+ICsgICAgICAgICAgICAgICAgICAgICAucGFyYW0gPSBJOTE1X0NPTlRF WFRfUEFSQU1fUFJJT1JJVFksCj4+PiArICAgICAgICAgICAgICAgICAgICAgLnZhbHVlID0gNzY4 LAo+Pj4gKyAgICAgICAgICAgICB9LAo+Pj4gKyAgICAgfTsKPj4+ICsgICAgIHN0cnVjdCBkcm1f aTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0IGNyZWF0ZSA9IHsKPj4+ICsgICAgICAgICAgICAg LmZsYWdzID0gKEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfU0lOR0xFX1RJTUVMSU5FIHwKPj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfVVNFX0VY VEVOU0lPTlMpLAo+Pj4gKyAgICAgfTsKPj4+ICsgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9wYXJhbSBnZXQ7Cj4+PiArCj4+PiArICAgICBpZ3RfcmVxdWlyZShjcmVhdGVfZXh0X2lv Y3RsKGk5MTUsICZjcmVhdGUpID09IDApOwo+Pgo+PiBDb250ZXh0IGRlc3Ryb3kgaGVyZSBJIHRo aW5rLgo+Pgo+Pj4gKwo+Pj4gKyAgICAgY3JlYXRlLmV4dGVuc2lvbnMgPSB0b191c2VyX3BvaW50 ZXIoJnBfcHJpbyk7Cj4+PiArICAgICBpZ3RfYXNzZXJ0X2VxKGNyZWF0ZV9leHRfaW9jdGwoaTkx NSwgJmNyZWF0ZSksIDApOwo+Pj4gKwo+Pj4gKyAgICAgbWVtc2V0KCZnZXQsIDAsIHNpemVvZihn ZXQpKTsKPj4+ICsgICAgIGdldC5jdHhfaWQgPSBjcmVhdGUuY3R4X2lkOwo+Pj4gKyAgICAgZ2V0 LnBhcmFtID0gSTkxNV9DT05URVhUX1BBUkFNX1BSSU9SSVRZOwo+Pj4gKyAgICAgZ2VtX2NvbnRl eHRfZ2V0X3BhcmFtKGk5MTUsICZnZXQpOwo+Pj4gKyAgICAgaWd0X2Fzc2VydF9lcShnZXQudmFs dWUsIHBfcHJpby5wYXJhbS52YWx1ZSk7Cj4+PiArCj4+PiArICAgICBtZW1zZXQoJmdldCwgMCwg c2l6ZW9mKGdldCkpOwo+Pj4gKyAgICAgZ2V0LmN0eF9pZCA9IGNyZWF0ZS5jdHhfaWQ7Cj4+PiAr ICAgICBnZXQucGFyYW0gPSBJOTE1X0NPTlRFWFRfUEFSQU1fUkVDT1ZFUkFCTEU7Cj4+PiArICAg ICBnZW1fY29udGV4dF9nZXRfcGFyYW0oaTkxNSwgJmdldCk7Cj4+PiArICAgICBpZ3RfYXNzZXJ0 X2VxKGdldC52YWx1ZSwgMCk7Cj4+PiArCj4+PiArICAgICBjaGVja19zaW5nbGVfdGltZWxpbmUo aTkxNSwgY3JlYXRlLmN0eF9pZCwgMik7Cj4+PiArCj4+PiArICAgICBnZW1fY29udGV4dF9kZXN0 cm95KGk5MTUsIGNyZWF0ZS5jdHhfaWQpOwo+Pj4gKyNlbmRpZiAvKiBJOTE1X0RFRklORV9DT05U RVhUX1BBUkFNX0VOR0lORVMgKi8KPj4+ICt9Cj4+PiArCj4+PiAgICBpZ3RfbWFpbgo+Pj4gICAg ewo+Pj4gICAgICAgIGNvbnN0IGludCBuY3B1cyA9IHN5c2NvbmYoX1NDX05QUk9DRVNTT1JTX09O TE4pOwo+Pj4gQEAgLTM0MCwxNyArNTQzLDE1IEBAIGlndF9tYWluCj4+PiAgICAgICAgICAgICAg ICBtZW1zZXQoJmNyZWF0ZSwgMCwgc2l6ZW9mKGNyZWF0ZSkpOwo+Pj4gICAgICAgICAgICAgICAg Y3JlYXRlLmN0eF9pZCA9IHJhbmQoKTsKPj4+ICAgICAgICAgICAgICAgIGNyZWF0ZS5wYWQgPSAw Owo+Pj4gLSAgICAgICAgICAgICBpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2NvbnRleHRfY3JlYXRlX2xv Y2FsKGZkLCAmY3JlYXRlKSwgMCk7Cj4+PiArICAgICAgICAgICAgIGlndF9hc3NlcnRfZXEoY3Jl YXRlX2lvY3RsKGZkLCAmY3JlYXRlKSwgMCk7Cj4+PiAgICAgICAgICAgICAgICBpZ3RfYXNzZXJ0 KGNyZWF0ZS5jdHhfaWQgIT0gMCk7Cj4+PiAgICAgICAgICAgICAgICBnZW1fY29udGV4dF9kZXN0 cm95KGZkLCBjcmVhdGUuY3R4X2lkKTsKPj4+ICAgICAgICB9Cj4+PiAgICAKPj4+IC0gICAgIGln dF9zdWJ0ZXN0KCJpbnZhbGlkLXBhZCIpIHsKPj4+IC0gICAgICAgICAgICAgbWVtc2V0KCZjcmVh dGUsIDAsIHNpemVvZihjcmVhdGUpKTsKPj4+IC0gICAgICAgICAgICAgY3JlYXRlLmN0eF9pZCA9 IHJhbmQoKTsKPj4+IC0gICAgICAgICAgICAgY3JlYXRlLnBhZCA9IDE7Cj4+PiAtICAgICAgICAg ICAgIGlndF9hc3NlcnRfZXEoX19nZW1fY29udGV4dF9jcmVhdGVfbG9jYWwoZmQsICZjcmVhdGUp LCAtRUlOVkFMKTsKPj4+IC0gICAgIH0KPj4+ICsgICAgIGlndF9zdWJ0ZXN0KCJleHQtcGFyYW0i KQo+Pj4gKyAgICAgICAgICAgICBiYXNpY19leHRfcGFyYW0oZmQpOwo+Pgo+PiBiYXNpYy1leHQt cGFyYW0/IERvIHdlIGV2ZW4gcmVseSBvbiBiYXNpYyBwcmVmaXggdGhlc2UgZGF5cz8KPiAKPiBi YXNpYyB0ZXN0IHByZWZpeCBpcyBkZWFkLgo+IC1DaHJpcwo+IApfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2lndC1kZXY=