From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Widawsky Subject: Re: [PATCH 5/6] drm/i915: Do remaps for all contexts Date: Wed, 18 Sep 2013 18:17:30 -0700 Message-ID: <20130919011730.GB8226@intel.com> References: <1379477575-2164-1-git-send-email-benjamin.widawsky@intel.com> <1379477575-2164-5-git-send-email-benjamin.widawsky@intel.com> <20130918074849.GB4531@intel.com> <20130919011442.GA8226@bwidawsk.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pd0-f170.google.com (mail-pd0-f170.google.com [209.85.192.170]) by gabe.freedesktop.org (Postfix) with ESMTP id 0BB37E66D9 for ; Wed, 18 Sep 2013 18:17:34 -0700 (PDT) Received: by mail-pd0-f170.google.com with SMTP id x10so7829373pdj.1 for ; Wed, 18 Sep 2013 18:17:33 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20130919011442.GA8226@bwidawsk.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: Ben Widawsky Cc: Intel GFX , Bryan Bell List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMTgsIDIwMTMgYXQgMDY6MTQ6NDJQTSAtMDcwMCwgQmVuIFdpZGF3c2t5IHdy b3RlOgo+IE9uIFdlZCwgU2VwIDE4LCAyMDEzIGF0IDEwOjQ4OjQ5QU0gKzAzMDAsIFZpbGxlIFN5 cmrDpGzDpCB3cm90ZToKPiA+IE9uIFR1ZSwgU2VwIDE3LCAyMDEzIGF0IDA5OjEyOjQ2UE0gLTA3 MDAsIEJlbiBXaWRhd3NreSB3cm90ZToKPiA+ID4gT24gYm90aCBJdnlicmlkZ2UgYW5kIEhhc3dl bGwsIHJvdyByZW1hcHBpbmcgaW5mb3JtYXRpb24gaXMgc2F2ZWQgYW5kCj4gPiA+IHJlc3RvcmVk IHdpdGggY29udGV4dC4gVGhpcyBtZWFucywgd2UgbmV2ZXIgYWN0dWFsbHkgcHJvcGVybHkgc3Vw cG9ydGVkCj4gPiA+IHRoZSBsMyByZW1hcHBpbmcgYmVjYXVzZSBvdXIgc3lzZnMgaW50ZXJmYWNl IGlzIGFzeW5jaHJvbm91cyAoYW5kIG5vdAo+ID4gPiB0aWVkIHRvIGFueSBjb250ZXh0KSwgYW5k IHRoZSBrbm93biBmYXVsdHkgSFcgd291bGQgYmUgcmV1c2VkIGJ5IHRoZQo+ID4gPiBuZXh0IGNv bnRleHQgdG8gcnVuLgo+ID4gPiAKPiA+ID4gTm90IHRoYXQgZHVlIHRvIHRoZSBhc3luY2hyb25v dXMgbmF0dXJlIG9mIHRoZSBzeXNmcyBlbnRyeSwgdGhlcmUgaXMgbm8KPiA+ID4gcG9pbnQgbW9k aWZ5aW5nIHRoZSByZWdpc3RlcnMgZm9yIHRoZSBleGlzdGluZyBjb250ZXh0LiBJbnN0ZWFkIHdl IHNldCBhCj4gPiA+IGZsYWcgZm9yIGFsbCBjb250ZXh0cyB0byBsb2FkIHRoZSBjb3JyZWN0IHJl bWFwcGluZyBpbmZvcm1hdGlvbiBvbiB0aGUKPiA+ID4gbmV4dCBydW4uIEludGVyZXN0ZWQgY2xp ZW50cyBjYW4gdXNlIGRlYnVnZnMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90Cj4gPiA+IHRo ZSByb3cgaGFzIGJlZW4gcmVtYXBwZWQuCj4gPiA+IAo+ID4gPiBPbmUgY291bGQgcHJvcG9zZSBh dCB0aGlzIHBvaW50IHRoYXQgd2UganVzdCBkbyB0aGUgcmVtYXBwaW5nIGluIHRoZQo+ID4gPiBr ZXJuZWwuIEkgZ3Vlc3Mgc2luY2Ugd2UgaGF2ZSB0byBtYWludGFpbiB0aGUgc3lzZnMgaW50ZXJm YWNlIGFueXdheSwKPiA+ID4gSSdtIG5vdCBzdXJlIGhvdyB1c2VmdWwgaXQgaXMsIGFuZCBJIGRv IGxpa2Uga2VlcGluZyB0aGUgcG9saWN5IGluCj4gPiA+IHVzZXJzcGFjZTsgKGl0IHdhc24ndCBt eSBvcmlnaW5hbCBkZWNpc2lvbiB0byBtYWtlIHRoZQo+ID4gPiBpbnRlcmZhY2UgdGhlIHdheSBp dCBpcywgc28gSSdtIG5vdCBhdHRhY2hlZCkuCj4gPiA+IAo+ID4gPiB2MjogRm9yY2UgYSBjb250 ZXh0IHN3aXRjaCB3aGVuIHdlIGhhdmUgYSByZW1hcCBvbiB0aGUgbmV4dCBzd2l0Y2guCj4gPiA+ IChWaWxsZSkKPiA+ID4gRG9uJ3QgbGV0IHVzZXJzcGFjZSB1c2UgdGhlIGludGVyZmFjZSB3aXRo IGRpc2FibGVkIGNvbnRleHRzLgo+ID4gPiAKPiA+ID4gU2lnbmVkLW9mZi1ieTogQmVuIFdpZGF3 c2t5IDxiZW5AYndpZGF3c2submV0Pgo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jICAgICB8ICA4ICsrKysrKysKPiA+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAxICsKPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDIyICsrKysrKysrKysrKysrKystLS0tCj4gPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgICAgICAgfCAzNyArKysrKysrKysrKysr LS0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ID4gIDQgZmlsZXMgY2hhbmdlZCwgNDEgaW5zZXJ0aW9u cygrKSwgMjcgZGVsZXRpb25zKC0pCj4gPiA+IAo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYwo+ID4gPiBpbmRleCBhZGEwOTUwLi44MGJlZDY5IDEwMDY0NAo+ID4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ID4gPiBAQCAtMTQ1LDYgKzE0NSwxMyBAQCBkZXNj cmliZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQo+ID4gPiAgCQlzZXFfcHJpbnRmKG0sICIgKCVzKSIsIG9iai0+cmluZy0+bmFtZSk7Cj4g PiA+ICB9Cj4gPiA+ICAKPiA+ID4gK3N0YXRpYyB2b2lkIGRlc2NyaWJlX2N0eChzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHN0cnVjdCBpOTE1X2h3X2NvbnRleHQgKmN0eCkKPiA+ID4gK3sKPiA+ID4gKwlz ZXFfcHV0YyhtLCBjdHgtPmlzX2luaXRpYWxpemVkID8gJ0knIDogJ2knKTsKPiA+ID4gKwlzZXFf cHV0YyhtLCBjdHgtPnJlbWFwX3NsaWNlID8gJ1InIDogJ3InKTsKPiA+ID4gKwlzZXFfcHV0Yyht LCAnICcpOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICBzdGF0aWMgaW50IGk5MTVfZ2VtX29iamVj dF9saXN0X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ID4gPiAgewo+ID4g PiAgCXN0cnVjdCBkcm1faW5mb19ub2RlICpub2RlID0gKHN0cnVjdCBkcm1faW5mb19ub2RlICop IG0tPnByaXZhdGU7Cj4gPiA+IEBAIC0xNDYzLDYgKzE0NzAsNyBAQCBzdGF0aWMgaW50IGk5MTVf Y29udGV4dF9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCj4gPiA+ICAK PiA+ID4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KGN0eCwgJmRldl9wcml2LT5jb250ZXh0X2xpc3Qs IGxpbmspIHsKPiA+ID4gIAkJc2VxX3B1dHMobSwgIkhXIGNvbnRleHQgIik7Cj4gPiA+ICsJCWRl c2NyaWJlX2N0eChtLCBjdHgpOwo+ID4gPiAgCQlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2 LCBpKQo+ID4gPiAgCQkJaWYgKHJpbmctPmRlZmF1bHRfY29udGV4dCA9PSBjdHgpCj4gPiA+ICAJ CQkJc2VxX3ByaW50ZihtLCAiKGRlZmF1bHQgY29udGV4dCAlcykgIiwgcmluZy0+bmFtZSk7Cj4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ID4gPiBpbmRleCAxNzk1OTI3Li4wMTVkZjUyIDEw MDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gQEAgLTYwMSw2ICs2MDEs NyBAQCBzdHJ1Y3QgaTkxNV9od19jb250ZXh0IHsKPiA+ID4gIAlzdHJ1Y3Qga3JlZiByZWY7Cj4g PiA+ICAJaW50IGlkOwo+ID4gPiAgCWJvb2wgaXNfaW5pdGlhbGl6ZWQ7Cj4gPiA+ICsJdWludDhf dCByZW1hcF9zbGljZTsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxl X3ByaXY7Cj4gPiA+ICAJc3RydWN0IGludGVsX3JpbmdfYnVmZmVyICpyaW5nOwo+ID4gPiAgCXN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7Cj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMKPiA+ID4gaW5kZXggMmJiZGNlOC4uN2UxMzhjYyAxMDA2NDQKPiA+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ID4gPiBAQCAtMTQw LDcgKzE0MCw3IEBAIGNyZWF0ZV9od19jb250ZXh0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4g PiA+ICB7Cj4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsKPiA+ID4gIAlzdHJ1Y3QgaTkxNV9od19jb250ZXh0ICpjdHg7Cj4gPiA+IC0J aW50IHJldDsKPiA+ID4gKwlpbnQgcmV0LCBpOwo+ID4gPiAgCj4gPiA+ICAJY3R4ID0ga3phbGxv YyhzaXplb2YoKmN0eCksIEdGUF9LRVJORUwpOwo+ID4gPiAgCWlmIChjdHggPT0gTlVMTCkKPiA+ ID4gQEAgLTE4MSw2ICsxODEsOCBAQCBjcmVhdGVfaHdfY29udGV4dChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ID4gPiAgCj4gPiA+ICAJY3R4LT5maWxlX3ByaXYgPSBmaWxlX3ByaXY7Cj4gPiA+ ICAJY3R4LT5pZCA9IHJldDsKPiA+ID4gKwlmb3IgKGkgPSAwOyBpIDwgTlVNX0wzX1NMSUNFUyhk ZXYpOyBpKyspCj4gPiA+ICsJCWN0eC0+cmVtYXBfc2xpY2UgfD0gMSA8PCAxOwo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCj4gPiAKPiA+IFN0aWxsIGJyb2tl bi4KPiAKPiBPciBtYXliZSBJIHdhbnRlZCBpdCB0byBhbHdheXMgYmUgdGhlIHNlY29uZCBzbGlj ZSEKPiAKPiA+IAo+ID4gPiAgCj4gPiA+ICAJcmV0dXJuIGN0eDsKPiA+ID4gIAo+ID4gPiBAQCAt Mzk2LDExICszOTgsMTEgQEAgc3RhdGljIGludCBkb19zd2l0Y2goc3RydWN0IGk5MTVfaHdfY29u dGV4dCAqdG8pCj4gPiA+ICAJc3RydWN0IGludGVsX3JpbmdfYnVmZmVyICpyaW5nID0gdG8tPnJp bmc7Cj4gPiA+ICAJc3RydWN0IGk5MTVfaHdfY29udGV4dCAqZnJvbSA9IHJpbmctPmxhc3RfY29u dGV4dDsKPiA+ID4gIAl1MzIgaHdfZmxhZ3MgPSAwOwo+ID4gPiAtCWludCByZXQ7Cj4gPiA+ICsJ aW50IHJldCwgaTsKPiA+ID4gIAo+ID4gPiAgCUJVR19PTihmcm9tICE9IE5VTEwgJiYgZnJvbS0+ b2JqICE9IE5VTEwgJiYgZnJvbS0+b2JqLT5waW5fY291bnQgPT0gMCk7Cj4gPiA+ICAKPiA+ID4g LQlpZiAoZnJvbSA9PSB0bykKPiA+ID4gKwlpZiAoZnJvbSA9PSB0byAmJiAhdG8tPnJlbWFwX3Ns aWNlKQo+ID4gPiAgCQlyZXR1cm4gMDsKPiA+ID4gIAo+ID4gPiAgCXJldCA9IGk5MTVfZ2VtX29i al9nZ3R0X3Bpbih0by0+b2JqLCBDT05URVhUX0FMSUdOLCBmYWxzZSwgZmFsc2UpOwo+ID4gPiBA QCAtNDIzLDcgKzQyNSw3IEBAIHN0YXRpYyBpbnQgZG9fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X2Nv bnRleHQgKnRvKQo+ID4gPiAgCj4gPiA+ICAJaWYgKCF0by0+aXNfaW5pdGlhbGl6ZWQgfHwgaXNf ZGVmYXVsdF9jb250ZXh0KHRvKSkKPiA+ID4gIAkJaHdfZmxhZ3MgfD0gTUlfUkVTVE9SRV9JTkhJ QklUOwo+ID4gPiAtCWVsc2UgaWYgKFdBUk5fT05fT05DRShmcm9tID09IHRvKSkgLyogbm90IHll dCBleHBlY3RlZCAqLwo+ID4gPiArCWVsc2UgaWYgKGZyb20gPT0gdG8pCj4gPiA+ICAJCWh3X2Zs YWdzIHw9IE1JX0ZPUkNFX1JFU1RPUkU7Cj4gPiAKPiA+IEhtbS4gV2h5IGRvIHdlIG5lZWQgdG8g cmVzdG9yZSBhY3R1YWxseT8gQ291bGQganVzdCBsZWF2ZSBNSV9TRVRfQ09OVEVYVAo+ID4gdG8g YmUgZWZmZWN0aXZlbHkgYSBub3AgSSB0aGluay4KPiAKPiBJIGRvbid0IHRoaW5rIHNvLiBZb3Ug bmVlZCBpdCB0byByZXN0b3JlIHRoZSByZWdpc3Rlciwgd2hpY2ggSSB0aGluayBpdAo+IHdvbid0 IGRvIHVubGVzcyB5b3UgaXNzdWUgYSBmb3JjZSByZXN0b3JlLCBJIGFtIGp1c3QgZ3Vlc3Npbmcu Cj4gCgpJIHNob3VsZCByZWFsbHkgdGhpbmsgYSBiaXQgYmVmb3JlIEkgdHlwZS4gVGhhdCBpc24n dCByaWdodCAtIHdoZW4gSQp3cm90ZSB0aGlzLCBJIHdhcyBzdGlsbCB0aGlua2luZyB3ZSB3ZXJl IHVzaW5nIE1NSU8sIHdoaWNoIHdlJ3JlIG5vdC4KCkluIG90aGVyIHdvcmRzLCB5b3UncmUgcmln aHQuIEFsbCAzIGZpeGVzIGNvbWluZyByaWdodCB1cC4KCj4gPiAKPiA+ID4gIAo+ID4gPiAgCXJl dCA9IG1pX3NldF9jb250ZXh0KHJpbmcsIHRvLCBod19mbGFncyk7Cj4gPiA+IEBAIC00MzIsNiAr NDM0LDE4IEBAIHN0YXRpYyBpbnQgZG9fc3dpdGNoKHN0cnVjdCBpOTE1X2h3X2NvbnRleHQgKnRv KQo+ID4gPiAgCQlyZXR1cm4gcmV0Owo+ID4gPiAgCX0KPiA+ID4gIAo+ID4gPiArCWZvciAoaSA9 IDA7IGkgPCBNQVhfTDNfU0xJQ0VTOyBpKyspIHsKPiA+ID4gKwkJaWYgKCEodG8tPnJlbWFwX3Ns aWNlICYgKDE8PGkpKSkKPiA+ID4gKwkJCWNvbnRpbnVlOwo+ID4gPiArCj4gPiA+ICsJCXJldCA9 IGk5MTVfZ2VtX2wzX3JlbWFwKHJpbmcsIGkpOwo+ID4gPiArCQlpZiAoIXJldCkgewo+ID4gPiAr CQkJdG8tPnJlbWFwX3NsaWNlICY9IH4oMTw8aSk7Cj4gPiA+ICsJCQkvKiBJZiBpdCBmYWlsZWQs IHRyeSBhZ2FpbiBuZXh0IHJvdW5kICovCj4gPiA+ICsJCQlEUk1fREVCVUdfRFJJVkVSKCJMMyBy ZW1hcHBpbmcgZmFpbGVkXG4iKTsKPiA+ID4gKwkJfQo+ID4gCj4gPiBUaGUgZGVidWcgbWVzc2Fn ZSBpcyBvbiB0aGUgd3JvbmcgYnJhbmNoLgo+ID4gCj4gCj4gQW5kIG1heWJlIEkgd2FudGVkIHRo ZSB1c2VyIHRvIFRISU5LIGl0IGZhaWxlZCB3aGVuIGl0IGRpZG4ndDsgc28KPiB0aGV5J2xsIGJl IHBsZWFzYW50bHkgc3VycHJpc2VkLgo+IAo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiAgCS8qIFRo ZSBiYWNraW5nIG9iamVjdCBmb3IgdGhlIGNvbnRleHQgaXMgZG9uZSBhZnRlciBzd2l0Y2hpbmcg dG8gdGhlCj4gPiA+ICAJICogKm5leHQqIGNvbnRleHQuIFRoZXJlZm9yZSB3ZSBjYW5ub3QgcmV0 aXJlIHRoZSBwcmV2aW91cyBjb250ZXh0IHVudGlsCj4gPiA+ICAJICogdGhlIG5leHQgY29udGV4 dCBoYXMgYWxyZWFkeSBzdGFydGVkIHJ1bm5pbmcuIEluIGZhY3QsIHRoZSBiZWxvdyBjb2RlCj4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMKPiA+ID4gaW5kZXggYjA3YmRmYi4uZGViODc4 NyAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYwo+ID4gPiBAQCAtMTE4 LDkgKzExOCw4IEBAIGk5MTVfbDNfcmVhZChzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGtvYmpl Y3QgKmtvYmosCj4gPiA+ICAJc3RydWN0IGRybV9taW5vciAqZG1pbm9yID0gY29udGFpbmVyX29m KGRldiwgc3RydWN0IGRybV9taW5vciwga2Rldik7Cj4gPiA+ICAJc3RydWN0IGRybV9kZXZpY2Ug KmRybV9kZXYgPSBkbWlub3ItPmRldjsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkcm1fZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ID4gLQl1aW50MzJfdCBtaXNjY3Bj dGw7Cj4gPiA+ICAJaW50IHNsaWNlID0gKGludCkodWludHB0cl90KWF0dHItPnByaXZhdGU7Cj4g PiA+IC0JaW50IGksIHJldDsKPiA+ID4gKwlpbnQgcmV0Owo+ID4gPiAgCj4gPiA+ICAJY291bnQg PSByb3VuZF9kb3duKGNvdW50LCA0KTsKPiA+ID4gIAo+ID4gPiBAQCAtMTM0LDI2ICsxMzMsMTMg QEAgaTkxNV9sM19yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qga29iamVjdCAqa29iaiwK PiA+ID4gIAlpZiAocmV0KQo+ID4gPiAgCQlyZXR1cm4gcmV0Owo+ID4gPiAgCj4gPiA+IC0JaWYg KElTX0hBU1dFTEwoZHJtX2RldikpIHsKPiA+ID4gLQkJaWYgKGRldl9wcml2LT5sM19wYXJpdHku cmVtYXBfaW5mb1tzbGljZV0pCj4gPiA+IC0JCQltZW1jcHkoYnVmLAo+ID4gPiAtCQkJICAgICAg IGRldl9wcml2LT5sM19wYXJpdHkucmVtYXBfaW5mb1tzbGljZV0gKyAob2Zmc2V0LzQpLAo+ID4g PiAtCQkJICAgICAgIGNvdW50KTsKPiA+ID4gLQkJZWxzZQo+ID4gPiAtCQkJbWVtc2V0KGJ1Ziwg MCwgY291bnQpOwo+ID4gPiAtCj4gPiA+IC0JCWdvdG8gb3V0Owo+ID4gPiAtCX0KPiA+ID4gLQo+ ID4gPiAtCW1pc2NjcGN0bCA9IEk5MTVfUkVBRChHRU43X01JU0NDUENUTCk7Cj4gPiA+IC0JSTkx NV9XUklURShHRU43X01JU0NDUENUTCwgbWlzY2NwY3RsICYgfkdFTjdfRE9QX0NMT0NLX0dBVEVf RU5BQkxFKTsKPiA+ID4gLQo+ID4gPiAtCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSArPSA0KQo+ ID4gPiAtCQkqKCh1aW50MzJfdCAqKSgmYnVmW2ldKSkgPSBJOTE1X1JFQUQoR0VON19MM0xPR19C QVNFICsgb2Zmc2V0ICsgaSk7Cj4gPiA+IC0KPiA+ID4gLQlJOTE1X1dSSVRFKEdFTjdfTUlTQ0NQ Q1RMLCBtaXNjY3BjdGwpOwo+ID4gPiArCWlmIChkZXZfcHJpdi0+bDNfcGFyaXR5LnJlbWFwX2lu Zm9bc2xpY2VdKQo+ID4gPiArCQltZW1jcHkoYnVmLAo+ID4gPiArCQkgICAgICAgZGV2X3ByaXYt PmwzX3Bhcml0eS5yZW1hcF9pbmZvW3NsaWNlXSArIChvZmZzZXQvNCksCj4gPiA+ICsJCSAgICAg ICBjb3VudCk7Cj4gPiA+ICsJZWxzZQo+ID4gPiArCQltZW1zZXQoYnVmLCAwLCBjb3VudCk7Cj4g PiA+ICAKPiA+ID4gLW91dDoKPiA+ID4gIAltdXRleF91bmxvY2soJmRybV9kZXYtPnN0cnVjdF9t dXRleCk7Cj4gPiA+ICAKPiA+ID4gIAlyZXR1cm4gY291bnQ7Cj4gPiA+IEBAIC0xNjgsNiArMTU0 LDcgQEAgaTkxNV9sM193cml0ZShzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGtvYmplY3QgKmtv YmosCj4gPiA+ICAJc3RydWN0IGRybV9taW5vciAqZG1pbm9yID0gY29udGFpbmVyX29mKGRldiwg c3RydWN0IGRybV9taW5vciwga2Rldik7Cj4gPiA+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRybV9k ZXYgPSBkbWlub3ItPmRldjsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkcm1fZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ID4gKwlzdHJ1Y3QgaTkxNV9od19jb250ZXh0 ICpjdHg7Cj4gPiA+ICAJdTMyICp0ZW1wID0gTlVMTDsgLyogSnVzdCBoZXJlIHRvIG1ha2UgaGFu ZGxpbmcgZmFpbHVyZXMgZWFzeSAqLwo+ID4gPiAgCWludCBzbGljZSA9IChpbnQpKHVpbnRwdHJf dClhdHRyLT5wcml2YXRlOwo+ID4gPiAgCWludCByZXQ7Cj4gPiA+IEBAIC0xNzYsNiArMTYzLDkg QEAgaTkxNV9sM193cml0ZShzdHJ1Y3QgZmlsZSAqZmlscCwgc3RydWN0IGtvYmplY3QgKmtvYmos Cj4gPiA+ICAJaWYgKHJldCkKPiA+ID4gIAkJcmV0dXJuIHJldDsKPiA+ID4gIAo+ID4gPiArCWlm IChkZXZfcHJpdi0+aHdfY29udGV4dHNfZGlzYWJsZWQpCj4gPiA+ICsJCXJldHVybiAtRU5YSU87 Cj4gPiA+ICsKPiA+ID4gIAlyZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShkcm1f ZGV2KTsKPiA+ID4gIAlpZiAocmV0KQo+ID4gPiAgCQlyZXR1cm4gcmV0Owo+ID4gPiBAQCAtMjA0 LDggKzE5NCw5IEBAIGk5MTVfbDNfd3JpdGUoc3RydWN0IGZpbGUgKmZpbHAsIHN0cnVjdCBrb2Jq ZWN0ICprb2JqLAo+ID4gPiAgCj4gPiA+ICAJbWVtY3B5KGRldl9wcml2LT5sM19wYXJpdHkucmVt YXBfaW5mb1tzbGljZV0gKyAob2Zmc2V0LzQpLCBidWYsIGNvdW50KTsKPiA+ID4gIAo+ID4gPiAt CWlmIChpOTE1X2dlbV9sM19yZW1hcCgmZGV2X3ByaXYtPnJpbmdbUkNTXSwgc2xpY2UpKQo+ID4g PiAtCQljb3VudCA9IDA7Cj4gPiA+ICsJLyogTkI6IFdlIGRlZmVyIHRoZSByZW1hcHBpbmcgdW50 aWwgd2Ugc3dpdGNoIHRvIHRoZSBjb250ZXh0ICovCj4gPiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRy eShjdHgsICZkZXZfcHJpdi0+Y29udGV4dF9saXN0LCBsaW5rKQo+ID4gPiArCQljdHgtPnJlbWFw X3NsaWNlIHw9ICgxPDxzbGljZSk7Cj4gPiA+ICAKPiA+ID4gIAltdXRleF91bmxvY2soJmRybV9k ZXYtPnN0cnVjdF9tdXRleCk7Cj4gPiA+ICAKPiA+ID4gLS0gCj4gPiA+IDEuOC40Cj4gPiA+IAo+ ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4g PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gPiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKPiA+ID4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo+ID4gCj4gPiAtLSAKPiA+IFZpbGxlIFN5cmrDpGzDpAo+ID4gSW50ZWwgT1RD Cj4gCj4gLS0gCj4gQmVuIFdpZGF3c2t5LCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENl bnRlcgoKLS0gCkJlbiBXaWRhd3NreSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50 ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK