From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH RFC 14/19] drm/bridge: Add the necessary bits to support bus format negotiation Date: Thu, 22 Aug 2019 09:48:34 +0200 Message-ID: <20190822094834.382a54a8@collabora.com> References: <20190808151150.16336-1-boris.brezillon@collabora.com> <20190808151150.16336-15-boris.brezillon@collabora.com> <20190822005556.GB16790@pendragon.ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id D5F7B6E480 for ; Thu, 22 Aug 2019 07:48:38 +0000 (UTC) In-Reply-To: <20190822005556.GB16790@pendragon.ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Jernej Skrabec , Neil Armstrong , Jonas Karlman , Seung-Woo Kim , dri-devel@lists.freedesktop.org, Kyungmin Park , Thierry Reding , Chris Healy , kernel@collabora.com, Sam Ravnborg List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCAyMiBBdWcgMjAxOSAwMzo1NTo1NiArMDMwMApMYXVyZW50IFBpbmNoYXJ0IDxsYXVy ZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+IHdyb3RlOgoKPiBIaSBCb3JpcywKPiAKPiBU aGFuayB5b3UgZm9yIHRoZSBwYXRjaC4KPiAKPiBPbiBUaHUsIEF1ZyAwOCwgMjAxOSBhdCAwNTox MTo0NVBNICswMjAwLCBCb3JpcyBCcmV6aWxsb24gd3JvdGU6Cj4gPiBUaGlzIHRha2VzIHRoZSBm b3JtIG9mIHZhcmlvdXMgaGVscGVycywgcGx1cyB0aGUgYWRkaXRpb24gb2YgMiBuZXcKPiA+IHN0 cnVjdHM6Cj4gPiAqIGRybV9idXNfY2FwczogZGVzY3JpYmUgdGhlIGJ1cyBjYXBhYmlsaXRpZXMg b2YgYSBicmlkZ2UvZW5jb2Rlci4gRm9yCj4gPiAgIGJyaWRnZXMgd2UgaGF2ZSBvbmUgZm9yIHRo ZSBpbnB1dCBwb3J0IGFuZCBvbmUgZm9yIHRoZSBvdXRwdXQgcG9ydC4KPiA+ICAgRW5jb2RlcnMg anVzdCBoYXZlIG9uZSBvdXRwdXQgcG9ydC4KPiA+ICogZHJtX2J1c19jZmc6IGFkZGVkIHRvIHRo ZSBkcm1fYnJpZGdlX3N0YXRlLiBJdCdzIHN1cHBvc2VkIHRvIHN0b3JlCj4gPiAgIGJ1cyBjb25m aWd1cmF0aW9uIGluZm9ybWF0aW9uLiBGb3Igbm93IHdlIGp1c3QgaGF2ZSBmb3JtYXQgYW5kIGZs YWdzCj4gPiAgIGJ1dCBtb3JlIGZpZWxkcyBtaWdodCBiZSBhZGRlZCBpbiB0aGUgZnV0dXJlLiBB Z2FpbiwgZWFjaAo+ID4gICBkcm1fYnJpZGdlX3N0YXRlIGNvbnRhaW5zIDIgZHJtX2J1c19jZmcg ZWxlbWVudHM6IG9uZSBmb3IgdGhlIG91dHB1dAo+ID4gICBwb3J0IGFuZCBvbmUgZm9yIHRoZSBp bnB1dCBwb3J0Cj4gPiAKPiA+IEhlbHBlcnMgY2FuIGJlIHVzZWQgZnJvbSBicmlkZ2UgZHJpdmVy cycgLT5hdG9taWNfY2hlY2soKSBpbXBsZW1lbnRhdGlvbgo+ID4gdG8gbmVnb3RpYXRlIHRoZSBi dXMgZm9ybWF0IHRvIHVzZS4gTmVnb3RpYXRpb24gaGFwcGVucyBpbiByZXNlcnZlIG9yZGVyLCAg Cj4gCj4gcy9yZXNlcnZlL3JldmVyc2UvCj4gCj4gPiBzdGFydGluZyBmcm9tIHRoZSBsYXN0IGVs ZW1lbnQgb2YgdGhlIGJyaWRnZSBjaGFpbiAodGhlIG9uZSBkaXJlY3RseQo+ID4gY29ubmVjdGVk IHRvIHRoZSBkaXNwbGF5KSB0byB0aGUgZmlyc3QgZWxlbWVudCBvZiB0aGUgY2hhaW4gKHRoZSBv bmUKPiA+IGNvbm5lY3RlZCB0byB0aGUgZW5jb2RlcikuCj4gPiAKPiA+IE5lZ290aWF0aW9uIHVz dWFsbHkgdGFrZXMgcGxhY2UgaW4gMiBzdGVwczoKPiA+ICogbWFrZSBzdXJlIHRoZSBpbnB1dCBl bmQgb2YgdGhlIG5leHQgZWxlbWVudCBpbiB0aGUgY2hhaW4gcGlja2VkIGEKPiA+ICAgZm9ybWF0 IHRoYXQncyBzdXBwb3J0ZWQgYnkgdGhlIG91dHB1dCBlbmQgb2Ygb3VyIGJyaWRnZS4gVGhhdCdz IGRvbmUKPiA+ICAgd2l0aCBkcm1fYXRvbWljX2JyaWRnZV9jaG9vc2Vfb3V0cHV0X2J1c19jZmco KS4KPiA+ICogY2hvb3NlIGEgZm9ybWF0IGZvciB0aGUgaW5wdXQgZW5kIG9mIG91ciBicmlkZ2Ug YmFzZWQgb24gd2hhdCdzCj4gPiAgIHN1cHBvcnRlZCBieSB0aGUgcHJldmlvdXMgYnJpZGdlIGlu IHRoZSBjaGFpbi4gVGhpcyBpcyBhY2hpZXZlZCBieQo+ID4gICBjYWxsaW5nIGRybV9hdG9taWNf YnJpZGdlX2Nob29zZV9pbnB1dF9idXNfY2ZnKCkKPiA+IAo+ID4gTm90ZSB0aGF0IHRob3NlIGhl bHBlcnMgYXJlIGEgYml0IGxheCB3aGVuIGl0IGNvbWVzIHRvIHVuaXRpYWxpemVkCj4gPiBidXMg Zm9ybWF0IHZhbGlkYXRpb24uIFRoYXQncyBpbnRlbnRpb25hbC4gSWYgd2UgZG9uJ3QgZG8gdGhh dCB3ZSdsbAo+ID4gYmFzaWNhbGx5IGJyZWFrIHRoaW5ncyBpZiB3ZSBzdGFydCBhZGRpbmcgc3Vw cG9ydCBmb3IgYnVzIGZvcm1hdAo+ID4gbmVnb3RpYXRpb24gdG8gc29tZSBlbGVtZW50cyBvZiB0 aGUgcGlwZWxpbmUgbGVhdmluZyBvdGhlcnMgb24gdGhlCj4gPiBzaWRlLCBhbmQgdGhhdCdzIGxp a2VseSB0byBoYXBwZW4gZm9yIGFsbCBleHRlcm5hbCBicmlkZ2VzIHNpbmNlIHdlCj4gPiBjYW4n dCBuZWNlc3NhcmlseSB0ZWxsIHdoZXJlIHRoZXkgYXJlIHVzZWQuCj4gPiAKPiA+IFNpZ25lZC1v ZmYtYnk6IEJvcmlzIEJyZXppbGxvbiA8Ym9yaXMuYnJlemlsbG9uQGNvbGxhYm9yYS5jb20+Cj4g PiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jIHwgMTg3ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gPiAgaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oICAg ICB8ICA0NiArKysrKysrKysKPiA+ICBpbmNsdWRlL2RybS9kcm1fZW5jb2Rlci5oICAgIHwgICA2 ICsrCj4gPiAgMyBmaWxlcyBjaGFuZ2VkLCAyMzkgaW5zZXJ0aW9ucygrKQo+ID4gCj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYyBiL2RyaXZlcnMvZ3B1L2RybS9k cm1fYnJpZGdlLmMKPiA+IGluZGV4IDllZmIyNzA4N2U3MC4uZWYwNzJkZjQyNDIyIDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9icmlkZ2UuYwo+ID4gQEAgLTYwMiw2ICs2MDIsMTkzIEBAIHZvaWQgZHJtX2F0 b21pY19icmlkZ2VfY2hhaW5fZW5hYmxlKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiA+ ICB9Cj4gPiAgRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2JyaWRnZV9jaGFpbl9lbmFibGUpOwo+ ID4gIAo+ID4gK2ludCBkcm1fZmluZF9iZXN0X2J1c19mb3JtYXQoY29uc3Qgc3RydWN0IGRybV9i dXNfY2FwcyAqYSwKPiA+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fYnVzX2NhcHMgKmIsCj4g PiArCQkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKPiA+ICsJCQkg ICAgIHUzMiAqc2VsZWN0ZWRfYnVzX2ZtdCkKPiA+ICt7Cj4gPiArCXVuc2lnbmVkIGludCBpLCBq Owo+ID4gKwo+ID4gKwkvKgo+ID4gKwkgKiBTb21lIGRybV9icmlkZ2UvZHJtX2VuY29kZXIgZG9u J3QgY2FyZSBhYm91dCB0aGUgaW5wdXQvb3V0cHV0IGJ1cwo+ID4gKwkgKiBmb3JtYXQsIGxldCdz IHNldCB0aGUgZm9ybWF0IHRvIHplcm8gaW4gdGhhdCBjYXNlICh0aGlzIGlzIG9ubHkKPiA+ICsJ ICogdmFsaWQgaWYgYm90aCBzaWRlIG9mIHRoZSBsaW5rIGRvbid0IGNhcmUpLgo+ID4gKwkgKi8K PiA+ICsJaWYgKCFhLT5udW1fc3VwcG9ydGVkX2ZtdHMgJiYgIWItPm51bV9zdXBwb3J0ZWRfZm10 cykgewo+ID4gKwkJKnNlbGVjdGVkX2J1c19mbXQgPSAwOwo+ID4gKwkJcmV0dXJuIDA7Cj4gPiAr CX0gZWxzZSBpZiAoYi0+bnVtX3N1cHBvcnRlZF9mbXRzID4gMSAmJiBiLT5zdXBwb3J0ZWRfZm10 cykgewo+ID4gKwkJKnNlbGVjdGVkX2J1c19mbXQgPSBiLT5zdXBwb3J0ZWRfZm10c1swXTsKPiA+ ICsJCXJldHVybiAwOwo+ID4gKwl9IGVsc2UgaWYgKGEtPm51bV9zdXBwb3J0ZWRfZm10cyA+IDEg JiYgYS0+c3VwcG9ydGVkX2ZtdHMpIHsKPiA+ICsJCSpzZWxlY3RlZF9idXNfZm10ID0gYS0+c3Vw cG9ydGVkX2ZtdHNbMF07Cj4gPiArCQlyZXR1cm4gMDsKPiA+ICsJfSBlbHNlIGlmICghYS0+bnVt X3N1cHBvcnRlZF9mbXRzIHx8ICFhLT5zdXBwb3J0ZWRfZm10cyB8fAo+ID4gKwkJICAgIWItPm51 bV9zdXBwb3J0ZWRfZm10cyB8fCAhYi0+c3VwcG9ydGVkX2ZtdHMpIHsKPiA+ICsJCXJldHVybiAt RUlOVkFMOwo+ID4gKwl9Cj4gPiArCj4gPiArCS8qCj4gPiArCSAqIFRPRE86Cj4gPiArCSAqIER1 bW15IGFsZ28gcGlja2luZyB0aGUgZmlyc3QgbWF0Y2guIFdlIHByb2JhYmx5IHdhbnQgc29tZXRo aW5nCj4gPiArCSAqIHNtYXJ0ZXIgd2hlcmUgdGhlIG5hcnJvd2VzdCBmb3JtYXQgKGluIHRlcm0g b2YgYnVzIHdpZHRoKSB0aGF0Cj4gPiArCSAqIGRvZXMgbm90IGluY3VyIGRhdGEgbG9zcyBpcyBw aWNrZWQsIGFuZCBpZiBhbGwgcG9zc2libGUgZm9ybWF0cwo+ID4gKwkgKiBhcmUgbG9zc3ksIHBp Y2sgdGhlIG9uZSB0aGF0J3MgbGVzcyBsb3NzeSBhbW9uZyBhbGwgdGhlIGNob2ljZXMKPiA+ICsJ ICogd2UgaGF2ZS4gSW4gb3JkZXIgdG8gZG8gdGhhdCB3ZSdkIG5lZWQgdG8gY29udmVydCBNRURJ QV9CVVNfRk1UXwo+ID4gKwkgKiBtb2RlcyBpbnRvIHNvbWV0aGluZyBsaWtlIGRybV9mb3JtYXRf aW5mby4KPiA+ICsJICovCj4gPiArCWZvciAoaSA9IDA7IGkgPCBhLT5udW1fc3VwcG9ydGVkX2Zt dHM7IGkrKykgewo+ID4gKwkJZm9yIChqID0gMDsgaiA8IGItPm51bV9zdXBwb3J0ZWRfZm10czsg aisrKSB7Cj4gPiArCQkJaWYgKGEtPnN1cHBvcnRlZF9mbXRzW2ldID09IGItPnN1cHBvcnRlZF9m bXRzW2pdKSB7Cj4gPiArCQkJCSpzZWxlY3RlZF9idXNfZm10ID0gYS0+c3VwcG9ydGVkX2ZtdHNb aV07Cj4gPiArCQkJCXJldHVybiAwOwo+ID4gKwkJCX0KPiA+ICsJCX0KPiA+ICsJfQo+ID4gKwo+ ID4gKwlyZXR1cm4gLUVJTlZBTDsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTChkcm1fZmluZF9i ZXN0X2J1c19mb3JtYXQpOwo+ID4gKwo+ID4gKy8qKgo+ID4gKyAqIGRybV9hdG9taWNfYnJpZGdl X2Nob29zZV9pbnB1dF9idXNfY2ZnKCkgLSBDaG9vc2UgYnVzIGNvbmZpZyBmb3IgdGhlIGlucHV0 Cj4gPiArICoJCQkJCSAgICAgIGVuZAo+ID4gKyAqIEBicmlkZ2Vfc3RhdGU6IGJyaWRnZSBzdGF0 ZQo+ID4gKyAqIEBjcnRjX3N0YXRlOiBDUlRDIHN0YXRlCj4gPiArICogQGNvbm5fc3RhdGU6IGNv bm5lY3RvciBzdGF0ZQo+ID4gKyAqCj4gPiArICogQ2hvb3NlIGEgYnVzIGZvcm1hdCBmb3IgdGhl IGlucHV0IHNpZGUgb2YgYSBicmlkZ2UgYmFzZWQgb24gd2hhdCB0aGUKPiA+ICsgKiBwcmV2aW91 cyBicmlkZ2UgaW4gdGhlIGNoYWluIGFuZCB0aGlzIGJyaWRnZSBzdXBwb3J0LiBDYW4gYmUgY2Fs bGVkIGZyb20KPiA+ICsgKiBicmlkZ2UgZHJpdmVycycgJmRybV9icmlkZ2VfZnVuY3MuYXRvbWlj X2NoZWNrKCkgaW1wbGVtZW50YXRpb24uCj4gPiArICoKPiA+ICsgKiBSRVRVUk5TOgo+ID4gKyAq IDAgaWYgYSBtYXRjaGluZyBmb3JtYXQgd2FzIGZvdW5kLCBhIG5lZ2F0aXZlIGVycm9yIGNvZGUg b3RoZXJ3aXNlCj4gPiArICovCj4gPiAraW50Cj4gPiArZHJtX2F0b21pY19icmlkZ2VfY2hvb3Nl X2lucHV0X2J1c19jZmcoc3RydWN0IGRybV9icmlkZ2Vfc3RhdGUgKmJyaWRnZV9zdGF0ZSwKPiA+ ICsJCQkJICAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICsJCQkJ ICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQo+ID4gK3sKPiA+ ICsJc3RydWN0IGRybV9icmlkZ2UgKnNlbGYgPSBicmlkZ2Vfc3RhdGUtPmJyaWRnZTsKPiA+ICsJ c3RydWN0IGRybV9idXNfY2FwcyAqcHJldl9vdXRwdXRfYnVzX2NhcHM7Cj4gPiArCXN0cnVjdCBk cm1fYnJpZGdlICpwcmV2Owo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4gKwlwcmV2ID0gZHJtX2Jy aWRnZV9jaGFpbl9nZXRfcHJldl9icmlkZ2Uoc2VsZik7Cj4gPiArCWlmICghcHJldikKPiA+ICsJ CXByZXZfb3V0cHV0X2J1c19jYXBzID0gJnNlbGYtPmVuY29kZXItPm91dHB1dF9idXNfY2FwczsK PiA+ICsJZWxzZQo+ID4gKwkJcHJldl9vdXRwdXRfYnVzX2NhcHMgPSAmcHJldi0+b3V0cHV0X2J1 c19jYXBzOwo+ID4gKwo+ID4gKwlyZXQgPSBkcm1fZmluZF9iZXN0X2J1c19mb3JtYXQocHJldl9v dXRwdXRfYnVzX2NhcHMsCj4gPiArCQkJCSAgICAgICAmc2VsZi0+aW5wdXRfYnVzX2NhcHMsICZj cnRjX3N0YXRlLT5tb2RlLAo+ID4gKwkJCQkgICAgICAgJmJyaWRnZV9zdGF0ZS0+aW5wdXRfYnVz X2NmZy5mbXQpOwo+ID4gKwlpZiAocmV0KQo+ID4gKwkJcmV0dXJuIHJldDsgIAo+IAo+IEkgdGhp bmsgbW9zdCBicmlkZ2VzIHRoYXQgc3VwcG9ydCBtdWx0aXBsZSBpbnB1dCBhbmQgb3V0cHV0IGZv cm1hdHMgd2lsbAo+IG5vdCBuZWNlc3NhcmlseSBiZSBhYmxlIHRvIHRyYW5zY29kZSwgbWVhbmlu ZyB0aGF0IGZvciBhIHBhcnRpY3VsYXIKPiBvdXRwdXQgZm9ybWF0IGEgcGFydGljdWxhciBjb3Jy ZXNwb25kaW5nIGlucHV0IGZvcm1hdCB3aWxsIG5lZWQgdG8gYmUKPiBwaWNrZWQgKG9yIHBvc3Np Ymx5IG9uZSBvZiBhIHN1YnNldCBvZiBpbnB1dCBmb3JtYXRzKS4gSSdtIHRodXMgbm90IHN1cmUK PiBob3cgdXNlZnVsIHRoaXMgaGVscGVyIHdpbGwgYmUgaW4gcHJhY3RpY2UuCj4gCj4gSSBhbHNv IGZlYXIgdGhhdCB0aGlzIG5lZ290aWF0aW9uIG1lY2hhbmlzbSBpcyB0b28gc2ltcGxlIGFuZCB3 aWxsIGxvY2sKPiBpcyB3aXRoIHN1cHBvcnQgZm9yIHZlcnkgc2ltcGxlIHN5c3RlbXMgb25seSA6 LVMgTGV0J3MgYXNzdW1lIGEgc3lzdGVtCj4gd2l0aCBhIGRpc3BsYXkgZGV2aWNlIChEKSwgdHdv IGJyaWRnZXMgKEIwIGFuZCBCMSkgYW5kIGEgY29ubmVjdG9yIChDKS4KPiBMZXQncyBmdXJ0aGVy IGFzc3VtZSB0aGF0IHRoZSBidXMgZm9ybWF0IHJlcXVpcmVkIGJ5IHRoZSBjb25uZWN0b3IgaXMK PiBmaXhlZC4gV2l0aCB0aGlzIHBhdGNoIHNlcmllcywgQjEgd2lsbCBwaWNrIGFuIG91dHB1dCBm b3JtYXQgaWRlbnRpY2FsCj4gdG8gdGhlIGZvcm1hdCBvbiB0aGUgY29ubmVjdG9yLCBhbmQgd2ls bCB0aGVuIHBpY2sgYW4gaW5wdXQgZm9ybWF0IGFtb25nCj4gdGhlIG9uZXMgc3VwcG9ydGVkIGJ5 IGJvdGggQjAgYW5kIEIxLiBMZXQncyBhc3N1bWUgdGhlcmUgYXJlIG11bHRpcGxlCj4gb3B0aW9u cywgRmEgYW5kIEZiLCBhbmQgZHJtX2ZpbmRfYmVzdF9idXNfZm9ybWF0KCkgd2lsbCBwaWNrIG9u ZSBvZgo+IHRoZW0sIHNheSBGYS4gVGhlbiBCMCB3aWxsIGNvbmZpZ3VyZSBpdHMgb3V0cHV0IHdp dGggdGhhdCBmb3JtYXQsIGFuZAo+IHdpbGwgcHJvY2VlZCB3aXRoIGZpbmRpbmcgYW4gaW5wdXQg Zm9ybWF0IHN1cHBvcnRlZCBieSBELiBJdCBjb3VsZCBiZQo+IHRoYXQgdGhlIG91dHB1dCBmb3Jt YXQgRmEgZm9yIEIwIHJlcXVpcmVzIGFuIGlucHV0IGZvcm1hdCB0aGF0IGlzIG5vdAo+IHN1cHBv cnRlZCBieSBELCB3aGlsZSBGYiB3b3VsZCBoYXZlIHByb2R1Y2VkIGEgd29ya2luZyBwaXBlbGlu ZS4KClllcywgSSBhc3N1bWVkIGFsbCBwaXBlbGluZSBlbGVtZW50cyB3b3VsZCBiZSBhYmxlIHRv IGNvbnZlcnQgYW55IG9mCnRoZWlyIHN1cHBvcnRlZCBpbnB1dCBmb3JtYXRzIHRvIGFueSBvZiB0 aGUgb3V0cHV0IG9uZXMsIHdoaWNoIG1pZ2h0Cm5vdCBiZSB0aGUgY2FzZSBpbiBwcmFjdGljZS4g SSBjb3VsZCBhZGQgYSBtYXRyaXggdG8gZXhwb3NlIHRoZQpzdXBwb3J0ZWQgY29udmVyc2lvbnMg YW5kIGFkZCBhIHBhc3Mgb2YgJ2Zvcm1hdCBldmljdGlvbicgYXQgYnJpZGdlCmF0dGFjaCB0aW1l LCBidXQgSSdtIG5vdCBzdXJlIHRoYXQncyBlbm91Z2guCgo+IAo+IEkgZG9uJ3QgdGhpbmsgdGhp cyBleGFtcGxlIGlzIHJlYWxseSBmYXItZmV0Y2hlZCwgYW5kIHdoaWxlIHdlIGRvbid0Cj4gbmVl ZCB0byBzdXBwb3J0IGl0IGltbWVkaWF0ZWx5LCB3ZSBuZWVkIGFuIEFQSSB0aGF0IG1ha2VzIGl0 IHBvc3NpYmxlIHRvCj4gc3VwcG9ydCBpdCwgYXMgY2hhbmdpbmcgdGhlIEFQSSBsYXRlciB3b3Vs ZCByZXF1aXJlIHJld29ya2luZyBhbGwgdGhlCj4gZHJpdmVycyB0aGF0IHVzZSBpdC4KPiAKPiA+ ICsKPiA+ICsJLyoKPiA+ICsJICogVE9ETzoKPiA+ICsJICogU2hvdWxkIHdlIGZpbGwvY2hlY2sg dGhlIC0+ZmxhZyBmaWVsZCB0b28/Cj4gPiArCSAqLwo+ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4g PiArRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2JyaWRnZV9jaG9vc2VfaW5wdXRfYnVzX2NmZyk7 Cj4gPiArCj4gPiArLyoqCj4gPiArICogZHJtX2F0b21pY19icmlkZ2VfY2hvb3NlX291dHB1dF9i dXNfY2ZnKCkgLSBDaG9vc2UgYnVzIGNvbmZpZyBmb3IgdGhlIG91dHB1dAo+ID4gKyAqCQkJCQkg ICAgICAgZW5kCj4gPiArICogQGJyaWRnZV9zdGF0ZTogYnJpZGdlIHN0YXRlCj4gPiArICogQGNy dGNfc3RhdGU6IENSVEMgc3RhdGUKPiA+ICsgKiBAY29ubl9zdGF0ZTogY29ubmVjdG9yIHN0YXRl Cj4gPiArICoKPiA+ICsgKiBDaG9vc2UgYSBidXMgZm9ybWF0IGZvciB0aGUgb3V0cHV0IHNpZGUg b2YgYSBicmlkZ2UgYmFzZWQgb24gd2hhdCB0aGUgbmV4dAo+ID4gKyAqIGJyaWRnZSBpbiB0aGUg Y2hhaW4gYW5kIHRoaXMgYnJpZGdlIHN1cHBvcnQuIENhbiBiZSBjYWxsZWQgZnJvbSBicmlkZ2UK PiA+ICsgKiBkcml2ZXJzJyAmZHJtX2JyaWRnZV9mdW5jcy5hdG9taWNfY2hlY2soKSBpbXBsZW1l bnRhdGlvbi4KPiA+ICsgKgo+ID4gKyAqIFJFVFVSTlM6Cj4gPiArICogMCBpZiBhIG1hdGNoaW5n IGZvcm1hdCB3YXMgZm91bmQsIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UKPiA+ICsg Ki8KPiA+ICtpbnQKPiA+ICtkcm1fYXRvbWljX2JyaWRnZV9jaG9vc2Vfb3V0cHV0X2J1c19jZmco c3RydWN0IGRybV9icmlkZ2Vfc3RhdGUgKmJyaWRnZV9zdGF0ZSwKPiA+ICsJCQkJCXN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+ICsJCQkJCXN0cnVjdCBkcm1fY29ubmVjdG9y X3N0YXRlICpjb25uX3N0YXRlKQo+ID4gK3sKPiA+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlID0gY3J0Y19zdGF0ZS0+c3RhdGU7Cj4gPiArCXN0cnVjdCBkcm1fYnJpZGdlICpzZWxm ID0gYnJpZGdlX3N0YXRlLT5icmlkZ2U7Cj4gPiArCXN0cnVjdCBkcm1fYnJpZGdlX3N0YXRlICpu ZXh0X2JyaWRnZV9zdGF0ZTsKPiA+ICsJc3RydWN0IGRybV9icmlkZ2UgKm5leHQ7Cj4gPiArCXUz MiBmbXQ7Cj4gPiArCj4gPiArCW5leHQgPSBkcm1fYnJpZGdlX2NoYWluX2dldF9uZXh0X2JyaWRn ZShzZWxmKTsKPiA+ICsJaWYgKCFuZXh0KSB7Cj4gPiArCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubiA9IGNvbm5fc3RhdGUtPmNvbm5lY3RvcjsKPiA+ICsJCXN0cnVjdCBkcm1fZGlzcGxheV9p bmZvICpkaSA9ICZjb25uLT5kaXNwbGF5X2luZm87Cj4gPiArCj4gPiArCQkvKgo+ID4gKwkJICog RklYTUU6Cj4gPiArCQkgKiBXZSBjdXJyZW50bHkgcGljayB0aGUgZmlyc3Qgc3VwcG9ydGVkIGZv cm1hdAo+ID4gKwkJICogdW5jb25kaXRpb25hbGx5LiBJdCBzZWVtcyB0byBmaXQgYWxsIGN1cnJl bnQgdXNlIGNhc2VzIGJ1dAo+ID4gKwkJICogbWlnaHQgYmUgdG9vIGxpbWl0ZWQgZm9yIHBhbmVs cy9kaXNwbGF5cyB0aGF0IGNhbiBjb25maWd1cmUKPiA+ICsJCSAqIHRoZSBidXMgZm9ybWF0IGR5 bmFtaWNhbGx5Lgo+ID4gKwkJICovCj4gPiArCQlpZiAoZGktPm51bV9idXNfZm9ybWF0cyAmJiBk aS0+YnVzX2Zvcm1hdHMpCj4gPiArCQkJYnJpZGdlX3N0YXRlLT5vdXRwdXRfYnVzX2NmZy5mbXQg PSBkaS0+YnVzX2Zvcm1hdHNbMF07Cj4gPiArCQllbHNlCj4gPiArCQkJYnJpZGdlX3N0YXRlLT5v dXRwdXRfYnVzX2NmZy5mbXQgPSAwOyAgCj4gCj4gV2hhdCBpcyB0aGUgYnJpZGdlIGRyaXZlciBz dXBwb3NlZCB0byBkbyBpbiB0aGlzIGNhc2UgPwoKUGljayBhIGRlZmF1bHQgdmFsdWUgKG9yIGEg c29tZXRoaW5nIGZpeGVkIGJ5IGEgRlcgcHJvcGVydHkpLCBhcyBpdCB1c2VkCnRvIGRvIGJlZm9y ZSB0aGlzIHBhdGNoc2V0LiBUaGVyZSdzIG5vIHdheSB3ZSBjYW4gY29udmVydCBhbGwgYnJpZGdl cyBhdApvbmNlLCBzbyB3ZSBuZWVkIHRvIHN1cHBvcnQgbWl4ZWQgY2hhaW5zIGZvcm1lZCBvZiBi cmlkZ2VzIHRoYXQgc3VwcG9ydApidXMgZm9ybWF0IG5lZ290aWF0aW9uIGFuZCBicmlkZ2VzIHRo YXQgZG9uJ3QuCgo+IAo+ID4gKwo+ID4gKwkJYnJpZGdlX3N0YXRlLT5vdXRwdXRfYnVzX2NmZy5m bGFncyA9IGRpLT5idXNfZmxhZ3M7Cj4gPiArCQlyZXR1cm4gMDsKPiA+ICsJfQo+ID4gKwo+ID4g KwkvKgo+ID4gKwkgKiBXZSBleHBlY3Qgb3V0cHV0X2J1c19jYXBzIHRvIGNvbnRhaW4gYXQgbGVh c3Qgb25lIGZvcm1hdC4gTm90ZQo+ID4gKwkgKiB0aGF0IGRvbid0IGNhcmUgYWJvdXQgYnVzIGZv cm1hdCBuZWdvdGlhdGlvbiBjYW4gc2ltcGx5IG5vdAo+ID4gKwkgKiBjYWxsIHRoaXMgaGVscGVy LiAgCj4gCj4gSSdtIG5vdCBzdXJlIHRvIHBhcnNlIHRoZSBzZWNvbmQgc2VudGVuY2UgY29ycmVj dGx5LgoKT29wcy4KCiJOb3RlIHRoYXQgZHJpdmVycyB0aGF0IGRvbid0IGNhcmUgYWJvdXQgLi4u Ii4KSSdtIGp1c3QgdHJ5aW5nIHRvIGV4cGxhaW4gd2h5IEVJTlZBTCBpcyByZXR1cm5lZCB3aGVu Ci0+b3V0cHV0X2J1c19jYXBzIGlzIG5vdCBwb3B1bGF0ZWQuCgo+IAo+ID4gKwkgKi8KPiA+ICsJ aWYgKCFzZWxmLT5vdXRwdXRfYnVzX2NhcHMubnVtX3N1cHBvcnRlZF9mbXRzIHx8ISAgCj4gCj4g RXh0cmEgISBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lID8KPiAKPiA+ICsJICAgICFzZWxmLT5vdXRw dXRfYnVzX2NhcHMuc3VwcG9ydGVkX2ZtdHMpCj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICsK PiA+ICsJbmV4dF9icmlkZ2Vfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9uZXdfYnJpZGdlX3N0YXRl KHN0YXRlLCBuZXh0KTsKPiA+ICsKPiA+ICsJLyoKPiA+ICsJICogVGhlIG5leHQgYnJpZGdlIGlz IGV4cGVjdGVkIHRvIGhhdmUgY2FsbGVkCj4gPiArCSAqICZkcm1fYXRvbWljX2JyaWRnZV9jaG9v c2VfaW5wdXRfYnVzX2NmZygpIGFzIHBhcnQgb2YgaXRzCj4gPiArCSAqICZkcm1fYnJpZGdlX2Z1 bmNzLmF0b21pY19jaGVjaygpIGltcGxlbWVudGF0aW9uLCBidXQgdGhpcyBob29rIGlzCj4gPiAr CSAqIG9wdGlvbmFsLCBhbmQgZXZlbiBpZiBpdCdzIGltcGxlbWVudGVkLCBjYWxsaW5nCj4gPiAr CSAqICZkcm1fYXRvbWljX2JyaWRnZV9jaG9vc2VfaW5wdXRfYnVzX2NmZygpIGlzIG5vdCBtYW5k YXRlZC4KPiA+ICsJICogSWYgZm10IGlzIHplcm8sIHRoYXQgbWVhbnMgdGhlIG5leHQgZWxlbWVu dCBpbiB0aGUgY2hhaW4gZG9lc24ndAo+ID4gKwkgKiBjYXJlIGFib3V0IGJ1cyBmb3JtYXQgbmVn b3RpYXRpb24gKHByb2JhYmx5IGJlY2F1c2UgdGhlcmUncyBvbmx5Cj4gPiArCSAqIG9uZSBwb3Nz aWJsZSBzZXR0aW5nKS4gSW4gdGhhdCBjYXNlLCB3ZSBzdGlsbCBoYXZlIHRvIHNlbGVjdCBvbmUK PiA+ICsJICogYnVzIGZvcm1hdCBmb3IgdGhlIG91dHB1dCBwb3J0IG9mIG91ciBicmlkZ2UsIGFu ZCB0aGlzIGlzIG9ubHkKPiA+ICsJICogcG9zc2libGUgaWYgdGhlIGJyaWRnZSBzdXBwb3J0cyBv bmx5IG9uZSBmb3JtYXQuICAKPiAKPiBUaGVvcml0aWNhbGx5IHdlIGNvdWxkIGFsc28ganVzdCBw aWNrIHRoZSBmaXJzdCBvbmUgKG9yIGFjdHVhbGx5IGFueSBvZgo+IHRoZSBzdXBwb3J0ZWQgZm9y bWF0cyksIGNvdWxkbid0IHdlID8KCkhtLCBub3QgcmVhbGx5LiBJIG1lYW4sIGlmIHRoZSBicmlk Z2Ugc3VwcG9ydHMgc2V2ZXJhbCBvdXRwdXQgZm9ybWF0cywKdGhlcmUncyBubyB3YXkgd2UgY2Fu IHRlbGwgd2hpY2ggb25lIGlzIHRoZSByaWdodCBvbmUgZm9yIHRoaXMKc3BlY2lmaWMgc2V0dXAu IFRoZSBpZGVhIGJlaW5nIHRoYXQgZHJpdmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHBpY2tpbmcK YW4gYXBwcm9wcmlhdGUgb3V0cHV0IGJ1cy1mb3JtYXQgYmFzZWQgb24gc29tZXRoaW5nIGVsc2Ug KERUIHByb3A/KQp3aGVuIGRybV9hdG9taWNfYnJpZGdlX2Nob29zZV9vdXRwdXRfYnVzX2NmZygp IHJldHVybnMgYW4gZXJyb3IuCgo+IAo+IAo+ID4gKwkgKi8KPiA+ICsJZm10ID0gbmV4dF9icmlk Z2Vfc3RhdGUtPmlucHV0X2J1c19jZmcuZm10Owo+ID4gKwlpZiAoZm10KSB7Cj4gPiArCQl1bnNp Z25lZCBpbnQgaTsKPiA+ICsKPiA+ICsJCWZvciAoaSA9IDA7IGkgPCBzZWxmLT5vdXRwdXRfYnVz X2NhcHMubnVtX3N1cHBvcnRlZF9mbXRzOyBpKyspIHsKPiA+ICsJCQlpZiAoc2VsZi0+b3V0cHV0 X2J1c19jYXBzLnN1cHBvcnRlZF9mbXRzW2ldID09IGZtdCkKPiA+ICsJCQkJYnJlYWs7Cj4gPiAr CQl9Cj4gPiArCj4gPiArCQlpZiAoaSA9PSBzZWxmLT5vdXRwdXRfYnVzX2NhcHMubnVtX3N1cHBv cnRlZF9mbXRzKQo+ID4gKwkJCXJldHVybiAtRU5PVFNVUFA7Cj4gPiArCX0gZWxzZSBpZiAoc2Vs Zi0+b3V0cHV0X2J1c19jYXBzLm51bV9zdXBwb3J0ZWRfZm10cyA9PSAxKSB7Cj4gPiArCQlmbXQg PSBzZWxmLT5vdXRwdXRfYnVzX2NhcHMuc3VwcG9ydGVkX2ZtdHNbMF07Cj4gPiArCX0gZWxzZSB7 Cj4gPiArCQlyZXR1cm4gLUVJTlZBTDsKPiA+ICsJfQo+ID4gKwo+ID4gKwkvKgo+ID4gKwkgKiBU T0RPOgo+ID4gKwkgKiBTaG91bGQgd2UgZmlsbC9jaGVjayB0aGUgLT5mbGFnIGZpZWxkIHRvbz8K PiA+ICsJICovCj4gPiArCWJyaWRnZV9zdGF0ZS0+b3V0cHV0X2J1c19jZmcuZm10ID0gZm10Owo+ ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTChkcm1fYXRvbWljX2JyaWRn ZV9jaG9vc2Vfb3V0cHV0X2J1c19jZmcpOwo+ID4gKwo+ID4gIHN0YXRpYyBpbnQgZHJtX2F0b21p Y19icmlkZ2VfY2hlY2soc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiA+ICAJCQkJICAgc3Ry dWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gIAkJCQkgICBzdHJ1Y3QgZHJtX2Nv bm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSkKPiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9k cm1fYnJpZGdlLmggYi9pbmNsdWRlL2RybS9kcm1fYnJpZGdlLmgKPiA+IGluZGV4IDJmNjlhZGI3 YjBmMy4uYzU3ODgwMGEwNWUwIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2JyaWRn ZS5oCj4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fYnJpZGdlLmgKPiA+IEBAIC0zMywxNSArMzMs NDUgQEAgc3RydWN0IGRybV9icmlkZ2U7Cj4gPiAgc3RydWN0IGRybV9icmlkZ2VfdGltaW5nczsK PiA+ICBzdHJ1Y3QgZHJtX3BhbmVsOwo+ID4gIAo+ID4gKy8qKgo+ID4gKyAqIHN0cnVjdCBkcm1f YnVzX2NmZyAtIGJ1cyBjb25maWd1cmF0aW9uCj4gPiArICogQGZtdDogZm9ybWF0IHVzZWQgb24g dGhpcyBidXMKPiA+ICsgKiBAZmxhZ3M6IERSTV9CVVNfIGZsYWdzIHVzZWQgb24gdGhpcyBidXMK PiA+ICsgKgo+ID4gKyAqIEVuY29kZXMgdGhlIGJ1cyBmb3JtYXQgYW5kIGJ1cyBmbGFncyB1c2Vk IGJ5IG9uZSBlbmQgb2YgdGhlIGJyaWRnZSBvcgo+ID4gKyAqIGJ5IHRoZSBlbmNvZGVyIG91dHB1 dC4KPiA+ICsgKi8KPiA+ICtzdHJ1Y3QgZHJtX2J1c19jZmcgewo+ID4gKwl1MzIgZm10Owo+ID4g Kwl1MzIgZmxhZ3M7Cj4gPiArfTsKPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBzdHJ1Y3QgZHJtX2J1 c19jYXBzIC0gYnVzIGNhcGFiaWxpdGllcwo+ID4gKyAqIEBzdXBwb3J0ZWRfZm10czogYXJyYXkg b2YgTUVESUFfQlVTX0ZNVF8gZm9ybWF0cwo+ID4gKyAqIEBudW1fc3VwcG9ydGVkX2ZtdHM6IHNp emUgb2YgdGhlIHN1cHBvcnRlZF9mbXRzIGFycmF5Cj4gPiArICoKPiA+ICsgKiBVc2VkIGJ5IHRo ZSBjb3JlIHRvIG5lZ290aWF0ZSB0aGUgYnVzIGZvcm1hdCBhdCBydW50aW1lLgo+ID4gKyAqLwo+ ID4gK3N0cnVjdCBkcm1fYnVzX2NhcHMgewo+ID4gKwljb25zdCB1MzIgKnN1cHBvcnRlZF9mbXRz Owo+ID4gKwl1bnNpZ25lZCBpbnQgbnVtX3N1cHBvcnRlZF9mbXRzOwo+ID4gK307Cj4gPiArCj4g PiAgLyoqCj4gPiAgICogc3RydWN0IGRybV9icmlkZ2Vfc3RhdGUgLSBBdG9taWMgYnJpZGdlIHN0 YXRlIG9iamVjdAo+ID4gICAqIEBiYXNlOiBpbmhlcml0IGZyb20gJmRybV9wcml2YXRlX3N0YXRl Cj4gPiAgICogQGJyaWRnZTogdGhlIGJyaWRnZSB0aGlzIHN0YXRlIHJlZmVycyB0bwo+ID4gKyAq IEBpbnB1dF9idXNfaW5mbzogaW5wdXQgYnVzIGluZm9ybWF0aW9uCj4gPiArICogQG91dHB1dF9i dXNfaW5mbzogb3V0cHV0IGJ1cyBpbmZvcm1hdGlvbiAgCj4gCj4gSSB3b3VsZCBtYWtlIHRoaXMg YW4gYXJyYXksIHRvIHByZXBhcmUgZm9yIGJyaWRnZXMgdGhhdCB3aWxsIGhhdmUgbW9yZQo+IHRo YW4gb25lIGlucHV0IG9yIG9uZSBvdXRwdXQuCgpIbSwgbm90IHN1cmUgaG93IHlvdSdkIHJlcHJl c2VudCB0aGF0LiBJIGd1ZXNzIHlvdSB3YW50IHRvIHN1cHBvcnQKYnJpZGdlcyB0aGF0IGNhbiBh Y3RpdmF0ZSBzZXZlcmFsIGlucHV0cytvdXRwdXRzIGluIHBhcmFsbGVsLiBEbyB3ZQpldmVuIHN1 cHBvcnQgdGhhdCByaWdodCBub3c/CkFsc28sIGhvdyBkbyB3ZSBsaW5rIHRoZSBpbnB1dCB0byB0 aGUgb3V0cHV0IGluIHRoYXQgY2FzZT8gQnkgdGhlaXIKcG9zaXRpb24gaW4gdGhlIGFycmF5PyBB bmQgd2UnZCBuZWVkIGFuIGV4dHJhIGZpZWxkIGluIGJ1c19jYXBzIHRvCnBvaW50IHRvIHRoZSBj b3JyZXNwb25kaW5nIGJyaWRnZSBpbnB1dC9vdXRwdXQgcG9ydC4KCkknbSBnbGFkIHdlIGNhbiBk aXNjdXNzIGFsbCB0aG9zZSBwcm9ibGVtcywgYnV0IEknZCBsaWtlIHRvIGZvY3VzIG9uCndoYXQn cyBuZWVkZWQgcmlnaHQgbm93LCBub3Qgd2hhdCBjb3VsZCBwb3RlbnRpYWxseSBiZSBuZWVkZWQg aW4gdGhlCmZ1dHVyZS4gSWYgd2UgY2FuIGRlc2lnbiB0aGluZ3MgdG8gYmUgbW9yZSBmdXR1cmUt cHJvb2YgdGhhdCdzIGdyZWF0LApidXQgaW4gbXkgZXhwZXJpZW5jZSwgdHJ5aW5nIHRvIHNvbHZl IHByb2JsZW1zIHRoYXQgZG8gbm90IGV4aXN0IHlldApvZnRlbiBsZWFkcyB0byBjb21wbGV4IGRl c2lnbnMgd2hpY2ggcHJvdmUgdG8gYmUgd3Jvbmcgd2hlbiB3ZSB0cnkgdG8KYXBwbHkgdGhlbSB0 byByZWFsIHNpdHVhdGlvbnMgd2hlbiB0aGV5IGZpbmFsbHkgb2NjdXIuCgo+IAo+ID4gICAqLwo+ ID4gIHN0cnVjdCBkcm1fYnJpZGdlX3N0YXRlIHsKPiA+ICAJc3RydWN0IGRybV9wcml2YXRlX3N0 YXRlIGJhc2U7Cj4gPiAgCj4gPiAgCXN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2U7Cj4gPiArCj4g PiArCXN0cnVjdCBkcm1fYnVzX2NmZyBpbnB1dF9idXNfY2ZnOwo+ID4gKwlzdHJ1Y3QgZHJtX2J1 c19jZmcgb3V0cHV0X2J1c19jZmc7Cj4gPiAgfTsKPiA+ICAKPiA+ICBzdGF0aWMgaW5saW5lIHN0 cnVjdCBkcm1fYnJpZGdlX3N0YXRlICoKPiA+IEBAIC00NjUsNiArNDk1LDkgQEAgc3RydWN0IGRy bV9icmlkZ2Ugewo+ID4gIAljb25zdCBzdHJ1Y3QgZHJtX2JyaWRnZV9mdW5jcyAqZnVuY3M7Cj4g PiAgCS8qKiBAZHJpdmVyX3ByaXZhdGU6IHBvaW50ZXIgdG8gdGhlIGJyaWRnZSBkcml2ZXIncyBp bnRlcm5hbCBjb250ZXh0ICovCj4gPiAgCXZvaWQgKmRyaXZlcl9wcml2YXRlOwo+ID4gKwo+ID4g KwlzdHJ1Y3QgZHJtX2J1c19jYXBzIGlucHV0X2J1c19jYXBzOwo+ID4gKwlzdHJ1Y3QgZHJtX2J1 c19jYXBzIG91dHB1dF9idXNfY2FwczsKPiA+ICB9Owo+ID4gIAo+ID4gIHN0YXRpYyBpbmxpbmUg c3RydWN0IGRybV9icmlkZ2UgKgo+ID4gQEAgLTQ3OSw2ICs1MTIsMTQgQEAgc3RydWN0IGRybV9i cmlkZ2UgKm9mX2RybV9maW5kX2JyaWRnZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTsKPiA+ICBp bnQgZHJtX2JyaWRnZV9hdHRhY2goc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLCBzdHJ1Y3Qg ZHJtX2JyaWRnZSAqYnJpZGdlLAo+ID4gIAkJICAgICAgc3RydWN0IGRybV9icmlkZ2UgKnByZXZp b3VzKTsKPiA+ICAKPiA+ICtpbnQKPiA+ICtkcm1fYXRvbWljX2JyaWRnZV9jaG9vc2VfaW5wdXRf YnVzX2NmZyhzdHJ1Y3QgZHJtX2JyaWRnZV9zdGF0ZSAqYnJpZGdlX3N0YXRlLAo+ID4gKwkJCQkg ICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4gKwkJCQkgICAgICAg c3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUpOwo+ID4gK2ludAo+ID4gK2Ry bV9hdG9taWNfYnJpZGdlX2Nob29zZV9vdXRwdXRfYnVzX2NmZyhzdHJ1Y3QgZHJtX2JyaWRnZV9z dGF0ZSAqYnJpZGdlX3N0YXRlLAo+ID4gKwkJCQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+ID4gKwkJCQkJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUp Owo+ID4gIHN0cnVjdCBkcm1fYnJpZGdlICoKPiA+ICBkcm1fYnJpZGdlX2NoYWluX2dldF9maXJz dF9icmlkZ2Uoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPiA+ICBzdHJ1Y3QgZHJtX2Jy aWRnZSAqCj4gPiBAQCAtNTYyLDYgKzYwMywxMSBAQCBkcm1fYXRvbWljX2dldF9uZXdfYnJpZGdl X3N0YXRlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPiA+ICAJcmV0dXJuIGRybV9w cml2X3RvX2JyaWRnZV9zdGF0ZShvYmpfc3RhdGUpOwo+ID4gIH0KPiA+ICAKPiA+ICtpbnQgZHJt X2ZpbmRfYmVzdF9idXNfZm9ybWF0KGNvbnN0IHN0cnVjdCBkcm1fYnVzX2NhcHMgKmEsCj4gPiAr CQkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX2J1c19jYXBzICpiLAo+ID4gKwkJCSAgICAgY29uc3Qg c3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gPiArCQkJICAgICB1MzIgKnNlbGVjdGVk X2J1c19mbXQpOwo+ID4gKwo+ID4gICNpZmRlZiBDT05GSUdfRFJNX1BBTkVMX0JSSURHRQo+ID4g IHN0cnVjdCBkcm1fYnJpZGdlICpkcm1fcGFuZWxfYnJpZGdlX2FkZChzdHJ1Y3QgZHJtX3BhbmVs ICpwYW5lbCwKPiA+ICAJCQkJCXUzMiBjb25uZWN0b3JfdHlwZSk7Cj4gPiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS9kcm0vZHJtX2VuY29kZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9lbmNvZGVyLmgKPiA+ IGluZGV4IDA4OTlmN2YzNGUzYS4uZTg5MTkyMWIzYWVkIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVk ZS9kcm0vZHJtX2VuY29kZXIuaAo+ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2VuY29kZXIuaAo+ ID4gQEAgLTI1LDYgKzI1LDcgQEAKPiA+ICAKPiA+ICAjaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+ ID4gICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgo+ID4gKyNpbmNsdWRlIDxkcm0vZHJtX2JyaWRn ZS5oPgo+ID4gICNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiA+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9tb2RlLmg+Cj4gPiAgI2luY2x1ZGUgPGRybS9kcm1fbW9kZV9vYmplY3QuaD4KPiA+IEBAIC0x ODQsNiArMTg1LDExIEBAIHN0cnVjdCBkcm1fZW5jb2RlciB7Cj4gPiAgCSAqIGZ1bmN0aW9ucyBh cyBwYXJ0IG9mIGl0cyBlbmNvZGVyIGVuYWJsZS9kaXNhYmxlIGhhbmRsaW5nLgo+ID4gIAkgKi8K PiA+ICAJdWludDMyX3QgY3VzdG9tX2JyaWRnZV9lbmFibGVfZGlzYWJsZV9zZXEgOiAxOwo+ID4g Kwo+ID4gKwkvKioKPiA+ICsJICogQG91dHB1dF9idXNfY2FwczogU3VwcG9ydGVkIG91dHB1dCBi dXMgY2Fwcwo+ID4gKwkgKi8KPiA+ICsJc3RydWN0IGRybV9idXNfY2FwcyBvdXRwdXRfYnVzX2Nh cHM7Cj4gPiAgfTsKPiA+ICAKPiA+ICAjZGVmaW5lIG9ial90b19lbmNvZGVyKHgpIGNvbnRhaW5l cl9vZih4LCBzdHJ1Y3QgZHJtX2VuY29kZXIsIGJhc2UpCj4gPiAgIAo+IAoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlz dApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs