From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 33/40] drm/i915: Extend CREATE_CONTEXT to allow inheritance ala clone() Date: Mon, 24 Sep 2018 18:22:43 +0100 Message-ID: References: <20180919195544.1511-1-chris@chris-wilson.co.uk> <20180919195544.1511-33-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id D83E46E30F for ; Mon, 24 Sep 2018 17:22:46 +0000 (UTC) In-Reply-To: <20180919195544.1511-33-chris@chris-wilson.co.uk> Content-Language: en-GB 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 List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE5LzA5LzIwMTggMjA6NTUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBBIGNvbnRleHQgZW5j b21wYXNzZXMgdGhlIGRyaXZlcidzIHZpZXcgb2YgcHJvY2VzcyByZWxhdGVkIHN0YXRlLCBhbmQK PiBlbmNhcHN1bGF0ZXMgdGhlIGxvZ2ljYWwgR1BVIHN0YXRlIHdoZXJlIGF2YWlsYWJsZS4gRWFj aCBjb250ZXh0IGlzCj4gY3VycmVudGx5IGVxdWl2YWxlbnQgdG8gYSBwcm9jZXNzIGluIENQVSB0 ZXJtcy4gTGlrZSB3aXRoIHByb2Nlc3NlcywKPiBzb21ldGltZXMgdGhlIHVzZXIgd2FudHMgYSBs aWdodGVyIGVuY2Fwc3VsYXRpb24gdGhhdCBzaGFyZXMgc29tZSBzdGF0ZQo+IHdpdGggdGhlIHBh cmVudCBwcm9jZXNzLCBmb3IgZXhhbXBsZSB0d28gdGhyZWFkcyBoYXZlIHVuaXF1ZSByZWdpc3Rl cgo+IHN0YXRlIGJ1dCBzaGFyZSB0aGUgdmlydHVhbCBtZW1vcnkgbWFwcGluZ3MuIFdlIGNhbiBz dXBwb3J0IGV4YWN0bHkgdGhlCj4gc2FtZSBwcmluY2lwbGUgdXNpbmcgY29udGV4dHMgd2hlcmUg d2UgbWF5IHNoYXJlIHRoZSBHVFQgYnV0IGtlZXAgdGhlCj4gbG9naWNhbCBHUFUgc3RhdGUgZGlz dGluY3QuIFRoaXMgYWxsb3dzIHF1aWNrZXIgc3dpdGNoaW5nIGJldHdlZW4gdGhvc2UKPiBjb250 ZXh0cywgYW5kIGZvciB1c2Vyc3BhY2UgdG8gYWxsb2NhdGUgYSBzaW5nbGUgb2Zmc2V0IGluIHRo ZSBHVFQgYW5kCj4gdXNlIGl0IGFjcm9zcyBtdWx0aXBsZSBjb250ZXh0cy4gTGlrZSB3aXRoIGNs b25lKCksIGluIHRoZSBmdXR1cmUgd2UgbWF5Cj4gd2lzaCB0byBhbGxvdyB1c2Vyc3BhY2UgdG8g c2VsZWN0IG1vcmUgZmVhdHVyZXMgdG8gY29weSBhY3Jvc3MgZnJvbSB0aGUKPiBwYXJlbnQsIGJ1 dCBmb3Igbm93IHdlIG9ubHkgYWxsb3cgc2hhcmluZyBvZiB0aGUgR1RULgo+IAo+IE5vdGUgdGhh dCBpZiBmdWxsIHBlci1wcm9jZXNzIEdUVCBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBoYXJkZXIs IHRoZQoKcy9oYXJkZXIvaGFyZHdhcmUvCgo+IEdUVCBhcmUgYWxyZWFkeSBpbXBsaWNpdGx5IHNo YXJlZCBiZXR3ZWVuIGNvbnRleHRzLCBhbmQgdGhpcyByZXF1ZXN0Cj4gdG8gY3JlYXRlIGNvbnRl eHRzIHdpdGggc2hhcmVkIEdUVCBmYWlscy4gV2l0aCBmdWxsIHBwR1RULCBldmVyeSBmZAo+IChp LmUuIGV2ZXJ5IHByb2Nlc3MpIGlzIGFsbG9jYXRlZCBhIHVuaXF1ZSBHVFQgc28gdGhpcyByZXF1 ZXN0IGNhbm5vdCBiZQo+IHVzZWQgdG8gc2hhcmUgR1RUIGJldHdlZW4gcHJvY2Vzc2VzL2Zkcywg aXQgY2FuIG9ubHkgc2hhcmUgR1RUIGJlbG9uZ2luZwo+IHRvIHRoaXMgZmQuCj4gCj4gVGVzdGNh c2U6IGlndC9nZW1fY3R4X3NoYXJlZAo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IENjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0 aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxp bkBpbnRlbC5jb20+Cj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50 ZWwuY29tPgo+IENjOiBNaWNoYcWCIFdpbmlhcnNraSA8bWljaGFsLndpbmlhcnNraUBpbnRlbC5j b20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAg ICAgfCAgNjIgKysrKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAg ICAgICAgICB8ICAxOSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0Lmgg ICAgICAgICAgIHwgIDE0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVn ZV9wYWdlcy5jICAgfCAgIDEgLQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9n ZW1fY29udGV4dC5jIHwgMjUyICsrKysrKysrKysrKystLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jIHwgICAxIC0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyB8ICAgMiArLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ3R0LmMgICAgIHwgICAyICsKPiAgIGluY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICAgICAgICB8ICAxMSArLQo+ICAgOSBmaWxlcyBj aGFuZ2VkLCAyNzkgaW5zZXJ0aW9ucygrKSwgODUgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IDE1MGQ3YTZiMmJkMy4uZGEyYWMx MGY4ZThhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBA IC0xMTAsNiArMTEwLDggQEAgc3RhdGljIHZvaWQgbHV0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgpCj4gICAJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gcmN1X2RlcmVmZXJlbmNl X3Jhdygqc2xvdCk7Cj4gICAKPiAgIAkJcmFkaXhfdHJlZV9pdGVyX2RlbGV0ZSgmY3R4LT5oYW5k bGVzX3ZtYSwgJml0ZXIsIHNsb3QpOwo+ICsKPiArCQl2bWEtPm9wZW5fY291bnQtLTsKPiAgIAkJ X19pOTE1X2dlbV9vYmplY3RfcmVsZWFzZV91bmxlc3NfYWN0aXZlKHZtYS0+b2JqKTsKPiAgIAl9 Cj4gICAJcmN1X3JlYWRfdW5sb2NrKCk7Cj4gQEAgLTI5Miw3ICsyOTQsNyBAQCBzdGF0aWMgdm9p ZCBjb250ZXh0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICAJICovCj4g ICAJbHV0X2Nsb3NlKGN0eCk7Cj4gICAJaWYgKGN0eC0+cHBndHQpCj4gLQkJaTkxNV9wcGd0dF9j bG9zZSgmY3R4LT5wcGd0dC0+dm0pOwo+ICsJCWk5MTVfcHBndHRfY2xvc2UoY3R4LT5wcGd0dCk7 Cj4gICAKPiAgIAljdHgtPmZpbGVfcHJpdiA9IEVSUl9QVFIoLUVCQURGKTsKPiAgIAlpOTE1X2dl bV9jb250ZXh0X3B1dChjdHgpOwo+IEBAIC0zOTksOSArNDAxLDEyIEBAIHN0YXRpYyB2b2lkIF9f ZGVzdHJveV9od19jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJY29u dGV4dF9jbG9zZShjdHgpOwo+ICAgfQo+ICAgCj4gKyNkZWZpbmUgQ1JFQVRFX1ZNIEJJVCgwKQo+ ICsKPiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCj4gICBpOTE1X2dlbV9jcmVh dGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gLQkJCXN0cnVj dCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdikKPiArCQkJc3RydWN0IGRybV9pOTE1 X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2LAo+ICsJCQl1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gICB7 Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAgIAo+IEBAIC00MTQsNyArNDE5 LDcgQEAgaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAgCWlmIChJU19FUlIoY3R4KSkKPiAgIAkJcmV0dXJuIGN0eDsKPiAgIAo+IC0J aWYgKFVTRVNfRlVMTF9QUEdUVChkZXZfcHJpdikpIHsKPiArCWlmIChmbGFncyAmIENSRUFURV9W TSAmJiBVU0VTX0ZVTExfUFBHVFQoZGV2X3ByaXYpKSB7Cj4gICAJCXN0cnVjdCBpOTE1X2h3X3Bw Z3R0ICpwcGd0dDsKPiAgIAo+ICAgCQlwcGd0dCA9IGk5MTVfcHBndHRfY3JlYXRlKGRldl9wcml2 LCBmaWxlX3ByaXYpOwo+IEBAIC00OTMsNyArNDk4LDcgQEAgaTkxNV9nZW1fY29udGV4dF9jcmVh dGVfa2VybmVsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBpbnQgcHJpbykKPiAgIAlz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICAgCWludCBlcnI7Cj4gICAKPiAtCWN0eCA9 IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIE5VTEwpOwo+ICsJY3R4ID0gaTkxNV9nZW1f Y3JlYXRlX2NvbnRleHQoaTkxNSwgTlVMTCwgQ1JFQVRFX1ZNKTsKPiAgIAlpZiAoSVNfRVJSKGN0 eCkpCj4gICAJCXJldHVybiBjdHg7Cj4gICAKPiBAQCAtNjIwLDcgKzYyNSw3IEBAIGludCBpOTE1 X2dlbV9jb250ZXh0X29wZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJaWRy X2luaXQoJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIpOwo+ICAgCj4gICAJbXV0ZXhfbG9jaygmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChp OTE1LCBmaWxlX3ByaXYpOwo+ICsJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwg ZmlsZV9wcml2LCBDUkVBVEVfVk0pOwo+ICAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVj dF9tdXRleCk7Cj4gICAJaWYgKElTX0VSUihjdHgpKSB7Cj4gICAJCWlkcl9kZXN0cm95KCZmaWxl X3ByaXYtPmNvbnRleHRfaWRyKTsKPiBAQCAtNzc4LDEwICs3ODMsMTIgQEAgaW50IGk5MTVfZ2Vt X2NvbnRleHRfY3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEs Cj4gICAJCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gICB7Cj4gICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+IC0Jc3RydWN0IGRybV9pOTE1 X2dlbV9jb250ZXh0X2NyZWF0ZSAqYXJncyA9IGRhdGE7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X2NvbnRleHRfY3JlYXRlX3YyICphcmdzID0gZGF0YTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZmls ZV9wcml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKPiArCXN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpzaGFyZSA9IE5VTEw7Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eDsKPiAtCWludCByZXQ7Cj4gKwl1bnNpZ25lZCBpbnQgZmxhZ3MgPSBDUkVBVEVfVk07Cj4g KwlpbnQgZXJyOwo+ICAgCj4gICAJaWYgKCFEUklWRVJfQ0FQUyhkZXZfcHJpdiktPmhhc19sb2dp Y2FsX2NvbnRleHRzKQo+ICAgCQlyZXR1cm4gLUVOT0RFVjsKPiBAQCAtNzg5LDYgKzc5Niw5IEBA IGludCBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAo+ICAgCWlmIChhcmdzLT5wYWQgIT0gMCkKPiAgIAkJcmV0dXJuIC1FSU5W QUw7Cj4gICAKPiArCWlmIChhcmdzLT5mbGFncyAmIH5JOTE1X0dFTV9DT05URVhUX1NIQVJFX0dU VCkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gICAJaWYgKGNsaWVudF9pc19iYW5uZWQoZmls ZV9wcml2KSkgewo+ICAgCQlEUk1fREVCVUcoImNsaWVudCAlc1slZF0gYmFubmVkIGZyb20gY3Jl YXRpbmcgY3R4XG4iLAo+ICAgCQkJICBjdXJyZW50LT5jb21tLAo+IEBAIC03OTcsMjEgKzgwNyw0 NSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKPiAgIAkJcmV0dXJuIC1FSU87Cj4gICAJfQo+ICAgCj4gLQlyZXQg PSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShkZXYpOwo+IC0JaWYgKHJldCkKPiAtCQly ZXR1cm4gcmV0Owo+ICsJaWYgKGFyZ3MtPmZsYWdzICYgSTkxNV9HRU1fQ09OVEVYVF9TSEFSRV9H VFQpIHsKPiArCQlzaGFyZSA9IGk5MTVfZ2VtX2NvbnRleHRfbG9va3VwKGZpbGVfcHJpdiwgYXJn cy0+c2hhcmVfY3R4KTsKPiArCQlpZiAoIXNoYXJlKQo+ICsJCQlyZXR1cm4gLUVOT0VOVDsKPiAr Cj4gKwkJaWYgKCFzaGFyZS0+cHBndHQpIHsKPiArCQkJZXJyID0gLUVOT0RFVjsKPiArCQkJZ290 byBvdXQ7Cj4gKwkJfQo+ICsKPiArCQlmbGFncyAmPSB+Q1JFQVRFX1ZNOwo+ICsJfQo+ICAgCj4g LQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChkZXZfcHJpdiwgZmlsZV9wcml2KTsKPiAr CWVyciA9IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7Cj4gKwlpZiAoZXJyKQo+ ICsJCWdvdG8gb3V0Owo+ICsKPiArCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGRldl9w cml2LCBmaWxlX3ByaXYsIGZsYWdzKTsKPiAgIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211 dGV4KTsKPiAtCWlmIChJU19FUlIoY3R4KSkKPiAtCQlyZXR1cm4gUFRSX0VSUihjdHgpOwo+ICsJ aWYgKElTX0VSUihjdHgpKSB7Cj4gKwkJZXJyID0gUFRSX0VSUihjdHgpOwo+ICsJCWdvdG8gb3V0 Owo+ICsJfQo+ICsKPiArCWlmICghKGZsYWdzICYgQ1JFQVRFX1ZNKSkgewo+ICsJCWN0eC0+ZGVz Y190ZW1wbGF0ZSA9IHNoYXJlLT5kZXNjX3RlbXBsYXRlOwo+ICsJCWN0eC0+cHBndHQgPSBpOTE1 X3BwZ3R0X2dldChzaGFyZS0+cHBndHQpOwo+ICsJCWk5MTVfcHBndHRfb3BlbihjdHgtPnBwZ3R0 KTsKCmk5MTVfcHBndHRfb3Blbi9jbG9zZSBhcmUgZ3VhcmRlZCBieSBzdHJ1Y3QgbXV0ZXg/CgpB cyBzdWNoIGl0IGxvb2tzIG9wZW5fY291bnQgY2FuIGRyb3AgdG8gemVybyBiZXR3ZWVuIHRoZSBj b250ZXh0IGxvb2t1cCAKYW5kIGhlcmUuIEluIHdoaWNoIGNhc2UgdGhlIGFzc2VydCBpbiBpOTE1 X3BwZ3R0X29wZW4gd291bGQgdHJpZ2dlci4KCklzIGl0IGFjY2VwdGFibGUgdGhhdCB5b3UgaGF2 ZSBzb21ldGhpbmcgbGlrZSBpOTE1X3BwZ3R0X3RyeV9vcGVuPwoKPiArCX0KPiAgIAo+ICAgCUdF TV9CVUdfT04oaTkxNV9nZW1fY29udGV4dF9pc19rZXJuZWwoY3R4KSk7Cj4gICAKPiAgIAlhcmdz LT5jdHhfaWQgPSBjdHgtPnVzZXJfaGFuZGxlOwo+ICAgCURSTV9ERUJVRygiSFcgY29udGV4dCAl ZCBjcmVhdGVkXG4iLCBhcmdzLT5jdHhfaWQpOwo+ICAgCj4gLQlyZXR1cm4gMDsKPiArb3V0Ogo+ ICsJaWYgKHNoYXJlKQo+ICsJCWk5MTVfZ2VtX2NvbnRleHRfcHV0KHNoYXJlKTsKPiArCXJldHVy biBlcnI7Cj4gICB9Cj4gICAKPiAgIGludCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGwo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuYwo+IGluZGV4IGQxY2E2NzQ1OWJjMi4uY2FmNDhhMWExYzk3IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMTY0NCw2ICsxNjQ0LDcgQEAgc3RhdGlj IHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpnZW44X3BwZ3R0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSkKPiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gICAKPiAgIAlr cmVmX2luaXQoJnBwZ3R0LT5yZWYpOwo+ICsJcHBndHQtPm9wZW5fY291bnQgPSAxOwo+ICAgCj4g ICAJcHBndHQtPnZtLmk5MTUgPSBpOTE1Owo+ICAgCXBwZ3R0LT52bS5kbWEgPSAmaTkxNS0+ZHJt LnBkZXYtPmRldjsKPiBAQCAtMjE2MCw2ICsyMTYxLDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpnZW42X3BwZ3R0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkK PiAgIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gICAKPiAgIAlrcmVmX2luaXQoJnBwZ3R0 LT5iYXNlLnJlZik7Cj4gKwlwcGd0dC0+YmFzZS5vcGVuX2NvdW50ID0gMTsKPiAgIAo+ICAgCXBw Z3R0LT5iYXNlLnZtLmk5MTUgPSBpOTE1Owo+ICAgCXBwZ3R0LT5iYXNlLnZtLmRtYSA9ICZpOTE1 LT5kcm0ucGRldi0+ZGV2Owo+IEBAIC0yMjg1LDEwICsyMjg3LDIxIEBAIGk5MTVfcHBndHRfY3Jl YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCXJldHVybiBwcGd0dDsKPiAg IH0KPiAgIAo+IC12b2lkIGk5MTVfcHBndHRfY2xvc2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0pCj4gK3ZvaWQgaTkxNV9wcGd0dF9vcGVuKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0 dCkKPiAgIHsKPiAtCUdFTV9CVUdfT04odm0tPmNsb3NlZCk7Cj4gLQl2bS0+Y2xvc2VkID0gdHJ1 ZTsKPiArCUdFTV9CVUdfT04ocHBndHQtPnZtLmNsb3NlZCk7Cj4gKwo+ICsJcHBndHQtPm9wZW5f Y291bnQrKzsKPiArfQo+ICsKPiArdm9pZCBpOTE1X3BwZ3R0X2Nsb3NlKHN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpwcGd0dCkKPiArewo+ICsJR0VNX0JVR19PTighcHBndHQtPm9wZW5fY291bnQpOwo+ ICsJaWYgKC0tcHBndHQtPm9wZW5fY291bnQpCj4gKwkJcmV0dXJuOwo+ICsKPiArCUdFTV9CVUdf T04ocHBndHQtPnZtLmNsb3NlZCk7Cj4gKwlwcGd0dC0+dm0uY2xvc2VkID0gdHJ1ZTsKPiAgIH0K PiAgIAo+ICAgc3RhdGljIHZvaWQgcHBndHRfZGVzdHJveV92bWEoc3RydWN0IGk5MTVfYWRkcmVz c19zcGFjZSAqdm0pCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBpbmRleCA4NDlh MWY2N2IwMzcuLjUxMmE1YTBhYjgyMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5oCj4gQEAgLTQwOCw2ICs0MDgsOCBAQCBzdHJ1Y3QgaTkxNV9od19wcGd0dCB7Cj4gICAJc3Ry dWN0IGtyZWYgcmVmOwo+ICAgCj4gICAJdW5zaWduZWQgbG9uZyBwZF9kaXJ0eV9yaW5nczsKPiAr CXVuc2lnbmVkIGludCBvcGVuX2NvdW50Owo+ICsKPiAgIAl1bmlvbiB7Cj4gICAJCXN0cnVjdCBp OTE1X3BtbDQgcG1sNDsJCS8qIEdFTjgrICYgNDhiIFBQR1RUICovCj4gICAJCXN0cnVjdCBpOTE1 X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgcGRwOwkvKiBHRU44KyAqLwo+IEBAIC02MjYsMTIgKzYy OCwxNiBAQCBpbnQgaTkxNV9wcGd0dF9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7Cj4gICB2b2lkIGk5MTVfcHBndHRfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZik7 Cj4gICBzdHJ1Y3QgaTkxNV9od19wcGd0dCAqaTkxNV9wcGd0dF9jcmVhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQkJCQlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2 YXRlICpmcHJpdik7Cj4gLXZvaWQgaTkxNV9wcGd0dF9jbG9zZShzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSk7Cj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3BwZ3R0X2dldChzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQpCj4gKwo+ICt2b2lkIGk5MTVfcHBndHRfb3BlbihzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQpOwo+ICt2b2lkIGk5MTVfcHBndHRfY2xvc2Uoc3RydWN0IGk5 MTVfaHdfcHBndHQgKnBwZ3R0KTsKPiArCj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfaHdf cHBndHQgKmk5MTVfcHBndHRfZ2V0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgIHsK PiAtCWlmIChwcGd0dCkKPiAtCQlrcmVmX2dldCgmcHBndHQtPnJlZik7Cj4gKwlrcmVmX2dldCgm cHBndHQtPnJlZik7Cj4gKwlyZXR1cm4gcHBndHQ7Cj4gICB9Cj4gKwo+ICAgc3RhdGljIGlubGlu ZSB2b2lkIGk5MTVfcHBndHRfcHV0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgIHsK PiAgIAlpZiAocHBndHQpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9odWdlX3BhZ2VzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9w YWdlcy5jCj4gaW5kZXggNGFiOThkYjk0NmM4Li5hZDI1ODYwYTMzMzYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMKPiBAQCAtMTcyNCw3ICsxNzI0 LDYgQEAgaW50IGk5MTVfZ2VtX2h1Z2VfcGFnZV9tb2NrX3NlbGZ0ZXN0cyh2b2lkKQo+ICAgCWVy ciA9IGk5MTVfc3VidGVzdHModGVzdHMsIHBwZ3R0KTsKPiAgIAo+ICAgb3V0X2Nsb3NlOgo+IC0J aTkxNV9wcGd0dF9jbG9zZSgmcHBndHQtPnZtKTsKPiAgIAlpOTE1X3BwZ3R0X3B1dChwcGd0dCk7 Cj4gICAKPiAgIG91dF91bmxvY2s6Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggYzdjODkxYTI4N2Y1Li43ZWYzZjlhM2I3 MjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt X2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dl bV9jb250ZXh0LmMKPiBAQCAtMTMxLDcgKzEzMSw5IEBAIHN0YXRpYyBpbnQgbGl2ZV9ub3Bfc3dp dGNoKHZvaWQgKmFyZykKPiAgIAl9Cj4gICAKPiAgIAlmb3IgKG4gPSAwOyBuIDwgbmN0eDsgbisr KSB7Cj4gLQkJY3R4W25dID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJp dmVyX3ByaXYpOwo+ICsJCWN0eFtuXSA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsCj4g KwkJCQkJCSBmaWxlLT5kcml2ZXJfcHJpdiwKPiArCQkJCQkJIENSRUFURV9WTSk7Cj4gICAJCWlm IChJU19FUlIoY3R4W25dKSkgewo+ICAgCQkJZXJyID0gUFRSX0VSUihjdHhbbl0pOwo+ICAgCQkJ Z290byBvdXRfdW5sb2NrOwo+IEBAIC0zMTcsMTAgKzMxOSw2IEBAIHN0YXRpYyBpbnQgZ3B1X2Zp bGwoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAlpZiAoSVNfRVJSKHZtYSkp Cj4gICAJCXJldHVybiBQVFJfRVJSKHZtYSk7Cj4gICAKPiAtCWVyciA9IGk5MTVfZ2VtX29iamVj dF9zZXRfdG9fZ3R0X2RvbWFpbihvYmosIGZhbHNlKTsKPiAtCWlmIChlcnIpCj4gLQkJcmV0dXJu IGVycjsKPiAtCgpVbnJlbGF0ZWQgaHVuaz8KCj4gICAJZXJyID0gaTkxNV92bWFfcGluKHZtYSwg MCwgMCwgUElOX0hJR0ggfCBQSU5fVVNFUik7Cj4gICAJaWYgKGVycikKPiAgIAkJcmV0dXJuIGVy cjsKPiBAQCAtNDE1LDcgKzQxMyw4IEBAIHN0YXRpYyBpbnQgY3B1X2ZpbGwoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaiwgdTMyIHZhbHVlKQo+ICAgCXJldHVybiAwOwo+ICAgfQo+ICAg Cj4gLXN0YXRpYyBpbnQgY3B1X2NoZWNrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos IHVuc2lnbmVkIGludCBtYXgpCj4gK3N0YXRpYyBub2lubGluZSBpbnQgY3B1X2NoZWNrKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJCSAgICAgIHVuc2lnbmVkIGludCBpZHgs IHVuc2lnbmVkIGludCBtYXgpCj4gICB7Cj4gICAJdW5zaWduZWQgaW50IG4sIG0sIG5lZWRzX2Zs dXNoOwo+ICAgCWludCBlcnI7Cj4gQEAgLTQzMyw4ICs0MzIsOCBAQCBzdGF0aWMgaW50IGNwdV9j aGVjayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1bnNpZ25lZCBpbnQgbWF4KQo+ ICAgCj4gICAJCWZvciAobSA9IDA7IG0gPCBtYXg7IG0rKykgewo+ICAgCQkJaWYgKG1hcFttXSAh PSBtKSB7Cj4gLQkJCQlwcl9lcnIoIkludmFsaWQgdmFsdWUgYXQgcGFnZSAlZCwgb2Zmc2V0ICVk OiBmb3VuZCAleCBleHBlY3RlZCAleFxuIiwKPiAtCQkJCSAgICAgICBuLCBtLCBtYXBbbV0sIG0p Owo+ICsJCQkJcHJfZXJyKCIlcFM6IEludmFsaWQgdmFsdWUgYXQgb2JqZWN0ICVkIHBhZ2UgJWQs IG9mZnNldCAlZDogZm91bmQgJXggZXhwZWN0ZWQgJXhcbiIsCj4gKwkJCQkgICAgICAgX19idWls dGluX3JldHVybl9hZGRyZXNzKDApLCBpZHgsIG4sIG0sIG1hcFttXSwgbSk7Cj4gICAJCQkJZXJy ID0gLUVJTlZBTDsKPiAgIAkJCQlnb3RvIG91dF91bm1hcDsKPiAgIAkJCX0KPiBAQCAtNDQyLDgg KzQ0MSw5IEBAIHN0YXRpYyBpbnQgY3B1X2NoZWNrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosIHVuc2lnbmVkIGludCBtYXgpCj4gICAKPiAgIAkJZm9yICg7IG0gPCBEV19QRVJfUEFH RTsgbSsrKSB7Cj4gICAJCQlpZiAobWFwW21dICE9IFNUQUNLX01BR0lDKSB7Cj4gLQkJCQlwcl9l cnIoIkludmFsaWQgdmFsdWUgYXQgcGFnZSAlZCwgb2Zmc2V0ICVkOiBmb3VuZCAleCBleHBlY3Rl ZCAleFxuIiwKPiAtCQkJCSAgICAgICBuLCBtLCBtYXBbbV0sIFNUQUNLX01BR0lDKTsKPiArCQkJ CXByX2VycigiJXBTOiBJbnZhbGlkIHZhbHVlIGF0IG9iamVjdCAlZCBwYWdlICVkLCBvZmZzZXQg JWQ6IGZvdW5kICV4IGV4cGVjdGVkICV4XG4iLAo+ICsJCQkJICAgICAgIF9fYnVpbHRpbl9yZXR1 cm5fYWRkcmVzcygwKSwgaWR4LCBuLCBtLAo+ICsJCQkJICAgICAgIG1hcFttXSwgU1RBQ0tfTUFH SUMpOwo+ICAgCQkJCWVyciA9IC1FSU5WQUw7Cj4gICAJCQkJZ290byBvdXRfdW5tYXA7Cj4gICAJ CQl9Cj4gQEAgLTUwNiw2ICs1MDYsMTAgQEAgY3JlYXRlX3Rlc3Rfb2JqZWN0KHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgsCj4gICAJCXJldHVybiBFUlJfUFRSKGVycik7Cj4gICAJfQo+ICAg Cj4gKwllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0dF9kb21haW4ob2JqLCBmYWxzZSk7 Cj4gKwlpZiAoZXJyKQo+ICsJCXJldHVybiBFUlJfUFRSKGVycik7Cj4gKwoKQW5kIHRoZXNlIG9u ZXMgdW5yZWxhdGVkIGFzIHdlbGw/Cgo+ICAgCWxpc3RfYWRkX3RhaWwoJm9iai0+c3RfbGluaywg b2JqZWN0cyk7Cj4gICAJcmV0dXJuIG9iajsKPiAgIH0KPiBAQCAtNTIxLDEyICs1MjUsOCBAQCBz dGF0aWMgdW5zaWduZWQgbG9uZyBtYXhfZHdvcmRzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmopCj4gICBzdGF0aWMgaW50IGlndF9jdHhfZXhlYyh2b2lkICphcmcpCj4gICB7Cj4gICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqID0gTlVMTDsKPiAtCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKPiAtCUlH VF9USU1FT1VUKGVuZF90aW1lKTsKPiAtCUxJU1RfSEVBRChvYmplY3RzKTsKPiAtCXVuc2lnbmVk IGxvbmcgbmNvbnRleHRzLCBuZHdvcmRzLCBkdzsKPiAtCWJvb2wgZmlyc3Rfc2hhcmVkX2d0dCA9 IHRydWU7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwllbnVtIGludGVs X2VuZ2luZV9pZCBpZDsKPiAgIAlpbnQgZXJyID0gLUVOT0RFVjsKPiAgIAo+ICAgCS8qCj4gQEAg LTUzOCw0MiArNTM4LDE2OSBAQCBzdGF0aWMgaW50IGlndF9jdHhfZXhlYyh2b2lkICphcmcpCj4g ICAJaWYgKCFEUklWRVJfQ0FQUyhpOTE1KS0+aGFzX2xvZ2ljYWxfY29udGV4dHMpCj4gICAJCXJl dHVybiAwOwo+ICAgCj4gLQlmaWxlID0gbW9ja19maWxlKGk5MTUpOwo+IC0JaWYgKElTX0VSUihm aWxlKSkKPiAtCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKPiArCWZvcl9lYWNoX2VuZ2luZShlbmdp bmUsIGk5MTUsIGlkKSB7Cj4gKwkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IE5V TEw7Cj4gKwkJc3RydWN0IGRybV9maWxlICpmaWxlOwo+ICsJCUlHVF9USU1FT1VUKGVuZF90aW1l KTsKPiArCQlMSVNUX0hFQUQob2JqZWN0cyk7Cj4gKwkJdW5zaWduZWQgbG9uZyBuY29udGV4dHMs IG5kd29yZHMsIGR3Owo+ICsJCWJvb2wgZmlyc3Rfc2hhcmVkX2d0dCA9IHRydWU7Cj4gKwo+ICsJ CWlmICghaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdpbmUpKQo+ICsJCQljb250aW51 ZTsKPiAgIAo+IC0JbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwkJaWYg KCFlbmdpbmUtPmNvbnRleHRfc2l6ZSkKPiArCQkJY29udGludWU7IC8qIE5vIGxvZ2ljYWwgY29u dGV4dCBzdXBwb3J0IGluIEhXICovCj4gICAKPiAtCW5jb250ZXh0cyA9IDA7Cj4gLQluZHdvcmRz ID0gMDsKPiAtCWR3ID0gMDsKPiAtCXdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCBlbmRfdGlt ZSkpIHsKPiAtCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gLQkJc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAtCQl1bnNpZ25lZCBpbnQgaWQ7Cj4gICAKPiAtCQlpZiAo Zmlyc3Rfc2hhcmVkX2d0dCkgewo+IC0JCQljdHggPSBfX2NyZWF0ZV9od19jb250ZXh0KGk5MTUs IGZpbGUtPmRyaXZlcl9wcml2KTsKPiAtCQkJZmlyc3Rfc2hhcmVkX2d0dCA9IGZhbHNlOwo+IC0J CX0gZWxzZSB7Cj4gLQkJCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUt PmRyaXZlcl9wcml2KTsKPiArCQlmaWxlID0gbW9ja19maWxlKGk5MTUpOwo+ICsJCWlmIChJU19F UlIoZmlsZSkpCj4gKwkJCXJldHVybiBQVFJfRVJSKGZpbGUpOwo+ICsKPiArCQltdXRleF9sb2Nr KCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwkJbmNvbnRleHRzID0gMDsKPiArCQlu ZHdvcmRzID0gMDsKPiArCQlkdyA9IDA7Cj4gKwkJd2hpbGUgKCF0aW1lX2FmdGVyKGppZmZpZXMs IGVuZF90aW1lKSkgewo+ICsJCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICsJCQlp bnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiArCj4gKwkJCWlmIChmaXJzdF9zaGFyZWRfZ3R0KSB7 Cj4gKwkJCQljdHggPSBfX2NyZWF0ZV9od19jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2 KTsKPiArCQkJCWZpcnN0X3NoYXJlZF9ndHQgPSBmYWxzZTsKPiArCQkJfSBlbHNlIHsKPiArCQkJ CWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsCj4gKwkJCQkJCQkgICAgICBmaWxl LT5kcml2ZXJfcHJpdiwKPiArCQkJCQkJCSAgICAgIENSRUFURV9WTSk7Cj4gKwkJCX0KPiArCQkJ aWYgKElTX0VSUihjdHgpKSB7Cj4gKwkJCQllcnIgPSBQVFJfRVJSKGN0eCk7Cj4gKwkJCQlnb3Rv IG91dF91bmxvY2s7Cj4gKwkJCX0KPiArCj4gKwkJCWlmICghb2JqKSB7Cj4gKwkJCQlvYmogPSBj cmVhdGVfdGVzdF9vYmplY3QoY3R4LCBmaWxlLCAmb2JqZWN0cyk7Cj4gKwkJCQlpZiAoSVNfRVJS KG9iaikpIHsKPiArCQkJCQllcnIgPSBQVFJfRVJSKG9iaik7Cj4gKwkJCQkJZ290byBvdXRfdW5s b2NrOwo+ICsJCQkJfQo+ICsJCQl9Cj4gKwo+ICsJCQl3YWtlcmVmID0gaW50ZWxfcnVudGltZV9w bV9nZXQoaTkxNSk7Cj4gKwkJCWVyciA9IGdwdV9maWxsKG9iaiwgY3R4LCBlbmdpbmUsIGR3KTsK PiArCQkJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSwgd2FrZXJlZik7Cj4gKwkJCWlmIChlcnIp IHsKPiArCQkJCXByX2VycigiRmFpbGVkIHRvIGZpbGwgZHdvcmQgJWx1IFslbHUvJWx1XSB3aXRo IGdwdSAoJXMpIGluIGN0eCAldSBbZnVsbC1wcGd0dD8gJXNdLCBlcnI9JWRcbiIsCj4gKwkJCQkg ICAgICAgbmR3b3JkcywgZHcsIG1heF9kd29yZHMob2JqKSwKPiArCQkJCSAgICAgICBlbmdpbmUt Pm5hbWUsIGN0eC0+aHdfaWQsCj4gKwkJCQkgICAgICAgeWVzbm8oISFjdHgtPnBwZ3R0KSwgZXJy KTsKPiArCQkJCWdvdG8gb3V0X3VubG9jazsKPiArCQkJfQo+ICsKPiArCQkJaWYgKCsrZHcgPT0g bWF4X2R3b3JkcyhvYmopKSB7Cj4gKwkJCQlvYmogPSBOVUxMOwo+ICsJCQkJZHcgPSAwOwo+ICsJ CQl9Cj4gKwo+ICsJCQluZHdvcmRzKys7Cj4gKwkJCW5jb250ZXh0cysrOwo+ICAgCQl9Cj4gLQkJ aWYgKElTX0VSUihjdHgpKSB7Cj4gLQkJCWVyciA9IFBUUl9FUlIoY3R4KTsKPiArCj4gKwkJcHJf aW5mbygiU3VibWl0dGVkICVsdSBjb250ZXh0cyB0byAlcywgZmlsbGluZyAlbHUgZHdvcmRzXG4i LAo+ICsJCQluY29udGV4dHMsIGVuZ2luZS0+bmFtZSwgbmR3b3Jkcyk7Cj4gKwo+ICsJCW5jb250 ZXh0cyA9IGR3ID0gMDsKPiArCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG9iaiwgJm9iamVjdHMsIHN0 X2xpbmspIHsKPiArCQkJdW5zaWduZWQgaW50IHJlbSA9Cj4gKwkJCQltaW5fdCh1bnNpZ25lZCBp bnQsIG5kd29yZHMgLSBkdywgbWF4X2R3b3JkcyhvYmopKTsKPiArCj4gKwkJCWVyciA9IGNwdV9j aGVjayhvYmosIG5jb250ZXh0cysrLCByZW0pOwo+ICsJCQlpZiAoZXJyKQo+ICsJCQkJYnJlYWs7 Cj4gKwo+ICsJCQlkdyArPSByZW07Cj4gKwkJfQo+ICsKPiArb3V0X3VubG9jazoKPiArCQlpOTE1 X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsCj4gKwkJCQkgICAgICAgSTkxNV9XQUlUX0xPQ0tFRCwK PiArCQkJCSAgICAgICBNQVhfU0NIRURVTEVfVElNRU9VVCk7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwkJbW9ja19maWxlX2ZyZWUoaTkxNSwgZmls ZSk7Cj4gKwkJaWYgKGVycikKPiArCQkJcmV0dXJuIGVycjsKPiArCX0KPiArCj4gKwlyZXR1cm4g MDsKPiArfQo+ICsKPiArc3RhdGljIGludCBpZ3Rfc2hhcmVkX2N0eF9leGVjKHZvaWQgKmFyZykK PiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKPiAr CWludCBlcnIgPSAtRU5PREVWOwo+ICsKPiArCS8qCj4gKwkgKiBDcmVhdGUgYSBmZXcgZGlmZmVy ZW50IGNvbnRleHRzIHdpdGggdGhlIHNhbWUgbW0gYW5kIHdyaXRlCj4gKwkgKiB0aHJvdWdoIGVh Y2ggY3R4IHVzaW5nIHRoZSBHUFUgbWFraW5nIHN1cmUgdGhvc2Ugd3JpdGVzIGVuZAo+ICsJICog dXAgaW4gdGhlIGV4cGVjdGVkIHBhZ2VzIG9mIG91ciBvYmouCj4gKwkgKi8KPiArCj4gKwlmb3Jf ZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+ICsJCUlHVF9USU1FT1VUKGVuZF90aW1l KTsKPiArCQlMSVNUX0hFQUQob2JqZWN0cyk7Cj4gKwkJdW5zaWduZWQgbG9uZyBuY29udGV4dHMs IG5kd29yZHMsIGR3Owo+ICsJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBOVUxM Owo+ICsJCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKPiArCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqcGFyZW50Owo+ICsKPiArCQlpZiAoIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoZW5n aW5lKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWZpbGUgPSBtb2NrX2ZpbGUoaTkxNSk7Cj4g KwkJaWYgKElTX0VSUihmaWxlKSkKPiArCQkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7Cj4gKwo+ICsJ CW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiArCQlwYXJlbnQgPSBp OTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdiwKPiArCQkJCQkJ IENSRUFURV9WTSk7Cj4gKwkJaWYgKElTX0VSUihwYXJlbnQpKSB7Cj4gKwkJCWVyciA9IFBUUl9F UlIocGFyZW50KTsKPiArCQkJaWYgKGVyciA9PSAtRU5PREVWKSAvKiBubyBsb2dpY2FsIGN0eCBz dXBwb3J0ICovCj4gKwkJCQllcnIgPSAwOwo+ICAgCQkJZ290byBvdXRfdW5sb2NrOwo+ICAgCQl9 Cj4gICAKPiAtCQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+ICsJCWlmICgh cGFyZW50LT5wcGd0dCkgewo+ICsJCQllcnIgPSAwOwo+ICsJCQlnb3RvIG91dF91bmxvY2s7Cj4g KwkJfQo+ICsKPiArCQluY29udGV4dHMgPSAwOwo+ICsJCW5kd29yZHMgPSAwOwo+ICsJCWR3ID0g MDsKPiArCQl3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgZW5kX3RpbWUpKSB7Cj4gKwkJCXN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gICAJCQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJl ZjsKPiAgIAo+IC0JCQlpZiAoIWVuZ2luZS0+Y29udGV4dF9zaXplKQo+IC0JCQkJY29udGludWU7 IC8qIE5vIGxvZ2ljYWwgY29udGV4dCBzdXBwb3J0IGluIEhXICovCj4gKwkJCWN0eCA9IGk5MTVf Z2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsCj4gKwkJCQkJCSAgICAgIGZpbGUtPmRyaXZlcl9wcml2 LAo+ICsJCQkJCQkgICAgICAwKTsKPiArCQkJaWYgKElTX0VSUihjdHgpKSB7Cj4gKwkJCQllcnIg PSBQVFJfRVJSKGN0eCk7Cj4gKwkJCQlnb3RvIG91dF91bmxvY2s7Cj4gKwkJCX0KPiAgIAo+IC0J CQlpZiAoIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoZW5naW5lKSkKPiAtCQkJCWNvbnRp bnVlOwo+ICsJCQlpOTE1X3BwZ3R0X29wZW4ocGFyZW50LT5wcGd0dCk7Cj4gKwkJCWN0eC0+cHBn dHQgPSBpOTE1X3BwZ3R0X2dldChwYXJlbnQtPnBwZ3R0KTsKPiArCQkJY3R4LT5kZXNjX3RlbXBs YXRlID0gcGFyZW50LT5kZXNjX3RlbXBsYXRlOwo+ICAgCj4gICAJCQlpZiAoIW9iaikgewo+IC0J CQkJb2JqID0gY3JlYXRlX3Rlc3Rfb2JqZWN0KGN0eCwgZmlsZSwgJm9iamVjdHMpOwo+ICsJCQkJ b2JqID0gY3JlYXRlX3Rlc3Rfb2JqZWN0KHBhcmVudCwgZmlsZSwgJm9iamVjdHMpOwo+ICAgCQkJ CWlmIChJU19FUlIob2JqKSkgewo+ICAgCQkJCQllcnIgPSBQVFJfRVJSKG9iaik7Cj4gICAJCQkJ CWdvdG8gb3V0X3VubG9jazsKPiBAQCAtNTk1LDMyICs3MjIsMzYgQEAgc3RhdGljIGludCBpZ3Rf Y3R4X2V4ZWModm9pZCAqYXJnKQo+ICAgCQkJCW9iaiA9IE5VTEw7Cj4gICAJCQkJZHcgPSAwOwo+ ICAgCQkJfQo+ICsKPiAgIAkJCW5kd29yZHMrKzsKPiArCQkJbmNvbnRleHRzKys7Cj4gICAJCX0K PiAtCQluY29udGV4dHMrKzsKPiAtCX0KPiAtCXByX2luZm8oIlN1Ym1pdHRlZCAlbHUgY29udGV4 dHMgKGFjcm9zcyAldSBlbmdpbmVzKSwgZmlsbGluZyAlbHUgZHdvcmRzXG4iLAo+IC0JCW5jb250 ZXh0cywgSU5URUxfSU5GTyhpOTE1KS0+bnVtX3JpbmdzLCBuZHdvcmRzKTsKPiArCQlwcl9pbmZv KCJTdWJtaXR0ZWQgJWx1IGNvbnRleHRzIHRvICVzLCBmaWxsaW5nICVsdSBkd29yZHNcbiIsCj4g KwkJCW5jb250ZXh0cywgZW5naW5lLT5uYW1lLCBuZHdvcmRzKTsKPiAgIAo+IC0JZHcgPSAwOwo+ IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosICZvYmplY3RzLCBzdF9saW5rKSB7Cj4gLQkJdW5z aWduZWQgaW50IHJlbSA9Cj4gLQkJCW1pbl90KHVuc2lnbmVkIGludCwgbmR3b3JkcyAtIGR3LCBt YXhfZHdvcmRzKG9iaikpOwo+ICsJCW5jb250ZXh0cyA9IGR3ID0gMDsKPiArCQlsaXN0X2Zvcl9l YWNoX2VudHJ5KG9iaiwgJm9iamVjdHMsIHN0X2xpbmspIHsKPiArCQkJdW5zaWduZWQgaW50IHJl bSA9Cj4gKwkJCQltaW5fdCh1bnNpZ25lZCBpbnQsIG5kd29yZHMgLSBkdywgbWF4X2R3b3Jkcyhv YmopKTsKPiAgIAo+IC0JCWVyciA9IGNwdV9jaGVjayhvYmosIHJlbSk7Cj4gLQkJaWYgKGVycikK PiAtCQkJYnJlYWs7Cj4gKwkJCWVyciA9IGNwdV9jaGVjayhvYmosIG5jb250ZXh0cysrLCByZW0p Owo+ICsJCQlpZiAoZXJyKQo+ICsJCQkJYnJlYWs7Cj4gICAKPiAtCQlkdyArPSByZW07Cj4gLQl9 Cj4gKwkJCWR3ICs9IHJlbTsKPiArCQl9Cj4gICAKPiAgIG91dF91bmxvY2s6Cj4gLQlpZiAoaWd0 X2ZsdXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCj4gLQkJZXJyID0gLUVJTzsKPiAt CW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwkJaWYgKGlndF9mbHVz aF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpKQo+ICsJCQllcnIgPSAtRUlPOwo+ICsJCW11 dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAKPiAtCW1vY2tfZmlsZV9m cmVlKGk5MTUsIGZpbGUpOwo+IC0JcmV0dXJuIGVycjsKPiArCQltb2NrX2ZpbGVfZnJlZShpOTE1 LCBmaWxlKTsKPiArCQlpZiAoZXJyKQo+ICsJCQlyZXR1cm4gZXJyOwo+ICsJfQo+ICsKPiArCXJl dHVybiAwOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50IGlndF9jdHhfcmVhZG9ubHkodm9pZCAq YXJnKQo+IEBAIC02NDgsNyArNzc5LDcgQEAgc3RhdGljIGludCBpZ3RfY3R4X3JlYWRvbmx5KHZv aWQgKmFyZykKPiAgIAo+ICAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ ICAgCj4gLQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJf cHJpdik7Cj4gKwljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2 ZXJfcHJpdiwgMCk7Cj4gICAJaWYgKElTX0VSUihjdHgpKSB7Cj4gICAJCWVyciA9IFBUUl9FUlIo Y3R4KTsKPiAgIAkJZ290byBvdXRfdW5sb2NrOwo+IEBAIC03MTQsNyArODQ1LDcgQEAgc3RhdGlj IGludCBpZ3RfY3R4X3JlYWRvbmx5KHZvaWQgKmFyZykKPiAgIAkJaWYgKGk5MTVfZ2VtX29iamVj dF9pc19yZWFkb25seShvYmopKQo+ICAgCQkJbnVtX3dyaXRlcyA9IDA7Cj4gICAKPiAtCQllcnIg PSBjcHVfY2hlY2sob2JqLCBudW1fd3JpdGVzKTsKPiArCQllcnIgPSBjcHVfY2hlY2sob2JqLCAw LCBudW1fd3JpdGVzKTsKPiAgIAkJaWYgKGVycikKPiAgIAkJCWJyZWFrOwo+ICAgCj4gQEAgLTkx Myw2ICsxMDQ0LDcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfbGl2ZV9zZWxmdGVzdHMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAgCQlTVUJURVNUKGxpdmVfbm9wX3N3aXRj aCksCj4gICAJCVNVQlRFU1QoaWd0X2N0eF9leGVjKSwKPiAgIAkJU1VCVEVTVChpZ3RfY3R4X3Jl YWRvbmx5KSwKPiArCQlTVUJURVNUKGlndF9zaGFyZWRfY3R4X2V4ZWMpLAo+ICAgCX07Cj4gICAJ Ym9vbCBmYWtlX2FsaWFzID0gZmFsc2U7Cj4gICAJaW50IGVycjsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCj4gaW5kZXggMzg0MTQ1NThlMThiLi4w ZTBmYzdlZWRiYTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5 MTVfZ2VtX2d0dC5jCj4gQEAgLTEwMjAsNyArMTAyMCw2IEBAIHN0YXRpYyBpbnQgZXhlcmNpc2Vf cHBndHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCj4gICAJZXJyID0g ZnVuYyhkZXZfcHJpdiwgJnBwZ3R0LT52bSwgMCwgcHBndHQtPnZtLnRvdGFsLCBlbmRfdGltZSk7 Cj4gICAKPiAtCWk5MTVfcHBndHRfY2xvc2UoJnBwZ3R0LT52bSk7Cj4gICAJaTkxNV9wcGd0dF9w dXQocHBndHQpOwo+ICAgb3V0X3VubG9jazoKPiAgIAltdXRleF91bmxvY2soJmRldl9wcml2LT5k cm0uc3RydWN0X211dGV4KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2Vs ZnRlc3RzL21vY2tfY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21v Y2tfY29udGV4dC5jCj4gaW5kZXggZDkzN2JkZmYyNmY5Li5hNzUxMWJhOTgzNDIgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5jCj4gQEAgLTky LDcgKzkyLDcgQEAgbGl2ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gICB7Cj4gICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAKPiAtCXJldHVybiBpOTE1X2dlbV9jcmVhdGVfY29u dGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7Cj4gKwlyZXR1cm4gaTkxNV9nZW1fY3JlYXRl X2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYsIENSRUFURV9WTSk7Cj4gICB9Cj4gICAK PiAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvbW9ja19ndHQuYwo+IGluZGV4IDk3NmM4NjJiMzg0Mi4uZTA4ODBkMmM0OThhIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2d0dC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ3R0LmMKPiBAQCAtNjYsNiAr NjYsOCBAQCBtb2NrX3BwZ3R0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQly ZXR1cm4gTlVMTDsKPiAgIAo+ICAgCWtyZWZfaW5pdCgmcHBndHQtPnJlZik7Cj4gKwlwcGd0dC0+ b3Blbl9jb3VudCA9IDE7Cj4gKwo+ICAgCXBwZ3R0LT52bS5pOTE1ID0gaTkxNTsKPiAgIAlwcGd0 dC0+dm0udG90YWwgPSByb3VuZF9kb3duKFU2NF9NQVgsIFBBR0VfU0laRSk7Cj4gICAJcHBndHQt PnZtLmZpbGUgPSBFUlJfUFRSKC1FTk9ERVYpOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPiBpbmRleCA0ZmE3 ZTU0NTAxY2MuLmRjMWM1MmY5NWNhYiAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5 MTVfZHJtLmgKPiArKysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKPiBAQCAtMzg2LDcg KzM4Niw3IEBAIHR5cGVkZWYgc3RydWN0IF9kcm1faTkxNV9zYXJlYSB7Cj4gICAjZGVmaW5lIERS TV9JT0NUTF9JOTE1X1NFVF9TUFJJVEVfQ09MT1JLRVkgRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFT RSArIERSTV9JOTE1X1NFVF9TUFJJVEVfQ09MT1JLRVksIHN0cnVjdCBkcm1faW50ZWxfc3ByaXRl X2NvbG9ya2V5KQo+ICAgI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRVRfU1BSSVRFX0NPTE9SS0VZ IERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRVRfU1BSSVRFX0NPTE9SS0VZ LCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSkKPiAgICNkZWZpbmUgRFJNX0lPQ1RM X0k5MTVfR0VNX1dBSVQJCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1f V0FJVCwgc3RydWN0IGRybV9pOTE1X2dlbV93YWl0KQo+IC0jZGVmaW5lIERSTV9JT0NUTF9JOTE1 X0dFTV9DT05URVhUX0NSRUFURQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1 X0dFTV9DT05URVhUX0NSRUFURSwgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZSkK PiArI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEUJRFJNX0lPV1IgKERS TV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEUsIHN0cnVjdCBkcm1f aTkxNV9nZW1fY29udGV4dF9jcmVhdGVfdjIpCj4gICAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dF TV9DT05URVhUX0RFU1RST1kJRFJNX0lPVyAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dF TV9DT05URVhUX0RFU1RST1ksIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9kZXN0cm95KQo+ ICAgI2RlZmluZSBEUk1fSU9DVExfSTkxNV9SRUdfUkVBRAkJCURSTV9JT1dSIChEUk1fQ09NTUFO RF9CQVNFICsgRFJNX0k5MTVfUkVHX1JFQUQsIHN0cnVjdCBkcm1faTkxNV9yZWdfcmVhZCkKPiAg ICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VUX1JFU0VUX1NUQVRTCQlEUk1fSU9XUiAoRFJNX0NP TU1BTkRfQkFTRSArIERSTV9JOTE1X0dFVF9SRVNFVF9TVEFUUywgc3RydWN0IGRybV9pOTE1X3Jl c2V0X3N0YXRzKQo+IEBAIC0xNDI5LDYgKzE0MjksMTUgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9j b250ZXh0X2NyZWF0ZSB7Cj4gICAJX191MzIgcGFkOwo+ICAgfTsKPiAgIAo+ICtzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX3YyIHsKPiArCS8qICBvdXRwdXQ6IGlkIG9mIG5ldyBj b250ZXh0Ki8KPiArCV9fdTMyIGN0eF9pZDsKPiArCV9fdTMyIGZsYWdzOwo+ICsjZGVmaW5lIEk5 MTVfR0VNX0NPTlRFWFRfU0hBUkVfR1RUIDB4MQo+ICsJX191MzIgc2hhcmVfY3R4Owo+ICsJX191 MzIgcGFkOwo+ICt9OwoKT3IKCl9fdTMyIGN0eF9pZDsKX191MzIgc2hhcmVfY3R4OwpfX3U2NCBm bGFnczsKCmZvciBubyBwYWRkaW5nIG5lZWRlZCBhbmQgZG91YmxlIGFtb3VudCBvZiBmbGFncz8g OikKClJlZ2FyZHMsCgpUdnJ0a28KCj4gKwo+ICAgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X2Rlc3Ryb3kgewo+ICAgCV9fdTMyIGN0eF9pZDsKPiAgIAlfX3UzMiBwYWQ7Cj4gCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=