From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/4] dma-buf: change DMA-buf locking convention v2 Date: Tue, 22 Oct 2019 12:01:30 +0200 Message-ID: <20191022100130.GG11828@phenom.ffwll.local> References: <20191021111524.14793-1-christian.koenig@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm1-x341.google.com (mail-wm1-x341.google.com [IPv6:2a00:1450:4864:20::341]) by gabe.freedesktop.org (Postfix) with ESMTPS id C18AE6E51A for ; Tue, 22 Oct 2019 10:01:34 +0000 (UTC) Received: by mail-wm1-x341.google.com with SMTP id f22so15535871wmc.2 for ; Tue, 22 Oct 2019 03:01:34 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20191021111524.14793-1-christian.koenig@amd.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Christian =?iso-8859-1?Q?K=F6nig?= Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, sumit.semwal@linaro.org, linux-media@vger.kernel.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBPY3QgMjEsIDIwMTkgYXQgMDE6MTU6MjFQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5p ZyB3cm90ZToKPiBUaGlzIHBhdGNoIGlzIGEgc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIHRoZSBs b2NraW5nIGNoYW5nZXMKPiBuZWNlc3NhcnkgdG8gc3VwcG9ydCBkeW5hbWljIERNQS1idWYgaGFu ZGxpbmcuCj4gCj4gSXQgYWRkcyBhIGR5bmFtaWMgZmxhZyBmb3IgYm90aCBpbXBvcnRlcnMgYXMg d2VsbCBhcyBleHBvcnRlcnMKPiBzbyB0aGF0IGRyaXZlcnMgY2FuIGNob29zZSBpZiB0aGV5IHdh bnQgdGhlIHJlc2VydmF0aW9uIG9iamVjdAo+IGxvY2tlZCBvciB1bmxvY2tlZCBkdXJpbmcgbWFw cGluZyBvZiBhdHRhY2htZW50cy4KPiAKPiBGb3IgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIGRyaXZl cnMgd2UgY2FjaGUgdGhlIERNQS1idWYgbWFwcGluZwo+IGR1cmluZyBhdHRhY2hpbmcgYW4gaW1w b3J0ZXIgYXMgc29vbiBhcyBleHBvcnRlci9pbXBvcnRlcgo+IGRpc2FncmVlIG9uIHRoZSBkeW5h bWljIGhhbmRsaW5nLgo+IAo+IFRoaXMgY2hhbmdlIGhhcyBnb25lIHRocm91Z2ggYSBsZW5ndGh5 IGRpc2N1c3Npb24gb24gZHJpLWRldmVsCj4gYW5kIG90aGVyIG1haWxpbmcgbGlzdHMgd2l0aCBh dCBsZWFzdCAzLTQgZGlmZmVyZW50IGF0dGVtcHRzIGFuZAo+IGRlYWQtZW5kcyB1bnRpbCB3ZSBz ZXR0bGVkIG9uIHRoaXMgc29sdXRpb24uIFBsZWFzZSByZWZlciB0byB0aGUKPiBtYWlsaW5nIGxp c3RzIGFyY2hpdmVzIGZvciBmdWxsIGJhY2tncm91bmQgb24gdGhlIGhpc3Rvcnkgb2YKPiB0aGlz IGNoYW5nZS4KCkkga2luZGEgaG9wZWQgZm9yIGEgcmVhbCB3cml0ZS11cCBvZiB3aHkgd2UgZW5k ZWQgdXAgaGVyZSwgbm90IGEgInBsZWFzZQpyZWFkIHRoZSBsYXN0IHllYXIgb3Igc28gb2YgZHJp LWRldmVsIiAuLi4KClNvIGhlcmUncyB3aGF0IEkgdGhpbmsgd2UgbmVlZCB0byBtaW5pbWFsbHkg bWVudGlvbiwgcGxzIGFkZDoKCjxjdXQ+Cklzc3VlcyBhbmQgc29sdXRpb25zIHdlIGNvbnNpZGVy ZWQ6CgotIFdlIGNhbid0IGNoYW5nZSBhbGwgZXhpc3RpbmcgZHJpdmVycywgYW5kIGV4aXN0aW5n IGRyaXZlcnMgaGF2ZSBzdHJvbmcKICBvcGluaW9ucyBhYm91dCB3aGljaCBsb2NrcyB0aGV5J3Jl IGhvbGRpbmcgd2hpbGUgY2FsbGluZwogIGRtYV9idWZfYXR0YWNobWVudF9tYXAvdW5tYXAuIFRo ZSBzb2x1dGlvbiB0byBhdm9pZCB0aGlzIHdhcyB0byBtb3ZlIHRoZQogIGFjdHVhbCBtYXAvdW5t YXAgb3V0IGZyb20gdGhpcyBjYWxsLCBpbnRvIHRoZSBhdHRhY2gvZGV0YWNoIGNhbGxiYWNrcywK ICBhbmQgY2FjaGUgdGhlIG1hcHBpbmcuIFRoaXMgd29ya3MgYmVjYXVzZSBkcml2ZXJzIGRvbid0 IGNhbGwKICBhdHRhY2gvZGV0YWNoIGZyb20gZGVlcCB3aXRoaW4gdGhlaXIgY29kZSBjYWxsY2hh aW5zIChsaWtlIGRlZXAgaW4KICBtZW1vcnkgbWFuYWdlbWVudCBjb2RlIGNhbGxlZCBmcm9tIGNz L2V4ZWNidWYgaW9jdGwpLCBidXQgZGlyZWN0bHkgZnJvbQogIHRoZSBmZDJoYW5kbGUgaW1wbGVt ZW50YXRpb24uCgotIFRoZSBjYWNoaW5nIGhhcyBzb21lIHRyb3VibGVzIG9uIHNvbWUgc29jIGRy aXZlcnMsIHdoaWNoIHNldCBvdGhlciBtb2RlcwogIHRoYW4gRE1BX0JJRElSRUNUSU9OQUwuIFdl IGNhbid0IGhhdmUgMiBpbmNvbXBhdGlibGUgbWFwcGluZ3MsIGFuZCB3ZQogIGNhbid0IHJlLWNy ZWF0ZSB0aGUgbWFwcGluZyBhdCBfbWFwIHRpbWUgZHVlIHRvIHRoZSBhYm92ZSBsb2NraW5nIGZ1 bi4KICBXZSB2ZXJ5IGNhcmVmdWx5IHN0ZXAgYXJvdW5kIHRoYXQgYnkgb25seSBjYWNoaW5nIGF0 IGF0dGFjaCB0aW1lIGlmIHRoZQogIGR5bmFtaWMgbW9kZSBiZXR3ZWVuIGltcG9ydGVyL2V4cG9l cnQgbWlzbWF0Y2hlcy4KCi0gVGhlcmUncyBiZWVuIHF1aXRlIHNvbWUgZGlzY3Vzc2lvbiBvbiBk bWEtYnVmIG1hcHBpbmdzIHdoaWNoIG5lZWQgYWN0aXZlCiAgY2FjaGUgbWFuYWdlbWVudCwgd2hp Y2ggd291bGQgYWxsIGJyZWFrIGRvd24gd2hlbiBjYWNoaW5nLCBwbHVzIHdlIGRvbid0CiAgaGF2 ZSBleHBsaWNpdCBmbHVzaCBvcGVyYXRpb25zIG9uIHRoZSBhdHRhY2htZW50IHNpZGUuIFRoZSBz b2x1dGlvbiB0bwogIHRoaXMgd2FzIHRvIHNocnVnIGFuZCBrZWVwIHRoZSBjdXJyZW50IGRpc2Ny ZXBhbmN5IGJldHdlZW4gd2hhdCB0aGUKICBkbWEtYnVmIGRvY3MgY2xhaW0gYW5kIHdoYXQgaW1w bGVtZW50YXRpb25zIGRvLCB3aXRoIHRoZSBob3BlIHRoYXQgdGhlCiAgYmVnaW4vZW5kX2NwdV9h Y2Nlc3MgaG9va3MgYXJlIGdvb2QgZW5vdWdoIGFuZCB0aGF0IGFsbCBuZWNlc3NhcnkKICBmbHVz aGluZyB0byBrZWVwIGRldmljZSBtYXBwaW5ncyBjb25zaXN0ZW50IHdpbGwgYmUgZG9uZSB0aGVy ZS4KPC9jdXQ+Cj4gCj4gdjI6IGNsZWFudXAgc2V0X25hbWUgbWVyZ2UsIGltcHJvdmUga2VybmVs ZG9jCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5p Z0BhbWQuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jIHwgMTAyICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCj4gIGluY2x1ZGUvbGludXgvZG1hLWJ1 Zi5oICAgfCAgNTcgKysrKysrKysrKysrKysrKysrKy0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTQz IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2RtYS1idWYvZG1hLWJ1Zi5jIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+IGluZGV4IDQz M2Q5MWQ3MTBlNC4uNzUzYmU4NGI1ZmQ2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9k bWEtYnVmLmMKPiArKysgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jCj4gQEAgLTQ1LDEwICs0 NSwxMCBAQCBzdGF0aWMgY2hhciAqZG1hYnVmZnNfZG5hbWUoc3RydWN0IGRlbnRyeSAqZGVudHJ5 LCBjaGFyICpidWZmZXIsIGludCBidWZsZW4pCj4gIAlzaXplX3QgcmV0ID0gMDsKPiAgCj4gIAlk bWFidWYgPSBkZW50cnktPmRfZnNkYXRhOwo+IC0JbXV0ZXhfbG9jaygmZG1hYnVmLT5sb2NrKTsK PiArCWRtYV9yZXN2X2xvY2soZG1hYnVmLT5yZXN2LCBOVUxMKTsKPiAgCWlmIChkbWFidWYtPm5h bWUpCj4gIAkJcmV0ID0gc3RybGNweShuYW1lLCBkbWFidWYtPm5hbWUsIERNQV9CVUZfTkFNRV9M RU4pOwo+IC0JbXV0ZXhfdW5sb2NrKCZkbWFidWYtPmxvY2spOwo+ICsJZG1hX3Jlc3ZfdW5sb2Nr KGRtYWJ1Zi0+cmVzdik7Cj4gIAo+ICAJcmV0dXJuIGR5bmFtaWNfZG5hbWUoZGVudHJ5LCBidWZm ZXIsIGJ1ZmxlbiwgIi8lczolcyIsCj4gIAkJCSAgICAgZGVudHJ5LT5kX25hbWUubmFtZSwgcmV0 ID4gMCA/IG5hbWUgOiAiIik7Cj4gQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgbG9uZyBkbWFf YnVmX3NldF9uYW1lKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIGNvbnN0IGNoYXIgX191c2VyICpi dWYpCj4gIAlpZiAoSVNfRVJSKG5hbWUpKQo+ICAJCXJldHVybiBQVFJfRVJSKG5hbWUpOwo+ICAK PiAtCW11dGV4X2xvY2soJmRtYWJ1Zi0+bG9jayk7Cj4gKwlkbWFfcmVzdl9sb2NrKGRtYWJ1Zi0+ cmVzdiwgTlVMTCk7Cj4gIAlpZiAoIWxpc3RfZW1wdHkoJmRtYWJ1Zi0+YXR0YWNobWVudHMpKSB7 Cj4gIAkJcmV0ID0gLUVCVVNZOwo+ICAJCWtmcmVlKG5hbWUpOwo+IEBAIC0zNDQsNyArMzQ0LDcg QEAgc3RhdGljIGxvbmcgZG1hX2J1Zl9zZXRfbmFtZShzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBj b25zdCBjaGFyIF9fdXNlciAqYnVmKQo+ICAJZG1hYnVmLT5uYW1lID0gbmFtZTsKPiAgCj4gIG91 dF91bmxvY2s6Cj4gLQltdXRleF91bmxvY2soJmRtYWJ1Zi0+bG9jayk7Cj4gKwlkbWFfcmVzdl91 bmxvY2soZG1hYnVmLT5yZXN2KTsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gQEAgLTQwMywx MCArNDAzLDEwIEBAIHN0YXRpYyB2b2lkIGRtYV9idWZfc2hvd19mZGluZm8oc3RydWN0IHNlcV9m aWxlICptLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKPiAgCS8qIERvbid0IGNvdW50IHRoZSB0ZW1wb3Jh cnkgcmVmZXJlbmNlIHRha2VuIGluc2lkZSBwcm9jZnMgc2VxX3Nob3cgKi8KPiAgCXNlcV9wcmlu dGYobSwgImNvdW50Olx0JWxkXG4iLCBmaWxlX2NvdW50KGRtYWJ1Zi0+ZmlsZSkgLSAxKTsKPiAg CXNlcV9wcmludGYobSwgImV4cF9uYW1lOlx0JXNcbiIsIGRtYWJ1Zi0+ZXhwX25hbWUpOwo+IC0J bXV0ZXhfbG9jaygmZG1hYnVmLT5sb2NrKTsKPiArCWRtYV9yZXN2X2xvY2soZG1hYnVmLT5yZXN2 LCBOVUxMKTsKPiAgCWlmIChkbWFidWYtPm5hbWUpCj4gIAkJc2VxX3ByaW50ZihtLCAibmFtZTpc dCVzXG4iLCBkbWFidWYtPm5hbWUpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkbWFidWYtPmxvY2spOwo+ ICsJZG1hX3Jlc3ZfdW5sb2NrKGRtYWJ1Zi0+cmVzdik7Cj4gIH0KPiAgCj4gIHN0YXRpYyBjb25z dCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRtYV9idWZfZm9wcyA9IHsKPiBAQCAtNTI1LDYgKzUy NSwxMCBAQCBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBvcnQoY29uc3Qgc3RydWN0IGRtYV9i dWZfZXhwb3J0X2luZm8gKmV4cF9pbmZvKQo+ICAJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ ICAJfQo+ICAKPiArCWlmIChXQVJOX09OKGV4cF9pbmZvLT5vcHMtPmNhY2hlX3NndF9tYXBwaW5n ICYmCj4gKwkJICAgIGV4cF9pbmZvLT5vcHMtPmR5bmFtaWNfbWFwcGluZykpCj4gKwkJcmV0dXJu IEVSUl9QVFIoLUVJTlZBTCk7Cj4gKwo+ICAJaWYgKCF0cnlfbW9kdWxlX2dldChleHBfaW5mby0+ b3duZXIpKQo+ICAJCXJldHVybiBFUlJfUFRSKC1FTk9FTlQpOwo+ICAKPiBAQCAtNjQ1LDEwICs2 NDksMTEgQEAgdm9pZCBkbWFfYnVmX3B1dChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQo+ICBFWFBP UlRfU1lNQk9MX0dQTChkbWFfYnVmX3B1dCk7Cj4gIAo+ICAvKioKPiAtICogZG1hX2J1Zl9hdHRh Y2ggLSBBZGQgdGhlIGRldmljZSB0byBkbWFfYnVmJ3MgYXR0YWNobWVudHMgbGlzdDsgb3B0aW9u YWxseSwKPiArICogZG1hX2J1Zl9keW5hbWljX2F0dGFjaCAtIEFkZCB0aGUgZGV2aWNlIHRvIGRt YV9idWYncyBhdHRhY2htZW50cyBsaXN0OyBvcHRpb25hbGx5LAo+ICAgKiBjYWxscyBhdHRhY2go KSBvZiBkbWFfYnVmX29wcyB0byBhbGxvdyBkZXZpY2Utc3BlY2lmaWMgYXR0YWNoIGZ1bmN0aW9u YWxpdHkKPiAtICogQGRtYWJ1ZjoJW2luXQlidWZmZXIgdG8gYXR0YWNoIGRldmljZSB0by4KPiAt ICogQGRldjoJW2luXQlkZXZpY2UgdG8gYmUgYXR0YWNoZWQuCj4gKyAqIEBkbWFidWY6CQlbaW5d CWJ1ZmZlciB0byBhdHRhY2ggZGV2aWNlIHRvLgo+ICsgKiBAZGV2OgkJW2luXQlkZXZpY2UgdG8g YmUgYXR0YWNoZWQuCj4gKyAqIEBkeW5hbWljX21hcHBpbmc6CVtpbl0JY2FsbGluZyBjb252ZW50 aW9uIGZvciBtYXAvdW5tYXAKPiAgICoKPiAgICogUmV0dXJucyBzdHJ1Y3QgZG1hX2J1Zl9hdHRh Y2htZW50IHBvaW50ZXIgZm9yIHRoaXMgYXR0YWNobWVudC4gQXR0YWNobWVudHMKPiAgICogbXVz dCBiZSBjbGVhbmVkIHVwIGJ5IGNhbGxpbmcgZG1hX2J1Zl9kZXRhY2goKS4KPiBAQCAtNjYyLDgg KzY2Nyw5IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGRtYV9idWZfcHV0KTsKPiAgICogYWNjZXNzaWJs ZSB0byBAZGV2LCBhbmQgY2Fubm90IGJlIG1vdmVkIHRvIGEgbW9yZSBzdWl0YWJsZSBwbGFjZS4g VGhpcyBpcwo+ICAgKiBpbmRpY2F0ZWQgd2l0aCB0aGUgZXJyb3IgY29kZSAtRUJVU1kuCj4gICAq Lwo+IC1zdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFfYnVmX2F0dGFjaChzdHJ1Y3QgZG1h X2J1ZiAqZG1hYnVmLAo+IC0JCQkJCSAgc3RydWN0IGRldmljZSAqZGV2KQo+ICtzdHJ1Y3QgZG1h X2J1Zl9hdHRhY2htZW50ICoKPiArZG1hX2J1Zl9keW5hbWljX2F0dGFjaChzdHJ1Y3QgZG1hX2J1 ZiAqZG1hYnVmLCBzdHJ1Y3QgZGV2aWNlICpkZXYsCj4gKwkJICAgICAgIGJvb2wgZHluYW1pY19t YXBwaW5nKQo+ICB7Cj4gIAlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2g7Cj4gIAlp bnQgcmV0Owo+IEBAIC02NzcsNiArNjgzLDcgQEAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAq ZG1hX2J1Zl9hdHRhY2goc3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPiAgCj4gIAlhdHRhY2gtPmRl diA9IGRldjsKPiAgCWF0dGFjaC0+ZG1hYnVmID0gZG1hYnVmOwo+ICsJYXR0YWNoLT5keW5hbWlj X21hcHBpbmcgPSBkeW5hbWljX21hcHBpbmc7Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZG1hYnVmLT5s b2NrKTsKPiAgCj4gQEAgLTY4NSwxNiArNjkyLDY0IEBAIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1l bnQgKmRtYV9idWZfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCj4gIAkJaWYgKHJldCkK PiAgCQkJZ290byBlcnJfYXR0YWNoOwo+ICAJfQo+ICsJZG1hX3Jlc3ZfbG9jayhkbWFidWYtPnJl c3YsIE5VTEwpOwo+ICAJbGlzdF9hZGQoJmF0dGFjaC0+bm9kZSwgJmRtYWJ1Zi0+YXR0YWNobWVu dHMpOwo+ICsJZG1hX3Jlc3ZfdW5sb2NrKGRtYWJ1Zi0+cmVzdik7Cj4gIAo+ICAJbXV0ZXhfdW5s b2NrKCZkbWFidWYtPmxvY2spOwo+ICAKPiArCS8qIFdoZW4gZWl0aGVyIHRoZSBpbXBvcnRlciBv ciB0aGUgZXhwb3J0ZXIgY2FuJ3QgaGFuZGxlIGR5bmFtaWMKPiArCSAqIG1hcHBpbmdzIHdlIGNh Y2hlIHRoZSBtYXBwaW5nIGhlcmUgdG8gYXZvaWQgaXNzdWVzIHdpdGggdGhlCj4gKwkgKiByZXNl cnZhdGlvbiBvYmplY3QgbG9jay4KPiArCSAqLwo+ICsJaWYgKGRtYV9idWZfYXR0YWNobWVudF9p c19keW5hbWljKGF0dGFjaCkgIT0KPiArCSAgICBkbWFfYnVmX2lzX2R5bmFtaWMoZG1hYnVmKSkg ewo+ICsJCXN0cnVjdCBzZ190YWJsZSAqc2d0Owo+ICsKPiArCQlpZiAoZG1hX2J1Zl9pc19keW5h bWljKGF0dGFjaC0+ZG1hYnVmKSkKPiArCQkJZG1hX3Jlc3ZfbG9jayhhdHRhY2gtPmRtYWJ1Zi0+ cmVzdiwgTlVMTCk7Cj4gKwo+ICsJCXNndCA9IGRtYWJ1Zi0+b3BzLT5tYXBfZG1hX2J1ZihhdHRh Y2gsIERNQV9CSURJUkVDVElPTkFMKTsKPiArCQlpZiAoIXNndCkKPiArCQkJc2d0ID0gRVJSX1BU UigtRU5PTUVNKTsKPiArCQlpZiAoSVNfRVJSKHNndCkpIHsKPiArCQkJcmV0ID0gUFRSX0VSUihz Z3QpOwo+ICsJCQlnb3RvIGVycl91bmxvY2s7Cj4gKwkJfQo+ICsJCWlmIChkbWFfYnVmX2lzX2R5 bmFtaWMoYXR0YWNoLT5kbWFidWYpKQo+ICsJCQlkbWFfcmVzdl91bmxvY2soYXR0YWNoLT5kbWFi dWYtPnJlc3YpOwo+ICsJCWF0dGFjaC0+c2d0ID0gc2d0Owo+ICsJCWF0dGFjaC0+ZGlyID0gRE1B X0JJRElSRUNUSU9OQUw7Cj4gKwl9Cj4gKwo+ICAJcmV0dXJuIGF0dGFjaDsKPiAgCj4gIGVycl9h dHRhY2g6Cj4gIAlrZnJlZShhdHRhY2gpOwo+ICAJbXV0ZXhfdW5sb2NrKCZkbWFidWYtPmxvY2sp Owo+ICAJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiArCj4gK2Vycl91bmxvY2s6Cj4gKwlpZiAoZG1h X2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ZG1hYnVmKSkKPiArCQlkbWFfcmVzdl91bmxvY2soYXR0 YWNoLT5kbWFidWYtPnJlc3YpOwo+ICsKPiArCWRtYV9idWZfZGV0YWNoKGRtYWJ1ZiwgYXR0YWNo KTsKPiArCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwoZG1h X2J1Zl9keW5hbWljX2F0dGFjaCk7Cj4gKwo+ICsvKioKPiArICogZG1hX2J1Zl9hdHRhY2ggLSBX cmFwcGVyIGZvciBkbWFfYnVmX2R5bmFtaWNfYXR0YWNoCj4gKyAqIEBkbWFidWY6CVtpbl0JYnVm ZmVyIHRvIGF0dGFjaCBkZXZpY2UgdG8uCj4gKyAqIEBkZXY6CVtpbl0JZGV2aWNlIHRvIGJlIGF0 dGFjaGVkLgo+ICsgKgo+ICsgKiBXcmFwcGVyIHRvIGNhbGwgZG1hX2J1Zl9keW5hbWljX2F0dGFj aCgpIGZvciBkcml2ZXJzIHdoaWNoIHN0aWxsIHVzZSBhIHN0YXRpYwo+ICsgKiBtYXBwaW5nLgo+ ICsgKi8KPiArc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqZG1hX2J1Zl9hdHRhY2goc3RydWN0 IGRtYV9idWYgKmRtYWJ1ZiwKPiArCQkJCQkgIHN0cnVjdCBkZXZpY2UgKmRldikKPiArewo+ICsJ cmV0dXJuIGRtYV9idWZfZHluYW1pY19hdHRhY2goZG1hYnVmLCBkZXYsIGZhbHNlKTsKPiAgfQo+ ICBFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX2F0dGFjaCk7Cj4gIAo+IEBAIC03MTEsMTEgKzc2 NiwyMCBAQCB2b2lkIGRtYV9idWZfZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVj dCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCkKPiAgCWlmIChXQVJOX09OKCFkbWFidWYgfHwg IWF0dGFjaCkpCj4gIAkJcmV0dXJuOwo+ICAKPiAtCWlmIChhdHRhY2gtPnNndCkKPiArCWlmIChh dHRhY2gtPnNndCkgewo+ICsJCWlmIChkbWFfYnVmX2lzX2R5bmFtaWMoYXR0YWNoLT5kbWFidWYp KQo+ICsJCQlkbWFfcmVzdl9sb2NrKGF0dGFjaC0+ZG1hYnVmLT5yZXN2LCBOVUxMKTsKPiArCj4g IAkJZG1hYnVmLT5vcHMtPnVubWFwX2RtYV9idWYoYXR0YWNoLCBhdHRhY2gtPnNndCwgYXR0YWNo LT5kaXIpOwo+ICAKPiArCQlpZiAoZG1hX2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ZG1hYnVmKSkK PiArCQkJZG1hX3Jlc3ZfdW5sb2NrKGF0dGFjaC0+ZG1hYnVmLT5yZXN2KTsKPiArCX0KPiArCj4g IAltdXRleF9sb2NrKCZkbWFidWYtPmxvY2spOwo+ICsJZG1hX3Jlc3ZfbG9jayhkbWFidWYtPnJl c3YsIE5VTEwpOwo+ICAJbGlzdF9kZWwoJmF0dGFjaC0+bm9kZSk7Cj4gKwlkbWFfcmVzdl91bmxv Y2soZG1hYnVmLT5yZXN2KTsKPiAgCWlmIChkbWFidWYtPm9wcy0+ZGV0YWNoKQo+ICAJCWRtYWJ1 Zi0+b3BzLT5kZXRhY2goZG1hYnVmLCBhdHRhY2gpOwo+ICAKPiBAQCAtNzQ5LDYgKzgxMyw5IEBA IHN0cnVjdCBzZ190YWJsZSAqZG1hX2J1Zl9tYXBfYXR0YWNobWVudChzdHJ1Y3QgZG1hX2J1Zl9h dHRhY2htZW50ICphdHRhY2gsCj4gIAlpZiAoV0FSTl9PTighYXR0YWNoIHx8ICFhdHRhY2gtPmRt YWJ1ZikpCj4gIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gIAo+ICsJaWYgKGRtYV9idWZf YXR0YWNobWVudF9pc19keW5hbWljKGF0dGFjaCkpCj4gKwkJZG1hX3Jlc3ZfYXNzZXJ0X2hlbGQo YXR0YWNoLT5kbWFidWYtPnJlc3YpOwo+ICsKPiAgCWlmIChhdHRhY2gtPnNndCkgewo+ICAJCS8q Cj4gIAkJICogVHdvIG1hcHBpbmdzIHdpdGggZGlmZmVyZW50IGRpcmVjdGlvbnMgZm9yIHRoZSBz YW1lCj4gQEAgLTc2MSw2ICs4MjgsOSBAQCBzdHJ1Y3Qgc2dfdGFibGUgKmRtYV9idWZfbWFwX2F0 dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ICAJCXJldHVybiBh dHRhY2gtPnNndDsKPiAgCX0KPiAgCj4gKwlpZiAoZG1hX2J1Zl9pc19keW5hbWljKGF0dGFjaC0+ ZG1hYnVmKSkKPiArCQlkbWFfcmVzdl9hc3NlcnRfaGVsZChhdHRhY2gtPmRtYWJ1Zi0+cmVzdik7 CgpBbG1vc3QgdHJpcHBlZCBtZSB1cCB1bnRpbCBJIG5vdGljZWQgeW91ciBjaGVjayBmb3IgdGhl IGJ1Zi9leHBvcnRlciBoZXJlLgpOaWNlIGNoZWNrIQoKTWF5YmUgd2UgY291bGQgZG8gYW4KCgll bHNlCgkJbG9ja2RlcF9hc3NlcnRfbm90X2hlbGQoKQoKaGVyZT8gT3Blbi1jb2RlZCBvZmMgKG9y IHB1dCBpdCBpbnRvIGRybV91dGlscy5oLCBJIGRvbid0IHdhbnQgdG8gaG9sZCB1cAp0aGlzIHBh dGNoIGFueSBsb25nZXIsIHRoZW4gbW92ZSBpdCB0byBsb2NrZGVwLmggbGF0ZXIgb24pLCBzaW5j ZQpjdXJyZW50bHkgZG9lc24ndCBleGlzdC4gSnVzdCB0byBfcmVhbGx5XyBlbmZvcmNlIHRoZSBk b2N1bWVudGVkIGNvbnRyYWN0CmhlcmUuCgo+ICsKPiAgCXNnX3RhYmxlID0gYXR0YWNoLT5kbWFi dWYtPm9wcy0+bWFwX2RtYV9idWYoYXR0YWNoLCBkaXJlY3Rpb24pOwo+ICAJaWYgKCFzZ190YWJs ZSkKPiAgCQlzZ190YWJsZSA9IEVSUl9QVFIoLUVOT01FTSk7Cj4gQEAgLTc5Myw5ICs4NjMsMTUg QEAgdm9pZCBkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dCAqYXR0YWNoLAo+ICAJaWYgKFdBUk5fT04oIWF0dGFjaCB8fCAhYXR0YWNoLT5kbWFidWYgfHwg IXNnX3RhYmxlKSkKPiAgCQlyZXR1cm47Cj4gIAo+ICsJaWYgKGRtYV9idWZfYXR0YWNobWVudF9p c19keW5hbWljKGF0dGFjaCkpCj4gKwkJZG1hX3Jlc3ZfYXNzZXJ0X2hlbGQoYXR0YWNoLT5kbWFi dWYtPnJlc3YpOwo+ICsKPiAgCWlmIChhdHRhY2gtPnNndCA9PSBzZ190YWJsZSkKPiAgCQlyZXR1 cm47Cj4gIAo+ICsJaWYgKGRtYV9idWZfaXNfZHluYW1pYyhhdHRhY2gtPmRtYWJ1ZikpCj4gKwkJ ZG1hX3Jlc3ZfYXNzZXJ0X2hlbGQoYXR0YWNoLT5kbWFidWYtPnJlc3YpOwo+ICsKPiAgCWF0dGFj aC0+ZG1hYnVmLT5vcHMtPnVubWFwX2RtYV9idWYoYXR0YWNoLCBzZ190YWJsZSwgZGlyZWN0aW9u KTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MX0dQTChkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQpOwo+ IEBAIC0xMjE5LDEwICsxMjk1LDEyIEBAIHN0YXRpYyBpbnQgZG1hX2J1Zl9kZWJ1Z19zaG93KHN0 cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKQo+ICAJCXNlcV9wdXRzKHMsICJcdEF0dGFj aGVkIERldmljZXM6XG4iKTsKPiAgCQlhdHRhY2hfY291bnQgPSAwOwo+ICAKPiArCQlkbWFfcmVz dl9sb2NrKGJ1Zl9vYmotPnJlc3YsIE5VTEwpOwoKWW91J3ZlIHN3aXRjaGVkIGRtYWJ1Zi0+bmFt ZSB0byBiZSBwcm90ZWN0ZWQgYnkgZG1hX3Jlc3YgdG9vLCBzbyB0aGlzCm5lZWRzIHRvIGJlIG1v dmVkIHVwIGFib3ZlIHRoZSBzZXFfcHJpbnRmIHdoaWNoIHByaW50cyAtPm5hbWUuCgo+ICAJCWxp c3RfZm9yX2VhY2hfZW50cnkoYXR0YWNoX29iaiwgJmJ1Zl9vYmotPmF0dGFjaG1lbnRzLCBub2Rl KSB7Cj4gIAkJCXNlcV9wcmludGYocywgIlx0JXNcbiIsIGRldl9uYW1lKGF0dGFjaF9vYmotPmRl dikpOwo+ICAJCQlhdHRhY2hfY291bnQrKzsKPiAgCQl9Cj4gKwkJZG1hX3Jlc3ZfdW5sb2NrKGJ1 Zl9vYmotPnJlc3YpOwo+ICAKPiAgCQlzZXFfcHJpbnRmKHMsICJUb3RhbCAlZCBkZXZpY2VzIGF0 dGFjaGVkXG5cbiIsCj4gIAkJCQlhdHRhY2hfY291bnQpOwo+IGRpZmYgLS1naXQgYS9pbmNsdWRl L2xpbnV4L2RtYS1idWYuaCBiL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4gaW5kZXggZWMyMTJj YjI3ZmRjLi5iY2MwZjRkMGI2NzggMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9kbWEtYnVm LmgKPiArKysgYi9pbmNsdWRlL2xpbnV4L2RtYS1idWYuaAo+IEBAIC00Miw2ICs0MiwxOCBAQCBz dHJ1Y3QgZG1hX2J1Zl9vcHMgewo+ICAJICAqLwo+ICAJYm9vbCBjYWNoZV9zZ3RfbWFwcGluZzsK PiAgCj4gKwkvKioKPiArCSAqIEBkeW5hbWljX21hcHBpbmc6Cj4gKwkgKgo+ICsJICogSWYgdHJ1 ZSB0aGUgZnJhbWV3b3JrIG1ha2VzIHN1cmUgdGhhdCB0aGUgbWFwL3VubWFwX2RtYV9idWYKPiAr CSAqIGNhbGxiYWNrcyBhcmUgYWx3YXlzIGNhbGxlZCB3aXRoIHRoZSBkbWFfcmVzdiBvYmplY3Qg bG9ja2VkLgo+ICsJICoKPiArCSAqIElmIGZhbHNlIHRoZSBmcmFtZXdvcmsgbWFrZXMgdXJlIHRo YXQgdGhlIG1hcC91bm1hcF9kbWFfYnVmCgpzL3VyZS9zdXJlLwoKPiArCSAqIGNhbGxiYWNrcyBh cmUgYWx3YXlzIGNhbGxlZCB3aXRob3V0IHRoZSBkbWFfcmVzdiBvYmplY3QgbG9ja2VkLgo+ICsJ ICogTXV0dWFsIGV4Y2x1c2l2ZSB3aXRoIEBjYWNoZV9zZ3RfbWFwcGluZy4KPiArCSAqLwo+ICsJ Ym9vbCBkeW5hbWljX21hcHBpbmc7Cj4gKwo+ICAJLyoqCj4gIAkgKiBAYXR0YWNoOgo+ICAJICoK PiBAQCAtMTA5LDYgKzEyMSw5IEBAIHN0cnVjdCBkbWFfYnVmX29wcyB7Cj4gIAkgKiBhbnkgb3Ro ZXIga2luZCBvZiBzaGFyaW5nIHRoYXQgdGhlIGV4cG9ydGVyIG1pZ2h0IHdpc2ggdG8gbWFrZQo+ ICAJICogYXZhaWxhYmxlIHRvIGJ1ZmZlci11c2Vycy4KPiAgCSAqCj4gKwkgKiBUaGlzIGlzIGFs d2F5cyBjYWxsZWQgd2l0aCB0aGUgZG1hYnVmLT5yZXN2IG9iamVjdCBsb2NrZWQgd2hlbgo+ICsJ ICogdGhlIGR5bmFtaWNfbWFwcGluZyBmbGFnIGlzIHRydWUuCj4gKwkgKgo+ICAJICogUmV0dXJu czoKPiAgCSAqCj4gIAkgKiBBICZzZ190YWJsZSBzY2F0dGVyIGxpc3Qgb2Ygb3IgdGhlIGJhY2tp bmcgc3RvcmFnZSBvZiB0aGUgRE1BIGJ1ZmZlciwKPiBAQCAtMjY3LDcgKzI4Miw4IEBAIHN0cnVj dCBkbWFfYnVmX29wcyB7Cj4gICAqIHN0cnVjdCBkbWFfYnVmIC0gc2hhcmVkIGJ1ZmZlciBvYmpl Y3QKPiAgICogQHNpemU6IHNpemUgb2YgdGhlIGJ1ZmZlcgo+ICAgKiBAZmlsZTogZmlsZSBwb2lu dGVyIHVzZWQgZm9yIHNoYXJpbmcgYnVmZmVycyBhY3Jvc3MsIGFuZCBmb3IgcmVmY291bnRpbmcu Cj4gLSAqIEBhdHRhY2htZW50czogbGlzdCBvZiBkbWFfYnVmX2F0dGFjaG1lbnQgdGhhdCBkZW5v dGVzIGFsbCBkZXZpY2VzIGF0dGFjaGVkLgo+ICsgKiBAYXR0YWNobWVudHM6IGxpc3Qgb2YgZG1h X2J1Zl9hdHRhY2htZW50IHRoYXQgZGVub3RlcyBhbGwgZGV2aWNlcyBhdHRhY2hlZCwKPiArICog ICAgICAgICAgICAgICBwcm90ZWN0ZWQgYnkgZG1hX3Jlc3YgbG9jay4KPiAgICogQG9wczogZG1h X2J1Zl9vcHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYnVmZmVyIG9iamVjdC4KPiAgICogQGxvY2s6 IHVzZWQgaW50ZXJuYWxseSB0byBzZXJpYWxpemUgbGlzdCBtYW5pcHVsYXRpb24sIGF0dGFjaC9k ZXRhY2ggYW5kCj4gICAqICAgICAgICB2bWFwL3VubWFwLCBhbmQgYWNjZXNzZXMgdG8gbmFtZQoK QG5hbWUgaW4gZG1hX2J1ZiBuZWVkcyB0byBiZSB1cGRhdGVkIHRvIG1lbnRpb24gdGhhdCBpdCdz IHByb3RlY3RlZCBieQpkbWFfcmVzdiBsb2NrLgoKPiBAQCAtMzIzLDEwICszMzksMTIgQEAgc3Ry dWN0IGRtYV9idWYgewo+ICAgKiBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50IC0gaG9sZHMgZGV2 aWNlLWJ1ZmZlciBhdHRhY2htZW50IGRhdGEKPiAgICogQGRtYWJ1ZjogYnVmZmVyIGZvciB0aGlz IGF0dGFjaG1lbnQuCj4gICAqIEBkZXY6IGRldmljZSBhdHRhY2hlZCB0byB0aGUgYnVmZmVyLgo+ IC0gKiBAbm9kZTogbGlzdCBvZiBkbWFfYnVmX2F0dGFjaG1lbnQuCj4gKyAqIEBub2RlOiBsaXN0 IG9mIGRtYV9idWZfYXR0YWNobWVudCwgcHJvdGVjdGVkIGJ5IGRtYV9yZXN2IGxvY2sgb2YgdGhl IGRtYWJ1Zi4KPiAgICogQHNndDogY2FjaGVkIG1hcHBpbmcuCj4gICAqIEBkaXI6IGRpcmVjdGlv biBvZiBjYWNoZWQgbWFwcGluZy4KPiAgICogQHByaXY6IGV4cG9ydGVyIHNwZWNpZmljIGF0dGFj aG1lbnQgZGF0YS4KPiArICogQGR5bmFtaWNfbWFwcGluZzogdHJ1ZSBpZiBkbWFfYnVmX21hcC91 bm1hcF9hdHRhY2htZW50KCkgaXMgY2FsbGVkIHdpdGggdGhlCj4gKyAqIGRtYV9yZXN2IGxvY2sg aGVsZC4KPiAgICoKPiAgICogVGhpcyBzdHJ1Y3R1cmUgaG9sZHMgdGhlIGF0dGFjaG1lbnQgaW5m b3JtYXRpb24gYmV0d2VlbiB0aGUgZG1hX2J1ZiBidWZmZXIKPiAgICogYW5kIGl0cyB1c2VyIGRl dmljZShzKS4gVGhlIGxpc3QgY29udGFpbnMgb25lIGF0dGFjaG1lbnQgc3RydWN0IHBlciBkZXZp Y2UKPiBAQCAtMzQzLDYgKzM2MSw3IEBAIHN0cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgewo+ICAJ c3RydWN0IGxpc3RfaGVhZCBub2RlOwo+ICAJc3RydWN0IHNnX3RhYmxlICpzZ3Q7Cj4gIAllbnVt IGRtYV9kYXRhX2RpcmVjdGlvbiBkaXI7Cj4gKwlib29sIGR5bmFtaWNfbWFwcGluZzsKPiAgCXZv aWQgKnByaXY7Cj4gIH07Cj4gIAo+IEBAIC0zOTQsMTAgKzQxMywzOSBAQCBzdGF0aWMgaW5saW5l IHZvaWQgZ2V0X2RtYV9idWYoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZikKPiAgCWdldF9maWxlKGRt YWJ1Zi0+ZmlsZSk7Cj4gIH0KPiAgCj4gKy8qKgo+ICsgKiBkbWFfYnVmX2lzX2R5bmFtaWMgLSBj aGVjayBpZiBhIERNQS1idWYgdXNlcyBkeW5hbWljIG1hcHBpbmdzLgo+ICsgKiBAZG1hYnVmOiB0 aGUgRE1BLWJ1ZiB0byBjaGVjawo+ICsgKgo+ICsgKiBSZXR1cm5zIHRydWUgaWYgYSBETUEtYnVm IGV4cG9ydGVyIHdhbnRzIHRvIGJlIGNhbGxlZCB3aXRoIHRoZSBkbWFfcmVzdgo+ICsgKiBsb2Nr ZWQsIGZhbHNlIGlmIGl0IGRvZXNuJ3Qgd2FudHMgdG8gYmUgY2FsbGVkIHdpdGggdGhlIGxvY2sg aGVsZC4KCk1heWJlIGFkZGVkICIuLi4gZm9yIHRoZSBtYXAvdW5tYXAgY2FsbGJhY2tzLCAuLi4i IHNpbmNlIHdlIGRvbid0Cmd1YXJhbnRlZSB0byBob2xkIHRoZSBsb2NrIGZvciBhbGwgY2FsbGJh Y2tzLiBZb3UgY2xhcmlmeSB0aGlzIGFscmVhZHkKYmVsb3cuCgo+ICsgKi8KPiArc3RhdGljIGlu bGluZSBib29sIGRtYV9idWZfaXNfZHluYW1pYyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQo+ICt7 Cj4gKwlyZXR1cm4gZG1hYnVmLT5vcHMtPmR5bmFtaWNfbWFwcGluZzsKPiArfQo+ICsKPiArLyoq Cj4gKyAqIGRtYV9idWZfYXR0YWNobWVudF9pc19keW5hbWljIC0gY2hlY2sgaWYgYSBETUEtYnVm IGF0dGFjaG1lbnQgdXNlcyBkeW5hbWljCj4gKyAqIG1hcHBpbnNnCj4gKyAqIEBhdHRhY2g6IHRo ZSBETUEtYnVmIGF0dGFjaG1lbnQgdG8gY2hlY2sKPiArICoKPiArICogUmV0dXJucyB0cnVlIGlm IGEgRE1BLWJ1ZiBpbXBvcnRlciB3YW50cyB0byBjYWxsIHRoZSBtYXAvdW5tYXAgZnVuY3Rpb25z IHdpdGgKPiArICogdGhlIGRtYV9yZXN2IGxvY2sgaGVsZC4KPiArICovCj4gK3N0YXRpYyBpbmxp bmUgYm9vbAo+ICtkbWFfYnVmX2F0dGFjaG1lbnRfaXNfZHluYW1pYyhzdHJ1Y3QgZG1hX2J1Zl9h dHRhY2htZW50ICphdHRhY2gpCj4gK3sKPiArCXJldHVybiBhdHRhY2gtPmR5bmFtaWNfbWFwcGlu ZzsKPiArfQo+ICsKPiAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqZG1hX2J1Zl9hdHRhY2go c3RydWN0IGRtYV9idWYgKmRtYWJ1ZiwKPiAtCQkJCQkJCXN0cnVjdCBkZXZpY2UgKmRldik7Cj4g KwkJCQkJICBzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ICtzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50 ICoKPiArZG1hX2J1Zl9keW5hbWljX2F0dGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1 Y3QgZGV2aWNlICpkZXYsCj4gKwkJICAgICAgIGJvb2wgZHluYW1pY19tYXBwaW5nKTsKPiAgdm9p ZCBkbWFfYnVmX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLAo+IC0JCQkJc3RydWN0IGRt YV9idWZfYXR0YWNobWVudCAqZG1hYnVmX2F0dGFjaCk7Cj4gKwkJICAgIHN0cnVjdCBkbWFfYnVm X2F0dGFjaG1lbnQgKmF0dGFjaCk7Cj4gIAo+ICBzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Zl9leHBv cnQoY29uc3Qgc3RydWN0IGRtYV9idWZfZXhwb3J0X2luZm8gKmV4cF9pbmZvKTsKPiAgCj4gQEAg LTQwOSw2ICs0NTcsNyBAQCBzdHJ1Y3Qgc2dfdGFibGUgKmRtYV9idWZfbWFwX2F0dGFjaG1lbnQo c3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqLAo+ICAJCQkJCWVudW0gZG1hX2RhdGFfZGlyZWN0 aW9uKTsKPiAgdm9pZCBkbWFfYnVmX3VubWFwX2F0dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0 YWNobWVudCAqLCBzdHJ1Y3Qgc2dfdGFibGUgKiwKPiAgCQkJCWVudW0gZG1hX2RhdGFfZGlyZWN0 aW9uKTsKPiArdm9pZCBkbWFfYnVmX21vdmVfbm90aWZ5KHN0cnVjdCBkbWFfYnVmICpkbWFfYnVm KTsKPiAgaW50IGRtYV9idWZfYmVnaW5fY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1 ZiwKPiAgCQkJICAgICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpOwo+ICBpbnQgZG1hX2J1 Zl9lbmRfY3B1X2FjY2VzcyhzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZiwKCldpdGggdGhlIG5pdHMg YWxsIGFkZHJlc3NlZDoKClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVy QGZmd2xsLmNoPgoKPiAtLSAKPiAyLjE3LjEKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJl IEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=