From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC] drm/i915: Render decompression support for Gen9 and above Date: Mon, 7 Sep 2015 18:35:53 +0200 Message-ID: <20150907163553.GE32505@phenom.ffwll.local> References: <1441395770-31339-1-git-send-email-vandana.kannan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f171.google.com (mail-wi0-f171.google.com [209.85.212.171]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0F7DF6E6FF for ; Mon, 7 Sep 2015 09:33:12 -0700 (PDT) Received: by wiclk2 with SMTP id lk2so94083110wic.0 for ; Mon, 07 Sep 2015 09:33:10 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1441395770-31339-1-git-send-email-vandana.kannan@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Vandana Kannan Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gU2F0LCBTZXAgMDUsIDIwMTUgYXQgMDE6MTI6NTBBTSArMDUzMCwgVmFuZGFuYSBLYW5uYW4g d3JvdGU6Cj4gVGhpcyBwYXRjaCBpbmNsdWRlcyBlbmFibGluZyByZW5kZXIgZGVjb21wcmVzc2lv biBhZnRlciBjaGVja2luZyBhbGwgdGhlCj4gcmVxdWlyZW1lbnRzIChmb3JtYXQsIHRpbGluZywg cm90YXRpb24gZXRjLikuIEFsb25nIHdpdGggdGhpcywgdGhlIFdBcwo+IG1lbnRpb25lZCBpbiBC U3BlYyBXb3JrYXJvdW5kIHBhZ2UgaGF2ZSBiZWVuIGltcGxlbWVudGVkLgo+IAo+IFRoaXMgcGF0 Y2ggaGFzIGJlZW4gaW1wbGVtZW50ZWQgb24gdG9wIG9mIE5hYmVuZHUvQ2hhbmRyYSdzIE5WMTIg cGF0Y2hlcy4KPiAKPiBUT0RPOgo+IDEuIERpc2FibGUgc3RlcmVvIDNEIHdoZW4gcmVuZGVyIGRl Y29tcCBpcyBlbmFibGVkIChiaXQgNzo2KQo+IDIuIFJlbmRlciBkZWNvbXByZXNzaW9uIG11c3Qg bm90IGJlIHVzZWQgaW4gVlRkIHBhc3MtdGhyb3VnaCBtb2RlCj4gMy4gUHJvZ3JhbSBoYXNoaW5n IHNlbGVjdCBDSElDS0VOX01JU0MxIGJpdCAxNQo+IDQuIEZvciBHZW4xMCwgYWRkIHN1cHBvcnQg Zm9yIFJHQiAxMDEwMTAyCj4gCj4gU2lnbmVkLW9mZi1ieTogVmFuZGFuYSBLYW5uYW4gPHZhbmRh bmEua2FubmFuQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMu YyAgICAgICAgIHwgICA0ICsKPiAgZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMgICAgICAgICAg IHwgIDE2ICsrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTc0 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oICAgICB8ICAgNyArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9zcHJpdGUuYyAgfCAgMzUgKysrKysrKwo+ICBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAg ICAgICAgICAgfCAgMTEgKysrCj4gIDYgZmlsZXMgY2hhbmdlZCwgMjQ3IGluc2VydGlvbnMoKykK PiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWMuYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fYXRvbWljLmMKPiBpbmRleCA5NDBmODBiLi5kOTAwNGU4IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pYy5jCj4gQEAgLTYwNyw2ICs2MDcsOCBAQCBpbnQgZHJtX2F0b21pY19wbGFuZV9z ZXRfcHJvcGVydHkoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsCj4gIAkJc3RhdGUtPnNyY19oID0g dmFsOwo+ICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PSBjb25maWctPnJvdGF0aW9uX3Byb3BlcnR5 KSB7Cj4gIAkJc3RhdGUtPnJvdGF0aW9uID0gdmFsOwo+ICsJfSBlbHNlIGlmIChwcm9wZXJ0eSA9 PSBjb25maWctPmNvbXByZXNzaW9uX3Byb3BlcnR5KSB7Cj4gKwkJc3RhdGUtPmNvbXByZXNzaW9u ID0gdmFsOwoKUGxlYXNlIHVzZSBhIGZyYW1lYnVmZmVyIG1vZGlmaWVyIGluc3RlYWQuIEFsc28g dGhpcyBuZWVkcyB1c2Vyc3BhY2UuCi1EYW5pZWwKCj4gIAl9IGVsc2UgaWYgKHBsYW5lLT5mdW5j cy0+YXRvbWljX3NldF9wcm9wZXJ0eSkgewo+ICAJCXJldHVybiBwbGFuZS0+ZnVuY3MtPmF0b21p Y19zZXRfcHJvcGVydHkocGxhbmUsIHN0YXRlLAo+ICAJCQkJcHJvcGVydHksIHZhbCk7Cj4gQEAg LTY1NCw2ICs2NTYsOCBAQCBkcm1fYXRvbWljX3BsYW5lX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJt X3BsYW5lICpwbGFuZSwKPiAgCQkqdmFsID0gc3RhdGUtPnNyY19oOwo+ICAJfSBlbHNlIGlmIChw cm9wZXJ0eSA9PSBjb25maWctPnJvdGF0aW9uX3Byb3BlcnR5KSB7Cj4gIAkJKnZhbCA9IHN0YXRl LT5yb3RhdGlvbjsKPiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29uZmlnLT5jb21wcmVzc2lv bl9wcm9wZXJ0eSkgewo+ICsJCSp2YWwgPSBzdGF0ZS0+Y29tcHJlc3Npb247Cj4gIAl9IGVsc2Ug aWYgKHBsYW5lLT5mdW5jcy0+YXRvbWljX2dldF9wcm9wZXJ0eSkgewo+ICAJCXJldHVybiBwbGFu ZS0+ZnVuY3MtPmF0b21pY19nZXRfcHJvcGVydHkocGxhbmUsIHN0YXRlLCBwcm9wZXJ0eSwgdmFs KTsKPiAgCX0gZWxzZSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5j IGIvZHJpdmVycy9ncHUvZHJtL2RybV9jcnRjLmMKPiBpbmRleCA0NzRmMzI4Li42NmY4MTdiIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY3J0Yy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2RybV9jcnRjLmMKPiBAQCAtNTc3OCw2ICs1Nzc4LDIyIEBAIHN0cnVjdCBkcm1fcHJv cGVydHkgKmRybV9tb2RlX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX21vZGVfY3JlYXRlX3JvdGF0aW9uX3By b3BlcnR5KTsKPiAgCj4gK3N0cnVjdCBkcm1fcHJvcGVydHkgKmRybV9tb2RlX2NyZWF0ZV9jb21w cmVzc2lvbl9wcm9wZXJ0eSgKPiArCQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCXVuc2ln bmVkIGludCBjb21wX2NhcHMpCj4gK3sKPiArCXN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Byb3Bf ZW51bV9saXN0IHByb3BzW10gPSB7Cj4gKwkJeyBEUk1fQ09NUF9OT05FLCAgICJOb3QgY29tcHJl c3Npb24gY2FwYWJsZSIgfSwKPiArCQl7IERSTV9DT01QX1JFTkRFUiwgICJPbmx5IHJlbmRlciBk ZWNvbXByZXNzaW9uIiB9LAo+ICsJfTsKPiArCj4gKwlyZXR1cm4gZHJtX3Byb3BlcnR5X2NyZWF0 ZV9iaXRtYXNrKGRldiwgMCwgInJlbmRlciBjb21wcmVzc2lvbiIsCj4gKwkJCXByb3BzLCBBUlJB WV9TSVpFKHByb3BzKSwKPiArCQkJY29tcF9jYXBzKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRy bV9tb2RlX2NyZWF0ZV9jb21wcmVzc2lvbl9wcm9wZXJ0eSk7Cj4gKwo+ICsKPiAgLyoqCj4gICAq IERPQzogVGlsZSBncm91cAo+ICAgKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiBpbmRleCA1OWQ2NzM2Li4xMTU3MzZmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+IEBAIC0zMTIwLDggKzMxMjAsNDcgQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRh dGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gIAo+ICAJCQlocGhhc2Ug PSAweDAwMDEwMDAxOyAgLyogdXNlIHRyaXAgZm9yIGJvdGggWSBhbmQgVVYgKi8KPiAgCQkJdnBo YXNlID0gMHgwMDAxMjAwMDsgIC8qIHVzZSB0cmlwIGZvciBZIGFuZCBwaGFzZSAwLjUgZm9yIFVW ICovCj4gKwo+ICsJCQkvKgo+ICsJCQkgKiBPbiBTS0wtQyBhbmQgQlhULUEsCj4gKwkJCSAqIHdo ZW4gdGhlIHBsYW5lIHNvdXJjZSBwaXhlbCBmb3JtYXQgaXMgTlYxMiwKPiArCQkJICogdGhlIENI SUNLRU5fUElQRVNMXyogcmVnaXN0ZXIgYml0IDIyIG11c3QgYmUKPiArCQkJICogc2V0IHRvIDEK PiArCQkJICovCj4gKwkJCWlmIChJU19CUk9YVE9OKGRldikgfHwgKElTX1NLWUxBS0UoZGV2KSAm Jgo+ICsJCQkJCUlOVEVMX1JFVklEKGRldikgPT0gU0tMX1JFVklEX0MwKSkKPiArCQkJCUk5MTVf V1JJVEUoQ0hJQ0tFTl9QSVBFU0xfMShwaXBlKSwKPiArCQkJCQlJOTE1X1JFQUQoQ0hJQ0tFTl9Q SVBFU0xfMShwaXBlKSkgfAo+ICsJCQkJCUhTV19GQkNRX0RJUyk7Cj4gIAkJfQo+ICAJfQo+ICsK PiArCWlmIChwbGFuZS0+c3RhdGUtPmNvbXByZXNzaW9uKSB7Cj4gKwkJLyoKPiArCQkgKiBGSVhN RTogQ2hlY2sgaWYgYXV4X2Rpc3QgYWQgYXV4X3N0cmlkZSBjYW4gYmUgdGFrZW4gYXMgaXQKPiAr CQkgKiBpcyBmcm9tIHVzZXJzcGFjZS4KPiArCQkgKi8KPiArCQlhdXhfZGlzdCA9IGZiLT5vZmZz ZXRzWzFdOwo+ICsJCWF1eF9zdHJpZGUgPSBmYi0+cGl0Y2hlc1sxXTsKPiArCQkvKgo+ICsJCSAq IEZvciBTS0wgYW5kIEJYVCwKPiArCQkgKiBXaGVuIHRoZSByZW5kZXIgY29tcHJlc3Npb24gaXMg ZW5hYmxlZCB3aXRoIHBsYW5lCj4gKwkJICogd2lkdGggZ3JlYXRlciB0aGFuIDM4NDAgYW5kIGhv cml6b250YWwgcGFubmluZywKPiArCQkgKiB0aGUgc3RyaWRlIHByb2dyYW1tZWQgaW4gdGhlIFBM QU5FX1NUUklERSByZWdpc3Rlcgo+ICsJCSAqIG11c3QgYmUgbXVsdGlwbGUgb2YgNC4KPiArCQkg Ki8KPiArCQlpZiAoeCA+IDM4NDAgJiYgeF9vZmZzZXQgIT0gMCkKPiArCQkJc3RyaWRlID0gc3Ry aWRlIC0gKHN0cmlkZSAlIDQpOwo+ICsJCWlmIChJU19CUk9YVE9OKGRldikgfHwgKElTX1NLWUxB S0UoZGV2KSAmJgo+ICsJCQkJCUlOVEVMX1JFVklEKGRldikgPT0gU0tMX1JFVklEX0MwKSkKPiAr CQkJSTkxNV9XUklURShDSElDS0VOX1BJUEVTTF8xKHBpcGUpLAo+ICsJCQkJCUk5MTVfUkVBRChD SElDS0VOX1BJUEVTTF8xKHBpcGUpKSAmCj4gKwkJCQkJfkhTV19GQkNRX0RJUyk7Cj4gKwkJcGxh bmVfY3RsIHw9IFBMQU5FX0NUTF9ERUNPTVBSRVNTSU9OX0VOQUJMRTsKPiArCX0gZWxzZSB7Cj4g KwkJcGxhbmVfY3RsICY9IH5QTEFORV9DVExfREVDT01QUkVTU0lPTl9FTkFCTEU7Cj4gKwl9Cj4g Kwo+ICAJcGxhbmVfb2Zmc2V0ID0geV9vZmZzZXQgPDwgMTYgfCB4X29mZnNldDsKPiAgCj4gIAlJ OTE1X1dSSVRFKFBMQU5FX0NUTChwaXBlLCAwKSwgcGxhbmVfY3RsKTsKPiBAQCAtMTE3NjAsNiAr MTE3OTksMjkgQEAgaW50IGludGVsX3BsYW5lX2F0b21pY19jYWxjX2NoYW5nZXMoc3RydWN0IGRy bV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ICAJCSAgICBwbGFuZV9zdGF0ZS0+cm90YXRpb24g IT0gQklUKERSTV9ST1RBVEVfMCkpCj4gIAkJCWludGVsX2NydGMtPmF0b21pYy5kaXNhYmxlX2Zi YyA9IHRydWU7Cj4gIAo+ICsJCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7Cj4gKwkJ CWlmIChwbGFuZV9zdGF0ZS0+Y29tcHJlc3Npb24pIHsKPiArCQkJCXJldCA9IHNrbF9jaGVja19j b21wcmVzc2lvbihkZXYsCj4gKwkJCQkJdG9faW50ZWxfcGxhbmUocGxhbmUpLAo+ICsJCQkJCXRv X2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKSwKPiArCQkJCQlpbnRlbF9jcnRjLT5waXBl KTsKPiArCQkJCWlmIChyZXQpCj4gKwkJCQkJcmV0dXJuIHJldDsKPiArCQkJfQo+ICsJCX0KPiAr Cj4gKwkJLyoKPiArCQkgKiBEaXNhYmxlIEZCQyBpZiByZW5kZXIgZGVjb21wcmVzc2lvbiBoYXMg dG8gYmUgZW5hYmxlZC4KPiArCQkgKiBGSVhNRTogSWYgRkJDIGlzIGRpc2FibGVkIGhlcmUgYmVj YXVzZSByZW5kZXIgZGVjb21wCj4gKwkJICogaGFzIHRvIGJlIGVuYWJsZWQsIHRoZW4gaW4gdXBk YXRlX3ByaW1hcnlfcGxhbmUoKSwgaWYKPiArCQkgKiByZW5kZXIgZGVjb21wIGlzIGRpc2FibGVk IGZvciBzb21lIHJlYXNvbiwgd2UgbmVlZCB0bwo+ICsJCSAqIGVuYWJsZSBGQkMgPwo+ICsJCSAq Lwo+ICsJCWlmIChJU19TS1lMQUtFKGRldikgJiYgZGV2X3ByaXYtPmZiYy5jcnRjID09IGludGVs X2NydGMgJiYKPiArCQkJCXBsYW5lX3N0YXRlLT5jb21wcmVzc2lvbikgewo+ICsJCQlpbnRlbF9j cnRjLT5hdG9taWMuZGlzYWJsZV9mYmMgPSB0cnVlOwo+ICsJCX0KPiArCj4gIAkJLyoKPiAgCQkg KiBCRFcgc2lnbmFscyBmbGlwIGRvbmUgaW1tZWRpYXRlbHkgaWYgdGhlIHBsYW5lCj4gIAkJICog aXMgZGlzYWJsZWQsIGV2ZW4gaWYgdGhlIHBsYW5lIGVuYWJsZSBpcyBhbHJlYWR5Cj4gQEAgLTEx Nzc4LDYgKzExODQwLDE2IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0 cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiAgCQkJaW50ZWxfY3J0Yy0+YXRvbWlj LnVwZGF0ZV9zcHJpdGVfd2F0ZXJtYXJrcyB8PQo+ICAJCQkJMSA8PCBpOwo+ICAJCX0KPiArCQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgewo+ICsJCQlpZiAocGxhbmVfc3RhdGUtPmNv bXByZXNzaW9uKSB7Cj4gKwkJCQlyZXQgPSBza2xfY2hlY2tfY29tcHJlc3Npb24oZGV2LAo+ICsJ CQkJCXRvX2ludGVsX3BsYW5lKHBsYW5lKSwKPiArCQkJCQl0b19pbnRlbF9wbGFuZV9zdGF0ZShw bGFuZV9zdGF0ZSksCj4gKwkJCQkJaW50ZWxfY3J0Yy0+cGlwZSk7Cj4gKwkJCQlpZiAocmV0KQo+ ICsJCQkJCXJldHVybiByZXQ7Cj4gKwkJCX0KPiArCQl9Cj4gIAl9Cj4gIAlyZXR1cm4gMDsKPiAg fQo+IEBAIC0xMzQ5NSw2ICsxMzU2Nyw4OCBAQCBza2xfbWF4X3NjYWxlKHN0cnVjdCBpbnRlbF9j cnRjICppbnRlbF9jcnRjLAo+ICAJcmV0dXJuIG1heF9zY2FsZTsKPiAgfQo+ICAKPiAraW50IHNr bF9jaGVja19jb21wcmVzc2lvbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCXN0cnVjdCBp bnRlbF9wbGFuZSAqaW50ZWxfcGxhbmUsCj4gKwkJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpw bGFuZV9zdGF0ZSwKPiArCQllbnVtIHBpcGUgcGlwZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBkcm1fcmVj dCAqc3JjID0gJnBsYW5lX3N0YXRlLT5zcmM7Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YjsKPiArCWludCBpOwo+ICsKPiArCWZiID0gaW50ZWxfcGxhbmUgPyBwbGFuZV9zdGF0ZS0+YmFz ZS5mYiA6IE5VTEw7Cj4gKwo+ICsJLyoKPiArCSAqIFRPRE86Cj4gKwkgKiAxLiBEaXNhYmxlIHN0 ZXJlbyAzRCB3aGVuIHJlbmRlciBkZWNvbXAgaXMgZW5hYmxlZCAoYml0IDc6NikKPiArCSAqIDIu IFJlbmRlciBkZWNvbXByZXNzaW9uIG11c3Qgbm90IGJlIHVzZWQgaW4gVlRkIHBhc3MtdGhyb3Vn aCBtb2RlCj4gKwkgKiAzLiBQcm9ncmFtIGhhc2hpbmcgc2VsZWN0IENISUNLRU5fTUlTQzEgYml0 IDE1Cj4gKwkgKi8KPiArCj4gKwkvKgo+ICsJICogT24gU0tMIEEgYW5kIFNLTCBCLAo+ICsJICog RG8gbm90IGVuYWJsZSByZW5kZXIgZGVjb21wcmVzc2lvbiB3aGVuIHRoZSBwbGFuZQo+ICsJICog d2lkdGggaXMgc21hbGxlciB0aGFuIDMyIHBpeGVscyBvciBncmVhdGVyIHRoYW4KPiArCSAqIDIw NDggcGl4ZWxzCj4gKwkgKi8KPiArCWlmICgoSVNfU0tZTEFLRShkZXYpICYmIElOVEVMX1JFVklE KGRldikgPCBTS0xfUkVWSURfQzApCj4gKwkJCSYmICgoc3JjLT54MSA+PiAxNikgPiAyMDQ4KSkK PiArCQlwbGFuZV9zdGF0ZS0+YmFzZS5jb21wcmVzc2lvbiA9IERSTV9DT01QX05PTkU7Cj4gKwo+ ICsJaWYgKCFwbGFuZV9zdGF0ZS0+YmFzZS5jb21wcmVzc2lvbikKPiArCQlyZXR1cm4gLUVJTlZB TDsKPiArCj4gKwkvKgo+ICsJICogT24gU0tMOio6QyBhbmQgQlhUOio6QSwgdGhlcmUgaXMgYSBw b3NzaWJsZSBoYW5nIHdpdGggTlYxMiBmb3JtYXQuCj4gKwkgKiBXQTogV2hlbiB0aGUgcGxhbmUg c291cmNlIHBpeGVsIGZvcm1hdCBpcyBOVjEyLAo+ICsJICogdGhlIENISUNLRU5fUElQRVNMXyog cmVnaXN0ZXIgYml0IDIyIG11c3QgYmUgc2V0IHRvIDEgYW5kIHRoZQo+ICsJICogcmVuZGVyIGRl Y29tcHJlc3Npb24gbXVzdCBub3QgYmUgZW5hYmxlZCBvbiBhbnkgb2YgdGhlIHBsYW5lcyBpbgo+ ICsJICogdGhhdCBwaXBlLgo+ICsJICovCj4gKwlpZiAoSVNfQlJPWFRPTihkZXYpIHx8IChJU19T S1lMQUtFKGRldikgJiYKPiArCQkJCUlOVEVMX1JFVklEKGRldikgPT0gU0tMX1JFVklEX0MwKSkg ewo+ICsJCXN0cnVjdCBkcm1fcGxhbmUgKmRybV9wbGFuZTsKPiArCQlzdHJ1Y3QgZHJtX3BsYW5l X3N0YXRlICpzdGF0ZTsKPiArCj4gKwkJZm9yX2VhY2hfcGxhbmUoZGV2X3ByaXYsIHBpcGUsIGkp IHsKPiArCQkJZHJtX3BsYW5lID0gZHJtX3BsYW5lX2Zyb21faW5kZXgoZGV2LCBpKTsKPiArCQkJ aWYgKGRybV9wbGFuZSkgewo+ICsJCQkJc3RhdGUgPSBkcm1fcGxhbmUtPnN0YXRlOwo+ICsJCQkJ aWYgKHN0YXRlKSB7Cj4gKwkJCQkJaWYgKHN0YXRlLT5mYiAmJgo+ICsJCQkJCQkJc3RhdGUtPmZi LT5waXhlbF9mb3JtYXQKPiArCQkJCQkJCT09IERSTV9GT1JNQVRfTlYxMikgewo+ICsJCQkJCQlw bGFuZV9zdGF0ZS0+YmFzZS5jb21wcmVzc2lvbiA9Cj4gKwkJCQkJCQlEUk1fQ09NUF9OT05FOwo+ ICsJCQkJCX0KPiArCQkJCX0KPiArCQkJfQo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAoIXBsYW5l X3N0YXRlLT5iYXNlLmNvbXByZXNzaW9uKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCS8q Cj4gKwkgKiBDb25kaXRpb25zIHRvIHNhdGlzZnkgYmVmb3JlIGVuYWJsaW5nIHJlbmRlciBkZWNv bXAuCj4gKwkgKiBTS0wrCj4gKwkgKiBQaXBlIEEgJiBCLCBQbGFuZXMgMSAmIDIKPiArCSAqIFJH Qjg4ODggVGlsZS1ZIGZvcm1hdAo+ICsJICogMC8xODAgcm90YXRpb24KPiArCSAqLwo+ICsJaWYg KChwaXBlID09IFBJUEVfQykgfHwKPiArCQkJKChmYi0+cGl4ZWxfZm9ybWF0ICE9IERSTV9GT1JN QVRfWFJHQjg4ODgpICYmCj4gKwkJCSAoZmItPnBpeGVsX2Zvcm1hdCAhPSBEUk1fRk9STUFUX0FS R0I4ODg4KSkgfHwKPiArCQkJaW50ZWxfcm90YXRpb25fOTBfb3JfMjcwKHBsYW5lX3N0YXRlLT5i YXNlLnJvdGF0aW9uKSB8fAo+ICsJCQkoKGZiLT5tb2RpZmllclswXSA9PSBEUk1fRk9STUFUX01P RF9OT05FKSB8fAo+ICsJCQkgKGZiLT5tb2RpZmllclswXSA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9U SUxFRCkpKSB7Cj4gKwkJcGxhbmVfc3RhdGUtPmJhc2UuY29tcHJlc3Npb24gPSBEUk1fQ09NUF9O T05FOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4g IHN0YXRpYyBpbnQKPiAgaW50ZWxfY2hlY2tfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5l ICpwbGFuZSwKPiAgCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiBA QCAtMTM2NzAsMTEgKzEzODI0LDMxIEBAIHN0YXRpYyBzdHJ1Y3QgZHJtX3BsYW5lICppbnRlbF9w cmltYXJ5X3BsYW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuID49IDQpCj4gIAkJaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3BlcnR5 KGRldiwgcHJpbWFyeSk7Cj4gIAo+ICsJaW50ZWxfY3JlYXRlX2NvbXByZXNzaW9uX3Byb3BlcnR5 KGRldiwgcHJpbWFyeSk7Cj4gKwo+ICAJZHJtX3BsYW5lX2hlbHBlcl9hZGQoJnByaW1hcnktPmJh c2UsICZpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+ICAKPiAgCXJldHVybiAmcHJpbWFyeS0+ YmFzZTsKPiAgfQo+ICAKPiArdm9pZCBpbnRlbF9jcmVhdGVfY29tcHJlc3Npb25fcHJvcGVydHko c3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lKQo+ ICt7Cj4gKwkvKiBSZW5kZXIgY29tcHJlc3Npb24gaXMgYXBwbGljYWJsZSBvbmx5IGZvciBwbGFu ZSAxICYgMiAqLwo+ICsJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkgJiYgKHBsYW5lLT5w bGFuZSA8PSAxKSkgewo+ICsJCWlmICghZGV2LT5tb2RlX2NvbmZpZy5jb21wcmVzc2lvbl9wcm9w ZXJ0eSkKPiArCQkJZGV2LT5tb2RlX2NvbmZpZy5jb21wcmVzc2lvbl9wcm9wZXJ0eSA9Cj4gKwkJ CQlkcm1fbW9kZV9jcmVhdGVfY29tcHJlc3Npb25fcHJvcGVydHkoZGV2LAo+ICsJCQkJCQlCSVQo RFJNX0NPTVBfTk9ORSkgfAo+ICsJCQkJCQlCSVQoRFJNX0NPTVBfUkVOREVSKSk7Cj4gKwo+ICsJ CWlmIChkZXYtPm1vZGVfY29uZmlnLmNvbXByZXNzaW9uX3Byb3BlcnR5KQo+ICsJCQlkcm1fb2Jq ZWN0X2F0dGFjaF9wcm9wZXJ0eSgmcGxhbmUtPmJhc2UuYmFzZSwKPiArCQkJCQlkZXYtPm1vZGVf Y29uZmlnLmNvbXByZXNzaW9uX3Byb3BlcnR5LAo+ICsJCQkJCXBsYW5lLT5iYXNlLnN0YXRlLT5j b21wcmVzc2lvbik7Cj4gKwl9Cj4gK30KPiArCj4gIHZvaWQgaW50ZWxfY3JlYXRlX3JvdGF0aW9u X3Byb3BlcnR5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxh bmUpCj4gIHsKPiAgCWlmICghZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSkgewo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggNmNkNmNiMC4uYmFlMjJlYiAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTEwOTAsNiArMTA5MCwxMyBAQCBpbnRlbF9y b3RhdGlvbl85MF9vcl8yNzAodW5zaWduZWQgaW50IHJvdGF0aW9uKQo+ICB2b2lkIGludGVsX2Ny ZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCQkJCXN0 cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUpOwo+ICAKPiArdm9pZCBpbnRlbF9jcmVhdGVfY29tcHJl c3Npb25fcHJvcGVydHkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJCQlzdHJ1Y3QgaW50 ZWxfcGxhbmUgKnBsYW5lKTsKPiAraW50IHNrbF9jaGVja19jb21wcmVzc2lvbihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAo+ICsJCQlzdHJ1Y3QgaW50ZWxfcGxhbmUgKmludGVsX3BsYW5lLAo+ICsJ CQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlLAo+ICsJCQllbnVtIHBpcGUg cGlwZSk7Cj4gKwo+ICAvKiBzaGFyZWQgZHBsbCBmdW5jdGlvbnMgKi8KPiAgc3RydWN0IGludGVs X3NoYXJlZF9kcGxsICppbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjKTsKPiAgdm9pZCBhc3NlcnRfc2hhcmVkX2RwbGwoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9z cHJpdGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gaW5kZXggMmY5 Zjg1Ni4uYzZjZjRhZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9z cHJpdGUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5jCj4gQEAg LTI3NSw4ICsyNzUsNDEgQEAgc2tsX3VwZGF0ZV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpkcm1f cGxhbmUsIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiAgCj4gIAkJCWhwaGFzZSA9IDB4MDAwMTAw MDE7ICAvKiB1c2UgdHJpcCBmb3IgYm90aCBZIGFuZCBVViAqLwo+ICAJCQl2cGhhc2UgPSAweDAw MDEyMDAwOyAgLyogdXNlIHRyaXAgZm9yIFkgYW5kIHBoYXNlIDAuNSBmb3IgVVYgKi8KPiArCj4g KwkJCWlmIChJU19CUk9YVE9OKGRldikgfHwgKElTX1NLWUxBS0UoZGV2KSAmJgo+ICsJCQkJCUlO VEVMX1JFVklEKGRldikgPT0gU0tMX1JFVklEX0MwKSkKPiArCQkJCUk5MTVfV1JJVEUoQ0hJQ0tF Tl9QSVBFU0xfMShwaXBlKSwKPiArCQkJCQlJOTE1X1JFQUQoQ0hJQ0tFTl9QSVBFU0xfMShwaXBl KSkgfAo+ICsJCQkJCUhTV19GQkNRX0RJUyk7Cj4gIAkJfQo+ICAJfQo+ICsKPiArCWlmIChkcm1f cGxhbmUtPnN0YXRlLT5jb21wcmVzc2lvbikgewo+ICsJCS8qCj4gKwkJICogRklYTUU6IENoZWNr IGlmIGF1eF9kaXN0IGFkIGF1eF9zdHJpZGUgY2FuIGJlIHRha2VuIGFzIGl0Cj4gKwkJICogaXMg ZnJvbSB1c2Vyc3BhY2UuCj4gKwkJICovCj4gKwkJYXV4X2Rpc3QgPSBmYi0+b2Zmc2V0c1sxXTsK PiArCQlhdXhfc3RyaWRlID0gZmItPnBpdGNoZXNbMV07Cj4gKwkJLyoKPiArCQkgKiBGb3IgU0tM IGFuZCBCWFQsCj4gKwkJICogV2hlbiB0aGUgcmVuZGVyIGNvbXByZXNzaW9uIGlzIGVuYWJsZWQg d2l0aCBwbGFuZQo+ICsJCSAqIHdpZHRoIGdyZWF0ZXIgdGhhbiAzODQwIGFuZCBob3Jpem9udGFs IHBhbm5pbmcsCj4gKwkJICogdGhlIHN0cmlkZSBwcm9ncmFtbWVkIGluIHRoZSBQTEFORV9TVFJJ REUgcmVnaXN0ZXIKPiArCQkgKiBtdXN0IGJlIG11bHRpcGxlIG9mIDQuCj4gKwkJICovCj4gKwkJ aWYgKHggPiAzODQwICYmIHhfb2Zmc2V0ICE9IDApCj4gKwkJCXN0cmlkZSA9IHN0cmlkZSAtIChz dHJpZGUgJSA0KTsKPiArCQlpZiAoSVNfQlJPWFRPTihkZXYpIHx8IChJU19TS1lMQUtFKGRldikg JiYKPiArCQkJCQlJTlRFTF9SRVZJRChkZXYpID09IFNLTF9SRVZJRF9DMCkpCj4gKwkJCUk5MTVf V1JJVEUoQ0hJQ0tFTl9QSVBFU0xfMShwaXBlKSwKPiArCQkJCQlJOTE1X1JFQUQoQ0hJQ0tFTl9Q SVBFU0xfMShwaXBlKSkgJgo+ICsJCQkJCX5IU1dfRkJDUV9ESVMpOwo+ICsJCXBsYW5lX2N0bCB8 PSBQTEFORV9DVExfREVDT01QUkVTU0lPTl9FTkFCTEU7Cj4gKwl9IGVsc2Ugewo+ICsJCXBsYW5l X2N0bCAmPSB+UExBTkVfQ1RMX0RFQ09NUFJFU1NJT05fRU5BQkxFOwo+ICsJfQo+ICsKPiAgCXBs YW5lX29mZnNldCA9IHlfb2Zmc2V0IDw8IDE2IHwgeF9vZmZzZXQ7Cj4gIAo+ICAJSTkxNV9XUklU RShQTEFORV9PRkZTRVQocGlwZSwgcGxhbmUpLCBwbGFuZV9vZmZzZXQpOwo+IEBAIC0xMjE3LDYg KzEyNTAsOCBAQCBpbnRlbF9wbGFuZV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0g cGlwZSBwaXBlLCBpbnQgcGxhbmUpCj4gIAo+ICAJaW50ZWxfY3JlYXRlX3JvdGF0aW9uX3Byb3Bl cnR5KGRldiwgaW50ZWxfcGxhbmUpOwo+ICAKPiArCWludGVsX2NyZWF0ZV9jb21wcmVzc2lvbl9w cm9wZXJ0eShkZXYsIGludGVsX3BsYW5lKTsKPiArCj4gIAlkcm1fcGxhbmVfaGVscGVyX2FkZCgm aW50ZWxfcGxhbmUtPmJhc2UsICZpbnRlbF9wbGFuZV9oZWxwZXJfZnVuY3MpOwo+ICAKPiAgb3V0 Ogo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oIGIvaW5jbHVkZS9kcm0vZHJt X2NydGMuaAo+IGluZGV4IDc1ZjQ5YzEuLjAyYTlhYWEgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9k cm0vZHJtX2NydGMuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKPiBAQCAtOTMsNiAr OTMsMTAgQEAgc3RhdGljIGlubGluZSB1aW50NjRfdCBJNjQyVTY0KGludDY0X3QgdmFsKQo+ICAj ZGVmaW5lIERSTV9SRUZMRUNUX1gJNAo+ICAjZGVmaW5lIERSTV9SRUZMRUNUX1kJNQo+ICAKPiAr LyogcmVuZGVyIGNvbXByZXNzaW9uIHByb3BlcnR5IGJpdHMgKi8KPiArI2RlZmluZSBEUk1fQ09N UF9OT05FCQkwCj4gKyNkZWZpbmUgRFJNX0NPTVBfUkVOREVSCQkxCj4gKwo+ICBlbnVtIGRybV9j b25uZWN0b3JfZm9yY2Ugewo+ICAJRFJNX0ZPUkNFX1VOU1BFQ0lGSUVELAo+ICAJRFJNX0ZPUkNF X09GRiwKPiBAQCAtNzgzLDYgKzc4Nyw5IEBAIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgewo+ICAJ LyogUGxhbmUgcm90YXRpb24gKi8KPiAgCXVuc2lnbmVkIGludCByb3RhdGlvbjsKPiAgCj4gKwkv KiBSZW5kZXIgY29tcHJlc3Npb24gKi8KPiArCXVuc2lnbmVkIGludCBjb21wcmVzc2lvbjsKPiAr Cj4gIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gIH07Cj4gIAo+IEBAIC0xMTE0 LDYgKzExMjEsNyBAQCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnIHsKPiAgCXN0cnVjdCBkcm1fcHJv cGVydHkgKnRpbGVfcHJvcGVydHk7Cj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwbGFuZV90eXBl X3Byb3BlcnR5Owo+ICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqcm90YXRpb25fcHJvcGVydHk7Cj4g KwlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpjb21wcmVzc2lvbl9wcm9wZXJ0eTsKPiAgCXN0cnVjdCBk cm1fcHJvcGVydHkgKnByb3Bfc3JjX3g7Cj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpwcm9wX3Ny Y195Owo+ICAJc3RydWN0IGRybV9wcm9wZXJ0eSAqcHJvcF9zcmNfdzsKPiBAQCAtMTUwNyw2ICsx NTE1LDkgQEAgZXh0ZXJuIGludCBkcm1fZm9ybWF0X3ZlcnRfY2hyb21hX3N1YnNhbXBsaW5nKHVp bnQzMl90IGZvcm1hdCk7Cj4gIGV4dGVybiBjb25zdCBjaGFyICpkcm1fZ2V0X2Zvcm1hdF9uYW1l KHVpbnQzMl90IGZvcm1hdCk7Cj4gIGV4dGVybiBzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpkcm1fbW9k ZV9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkJ CQkJCSAgICAgIHVuc2lnbmVkIGludCBzdXBwb3J0ZWRfcm90YXRpb25zKTsKPiArZXh0ZXJuIHN0 cnVjdCBkcm1fcHJvcGVydHkgKmRybV9tb2RlX2NyZWF0ZV9jb21wcmVzc2lvbl9wcm9wZXJ0eSgK PiArCQkJCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gKwkJCQl1bnNpZ25lZCBpbnQgY29tcF9j YXBzKTsKPiAgZXh0ZXJuIHVuc2lnbmVkIGludCBkcm1fcm90YXRpb25fc2ltcGxpZnkodW5zaWdu ZWQgaW50IHJvdGF0aW9uLAo+ICAJCQkJCSAgdW5zaWduZWQgaW50IHN1cHBvcnRlZF9yb3RhdGlv bnMpOwo+ICAKPiAtLSAKPiAxLjkuMQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVl ciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK