From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH v2 04/50] drm/bridge: Add connector-related bridge operations and data Date: Thu, 22 Aug 2019 17:24:46 +0200 Message-ID: <20190822172446.2c6aca56@collabora.com> References: <20190820011721.30136-1-laurent.pinchart@ideasonboard.com> <20190820011721.30136-5-laurent.pinchart@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 8DDD46EB3A for ; Thu, 22 Aug 2019 15:24:50 +0000 (UTC) In-Reply-To: <20190820011721.30136-5-laurent.pinchart@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: Maxime Ripard , Tomi Valkeinen , Sean Paul , Sebastian Reichel , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCAyMCBBdWcgMjAxOSAwNDoxNjozNSArMDMwMApMYXVyZW50IFBpbmNoYXJ0IDxsYXVy ZW50LnBpbmNoYXJ0QGlkZWFzb25ib2FyZC5jb20+IHdyb3RlOgoKPiBUbyBzdXBwb3J0IGltcGxl bWVudGF0aW9uIG9mIERSTSBjb25uZWN0b3JzIG9uIHRvcCBvZiBEUk0gYnJpZGdlcwo+IGluc3Rl YWQgb2YgYnkgYnJpZGdlcywgdGhlIGRybV9icmlkZ2UgbmVlZHMgdG8gZXhwb3NlIG5ldyBvcGVy YXRpb25zIGFuZAo+IGRhdGE6Cj4gCj4gLSBPdXRwdXQgZGV0ZWN0aW9uLCBob3QtcGx1ZyBub3Rp ZmljYXRpb24sIG1vZGUgcmV0cmlldmFsIGFuZCBFRElECj4gICByZXRyaWV2YWwgb3BlcmF0aW9u cwo+IC0gQml0bWFzayBvZiBzdXBwb3J0ZWQgb3BlcmF0aW9ucwo+IC0gQnJpZGdlIG91dHB1dCB0 eXBlCj4gLSBJMkMgYWRhcHRlciBmb3IgRERDIGFjY2Vzcwo+IAo+IEFkZCBhbmQgZG9jdW1lbnQg dGhlc2UuCj4gCj4gVGhyZWUgbmV3IGJyaWRnZSBoZWxwZXIgZnVuY3Rpb25zIGFyZSBhbHNvIGFk ZGVkIHRvIGhhbmRsZSBob3QgcGx1Zwo+IG5vdGlmaWNhdGlvbiBpbiBhIHdheSB0aGF0IGlzIGFz IHRyYW5zcGFyZW50IGFzIHBvc3NpYmxlIGZvciB0aGUKPiBicmlkZ2VzLgo+IAo+IFNpZ25lZC1v ZmYtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNv bT4KClJldmlld2VkLWJ5OiBCb3JpcyBCcmV6aWxsb24gPGJvcmlzLmJyZXppbGxvbkBjb2xsYWJv cmEuY29tPgoKPiAtLS0KPiBDaGFuZ2VzIHNpbmNlIHYxOgo+IAo+IC0gTWFrZSAuaHBkX2VuYWJs ZSgpIGFuZCAuaHBkX2Rpc2FibGUoKSBvcHRpb25hbAo+IC0gUmVuYW1lIC5sb3N0X2hvdHBsdWco KSB0byAuaHBkX25vdGlmeSgpCj4gLSBBZGQgZGRjIGZpZWxkIHRvIGRybV9icmlkZ2UKPiAtLS0K PiAgZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYyB8ICA5NCArKysrKysrKysrKysrKysrKysr Cj4gIGluY2x1ZGUvZHJtL2RybV9icmlkZ2UuaCAgICAgfCAxNzcgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKy0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAyNzAgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRn ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9icmlkZ2UuYwo+IGluZGV4IGNiYTUzN2M5OWU0My4u Y2YxZmJlZDg4NDEwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYnJpZGdlLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JyaWRnZS5jCj4gQEAgLTcwLDYgKzcwLDggQEAg c3RhdGljIExJU1RfSEVBRChicmlkZ2VfbGlzdCk7Cj4gICAqLwo+ICB2b2lkIGRybV9icmlkZ2Vf YWRkKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gIHsKPiArCW11dGV4X2luaXQoJmJyaWRn ZS0+aHBkX211dGV4KTsKPiArCj4gIAltdXRleF9sb2NrKCZicmlkZ2VfbG9jayk7Cj4gIAlsaXN0 X2FkZF90YWlsKCZicmlkZ2UtPmxpc3QsICZicmlkZ2VfbGlzdCk7Cj4gIAltdXRleF91bmxvY2so JmJyaWRnZV9sb2NrKTsKPiBAQCAtODYsNiArODgsOCBAQCB2b2lkIGRybV9icmlkZ2VfcmVtb3Zl KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpCj4gIAltdXRleF9sb2NrKCZicmlkZ2VfbG9jayk7 Cj4gIAlsaXN0X2RlbF9pbml0KCZicmlkZ2UtPmxpc3QpOwo+ICAJbXV0ZXhfdW5sb2NrKCZicmlk Z2VfbG9jayk7Cj4gKwo+ICsJbXV0ZXhfZGVzdHJveSgmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ICB9 Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2JyaWRnZV9yZW1vdmUpOwo+ICAKPiBAQCAtNDYyLDYgKzQ2 Niw5NiBAQCB2b2lkIGRybV9hdG9taWNfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAq YnJpZGdlLAo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2F0b21pY19icmlkZ2VfZW5hYmxlKTsK PiAgCj4gKy8qKgo+ICsgKiBkcm1fYnJpZGdlX2hwZF9lbmFibGUgLSBlbmFibGUgaG90IHBsdWcg ZGV0ZWN0aW9uIGZvciB0aGUgYnJpZGdlCj4gKyAqIEBicmlkZ2U6IGJyaWRnZSBjb250cm9sIHN0 cnVjdHVyZQo+ICsgKiBAY2I6IGhvdC1wbHVnIGRldGVjdGlvbiBjYWxsYmFjawo+ICsgKiBAZGF0 YTogZGF0YSB0byBiZSBwYXNzZWQgdG8gdGhlIGhvdC1wbHVnIGRldGVjdGlvbiBjYWxsYmFjawo+ ICsgKgo+ICsgKiBDYWxsICZkcm1fYnJpZGdlX2Z1bmNzLmhwZF9lbmFibGUgaWYgaW1wbGVtZW50 ZWQgYW5kIHJlZ2lzdGVyIHRoZSBnaXZlbiBAY2IKPiArICogYW5kIEBkYXRhIGFzIGhvdCBwbHVn IG5vdGlmaWNhdGlvbiBjYWxsYmFjay4gRnJvbSBub3cgb24gdGhlIEBjYiB3aWxsIGJlCj4gKyAq IGNhbGxlZCB3aXRoIEBkYXRhIHdoZW4gYW4gb3V0cHV0IHN0YXR1cyBjaGFuZ2UgaXMgZGV0ZWN0 ZWQgYnkgdGhlIGJyaWRnZSwKPiArICogdW50aWwgaG90IHBsdWcgbm90aWZpY2F0aW9uIGdldHMg ZGlzYWJsZWQgd2l0aCBkcm1fYnJpZGdlX2hwZF9kaXNhYmxlKCkuCj4gKyAqCj4gKyAqIEhvdCBw bHVnIGRldGVjdGlvbiBpcyBzdXBwb3J0ZWQgb25seSBpZiB0aGUgRFJNX0JSSURHRV9PUF9IUEQg ZmxhZyBpcyBzZXQgaW4KPiArICogYnJpZGdlLT5vcHMuIFRoaXMgZnVuY3Rpb24gc2hhbGwgbm90 IGJlIGNhbGxlZCB3aGVuIHRoZSBmbGFnIGlzIG5vdCBzZXQuCj4gKyAqCj4gKyAqIE9ubHkgb25l IGhvdCBwbHVnIGRldGVjdGlvbiBjYWxsYmFjayBjYW4gYmUgcmVnaXN0ZXJlZCBhdCBhIHRpbWUs IGl0IGlzIGFuCj4gKyAqIGVycm9yIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIGhvdCBwbHVn IGRldGVjdGlvbiBpcyBhbHJlYWR5IGVuYWJsZWQgZm9yCj4gKyAqIHRoZSBicmlkZ2UuCj4gKyAq Lwo+ICt2b2lkIGRybV9icmlkZ2VfaHBkX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdl LAo+ICsJCQkgICB2b2lkICgqY2IpKHZvaWQgKmRhdGEsCj4gKwkJCQkgICAgICBlbnVtIGRybV9j b25uZWN0b3Jfc3RhdHVzIHN0YXR1cyksCj4gKwkJCSAgIHZvaWQgKmRhdGEpCj4gK3sKPiArCWlm ICghYnJpZGdlIHx8ICEoYnJpZGdlLT5vcHMgJiBEUk1fQlJJREdFX09QX0hQRCkpCj4gKwkJcmV0 dXJuOwo+ICsKPiArCW11dGV4X2xvY2soJmJyaWRnZS0+aHBkX211dGV4KTsKPiArCj4gKwlpZiAo V0FSTihicmlkZ2UtPmhwZF9jYiwgIkhvdCBwbHVnIGRldGVjdGlvbiBhbHJlYWR5IGVuYWJsZWRc biIpKQo+ICsJCWdvdG8gdW5sb2NrOwo+ICsKPiArCWJyaWRnZS0+aHBkX2NiID0gY2I7Cj4gKwli cmlkZ2UtPmhwZF9kYXRhID0gZGF0YTsKPiArCj4gKwlpZiAoYnJpZGdlLT5mdW5jcy0+aHBkX2Vu YWJsZSkKPiArCQlicmlkZ2UtPmZ1bmNzLT5ocGRfZW5hYmxlKGJyaWRnZSk7Cj4gKwo+ICt1bmxv Y2s6Cj4gKwltdXRleF91bmxvY2soJmJyaWRnZS0+aHBkX211dGV4KTsKPiArfQo+ICtFWFBPUlRf U1lNQk9MX0dQTChkcm1fYnJpZGdlX2hwZF9lbmFibGUpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9i cmlkZ2VfaHBkX2Rpc2FibGUgLSBkaXNhYmxlIGhvdCBwbHVnIGRldGVjdGlvbiBmb3IgdGhlIGJy aWRnZQo+ICsgKiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiArICoKPiArICog Q2FsbCAmZHJtX2JyaWRnZV9mdW5jcy5ocGRfZGlzYWJsZSBpZiBpbXBsZW1lbnRlZCBhbmQgdW5y ZWdpc3RlciB0aGUgaG90Cj4gKyAqIHBsdWcgZGV0ZWN0aW9uIGNhbGxiYWNrIHByZXZpb3VzbHkg cmVnaXN0ZXJlZCB3aXRoIGRybV9icmlkZ2VfaHBkX2VuYWJsZSgpLgo+ICsgKiBPbmNlIHRoaXMg ZnVuY3Rpb24gcmV0dXJucyB0aGUgY2FsbGJhY2sgd2lsbCBub3QgYmUgY2FsbGVkIGJ5IHRoZSBi cmlkZ2UKPiArICogd2hlbiBhbiBvdXRwdXQgc3RhdHVzIGNoYW5nZSBvY2N1cnMuCj4gKyAqCj4g KyAqIEhvdCBwbHVnIGRldGVjdGlvbiBpcyBzdXBwb3J0ZWQgb25seSBpZiB0aGUgRFJNX0JSSURH RV9PUF9IUEQgZmxhZyBpcyBzZXQgaW4KPiArICogYnJpZGdlLT5vcHMuIFRoaXMgZnVuY3Rpb24g c2hhbGwgbm90IGJlIGNhbGxlZCB3aGVuIHRoZSBmbGFnIGlzIG5vdCBzZXQuCj4gKyAqLwo+ICt2 b2lkIGRybV9icmlkZ2VfaHBkX2Rpc2FibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSkKPiAr ewo+ICsJaWYgKCFicmlkZ2UgfHwgIShicmlkZ2UtPm9wcyAmIERSTV9CUklER0VfT1BfSFBEKSkK PiArCQlyZXR1cm47Cj4gKwo+ICsJbXV0ZXhfbG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ICsJ aWYgKGJyaWRnZS0+ZnVuY3MtPmhwZF9kaXNhYmxlKQo+ICsJCWJyaWRnZS0+ZnVuY3MtPmhwZF9k aXNhYmxlKGJyaWRnZSk7Cj4gKwo+ICsJYnJpZGdlLT5ocGRfY2IgPSBOVUxMOwo+ICsJYnJpZGdl LT5ocGRfZGF0YSA9IE5VTEw7Cj4gKwltdXRleF91bmxvY2soJmJyaWRnZS0+aHBkX211dGV4KTsK PiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChkcm1fYnJpZGdlX2hwZF9kaXNhYmxlKTsKPiArCj4g Ky8qKgo+ICsgKiBkcm1fYnJpZGdlX2hwZF9ub3RpZnkgLSBub3RpZnkgaG90IHBsdWcgZGV0ZWN0 aW9uIGV2ZW50cwo+ICsgKiBAYnJpZGdlOiBicmlkZ2UgY29udHJvbCBzdHJ1Y3R1cmUKPiArICog QHN0YXR1czogb3V0cHV0IGNvbm5lY3Rpb24gc3RhdHVzCj4gKyAqCj4gKyAqIEJyaWRnZSBkcml2 ZXJzIHNoYWxsIGNhbGwgdGhpcyBmdW5jdGlvbiB0byByZXBvcnQgaG90IHBsdWcgZXZlbnRzIHdo ZW4gdGhleQo+ICsgKiBkZXRlY3QgYSBjaGFuZ2UgaW4gdGhlIG91dHB1dCBzdGF0dXMsIHdoZW4g aG90IHBsdWcgZGV0ZWN0aW9uIGhhcyBiZWVuCj4gKyAqIGVuYWJsZWQgYnkgZHJtX2JyaWRnZV9o cGRfZW5hYmxlKCkuCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gc2hhbGwgYmUgY2FsbGVkIGlu IGEgY29udGV4dCB0aGF0IGNhbiBzbGVlcC4KPiArICovCj4gK3ZvaWQgZHJtX2JyaWRnZV9ocGRf bm90aWZ5KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJCSAgIGVudW0gZHJtX2Nvbm5l Y3Rvcl9zdGF0dXMgc3RhdHVzKQo+ICt7Cj4gKwltdXRleF9sb2NrKCZicmlkZ2UtPmhwZF9tdXRl eCk7Cj4gKwlpZiAoYnJpZGdlLT5ocGRfY2IpCj4gKwkJYnJpZGdlLT5ocGRfY2IoYnJpZGdlLT5o cGRfZGF0YSwgc3RhdHVzKTsKPiArCW11dGV4X3VubG9jaygmYnJpZGdlLT5ocGRfbXV0ZXgpOwo+ ICt9Cj4gK0VYUE9SVF9TWU1CT0xfR1BMKGRybV9icmlkZ2VfaHBkX25vdGlmeSk7Cj4gKwo+ICAj aWZkZWYgQ09ORklHX09GCj4gIC8qKgo+ICAgKiBvZl9kcm1fZmluZF9icmlkZ2UgLSBmaW5kIHRo ZSBicmlkZ2UgY29ycmVzcG9uZGluZyB0byB0aGUgZGV2aWNlIG5vZGUgaW4KPiBkaWZmIC0tZ2l0 IGEvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oIGIvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4g aW5kZXggNzYxNmY2NTYyZmU0Li43ZGI2Y2EwZmQ3NWQgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9k cm0vZHJtX2JyaWRnZS5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2JyaWRnZS5oCj4gQEAgLTIz LDE0ICsyMywxNiBAQAo+ICAjaWZuZGVmIF9fRFJNX0JSSURHRV9IX18KPiAgI2RlZmluZSBfX0RS TV9CUklER0VfSF9fCj4gIAo+IC0jaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+ICAjaW5jbHVkZSA8 bGludXgvY3R5cGUuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2xpc3QuaD4KPiArI2luY2x1ZGUgPGxp bnV4L211dGV4Lmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX21vZGVfb2JqZWN0Lmg+Cj4gICNpbmNs dWRlIDxkcm0vZHJtX21vZGVzLmg+Cj4gIAo+ICBzdHJ1Y3QgZHJtX2JyaWRnZTsKPiAgc3RydWN0 IGRybV9icmlkZ2VfdGltaW5nczsKPiAgc3RydWN0IGRybV9wYW5lbDsKPiArc3RydWN0IGkyY19h ZGFwdGVyOwo+ICAKPiAgLyoqCj4gICAqIHN0cnVjdCBkcm1fYnJpZGdlX2Z1bmNzIC0gZHJtX2Jy aWRnZSBjb250cm9sIGZ1bmN0aW9ucwo+IEBAIC0zMzQsNiArMzM2LDExMSBAQCBzdHJ1Y3QgZHJt X2JyaWRnZV9mdW5jcyB7Cj4gIAkgKi8KPiAgCXZvaWQgKCphdG9taWNfcG9zdF9kaXNhYmxlKShz dHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICAJCQkJICAgIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSk7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAZGV0ZWN0Ogo+ICsJICoKPiArCSAqIENo ZWNrIGlmIGFueXRoaW5nIGlzIGF0dGFjaGVkIHRvIHRoZSBicmlkZ2Ugb3V0cHV0Lgo+ICsJICoK PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwsIGlmIG5vdCBpbXBsZW1lbnRlZCB0aGUg YnJpZGdlIHdpbGwgYmUKPiArCSAqIGNvbnNpZGVyZWQgYXMgYWx3YXlzIGhhdmluZyBhIGNvbXBv bmVudCBhdHRhY2hlZCB0byBpdHMgb3V0cHV0Lgo+ICsJICogQnJpZGdlcyB0aGF0IGltcGxlbWVu dCB0aGlzIGNhbGxiYWNrIHNoYWxsIHNldCB0aGUKPiArCSAqIERSTV9CUklER0VfT1BfREVURUNU IGZsYWcgaW4gdGhlaXIgJmRybV9icmlkZ2UtPm9wcy4KPiArCSAqCj4gKwkgKiBSRVRVUk5TOgo+ ICsJICoKPiArCSAqIGRybV9jb25uZWN0b3Jfc3RhdHVzIGluZGljYXRpbmcgdGhlIGJyaWRnZSBv dXRwdXQgc3RhdHVzLgo+ICsJICovCj4gKwllbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzICgqZGV0 ZWN0KShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlKTsKPiArCj4gKwkvKioKPiArCSAqIEBnZXRf bW9kZXM6Cj4gKwkgKgo+ICsJICogRmlsbCBhbGwgbW9kZXMgY3VycmVudGx5IHZhbGlkIGZvciB0 aGUgc2luayBpbnRvIHRoZSAmZHJtX2Nvbm5lY3Rvcgo+ICsJICogd2l0aCBkcm1fbW9kZV9wcm9i ZWRfYWRkKCkuCj4gKwkgKgo+ICsJICogVGhlIEBnZXRfbW9kZXMgY2FsbGJhY2sgaXMgbW9zdGx5 IGludGVuZGVkIHRvIHN1cHBvcnQgbm9uLXByb2JhYmxlCj4gKwkgKiBkaXNwbGF5cyBzdWNoIGFz IG1hbnkgZml4ZWQgcGFuZWxzLiBCcmlkZ2VzIHRoYXQgc3VwcG9ydCByZWFkaW5nCj4gKwkgKiBF RElEIHNoYWxsIGxlYXZlIEBnZXRfbW9kZXMgdW5pbXBsZW1lbnRlZCBhbmQgaW1wbGVtZW50IHRo ZQo+ICsJICogJmRybV9icmlkZ2VfZnVuY3MtPmdldF9lZGlkIGNhbGxiYWNrIGluc3RlYWQuCj4g KwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4gQnJpZGdlcyB0aGF0IGltcGxl bWVudCBpdCBzaGFsbCBzZXQgdGhlCj4gKwkgKiBEUk1fQlJJREdFX09QX01PREVTIGZsYWcgaW4g dGhlaXIgJmRybV9icmlkZ2UtPm9wcy4KPiArCSAqCj4gKwkgKiBSRVRVUk5TOgo+ICsJICoKPiAr CSAqIFRoZSBudW1iZXIgb2YgbW9kZXMgYWRkZWQgYnkgY2FsbGluZyBkcm1fbW9kZV9wcm9iZWRf YWRkKCkuCj4gKwkgKi8KPiArCWludCAoKmdldF9tb2Rlcykoc3RydWN0IGRybV9icmlkZ2UgKmJy aWRnZSwKPiArCQkJIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ICsKPiArCS8q Kgo+ICsJICogQGdldF9lZGlkOgo+ICsJICoKPiArCSAqIFJlYWQgYW5kIHBhcnNlIHRoZSBFRElE IGRhdGEgb2YgdGhlIGNvbm5lY3RlZCBkaXNwbGF5Lgo+ICsJICoKPiArCSAqIFRoZSBAZ2V0X2Vk aWQgY2FsbGJhY2sgaXMgdGhlIHByZWZlcnJlZCB3YXkgb2YgcmVwb3J0aW5nIG1vZGUKPiArCSAq IGluZm9ybWF0aW9uIGZvciBhIGRpc3BsYXkgY29ubmVjdGVkIHRvIHRoZSBicmlkZ2Ugb3V0cHV0 LiBCcmlkZ2VzCj4gKwkgKiB0aGF0IHN1cHBvcnQgcmVhZGluZCBFRElEIHNoYWxsIGltcGxlbWVu dCB0aGlzIGNhbGxiYWNrIGFuZCBsZWF2ZQo+ICsJICogdGhlIEBnZXRfbW9kZXMgY2FsbGJhY2sg dW5pbXBsZW1lbnRlZC4KPiArCSAqCj4gKwkgKiBUaGUgY2FsbGVyIG9mIHRoaXMgb3BlcmF0aW9u IHNoYWxsIGZpcnN0IHZlcmlmeSB0aGUgb3V0cHV0Cj4gKwkgKiBjb25uZWN0aW9uIHN0YXR1cyBh bmQgcmVmcmFpbiBmcm9tIHJlYWRpbmcgRURJRCBmcm9tIGEgZGlzY29ubmVjdGVkCj4gKwkgKiBv dXRwdXQuCj4gKwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4gQnJpZGdlcyB0 aGF0IGltcGxlbWVudCBpdCBzaGFsbCBzZXQgdGhlCj4gKwkgKiBEUk1fQlJJREdFX09QX0VESUQg ZmxhZyBpbiB0aGVpciAmZHJtX2JyaWRnZS0+b3BzLgo+ICsJICoKPiArCSAqIFJFVFVSTlM6Cj4g KwkgKgo+ICsJICogQW4gZWRpZCBzdHJ1Y3R1cmUgbmV3bHkgYWxsb2NhdGVkIHdpdGgga21hbGxv YygpIChvciBzaW1pbGFyKSBvbgo+ICsJICogc3VjY2Vzcywgb3IgTlVMTCBvdGhlcndpc2UuIFRo ZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcKPiArCSAqIHRoZSByZXR1cm5lZCBl ZGlkIHN0cnVjdHVyZSB3aXRoIGtmcmVlKCkuCj4gKwkgKi8KPiArCXN0cnVjdCBlZGlkICooKmdl dF9lZGlkKShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICsJCQkJIHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpOwo+ICsKPiArCS8qKgo+ICsJICogQGhwZF9ub3RpZnk6Cj4gKwkg Kgo+ICsJICogTm90aWZ5IHRoZSBicmlkZ2Ugb2YgaG90IHBsdWcgZGV0ZWN0aW9uLgo+ICsJICoK PiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwsIGl0IG1heSBiZSBpbXBsZW1lbnRlZCBi eSBicmlkZ2VzIHRoYXQKPiArCSAqIG5lZWQgdG8gYmUgbm90aWZpZWQgb2YgZGlzcGxheSBjb25u ZWN0aW9uIG9yIGRpc2Nvbm5lY3Rpb24gZm9yCj4gKwkgKiBpbnRlcm5hbCByZWFzb25zLiBPbmUg dXNlIGNhc2UgaXMgdG8gcmVzZXQgdGhlIGludGVybmFsIHN0YXRlIG9mIENFQwo+ICsJICogY29u dHJvbGxlcnMgZm9yIEhETUkgYnJpZGdlcy4KPiArCSAqLwo+ICsJdm9pZCAoKmhwZF9ub3RpZnkp KHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UsCj4gKwkJCSAgIGVudW0gZHJtX2Nvbm5lY3Rvcl9z dGF0dXMgc3RhdHVzKTsKPiArCj4gKwkvKioKPiArCSAqIEBocGRfZW5hYmxlOgo+ICsJICoKPiAr CSAqIEVuYWJsZSBob3QgcGx1ZyBkZXRlY3Rpb24uIEZyb20gbm93IG9uIHRoZSBicmlkZ2Ugc2hh bGwgY2FsbAo+ICsJICogZHJtX2JyaWRnZV9ocGRfbm90aWZ5KCkgZWFjaCB0aW1lIGEgY2hhbmdl IGlzIGRldGVjdGVkIGluIHRoZSBvdXRwdXQKPiArCSAqIGNvbm5lY3Rpb24gc3RhdHVzLCB1bnRp bCBob3QgcGx1ZyBkZXRlY3Rpb24gZ2V0cyBkaXNhYmxlZCB3aXRoCj4gKwkgKiBAaHBkX2Rpc2Fi bGUuCj4gKwkgKgo+ICsJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbCBhbmQgc2hhbGwgb25s eSBiZSBpbXBsZW1lbnRlZCBieSBicmlkZ2VzCj4gKwkgKiB0aGF0IHN1cHBvcnQgaG90LXBsdWcg bm90aWZpY2F0aW9uIHdpdGhvdXQgcG9sbGluZy4gQnJpZGdlcyB0aGF0Cj4gKwkgKiBpbXBsZW1l bnQgaXQgc2hhbGwgYWxzbyBpbXBsZW1lbnQgdGhlIEBocGRfZGlzYWJsZSBjYWxsYmFjayBhbmQg c2V0Cj4gKwkgKiB0aGUgRFJNX0JSSURHRV9PUF9IUEQgZmxhZyBpbiB0aGVpciAmZHJtX2JyaWRn ZS0+b3BzLgo+ICsJICovCj4gKwl2b2lkICgqaHBkX2VuYWJsZSkoc3RydWN0IGRybV9icmlkZ2Ug KmJyaWRnZSk7Cj4gKwo+ICsJLyoqCj4gKwkgKiBAaHBkX2Rpc2FibGU6Cj4gKwkgKgo+ICsJICog RGlzYWJsZSBob3QgcGx1ZyBkZXRlY3Rpb24uIE9uY2UgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRo ZSBicmlkZ2UKPiArCSAqIHNoYWxsIG5vdCBjYWxsIGRybV9icmlkZ2VfaHBkX25vdGlmeSgpIHdo ZW4gYSBjaGFuZ2UgaW4gdGhlIG91dHB1dAo+ICsJICogY29ubmVjdGlvbiBzdGF0dXMgb2NjdXJz Lgo+ICsJICoKPiArCSAqIFRoaXMgY2FsbGJhY2sgaXMgb3B0aW9uYWwgYW5kIHNoYWxsIG9ubHkg YmUgaW1wbGVtZW50ZWQgYnkgYnJpZGdlcwo+ICsJICogdGhhdCBzdXBwb3J0IGhvdC1wbHVnIG5v dGlmaWNhdGlvbiB3aXRob3V0IHBvbGxpbmcuIEJyaWRnZXMgdGhhdAo+ICsJICogaW1wbGVtZW50 IGl0IHNoYWxsIGFsc28gaW1wbGVtZW50IHRoZSBAaHBkX2VuYWJsZSBjYWxsYmFjayBhbmQgc2V0 Cj4gKwkgKiB0aGUgRFJNX0JSSURHRV9PUF9IUEQgZmxhZyBpbiB0aGVpciAmZHJtX2JyaWRnZS0+ b3BzLgo+ICsJICovCj4gKwl2b2lkICgqaHBkX2Rpc2FibGUpKHN0cnVjdCBkcm1fYnJpZGdlICpi cmlkZ2UpOwo+ICB9Owo+ICAKPiAgLyoqCj4gQEAgLTM3Miw2ICs0NzksMzkgQEAgc3RydWN0IGRy bV9icmlkZ2VfdGltaW5ncyB7Cj4gIAlib29sIGR1YWxfbGluazsKPiAgfTsKPiAgCj4gKy8qKgo+ ICsgKiBlbnVtIGRybV9icmlkZ2Vfb3BzIC0gQml0bWFzayBvZiBvcGVyYXRpb25zIHN1cHBvcnRl ZCBieSB0aGUgYnJpZGdlCj4gKyAqLwo+ICtlbnVtIGRybV9icmlkZ2Vfb3BzIHsKPiArCS8qKgo+ ICsJICogQERSTV9CUklER0VfT1BfREVURUNUOiBUaGUgYnJpZGdlIGNhbiBkZXRlY3QgZGlzcGxh eXMgY29ubmVjdGVkIHRvCj4gKwkgKiBpdHMgb3V0cHV0LiBCcmlkZ2VzIHRoYXQgc2V0IHRoaXMg ZmxhZyBzaGFsbCBpbXBsZW1lbnQgdGhlCj4gKwkgKiAmZHJtX2JyaWRnZV9mdW5jcy0+ZGV0ZWN0 IGNhbGxiYWNrLgo+ICsJICovCj4gKwlEUk1fQlJJREdFX09QX0RFVEVDVCA9IEJJVCgwKSwKPiAr CS8qKgo+ICsJICogQERSTV9CUklER0VfT1BfRURJRDogVGhlIGJyaWRnZSBjYW4gcmV0cmlldmUg dGhlIEVESUQgb2YgdGhlIGRpc3BsYXkKPiArCSAqIGNvbm5lY3RlZCB0byBpdHMgb3V0cHV0LiBC cmlkZ2VzIHRoYXQgc2V0IHRoaXMgZmxhZyBzaGFsbCBpbXBsZW1lbnQKPiArCSAqIHRoZSAmZHJt X2JyaWRnZV9mdW5jcy0+Z2V0X2VkaWQgY2FsbGJhY2suCj4gKwkgKi8KPiArCURSTV9CUklER0Vf T1BfRURJRCA9IEJJVCgxKSwKPiArCS8qKgo+ICsJICogQERSTV9CUklER0VfT1BfSFBEOiBUaGUg YnJpZGdlIGNhbiBkZXRlY3QgaG90LXBsdWcgYW5kIGhvdC11bnBsdWcKPiArCSAqIHdpdGhvdXQg cmVxdWlyaW5nIHBvbGxpbmcuIEJyaWRnZXMgdGhhdCBzZXQgdGhpcyBmbGFnIHNoYWxsCj4gKwkg KiBpbXBsZW1lbnQgdGhlICZkcm1fYnJpZGdlX2Z1bmNzLT5ocGRfZW5hYmxlIGFuZAo+ICsJICog JmRybV9icmlkZ2VfZnVuY3MtPmhwZF9kaXNhYmxlIGNhbGxiYWNrcyBpZiB0aGV5IHN1cHBvcnQg ZW5hYmxpbmcKPiArCSAqIGFuZCBkaXNhYmxpbmcgaG90LXBsdWcgZGV0ZWN0aW9uIGR5bmFtaWNh bGx5Lgo+ICsJICovCj4gKwlEUk1fQlJJREdFX09QX0hQRCA9IEJJVCgyKSwKPiArCS8qKgo+ICsJ ICogQERSTV9CUklER0VfT1BfTU9ERVM6IFRoZSBicmlkZ2UgY2FuIHJldHJpZXZpbmcgdGhlIG1v ZGVzIHN1cHBvcnRlZAo+ICsJICogYnkgdGhlIGRpc3BsYXkgYXQgaXRzIG91dHB1dC4gVGhpcyBk b2VzIG5vdCBpbmNsdWRlIHJlYWRpbmQgRURJRAo+ICsJICogd2hpY2ggaXMgc2VwYXJhdGVseSBj b3ZlcmVkIGJ5IEBEUk1fQlJJREdFX09QX0VESUQuIEJyaWRnZXMgdGhhdCBzZXQKPiArCSAqIHRo aXMgZmxhZyBzaGFsbCBpbXBsZW1lbnQgdGhlICZkcm1fYnJpZGdlX2Z1bmNzLT5nZXRfbW9kZXMg Y2FsbGJhY2suCj4gKwkgKi8KPiArCURSTV9CUklER0VfT1BfTU9ERVMgPSBCSVQoMyksCj4gK307 Cj4gKwo+ICAvKioKPiAgICogc3RydWN0IGRybV9icmlkZ2UgLSBjZW50cmFsIERSTSBicmlkZ2Ug Y29udHJvbCBzdHJ1Y3R1cmUKPiAgICovCj4gQEAgLTM5OCw2ICs1MzgsMzMgQEAgc3RydWN0IGRy bV9icmlkZ2Ugewo+ICAJY29uc3Qgc3RydWN0IGRybV9icmlkZ2VfZnVuY3MgKmZ1bmNzOwo+ICAJ LyoqIEBkcml2ZXJfcHJpdmF0ZTogcG9pbnRlciB0byB0aGUgYnJpZGdlIGRyaXZlcidzIGludGVy bmFsIGNvbnRleHQgKi8KPiAgCXZvaWQgKmRyaXZlcl9wcml2YXRlOwo+ICsJLyoqIEBvcHM6IGJp dG1hc2sgb2Ygb3BlcmF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhlIGJyaWRnZSAqLwo+ICsJZW51bSBk cm1fYnJpZGdlX29wcyBvcHM7Cj4gKwkvKioKPiArCSAqIEB0eXBlOiBUeXBlIG9mIHRoZSBjb25u ZWN0aW9uIGF0IHRoZSBicmlkZ2Ugb3V0cHV0Cj4gKwkgKiAoRFJNX01PREVfQ09OTkVDVE9SXyop LiBGb3IgYnJpZGdlcyBhdCB0aGUgZW5kIG9mIHRoaXMgY2hhaW4gdGhpcwo+ICsJICogaWRlbnRp ZmllcyB0aGUgdHlwZSBvZiBjb25uZWN0ZWQgZGlzcGxheS4KPiArCSAqLwo+ICsJaW50IHR5cGU7 Cj4gKwkvKioKPiArCSAqIEBkZGM6IEFzc29jaWF0ZWQgSTJDIGFkYXB0ZXIgZm9yIEREQyBhY2Nl c3MsIGlmIGFueS4KPiArCSAqLwo+ICsJc3RydWN0IGkyY19hZGFwdGVyICpkZGM7Cj4gKwkvKiog cHJpdmF0ZTogKi8KPiArCS8qKgo+ICsJICogQGhwZF9tdXRleDogUHJvdGVjdHMgdGhlIEBocGRf Y2IgYW5kIEBocGRfZGF0YSBmaWVsZHMuCj4gKwkgKi8KPiArCXN0cnVjdCBtdXRleCBocGRfbXV0 ZXg7Cj4gKwkvKioKPiArCSAqIEBocGRfY2I6IEhvdCBwbHVnIGRldGVjdGlvbiBjYWxsYmFjaywg cmVnaXN0ZXJlZCB3aXRoCj4gKwkgKiBkcm1fYnJpZGdlX2hwZF9lbmFibGUoKS4KPiArCSAqLwo+ ICsJdm9pZCAoKmhwZF9jYikodm9pZCAqZGF0YSwgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBz dGF0dXMpOwo+ICsJLyoqCj4gKwkgKiBAaHBkX2RhdGE6IFByaXZhdGUgZGF0YSBwYXNzZWQgdG8g dGhlIEhvdCBwbHVnIGRldGVjdGlvbiBjYWxsYmFjawo+ICsJICogQGhwZF9jYi4KPiArCSAqLwo+ ICsJdm9pZCAqaHBkX2RhdGE7Cj4gIH07Cj4gIAo+ICB2b2lkIGRybV9icmlkZ2VfYWRkKHN0cnVj dCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+IEBAIC00MjgsNiArNTk1LDE0IEBAIHZvaWQgZHJtX2F0 b21pY19icmlkZ2VfcHJlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICB2b2lk IGRybV9hdG9taWNfYnJpZGdlX2VuYWJsZShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICAJ CQkgICAgICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+ICAKPiArdm9pZCBkcm1f YnJpZGdlX2hwZF9lbmFibGUoc3RydWN0IGRybV9icmlkZ2UgKmJyaWRnZSwKPiArCQkJICAgdm9p ZCAoKmNiKSh2b2lkICpkYXRhLAo+ICsJCQkJICAgICAgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1 cyBzdGF0dXMpLAo+ICsJCQkgICB2b2lkICpkYXRhKTsKPiArdm9pZCBkcm1fYnJpZGdlX2hwZF9k aXNhYmxlKHN0cnVjdCBkcm1fYnJpZGdlICpicmlkZ2UpOwo+ICt2b2lkIGRybV9icmlkZ2VfaHBk X25vdGlmeShzdHJ1Y3QgZHJtX2JyaWRnZSAqYnJpZGdlLAo+ICsJCQkgICBlbnVtIGRybV9jb25u ZWN0b3Jfc3RhdHVzIHN0YXR1cyk7Cj4gKwo+ICAjaWZkZWYgQ09ORklHX0RSTV9QQU5FTF9CUklE R0UKPiAgc3RydWN0IGRybV9icmlkZ2UgKmRybV9wYW5lbF9icmlkZ2VfYWRkKHN0cnVjdCBkcm1f cGFuZWwgKnBhbmVsLAo+ICAJCQkJCXUzMiBjb25uZWN0b3JfdHlwZSk7CgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0 CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=