From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 2/3] drm/i915: add render state initialization Date: Tue, 06 May 2014 16:33:23 +0300 Message-ID: <87ha53jal8.fsf@gaia.fi.intel.com> References: <1398187184-14919-1-git-send-email-mika.kuoppala@intel.com> <1398187184-14919-3-git-send-email-mika.kuoppala@intel.com> <20140506012005.GA18057@bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 2FE256E8D8 for ; Tue, 6 May 2014 06:34:16 -0700 (PDT) In-Reply-To: <20140506012005.GA18057@bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ben Widawsky Cc: intel-gfx@lists.freedesktop.org, miku@iki.fi List-Id: intel-gfx@lists.freedesktop.org QmVuIFdpZGF3c2t5IDxiZW5AYndpZGF3c2submV0PiB3cml0ZXM6Cgo+IE9uIFR1ZSwgQXByIDIy LCAyMDE0IGF0IDA4OjE5OjQzUE0gKzAzMDAsIE1pa2EgS3VvcHBhbGEgd3JvdGU6Cj4+IEhXIGd1 eXMgc2F5IHRoYXQgaXQgaXMgbm90IGEgY29vbCBpZGVhIHRvIGxldCBkZXZpY2UKPj4gZ28gaW50 byByYzYgd2l0aG91dCBwcm9wZXIgM2QgcGlwZWxpbmUgc3RhdGUuCj4+IAo+PiBGb3IgZWFjaCBu ZXcgdW5pbml0aWFsaXplZCBjb250ZXh0LCBnZW5lcmF0ZSBhCj4+IHZhbGlkIG51bGwgcmVuZGVy IHN0YXRlIHRvIGJlIHJ1biBvbiBjb250ZXh0Cj4+IGNyZWF0aW9uLgo+PiAKPj4gVGhpcyBwYXRj aCBpbnRyb2R1Y2VzIGEgc2tlbGV0b24gd2l0aCBlbXR5IHN0YXRlcy4KPj4gCj4+IFNpZ25lZC1v ZmYtYnk6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAaW50ZWwuY29tPgo+PiAtLS0KPj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgIDEgKwo+ PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICAgMiAr Cj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgICAgfCAgICA3 ICsKPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jICB8ICAy MjIgKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmVuZGVyc3RhdGVfZ2VuNi5oIHwgICAxMSArKwo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmVuZGVyc3RhdGVfZ2VuNy5oIHwgICAxMSArKwo+PiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmVuZGVyc3RhdGVfZ2VuOC5oIHwgICAxMSArKwo+PiAgNyBmaWxlcyBjaGFuZ2Vk LCAyNjUgaW5zZXJ0aW9ucygrKQo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVuZGVyc3RhdGVfZ2VuNi5oCj4+ICBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVuZGVyc3RhdGVfZ2VuNy5oCj4+ ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVuZGVyc3Rh dGVfZ2VuOC5oCj4+IAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+PiBpbmRleCBiMTQ0NWI3Li5iNWQ0 MDI5IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+PiBAQCAtMTgsNiArMTgsNyBAQCBpOTE1 LSQoQ09ORklHX0RFQlVHX0ZTKSArPSBpOTE1X2RlYnVnZnMubwo+PiAgIyBHRU0gY29kZQo+PiAg aTkxNS15ICs9IGk5MTVfY21kX3BhcnNlci5vIFwKPj4gIAkgIGk5MTVfZ2VtX2NvbnRleHQubyBc Cj4+ICsJICBpOTE1X2dlbV9yZW5kZXJfc3RhdGUubyBcCj4+ICAJICBpOTE1X2dlbV9kZWJ1Zy5v IFwKPj4gIAkgIGk5MTVfZ2VtX2RtYWJ1Zi5vIFwKPj4gIAkgIGk5MTVfZ2VtX2V2aWN0Lm8gXAo+ PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggNDNiMDIyYy4uZjZhZTJlZSAxMDA2NDQK Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+IEBAIC0yMzMwLDYgKzIzMzAsOCBAQCBpbnQgaTkx NV9nZW1fY29udGV4dF9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKPj4gIGludCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPj4gIAkJCQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUp Owo+PiAgCj4+ICsvKiBpOTE1X2dlbV9yZW5kZXJfc3RhdGUuYyAqLwo+PiAraW50IGk5MTVfZ2Vt X2luaXRfcmVuZGVyX3N0YXRlKHN0cnVjdCBpbnRlbF9yaW5nX2J1ZmZlciAqcmluZyk7Cj4+ICAv KiBpOTE1X2dlbV9ldmljdC5jICovCj4+ICBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2V2aWN0 X3NvbWV0aGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+PiAgCQkJCQkgIHN0cnVjdCBpOTE1 X2FkZHJlc3Nfc3BhY2UgKnZtLAo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4 dC5jCj4+IGluZGV4IDMwYjM1NWEuLmQ2NDhkNGQgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMKPj4gQEAgLTc0Niw2ICs3NDYsMTMgQEAgc3RhdGljIGludCBk b19zd2l0Y2goc3RydWN0IGludGVsX3JpbmdfYnVmZmVyICpyaW5nLAo+PiAgCQkvKiBvYmogaXMg a2VwdCBhbGl2ZSB1bnRpbCB0aGUgbmV4dCByZXF1ZXN0IGJ5IGl0cyBhY3RpdmUgcmVmICovCj4+ ICAJCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKGZyb20tPm9iaik7Cj4+ICAJCWk5MTVfZ2Vt X2NvbnRleHRfdW5yZWZlcmVuY2UoZnJvbSk7Cj4+ICsJfSBlbHNlIHsKPj4gKwkJaWYgKHJpbmct PmlkID09IFJDUyAmJiB0by0+aXNfaW5pdGlhbGl6ZWQgPT0gZmFsc2UpIHsKPj4gKwo+PiArCQkJ cmV0ID0gaTkxNV9nZW1faW5pdF9yZW5kZXJfc3RhdGUocmluZyk7Cj4+ICsJCQlpZiAocmV0KQo+ PiArCQkJCURSTV9FUlJPUigiaW5pdCByZW5kZXIgc3RhdGU6ICVkXG4iLCByZXQpOwo+PiArCQl9 Cj4KPiBUaGUgd2F5IEkgdGhvdWdodCB3ZSdkIGRvIHRoaXMgd2FzIHRvIGVtaXQgdGhlIHN0YXRl IG9uY2UgZm9yIHRoZQo+IGRlZmF1bHQgY29udGV4dCwgYW5kIGNvcHkgdGhvc2UgcGFnZXMgdG8g dGhlIEJPIG9mIHRoZSBuZXcgY29udGV4dC4KClRoZSBzdGF0ZSBpcyBiaWcgKG9uIGJkdyksIDE4 IHBhZ2VzLiBNb3JlIG9uIGNvdmVyIGxldHRlciBvZiB2MiBzZXJpZXM6CjEzOTkzODI3NjYtMjUx MTYtMS1naXQtc2VuZC1lbWFpbC1taWthLmt1b3BwYWxhQGludGVsLmNvbQoKPj4gIAl9Cj4+ICAK Pj4gIAl0by0+aXNfaW5pdGlhbGl6ZWQgPSB0cnVlOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9yZW5kZXJfc3RhdGUuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRl eCAwMDAwMDAwLi40MDlmOTliCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMKPj4gQEAgLTAsMCArMSwyMjIgQEAKPj4g Ky8qCj4+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgo+PiArICoKPj4g KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uIG9idGFpbmluZyBhCj4+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+PiArICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgo+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2Us IHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4+ICsgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPj4g KyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnM6Cj4+ICsgKgo+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+PiArICogcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZQo+PiArICogU29mdHdhcmUuCj4+ICsgKgo+PiArICogVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJF U1MgT1IKPj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdB UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4+ICsg KiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJ TSwgREFNQUdFUyBPUiBPVEhFUgo+PiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPj4gKyAqIEZST00sIE9V VCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MKPj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPj4gKyAqCj4+ICsgKiBBdXRob3Jz Ogo+PiArICogICAgTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBpbnRlbC5jb20+Cj4+ICsg Kgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlICJpOTE1X2Rydi5oIgo+PiArCj4+ICsjaW5jbHVk ZSAiaW50ZWxfcmVuZGVyc3RhdGVfZ2VuNi5oIgo+PiArI2luY2x1ZGUgImludGVsX3JlbmRlcnN0 YXRlX2dlbjcuaCIKPj4gKyNpbmNsdWRlICJpbnRlbF9yZW5kZXJzdGF0ZV9nZW44LmgiCj4+ICsK Pj4gKyNkZWZpbmUgQkFUQ0hfTUFYX1NJWkUgNDA5Ngo+PiArCj4+ICtzdHJ1Y3QgaTkxNV9yZW5k ZXJfc3RhdGUgewo+PiArCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4+ICsJdW5z aWduZWQgbG9uZyBnZ3R0X29mZnNldDsKPj4gKwl2b2lkICpiYXRjaDsKPj4gKwl1MzIgc2l6ZTsK Pj4gKwl1MzIgbGVuOwo+PiArfTsKPj4gKwo+PiArc3RhdGljIHN0cnVjdCBpOTE1X3JlbmRlcl9z dGF0ZSAqCj4+ICtyZW5kZXJfc3RhdGVfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5z aWduZWQgaW50IHNpemUpCj4+ICt7Cj4+ICsJc3RydWN0IGk5MTVfcmVuZGVyX3N0YXRlICpzbzsK Pj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJc28gPSBremFsbG9jKHNpemVvZigqc28pLCBHRlBfS0VS TkVMKTsKPj4gKwlpZiAoIXNvKQo+PiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPj4gKwo+ PiArCXNvLT5zaXplID0gQUxJR04oc2l6ZSwgNDA5Nik7Cj4+ICsKPj4gKwlzby0+b2JqID0gaTkx NV9nZW1fYWxsb2Nfb2JqZWN0KGRldiwgc28tPnNpemUpOwo+PiArCWlmIChzby0+b2JqID09IE5V TEwpIHsKPj4gKwkJcmV0ID0gLUVOT01FTTsKPj4gKwkJZ290byBmcmVlOwo+PiArCX0KPj4gKwo+ PiArCXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3Bpbihzby0+b2JqLCA0MDk2LCAwKTsKPj4gKwlp ZiAocmV0KQo+PiArCQlnb3RvIGZyZWVfZ2VtOwo+Cj4gVXNpbmcgZGlzcGF0Y2ggdGhlIHdheSB5 b3UgZG8gYmVsb3csIHdlJ2xsIGFjdHVhbGx5IGJlIGV4ZWN1dGluZyBvdXQgb2YKPiB0aGUgUFBH VFQsIGFuZCBub3QgdGhlIGdsb2JhbC4gV2hpbGUgdGhpcyBtYWtlcyBubyBkaWZmZXJlbmNlIG9u IHRoZQo+IGN1cnJlbnQgY29kZSwgaXQgZG9lcyBtYWtlIGEgZGlmZmVyZW5jZSBmb3Igc29tZSBv ZiBteSBwbGFucy4gSSBkb24ndAo+IHNlZSBhIGNsZWFuIHdheSB0byBmaXggdGhpcyB3aXRoIHRo ZSBjdXJyZW50IGNvZGUgYmFzZSwgSSBhbSBqdXN0Cj4gY29tcGxhaW5pbmcuCj4KPj4gKwo+PiAr CXNvLT5iYXRjaCA9IGk5MTVfZ2VtX3ZtYXBfb2JqKHNvLT5vYmopOwo+PiArCWlmICghc28tPmJh dGNoKSB7Cj4+ICsJCXJldCA9IC1FTk9NRU07Cj4+ICsJCWdvdG8gdW5waW47Cj4+ICsJfQo+PiAr Cj4+ICsJc28tPmdndHRfb2Zmc2V0ID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KHNvLT5vYmop Owo+PiArCj4+ICsJcmV0dXJuIHNvOwo+PiArdW5waW46Cj4+ICsJaTkxNV9nZW1fb2JqZWN0X2dn dHRfdW5waW4oc28tPm9iaik7Cj4+ICtmcmVlX2dlbToKPj4gKwlkcm1fZ2VtX29iamVjdF91bnJl ZmVyZW5jZSgmc28tPm9iai0+YmFzZSk7Cj4+ICtmcmVlOgo+PiArCWtmcmVlKHNvKTsKPj4gKwly ZXR1cm4gRVJSX1BUUihyZXQpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCByZW5kZXJfc3Rh dGVfZnJlZShzdHJ1Y3QgaTkxNV9yZW5kZXJfc3RhdGUgKnNvKQo+PiArewo+PiArCXZ1bm1hcChz by0+YmF0Y2gpOwo+PiArCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKHNvLT5vYmopOwo+PiAr CWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZzby0+b2JqLT5iYXNlKTsKPj4gKwlrZnJlZShz byk7Cj4+ICt9Cj4+ICsKPj4gK3N0cnVjdCByZW5kZXJfc3RhdGVfcm9fZGF0YSB7Cj4+ICsJY29u c3QgdTMyICpiYXRjaDsKPj4gKwl1bnNpZ25lZCBpbnQgYmF0Y2hfaXRlbXM7Cj4+ICsJY29uc3Qg dTMyICpyZWxvYzsKPj4gKwl1bnNpZ25lZCBpbnQgcmVsb2NfaXRlbXM7Cj4+ICsJYm9vbCByZWxv Y182NGJpdDsKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgcmVuZGVyX3N0YXRlX2NvcHkoc3Ry dWN0IGk5MTVfcmVuZGVyX3N0YXRlICpzbywKPj4gKwkJCSAgICAgY29uc3Qgc3RydWN0IHJlbmRl cl9zdGF0ZV9yb19kYXRhICpzb3VyY2UpCj4+ICt7Cj4+ICsJY29uc3QgdTY0IGdvZmZzZXQgPSBp OTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoc28tPm9iaik7Cj4+ICsJY29uc3QgdW5zaWduZWQgaW50 IG51bV9yZWxvY3MgPSBzb3VyY2UtPnJlbG9jX2l0ZW1zOwo+PiArCWludCByZWxvY19pbmRleCA9 IDA7Cj4+ICsJdTMyICpkID0gKHVpbnQzMl90ICopc28tPmJhdGNoOwo+PiArCXVuc2lnbmVkIGlu dCBpID0gMDsKPj4gKwo+PiArCWlmIChzb3VyY2UtPmJhdGNoX2l0ZW1zICogc2l6ZW9mKCpzb3Vy Y2UtPmJhdGNoKSA+IHNvLT5zaXplKQo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiArCXdo aWxlIChpIDwgc291cmNlLT5iYXRjaF9pdGVtcykgewo+PiArCQl1MzIgcyA9IHNvdXJjZS0+YmF0 Y2hbaV07Cj4+ICsKPj4gKwkJaWYgKHJlbG9jX2luZGV4IDwgbnVtX3JlbG9jcyAmJgo+PiArCQkg ICAgaSAqIDQgID09IHNvdXJjZS0+cmVsb2NbcmVsb2NfaW5kZXhdKSB7Cj4+ICsKPj4gKwkJCXMg Kz0gZ29mZnNldCAmIDB4ZmZmZmZmZmY7Cj4+ICsKPj4gKwkJCS8qIFdlIGtlZXAgYmF0Y2ggb2Zm c2V0cyBtYXggMzJiaXQgKi8KPj4gKwkJCWlmIChzb3VyY2UtPnJlbG9jXzY0Yml0KSB7Cj4+ICsJ CQkJaWYgKGkgKyAxID49IHNvdXJjZS0+YmF0Y2hfaXRlbXMgfHwKPj4gKwkJCQkgICAgc291cmNl LT5iYXRjaFtpICsgMV0gIT0gMCkKPj4gKwkJCQkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gKwkJ CQlkW2ldID0gczsKPj4gKwkJCQlpKys7Cj4+ICsJCQkJcyA9IChnb2Zmc2V0ICYgMHhmZmZmZmZm ZjAwMDAwMDAwdWxsKSA+PiAzMjsKPj4gKwkJCX0KPj4gKwo+PiArCQkJcmVsb2NfaW5kZXgrKzsK Pj4gKwkJfQo+PiArCj4+ICsJCWRbaV0gPSBzOwo+PiArCQlpKys7Cj4+ICsJfQo+PiArCj4+ICsJ aWYgKG51bV9yZWxvY3MgIT0gcmVsb2NfaW5kZXgpIHsKPj4gKwkJRFJNX0VSUk9SKCJub3QgYWxs IHJlbG9jcyByZXNvbHZlZCwgJWQgb3V0IG9mICVkXG4iLAo+PiArCQkJICByZWxvY19pbmRleCwg bnVtX3JlbG9jcyk7Cj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCX0KPj4gKwo+PiArCXNvLT5s ZW4gPSBzb3VyY2UtPmJhdGNoX2l0ZW1zICogc2l6ZW9mKCpzb3VyY2UtPmJhdGNoKTsKPj4gKwo+ PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHJlbmRlcl9zdGF0ZV9nZXQo c3RydWN0IGk5MTVfcmVuZGVyX3N0YXRlICpzbywgaW50IGdlbikKPj4gK3sKPj4gKwlzdHJ1Y3Qg cmVuZGVyX3N0YXRlX3JvX2RhdGEgcm9fZGF0YTsKPj4gKwo+PiArI2RlZmluZSBSU19TRVRVUChf ZCwgX2csIF9yKSB7CQkJCQkJXAo+PiArCQlpZiAoIXNpemVvZihnZW4gIyMgX2cgIyMgX251bGxf c3RhdGVfYmF0Y2gpKQkJXAo+PiArCQkJcmV0dXJuIC1FSU5WQUw7CQkJCQlcCj4+ICsJCWlmIChz aXplb2YoZ2VuICMjIF9nICMjIF9udWxsX3N0YXRlX2JhdGNoKSAmIDB4MykJXAo+PiArCQkJcmV0 dXJuIC1FSU5WQUw7CQkJCQlcCj4+ICsJCWlmIChzaXplb2YoZ2VuICMjIF9nICMjIF9udWxsX3N0 YXRlX3JlbG9jcykgJiAweDMpCVwKPj4gKwkJCXJldHVybiAtRUlOVkFMOwkJCQkJXAo+PiArCQlf ZC5iYXRjaCA9IGdlbiAjIyBfZyAjIyBfbnVsbF9zdGF0ZV9iYXRjaDsJCVwKPj4gKwkJX2QuYmF0 Y2hfaXRlbXMgPSBzaXplb2YoZ2VuICMjX2cgIyMgX251bGxfc3RhdGVfYmF0Y2gpIC8gNDsgXAo+ PiArCQlfZC5yZWxvYyA9IGdlbiAjIyBfZyAjIyBfbnVsbF9zdGF0ZV9yZWxvY3M7CQlcCj4+ICsJ CV9kLnJlbG9jX2l0ZW1zID0gc2l6ZW9mKGdlbiAjIyBfZyAjIyBfbnVsbF9zdGF0ZV9yZWxvY3Mp IC8gNDsgXAo+PiArCQlfZC5yZWxvY182NGJpdCA9IF9yOwkJCQkJXAo+PiArCX0KPj4gKwo+PiAr CXN3aXRjaCAoZ2VuKSB7Cj4+ICsJY2FzZSA2Ogo+PiArCQlSU19TRVRVUChyb19kYXRhLCA2LCBm YWxzZSk7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgNzoKPj4gKwkJUlNfU0VUVVAocm9fZGF0YSwg NywgZmFsc2UpOwo+PiArCQlicmVhazsKPgo+IEknbSBhIGJpdCBzdXJwcmlzZWQgd2UgaGF2ZSBu byBkaWZmZXJlbmNlcyBmb3IgSFNXL0JZVC9JVkIuCgpUaGUgc3RhdGUgZ2VuZXJhdG9ycyBuZWVk IGV5ZXMgb24gdGhlbSBmb3Igc3VyZS4gVGhlcmUgd2FzIHNvbWUgZGlmZmVyZW5jZQpiZXR3ZWVu IGl2Yi9oc3cgaW4gcmVuZGVyY29weS4gQnV0IGZvciB0aGUgbnVsbCBzdGF0ZSwgSSBnYXRoZXJl ZCBpdApkb2VzbnQgbWF0dGVyLgoKPj4gKwljYXNlIDg6Cj4+ICsJCVJTX1NFVFVQKHJvX2RhdGEs IDgsIHRydWUpOwo+PiArCQlicmVhazsKPj4gKwlkZWZhdWx0Ogo+PiArCQlyZXR1cm4gLUVOT0VO VDsKPj4gKwl9Cj4+ICsjdW5kZWYgUlNfU0VUVVAKPj4gKwo+PiArCXJldHVybiByZW5kZXJfc3Rh dGVfY29weShzbywgJnJvX2RhdGEpOwo+PiArfQo+PiArCj4+ICtpbnQgaTkxNV9nZW1faW5pdF9y ZW5kZXJfc3RhdGUoc3RydWN0IGludGVsX3JpbmdfYnVmZmVyICpyaW5nKQo+PiArewo+PiArCWNv bnN0IGludCBnZW4gPSBJTlRFTF9JTkZPKHJpbmctPmRldiktPmdlbjsKPj4gKwlzdHJ1Y3QgaTkx NV9yZW5kZXJfc3RhdGUgKnNvOwo+PiArCXUzMiBzZXFubzsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ ICsJaWYgKGdlbiA8IDYpCj4+ICsJCXJldHVybiAwOwo+Cj4gSEFTX0hXX0NPTlRFWFRTCj4gaWNr bGU6ICJOZXZlciBmb3JnZXQgSUxLIGNvbnRleHRzIgoKV2UgaGF2ZSBzdGF0ZXMgb25seSBmb3Ig Pj0gc25iLiBTbyB0aHVzIHRoZSBiYWlsb3V0LgpBbmQgZG9fc3dpdGNoIGlzIG5vdCBjYWxsZWQg d2l0aCBmYWtlIGNvbnRleHRzLgoKPj4gKwo+PiArCXNvID0gcmVuZGVyX3N0YXRlX2FsbG9jKHJp bmctPmRldiwgQkFUQ0hfTUFYX1NJWkUpOwo+PiArCWlmIChJU19FUlIoc28pKQo+PiArCQlyZXR1 cm4gUFRSX0VSUihzbyk7Cj4+ICsKPj4gKwlyZXQgPSByZW5kZXJfc3RhdGVfZ2V0KHNvLCBnZW4p Owo+PiArCWlmIChyZXQpCj4+ICsJCWdvdG8gb3V0Owo+PiArCj4+ICsJcmV0ID0gcmluZy0+ZGlz cGF0Y2hfZXhlY2J1ZmZlcihyaW5nLAo+PiArCQkJCQlpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQo c28tPm9iaiksCj4+ICsJCQkJCXNvLT5sZW4sCj4+ICsJCQkJCUk5MTVfRElTUEFUQ0hfU0VDVVJF KTsKPj4gKwlpZiAocmV0KQo+PiArCQlnb3RvIG91dDsKPj4gKwo+PiArCXJldCA9IGludGVsX3Jp bmdfZmx1c2hfYWxsX2NhY2hlcyhyaW5nKTsKPj4gKwlpZiAocmV0KQo+PiArCQlnb3RvIG91dDsK Pj4gKwo+PiArCXJldCA9IGk5MTVfYWRkX3JlcXVlc3QocmluZywgJnNlcW5vKTsKPj4gKwlpZiAo cmV0KQo+PiArCQlnb3RvIG91dDsKPj4gKwo+PiArCXJldCA9IGk5MTVfd2FpdF9zZXFubyhyaW5n LCBzZXFubyk7Cj4KPiBUaGlzIHdhaXQgaXMgZ29pbmcgdG8gaHVydC4gTm90IHNlZWluZyB3aHkg aXQncyBuZWVkZWQgKHBsdXMgSSBzdGlsbAo+IHJlY29tbWVuZCBteSBpZGVhIG9uIHRoZSB0b3Ap LgoKSSBjb3VsZG4ndCBjb21lIHVwIHdpdGggYW55IGV4cGxhbmF0aW9ucyBlaXRoZXIuIFJlbW92 ZWQgaW4gdjIKClRoYW5rcywKLU1pa2EKCj4+ICtvdXQ6Cj4+ICsJcmVuZGVyX3N0YXRlX2ZyZWUo c28pOwo+PiArCXJldHVybiByZXQ7Cj4+ICt9Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9yZW5kZXJzdGF0ZV9nZW42LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yZW5kZXJzdGF0ZV9nZW42LmgKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXgg MDAwMDAwMC4uNDgwOWYyZgo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JlbmRlcnN0YXRlX2dlbjYuaAo+PiBAQCAtMCwwICsxLDExIEBACj4+ICsj aWZuZGVmIF9fSU5URUxfUkVOREVSU1RBVEVfR0VONgo+PiArI2RlZmluZSBfX0lOVEVMX1JFTkRF UlNUQVRFX0dFTjYKPj4gKwo+PiArc3RhdGljIGNvbnN0IHVpbnQzMl90IGdlbjZfbnVsbF9zdGF0 ZV9yZWxvY3NbXSA9IHsKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCB1aW50MzJfdCBnZW42 X251bGxfc3RhdGVfYmF0Y2hbXSA9IHsKPj4gKwlNSV9CQVRDSF9CVUZGRVJfRU5ELAo+PiArfTsK Pj4gKwo+PiArI2VuZGlmIC8qIF9fSU5URUxfUkVOREVSU1RBVEVfR0VONiAqLwo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVuZGVyc3RhdGVfZ2VuNy5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVuZGVyc3RhdGVfZ2VuNy5oCj4+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjliMTQyMGIKPj4gLS0tIC9kZXYvbnVsbAo+PiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZW5kZXJzdGF0ZV9nZW43LmgKPj4gQEAg LTAsMCArMSwxMSBAQAo+PiArI2lmbmRlZiBfX0lOVEVMX1JFTkRFUlNUQVRFX0dFTjcKPj4gKyNk ZWZpbmUgX19JTlRFTF9SRU5ERVJTVEFURV9HRU43Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCB1aW50 MzJfdCBnZW43X251bGxfc3RhdGVfcmVsb2NzW10gPSB7Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMg Y29uc3QgdWludDMyX3QgZ2VuN19udWxsX3N0YXRlX2JhdGNoW10gPSB7Cj4+ICsJTUlfQkFUQ0hf QlVGRkVSX0VORCwKPj4gK307Cj4+ICsKPj4gKyNlbmRpZiAvKiBfX0lOVEVMX1JFTkRFUlNUQVRF X0dFTjcgKi8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlbmRl cnN0YXRlX2dlbjguaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlbmRlcnN0YXRlX2dl bjguaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwLi5kMzQ5ZGRhCj4+ IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVuZGVy c3RhdGVfZ2VuOC5oCj4+IEBAIC0wLDAgKzEsMTEgQEAKPj4gKyNpZm5kZWYgX19JTlRFTF9SRU5E RVJTVEFURV9HRU44Cj4+ICsjZGVmaW5lIF9fSU5URUxfUkVOREVSU1RBVEVfR0VOOAo+PiArCj4+ ICtzdGF0aWMgY29uc3QgdWludDMyX3QgZ2VuOF9udWxsX3N0YXRlX3JlbG9jc1tdID0gewo+PiAr fTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHVpbnQzMl90IGdlbjhfbnVsbF9zdGF0ZV9iYXRjaFtd ID0gewo+PiArCU1JX0JBVENIX0JVRkZFUl9FTkQsCj4+ICt9Owo+PiArCj4+ICsjZW5kaWYgLyog X19JTlRFTF9SRU5ERVJTVEFURV9HRU44ICovCj4+IC0tIAo+PiAxLjcuOS41Cj4+IAo+PiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBJbnRlbC1nZngg bWFpbGluZyBsaXN0Cj4+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo+Cj4gLS0g Cj4gQmVuIFdpZGF3c2t5LCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=