From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jordan Crouse Subject: [PATCH v2 1/3] drm/msm/gpu: Move zap shader loading to adreno Date: Fri, 19 Apr 2019 13:46:14 -0600 Message-ID: <1555703176-5499-2-git-send-email-jcrouse@codeaurora.org> References: <1555703176-5499-1-git-send-email-jcrouse@codeaurora.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1555703176-5499-1-git-send-email-jcrouse@codeaurora.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: freedreno@lists.freedesktop.org Cc: Douglas Anderson , Kees Cook , Jonathan Marek , David Airlie , linux-arm-msm@vger.kernel.org, Sharat Masetty , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Bjorn Andersson , Mamta Shukla , Thomas Zimmermann , Sean Paul , Wen Yang List-Id: dri-devel@lists.freedesktop.org YTV4eCBhbmQgYTZ4eCBib3RoIHNoYXJlIChtb3N0bHkpIHRoZSBzYW1lIGNvZGUgdG8gbG9hZCB0 aGUgemFwIHNoYWRlciBhbmQKYnJpbmcgdGhlIEdQVSBvdXQgb2Ygc2VjdXJlIG1vZGUuIE1vdmUg dGhlIGZvcm1lcmx5IDV4eCBzcGVjaWZpYyBjb2RlIHRvCmFkcmVubyB0byBtYWtlIGl0IGF2YWls YWJsZSBmb3IgYTZ4eCB0b28uCgpTaWduZWQtb2ZmLWJ5OiBKb3JkYW4gQ3JvdXNlIDxqY3JvdXNl QGNvZGVhdXJvcmEub3JnPgotLS0KCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dw dS5jICAgfCAxMTEgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9t c20vYWRyZW5vL2FkcmVub19ncHUuYyB8IDEzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwogZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oIHwgICA2ICsrCiAz IGZpbGVzIGNoYW5nZWQsIDE0MiBpbnNlcnRpb25zKCspLCAxMTAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUuYyBiL2RyaXZlcnMv Z3B1L2RybS9tc20vYWRyZW5vL2E1eHhfZ3B1LmMKaW5kZXggMjcwZGExNC4uZTVmY2VmYSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYTV4eF9ncHUuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hNXh4X2dwdS5jCkBAIC0xNSw5ICsxNSw2IEBACiAjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9jcHVtYXNrLmg+CiAjaW5jbHVk ZSA8bGludXgvcWNvbV9zY20uaD4KLSNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPgotI2lu Y2x1ZGUgPGxpbnV4L29mX2FkZHJlc3MuaD4KLSNpbmNsdWRlIDxsaW51eC9zb2MvcWNvbS9tZHRf bG9hZGVyLmg+CiAjaW5jbHVkZSA8bGludXgvcG1fb3BwLmg+CiAjaW5jbHVkZSA8bGludXgvbnZt ZW0tY29uc3VtZXIuaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CkBAIC0zMCw5NiArMjcsNiBA QCBzdGF0aWMgdm9pZCBhNXh4X2R1bXAoc3RydWN0IG1zbV9ncHUgKmdwdSk7CiAKICNkZWZpbmUg R1BVX1BBU19JRCAxMwogCi1zdGF0aWMgaW50IHphcF9zaGFkZXJfbG9hZF9tZHQoc3RydWN0IG1z bV9ncHUgKmdwdSwgY29uc3QgY2hhciAqZnduYW1lKQotewotCXN0cnVjdCBkZXZpY2UgKmRldiA9 ICZncHUtPnBkZXYtPmRldjsKLQljb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3OwotCXN0cnVjdCBk ZXZpY2Vfbm9kZSAqbnAsICptZW1fbnA7Ci0Jc3RydWN0IHJlc291cmNlIHI7Ci0JcGh5c19hZGRy X3QgbWVtX3BoeXM7Ci0Jc3NpemVfdCBtZW1fc2l6ZTsKLQl2b2lkICptZW1fcmVnaW9uID0gTlVM TDsKLQlpbnQgcmV0OwotCi0JaWYgKCFJU19FTkFCTEVEKENPTkZJR19BUkNIX1FDT00pKQotCQly ZXR1cm4gLUVJTlZBTDsKLQotCW5wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUoZGV2LT5vZl9ub2Rl LCAiemFwLXNoYWRlciIpOwotCWlmICghbnApCi0JCXJldHVybiAtRU5PREVWOwotCi0JbWVtX25w ID0gb2ZfcGFyc2VfcGhhbmRsZShucCwgIm1lbW9yeS1yZWdpb24iLCAwKTsKLQlvZl9ub2RlX3B1 dChucCk7Ci0JaWYgKCFtZW1fbnApCi0JCXJldHVybiAtRUlOVkFMOwotCi0JcmV0ID0gb2ZfYWRk cmVzc190b19yZXNvdXJjZShtZW1fbnAsIDAsICZyKTsKLQlvZl9ub2RlX3B1dChtZW1fbnApOwot CWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQltZW1fcGh5cyA9IHIuc3RhcnQ7Ci0JbWVtX3Np emUgPSByZXNvdXJjZV9zaXplKCZyKTsKLQotCS8qIFJlcXVlc3QgdGhlIE1EVCBmaWxlIGZvciB0 aGUgZmlybXdhcmUgKi8KLQlmdyA9IGFkcmVub19yZXF1ZXN0X2Z3KHRvX2FkcmVub19ncHUoZ3B1 KSwgZnduYW1lKTsKLQlpZiAoSVNfRVJSKGZ3KSkgewotCQlEUk1fREVWX0VSUk9SKGRldiwgIlVu YWJsZSB0byBsb2FkICVzXG4iLCBmd25hbWUpOwotCQlyZXR1cm4gUFRSX0VSUihmdyk7Ci0JfQot Ci0JLyogRmlndXJlIG91dCBob3cgbXVjaCBtZW1vcnkgd2UgbmVlZCAqLwotCW1lbV9zaXplID0g cWNvbV9tZHRfZ2V0X3NpemUoZncpOwotCWlmIChtZW1fc2l6ZSA8IDApIHsKLQkJcmV0ID0gbWVt X3NpemU7Ci0JCWdvdG8gb3V0OwotCX0KLQotCS8qIEFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGZp cm13YXJlIGltYWdlICovCi0JbWVtX3JlZ2lvbiA9IG1lbXJlbWFwKG1lbV9waHlzLCBtZW1fc2l6 ZSwgIE1FTVJFTUFQX1dDKTsKLQlpZiAoIW1lbV9yZWdpb24pIHsKLQkJcmV0ID0gLUVOT01FTTsK LQkJZ290byBvdXQ7Ci0JfQotCi0JLyoKLQkgKiBMb2FkIHRoZSByZXN0IG9mIHRoZSBNRFQKLQkg KgotCSAqIE5vdGUgdGhhdCB3ZSBjb3VsZCBiZSBkZWFsaW5nIHdpdGggdHdvIGRpZmZlcmVudCBw YXRocywgc2luY2UKLQkgKiB3aXRoIHVwc3RyZWFtIGxpbnV4LWZpcm13YXJlIGl0IHdvdWxkIGJl IGluIGEgcWNvbS8gc3ViZGlyLi4KLQkgKiBhZHJlbm9fcmVxdWVzdF9mdygpIGhhbmRsZXMgdGhp cywgYnV0IHFjb21fbWR0X2xvYWQoKSBkb2VzCi0JICogbm90LiAgQnV0IHNpbmNlIHdlJ3ZlIGFs cmVhZHkgZ290dGVuIHRocnUgYWRyZW5vX3JlcXVlc3RfZncoKQotCSAqIHdlIGtub3cgd2hpY2gg b2YgdGhlIHR3byBjYXNlcyBpdCBpczoKLQkgKi8KLQlpZiAodG9fYWRyZW5vX2dwdShncHUpLT5m d2xvYyA9PSBGV19MT0NBVElPTl9MRUdBQ1kpIHsKLQkJcmV0ID0gcWNvbV9tZHRfbG9hZChkZXYs IGZ3LCBmd25hbWUsIEdQVV9QQVNfSUQsCi0JCQkJbWVtX3JlZ2lvbiwgbWVtX3BoeXMsIG1lbV9z aXplLCBOVUxMKTsKLQl9IGVsc2UgewotCQljaGFyICpuZXduYW1lOwotCi0JCW5ld25hbWUgPSBr YXNwcmludGYoR0ZQX0tFUk5FTCwgInFjb20vJXMiLCBmd25hbWUpOwotCi0JCXJldCA9IHFjb21f bWR0X2xvYWQoZGV2LCBmdywgbmV3bmFtZSwgR1BVX1BBU19JRCwKLQkJCQltZW1fcmVnaW9uLCBt ZW1fcGh5cywgbWVtX3NpemUsIE5VTEwpOwotCQlrZnJlZShuZXduYW1lKTsKLQl9Ci0JaWYgKHJl dCkKLQkJZ290byBvdXQ7Ci0KLQkvKiBTZW5kIHRoZSBpbWFnZSB0byB0aGUgc2VjdXJlIHdvcmxk ICovCi0JcmV0ID0gcWNvbV9zY21fcGFzX2F1dGhfYW5kX3Jlc2V0KEdQVV9QQVNfSUQpOwotCWlm IChyZXQpCi0JCURSTV9ERVZfRVJST1IoZGV2LCAiVW5hYmxlIHRvIGF1dGhvcml6ZSB0aGUgaW1h Z2VcbiIpOwotCi1vdXQ6Ci0JaWYgKG1lbV9yZWdpb24pCi0JCW1lbXVubWFwKG1lbV9yZWdpb24p OwotCi0JcmVsZWFzZV9maXJtd2FyZShmdyk7Ci0KLQlyZXR1cm4gcmV0OwotfQotCiBzdGF0aWMg dm9pZCBhNXh4X2ZsdXNoKHN0cnVjdCBtc21fZ3B1ICpncHUsIHN0cnVjdCBtc21fcmluZ2J1ZmZl ciAqcmluZykKIHsKIAlzdHJ1Y3QgYWRyZW5vX2dwdSAqYWRyZW5vX2dwdSA9IHRvX2FkcmVub19n cHUoZ3B1KTsKQEAgLTU2NSw4ICs0NzIsNiBAQCBzdGF0aWMgaW50IGE1eHhfemFwX3NoYWRlcl9y ZXN1bWUoc3RydWN0IG1zbV9ncHUgKmdwdSkKIHN0YXRpYyBpbnQgYTV4eF96YXBfc2hhZGVyX2lu aXQoc3RydWN0IG1zbV9ncHUgKmdwdSkKIHsKIAlzdGF0aWMgYm9vbCBsb2FkZWQ7Ci0Jc3RydWN0 IGFkcmVub19ncHUgKmFkcmVub19ncHUgPSB0b19hZHJlbm9fZ3B1KGdwdSk7Ci0Jc3RydWN0IHBs YXRmb3JtX2RldmljZSAqcGRldiA9IGdwdS0+cGRldjsKIAlpbnQgcmV0OwogCiAJLyoKQEAgLTU3 NiwyMyArNDgxLDkgQEAgc3RhdGljIGludCBhNXh4X3phcF9zaGFkZXJfaW5pdChzdHJ1Y3QgbXNt X2dwdSAqZ3B1KQogCWlmIChsb2FkZWQpCiAJCXJldHVybiBhNXh4X3phcF9zaGFkZXJfcmVzdW1l KGdwdSk7CiAKLQkvKiBXZSBuZWVkIFNDTSB0byBiZSBhYmxlIHRvIGxvYWQgdGhlIGZpcm13YXJl ICovCi0JaWYgKCFxY29tX3NjbV9pc19hdmFpbGFibGUoKSkgewotCQlEUk1fREVWX0VSUk9SKCZw ZGV2LT5kZXYsICJTQ00gaXMgbm90IGF2YWlsYWJsZVxuIik7Ci0JCXJldHVybiAtRVBST0JFX0RF RkVSOwotCX0KLQotCS8qIEVhY2ggR1BVIGhhcyBhIHRhcmdldCBzcGVjaWZpYyB6YXAgc2hhZGVy IGZpcm13YXJlIG5hbWUgdG8gdXNlICovCi0JaWYgKCFhZHJlbm9fZ3B1LT5pbmZvLT56YXBmdykg ewotCQlEUk1fREVWX0VSUk9SKCZwZGV2LT5kZXYsCi0JCQkiWmFwIHNoYWRlciBmaXJtd2FyZSBm aWxlIG5vdCBzcGVjaWZpZWQgZm9yIHRoaXMgdGFyZ2V0XG4iKTsKLQkJcmV0dXJuIC1FTk9ERVY7 Ci0JfQotCi0JcmV0ID0gemFwX3NoYWRlcl9sb2FkX21kdChncHUsIGFkcmVub19ncHUtPmluZm8t PnphcGZ3KTsKKwlyZXQgPSBhZHJlbm9femFwX3NoYWRlcl9sb2FkKGdwdSwgR1BVX1BBU19JRCk7 CiAKIAlsb2FkZWQgPSAhcmV0OwotCiAJcmV0dXJuIHJldDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jIGIvZHJpdmVycy9ncHUvZHJtL21z bS9hZHJlbm8vYWRyZW5vX2dwdS5jCmluZGV4IDZkZTA4Y2YuLjZmN2Y0MTE0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5jCkBAIC0xOSwxMyArMTksMTQ4IEBACiAKICNp bmNsdWRlIDxsaW51eC9hc2NpaTg1Lmg+CiAjaW5jbHVkZSA8bGludXgvaW50ZXJjb25uZWN0Lmg+ CisjaW5jbHVkZSA8bGludXgvcWNvbV9zY20uaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4K KyNpbmNsdWRlIDxsaW51eC9vZl9hZGRyZXNzLmg+CiAjaW5jbHVkZSA8bGludXgvcG1fb3BwLmg+ CiAjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L3NvYy9xY29tL21kdF9s b2FkZXIuaD4KICNpbmNsdWRlICJhZHJlbm9fZ3B1LmgiCiAjaW5jbHVkZSAibXNtX2dlbS5oIgog I2luY2x1ZGUgIm1zbV9tbXUuaCIKIAorc3RhdGljIGJvb2wgemFwX2F2YWlsYWJsZSA9IHRydWU7 CisKK3N0YXRpYyBpbnQgemFwX3NoYWRlcl9sb2FkX21kdChzdHJ1Y3QgbXNtX2dwdSAqZ3B1LCBj b25zdCBjaGFyICpmd25hbWUsCisJCXUzMiBwYXNpZCkKK3sKKwlzdHJ1Y3QgZGV2aWNlICpkZXYg PSAmZ3B1LT5wZGV2LT5kZXY7CisJY29uc3Qgc3RydWN0IGZpcm13YXJlICpmdzsKKwlzdHJ1Y3Qg ZGV2aWNlX25vZGUgKm5wLCAqbWVtX25wOworCXN0cnVjdCByZXNvdXJjZSByOworCXBoeXNfYWRk cl90IG1lbV9waHlzOworCXNzaXplX3QgbWVtX3NpemU7CisJdm9pZCAqbWVtX3JlZ2lvbiA9IE5V TEw7CisJaW50IHJldDsKKworCWlmICghSVNfRU5BQkxFRChDT05GSUdfQVJDSF9RQ09NKSkgewor CQl6YXBfYXZhaWxhYmxlID0gZmFsc2U7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCW5wID0g b2ZfZ2V0X2NoaWxkX2J5X25hbWUoZGV2LT5vZl9ub2RlLCAiemFwLXNoYWRlciIpOworCWlmICgh bnApIHsKKwkJemFwX2F2YWlsYWJsZSA9IGZhbHNlOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisK KwltZW1fbnAgPSBvZl9wYXJzZV9waGFuZGxlKG5wLCAibWVtb3J5LXJlZ2lvbiIsIDApOworCW9m X25vZGVfcHV0KG5wKTsKKwlpZiAoIW1lbV9ucCkgeworCQl6YXBfYXZhaWxhYmxlID0gZmFsc2U7 CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldCA9IG9mX2FkZHJlc3NfdG9fcmVzb3VyY2Uo bWVtX25wLCAwLCAmcik7CisJb2Zfbm9kZV9wdXQobWVtX25wKTsKKwlpZiAocmV0KQorCQlyZXR1 cm4gcmV0OworCisJbWVtX3BoeXMgPSByLnN0YXJ0OworCW1lbV9zaXplID0gcmVzb3VyY2Vfc2l6 ZSgmcik7CisKKwkvKiBSZXF1ZXN0IHRoZSBNRFQgZmlsZSBmb3IgdGhlIGZpcm13YXJlICovCisJ ZncgPSBhZHJlbm9fcmVxdWVzdF9mdyh0b19hZHJlbm9fZ3B1KGdwdSksIGZ3bmFtZSk7CisJaWYg KElTX0VSUihmdykpIHsKKwkJRFJNX0RFVl9FUlJPUihkZXYsICJVbmFibGUgdG8gbG9hZCAlc1xu IiwgZnduYW1lKTsKKwkJcmV0dXJuIFBUUl9FUlIoZncpOworCX0KKworCS8qIEZpZ3VyZSBvdXQg aG93IG11Y2ggbWVtb3J5IHdlIG5lZWQgKi8KKwltZW1fc2l6ZSA9IHFjb21fbWR0X2dldF9zaXpl KGZ3KTsKKwlpZiAobWVtX3NpemUgPCAwKSB7CisJCXJldCA9IG1lbV9zaXplOworCQlnb3RvIG91 dDsKKwl9CisKKwkvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBmaXJtd2FyZSBpbWFnZSAqLwor CW1lbV9yZWdpb24gPSBtZW1yZW1hcChtZW1fcGh5cywgbWVtX3NpemUsICBNRU1SRU1BUF9XQyk7 CisJaWYgKCFtZW1fcmVnaW9uKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gb3V0OworCX0K KworCS8qCisJICogTG9hZCB0aGUgcmVzdCBvZiB0aGUgTURUCisJICoKKwkgKiBOb3RlIHRoYXQg d2UgY291bGQgYmUgZGVhbGluZyB3aXRoIHR3byBkaWZmZXJlbnQgcGF0aHMsIHNpbmNlCisJICog d2l0aCB1cHN0cmVhbSBsaW51eC1maXJtd2FyZSBpdCB3b3VsZCBiZSBpbiBhIHFjb20vIHN1YmRp ci4uCisJICogYWRyZW5vX3JlcXVlc3RfZncoKSBoYW5kbGVzIHRoaXMsIGJ1dCBxY29tX21kdF9s b2FkKCkgZG9lcworCSAqIG5vdC4gIEJ1dCBzaW5jZSB3ZSd2ZSBhbHJlYWR5IGdvdHRlbiB0aHJv dWdoIGFkcmVub19yZXF1ZXN0X2Z3KCkKKwkgKiB3ZSBrbm93IHdoaWNoIG9mIHRoZSB0d28gY2Fz ZXMgaXQgaXM6CisJICovCisJaWYgKHRvX2FkcmVub19ncHUoZ3B1KS0+Zndsb2MgPT0gRldfTE9D QVRJT05fTEVHQUNZKSB7CisJCXJldCA9IHFjb21fbWR0X2xvYWQoZGV2LCBmdywgZnduYW1lLCBw YXNpZCwKKwkJCQltZW1fcmVnaW9uLCBtZW1fcGh5cywgbWVtX3NpemUsIE5VTEwpOworCX0gZWxz ZSB7CisJCWNoYXIgKm5ld25hbWU7CisKKwkJbmV3bmFtZSA9IGthc3ByaW50ZihHRlBfS0VSTkVM LCAicWNvbS8lcyIsIGZ3bmFtZSk7CisKKwkJcmV0ID0gcWNvbV9tZHRfbG9hZChkZXYsIGZ3LCBu ZXduYW1lLCBwYXNpZCwKKwkJCQltZW1fcmVnaW9uLCBtZW1fcGh5cywgbWVtX3NpemUsIE5VTEwp OworCQlrZnJlZShuZXduYW1lKTsKKwl9CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CisKKwkvKiBT ZW5kIHRoZSBpbWFnZSB0byB0aGUgc2VjdXJlIHdvcmxkICovCisJcmV0ID0gcWNvbV9zY21fcGFz X2F1dGhfYW5kX3Jlc2V0KHBhc2lkKTsKKworCS8qCisJICogSWYgdGhlIHNjbSBjYWxsIHJldHVy bnMgLUVPUE5PVFNVUFAgd2UgYXNzdW1lIHRoYXQgdGhpcyB0YXJnZXQKKwkgKiBkb2Vzbid0IG5l ZWQvc3VwcG9ydCB0aGUgemFwIHNoYWRlciBzbyBxdWlldGx5IGZhaWwKKwkgKi8KKwlpZiAocmV0 ID09IC1FT1BOT1RTVVBQKQorCQl6YXBfYXZhaWxhYmxlID0gZmFsc2U7CisJZWxzZSBpZiAocmV0 KQorCQlEUk1fREVWX0VSUk9SKGRldiwgIlVuYWJsZSB0byBhdXRob3JpemUgdGhlIGltYWdlXG4i KTsKKworb3V0OgorCWlmIChtZW1fcmVnaW9uKQorCQltZW11bm1hcChtZW1fcmVnaW9uKTsKKwor CXJlbGVhc2VfZmlybXdhcmUoZncpOworCisJcmV0dXJuIHJldDsKK30KKworaW50IGFkcmVub196 YXBfc2hhZGVyX2xvYWQoc3RydWN0IG1zbV9ncHUgKmdwdSwgdTMyIHBhc2lkKQoreworCXN0cnVj dCBhZHJlbm9fZ3B1ICphZHJlbm9fZ3B1ID0gdG9fYWRyZW5vX2dwdShncHUpOworCXN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYgPSBncHUtPnBkZXY7CisKKwkvKiBTaG9ydCBjdXQgaWYgd2Ug ZGV0ZXJtaW5lIHRoZSB6YXAgc2hhZGVyIGlzbid0IGF2YWlsYWJsZS9uZWVkZWQgKi8KKwlpZiAo IXphcF9hdmFpbGFibGUpCisJCXJldHVybiAtRU5PREVWOworCisJLyogV2UgbmVlZCBTQ00gdG8g YmUgYWJsZSB0byBsb2FkIHRoZSBmaXJtd2FyZSAqLworCWlmICghcWNvbV9zY21faXNfYXZhaWxh YmxlKCkpIHsKKwkJRFJNX0RFVl9FUlJPUigmcGRldi0+ZGV2LCAiU0NNIGlzIG5vdCBhdmFpbGFi bGVcbiIpOworCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsKKwl9CisKKwkvKiBFYWNoIEdQVSBoYXMg YSB0YXJnZXQgc3BlY2lmaWMgemFwIHNoYWRlciBmaXJtd2FyZSBuYW1lIHRvIHVzZSAqLworCWlm ICghYWRyZW5vX2dwdS0+aW5mby0+emFwZncpIHsKKwkJemFwX2F2YWlsYWJsZSA9IGZhbHNlOwor CQlEUk1fREVWX0VSUk9SKCZwZGV2LT5kZXYsCisJCQkiWmFwIHNoYWRlciBmaXJtd2FyZSBmaWxl IG5vdCBzcGVjaWZpZWQgZm9yIHRoaXMgdGFyZ2V0XG4iKTsKKwkJcmV0dXJuIC1FTk9ERVY7CisJ fQorCisJcmV0dXJuIHphcF9zaGFkZXJfbG9hZF9tZHQoZ3B1LCBhZHJlbm9fZ3B1LT5pbmZvLT56 YXBmdywgcGFzaWQpOworfQorCiBpbnQgYWRyZW5vX2dldF9wYXJhbShzdHJ1Y3QgbXNtX2dwdSAq Z3B1LCB1aW50MzJfdCBwYXJhbSwgdWludDY0X3QgKnZhbHVlKQogewogCXN0cnVjdCBhZHJlbm9f Z3B1ICphZHJlbm9fZ3B1ID0gdG9fYWRyZW5vX2dwdShncHUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oIGIvZHJpdmVycy9ncHUvZHJtL21zbS9h ZHJlbm8vYWRyZW5vX2dwdS5oCmluZGV4IDVkYjQ1OWIuLjA5MjU2MDZlIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2FkcmVuby9hZHJlbm9fZ3B1LmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9hZHJlbm8vYWRyZW5vX2dwdS5oCkBAIC0yNTIsNiArMjUyLDEyIEBAIHZvaWQgYWRy ZW5vX2dwdV9zdGF0ZV9kZXN0cm95KHN0cnVjdCBtc21fZ3B1X3N0YXRlICpzdGF0ZSk7CiBpbnQg YWRyZW5vX2dwdV9zdGF0ZV9nZXQoc3RydWN0IG1zbV9ncHUgKmdwdSwgc3RydWN0IG1zbV9ncHVf c3RhdGUgKnN0YXRlKTsKIGludCBhZHJlbm9fZ3B1X3N0YXRlX3B1dChzdHJ1Y3QgbXNtX2dwdV9z dGF0ZSAqc3RhdGUpOwogCisvKgorICogRm9yIGE1eHggYW5kIGE2eHggdGFyZ2V0cyBsb2FkIHRo ZSB6YXAgc2hhZGVyIHRoYXQgaXMgdXNlZCB0byBwdWxsIHRoZSBHUFUKKyAqIG91dCBvZiBzZWN1 cmUgbW9kZQorICovCitpbnQgYWRyZW5vX3phcF9zaGFkZXJfbG9hZChzdHJ1Y3QgbXNtX2dwdSAq Z3B1LCB1MzIgcGFzaWQpOworCiAvKiByaW5nYnVmZmVyIGhlbHBlcnMgKHRoZSBwYXJ0cyB0aGF0 IGFyZSBhZHJlbm8gc3BlY2lmaWMpICovCiAKIHN0YXRpYyBpbmxpbmUgdm9pZAotLSAKMi43LjQK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==