From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 1/3] igt/gem_stolen: Verifying extended gem_create ioctl Date: Wed, 22 Jul 2015 17:00:08 +0100 Message-ID: <55AFBE08.20307@linux.intel.com> References: <1437572727-19084-1-git-send-email-ankitprasad.r.sharma@intel.com> <1437572727-19084-2-git-send-email-ankitprasad.r.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 84C596E512 for ; Wed, 22 Jul 2015 09:00:14 -0700 (PDT) In-Reply-To: <1437572727-19084-2-git-send-email-ankitprasad.r.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: ankitprasad.r.sharma@intel.com, intel-gfx@lists.freedesktop.org Cc: akash.goel@intel.com, shashidhar.hiremath@intel.com List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKT24gMDcvMjIvMjAxNSAwMjo0NSBQTSwgYW5raXRwcmFzYWQuci5zaGFybWFAaW50ZWwu Y29tIHdyb3RlOgo+IEZyb206IEFua2l0cHJhc2FkIFNoYXJtYSA8YW5raXRwcmFzYWQuci5zaGFy bWFAaW50ZWwuY29tPgo+Cj4gVGhpcyBwYXRjaCBhZGRzIHRoZSB0ZXN0Y2FzZXMgZm9yIHZlcmlm eWluZyB0aGUgbmV3IGV4dGVuZGVkCj4gZ2VtX2NyZWF0ZSBpb2N0bC4gQnkgbWVhbnMgb2YgdGhp cyBleHRlbmRlZCBpb2N0bCwgbWVtb3J5Cj4gcGxhY2VtZW50IG9mIHRoZSBHRU0gb2JqZWN0IGNh biBiZSBzcGVjaWZpZWQsIGkuZS4gZWl0aGVyCj4gc2htZW0gb3Igc3RvbGVuIG1lbW9yeS4KPiBU aGVzZSB0ZXN0Y2FzZXMgaW5jbHVkZSBmdW5jdGlvbmFsIHRlc3RzIGFuZCBpbnRlcmZhY2UgdGVz dHMgZm9yCj4gdGVzdGluZyB0aGUgZ2VtX2NyZWF0ZSBpb2N0bCBjYWxsIGZvciBzdG9sZW4gbWVt b3J5IHBsYWNlbWVudAo+Cj4gdjI6IFRlc3RpbmcgcHJlYWQvcHdyaXRlIGZ1bmN0aW9uYWxpdHkg Zm9yIHN0b2xlbiBiYWNrZWQgb2JqZWN0cywKPiBhZGRlZCBsb2NhbCBzdHJ1Y3QgZm9yIGV4dGVu ZGVkIGdlbV9jcmVhdGUgYW5kIGdlbV9nZXRfYXBlcnR1cmUsCj4gdW50aWwgaGVhZGVycyBjYXRj aCB1cCAoQ2hyaXMpCj4KPiB2MzogUmVtb3ZlZCBnZXRfYXBlcnR1cmUgcmVsYXRlZCBmdW5jdGlv bnMsIGV4dGVuZGVkIGdlbV9wcmVhZAo+IHRvIGNvbXBhcmUgc3BlZWRzIGZvciB1c2VyIHBhZ2Vz IHdpdGggYW5kIHdpdGhvdXQgcGFnZSBmYXVsdHMsCj4gdW5leHBvc2VkIGxvY2FsX2dlbV9jcmVh dGUgc3RydWN0LCBjaGFuZ2VkIGdlbV9jcmVhdGVfc3RvbGVuCj4gdXNhZ2UgKENocmlzKQo+Cj4g djQ6IFNwbGl0dGluZyBwYXRjaCB0byByZW1vdmUgY2hhbmdlcyBmcm9tIGdlbV9wcmVhZC9nZW1f cHdyaXRlCj4gdG8gYW5vdGhlciBwYXRjaCAoQW5raXQpCj4KPiB2NTogRml4ZWQgUmViYXNlIGNv bmZsaWN0cyAoQW5raXQpCj4gICAgICBBZGRlZCBJR1RfVEVTVF9ERVNDUklQVElPTiAoVGhvbWFz IFdvb2QpCj4KPiB2NjogQWRkZWQgX19nZW1fY3JlYXRlX3N0b2xlbiBmb3IgYWxsb3dpbmcgZXJy b3IgaGFuZGxpbmcgYnkgVXNlciwKPiB1cGRhdGVkIGdlbV9jcmVhdGVfc3RvbGVuIHRvIGFsaWdu IHdpdGggZ2VtX2NyZWF0ZSBmdW5jdGlvbiwgY29ycmVjdGVkCj4gZmlsbF9wdXJnZSB0ZXN0IChv dXQgb2YgYm91bmQgYWNjZXNzKSwgYWRkZWQgdGVzdGNhc2UgdG8gdmFsaWRhdGUKPiBhbGxvY2F0 aW5nIG9mIG1vcmUgdGhhbiAzMiBiaXQgc2l6ZWQgYnVmZmVycyAoVHZydGtvKQo+Cj4gU2lnbmVk LW9mZi1ieTogQW5raXRwcmFzYWQgU2hhcm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYSBhdCBpbnRl bC5jb20+Cj4gLS0tCj4gICBsaWIvaW9jdGxfd3JhcHBlcnMuYyAgIHwgIDc0ICsrKysrKysrKysK PiAgIGxpYi9pb2N0bF93cmFwcGVycy5oICAgfCAgMTMgKysKPiAgIHRlc3RzL01ha2VmaWxlLnNv dXJjZXMgfCAgIDEgKwo+ICAgdGVzdHMvZ2VtX3N0b2xlbi5jICAgICB8IDM2MyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICA0IGZpbGVzIGNoYW5n ZWQsIDQ1MSBpbnNlcnRpb25zKCspCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgdGVzdHMvZ2VtX3N0 b2xlbi5jCj4KPiBkaWZmIC0tZ2l0IGEvbGliL2lvY3RsX3dyYXBwZXJzLmMgYi9saWIvaW9jdGxf d3JhcHBlcnMuYwo+IGluZGV4IGEyNjlkMGYuLmRhNjVkZTUgMTAwNjQ0Cj4gLS0tIGEvbGliL2lv Y3RsX3dyYXBwZXJzLmMKPiArKysgYi9saWIvaW9jdGxfd3JhcHBlcnMuYwo+IEBAIC0zODksNiAr Mzg5LDgwIEBAIHZvaWQgZ2VtX3N5bmMoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUpCj4gICAJCSAg ICAgICBJOTE1X0dFTV9ET01BSU5fR1RULCBJOTE1X0dFTV9ET01BSU5fR1RUKTsKPiAgIH0KPgo+ ICtib29sIGdlbV9jcmVhdGVfX2hhc19zdG9sZW5fc3VwcG9ydChpbnQgZmQpCj4gK3sKPiArCXN0 YXRpYyBpbnQgaGFzX3N0b2xlbl9zdXBwb3J0ID0gLTE7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2V0 cGFyYW0gZ3A7Cj4gKwlpbnQgdmFsID0gLTE7Cj4gKwo+ICsJaWYgKGhhc19zdG9sZW5fc3VwcG9y dCA8IDApIHsKPiArCQltZW1zZXQoJmdwLCAwLCBzaXplb2YoZ3ApKTsKPiArCQlncC5wYXJhbSA9 IDM2OyAvKiBDUkVBVEVfVkVSU0lPTiAqLwo+ICsJCWdwLnZhbHVlID0gJnZhbDsKPiArCj4gKwkJ LyogRG8gd2UgaGF2ZSB0aGUgZXh0ZW5kZWQgZ2VtX2NyZWF0ZV9pb2N0bD8gKi8KPiArCQlpb2N0 bChmZCwgRFJNX0lPQ1RMX0k5MTVfR0VUUEFSQU0sICZncCk7Cj4gKwkJaGFzX3N0b2xlbl9zdXBw b3J0ID0gdmFsID49IDI7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGhhc19zdG9sZW5fc3VwcG9ydDsK PiArfQo+ICsKPiArc3RydWN0IGxvY2FsX2k5MTVfZ2VtX2NyZWF0ZV92MiB7Cj4gKwl1aW50NjRf dCBzaXplOwo+ICsJdWludDMyX3QgaGFuZGxlOwo+ICsJdWludDMyX3QgcGFkOwo+ICsjZGVmaW5l IEk5MTVfQ1JFQVRFX1BMQUNFTUVOVF9TVE9MRU4gKDE8PDApCj4gKwl1aW50MzJfdCBmbGFnczsK PiArfTsKPiArCj4gKyNkZWZpbmUgTE9DQUxfSU9DVExfSTkxNV9HRU1fQ1JFQVRFICAgICAgIERS TV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ1JFQVRFLCBzdHJ1Y3QgbG9j YWxfaTkxNV9nZW1fY3JlYXRlX3YyKQo+ICt1aW50MzJfdCBfX2dlbV9jcmVhdGVfc3RvbGVuKGlu dCBmZCwgdWludDY0X3Qgc2l6ZSkKPiArewo+ICsJc3RydWN0IGxvY2FsX2k5MTVfZ2VtX2NyZWF0 ZV92MiBjcmVhdGU7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCW1lbXNldCgmY3JlYXRlLCAwLCBzaXpl b2YoY3JlYXRlKSk7Cj4gKwljcmVhdGUuaGFuZGxlID0gMDsKPiArCWNyZWF0ZS5zaXplID0gc2l6 ZTsKPiArCWNyZWF0ZS5mbGFncyA9IEk5MTVfQ1JFQVRFX1BMQUNFTUVOVF9TVE9MRU47Cj4gKwly ZXQgPSBkcm1Jb2N0bChmZCwgTE9DQUxfSU9DVExfSTkxNV9HRU1fQ1JFQVRFLCAmY3JlYXRlKTsK PiArCj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwllcnJubyA9IDA7Cj4g KwlyZXR1cm4gY3JlYXRlLmhhbmRsZTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGdlbV9jcmVhdGVf c3RvbGVuOgo+ICsgKiBAZmQ6IG9wZW4gaTkxNSBkcm0gZmlsZSBkZXNjcmlwdG9yCj4gKyAqIEBz aXplOiBkZXNpcmVkIHNpemUgb2YgdGhlIGJ1ZmZlcgo+ICsgKiBAZmxhZ3M6IGRlc2lyZWQgcGxh Y2VtZW50IGkuZS4gc3RvbGVuIG9yIHNobWVtCgpUaGVyZSBhcmUgbm8gZmxhZ3MgaW4gdGhlIGZ1 bmN0aW9uIHByb3RvdHlwZS4gOikKCj4gKyAqCj4gKyAqIFRoaXMgd3JhcHMgdGhlIG5ldyBHRU1f Q1JFQVRFIGlvY3RsLCB3aGljaCBhbGxvY2F0ZXMgYQo+ICsgKiBuZXcgZ2VtIGJ1ZmZlciBvYmpl Y3Qgb2YgQHNpemUgYW5kIHBsYWNlbWVudCBiYXNlZCBvbiBAZmxhZ3MuCj4gKyAqCj4gKyAqIFJl dHVybnM6IFRoZSBmaWxlLXByaXZhdGUgaGFuZGxlIG9mIHRoZSBjcmVhdGVkIGJ1ZmZlciBvYmpl Y3QKPiArICovCj4gKwo+ICt1aW50MzJfdCBnZW1fY3JlYXRlX3N0b2xlbihpbnQgZmQsIHVpbnQ2 NF90IHNpemUpCj4gK3sKPiArCXN0cnVjdCBsb2NhbF9pOTE1X2dlbV9jcmVhdGVfdjIgY3JlYXRl Owo+ICsJaW50IHJldDsKPiArCj4gKwltZW1zZXQoJmNyZWF0ZSwgMCwgc2l6ZW9mKGNyZWF0ZSkp Owo+ICsJY3JlYXRlLmhhbmRsZSA9IDA7Cj4gKwljcmVhdGUuc2l6ZSA9IHNpemU7Cj4gKwljcmVh dGUuZmxhZ3MgPSBJOTE1X0NSRUFURV9QTEFDRU1FTlRfU1RPTEVOOwo+ICsJZG9faW9jdGwoZmQs IExPQ0FMX0lPQ1RMX0k5MTVfR0VNX0NSRUFURSwgJmNyZWF0ZSk7Cj4gKwlpZ3RfYXNzZXJ0KGNy ZWF0ZS5oYW5kbGUpOwo+ICsKPiArCXJldHVybiBjcmVhdGUuaGFuZGxlOwo+ICt9Cj4gKwo+ICsK PiAgIHVpbnQzMl90IF9fZ2VtX2NyZWF0ZShpbnQgZmQsIGludCBzaXplKQo+ICAgewo+ICAgCXN0 cnVjdCBkcm1faTkxNV9nZW1fY3JlYXRlIGNyZWF0ZTsKPiBkaWZmIC0tZ2l0IGEvbGliL2lvY3Rs X3dyYXBwZXJzLmggYi9saWIvaW9jdGxfd3JhcHBlcnMuaAo+IGluZGV4IGJjNWQ0YmQuLmZmMTU4 NGEgMTAwNjQ0Cj4gLS0tIGEvbGliL2lvY3RsX3dyYXBwZXJzLmgKPiArKysgYi9saWIvaW9jdGxf d3JhcHBlcnMuaAo+IEBAIC01Niw2ICs1Niw5IEBAIHZvaWQgZ2VtX3JlYWQoaW50IGZkLCB1aW50 MzJfdCBoYW5kbGUsIHVpbnQ2NF90IG9mZnNldCwgdm9pZCAqYnVmLCB1aW50NjRfdCBsZW5nCj4g ICB2b2lkIGdlbV9zZXRfZG9tYWluKGludCBmZCwgdWludDMyX3QgaGFuZGxlLAo+ICAgCQkgICAg dWludDMyX3QgcmVhZF9kb21haW5zLCB1aW50MzJfdCB3cml0ZV9kb21haW4pOwo+ICAgdm9pZCBn ZW1fc3luYyhpbnQgZmQsIHVpbnQzMl90IGhhbmRsZSk7Cj4gK2Jvb2wgZ2VtX2NyZWF0ZV9faGFz X3N0b2xlbl9zdXBwb3J0KGludCBmZCk7Cj4gK3VpbnQzMl90IF9fZ2VtX2NyZWF0ZV9zdG9sZW4o aW50IGZkLCB1aW50NjRfdCBzaXplKTsKPiArdWludDMyX3QgZ2VtX2NyZWF0ZV9zdG9sZW4oaW50 IGZkLCB1aW50NjRfdCBzaXplKTsKPiAgIHVpbnQzMl90IF9fZ2VtX2NyZWF0ZShpbnQgZmQsIGlu dCBzaXplKTsKPiAgIHVpbnQzMl90IGdlbV9jcmVhdGUoaW50IGZkLCB1aW50NjRfdCBzaXplKTsK PiAgIHZvaWQgZ2VtX2V4ZWNidWYoaW50IGZkLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZm ZXIyICpleGVjYnVmKTsKPiBAQCAtNjcsNiArNzAsMTYgQEAgYm9vbCBnZW1fbW1hcF9faGFzX3dj KGludCBmZCk7Cj4gICB2b2lkICpnZW1fbW1hcF9fd2MoaW50IGZkLCB1aW50MzJfdCBoYW5kbGUs IHVpbnQ2NF90IG9mZnNldCwgdWludDY0X3Qgc2l6ZSwgdW5zaWduZWQgcHJvdCk7Cj4KPiAgIC8q Kgo+ICsgKiBnZW1fcmVxdWlyZV9zdG9sZW5fc3VwcG9ydDoKPiArICogQGZkOiBvcGVuIGk5MTUg ZHJtIGZpbGUgZGVzY3JpcHRvcgo+ICsgKgo+ICsgKiBUZXN0IG1hY3JvIHRvIHF1ZXJ5IHdoZXRo ZXIgc3VwcG9ydCBmb3IgYWxsb2NhdGluZyBvYmplY3RzIGZyb20gc3RvbGVuCj4gKyAqIG1lbW9y eSBpcyBhdmFpbGFibGUuIEF1dG9tYXRpY2FsbHkgc2tpcHMgdGhyb3VnaCBpZ3RfcmVxdWlyZSgp IGlmIG5vdC4KPiArICovCj4gKyNkZWZpbmUgZ2VtX3JlcXVpcmVfc3RvbGVuX3N1cHBvcnQoZmQp IFwKPiArCQkJaWd0X3JlcXVpcmUoZ2VtX2NyZWF0ZV9faGFzX3N0b2xlbl9zdXBwb3J0KGZkKSkK PiArCj4gKy8qKgo+ICAgICogZ2VtX3JlcXVpcmVfbW1hcF93YzoKPiAgICAqIEBmZDogb3BlbiBp OTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKPiAgICAqCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2Vm aWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gaW5kZXggYjk0NzljYy4uMzI0 Y2JiNSAxMDA2NDQKPiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzCj4gKysrIGIvdGVzdHMv TWFrZWZpbGUuc291cmNlcwo+IEBAIC01NSw2ICs1NSw3IEBAIFRFU1RTX3Byb2dzX00gPSBcCj4g ICAJZ2VtX3Jlc2V0X3N0YXRzIFwKPiAgIAlnZW1fcmluZ2ZpbGwgXAo+ICAgCWdlbV9zZXRfdGls aW5nX3ZzX2JsdCBcCj4gKwlnZW1fc3RvbGVuIFwKPiAgIAlnZW1fc3RvcmVkd19iYXRjaGVzX2xv b3AgXAo+ICAgCWdlbV9zdHJlYW1pbmdfd3JpdGVzIFwKPiAgIAlnZW1fdGlsZWRfYmxpdHMgXAo+ IGRpZmYgLS1naXQgYS90ZXN0cy9nZW1fc3RvbGVuLmMgYi90ZXN0cy9nZW1fc3RvbGVuLmMKPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmQ1OWUxNDMKPiAtLS0gL2Rldi9u dWxsCj4gKysrIGIvdGVzdHMvZ2VtX3N0b2xlbi5jCj4gQEAgLTAsMCArMSwzNjMgQEAKPiArLyoK PiArICogQ29weXJpZ2h0IMKpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlv bgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwg ZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJl IGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlv bnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBi ZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJ UyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElF RCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZ UklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9S IE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBX SVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRI RSBTT0ZUV0FSRS4KPiArICoKPiArICogQXV0aG9yczoKPiArICogICAgQW5raXRwcmFzYWQgU2hh cm1hIDxhbmtpdHByYXNhZC5yLnNoYXJtYSBhdCBpbnRlbC5jb20+Cj4gKyAqCj4gKyAqLwo+ICsK PiArLyoqIEBmaWxlIGdlbV9jcmVhdGVfc3RvbGVuLmMKPiArICoKPiArICogVGhpcyBpcyBhIHRl c3QgZm9yIHRoZSBleHRlbmRlZCBnZW1fY3JlYXRlIGlvY3RsLCB0aGF0IGluY2x1ZGVzIGFsbG9j YXRpb24KPiArICogb2Ygb2JqZWN0IGZyb20gc3RvbGVuIG1lbW9yeS4KPiArICoKPiArICogVGhl IGdvYWwgaXMgdG8gc2ltcGx5IGVuc3VyZSB0aGUgYmFzaWNzIHdvcmssIGFuZCBpbnZhbGlkIGlu cHV0IGNvbWJpbmF0aW9ucwo+ICsgKiBhcmUgcmVqZWN0ZWQuCj4gKyAqLwo+ICsKPiArI2luY2x1 ZGUgPHN0ZGxpYi5oPgo+ICsjaW5jbHVkZSA8c3lzL2lvY3RsLmg+Cj4gKyNpbmNsdWRlIDxzdGRp by5oPgo+ICsjaW5jbHVkZSA8c3RyaW5nLmg+Cj4gKyNpbmNsdWRlIDxmY250bC5oPgo+ICsjaW5j bHVkZSA8aW50dHlwZXMuaD4KPiArI2luY2x1ZGUgPGVycm5vLmg+Cj4gKyNpbmNsdWRlIDxzeXMv c3RhdC5oPgo+ICsjaW5jbHVkZSA8c3lzL3RpbWUuaD4KPiArI2luY2x1ZGUgPGdldG9wdC5oPgo+ ICsKPiArI2luY2x1ZGUgPGRybS5oPgo+ICsKPiArI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgi Cj4gKyNpbmNsdWRlICJpbnRlbF9idWZtZ3IuaCIKPiArI2luY2x1ZGUgImludGVsX2JhdGNoYnVm ZmVyLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9pby5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfY2hpcHNl dC5oIgo+ICsjaW5jbHVkZSAiaWd0X2F1eC5oIgo+ICsjaW5jbHVkZSAiZHJtdGVzdC5oIgo+ICsj aW5jbHVkZSAiZHJtLmgiCj4gKyNpbmNsdWRlICJpOTE1X2RybS5oIgo+ICsKPiArSUdUX1RFU1Rf REVTQ1JJUFRJT04oIlRoaXMgdGVzdCB2ZXJpZmllcyB0aGUgZXhldGVuZGVkIGdlbV9jcmVhdGUg aW9jdGwsIgo+ICsJCSAgICAgIiB0aGF0IGluY2x1ZGVzIGFsbG9jYXRpb24gb2Ygb2JqIGZyb20g c3RvbGVuIHJlZ2lvbiIpOwo+ICsjZGVmaW5lIENMRUFSKHMpIG1lbXNldCgmcywgMCwgc2l6ZW9m KHMpKQo+ICsjZGVmaW5lIFNJWkUgMTAyNCoxMDI0Cj4gKyNkZWZpbmUgRFdPUkRfU0laRSA0Cj4g KyNkZWZpbmUgREFUQSAweGRlYWQKPiArI2RlZmluZSBMQVJHRV9TSVpFIDgqMTAyNCoxMDI0KjEw MjQKPiArI2RlZmluZSBNQVhfT0JKRUNUUyAxMDAKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2lu dGVsX2J1Zm1nciAqYnVmbWdyOwo+ICtzdGF0aWMgc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpi YXRjaDsKPiArCj4gK3N0YXRpYyB2b2lkIHZlcmlmeV9jb3B5X29wKGRybV9pbnRlbF9ibyAqc3Jj LCBkcm1faW50ZWxfYm8gKmRlc3QpCj4gK3sKPiArCXVpbnQzMl90ICp2aXJ0LCBpLCByZXQ7Cj4g KwkvKiBGaWxsIHRoZSBzcmMgQk8gd2l0aCBkd29yZHMgKi8KPiArCXJldCA9IGRybV9pbnRlbF9n ZW1fYm9fbWFwX2d0dChzcmMpOwo+ICsJaWd0X2Fzc2VydCghcmV0KTsKPiArCj4gKwl2aXJ0ID0g c3JjLT52aXJ0dWFsOwo+ICsJZm9yIChpID0gMDsgaSA8IFNJWkUvRFdPUkRfU0laRTsgaSsrKQo+ ICsJCXZpcnRbaV0gPSBpOwo+ICsKPiArCWludGVsX2NvcHlfYm8oYmF0Y2gsIGRlc3QsIHNyYywg U0laRSk7Cj4gKwo+ICsJcmV0ID0gZHJtX2ludGVsX2dlbV9ib19tYXBfZ3R0KGRlc3QpOwo+ICsJ aWd0X2Fzc2VydCghcmV0KTsKPiArCj4gKwl2aXJ0ID0gZGVzdC0+dmlydHVhbDsKPiArCS8qIHZl cmlmeSAqLwo+ICsJZm9yIChpID0gMDsgaSA8IFNJWkUvRFdPUkRfU0laRTsgaSsrKQo+ICsJCWln dF9hc3NlcnQodmlydFtpXSA9PSBpKTsKCllvdSBkaWQgbm90IGxpa2Ugc3VnZ2VzdGlvbiB0byB1 c2UgaWd0X2Fzc2VydF9lcT8KCj4gKwo+ICsJZHJtX2ludGVsX2JvX3VubWFwKHNyYyk7Cj4gKwlk cm1faW50ZWxfYm9fdW5tYXAoZGVzdCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHN0b2xlbl9w d3JpdGUoaW50IGZkKQo+ICt7Cj4gKwlkcm1faW50ZWxfYm8gKmJvOwo+ICsJdWludDMyX3QgYnVm W1NJWkUvRFdPUkRfU0laRV07Cj4gKwl1aW50MzJfdCBoYW5kbGUgPSAwOwo+ICsJdWludDMyX3Qg KnZpcnQ7Cj4gKwlpbnQgaSwgcmV0ID0gMDsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgU0laRS9E V09SRF9TSVpFOyBpICsrKQoKU3RyYXkgc3BhY2UgcmVtYWlucy4gOikKCj4gKwkJYnVmW2ldID0g REFUQTsKPiArCj4gKwlnZW1fcmVxdWlyZV9zdG9sZW5fc3VwcG9ydChmZCk7Cj4gKwo+ICsJaGFu ZGxlID0gZ2VtX2NyZWF0ZV9zdG9sZW4oZmQsIFNJWkUpOwo+ICsKPiArCWdlbV93cml0ZShmZCwg aGFuZGxlLCAwLCBidWYsIFNJWkUpOwo+ICsJYm8gPSBnZW1faGFuZGxlX3RvX2xpYmRybV9ibyhi dWZtZ3IsIGZkLCAiYm8iLCBoYW5kbGUpOwo+ICsKPiArCXJldCA9IGRybV9pbnRlbF9nZW1fYm9f bWFwX2d0dChibyk7Cj4gKwlpZ3RfYXNzZXJ0KCFyZXQpOwo+ICsKPiArCXZpcnQgPSBiby0+dmly dHVhbDsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgU0laRS9EV09SRF9TSVpFOyBpICsrKQo+ICsJ CWlndF9hc3NlcnQodmlydFtpXSA9PSBEQVRBKTsKPiArCj4gKwlkcm1faW50ZWxfYm9fdW5tYXAo Ym8pOwo+ICsJZHJtX2ludGVsX2JvX3VucmVmZXJlbmNlKGJvKTsKPiArCWdlbV9jbG9zZShmZCwg aGFuZGxlKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc3RvbGVuX3ByZWFkKGludCBmZCkKPiAr ewo+ICsJZHJtX2ludGVsX2JvICpibzsKPiArCXVpbnQzMl90IGJ1ZltTSVpFL0RXT1JEX1NJWkVd Owo+ICsJdWludDMyX3QgaGFuZGxlID0gMDsKPiArCXVpbnQzMl90ICp2aXJ0Owo+ICsJaW50IGks IHJldCA9IDA7Cj4gKwo+ICsJQ0xFQVIoYnVmKTsKPiArCj4gKwlnZW1fcmVxdWlyZV9zdG9sZW5f c3VwcG9ydChmZCk7Cj4gKwo+ICsJaGFuZGxlID0gZ2VtX2NyZWF0ZV9zdG9sZW4oZmQsIFNJWkUp Owo+ICsKPiArCWJvID0gZ2VtX2hhbmRsZV90b19saWJkcm1fYm8oYnVmbWdyLCBmZCwgImJvIiwg aGFuZGxlKTsKPiArCj4gKwlyZXQgPSBkcm1faW50ZWxfZ2VtX2JvX21hcF9ndHQoYm8pOwo+ICsJ aWd0X2Fzc2VydCghcmV0KTsKPiArCj4gKwl2aXJ0ID0gYm8tPnZpcnR1YWw7Cj4gKwo+ICsJZm9y IChpID0gMDsgaSA8IFNJWkUvRFdPUkRfU0laRTsgaSArKykKPiArCQl2aXJ0W2ldID0gREFUQTsK PiArCj4gKwlkcm1faW50ZWxfYm9fdW5tYXAoYm8pOwo+ICsJZHJtX2ludGVsX2JvX3VucmVmZXJl bmNlKGJvKTsKPiArCj4gKwlnZW1fcmVhZChmZCwgaGFuZGxlLCAwLCBidWYsIFNJWkUpOwo+ICsK PiArCWZvciAoaSA9IDA7IGkgPCBTSVpFL0RXT1JEX1NJWkU7IGkgKyspCj4gKwkJaWd0X2Fzc2Vy dChidWZbaV0gPT0gREFUQSk7Cj4gKwo+ICsJZ2VtX2Nsb3NlKGZkLCBoYW5kbGUpOwo+ICt9Cj4g Kwo+ICtzdGF0aWMgdm9pZCBjb3B5X3Rlc3QoaW50IGZkKQo+ICt7Cj4gKwlkcm1faW50ZWxfYm8g KnNyYywgKmRlc3Q7Cj4gKwl1aW50MzJfdCBzcmNfaGFuZGxlID0gMCwgZGVzdF9oYW5kbGUgPSAw Owo+ICsJaW50IHJldCA9IDA7Cj4gKwo+ICsJZ2VtX3JlcXVpcmVfc3RvbGVuX3N1cHBvcnQoZmQp Owo+ICsKPiArCXNyY19oYW5kbGUgPSBnZW1fY3JlYXRlX3N0b2xlbihmZCwgU0laRSk7Cj4gKwlk ZXN0X2hhbmRsZSA9IGdlbV9jcmVhdGVfc3RvbGVuKGZkLCBTSVpFKTsKPiArCj4gKwlzcmMgPSBn ZW1faGFuZGxlX3RvX2xpYmRybV9ibyhidWZtZ3IsIGZkLCAic3JjX2JvIiwgc3JjX2hhbmRsZSk7 Cj4gKwlkZXN0ID0gZ2VtX2hhbmRsZV90b19saWJkcm1fYm8oYnVmbWdyLCBmZCwgImRzdF9ibyIs IGRlc3RfaGFuZGxlKTsKPiArCj4gKwlpZ3RfYXNzZXJ0KHNyYyAhPSBOVUxMKTsKPiArCWlndF9h c3NlcnQoZGVzdCAhPSBOVUxMKTsKPiArCj4gKwl2ZXJpZnlfY29weV9vcChzcmMsIGRlc3QpOwo+ ICsKPiArCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShzcmMpOwo+ICsJZHJtX2ludGVsX2JvX3Vu cmVmZXJlbmNlKGRlc3QpOwo+ICsJZ2VtX2Nsb3NlKGZkLCBzcmNfaGFuZGxlKTsKPiArCWdlbV9j bG9zZShmZCwgZGVzdF9oYW5kbGUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB2ZXJpZnlfb2Jq ZWN0X2NsZWFyKGludCBmZCkKPiArewo+ICsJZHJtX2ludGVsX2JvICpibzsKPiArCXVpbnQzMl90 IGhhbmRsZSA9IDA7Cj4gKwl1aW50MzJfdCAqdmlydDsKPiArCWludCBpLCByZXQgPSAwOwo+ICsK PiArCWdlbV9yZXF1aXJlX3N0b2xlbl9zdXBwb3J0KGZkKTsKPiArCj4gKwloYW5kbGUgPSBnZW1f Y3JlYXRlX3N0b2xlbihmZCwgU0laRSk7Cj4gKwo+ICsJYm8gPSBnZW1faGFuZGxlX3RvX2xpYmRy bV9ibyhidWZtZ3IsIGZkLCAidmVyaWZ5X2JvIiwgaGFuZGxlKTsKPiArCWlndF9hc3NlcnQoYm8g IT0gTlVMTCk7Cj4gKwo+ICsJcmV0ID0gZHJtX2ludGVsX2dlbV9ib19tYXBfZ3R0KGJvKTsKPiAr CWlndF9hc3NlcnQocmV0ID09IDApOwo+ICsKPiArCS8qIFZlcmlmeSBpZiB0aGUgQk8gaXMgemVy b2VkICovCj4gKwl2aXJ0ID0gYm8tPnZpcnR1YWw7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgU0laRSAv IERXT1JEX1NJWkU7IGkrKykKPiArCQlpZ3RfYXNzZXJ0KHZpcnRbaV0gPT0gMCk7Cj4gKwo+ICsJ ZHJtX2ludGVsX2JvX3VubWFwKGJvKTsKPiArCWRybV9pbnRlbF9ib191bnJlZmVyZW5jZShibyk7 Cj4gKwlnZW1fY2xvc2UoZmQsIGhhbmRsZSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHN0b2xl bl9sYXJnZV9vYmpfYWxsb2MoaW50IGZkKQo+ICt7Cj4gKwl1aW50MzJfdCBoYW5kbGUgPSAwOwo+ ICsKPiArCWdlbV9yZXF1aXJlX3N0b2xlbl9zdXBwb3J0KGZkKTsKPiArCWhhbmRsZSA9IF9fZ2Vt X2NyZWF0ZV9zdG9sZW4oZmQsIExBUkdFX1NJWkUpOwo+ICsJaWd0X2Fzc2VydChoYW5kbGUgPT0g MCk7Cj4gK30KCkkgdGhpbmsgd2UgbmVlZCBvbmUgbW9yZSBzdWJ0ZXN0LCB3aGljaCB3aWxsIG92 ZXJmbG93IHRoZSAzMi1iaXQgc2l6ZSBieSAKc2F5IG9uZSBwYWdlLiBUaGlzIHdvdWxkIGV4cG9z ZSB0aGUgYnVnIGluIHRoZSBrZXJuZWwgcGF0Y2ggIltQQVRDSCAyLzRdIApkcm0vaTkxNTogU3Vw cG9ydCBmb3IgY3JlYXRpbmcgU3RvbGVuIG1lbW9yeSBiYWNrZWQgb2JqZWN0cyIuCgo+ICtzdGF0 aWMgdm9pZCBzdG9sZW5fZmlsbF9wdXJnZV90ZXN0KGludCBmZCkKPiArewo+ICsJZHJtX2ludGVs X2JvICpibzsKPiArCWludCBtcmV0ID0gMCwgcmV0ID0gMCwgb2JqX2NvdW50ID0gMCwgaSA9IDA7 CgptcmV0IGFuZCByZXQgdW51c2VkPwoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=