From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: Re: [PATCH v7 03/20] drm/i915: Add support for per engine reset recovery Date: Wed, 3 May 2017 17:26:25 -0700 Message-ID: <2dc64489-da49-cb7d-b586-32342f860f7c@intel.com> References: <20170427231300.32841-1-michel.thierry@intel.com> <20170427231300.32841-4-michel.thierry@intel.com> <20170427235017.GA32437@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 208F2890BB for ; Thu, 4 May 2017 00:26:26 +0000 (UTC) In-Reply-To: <20170427235017.GA32437@nuc-i3427.alporthouse.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org, Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org T24gMjcvMDQvMTcgMTY6NTAsIENocmlzIFdpbHNvbiB3cm90ZToKPiBPbiBUaHUsIEFwciAyNywg MjAxNyBhdCAwNDoxMjo0M1BNIC0wNzAwLCBNaWNoZWwgVGhpZXJyeSB3cm90ZToKPj4gRnJvbTog QXJ1biBTaWx1dmVyeSA8YXJ1bi5zaWx1dmVyeUBsaW51eC5pbnRlbC5jb20+Cj4+Cj4+IFRoaXMg Y2hhbmdlIGltcGxlbWVudHMgc3VwcG9ydCBmb3IgcGVyLWVuZ2luZSByZXNldCBhcyBhbiBpbml0 aWFsLCBsZXNzCj4+IGludHJ1c2l2ZSBoYW5nIHJlY292ZXJ5IG9wdGlvbiB0byBiZSBhdHRlbXB0 ZWQgYmVmb3JlIGZhbGxpbmcgYmFjayB0byB0aGUKPj4gbGVnYWN5IGZ1bGwgR1BVIHJlc2V0IHJl Y292ZXJ5IG1vZGUgaWYgbmVjZXNzYXJ5LiBUaGlzIGlzIG9ubHkgc3VwcG9ydGVkCj4+IGZyb20g R2VuOCBvbndhcmRzLgo+Pgo+PiBIYW5nY2hlY2tlciBkZXRlcm1pbmVzIHdoaWNoIGVuZ2luZXMg YXJlIGh1bmcgYW5kIGludm9rZXMgZXJyb3IgaGFuZGxlciB0bwo+PiByZWNvdmVyIGZyb20gaXQu IEVycm9yIGhhbmRsZXIgc2NoZWR1bGVzIHJlY292ZXJ5IGZvciBlYWNoIG9mIHRob3NlIGVuZ2lu ZXMKPj4gdGhhdCBhcmUgaHVuZy4gVGhlIHJlY292ZXJ5IHByb2NlZHVyZSBpcyBhcyBmb2xsb3dz LAo+PiAgLSBpZGVudGlmaWVzIHRoZSByZXF1ZXN0IHRoYXQgY2F1c2VkIHRoZSBoYW5nIGFuZCBp dCBpcyBkcm9wcGVkCj4+ICAtIGZvcmNlIGVuZ2luZSB0byBpZGxlOiB0aGlzIGlzIGRvbmUgYnkg aXNzdWluZyBhIHJlc2V0IHJlcXVlc3QKPj4gIC0gcmVzZXQgYW5kIHJlLWluaXQgZW5naW5lCj4+ ICAtIHJlc3RhcnQgc3VibWlzc2lvbnMgdG8gdGhlIGVuZ2luZQo+Pgo+PiBJZiBlbmdpbmUgcmVz ZXQgZmFpbHMgdGhlbiB3ZSBmYWxsIGJhY2sgdG8gaGVhdnkgd2VpZ2h0IGZ1bGwgZ3B1IHJlc2V0 Cj4+IHdoaWNoIHJlc2V0cyBhbGwgZW5naW5lcyBhbmQgcmVpbml0aWF6ZXMgY29tcGxldGUgc3Rh dGUgb2YgSFcgYW5kIFNXLgo+Pgo+PiB2MjogUmViYXNlLgo+PiB2Mzogcy8qZW5naW5lX3Jlc2V0 Ki8qcmVzZXRfZW5naW5lKi87IGZyZWV6ZSBlbmdpbmUgYW5kIGlycXMgYmVmb3JlCj4+IGNhbGxp bmcgaTkxNV9nZW1fcmVzZXRfZW5naW5lIChDaHJpcykuCj4+IHY0OiBSZWJhc2UsIG1vZGlmeSBp OTE1X2dlbV9yZXNldF9wcmVwYXJlIHRvIHVzZSBhIHJpbmcgbWFzayBhbmQKPj4gcmV1c2UgdGhl IGZ1bmN0aW9uIGZvciByZXNldF9lbmdpbmUuCj4+IHY1OiBpbnRlbF9yZXNldF9lbmdpbmVfc3Rh cnQvY2FuY2VsIGluc3RlYWQgb2YgcmVxdWVzdC91bnJlcXVlc3RfcmVzZXQuCj4+IHY2OiBDbGVh biB1cCByZXNldF9lbmdpbmUgZnVuY3Rpb24gdG8gbm90IHJlcXVpcmUgbXV0ZXgsIGkuZS4gbm8g bmVlZCB0byBjYWxsCj4+IHJldm9rZS9yZXN0b3JlX2ZlbmNlcyBhbmQgX3JldGlyZV9yZXF1ZXN0 cyAoQ2hyaXMpLgo+PiB2NzogUmVtb3ZlIGxlZnRvdmVycyBmcm9tIHY1LCBpLmUuIG5vIG5lZWQg dG8gZGlzYWJsZSBpcnEsIGhvbGQKPj4gZm9yY2V3YWtlIG9yIHdha2V1cCB0aGUgaGFuZG9mZiBi aXQgKENocmlzKS4KPj4KPj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgo+PiBDYzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+ Cj4+IFNpZ25lZC1vZmYtYnk6IFRvbWFzIEVsZiA8dG9tYXMuZWxmQGludGVsLmNvbT4KPj4gU2ln bmVkLW9mZi1ieTogQXJ1biBTaWx1dmVyeSA8YXJ1bi5zaWx1dmVyeUBsaW51eC5pbnRlbC5jb20+ Cj4+IFNpZ25lZC1vZmYtYnk6IE1pY2hlbCBUaGllcnJ5IDxtaWNoZWwudGhpZXJyeUBpbnRlbC5j b20+Cj4+IC0tLQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgIHwg NjAgKysrKysrKysrKysrKysrKysrLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgICAgICB8IDEyICsrKy0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMg ICAgICAgICB8IDk3ICsrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQo+PiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jIHwgIDIgKy0KPj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VuY29yZS5jICAgICB8IDIwICsrKysrKysKPj4gIDUgZmlsZXMgY2hh bmdlZCwgMTQyIGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmMKPj4gaW5kZXggNDhjOGI2OWQ5YmRlLi5hZTg5MTUyOWRlZGQgMTAwNjQ0Cj4+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+PiBAQCAtMTgxMCw3ICsxODEwLDcgQEAgdm9pZCBpOTE1 X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4KPj4gIAlwcl9ub3Rp Y2UoImRybS9pOTE1OiBSZXNldHRpbmcgY2hpcCBhZnRlciBncHUgaGFuZ1xuIik7Cj4+ICAJZGlz YWJsZV9pcnEoZGV2X3ByaXYtPmRybS5pcnEpOwo+PiAtCXJldCA9IGk5MTVfZ2VtX3Jlc2V0X3By ZXBhcmUoZGV2X3ByaXYpOwo+PiArCXJldCA9IGk5MTVfZ2VtX3Jlc2V0X3ByZXBhcmUoZGV2X3By aXYsIEFMTF9FTkdJTkVTKTsKPj4gIAlpZiAocmV0KSB7Cj4+ICAJCURSTV9FUlJPUigiR1BVIHJl Y292ZXJ5IGZhaWxlZFxuIik7Cj4+ICAJCWludGVsX2dwdV9yZXNldChkZXZfcHJpdiwgQUxMX0VO R0lORVMpOwo+PiBAQCAtMTg1Miw3ICsxODUyLDcgQEAgdm9pZCBpOTE1X3Jlc2V0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPj4gIAlpOTE1X3F1ZXVlX2hhbmdjaGVjayhkZXZf cHJpdik7Cj4+Cj4+ICBmaW5pc2g6Cj4+IC0JaTkxNV9nZW1fcmVzZXRfZmluaXNoKGRldl9wcml2 KTsKPj4gKwlpOTE1X2dlbV9yZXNldF9maW5pc2goZGV2X3ByaXYsIEFMTF9FTkdJTkVTKTsKPj4g IAllbmFibGVfaXJxKGRldl9wcml2LT5kcm0uaXJxKTsKPj4KPj4gIHdha2V1cDoKPj4gQEAgLTE4 NzEsMTEgKzE4NzEsNjMgQEAgdm9pZCBpOTE1X3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPj4gICAqCj4+ICAgKiBSZXNldCBhIHNwZWNpZmljIEdQVSBlbmdpbmUuIFVz ZWZ1bCBpZiBhIGhhbmcgaXMgZGV0ZWN0ZWQuCj4+ICAgKiBSZXR1cm5zIHplcm8gb24gc3VjY2Vz c2Z1bCByZXNldCBvciBvdGhlcndpc2UgYW4gZXJyb3IgY29kZS4KPj4gKyAqCj4+ICsgKiBQcm9j ZWR1cmUgaXM6Cj4+ICsgKiAgLSBpZGVudGlmaWVzIHRoZSByZXF1ZXN0IHRoYXQgY2F1c2VkIHRo ZSBoYW5nIGFuZCBpdCBpcyBkcm9wcGVkCj4+ICsgKiAgLSBmb3JjZSBlbmdpbmUgdG8gaWRsZTog dGhpcyBpcyBkb25lIGJ5IGlzc3VpbmcgYSByZXNldCByZXF1ZXN0Cj4+ICsgKiAgLSByZXNldCBl bmdpbmUKPj4gKyAqICAtIHJlc3RhcnQgc3VibWlzc2lvbnMgdG8gdGhlIGVuZ2luZQo+Cj4gV2h5 IGRvZXMgdGhlIHByb3NwZWN0aXZlIGNhbGxlciBuZWVkIHRvIGtub3cgdGhpcz8KPgo+PiAgICov Cj4+ICBpbnQgaTkxNV9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+PiAgewo+PiAtCS8qIEZJWE1FOiByZXBsYWNlIG1lIHdpdGggZW5naW5lIHJlc2V0IHNlcXVl bmNlICovCj4+IC0JcmV0dXJuIC1FTk9ERVY7Cj4+ICsJaW50IHJldDsKPj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBlbmdpbmUtPmk5MTU7Cj4+ICsJc3RydWN0IGk5MTVf Z3B1X2Vycm9yICplcnJvciA9ICZkZXZfcHJpdi0+Z3B1X2Vycm9yOwo+PiArCj4+ICsJR0VNX0JV R19PTighdGVzdF9iaXQoSTkxNV9SRVNFVF9CQUNLT0ZGLCAmZXJyb3ItPmZsYWdzKSk7Cj4+ICsK Pj4gKwlEUk1fREVCVUdfRFJJVkVSKCJyZXNldHRpbmcgJXNcbiIsIGVuZ2luZS0+bmFtZSk7Cj4+ ICsKPj4gKwlyZXQgPSBpOTE1X2dlbV9yZXNldF9wcmVwYXJlX2VuZ2luZShlbmdpbmUpOwo+PiAr CWlmIChyZXQpIHsKPj4gKwkJRFJNX0VSUk9SKCJQcmV2aW91cyByZXNldCBmYWlsZWQgLSBwcm9t b3RlIHRvIGZ1bGwgcmVzZXRcbiIpOwo+PiArCQlnb3RvIG91dDsKPj4gKwl9Cj4+ICsKPj4gKwkv Kgo+PiArCSAqIHRoZSByZXF1ZXN0IHRoYXQgY2F1c2VkIHRoZSBoYW5nIGlzIHN0dWNrIG9uIGVs c3AsIGlkZW50aWZ5IHRoZQo+PiArCSAqIGFjdGl2ZSByZXF1ZXN0IGFuZCBkcm9wIGl0LCBhZGp1 c3QgaGVhZCB0byBza2lwIHRoZSBvZmZlbmRpbmcKPj4gKwkgKiByZXF1ZXN0IHRvIHJlc3VtZSBl eGVjdXRpbmcgcmVtYWluaW5nIHJlcXVlc3RzIGluIHRoZSBxdWV1ZS4KPj4gKwkgKi8KPj4gKwlp OTE1X2dlbV9yZXNldF9lbmdpbmUoZW5naW5lKTsKPj4gKwo+PiArCS8qIGZvcmNpbmcgZW5naW5l IHRvIGlkbGUgKi8KPj4gKwlyZXQgPSBpbnRlbF9yZXNldF9lbmdpbmVfc3RhcnQoZW5naW5lKTsK Pj4gKwlpZiAocmV0KSB7Cj4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGRpc2FibGUgJXNcbiIs IGVuZ2luZS0+bmFtZSk7Cj4+ICsJCWdvdG8gb3V0Owo+PiArCX0KPj4gKwo+PiArCS8qIGZpbmFs bHksIHJlc2V0IGVuZ2luZSAqLwo+PiArCXJldCA9IGludGVsX2dwdV9yZXNldChkZXZfcHJpdiwg aW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKSk7Cj4+ICsJaWYgKHJldCkgewo+PiArCQlEUk1fRVJS T1IoIkZhaWxlZCB0byByZXNldCAlcywgcmV0PSVkXG4iLCBlbmdpbmUtPm5hbWUsIHJldCk7Cj4+ ICsJCWludGVsX3Jlc2V0X2VuZ2luZV9jYW5jZWwoZW5naW5lKTsKPj4gKwkJZ290byBvdXQ7Cj4+ ICsJfQo+PiArCj4+ICsJLyogYmUgc3VyZSB0aGUgcmVxdWVzdCByZXNldCBiaXQgZ2V0cyBjbGVh cmVkICovCj4+ICsJaW50ZWxfcmVzZXRfZW5naW5lX2NhbmNlbChlbmdpbmUpOwo+PiArCj4+ICsJ aTkxNV9nZW1fcmVzZXRfZmluaXNoX2VuZ2luZShlbmdpbmUpOwo+PiArCj4+ICsJLyogcmVwbGF5 IHJlbWFpbmluZyByZXF1ZXN0cyBpbiB0aGUgcXVldWUgKi8KPj4gKwlyZXQgPSBlbmdpbmUtPmlu aXRfaHcoZW5naW5lKTsKPj4gKwlpZiAocmV0KQo+PiArCQlnb3RvIG91dDsgLy9YWFg6IGlnbm9y ZSB0aGlzIGxpbmUgZm9yIG5vdwo+Cj4gUGxlYXNlIGdpdmUgdGhlIGNvbW1lbnRzIGhlcmUgc29t ZSB0bGMuIEZvY3VzIG9uIHRoZSB3aHksIHlvdSBhcmUKPiB0ZWxsaW5nIG1lIHdoYXQgdGhlIGNv ZGUgZG9lcy4KPgpIaSwgc29ycnkgYWJvdXQgdGhlIGRlbGF5LgoKVHJ1ZSwgYW5kIHRoYXQncyBu b3QgdGhlIHdob2xlIHN0b3J5OyBhZnRlciB0aGUgZW5naW5lIGlzIHJlc2V0LCB3ZSBoYXZlIAp0 byBwcm9ncmFtIHRoZSBSSU5HX01PREUgJiBSSU5HX0hXU19QR0EgcmVnaXN0ZXJzIGFnYWluLi4u IHNvIHJlYWxseSB0aGUgCmltcG9ydGFudCB0aGluZyBpcyB0byBjYWxsIGdlbjhfaW5pdF9jb21t b25fcmluZyAod2hpY2ggaXMgcGFydCBvZiAKZW5naW5lLT5pbml0X2h3KS4KClRoZW4gd2UgYWxz byBoYXZlIHdvcmthcm91bmRzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBsb29zZSBhZnRlciB0aGUg cmVzZXQuCgpTbyBpdCdzIGJldHRlciBpZiB0aGUgY29tbWVudCBzYXlzIHRoYXQgd2UgaGF2ZSB0 byByZS1pbml0IHRoZSBlbmdpbmUgCmFuZCBwcm9ncmFtIHNldHRpbmdzIHRoYXQgd2VyZSBsb3N0 IGFmdGVyIHRoZSByZXNldC1lbmdpbmUuCgoKPj4gKwo+PiArb3V0Ogo+PiArCXJldHVybiByZXQ7 Cj4+ICB9Cj4+Cj4+ICBzdGF0aWMgaW50IGk5MTVfcG1fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpr ZGV2KQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4gaW5kZXggYWI3ZTY4NjI2YzQ5Li5lZmJm MzQzMTg4OTMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+PiBAQCAtMzAyMiw2ICsz MDIyLDggQEAgZXh0ZXJuIGJvb2wgaW50ZWxfaGFzX2dwdV9yZXNldChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiAgZXh0ZXJuIHZvaWQgaTkxNV9yZXNldChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiAgZXh0ZXJuIGludCBpOTE1X3Jlc2V0X2VuZ2lu ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpOwo+PiAgZXh0ZXJuIGJvb2wgaW50ZWxf aGFzX3Jlc2V0X2VuZ2luZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiAr ZXh0ZXJuIGludCBpbnRlbF9yZXNldF9lbmdpbmVfc3RhcnQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKPj4gK2V4dGVybiB2b2lkIGludGVsX3Jlc2V0X2VuZ2luZV9jYW5jZWwoc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPj4gIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3Jl c2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4+ICBleHRlcm4gdm9pZCBp bnRlbF9lbmdpbmVfaW5pdF9oYW5nY2hlY2soc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KTsKPj4gIGV4dGVybiB2b2lkIGludGVsX2hhbmdjaGVja19pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7Cj4+IEBAIC0zNDEwLDcgKzM0MTIsNiBAQCBpbnQgX19tdXN0X2No ZWNrIGk5MTVfZ2VtX3NldF9nbG9iYWxfc2Vxbm8oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTMy IHNlcW5vKTsKPj4KPj4gIHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqCj4+ICBpOTE1X2dl bV9maW5kX2FjdGl2ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4+ IC0KPgo+IE5vcGUuIChmaW5kX2FjdGl2ZV9yZXF1ZXN0IGlzIG5vdCBpbiB0aGUgc2FtZSBncm91 cCBvZiBvcGVyYXRpb25zIGFzCj4gcmV0aXJlX3JlcXVlc3RzLikKPgo+PiAgdm9pZCBpOTE1X2dl bV9yZXRpcmVfcmVxdWVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPj4K Pj4gIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X3Jlc2V0X2JhY2tvZmYoc3RydWN0IGk5MTVfZ3B1 X2Vycm9yICplcnJvcikKPj4gQEAgLTM0MzgsMTEgKzM0MzksMTYgQEAgc3RhdGljIGlubGluZSB1 MzIgaTkxNV9yZXNldF9jb3VudChzdHJ1Y3QgaTkxNV9ncHVfZXJyb3IgKmVycm9yKQo+PiAgCXJl dHVybiBSRUFEX09OQ0UoZXJyb3ItPnJlc2V0X2NvdW50KTsKPj4gIH0KPj4KPj4gLWludCBpOTE1 X2dlbV9yZXNldF9wcmVwYXJlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4+ ICtpbnQgaTkxNV9nZW1fcmVzZXRfcHJlcGFyZV9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKTsKPj4gK2ludCBpOTE1X2dlbV9yZXNldF9wcmVwYXJlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPj4gKwkJCSAgIHVuc2lnbmVkIGludCBlbmdpbmVfbWFzayk7 Cj4+ICB2b2lkIGk5MTVfZ2VtX3Jlc2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4+IC12b2lkIGk5MTVfZ2VtX3Jlc2V0X2ZpbmlzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwo+PiArdm9pZCBpOTE1X2dlbV9yZXNldF9maW5pc2hfZW5naW5lKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4+ICt2b2lkIGk5MTVfZ2VtX3Jlc2V0X2Zpbmlz aChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4+ICsJCQkgICB1bnNpZ25lZCBp bnQgZW5naW5lX21hc2spOwo+PiAgdm9pZCBpOTE1X2dlbV9zZXRfd2VkZ2VkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4+ICBib29sIGk5MTVfZ2VtX3Vuc2V0X3dlZGdlZChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+PiArdm9pZCBpOTE1X2dlbV9yZXNl dF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKPj4KPj4gIHZvaWQgaTkx NV9nZW1faW5pdF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPj4gIGludCBf X211c3RfY2hlY2sgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gaW5kZXggMzNmYjExY2M1YWNjLi5iY2Uz ODA2MmY5NGUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+PiBAQCAtMjc5Myw0OCAr Mjc5Myw1NyBAQCBzdGF0aWMgYm9vbCBlbmdpbmVfc3RhbGxlZChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmUpCj4+ICAJcmV0dXJuIHRydWU7Cj4+ICB9Cj4+Cj4+IC1pbnQgaTkxNV9nZW1f cmVzZXRfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICsvKiBF bnN1cmUgaXJxIGhhbmRsZXIgZmluaXNoZXMsIGFuZCBub3QgcnVuIGFnYWluLiAqLwo+PiAraW50 IGk5MTVfZ2VtX3Jlc2V0X3ByZXBhcmVfZW5naW5lKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKPj4gIHsKPj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4+IC0JZW51 bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4+ICsJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0Owo+PiAgCWludCBlcnIgPSAwOwo+Pgo+PiAtCS8qIEVuc3VyZSBpcnEgaGFuZGxlciBm aW5pc2hlcywgYW5kIG5vdCBydW4gYWdhaW4uICovCj4+IC0JZm9yX2VhY2hfZW5naW5lKGVuZ2lu ZSwgZGV2X3ByaXYsIGlkKSB7Cj4+IC0JCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx dWVzdDsKPj4gLQo+PiAtCQkvKiBQcmV2ZW50IHRoZSBzaWduYWxlciB0aHJlYWQgZnJvbSB1cGRh dGluZyB0aGUgcmVxdWVzdAo+PiAtCQkgKiBzdGF0ZSAoYnkgY2FsbGluZyBkbWFfZmVuY2Vfc2ln bmFsKSBhcyB3ZSBhcmUgcHJvY2Vzc2luZwo+PiAtCQkgKiB0aGUgcmVzZXQuIFRoZSB3cml0ZSBm cm9tIHRoZSBHUFUgb2YgdGhlIHNlcW5vIGlzCj4+IC0JCSAqIGFzeW5jaHJvbm91cyBhbmQgdGhl IHNpZ25hbGVyIHRocmVhZCBtYXkgc2VlIGEgZGlmZmVyZW50Cj4+IC0JCSAqIHZhbHVlIHRvIHVz IGFuZCBkZWNsYXJlIHRoZSByZXF1ZXN0IGNvbXBsZXRlLCBldmVuIHRob3VnaAo+PiAtCQkgKiB0 aGUgcmVzZXQgcm91dGluZSBoYXZlIHBpY2tlZCB0aGF0IHJlcXVlc3QgYXMgdGhlIGFjdGl2ZQo+ PiAtCQkgKiAoaW5jb21wbGV0ZSkgcmVxdWVzdC4gVGhpcyBjb25mbGljdCBpcyBub3QgaGFuZGxl ZAo+PiAtCQkgKiBncmFjZWZ1bGx5IQo+PiAtCQkgKi8KPj4gLQkJa3RocmVhZF9wYXJrKGVuZ2lu ZS0+YnJlYWRjcnVtYnMuc2lnbmFsZXIpOwo+PiAtCj4+IC0JCS8qIFByZXZlbnQgcmVxdWVzdCBz dWJtaXNzaW9uIHRvIHRoZSBoYXJkd2FyZSB1bnRpbCB3ZSBoYXZlCj4+IC0JCSAqIGNvbXBsZXRl ZCB0aGUgcmVzZXQgaW4gaTkxNV9nZW1fcmVzZXRfZmluaXNoKCkuIElmIGEgcmVxdWVzdAo+PiAt CQkgKiBpcyBjb21wbGV0ZWQgYnkgb25lIGVuZ2luZSwgaXQgbWF5IHRoZW4gcXVldWUgYSByZXF1 ZXN0Cj4+IC0JCSAqIHRvIGEgc2Vjb25kIHZpYSBpdHMgZW5naW5lLT5pcnFfdGFza2xldCAqanVz dCogYXMgd2UgYXJlCj4+IC0JCSAqIGNhbGxpbmcgZW5naW5lLT5pbml0X2h3KCkgYW5kIGFsc28g d3JpdGluZyB0aGUgRUxTUC4KPj4gLQkJICogVHVybmluZyBvZmYgdGhlIGVuZ2luZS0+aXJxX3Rh c2tsZXQgdW50aWwgdGhlIHJlc2V0IGlzIG92ZXIKPj4gLQkJICogcHJldmVudHMgdGhlIHJhY2Uu Cj4+IC0JCSAqLwo+PiAtCQl0YXNrbGV0X2tpbGwoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwo+PiAt CQl0YXNrbGV0X2Rpc2FibGUoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwo+Pgo+PiAtCQlpZiAoZW5n aW5lLT5pcnFfc2Vxbm9fYmFycmllcikKPj4gLQkJCWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIo ZW5naW5lKTsKPj4gKwkvKiBQcmV2ZW50IHRoZSBzaWduYWxlciB0aHJlYWQgZnJvbSB1cGRhdGlu ZyB0aGUgcmVxdWVzdAo+PiArCSAqIHN0YXRlIChieSBjYWxsaW5nIGRtYV9mZW5jZV9zaWduYWwp IGFzIHdlIGFyZSBwcm9jZXNzaW5nCj4+ICsJICogdGhlIHJlc2V0LiBUaGUgd3JpdGUgZnJvbSB0 aGUgR1BVIG9mIHRoZSBzZXFubyBpcwo+PiArCSAqIGFzeW5jaHJvbm91cyBhbmQgdGhlIHNpZ25h bGVyIHRocmVhZCBtYXkgc2VlIGEgZGlmZmVyZW50Cj4+ICsJICogdmFsdWUgdG8gdXMgYW5kIGRl Y2xhcmUgdGhlIHJlcXVlc3QgY29tcGxldGUsIGV2ZW4gdGhvdWdoCj4+ICsJICogdGhlIHJlc2V0 IHJvdXRpbmUgaGF2ZSBwaWNrZWQgdGhhdCByZXF1ZXN0IGFzIHRoZSBhY3RpdmUKPj4gKwkgKiAo aW5jb21wbGV0ZSkgcmVxdWVzdC4gVGhpcyBjb25mbGljdCBpcyBub3QgaGFuZGxlZAo+PiArCSAq IGdyYWNlZnVsbHkhCj4+ICsJICovCj4+ICsJa3RocmVhZF9wYXJrKGVuZ2luZS0+YnJlYWRjcnVt YnMuc2lnbmFsZXIpOwo+PiArCj4+ICsJLyogUHJldmVudCByZXF1ZXN0IHN1Ym1pc3Npb24gdG8g dGhlIGhhcmR3YXJlIHVudGlsIHdlIGhhdmUKPj4gKwkgKiBjb21wbGV0ZWQgdGhlIHJlc2V0IGlu IGk5MTVfZ2VtX3Jlc2V0X2ZpbmlzaCgpLiBJZiBhIHJlcXVlc3QKPj4gKwkgKiBpcyBjb21wbGV0 ZWQgYnkgb25lIGVuZ2luZSwgaXQgbWF5IHRoZW4gcXVldWUgYSByZXF1ZXN0Cj4+ICsJICogdG8g YSBzZWNvbmQgdmlhIGl0cyBlbmdpbmUtPmlycV90YXNrbGV0ICpqdXN0KiBhcyB3ZSBhcmUKPj4g KwkgKiBjYWxsaW5nIGVuZ2luZS0+aW5pdF9odygpIGFuZCBhbHNvIHdyaXRpbmcgdGhlIEVMU1Au Cj4+ICsJICogVHVybmluZyBvZmYgdGhlIGVuZ2luZS0+aXJxX3Rhc2tsZXQgdW50aWwgdGhlIHJl c2V0IGlzIG92ZXIKPj4gKwkgKiBwcmV2ZW50cyB0aGUgcmFjZS4KPj4gKwkgKi8KPj4gKwl0YXNr bGV0X2tpbGwoJmVuZ2luZS0+aXJxX3Rhc2tsZXQpOwo+PiArCXRhc2tsZXRfZGlzYWJsZSgmZW5n aW5lLT5pcnFfdGFza2xldCk7Cj4+Cj4+IC0JCWlmIChlbmdpbmVfc3RhbGxlZChlbmdpbmUpKSB7 Cj4+IC0JCQlyZXF1ZXN0ID0gaTkxNV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChlbmdpbmUpOwo+ PiAtCQkJaWYgKHJlcXVlc3QgJiYgcmVxdWVzdC0+ZmVuY2UuZXJyb3IgPT0gLUVJTykKPj4gLQkJ CQllcnIgPSAtRUlPOyAvKiBQcmV2aW91cyByZXNldCBmYWlsZWQhICovCj4+IC0JCX0KPj4gKwlp ZiAoZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcikKPj4gKwkJZW5naW5lLT5pcnFfc2Vxbm9fYmFy cmllcihlbmdpbmUpOwo+PiArCj4+ICsJaWYgKGVuZ2luZV9zdGFsbGVkKGVuZ2luZSkpIHsKPj4g KwkJcmVxdWVzdCA9IGk5MTVfZ2VtX2ZpbmRfYWN0aXZlX3JlcXVlc3QoZW5naW5lKTsKPj4gKwkJ aWYgKHJlcXVlc3QgJiYgcmVxdWVzdC0+ZmVuY2UuZXJyb3IgPT0gLUVJTykKPj4gKwkJCWVyciA9 IC1FSU87IC8qIFByZXZpb3VzIHJlc2V0IGZhaWxlZCEgKi8KPj4gIAl9Cj4+Cj4+ICsJcmV0dXJu IGVycjsKPj4gK30KPj4gKwo+PiAraW50IGk5MTVfZ2VtX3Jlc2V0X3ByZXBhcmUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+PiArCQkJICAgdW5zaWduZWQgaW50IGVuZ2luZV9t YXNrKQo+PiArewo+PiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPj4gKwl1bnNp Z25lZCBpbnQgdG1wOwo+PiArCWludCBlcnIgPSAwOwo+PiArCj4+ICsJZm9yX2VhY2hfZW5naW5l X21hc2tlZChlbmdpbmUsIGRldl9wcml2LCBlbmdpbmVfbWFzaywgdG1wKQo+PiArCQllcnIgPSBp OTE1X2dlbV9yZXNldF9wcmVwYXJlX2VuZ2luZShlbmdpbmUpOwo+Cj4gWW91IGFyZSBsb3Npbmcg YW55IGVhcmxpZXIgZXJyLgo+Cj4+ICsKPj4gIAlpOTE1X2dlbV9yZXZva2VfZmVuY2VzKGRldl9w cml2KTsKPj4KPj4gIAlyZXR1cm4gZXJyOwo+PiBAQCAtMjkyMCw3ICsyOTI5LDcgQEAgc3RhdGlj IGJvb2wgaTkxNV9nZW1fcmVzZXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcXVlc3QpCj4+ICAJcmV0dXJuIGd1aWx0eTsKPj4gIH0KPj4KPj4gLXN0YXRpYyB2b2lkIGk5 MTVfZ2VtX3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4+ICt2 b2lkIGk5MTVfZ2VtX3Jlc2V0X2VuZ2luZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUp Cj4+ICB7Cj4+ICAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0Owo+Pgo+PiBA QCAtMjk2NiwxNiArMjk3NSwyMiBAQCB2b2lkIGk5MTVfZ2VtX3Jlc2V0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPj4gIAl9Cj4+ICB9Cj4+Cj4+IC12b2lkIGk5MTVfZ2VtX3Jl c2V0X2ZpbmlzaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICt2b2lkIGk5 MTVfZ2VtX3Jlc2V0X2ZpbmlzaF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+PiArewo+PiArCXRhc2tsZXRfZW5hYmxlKCZlbmdpbmUtPmlycV90YXNrbGV0KTsKPj4gKwlr dGhyZWFkX3VucGFyayhlbmdpbmUtPmJyZWFkY3J1bWJzLnNpZ25hbGVyKTsKPj4gK30KPj4gKwo+ PiArdm9pZCBpOTE1X2dlbV9yZXNldF9maW5pc2goc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+PiArCQkJICAgdW5zaWduZWQgaW50IGVuZ2luZV9tYXNrKQo+PiAgewo+PiAgCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKPj4gLQllbnVtIGludGVsX2VuZ2luZV9pZCBp ZDsKPj4gKwl1bnNpZ25lZCBpbnQgdG1wOwo+Pgo+PiAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRl dl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKPj4KPj4gLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5l LCBkZXZfcHJpdiwgaWQpIHsKPj4gLQkJdGFza2xldF9lbmFibGUoJmVuZ2luZS0+aXJxX3Rhc2ts ZXQpOwo+PiAtCQlrdGhyZWFkX3VucGFyayhlbmdpbmUtPmJyZWFkY3J1bWJzLnNpZ25hbGVyKTsK Pj4gKwlmb3JfZWFjaF9lbmdpbmVfbWFza2VkKGVuZ2luZSwgZGV2X3ByaXYsIGVuZ2luZV9tYXNr LCB0bXApIHsKPj4gKwkJaTkxNV9nZW1fcmVzZXRfZmluaXNoX2VuZ2luZShlbmdpbmUpOwo+PiAg CX0KPj4gIH0KPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+PiBp bmRleCA2MTk4ZjY5OTdkMDUuLmY2OWE4YzUzNWQ1ZiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+PiBAQCAtMTIxNiw3ICsxMjE2LDcgQEAgbG9uZyBpOTE1 X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPj4gIAlyZXR1 cm4gdGltZW91dDsKPj4gIH0KPj4KPj4gLXN0YXRpYyB2b2lkIGVuZ2luZV9yZXRpcmVfcmVxdWVz dHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+PiArdm9pZCBlbmdpbmVfcmV0aXJl X3JlcXVlc3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPgo+IEZvcnR1bmF0ZWx5 IHN0cmF5IGNodW5rLiBJIHdhcyBhYm91dCB0byBzY3JlYW0uCj4KPj4gIHsKPj4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QsICpuZXh0Owo+PiAgCXUzMiBzZXFubyA9IGlu dGVsX2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5j b3JlLmMKPj4gaW5kZXggYWI1YmRkMTEwYWMzLi4zZWJiYTZiMmRkNzQgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4+IEBAIC0xODAxLDYgKzE4MDEsMjYgQEAgaW50IGlu dGVsX2d1Y19yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICAJcmV0 dXJuIHJldDsKPj4gIH0KPj4KPj4gKy8qCj4+ICsgKiBPbiBnZW44KyBhIHJlc2V0IHJlcXVlc3Qg aGFzIHRvIGJlIGlzc3VlZCB2aWEgdGhlIHJlc2V0IGNvbnRyb2wgcmVnaXN0ZXIKPj4gKyAqIGJl Zm9yZSBhIEdQVSBlbmdpbmUgY2FuIGJlIHJlc2V0IGluIG9yZGVyIHRvIHN0b3AgdGhlIGNvbW1h bmQgc3RyZWFtZXIKPj4gKyAqIGFuZCBpZGxlIHRoZSBlbmdpbmUuIFRoaXMgcmVwbGFjZXMgdGhl IGxlZ2FjeSB3YXkgb2Ygc3RvcHBpbmcgYW4gZW5naW5lCj4+ICsgKiBieSB3cml0aW5nIHRvIHRo ZSBzdG9wIHJpbmcgYml0IGluIHRoZSBNSV9NT0RFIHJlZ2lzdGVyLgo+PiArICovCj4+ICtpbnQg aW50ZWxfcmVzZXRfZW5naW5lX3N0YXJ0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK Pj4gK3sKPj4gKwlyZXR1cm4gZ2VuOF9yZXNldF9lbmdpbmVfc3RhcnQoZW5naW5lKTsKPj4gK30K Pj4gKwo+PiArLyoKPj4gKyAqIEl0IGlzIHBvc3NpYmxlIHRvIGJhY2sgb2ZmIGZyb20gYSBwcmV2 aW91c2x5IGlzc3VlZCByZXNldCByZXF1ZXN0IGJ5IHNpbXBseQo+PiArICogY2xlYXJpbmcgdGhl IHJlc2V0IHJlcXVlc3QgYml0IGluIHRoZSByZXNldCBjb250cm9sIHJlZ2lzdGVyLgo+PiArICov Cj4+ICt2b2lkIGludGVsX3Jlc2V0X2VuZ2luZV9jYW5jZWwoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+PiArewo+PiArCWdlbjhfcmVzZXRfZW5naW5lX2NhbmNlbChlbmdpbmUpOwo+ PiArfQo+PiArCj4+ICBib29sIGludGVsX3VuY29yZV91bmNsYWltZWRfbW1pbyhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4+ICB7Cj4+ICAJcmV0dXJuIGNoZWNrX2Zvcl91bmNs YWltZWRfbW1pbyhkZXZfcHJpdik7Cj4+IC0tCj4+IDIuMTEuMAo+Pgo+Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=