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:21:16 +0300 Message-ID: <20180424152116.GQ13908@intel.com> References: <20180424113633.16140-1-maarten.lankhorst@linux.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: <20180424113633.16140-1-maarten.lankhorst@linux.intel.com> 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 T24gVHVlLCBBcHIgMjQsIDIwMTggYXQgMDE6MzY6MzJQTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gV2hlbiBjYWxjdWxhdGluZyBsaW1pdHMgd2Ugd2FudCB0byBiZSBhcyBwZXNz aW1pc3RpYyBhcyBwb3NzaWJsZSwKPiBzbyB3ZSBoYXZlIHRvIGV4cGxpY2l0bHkgc2F5IHdoZXRo ZXIgd2Ugd2FudCB0byByb3VuZCB1cCBvciBkb3duCj4gdG8gYWNjdXJhdGVseSBjYWxjdWxhdGUg d2hldGhlciB3ZSBhcmUgYmVsb3cgbWluX3NjYWxlIG9yIGFib3ZlCj4gbWF4X3NjYWxlLgo+IAo+ IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51 eC5pbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5j IHwgIDQgKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fcmVjdC5jICAgICAgICAgIHwgMzkgKysr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf c3ByaXRlLmMgfCAgOCArKystLS0KPiAgaW5jbHVkZS9kcm0vZHJtX3JlY3QuaCAgICAgICAgICAg ICAgfCAgOCArKystLS0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAyMCBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNf aGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+IGluZGV4IDlj YjIyMDlmNmZjOC4uNzY0MzIwMmJmY2Y3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9k cm1fYXRvbWljX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVs cGVyLmMKPiBAQCAtNzU0LDggKzc1NCw4IEBAIGludCBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19w bGFuZV9zdGF0ZShzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSwKPiAgCWRybV9y ZWN0X3JvdGF0ZShzcmMsIGZiLT53aWR0aCA8PCAxNiwgZmItPmhlaWdodCA8PCAxNiwgcm90YXRp b24pOwo+ICAKPiAgCS8qIENoZWNrIHNjYWxpbmcgKi8KPiAtCWhzY2FsZSA9IGRybV9yZWN0X2Nh bGNfaHNjYWxlKHNyYywgZHN0LCBtaW5fc2NhbGUsIG1heF9zY2FsZSk7Cj4gLQl2c2NhbGUgPSBk cm1fcmVjdF9jYWxjX3ZzY2FsZShzcmMsIGRzdCwgbWluX3NjYWxlLCBtYXhfc2NhbGUpOwo+ICsJ aHNjYWxlID0gZHJtX3JlY3RfY2FsY19oc2NhbGUoc3JjLCBkc3QsIG1pbl9zY2FsZSwgMTw8MTYs IG1heF9zY2FsZSk7Cj4gKwl2c2NhbGUgPSBkcm1fcmVjdF9jYWxjX3ZzY2FsZShzcmMsIGRzdCwg bWluX3NjYWxlLCAxPDwxNiwgbWF4X3NjYWxlKTsKPiAgCWlmIChoc2NhbGUgPCAwIHx8IHZzY2Fs ZSA8IDApIHsKPiAgCQlEUk1fREVCVUdfS01TKCJJbnZhbGlkIHNjYWxpbmcgb2YgcGxhbmVcbiIp Owo+ICAJCWRybV9yZWN0X2RlYnVnX3ByaW50KCJzcmM6ICIsICZwbGFuZV9zdGF0ZS0+c3JjLCB0 cnVlKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9yZWN0LmMgYi9kcml2ZXJz L2dwdS9kcm0vZHJtX3JlY3QuYwo+IGluZGV4IDk4MTdjMTQ0NWJhOS4uMjA5MzQ3NGMyNjhjIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fcmVjdC5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9yZWN0LmMKPiBAQCAtOTYsNyArOTYsNyBAQCBib29sIGRybV9yZWN0X2NsaXBf c2NhbGVkKHN0cnVjdCBkcm1fcmVjdCAqc3JjLCBzdHJ1Y3QgZHJtX3JlY3QgKmRzdCwKPiAgfQo+ ICBFWFBPUlRfU1lNQk9MKGRybV9yZWN0X2NsaXBfc2NhbGVkKTsKPiAgCj4gLXN0YXRpYyBpbnQg ZHJtX2NhbGNfc2NhbGUoaW50IHNyYywgaW50IGRzdCkKPiArc3RhdGljIGludCBkcm1fY2FsY19z Y2FsZShpbnQgc3JjLCBpbnQgZHN0LCBpbnQgc2NhbGVfY2VudGVyKQo+ICB7Cj4gIAlpbnQgc2Nh bGUgPSAwOwo+ICAKPiBAQCAtMTA2LDcgKzEwNiwxMCBAQCBzdGF0aWMgaW50IGRybV9jYWxjX3Nj YWxlKGludCBzcmMsIGludCBkc3QpCj4gIAlpZiAoZHN0ID09IDApCj4gIAkJcmV0dXJuIDA7Cj4g IAo+IC0Jc2NhbGUgPSBzcmMgLyBkc3Q7Cj4gKwlpZiAoRElWX1JPVU5EX1VQKGRzdCwgc2NhbGVf Y2VudGVyKSA+IHNyYykKClRoYXQgZG9lc24ndCBsb29rIHJpZ2h0IHRvIG1lLgoKSG93IGFib3V0 IGp1c3QgJ2lmIChzcmMgPiBkc3QgPDwgMTYpJyA/CgpJIGd1ZXNzIGlmIHdlIHdhbnQgdG8ga2Vl cCB0aGlzIGNvZGUgaW5kZXBlbmRlbnQgb2YgdGhlIG51bWJlciBvZgpmcmFjdGlvbmFsIGJpdHMg d2UgY291bGQgcGFzcyB0aGUgMTYgaW4gZnJvbSB0aGUgY2FsbGVyKHMpLiBOb3Qgc3VyZQp0aGVy ZSdzIG11Y2ggcG9pbnQgaW4gdGhhdCB0aG91Z2guCgo+ICsJCXJldHVybiBESVZfUk9VTkRfVVAo c3JjLCBkc3QpOwo+ICsJZWxzZQo+ICsJCXNjYWxlID0gc3JjIC8gZHN0Owo+ICAKPiAgCXJldHVy biBzY2FsZTsKPiAgfQo+IEBAIC0xMTYsMjEgKzExOSwyNSBAQCBzdGF0aWMgaW50IGRybV9jYWxj X3NjYWxlKGludCBzcmMsIGludCBkc3QpCj4gICAqIEBzcmM6IHNvdXJjZSB3aW5kb3cgcmVjdGFu Z2xlCj4gICAqIEBkc3Q6IGRlc3RpbmF0aW9uIHdpbmRvdyByZWN0YW5nbGUKPiAgICogQG1pbl9o c2NhbGU6IG1pbmltdW0gYWxsb3dlZCBob3Jpem9udGFsIHNjYWxpbmcgZmFjdG9yCj4gKyAqIEBt aWRfaHNjYWxlOiBtaWQgcG9pbnQsIGJlbG93IHRoaXMgcG9pbnQgcm91bmQgZG93biBzY2FsaW5n LCBhYm92ZSByb3VuZCB1cC4KPiAgICogQG1heF9oc2NhbGU6IG1heGltdW0gYWxsb3dlZCBob3Jp em9udGFsIHNjYWxpbmcgZmFjdG9yCj4gICAqCj4gICAqIENhbGN1bGF0ZSB0aGUgaG9yaXpvbnRh bCBzY2FsaW5nIGZhY3RvciBhcwo+ICAgKiAoQHNyYyB3aWR0aCkgLyAoQGRzdCB3aWR0aCkuCj4g ICAqCj4gKyAqIElmIHRoZSBzY2FsZSBpcyBiZWxvdyBAbWlkX2hzY2FsZSB3ZSByb3VuZCBkb3du LCBpZiBhYm92ZSB1cC4gVGhpcyB3aWxsCj4gKyAqIGNhbGN1bGF0ZSB0aGUgaHNjYWxlIHdpdGgg dGhlIG1vc3QgcGVzc2ltaXN0aWMgbGltaXQgY2FsY3VsYXRpb24uCj4gKyAqCj4gICAqIFJFVFVS TlM6Cj4gICAqIFRoZSBob3Jpem9udGFsIHNjYWxpbmcgZmFjdG9yLCBvciBlcnJubyBvZiBvdXQg b2YgbGltaXRzLgo+ICAgKi8KPiAgaW50IGRybV9yZWN0X2NhbGNfaHNjYWxlKGNvbnN0IHN0cnVj dCBkcm1fcmVjdCAqc3JjLAo+ICAJCQkgY29uc3Qgc3RydWN0IGRybV9yZWN0ICpkc3QsCj4gLQkJ CSBpbnQgbWluX2hzY2FsZSwgaW50IG1heF9oc2NhbGUpCj4gKwkJCSBpbnQgbWluX2hzY2FsZSwg aW50IG1pZF9oc2NhbGUsIGludCBtYXhfaHNjYWxlKQo+ICB7Cj4gIAlpbnQgc3JjX3cgPSBkcm1f cmVjdF93aWR0aChzcmMpOwo+ICAJaW50IGRzdF93ID0gZHJtX3JlY3Rfd2lkdGgoZHN0KTsKPiAt CWludCBoc2NhbGUgPSBkcm1fY2FsY19zY2FsZShzcmNfdywgZHN0X3cpOwo+ICsJaW50IGhzY2Fs ZSA9IGRybV9jYWxjX3NjYWxlKHNyY193LCBkc3RfdywgbWlkX2hzY2FsZSk7Cj4gIAo+ICAJaWYg KGhzY2FsZSA8IDAgfHwgZHN0X3cgPT0gMCkKPiAgCQlyZXR1cm4gaHNjYWxlOwo+IEBAIC0xNDcs MjEgKzE1NCwyNSBAQCBFWFBPUlRfU1lNQk9MKGRybV9yZWN0X2NhbGNfaHNjYWxlKTsKPiAgICog QHNyYzogc291cmNlIHdpbmRvdyByZWN0YW5nbGUKPiAgICogQGRzdDogZGVzdGluYXRpb24gd2lu ZG93IHJlY3RhbmdsZQo+ICAgKiBAbWluX3ZzY2FsZTogbWluaW11bSBhbGxvd2VkIHZlcnRpY2Fs IHNjYWxpbmcgZmFjdG9yCj4gKyAqIEBtaWRfdnNjYWxlOiBtaWQgcG9pbnQsIGJlbG93IHRoaXMg cG9pbnQgcm91bmQgZG93biBzY2FsaW5nLCBhYm92ZSByb3VuZCB1cC4KPiAgICogQG1heF92c2Nh bGU6IG1heGltdW0gYWxsb3dlZCB2ZXJ0aWNhbCBzY2FsaW5nIGZhY3Rvcgo+ICAgKgo+ICAgKiBD YWxjdWxhdGUgdGhlIHZlcnRpY2FsIHNjYWxpbmcgZmFjdG9yIGFzCj4gICAqIChAc3JjIGhlaWdo dCkgLyAoQGRzdCBoZWlnaHQpLgo+ICAgKgo+ICsgKiBJZiB0aGUgc2NhbGUgaXMgYmVsb3cgQG1p ZF92c2NhbGUgd2Ugcm91bmQgZG93biwgaWYgYWJvdmUgdXAuIFRoaXMgd2lsbAo+ICsgKiBjYWxj dWxhdGUgdGhlIHZzY2FsZSB3aXRoIHRoZSBtb3N0IHBlc3NpbWlzdGljIGxpbWl0IGNhbGN1bGF0 aW9uLgo+ICsgKgo+ICAgKiBSRVRVUk5TOgo+ICAgKiBUaGUgdmVydGljYWwgc2NhbGluZyBmYWN0 b3IsIG9yIGVycm5vIG9mIG91dCBvZiBsaW1pdHMuCj4gICAqLwo+ICBpbnQgZHJtX3JlY3RfY2Fs Y192c2NhbGUoY29uc3Qgc3RydWN0IGRybV9yZWN0ICpzcmMsCj4gIAkJCSBjb25zdCBzdHJ1Y3Qg ZHJtX3JlY3QgKmRzdCwKPiAtCQkJIGludCBtaW5fdnNjYWxlLCBpbnQgbWF4X3ZzY2FsZSkKPiAr CQkJIGludCBtaW5fdnNjYWxlLCBpbnQgbWlkX3ZzY2FsZSwgaW50IG1heF92c2NhbGUpCj4gIHsK PiAgCWludCBzcmNfaCA9IGRybV9yZWN0X2hlaWdodChzcmMpOwo+ICAJaW50IGRzdF9oID0gZHJt X3JlY3RfaGVpZ2h0KGRzdCk7Cj4gLQlpbnQgdnNjYWxlID0gZHJtX2NhbGNfc2NhbGUoc3JjX2gs IGRzdF9oKTsKPiArCWludCB2c2NhbGUgPSBkcm1fY2FsY19zY2FsZShzcmNfaCwgZHN0X2gsIG1p ZF92c2NhbGUpOwo+ICAKPiAgCWlmICh2c2NhbGUgPCAwIHx8IGRzdF9oID09IDApCj4gIAkJcmV0 dXJuIHZzY2FsZTsKPiBAQCAtMTc4LDYgKzE4OSw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX3JlY3Rf Y2FsY192c2NhbGUpOwo+ICAgKiBAc3JjOiBzb3VyY2Ugd2luZG93IHJlY3RhbmdsZQo+ICAgKiBA ZHN0OiBkZXN0aW5hdGlvbiB3aW5kb3cgcmVjdGFuZ2xlCj4gICAqIEBtaW5faHNjYWxlOiBtaW5p bXVtIGFsbG93ZWQgaG9yaXpvbnRhbCBzY2FsaW5nIGZhY3Rvcgo+ICsgKiBAbWlkX2hzY2FsZTog bWlkIHBvaW50LCBiZWxvdyB0aGlzIHBvaW50IHJvdW5kIGRvd24gc2NhbGluZywgYWJvdmUgcm91 bmQgdXAuCj4gICAqIEBtYXhfaHNjYWxlOiBtYXhpbXVtIGFsbG93ZWQgaG9yaXpvbnRhbCBzY2Fs aW5nIGZhY3Rvcgo+ICAgKgo+ICAgKiBDYWxjdWxhdGUgdGhlIGhvcml6b250YWwgc2NhbGluZyBm YWN0b3IgYXMKPiBAQCAtMTg5LDE2ICsyMDEsMTkgQEAgRVhQT1JUX1NZTUJPTChkcm1fcmVjdF9j YWxjX3ZzY2FsZSk7Cj4gICAqIElmIHRoZSBjYWxjdWxhdGVkIHNjYWxpbmcgZmFjdG9yIGlzIGFi b3ZlIEBtYXhfdnNjYWxlLAo+ICAgKiBkZWNyZWFzZSB0aGUgaGVpZ2h0IG9mIHJlY3RhbmdsZSBA c3JjIHRvIGNvbXBlbnNhdGUuCj4gICAqCj4gKyAqIElmIHRoZSBzY2FsZSBpcyBiZWxvdyBAbWlk X2hzY2FsZSB3ZSByb3VuZCBkb3duLCBpZiBhYm92ZSB1cC4gVGhpcyB3aWxsCj4gKyAqIGNhbGN1 bGF0ZSB0aGUgaHNjYWxlIHdpdGggdGhlIG1vc3QgcGVzc2ltaXN0aWMgbGltaXQgY2FsY3VsYXRp b24uCj4gKyAqCj4gICAqIFJFVFVSTlM6Cj4gICAqIFRoZSBob3Jpem9udGFsIHNjYWxpbmcgZmFj dG9yLgo+ICAgKi8KPiAgaW50IGRybV9yZWN0X2NhbGNfaHNjYWxlX3JlbGF4ZWQoc3RydWN0IGRy bV9yZWN0ICpzcmMsCj4gIAkJCQkgc3RydWN0IGRybV9yZWN0ICpkc3QsCj4gLQkJCQkgaW50IG1p bl9oc2NhbGUsIGludCBtYXhfaHNjYWxlKQo+ICsJCQkJIGludCBtaW5faHNjYWxlLCBpbnQgbWlk X2hzY2FsZSwgaW50IG1heF9oc2NhbGUpCj4gIHsKPiAgCWludCBzcmNfdyA9IGRybV9yZWN0X3dp ZHRoKHNyYyk7Cj4gIAlpbnQgZHN0X3cgPSBkcm1fcmVjdF93aWR0aChkc3QpOwo+IC0JaW50IGhz Y2FsZSA9IGRybV9jYWxjX3NjYWxlKHNyY193LCBkc3Rfdyk7Cj4gKwlpbnQgaHNjYWxlID0gZHJt X2NhbGNfc2NhbGUoc3JjX3csIGRzdF93LCBtaWRfaHNjYWxlKTsKPiAgCj4gIAlpZiAoaHNjYWxl IDwgMCB8fCBkc3RfdyA9PSAwKQo+ICAJCXJldHVybiBoc2NhbGU7Cj4gQEAgLTIyOCw2ICsyNDMs NyBAQCBFWFBPUlRfU1lNQk9MKGRybV9yZWN0X2NhbGNfaHNjYWxlX3JlbGF4ZWQpOwo+ICAgKiBA c3JjOiBzb3VyY2Ugd2luZG93IHJlY3RhbmdsZQo+ICAgKiBAZHN0OiBkZXN0aW5hdGlvbiB3aW5k b3cgcmVjdGFuZ2xlCj4gICAqIEBtaW5fdnNjYWxlOiBtaW5pbXVtIGFsbG93ZWQgdmVydGljYWwg c2NhbGluZyBmYWN0b3IKPiArICogQG1pZF92c2NhbGU6IG1pZCBwb2ludCwgYmVsb3cgdGhpcyBw b2ludCByb3VuZCBkb3duIHNjYWxpbmcsIGFib3ZlIHJvdW5kIHVwLgo+ICAgKiBAbWF4X3ZzY2Fs ZTogbWF4aW11bSBhbGxvd2VkIHZlcnRpY2FsIHNjYWxpbmcgZmFjdG9yCj4gICAqCj4gICAqIENh bGN1bGF0ZSB0aGUgdmVydGljYWwgc2NhbGluZyBmYWN0b3IgYXMKPiBAQCAtMjM5LDE2ICsyNTUs MTkgQEAgRVhQT1JUX1NZTUJPTChkcm1fcmVjdF9jYWxjX2hzY2FsZV9yZWxheGVkKTsKPiAgICog SWYgdGhlIGNhbGN1bGF0ZWQgc2NhbGluZyBmYWN0b3IgaXMgYWJvdmUgQG1heF92c2NhbGUsCj4g ICAqIGRlY3JlYXNlIHRoZSBoZWlnaHQgb2YgcmVjdGFuZ2xlIEBzcmMgdG8gY29tcGVuc2F0ZS4K PiAgICoKPiArICogSWYgdGhlIHNjYWxlIGlzIGJlbG93IEBtaWRfdnNjYWxlIHdlIHJvdW5kIGRv d24sIGlmIGFib3ZlIHVwLiBUaGlzIHdpbGwKPiArICogY2FsY3VsYXRlIHRoZSB2c2NhbGUgd2l0 aCB0aGUgbW9zdCBwZXNzaW1pc3RpYyBsaW1pdCBjYWxjdWxhdGlvbi4KPiArICoKPiAgICogUkVU VVJOUzoKPiAgICogVGhlIHZlcnRpY2FsIHNjYWxpbmcgZmFjdG9yLgo+ICAgKi8KPiAgaW50IGRy bV9yZWN0X2NhbGNfdnNjYWxlX3JlbGF4ZWQoc3RydWN0IGRybV9yZWN0ICpzcmMsCj4gIAkJCQkg c3RydWN0IGRybV9yZWN0ICpkc3QsCj4gLQkJCQkgaW50IG1pbl92c2NhbGUsIGludCBtYXhfdnNj YWxlKQo+ICsJCQkJIGludCBtaW5fdnNjYWxlLCBpbnQgbWlkX3ZzY2FsZSwgaW50IG1heF92c2Nh bGUpCj4gIHsKPiAgCWludCBzcmNfaCA9IGRybV9yZWN0X2hlaWdodChzcmMpOwo+ICAJaW50IGRz dF9oID0gZHJtX3JlY3RfaGVpZ2h0KGRzdCk7Cj4gLQlpbnQgdnNjYWxlID0gZHJtX2NhbGNfc2Nh bGUoc3JjX2gsIGRzdF9oKTsKPiArCWludCB2c2NhbGUgPSBkcm1fY2FsY19zY2FsZShzcmNfaCwg bWlkX3ZzY2FsZSwgZHN0X2gpOwo+ICAKPiAgCWlmICh2c2NhbGUgPCAwIHx8IGRzdF9oID09IDAp Cj4gIAkJcmV0dXJuIHZzY2FsZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+IGlu ZGV4IGFhMWRmYWE2OTJiOS4uZjhmN2M2NmZjM2FjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfc3ByaXRlLmMKPiBAQCAtOTk4LDEwICs5OTgsMTAgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3Bs YW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAlkcm1fcmVjdF9yb3RhdGUoc3JjLCBm Yi0+d2lkdGggPDwgMTYsIGZiLT5oZWlnaHQgPDwgMTYsCj4gIAkJCXN0YXRlLT5iYXNlLnJvdGF0 aW9uKTsKPiAgCj4gLQloc2NhbGUgPSBkcm1fcmVjdF9jYWxjX2hzY2FsZV9yZWxheGVkKHNyYywg ZHN0LCBtaW5fc2NhbGUsIG1heF9zY2FsZSk7Cj4gKwloc2NhbGUgPSBkcm1fcmVjdF9jYWxjX2hz Y2FsZV9yZWxheGVkKHNyYywgZHN0LCBtaW5fc2NhbGUsIDEgPDwgMTYsIG1heF9zY2FsZSk7Cj4g IAlCVUdfT04oaHNjYWxlIDwgMCk7Cj4gIAo+IC0JdnNjYWxlID0gZHJtX3JlY3RfY2FsY192c2Nh bGVfcmVsYXhlZChzcmMsIGRzdCwgbWluX3NjYWxlLCBtYXhfc2NhbGUpOwo+ICsJdnNjYWxlID0g ZHJtX3JlY3RfY2FsY192c2NhbGVfcmVsYXhlZChzcmMsIGRzdCwgbWluX3NjYWxlLCAxIDw8IDE2 LCBtYXhfc2NhbGUpOwo+ICAJQlVHX09OKHZzY2FsZSA8IDApOwo+ICAKPiAgCWlmIChjcnRjX3N0 YXRlLT5iYXNlLmVuYWJsZSkKPiBAQCAtMTAxNyw3ICsxMDE3LDcgQEAgaW50ZWxfY2hlY2tfc3By aXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAo+ICAJaWYgKHN0YXRlLT5i YXNlLnZpc2libGUpIHsKPiAgCQkvKiBjaGVjayBhZ2FpbiBpbiBjYXNlIGNsaXBwaW5nIGNsYW1w ZWQgdGhlIHJlc3VsdHMgKi8KPiAtCQloc2NhbGUgPSBkcm1fcmVjdF9jYWxjX2hzY2FsZShzcmMs IGRzdCwgbWluX3NjYWxlLCBtYXhfc2NhbGUpOwo+ICsJCWhzY2FsZSA9IGRybV9yZWN0X2NhbGNf aHNjYWxlKHNyYywgZHN0LCBtaW5fc2NhbGUsIDEgPDwgMTYsIG1heF9zY2FsZSk7Cj4gIAkJaWYg KGhzY2FsZSA8IDApIHsKPiAgCQkJRFJNX0RFQlVHX0tNUygiSG9yaXpvbnRhbCBzY2FsaW5nIGZh Y3RvciBvdXQgb2YgbGltaXRzXG4iKTsKPiAgCQkJZHJtX3JlY3RfZGVidWdfcHJpbnQoInNyYzog Iiwgc3JjLCB0cnVlKTsKPiBAQCAtMTAyNiw3ICsxMDI2LDcgQEAgaW50ZWxfY2hlY2tfc3ByaXRl X3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAkJCXJldHVybiBoc2NhbGU7Cj4g IAkJfQo+ICAKPiAtCQl2c2NhbGUgPSBkcm1fcmVjdF9jYWxjX3ZzY2FsZShzcmMsIGRzdCwgbWlu X3NjYWxlLCBtYXhfc2NhbGUpOwo+ICsJCXZzY2FsZSA9IGRybV9yZWN0X2NhbGNfdnNjYWxlKHNy YywgZHN0LCBtaW5fc2NhbGUsIDEgPDwgMTYsIG1heF9zY2FsZSk7Cj4gIAkJaWYgKHZzY2FsZSA8 IDApIHsKPiAgCQkJRFJNX0RFQlVHX0tNUygiVmVydGljYWwgc2NhbGluZyBmYWN0b3Igb3V0IG9m IGxpbWl0c1xuIik7Cj4gIAkJCWRybV9yZWN0X2RlYnVnX3ByaW50KCJzcmM6ICIsIHNyYywgdHJ1 ZSk7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9yZWN0LmggYi9pbmNsdWRlL2RybS9k cm1fcmVjdC5oCj4gaW5kZXggNDRiYzEyMmI5ZWUwLi5kYmI4NjMxYTkyODggMTAwNjQ0Cj4gLS0t IGEvaW5jbHVkZS9kcm0vZHJtX3JlY3QuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9yZWN0LmgK PiBAQCAtMTc5LDE2ICsxNzksMTYgQEAgYm9vbCBkcm1fcmVjdF9jbGlwX3NjYWxlZChzdHJ1Y3Qg ZHJtX3JlY3QgKnNyYywgc3RydWN0IGRybV9yZWN0ICpkc3QsCj4gIAkJCSAgaW50IGhzY2FsZSwg aW50IHZzY2FsZSk7Cj4gIGludCBkcm1fcmVjdF9jYWxjX2hzY2FsZShjb25zdCBzdHJ1Y3QgZHJt X3JlY3QgKnNyYywKPiAgCQkJIGNvbnN0IHN0cnVjdCBkcm1fcmVjdCAqZHN0LAo+IC0JCQkgaW50 IG1pbl9oc2NhbGUsIGludCBtYXhfaHNjYWxlKTsKPiArCQkJIGludCBtaW5faHNjYWxlLCBpbnQg bWlkX2hzY2FsZSwgaW50IG1heF9oc2NhbGUpOwo+ICBpbnQgZHJtX3JlY3RfY2FsY192c2NhbGUo Y29uc3Qgc3RydWN0IGRybV9yZWN0ICpzcmMsCj4gIAkJCSBjb25zdCBzdHJ1Y3QgZHJtX3JlY3Qg KmRzdCwKPiAtCQkJIGludCBtaW5fdnNjYWxlLCBpbnQgbWF4X3ZzY2FsZSk7Cj4gKwkJCSBpbnQg bWluX3ZzY2FsZSwgaW50IG1pZF92c2NhbGUsIGludCBtYXhfdnNjYWxlKTsKPiAgaW50IGRybV9y ZWN0X2NhbGNfaHNjYWxlX3JlbGF4ZWQoc3RydWN0IGRybV9yZWN0ICpzcmMsCj4gIAkJCQkgc3Ry dWN0IGRybV9yZWN0ICpkc3QsCj4gLQkJCQkgaW50IG1pbl9oc2NhbGUsIGludCBtYXhfaHNjYWxl KTsKPiArCQkJCSBpbnQgbWluX2hzY2FsZSwgaW50IG1pZF9oc2NhbGUsIGludCBtYXhfaHNjYWxl KTsKPiAgaW50IGRybV9yZWN0X2NhbGNfdnNjYWxlX3JlbGF4ZWQoc3RydWN0IGRybV9yZWN0ICpz cmMsCj4gIAkJCQkgc3RydWN0IGRybV9yZWN0ICpkc3QsCj4gLQkJCQkgaW50IG1pbl92c2NhbGUs IGludCBtYXhfdnNjYWxlKTsKPiArCQkJCSBpbnQgbWluX3ZzY2FsZSwgaW50IG1pZF92c2NhbGUs IGludCBtYXhfdnNjYWxlKTsKPiAgdm9pZCBkcm1fcmVjdF9kZWJ1Z19wcmludChjb25zdCBjaGFy ICpwcmVmaXgsCj4gIAkJCSAgY29uc3Qgc3RydWN0IGRybV9yZWN0ICpyLCBib29sIGZpeGVkX3Bv aW50KTsKPiAgdm9pZCBkcm1fcmVjdF9yb3RhdGUoc3RydWN0IGRybV9yZWN0ICpyLAo+IC0tIAo+ IDIuMTcuMAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK