From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH] drm/i915 : clip yuv primary planes to hw constraints Date: Wed, 30 May 2018 19:58:34 +0300 Message-ID: <20180530165834.GR23723@intel.com> References: <20180525192740.41927-1-frkoenig@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 959D189B8F for ; Wed, 30 May 2018 16:58:38 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180525192740.41927-1-frkoenig@google.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Fritz Koenig Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBNYXkgMjUsIDIwMTggYXQgMTI6Mjc6NDBQTSAtMDcwMCwgRnJpdHogS29lbmlnIHdy b3RlOgo+IFlVViBwbGFuZXMgbmVlZCB0byBiZSBtdWx0aXBsZXMgb2YgMiB0byBzY2FuIG91dC4g VGhpcyB3YXMKPiBoYW5kbGVkIGNvcnJlY3RseSBmb3IgcGxhbmVzIG90aGVyIHRoYW4gdGhlIHBy aW1hcnkgaW4gdGhlCj4gaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lLCB3aGVyZSB0aGUgY29kZSBm aXhlcyB1cCB0aGUgcGxhbmUKPiBhbmQgbWFrZXMgaXQgY29tcGxpYW50LiBNb3ZlIHRoaXMgY29k ZSBpbnRvIGEgbG9jYXRpb24gdGhhdAo+IGFsbG93cyB0aGUgcHJpbWFyeSBjaGVjayB0byBhY2Nl c3MgaXQgYXMgd2VsbC4KCmludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZSgpIGlzIG5vdCBzb21ldGhp bmcgd2Ugc2hvdWxkIGJlIHNwcmVhZGluZy4gCkl0J3MgZG9pbmcgd2F5IHRvbyBtYW55IHBsYXRm b3JtIHNwZWNpZmljIHRoaW5ncy4gSSB0aGluayB3aGVyZSBJCndhbnQgdG8gZ28gaW5zdGVhZCBp cyBwZXItcGxhdGZvcm0gcGxhbmUgLmNoZWNrKCkgZnVuY3Rpb25zIGluc3RlYWQuClRvIHRoYXQg ZW5kIEkgdGhpbmsgeW91IHNob3VsZCBqdXN0IGFkZCB0aGUgcmVsZXZhbnQgY2hlY2tzIHRvIGVn Lgpza2xfY2hlY2tfcGxhbmVfc3VyZmFjZSgpIGZvciBub3cuCgpXZSBlc3BlY2lhbGx5IGRvbid0 IHdhbnQgdG8gYmUgbW92aW5nIGxhcmdlIGNodW5rcyBvZiBjb2RlIGZyb20KaW50ZWxfc3ByaXRl LmMgdG8gaW50ZWxfZGlzcGxheS5jLiBJJ20gYWN0dWFsbHkgdHJ5aW5nIHRvIGRvIHRoZQpleGFj dCBvcHBvc2l0ZSBhbmQgbW92ZSBhbGwgdGhlIHBsYW5lIGNvZGUgaW50byBpbnRlbF9zcHJpdGUu Ywoob3IgbWF5YmUgZXZlbiBpbnRyb2R1Y2UgYSBuZXcgZmlsZSBmb3IgdGhlIHNrbCsgcGxhbmUg Y29kZQplbnRpcmVseSkuCgo+IFNpZ25lZC1vZmYtYnk6IEZyaXR6IEtvZW5pZyA8ZnJrb2VuaWdA Z29vZ2xlLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j IHwgMTcwICsrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgICAgfCAgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9z cHJpdGUuYyAgfCAxNTQgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gIDMgZmlsZXMgY2hhbmdl ZCwgMTc1IGluc2VydGlvbnMoKyksIDE1MSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5kZXggNWYwM2FmNDU1MDQ3Li5lMWViMGZiOTg4YTYgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTEyODU2LDYgKzEyODU2 LDE3MCBAQCBza2xfbWF4X3NjYWxlKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZQo+ICAJcmV0dXJuIG1heF9zY2FsZTsKPiAg fQo+ICAKPiAraW50Cj4gK2ludGVsX2NsaXBfc3JjX3JlY3Qoc3RydWN0IGludGVsX3BsYW5lICpw bGFuZSwKPiArCQkgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUsCj4gKwkJ ICAgIHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiArCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjX3N0YXRlLT5iYXNlLmNy dGMpOwo+ICsJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBzdGF0ZS0+YmFzZS5mYjsKPiAr CWludCBjcnRjX3gsIGNydGNfeTsKPiArCXVuc2lnbmVkIGludCBjcnRjX3csIGNydGNfaDsKPiAr CXVpbnQzMl90IHNyY194LCBzcmNfeSwgc3JjX3csIHNyY19oOwo+ICsJc3RydWN0IGRybV9yZWN0 ICpzcmMgPSAmc3RhdGUtPmJhc2Uuc3JjOwo+ICsJc3RydWN0IGRybV9yZWN0ICpkc3QgPSAmc3Rh dGUtPmJhc2UuZHN0Owo+ICsJc3RydWN0IGRybV9yZWN0IGNsaXAgPSB7fTsKPiArCWludCBoc2Nh bGUsIHZzY2FsZTsKPiArCWludCBtYXhfc2NhbGUsIG1pbl9zY2FsZTsKPiArCWJvb2wgY2FuX3Nj YWxlOwo+ICsKPiArCSpzcmMgPSBkcm1fcGxhbmVfc3RhdGVfc3JjKCZzdGF0ZS0+YmFzZSk7Cj4g KwkqZHN0ID0gZHJtX3BsYW5lX3N0YXRlX2Rlc3QoJnN0YXRlLT5iYXNlKTsKPiArCj4gKwkvKiBz ZXR1cCBjYW5fc2NhbGUsIG1pbl9zY2FsZSwgbWF4X3NjYWxlICovCj4gKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA5KSB7Cj4gKwkJLyogdXNlIHNjYWxlciB3aGVuIGNvbG9ya2V5IGlzIG5v dCByZXF1aXJlZCAqLwo+ICsJCWlmICghc3RhdGUtPmNrZXkuZmxhZ3MpIHsKPiArCQkJY2FuX3Nj YWxlID0gMTsKPiArCQkJbWluX3NjYWxlID0gMTsKPiArCQkJbWF4X3NjYWxlID0gc2tsX21heF9z Y2FsZShjcnRjLCBjcnRjX3N0YXRlKTsKPiArCQl9IGVsc2Ugewo+ICsJCQljYW5fc2NhbGUgPSAw Owo+ICsJCQltaW5fc2NhbGUgPSBEUk1fUExBTkVfSEVMUEVSX05PX1NDQUxJTkc7Cj4gKwkJCW1h eF9zY2FsZSA9IERSTV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKPiArCQl9Cj4gKwl9IGVsc2Ug ewo+ICsJCWNhbl9zY2FsZSA9IHBsYW5lLT5jYW5fc2NhbGU7Cj4gKwkJbWF4X3NjYWxlID0gcGxh bmUtPm1heF9kb3duc2NhbGUgPDwgMTY7Cj4gKwkJbWluX3NjYWxlID0gcGxhbmUtPmNhbl9zY2Fs ZSA/IDEgOiAoMSA8PCAxNik7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSAqIEZJWE1FIHRoZSBmb2xs b3dpbmcgY29kZSBkb2VzIGEgYnVuY2ggb2YgZnV6enkgYWRqdXN0bWVudHMgdG8gdGhlCj4gKwkg KiBjb29yZGluYXRlcyBhbmQgc2l6ZXMuIFdlIHByb2JhYmx5IG5lZWQgc29tZSB3YXkgdG8gZGVj aWRlIHdoZXRoZXIKPiArCSAqIG1vcmUgc3RyaWN0IGNoZWNraW5nIHNob3VsZCBiZSBkb25lIGlu c3RlYWQuCj4gKwkgKi8KPiArCWRybV9yZWN0X3JvdGF0ZShzcmMsIGZiLT53aWR0aCA8PCAxNiwg ZmItPmhlaWdodCA8PCAxNiwKPiArCQkJc3RhdGUtPmJhc2Uucm90YXRpb24pOwo+ICsKPiArCWhz Y2FsZSA9IGRybV9yZWN0X2NhbGNfaHNjYWxlX3JlbGF4ZWQoc3JjLCBkc3QsIG1pbl9zY2FsZSwg bWF4X3NjYWxlKTsKPiArCUJVR19PTihoc2NhbGUgPCAwKTsKPiArCj4gKwl2c2NhbGUgPSBkcm1f cmVjdF9jYWxjX3ZzY2FsZV9yZWxheGVkKHNyYywgZHN0LCBtaW5fc2NhbGUsIG1heF9zY2FsZSk7 Cj4gKwlCVUdfT04odnNjYWxlIDwgMCk7Cj4gKwo+ICsJaWYgKGNydGNfc3RhdGUtPmJhc2UuZW5h YmxlKQo+ICsJCWRybV9tb2RlX2dldF9odl90aW1pbmcoJmNydGNfc3RhdGUtPmJhc2UubW9kZSwK PiArCQkJCSAgICAgICAmY2xpcC54MiwgJmNsaXAueTIpOwo+ICsKPiArCXN0YXRlLT5iYXNlLnZp c2libGUgPSBkcm1fcmVjdF9jbGlwX3NjYWxlZChzcmMsIGRzdCwgJmNsaXAsIGhzY2FsZSwgdnNj YWxlKTsKPiArCj4gKwljcnRjX3ggPSBkc3QtPngxOwo+ICsJY3J0Y195ID0gZHN0LT55MTsKPiAr CWNydGNfdyA9IGRybV9yZWN0X3dpZHRoKGRzdCk7Cj4gKwljcnRjX2ggPSBkcm1fcmVjdF9oZWln aHQoZHN0KTsKPiArCj4gKwlpZiAoc3RhdGUtPmJhc2UudmlzaWJsZSkgewo+ICsJCS8qIGNoZWNr IGFnYWluIGluIGNhc2UgY2xpcHBpbmcgY2xhbXBlZCB0aGUgcmVzdWx0cyAqLwo+ICsJCWhzY2Fs ZSA9IGRybV9yZWN0X2NhbGNfaHNjYWxlKHNyYywgZHN0LCBtaW5fc2NhbGUsIG1heF9zY2FsZSk7 Cj4gKwkJaWYgKGhzY2FsZSA8IDApIHsKPiArCQkJRFJNX0RFQlVHX0tNUygiSG9yaXpvbnRhbCBz Y2FsaW5nIGZhY3RvciBvdXQgb2YgbGltaXRzXG4iKTsKPiArCQkJZHJtX3JlY3RfZGVidWdfcHJp bnQoInNyYzogIiwgc3JjLCB0cnVlKTsKPiArCQkJZHJtX3JlY3RfZGVidWdfcHJpbnQoImRzdDog IiwgZHN0LCBmYWxzZSk7Cj4gKwo+ICsJCQlyZXR1cm4gaHNjYWxlOwo+ICsJCX0KPiArCj4gKwkJ dnNjYWxlID0gZHJtX3JlY3RfY2FsY192c2NhbGUoc3JjLCBkc3QsIG1pbl9zY2FsZSwgbWF4X3Nj YWxlKTsKPiArCQlpZiAodnNjYWxlIDwgMCkgewo+ICsJCQlEUk1fREVCVUdfS01TKCJWZXJ0aWNh bCBzY2FsaW5nIGZhY3RvciBvdXQgb2YgbGltaXRzXG4iKTsKPiArCQkJZHJtX3JlY3RfZGVidWdf cHJpbnQoInNyYzogIiwgc3JjLCB0cnVlKTsKPiArCQkJZHJtX3JlY3RfZGVidWdfcHJpbnQoImRz dDogIiwgZHN0LCBmYWxzZSk7Cj4gKwo+ICsJCQlyZXR1cm4gdnNjYWxlOwo+ICsJCX0KPiArCj4g KwkJLyogTWFrZSB0aGUgc291cmNlIHZpZXdwb3J0IHNpemUgYW4gZXhhY3QgbXVsdGlwbGUgb2Yg dGhlIHNjYWxpbmcgZmFjdG9ycy4gKi8KPiArCQlkcm1fcmVjdF9hZGp1c3Rfc2l6ZShzcmMsCj4g KwkJCQkgICAgIGRybV9yZWN0X3dpZHRoKGRzdCkgKiBoc2NhbGUgLSBkcm1fcmVjdF93aWR0aChz cmMpLAo+ICsJCQkJICAgICBkcm1fcmVjdF9oZWlnaHQoZHN0KSAqIHZzY2FsZSAtIGRybV9yZWN0 X2hlaWdodChzcmMpKTsKPiArCj4gKwkJZHJtX3JlY3Rfcm90YXRlX2ludihzcmMsIGZiLT53aWR0 aCA8PCAxNiwgZmItPmhlaWdodCA8PCAxNiwKPiArCQkJCSAgICBzdGF0ZS0+YmFzZS5yb3RhdGlv bik7Cj4gKwo+ICsJCS8qIHNhbml0eSBjaGVjayB0byBtYWtlIHN1cmUgdGhlIHNyYyB2aWV3cG9y dCB3YXNuJ3QgZW5sYXJnZWQgKi8KPiArCQlXQVJOX09OKHNyYy0+eDEgPCAoaW50KSBzdGF0ZS0+ YmFzZS5zcmNfeCB8fAo+ICsJCQlzcmMtPnkxIDwgKGludCkgc3RhdGUtPmJhc2Uuc3JjX3kgfHwK PiArCQkJc3JjLT54MiA+IChpbnQpIHN0YXRlLT5iYXNlLnNyY194ICsgc3RhdGUtPmJhc2Uuc3Jj X3cgfHwKPiArCQkJc3JjLT55MiA+IChpbnQpIHN0YXRlLT5iYXNlLnNyY195ICsgc3RhdGUtPmJh c2Uuc3JjX2gpOwo+ICsKPiArCQkvKgo+ICsJCSAqIEhhcmR3YXJlIGRvZXNuJ3QgaGFuZGxlIHN1 YnBpeGVsIGNvb3JkaW5hdGVzLgo+ICsJCSAqIEFkanVzdCB0byAobWFjcm8pcGl4ZWwgYm91bmRh cnksIGJ1dCBiZSBjYXJlZnVsIG5vdCB0bwo+ICsJCSAqIGluY3JlYXNlIHRoZSBzb3VyY2Ugdmll d3BvcnQgc2l6ZSwgYmVjYXVzZSB0aGF0IGNvdWxkCj4gKwkJICogcHVzaCB0aGUgZG93bnNjYWxp bmcgZmFjdG9yIG91dCBvZiBib3VuZHMuCj4gKwkJICovCj4gKwkJc3JjX3ggPSBzcmMtPngxID4+ IDE2Owo+ICsJCXNyY193ID0gZHJtX3JlY3Rfd2lkdGgoc3JjKSA+PiAxNjsKPiArCQlzcmNfeSA9 IHNyYy0+eTEgPj4gMTY7Cj4gKwkJc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoc3JjKSA+PiAxNjsK PiArCj4gKwkJaWYgKGludGVsX2Zvcm1hdF9pc195dXYoZmItPmZvcm1hdC0+Zm9ybWF0KSkgewo+ ICsJCQlzcmNfeCAmPSB+MTsKPiArCQkJc3JjX3cgJj0gfjE7Cj4gKwo+ICsJCQkvKgo+ICsJCQkg KiBNdXN0IGtlZXAgc3JjIGFuZCBkc3QgdGhlCj4gKwkJCSAqIHNhbWUgaWYgd2UgY2FuJ3Qgc2Nh bGUuCj4gKwkJCSAqLwo+ICsJCQlpZiAoIWNhbl9zY2FsZSkKPiArCQkJCWNydGNfdyAmPSB+MTsK PiArCj4gKwkJCWlmIChjcnRjX3cgPT0gMCkKPiArCQkJCXN0YXRlLT5iYXNlLnZpc2libGUgPSBm YWxzZTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJLyogQ2hlY2sgc2l6ZSByZXN0cmljdGlvbnMgd2hl biBzY2FsaW5nICovCj4gKwlpZiAoc3RhdGUtPmJhc2UudmlzaWJsZSAmJiAoc3JjX3cgIT0gY3J0 Y193IHx8IHNyY19oICE9IGNydGNfaCkpIHsKPiArCQl1bnNpZ25lZCBpbnQgd2lkdGhfYnl0ZXM7 Cj4gKwkJaW50IGNwcCA9IGZiLT5mb3JtYXQtPmNwcFswXTsKPiArCj4gKwkJV0FSTl9PTighY2Fu X3NjYWxlKTsKPiArCj4gKwkJLyogRklYTUUgaW50ZXJsYWNpbmcgbWluIGhlaWdodCBpcyA2ICov Cj4gKwo+ICsJCWlmIChjcnRjX3cgPCAzIHx8IGNydGNfaCA8IDMpCj4gKwkJCXN0YXRlLT5iYXNl LnZpc2libGUgPSBmYWxzZTsKPiArCj4gKwkJaWYgKHNyY193IDwgMyB8fCBzcmNfaCA8IDMpCj4g KwkJCXN0YXRlLT5iYXNlLnZpc2libGUgPSBmYWxzZTsKPiArCj4gKwkJd2lkdGhfYnl0ZXMgPSAo KHNyY194ICogY3BwKSAmIDYzKSArIHNyY193ICogY3BwOwo+ICsKPiArCQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8IDkgJiYgKHNyY193ID4gMjA0OCB8fCBzcmNfaCA+IDIwNDggfHwKPiArCQkg ICAgd2lkdGhfYnl0ZXMgPiA0MDk2IHx8IGZiLT5waXRjaGVzWzBdID4gNDA5NikpIHsKPiArCQkJ RFJNX0RFQlVHX0tNUygiU291cmNlIGRpbWVuc2lvbnMgZXhjZWVkIGhhcmR3YXJlIGxpbWl0c1xu Iik7Cj4gKwkJCXJldHVybiAtRUlOVkFMOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAoc3RhdGUt PmJhc2UudmlzaWJsZSkgewo+ICsJCXNyYy0+eDEgPSBzcmNfeCA8PCAxNjsKPiArCQlzcmMtPngy ID0gKHNyY194ICsgc3JjX3cpIDw8IDE2Owo+ICsJCXNyYy0+eTEgPSBzcmNfeSA8PCAxNjsKPiAr CQlzcmMtPnkyID0gKHNyY195ICsgc3JjX2gpIDw8IDE2Owo+ICsJfQo+ICsKPiArCWRzdC0+eDEg PSBjcnRjX3g7Cj4gKwlkc3QtPngyID0gY3J0Y194ICsgY3J0Y193Owo+ICsJZHN0LT55MSA9IGNy dGNfeTsKPiArCWRzdC0+eTIgPSBjcnRjX3kgKyBjcnRjX2g7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4g K30KPiArCj4gIHN0YXRpYyBpbnQKPiAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3Qg aW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJCQkgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlLAo+IEBAIC0xMjg4Nyw2ICsxMzA1MSwxMiBAQCBpbnRlbF9jaGVja19wcmltYXJ5X3Bs YW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAlpZiAoIXN0YXRlLT5iYXNlLmZiKQo+ ICAJCXJldHVybiAwOwo+ICAKPiArCWlmIChpbnRlbF9mb3JtYXRfaXNfeXV2KHN0YXRlLT5iYXNl LmZiLT5mb3JtYXQtPmZvcm1hdCkpIHsKPiArCQlyZXQgPSBpbnRlbF9jbGlwX3NyY19yZWN0KHBs YW5lLCBjcnRjX3N0YXRlLCBzdGF0ZSk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsK PiArCX0KPiArCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gIAkJcmV0ID0g c2tsX2NoZWNrX3BsYW5lX3N1cmZhY2UoY3J0Y19zdGF0ZSwgc3RhdGUpOwo+ICAJCWlmIChyZXQp Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCBhODBmYmFkOWJlMGYuLjQzODQ3OTI3 YTkyNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTE1OTEsNiArMTU5MSw4 IEBAIHZvaWQgaW50ZWxfbW9kZV9mcm9tX3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fZGlzcGxheV9t b2RlICptb2RlLAo+ICAKPiAgaW50IHNrbF91cGRhdGVfc2NhbGVyX2NydGMoc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICBpbnQgc2tsX21heF9zY2FsZShzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+ICtp bnQgaW50ZWxfY2xpcF9zcmNfcmVjdChzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICsJCQlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpzdGF0ZSk7Cj4gIAo+ICBzdGF0aWMgaW5saW5lIHUzMiBpbnRlbF9wbGFuZV9nZ3R0X29m ZnNldChjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0YXRlKQo+ICB7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBpbmRleCBkYmRjZjg1MDMyZGYuLjg5MmQzMjQ3ZWQ2 OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gQEAgLTkzNSwyMSArOTM1 LDkgQEAgaW50ZWxfY2hlY2tfc3ByaXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUs Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KHBsYW5lLT5i YXNlLmRldik7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPiAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gc3Rh dGUtPmJhc2UuZmI7Cj4gLQlpbnQgY3J0Y194LCBjcnRjX3k7Cj4gLQl1bnNpZ25lZCBpbnQgY3J0 Y193LCBjcnRjX2g7Cj4gLQl1aW50MzJfdCBzcmNfeCwgc3JjX3ksIHNyY193LCBzcmNfaDsKPiAt CXN0cnVjdCBkcm1fcmVjdCAqc3JjID0gJnN0YXRlLT5iYXNlLnNyYzsKPiAtCXN0cnVjdCBkcm1f cmVjdCAqZHN0ID0gJnN0YXRlLT5iYXNlLmRzdDsKPiAtCXN0cnVjdCBkcm1fcmVjdCBjbGlwID0g e307Cj4gIAlpbnQgbWF4X3N0cmlkZSA9IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSA/IDMyNzY4 IDogMTYzODQ7Cj4gLQlpbnQgaHNjYWxlLCB2c2NhbGU7Cj4gLQlpbnQgbWF4X3NjYWxlLCBtaW5f c2NhbGU7Cj4gLQlib29sIGNhbl9zY2FsZTsKPiAgCWludCByZXQ7Cj4gIAo+IC0JKnNyYyA9IGRy bV9wbGFuZV9zdGF0ZV9zcmMoJnN0YXRlLT5iYXNlKTsKPiAtCSpkc3QgPSBkcm1fcGxhbmVfc3Rh dGVfZGVzdCgmc3RhdGUtPmJhc2UpOwo+IC0KPiAgCWlmICghZmIpIHsKPiAgCQlzdGF0ZS0+YmFz ZS52aXNpYmxlID0gZmFsc2U7Cj4gIAkJcmV0dXJuIDA7Cj4gQEAgLTk2NywxNDUgKzk1NSw5IEBA IGludGVsX2NoZWNrX3Nwcml0ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJ CXJldHVybiAtRUlOVkFMOwo+ICAJfQo+ICAKPiAtCS8qIHNldHVwIGNhbl9zY2FsZSwgbWluX3Nj YWxlLCBtYXhfc2NhbGUgKi8KPiAtCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKPiAt CQkvKiB1c2Ugc2NhbGVyIHdoZW4gY29sb3JrZXkgaXMgbm90IHJlcXVpcmVkICovCj4gLQkJaWYg KCFzdGF0ZS0+Y2tleS5mbGFncykgewo+IC0JCQljYW5fc2NhbGUgPSAxOwo+IC0JCQltaW5fc2Nh bGUgPSAxOwo+IC0JCQltYXhfc2NhbGUgPSBza2xfbWF4X3NjYWxlKGNydGMsIGNydGNfc3RhdGUp Owo+IC0JCX0gZWxzZSB7Cj4gLQkJCWNhbl9zY2FsZSA9IDA7Cj4gLQkJCW1pbl9zY2FsZSA9IERS TV9QTEFORV9IRUxQRVJfTk9fU0NBTElORzsKPiAtCQkJbWF4X3NjYWxlID0gRFJNX1BMQU5FX0hF TFBFUl9OT19TQ0FMSU5HOwo+IC0JCX0KPiAtCX0gZWxzZSB7Cj4gLQkJY2FuX3NjYWxlID0gcGxh bmUtPmNhbl9zY2FsZTsKPiAtCQltYXhfc2NhbGUgPSBwbGFuZS0+bWF4X2Rvd25zY2FsZSA8PCAx NjsKPiAtCQltaW5fc2NhbGUgPSBwbGFuZS0+Y2FuX3NjYWxlID8gMSA6ICgxIDw8IDE2KTsKPiAt CX0KPiAtCj4gLQkvKgo+IC0JICogRklYTUUgdGhlIGZvbGxvd2luZyBjb2RlIGRvZXMgYSBidW5j aCBvZiBmdXp6eSBhZGp1c3RtZW50cyB0byB0aGUKPiAtCSAqIGNvb3JkaW5hdGVzIGFuZCBzaXpl cy4gV2UgcHJvYmFibHkgbmVlZCBzb21lIHdheSB0byBkZWNpZGUgd2hldGhlcgo+IC0JICogbW9y ZSBzdHJpY3QgY2hlY2tpbmcgc2hvdWxkIGJlIGRvbmUgaW5zdGVhZC4KPiAtCSAqLwo+IC0JZHJt X3JlY3Rfcm90YXRlKHNyYywgZmItPndpZHRoIDw8IDE2LCBmYi0+aGVpZ2h0IDw8IDE2LAo+IC0J CQlzdGF0ZS0+YmFzZS5yb3RhdGlvbik7Cj4gLQo+IC0JaHNjYWxlID0gZHJtX3JlY3RfY2FsY19o c2NhbGVfcmVsYXhlZChzcmMsIGRzdCwgbWluX3NjYWxlLCBtYXhfc2NhbGUpOwo+IC0JQlVHX09O KGhzY2FsZSA8IDApOwo+IC0KPiAtCXZzY2FsZSA9IGRybV9yZWN0X2NhbGNfdnNjYWxlX3JlbGF4 ZWQoc3JjLCBkc3QsIG1pbl9zY2FsZSwgbWF4X3NjYWxlKTsKPiAtCUJVR19PTih2c2NhbGUgPCAw KTsKPiAtCj4gLQlpZiAoY3J0Y19zdGF0ZS0+YmFzZS5lbmFibGUpCj4gLQkJZHJtX21vZGVfZ2V0 X2h2X3RpbWluZygmY3J0Y19zdGF0ZS0+YmFzZS5tb2RlLAo+IC0JCQkJICAgICAgICZjbGlwLngy LCAmY2xpcC55Mik7Cj4gLQo+IC0Jc3RhdGUtPmJhc2UudmlzaWJsZSA9IGRybV9yZWN0X2NsaXBf c2NhbGVkKHNyYywgZHN0LCAmY2xpcCwgaHNjYWxlLCB2c2NhbGUpOwo+IC0KPiAtCWNydGNfeCA9 IGRzdC0+eDE7Cj4gLQljcnRjX3kgPSBkc3QtPnkxOwo+IC0JY3J0Y193ID0gZHJtX3JlY3Rfd2lk dGgoZHN0KTsKPiAtCWNydGNfaCA9IGRybV9yZWN0X2hlaWdodChkc3QpOwo+IC0KPiAtCWlmIChz dGF0ZS0+YmFzZS52aXNpYmxlKSB7Cj4gLQkJLyogY2hlY2sgYWdhaW4gaW4gY2FzZSBjbGlwcGlu ZyBjbGFtcGVkIHRoZSByZXN1bHRzICovCj4gLQkJaHNjYWxlID0gZHJtX3JlY3RfY2FsY19oc2Nh bGUoc3JjLCBkc3QsIG1pbl9zY2FsZSwgbWF4X3NjYWxlKTsKPiAtCQlpZiAoaHNjYWxlIDwgMCkg ewo+IC0JCQlEUk1fREVCVUdfS01TKCJIb3Jpem9udGFsIHNjYWxpbmcgZmFjdG9yIG91dCBvZiBs aW1pdHNcbiIpOwo+IC0JCQlkcm1fcmVjdF9kZWJ1Z19wcmludCgic3JjOiAiLCBzcmMsIHRydWUp Owo+IC0JCQlkcm1fcmVjdF9kZWJ1Z19wcmludCgiZHN0OiAiLCBkc3QsIGZhbHNlKTsKPiAtCj4g LQkJCXJldHVybiBoc2NhbGU7Cj4gLQkJfQo+IC0KPiAtCQl2c2NhbGUgPSBkcm1fcmVjdF9jYWxj X3ZzY2FsZShzcmMsIGRzdCwgbWluX3NjYWxlLCBtYXhfc2NhbGUpOwo+IC0JCWlmICh2c2NhbGUg PCAwKSB7Cj4gLQkJCURSTV9ERUJVR19LTVMoIlZlcnRpY2FsIHNjYWxpbmcgZmFjdG9yIG91dCBv ZiBsaW1pdHNcbiIpOwo+IC0JCQlkcm1fcmVjdF9kZWJ1Z19wcmludCgic3JjOiAiLCBzcmMsIHRy dWUpOwo+IC0JCQlkcm1fcmVjdF9kZWJ1Z19wcmludCgiZHN0OiAiLCBkc3QsIGZhbHNlKTsKPiAt Cj4gLQkJCXJldHVybiB2c2NhbGU7Cj4gLQkJfQo+IC0KPiAtCQkvKiBNYWtlIHRoZSBzb3VyY2Ug dmlld3BvcnQgc2l6ZSBhbiBleGFjdCBtdWx0aXBsZSBvZiB0aGUgc2NhbGluZyBmYWN0b3JzLiAq Lwo+IC0JCWRybV9yZWN0X2FkanVzdF9zaXplKHNyYywKPiAtCQkJCSAgICAgZHJtX3JlY3Rfd2lk dGgoZHN0KSAqIGhzY2FsZSAtIGRybV9yZWN0X3dpZHRoKHNyYyksCj4gLQkJCQkgICAgIGRybV9y ZWN0X2hlaWdodChkc3QpICogdnNjYWxlIC0gZHJtX3JlY3RfaGVpZ2h0KHNyYykpOwo+IC0KPiAt CQlkcm1fcmVjdF9yb3RhdGVfaW52KHNyYywgZmItPndpZHRoIDw8IDE2LCBmYi0+aGVpZ2h0IDw8 IDE2LAo+IC0JCQkJICAgIHN0YXRlLT5iYXNlLnJvdGF0aW9uKTsKPiAtCj4gLQkJLyogc2FuaXR5 IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3JjIHZpZXdwb3J0IHdhc24ndCBlbmxhcmdlZCAqLwo+ IC0JCVdBUk5fT04oc3JjLT54MSA8IChpbnQpIHN0YXRlLT5iYXNlLnNyY194IHx8Cj4gLQkJCXNy Yy0+eTEgPCAoaW50KSBzdGF0ZS0+YmFzZS5zcmNfeSB8fAo+IC0JCQlzcmMtPngyID4gKGludCkg c3RhdGUtPmJhc2Uuc3JjX3ggKyBzdGF0ZS0+YmFzZS5zcmNfdyB8fAo+IC0JCQlzcmMtPnkyID4g KGludCkgc3RhdGUtPmJhc2Uuc3JjX3kgKyBzdGF0ZS0+YmFzZS5zcmNfaCk7Cj4gLQo+IC0JCS8q Cj4gLQkJICogSGFyZHdhcmUgZG9lc24ndCBoYW5kbGUgc3VicGl4ZWwgY29vcmRpbmF0ZXMuCj4g LQkJICogQWRqdXN0IHRvIChtYWNybylwaXhlbCBib3VuZGFyeSwgYnV0IGJlIGNhcmVmdWwgbm90 IHRvCj4gLQkJICogaW5jcmVhc2UgdGhlIHNvdXJjZSB2aWV3cG9ydCBzaXplLCBiZWNhdXNlIHRo YXQgY291bGQKPiAtCQkgKiBwdXNoIHRoZSBkb3duc2NhbGluZyBmYWN0b3Igb3V0IG9mIGJvdW5k cy4KPiAtCQkgKi8KPiAtCQlzcmNfeCA9IHNyYy0+eDEgPj4gMTY7Cj4gLQkJc3JjX3cgPSBkcm1f cmVjdF93aWR0aChzcmMpID4+IDE2Owo+IC0JCXNyY195ID0gc3JjLT55MSA+PiAxNjsKPiAtCQlz cmNfaCA9IGRybV9yZWN0X2hlaWdodChzcmMpID4+IDE2Owo+IC0KPiAtCQlpZiAoaW50ZWxfZm9y bWF0X2lzX3l1dihmYi0+Zm9ybWF0LT5mb3JtYXQpKSB7Cj4gLQkJCXNyY194ICY9IH4xOwo+IC0J CQlzcmNfdyAmPSB+MTsKPiAtCj4gLQkJCS8qCj4gLQkJCSAqIE11c3Qga2VlcCBzcmMgYW5kIGRz dCB0aGUKPiAtCQkJICogc2FtZSBpZiB3ZSBjYW4ndCBzY2FsZS4KPiAtCQkJICovCj4gLQkJCWlm ICghY2FuX3NjYWxlKQo+IC0JCQkJY3J0Y193ICY9IH4xOwo+IC0KPiAtCQkJaWYgKGNydGNfdyA9 PSAwKQo+IC0JCQkJc3RhdGUtPmJhc2UudmlzaWJsZSA9IGZhbHNlOwo+IC0JCX0KPiAtCX0KPiAt Cj4gLQkvKiBDaGVjayBzaXplIHJlc3RyaWN0aW9ucyB3aGVuIHNjYWxpbmcgKi8KPiAtCWlmIChz dGF0ZS0+YmFzZS52aXNpYmxlICYmIChzcmNfdyAhPSBjcnRjX3cgfHwgc3JjX2ggIT0gY3J0Y19o KSkgewo+IC0JCXVuc2lnbmVkIGludCB3aWR0aF9ieXRlczsKPiAtCQlpbnQgY3BwID0gZmItPmZv cm1hdC0+Y3BwWzBdOwo+IC0KPiAtCQlXQVJOX09OKCFjYW5fc2NhbGUpOwo+IC0KPiAtCQkvKiBG SVhNRSBpbnRlcmxhY2luZyBtaW4gaGVpZ2h0IGlzIDYgKi8KPiAtCj4gLQkJaWYgKGNydGNfdyA8 IDMgfHwgY3J0Y19oIDwgMykKPiAtCQkJc3RhdGUtPmJhc2UudmlzaWJsZSA9IGZhbHNlOwo+IC0K PiAtCQlpZiAoc3JjX3cgPCAzIHx8IHNyY19oIDwgMykKPiAtCQkJc3RhdGUtPmJhc2UudmlzaWJs ZSA9IGZhbHNlOwo+IC0KPiAtCQl3aWR0aF9ieXRlcyA9ICgoc3JjX3ggKiBjcHApICYgNjMpICsg c3JjX3cgKiBjcHA7Cj4gLQo+IC0JCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSAmJiAoc3Jj X3cgPiAyMDQ4IHx8IHNyY19oID4gMjA0OCB8fAo+IC0JCSAgICB3aWR0aF9ieXRlcyA+IDQwOTYg fHwgZmItPnBpdGNoZXNbMF0gPiA0MDk2KSkgewo+IC0JCQlEUk1fREVCVUdfS01TKCJTb3VyY2Ug ZGltZW5zaW9ucyBleGNlZWQgaGFyZHdhcmUgbGltaXRzXG4iKTsKPiAtCQkJcmV0dXJuIC1FSU5W QUw7Cj4gLQkJfQo+IC0JfQo+IC0KPiAtCWlmIChzdGF0ZS0+YmFzZS52aXNpYmxlKSB7Cj4gLQkJ c3JjLT54MSA9IHNyY194IDw8IDE2Owo+IC0JCXNyYy0+eDIgPSAoc3JjX3ggKyBzcmNfdykgPDwg MTY7Cj4gLQkJc3JjLT55MSA9IHNyY195IDw8IDE2Owo+IC0JCXNyYy0+eTIgPSAoc3JjX3kgKyBz cmNfaCkgPDwgMTY7Cj4gLQl9Cj4gLQo+IC0JZHN0LT54MSA9IGNydGNfeDsKPiAtCWRzdC0+eDIg PSBjcnRjX3ggKyBjcnRjX3c7Cj4gLQlkc3QtPnkxID0gY3J0Y195Owo+IC0JZHN0LT55MiA9IGNy dGNfeSArIGNydGNfaDsKPiArCXJldCA9IGludGVsX2NsaXBfc3JjX3JlY3QocGxhbmUsIGNydGNf c3RhdGUsIHN0YXRlKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAgCj4gIAlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7Cj4gIAkJcmV0ID0gc2tsX2NoZWNrX3BsYW5lX3N1 cmZhY2UoY3J0Y19zdGF0ZSwgc3RhdGUpOwo+IC0tIAo+IDIuMTcuMC45MjEuZ2YyMjY1OWFkNDYt Z29vZwo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK