From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jesse Barnes Subject: Re: [PATCH v8 3/5] drm/i915: Make sprite updates atomic Date: Fri, 7 Mar 2014 07:57:17 -0800 Message-ID: <20140307075717.07b0994a@jbarnes-desktop> References: <1392382228-26473-1-git-send-email-ville.syrjala@linux.intel.com> <1394199763-1954-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from qproxy1-pub.mail.unifiedlayer.com (qproxy1-pub.mail.unifiedlayer.com [173.254.64.10]) by gabe.freedesktop.org (Postfix) with SMTP id 812EBFB4CC for ; Fri, 7 Mar 2014 07:56:43 -0800 (PST) In-Reply-To: <1394199763-1954-1-git-send-email-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces@lists.freedesktop.org Errors-To: intel-gfx-bounces@lists.freedesktop.org To: ville.syrjala@linux.intel.com Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCAgNyBNYXIgMjAxNCAxNTo0Mjo0MyArMDIwMAp2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbSB3cm90ZToKCj4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KPiAKPiBBZGQgYSBtZWNoYW5pc20gYnkgd2hpY2ggd2UgY2FuIGV2YWRl IHRoZSBsZWFkaW5nIGVkZ2Ugb2YgdmJsYW5rLiBUaGlzCj4gZ3VhcmFudGVlcyB0aGF0IG5vIHR3 byBzcHJpdGUgcmVnaXN0ZXIgd3JpdGVzIHdpbGwgc3RyYWRkbGUgb24gZWl0aGVyCj4gc2lkZSBv ZiB0aGUgdmJsYW5rIHN0YXJ0LCBhbmQgdGhhdCBtZWFucyBhbGwgdGhlIHdyaXRlcyB3aWxsIGJl IGxhdGNoZWQKPiB0b2dldGhlciBpbiBvbmUgYXRvbWljIG9wZXJhdGlvbi4KPiAKPiBXZSBkbyB0 aGUgdmJsYW5rIGV2YWRlIGJ5IGNoZWNraW5nIHRoZSBzY2FubGluZSBjb3VudGVyLCBhbmQgaWYg aXQncyB0b28KPiBjbG9zZSB0byB0aGUgc3RhcnQgb2YgdmJsYW5rICh0b28gY2xvc2UgaGFzIGJl ZW4gaGFyZGNvZGVkIHRvIDEwMHVzZWMKPiBmb3Igbm93KSwgd2Ugd2lsbCB3YWl0IGZvciB0aGUg dmJsYW5rIHN0YXJ0IHRvIHBhc3MuIEluIG9yZGVyIHRvCj4gZWxpbWluYXRlIHJhbmRvbSBkZWxh eWVzIGZyb20gdGhlIHJlc3Qgb2YgdGhlIHN5c3RlbSwgd2Ugb3BlcmF0ZSB3aXRoCj4gaW50ZXJy dXB0cyBkaXNhYmxlZCwgZXhjZXB0IHdoZW4gd2FpdGluZyBmb3IgdGhlIHZibGFuayBvYnZpb3Vz bHkuCj4gCj4gTm90ZSB0aGF0IHdlIG5vdyBnbyBkaWdnaW5nIHRocm91Z2ggcGlwZV90b19jcnRj X21hcHBpbmdbXSBpbiB0aGUKPiB2YmxhbmsgaW50ZXJydXB0IGhhbmRsZXIsIHdoaWNoIGlzIGEg Yml0IGRhbmdlcm91cyBzaW5jZSB3ZSBzZXQgdXAKPiBpbnRlcnJ1cHRzIGJlZm9yZSB0aGUgY3J0 Y3MuIEhvd2V2ZXIgaW4gdGhpcyBjYXNlIHNpbmNlIGl0J3MgdGhlIHZibGFuawo+IGludGVycnVw dCwgd2UgZG9uJ3QgYWN0dWFsbHkgdW5tYXNrIGl0IHVudGlsIHNvbWUgcGllY2Ugb2YgY29kZQo+ IHJlcXVlc3RzIGl0Lgo+IAo+IHYyOiBwcmVlbXB0X2NoZWNrX3Jlc2NoZWQoKSBjYWxscyBhZnRl ciBsb2NhbF9pcnFfZW5hYmxlKCkgKEplc3NlKQo+ICAgICBIb29rIHVwIHRoZSB2YmxhbmsgaXJx IHN0dWZmIG9uIEJEVyBhcyB3ZWxsCj4gdjM6IFBhc3MgaW50ZWxfY3J0YyBpbnN0ZWFkIG9mIGRy bV9jcnRjIChEYW5pZWwpCj4gICAgIFdhcm4gaWYgY3J0Yy5tdXRleCBpc24ndCBsb2NrZWQgKERh bmllbCkKPiAgICAgQWRkIGFuIGV4cGxpY2l0IGNvbXBpbGVyIGJhcnJpZXIgYW5kIGRvY3VtZW50 IHRoZSBiYXJyaWVycyAoRGFuaWVsKQo+ICAgICBOb3RlIHRoZSBpcnEgdnMuIG1vZGVzZXQgc2V0 dXAgbWFkbmVzcyBpbiB0aGUgY29tbWl0IG1lc3NhZ2UgKERhbmllbCkKPiB2NDogVXNlIHByZXBh cmVfdG9fd2FpdCgpICYgY28uIGRpcmVjdGx5IGFuZCBlbGltaW5hdGUgdmJsX3JlY2VpdmVkCj4g djU6IFJlZmFjdG9yIGludGVsX3BpcGVfaGFuZGxlX3ZibGFuaygpIHZzLiBkcm1faGFuZGxlX3Zi bGFuaygpIChDaHJpcykKPiAgICAgQ2hlY2sgZm9yIG1pbi9tYXggc2NhbmxpbmUgPD0gMCAoQ2hy aXMpCj4gICAgIERvbid0IGNhbGwgaW50ZWxfcGlwZV91cGRhdGVfZW5kKCkgaWYgc3RhcnQgZmFp bGVkIHRvdGFsbHkgKENocmlzKQo+ICAgICBDaGVjayB0aGF0IHRoZSB2YmxhbmsgY291bnRlcnMg bWF0Y2ggb24gYm90aCBzaWRlcyBvZiB0aGUgY3JpdGljYWwKPiAgICAgc2VjdGlvbiAoQ2hyaXMp Cj4gdjY6IEZpeCBhdG9taWMgdXBkYXRlIGZvciBpbnRlcmxhY2VkIG1vZGVzCj4gdjc6IFJlb3Jk ZXIgY29kZSBmb3IgYmV0dGVyIHJlYWRhYmlsaXR5IChDaHJpcykKPiB2ODogRHJvcCBwcmVlbXB0 X2NoZWNrX3Jlc2NoZWQoKS4gSXQncyBub3QgYXZhaWxhYmxlIHRvIG1vZHVsZXMKPiAgICAgYW55 bW9yZSBhbmQgaXNuJ3QgZXZlbiBuZWVkZWQgdW5sZXNzIHdlIG91cnNlbHZlcyBjYXVzZQo+ICAg ICBhIHdha2V1cCBuZWVkaW5nIHJlc2NoZWR1bGUgd2hpbGUgaW50ZXJydXB0cyBhcmUgb2ZmCj4g Cj4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4Lmlu dGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgIHwg IDI1ICsrKysrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgICAy ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICAyICsKPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgMTMxICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrCj4gIDQgZmlsZXMgY2hhbmdlZCwgMTU0IGluc2VydGlvbnMoKyks IDYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gaW5kZXggNmVjM2Y4 YS4uZDM1MTIwZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwo+IEBAIC0xNTM2LDYgKzE1 MzYsMTkgQEAgc3RhdGljIHZvaWQgZ2VuNl9ycHNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcG1faWlyKQo+ICAJfQo+ICB9Cj4gIAo+ICtzdGF0aWMg Ym9vbCBpbnRlbF9waXBlX2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51 bSBwaXBlIHBpcGUpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOwo+ICsKPiArCWlm ICghZHJtX2hhbmRsZV92YmxhbmsoZGV2LCBwaXBlKSkKPiArCQlyZXR1cm4gZmFsc2U7Cj4gKwo+ ICsJY3J0YyA9IHRvX2ludGVsX2NydGMoaW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUoZGV2LCBwaXBl KSk7Cj4gKwl3YWtlX3VwKCZjcnRjLT52Ymxfd2FpdCk7Cj4gKwo+ICsJcmV0dXJuIHRydWU7Cj4g K30KPiArCj4gIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2hhbmRsZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIGlpcikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBAQCAtMTU4Nyw3ICsxNjAwLDcg QEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19waXBlc3RhdF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB1MzIgaWlyKQo+ICAKPiAgCWZvcl9lYWNoX3BpcGUocGlwZSkgewo+ICAJ CWlmIChwaXBlX3N0YXRzW3BpcGVdICYgUElQRV9TVEFSVF9WQkxBTktfSU5URVJSVVBUX1NUQVRV UykKPiAtCQkJZHJtX2hhbmRsZV92YmxhbmsoZGV2LCBwaXBlKTsKPiArCQkJaW50ZWxfcGlwZV9o YW5kbGVfdmJsYW5rKGRldiwgcGlwZSk7Cj4gIAo+ICAJCWlmIChwaXBlX3N0YXRzW3BpcGVdICYg UExBTkVfRkxJUF9ET05FX0lOVF9TVEFUVVNfVkxWKSB7Cj4gIAkJCWludGVsX3ByZXBhcmVfcGFn ZV9mbGlwKGRldiwgcGlwZSk7Cj4gQEAgLTE4MTQsNyArMTgyNyw3IEBAIHN0YXRpYyB2b2lkIGls a19kaXNwbGF5X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHUzMiBkZV9paXIp Cj4gIAo+ICAJZm9yX2VhY2hfcGlwZShwaXBlKSB7Cj4gIAkJaWYgKGRlX2lpciAmIERFX1BJUEVf VkJMQU5LKHBpcGUpKQo+IC0JCQlkcm1faGFuZGxlX3ZibGFuayhkZXYsIHBpcGUpOwo+ICsJCQlp bnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2LCBwaXBlKTsKPiAgCj4gIAkJaWYgKGRlX2lpciAm IERFX1BJUEVfRklGT19VTkRFUlJVTihwaXBlKSkKPiAgCQkJaWYgKGludGVsX3NldF9jcHVfZmlm b191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2LCBwaXBlLCBmYWxzZSkpCj4gQEAgLTE4NjQsNyArMTg3 Nyw3IEBAIHN0YXRpYyB2b2lkIGl2Yl9kaXNwbGF5X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHUzMiBkZV9paXIpCj4gIAo+ICAJZm9yX2VhY2hfcGlwZShwaXBlKSB7Cj4gIAkJ aWYgKGRlX2lpciAmIChERV9QSVBFX1ZCTEFOS19JVkIocGlwZSkpKQo+IC0JCQlkcm1faGFuZGxl X3ZibGFuayhkZXYsIHBpcGUpOwo+ICsJCQlpbnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2LCBw aXBlKTsKPiAgCj4gIAkJLyogcGxhbmUvcGlwZXMgbWFwIDE6MSBvbiBpbGsrICovCj4gIAkJaWYg KGRlX2lpciAmIERFX1BMQU5FX0ZMSVBfRE9ORV9JVkIocGlwZSkpIHsKPiBAQCAtMjAwNyw3ICsy MDIwLDcgQEAgc3RhdGljIGlycXJldHVybl90IGdlbjhfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9p ZCAqYXJnKQo+ICAKPiAgCQlwaXBlX2lpciA9IEk5MTVfUkVBRChHRU44X0RFX1BJUEVfSUlSKHBp cGUpKTsKPiAgCQlpZiAocGlwZV9paXIgJiBHRU44X1BJUEVfVkJMQU5LKQo+IC0JCQlkcm1faGFu ZGxlX3ZibGFuayhkZXYsIHBpcGUpOwo+ICsJCQlpbnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2 LCBwaXBlKTsKPiAgCj4gIAkJaWYgKHBpcGVfaWlyICYgR0VOOF9QSVBFX0ZMSVBfRE9ORSkgewo+ ICAJCQlpbnRlbF9wcmVwYXJlX3BhZ2VfZmxpcChkZXYsIHBpcGUpOwo+IEBAIC0zMjg0LDcgKzMy OTcsNyBAQCBzdGF0aWMgYm9vbCBpOHh4X2hhbmRsZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwKPiAgCWRybV9pOTE1X3ByaXZhdGVfdCAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl Owo+ICAJdTE2IGZsaXBfcGVuZGluZyA9IERJU1BMQVlfUExBTkVfRkxJUF9QRU5ESU5HKHBsYW5l KTsKPiAgCj4gLQlpZiAoIWRybV9oYW5kbGVfdmJsYW5rKGRldiwgcGlwZSkpCj4gKwlpZiAoIWlu dGVsX3BpcGVfaGFuZGxlX3ZibGFuayhkZXYsIHBpcGUpKQo+ICAJCXJldHVybiBmYWxzZTsKPiAg Cj4gIAlpZiAoKGlpciAmIGZsaXBfcGVuZGluZykgPT0gMCkKPiBAQCAtMzQ2OSw3ICszNDgyLDcg QEAgc3RhdGljIGJvb2wgaTkxNV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs Cj4gIAlkcm1faTkxNV9wcml2YXRlX3QgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAg CXUzMiBmbGlwX3BlbmRpbmcgPSBESVNQTEFZX1BMQU5FX0ZMSVBfUEVORElORyhwbGFuZSk7Cj4g IAo+IC0JaWYgKCFkcm1faGFuZGxlX3ZibGFuayhkZXYsIHBpcGUpKQo+ICsJaWYgKCFpbnRlbF9w aXBlX2hhbmRsZV92YmxhbmsoZGV2LCBwaXBlKSkKPiAgCQlyZXR1cm4gZmFsc2U7Cj4gIAo+ICAJ aWYgKChpaXIgJiBmbGlwX3BlbmRpbmcpID09IDApCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+IGluZGV4IDdlOGJmZDguLjNmYzczOWMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gQEAgLTEwMjk5LDYgKzEwMjk5LDggQEAgc3RhdGljIHZvaWQgaW50 ZWxfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQo+ICAJCWludGVs X2NydGMtPnBsYW5lID0gIXBpcGU7Cj4gIAl9Cj4gIAo+ICsJaW5pdF93YWl0cXVldWVfaGVhZCgm aW50ZWxfY3J0Yy0+dmJsX3dhaXQpOwo+ICsKPiAgCUJVR19PTihwaXBlID49IEFSUkFZX1NJWkUo ZGV2X3ByaXYtPnBsYW5lX3RvX2NydGNfbWFwcGluZykgfHwKPiAgCSAgICAgICBkZXZfcHJpdi0+ cGxhbmVfdG9fY3J0Y19tYXBwaW5nW2ludGVsX2NydGMtPnBsYW5lXSAhPSBOVUxMKTsKPiAgCWRl dl9wcml2LT5wbGFuZV90b19jcnRjX21hcHBpbmdbaW50ZWxfY3J0Yy0+cGxhbmVdID0gJmludGVs X2NydGMtPmJhc2U7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA5NzkwNDc3Li44 Yzk4OTJkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMzg0LDYgKzM4NCw4 IEBAIHN0cnVjdCBpbnRlbF9jcnRjIHsKPiAgCQkvKiB3YXRlcm1hcmtzIGN1cnJlbnRseSBiZWlu ZyB1c2VkICAqLwo+ICAJCXN0cnVjdCBpbnRlbF9waXBlX3dtIGFjdGl2ZTsKPiAgCX0gd207Cj4g Kwo+ICsJd2FpdF9xdWV1ZV9oZWFkX3QgdmJsX3dhaXQ7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50 ZWxfcGxhbmVfd21fcGFyYW1ldGVycyB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMK PiBpbmRleCAzMzZhZTZjLi5hM2VkODQwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3By aXRlLmMKPiBAQCAtMzcsNiArMzcsODkgQEAKPiAgI2luY2x1ZGUgPGRybS9pOTE1X2RybS5oPgo+ ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAgCj4gK3N0YXRpYyBpbnQgdXNlY3NfdG9fc2Nhbmxp bmVzKGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLCBpbnQgdXNlY3MpCj4gK3sK PiArCS8qIHBhcmFub2lhICovCj4gKwlpZiAoIW1vZGUtPmNydGNfaHRvdGFsKQo+ICsJCXJldHVy biAxOwo+ICsKPiArCXJldHVybiBESVZfUk9VTkRfVVAodXNlY3MgKiBtb2RlLT5jcnRjX2Nsb2Nr LCAxMDAwICogbW9kZS0+Y3J0Y19odG90YWwpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBpbnRl bF9waXBlX3VwZGF0ZV9zdGFydChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywgdWludDMyX3QgKnN0 YXJ0X3ZibF9jb3VudCkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJh c2UuZGV2Owo+ICsJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY3J0Yy0+ Y29uZmlnLmFkanVzdGVkX21vZGU7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4g Kwlsb25nIHRpbWVvdXQgPSBtc2Vjc190b19qaWZmaWVzX3RpbWVvdXQoMSk7Cj4gKwlpbnQgc2Nh bmxpbmUsIG1pbiwgbWF4LCB2Ymxhbmtfc3RhcnQ7Cj4gKwlERUZJTkVfV0FJVCh3YWl0KTsKPiAr Cj4gKwlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmNydGMtPmJhc2UubXV0ZXgpKTsKPiArCj4g Kwl2Ymxhbmtfc3RhcnQgPSBtb2RlLT5jcnRjX3ZibGFua19zdGFydDsKPiArCWlmIChtb2RlLT5m bGFncyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQo+ICsJCXZibGFua19zdGFydCA9IERJVl9S T1VORF9VUCh2Ymxhbmtfc3RhcnQsIDIpOwo+ICsKPiArCS8qIEZJWE1FIG5lZWRzIHRvIGJlIGNh bGlicmF0ZWQgc2Vuc2libHkgKi8KPiArCW1pbiA9IHZibGFua19zdGFydCAtIHVzZWNzX3RvX3Nj YW5saW5lcyhtb2RlLCAxMDApOwo+ICsJbWF4ID0gdmJsYW5rX3N0YXJ0IC0gMTsKPiArCj4gKwlp ZiAobWluIDw9IDAgfHwgbWF4IDw9IDApCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiArCWlmIChX QVJOX09OKGRybV92YmxhbmtfZ2V0KGRldiwgcGlwZSkpKQo+ICsJCXJldHVybiBmYWxzZTsKPiAr Cj4gKwlsb2NhbF9pcnFfZGlzYWJsZSgpOwo+ICsKPiArCWZvciAoOzspIHsKPiArCQkvKgo+ICsJ CSAqIHByZXBhcmVfdG9fd2FpdCgpIGhhcyBhIG1lbW9yeSBiYXJyaWVyLCB3aGljaCBndWFyYW50 ZWVzCj4gKwkJICogb3RoZXIgQ1BVcyBjYW4gc2VlIHRoZSB0YXNrIHN0YXRlIHVwZGF0ZSBieSB0 aGUgdGltZSB3ZQo+ICsJCSAqIHJlYWQgdGhlIHNjYW5saW5lLgo+ICsJCSAqLwo+ICsJCXByZXBh cmVfdG9fd2FpdCgmY3J0Yy0+dmJsX3dhaXQsICZ3YWl0LCBUQVNLX1VOSU5URVJSVVBUSUJMRSk7 Cj4gKwo+ICsJCXNjYW5saW5lID0gaW50ZWxfZ2V0X2NydGNfc2NhbmxpbmUoY3J0Yyk7Cj4gKwkJ aWYgKHNjYW5saW5lIDwgbWluIHx8IHNjYW5saW5lID4gbWF4KQo+ICsJCQlicmVhazsKPiArCj4g KwkJaWYgKHRpbWVvdXQgPD0gMCkgewo+ICsJCQlEUk1fRVJST1IoIlBvdGVudGlhbCBhdG9taWMg dXBkYXRlIGZhaWx1cmUgb24gcGlwZSAlY1xuIiwKPiArCQkJCSAgcGlwZV9uYW1lKGNydGMtPnBp cGUpKTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsKPiArCQlsb2NhbF9pcnFfZW5hYmxlKCk7Cj4g Kwo+ICsJCXRpbWVvdXQgPSBzY2hlZHVsZV90aW1lb3V0KHRpbWVvdXQpOwo+ICsKPiArCQlsb2Nh bF9pcnFfZGlzYWJsZSgpOwo+ICsJfQo+ICsKPiArCWZpbmlzaF93YWl0KCZjcnRjLT52Ymxfd2Fp dCwgJndhaXQpOwo+ICsKPiArCWRybV92YmxhbmtfcHV0KGRldiwgcGlwZSk7Cj4gKwo+ICsJKnN0 YXJ0X3ZibF9jb3VudCA9IGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBwaXBl KTsKPiArCj4gKwlyZXR1cm4gdHJ1ZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaW50ZWxfcGlw ZV91cGRhdGVfZW5kKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCB1MzIgc3RhcnRfdmJsX2NvdW50 KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gKwll bnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gKwl1MzIgZW5kX3ZibF9jb3VudCA9IGRldi0+ ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBwaXBlKTsKPiArCj4gKwlsb2NhbF9pcnFf ZW5hYmxlKCk7Cj4gKwo+ICsJaWYgKHN0YXJ0X3ZibF9jb3VudCAhPSBlbmRfdmJsX2NvdW50KQo+ ICsJCURSTV9FUlJPUigiQXRvbWljIHVwZGF0ZSBmYWlsdXJlIG9uIHBpcGUgJWMgKHN0YXJ0PSV1 IGVuZD0ldSlcbiIsCj4gKwkJCSAgcGlwZV9uYW1lKHBpcGUpLCBzdGFydF92YmxfY291bnQsIGVu ZF92YmxfY291bnQpOwo+ICt9Cj4gKwo+ICBzdGF0aWMgdm9pZAo+ICB2bHZfdXBkYXRlX3BsYW5l KHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCSBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiBAQCAtNDgsMTEgKzEzMSwxNCBAQCB2bHZfdXBk YXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRj LAo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRwbGFuZS0+ZGV2Owo+ICAJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBp bnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShkcGxhbmUpOwo+ICsJc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJaW50 IHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKPiAgCWludCBwbGFuZSA9IGludGVsX3BsYW5lLT5w bGFuZTsKPiAgCXUzMiBzcHJjdGw7Cj4gIAl1bnNpZ25lZCBsb25nIHNwcnN1cmZfb2Zmc2V0LCBs aW5lYXJfb2Zmc2V0Owo+ICAJaW50IHBpeGVsX3NpemUgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChm Yi0+cGl4ZWxfZm9ybWF0LCAwKTsKPiArCXUzMiBzdGFydF92YmxfY291bnQ7Cj4gKwlib29sIGF0 b21pY191cGRhdGU7Cj4gIAo+ICAJc3ByY3RsID0gSTkxNV9SRUFEKFNQQ05UUihwaXBlLCBwbGFu ZSkpOwo+ICAKPiBAQCAtMTMxLDYgKzIxNyw4IEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0IGRy bV9wbGFuZSAqZHBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAkJCQkJCQlmYi0+cGl0 Y2hlc1swXSk7Cj4gIAlsaW5lYXJfb2Zmc2V0IC09IHNwcnN1cmZfb2Zmc2V0Owo+ICAKPiArCWF0 b21pY191cGRhdGUgPSBpbnRlbF9waXBlX3VwZGF0ZV9zdGFydChpbnRlbF9jcnRjLCAmc3RhcnRf dmJsX2NvdW50KTsKPiArCj4gIAlJOTE1X1dSSVRFKFNQU1RSSURFKHBpcGUsIHBsYW5lKSwgZmIt PnBpdGNoZXNbMF0pOwo+ICAJSTkxNV9XUklURShTUFBPUyhwaXBlLCBwbGFuZSksIChjcnRjX3kg PDwgMTYpIHwgY3J0Y194KTsKPiAgCj4gQEAgLTE0NCw2ICsyMzIsOSBAQCB2bHZfdXBkYXRlX3Bs YW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJ STkxNV9XUklURShTUFNVUkYocGlwZSwgcGxhbmUpLCBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQo b2JqKSArCj4gIAkJICAgc3Byc3VyZl9vZmZzZXQpOwo+ICAJUE9TVElOR19SRUFEKFNQU1VSRihw aXBlLCBwbGFuZSkpOwo+ICsKPiArCWlmIChhdG9taWNfdXBkYXRlKQo+ICsJCWludGVsX3BpcGVf dXBkYXRlX2VuZChpbnRlbF9jcnRjLCBzdGFydF92YmxfY291bnQpOwo+ICB9Cj4gIAo+ICBzdGF0 aWMgdm9pZAo+IEBAIC0xNTIsOCArMjQzLDEzIEBAIHZsdl9kaXNhYmxlX3BsYW5lKHN0cnVjdCBk cm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGRwbGFuZS0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxf cGxhbmUgPSB0b19pbnRlbF9wbGFuZShkcGxhbmUpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJaW50IHBpcGUgPSBpbnRlbF9wbGFu ZS0+cGlwZTsKPiAgCWludCBwbGFuZSA9IGludGVsX3BsYW5lLT5wbGFuZTsKPiArCXUzMiBzdGFy dF92YmxfY291bnQ7Cj4gKwlib29sIGF0b21pY191cGRhdGU7Cj4gKwo+ICsJYXRvbWljX3VwZGF0 ZSA9IGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KGludGVsX2NydGMsICZzdGFydF92YmxfY291bnQp Owo+ICAKPiAgCUk5MTVfV1JJVEUoU1BDTlRSKHBpcGUsIHBsYW5lKSwgSTkxNV9SRUFEKFNQQ05U UihwaXBlLCBwbGFuZSkpICYKPiAgCQkgICB+U1BfRU5BQkxFKTsKPiBAQCAtMTYxLDYgKzI1Nyw5 IEBAIHZsdl9kaXNhYmxlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKmRwbGFuZSwgc3RydWN0IGRy bV9jcnRjICpjcnRjKQo+ICAJSTkxNV9XUklURShTUFNVUkYocGlwZSwgcGxhbmUpLCAwKTsKPiAg CVBPU1RJTkdfUkVBRChTUFNVUkYocGlwZSwgcGxhbmUpKTsKPiAgCj4gKwlpZiAoYXRvbWljX3Vw ZGF0ZSkKPiArCQlpbnRlbF9waXBlX3VwZGF0ZV9lbmQoaW50ZWxfY3J0Yywgc3RhcnRfdmJsX2Nv dW50KTsKPiArCj4gIAlpbnRlbF91cGRhdGVfc3ByaXRlX3dhdGVybWFya3MoZHBsYW5lLCBjcnRj LCAwLCAwLCBmYWxzZSwgZmFsc2UpOwo+ICB9Cj4gIAo+IEBAIC0yMjYsMTAgKzMyNSwxMyBAQCBp dmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMg KmNydGMsCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKPiAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1 Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICsJ c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJ aW50IHBpcGUgPSBpbnRlbF9wbGFuZS0+cGlwZTsKPiAgCXUzMiBzcHJjdGwsIHNwcnNjYWxlID0g MDsKPiAgCXVuc2lnbmVkIGxvbmcgc3Byc3VyZl9vZmZzZXQsIGxpbmVhcl9vZmZzZXQ7Cj4gIAlp bnQgcGl4ZWxfc2l6ZSA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDAp Owo+ICsJdTMyIHN0YXJ0X3ZibF9jb3VudDsKPiArCWJvb2wgYXRvbWljX3VwZGF0ZTsKPiAgCj4g IAlzcHJjdGwgPSBJOTE1X1JFQUQoU1BSQ1RMKHBpcGUpKTsKPiAgCj4gQEAgLTI5OSw2ICs0MDEs OCBAQCBpdmJfdXBkYXRlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJt X2NydGMgKmNydGMsCj4gIAkJCQkJICAgICAgIHBpeGVsX3NpemUsIGZiLT5waXRjaGVzWzBdKTsK PiAgCWxpbmVhcl9vZmZzZXQgLT0gc3Byc3VyZl9vZmZzZXQ7Cj4gIAo+ICsJYXRvbWljX3VwZGF0 ZSA9IGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KGludGVsX2NydGMsICZzdGFydF92YmxfY291bnQp Owo+ICsKPiAgCUk5MTVfV1JJVEUoU1BSU1RSSURFKHBpcGUpLCBmYi0+cGl0Y2hlc1swXSk7Cj4g IAlJOTE1X1dSSVRFKFNQUlBPUyhwaXBlKSwgKGNydGNfeSA8PCAxNikgfCBjcnRjX3gpOwo+ICAK PiBAQCAtMzE4LDYgKzQyMiw5IEBAIGl2Yl91cGRhdGVfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCUk5MTVfV1JJVEUoU1BSU1VSRihwaXBl KSwKPiAgCQkgICBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQob2JqKSArIHNwcnN1cmZfb2Zmc2V0 KTsKPiAgCVBPU1RJTkdfUkVBRChTUFJTVVJGKHBpcGUpKTsKPiArCj4gKwlpZiAoYXRvbWljX3Vw ZGF0ZSkKPiArCQlpbnRlbF9waXBlX3VwZGF0ZV9lbmQoaW50ZWxfY3J0Yywgc3RhcnRfdmJsX2Nv dW50KTsKPiAgfQo+ICAKPiAgc3RhdGljIHZvaWQKPiBAQCAtMzI2LDcgKzQzMywxMiBAQCBpdmJf ZGlzYWJsZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpj cnRjKQo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7Cj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0 IGludGVsX3BsYW5lICppbnRlbF9wbGFuZSA9IHRvX2ludGVsX3BsYW5lKHBsYW5lKTsKPiArCXN0 cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAgCWlu dCBwaXBlID0gaW50ZWxfcGxhbmUtPnBpcGU7Cj4gKwl1MzIgc3RhcnRfdmJsX2NvdW50Owo+ICsJ Ym9vbCBhdG9taWNfdXBkYXRlOwo+ICsKPiArCWF0b21pY191cGRhdGUgPSBpbnRlbF9waXBlX3Vw ZGF0ZV9zdGFydChpbnRlbF9jcnRjLCAmc3RhcnRfdmJsX2NvdW50KTsKPiAgCj4gIAlJOTE1X1dS SVRFKFNQUkNUTChwaXBlKSwgSTkxNV9SRUFEKFNQUkNUTChwaXBlKSkgJiB+U1BSSVRFX0VOQUJM RSk7Cj4gIAkvKiBDYW4ndCBsZWF2ZSB0aGUgc2NhbGVyIGVuYWJsZWQuLi4gKi8KPiBAQCAtMzM2 LDYgKzQ0OCw5IEBAIGl2Yl9kaXNhYmxlX3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLCBz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlJOTE1X1dSSVRFKFNQUlNVUkYocGlwZSksIDApOwo+ ICAJUE9TVElOR19SRUFEKFNQUlNVUkYocGlwZSkpOwo+ICAKPiArCWlmIChhdG9taWNfdXBkYXRl KQo+ICsJCWludGVsX3BpcGVfdXBkYXRlX2VuZChpbnRlbF9jcnRjLCBzdGFydF92YmxfY291bnQp Owo+ICsKPiAgCS8qCj4gIAkgKiBBdm9pZCB1bmRlcnJ1bnMgd2hlbiBkaXNhYmxpbmcgdGhlIHNw cml0ZS4KPiAgCSAqIEZJWE1FIHJlbW92ZSBvbmNlIHdhdGVybWFyayB1cGRhdGVzIGFyZSBkb25l IHByb3Blcmx5Lgo+IEBAIC00MTAsMTAgKzUyNSwxMyBAQCBpbGtfdXBkYXRlX3BsYW5lKHN0cnVj dCBkcm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gcGxhbmUtPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVs X3BsYW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJaW50IHBpcGUgPSBpbnRlbF9wbGFu ZS0+cGlwZTsKPiAgCXVuc2lnbmVkIGxvbmcgZHZzc3VyZl9vZmZzZXQsIGxpbmVhcl9vZmZzZXQ7 Cj4gIAl1MzIgZHZzY250ciwgZHZzc2NhbGU7Cj4gIAlpbnQgcGl4ZWxfc2l6ZSA9IGRybV9mb3Jt YXRfcGxhbmVfY3BwKGZiLT5waXhlbF9mb3JtYXQsIDApOwo+ICsJdTMyIHN0YXJ0X3ZibF9jb3Vu dDsKPiArCWJvb2wgYXRvbWljX3VwZGF0ZTsKPiAgCj4gIAlkdnNjbnRyID0gSTkxNV9SRUFEKERW U0NOVFIocGlwZSkpOwo+ICAKPiBAQCAtNDc4LDYgKzU5Niw4IEBAIGlsa191cGRhdGVfcGxhbmUo c3RydWN0IGRybV9wbGFuZSAqcGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkJCQkg ICAgICAgcGl4ZWxfc2l6ZSwgZmItPnBpdGNoZXNbMF0pOwo+ICAJbGluZWFyX29mZnNldCAtPSBk dnNzdXJmX29mZnNldDsKPiAgCj4gKwlhdG9taWNfdXBkYXRlID0gaW50ZWxfcGlwZV91cGRhdGVf c3RhcnQoaW50ZWxfY3J0YywgJnN0YXJ0X3ZibF9jb3VudCk7Cj4gKwo+ICAJSTkxNV9XUklURShE VlNTVFJJREUocGlwZSksIGZiLT5waXRjaGVzWzBdKTsKPiAgCUk5MTVfV1JJVEUoRFZTUE9TKHBp cGUpLCAoY3J0Y195IDw8IDE2KSB8IGNydGNfeCk7Cj4gIAo+IEBAIC00OTIsNiArNjEyLDkgQEAg aWxrX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRj ICpjcnRjLAo+ICAJSTkxNV9XUklURShEVlNTVVJGKHBpcGUpLAo+ICAJCSAgIGk5MTVfZ2VtX29i al9nZ3R0X29mZnNldChvYmopICsgZHZzc3VyZl9vZmZzZXQpOwo+ICAJUE9TVElOR19SRUFEKERW U1NVUkYocGlwZSkpOwo+ICsKPiArCWlmIChhdG9taWNfdXBkYXRlKQo+ICsJCWludGVsX3BpcGVf dXBkYXRlX2VuZChpbnRlbF9jcnRjLCBzdGFydF92YmxfY291bnQpOwo+ICB9Cj4gIAo+ICBzdGF0 aWMgdm9pZAo+IEBAIC01MDAsNyArNjIzLDEyIEBAIGlsa19kaXNhYmxlX3BsYW5lKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gcGxhbmUtPmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gIAlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3Bs YW5lID0gdG9faW50ZWxfcGxhbmUocGxhbmUpOwo+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJaW50IHBpcGUgPSBpbnRlbF9wbGFuZS0+ cGlwZTsKPiArCXUzMiBzdGFydF92YmxfY291bnQ7Cj4gKwlib29sIGF0b21pY191cGRhdGU7Cj4g Kwo+ICsJYXRvbWljX3VwZGF0ZSA9IGludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KGludGVsX2NydGMs ICZzdGFydF92YmxfY291bnQpOwo+ICAKPiAgCUk5MTVfV1JJVEUoRFZTQ05UUihwaXBlKSwgSTkx NV9SRUFEKERWU0NOVFIocGlwZSkpICYgfkRWU19FTkFCTEUpOwo+ICAJLyogRGlzYWJsZSB0aGUg c2NhbGVyICovCj4gQEAgLTUwOSw2ICs2MzcsOSBAQCBpbGtfZGlzYWJsZV9wbGFuZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwbGFuZSwgc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJSTkxNV9XUklURShE VlNTVVJGKHBpcGUpLCAwKTsKPiAgCVBPU1RJTkdfUkVBRChEVlNTVVJGKHBpcGUpKTsKPiAgCj4g KwlpZiAoYXRvbWljX3VwZGF0ZSkKPiArCQlpbnRlbF9waXBlX3VwZGF0ZV9lbmQoaW50ZWxfY3J0 Yywgc3RhcnRfdmJsX2NvdW50KTsKPiArCj4gIAkvKgo+ICAJICogQXZvaWQgdW5kZXJydW5zIHdo ZW4gZGlzYWJsaW5nIHRoZSBzcHJpdGUuCj4gIAkgKiBGSVhNRSByZW1vdmUgb25jZSB3YXRlcm1h cmsgdXBkYXRlcyBhcmUgZG9uZSBwcm9wZXJseS4KClllYWggbG9va3MgbGlrZSB0aGlzIHdpbGwg d29yayBvay4KCkkgZG9uJ3QgdW5kZXJzdGFuZCB0aGUgcHJlcGFyZV90b193YWl0KCkgY29tbWVu dCwgc2luY2Ugd2UncmUgYm90aApob2xkaW5nIHRoZSBjcnRjIG11dGV4IGFuZCBwcmVwYXJlX3Rv X3dhaXQoKSB3aWxsIHRha2UgdGhlIGNydGMKdmJsX3dhaXQgcXVldWUgbG9jaywgYnV0IHNpbmNl IHRoaW5ncyBsb29rIHNhZmUgYXMtaXMgSSBndWVzcyBpdCdzIG5vdAphIGJpZyBkZWFsLgoKUmV2 aWV3ZWQtYnk6IEplc3NlIEJhcm5lcyA8amJhcm5lc0B2aXJ0dW91c2dlZWsub3JnPgoKLS0gCkpl c3NlIEJhcm5lcywgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK