From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Luck, Tony" Date: Mon, 20 Oct 2003 17:02:21 +0000 Subject: RE: MCA Recovery for Enterprise Server MIME-Version: 1 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C3972B.ED139CE8" Message-Id: List-Id: References: In-Reply-To: To: linux-ia64@vger.kernel.org This is a multi-part message in MIME format. ------_=_NextPart_001_01C3972B.ED139CE8 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit > Is there any guideline(s) to implement Platform-MCA handler? > I have found a symbol named PLATFORM_MCA_HANDLERS in > /arch/ia64/kernel/mca.c, > but it seems not to work. I posted a set of three patches against 2.6.0-test5 on October 3rd. Only the first of those parts was accepted, but since then I have broken out some of the bug-fix components from the 3rd part and they were accepted by David and Linus, and are part of 2.6.0-test8. That still leaves 666 lines of patch required to get this working for the case of MCA due to TLB fault. I've attached the remaining part to this e-mail for reference, but without any real hope that David will take such a large patch at this stage of 2.6.0 stablilization. > Also, if you know any technique for debugging MCA codes, > please show me the smart way. The "smart" way is (as always) to avoid putting bugs into the code, especially as this is fault handler code, which has extra challenges to debug :-) Since this approach is very hard, you'll need either a simulator, or an ITP to allow you to set breakpoints, examine registers and single-step. There may be pieces of the code that could be tested by writing some surrounding support code to debug them in a more user friendly environment (e.g. user mode). David: does "ski" have any hooks for fault injection? -Tony Luck ------_=_NextPart_001_01C3972B.ED139CE8 Content-Type: application/octet-stream; name="mca-TODO-20031017.patch" Content-Transfer-Encoding: base64 Content-Description: mca-TODO-20031017.patch Content-Disposition: attachment; filename="mca-TODO-20031017.patch" ZGlmZiAtcnUgbGludXMtYmsvYXJjaC9pYTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jIHRvZG8vYXJj aC9pYTY0L2tlcm5lbC9hc20tb2Zmc2V0cy5jCi0tLSBsaW51cy1iay9hcmNoL2lhNjQva2VybmVs L2FzbS1vZmZzZXRzLmMJVGh1IE9jdCAxNiAxNjoxODo0OCAyMDAzCisrKyB0b2RvL2FyY2gvaWE2 NC9rZXJuZWwvYXNtLW9mZnNldHMuYwlGcmkgT2N0IDE3IDEyOjAwOjI5IDIwMDMKQEAgLTEyLDYg KzEyLDcgQEAKICNpbmNsdWRlIDxhc20taWE2NC9wdHJhY2UuaD4KICNpbmNsdWRlIDxhc20taWE2 NC9zaWdpbmZvLmg+CiAjaW5jbHVkZSA8YXNtLWlhNjQvc2lnY29udGV4dC5oPgorI2luY2x1ZGUg PGFzbS1pYTY0L21jYS5oPgogCiAjaW5jbHVkZSAiLi4va2VybmVsL3NpZ2ZyYW1lLmgiCiAKQEAg LTIwNCw0ICsyMDUsNyBAQAogIyBlcnJvciAiQ0xPTkVfU0VUVExTX0JJVCBpbmNvcnJlY3QsIHBs ZWFzZSBmaXgiCiAjZW5kaWYKIAorCUJMQU5LKCk7CisJREVGSU5FKElBNjRfTUNBX1RMQl9JTkZP X1NJWkUsIHNpemVvZiAoc3RydWN0IGlhNjRfbWNhX3RsYl9pbmZvKSk7CisKIH0KZGlmZiAtcnUg bGludXMtYmsvYXJjaC9pYTY0L2tlcm5lbC9lZmkuYyB0b2RvL2FyY2gvaWE2NC9rZXJuZWwvZWZp LmMKLS0tIGxpbnVzLWJrL2FyY2gvaWE2NC9rZXJuZWwvZWZpLmMJVGh1IE9jdCAxNiAxNjoxODo0 OCAyMDAzCisrKyB0b2RvL2FyY2gvaWE2NC9rZXJuZWwvZWZpLmMJRnJpIE9jdCAxNyAxMjowMDoy OSAyMDAzCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSA8YXNtL2tyZWdzLmg+CiAjaW5jbHVk ZSA8YXNtL3BndGFibGUuaD4KICNpbmNsdWRlIDxhc20vcHJvY2Vzc29yLmg+CisjaW5jbHVkZSA8 YXNtL21jYS5oPgogCiAjZGVmaW5lIEVGSV9ERUJVRwkwCiAKQEAgLTQwMiw2ICs0MDMsOSBAQAog CWludCBwYWxfY29kZV9jb3VudCA9IDA7CiAJdTY0IG1hc2ssIHBzcjsKIAl1NjQgdmFkZHI7Cisj aWZkZWYgQ09ORklHX0lBNjRfTUNBCisJaW50IGNwdTsKKyNlbmRpZgogCiAJZWZpX21hcF9zdGFy dCA9IF9fdmEoaWE2NF9ib290X3BhcmFtLT5lZmlfbWVtbWFwKTsKIAllZmlfbWFwX2VuZCAgID0g ZWZpX21hcF9zdGFydCArIGlhNjRfYm9vdF9wYXJhbS0+ZWZpX21lbW1hcF9zaXplOwpAQCAtNDYy LDYgKzQ2NiwxNCBAQAogCQkJIElBNjRfR1JBTlVMRV9TSElGVCk7CiAJCWlhNjRfc2V0X3Bzcihw c3IpOwkJLyogcmVzdG9yZSBwc3IgKi8KIAkJaWE2NF9zcmx6X2koKTsKKworI2lmZGVmIENPTkZJ R19JQTY0X01DQQorCQljcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CisKKwkJLyogaW5zZXJ0IHRo aXMgVFIgaW50byBvdXIgbGlzdCBmb3IgTUNBIHJlY292ZXJ5IHB1cnBvc2VzICovCisJCWlhNjRf bWNhX3RsYl9saXN0W2NwdV0ucGFsX2Jhc2U9dmFkZHIgJiBtYXNrOworCQlpYTY0X21jYV90bGJf bGlzdFtjcHVdLnBhbF9wYWRkcj0gcHRlX3ZhbChta19wdGVfcGh5cyhtZC0+cGh5c19hZGRyLCBQ QUdFX0tFUk5FTCkpOworI2VuZGlmCiAJfQogfQogCmRpZmYgLXJ1IGxpbnVzLWJrL2FyY2gvaWE2 NC9rZXJuZWwvbWNhLmMgdG9kby9hcmNoL2lhNjQva2VybmVsL21jYS5jCi0tLSBsaW51cy1iay9h cmNoL2lhNjQva2VybmVsL21jYS5jCVRodSBPY3QgMTYgMTY6MTg6NDggMjAwMworKysgdG9kby9h cmNoL2lhNjQva2VybmVsL21jYS5jCUZyaSBPY3QgMTcgMTI6MDA6MjkgMjAwMwpAQCAtNzgsOSAr NzgsOCBAQAogdTY0CQkJCWlhNjRfbWNhX3N0YWNrZnJhbWVbMzJdOwogdTY0CQkJCWlhNjRfbWNh X2JzcHN0b3JlWzEwMjRdOwogdTY0CQkJCWlhNjRfaW5pdF9zdGFja1tLRVJORUxfU1RBQ0tfU0la RS84XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpOwotdTY0CQkJCWlhNjRfbWNhX3NhbF9k YXRhX2FyZWFbMTM1Nl07Ci11NjQJCQkJaWE2NF90bGJfZnVuY3Rpb25hbDsKIHU2NAkJCQlpYTY0 X29zX21jYV9yZWNvdmVyeV9zdWNjZXNzZnVsOwordTY0CQkJCWlhNjRfbWNhX3NlcmlhbGl6ZTsK IHN0YXRpYyB2b2lkCQkJaWE2NF9tY2Ffd2FrZXVwX2lwaV93YWl0KHZvaWQpOwogc3RhdGljIHZv aWQJCQlpYTY0X21jYV93YWtldXAoaW50IGNwdSk7CiBzdGF0aWMgdm9pZAkJCWlhNjRfbWNhX3dh a2V1cF9hbGwodm9pZCk7CkBAIC04OSw2ICs4OCw4IEBACiBleHRlcm4gdm9pZAkJCWlhNjRfc2xh dmVfaW5pdF9oYW5kbGVyICh2b2lkKTsKIGV4dGVybiBzdHJ1Y3QgaHdfaW50ZXJydXB0X3R5cGUJ aXJxX3R5cGVfaW9zYXBpY19sZXZlbDsKIAorc3RydWN0IGlhNjRfbWNhX3RsYl9pbmZvIGlhNjRf bWNhX3RsYl9saXN0W05SX0NQVVNdOworCiBzdGF0aWMgc3RydWN0IGlycWFjdGlvbiBjbWNpX2ly cWFjdGlvbiA9IHsKIAkuaGFuZGxlciA9CWlhNjRfbWNhX2NtY19pbnRfaGFuZGxlciwKIAkuZmxh Z3MgPQlTQV9JTlRFUlJVUFQsCkBAIC05MjQsNiArOTI1LDkgQEAKIHZvaWQKIGlhNjRfcmV0dXJu X3RvX3NhbF9jaGVjayh2b2lkKQogeworCXBhbF9wcm9jZXNzb3Jfc3RhdGVfaW5mb190ICpwc3Ag PSAocGFsX3Byb2Nlc3Nvcl9zdGF0ZV9pbmZvX3QgKikKKwkJJmlhNjRfc2FsX3RvX29zX2hhbmRv ZmZfc3RhdGUucHJvY19zdGF0ZV9wYXJhbTsKKwogCS8qIENvcHkgb3ZlciBzb21lIHJlbGV2YW50 IHN0dWZmIGZyb20gdGhlIHNhbF90b19vc19tY2FfaGFuZG9mZgogCSAqIHNvIHRoYXQgaXQgY2Fu IGJlIHVzZWQgYXQgdGhlIHRpbWUgb2Ygb3NfbWNhX3RvX3NhbF9oYW5kb2ZmCiAJICovCkBAIC05 MzMsMTQgKzkzNywyMiBAQAogCWlhNjRfb3NfdG9fc2FsX2hhbmRvZmZfc3RhdGUuaW1vdHNfc2Fs X2NoZWNrX3JhID0KIAkJaWE2NF9zYWxfdG9fb3NfaGFuZG9mZl9zdGF0ZS5pbXN0b19zYWxfY2hl Y2tfcmE7CiAKLQkvKiBDb2xkIEJvb3QgZm9yIHVuY29ycmVjdGFibGUgTUNBICovCi0JaWE2NF9v c190b19zYWxfaGFuZG9mZl9zdGF0ZS5pbW90c19vc19zdGF0dXMgPSBJQTY0X01DQV9DT0xEX0JP T1Q7CisJLyoKKwkgKiBEaWQgd2UgY29ycmVjdCB0aGUgZXJyb3I/IEF0IHRoZSBtb21lbnQgdGhl IG9ubHkgZXJyb3IgdGhhdAorCSAqIHdlIGZpeCBpcyBhIFRMQiBlcnJvciwgaWYgYW55IG90aGVy IGtpbmQgb2YgZXJyb3Igb2NjdXJyZWQKKwkgKiB3ZSBtdXN0IHJlYm9vdC4KKwkgKi8KKwlpZiAo cHNwLT5jYyA9PSAxICYmIHBzcC0+YmMgPT0gMSAmJiBwc3AtPnJjID09IDEgJiYgcHNwLT51YyA9 PSAxKQorCQlpYTY0X29zX3RvX3NhbF9oYW5kb2ZmX3N0YXRlLmltb3RzX29zX3N0YXR1cyA9IElB NjRfTUNBX0NPTERfQk9PVDsKKwllbHNlCisJCWlhNjRfb3NfdG9fc2FsX2hhbmRvZmZfc3RhdGUu aW1vdHNfb3Nfc3RhdHVzID0gSUE2NF9NQ0FfQ09SUkVDVEVEOwogCiAJLyogRGVmYXVsdCA9IHRl bGwgU0FMIHRvIHJldHVybiB0byBzYW1lIGNvbnRleHQgKi8KIAlpYTY0X29zX3RvX3NhbF9oYW5k b2ZmX3N0YXRlLmltb3RzX2NvbnRleHQgPSBJQTY0X01DQV9TQU1FX0NPTlRFWFQ7CiAKIAlpYTY0 X29zX3RvX3NhbF9oYW5kb2ZmX3N0YXRlLmltb3RzX25ld19taW5fc3RhdGUgPQogCQkodTY0ICop aWE2NF9zYWxfdG9fb3NfaGFuZG9mZl9zdGF0ZS5wYWxfbWluX3N0YXRlOworCiB9CiAKIC8qCkBA IC0xMzE4LDggKzEzMzAsOCBAQAogdm9pZAogaWE2NF9sb2dfcHJ0X2d1aWQgKGVmaV9ndWlkX3Qg KnBfZ3VpZCwgcHJmdW5jX3QgcHJmdW5jKQogewotCWNoYXIgb3V0WzQwXTsKLQlwcmludGsoS0VS Tl9ERUJVRyAiR1VJRCA9ICVzXG4iLCBlZmlfZ3VpZF91bnBhcnNlKHBfZ3VpZCwgb3V0KSk7CisJ Ly9jaGFyIG91dFs0MF07CisJLy9wcmludGsoS0VSTl9ERUJVRyAiR1VJRCA9ICVzXG4iLCBlZmlf Z3VpZF91bnBhcnNlKHBfZ3VpZCwgb3V0KSk7CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLXJ1IGxp bnVzLWJrL2FyY2gvaWE2NC9rZXJuZWwvbWNhX2FzbS5TIHRvZG8vYXJjaC9pYTY0L2tlcm5lbC9t Y2FfYXNtLlMKLS0tIGxpbnVzLWJrL2FyY2gvaWE2NC9rZXJuZWwvbWNhX2FzbS5TCVRodSBPY3Qg MTYgMTY6MTg6NDggMjAwMworKysgdG9kby9hcmNoL2lhNjQva2VybmVsL21jYV9hc20uUwlGcmkg T2N0IDE3IDEyOjAwOjI5IDIwMDMKQEAgLTEzLDcgKzEzLDkgQEAKIC8vCQkgICAyLiBSZXN0b3Jl IGN1cnJlbnQgdGhyZWFkIHBvaW50ZXIgdG8ga3I2CiAvLwkJICAgMy4gTW92ZSBzdGFjayBwdHIg MTYgYnl0ZXMgdG8gY29uZm9ybSB0byBDIGNhbGxpbmcgY29udmVudGlvbgogLy8KKy8vCiAjaW5j bHVkZSA8bGludXgvY29uZmlnLmg+CisjaW5jbHVkZSA8bGludXgvdGhyZWFkcy5oPgogCiAjaW5j bHVkZSA8YXNtL2FzbW1hY3JvLmg+CiAjaW5jbHVkZSA8YXNtL3BndGFibGUuaD4KQEAgLTIyLDIw ICsyNCwxNSBAQAogI2luY2x1ZGUgPGFzbS9tY2EuaD4KIAogLyoKLSAqIFdoZW4gd2UgZ2V0IGFu IG1hY2hpbmUgY2hlY2ssIHRoZSBrZXJuZWwgc3RhY2sgcG9pbnRlciBpcyBubyBsb25nZXIKKyAq IFdoZW4gd2UgZ2V0IGEgbWFjaGluZSBjaGVjaywgdGhlIGtlcm5lbCBzdGFjayBwb2ludGVyIGlz IG5vIGxvbmdlcgogICogdmFsaWQsIHNvIHdlIG5lZWQgdG8gc2V0IGEgbmV3IHN0YWNrIHBvaW50 ZXIuCiAgKi8KICNkZWZpbmUJTUlOU1RBVEVfUEhZUwkvKiBNYWtlIHN1cmUgc3RhY2sgYWNjZXNz IGlzIHBoeXNpY2FsIGZvciBNSU5TVEFURSAqLwogCiAvKgotICogTmVlZGVkIGZvciBpYTY0X3Nh bCBjYWxsCi0gKi8KLSNkZWZpbmUgU0FMX0dFVF9TVEFURV9JTkZPICAgICAgMHgwMTAwMDAwMQot Ci0vKgogICogTmVlZGVkIGZvciByZXR1cm4gY29udGV4dCB0byBTQUwKICAqLwotI2RlZmluZSBJ QTY0X01DQV9TQU1FX0NPTlRFWFQJMHgwCisjZGVmaW5lIElBNjRfTUNBX1NBTUVfQ09OVEVYVAkw CiAjZGVmaW5lIElBNjRfTUNBX0NPTERfQk9PVAktMgogCiAjaW5jbHVkZSAibWluc3RhdGUuaCIK QEAgLTcxLDE5ICs2OCwzNiBAQAogICoJcmV0dXJucyBwdHIgdG8gU0FMIHJ0biBzYXZlIGxvYyBp biBfdG1wCiAgKi8KICNkZWZpbmUgT1NfTUNBX1RPX1NBTF9IQU5ET0ZGX1NUQVRFX1JFU1RPUkUo X3RtcCkJXAotCUxPQURfUEhZU0lDQUwocDYsIF90bXAsIGlhNjRfc2FsX3RvX29zX2hhbmRvZmZf c3RhdGUpOzsgXAotCUxPQURfUEhZU0lDQUwocDcsIF90bXAsIGlhNjRfb3NfdG9fc2FsX2hhbmRv ZmZfc3RhdGUpOzsgXAotKHA2KQltb3ZsCXI4PUlBNjRfTUNBX0NPTERfQk9PVDsJCQlcCi0ocDYp CW1vdmwJcjEwPUlBNjRfTUNBX1NBTUVfQ09OVEVYVDsJCVwKLShwNikJYWRkICAgICBfdG1wPTB4 MTgsX3RtcDs7CQkJXAotKHA2KQlsZDgJcjk9W190bXBdLDB4MTA7CQkJCVwKLShwNikJbW92CXIy Mj1yMDs7CQkJCVwKLShwNykJbGQ4CXI4PVtfdG1wXSwweDA4OzsJCQlcCi0ocDcpCWxkOAlyOT1b X3RtcF0sMHgwODs7CQkJXAotKHA3KQlsZDggICAgIHIxMD1bX3RtcF0sMHgwODs7CQkJXAotKHA3 KQlsZDggICAgIHIyMj1bX3RtcF0sMHgwODs7CisJbW92bAlfdG1wPWlhNjRfb3NfdG9fc2FsX2hh bmRvZmZfc3RhdGU7OwlcCisJREFUQV9WQV9UT19QQShfdG1wKTs7CQkJCVwKKwlsZDgJcjg9W190 bXBdLDB4MDg7OwkJCVwKKwlsZDgJcjk9W190bXBdLDB4MDg7OwkJCVwKKwlsZDgJcjEwPVtfdG1w XSwweDA4OzsJCQlcCisJbGQ4CXIyMj1bX3RtcF0sMHgwODs7CiAJLy8gbm93IF90bXAgaXMgcG9p bnRpbmcgdG8gU0FMIHJ0biBzYXZlIGxvY2F0aW9uCiAKKy8qIAorICogQ09MRF9CT09UX0hBTkRP RkZfU1RBVEUoKSBzZXRzIGlhNjRfbWNhX29zX3RvX3NhbF9zdGF0ZQorICoJaW1vdHNfb3Nfc3Rh dHVzPUlBNjRfTUNBX0NPTERfQk9PVAorICoJaW1vdHNfc2FsX2dwPVNBTCBHUAorICoJaW1vdHNf Y29udGV4dD1JQTY0X01DQV9TQU1FX0NPTlRFWFQKKyAqCWltb3RzX25ld19taW5fc3RhdGU9TWlu IHN0YXRlIHNhdmUgYXJlYSBwb2ludGVyCisgKglpbW90c19zYWxfY2hlY2tfcmE9UmV0dXJuIGFk ZHJlc3MgdG8gbG9jYXRpb24gd2l0aGluIFNBTF9DSEVDSworICoKKyAqLworI2RlZmluZSBDT0xE X0JPT1RfSEFORE9GRl9TVEFURShzYWxfdG9fb3NfaGFuZG9mZixvc190b19zYWxfaGFuZG9mZix0 bXApXAorCW1vdmwJdG1wPUlBNjRfTUNBX0NPTERfQk9PVDsJCQkJCVwKKwltb3ZsCXNhbF90b19v c19oYW5kb2ZmPV9fcGEoaWE2NF9zYWxfdG9fb3NfaGFuZG9mZl9zdGF0ZSk7CVwKKwltb3ZsCW9z X3RvX3NhbF9oYW5kb2ZmPV9fcGEoaWE2NF9vc190b19zYWxfaGFuZG9mZl9zdGF0ZSk7OwlcCisJ c3Q4CVtvc190b19zYWxfaGFuZG9mZl09dG1wLDg7OwkJCQlcCisJbGQ4CXRtcD1bc2FsX3RvX29z X2hhbmRvZmZdLDQ4OzsJCQkJXAorCXN0OAlbb3NfdG9fc2FsX2hhbmRvZmZdPXRtcCw4OzsJCQkJ XAorCW1vdmwJdG1wPUlBNjRfTUNBX1NBTUVfQ09OVEVYVDs7CQkJCVwKKwlzdDgJW29zX3RvX3Nh bF9oYW5kb2ZmXT10bXAsODs7CQkJCVwKKwlsZDgJdG1wPVtzYWxfdG9fb3NfaGFuZG9mZl0sLTg7 OwkJCQlcCisJc3Q4ICAgICBbb3NfdG9fc2FsX2hhbmRvZmZdPXRtcCw4OzsJCQkJXAorCWxkOAl0 bXA9W3NhbF90b19vc19oYW5kb2ZmXTs7CQkJCVwKKwlzdDggICAgIFtvc190b19zYWxfaGFuZG9m Zl09dG1wOzsKIAogCS5nbG9iYWwgaWE2NF9vc19tY2FfZGlzcGF0Y2gKIAkuZ2xvYmFsIGlhNjRf b3NfbWNhX2Rpc3BhdGNoX2VuZApAQCAtOTQsMjAgKzEwOCwyMSBAQAogCS5nbG9iYWwJaWE2NF9t Y2Ffc3RhY2tmcmFtZQogCS5nbG9iYWwJaWE2NF9tY2FfYnNwc3RvcmUKIAkuZ2xvYmFsIGlhNjRf aW5pdF9zdGFjawotCS5nbG9iYWwgaWE2NF9tY2Ffc2FsX2RhdGFfYXJlYQotCS5nbG9iYWwgaWE2 NF90bGJfZnVuY3Rpb25hbAogCiAJLnRleHQKIAkuYWxpZ24gMTYKIAogaWE2NF9vc19tY2FfZGlz cGF0Y2g6CiAKLSNpZiBkZWZpbmVkKE1DQV9URVNUKQotCS8vIFByZXRlbmQgdGhhdCB3ZSBhcmUg aW4gaW50ZXJydXB0IGNvbnRleHQKLQltb3YJCXIyPXBzcgotCWRlcAkJcjI9MCwgcjIsIFBTUl9J QywgMjsKLQltb3YJCXBzci5sID0gcjIKLSNlbmRpZgkvKiAjaWYgZGVmaW5lZChNQ0FfVEVTVCkg Ki8KKwkvLyBTZXJpYWxpemUgYWxsIE1DQSBwcm9jZXNzaW5nCisvLwltb3ZsCXIyPWlhNjRfbWNh X3NlcmlhbGl6ZQorCW1vdglyMz0xOzsKKy8vCURBVEFfVkFfVE9fUEEocjIpOzsKKwlMT0FEX1BI WVNJQ0FMKHAwLHIyLGlhNjRfbWNhX3NlcmlhbGl6ZSk7OworaWE2NF9vc19tY2Ffc3BpbjoKKwl4 Y2hnOAlyND1bcjJdLHIzOzsKKwljbXAubmUJcDYscDA9cjQscjAKKyhwNikJYnIgaWE2NF9vc19t Y2Ffc3BpbgogCiAJLy8gU2F2ZSB0aGUgU0FMIHRvIE9TIE1DQSBoYW5kb2ZmIHN0YXRlIGFzIGRl ZmluZWQKIAkvLyBieSBTQUwgU1BFQyAzLjAKQEAgLTEyNCw2ICsxMzksMTkxIEBACiAKIGlhNjRf b3NfbWNhX2RvbmVfZHVtcDoKIAorLy8JbW92bCByMTY9X19wYShpYTY0X3NhbF90b19vc19oYW5k b2ZmX3N0YXRlKSs1NgorCUxPQURfUEhZU0lDQUwocDAscjE2LGlhNjRfc2FsX3RvX29zX2hhbmRv ZmZfc3RhdGUrNTYpCisJOzsKKwlsZDggcjE4PVtyMTZdCQkvLyBHZXQgcHJvY2Vzc29yIHN0YXRl IHBhcmFtZXRlciBvbiBleGlzdGluZyBQQUxFX0NIRUNLLgorCTs7CisJdGJpdC5ueiBwNixwNz1y MTgsNjAKKyhwNykJYnIuc3BudCBkb25lX3RsYl9wdXJnZV9hbmRfcmVsb2FkCisKKwkvLyBUaGUg Zm9sbG93aW5nIGNvZGUgcHVyZ2VzIFRDIGFuZCBUUiBlbnRyaWVzLiBUaGVuIHJlbG9hZCBhbGwg VEMgZW50cmllcy4KKwkvLyBQdXJnZSBwZXJjcHUgZGF0YSBUQyBlbnRyaWVzLgorYmVnaW5fdGxi X3B1cmdlX2FuZF9yZWxvYWQ6CisJbW92IHIxNj1jci5saWQKKy8vCW1vdmwgcjE3PV9fcGEoaWE2 NF9tY2FfdGxiX2xpc3QpIC8vIFBoeXNpY2FsIGFkZHJlc3Mgb2YgaWE2NF9tY2FfdGxiX2xpc3Qg CisJTE9BRF9QSFlTSUNBTChwMCxyMTcsaWE2NF9tY2FfdGxiX2xpc3QpIC8vIFBoeXNpY2FsIGFk ZHJlc3Mgb2YgaWE2NF9tY2FfdGxiX2xpc3QgCisJbW92IHIxOT0wCisJbW92IHIyMD1OUl9DUFVT CisJOzsKKzE6CWNtcC5lcSBwNixwNz1yMTkscjIwCisocDYpCWJyLnNwbnQuZmV3IGVycgorCWxk OCByMTg9W3IxN10sSUE2NF9NQ0FfVExCX0lORk9fU0laRQorCTs7CisJYWRkIHIxOT0xLHIxOQor CWNtcC5lcSBwNixwNz1yMTgscjE2CisocDcpCWJyLnNwdGsuZmV3IDFiCisJOzsgCisJYWRkcyBy MTc9LUlBNjRfTUNBX1RMQl9JTkZPX1NJWkUscjE3CisJOzsKKwltb3YgcjIzPXIxNwkJLy8gc2F2 ZSBjdXJyZW50IGlhNjRfbWNhX3BlcmNwdV9pbmZvIGFkZHIgcG9pbnRlci4KKwlhZGRzIHIxNz0x NixyMTcKKwk7OworCS5nbG9iYWwgYWVnbAorYWVnbDoKKwlsZDggcjE4PVtyMTddLDgJCS8vIHIx OD1wdGNlX2Jhc2UKKyAgCTs7CisJbGQ0IHIxOT1bcjE3XSw0CQkvLyByMTk9cHRjZV9jb3VudFsw XQorCTs7CisJbGQ0IHIyMD1bcjE3XSw0CQkvLyByMjA9cHRjZV9jb3VudFsxXQorCTs7CisJbGQ0 IHIyMT1bcjE3XSw0CQkvLyByMjE9cHRjZV9zdHJpZGVbMF0KKwltb3YgcjI0PTAKKwk7OworCWxk NCByMjI9W3IxN10sNAkJLy8gcjIyPXB0Y2Vfc3RyaWRlWzFdCisJYWRkcyByMjA9LTEscjIwCisJ OzsKKzI6CisJY21wLmx0dSBwNixwNz1yMjQscjE5CisocDcpCWJyLmNvbmQuZHBudC5mZXcgNGYK Kwltb3YgYXIubGM9cjIwCiszOgorCXB0Yy5lIHIxOAorCTs7CisJYWRkIHIxOD1yMjIscjE4CisJ YnIuY2xvb3Auc3B0ay5mZXcgM2IKKwk7OworCWFkZCByMTg9cjIxLHIxOAorCWFkZCByMjQ9MSxy MjQKKwk7OworCWJyLnNwdGsuZmV3IDJiCis0OgorCXNybHouaSAJCQkvLyBzcmx6LmkgaW1wbGll cyBzcmx6LmQKKwk7OworCisgICAgICAgIC8vIE5vdyBwdXJnZSBhZGRyZXNzZXMgZm9ybWVybHkg bWFwcGVkIGJ5IFRSIHJlZ2lzdGVycworCS8vIDEuIFB1cmdlIElUUiZEVFIgZm9yIGtlcm5lbC4K Kwltb3ZsIHIxNj1LRVJORUxfU1RBUlQKKwltb3YgcjE4PUtFUk5FTF9UUl9QQUdFX1NISUZUPDwy CisJOzsKKwlwdHIuaSByMTYsIHIxOAorCXB0ci5kIHIxNiwgcjE4CisJOzsKKwlzcmx6LmkKKwk7 OworCXNybHouZAorCTs7CisJLy8gMi4gUHVyZ2UgRFRSIGZvciBQRVJDUFUgZGF0YS4KKwltb3Zs IHIxNj1QRVJDUFVfQUREUgorCW1vdiByMTg9UEVSQ1BVX1BBR0VfU0hJRlQ8PDIKKwk7OworCXB0 ci5kIHIxNixyMTgKKwk7OworCXNybHouZAorCTs7CisJLy8gMy4gUHVyZ2UgSVRSIGZvciBQQUwg Y29kZS4KKwlhZGRzIHIxNz00OCxyMjMKKwk7OworCWxkOCByMTY9W3IxN10KKwltb3YgcjE4PUlB NjRfR1JBTlVMRV9TSElGVDw8MgorCTs7CisJcHRyLmkgcjE2LHIxOAorCTs7CisJc3Jsei5pCisJ OzsKKwkvLyA0LiBQdXJnZSBEVFIgZm9yIHN0YWNrLiAKKwltb3YgcjE2PUlBNjRfS1IoQ1VSUkVO VF9TVEFDSykKKwk7OworCXNobCByMTY9cjE2LElBNjRfR1JBTlVMRV9TSElGVAorCW1vdmwgcjE5 PVBBR0VfT0ZGU0VUCisJOzsKKwlhZGQgcjE2PXIxOSxyMTYKKwltb3YgcjE4PUlBNjRfR1JBTlVM RV9TSElGVDw8MgorCTs7CisJcHRyLmQgcjE2LHIxOAorCTs7IAorCXNybHouaQorCTs7CisJLy8g RmluYWxseSByZWxvYWQgdGhlIFRSIHJlZ2lzdGVycy4KKwkvLyAxLiBSZWxvYWQgRFRSL0lUUiBy ZWdpc3RlcnMgZm9yIGtlcm5lbC4KKwltb3YgcjE4PUtFUk5FTF9UUl9QQUdFX1NISUZUPDwyCisJ bW92bCByMTc9S0VSTkVMX1NUQVJUCisJOzsKKwltb3YgY3IuaXRpcj1yMTgKKwltb3YgY3IuaWZh PXIxNworICAgICAgICBtb3YgcjE2PUlBNjRfVFJfS0VSTkVMCisJbW92IHIxOT1pcAorCW1vdmwg cjE4PVBBR0VfS0VSTkVMCisJOzsKKyAgICAgICAgZGVwIHIxNz0wLHIxOSwwLCBLRVJORUxfVFJf UEFHRV9TSElGVAorCTs7CisJb3IgcjE4PXIxNyxyMTgKKwk7OworICAgICAgICBpdHIuaSBpdHJb cjE2XT1yMTgKKwk7OworICAgICAgICBpdHIuZCBkdHJbcjE2XT1yMTgKKyAgICAgICAgOzsKKwlz cmx6LmkKKwlzcmx6LmQKKwk7OworCS8vIDIuIFJlbG9hZCBEVFIgcmVnaXN0ZXIgZm9yIFBFUkNQ VSBkYXRhLgorCWFkZHMgcjE3PTgscjIzCisJbW92bCByMTY9UEVSQ1BVX0FERFIJCS8vIHZhZGRy CisJbW92bCByMTg9UEVSQ1BVX1BBR0VfU0hJRlQ8PDIKKwk7OworCW1vdiBjci5pdGlyPXIxOAor CW1vdiBjci5pZmE9cjE2CisJOzsKKwlsZDggcjE4PVtyMTddCQkJLy8gcHRlCisJbW92IHIxNj1J QTY0X1RSX1BFUkNQVV9EQVRBOworCTs7CisJaXRyLmQgZHRyW3IxNl09cjE4CisJOzsKKwlzcmx6 LmQKKwk7OworCS8vIDMuIFJlbG9hZCBJVFIgZm9yIFBBTCBjb2RlLgorCWFkZHMgcjE3PTQwLHIy MworCTs7CisJbGQ4IHIxOD1bcjE3XSw4CQkJLy8gcHRlCisJOzsKKwlsZDggcjE2PVtyMTddCQkJ Ly8gdmFkZHIKKwltb3YgcjE5PUlBNjRfR1JBTlVMRV9TSElGVDw8MgorCTs7CisJbW92IGNyLml0 aXI9cjE5CisJbW92IGNyLmlmYT1yMTYKKwltb3YgcjIwPUlBNjRfVFJfUEFMQ09ERQorCTs7CisJ aXRyLmkgaXRyW3IyMF09cjE4CisJOzsKKwlzcmx6LmkKKwk7OworCS8vIDQuIFJlbG9hZCBEVFIg Zm9yIHN0YWNrLgorCW1vdiByMTY9SUE2NF9LUihDVVJSRU5UX1NUQUNLKQorCTs7CisJc2hsIHIx Nj1yMTYsSUE2NF9HUkFOVUxFX1NISUZUCisJbW92bCByMTk9UEFHRV9PRkZTRVQKKwk7OworCWFk ZCByMTg9cjE5LHIxNgkKKwltb3ZsIHIyMD1QQUdFX0tFUk5FTAorCTs7CisJYWRkIHIxNj1yMjAs cjE2CisJbW92IHIxOT1JQTY0X0dSQU5VTEVfU0hJRlQ8PDIKKwk7OworCW1vdiBjci5pdGlyPXIx OQorCW1vdiBjci5pZmE9cjE4CisJbW92IHIyMD1JQTY0X1RSX0NVUlJFTlRfU1RBQ0sKKwk7Owor CWl0ci5kIGR0cltyMjBdPXIxNgorCTs7CisJc3Jsei5kCisJOzsKKwlici5zcHRrLm1hbnkgZG9u ZV90bGJfcHVyZ2VfYW5kX3JlbG9hZAorZXJyOgorCUNPTERfQk9PVF9IQU5ET0ZGX1NUQVRFKHIy MCxyMjEscjIyKQorCWJyLnNwdGsubWFueSBpYTY0X29zX21jYV9kb25lX3Jlc3RvcmUKKworZG9u ZV90bGJfcHVyZ2VfYW5kX3JlbG9hZDoKKwogCS8vIFNldHVwIG5ldyBzdGFjayBmcmFtZSBmb3Ig T1NfTUNBIGhhbmRsaW5nCiAJbW92bAlyMj1pYTY0X21jYV9ic3BzdG9yZTs7CS8vIGxvY2FsIGJz cHN0b3JlIGFyZWEgbG9jYXRpb24gaW4gcjIKIAlEQVRBX1ZBX1RPX1BBKHIyKTs7CkBAIC0xMzcs MTcgKzMzNywxMSBAQAogCQkJCQkvLyAoQyBjYWxsaW5nIGNvbnZlbnRpb24pCiAJREFUQV9WQV9U T19QQShyMTIpOzsKIAotCS8vIENoZWNrIHRvIHNlZSBpZiB0aGUgTUNBIHJlc3VsdGVkIGZyb20g YSBUTEIgZXJyb3IKLWJlZ2luX3RsYl9lcnJvcl9jaGVjazoKLSAgICAgICAgYnIgICAgICBpYTY0 X29zX21jYV90bGJfZXJyb3JfY2hlY2s7OwotCi1kb25lX3RsYl9lcnJvcl9jaGVjazoKLQotICAg ICAgICAvLyBJZiBUTEIgaXMgZnVuY3Rpb25hbCwgZW50ZXIgdmlydHVhbCBtb2RlIGZyb20gcGh5 c2ljYWwgbW9kZQorICAgICAgICAvLyBFbnRlciB2aXJ0dWFsIG1vZGUgZnJvbSBwaHlzaWNhbCBt b2RlCiAJVklSVFVBTF9NT0RFX0VOVEVSKHIyLCByMywgaWE2NF9vc19tY2FfdmlydHVhbF9iZWdp biwgcjQpCiBpYTY0X29zX21jYV92aXJ0dWFsX2JlZ2luOgogCi0JLy8gY2FsbCBvdXIgaGFuZGxl cgorCS8vIENhbGwgdmlydHVhbCBtb2RlIGhhbmRsZXIKIAltb3ZsCQlyMj1pYTY0X21jYV91Y21j X2hhbmRsZXI7OwogCW1vdgkJYjY9cjI7OwogCWJyLmNhbGwuc3B0ay5tYW55ICAgIGIwPWI2OzsK QEAgLTE1NiwxMyArMzUwLDYgQEAKIAlQSFlTSUNBTF9NT0RFX0VOVEVSKHIyLCByMywgaWE2NF9v c19tY2FfdmlydHVhbF9lbmQsIHI0KQogaWE2NF9vc19tY2FfdmlydHVhbF9lbmQ6CiAKLSNpZiBk ZWZpbmVkKE1DQV9URVNUKQotCS8vIFByZXRlbmQgdGhhdCB3ZSBhcmUgaW4gaW50ZXJydXB0IGNv bnRleHQKLQltb3YJcjI9cHNyOzsKLQlkZXAJcjI9MCwgcjIsIFBTUl9JQywgMjs7Ci0JbW92CXBz ci5sID0gcjI7OwotI2VuZGlmCS8qICNpZiBkZWZpbmVkKE1DQV9URVNUKSAqLwotCiAJLy8gcmVz dG9yZSB0aGUgb3JpZ2luYWwgc3RhY2sgZnJhbWUgaGVyZQogCW1vdmwgICAgcjI9aWE2NF9tY2Ff c3RhY2tmcmFtZQkvLyByZXN0b3JlIHN0YWNrIGZyYW1lIGZyb20gbWVtb3J5IGF0IHIyCiAJOzsK QEAgLTE3OCwxNCArMzY1LDE2IEBACiAJYnIJaWE2NF9vc19tY2FfcHJvY19zdGF0ZV9yZXN0b3Jl OzsKIAogaWE2NF9vc19tY2FfZG9uZV9yZXN0b3JlOgotCW1vdmwJcjM9aWE2NF90bGJfZnVuY3Rp b25hbDs7Ci0JREFUQV9WQV9UT19QQShyMyk7OwotCWxkOAlyMz1bcjNdOzsKLQljbXAuZXEJcDYs cDc9cjAscjM7OwogCU9TX01DQV9UT19TQUxfSEFORE9GRl9TVEFURV9SRVNUT1JFKHIyKTs7CiAJ Ly8gYnJhbmNoIGJhY2sgdG8gU0FMRV9DSEVDSwogCWxkOAkJcjM9W3IyXTs7CiAJbW92CQliMD1y Mzs7CQkvLyBTQUxfQ0hFQ0sgcmV0dXJuIGFkZHJlc3MKKworCS8vIHJlbGVhc2UgbG9jaworCW1v dmwJCXIzPWlhNjRfbWNhX3NlcmlhbGl6ZTs7CisJREFUQV9WQV9UT19QQShyMyk7OworCXN0OC5y ZWwJCVtyM109cjAKKwogCWJyCQliMAogCTs7CiBpYTY0X29zX21jYV9kaXNwYXRjaF9lbmQ6CkBA IC0yMDUsOCArMzk0LDkgQEAKIGlhNjRfb3NfbWNhX3Byb2Nfc3RhdGVfZHVtcDoKIC8vIFNhdmUg YmFuayAxIEdScyAxNi0zMSB3aGljaCB3aWxsIGJlIHVzZWQgYnkgYy1sYW5ndWFnZSBjb2RlIHdo ZW4gd2Ugc3dpdGNoCiAvLyAgdG8gdmlydHVhbCBhZGRyZXNzaW5nIG1vZGUuCi0JbW92bAkJcjI9 aWE2NF9tY2FfcHJvY19zdGF0ZV9kdW1wOzsgICAgICAgICAgIC8vIE9zIHN0YXRlIGR1bXAgYXJl YQotICAgICAgICBEQVRBX1ZBX1RPX1BBKHIyKSAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJ0 IHRvIHRvIHBoeXNpY2FsIGFkZHJlc3MKKy8vCW1vdmwJCXIyPWlhNjRfbWNhX3Byb2Nfc3RhdGVf ZHVtcDs7ICAgICAgICAgICAvLyBPcyBzdGF0ZSBkdW1wIGFyZWEKKy8vICAgICAgICBEQVRBX1ZB X1RPX1BBKHIyKSAgICAgICAgICAgICAgICAgICAvLyBjb252ZXJ0IHRvIHRvIHBoeXNpY2FsIGFk ZHJlc3MKKwlMT0FEX1BIWVNJQ0FMKHAwLHIyLGlhNjRfbWNhX3Byb2Nfc3RhdGVfZHVtcCkvLyBj b252ZXJ0IE9TIHN0YXRlIGR1bXAgYXJlYSB0byBwaHlzaWNhbCBhZGRyZXNzCiAKIC8vIHNhdmUg YXIuTmFUCiAJbW92CQlyNT1hci51bmF0ICAgICAgICAgICAgICAgICAgLy8gYXIudW5hdApAQCAt NjU4LDc5ICs4NDgsNiBAQAogCiAvL0VuZFN0dWIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLS8vKysKLS8vIE5h bWU6Ci0vLwlpYTY0X29zX21jYV90bGJfZXJyb3JfY2hlY2soKQotLy8KLS8vIFN0dWIgRGVzY3Jp cHRpb246Ci0vLwotLy8JVGhpcyBzdHViIGNoZWNrcyB0byBzZWUgaWYgdGhlIE1DQSByZXN1bHRl ZCBmcm9tIGEgVExCIGVycm9yCi0vLwotLy8tLQotCi1pYTY0X29zX21jYV90bGJfZXJyb3JfY2hl Y2s6Ci0KLQkvLyBSZXRyaWV2ZSBzYWwgZGF0YSBzdHJ1Y3R1cmUgZm9yIHVuY29ycmVjdGVkIE1D QQotCi0JLy8gTWFrZSB0aGUgaWE2NF9zYWxfZ2V0X3N0YXRlX2luZm8oKSBjYWxsCi0JbW92bAly ND1pYTY0X21jYV9zYWxfZGF0YV9hcmVhOzsKLQltb3ZsCXI3PWlhNjRfc2FsOzsKLQltb3YJcjY9 cjEJCQkvLyBzYXZlIGdwCi0JREFUQV9WQV9UT19QQShyNCkJCS8vIGNvbnZlcnQgdG8gcGh5c2lj YWwgYWRkcmVzcwotCURBVEFfVkFfVE9fUEEocjcpOzsJCS8vIGNvbnZlcnQgdG8gcGh5c2ljYWwg YWRkcmVzcwotCWxkOAlyNz1bcjddCQkJLy8gZ2V0IGFkZHIgb2YgcGRlc2MgZnJvbSBpYTY0X3Nh bAotCW1vdmwJcjM9U0FMX0dFVF9TVEFURV9JTkZPOzsKLQlEQVRBX1ZBX1RPX1BBKHI3KTs7CQkv LyBjb252ZXJ0IHRvIHBoeXNpY2FsIGFkZHJlc3MKLQlsZDgJcjg9W3I3XSw4OzsJCS8vIGdldCBw ZGVzYyBmdW5jdGlvbiBwb2ludGVyCi0JZGVwCXI4PTAscjgsNjEsMzs7CQkvLyBjb252ZXJ0IFNB TCBWQSB0byBQQQotCWxkOAlyMT1bcjddOzsJCS8vIHNldCBuZXcgKGlhNjRfc2FsKSBncAotCWRl cAlyMT0wLHIxLDYxLDM7OwkJLy8gY29udmVydCBTQUwgVkEgdG8gUEEKLQltb3YJYjY9cjgKLQot CWFsbG9jCXI1PWFyLnBmcyw4LDAsOCwwOzsJLy8gYWxsb2NhdGUgc3RhY2sgZnJhbWUgZm9yIFNB TCBjYWxsCi0JbW92CW91dDA9cjMJCQkvLyB3aGljaCBTQUwgcHJvYyB0byBjYWxsCi0JbW92CW91 dDE9cjAJCQkvLyBlcnJvciB0eXBlID09IE1DQQotCW1vdglvdXQyPXIwCQkJLy8gbnVsbCBhcmcK LQltb3YJb3V0Mz1yNAkJCS8vIGRhdGEgY29weSBhcmVhCi0JbW92CW91dDQ9cjAJCQkvLyBudWxs IGFyZwotCW1vdglvdXQ1PXIwCQkJLy8gbnVsbCBhcmcKLQltb3YJb3V0Nj1yMAkJCS8vIG51bGwg YXJnCi0JbW92CW91dDc9cjA7OwkJLy8gbnVsbCBhcmcKLQotCWJyLmNhbGwuc3B0ay5mZXcJYjA9 YjY7OwotCi0JbW92CXIxPXI2CQkJLy8gcmVzdG9yZSBncAotCW1vdglhci5wZnM9cjU7OwkJLy8g cmVzdG9yZSBhci5wZnMKLQotCW1vdmwJcjY9aWE2NF90bGJfZnVuY3Rpb25hbDs7Ci0JREFUQV9W QV9UT19QQShyNikJCS8vIG5lZWRlZCBsYXRlcgotCi0JY21wLmVxCXA2LHA3PXIwLHI4OzsJCS8v IGNoZWNrIFNBTCBjYWxsIHJldHVybiBhZGRyZXNzCi0ocDcpCXN0OAlbcjZdPXIwCQkJLy8gY2xl YXIgdGxiX2Z1bmN0aW9uYWwgZmxhZwotKHA3KSAgICBicgl0bGJfZmFpbHVyZQkJLy8gZXJyb3I7 IHJldHVybiB0byBTQUwKLQotCS8vIGV4YW1pbmUgcHJvY2Vzc29yIGVycm9yIGxvZyBmb3IgdHlw ZSBvZiBlcnJvcgotCWFkZAlyND00MCsyNCxyNDs7CQkvLyBwYXJzZSBwYXN0IHJlY29yZCBoZWFk ZXIgKGxlbmd0aD00MCkKLQkJCQkJLy8gYW5kIHNlY3Rpb24gaGVhZGVyIChsZW5ndGg9MjQpCi0J bGQ0CXI0PVtyNF0JCQkvLyBnZXQgdmFsaWQgZmllbGQgb2YgcHJvY2Vzc29yIGxvZwotCW1vdgly NT0weGYwMDs7Ci0JYW5kCXI1PXI0LHI1OzsJCS8vIHJlYWQgYml0cyA4LTExIG9mIHZhbGlkIGZp ZWxkCi0JCQkJCS8vIHRvIGRldGVybWluZSBpZiB3ZSBoYXZlIGEgVExCIGVycm9yCi0JbW92bAly Mz0weDEKLQljbXAuZXEJcDYscDc9cjAscjU7OwotCS8vIGlmIG5vIFRMQiBmYWlsdXJlLCBzZXQg dGxiX2Z1bmN0aW9uYWwgZmxhZwotKHA2KQlzdDgJW3I2XT1yMwotCS8vIGVsc2UgY2xlYXIgZmxh ZwotKHA3KQlzdDgJW3I2XT1yMAotCi0JLy8gaWYgbm8gVExCIGZhaWx1cmUsIGNvbnRpbnVlIHdp dGggbm9ybWFsIHZpcnR1YWwgbW9kZSBsb2dnaW5nCi0ocDYpICAgIGJyCWRvbmVfdGxiX2Vycm9y X2NoZWNrCi0JLy8gZWxzZSBubyBwb2ludCBpbiBlbnRlcmluZyB2aXJ0dWFsIG1vZGUgZm9yIGxv Z2dpbmcKLXRsYl9mYWlsdXJlOgotCWJyICAgICAgaWE2NF9vc19tY2FfdmlydHVhbF9lbmQKLQot Ly9FbmRTdHViLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCiAKIC8vIG9rLCB0aGUgaXNzdWUgaGVyZSBpcyB0aGF0 IHdlIG5lZWQgdG8gc2F2ZSBzdGF0ZSBpbmZvcm1hdGlvbiBzbwogLy8gaXQgY2FuIGJlIHVzZWFi bGUgYnkgdGhlIGtlcm5lbCBkZWJ1Z2dlciBhbmQgc2hvdyByZWdzIHJvdXRpbmVzLgpkaWZmIC1y dSBsaW51cy1iay9hcmNoL2lhNjQvbW0vaW5pdC5jIHRvZG8vYXJjaC9pYTY0L21tL2luaXQuYwot LS0gbGludXMtYmsvYXJjaC9pYTY0L21tL2luaXQuYwlUaHUgT2N0IDE2IDE2OjE4OjQ4IDIwMDMK KysrIHRvZG8vYXJjaC9pYTY0L21tL2luaXQuYwlGcmkgT2N0IDE3IDEyOjAwOjI5IDIwMDMKQEAg LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlIDxhc20vdGxiLmg+CiAjaW5jbHVkZSA8YXNtL3VhY2Nl c3MuaD4KICNpbmNsdWRlIDxhc20vdW5pc3RkLmg+CisjaW5jbHVkZSA8YXNtL21jYS5oPgogCiBE RUZJTkVfUEVSX0NQVShzdHJ1Y3QgbW11X2dhdGhlciwgbW11X2dhdGhlcnMpOwogCkBAIC0yNzQs NiArMjc1LDEwIEBACiB7CiAJdW5zaWduZWQgbG9uZyBwc3IsIHB0YSwgaW1wbF92YV9iaXRzOwog CWV4dGVybiB2b2lkIF9faW5pdCB0bGJfaW5pdCAodm9pZCk7CisjaWZkZWYgQ09ORklHX0lBNjRf TUNBCisJaW50IGNwdTsKKyNlbmRpZgorCiAjaWZkZWYgQ09ORklHX0RJU0FCTEVfVkhQVAogIwlk ZWZpbmUgVkhQVF9FTkFCTEVfQklUCTAKICNlbHNlCkBAIC0zMzIsNiArMzM3LDIzIEBACiAJaWE2 NF9zZXRfcHRhKHB0YSB8ICgwIDw8IDgpIHwgKHZtbHB0X2JpdHMgPDwgMikgfCBWSFBUX0VOQUJM RV9CSVQpOwogCiAJaWE2NF90bGJfaW5pdCgpOworCisjaWZkZWYJQ09ORklHX0lBNjRfTUNBCisJ Y3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOworCisJLyogbWNhIGhhbmRsZXIgdXNlcyBjci5saWQg YXMga2V5IHRvIHBpY2sgdGhlIHJpZ2h0IGVudHJ5ICovCisJaWE2NF9tY2FfdGxiX2xpc3RbY3B1 XS5jcl9saWQgPSBpYTY0X2dldHJlZyhfSUE2NF9SRUdfQ1JfTElEKTsKKworCS8qIGluc2VydCB0 aGlzIHBlcmNwdSBkYXRhIGluZm9ybWF0aW9uIGludG8gb3VyIGxpc3QgZm9yIE1DQSByZWNvdmVy eSBwdXJwb3NlcyAqLworCWlhNjRfbWNhX3RsYl9saXN0W2NwdV0ucGVyY3B1X3BhZGRyPXB0ZV92 YWwobWtfcHRlX3BoeXMoX19wYShteV9jcHVfZGF0YSksIFBBR0VfS0VSTkVMKSk7CisJLyogQWxz byBzYXZlIHBlci1jcHUgdGxiIGZsdXNoIHJlY2lwZSBmb3IgdXNlIGluIHBoeXNpY2FsIG1vZGUg bWNhIGhhbmRsZXIgKi8KKwlpYTY0X21jYV90bGJfbGlzdFtjcHVdLnB0Y2VfYmFzZT1sb2NhbF9j cHVfZGF0YS0+cHRjZV9iYXNlOworCWlhNjRfbWNhX3RsYl9saXN0W2NwdV0ucHRjZV9jb3VudFsw XT1sb2NhbF9jcHVfZGF0YS0+cHRjZV9jb3VudFswXTsKKwlpYTY0X21jYV90bGJfbGlzdFtjcHVd LnB0Y2VfY291bnRbMV09bG9jYWxfY3B1X2RhdGEtPnB0Y2VfY291bnRbMV07CisJaWE2NF9tY2Ff dGxiX2xpc3RbY3B1XS5wdGNlX3N0cmlkZVswXT1sb2NhbF9jcHVfZGF0YS0+cHRjZV9zdHJpZGVb MF07CisJaWE2NF9tY2FfdGxiX2xpc3RbY3B1XS5wdGNlX3N0cmlkZVsxXT1sb2NhbF9jcHVfZGF0 YS0+cHRjZV9zdHJpZGVbMV07CisjZW5kaWYKKwogfQogCiAjaWZkZWYgQ09ORklHX1ZJUlRVQUxf TUVNX01BUApkaWZmIC1ydSBsaW51cy1iay9pbmNsdWRlL2FzbS1pYTY0L21jYS5oIHRvZG8vaW5j bHVkZS9hc20taWE2NC9tY2EuaAotLS0gbGludXMtYmsvaW5jbHVkZS9hc20taWE2NC9tY2EuaAlU aHUgT2N0IDE2IDE2OjE5OjUxIDIwMDMKKysrIHRvZG8vaW5jbHVkZS9hc20taWE2NC9tY2EuaAlG cmkgT2N0IDE3IDEyOjAxOjAyIDIwMDMKQEAgLTE4LDYgKzE4LDcgQEAKICNpbmNsdWRlIDxhc20v cGFyYW0uaD4KICNpbmNsdWRlIDxhc20vc2FsLmg+CiAjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5o PgorI2luY2x1ZGUgPGFzbS9tY2FfYXNtLmg+CiAKIC8qIFRoZXNlIGFyZSB0aGUgcmV0dXJuIGNv ZGVzIGZyb20gYWxsIHRoZSBJQTY0X01DQSBzcGVjaWZpYyBpbnRlcmZhY2VzICovCiB0eXBlZGVm CWludCBpYTY0X21jYV9yZXR1cm5fY29kZV90OwpAQCAtNjEsNiArNjIsMTcgQEAKIAlJQTY0X01D QV9SRU5ERVpfQ0hFQ0tJTl9ET05FCT0JMHgxCiB9OwogCisvKiB0aGUgZm9sbG93aW5nIGRhdGEg c3RydWN0dXJlIGlzIHVzZWQgZm9yIFRMQiBlcnJvciByZWNvdmVyeSBwdXJwb3NlcyAqLworZXh0 ZXJuIHN0cnVjdCBpYTY0X21jYV90bGJfaW5mbyB7CisJdTY0CWNyX2xpZDsKKwl1NjQJcGVyY3B1 X3BhZGRyOworCXU2NAlwdGNlX2Jhc2U7CisJdTMyCXB0Y2VfY291bnRbMl07CisJdTMyCXB0Y2Vf c3RyaWRlWzJdOyAKKwl1NjQJcGFsX3BhZGRyOworCXU2NAlwYWxfYmFzZTsKK30gaWE2NF9tY2Ff dGxiX2xpc3RbTlJfQ1BVU107CisKIC8qIEluZm9ybWF0aW9uIG1haW50YWluZWQgYnkgdGhlIE1D IGluZnJhc3RydWN0dXJlICovCiB0eXBlZGVmIHN0cnVjdCBpYTY0X21jX2luZm9fcyB7CiAJdTY0 CQlpbWlfbWNhX2hhbmRsZXI7CmRpZmYgLXJ1IGxpbnVzLWJrL2luY2x1ZGUvYXNtLWlhNjQvcGd0 YWJsZS5oIHRvZG8vaW5jbHVkZS9hc20taWE2NC9wZ3RhYmxlLmgKLS0tIGxpbnVzLWJrL2luY2x1 ZGUvYXNtLWlhNjQvcGd0YWJsZS5oCVRodSBPY3QgMTYgMTY6MTk6NTEgMjAwMworKysgdG9kby9p bmNsdWRlL2FzbS1pYTY0L3BndGFibGUuaAlGcmkgT2N0IDE3IDEyOjAwOjI5IDIwMDMKQEAgLTIy OSw2ICsyMjksMTAgQEAKIAogI2RlZmluZSBta19wdGUocGFnZSwgcGdwcm90KQlwZm5fcHRlKHBh Z2VfdG9fcGZuKHBhZ2UpLCAocGdwcm90KSkKIAorLyogVGhpcyB0YWtlcyBhIHBoeXNpY2FsIHBh Z2UgYWRkcmVzcyB0aGF0IGlzIHVzZWQgYnkgdGhlIHJlbWFwcGluZyBmdW5jdGlvbnMgKi8KKyNk ZWZpbmUgbWtfcHRlX3BoeXMocGh5c3BhZ2UsIHBncHJvdCkgXAorKHsgcHRlX3QgX19wdGU7IHB0 ZV92YWwoX19wdGUpID0gcGh5c3BhZ2UgKyBwZ3Byb3RfdmFsKHBncHJvdCk7IF9fcHRlOyB9KQor CiAjZGVmaW5lIHB0ZV9tb2RpZnkoX3B0ZSwgbmV3cHJvdCkgXAogCShfX3B0ZSgocHRlX3ZhbChf cHRlKSAmIF9QQUdFX0NIR19NQVNLKSB8IHBncHJvdF92YWwobmV3cHJvdCkpKQogCg== ------_=_NextPart_001_01C3972B.ED139CE8--