From: Adam Jackson Subject: [PATCH 1/2] agp/intel-gtt: Drop the code for gen > 1 Date: Fri, 20 Apr 2018 15:59:30 -0400 Message-ID: <20180420195931.19470-1-ajax@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by gabe.freedesktop.org (Postfix) with ESMTPS id 80D3C6E161 for ; Fri, 20 Apr 2018 19:59:32 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 198E7308210B for ; Fri, 20 Apr 2018 19:59:32 +0000 (UTC) Received: from datura.bss.redhat.com (dhcp-10-20-1-165.bss.redhat.com [10.20.1.165]) by smtp.corp.redhat.com (Postfix) with ESMTP id AE34DBA6E for ; Fri, 20 Apr 2018 19:59:31 +0000 (UTC) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhlIGdlbjIrIGNvZGUgaGFzIGJlZW4gdW5yZWFjaGFibGUgc2luY2U6CgogICAgY29tbWl0IGVi YjdjNzhkMzU4YjJlYTQ1YzdkOTk3NDIzZTZmZWI0MmU1Y2U0ZWYKICAgIEF1dGhvcjogRGFuaWVs IFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KICAgIERhdGU6ICAgV2VkIEphbiAyNyAx NDozODowMCAyMDE2ICswMTAwCgogICAgICAgIGFncC9pbnRlbC1ndHQ6IE9ubHkgcmVnaXN0ZXIg ZmFrZSBhZ3AgZHJpdmVyIGZvciBnZW4xCgpTaWduZWQtb2ZmLWJ5OiBBZGFtIEphY2tzb24gPGFq YXhAcmVkaGF0LmNvbT4KLS0tCiBkcml2ZXJzL2NoYXIvYWdwL2ludGVsLWd0dC5jIHwgNjMxICst LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTggaW5z ZXJ0aW9ucygrKSwgNjEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvY2hhci9h Z3AvaW50ZWwtZ3R0LmMgYi9kcml2ZXJzL2NoYXIvYWdwL2ludGVsLWd0dC5jCmluZGV4IGM2Mjcx Y2UyNTBiMy4uODI0NTliODg2ODY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2NoYXIvYWdwL2ludGVs LWd0dC5jCisrKyBiL2RyaXZlcnMvY2hhci9hZ3AvaW50ZWwtZ3R0LmMKQEAgLTQwLDEyICs0MCw2 IEBACiAjZW5kaWYKIAogc3RydWN0IGludGVsX2d0dF9kcml2ZXIgewotCXVuc2lnbmVkIGludCBn ZW4gOiA4OwotCXVuc2lnbmVkIGludCBpc19nMzMgOiAxOwotCXVuc2lnbmVkIGludCBpc19waW5l dmlldyA6IDE7Ci0JdW5zaWduZWQgaW50IGlzX2lyb25sYWtlIDogMTsKLQl1bnNpZ25lZCBpbnQg aGFzX3BndGJsX2VuYWJsZSA6IDE7Ci0JdW5zaWduZWQgaW50IGRtYV9tYXNrX3NpemUgOiA4Owog CS8qIENoaXBzZXQgc3BlY2lmaWMgR1RUIHNldHVwICovCiAJaW50ICgqc2V0dXApKHZvaWQpOwog CS8qIFRoaXMgc2hvdWxkIHVuZG8gYW55dGhpbmcgZG9uZSBpbiAtPnNldHVwKCkgc2F2ZSB0aGUg dW5tYXBwaW5nCkBAIC04OCwxMiArODIsNiBAQCBzdGF0aWMgc3RydWN0IF9pbnRlbF9wcml2YXRl IHsKIAl1bnNpZ25lZCBpbnQgZ3R0X21hcHBhYmxlX2VudHJpZXM7CiB9IGludGVsX3ByaXZhdGU7 CiAKLSNkZWZpbmUgSU5URUxfR1RUX0dFTglpbnRlbF9wcml2YXRlLmRyaXZlci0+Z2VuCi0jZGVm aW5lIElTX0czMwkJaW50ZWxfcHJpdmF0ZS5kcml2ZXItPmlzX2czMwotI2RlZmluZSBJU19QSU5F VklFVwlpbnRlbF9wcml2YXRlLmRyaXZlci0+aXNfcGluZXZpZXcKLSNkZWZpbmUgSVNfSVJPTkxB S0UJaW50ZWxfcHJpdmF0ZS5kcml2ZXItPmlzX2lyb25sYWtlCi0jZGVmaW5lIEhBU19QR1RCTF9F TglpbnRlbF9wcml2YXRlLmRyaXZlci0+aGFzX3BndGJsX2VuYWJsZQotCiAjaWYgSVNfRU5BQkxF RChDT05GSUdfQUdQX0lOVEVMKQogc3RhdGljIGludCBpbnRlbF9ndHRfbWFwX21lbW9yeShzdHJ1 Y3QgcGFnZSAqKnBhZ2VzLAogCQkJCXVuc2lnbmVkIGludCBudW1fZW50cmllcywKQEAgLTMzNSwy MTIgKzMyMywyNyBAQCBzdGF0aWMgdm9pZCBpODEwX3dyaXRlX2VudHJ5KGRtYV9hZGRyX3QgYWRk ciwgdW5zaWduZWQgaW50IGVudHJ5LAogCiBzdGF0aWMgcmVzb3VyY2Vfc2l6ZV90IGludGVsX2d0 dF9zdG9sZW5fc2l6ZSh2b2lkKQogewotCXUxNiBnbWNoX2N0cmw7Ci0JdTggcmRjdDsKLQlpbnQg bG9jYWwgPSAwOwotCXN0YXRpYyBjb25zdCBpbnQgZGR0WzRdID0geyAwLCAxNiwgMzIsIDY0IH07 Ci0JcmVzb3VyY2Vfc2l6ZV90IHN0b2xlbl9zaXplID0gMDsKLQotCWlmIChJTlRFTF9HVFRfR0VO ID09IDEpCi0JCXJldHVybiAwOyAvKiBubyBzdG9sZW4gbWVtIG9uIGk4MXggKi8KLQotCXBjaV9y ZWFkX2NvbmZpZ193b3JkKGludGVsX3ByaXZhdGUuYnJpZGdlX2RldiwKLQkJCSAgICAgSTgzMF9H TUNIX0NUUkwsICZnbWNoX2N0cmwpOwotCi0JaWYgKGludGVsX3ByaXZhdGUuYnJpZGdlX2Rldi0+ ZGV2aWNlID09IFBDSV9ERVZJQ0VfSURfSU5URUxfODI4MzBfSEIgfHwKLQkgICAgaW50ZWxfcHJp dmF0ZS5icmlkZ2VfZGV2LT5kZXZpY2UgPT0gUENJX0RFVklDRV9JRF9JTlRFTF84Mjg0NUdfSEIp IHsKLQkJc3dpdGNoIChnbWNoX2N0cmwgJiBJODMwX0dNQ0hfR01TX01BU0spIHsKLQkJY2FzZSBJ ODMwX0dNQ0hfR01TX1NUT0xFTl81MTI6Ci0JCQlzdG9sZW5fc2l6ZSA9IEtCKDUxMik7Ci0JCQli cmVhazsKLQkJY2FzZSBJODMwX0dNQ0hfR01TX1NUT0xFTl8xMDI0OgotCQkJc3RvbGVuX3NpemUg PSBNQigxKTsKLQkJCWJyZWFrOwotCQljYXNlIEk4MzBfR01DSF9HTVNfU1RPTEVOXzgxOTI6Ci0J CQlzdG9sZW5fc2l6ZSA9IE1CKDgpOwotCQkJYnJlYWs7Ci0JCWNhc2UgSTgzMF9HTUNIX0dNU19M T0NBTDoKLQkJCXJkY3QgPSByZWFkYihpbnRlbF9wcml2YXRlLnJlZ2lzdGVycytJODMwX1JEUkFN X0NIQU5ORUxfVFlQRSk7Ci0JCQlzdG9sZW5fc2l6ZSA9IChJODMwX1JEUkFNX05EKHJkY3QpICsg MSkgKgotCQkJCQlNQihkZHRbSTgzMF9SRFJBTV9ERFQocmRjdCldKTsKLQkJCWxvY2FsID0gMTsK LQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJc3RvbGVuX3NpemUgPSAwOwotCQkJYnJlYWs7Ci0J CX0KLQl9IGVsc2UgewotCQlzd2l0Y2ggKGdtY2hfY3RybCAmIEk4NTVfR01DSF9HTVNfTUFTSykg ewotCQljYXNlIEk4NTVfR01DSF9HTVNfU1RPTEVOXzFNOgotCQkJc3RvbGVuX3NpemUgPSBNQigx KTsKLQkJCWJyZWFrOwotCQljYXNlIEk4NTVfR01DSF9HTVNfU1RPTEVOXzRNOgotCQkJc3RvbGVu X3NpemUgPSBNQig0KTsKLQkJCWJyZWFrOwotCQljYXNlIEk4NTVfR01DSF9HTVNfU1RPTEVOXzhN OgotCQkJc3RvbGVuX3NpemUgPSBNQig4KTsKLQkJCWJyZWFrOwotCQljYXNlIEk4NTVfR01DSF9H TVNfU1RPTEVOXzE2TToKLQkJCXN0b2xlbl9zaXplID0gTUIoMTYpOwotCQkJYnJlYWs7Ci0JCWNh c2UgSTg1NV9HTUNIX0dNU19TVE9MRU5fMzJNOgotCQkJc3RvbGVuX3NpemUgPSBNQigzMik7Ci0J CQlicmVhazsKLQkJY2FzZSBJOTE1X0dNQ0hfR01TX1NUT0xFTl80OE06Ci0JCQlzdG9sZW5fc2l6 ZSA9IE1CKDQ4KTsKLQkJCWJyZWFrOwotCQljYXNlIEk5MTVfR01DSF9HTVNfU1RPTEVOXzY0TToK LQkJCXN0b2xlbl9zaXplID0gTUIoNjQpOwotCQkJYnJlYWs7Ci0JCWNhc2UgRzMzX0dNQ0hfR01T X1NUT0xFTl8xMjhNOgotCQkJc3RvbGVuX3NpemUgPSBNQigxMjgpOwotCQkJYnJlYWs7Ci0JCWNh c2UgRzMzX0dNQ0hfR01TX1NUT0xFTl8yNTZNOgotCQkJc3RvbGVuX3NpemUgPSBNQigyNTYpOwot CQkJYnJlYWs7Ci0JCWNhc2UgSU5URUxfR01DSF9HTVNfU1RPTEVOXzk2TToKLQkJCXN0b2xlbl9z aXplID0gTUIoOTYpOwotCQkJYnJlYWs7Ci0JCWNhc2UgSU5URUxfR01DSF9HTVNfU1RPTEVOXzE2 ME06Ci0JCQlzdG9sZW5fc2l6ZSA9IE1CKDE2MCk7Ci0JCQlicmVhazsKLQkJY2FzZSBJTlRFTF9H TUNIX0dNU19TVE9MRU5fMjI0TToKLQkJCXN0b2xlbl9zaXplID0gTUIoMjI0KTsKLQkJCWJyZWFr OwotCQljYXNlIElOVEVMX0dNQ0hfR01TX1NUT0xFTl8zNTJNOgotCQkJc3RvbGVuX3NpemUgPSBN QigzNTIpOwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlzdG9sZW5fc2l6ZSA9IDA7Ci0JCQli cmVhazsKLQkJfQotCX0KLQotCWlmIChzdG9sZW5fc2l6ZSA+IDApIHsKLQkJZGV2X2luZm8oJmlu dGVsX3ByaXZhdGUuYnJpZGdlX2Rldi0+ZGV2LCAiZGV0ZWN0ZWQgJWxsdUsgJXMgbWVtb3J5XG4i LAotCQkgICAgICAgKHU2NClzdG9sZW5fc2l6ZSAvIEtCKDEpLCBsb2NhbCA/ICJsb2NhbCIgOiAi c3RvbGVuIik7Ci0JfSBlbHNlIHsKLQkJZGV2X2luZm8oJmludGVsX3ByaXZhdGUuYnJpZGdlX2Rl di0+ZGV2LAotCQkgICAgICAgIm5vIHByZS1hbGxvY2F0ZWQgdmlkZW8gbWVtb3J5IGRldGVjdGVk XG4iKTsKLQkJc3RvbGVuX3NpemUgPSAwOwotCX0KLQotCXJldHVybiBzdG9sZW5fc2l6ZTsKLX0K LQotc3RhdGljIHZvaWQgaTk2NV9hZGp1c3RfcGdldGJsX3NpemUodW5zaWduZWQgaW50IHNpemVf ZmxhZykKLXsKLQl1MzIgcGdldGJsX2N0bCwgcGdldGJsX2N0bDI7Ci0KLQkvKiBlbnN1cmUgdGhh dCBwcGd0dCBpcyBkaXNhYmxlZCAqLwotCXBnZXRibF9jdGwyID0gcmVhZGwoaW50ZWxfcHJpdmF0 ZS5yZWdpc3RlcnMrSTk2NV9QR0VUQkxfQ1RMMik7Ci0JcGdldGJsX2N0bDIgJj0gfkk4MTBfUEdF VEJMX0VOQUJMRUQ7Ci0Jd3JpdGVsKHBnZXRibF9jdGwyLCBpbnRlbF9wcml2YXRlLnJlZ2lzdGVy cytJOTY1X1BHRVRCTF9DVEwyKTsKLQotCS8qIHdyaXRlIHRoZSBuZXcgZ2d0dCBzaXplICovCi0J cGdldGJsX2N0bCA9IHJlYWRsKGludGVsX3ByaXZhdGUucmVnaXN0ZXJzK0k4MTBfUEdFVEJMX0NU TCk7Ci0JcGdldGJsX2N0bCAmPSB+STk2NV9QR0VUQkxfU0laRV9NQVNLOwotCXBnZXRibF9jdGwg fD0gc2l6ZV9mbGFnOwotCXdyaXRlbChwZ2V0YmxfY3RsLCBpbnRlbF9wcml2YXRlLnJlZ2lzdGVy cytJODEwX1BHRVRCTF9DVEwpOwotfQotCi1zdGF0aWMgdW5zaWduZWQgaW50IGk5NjVfZ3R0X3Rv dGFsX2VudHJpZXModm9pZCkKLXsKLQlpbnQgc2l6ZTsKLQl1MzIgcGdldGJsX2N0bDsKLQl1MTYg Z21jaF9jdGw7Ci0KLQlwY2lfcmVhZF9jb25maWdfd29yZChpbnRlbF9wcml2YXRlLmJyaWRnZV9k ZXYsCi0JCQkgICAgIEk4MzBfR01DSF9DVFJMLCAmZ21jaF9jdGwpOwotCi0JaWYgKElOVEVMX0dU VF9HRU4gPT0gNSkgewotCQlzd2l0Y2ggKGdtY2hfY3RsICYgRzR4X0dNQ0hfU0laRV9NQVNLKSB7 Ci0JCWNhc2UgRzR4X0dNQ0hfU0laRV8xTToKLQkJY2FzZSBHNHhfR01DSF9TSVpFX1ZUXzFNOgot CQkJaTk2NV9hZGp1c3RfcGdldGJsX3NpemUoSTk2NV9QR0VUQkxfU0laRV8xTUIpOwotCQkJYnJl YWs7Ci0JCWNhc2UgRzR4X0dNQ0hfU0laRV9WVF8xXzVNOgotCQkJaTk2NV9hZGp1c3RfcGdldGJs X3NpemUoSTk2NV9QR0VUQkxfU0laRV8xXzVNQik7Ci0JCQlicmVhazsKLQkJY2FzZSBHNHhfR01D SF9TSVpFXzJNOgotCQljYXNlIEc0eF9HTUNIX1NJWkVfVlRfMk06Ci0JCQlpOTY1X2FkanVzdF9w Z2V0Ymxfc2l6ZShJOTY1X1BHRVRCTF9TSVpFXzJNQik7Ci0JCQlicmVhazsKLQkJfQotCX0KLQot CXBnZXRibF9jdGwgPSByZWFkbChpbnRlbF9wcml2YXRlLnJlZ2lzdGVycytJODEwX1BHRVRCTF9D VEwpOwotCi0Jc3dpdGNoIChwZ2V0YmxfY3RsICYgSTk2NV9QR0VUQkxfU0laRV9NQVNLKSB7Ci0J Y2FzZSBJOTY1X1BHRVRCTF9TSVpFXzEyOEtCOgotCQlzaXplID0gS0IoMTI4KTsKLQkJYnJlYWs7 Ci0JY2FzZSBJOTY1X1BHRVRCTF9TSVpFXzI1NktCOgotCQlzaXplID0gS0IoMjU2KTsKLQkJYnJl YWs7Ci0JY2FzZSBJOTY1X1BHRVRCTF9TSVpFXzUxMktCOgotCQlzaXplID0gS0IoNTEyKTsKLQkJ YnJlYWs7Ci0JLyogR1RUIHBhZ2V0YWJsZSBzaXplcyBiaWdnZXIgdGhhbiA1MTJLQiBhcmUgbm90 IHBvc3NpYmxlIG9uIEczMyEgKi8KLQljYXNlIEk5NjVfUEdFVEJMX1NJWkVfMU1COgotCQlzaXpl ID0gS0IoMTAyNCk7Ci0JCWJyZWFrOwotCWNhc2UgSTk2NV9QR0VUQkxfU0laRV8yTUI6Ci0JCXNp emUgPSBLQigyMDQ4KTsKLQkJYnJlYWs7Ci0JY2FzZSBJOTY1X1BHRVRCTF9TSVpFXzFfNU1COgot CQlzaXplID0gS0IoMTAyNCArIDUxMik7Ci0JCWJyZWFrOwotCWRlZmF1bHQ6Ci0JCWRldl9pbmZv KCZpbnRlbF9wcml2YXRlLnBjaWRldi0+ZGV2LAotCQkJICJ1bmtub3duIHBhZ2UgdGFibGUgc2l6 ZSwgYXNzdW1pbmcgNTEyS0JcbiIpOwotCQlzaXplID0gS0IoNTEyKTsKLQl9Ci0KLQlyZXR1cm4g c2l6ZS80OworCXJldHVybiAwOyAvKiBubyBzdG9sZW4gbWVtIG9uIGk4MXggKi8KIH0KIAogc3Rh dGljIHVuc2lnbmVkIGludCBpbnRlbF9ndHRfdG90YWxfZW50cmllcyh2b2lkKQogewotCWlmIChJ U19HMzMgfHwgSU5URUxfR1RUX0dFTiA9PSA0IHx8IElOVEVMX0dUVF9HRU4gPT0gNSkKLQkJcmV0 dXJuIGk5NjVfZ3R0X3RvdGFsX2VudHJpZXMoKTsKLQllbHNlIHsKLQkJLyogT24gcHJldmlvdXMg aGFyZHdhcmUsIHRoZSBHVFQgc2l6ZSB3YXMganVzdCB3aGF0IHdhcwotCQkgKiByZXF1aXJlZCB0 byBtYXAgdGhlIGFwZXJ0dXJlLgotCQkgKi8KLQkJcmV0dXJuIGludGVsX3ByaXZhdGUuZ3R0X21h cHBhYmxlX2VudHJpZXM7Ci0JfQorCXJldHVybiBpbnRlbF9wcml2YXRlLmd0dF9tYXBwYWJsZV9l bnRyaWVzOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX2d0dF9tYXBwYWJsZV9lbnRy aWVzKHZvaWQpCiB7CiAJdW5zaWduZWQgaW50IGFwZXJ0dXJlX3NpemU7CisJdTMyIHNtcmFtX21p c2NjOwogCi0JaWYgKElOVEVMX0dUVF9HRU4gPT0gMSkgewotCQl1MzIgc21yYW1fbWlzY2M7CisJ cGNpX3JlYWRfY29uZmlnX2R3b3JkKGludGVsX3ByaXZhdGUuYnJpZGdlX2RldiwKKwkJCSAgICAg IEk4MTBfU01SQU1fTUlTQ0MsICZzbXJhbV9taXNjYyk7CiAKLQkJcGNpX3JlYWRfY29uZmlnX2R3 b3JkKGludGVsX3ByaXZhdGUuYnJpZGdlX2RldiwKLQkJCQkgICAgICBJODEwX1NNUkFNX01JU0ND LCAmc21yYW1fbWlzY2MpOwotCi0JCWlmICgoc21yYW1fbWlzY2MgJiBJODEwX0dGWF9NRU1fV0lO X1NJWkUpCi0JCQkJPT0gSTgxMF9HRlhfTUVNX1dJTl8zMk0pCi0JCQlhcGVydHVyZV9zaXplID0g TUIoMzIpOwotCQllbHNlCi0JCQlhcGVydHVyZV9zaXplID0gTUIoNjQpOwotCX0gZWxzZSBpZiAo SU5URUxfR1RUX0dFTiA9PSAyKSB7Ci0JCXUxNiBnbWNoX2N0cmw7Ci0KLQkJcGNpX3JlYWRfY29u ZmlnX3dvcmQoaW50ZWxfcHJpdmF0ZS5icmlkZ2VfZGV2LAotCQkJCSAgICAgSTgzMF9HTUNIX0NU UkwsICZnbWNoX2N0cmwpOwotCi0JCWlmICgoZ21jaF9jdHJsICYgSTgzMF9HTUNIX01FTV9NQVNL KSA9PSBJODMwX0dNQ0hfTUVNXzY0TSkKLQkJCWFwZXJ0dXJlX3NpemUgPSBNQig2NCk7Ci0JCWVs c2UKLQkJCWFwZXJ0dXJlX3NpemUgPSBNQigxMjgpOwotCX0gZWxzZSB7Ci0JCS8qIDl4eCBzdXBw b3J0cyBsYXJnZSBzaXplcywganVzdCBsb29rIGF0IHRoZSBsZW5ndGggKi8KLQkJYXBlcnR1cmVf c2l6ZSA9IHBjaV9yZXNvdXJjZV9sZW4oaW50ZWxfcHJpdmF0ZS5wY2lkZXYsIDIpOwotCX0KKwlp ZiAoKHNtcmFtX21pc2NjICYgSTgxMF9HRlhfTUVNX1dJTl9TSVpFKQorCQkJPT0gSTgxMF9HRlhf TUVNX1dJTl8zMk0pCisJCWFwZXJ0dXJlX3NpemUgPSBNQigzMik7CisJZWxzZQorCQlhcGVydHVy ZV9zaXplID0gTUIoNjQpOwogCiAJcmV0dXJuIGFwZXJ0dXJlX3NpemUgPj4gUEFHRV9TSElGVDsK IH0KQEAgLTU4NiwxNyArMzg5LDcgQEAgc3RhdGljIGlubGluZSBpbnQgbmVlZHNfaWxrX3Z0ZF93 YSh2b2lkKQogCiBzdGF0aWMgYm9vbCBpbnRlbF9ndHRfY2FuX3djKHZvaWQpCiB7Ci0JaWYgKElO VEVMX0dUVF9HRU4gPD0gMikKLQkJcmV0dXJuIGZhbHNlOwotCi0JaWYgKElOVEVMX0dUVF9HRU4g Pj0gNikKLQkJcmV0dXJuIGZhbHNlOwotCi0JLyogUmVwb3J0cyBvZiBtYWpvciBjb3JydXB0aW9u IHdpdGggSUxLIHZ0J2QgZW5hYmxlZCAqLwotCWlmIChuZWVkc19pbGtfdnRkX3dhKCkpCi0JCXJl dHVybiBmYWxzZTsKLQotCXJldHVybiB0cnVlOworCXJldHVybiBmYWxzZTsKIH0KIAogc3RhdGlj IGludCBpbnRlbF9ndHRfaW5pdCh2b2lkKQpAQCAtNjE2LDggKzQwOSw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfZ3R0X2luaXQodm9pZCkKIAkJcmVhZGwoaW50ZWxfcHJpdmF0ZS5yZWdpc3RlcnMrSTgx MF9QR0VUQkxfQ1RMKQogCQkJJiB+STgxMF9QR0VUQkxfRU5BQkxFRDsKIAkvKiB3ZSBvbmx5IGV2 ZXIgcmVzdG9yZSB0aGUgcmVnaXN0ZXIgd2hlbiBlbmFibGluZyB0aGUgUEdUQkwuLi4gKi8KLQlp ZiAoSEFTX1BHVEJMX0VOKQotCQlpbnRlbF9wcml2YXRlLlBHRVRCTF9zYXZlIHw9IEk4MTBfUEdF VEJMX0VOQUJMRUQ7CisgICAgICAgIGludGVsX3ByaXZhdGUuUEdFVEJMX3NhdmUgfD0gSTgxMF9Q R0VUQkxfRU5BQkxFRDsKIAogCWRldl9pbmZvKCZpbnRlbF9wcml2YXRlLmJyaWRnZV9kZXYtPmRl diwKIAkJCSJkZXRlY3RlZCBndHQgc2l6ZTogJWRLIHRvdGFsLCAlZEsgbWFwcGFibGVcbiIsCkBA IC02NDUsNyArNDM3LDcgQEAgc3RhdGljIGludCBpbnRlbF9ndHRfaW5pdCh2b2lkKQogCiAJaW50 ZWxfcHJpdmF0ZS5zdG9sZW5fc2l6ZSA9IGludGVsX2d0dF9zdG9sZW5fc2l6ZSgpOwogCi0JaW50 ZWxfcHJpdmF0ZS5uZWVkc19kbWFyID0gVVNFX1BDSV9ETUFfQVBJICYmIElOVEVMX0dUVF9HRU4g PiAyOworCWludGVsX3ByaXZhdGUubmVlZHNfZG1hciA9IDA7IC8qIFhYWCAqLwogCiAJcmV0ID0g aW50ZWxfZ3R0X3NldHVwX3NjcmF0Y2hfcGFnZSgpOwogCWlmIChyZXQgIT0gMCkgewpAQCAtNjUz LDEwICs0NDUsNyBAQCBzdGF0aWMgaW50IGludGVsX2d0dF9pbml0KHZvaWQpCiAJCXJldHVybiBy ZXQ7CiAJfQogCi0JaWYgKElOVEVMX0dUVF9HRU4gPD0gMikKLQkJYmFyID0gSTgxMF9HTUFEUl9C QVI7Ci0JZWxzZQotCQliYXIgPSBJOTE1X0dNQURSX0JBUjsKKwliYXIgPSBJODEwX0dNQURSX0JB UjsKIAogCWludGVsX3ByaXZhdGUuZ21hX2J1c19hZGRyID0gcGNpX2J1c19hZGRyZXNzKGludGVs X3ByaXZhdGUucGNpZGV2LCBiYXIpOwogCXJldHVybiAwOwpAQCAtNjkxLDExNiArNDgwLDIzIEBA IHN0YXRpYyBpbnQgaW50ZWxfZmFrZV9hZ3BfZmV0Y2hfc2l6ZSh2b2lkKQogfQogI2VuZGlmCiAK LXN0YXRpYyB2b2lkIGk4MzBfY2xlYW51cCh2b2lkKQotewotfQotCi0vKiBUaGUgY2hpcHNldF9m bHVzaCBpbnRlcmZhY2UgbmVlZHMgdG8gZ2V0IGRhdGEgdGhhdCBoYXMgYWxyZWFkeSBiZWVuCi0g KiBmbHVzaGVkIG91dCBvZiB0aGUgQ1BVIGFsbCB0aGUgd2F5IG91dCB0byBtYWluIG1lbW9yeSwg YmVjYXVzZSB0aGUgR1BVCi0gKiBkb2Vzbid0IHNub29wIHRob3NlIGJ1ZmZlcnMuCi0gKgotICog VGhlIDh4eCBzZXJpZXMgZG9lc24ndCBoYXZlIHRoZSBzYW1lIGxvdmVseSBpbnRlcmZhY2UgZm9y IGZsdXNoaW5nIHRoZQotICogY2hpcHNldCB3cml0ZSBidWZmZXJzIHRoYXQgdGhlIGxhdGVyIGNo aXBzIGRvLiBBY2NvcmRpbmcgdG8gdGhlIDg2NQotICogc3BlY3MsIGl0J3MgNjQgb2N0d29yZHMs IG9yIDFLQi4gIFNvLCB0byBnZXQgdGhvc2UgcHJldmlvdXMgdGhpbmdzIGluCi0gKiB0aGF0IGJ1 ZmZlciBvdXQsIHdlIGp1c3QgZmlsbCAxS0IgYW5kIGNsZmx1c2ggaXQgb3V0LCBvbiB0aGUgYXNz dW1wdGlvbgotICogdGhhdCBpdCdsbCBwdXNoIHdoYXRldmVyIHdhcyBpbiB0aGVyZSBvdXQuICBJ dCBhcHBlYXJzIHRvIHdvcmsuCi0gKi8KLXN0YXRpYyB2b2lkIGk4MzBfY2hpcHNldF9mbHVzaCh2 b2lkKQotewotCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZm aWVzKDEwMDApOwotCi0JLyogRm9yY2libHkgZXZpY3QgZXZlcnl0aGluZyBmcm9tIHRoZSBDUFUg d3JpdGUgYnVmZmVycy4KLQkgKiBjbGZsdXNoIGFwcGVhcnMgdG8gYmUgaW5zdWZmaWNpZW50Lgot CSAqLwotCXdiaW52ZF9vbl9hbGxfY3B1cygpOwotCi0JLyogTm93IHdlJ3ZlIG9ubHkgc2VlbiBk b2N1bWVudHMgZm9yIHRoaXMgbWFnaWMgYml0IG9uIDg1NUdNLAotCSAqIHdlIGhvcGUgaXQgZXhp c3RzIGZvciB0aGUgb3RoZXIgZ2VuMiBjaGlwc2V0cy4uLgotCSAqCi0JICogQWxzbyB3b3JrcyBh cyBhZHZlcnRpc2VkIG9uIG15IDg0NUcuCi0JICovCi0Jd3JpdGVsKHJlYWRsKGludGVsX3ByaXZh dGUucmVnaXN0ZXJzK0k4MzBfSElDKSB8ICgxPDwzMSksCi0JICAgICAgIGludGVsX3ByaXZhdGUu cmVnaXN0ZXJzK0k4MzBfSElDKTsKLQotCXdoaWxlIChyZWFkbChpbnRlbF9wcml2YXRlLnJlZ2lz dGVycytJODMwX0hJQykgJiAoMTw8MzEpKSB7Ci0JCWlmICh0aW1lX2FmdGVyKGppZmZpZXMsIHRp bWVvdXQpKQotCQkJYnJlYWs7Ci0KLQkJdWRlbGF5KDUwKTsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lk IGk4MzBfd3JpdGVfZW50cnkoZG1hX2FkZHJfdCBhZGRyLCB1bnNpZ25lZCBpbnQgZW50cnksCi0J CQkgICAgIHVuc2lnbmVkIGludCBmbGFncykKLXsKLQl1MzIgcHRlX2ZsYWdzID0gSTgxMF9QVEVf VkFMSUQ7Ci0KLQlpZiAoZmxhZ3MgPT0gIEFHUF9VU0VSX0NBQ0hFRF9NRU1PUlkpCi0JCXB0ZV9m bGFncyB8PSBJODMwX1BURV9TWVNURU1fQ0FDSEVEOwotCi0Jd3JpdGVsX3JlbGF4ZWQoYWRkciB8 IHB0ZV9mbGFncywgaW50ZWxfcHJpdmF0ZS5ndHQgKyBlbnRyeSk7Ci19Ci0KIGJvb2wgaW50ZWxf ZW5hYmxlX2d0dCh2b2lkKQogewogCXU4IF9faW9tZW0gKnJlZzsKIAotCWlmIChJTlRFTF9HVFRf R0VOID09IDIpIHsKLQkJdTE2IGdtY2hfY3RybDsKLQotCQlwY2lfcmVhZF9jb25maWdfd29yZChp bnRlbF9wcml2YXRlLmJyaWRnZV9kZXYsCi0JCQkJICAgICBJODMwX0dNQ0hfQ1RSTCwgJmdtY2hf Y3RybCk7Ci0JCWdtY2hfY3RybCB8PSBJODMwX0dNQ0hfRU5BQkxFRDsKLQkJcGNpX3dyaXRlX2Nv bmZpZ193b3JkKGludGVsX3ByaXZhdGUuYnJpZGdlX2RldiwKLQkJCQkgICAgICBJODMwX0dNQ0hf Q1RSTCwgZ21jaF9jdHJsKTsKLQotCQlwY2lfcmVhZF9jb25maWdfd29yZChpbnRlbF9wcml2YXRl LmJyaWRnZV9kZXYsCi0JCQkJICAgICBJODMwX0dNQ0hfQ1RSTCwgJmdtY2hfY3RybCk7Ci0JCWlm ICgoZ21jaF9jdHJsICYgSTgzMF9HTUNIX0VOQUJMRUQpID09IDApIHsKLQkJCWRldl9lcnIoJmlu dGVsX3ByaXZhdGUucGNpZGV2LT5kZXYsCi0JCQkJImZhaWxlZCB0byBlbmFibGUgdGhlIEdUVDog R01DSF9DVFJMPSV4XG4iLAotCQkJCWdtY2hfY3RybCk7Ci0JCQlyZXR1cm4gZmFsc2U7Ci0JCX0K LQl9Ci0KLQkvKiBPbiB0aGUgcmVzdW1lIHBhdGggd2UgbWF5IGJlIGFkanVzdGluZyB0aGUgUEdU QkwgdmFsdWUsIHNvCi0JICogYmUgcGFyYW5vaWQgYW5kIGZsdXNoIGFsbCBjaGlwc2V0IHdyaXRl IGJ1ZmZlcnMuLi4KLQkgKi8KLQlpZiAoSU5URUxfR1RUX0dFTiA+PSAzKQotCQl3cml0ZWwoMCwg aW50ZWxfcHJpdmF0ZS5yZWdpc3RlcnMrR0ZYX0ZMU0hfQ05UTCk7Ci0KIAlyZWcgPSBpbnRlbF9w cml2YXRlLnJlZ2lzdGVycytJODEwX1BHRVRCTF9DVEw7CiAJd3JpdGVsKGludGVsX3ByaXZhdGUu UEdFVEJMX3NhdmUsIHJlZyk7Ci0JaWYgKEhBU19QR1RCTF9FTiAmJiAocmVhZGwocmVnKSAmIEk4 MTBfUEdFVEJMX0VOQUJMRUQpID09IDApIHsKKwlpZiAoKHJlYWRsKHJlZykgJiBJODEwX1BHRVRC TF9FTkFCTEVEKSA9PSAwKSB7CiAJCWRldl9lcnIoJmludGVsX3ByaXZhdGUucGNpZGV2LT5kZXYs CiAJCQkiZmFpbGVkIHRvIGVuYWJsZSB0aGUgR1RUOiBQR0VUQkw9JXggW2V4cGVjdGVkICV4XVxu IiwKIAkJCXJlYWRsKHJlZyksIGludGVsX3ByaXZhdGUuUEdFVEJMX3NhdmUpOwogCQlyZXR1cm4g ZmFsc2U7CiAJfQogCi0JaWYgKElOVEVMX0dUVF9HRU4gPj0gMykKLQkJd3JpdGVsKDAsIGludGVs X3ByaXZhdGUucmVnaXN0ZXJzK0dGWF9GTFNIX0NOVEwpOwotCiAJcmV0dXJuIHRydWU7CiB9CiBF WFBPUlRfU1lNQk9MKGludGVsX2VuYWJsZV9ndHQpOwogCi1zdGF0aWMgaW50IGk4MzBfc2V0dXAo dm9pZCkKLXsKLQlwaHlzX2FkZHJfdCByZWdfYWRkcjsKLQotCXJlZ19hZGRyID0gcGNpX3Jlc291 cmNlX3N0YXJ0KGludGVsX3ByaXZhdGUucGNpZGV2LCBJODEwX01NQURSX0JBUik7Ci0KLQlpbnRl bF9wcml2YXRlLnJlZ2lzdGVycyA9IGlvcmVtYXAocmVnX2FkZHIsIEtCKDY0KSk7Ci0JaWYgKCFp bnRlbF9wcml2YXRlLnJlZ2lzdGVycykKLQkJcmV0dXJuIC1FTk9NRU07Ci0KLQlpbnRlbF9wcml2 YXRlLmd0dF9waHlzX2FkZHIgPSByZWdfYWRkciArIEk4MTBfUFRFX0JBU0U7Ci0KLQlyZXR1cm4g MDsKLX0KLQogI2lmIElTX0VOQUJMRUQoQ09ORklHX0FHUF9JTlRFTCkKIHN0YXRpYyBpbnQgaW50 ZWxfZmFrZV9hZ3BfY3JlYXRlX2dhdHRfdGFibGUoc3RydWN0IGFncF9icmlkZ2VfZGF0YSAqYnJp ZGdlKQogewpAQCAtOTA1LDcgKzYwMSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZmFrZV9hZ3BfaW5z ZXJ0X2VudHJpZXMoc3RydWN0IGFncF9tZW1vcnkgKm1lbSwKIAkJaW50ZWxfcHJpdmF0ZS5jbGVh cl9mYWtlX2FncCA9IGZhbHNlOwogCX0KIAotCWlmIChJTlRFTF9HVFRfR0VOID09IDEgJiYgdHlw ZSA9PSBBR1BfRENBQ0hFX01FTU9SWSkKKwlpZiAodHlwZSA9PSBBR1BfRENBQ0hFX01FTU9SWSkK IAkJcmV0dXJuIGk4MTBfaW5zZXJ0X2RjYWNoZV9lbnRyaWVzKG1lbSwgcGdfc3RhcnQsIHR5cGUp OwogCiAJaWYgKG1lbS0+cGFnZV9jb3VudCA9PSAwKQpAQCAtOTgwLDcgKzY3Niw3IEBAIHN0YXRp YyBzdHJ1Y3QgYWdwX21lbW9yeSAqaW50ZWxfZmFrZV9hZ3BfYWxsb2NfYnlfdHlwZShzaXplX3Qg cGdfY291bnQsCiB7CiAJc3RydWN0IGFncF9tZW1vcnkgKm5ldzsKIAotCWlmICh0eXBlID09IEFH UF9EQ0FDSEVfTUVNT1JZICYmIElOVEVMX0dUVF9HRU4gPT0gMSkgeworCWlmICh0eXBlID09IEFH UF9EQ0FDSEVfTUVNT1JZKSB7CiAJCWlmIChwZ19jb3VudCAhPSBpbnRlbF9wcml2YXRlLm51bV9k Y2FjaGVfZW50cmllcykKIAkJCXJldHVybiBOVUxMOwogCkBAIC0xMDAxLDE1OCArNjk3LDYgQEAg c3RhdGljIHN0cnVjdCBhZ3BfbWVtb3J5ICppbnRlbF9mYWtlX2FncF9hbGxvY19ieV90eXBlKHNp emVfdCBwZ19jb3VudCwKIH0KICNlbmRpZgogCi1zdGF0aWMgaW50IGludGVsX2FsbG9jX2NoaXBz ZXRfZmx1c2hfcmVzb3VyY2Uodm9pZCkKLXsKLQlpbnQgcmV0OwotCXJldCA9IHBjaV9idXNfYWxs b2NfcmVzb3VyY2UoaW50ZWxfcHJpdmF0ZS5icmlkZ2VfZGV2LT5idXMsICZpbnRlbF9wcml2YXRl LmlmcF9yZXNvdXJjZSwgUEFHRV9TSVpFLAotCQkJCSAgICAgUEFHRV9TSVpFLCBQQ0lCSU9TX01J Tl9NRU0sIDAsCi0JCQkJICAgICBwY2liaW9zX2FsaWduX3Jlc291cmNlLCBpbnRlbF9wcml2YXRl LmJyaWRnZV9kZXYpOwotCi0JcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHZvaWQgaW50ZWxfaTkx NV9zZXR1cF9jaGlwc2V0X2ZsdXNoKHZvaWQpCi17Ci0JaW50IHJldDsKLQl1MzIgdGVtcDsKLQot CXBjaV9yZWFkX2NvbmZpZ19kd29yZChpbnRlbF9wcml2YXRlLmJyaWRnZV9kZXYsIEk5MTVfSUZQ QUREUiwgJnRlbXApOwotCWlmICghKHRlbXAgJiAweDEpKSB7Ci0JCWludGVsX2FsbG9jX2NoaXBz ZXRfZmx1c2hfcmVzb3VyY2UoKTsKLQkJaW50ZWxfcHJpdmF0ZS5yZXNvdXJjZV92YWxpZCA9IDE7 Ci0JCXBjaV93cml0ZV9jb25maWdfZHdvcmQoaW50ZWxfcHJpdmF0ZS5icmlkZ2VfZGV2LCBJOTE1 X0lGUEFERFIsIChpbnRlbF9wcml2YXRlLmlmcF9yZXNvdXJjZS5zdGFydCAmIDB4ZmZmZmZmZmYp IHwgMHgxKTsKLQl9IGVsc2UgewotCQl0ZW1wICY9IH4xOwotCi0JCWludGVsX3ByaXZhdGUucmVz b3VyY2VfdmFsaWQgPSAxOwotCQlpbnRlbF9wcml2YXRlLmlmcF9yZXNvdXJjZS5zdGFydCA9IHRl bXA7Ci0JCWludGVsX3ByaXZhdGUuaWZwX3Jlc291cmNlLmVuZCA9IHRlbXAgKyBQQUdFX1NJWkU7 Ci0JCXJldCA9IHJlcXVlc3RfcmVzb3VyY2UoJmlvbWVtX3Jlc291cmNlLCAmaW50ZWxfcHJpdmF0 ZS5pZnBfcmVzb3VyY2UpOwotCQkvKiBzb21lIEJJT1NlcyByZXNlcnZlIHRoaXMgYXJlYSBpbiBh IHBucCBzb21lIGRvbid0ICovCi0JCWlmIChyZXQpCi0JCQlpbnRlbF9wcml2YXRlLnJlc291cmNl X3ZhbGlkID0gMDsKLQl9Ci19Ci0KLXN0YXRpYyB2b2lkIGludGVsX2k5NjVfZzMzX3NldHVwX2No aXBzZXRfZmx1c2godm9pZCkKLXsKLQl1MzIgdGVtcF9oaSwgdGVtcF9sbzsKLQlpbnQgcmV0Owot Ci0JcGNpX3JlYWRfY29uZmlnX2R3b3JkKGludGVsX3ByaXZhdGUuYnJpZGdlX2RldiwgSTk2NV9J RlBBRERSICsgNCwgJnRlbXBfaGkpOwotCXBjaV9yZWFkX2NvbmZpZ19kd29yZChpbnRlbF9wcml2 YXRlLmJyaWRnZV9kZXYsIEk5NjVfSUZQQUREUiwgJnRlbXBfbG8pOwotCi0JaWYgKCEodGVtcF9s byAmIDB4MSkpIHsKLQotCQlpbnRlbF9hbGxvY19jaGlwc2V0X2ZsdXNoX3Jlc291cmNlKCk7Ci0K LQkJaW50ZWxfcHJpdmF0ZS5yZXNvdXJjZV92YWxpZCA9IDE7Ci0JCXBjaV93cml0ZV9jb25maWdf ZHdvcmQoaW50ZWxfcHJpdmF0ZS5icmlkZ2VfZGV2LCBJOTY1X0lGUEFERFIgKyA0LAotCQkJdXBw ZXJfMzJfYml0cyhpbnRlbF9wcml2YXRlLmlmcF9yZXNvdXJjZS5zdGFydCkpOwotCQlwY2lfd3Jp dGVfY29uZmlnX2R3b3JkKGludGVsX3ByaXZhdGUuYnJpZGdlX2RldiwgSTk2NV9JRlBBRERSLCAo aW50ZWxfcHJpdmF0ZS5pZnBfcmVzb3VyY2Uuc3RhcnQgJiAweGZmZmZmZmZmKSB8IDB4MSk7Ci0J fSBlbHNlIHsKLQkJdTY0IGw2NDsKLQotCQl0ZW1wX2xvICY9IH4weDE7Ci0JCWw2NCA9ICgodTY0 KXRlbXBfaGkgPDwgMzIpIHwgdGVtcF9sbzsKLQotCQlpbnRlbF9wcml2YXRlLnJlc291cmNlX3Zh bGlkID0gMTsKLQkJaW50ZWxfcHJpdmF0ZS5pZnBfcmVzb3VyY2Uuc3RhcnQgPSBsNjQ7Ci0JCWlu dGVsX3ByaXZhdGUuaWZwX3Jlc291cmNlLmVuZCA9IGw2NCArIFBBR0VfU0laRTsKLQkJcmV0ID0g cmVxdWVzdF9yZXNvdXJjZSgmaW9tZW1fcmVzb3VyY2UsICZpbnRlbF9wcml2YXRlLmlmcF9yZXNv dXJjZSk7Ci0JCS8qIHNvbWUgQklPU2VzIHJlc2VydmUgdGhpcyBhcmVhIGluIGEgcG5wIHNvbWUg ZG9uJ3QgKi8KLQkJaWYgKHJldCkKLQkJCWludGVsX3ByaXZhdGUucmVzb3VyY2VfdmFsaWQgPSAw OwotCX0KLX0KLQotc3RhdGljIHZvaWQgaW50ZWxfaTl4eF9zZXR1cF9mbHVzaCh2b2lkKQotewot CS8qIHJldHVybiBpZiBhbHJlYWR5IGNvbmZpZ3VyZWQgKi8KLQlpZiAoaW50ZWxfcHJpdmF0ZS5p ZnBfcmVzb3VyY2Uuc3RhcnQpCi0JCXJldHVybjsKLQotCWlmIChJTlRFTF9HVFRfR0VOID09IDYp Ci0JCXJldHVybjsKLQotCS8qIHNldHVwIGEgcmVzb3VyY2UgZm9yIHRoaXMgb2JqZWN0ICovCi0J aW50ZWxfcHJpdmF0ZS5pZnBfcmVzb3VyY2UubmFtZSA9ICJJbnRlbCBGbHVzaCBQYWdlIjsKLQlp bnRlbF9wcml2YXRlLmlmcF9yZXNvdXJjZS5mbGFncyA9IElPUkVTT1VSQ0VfTUVNOwotCi0JLyog U2V0dXAgY2hpcHNldCBmbHVzaCBmb3IgOTE1ICovCi0JaWYgKElTX0czMyB8fCBJTlRFTF9HVFRf R0VOID49IDQpIHsKLQkJaW50ZWxfaTk2NV9nMzNfc2V0dXBfY2hpcHNldF9mbHVzaCgpOwotCX0g ZWxzZSB7Ci0JCWludGVsX2k5MTVfc2V0dXBfY2hpcHNldF9mbHVzaCgpOwotCX0KLQotCWlmIChp bnRlbF9wcml2YXRlLmlmcF9yZXNvdXJjZS5zdGFydCkKLQkJaW50ZWxfcHJpdmF0ZS5pOXh4X2Zs dXNoX3BhZ2UgPSBpb3JlbWFwX25vY2FjaGUoaW50ZWxfcHJpdmF0ZS5pZnBfcmVzb3VyY2Uuc3Rh cnQsIFBBR0VfU0laRSk7Ci0JaWYgKCFpbnRlbF9wcml2YXRlLmk5eHhfZmx1c2hfcGFnZSkKLQkJ ZGV2X2VycigmaW50ZWxfcHJpdmF0ZS5wY2lkZXYtPmRldiwKLQkJCSJjYW4ndCBpb3JlbWFwIGZs dXNoIHBhZ2UgLSBubyBjaGlwc2V0IGZsdXNoaW5nXG4iKTsKLX0KLQotc3RhdGljIHZvaWQgaTl4 eF9jbGVhbnVwKHZvaWQpCi17Ci0JaWYgKGludGVsX3ByaXZhdGUuaTl4eF9mbHVzaF9wYWdlKQot CQlpb3VubWFwKGludGVsX3ByaXZhdGUuaTl4eF9mbHVzaF9wYWdlKTsKLQlpZiAoaW50ZWxfcHJp dmF0ZS5yZXNvdXJjZV92YWxpZCkKLQkJcmVsZWFzZV9yZXNvdXJjZSgmaW50ZWxfcHJpdmF0ZS5p ZnBfcmVzb3VyY2UpOwotCWludGVsX3ByaXZhdGUuaWZwX3Jlc291cmNlLnN0YXJ0ID0gMDsKLQlp bnRlbF9wcml2YXRlLnJlc291cmNlX3ZhbGlkID0gMDsKLX0KLQotc3RhdGljIHZvaWQgaTl4eF9j aGlwc2V0X2ZsdXNoKHZvaWQpCi17Ci0JaWYgKGludGVsX3ByaXZhdGUuaTl4eF9mbHVzaF9wYWdl KQotCQl3cml0ZWwoMSwgaW50ZWxfcHJpdmF0ZS5pOXh4X2ZsdXNoX3BhZ2UpOwotfQotCi1zdGF0 aWMgdm9pZCBpOTY1X3dyaXRlX2VudHJ5KGRtYV9hZGRyX3QgYWRkciwKLQkJCSAgICAgdW5zaWdu ZWQgaW50IGVudHJ5LAotCQkJICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpCi17Ci0JdTMyIHB0ZV9m bGFnczsKLQotCXB0ZV9mbGFncyA9IEk4MTBfUFRFX1ZBTElEOwotCWlmIChmbGFncyA9PSBBR1Bf VVNFUl9DQUNIRURfTUVNT1JZKQotCQlwdGVfZmxhZ3MgfD0gSTgzMF9QVEVfU1lTVEVNX0NBQ0hF RDsKLQotCS8qIFNoaWZ0IGhpZ2ggYml0cyBkb3duICovCi0JYWRkciB8PSAoYWRkciA+PiAyOCkg JiAweGYwOwotCXdyaXRlbF9yZWxheGVkKGFkZHIgfCBwdGVfZmxhZ3MsIGludGVsX3ByaXZhdGUu Z3R0ICsgZW50cnkpOwotfQotCi1zdGF0aWMgaW50IGk5eHhfc2V0dXAodm9pZCkKLXsKLQlwaHlz X2FkZHJfdCByZWdfYWRkcjsKLQlpbnQgc2l6ZSA9IEtCKDUxMik7Ci0KLQlyZWdfYWRkciA9IHBj aV9yZXNvdXJjZV9zdGFydChpbnRlbF9wcml2YXRlLnBjaWRldiwgSTkxNV9NTUFEUl9CQVIpOwot Ci0JaW50ZWxfcHJpdmF0ZS5yZWdpc3RlcnMgPSBpb3JlbWFwKHJlZ19hZGRyLCBzaXplKTsKLQlp ZiAoIWludGVsX3ByaXZhdGUucmVnaXN0ZXJzKQotCQlyZXR1cm4gLUVOT01FTTsKLQotCXN3aXRj aCAoSU5URUxfR1RUX0dFTikgewotCWNhc2UgMzoKLQkJaW50ZWxfcHJpdmF0ZS5ndHRfcGh5c19h ZGRyID0KLQkJCXBjaV9yZXNvdXJjZV9zdGFydChpbnRlbF9wcml2YXRlLnBjaWRldiwgSTkxNV9Q VEVfQkFSKTsKLQkJYnJlYWs7Ci0JY2FzZSA1OgotCQlpbnRlbF9wcml2YXRlLmd0dF9waHlzX2Fk ZHIgPSByZWdfYWRkciArIE1CKDIpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlpbnRlbF9wcml2 YXRlLmd0dF9waHlzX2FkZHIgPSByZWdfYWRkciArIEtCKDUxMik7Ci0JCWJyZWFrOwotCX0KLQot CWludGVsX2k5eHhfc2V0dXBfZmx1c2goKTsKLQotCXJldHVybiAwOwotfQotCiAjaWYgSVNfRU5B QkxFRChDT05GSUdfQUdQX0lOVEVMKQogc3RhdGljIGNvbnN0IHN0cnVjdCBhZ3BfYnJpZGdlX2Ry aXZlciBpbnRlbF9mYWtlX2FncF9kcml2ZXIgPSB7CiAJLm93bmVyCQkJPSBUSElTX01PRFVMRSwK QEAgLTExNzgsODQgKzcyMiwxMSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFncF9icmlkZ2VfZHJp dmVyIGludGVsX2Zha2VfYWdwX2RyaXZlciA9IHsKICNlbmRpZgogCiBzdGF0aWMgY29uc3Qgc3Ry dWN0IGludGVsX2d0dF9kcml2ZXIgaTgxeF9ndHRfZHJpdmVyID0gewotCS5nZW4gPSAxLAotCS5o YXNfcGd0YmxfZW5hYmxlID0gMSwKLQkuZG1hX21hc2tfc2l6ZSA9IDMyLAogCS5zZXR1cCA9IGk4 MTBfc2V0dXAsCiAJLmNsZWFudXAgPSBpODEwX2NsZWFudXAsCiAJLmNoZWNrX2ZsYWdzID0gaTgz MF9jaGVja19mbGFncywKIAkud3JpdGVfZW50cnkgPSBpODEwX3dyaXRlX2VudHJ5LAogfTsKLXN0 YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZ3R0X2RyaXZlciBpOHh4X2d0dF9kcml2ZXIgPSB7Ci0J LmdlbiA9IDIsCi0JLmhhc19wZ3RibF9lbmFibGUgPSAxLAotCS5zZXR1cCA9IGk4MzBfc2V0dXAs Ci0JLmNsZWFudXAgPSBpODMwX2NsZWFudXAsCi0JLndyaXRlX2VudHJ5ID0gaTgzMF93cml0ZV9l bnRyeSwKLQkuZG1hX21hc2tfc2l6ZSA9IDMyLAotCS5jaGVja19mbGFncyA9IGk4MzBfY2hlY2tf ZmxhZ3MsCi0JLmNoaXBzZXRfZmx1c2ggPSBpODMwX2NoaXBzZXRfZmx1c2gsCi19Owotc3RhdGlj IGNvbnN0IHN0cnVjdCBpbnRlbF9ndHRfZHJpdmVyIGk5MTVfZ3R0X2RyaXZlciA9IHsKLQkuZ2Vu ID0gMywKLQkuaGFzX3BndGJsX2VuYWJsZSA9IDEsCi0JLnNldHVwID0gaTl4eF9zZXR1cCwKLQku Y2xlYW51cCA9IGk5eHhfY2xlYW51cCwKLQkvKiBpOTQ1IGlzIHRoZSBsYXN0IGdwdSB0byBuZWVk IHBoeXMgbWVtIChmb3Igb3ZlcmxheSBhbmQgY3Vyc29ycykuICovCi0JLndyaXRlX2VudHJ5ID0g aTgzMF93cml0ZV9lbnRyeSwKLQkuZG1hX21hc2tfc2l6ZSA9IDMyLAotCS5jaGVja19mbGFncyA9 IGk4MzBfY2hlY2tfZmxhZ3MsCi0JLmNoaXBzZXRfZmx1c2ggPSBpOXh4X2NoaXBzZXRfZmx1c2gs Ci19Owotc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9ndHRfZHJpdmVyIGczM19ndHRfZHJpdmVy ID0gewotCS5nZW4gPSAzLAotCS5pc19nMzMgPSAxLAotCS5zZXR1cCA9IGk5eHhfc2V0dXAsCi0J LmNsZWFudXAgPSBpOXh4X2NsZWFudXAsCi0JLndyaXRlX2VudHJ5ID0gaTk2NV93cml0ZV9lbnRy eSwKLQkuZG1hX21hc2tfc2l6ZSA9IDM2LAotCS5jaGVja19mbGFncyA9IGk4MzBfY2hlY2tfZmxh Z3MsCi0JLmNoaXBzZXRfZmx1c2ggPSBpOXh4X2NoaXBzZXRfZmx1c2gsCi19Owotc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9ndHRfZHJpdmVyIHBpbmV2aWV3X2d0dF9kcml2ZXIgPSB7Ci0JLmdl biA9IDMsCi0JLmlzX3BpbmV2aWV3ID0gMSwgLmlzX2czMyA9IDEsCi0JLnNldHVwID0gaTl4eF9z ZXR1cCwKLQkuY2xlYW51cCA9IGk5eHhfY2xlYW51cCwKLQkud3JpdGVfZW50cnkgPSBpOTY1X3dy aXRlX2VudHJ5LAotCS5kbWFfbWFza19zaXplID0gMzYsCi0JLmNoZWNrX2ZsYWdzID0gaTgzMF9j aGVja19mbGFncywKLQkuY2hpcHNldF9mbHVzaCA9IGk5eHhfY2hpcHNldF9mbHVzaCwKLX07Ci1z dGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2d0dF9kcml2ZXIgaTk2NV9ndHRfZHJpdmVyID0gewot CS5nZW4gPSA0LAotCS5oYXNfcGd0YmxfZW5hYmxlID0gMSwKLQkuc2V0dXAgPSBpOXh4X3NldHVw LAotCS5jbGVhbnVwID0gaTl4eF9jbGVhbnVwLAotCS53cml0ZV9lbnRyeSA9IGk5NjVfd3JpdGVf ZW50cnksCi0JLmRtYV9tYXNrX3NpemUgPSAzNiwKLQkuY2hlY2tfZmxhZ3MgPSBpODMwX2NoZWNr X2ZsYWdzLAotCS5jaGlwc2V0X2ZsdXNoID0gaTl4eF9jaGlwc2V0X2ZsdXNoLAotfTsKLXN0YXRp YyBjb25zdCBzdHJ1Y3QgaW50ZWxfZ3R0X2RyaXZlciBnNHhfZ3R0X2RyaXZlciA9IHsKLQkuZ2Vu ID0gNSwKLQkuc2V0dXAgPSBpOXh4X3NldHVwLAotCS5jbGVhbnVwID0gaTl4eF9jbGVhbnVwLAot CS53cml0ZV9lbnRyeSA9IGk5NjVfd3JpdGVfZW50cnksCi0JLmRtYV9tYXNrX3NpemUgPSAzNiwK LQkuY2hlY2tfZmxhZ3MgPSBpODMwX2NoZWNrX2ZsYWdzLAotCS5jaGlwc2V0X2ZsdXNoID0gaTl4 eF9jaGlwc2V0X2ZsdXNoLAotfTsKLXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfZ3R0X2RyaXZl ciBpcm9ubGFrZV9ndHRfZHJpdmVyID0gewotCS5nZW4gPSA1LAotCS5pc19pcm9ubGFrZSA9IDEs Ci0JLnNldHVwID0gaTl4eF9zZXR1cCwKLQkuY2xlYW51cCA9IGk5eHhfY2xlYW51cCwKLQkud3Jp dGVfZW50cnkgPSBpOTY1X3dyaXRlX2VudHJ5LAotCS5kbWFfbWFza19zaXplID0gMzYsCi0JLmNo ZWNrX2ZsYWdzID0gaTgzMF9jaGVja19mbGFncywKLQkuY2hpcHNldF9mbHVzaCA9IGk5eHhfY2hp cHNldF9mbHVzaCwKLX07CiAKIC8qIFRhYmxlIHRvIGRlc2NyaWJlIEludGVsIEdNQ0ggYW5kIEFH UC9QQ0lFIEdBUlQgZHJpdmVycy4gIEF0IGxlYXN0IG9uZSBvZgogICogZHJpdmVyIGFuZCBnbWNo X2RyaXZlciBtdXN0IGJlIG5vbi1udWxsLCBhbmQgZmluZF9nbWNoIHdpbGwgZGV0ZXJtaW5lCkBA IC0xMjc0LDY4ICs3NDUsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2d0dF9kcml2ZXJf ZGVzY3JpcHRpb24gewogCQkmaTgxeF9ndHRfZHJpdmVyfSwKIAl7IFBDSV9ERVZJQ0VfSURfSU5U RUxfODI4MTVfQ0dDLCAiaTgxNSIsCiAJCSZpODF4X2d0dF9kcml2ZXJ9LAotCXsgUENJX0RFVklD RV9JRF9JTlRFTF84MjgzMF9DR0MsICI4MzBNIiwKLQkJJmk4eHhfZ3R0X2RyaXZlcn0sCi0JeyBQ Q0lfREVWSUNFX0lEX0lOVEVMXzgyODQ1R19JRywgIjg0NUciLAotCQkmaTh4eF9ndHRfZHJpdmVy fSwKLQl7IFBDSV9ERVZJQ0VfSURfSU5URUxfODI4NTRfSUcsICI4NTQiLAotCQkmaTh4eF9ndHRf ZHJpdmVyfSwKLQl7IFBDSV9ERVZJQ0VfSURfSU5URUxfODI4NTVHTV9JRywgIjg1NUdNIiwKLQkJ Jmk4eHhfZ3R0X2RyaXZlcn0sCi0JeyBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyODY1X0lHLCAiODY1 IiwKLQkJJmk4eHhfZ3R0X2RyaXZlcn0sCi0JeyBQQ0lfREVWSUNFX0lEX0lOVEVMX0U3MjIxX0lH LCAiRTcyMjEgKGk5MTUpIiwKLQkJJmk5MTVfZ3R0X2RyaXZlciB9LAotCXsgUENJX0RFVklDRV9J RF9JTlRFTF84MjkxNUdfSUcsICI5MTVHIiwKLQkJJmk5MTVfZ3R0X2RyaXZlciB9LAotCXsgUENJ X0RFVklDRV9JRF9JTlRFTF84MjkxNUdNX0lHLCAiOTE1R00iLAotCQkmaTkxNV9ndHRfZHJpdmVy IH0sCi0JeyBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyOTQ1R19JRywgIjk0NUciLAotCQkmaTkxNV9n dHRfZHJpdmVyIH0sCi0JeyBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyOTQ1R01fSUcsICI5NDVHTSIs Ci0JCSZpOTE1X2d0dF9kcml2ZXIgfSwKLQl7IFBDSV9ERVZJQ0VfSURfSU5URUxfODI5NDVHTUVf SUcsICI5NDVHTUUiLAotCQkmaTkxNV9ndHRfZHJpdmVyIH0sCi0JeyBQQ0lfREVWSUNFX0lEX0lO VEVMXzgyOTQ2R1pfSUcsICI5NDZHWiIsCi0JCSZpOTY1X2d0dF9kcml2ZXIgfSwKLQl7IFBDSV9E RVZJQ0VfSURfSU5URUxfODJHMzVfSUcsICJHMzUiLAotCQkmaTk2NV9ndHRfZHJpdmVyIH0sCi0J eyBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyOTY1UV9JRywgIjk2NVEiLAotCQkmaTk2NV9ndHRfZHJp dmVyIH0sCi0JeyBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyOTY1R19JRywgIjk2NUciLAotCQkmaTk2 NV9ndHRfZHJpdmVyIH0sCi0JeyBQQ0lfREVWSUNFX0lEX0lOVEVMXzgyOTY1R01fSUcsICI5NjVH TSIsCi0JCSZpOTY1X2d0dF9kcml2ZXIgfSwKLQl7IFBDSV9ERVZJQ0VfSURfSU5URUxfODI5NjVH TUVfSUcsICI5NjVHTUUvR0xFIiwKLQkJJmk5NjVfZ3R0X2RyaXZlciB9LAotCXsgUENJX0RFVklD RV9JRF9JTlRFTF9HMzNfSUcsICJHMzMiLAotCQkmZzMzX2d0dF9kcml2ZXIgfSwKLQl7IFBDSV9E RVZJQ0VfSURfSU5URUxfUTM1X0lHLCAiUTM1IiwKLQkJJmczM19ndHRfZHJpdmVyIH0sCi0JeyBQ Q0lfREVWSUNFX0lEX0lOVEVMX1EzM19JRywgIlEzMyIsCi0JCSZnMzNfZ3R0X2RyaXZlciB9LAot CXsgUENJX0RFVklDRV9JRF9JTlRFTF9QSU5FVklFV19NX0lHLCAiR01BMzE1MCIsCi0JCSZwaW5l dmlld19ndHRfZHJpdmVyIH0sCi0JeyBQQ0lfREVWSUNFX0lEX0lOVEVMX1BJTkVWSUVXX0lHLCAi R01BMzE1MCIsCi0JCSZwaW5ldmlld19ndHRfZHJpdmVyIH0sCi0JeyBQQ0lfREVWSUNFX0lEX0lO VEVMX0dNNDVfSUcsICJHTTQ1IiwKLQkJJmc0eF9ndHRfZHJpdmVyIH0sCi0JeyBQQ0lfREVWSUNF X0lEX0lOVEVMX0VBR0xFTEFLRV9JRywgIkVhZ2xlbGFrZSIsCi0JCSZnNHhfZ3R0X2RyaXZlciB9 LAotCXsgUENJX0RFVklDRV9JRF9JTlRFTF9RNDVfSUcsICJRNDUvUTQzIiwKLQkJJmc0eF9ndHRf ZHJpdmVyIH0sCi0JeyBQQ0lfREVWSUNFX0lEX0lOVEVMX0c0NV9JRywgIkc0NS9HNDMiLAotCQkm ZzR4X2d0dF9kcml2ZXIgfSwKLQl7IFBDSV9ERVZJQ0VfSURfSU5URUxfQjQzX0lHLCAiQjQzIiwK LQkJJmc0eF9ndHRfZHJpdmVyIH0sCi0JeyBQQ0lfREVWSUNFX0lEX0lOVEVMX0I0M18xX0lHLCAi QjQzIiwKLQkJJmc0eF9ndHRfZHJpdmVyIH0sCi0JeyBQQ0lfREVWSUNFX0lEX0lOVEVMX0c0MV9J RywgIkc0MSIsCi0JCSZnNHhfZ3R0X2RyaXZlciB9LAotCXsgUENJX0RFVklDRV9JRF9JTlRFTF9J Uk9OTEFLRV9EX0lHLAotCSAgICAiSEQgR3JhcGhpY3MiLCAmaXJvbmxha2VfZ3R0X2RyaXZlciB9 LAotCXsgUENJX0RFVklDRV9JRF9JTlRFTF9JUk9OTEFLRV9NX0lHLAotCSAgICAiSEQgR3JhcGhp Y3MiLCAmaXJvbmxha2VfZ3R0X2RyaXZlciB9LAogCXsgMCwgTlVMTCwgTlVMTCB9CiB9OwogCkBA IC0xMzgzLDE2ICs3OTIsMTIgQEAgaW50IGludGVsX2dtY2hfcHJvYmUoc3RydWN0IHBjaV9kZXYg KmJyaWRnZV9wZGV2LCBzdHJ1Y3QgcGNpX2RldiAqZ3B1X3BkZXYsCiAKICNpZiBJU19FTkFCTEVE KENPTkZJR19BR1BfSU5URUwpCiAJaWYgKGJyaWRnZSkgewotCQlpZiAoSU5URUxfR1RUX0dFTiA+ IDEpCi0JCQlyZXR1cm4gMDsKLQogCQlicmlkZ2UtPmRyaXZlciA9ICZpbnRlbF9mYWtlX2FncF9k cml2ZXI7CiAJCWJyaWRnZS0+ZGV2X3ByaXZhdGVfZGF0YSA9ICZpbnRlbF9wcml2YXRlOwogCQli cmlkZ2UtPmRldiA9IGJyaWRnZV9wZGV2OwogCX0KICNlbmRpZgogCi0KIAkvKgogCSAqIENhbiBi ZSBjYWxsZWQgZnJvbSB0aGUgZmFrZSBhZ3AgZHJpdmVyIGJ1dCBhbHNvIGRpcmVjdGx5IGZyb20K IAkgKiBkcm0vaTkxNS5rby4gSGVuY2Ugd2UgbmVlZCB0byBjaGVjayB3aGV0aGVyIGV2ZXJ5dGhp bmcgaXMgc2V0IHVwCkBAIC0xNDA1LDcgKzgxMCw3IEBAIGludCBpbnRlbF9nbWNoX3Byb2JlKHN0 cnVjdCBwY2lfZGV2ICpicmlkZ2VfcGRldiwgc3RydWN0IHBjaV9kZXYgKmdwdV9wZGV2LAogCiAJ ZGV2X2luZm8oJmJyaWRnZV9wZGV2LT5kZXYsICJJbnRlbCAlcyBDaGlwc2V0XG4iLCBpbnRlbF9n dHRfY2hpcHNldHNbaV0ubmFtZSk7CiAKLQltYXNrID0gaW50ZWxfcHJpdmF0ZS5kcml2ZXItPmRt YV9tYXNrX3NpemU7CisJbWFzayA9IDMyOwogCWlmIChwY2lfc2V0X2RtYV9tYXNrKGludGVsX3By aXZhdGUucGNpZGV2LCBETUFfQklUX01BU0sobWFzaykpKQogCQlkZXZfZXJyKCZpbnRlbF9wcml2 YXRlLnBjaWRldi0+ZGV2LAogCQkJInNldCBnZnggZGV2aWNlIGRtYSBtYXNrICVkLWJpdCBmYWls ZWQhXG4iLCBtYXNrKTsKLS0gCjIuMTcuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==