From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/2] drm/rect: Add midpoint to scale calculation functions Date: Tue, 24 Apr 2018 18:51:48 +0300 Message-ID: <20180424155148.GS13908@intel.com> References: <20180424113633.16140-1-maarten.lankhorst@linux.intel.com> <20180424152116.GQ13908@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBBcHIgMjQsIDIwMTggYXQgMDU6MTE6MzdQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMjQtMDQtMTggb20gMTc6MjEgc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBUdWUsIEFwciAyNCwgMjAxOCBhdCAwMTozNjozMlBNICswMjAwLCBNYWFydGVuIExh bmtob3JzdCB3cm90ZToKPiA+PiBXaGVuIGNhbGN1bGF0aW5nIGxpbWl0cyB3ZSB3YW50IHRvIGJl IGFzIHBlc3NpbWlzdGljIGFzIHBvc3NpYmxlLAo+ID4+IHNvIHdlIGhhdmUgdG8gZXhwbGljaXRs eSBzYXkgd2hldGhlciB3ZSB3YW50IHRvIHJvdW5kIHVwIG9yIGRvd24KPiA+PiB0byBhY2N1cmF0 ZWx5IGNhbGN1bGF0ZSB3aGV0aGVyIHdlIGFyZSBiZWxvdyBtaW5fc2NhbGUgb3IgYWJvdmUKPiA+ PiBtYXhfc2NhbGUuCj4gPj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8 bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4+IC0tLQo+ID4+ICBkcml2ZXJz L2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8ICA0ICstLQo+ID4+ICBkcml2ZXJzL2dwdS9k cm0vZHJtX3JlY3QuYyAgICAgICAgICB8IDM5ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t Cj4gPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIHwgIDggKysrLS0tCj4g Pj4gIGluY2x1ZGUvZHJtL2RybV9yZWN0LmggICAgICAgICAgICAgIHwgIDggKysrLS0tCj4gPj4g IDQgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCj4gPj4K PiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4+IGluZGV4IDljYjIyMDlmNmZj OC4uNzY0MzIwMmJmY2Y3IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVy LmMKPiA+PiBAQCAtNzU0LDggKzc1NCw4IEBAIGludCBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19w bGFuZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiA+PiAgCWRy bV9yZWN0X3JvdGF0ZShzcmMsIGZiLT53aWR0aCA8PCAxNiwgZmItPmhlaWdodCA8PCAxNiwgcm90 YXRpb24pOwo+ID4+ICAKPiA+PiAgCS8qIENoZWNrIHNjYWxpbmcgKi8KPiA+PiAtCWhzY2FsZSA9 IGRybV9yZWN0X2NhbGNfaHNjYWxlKHNyYywgZHN0LCBtaW5fc2NhbGUsIG1heF9zY2FsZSk7Cj4g Pj4gLQl2c2NhbGUgPSBkcm1fcmVjdF9jYWxjX3ZzY2FsZShzcmMsIGRzdCwgbWluX3NjYWxlLCBt YXhfc2NhbGUpOwo+ID4+ICsJaHNjYWxlID0gZHJtX3JlY3RfY2FsY19oc2NhbGUoc3JjLCBkc3Qs IG1pbl9zY2FsZSwgMTw8MTYsIG1heF9zY2FsZSk7Cj4gPj4gKwl2c2NhbGUgPSBkcm1fcmVjdF9j YWxjX3ZzY2FsZShzcmMsIGRzdCwgbWluX3NjYWxlLCAxPDwxNiwgbWF4X3NjYWxlKTsKPiA+PiAg CWlmIChoc2NhbGUgPCAwIHx8IHZzY2FsZSA8IDApIHsKPiA+PiAgCQlEUk1fREVCVUdfS01TKCJJ bnZhbGlkIHNjYWxpbmcgb2YgcGxhbmVcbiIpOwo+ID4+ICAJCWRybV9yZWN0X2RlYnVnX3ByaW50 KCJzcmM6ICIsICZwbGFuZV9zdGF0ZS0+c3JjLCB0cnVlKTsKPiA+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9yZWN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3JlY3QuYwo+ID4+ IGluZGV4IDk4MTdjMTQ0NWJhOS4uMjA5MzQ3NGMyNjhjIDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fcmVjdC5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9yZWN0 LmMKPiA+PiBAQCAtOTYsNyArOTYsNyBAQCBib29sIGRybV9yZWN0X2NsaXBfc2NhbGVkKHN0cnVj dCBkcm1fcmVjdCAqc3JjLCBzdHJ1Y3QgZHJtX3JlY3QgKmRzdCwKPiA+PiAgfQo+ID4+ICBFWFBP UlRfU1lNQk9MKGRybV9yZWN0X2NsaXBfc2NhbGVkKTsKPiA+PiAgCj4gPj4gLXN0YXRpYyBpbnQg ZHJtX2NhbGNfc2NhbGUoaW50IHNyYywgaW50IGRzdCkKPiA+PiArc3RhdGljIGludCBkcm1fY2Fs Y19zY2FsZShpbnQgc3JjLCBpbnQgZHN0LCBpbnQgc2NhbGVfY2VudGVyKQo+ID4+ICB7Cj4gPj4g IAlpbnQgc2NhbGUgPSAwOwo+ID4+ICAKPiA+PiBAQCAtMTA2LDcgKzEwNiwxMCBAQCBzdGF0aWMg aW50IGRybV9jYWxjX3NjYWxlKGludCBzcmMsIGludCBkc3QpCj4gPj4gIAlpZiAoZHN0ID09IDAp Cj4gPj4gIAkJcmV0dXJuIDA7Cj4gPj4gIAo+ID4+IC0Jc2NhbGUgPSBzcmMgLyBkc3Q7Cj4gPj4g KwlpZiAoRElWX1JPVU5EX1VQKGRzdCwgc2NhbGVfY2VudGVyKSA+IHNyYykKPiA+IFRoYXQgZG9l c24ndCBsb29rIHJpZ2h0IHRvIG1lLgo+ID4KPiA+IEhvdyBhYm91dCBqdXN0ICdpZiAoc3JjID4g ZHN0IDw8IDE2KScgPwo+ID4KPiA+IEkgZ3Vlc3MgaWYgd2Ugd2FudCB0byBrZWVwIHRoaXMgY29k ZSBpbmRlcGVuZGVudCBvZiB0aGUgbnVtYmVyIG9mCj4gPiBmcmFjdGlvbmFsIGJpdHMgd2UgY291 bGQgcGFzcyB0aGUgMTYgaW4gZnJvbSB0aGUgY2FsbGVyKHMpLiBOb3Qgc3VyZQo+ID4gdGhlcmUn cyBtdWNoIHBvaW50IGluIHRoYXQgdGhvdWdoLgo+IHBhc3MgYSBib29sIHJvdW5kX3VwIHRvIHRo ZSBjYWxjX3NjYWxlIGZ1bmN0aW9ucz8KClRoYXQgd291bGQgbWVhbiBkdXBsaWNhdGluZyB0aGUg IndoaWNoIHdheSB3ZSByb3VuZD8iIGxvZ2ljIGluIGFsbAp0aGUgY2FsbGVycywgd2hpY2ggZG9l c24ndCBzZWVtIGlkZWFsLiBJJ2QgcHJvYmFibHkganVzdCBnbyB3aXRoIHRoZQpoYXJkY29kZWQg MTYgZnJhY3Rpb25hbCBiaXRzIGFzc3VtcHRpb24uIFdlIGNhbiBhbHdheXMgY29tZSB1cAp3aXRo IHNvbWV0aGluZyBlbHNlIGxhdGVyIGlmIHRoZSBuZWVkIGFyaXNlcy4KCj4gPj4gKwkJcmV0dXJu IERJVl9ST1VORF9VUChzcmMsIGRzdCk7Cj4gPj4gKwllbHNlCj4gPj4gKwkJc2NhbGUgPSBzcmMg LyBkc3Q7Cj4gPj4gIAo+ID4+ICAJcmV0dXJuIHNjYWxlOwo+ID4+ICB9Cj4gPj4gQEAgLTExNiwy MSArMTE5LDI1IEBAIHN0YXRpYyBpbnQgZHJtX2NhbGNfc2NhbGUoaW50IHNyYywgaW50IGRzdCkK PiA+PiAgICogQHNyYzogc291cmNlIHdpbmRvdyByZWN0YW5nbGUKPiA+PiAgICogQGRzdDogZGVz dGluYXRpb24gd2luZG93IHJlY3RhbmdsZQo+ID4+ICAgKiBAbWluX2hzY2FsZTogbWluaW11bSBh bGxvd2VkIGhvcml6b250YWwgc2NhbGluZyBmYWN0b3IKPiA+PiArICogQG1pZF9oc2NhbGU6IG1p ZCBwb2ludCwgYmVsb3cgdGhpcyBwb2ludCByb3VuZCBkb3duIHNjYWxpbmcsIGFib3ZlIHJvdW5k IHVwLgo+ID4+ICAgKiBAbWF4X2hzY2FsZTogbWF4aW11bSBhbGxvd2VkIGhvcml6b250YWwgc2Nh bGluZyBmYWN0b3IKPiA+PiAgICoKPiA+PiAgICogQ2FsY3VsYXRlIHRoZSBob3Jpem9udGFsIHNj YWxpbmcgZmFjdG9yIGFzCj4gPj4gICAqIChAc3JjIHdpZHRoKSAvIChAZHN0IHdpZHRoKS4KPiA+ PiAgICoKPiA+PiArICogSWYgdGhlIHNjYWxlIGlzIGJlbG93IEBtaWRfaHNjYWxlIHdlIHJvdW5k IGRvd24sIGlmIGFib3ZlIHVwLiBUaGlzIHdpbGwKPiA+PiArICogY2FsY3VsYXRlIHRoZSBoc2Nh bGUgd2l0aCB0aGUgbW9zdCBwZXNzaW1pc3RpYyBsaW1pdCBjYWxjdWxhdGlvbi4KPiA+PiArICoK PiA+PiAgICogUkVUVVJOUzoKPiA+PiAgICogVGhlIGhvcml6b250YWwgc2NhbGluZyBmYWN0b3Is IG9yIGVycm5vIG9mIG91dCBvZiBsaW1pdHMuCj4gPj4gICAqLwo+ID4+ICBpbnQgZHJtX3JlY3Rf Y2FsY19oc2NhbGUoY29uc3Qgc3RydWN0IGRybV9yZWN0ICpzcmMsCj4gPj4gIAkJCSBjb25zdCBz dHJ1Y3QgZHJtX3JlY3QgKmRzdCwKPiA+PiAtCQkJIGludCBtaW5faHNjYWxlLCBpbnQgbWF4X2hz Y2FsZSkKPiA+PiArCQkJIGludCBtaW5faHNjYWxlLCBpbnQgbWlkX2hzY2FsZSwgaW50IG1heF9o c2NhbGUpCj4gPj4gIHsKPiA+PiAgCWludCBzcmNfdyA9IGRybV9yZWN0X3dpZHRoKHNyYyk7Cj4g Pj4gIAlpbnQgZHN0X3cgPSBkcm1fcmVjdF93aWR0aChkc3QpOwo+ID4+IC0JaW50IGhzY2FsZSA9 IGRybV9jYWxjX3NjYWxlKHNyY193LCBkc3Rfdyk7Cj4gPj4gKwlpbnQgaHNjYWxlID0gZHJtX2Nh bGNfc2NhbGUoc3JjX3csIGRzdF93LCBtaWRfaHNjYWxlKTsKPiA+PiAgCj4gPj4gIAlpZiAoaHNj YWxlIDwgMCB8fCBkc3RfdyA9PSAwKQo+ID4+ICAJCXJldHVybiBoc2NhbGU7Cj4gPj4gQEAgLTE0 NywyMSArMTU0LDI1IEBAIEVYUE9SVF9TWU1CT0woZHJtX3JlY3RfY2FsY19oc2NhbGUpOwo+ID4+ ICAgKiBAc3JjOiBzb3VyY2Ugd2luZG93IHJlY3RhbmdsZQo+ID4+ICAgKiBAZHN0OiBkZXN0aW5h dGlvbiB3aW5kb3cgcmVjdGFuZ2xlCj4gPj4gICAqIEBtaW5fdnNjYWxlOiBtaW5pbXVtIGFsbG93 ZWQgdmVydGljYWwgc2NhbGluZyBmYWN0b3IKPiA+PiArICogQG1pZF92c2NhbGU6IG1pZCBwb2lu dCwgYmVsb3cgdGhpcyBwb2ludCByb3VuZCBkb3duIHNjYWxpbmcsIGFib3ZlIHJvdW5kIHVwLgo+ ID4+ICAgKiBAbWF4X3ZzY2FsZTogbWF4aW11bSBhbGxvd2VkIHZlcnRpY2FsIHNjYWxpbmcgZmFj dG9yCj4gPj4gICAqCj4gPj4gICAqIENhbGN1bGF0ZSB0aGUgdmVydGljYWwgc2NhbGluZyBmYWN0 b3IgYXMKPiA+PiAgICogKEBzcmMgaGVpZ2h0KSAvIChAZHN0IGhlaWdodCkuCj4gPj4gICAqCj4g Pj4gKyAqIElmIHRoZSBzY2FsZSBpcyBiZWxvdyBAbWlkX3ZzY2FsZSB3ZSByb3VuZCBkb3duLCBp ZiBhYm92ZSB1cC4gVGhpcyB3aWxsCj4gPj4gKyAqIGNhbGN1bGF0ZSB0aGUgdnNjYWxlIHdpdGgg dGhlIG1vc3QgcGVzc2ltaXN0aWMgbGltaXQgY2FsY3VsYXRpb24uCj4gPj4gKyAqCj4gPj4gICAq IFJFVFVSTlM6Cj4gPj4gICAqIFRoZSB2ZXJ0aWNhbCBzY2FsaW5nIGZhY3Rvciwgb3IgZXJybm8g b2Ygb3V0IG9mIGxpbWl0cy4KPiA+PiAgICovCj4gPj4gIGludCBkcm1fcmVjdF9jYWxjX3ZzY2Fs ZShjb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKnNyYywKPiA+PiAgCQkJIGNvbnN0IHN0cnVjdCBkcm1f cmVjdCAqZHN0LAo+ID4+IC0JCQkgaW50IG1pbl92c2NhbGUsIGludCBtYXhfdnNjYWxlKQo+ID4+ ICsJCQkgaW50IG1pbl92c2NhbGUsIGludCBtaWRfdnNjYWxlLCBpbnQgbWF4X3ZzY2FsZSkKPiA+ PiAgewo+ID4+ICAJaW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0KHNyYyk7Cj4gPj4gIAlpbnQg ZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoZHN0KTsKPiA+PiAtCWludCB2c2NhbGUgPSBkcm1fY2Fs Y19zY2FsZShzcmNfaCwgZHN0X2gpOwo+ID4+ICsJaW50IHZzY2FsZSA9IGRybV9jYWxjX3NjYWxl KHNyY19oLCBkc3RfaCwgbWlkX3ZzY2FsZSk7Cj4gPj4gIAo+ID4+ICAJaWYgKHZzY2FsZSA8IDAg fHwgZHN0X2ggPT0gMCkKPiA+PiAgCQlyZXR1cm4gdnNjYWxlOwo+ID4+IEBAIC0xNzgsNiArMTg5 LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fcmVjdF9jYWxjX3ZzY2FsZSk7Cj4gPj4gICAqIEBzcmM6 IHNvdXJjZSB3aW5kb3cgcmVjdGFuZ2xlCj4gPj4gICAqIEBkc3Q6IGRlc3RpbmF0aW9uIHdpbmRv dyByZWN0YW5nbGUKPiA+PiAgICogQG1pbl9oc2NhbGU6IG1pbmltdW0gYWxsb3dlZCBob3Jpem9u dGFsIHNjYWxpbmcgZmFjdG9yCj4gPj4gKyAqIEBtaWRfaHNjYWxlOiBtaWQgcG9pbnQsIGJlbG93 IHRoaXMgcG9pbnQgcm91bmQgZG93biBzY2FsaW5nLCBhYm92ZSByb3VuZCB1cC4KPiA+PiAgICog QG1heF9oc2NhbGU6IG1heGltdW0gYWxsb3dlZCBob3Jpem9udGFsIHNjYWxpbmcgZmFjdG9yCj4g Pj4gICAqCj4gPj4gICAqIENhbGN1bGF0ZSB0aGUgaG9yaXpvbnRhbCBzY2FsaW5nIGZhY3RvciBh cwo+ID4+IEBAIC0xODksMTYgKzIwMSwxOSBAQCBFWFBPUlRfU1lNQk9MKGRybV9yZWN0X2NhbGNf dnNjYWxlKTsKPiA+PiAgICogSWYgdGhlIGNhbGN1bGF0ZWQgc2NhbGluZyBmYWN0b3IgaXMgYWJv dmUgQG1heF92c2NhbGUsCj4gPj4gICAqIGRlY3JlYXNlIHRoZSBoZWlnaHQgb2YgcmVjdGFuZ2xl IEBzcmMgdG8gY29tcGVuc2F0ZS4KPiA+PiAgICoKPiA+PiArICogSWYgdGhlIHNjYWxlIGlzIGJl bG93IEBtaWRfaHNjYWxlIHdlIHJvdW5kIGRvd24sIGlmIGFib3ZlIHVwLiBUaGlzIHdpbGwKPiA+ PiArICogY2FsY3VsYXRlIHRoZSBoc2NhbGUgd2l0aCB0aGUgbW9zdCBwZXNzaW1pc3RpYyBsaW1p dCBjYWxjdWxhdGlvbi4KPiA+PiArICoKPiA+PiAgICogUkVUVVJOUzoKPiA+PiAgICogVGhlIGhv cml6b250YWwgc2NhbGluZyBmYWN0b3IuCj4gPj4gICAqLwo+ID4+ICBpbnQgZHJtX3JlY3RfY2Fs Y19oc2NhbGVfcmVsYXhlZChzdHJ1Y3QgZHJtX3JlY3QgKnNyYywKPiA+PiAgCQkJCSBzdHJ1Y3Qg ZHJtX3JlY3QgKmRzdCwKPiA+PiAtCQkJCSBpbnQgbWluX2hzY2FsZSwgaW50IG1heF9oc2NhbGUp Cj4gPj4gKwkJCQkgaW50IG1pbl9oc2NhbGUsIGludCBtaWRfaHNjYWxlLCBpbnQgbWF4X2hzY2Fs ZSkKPiA+PiAgewo+ID4+ICAJaW50IHNyY193ID0gZHJtX3JlY3Rfd2lkdGgoc3JjKTsKPiA+PiAg CWludCBkc3RfdyA9IGRybV9yZWN0X3dpZHRoKGRzdCk7Cj4gPj4gLQlpbnQgaHNjYWxlID0gZHJt X2NhbGNfc2NhbGUoc3JjX3csIGRzdF93KTsKPiA+PiArCWludCBoc2NhbGUgPSBkcm1fY2FsY19z Y2FsZShzcmNfdywgZHN0X3csIG1pZF9oc2NhbGUpOwo+ID4+ICAKPiA+PiAgCWlmIChoc2NhbGUg PCAwIHx8IGRzdF93ID09IDApCj4gPj4gIAkJcmV0dXJuIGhzY2FsZTsKPiA+PiBAQCAtMjI4LDYg KzI0Myw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX3JlY3RfY2FsY19oc2NhbGVfcmVsYXhlZCk7Cj4g Pj4gICAqIEBzcmM6IHNvdXJjZSB3aW5kb3cgcmVjdGFuZ2xlCj4gPj4gICAqIEBkc3Q6IGRlc3Rp bmF0aW9uIHdpbmRvdyByZWN0YW5nbGUKPiA+PiAgICogQG1pbl92c2NhbGU6IG1pbmltdW0gYWxs b3dlZCB2ZXJ0aWNhbCBzY2FsaW5nIGZhY3Rvcgo+ID4+ICsgKiBAbWlkX3ZzY2FsZTogbWlkIHBv aW50LCBiZWxvdyB0aGlzIHBvaW50IHJvdW5kIGRvd24gc2NhbGluZywgYWJvdmUgcm91bmQgdXAu Cj4gPj4gICAqIEBtYXhfdnNjYWxlOiBtYXhpbXVtIGFsbG93ZWQgdmVydGljYWwgc2NhbGluZyBm YWN0b3IKPiA+PiAgICoKPiA+PiAgICogQ2FsY3VsYXRlIHRoZSB2ZXJ0aWNhbCBzY2FsaW5nIGZh Y3RvciBhcwo+ID4+IEBAIC0yMzksMTYgKzI1NSwxOSBAQCBFWFBPUlRfU1lNQk9MKGRybV9yZWN0 X2NhbGNfaHNjYWxlX3JlbGF4ZWQpOwo+ID4+ICAgKiBJZiB0aGUgY2FsY3VsYXRlZCBzY2FsaW5n IGZhY3RvciBpcyBhYm92ZSBAbWF4X3ZzY2FsZSwKPiA+PiAgICogZGVjcmVhc2UgdGhlIGhlaWdo dCBvZiByZWN0YW5nbGUgQHNyYyB0byBjb21wZW5zYXRlLgo+ID4+ICAgKgo+ID4+ICsgKiBJZiB0 aGUgc2NhbGUgaXMgYmVsb3cgQG1pZF92c2NhbGUgd2Ugcm91bmQgZG93biwgaWYgYWJvdmUgdXAu IFRoaXMgd2lsbAo+ID4+ICsgKiBjYWxjdWxhdGUgdGhlIHZzY2FsZSB3aXRoIHRoZSBtb3N0IHBl c3NpbWlzdGljIGxpbWl0IGNhbGN1bGF0aW9uLgo+ID4+ICsgKgo+ID4+ICAgKiBSRVRVUk5TOgo+ ID4+ICAgKiBUaGUgdmVydGljYWwgc2NhbGluZyBmYWN0b3IuCj4gPj4gICAqLwo+ID4+ICBpbnQg ZHJtX3JlY3RfY2FsY192c2NhbGVfcmVsYXhlZChzdHJ1Y3QgZHJtX3JlY3QgKnNyYywKPiA+PiAg CQkJCSBzdHJ1Y3QgZHJtX3JlY3QgKmRzdCwKPiA+PiAtCQkJCSBpbnQgbWluX3ZzY2FsZSwgaW50 IG1heF92c2NhbGUpCj4gPj4gKwkJCQkgaW50IG1pbl92c2NhbGUsIGludCBtaWRfdnNjYWxlLCBp bnQgbWF4X3ZzY2FsZSkKPiA+PiAgewo+ID4+ICAJaW50IHNyY19oID0gZHJtX3JlY3RfaGVpZ2h0 KHNyYyk7Cj4gPj4gIAlpbnQgZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoZHN0KTsKPiA+PiAtCWlu dCB2c2NhbGUgPSBkcm1fY2FsY19zY2FsZShzcmNfaCwgZHN0X2gpOwo+ID4+ICsJaW50IHZzY2Fs ZSA9IGRybV9jYWxjX3NjYWxlKHNyY19oLCBtaWRfdnNjYWxlLCBkc3RfaCk7Cj4gPj4gIAo+ID4+ ICAJaWYgKHZzY2FsZSA8IDAgfHwgZHN0X2ggPT0gMCkKPiA+PiAgCQlyZXR1cm4gdnNjYWxlOwo+ ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gPj4gaW5kZXggYWExZGZhYTY5MmI5 Li5mOGY3YzY2ZmMzYWMgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMKPiA+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUu Ywo+ID4+IEBAIC05OTgsMTAgKzk5OCwxMCBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3Ry dWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiA+PiAgCWRybV9yZWN0X3JvdGF0ZShzcmMsIGZiLT53 aWR0aCA8PCAxNiwgZmItPmhlaWdodCA8PCAxNiwKPiA+PiAgCQkJc3RhdGUtPmJhc2Uucm90YXRp b24pOwo+ID4+ICAKPiA+PiAtCWhzY2FsZSA9IGRybV9yZWN0X2NhbGNfaHNjYWxlX3JlbGF4ZWQo c3JjLCBkc3QsIG1pbl9zY2FsZSwgbWF4X3NjYWxlKTsKPiA+PiArCWhzY2FsZSA9IGRybV9yZWN0 X2NhbGNfaHNjYWxlX3JlbGF4ZWQoc3JjLCBkc3QsIG1pbl9zY2FsZSwgMSA8PCAxNiwgbWF4X3Nj YWxlKTsKPiA+PiAgCUJVR19PTihoc2NhbGUgPCAwKTsKPiA+PiAgCj4gPj4gLQl2c2NhbGUgPSBk cm1fcmVjdF9jYWxjX3ZzY2FsZV9yZWxheGVkKHNyYywgZHN0LCBtaW5fc2NhbGUsIG1heF9zY2Fs ZSk7Cj4gPj4gKwl2c2NhbGUgPSBkcm1fcmVjdF9jYWxjX3ZzY2FsZV9yZWxheGVkKHNyYywgZHN0 LCBtaW5fc2NhbGUsIDEgPDwgMTYsIG1heF9zY2FsZSk7Cj4gPj4gIAlCVUdfT04odnNjYWxlIDwg MCk7Cj4gPj4gIAo+ID4+ICAJaWYgKGNydGNfc3RhdGUtPmJhc2UuZW5hYmxlKQo+ID4+IEBAIC0x MDE3LDcgKzEwMTcsNyBAQCBpbnRlbF9jaGVja19zcHJpdGVfcGxhbmUoc3RydWN0IGludGVsX3Bs YW5lICpwbGFuZSwKPiA+PiAgCj4gPj4gIAlpZiAoc3RhdGUtPmJhc2UudmlzaWJsZSkgewo+ID4+ ICAJCS8qIGNoZWNrIGFnYWluIGluIGNhc2UgY2xpcHBpbmcgY2xhbXBlZCB0aGUgcmVzdWx0cyAq Lwo+ID4+IC0JCWhzY2FsZSA9IGRybV9yZWN0X2NhbGNfaHNjYWxlKHNyYywgZHN0LCBtaW5fc2Nh bGUsIG1heF9zY2FsZSk7Cj4gPj4gKwkJaHNjYWxlID0gZHJtX3JlY3RfY2FsY19oc2NhbGUoc3Jj LCBkc3QsIG1pbl9zY2FsZSwgMSA8PCAxNiwgbWF4X3NjYWxlKTsKPiA+PiAgCQlpZiAoaHNjYWxl IDwgMCkgewo+ID4+ICAJCQlEUk1fREVCVUdfS01TKCJIb3Jpem9udGFsIHNjYWxpbmcgZmFjdG9y IG91dCBvZiBsaW1pdHNcbiIpOwo+ID4+ICAJCQlkcm1fcmVjdF9kZWJ1Z19wcmludCgic3JjOiAi LCBzcmMsIHRydWUpOwo+ID4+IEBAIC0xMDI2LDcgKzEwMjYsNyBAQCBpbnRlbF9jaGVja19zcHJp dGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiA+PiAgCQkJcmV0dXJuIGhzY2Fs ZTsKPiA+PiAgCQl9Cj4gPj4gIAo+ID4+IC0JCXZzY2FsZSA9IGRybV9yZWN0X2NhbGNfdnNjYWxl KHNyYywgZHN0LCBtaW5fc2NhbGUsIG1heF9zY2FsZSk7Cj4gPj4gKwkJdnNjYWxlID0gZHJtX3Jl Y3RfY2FsY192c2NhbGUoc3JjLCBkc3QsIG1pbl9zY2FsZSwgMSA8PCAxNiwgbWF4X3NjYWxlKTsK PiA+PiAgCQlpZiAodnNjYWxlIDwgMCkgewo+ID4+ICAJCQlEUk1fREVCVUdfS01TKCJWZXJ0aWNh bCBzY2FsaW5nIGZhY3RvciBvdXQgb2YgbGltaXRzXG4iKTsKPiA+PiAgCQkJZHJtX3JlY3RfZGVi dWdfcHJpbnQoInNyYzogIiwgc3JjLCB0cnVlKTsKPiA+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9k cm0vZHJtX3JlY3QuaCBiL2luY2x1ZGUvZHJtL2RybV9yZWN0LmgKPiA+PiBpbmRleCA0NGJjMTIy YjllZTAuLmRiYjg2MzFhOTI4OCAxMDA2NDQKPiA+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fcmVj dC5oCj4gPj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX3JlY3QuaAo+ID4+IEBAIC0xNzksMTYgKzE3 OSwxNiBAQCBib29sIGRybV9yZWN0X2NsaXBfc2NhbGVkKHN0cnVjdCBkcm1fcmVjdCAqc3JjLCBz dHJ1Y3QgZHJtX3JlY3QgKmRzdCwKPiA+PiAgCQkJICBpbnQgaHNjYWxlLCBpbnQgdnNjYWxlKTsK PiA+PiAgaW50IGRybV9yZWN0X2NhbGNfaHNjYWxlKGNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqc3Jj LAo+ID4+ICAJCQkgY29uc3Qgc3RydWN0IGRybV9yZWN0ICpkc3QsCj4gPj4gLQkJCSBpbnQgbWlu X2hzY2FsZSwgaW50IG1heF9oc2NhbGUpOwo+ID4+ICsJCQkgaW50IG1pbl9oc2NhbGUsIGludCBt aWRfaHNjYWxlLCBpbnQgbWF4X2hzY2FsZSk7Cj4gPj4gIGludCBkcm1fcmVjdF9jYWxjX3ZzY2Fs ZShjb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKnNyYywKPiA+PiAgCQkJIGNvbnN0IHN0cnVjdCBkcm1f cmVjdCAqZHN0LAo+ID4+IC0JCQkgaW50IG1pbl92c2NhbGUsIGludCBtYXhfdnNjYWxlKTsKPiA+ PiArCQkJIGludCBtaW5fdnNjYWxlLCBpbnQgbWlkX3ZzY2FsZSwgaW50IG1heF92c2NhbGUpOwo+ ID4+ICBpbnQgZHJtX3JlY3RfY2FsY19oc2NhbGVfcmVsYXhlZChzdHJ1Y3QgZHJtX3JlY3QgKnNy YywKPiA+PiAgCQkJCSBzdHJ1Y3QgZHJtX3JlY3QgKmRzdCwKPiA+PiAtCQkJCSBpbnQgbWluX2hz Y2FsZSwgaW50IG1heF9oc2NhbGUpOwo+ID4+ICsJCQkJIGludCBtaW5faHNjYWxlLCBpbnQgbWlk X2hzY2FsZSwgaW50IG1heF9oc2NhbGUpOwo+ID4+ICBpbnQgZHJtX3JlY3RfY2FsY192c2NhbGVf cmVsYXhlZChzdHJ1Y3QgZHJtX3JlY3QgKnNyYywKPiA+PiAgCQkJCSBzdHJ1Y3QgZHJtX3JlY3Qg KmRzdCwKPiA+PiAtCQkJCSBpbnQgbWluX3ZzY2FsZSwgaW50IG1heF92c2NhbGUpOwo+ID4+ICsJ CQkJIGludCBtaW5fdnNjYWxlLCBpbnQgbWlkX3ZzY2FsZSwgaW50IG1heF92c2NhbGUpOwo+ID4+ ICB2b2lkIGRybV9yZWN0X2RlYnVnX3ByaW50KGNvbnN0IGNoYXIgKnByZWZpeCwKPiA+PiAgCQkJ ICBjb25zdCBzdHJ1Y3QgZHJtX3JlY3QgKnIsIGJvb2wgZml4ZWRfcG9pbnQpOwo+ID4+ICB2b2lk IGRybV9yZWN0X3JvdGF0ZShzdHJ1Y3QgZHJtX3JlY3QgKnIsCj4gPj4gLS0gCj4gPj4gMi4xNy4w Cj4gCgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=