From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matt Roper Subject: Re: [PATCH 2/6] drm: introduce color correction properties Date: Fri, 22 Jan 2016 13:20:44 -0800 Message-ID: <20160122212044.GK13311@intel.com> References: <1453464732-17241-1-git-send-email-lionel.g.landwerlin@intel.com> <1453464732-17241-3-git-send-email-lionel.g.landwerlin@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id D6FAD6E360 for ; Fri, 22 Jan 2016 13:20:48 -0800 (PST) Content-Disposition: inline In-Reply-To: <1453464732-17241-3-git-send-email-lionel.g.landwerlin@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lionel Landwerlin Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKYW4gMjIsIDIwMTYgYXQgMTI6MTI6MDhQTSArMDAwMCwgTGlvbmVsIExhbmR3ZXJs aW4gd3JvdGU6Cj4gdjI6IFJlZ2lzdGVyIExVVCBzaXplIHByb3BlcnRpZXMgYXMgcmFuZ2UKPiAK PiBTaWduZWQtb2ZmLWJ5OiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcubGFuZHdlcmxpbkBp bnRlbC5jb20+CgpQcm9iYWJseSBzaG91bGQgaGF2ZSBub3RpY2VkL2NvbW1lbnRlZCBvbiB0aGlz IG9uIHlvdXIgcHJldmlvdXMKaXRlcmF0aW9uLCBidXQgc2hvdWxkIHdlIGFsc28gcmVzdHJpY3Qg dGhlc2UgbmV3IHByb3BlcnRpZXMgdG8gYmUKYXRvbWljLW9ubHk/ICBJIHRob3VnaHQgdGhlcmUg d2FzIGEgY29uc2Vuc3VzIGEgd2hpbGUgYmFjayB0aGF0IG5ldwpmdW5jdGlvbmFsaXR5IHdvdWxk IG9ubHkgYmUgZXhwb3NlZCBmb3IgYXRvbWljLXJlYWR5IHVzZXJzcGFjZS4gIFRoYXQKd291bGQg bWVhbiBhbHNvIGFkZGluZyBEUk1fTU9ERV9QUk9QX0FUT01JQyB0byB5b3VyIGZsYWdzIGF0IGNy ZWF0aW9uLgpTb3JyeSBmb3Igbm90IG5vdGljaW5nIHRoaXMgd2hlbiBJIGNvbW1lbnRlZCBiZWZv cmUhCgpBbHNvLCB5b3UgcHJvYmFibHkgd2FudCB0byBhZGQgYSBDYzogZHJpLWRldmVsIHRvIHRo aXMgcGF0Y2ggc2luY2UgaXQKZGVhbHMgd2l0aCB0aGUgRFJNIGNvcmUgYW5kIGlzbid0IGk5MTUt c3BlY2lmaWMuCgoKTWF0dAoKPiAtLS0KPiAgRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBs ICAgICAgfCAgNTAgKysrKysrKysrKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljLmMgICAgICAgIHwgMTAyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8ICAxMCArKysrCj4gIGRyaXZl cnMvZ3B1L2RybS9kcm1fY3J0Yy5jICAgICAgICAgIHwgIDM1ICsrKysrKysrKysrKysKPiAgZHJp dmVycy9ncHUvZHJtL2RybV9jcnRjX2hlbHBlci5jICAgfCAgMzMgKysrKysrKysrKysrCj4gIGlu Y2x1ZGUvZHJtL2RybV9jcnRjLmggICAgICAgICAgICAgIHwgIDQzICsrKysrKysrKysrKysrLQo+ ICBpbmNsdWRlL2RybS9kcm1fY3J0Y19oZWxwZXIuaCAgICAgICB8ICAgMyArKwo+ICBpbmNsdWRl L3VhcGkvZHJtL2RybV9tb2RlLmggICAgICAgICB8ICAxNSArKysrKysKPiAgOCBmaWxlcyBjaGFu Z2VkLCAyODcgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv RG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dwdS50bXBsIGIvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dw dS50bXBsCj4gaW5kZXggMzUxZTgwMS4uYzE3YWMyOSAxMDA2NDQKPiAtLS0gYS9Eb2N1bWVudGF0 aW9uL0RvY0Jvb2svZ3B1LnRtcGwKPiArKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZ3B1LnRt cGwKPiBAQCAtMjA2OCw3ICsyMDY4LDcgQEAgdm9pZCBpbnRlbF9jcnRfaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KQo+ICAJPHRkIHZhbGlnbj0idG9wIiA+cHJvcGVydHkgdG8gc3VnZ2VzdCBh biBZIG9mZnNldCBmb3IgYSBjb25uZWN0b3I8L3RkPgo+ICAJPC90cj4KPiAgCTx0cj4KPiAtCTx0 ZCByb3dzcGFuPSIzIiB2YWxpZ249InRvcCIgPk9wdGlvbmFsPC90ZD4KPiArCTx0ZCByb3dzcGFu PSI4IiB2YWxpZ249InRvcCIgPk9wdGlvbmFsPC90ZD4KPiAgCTx0ZCB2YWxpZ249InRvcCIgPuKA nHNjYWxpbmcgbW9kZeKAnTwvdGQ+Cj4gIAk8dGQgdmFsaWduPSJ0b3AiID5FTlVNPC90ZD4KPiAg CTx0ZCB2YWxpZ249InRvcCIgPnsgIk5vbmUiLCAiRnVsbCIsICJDZW50ZXIiLCAiRnVsbCBhc3Bl Y3QiIH08L3RkPgo+IEBAIC0yMDkyLDYgKzIwOTIsNTQgQEAgdm9pZCBpbnRlbF9jcnRfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJPHRkIHZhbGlnbj0idG9wIiA+VEJEPC90ZD4KPiAg CTwvdHI+Cj4gIAk8dHI+Cj4gKwk8dGQgdmFsaWduPSJ0b3AiID7igJxERUdBTU1BX0xVVOKAnTwv dGQ+Cj4gKwk8dGQgdmFsaWduPSJ0b3AiID5CTE9CPC90ZD4KPiArCTx0ZCB2YWxpZ249InRvcCIg PjA8L3RkPgo+ICsJPHRkIHZhbGlnbj0idG9wIiA+Q1JUQzwvdGQ+Cj4gKwk8dGQgdmFsaWduPSJ0 b3AiID5EUk0gcHJvcGVydHkgdG8gc2V0IHRoZSBkZWdhbW1hIExVVCBtYXBwaW5nCj4gKwkJcGl4 ZWwgZGF0YSBmcm9tIHRoZSBmcmFtZWJ1ZmZlciBiZWZvcmUgaXQgaXMgZ2l2ZW4gdG8gdGhlCj4g KwkJdHJhbnNmb3JtYXRpb24gbWF0cml4LiBUaGUgZGF0YSBpcyBhbiBpbnRlcnByZXRlZCBhcyBh biBhcnJheQo+ICsJCW9mIHN0cnVjdCBkcm1fY29sb3JfbHV0IGVsZW1lbnRzLjwvdGQ+Cj4gKwk8 L3RyPgo+ICsJPHRyPgo+ICsJPHRkIHZhbGlnbj0idG9wIiA+4oCcREVHQU1NQV9MVVRfU0laReKA nTwvdGQ+Cj4gKwk8dGQgdmFsaWduPSJ0b3AiID5SQU5HRSB8IElNTVVUQUJMRTwvdGQ+Cj4gKwk8 dGQgdmFsaWduPSJ0b3AiID5NaW49MCwgTWF4PVVJTlRfTUFYPC90ZD4KPiArCTx0ZCB2YWxpZ249 InRvcCIgPkNSVEM8L3RkPgo+ICsJPHRkIHZhbGlnbj0idG9wIiA+RFJNIHByb3BlcnR5IHRvIGdp dmVzIHRoZSBzaXplIG9mIHRoZSBMVVQgdG8KPiArCQliZSBzZXQgb24gdGhlIERFR0FNTUFfTFVU IHByb3BlcnR5ICh0aGUgc2l6ZSBkZXBlbmRzIG9uIHRoZQo+ICsJCXVuZGVybHlpbmcgaGFyZHdh cmUpLjwvdGQ+Cj4gKwk8L3RyPgo+ICsJPHRyPgo+ICsJPHRkIHZhbGlnbj0idG9wIiA+4oCcQ1RN X01BVFJJWOKAnTwvdGQ+Cj4gKwk8dGQgdmFsaWduPSJ0b3AiID5CTE9CPC90ZD4KPiArCTx0ZCB2 YWxpZ249InRvcCIgPjA8L3RkPgo+ICsJPHRkIHZhbGlnbj0idG9wIiA+Q1JUQzwvdGQ+Cj4gKwk8 dGQgdmFsaWduPSJ0b3AiID5EUk0gcHJvcGVydHkgdG8gc2V0IHRoZSB0cmFuc2Zvcm1hdGlvbgo+ ICsJCW1hdHJpeCBhcHBseSB0byBwaXhlbCBkYXRhIGFmdGVyIHRoZSBsb29rdXAgdGhyb3VnaCB0 aGUKPiArCQlkZWdhbW1hIExVVCBhbmQgYmVmb3JlIHRoZSBsb29rdXAgdGhyb3VnaCB0aGUgZ2Ft bWEgTFVULiBUaGUKPiArCQlkYXRhIGlzIGFuIGludGVycHJldGVkIGFzIGEgc3RydWN0IGRybV9j b2xvcl9jdG0uPC90ZD4KPiArCTwvdHI+Cj4gKwk8dHI+Cj4gKwk8dGQgdmFsaWduPSJ0b3AiID7i gJxHQU1NQV9MVVTigJ08L3RkPgo+ICsJPHRkIHZhbGlnbj0idG9wIiA+QkxPQjwvdGQ+Cj4gKwk8 dGQgdmFsaWduPSJ0b3AiID4wPC90ZD4KPiArCTx0ZCB2YWxpZ249InRvcCIgPkNSVEM8L3RkPgo+ ICsJPHRkIHZhbGlnbj0idG9wIiA+RFJNIHByb3BlcnR5IHRvIHNldCB0aGUgZ2FtbWEgTFVUIG1h cHBpbmcKPiArCQlwaXhlbCBkYXRhIGFmdGVyIHRvIHRoZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXgg dG8gZGF0YSBzZW50IHRvCj4gKwkJdGhlIGNvbm5lY3Rvci4gVGhlIGRhdGEgaXMgYW4gaW50ZXJw cmV0ZWQgYXMgYW4gYXJyYXkKPiArCQlvZiBzdHJ1Y3QgZHJtX2NvbG9yX2x1dCBlbGVtZW50cy48 L3RkPgo+ICsJPC90cj4KPiArCTx0cj4KPiArCTx0ZCB2YWxpZ249InRvcCIgPuKAnEdBTU1BX0xV VF9TSVpF4oCdPC90ZD4KPiArCTx0ZCB2YWxpZ249InRvcCIgPlJBTkdFIHwgSU1NVVRBQkxFPC90 ZD4KPiArCTx0ZCB2YWxpZ249InRvcCIgPk1pbj0wLCBNYXg9VUlOVF9NQVg8L3RkPgo+ICsJPHRk IHZhbGlnbj0idG9wIiA+Q1JUQzwvdGQ+Cj4gKwk8dGQgdmFsaWduPSJ0b3AiID5EUk0gcHJvcGVy dHkgdG8gZ2l2ZXMgdGhlIHNpemUgb2YgdGhlIExVVCB0bwo+ICsJCWJlIHNldCBvbiB0aGUgR0FN TUFfTFVUIHByb3BlcnR5ICh0aGUgc2l6ZSBkZXBlbmRzIG9uIHRoZQo+ICsJCXVuZGVybHlpbmcg aGFyZHdhcmUpLjwvdGQ+Cj4gKwk8L3RyPgo+ICsJPHRyPgo+ICAJPHRkIHJvd3NwYW49IjIwIiB2 YWxpZ249InRvcCIgPmk5MTU8L3RkPgo+ICAJPHRkIHJvd3NwYW49IjIiIHZhbGlnbj0idG9wIiA+ R2VuZXJpYzwvdGQ+Cj4gIAk8dGQgdmFsaWduPSJ0b3AiID4iQnJvYWRjYXN0IFJHQiI8L3RkPgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9hdG9taWMuYwo+IGluZGV4IDNmNzQxOTMuLjUyODc0MTYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f YXRvbWljLmMKPiBAQCAtMjgsNiArMjgsNyBAQAo+ICAKPiAgI2luY2x1ZGUgPGRybS9kcm1QLmg+ Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9tb2Rl Lmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX3BsYW5lX2hlbHBlci5oPgo+ICAKPiAgLyoqCj4gQEAg LTM4OCw2ICszODksNTggQEAgaW50IGRybV9hdG9taWNfc2V0X21vZGVfcHJvcF9mb3JfY3J0Yyhz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlLAo+ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNf c2V0X21vZGVfcHJvcF9mb3JfY3J0Yyk7Cj4gIAo+ICAvKioKPiArICogZHJtX2F0b21pY19yZXBs YWNlX3Byb3BlcnR5X2Jsb2IgLSByZXBsYWNlIGEgYmxvYiBwcm9wZXJ0eQo+ICsgKiBAYmxvYjog YSBwb2ludGVyIHRvIHRoZSBtZW1iZXIgYmxvYiB0byBiZSByZXBsYWNlZAo+ICsgKiBAbmV3X2Js b2I6IHRoZSBuZXcgYmxvYiB0byByZXBsYWNlIHdpdGgKPiArICogQGV4cGVjdGVkX3NpemU6IHRo ZSBleHBlY3RlZCBzaXplIG9mIHRoZSBuZXcgYmxvYgo+ICsgKiBAcmVwbGFjZWQ6IHdoZXRoZXIg dGhlIGJsb2IgaGFzIGJlZW4gcmVwbGFjZWQKPiArICoKPiArICogUkVUVVJOUzoKPiArICogWmVy byBvbiBzdWNjZXNzLCBlcnJvciBjb2RlIG9uIGZhaWx1cmUKPiArICovCj4gK3N0YXRpYyBpbnQK PiArZHJtX2F0b21pY19yZXBsYWNlX3Byb3BlcnR5X2Jsb2Ioc3RydWN0IGRybV9wcm9wZXJ0eV9i bG9iICoqYmxvYiwKPiArCQkJCSBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKm5ld19ibG9iLAo+ ICsJCQkJIHNpemVfdCBleHBlY3RlZF9zaXplLAo+ICsJCQkJIGJvb2wgKnJlcGxhY2VkKQo+ICt7 Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKm9sZF9ibG9iID0gKmJsb2I7Cj4gKwo+ICsJ aWYgKG9sZF9ibG9iID09IG5ld19ibG9iKQo+ICsJCXJldHVybiAwOwo+ICsKPiArCWlmIChuZXdf YmxvYiAhPSBOVUxMICYmIG5ld19ibG9iLT5sZW5ndGggIT0gZXhwZWN0ZWRfc2l6ZSkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlpZiAob2xkX2Jsb2IgIT0gTlVMTCkKPiArCQlkcm1fcHJv cGVydHlfdW5yZWZlcmVuY2VfYmxvYihvbGRfYmxvYik7Cj4gKwkqYmxvYiA9IG5ld19ibG9iOwo+ ICsJKnJlcGxhY2VkID0gdHJ1ZTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGlj IGludAo+ICtkcm1fYXRvbWljX3JlcGxhY2VfcHJvcGVydHlfYmxvYl9mcm9tX2lkKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKPiArCQkJCQkgc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICoqYmxvYiwK PiArCQkJCQkgdWludDY0X3QgYmxvYl9pZCwKPiArCQkJCQkgc2l6ZV90IGV4cGVjdGVkX3NpemUs Cj4gKwkJCQkJIGJvb2wgKnJlcGxhY2VkKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY3J0Yy0+ZGV2Owo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpuZXdfYmxvYiA9IE5V TEw7Cj4gKwo+ICsJaWYgKGJsb2JfaWQgIT0gMCkgewo+ICsJCW5ld19ibG9iID0gZHJtX3Byb3Bl cnR5X2xvb2t1cF9ibG9iKGRldiwgYmxvYl9pZCk7Cj4gKwkJaWYgKG5ld19ibG9iID09IE5VTEwp Cj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldHVybiBkcm1fYXRvbWljX3Jl cGxhY2VfcHJvcGVydHlfYmxvYihibG9iLCBuZXdfYmxvYiwKPiArCQkJCQkJZXhwZWN0ZWRfc2l6 ZSwgcmVwbGFjZWQpOwo+ICt9Cj4gKwo+ICsvKioKPiAgICogZHJtX2F0b21pY19jcnRjX3NldF9w cm9wZXJ0eSAtIHNldCBwcm9wZXJ0eSBvbiBDUlRDCj4gICAqIEBjcnRjOiB0aGUgZHJtIENSVEMg dG8gc2V0IGEgcHJvcGVydHkgb24KPiAgICogQHN0YXRlOiB0aGUgc3RhdGUgb2JqZWN0IHRvIHVw ZGF0ZSB3aXRoIHRoZSBuZXcgcHJvcGVydHkgdmFsdWUKPiBAQCAtNDE5LDggKzQ3Miw0NyBAQCBp bnQgZHJtX2F0b21pY19jcnRjX3NldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4g IAkJcmV0ID0gZHJtX2F0b21pY19zZXRfbW9kZV9wcm9wX2Zvcl9jcnRjKHN0YXRlLCBtb2RlKTsK PiAgCQlkcm1fcHJvcGVydHlfdW5yZWZlcmVuY2VfYmxvYihtb2RlKTsKPiAgCQlyZXR1cm4gcmV0 Owo+IC0JfQo+IC0JZWxzZSBpZiAoY3J0Yy0+ZnVuY3MtPmF0b21pY19zZXRfcHJvcGVydHkpCj4g Kwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+ZGVnYW1tYV9sdXRfcHJvcGVydHkpIHsK PiArCQlib29sIHJlcGxhY2VkID0gZmFsc2U7Cj4gKwkJdWludDY0X3QgbHV0X3NpemUgPSAwOwo+ ICsKPiArCQlyZXQgPSBkcm1fb2JqZWN0X3Byb3BlcnR5X2dldF92YWx1ZSgmY3J0Yy0+YmFzZSwK PiArCQkJCQljb25maWctPmRlZ2FtbWFfbHV0X3NpemVfcHJvcGVydHksCj4gKwkJCQkJJmx1dF9z aXplKTsKPiArCQlpZiAocmV0ID09IDApCj4gKwkJCXJldCA9IGRybV9hdG9taWNfcmVwbGFjZV9w cm9wZXJ0eV9ibG9iX2Zyb21faWQoY3J0YywKPiArCQkJCQkmc3RhdGUtPmRlZ2FtbWFfbHV0LAo+ ICsJCQkJCXZhbCwKPiArCQkJCQlsdXRfc2l6ZSAqIHNpemVvZihzdHJ1Y3QgZHJtX2NvbG9yX2x1 dCksCj4gKwkJCQkJJnJlcGxhY2VkKTsKPiArCQlzdGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkID0g cmVwbGFjZWQ7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29u ZmlnLT5jdG1fbWF0cml4X3Byb3BlcnR5KSB7Cj4gKwkJYm9vbCByZXBsYWNlZCA9IGZhbHNlOwo+ ICsKPiArCQlyZXQgPSBkcm1fYXRvbWljX3JlcGxhY2VfcHJvcGVydHlfYmxvYl9mcm9tX2lkKGNy dGMsCj4gKwkJCQkJJnN0YXRlLT5jdG1fbWF0cml4LAo+ICsJCQkJCXZhbCwKPiArCQkJCQlzaXpl b2Yoc3RydWN0IGRybV9jb2xvcl9jdG0pLAo+ICsJCQkJCQkJICAgICAgICZyZXBsYWNlZCk7Cj4g KwkJc3RhdGUtPmNvbG9yX21nbXRfY2hhbmdlZCA9IHJlcGxhY2VkOwo+ICsJCXJldHVybiByZXQ7 Cj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+Z2FtbWFfbHV0X3Byb3BlcnR5KSB7 Cj4gKwkJYm9vbCByZXBsYWNlZCA9IGZhbHNlOwo+ICsJCXVpbnQ2NF90IGx1dF9zaXplID0gMDsK PiArCj4gKwkJcmV0ID0gZHJtX29iamVjdF9wcm9wZXJ0eV9nZXRfdmFsdWUoJmNydGMtPmJhc2Us Cj4gKwkJCQkJY29uZmlnLT5nYW1tYV9sdXRfc2l6ZV9wcm9wZXJ0eSwKPiArCQkJCQkmbHV0X3Np emUpOwo+ICsJCWlmIChyZXQgPT0gMCkKPiArCQkJcmV0ID0gZHJtX2F0b21pY19yZXBsYWNlX3By b3BlcnR5X2Jsb2JfZnJvbV9pZChjcnRjLAo+ICsJCQkJCSZzdGF0ZS0+Z2FtbWFfbHV0LAo+ICsJ CQkJCXZhbCwKPiArCQkJCQlsdXRfc2l6ZSAqIHNpemVvZihzdHJ1Y3QgZHJtX2NvbG9yX2x1dCks Cj4gKwkJCQkJJnJlcGxhY2VkKTsKPiArCQlzdGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkID0gcmVw bGFjZWQ7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0gZWxzZSBpZiAoY3J0Yy0+ZnVuY3MtPmF0b21p Y19zZXRfcHJvcGVydHkpCj4gIAkJcmV0dXJuIGNydGMtPmZ1bmNzLT5hdG9taWNfc2V0X3Byb3Bl cnR5KGNydGMsIHN0YXRlLCBwcm9wZXJ0eSwgdmFsKTsKPiAgCWVsc2UKPiAgCQlyZXR1cm4gLUVJ TlZBTDsKPiBAQCAtNDU2LDYgKzU0OCwxMiBAQCBkcm1fYXRvbWljX2NydGNfZ2V0X3Byb3BlcnR5 KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCQkqdmFsID0gc3RhdGUtPmFjdGl2ZTsKPiAgCWVs c2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+cHJvcF9tb2RlX2lkKQo+ICAJCSp2YWwgPSAoc3Rh dGUtPm1vZGVfYmxvYikgPyBzdGF0ZS0+bW9kZV9ibG9iLT5iYXNlLmlkIDogMDsKPiArCWVsc2Ug aWYgKHByb3BlcnR5ID09IGNvbmZpZy0+ZGVnYW1tYV9sdXRfcHJvcGVydHkpCj4gKwkJKnZhbCA9 IChzdGF0ZS0+ZGVnYW1tYV9sdXQpID8gc3RhdGUtPmRlZ2FtbWFfbHV0LT5iYXNlLmlkIDogMDsK PiArCWVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+Y3RtX21hdHJpeF9wcm9wZXJ0eSkKPiAr CQkqdmFsID0gKHN0YXRlLT5jdG1fbWF0cml4KSA/IHN0YXRlLT5jdG1fbWF0cml4LT5iYXNlLmlk IDogMDsKPiArCWVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+Z2FtbWFfbHV0X3Byb3BlcnR5 KQo+ICsJCSp2YWwgPSAoc3RhdGUtPmdhbW1hX2x1dCkgPyBzdGF0ZS0+Z2FtbWFfbHV0LT5iYXNl LmlkIDogMDsKPiAgCWVsc2UgaWYgKGNydGMtPmZ1bmNzLT5hdG9taWNfZ2V0X3Byb3BlcnR5KQo+ ICAJCXJldHVybiBjcnRjLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eShjcnRjLCBzdGF0ZSwg cHJvcGVydHksIHZhbCk7Cj4gIAllbHNlCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMK PiBpbmRleCBmMGMzOTg0Li5lNGE1NzU1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVs cGVyLmMKPiBAQCAtMjQ1NCwxMCArMjQ1NCwxNyBAQCB2b2lkIF9fZHJtX2F0b21pY19oZWxwZXJf Y3J0Y19kdXBsaWNhdGVfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAKPiAgCWlmIChz dGF0ZS0+bW9kZV9ibG9iKQo+ICAJCWRybV9wcm9wZXJ0eV9yZWZlcmVuY2VfYmxvYihzdGF0ZS0+ bW9kZV9ibG9iKTsKPiArCWlmIChzdGF0ZS0+ZGVnYW1tYV9sdXQpCj4gKwkJZHJtX3Byb3BlcnR5 X3JlZmVyZW5jZV9ibG9iKHN0YXRlLT5kZWdhbW1hX2x1dCk7Cj4gKwlpZiAoc3RhdGUtPmN0bV9t YXRyaXgpCj4gKwkJZHJtX3Byb3BlcnR5X3JlZmVyZW5jZV9ibG9iKHN0YXRlLT5jdG1fbWF0cml4 KTsKPiArCWlmIChzdGF0ZS0+Z2FtbWFfbHV0KQo+ICsJCWRybV9wcm9wZXJ0eV9yZWZlcmVuY2Vf YmxvYihzdGF0ZS0+Z2FtbWFfbHV0KTsKPiAgCXN0YXRlLT5tb2RlX2NoYW5nZWQgPSBmYWxzZTsK PiAgCXN0YXRlLT5hY3RpdmVfY2hhbmdlZCA9IGZhbHNlOwo+ICAJc3RhdGUtPnBsYW5lc19jaGFu Z2VkID0gZmFsc2U7Cj4gIAlzdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkID0gZmFsc2U7Cj4gKwlz dGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkID0gZmFsc2U7Cj4gIAlzdGF0ZS0+ZXZlbnQgPSBOVUxM Owo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woX19kcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0 ZV9zdGF0ZSk7Cj4gQEAgLTI0OTgsNiArMjUwNSw5IEBAIHZvaWQgX19kcm1fYXRvbWljX2hlbHBl cl9jcnRjX2Rlc3Ryb3lfc3RhdGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJCSAgICBz dHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gIAlkcm1fcHJvcGVydHlfdW5yZWZl cmVuY2VfYmxvYihzdGF0ZS0+bW9kZV9ibG9iKTsKPiArCWRybV9wcm9wZXJ0eV91bnJlZmVyZW5j ZV9ibG9iKHN0YXRlLT5kZWdhbW1hX2x1dCk7Cj4gKwlkcm1fcHJvcGVydHlfdW5yZWZlcmVuY2Vf YmxvYihzdGF0ZS0+Y3RtX21hdHJpeCk7Cj4gKwlkcm1fcHJvcGVydHlfdW5yZWZlcmVuY2VfYmxv YihzdGF0ZS0+Z2FtbWFfbHV0KTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKF9fZHJtX2F0b21pY19o ZWxwZXJfY3J0Y19kZXN0cm95X3N0YXRlKTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBpbmRleCBkNDBi YWIyLi5iMWFhMzhhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBAQCAtMTU0Miw2ICsxNTQyLDQxIEBA IHN0YXRpYyBpbnQgZHJtX21vZGVfY3JlYXRlX3N0YW5kYXJkX3Byb3BlcnRpZXMoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKPiAgCQlyZXR1cm4gLUVOT01FTTsKPiAgCWRldi0+bW9kZV9jb25maWcu cHJvcF9tb2RlX2lkID0gcHJvcDsKPiAgCj4gKwlwcm9wID0gZHJtX3Byb3BlcnR5X2NyZWF0ZShk ZXYsCj4gKwkJCURSTV9NT0RFX1BST1BfQkxPQiwKPiArCQkJIkRFR0FNTUFfTFVUIiwgMCk7Cj4g KwlpZiAoIXByb3ApCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwlkZXYtPm1vZGVfY29uZmlnLmRl Z2FtbWFfbHV0X3Byb3BlcnR5ID0gcHJvcDsKPiArCj4gKwlwcm9wID0gZHJtX3Byb3BlcnR5X2Ny ZWF0ZV9yYW5nZShkZXYsCj4gKwkJCURSTV9NT0RFX1BST1BfSU1NVVRBQkxFLAo+ICsJCQkiREVH QU1NQV9MVVRfU0laRSIsIDAsIFVJTlRfTUFYKTsKPiArCWlmICghcHJvcCkKPiArCQlyZXR1cm4g LUVOT01FTTsKPiArCWRldi0+bW9kZV9jb25maWcuZGVnYW1tYV9sdXRfc2l6ZV9wcm9wZXJ0eSA9 IHByb3A7Cj4gKwo+ICsJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGUoZGV2LAo+ICsJCQlEUk1f TU9ERV9QUk9QX0JMT0IsCj4gKwkJCSJDVE1fTUFUUklYIiwgMCk7Cj4gKwlpZiAoIXByb3ApCj4g KwkJcmV0dXJuIC1FTk9NRU07Cj4gKwlkZXYtPm1vZGVfY29uZmlnLmN0bV9tYXRyaXhfcHJvcGVy dHkgPSBwcm9wOwo+ICsKPiArCXByb3AgPSBkcm1fcHJvcGVydHlfY3JlYXRlKGRldiwKPiArCQkJ RFJNX01PREVfUFJPUF9CTE9CLAo+ICsJCQkiR0FNTUFfTFVUIiwgMCk7Cj4gKwlpZiAoIXByb3Ap Cj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwlkZXYtPm1vZGVfY29uZmlnLmdhbW1hX2x1dF9wcm9w ZXJ0eSA9IHByb3A7Cj4gKwo+ICsJcHJvcCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfcmFuZ2UoZGV2 LAo+ICsJCQlEUk1fTU9ERV9QUk9QX0lNTVVUQUJMRSwKPiArCQkJIkdBTU1BX0xVVF9TSVpFIiwg MCwgVUlOVF9NQVgpOwo+ICsJaWYgKCFwcm9wKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsJZGV2 LT5tb2RlX2NvbmZpZy5nYW1tYV9sdXRfc2l6ZV9wcm9wZXJ0eSA9IHByb3A7Cj4gKwo+ICAJcmV0 dXJuIDA7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19o ZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Y19oZWxwZXIuYwo+IGluZGV4IDVkNGJj NjQuLmI5YjE5MjkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2hlbHBl ci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjX2hlbHBlci5jCj4gQEAgLTEwNjQs MyArMTA2NCwzNiBAQCBpbnQgZHJtX2hlbHBlcl9jcnRjX21vZGVfc2V0X2Jhc2Uoc3RydWN0IGRy bV9jcnRjICpjcnRjLCBpbnQgeCwgaW50IHksCj4gIAlyZXR1cm4gZHJtX3BsYW5lX2hlbHBlcl9j b21taXQocGxhbmUsIHBsYW5lX3N0YXRlLCBvbGRfZmIpOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0wo ZHJtX2hlbHBlcl9jcnRjX21vZGVfc2V0X2Jhc2UpOwo+ICsKPiArLyoqCj4gKyAqIGRybV9oZWxw ZXJfY3J0Y19lbmFibGVfY29sb3JfbWdtdCAtIGVuYWJsZSBjb2xvciBtYW5hZ2VtZW50IHByb3Bl cnRpZXMKPiArICogQGNydGM6IERSTSBDUlRDCj4gKyAqIEBkZWdhbW1hX2x1dF9zaXplOiB0aGUg c2l6ZSBvZiB0aGUgZGVnYW1tYSBsdXQgKGJlZm9yZSBDU0MpCj4gKyAqIEBnYW1tYV9sdXRfc2l6 ZTogdGhlIHNpemUgb2YgdGhlIGdhbW1hIGx1dCAoYWZ0ZXIgQ1NDKQo+ICsgKgo+ICsgKiBUaGlz IGZ1bmN0aW9uIGxldHMgdGhlIGRyaXZlciBlbmFibGUgdGhlIGNvbG9yIGNvcnJlY3Rpb24gcHJv cGVydGllcyBvbiBhCj4gKyAqIENSVEMuIFRoaXMgaW5jbHVkZXMgMyBkZWdhbW1hLCBjc2MgYW5k IGdhbW1hIHByb3BlcnRpZXMgdGhhdCB1c2Vyc3BhY2UgY2FuCj4gKyAqIHNldCBhbmQgMiBzaXpl IHByb3BlcnRpZXMgdG8gaW5mb3JtIHRoZSB1c2Vyc3BhY2Ugb2YgdGhlIGx1dCBzaXplcy4KPiAr ICovCj4gK3ZvaWQgZHJtX2hlbHBlcl9jcnRjX2VuYWJsZV9jb2xvcl9tZ210KHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiArCQkJCSAgICAgICBpbnQgZGVnYW1tYV9sdXRfc2l6ZSwKPiArCQkJCSAg ICAgICBpbnQgZ2FtbWFfbHV0X3NpemUpCj4gK3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPSAmZGV2LT5t b2RlX2NvbmZpZzsKPiArCj4gKwlkcm1fb2JqZWN0X2F0dGFjaF9wcm9wZXJ0eSgmY3J0Yy0+YmFz ZSwKPiArCQkJCSAgIGNvbmZpZy0+ZGVnYW1tYV9sdXRfcHJvcGVydHksIDApOwo+ICsJZHJtX29i amVjdF9hdHRhY2hfcHJvcGVydHkoJmNydGMtPmJhc2UsCj4gKwkJCQkgICBjb25maWctPmN0bV9t YXRyaXhfcHJvcGVydHksIDApOwo+ICsJZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmNydGMt PmJhc2UsCj4gKwkJCQkgICBjb25maWctPmdhbW1hX2x1dF9wcm9wZXJ0eSwgMCk7Cj4gKwo+ICsJ ZHJtX29iamVjdF9hdHRhY2hfcHJvcGVydHkoJmNydGMtPmJhc2UsCj4gKwkJCQkgICBjb25maWct PmRlZ2FtbWFfbHV0X3NpemVfcHJvcGVydHksCj4gKwkJCQkgICBkZWdhbW1hX2x1dF9zaXplKTsK PiArCWRybV9vYmplY3RfYXR0YWNoX3Byb3BlcnR5KCZjcnRjLT5iYXNlLAo+ICsJCQkJICAgY29u ZmlnLT5nYW1tYV9sdXRfc2l6ZV9wcm9wZXJ0eSwKPiArCQkJCSAgIGdhbW1hX2x1dF9zaXplKTsK PiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9oZWxwZXJfY3J0Y19lbmFibGVfY29sb3JfbWdtdCk7 Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmggYi9pbmNsdWRlL2RybS9kcm1f Y3J0Yy5oCj4gaW5kZXggYzY1YTIxMi4uOTY3ZDY0NiAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL2Ry bS9kcm1fY3J0Yy5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaAo+IEBAIC0zMDUsMTIg KzMwNSwxOSBAQCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jczsKPiAgICogQG1vZGVfY2hh bmdlZDogY3J0Y19zdGF0ZS0+bW9kZSBvciBjcnRjX3N0YXRlLT5lbmFibGUgaGFzIGJlZW4gY2hh bmdlZAo+ICAgKiBAYWN0aXZlX2NoYW5nZWQ6IGNydGNfc3RhdGUtPmFjdGl2ZSBoYXMgYmVlbiB0 b2dnbGVkLgo+ICAgKiBAY29ubmVjdG9yc19jaGFuZ2VkOiBjb25uZWN0b3JzIHRvIHRoaXMgY3J0 YyBoYXZlIGJlZW4gdXBkYXRlZAo+ICsgKiBAY29sb3JfbWdtdF9jaGFuZ2VkOiBjb2xvciBtYW5h Z2VtZW50IHByb3BlcnRpZXMgaGF2ZSBjaGFuZ2VkIChkZWdhbW1hIG9yCj4gKyAqCWdhbW1hIExV VCBvciBDU0MgbWF0cml4KQo+ICAgKiBAcGxhbmVfbWFzazogYml0bWFzayBvZiAoMSA8PCBkcm1f cGxhbmVfaW5kZXgocGxhbmUpKSBvZiBhdHRhY2hlZCBwbGFuZXMKPiAgICogQGNvbm5lY3Rvcl9t YXNrOiBiaXRtYXNrIG9mICgxIDw8IGRybV9jb25uZWN0b3JfaW5kZXgoY29ubmVjdG9yKSkgb2Yg YXR0YWNoZWQgY29ubmVjdG9ycwo+ICAgKiBAbGFzdF92YmxhbmtfY291bnQ6IGZvciBoZWxwZXJz IGFuZCBkcml2ZXJzIHRvIGNhcHR1cmUgdGhlIHZibGFuayBvZiB0aGUKPiAgICogCXVwZGF0ZSB0 byBlbnN1cmUgZnJhbWVidWZmZXIgY2xlYW51cCBpc24ndCBkb25lIHRvbyBlYXJseQo+ICAgKiBA YWRqdXN0ZWRfbW9kZTogZm9yIHVzZSBieSBoZWxwZXJzIGFuZCBkcml2ZXJzIHRvIGNvbXB1dGUg YWRqdXN0ZWQgbW9kZSB0aW1pbmdzCj4gICAqIEBtb2RlOiBjdXJyZW50IG1vZGUgdGltaW5ncwo+ ICsgKiBAZGVnYW1tYV9sdXQ6IExvb2t1cCB0YWJsZSBmb3IgY29udmVydGluZyBmcmFtZWJ1ZmZl ciBwaXhlbCBkYXRhCj4gKyAqCWJlZm9yZSBhcHBseSB0aGUgY29udmVyc2lvbiBtYXRyaXgKPiAr ICogQGN0bV9tYXRyaXg6IFRyYW5zZm9ybWF0aW9uIG1hdHJpeAo+ICsgKiBAZ2FtbWFfbHV0OiBM b29rdXAgdGFibGUgZm9yIGNvbnZlcnRpbmcgcGl4ZWwgZGF0YSBhZnRlciB0aGUKPiArICoJY29u dmVyc2lvbiBtYXRyaXgKPiAgICogQGV2ZW50OiBvcHRpb25hbCBwb2ludGVyIHRvIGEgRFJNIGV2 ZW50IHRvIHNpZ25hbCB1cG9uIGNvbXBsZXRpb24gb2YgdGhlCj4gICAqIAlzdGF0ZSB1cGRhdGUK PiAgICogQHN0YXRlOiBiYWNrcG9pbnRlciB0byBnbG9iYWwgZHJtX2F0b21pY19zdGF0ZQo+IEBA IC0zMzIsNiArMzM5LDcgQEAgc3RydWN0IGRybV9jcnRjX3N0YXRlIHsKPiAgCWJvb2wgbW9kZV9j aGFuZ2VkIDogMTsKPiAgCWJvb2wgYWN0aXZlX2NoYW5nZWQgOiAxOwo+ICAJYm9vbCBjb25uZWN0 b3JzX2NoYW5nZWQgOiAxOwo+ICsJYm9vbCBjb2xvcl9tZ210X2NoYW5nZWQgOiAxOwo+ICAKPiAg CS8qIGF0dGFjaGVkIHBsYW5lcyBiaXRtYXNrOgo+ICAJICogV0FSTklORzogdHJhbnNpdGlvbmFs IGhlbHBlcnMgZG8gbm90IG1haW50YWluIHBsYW5lX21hc2sgc28KPiBAQCAtMzUzLDYgKzM2MSwx MSBAQCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgewo+ICAJLyogYmxvYiBwcm9wZXJ0eSB0byBleHBv c2UgY3VycmVudCBtb2RlIHRvIGF0b21pYyB1c2Vyc3BhY2UgKi8KPiAgCXN0cnVjdCBkcm1fcHJv cGVydHlfYmxvYiAqbW9kZV9ibG9iOwo+ICAKPiArCS8qIGJsb2IgcHJvcGVydHkgdG8gZXhwb3Nl IGNvbG9yIG1hbmFnZW1lbnQgdG8gdXNlcnNwYWNlICovCj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5 X2Jsb2IgKmRlZ2FtbWFfbHV0Owo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpjdG1fbWF0 cml4Owo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQ7Cj4gKwo+ICAJc3Ry dWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZXZlbnQ7Cj4gIAo+ICAJc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlOwo+IEBAIC03NTUsNyArNzY4LDcgQEAgc3RydWN0IGRybV9jcnRj IHsKPiAgCWludCB4LCB5Owo+ICAJY29uc3Qgc3RydWN0IGRybV9jcnRjX2Z1bmNzICpmdW5jczsK PiAgCj4gLQkvKiBDUlRDIGdhbW1hIHNpemUgZm9yIHJlcG9ydGluZyB0byB1c2Vyc3BhY2UgKi8K PiArCS8qIExlZ2FjeSBGQiBDUlRDIGdhbW1hIHNpemUgZm9yIHJlcG9ydGluZyB0byB1c2Vyc3Bh Y2UgKi8KPiAgCXVpbnQzMl90IGdhbW1hX3NpemU7Cj4gIAl1aW50MTZfdCAqZ2FtbWFfc3RvcmU7 Cj4gIAo+IEBAIC0yMDIzLDYgKzIwMzYsMTUgQEAgc3RydWN0IGRybV9tb2RlX2NvbmZpZ19mdW5j cyB7Cj4gICAqIEBwcm9wZXJ0eV9ibG9iX2xpc3Q6IGxpc3Qgb2YgYWxsIHRoZSBibG9iIHByb3Bl cnR5IG9iamVjdHMKPiAgICogQGJsb2JfbG9jazogbXV0ZXggZm9yIGJsb2IgcHJvcGVydHkgYWxs b2NhdGlvbiBhbmQgbWFuYWdlbWVudAo+ICAgKiBAKl9wcm9wZXJ0eTogY29yZSBwcm9wZXJ0eSB0 cmFja2luZwo+ICsgKiBAZGVnYW1tYV9sdXRfcHJvcGVydHk6IExVVCB1c2VkIHRvIGNvbnZlcnQg dGhlIGZyYW1lYnVmZmVyJ3MgY29sb3JzIHRvIGxpbmVhcgo+ICsgKglnYW1tYQo+ICsgKiBAZGVn YW1tYV9sdXRfc2l6ZV9wcm9wZXJ0eTogc2l6ZSBvZiB0aGUgZGVnYW1tYSBMVVQgYXMgc3VwcG9y dGVkIGJ5IHRoZQo+ICsgKglkcml2ZXIgKHJlYWQtb25seSkKPiArICogQGN0bV9tYXRyaXhfcHJv cGVydHk6IE1hdHJpeCB1c2VkIHRvIGNvbnZlcnQgY29sb3JzIGFmdGVyIHRoZSBsb29rdXAgaW4g dGhlCj4gKyAqCWRlZ2FtbWEgTFVUCj4gKyAqIEBnYW1tYV9sdXRfcHJvcGVydHk6IExVVCB1c2Vk IHRvIGNvbnZlcnQgdGhlIGNvbG9ycywgYWZ0ZXIgdGhlIENTQyBtYXRyaXgsIHRvCj4gKyAqCXRo ZSBnYW1tYSBzcGFjZSBvZiB0aGUgY29ubmVjdGVkIHNjcmVlbiAocmVhZC1vbmx5KQo+ICsgKiBA Z2FtbWFfbHV0X3NpemVfcHJvcGVydHk6IHNpemUgb2YgdGhlIGdhbW1hIExVVCBhcyBzdXBwb3J0 ZWQgYnkgdGhlIGRyaXZlcgo+ICAgKiBAcHJlZmVycmVkX2RlcHRoOiBwcmVmZXJyZWQgUkJHIHBp eGVsIGRlcHRoLCB1c2VkIGJ5IGZiIGhlbHBlcnMKPiAgICogQHByZWZlcl9zaGFkb3c6IGhpbnQg dG8gdXNlcnNwYWNlIHRvIHByZWZlciBzaGFkb3ctZmIgcmVuZGVyaW5nCj4gICAqIEBhc3luY19w YWdlX2ZsaXA6IGRvZXMgdGhpcyBkZXZpY2Ugc3VwcG9ydCBhc3luYyBmbGlwcyBvbiB0aGUgcHJp bWFyeSBwbGFuZT8KPiBAQCAtMjEyNCw2ICsyMTQ2LDEzIEBAIHN0cnVjdCBkcm1fbW9kZV9jb25m aWcgewo+ICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqYXNwZWN0X3JhdGlvX3Byb3BlcnR5Owo+ICAJ c3RydWN0IGRybV9wcm9wZXJ0eSAqZGlydHlfaW5mb19wcm9wZXJ0eTsKPiAgCj4gKwkvKiBPcHRp b25hbCBjb2xvciBjb3JyZWN0aW9uIHByb3BlcnRpZXMgKi8KPiArCXN0cnVjdCBkcm1fcHJvcGVy dHkgKmRlZ2FtbWFfbHV0X3Byb3BlcnR5Owo+ICsJc3RydWN0IGRybV9wcm9wZXJ0eSAqZGVnYW1t YV9sdXRfc2l6ZV9wcm9wZXJ0eTsKPiArCXN0cnVjdCBkcm1fcHJvcGVydHkgKmN0bV9tYXRyaXhf cHJvcGVydHk7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpnYW1tYV9sdXRfcHJvcGVydHk7Cj4g KwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpnYW1tYV9sdXRfc2l6ZV9wcm9wZXJ0eTsKPiArCj4gIAkv KiBwcm9wZXJ0aWVzIGZvciB2aXJ0dWFsIG1hY2hpbmUgbGF5b3V0ICovCj4gIAlzdHJ1Y3QgZHJt X3Byb3BlcnR5ICpzdWdnZXN0ZWRfeF9wcm9wZXJ0eTsKPiAgCXN0cnVjdCBkcm1fcHJvcGVydHkg KnN1Z2dlc3RlZF95X3Byb3BlcnR5Owo+IEBAIC0yNTMwLDYgKzI1NTksMTggQEAgc3RhdGljIGlu bGluZSBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpkcm1fcHJvcGVydHlfZmluZChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAo+ICAJcmV0dXJuIG1vID8gb2JqX3RvX3Byb3BlcnR5KG1vKSA6IE5VTEw7Cj4g IH0KPiAgCj4gKy8qCj4gKyAqIEV4dHJhY3QgYSBkZWdhbW1hL2dhbW1hIExVVCB2YWx1ZSBwcm92 aWRlZCBieSB1c2VyIGFuZCByb3VuZCBpdCB0byB0aGUKPiArICogcHJlY2lzaW9uIHN1cHBvcnRl ZCBieSB0aGUgaGFyZHdhcmUuCj4gKyAqLwo+ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90IGRybV9j b2xvcl9sdXRfZ2V0X3ZhbHVlKHVpbnQzMl90IHVzZXJfaW5wdXQsCj4gKwkJCQkJICAgICAgIHVp bnQzMl90IGJpdF9wcmVjaXNpb24pCj4gK3sKPiArCXVpbnQzMl90IHZhbCA9ICh1c2VyX2lucHV0 IDw8IDEpICsgKDEgPDwgKDE2IC0gYml0X3ByZWNpc2lvbikpOwo+ICsKPiArCXJldHVybiB2YWwg Pj4gKDE2IC0gYml0X3ByZWNpc2lvbiArIDEpOwo+ICt9Cj4gKwo+ICAvKiBQbGFuZSBsaXN0IGl0 ZXJhdG9yIGZvciBsZWdhY3kgKG92ZXJsYXkgb25seSkgcGxhbmVzLiAqLwo+ICAjZGVmaW5lIGRy bV9mb3JfZWFjaF9sZWdhY3lfcGxhbmUocGxhbmUsIGRldikgXAo+ICAJbGlzdF9mb3JfZWFjaF9l bnRyeShwbGFuZSwgJihkZXYpLT5tb2RlX2NvbmZpZy5wbGFuZV9saXN0LCBoZWFkKSBcCj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jcnRjX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJt X2NydGNfaGVscGVyLmgKPiBpbmRleCA0YjM3YWZhLi45N2ZhODk0IDEwMDY0NAo+IC0tLSBhL2lu Y2x1ZGUvZHJtL2RybV9jcnRjX2hlbHBlci5oCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NydGNf aGVscGVyLmgKPiBAQCAtNDgsNiArNDgsOSBAQCBleHRlcm4gYm9vbCBkcm1fY3J0Y19oZWxwZXJf c2V0X21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJCQkJICAgICBzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqbW9kZSwKPiAgCQkJCSAgICAgaW50IHgsIGludCB5LAo+ICAJCQkJICAgICBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIpOwo+ICtleHRlcm4gdm9pZCBkcm1faGVscGVy X2NydGNfZW5hYmxlX2NvbG9yX21nbXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICsJCQkJCSAg ICAgIGludCBkZWdhbW1hX2x1dF9zaXplLAo+ICsJCQkJCSAgICAgIGludCBnYW1tYV9sdXRfc2l6 ZSk7Cj4gIGV4dGVybiBib29sIGRybV9oZWxwZXJfY3J0Y19pbl91c2Uoc3RydWN0IGRybV9jcnRj ICpjcnRjKTsKPiAgZXh0ZXJuIGJvb2wgZHJtX2hlbHBlcl9lbmNvZGVyX2luX3VzZShzdHJ1Y3Qg ZHJtX2VuY29kZXIgKmVuY29kZXIpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2Ry bS9kcm1fbW9kZS5oIGIvaW5jbHVkZS91YXBpL2RybS9kcm1fbW9kZS5oCj4gaW5kZXggNTBhZGI0 Ni4uYzAyMTc0MyAxMDA2NDQKPiAtLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgKPiAr KysgYi9pbmNsdWRlL3VhcGkvZHJtL2RybV9tb2RlLmgKPiBAQCAtNDg3LDYgKzQ4NywyMSBAQCBz dHJ1Y3QgZHJtX21vZGVfY3J0Y19sdXQgewo+ICAJX191NjQgYmx1ZTsKPiAgfTsKPiAgCj4gK3N0 cnVjdCBkcm1fY29sb3JfY3RtIHsKPiArCS8qIENvbnZlcnNpb24gbWF0cml4IGluIFMzMS4zMiBm b3JtYXQuICovCj4gKwlfX3M2NCBtYXRyaXhbOV07Cj4gK307Cj4gKwo+ICtzdHJ1Y3QgZHJtX2Nv bG9yX2x1dCB7Cj4gKwkvKgo+ICsJICogRGF0YSBpcyBVMC4xNiBmaXhlZCBwb2ludCBmb3JtYXQu Cj4gKwkgKi8KPiArCV9fdTE2IHJlZDsKPiArCV9fdTE2IGdyZWVuOwo+ICsJX191MTYgYmx1ZTsK PiArCV9fdTE2IHJlc2VydmVkOwo+ICt9Owo+ICsKPiAgI2RlZmluZSBEUk1fTU9ERV9QQUdFX0ZM SVBfRVZFTlQgMHgwMQo+ICAjZGVmaW5lIERSTV9NT0RFX1BBR0VfRkxJUF9BU1lOQyAweDAyCj4g ICNkZWZpbmUgRFJNX01PREVfUEFHRV9GTElQX0ZMQUdTIChEUk1fTU9ERV9QQUdFX0ZMSVBfRVZF TlR8RFJNX01PREVfUEFHRV9GTElQX0FTWU5DKQo+IC0tIAo+IDIuNi40Cj4gCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApNYXR0IFJvcGVy CkdyYXBoaWNzIFNvZnR3YXJlIEVuZ2luZWVyCklvVEcgUGxhdGZvcm0gRW5hYmxpbmcgJiBEZXZl bG9wbWVudApJbnRlbCBDb3Jwb3JhdGlvbgooOTE2KSAzNTYtMjc5NQpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=