From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: [PATCH 3/7] gpu: host1x: Add Tegra194 support Date: Fri, 23 Nov 2018 13:31:34 +0100 Message-ID: <20181123123138.20739-3-thierry.reding@gmail.com> References: <20181123123138.20739-1-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20181123123138.20739-1-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: linux-tegra@vger.kernel.org, Mikko Perttunen , dri-devel@lists.freedesktop.org, Jon Hunter List-Id: linux-tegra@vger.kernel.org RnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KClRoZSBob3N0MXggaGFy ZHdhcmUgZm91bmQgb24gVGVncmExOTQgaXMgdmVyeSBzaW1pbGFyIHRvIHRoZSB2ZXJzaW9uCmZv dW5kIG9uIFRlZ3JhMTg2LCB3aXRoIHRoZSBub3RhYmxlIGV4Y2VwdGlvbnMgb2YgdGhlIGluY3Jl YXNlZCBudW1iZXIKb2Ygc3luY3BvaW50cyBhbmQgbWxvY2tzLiBJbiBhZGRpdGlvbiwgc29tZSBy YXJlbHkgdXNlZCBmZWF0dXJlcyBzdWNoCmFzIHN5bmNwb2ludCB3YWl0IGJhc2VzIHdlcmUgZHJv cHBlZCBhbmQgc29tZSByZWdpc3RlcnMgaGFkIHRvIG1vdmUKYXJvdW5kIHRvIGFjY29tb2RhdGUg dGhlIGluY3JlYXNlZCBudW1iZXIgb2Ygc3luY3BvaW50cy4KClNpZ25lZC1vZmYtYnk6IFRoaWVy cnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Ci0tLQogZHJpdmVycy9ncHUvaG9zdDF4L01h a2VmaWxlICAgICAgICAgICAgICAgICAgIHwgICAzICstCiBkcml2ZXJzL2dwdS9ob3N0MXgvZGV2 LmMgICAgICAgICAgICAgICAgICAgICAgfCAgMTMgKysKIGRyaXZlcnMvZ3B1L2hvc3QxeC9ody9o b3N0MXgwNy5jICAgICAgICAgICAgICB8ICA0NCArKysrKwogZHJpdmVycy9ncHUvaG9zdDF4L2h3 L2hvc3QxeDA3LmggICAgICAgICAgICAgIHwgIDI2ICsrKwogZHJpdmVycy9ncHUvaG9zdDF4L2h3 L2hvc3QxeDA3X2hhcmR3YXJlLmggICAgIHwgMTQyICsrKysrKysrKysrKysrCiAuLi4vZ3B1L2hv c3QxeC9ody9od19ob3N0MXgwN19oeXBlcnZpc29yLmggICAgfCAgMzIgKysrKwogZHJpdmVycy9n cHUvaG9zdDF4L2h3L2h3X2hvc3QxeDA3X3VjbGFzcy5oICAgIHwgMTgxICsrKysrKysrKysrKysr KysrKwogZHJpdmVycy9ncHUvaG9zdDF4L2h3L2h3X2hvc3QxeDA3X3ZtLmggICAgICAgIHwgIDQ2 ICsrKysrCiBkcml2ZXJzL2dwdS9ob3N0MXgvaHcvc3luY3B0X2h3LmMgICAgICAgICAgICAgfCAg IDQgKwogOSBmaWxlcyBjaGFuZ2VkLCA0OTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQog Y3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2hvc3QxeC9ody9ob3N0MXgwNy5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvaG9zdDF4L2h3L2hvc3QxeDA3LmgKIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9ob3N0MXgvaHcvaG9zdDF4MDdfaGFyZHdhcmUuaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2hvc3QxeC9ody9od19ob3N0MXgwN19oeXBlcnZp c29yLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9ob3N0MXgvaHcvaHdfaG9zdDF4 MDdfdWNsYXNzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9ob3N0MXgvaHcvaHdf aG9zdDF4MDdfdm0uaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2hvc3QxeC9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2hvc3QxeC9NYWtlZmlsZQppbmRleCBiOTIwMTZjZTA5YjcuLjA5NjAxN2I4 Nzg5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvaG9zdDF4L01ha2VmaWxlCisrKyBiL2RyaXZl cnMvZ3B1L2hvc3QxeC9NYWtlZmlsZQpAQCAtMTMsNiArMTMsNyBAQCBob3N0MXgteSA9IFwKIAlo dy9ob3N0MXgwMi5vIFwKIAlody9ob3N0MXgwNC5vIFwKIAlody9ob3N0MXgwNS5vIFwKLQlody9o b3N0MXgwNi5vCisJaHcvaG9zdDF4MDYubyBcCisJaHcvaG9zdDF4MDcubwogCiBvYmotJChDT05G SUdfVEVHUkFfSE9TVDFYKSArPSBob3N0MXgubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvaG9z dDF4L2Rldi5jIGIvZHJpdmVycy9ncHUvaG9zdDF4L2Rldi5jCmluZGV4IGRlNmJjNGU3ZmEyMy4u NDE5ZDg5MjlhOThmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9ob3N0MXgvZGV2LmMKKysrIGIv ZHJpdmVycy9ncHUvaG9zdDF4L2Rldi5jCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSAiaHcv aG9zdDF4MDQuaCIKICNpbmNsdWRlICJody9ob3N0MXgwNS5oIgogI2luY2x1ZGUgImh3L2hvc3Qx eDA2LmgiCisjaW5jbHVkZSAiaHcvaG9zdDF4MDcuaCIKIAogdm9pZCBob3N0MXhfaHlwZXJ2aXNv cl93cml0ZWwoc3RydWN0IGhvc3QxeCAqaG9zdDF4LCB1MzIgdiwgdTMyIHIpCiB7CkBAIC0xMzAs NyArMTMxLDE5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaG9zdDF4X2luZm8gaG9zdDF4MDZfaW5m byA9IHsKIAkuaGFzX2h5cGVydmlzb3IgPSB0cnVlLAogfTsKIAorc3RhdGljIGNvbnN0IHN0cnVj dCBob3N0MXhfaW5mbyBob3N0MXgwN19pbmZvID0geworCS5uYl9jaGFubmVscyA9IDYzLAorCS5u Yl9wdHMgPSA3MDQsCisJLm5iX21sb2NrcyA9IDMyLAorCS5uYl9iYXNlcyA9IDAsCisJLmluaXQg PSBob3N0MXgwN19pbml0LAorCS5zeW5jX29mZnNldCA9IDB4MCwKKwkuZG1hX21hc2sgPSBETUFf QklUX01BU0soNDApLAorCS5oYXNfaHlwZXJ2aXNvciA9IHRydWUsCit9OworCiBzdGF0aWMgY29u c3Qgc3RydWN0IG9mX2RldmljZV9pZCBob3N0MXhfb2ZfbWF0Y2hbXSA9IHsKKwl7IC5jb21wYXRp YmxlID0gIm52aWRpYSx0ZWdyYTE5NC1ob3N0MXgiLCAuZGF0YSA9ICZob3N0MXgwN19pbmZvLCB9 LAogCXsgLmNvbXBhdGlibGUgPSAibnZpZGlhLHRlZ3JhMTg2LWhvc3QxeCIsIC5kYXRhID0gJmhv c3QxeDA2X2luZm8sIH0sCiAJeyAuY29tcGF0aWJsZSA9ICJudmlkaWEsdGVncmEyMTAtaG9zdDF4 IiwgLmRhdGEgPSAmaG9zdDF4MDVfaW5mbywgfSwKIAl7IC5jb21wYXRpYmxlID0gIm52aWRpYSx0 ZWdyYTEyNC1ob3N0MXgiLCAuZGF0YSA9ICZob3N0MXgwNF9pbmZvLCB9LApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvaG9zdDF4L2h3L2hvc3QxeDA3LmMgYi9kcml2ZXJzL2dwdS9ob3N0MXgvaHcv aG9zdDF4MDcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA0Yjc3 OWE1M2YwOAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2hvc3QxeC9ody9ob3N0MXgw Ny5jCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBIb3N0MXggaW5pdCBmb3IgVGVncmExOTQgU29D cworICoKKyAqIENvcHlyaWdodCAoYykgMjAxOCBOVklESUEgQ29ycG9yYXRpb24uCisgKgorICog VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkgaXQKKyAqIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCisgKiB2ZXJzaW9uIDIsIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKKyAq IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNI QU5UQUJJTElUWSBvcgorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvcgorICogbW9yZSBkZXRhaWxzLgorICoK KyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisvKiBpbmNsdWRlIGh3IHNwZWNp ZmljYXRpb24gKi8KKyNpbmNsdWRlICJob3N0MXgwNy5oIgorI2luY2x1ZGUgImhvc3QxeDA3X2hh cmR3YXJlLmgiCisKKy8qIGluY2x1ZGUgY29kZSAqLworI2RlZmluZSBIT1NUMVhfSFcgNworCisj aW5jbHVkZSAiY2RtYV9ody5jIgorI2luY2x1ZGUgImNoYW5uZWxfaHcuYyIKKyNpbmNsdWRlICJk ZWJ1Z19ody5jIgorI2luY2x1ZGUgImludHJfaHcuYyIKKyNpbmNsdWRlICJzeW5jcHRfaHcuYyIK KworI2luY2x1ZGUgIi4uL2Rldi5oIgorCitpbnQgaG9zdDF4MDdfaW5pdChzdHJ1Y3QgaG9zdDF4 ICpob3N0KQoreworCWhvc3QtPmNoYW5uZWxfb3AgPSAmaG9zdDF4X2NoYW5uZWxfb3BzOworCWhv c3QtPmNkbWFfb3AgPSAmaG9zdDF4X2NkbWFfb3BzOworCWhvc3QtPmNkbWFfcGJfb3AgPSAmaG9z dDF4X3B1c2hidWZmZXJfb3BzOworCWhvc3QtPnN5bmNwdF9vcCA9ICZob3N0MXhfc3luY3B0X29w czsKKwlob3N0LT5pbnRyX29wID0gJmhvc3QxeF9pbnRyX29wczsKKwlob3N0LT5kZWJ1Z19vcCA9 ICZob3N0MXhfZGVidWdfb3BzOworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9ob3N0MXgvaHcvaG9zdDF4MDcuaCBiL2RyaXZlcnMvZ3B1L2hvc3QxeC9ody9ob3N0MXgw Ny5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTdiMTlmMzU0Mjc0 Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvaG9zdDF4L2h3L2hvc3QxeDA3LmgKQEAg LTAsMCArMSwyNiBAQAorLyoKKyAqIEhvc3QxeCBpbml0IGZvciBUZWdyYTE5NCBTb0NzCisgKgor ICogQ29weXJpZ2h0IChjKSAyMDE4IE5WSURJQSBDb3Jwb3JhdGlvbi4KKyAqCisgKiBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeSBpdAorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklM SVRZIG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgorICogWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYgSE9TVDFYX0hPU1QxWDA3X0gK KyNkZWZpbmUgSE9TVDFYX0hPU1QxWDA3X0gKKworc3RydWN0IGhvc3QxeDsKKworaW50IGhvc3Qx eDA3X2luaXQoc3RydWN0IGhvc3QxeCAqaG9zdCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvaG9zdDF4L2h3L2hvc3QxeDA3X2hhcmR3YXJlLmggYi9kcml2ZXJzL2dwdS9ob3N0 MXgvaHcvaG9zdDF4MDdfaGFyZHdhcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjEzNTNlN2FiNzFkZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2hv c3QxeC9ody9ob3N0MXgwN19oYXJkd2FyZS5oCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogVGVn cmEgaG9zdDF4IFJlZ2lzdGVyIE9mZnNldHMgZm9yIFRlZ3JhMTk0CisgKgorICogQ29weXJpZ2h0 IChjKSAyMDE4IE5WSURJQSBDb3Jwb3JhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAorICog dW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yCisgKiBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYgX19IT1NUMVhfSE9TVDFYMDdfSEFSRFdBUkVfSAor I2RlZmluZSBfX0hPU1QxWF9IT1NUMVgwN19IQVJEV0FSRV9ICisKKyNpbmNsdWRlIDxsaW51eC90 eXBlcy5oPgorI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPgorCisjaW5jbHVkZSAiaHdfaG9zdDF4 MDdfdWNsYXNzLmgiCisjaW5jbHVkZSAiaHdfaG9zdDF4MDdfdm0uaCIKKyNpbmNsdWRlICJod19o b3N0MXgwN19oeXBlcnZpc29yLmgiCisKK3N0YXRpYyBpbmxpbmUgdTMyIGhvc3QxeF9jbGFzc19o b3N0X3dhaXRfc3luY3B0KAorCXVuc2lnbmVkIGluZHgsIHVuc2lnbmVkIHRocmVzaG9sZCkKK3sK KwlyZXR1cm4gaG9zdDF4X3VjbGFzc193YWl0X3N5bmNwdF9pbmR4X2YoaW5keCkKKwkJfCBob3N0 MXhfdWNsYXNzX3dhaXRfc3luY3B0X3RocmVzaF9mKHRocmVzaG9sZCk7Cit9CisKK3N0YXRpYyBp bmxpbmUgdTMyIGhvc3QxeF9jbGFzc19ob3N0X2xvYWRfc3luY3B0X2Jhc2UoCisJdW5zaWduZWQg aW5keCwgdW5zaWduZWQgdGhyZXNob2xkKQoreworCXJldHVybiBob3N0MXhfdWNsYXNzX2xvYWRf c3luY3B0X2Jhc2VfYmFzZV9pbmR4X2YoaW5keCkKKwkJfCBob3N0MXhfdWNsYXNzX2xvYWRfc3lu Y3B0X2Jhc2VfdmFsdWVfZih0aHJlc2hvbGQpOworfQorCitzdGF0aWMgaW5saW5lIHUzMiBob3N0 MXhfY2xhc3NfaG9zdF93YWl0X3N5bmNwdF9iYXNlKAorCXVuc2lnbmVkIGluZHgsIHVuc2lnbmVk IGJhc2VfaW5keCwgdW5zaWduZWQgb2Zmc2V0KQoreworCXJldHVybiBob3N0MXhfdWNsYXNzX3dh aXRfc3luY3B0X2Jhc2VfaW5keF9mKGluZHgpCisJCXwgaG9zdDF4X3VjbGFzc193YWl0X3N5bmNw dF9iYXNlX2Jhc2VfaW5keF9mKGJhc2VfaW5keCkKKwkJfCBob3N0MXhfdWNsYXNzX3dhaXRfc3lu Y3B0X2Jhc2Vfb2Zmc2V0X2Yob2Zmc2V0KTsKK30KKworc3RhdGljIGlubGluZSB1MzIgaG9zdDF4 X2NsYXNzX2hvc3RfaW5jcl9zeW5jcHRfYmFzZSgKKwl1bnNpZ25lZCBiYXNlX2luZHgsIHVuc2ln bmVkIG9mZnNldCkKK3sKKwlyZXR1cm4gaG9zdDF4X3VjbGFzc19pbmNyX3N5bmNwdF9iYXNlX2Jh c2VfaW5keF9mKGJhc2VfaW5keCkKKwkJfCBob3N0MXhfdWNsYXNzX2luY3Jfc3luY3B0X2Jhc2Vf b2Zmc2V0X2Yob2Zmc2V0KTsKK30KKworc3RhdGljIGlubGluZSB1MzIgaG9zdDF4X2NsYXNzX2hv c3RfaW5jcl9zeW5jcHQoCisJdW5zaWduZWQgY29uZCwgdW5zaWduZWQgaW5keCkKK3sKKwlyZXR1 cm4gaG9zdDF4X3VjbGFzc19pbmNyX3N5bmNwdF9jb25kX2YoY29uZCkKKwkJfCBob3N0MXhfdWNs YXNzX2luY3Jfc3luY3B0X2luZHhfZihpbmR4KTsKK30KKworc3RhdGljIGlubGluZSB1MzIgaG9z dDF4X2NsYXNzX2hvc3RfaW5kb2ZmX3JlZ193cml0ZSgKKwl1bnNpZ25lZCBtb2RfaWQsIHVuc2ln bmVkIG9mZnNldCwgYm9vbCBhdXRvX2luYykKK3sKKwl1MzIgdiA9IGhvc3QxeF91Y2xhc3NfaW5k b2ZmX2luZGJlX2YoMHhmKQorCQl8IGhvc3QxeF91Y2xhc3NfaW5kb2ZmX2luZG1vZGlkX2YobW9k X2lkKQorCQl8IGhvc3QxeF91Y2xhc3NfaW5kb2ZmX2luZHJvZmZzZXRfZihvZmZzZXQpOworCWlm IChhdXRvX2luYykKKwkJdiB8PSBob3N0MXhfdWNsYXNzX2luZG9mZl9hdXRvaW5jX2YoMSk7CisJ cmV0dXJuIHY7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMyIGhvc3QxeF9jbGFzc19ob3N0X2luZG9m Zl9yZWdfcmVhZCgKKwl1bnNpZ25lZCBtb2RfaWQsIHVuc2lnbmVkIG9mZnNldCwgYm9vbCBhdXRv X2luYykKK3sKKwl1MzIgdiA9IGhvc3QxeF91Y2xhc3NfaW5kb2ZmX2luZG1vZGlkX2YobW9kX2lk KQorCQl8IGhvc3QxeF91Y2xhc3NfaW5kb2ZmX2luZHJvZmZzZXRfZihvZmZzZXQpCisJCXwgaG9z dDF4X3VjbGFzc19pbmRvZmZfcnduX3JlYWRfdigpOworCWlmIChhdXRvX2luYykKKwkJdiB8PSBo b3N0MXhfdWNsYXNzX2luZG9mZl9hdXRvaW5jX2YoMSk7CisJcmV0dXJuIHY7Cit9CisKKy8qIGNk bWEgb3Bjb2RlcyAqLworc3RhdGljIGlubGluZSB1MzIgaG9zdDF4X29wY29kZV9zZXRjbGFzcygK Kwl1bnNpZ25lZCBjbGFzc19pZCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBtYXNrKQorewor CXJldHVybiAoMCA8PCAyOCkgfCAob2Zmc2V0IDw8IDE2KSB8IChjbGFzc19pZCA8PCA2KSB8IG1h c2s7Cit9CisKK3N0YXRpYyBpbmxpbmUgdTMyIGhvc3QxeF9vcGNvZGVfaW5jcih1bnNpZ25lZCBv ZmZzZXQsIHVuc2lnbmVkIGNvdW50KQoreworCXJldHVybiAoMSA8PCAyOCkgfCAob2Zmc2V0IDw8 IDE2KSB8IGNvdW50OworfQorCitzdGF0aWMgaW5saW5lIHUzMiBob3N0MXhfb3Bjb2RlX25vbmlu Y3IodW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCkKK3sKKwlyZXR1cm4gKDIgPDwgMjgp IHwgKG9mZnNldCA8PCAxNikgfCBjb3VudDsKK30KKworc3RhdGljIGlubGluZSB1MzIgaG9zdDF4 X29wY29kZV9tYXNrKHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbWFzaykKK3sKKwlyZXR1cm4g KDMgPDwgMjgpIHwgKG9mZnNldCA8PCAxNikgfCBtYXNrOworfQorCitzdGF0aWMgaW5saW5lIHUz MiBob3N0MXhfb3Bjb2RlX2ltbSh1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIHZhbHVlKQorewor CXJldHVybiAoNCA8PCAyOCkgfCAob2Zmc2V0IDw8IDE2KSB8IHZhbHVlOworfQorCitzdGF0aWMg aW5saW5lIHUzMiBob3N0MXhfb3Bjb2RlX2ltbV9pbmNyX3N5bmNwdCh1bnNpZ25lZCBjb25kLCB1 bnNpZ25lZCBpbmR4KQoreworCXJldHVybiBob3N0MXhfb3Bjb2RlX2ltbShob3N0MXhfdWNsYXNz X2luY3Jfc3luY3B0X3IoKSwKKwkJaG9zdDF4X2NsYXNzX2hvc3RfaW5jcl9zeW5jcHQoY29uZCwg aW5keCkpOworfQorCitzdGF0aWMgaW5saW5lIHUzMiBob3N0MXhfb3Bjb2RlX3Jlc3RhcnQodW5z aWduZWQgYWRkcmVzcykKK3sKKwlyZXR1cm4gKDUgPDwgMjgpIHwgKGFkZHJlc3MgPj4gNCk7Cit9 CisKK3N0YXRpYyBpbmxpbmUgdTMyIGhvc3QxeF9vcGNvZGVfZ2F0aGVyKHVuc2lnbmVkIGNvdW50 KQoreworCXJldHVybiAoNiA8PCAyOCkgfCBjb3VudDsKK30KKworc3RhdGljIGlubGluZSB1MzIg aG9zdDF4X29wY29kZV9nYXRoZXJfbm9uaW5jcih1bnNpZ25lZCBvZmZzZXQsCXVuc2lnbmVkIGNv dW50KQoreworCXJldHVybiAoNiA8PCAyOCkgfCAob2Zmc2V0IDw8IDE2KSB8IEJJVCgxNSkgfCBj b3VudDsKK30KKworc3RhdGljIGlubGluZSB1MzIgaG9zdDF4X29wY29kZV9nYXRoZXJfaW5jcih1 bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50KQoreworCXJldHVybiAoNiA8PCAyOCkgfCAo b2Zmc2V0IDw8IDE2KSB8IEJJVCgxNSkgfCBCSVQoMTQpIHwgY291bnQ7Cit9CisKKyNkZWZpbmUg SE9TVDFYX09QQ09ERV9OT1AgaG9zdDF4X29wY29kZV9ub25pbmNyKDAsIDApCisKKyNlbmRpZgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvaG9zdDF4L2h3L2h3X2hvc3QxeDA3X2h5cGVydmlzb3Iu aCBiL2RyaXZlcnMvZ3B1L2hvc3QxeC9ody9od19ob3N0MXgwN19oeXBlcnZpc29yLmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yYjk5ZDY4ZDMwNDAKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2dwdS9ob3N0MXgvaHcvaHdfaG9zdDF4MDdfaHlwZXJ2aXNvci5o CkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTggTlZJRElBIENvcnBv cmF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgYW5kIGNv bmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorICogdmVyc2lvbiAy LCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKyAqCisgKiBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQgd2lsbCBiZSB1c2VmdWws IGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IKKyAqIG1v cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICovCisK KyNkZWZpbmUgSE9TVDFYX0hWX1NZTkNQVF9QUk9UX0VOCQkJMHgxYWM0CisjZGVmaW5lIEhPU1Qx WF9IVl9TWU5DUFRfUFJPVF9FTl9DSF9FTgkJCUJJVCgxKQorI2RlZmluZSBIT1NUMVhfSFZfQ0hf S0VSTkVMX0ZJTFRFUl9HQlVGRkVSKHgpCQkoMHgyMDIwICsgKHggKiA0KSkKKyNkZWZpbmUgSE9T VDFYX0hWX0NNREZJRk9fUEVFS19DVFJMCQkJMHgyMzNjCisjZGVmaW5lIEhPU1QxWF9IVl9DTURG SUZPX1BFRUtfQ1RSTF9BRERSKHgpCQkoeCkKKyNkZWZpbmUgSE9TVDFYX0hWX0NNREZJRk9fUEVF S19DVFJMX0NIQU5ORUwoeCkJCSgoeCkgPDwgMTYpCisjZGVmaW5lIEhPU1QxWF9IVl9DTURGSUZP X1BFRUtfQ1RSTF9FTkFCTEUJCUJJVCgzMSkKKyNkZWZpbmUgSE9TVDFYX0hWX0NNREZJRk9fUEVF S19SRUFECQkJMHgyMzQwCisjZGVmaW5lIEhPU1QxWF9IVl9DTURGSUZPX1BFRUtfUFRSUwkJCTB4 MjM0NAorI2RlZmluZSBIT1NUMVhfSFZfQ01ERklGT19QRUVLX1BUUlNfV1JfUFRSX1YoeCkJCSgo KHgpID4+IDE2KSAmIDB4ZmZmKQorI2RlZmluZSBIT1NUMVhfSFZfQ01ERklGT19QRUVLX1BUUlNf UkRfUFRSX1YoeCkJCSgoeCkgJiAweGZmZikKKyNkZWZpbmUgSE9TVDFYX0hWX0NNREZJRk9fU0VU VVAoeCkJCQkoMHgyNTg4ICsgKHggKiA0KSkKKyNkZWZpbmUgSE9TVDFYX0hWX0NNREZJRk9fU0VU VVBfTElNSVRfVih4KQkJKCgoeCkgPj4gMTYpICYgMHhmZmYpCisjZGVmaW5lIEhPU1QxWF9IVl9D TURGSUZPX1NFVFVQX0JBU0VfVih4KQkJKCh4KSAmIDB4ZmZmKQorI2RlZmluZSBIT1NUMVhfSFZf SUNHX0VOX09WRVJSSURFCQkJMHgyYWE4CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9ob3N0MXgv aHcvaHdfaG9zdDF4MDdfdWNsYXNzLmggYi9kcml2ZXJzL2dwdS9ob3N0MXgvaHcvaHdfaG9zdDF4 MDdfdWNsYXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43ZTRl M2IzNzdmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9ob3N0MXgvaHcvaHdfaG9z dDF4MDdfdWNsYXNzLmgKQEAgLTAsMCArMSwxODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIw MTggTlZJRElBIENvcnBvcmF0aW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0 aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl LAorICogdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgaXQg d2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IKKyAqIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisgKgorICovCisKKyAvKgorICAqIEZ1bmN0aW9uIG5hbWluZyBkZXRlcm1pbmVzIGludGVu ZGVkIHVzZToKKyAgKgorICAqICAgICA8eD5fcih2b2lkKSA6IFJldHVybnMgdGhlIG9mZnNldCBm b3IgcmVnaXN0ZXIgPHg+LgorICAqCisgICogICAgIDx4Pl93KHZvaWQpIDogUmV0dXJucyB0aGUg d29yZCBvZmZzZXQgZm9yIHdvcmQgKDQgYnl0ZSkgZWxlbWVudCA8eD4uCisgICoKKyAgKiAgICAg PHg+Xzx5Pl9zKHZvaWQpIDogUmV0dXJucyBzaXplIG9mIGZpZWxkIDx5PiBvZiByZWdpc3RlciA8 eD4gaW4gYml0cy4KKyAgKgorICAqICAgICA8eD5fPHk+X2YodTMyIHYpIDogUmV0dXJucyBhIHZh bHVlIGJhc2VkIG9uICd2JyB3aGljaCBoYXMgYmVlbiBzaGlmdGVkCisgICogICAgICAgICBhbmQg bWFza2VkIHRvIHBsYWNlIGl0IGF0IGZpZWxkIDx5PiBvZiByZWdpc3RlciA8eD4uICBUaGlzIHZh bHVlCisgICogICAgICAgICBjYW4gYmUgfCdkIHdpdGggb3RoZXJzIHRvIHByb2R1Y2UgYSBmdWxs IHJlZ2lzdGVyIHZhbHVlIGZvcgorICAqICAgICAgICAgcmVnaXN0ZXIgPHg+LgorICAqCisgICog ICAgIDx4Pl88eT5fbSh2b2lkKSA6IFJldHVybnMgYSBtYXNrIGZvciBmaWVsZCA8eT4gb2YgcmVn aXN0ZXIgPHg+LiAgVGhpcworICAqICAgICAgICAgdmFsdWUgY2FuIGJlIH4nZCBhbmQgdGhlbiAm J2QgdG8gY2xlYXIgdGhlIHZhbHVlIG9mIGZpZWxkIDx5PiBmb3IKKyAgKiAgICAgICAgIHJlZ2lz dGVyIDx4Pi4KKyAgKgorICAqICAgICA8eD5fPHk+Xzx6Pl9mKHZvaWQpIDogUmV0dXJucyB0aGUg Y29uc3RhbnQgdmFsdWUgPHo+IGFmdGVyIGJlaW5nIHNoaWZ0ZWQKKyAgKiAgICAgICAgIHRvIHBs YWNlIGl0IGF0IGZpZWxkIDx5PiBvZiByZWdpc3RlciA8eD4uICBUaGlzIHZhbHVlIGNhbiBiZSB8 J2QKKyAgKiAgICAgICAgIHdpdGggb3RoZXJzIHRvIHByb2R1Y2UgYSBmdWxsIHJlZ2lzdGVyIHZh bHVlIGZvciA8eD4uCisgICoKKyAgKiAgICAgPHg+Xzx5Pl92KHUzMiByKSA6IFJldHVybnMgdGhl IHZhbHVlIG9mIGZpZWxkIDx5PiBmcm9tIGEgZnVsbCByZWdpc3RlcgorICAqICAgICAgICAgPHg+ IHZhbHVlICdyJyBhZnRlciBiZWluZyBzaGlmdGVkIHRvIHBsYWNlIGl0cyBMU0IgYXQgYml0IDAu CisgICogICAgICAgICBUaGlzIHZhbHVlIGlzIHN1aXRhYmxlIGZvciBkaXJlY3QgY29tcGFyaXNv biB3aXRoIG90aGVyIHVuc2hpZnRlZAorICAqICAgICAgICAgdmFsdWVzIGFwcHJvcHJpYXRlIGZv ciB1c2UgaW4gZmllbGQgPHk+IG9mIHJlZ2lzdGVyIDx4Pi4KKyAgKgorICAqICAgICA8eD5fPHk+ Xzx6Pl92KHZvaWQpIDogUmV0dXJucyB0aGUgY29uc3RhbnQgdmFsdWUgZm9yIDx6PiBkZWZpbmVk IGZvcgorICAqICAgICAgICAgZmllbGQgPHk+IG9mIHJlZ2lzdGVyIDx4Pi4gIFRoaXMgdmFsdWUg aXMgc3VpdGFibGUgZm9yIGRpcmVjdAorICAqICAgICAgICAgY29tcGFyaXNvbiB3aXRoIHVuc2hp ZnRlZCB2YWx1ZXMgYXBwcm9wcmlhdGUgZm9yIHVzZSBpbiBmaWVsZCA8eT4KKyAgKiAgICAgICAg IG9mIHJlZ2lzdGVyIDx4Pi4KKyAgKi8KKworI2lmbmRlZiBIT1NUMVhfSFdfSE9TVDFYMDdfVUNM QVNTX0gKKyNkZWZpbmUgSE9TVDFYX0hXX0hPU1QxWDA3X1VDTEFTU19ICisKK3N0YXRpYyBpbmxp bmUgdTMyIGhvc3QxeF91Y2xhc3NfaW5jcl9zeW5jcHRfcih2b2lkKQoreworCXJldHVybiAweDA7 Cit9CisjZGVmaW5lIEhPU1QxWF9VQ0xBU1NfSU5DUl9TWU5DUFQgXAorCWhvc3QxeF91Y2xhc3Nf aW5jcl9zeW5jcHRfcigpCitzdGF0aWMgaW5saW5lIHUzMiBob3N0MXhfdWNsYXNzX2luY3Jfc3lu Y3B0X2NvbmRfZih1MzIgdikKK3sKKwlyZXR1cm4gKHYgJiAweGZmKSA8PCAxMDsKK30KKyNkZWZp bmUgSE9TVDFYX1VDTEFTU19JTkNSX1NZTkNQVF9DT05EX0YodikgXAorCWhvc3QxeF91Y2xhc3Nf aW5jcl9zeW5jcHRfY29uZF9mKHYpCitzdGF0aWMgaW5saW5lIHUzMiBob3N0MXhfdWNsYXNzX2lu Y3Jfc3luY3B0X2luZHhfZih1MzIgdikKK3sKKwlyZXR1cm4gKHYgJiAweGZmKSA8PCAwOworfQor I2RlZmluZSBIT1NUMVhfVUNMQVNTX0lOQ1JfU1lOQ1BUX0lORFhfRih2KSBcCisJaG9zdDF4X3Vj bGFzc19pbmNyX3N5bmNwdF9pbmR4X2YodikKK3N0YXRpYyBpbmxpbmUgdTMyIGhvc3QxeF91Y2xh c3Nfd2FpdF9zeW5jcHRfcih2b2lkKQoreworCXJldHVybiAweDg7Cit9CisjZGVmaW5lIEhPU1Qx WF9VQ0xBU1NfV0FJVF9TWU5DUFQgXAorCWhvc3QxeF91Y2xhc3Nfd2FpdF9zeW5jcHRfcigpCitz dGF0aWMgaW5saW5lIHUzMiBob3N0MXhfdWNsYXNzX3dhaXRfc3luY3B0X2luZHhfZih1MzIgdikK K3sKKwlyZXR1cm4gKHYgJiAweGZmKSA8PCAyNDsKK30KKyNkZWZpbmUgSE9TVDFYX1VDTEFTU19X QUlUX1NZTkNQVF9JTkRYX0YodikgXAorCWhvc3QxeF91Y2xhc3Nfd2FpdF9zeW5jcHRfaW5keF9m KHYpCitzdGF0aWMgaW5saW5lIHUzMiBob3N0MXhfdWNsYXNzX3dhaXRfc3luY3B0X3RocmVzaF9m KHUzMiB2KQoreworCXJldHVybiAodiAmIDB4ZmZmZmZmKSA8PCAwOworfQorI2RlZmluZSBIT1NU MVhfVUNMQVNTX1dBSVRfU1lOQ1BUX1RIUkVTSF9GKHYpIFwKKwlob3N0MXhfdWNsYXNzX3dhaXRf c3luY3B0X3RocmVzaF9mKHYpCitzdGF0aWMgaW5saW5lIHUzMiBob3N0MXhfdWNsYXNzX3dhaXRf c3luY3B0X2Jhc2Vfcih2b2lkKQoreworCXJldHVybiAweDk7Cit9CisjZGVmaW5lIEhPU1QxWF9V Q0xBU1NfV0FJVF9TWU5DUFRfQkFTRSBcCisJaG9zdDF4X3VjbGFzc193YWl0X3N5bmNwdF9iYXNl X3IoKQorc3RhdGljIGlubGluZSB1MzIgaG9zdDF4X3VjbGFzc193YWl0X3N5bmNwdF9iYXNlX2lu ZHhfZih1MzIgdikKK3sKKwlyZXR1cm4gKHYgJiAweGZmKSA8PCAyNDsKK30KKyNkZWZpbmUgSE9T VDFYX1VDTEFTU19XQUlUX1NZTkNQVF9CQVNFX0lORFhfRih2KSBcCisJaG9zdDF4X3VjbGFzc193 YWl0X3N5bmNwdF9iYXNlX2luZHhfZih2KQorc3RhdGljIGlubGluZSB1MzIgaG9zdDF4X3VjbGFz c193YWl0X3N5bmNwdF9iYXNlX2Jhc2VfaW5keF9mKHUzMiB2KQoreworCXJldHVybiAodiAmIDB4 ZmYpIDw8IDE2OworfQorI2RlZmluZSBIT1NUMVhfVUNMQVNTX1dBSVRfU1lOQ1BUX0JBU0VfQkFT RV9JTkRYX0YodikgXAorCWhvc3QxeF91Y2xhc3Nfd2FpdF9zeW5jcHRfYmFzZV9iYXNlX2luZHhf Zih2KQorc3RhdGljIGlubGluZSB1MzIgaG9zdDF4X3VjbGFzc193YWl0X3N5bmNwdF9iYXNlX29m ZnNldF9mKHUzMiB2KQoreworCXJldHVybiAodiAmIDB4ZmZmZikgPDwgMDsKK30KKyNkZWZpbmUg SE9TVDFYX1VDTEFTU19XQUlUX1NZTkNQVF9CQVNFX09GRlNFVF9GKHYpIFwKKwlob3N0MXhfdWNs YXNzX3dhaXRfc3luY3B0X2Jhc2Vfb2Zmc2V0X2YodikKK3N0YXRpYyBpbmxpbmUgdTMyIGhvc3Qx eF91Y2xhc3NfbG9hZF9zeW5jcHRfYmFzZV9yKHZvaWQpCit7CisJcmV0dXJuIDB4YjsKK30KKyNk ZWZpbmUgSE9TVDFYX1VDTEFTU19MT0FEX1NZTkNQVF9CQVNFIFwKKwlob3N0MXhfdWNsYXNzX2xv YWRfc3luY3B0X2Jhc2VfcigpCitzdGF0aWMgaW5saW5lIHUzMiBob3N0MXhfdWNsYXNzX2xvYWRf c3luY3B0X2Jhc2VfYmFzZV9pbmR4X2YodTMyIHYpCit7CisJcmV0dXJuICh2ICYgMHhmZikgPDwg MjQ7Cit9CisjZGVmaW5lIEhPU1QxWF9VQ0xBU1NfTE9BRF9TWU5DUFRfQkFTRV9CQVNFX0lORFhf Rih2KSBcCisJaG9zdDF4X3VjbGFzc19sb2FkX3N5bmNwdF9iYXNlX2Jhc2VfaW5keF9mKHYpCitz dGF0aWMgaW5saW5lIHUzMiBob3N0MXhfdWNsYXNzX2xvYWRfc3luY3B0X2Jhc2VfdmFsdWVfZih1 MzIgdikKK3sKKwlyZXR1cm4gKHYgJiAweGZmZmZmZikgPDwgMDsKK30KKyNkZWZpbmUgSE9TVDFY X1VDTEFTU19MT0FEX1NZTkNQVF9CQVNFX1ZBTFVFX0YodikgXAorCWhvc3QxeF91Y2xhc3NfbG9h ZF9zeW5jcHRfYmFzZV92YWx1ZV9mKHYpCitzdGF0aWMgaW5saW5lIHUzMiBob3N0MXhfdWNsYXNz X2luY3Jfc3luY3B0X2Jhc2VfYmFzZV9pbmR4X2YodTMyIHYpCit7CisJcmV0dXJuICh2ICYgMHhm ZikgPDwgMjQ7Cit9CisjZGVmaW5lIEhPU1QxWF9VQ0xBU1NfSU5DUl9TWU5DUFRfQkFTRV9CQVNF X0lORFhfRih2KSBcCisJaG9zdDF4X3VjbGFzc19pbmNyX3N5bmNwdF9iYXNlX2Jhc2VfaW5keF9m KHYpCitzdGF0aWMgaW5saW5lIHUzMiBob3N0MXhfdWNsYXNzX2luY3Jfc3luY3B0X2Jhc2Vfb2Zm c2V0X2YodTMyIHYpCit7CisJcmV0dXJuICh2ICYgMHhmZmZmZmYpIDw8IDA7Cit9CisjZGVmaW5l IEhPU1QxWF9VQ0xBU1NfSU5DUl9TWU5DUFRfQkFTRV9PRkZTRVRfRih2KSBcCisJaG9zdDF4X3Vj bGFzc19pbmNyX3N5bmNwdF9iYXNlX29mZnNldF9mKHYpCitzdGF0aWMgaW5saW5lIHUzMiBob3N0 MXhfdWNsYXNzX2luZG9mZl9yKHZvaWQpCit7CisJcmV0dXJuIDB4MmQ7Cit9CisjZGVmaW5lIEhP U1QxWF9VQ0xBU1NfSU5ET0ZGIFwKKwlob3N0MXhfdWNsYXNzX2luZG9mZl9yKCkKK3N0YXRpYyBp bmxpbmUgdTMyIGhvc3QxeF91Y2xhc3NfaW5kb2ZmX2luZGJlX2YodTMyIHYpCit7CisJcmV0dXJu ICh2ICYgMHhmKSA8PCAyODsKK30KKyNkZWZpbmUgSE9TVDFYX1VDTEFTU19JTkRPRkZfSU5EQkVf Rih2KSBcCisJaG9zdDF4X3VjbGFzc19pbmRvZmZfaW5kYmVfZih2KQorc3RhdGljIGlubGluZSB1 MzIgaG9zdDF4X3VjbGFzc19pbmRvZmZfYXV0b2luY19mKHUzMiB2KQoreworCXJldHVybiAodiAm IDB4MSkgPDwgMjc7Cit9CisjZGVmaW5lIEhPU1QxWF9VQ0xBU1NfSU5ET0ZGX0FVVE9JTkNfRih2 KSBcCisJaG9zdDF4X3VjbGFzc19pbmRvZmZfYXV0b2luY19mKHYpCitzdGF0aWMgaW5saW5lIHUz MiBob3N0MXhfdWNsYXNzX2luZG9mZl9pbmRtb2RpZF9mKHUzMiB2KQoreworCXJldHVybiAodiAm IDB4ZmYpIDw8IDE4OworfQorI2RlZmluZSBIT1NUMVhfVUNMQVNTX0lORE9GRl9JTkRNT0RJRF9G KHYpIFwKKwlob3N0MXhfdWNsYXNzX2luZG9mZl9pbmRtb2RpZF9mKHYpCitzdGF0aWMgaW5saW5l IHUzMiBob3N0MXhfdWNsYXNzX2luZG9mZl9pbmRyb2Zmc2V0X2YodTMyIHYpCit7CisJcmV0dXJu ICh2ICYgMHhmZmZmKSA8PCAyOworfQorI2RlZmluZSBIT1NUMVhfVUNMQVNTX0lORE9GRl9JTkRS T0ZGU0VUX0YodikgXAorCWhvc3QxeF91Y2xhc3NfaW5kb2ZmX2luZHJvZmZzZXRfZih2KQorc3Rh dGljIGlubGluZSB1MzIgaG9zdDF4X3VjbGFzc19pbmRvZmZfcnduX3JlYWRfdih2b2lkKQorewor CXJldHVybiAxOworfQorI2RlZmluZSBIT1NUMVhfVUNMQVNTX0lORE9GRl9JTkRST0ZGU0VUX0Yo dikgXAorCWhvc3QxeF91Y2xhc3NfaW5kb2ZmX2luZHJvZmZzZXRfZih2KQorCisjZW5kaWYKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2hvc3QxeC9ody9od19ob3N0MXgwN192bS5oIGIvZHJpdmVy cy9ncHUvaG9zdDF4L2h3L2h3X2hvc3QxeDA3X3ZtLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi43ZTQ2MjllNzdhMmEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJz L2dwdS9ob3N0MXgvaHcvaHdfaG9zdDF4MDdfdm0uaApAQCAtMCwwICsxLDQ2IEBACisvKgorICog Q29weXJpZ2h0IChjKSAyMDE4IE5WSURJQSBDb3Jwb3JhdGlvbi4KKyAqCisgKiBUaGlzIHByb2dy YW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlm eSBpdAorICogdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSwKKyAqIHZlcnNpb24gMiwgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorICogQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZ IG9yCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yCisgKiBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorICoKKyAqLworCisjZGVmaW5lIEhPU1QxWF9DSEFOTkVMX0RN QVNUQVJUCQkJCTB4MDAwMAorI2RlZmluZSBIT1NUMVhfQ0hBTk5FTF9ETUFTVEFSVF9ISQkJCTB4 MDAwNAorI2RlZmluZSBIT1NUMVhfQ0hBTk5FTF9ETUFQVVQJCQkJMHgwMDA4CisjZGVmaW5lIEhP U1QxWF9DSEFOTkVMX0RNQVBVVF9ISQkJCTB4MDAwYworI2RlZmluZSBIT1NUMVhfQ0hBTk5FTF9E TUFHRVQJCQkJMHgwMDEwCisjZGVmaW5lIEhPU1QxWF9DSEFOTkVMX0RNQUdFVF9ISQkJCTB4MDAx NAorI2RlZmluZSBIT1NUMVhfQ0hBTk5FTF9ETUFFTkQJCQkJMHgwMDE4CisjZGVmaW5lIEhPU1Qx WF9DSEFOTkVMX0RNQUVORF9ISQkJCTB4MDAxYworI2RlZmluZSBIT1NUMVhfQ0hBTk5FTF9ETUFD VFJMCQkJCTB4MDAyMAorI2RlZmluZSBIT1NUMVhfQ0hBTk5FTF9ETUFDVFJMX0RNQVNUT1AJCQlC SVQoMCkKKyNkZWZpbmUgSE9TVDFYX0NIQU5ORUxfRE1BQ1RSTF9ETUFHRVRSU1QJCUJJVCgxKQor I2RlZmluZSBIT1NUMVhfQ0hBTk5FTF9ETUFDVFJMX0RNQUlOSVRHRVQJCUJJVCgyKQorI2RlZmlu ZSBIT1NUMVhfQ0hBTk5FTF9DTURGSUZPX1NUQVQJCQkweDAwMjQKKyNkZWZpbmUgSE9TVDFYX0NI QU5ORUxfQ01ERklGT19TVEFUX0VNUFRZCQlCSVQoMTMpCisjZGVmaW5lIEhPU1QxWF9DSEFOTkVM X0NNREZJRk9fUkRBVEEJCQkweDAwMjgKKyNkZWZpbmUgSE9TVDFYX0NIQU5ORUxfQ01EUF9PRkZT RVQJCQkweDAwMzAKKyNkZWZpbmUgSE9TVDFYX0NIQU5ORUxfQ01EUF9DTEFTUwkJCTB4MDAzNAor I2RlZmluZSBIT1NUMVhfQ0hBTk5FTF9DSEFOTkVMU1RBVAkJCTB4MDAzOAorI2RlZmluZSBIT1NU MVhfQ0hBTk5FTF9DTURQUk9DX1NUT1AJCQkweDAwNDgKKyNkZWZpbmUgSE9TVDFYX0NIQU5ORUxf VEVBUkRPV04JCQkJMHgwMDRjCisKKyNkZWZpbmUgSE9TVDFYX1NZTkNfU1lOQ1BUX0NQVV9JTkNS KHgpCQkJKDB4NjQwMCArIDQgKiAoeCkpCisjZGVmaW5lIEhPU1QxWF9TWU5DX1NZTkNQVF9USFJF U0hfQ1BVMF9JTlRfU1RBVFVTKHgpCSgweDY0NjQgKyA0ICogKHgpKQorI2RlZmluZSBIT1NUMVhf U1lOQ19TWU5DUFRfVEhSRVNIX0lOVF9FTkFCTEVfQ1BVMCh4KQkoMHg2NTJjICsgNCAqICh4KSkK KyNkZWZpbmUgSE9TVDFYX1NZTkNfU1lOQ1BUX1RIUkVTSF9JTlRfRElTQUJMRSh4KQkoMHg2NTkw ICsgNCAqICh4KSkKKyNkZWZpbmUgSE9TVDFYX1NZTkNfU1lOQ1BUKHgpCQkJCSgweDgwODAgKyA0 ICogKHgpKQorI2RlZmluZSBIT1NUMVhfU1lOQ19TWU5DUFRfSU5UX1RIUkVTSCh4KQkJKDB4OGQw MCArIDQgKiAoeCkpCisjZGVmaW5lIEhPU1QxWF9TWU5DX1NZTkNQVF9DSF9BUFAoeCkJCQkoMHhh NjA0ICsgNCAqICh4KSkKKyNkZWZpbmUgSE9TVDFYX1NZTkNfU1lOQ1BUX0NIX0FQUF9DSCh2KQkJ CSgoKHYpICYgMHgzZikgPDwgOCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2hvc3QxeC9ody9z eW5jcHRfaHcuYyBiL2RyaXZlcnMvZ3B1L2hvc3QxeC9ody9zeW5jcHRfaHcuYwppbmRleCBhMjNi YjMzNTJkMDIuLmQ5NDY2NjBkNDdmOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvaG9zdDF4L2h3 L3N5bmNwdF9ody5jCisrKyBiL2RyaXZlcnMvZ3B1L2hvc3QxeC9ody9zeW5jcHRfaHcuYwpAQCAt MzcsMTAgKzM3LDEyIEBAIHN0YXRpYyB2b2lkIHN5bmNwdF9yZXN0b3JlKHN0cnVjdCBob3N0MXhf c3luY3B0ICpzcCkKICAqLwogc3RhdGljIHZvaWQgc3luY3B0X3Jlc3RvcmVfd2FpdF9iYXNlKHN0 cnVjdCBob3N0MXhfc3luY3B0ICpzcCkKIHsKKyNpZiBIT1NUMVhfSFcgPCA3CiAJc3RydWN0IGhv c3QxeCAqaG9zdCA9IHNwLT5ob3N0OwogCiAJaG9zdDF4X3N5bmNfd3JpdGVsKGhvc3QsIHNwLT5i YXNlX3ZhbCwKIAkJCSAgIEhPU1QxWF9TWU5DX1NZTkNQVF9CQVNFKHNwLT5pZCkpOworI2VuZGlm CiB9CiAKIC8qCkBAIC00OCwxMCArNTAsMTIgQEAgc3RhdGljIHZvaWQgc3luY3B0X3Jlc3RvcmVf d2FpdF9iYXNlKHN0cnVjdCBob3N0MXhfc3luY3B0ICpzcCkKICAqLwogc3RhdGljIHZvaWQgc3lu Y3B0X3JlYWRfd2FpdF9iYXNlKHN0cnVjdCBob3N0MXhfc3luY3B0ICpzcCkKIHsKKyNpZiBIT1NU MVhfSFcgPCA3CiAJc3RydWN0IGhvc3QxeCAqaG9zdCA9IHNwLT5ob3N0OwogCiAJc3AtPmJhc2Vf dmFsID0KIAkJaG9zdDF4X3N5bmNfcmVhZGwoaG9zdCwgSE9TVDFYX1NZTkNfU1lOQ1BUX0JBU0Uo c3AtPmlkKSk7CisjZW5kaWYKIH0KIAogLyoKLS0gCjIuMTkuMQoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==