From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [PATCH 2/3] drm/i915: add render state initialization Date: Mon, 5 May 2014 18:20:05 -0700 Message-ID: <20140506012005.GA18057@bwidawsk.net> References: <1398187184-14919-1-git-send-email-mika.kuoppala@intel.com> <1398187184-14919-3-git-send-email-mika.kuoppala@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.bwidawsk.net (bwidawsk.net [166.78.191.112]) by gabe.freedesktop.org (Postfix) with ESMTP id 382636E039 for ; Mon, 5 May 2014 18:20:20 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1398187184-14919-3-git-send-email-mika.kuoppala@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mika Kuoppala Cc: intel-gfx@lists.freedesktop.org, miku@iki.fi List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBBcHIgMjIsIDIwMTQgYXQgMDg6MTk6NDNQTSArMDMwMCwgTWlrYSBLdW9wcGFsYSB3 cm90ZToKPiBIVyBndXlzIHNheSB0aGF0IGl0IGlzIG5vdCBhIGNvb2wgaWRlYSB0byBsZXQgZGV2 aWNlCj4gZ28gaW50byByYzYgd2l0aG91dCBwcm9wZXIgM2QgcGlwZWxpbmUgc3RhdGUuCj4gCj4g Rm9yIGVhY2ggbmV3IHVuaW5pdGlhbGl6ZWQgY29udGV4dCwgZ2VuZXJhdGUgYQo+IHZhbGlkIG51 bGwgcmVuZGVyIHN0YXRlIHRvIGJlIHJ1biBvbiBjb250ZXh0Cj4gY3JlYXRpb24uCj4gCj4gVGhp cyBwYXRjaCBpbnRyb2R1Y2VzIGEgc2tlbGV0b24gd2l0aCBlbXR5IHN0YXRlcy4KPiAKPiBTaWdu ZWQtb2ZmLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGludGVsLmNvbT4KPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAgMSAr Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAgIDIg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAgICAgfCAgICA3 ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVuZGVyX3N0YXRlLmMgIHwgIDIy MiArKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JlbmRlcnN0YXRlX2dlbjYuaCB8ICAgMTEgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmVuZGVyc3RhdGVfZ2VuNy5oIHwgICAxMSArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yZW5kZXJzdGF0ZV9nZW44LmggfCAgIDExICsrCj4gIDcgZmlsZXMgY2hhbmdlZCwgMjY1 IGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX3JlbmRlcl9zdGF0ZS5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yZW5kZXJzdGF0ZV9nZW42LmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlbmRlcnN0YXRlX2dlbjcuaAo+ICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVuZGVyc3RhdGVfZ2VuOC5o Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCBiMTQ0NWI3Li5iNWQ0MDI5IDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtMTgsNiArMTgsNyBAQCBpOTE1LSQoQ09ORklHX0RFQlVH X0ZTKSArPSBpOTE1X2RlYnVnZnMubwo+ICAjIEdFTSBjb2RlCj4gIGk5MTUteSArPSBpOTE1X2Nt ZF9wYXJzZXIubyBcCj4gIAkgIGk5MTVfZ2VtX2NvbnRleHQubyBcCj4gKwkgIGk5MTVfZ2VtX3Jl bmRlcl9zdGF0ZS5vIFwKPiAgCSAgaTkxNV9nZW1fZGVidWcubyBcCj4gIAkgIGk5MTVfZ2VtX2Rt YWJ1Zi5vIFwKPiAgCSAgaTkxNV9nZW1fZXZpY3QubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gaW5kZXggNDNiMDIyYy4uZjZhZTJlZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ IEBAIC0yMzMwLDYgKzIzMzAsOCBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgaW50IGk5MTVfZ2VtX2NvbnRl eHRfZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ICAJ CQkJICAgc3RydWN0IGRybV9maWxlICpmaWxlKTsKPiAgCj4gKy8qIGk5MTVfZ2VtX3JlbmRlcl9z dGF0ZS5jICovCj4gK2ludCBpOTE1X2dlbV9pbml0X3JlbmRlcl9zdGF0ZShzdHJ1Y3QgaW50ZWxf cmluZ19idWZmZXIgKnJpbmcpOwo+ICAvKiBpOTE1X2dlbV9ldmljdC5jICovCj4gIGludCBfX211 c3RfY2hlY2sgaTkxNV9nZW1fZXZpY3Rfc29tZXRoaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gIAkJCQkJICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggMzBiMzU1YS4uZDY0OGQ0ZCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtNzQ2LDYgKzc0Niwx MyBAQCBzdGF0aWMgaW50IGRvX3N3aXRjaChzdHJ1Y3QgaW50ZWxfcmluZ19idWZmZXIgKnJpbmcs Cj4gIAkJLyogb2JqIGlzIGtlcHQgYWxpdmUgdW50aWwgdGhlIG5leHQgcmVxdWVzdCBieSBpdHMg YWN0aXZlIHJlZiAqLwo+ICAJCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKGZyb20tPm9iaik7 Cj4gIAkJaTkxNV9nZW1fY29udGV4dF91bnJlZmVyZW5jZShmcm9tKTsKPiArCX0gZWxzZSB7Cj4g KwkJaWYgKHJpbmctPmlkID09IFJDUyAmJiB0by0+aXNfaW5pdGlhbGl6ZWQgPT0gZmFsc2UpIHsK PiArCj4gKwkJCXJldCA9IGk5MTVfZ2VtX2luaXRfcmVuZGVyX3N0YXRlKHJpbmcpOwo+ICsJCQlp ZiAocmV0KQo+ICsJCQkJRFJNX0VSUk9SKCJpbml0IHJlbmRlciBzdGF0ZTogJWRcbiIsIHJldCk7 Cj4gKwkJfQoKVGhlIHdheSBJIHRob3VnaHQgd2UnZCBkbyB0aGlzIHdhcyB0byBlbWl0IHRoZSBz dGF0ZSBvbmNlIGZvciB0aGUKZGVmYXVsdCBjb250ZXh0LCBhbmQgY29weSB0aG9zZSBwYWdlcyB0 byB0aGUgQk8gb2YgdGhlIG5ldyBjb250ZXh0LgoKPiAgCX0KPiAgCj4gIAl0by0+aXNfaW5pdGlh bGl6ZWQgPSB0cnVlOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9yZW5kZXJfc3RhdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRlcl9z dGF0ZS5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi40MDlmOTliCj4g LS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlbmRl cl9zdGF0ZS5jCj4gQEAgLTAsMCArMSwyMjIgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIw MTQgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoK PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBF VkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiAr ICogQXV0aG9yczoKPiArICogICAgTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBpbnRlbC5j b20+Cj4gKyAqCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImk5MTVfZHJ2LmgiCj4gKwo+ICsjaW5j bHVkZSAiaW50ZWxfcmVuZGVyc3RhdGVfZ2VuNi5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfcmVuZGVy c3RhdGVfZ2VuNy5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfcmVuZGVyc3RhdGVfZ2VuOC5oIgo+ICsK PiArI2RlZmluZSBCQVRDSF9NQVhfU0laRSA0MDk2Cj4gKwo+ICtzdHJ1Y3QgaTkxNV9yZW5kZXJf c3RhdGUgewo+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiArCXVuc2lnbmVk IGxvbmcgZ2d0dF9vZmZzZXQ7Cj4gKwl2b2lkICpiYXRjaDsKPiArCXUzMiBzaXplOwo+ICsJdTMy IGxlbjsKPiArfTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgaTkxNV9yZW5kZXJfc3RhdGUgKgo+ICty ZW5kZXJfc3RhdGVfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHNp emUpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3JlbmRlcl9zdGF0ZSAqc287Cj4gKwlpbnQgcmV0Owo+ ICsKPiArCXNvID0ga3phbGxvYyhzaXplb2YoKnNvKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXNv KQo+ICsJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwo+ICsKPiArCXNvLT5zaXplID0gQUxJR04o c2l6ZSwgNDA5Nik7Cj4gKwo+ICsJc28tPm9iaiA9IGk5MTVfZ2VtX2FsbG9jX29iamVjdChkZXYs IHNvLT5zaXplKTsKPiArCWlmIChzby0+b2JqID09IE5VTEwpIHsKPiArCQlyZXQgPSAtRU5PTUVN Owo+ICsJCWdvdG8gZnJlZTsKPiArCX0KPiArCj4gKwlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9w aW4oc28tPm9iaiwgNDA5NiwgMCk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZnJlZV9nZW07CgpV c2luZyBkaXNwYXRjaCB0aGUgd2F5IHlvdSBkbyBiZWxvdywgd2UnbGwgYWN0dWFsbHkgYmUgZXhl Y3V0aW5nIG91dCBvZgp0aGUgUFBHVFQsIGFuZCBub3QgdGhlIGdsb2JhbC4gV2hpbGUgdGhpcyBt YWtlcyBubyBkaWZmZXJlbmNlIG9uIHRoZQpjdXJyZW50IGNvZGUsIGl0IGRvZXMgbWFrZSBhIGRp ZmZlcmVuY2UgZm9yIHNvbWUgb2YgbXkgcGxhbnMuIEkgZG9uJ3QKc2VlIGEgY2xlYW4gd2F5IHRv IGZpeCB0aGlzIHdpdGggdGhlIGN1cnJlbnQgY29kZSBiYXNlLCBJIGFtIGp1c3QKY29tcGxhaW5p bmcuCgo+ICsKPiArCXNvLT5iYXRjaCA9IGk5MTVfZ2VtX3ZtYXBfb2JqKHNvLT5vYmopOwo+ICsJ aWYgKCFzby0+YmF0Y2gpIHsKPiArCQlyZXQgPSAtRU5PTUVNOwo+ICsJCWdvdG8gdW5waW47Cj4g Kwl9Cj4gKwo+ICsJc28tPmdndHRfb2Zmc2V0ID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KHNv LT5vYmopOwo+ICsKPiArCXJldHVybiBzbzsKPiArdW5waW46Cj4gKwlpOTE1X2dlbV9vYmplY3Rf Z2d0dF91bnBpbihzby0+b2JqKTsKPiArZnJlZV9nZW06Cj4gKwlkcm1fZ2VtX29iamVjdF91bnJl ZmVyZW5jZSgmc28tPm9iai0+YmFzZSk7Cj4gK2ZyZWU6Cj4gKwlrZnJlZShzbyk7Cj4gKwlyZXR1 cm4gRVJSX1BUUihyZXQpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCByZW5kZXJfc3RhdGVfZnJl ZShzdHJ1Y3QgaTkxNV9yZW5kZXJfc3RhdGUgKnNvKQo+ICt7Cj4gKwl2dW5tYXAoc28tPmJhdGNo KTsKPiArCWk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGluKHNvLT5vYmopOwo+ICsJZHJtX2dlbV9v YmplY3RfdW5yZWZlcmVuY2UoJnNvLT5vYmotPmJhc2UpOwo+ICsJa2ZyZWUoc28pOwo+ICt9Cj4g Kwo+ICtzdHJ1Y3QgcmVuZGVyX3N0YXRlX3JvX2RhdGEgewo+ICsJY29uc3QgdTMyICpiYXRjaDsK PiArCXVuc2lnbmVkIGludCBiYXRjaF9pdGVtczsKPiArCWNvbnN0IHUzMiAqcmVsb2M7Cj4gKwl1 bnNpZ25lZCBpbnQgcmVsb2NfaXRlbXM7Cj4gKwlib29sIHJlbG9jXzY0Yml0Owo+ICt9Owo+ICsK PiArc3RhdGljIGludCByZW5kZXJfc3RhdGVfY29weShzdHJ1Y3QgaTkxNV9yZW5kZXJfc3RhdGUg KnNvLAo+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCByZW5kZXJfc3RhdGVfcm9fZGF0YSAqc291cmNl KQo+ICt7Cj4gKwljb25zdCB1NjQgZ29mZnNldCA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChz by0+b2JqKTsKPiArCWNvbnN0IHVuc2lnbmVkIGludCBudW1fcmVsb2NzID0gc291cmNlLT5yZWxv Y19pdGVtczsKPiArCWludCByZWxvY19pbmRleCA9IDA7Cj4gKwl1MzIgKmQgPSAodWludDMyX3Qg Kilzby0+YmF0Y2g7Cj4gKwl1bnNpZ25lZCBpbnQgaSA9IDA7Cj4gKwo+ICsJaWYgKHNvdXJjZS0+ YmF0Y2hfaXRlbXMgKiBzaXplb2YoKnNvdXJjZS0+YmF0Y2gpID4gc28tPnNpemUpCj4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4gKwo+ICsJd2hpbGUgKGkgPCBzb3VyY2UtPmJhdGNoX2l0ZW1zKSB7Cj4g KwkJdTMyIHMgPSBzb3VyY2UtPmJhdGNoW2ldOwo+ICsKPiArCQlpZiAocmVsb2NfaW5kZXggPCBu dW1fcmVsb2NzICYmCj4gKwkJICAgIGkgKiA0ICA9PSBzb3VyY2UtPnJlbG9jW3JlbG9jX2luZGV4 XSkgewo+ICsKPiArCQkJcyArPSBnb2Zmc2V0ICYgMHhmZmZmZmZmZjsKPiArCj4gKwkJCS8qIFdl IGtlZXAgYmF0Y2ggb2Zmc2V0cyBtYXggMzJiaXQgKi8KPiArCQkJaWYgKHNvdXJjZS0+cmVsb2Nf NjRiaXQpIHsKPiArCQkJCWlmIChpICsgMSA+PSBzb3VyY2UtPmJhdGNoX2l0ZW1zIHx8Cj4gKwkJ CQkgICAgc291cmNlLT5iYXRjaFtpICsgMV0gIT0gMCkKPiArCQkJCQlyZXR1cm4gLUVJTlZBTDsK PiArCj4gKwkJCQlkW2ldID0gczsKPiArCQkJCWkrKzsKPiArCQkJCXMgPSAoZ29mZnNldCAmIDB4 ZmZmZmZmZmYwMDAwMDAwMHVsbCkgPj4gMzI7Cj4gKwkJCX0KPiArCj4gKwkJCXJlbG9jX2luZGV4 Kys7Cj4gKwkJfQo+ICsKPiArCQlkW2ldID0gczsKPiArCQlpKys7Cj4gKwl9Cj4gKwo+ICsJaWYg KG51bV9yZWxvY3MgIT0gcmVsb2NfaW5kZXgpIHsKPiArCQlEUk1fRVJST1IoIm5vdCBhbGwgcmVs b2NzIHJlc29sdmVkLCAlZCBvdXQgb2YgJWRcbiIsCj4gKwkJCSAgcmVsb2NfaW5kZXgsIG51bV9y ZWxvY3MpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXNvLT5sZW4gPSBzb3Vy Y2UtPmJhdGNoX2l0ZW1zICogc2l6ZW9mKCpzb3VyY2UtPmJhdGNoKTsKPiArCj4gKwlyZXR1cm4g MDsKPiArfQo+ICsKPiArc3RhdGljIGludCByZW5kZXJfc3RhdGVfZ2V0KHN0cnVjdCBpOTE1X3Jl bmRlcl9zdGF0ZSAqc28sIGludCBnZW4pCj4gK3sKPiArCXN0cnVjdCByZW5kZXJfc3RhdGVfcm9f ZGF0YSByb19kYXRhOwo+ICsKPiArI2RlZmluZSBSU19TRVRVUChfZCwgX2csIF9yKSB7CQkJCQkJ XAo+ICsJCWlmICghc2l6ZW9mKGdlbiAjIyBfZyAjIyBfbnVsbF9zdGF0ZV9iYXRjaCkpCQlcCj4g KwkJCXJldHVybiAtRUlOVkFMOwkJCQkJXAo+ICsJCWlmIChzaXplb2YoZ2VuICMjIF9nICMjIF9u dWxsX3N0YXRlX2JhdGNoKSAmIDB4MykJXAo+ICsJCQlyZXR1cm4gLUVJTlZBTDsJCQkJCVwKPiAr CQlpZiAoc2l6ZW9mKGdlbiAjIyBfZyAjIyBfbnVsbF9zdGF0ZV9yZWxvY3MpICYgMHgzKQlcCj4g KwkJCXJldHVybiAtRUlOVkFMOwkJCQkJXAo+ICsJCV9kLmJhdGNoID0gZ2VuICMjIF9nICMjIF9u dWxsX3N0YXRlX2JhdGNoOwkJXAo+ICsJCV9kLmJhdGNoX2l0ZW1zID0gc2l6ZW9mKGdlbiAjI19n ICMjIF9udWxsX3N0YXRlX2JhdGNoKSAvIDQ7IFwKPiArCQlfZC5yZWxvYyA9IGdlbiAjIyBfZyAj IyBfbnVsbF9zdGF0ZV9yZWxvY3M7CQlcCj4gKwkJX2QucmVsb2NfaXRlbXMgPSBzaXplb2YoZ2Vu ICMjIF9nICMjIF9udWxsX3N0YXRlX3JlbG9jcykgLyA0OyBcCj4gKwkJX2QucmVsb2NfNjRiaXQg PSBfcjsJCQkJCVwKPiArCX0KPiArCj4gKwlzd2l0Y2ggKGdlbikgewo+ICsJY2FzZSA2Ogo+ICsJ CVJTX1NFVFVQKHJvX2RhdGEsIDYsIGZhbHNlKTsKPiArCQlicmVhazsKPiArCWNhc2UgNzoKPiAr CQlSU19TRVRVUChyb19kYXRhLCA3LCBmYWxzZSk7Cj4gKwkJYnJlYWs7CgpJJ20gYSBiaXQgc3Vy cHJpc2VkIHdlIGhhdmUgbm8gZGlmZmVyZW5jZXMgZm9yIEhTVy9CWVQvSVZCLgoKPiArCWNhc2Ug ODoKPiArCQlSU19TRVRVUChyb19kYXRhLCA4LCB0cnVlKTsKPiArCQlicmVhazsKPiArCWRlZmF1 bHQ6Cj4gKwkJcmV0dXJuIC1FTk9FTlQ7Cj4gKwl9Cj4gKyN1bmRlZiBSU19TRVRVUAo+ICsKPiAr CXJldHVybiByZW5kZXJfc3RhdGVfY29weShzbywgJnJvX2RhdGEpOwo+ICt9Cj4gKwo+ICtpbnQg aTkxNV9nZW1faW5pdF9yZW5kZXJfc3RhdGUoc3RydWN0IGludGVsX3JpbmdfYnVmZmVyICpyaW5n KQo+ICt7Cj4gKwljb25zdCBpbnQgZ2VuID0gSU5URUxfSU5GTyhyaW5nLT5kZXYpLT5nZW47Cj4g KwlzdHJ1Y3QgaTkxNV9yZW5kZXJfc3RhdGUgKnNvOwo+ICsJdTMyIHNlcW5vOwo+ICsJaW50IHJl dDsKPiArCj4gKwlpZiAoZ2VuIDwgNikKPiArCQlyZXR1cm4gMDsKCkhBU19IV19DT05URVhUUwpp Y2tsZTogIk5ldmVyIGZvcmdldCBJTEsgY29udGV4dHMiCgo+ICsKPiArCXNvID0gcmVuZGVyX3N0 YXRlX2FsbG9jKHJpbmctPmRldiwgQkFUQ0hfTUFYX1NJWkUpOwo+ICsJaWYgKElTX0VSUihzbykp Cj4gKwkJcmV0dXJuIFBUUl9FUlIoc28pOwo+ICsKPiArCXJldCA9IHJlbmRlcl9zdGF0ZV9nZXQo c28sIGdlbik7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCXJldCA9IHJpbmct PmRpc3BhdGNoX2V4ZWNidWZmZXIocmluZywKPiArCQkJCQlpOTE1X2dlbV9vYmpfZ2d0dF9vZmZz ZXQoc28tPm9iaiksCj4gKwkJCQkJc28tPmxlbiwKPiArCQkJCQlJOTE1X0RJU1BBVENIX1NFQ1VS RSk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gb3V0Owo+ICsKPiArCXJldCA9IGludGVsX3Jpbmdf Zmx1c2hfYWxsX2NhY2hlcyhyaW5nKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ ICsJcmV0ID0gaTkxNV9hZGRfcmVxdWVzdChyaW5nLCAmc2Vxbm8pOwo+ICsJaWYgKHJldCkKPiAr CQlnb3RvIG91dDsKPiArCj4gKwlyZXQgPSBpOTE1X3dhaXRfc2Vxbm8ocmluZywgc2Vxbm8pOwoK VGhpcyB3YWl0IGlzIGdvaW5nIHRvIGh1cnQuIE5vdCBzZWVpbmcgd2h5IGl0J3MgbmVlZGVkIChw bHVzIEkgc3RpbGwKcmVjb21tZW5kIG15IGlkZWEgb24gdGhlIHRvcCkuCgo+ICtvdXQ6Cj4gKwly ZW5kZXJfc3RhdGVfZnJlZShzbyk7Cj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlbmRlcnN0YXRlX2dlbjYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3JlbmRlcnN0YXRlX2dlbjYuaAo+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0Cj4gaW5kZXggMDAwMDAwMC4uNDgwOWYyZgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZW5kZXJzdGF0ZV9nZW42LmgKPiBAQCAtMCwwICsxLDEx IEBACj4gKyNpZm5kZWYgX19JTlRFTF9SRU5ERVJTVEFURV9HRU42Cj4gKyNkZWZpbmUgX19JTlRF TF9SRU5ERVJTVEFURV9HRU42Cj4gKwo+ICtzdGF0aWMgY29uc3QgdWludDMyX3QgZ2VuNl9udWxs X3N0YXRlX3JlbG9jc1tdID0gewo+ICt9Owo+ICsKPiArc3RhdGljIGNvbnN0IHVpbnQzMl90IGdl bjZfbnVsbF9zdGF0ZV9iYXRjaFtdID0gewo+ICsJTUlfQkFUQ0hfQlVGRkVSX0VORCwKPiArfTsK PiArCj4gKyNlbmRpZiAvKiBfX0lOVEVMX1JFTkRFUlNUQVRFX0dFTjYgKi8KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVuZGVyc3RhdGVfZ2VuNy5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVuZGVyc3RhdGVfZ2VuNy5oCj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQKPiBpbmRleCAwMDAwMDAwLi45YjE0MjBiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlbmRlcnN0YXRlX2dlbjcuaAo+IEBAIC0wLDAgKzEs MTEgQEAKPiArI2lmbmRlZiBfX0lOVEVMX1JFTkRFUlNUQVRFX0dFTjcKPiArI2RlZmluZSBfX0lO VEVMX1JFTkRFUlNUQVRFX0dFTjcKPiArCj4gK3N0YXRpYyBjb25zdCB1aW50MzJfdCBnZW43X251 bGxfc3RhdGVfcmVsb2NzW10gPSB7Cj4gK307Cj4gKwo+ICtzdGF0aWMgY29uc3QgdWludDMyX3Qg Z2VuN19udWxsX3N0YXRlX2JhdGNoW10gPSB7Cj4gKwlNSV9CQVRDSF9CVUZGRVJfRU5ELAo+ICt9 Owo+ICsKPiArI2VuZGlmIC8qIF9fSU5URUxfUkVOREVSU1RBVEVfR0VONyAqLwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZW5kZXJzdGF0ZV9nZW44LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZW5kZXJzdGF0ZV9nZW44LmgKPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmQzNDlkZGEKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVuZGVyc3RhdGVfZ2VuOC5oCj4gQEAgLTAsMCAr MSwxMSBAQAo+ICsjaWZuZGVmIF9fSU5URUxfUkVOREVSU1RBVEVfR0VOOAo+ICsjZGVmaW5lIF9f SU5URUxfUkVOREVSU1RBVEVfR0VOOAo+ICsKPiArc3RhdGljIGNvbnN0IHVpbnQzMl90IGdlbjhf bnVsbF9zdGF0ZV9yZWxvY3NbXSA9IHsKPiArfTsKPiArCj4gK3N0YXRpYyBjb25zdCB1aW50MzJf dCBnZW44X251bGxfc3RhdGVfYmF0Y2hbXSA9IHsKPiArCU1JX0JBVENIX0JVRkZFUl9FTkQsCj4g K307Cj4gKwo+ICsjZW5kaWYgLyogX19JTlRFTF9SRU5ERVJTVEFURV9HRU44ICovCj4gLS0gCj4g MS43LjkuNQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4CgotLSAKQmVuIFdpZGF3c2t5LCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENl bnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=