Date: Tue, 16 Jun 2009 21:52:27 -0700 (PDT) From: Neelkanth Natu <neelnatu@yahoo.com> To: "M. Warner Losh" <imp@bsdimp.com> Cc: freebsd-mips@freebsd.org Subject: Re: FreeBSD/mips booting on Sibyte 1250 Message-ID: <25885.49433.qm@web34405.mail.mud.yahoo.com>
next in thread | raw e-mail | index | archive | help
--0-303183881-1245214347=:49433 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Hi Warner,=0A=0AI have attached the diffs against -current at revision 1942= 80.=0A=0AThere are some changes in the diff that are unrelated to the sibyt= e=0Awork and probably should be committed separately.=0A=0AI can provide mo= re information about changes to specific files if necessary.=0A=0Abest=0ANe= el=0A=0A--- On Fri, 6/12/09, M. Warner Losh <imp@bsdimp.com> wrote:=0A=0A> = From: M. Warner Losh <imp@bsdimp.com>=0A> Subject: Re: FreeBSD/mips booting= on Sibyte 1250=0A> To: neelnatu@yahoo.com=0A> Cc: freebsd-mips@freebsd.org= =0A> Date: Friday, June 12, 2009, 8:33 PM=0A> In message: <856232.92278.qm@= web34401.mail.mud.yahoo.com>=0A> =A0 =A0 =A0 =A0 =A0 =A0 Neelkanth Natu=0A>= <neelnatu@yahoo.com>=0A> writes:=0A> : I don't want to keep holding diffs = against -current for=0A> this, so I was=0A> : hoping to get this checked in= . How do I go about doing=0A> that?=0A> =0A> diffs would be a good start :)= =0A> =0A> Usually, we pass them through /projects/mips/* to make sure=0A> t= hat we=0A> have a good integration branch before we collapse/merge the=0A> = changes=0A> into -current.=0A> =0A> Warner=0A>=0A=0A=0A --0-303183881-1245214347=:49433 Content-Type: text/plain; name="sibyte_diff.txt" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="sibyte_diff.txt" ZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3Jj L3N5cy9jb25mL2ZpbGVzLm1pcHMgLi9zeXMvY29uZi9maWxlcy5taXBzCi0t LSAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9jb25m L2ZpbGVzLm1pcHMJMjAwOS0wNi0xNSAyMzoyNzoyNi4yMDgyMzEwMDAgLTA3 MDAKKysrIC4vc3lzL2NvbmYvZmlsZXMubWlwcwkyMDA5LTA2LTE2IDE3OjMx OjIxLjcyNzQwOTAwMCAtMDcwMApAQCAtOTQsNSArOTQsNiBAQAogCiBkZXYv Y2ZlL2NmZV9hcGkuYwkJb3B0aW9uYWwJY2ZlCiBkZXYvY2ZlL2NmZV9jb25z b2xlLmMJCW9wdGlvbmFsCWNmZV9jb25zb2xlCitkZXYvY2ZlL2NmZV9lbnYu YwkJb3B0aW9uYWwJY2ZlX2VudgogI2Rldi9jZmUvY2ZlX3Jlc291cmNlLmMJ CW9wdGlvbmFsCWNmZQkjIG5vdCB5ZXQgbmVlZGVkCiAKZGlmZiAtTnVyZCAv dS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9jb25mL29w dGlvbnMubWlwcyAuL3N5cy9jb25mL29wdGlvbnMubWlwcwotLS0gL3UvbmVl bG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvY29uZi9vcHRpb25z Lm1pcHMJMjAwOS0wNi0xNSAyMzoyNzoyNi4yODYyMzIwMDAgLTA3MDAKKysr IC4vc3lzL2NvbmYvb3B0aW9ucy5taXBzCTIwMDktMDYtMTYgMTc6MzE6MjEu NzMyNDE1MDAwIC0wNzAwCkBAIC0zMyw2ICszMyw3IEBACiBDUFVfTUlQUzY0 CW9wdF9nbG9iYWwuaAogQ1BVX05PRlBVCW9wdF9nbG9iYWwuaAogQ1BVX1NF TlRSWTUJb3B0X2dsb2JhbC5oCitDUFVfU0IxCQlvcHRfZ2xvYmFsLmgKIAog SVNBX01JUFMxCW9wdF9jcHV0eXBlLmgKIElTQV9NSVBTMwlvcHRfY3B1dHlw ZS5oCkBAIC00NCw2ICs0NSw4IEBACiBZQU1PTgkJb3B0X2dsb2JhbC5oCiBD RkUJCW9wdF9nbG9iYWwuaAogQ0ZFX0NPTlNPTEUJb3B0X2dsb2JhbC5oCitD RkVfRU5WCQlvcHRfZ2xvYmFsLmgKK0NGRV9FTlZfU0laRQlvcHRfZ2xvYmFs LmgKIAogS0VSTlBIWVNBRERSCW9wdF9nbG9iYWwuaAogS0VSTlZJUlRBRERS CW9wdF9nbG9iYWwuaApAQCAtNTUsMyArNTgsOCBAQAogCiBUSUNLX1VTRV9Z QU1PTl9GUkVRCW9wdF9nbG9iYWwuaAogVElDS19VU0VfTUFMVEFfUlRDCW9w dF9nbG9iYWwuaAorCitQQ0lfSU9TUEFDRV9TSVpFCW9wdF9nbG9iYWwuaAor UENJX0lPU1BBQ0VfQUREUglvcHRfZ2xvYmFsLmgKKworTUFYTUVNCQkJb3B0 X2dsb2JhbC5oCmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9j dXJyZW50L3NyYy9zeXMvZGV2L2NmZS9jZmVfYXBpLmMgLi9zeXMvZGV2L2Nm ZS9jZmVfYXBpLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVu dC9zcmMvc3lzL2Rldi9jZmUvY2ZlX2FwaS5jCTIwMDktMDYtMTUgMjM6Mjc6 MzEuNzk5NDQ4MDAwIC0wNzAwCisrKyAuL3N5cy9kZXYvY2ZlL2NmZV9hcGku YwkyMDA5LTA2LTE2IDE3OjMxOjIxLjczODQxMjAwMCAtMDcwMApAQCAtMTYw LDcgKzE2MCw3IEBACiB7CiAgICAgY2ZlX3hpb2NiX3QgeGlvY2I7CiAKLSAg ICB4aW9jYi54aW9jYl9mY29kZSA9IENGRV9DTURfRU5WX1NFVDsKKyAgICB4 aW9jYi54aW9jYl9mY29kZSA9IENGRV9DTURfRU5WX0VOVU07CiAgICAgeGlv Y2IueGlvY2Jfc3RhdHVzID0gMDsKICAgICB4aW9jYi54aW9jYl9oYW5kbGUg PSAwOwogICAgIHhpb2NiLnhpb2NiX2ZsYWdzID0gMDsKZGlmZiAtTnVyZCAv dS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9kZXYvY2Zl L2NmZV9jb25zb2xlLmMgLi9zeXMvZGV2L2NmZS9jZmVfY29uc29sZS5jCi0t LSAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9kZXYv Y2ZlL2NmZV9jb25zb2xlLmMJMjAwOS0wNi0xNSAyMzoyNzozMS44MjU0NDkw MDAgLTA3MDAKKysrIC4vc3lzL2Rldi9jZmUvY2ZlX2NvbnNvbGUuYwkyMDA5 LTA2LTE2IDE3OjMxOjIxLjc0NzQxMDAwMCAtMDcwMApAQCAtODQsMTQgKzg0 LDEyIEBACiBzdGF0aWMgdm9pZAogY25fZHJ2aW5pdCh2b2lkICp1bnVzZWQp CiB7Ci0JY2hhciBvdXRwdXRbMzJdOwogCXN0cnVjdCB0dHkgKnRwOwogCiAJ aWYgKGNmZV9jb25zZGV2LmNuX3ByaSAhPSBDTl9ERUFEICYmCiAJICAgIGNm ZV9jb25zZGV2LmNuX25hbWVbMF0gIT0gJ1wwJykgewogCQl0cCA9IHR0eV9h bGxvYygmY2ZlX3R0eWRldnN3LCBOVUxMKTsKLQkJdHR5X21ha2VkZXYodHAs IE5VTEwsICIlcyIsIG91dHB1dCk7Ci0JCXR0eV9tYWtlYWxpYXModHAsICJj ZmVjb25zIik7CisJCXR0eV9tYWtlZGV2KHRwLCBOVUxMLCAiY2ZlY29ucyIp OwogCX0KIH0KIApAQCAtMTE3LDE1ICsxMTUsMjEgQEAKIHN0YXRpYyB2b2lk CiBjZmVfdHR5X291dHdha2V1cChzdHJ1Y3QgdHR5ICp0cCkKIHsKLQlpbnQg bGVuOworCWludCBsZW4sIHdyaXR0ZW4sIHJjOwogCXVfY2hhciBidWZbQ0ZF QlVSU1RMRU5dOwogCiAJZm9yICg7OykgewogCQlsZW4gPSB0dHlkaXNjX2dl dGModHAsIGJ1Ziwgc2l6ZW9mIGJ1Zik7CiAJCWlmIChsZW4gPT0gMCkKIAkJ CWJyZWFrOwotCQl3aGlsZSAoY2ZlX3dyaXRlKGNvbmhhbmRsZSwgYnVmLCBs ZW4pID09IDApCi0JCQljb250aW51ZTsKKworCQl3cml0dGVuID0gMDsKKwkJ d2hpbGUgKHdyaXR0ZW4gPCBsZW4pIHsKKwkJCXJjID0gY2ZlX3dyaXRlKGNv bmhhbmRsZSwgJmJ1Zlt3cml0dGVuXSwgbGVuIC0gd3JpdHRlbik7CisJCQlp ZiAocmMgPCAwKQorCQkJCWJyZWFrOworCQkJd3JpdHRlbiArPSByYzsKKwkJ fQogCX0KIH0KIApAQCAtMTg0LDEzICsxODgsOSBAQAogc3RhdGljIGludAog Y2ZlX2NuZ2V0YyhzdHJ1Y3QgY29uc2RldiAqY3ApCiB7Ci0JaW50IHJlc3Vs dDsKIAl1bnNpZ25lZCBjaGFyIGNoOwogCi0Jd2hpbGUgKChyZXN1bHQgPSBj ZmVfcmVhZChjb25oYW5kbGUsICZjaCwgMSkpID09IDApCi0JCWNvbnRpbnVl OwotCi0JaWYgKHJlc3VsdCA+IDApIHsKKwlpZiAoY2ZlX3JlYWQoY29uaGFu ZGxlLCAmY2gsIDEpID09IDEpIHsKICNpZiBkZWZpbmVkKEtEQikgJiYgZGVm aW5lZChBTFRfQlJFQUtfVE9fREVCVUdHRVIpCiAJCWludCBrZGJfYnJrOwog CmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3Ny Yy9zeXMvZGV2L2NmZS9jZmVfZW52LmMgLi9zeXMvZGV2L2NmZS9jZmVfZW52 LmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lz L2Rldi9jZmUvY2ZlX2Vudi5jCTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAw MDAwIC0wODAwCisrKyAuL3N5cy9kZXYvY2ZlL2NmZV9lbnYuYwkyMDA5LTA1 LTEyIDAxOjEyOjQ0LjcyODg2NTAwMCAtMDcwMApAQCAtMCwwICsxLDc0IEBA CisvKi0KKyAqIENvcHlyaWdodCAoYykgMjAwOSBOZWVsa2FudGggTmF0dQor ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92 aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0 IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90 aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1 dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI RSBBVVRIT1IgQU5EIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBB TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U IFNIQUxMIFRIRSBBVVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQor ICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMg KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP RiBTVUJTVElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP TikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFC SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBP RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ QklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8 c3lzL3BhcmFtLmg+CisjaW5jbHVkZSA8c3lzL2tlcm5lbC5oPgorI2luY2x1 ZGUgPHN5cy9zeXN0bS5oPgorCisjaW5jbHVkZSA8ZGV2L2NmZS9jZmVfYXBp Lmg+CisKK19fRkJTRElEKCIkRnJlZUJTRCQiKTsKKworI2lmbmRlZglDRkVf RU5WX1NJWkUKKyNkZWZpbmUJQ0ZFX0VOVl9TSVpFCVBBR0VfU0laRQkvKiBk ZWZhdWx0IGlzIG9uZSBwYWdlICovCisjZW5kaWYKKworZXh0ZXJuIHZvaWQg Y2ZlX2Vudl9pbml0KHZvaWQpOworCitzdGF0aWMgY2hhciBjZmVfZW52X2J1 ZltDRkVfRU5WX1NJWkVdOworCit2b2lkCitjZmVfZW52X2luaXQodm9pZCkK K3sKKwlpbnQgaWR4LCBsZW47CisJY2hhciBuYW1lWzY0XSwgdmFsWzEyOF0s ICpjcCwgKmNwbGltOworCisJY3AgPSBjZmVfZW52X2J1ZjsKKwljcGxpbSA9 IGNwICsgQ0ZFX0VOVl9TSVpFOworCisJaWR4ID0gMDsKKwl3aGlsZSAoMSkg eworCQlpZiAoY2ZlX2VudW1lbnYoaWR4LCBuYW1lLCBzaXplb2YobmFtZSks IHZhbCwgc2l6ZW9mKHZhbCkpICE9IDApCisJCQlicmVhazsKKworCQlpZiAo Ym9vdHZlcmJvc2UpCisJCQlwcmludGYoIkltcG9ydGluZyBDRkUgZW52OiBc IiVzPSVzXCJcbiIsIG5hbWUsIHZhbCk7CisKKwkJLyoKKwkJICogbmFtZT12 YWxcMFwwCisJCSAqLworCQlsZW4gPSBzdHJsZW4obmFtZSkgKyAxICsgc3Ry bGVuKHZhbCkgKyAxICsgMTsKKwkJaWYgKGNwbGltIC0gY3AgPCBsZW4pCisJ CQlwcmludGYoIk5vIHNwYWNlIHRvIHN0b3JlIENGRSBlbnY6IFwiJXM9JXNc IlxuIiwKKwkJCQluYW1lLCB2YWwpOworCQllbHNlCisJCQljcCArPSBzcHJp bnRmKGNwLCAiJXM9JXMiLCBuYW1lLCB2YWwpICsgMTsKKwkJKytpZHg7CisJ fQorCSpjcCsrID0gJ1wwJzsKKworCWtlcm5fZW52cCA9IGNmZV9lbnZfYnVm OworfQpkaWZmIC1OdXJkIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVu dC9zcmMvc3lzL21pcHMvY29uZi9TV0FSTSAuL3N5cy9taXBzL2NvbmYvU1dB Uk0KLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lz L21pcHMvY29uZi9TV0FSTQkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAw MCAtMDgwMAorKysgLi9zeXMvbWlwcy9jb25mL1NXQVJNCTIwMDktMDYtMTMg MTI6MTc6NDQuNDk5NTg4MDAwIC0wNzAwCkBAIC0wLDAgKzEsODIgQEAKKyMK KyMgJElkOiAvL2RlcG90L3VzZXIvbmVlbG5hdHUvZnJlZWJzZF9zaWJ5dGUv c3JjL3N5cy9taXBzL2NvbmYvU1dBUk0jNyAkCisjCisKK2lkZW50CQlTV0FS TQorb3B0aW9ucwkJQ1BVX05PRlBVCitvcHRpb25zCQlDUFVfU0IxCisKK2Zp bGVzCQkiLi4vc2lieXRlL2ZpbGVzLnNpYnl0ZSIKK2hpbnRzCQkiU1dBUk0u aGludHMiCisKK29wdGlvbnMJCVBDSV9JT1NQQUNFX0FERFI9MHhGQzAwMDAw MAorb3B0aW9ucwkJUENJX0lPU1BBQ0VfU0laRT0weDAyMDAwMDAwCisKKyMK KyMgMzItYml0IGtlcm5lbCBjYW5ub3QgZGVhbCB3aXRoIHBoeXNpY2FsIG1l bW9yeSBiZXlvbmQgNEdCCisjCitvcHRpb25zCQlNQVhNRU09NDA5NioxMDI0 CisKK29wdGlvbnMJCUNGRQorb3B0aW9ucwkJQ0ZFX0NPTlNPTEUKK29wdGlv bnMJCUNGRV9FTlYKK29wdGlvbnMJCUFMVF9CUkVBS19UT19ERUJVR0dFUgor CisjIGNmZSBsb2FkZXIgZXhwZWN0cyBrZXJuZWwgYXQgMHg4MDAwMTAwMCBm b3IgbWlwczMyIHcvbyBiYWNrd2FyZHMKKyMgb2Zmc2V0cyBpbiB0aGUgbGlu a2VkIGVsZiBpbWFnZSAoc2VlIGxkc2NyaXB0IGhhY2spCisjIFhYWCBjYW4g d2UgY29uZGl0aW9uYWxpemUgdGhlIGxpbmtlciBzdHVmZiBvbiBvcHRpb25z IENGRT8KK29wdGlvbnMJCUtFUk5WSVJUQUREUj0weDgwMDAxMDAwCisKK21h a2VvcHRpb25zCUxEU0NSSVBUX05BTUU9CWxkc2NyaXB0Lm1pcHMuY2ZlCisK KyNjcHUJCUNQVV9NSVBTNjQKKyNvcHRpb25zIAlJU0FfTUlQUzY0CisjbWFr ZW9wdGlvbnMJQVJDSF9GTEFHUz0iLW1hcmNoPW1pcHM2NCAtbWdwNjQgLW1h Ymk9bzY0IgorY3B1CQlDUFVfTUlQUzMyCitvcHRpb25zIAlJU0FfTUlQUzMy CittYWtlb3B0aW9ucwlBUkNIX0ZMQUdTPSItbWFyY2g9bWlwczMyIgorCitt YWtlb3B0aW9ucwlERUJVRz0tZwkJI0J1aWxkIGtlcm5lbCB3aXRoIGdkYigx KSBkZWJ1ZyBzeW1ib2xzCittYWtlb3B0aW9ucwlNT0RVTEVTX09WRVJSSURF PSIiCisKK29wdGlvbnMJCUREQgorb3B0aW9ucwkJS0RCCisKK29wdGlvbnMJ CVNDSEVEXzRCU0QJCSM0QlNEIHNjaGVkdWxlcgorb3B0aW9ucwkJSU5FVAkJ CSNJbnRlck5FVHdvcmtpbmcKK29wdGlvbnMJCU5GU0NMSUVOVAkJI05ldHdv cmsgRmlsZXN5c3RlbSBDbGllbnQKK29wdGlvbnMJCU5GU19ST09UCQkjTkZT IHVzYWJsZSBhcyAvLCByZXF1aXJlcyBORlNDTElFTlQKK29wdGlvbnMJCVBT RVVET0ZTCQkjUHNldWRvLWZpbGVzeXN0ZW0gZnJhbWV3b3JrCitvcHRpb25z CQlfS1BPU0lYX1BSSU9SSVRZX1NDSEVEVUxJTkcgI1Bvc2l4IFAxMDAzXzFC IHJlYWwtdGltZSBleHRlbnNpb25zCisKKyMgRGVidWdnaW5nIGZvciB1c2Ug aW4gLWN1cnJlbnQKK29wdGlvbnMJCUlOVkFSSUFOVFMKK29wdGlvbnMJCUlO VkFSSUFOVF9TVVBQT1JUCitvcHRpb25zCQlXSVRORVNTCisKK29wdGlvbnMJ CU1EX1JPT1QKK29wdGlvbnMJCU1EX1JPT1RfU0laRT00MDk2CitvcHRpb25z IAlGRlMJCQkjRmFzdCBmaWxlc3lzdGVtCisKK2RldmljZQkJcGNpCitkZXZp Y2UJCW1paWJ1cworZGV2aWNlCQliZ2UKK2RldmljZQkJbG9vcAorZGV2aWNl CQlldGhlcgorZGV2aWNlCQltZAorCitvcHRpb25zCQlVU0JfREVCVUcKK2Rl dmljZSB1c2IKK2RldmljZSBvaGNpCitkZXZpY2UgdWhjaQorZGV2aWNlIGVo Y2kKKworZGV2aWNlIHVtYXNzCisKK2RldmljZSBzY2J1cworZGV2aWNlIGRh CisKK2RldmljZQkJYXRhCitkZXZpY2UJCWF0YWRpc2sKK2RldmljZQkJYXRh cGljZAorb3B0aW9ucwkJQVRBX1NUQVRJQ19JRApkaWZmIC1OdXJkIC91L25l ZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvY29uZi9T V0FSTS5oaW50cyAuL3N5cy9taXBzL2NvbmYvU1dBUk0uaGludHMKLS0tIC91 L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvY29u Zi9TV0FSTS5oaW50cwkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAt MDgwMAorKysgLi9zeXMvbWlwcy9jb25mL1NXQVJNLmhpbnRzCTIwMDktMDUt MzAgMTk6MzU6NDUuNTgxMjU4MDAwIC0wNzAwCkBAIC0wLDAgKzEsMTcgQEAK KyMgJEZyZWVCU0QkCitoaW50LnpiYnVzLjAuYXQ9Im5leHVzMCIKK2hpbnQu emJwY2kuMC5hdD0iemJidXMwIgoraGludC5zY2QuMC5hdD0iemJidXMwIgor CisjCisjIFNXQVJNIElERSBpbnRlcmZhY2UgaXMgb24gdGhlIGdlbmVyaWMg YnVzIGF0IGNoaXAgc2VsZWN0IDQuCisjIFRoZSBDUzQgcmVnaW9uIGlzIDY0 S0IgaW4gc2l6ZSBhbmQgc3RhcnRzIGF0IDB4MTAwQjAwMDAuCisjIFRoZSBJ REUgaW50ZXJydXB0IGlzIHdpcmVkIHRvIEdQSU80IChpbnRzcmMgMzYgdG8g dGhlIGludGVycnVwdCBtYXBwZXIpCisjCitoaW50LmF0YS4wLmF0PSJ6YmJ1 czAiCitoaW50LmF0YS4wLm1hZGRyPTB4MTAwQjAwMDAKK2hpbnQuYXRhLjAu bXNpemU9MHgxMDAwMAoraGludC5hdGEuMC5pcnE9MzYKKyNoaW50LmF0YS4w LmRpc2FibGVkPTAKKyNoaW50LmF0YS4wLnJlZ29mZnNldD0weDFGMAorI2hp bnQuYXRhLjAucmVnc2hpZnQ9NQpkaWZmIC1OdXJkIC91L25lZWxuYXR1L3A0 L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvaW5jbHVkZS9jcHUuaCAu L3N5cy9taXBzL2luY2x1ZGUvY3B1LmgKLS0tIC91L25lZWxuYXR1L3A0L2Zy ZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvaW5jbHVkZS9jcHUuaAkyMDA5 LTA2LTE1IDIzOjI3OjUxLjQ5NDIzMzAwMCAtMDcwMAorKysgLi9zeXMvbWlw cy9pbmNsdWRlL2NwdS5oCTIwMDktMDYtMTYgMTc6MzE6MjEuNzUyNDE1MDAw IC0wNzAwCkBAIC0xNTQsNyArMTU0LDExIEBACiAgKiBUaGUgYml0cyBpbiB0 aGUgQ09ORklHIHJlZ2lzdGVyCiAgKi8KICNkZWZpbmUgQ0ZHX0swX1VOQ0FD SEVECTIKKyNpZiBkZWZpbmVkKENQVV9TQjEpCisjZGVmaW5lIENGR19LMF9D T0hFUkVOVAk1CS8qIGNhY2hlYWJsZSBjb2hlcmVudCAqLworI2Vsc2UKICNk ZWZpbmUJQ0ZHX0swX0NBQ0hFRAkzCisjZW5kaWYKIAogLyoKICAqIFRoZSBi aXRzIGluIHRoZSBjb250ZXh0IHJlZ2lzdGVyLgpkaWZmIC1OdXJkIC91L25l ZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvaW5jbHVk ZS9jcHVyZWdzLmggLi9zeXMvbWlwcy9pbmNsdWRlL2NwdXJlZ3MuaAotLS0g L3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9p bmNsdWRlL2NwdXJlZ3MuaAkyMDA5LTA2LTE1IDIzOjI3OjUxLjUwMDIzMDAw MCAtMDcwMAorKysgLi9zeXMvbWlwcy9pbmNsdWRlL2NwdXJlZ3MuaAkyMDA5 LTA2LTE2IDE3OjMxOjIxLjc1ODQxNzAwMCAtMDcwMApAQCAtMTAzLDYgKzEw Myw4IEBACiAvKiBDUFUgZGVwZW5kZW50IG10YzAgaGF6YXJkIGhvb2sgKi8K ICNpZmRlZiBUQVJHRVRfT0NURU9OCiAjZGVmaW5lCUNPUDBfU1lOQyAgbm9w OyBub3A7IG5vcDsgbm9wOyBub3A7CisjZWxpZiBkZWZpbmVkKENQVV9TQjEp CisjZGVmaW5lIENPUDBfU1lOQyAgc3Nub3A7IHNzbm9wOyBzc25vcDsgc3Nu b3A7IHNzbm9wOyBzc25vcDsgc3Nub3A7IHNzbm9wOyBzc25vcAogI2Vsc2UK ICNkZWZpbmUJQ09QMF9TWU5DCQkvKiBub3RoaW5nICovCiAjZW5kaWYKZGlm ZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5 cy9taXBzL2luY2x1ZGUvaW50ci5oIC4vc3lzL21pcHMvaW5jbHVkZS9pbnRy LmgKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lz L21pcHMvaW5jbHVkZS9pbnRyLmgJMjAwOS0wNi0xNSAyMzoyNzo1MS41MzUy MzUwMDAgLTA3MDAKKysrIC4vc3lzL21pcHMvaW5jbHVkZS9pbnRyLmgJMjAw OS0wNi0xNiAxNzozMToyMS43NjY0MTQwMDAgLTA3MDAKQEAgLTc1LDggKzc1 LDggQEAKIAogdHlwZWRlZiB2b2lkICgqbWFza19mbikodm9pZCAqKTsKIAot dm9pZCBtaXBzX21hc2tfaXJxKHZvaWQpOwotdm9pZCBtaXBzX3VubWFza19p cnEodm9pZCk7Cit2b2lkIG1pcHNfbWFza19pcnEodm9pZCAqKTsKK3ZvaWQg bWlwc191bm1hc2tfaXJxKHZvaWQgKik7CiAKIHN0cnVjdCB0cmFwZnJhbWU7 CiB2b2lkCW1pcHNfc2V0X2ludHIoaW50IHByaSwgdWludDMyX3QgbWFzaywK ZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3Jj L3N5cy9taXBzL2luY2x1ZGUvaW50cl9tYWNoZGVwLmggLi9zeXMvbWlwcy9p bmNsdWRlL2ludHJfbWFjaGRlcC5oCi0tLSAvdS9uZWVsbmF0dS9wNC9mcmVl YnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL2luY2x1ZGUvaW50cl9tYWNoZGVw LmgJMjAwOS0wNi0xNSAyMzoyNzo1MS41MzcyMzMwMDAgLTA3MDAKKysrIC4v c3lzL21pcHMvaW5jbHVkZS9pbnRyX21hY2hkZXAuaAkyMDA5LTA2LTE2IDE3 OjMxOjIxLjc3NDQwOTAwMCAtMDcwMApAQCAtMzQsNiArMzQsMjcgQEAKIAog c3RydWN0IHRyYXBmcmFtZTsKIAorLyoKKyAqIEFuIGludGVycnVwdCBzb3Vy Y2UgaXMgZGVmaW5lZCBieSBpdHMgaW50ZXJydXB0IG51bWJlciBhbmQgaGFu ZGxlcnMgdG8KKyAqIG1hc2sgYW5kIHVubWFzayB0aGUgc291cmNlcyB0aGF0 IHRyaWdnZXIgaXQuCisgKgorICogT25jZSBhbiBpbnRlcnJ1cHQgaGFuZGxl ciBpcyBlc3RhYmxpc2hlZCBmb3IgYSBwYXJ0aWN1bGFyIGludGVycnVwdCBu dW1iZXIKKyAqIHdlIGFsd2F5cyBrZWVwIGl0IGVuYWJsZWQgZnJvbSB0aGUg bWlwcyBjb3JlIHBvaW50IG9mIHZpZXcuIEhvd2V2ZXIgd2UgbWF5CisgKiBj aG9vc2UgdG8gbWFzayB0aGUgaW50ZXJydXB0IHNvdXJjZSBmZWVkaW5nIGlu dG8gaXQgdW50aWwgdGhlIGl0aHJlYWQgaGFzCisgKiBoYWQgYSBjaGFuY2Ug dG8gcnVuLgorICoKKyAqIFhYWCBob3cgZG9lcyB0aGlzIHdvcmsgd2l0aCBw bGF0Zm9ybXMgdGhhdCBoYXZlIG5vIGludGVycnVwdCBtYXBwZXIgZmVlZGlu ZworICogaW50ZXJydXB0cyB0byB0aGUgY3B1IGNvcmU/CisgKi8KK3N0cnVj dCBpbnRzcmMgeworCWludAlpbnRybnVtOworCXZvaWQgCSgqbWFza19mdW5j KShzdHJ1Y3QgaW50c3JjICppc3JjKTsKKwl2b2lkIAkoKnVubWFza19mdW5j KShzdHJ1Y3QgaW50c3JjICppc3JjKTsKK307CisKK2ludCBjcHVfcmVnaXN0 ZXJfaGFyZF9pbnRzcmMoc3RydWN0IGludHNyYyAqaXNyYyk7CitpbnQgY3B1 X3JlZ2lzdGVyX3NvZnRfaW50c3JjKHN0cnVjdCBpbnRzcmMgKmlzcmMpOwor CiB2b2lkIGNwdV9lc3RhYmxpc2hfaGFyZGludHIoY29uc3QgY2hhciAqLCBp bnQgKCopKHZvaWQqKSwgdm9pZCAoKikodm9pZCopLCAKICAgICB2b2lkICos IGludCwgaW50LCB2b2lkICoqKTsKIHZvaWQgY3B1X2VzdGFibGlzaF9zb2Z0 aW50cihjb25zdCBjaGFyICosIGludCAoKikodm9pZCopLCB2b2lkICgqKSh2 b2lkKiksIApkaWZmIC1OdXJkIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3Vy cmVudC9zcmMvc3lzL21pcHMvaW5jbHVkZS9tZF92YXIuaCAuL3N5cy9taXBz L2luY2x1ZGUvbWRfdmFyLmgKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2Rf Y3VycmVudC9zcmMvc3lzL21pcHMvaW5jbHVkZS9tZF92YXIuaAkyMDA5LTA2 LTE1IDIzOjI3OjUxLjU0NTIzMzAwMCAtMDcwMAorKysgLi9zeXMvbWlwcy9p bmNsdWRlL21kX3Zhci5oCTIwMDktMDYtMTYgMTc6MzE6MjEuNzkzNDIwMDAw IC0wNzAwCkBAIC0zOSw3ICszOSw3IEBACiAvKgogICogTWlzY2VsbGFuZW91 cyBtYWNoaW5lLWRlcGVuZGVudCBkZWNsYXJhdGlvbnMuCiAgKi8KLWV4dGVy bglpbnQJTWF4bWVtOworZXh0ZXJuCWxvbmcJTWF4bWVtOwogZXh0ZXJuCWNo YXIJc2lnY29kZVtdOwogZXh0ZXJuCWludAlzenNpZ2NvZGUsIHN6b3NpZ2Nv ZGU7CiAKQEAgLTUyLDYgKzUyLDcgQEAKIHVfbG9uZwlrdnRvcCh2b2lkICph ZGRyKTsKIGludAlpc19waHlzaWNhbF9tZW1vcnkodm1fb2Zmc2V0X3QgYWRk cik7CiBpbnQJaXNfY2FjaGVhYmxlX21lbSh2bV9vZmZzZXRfdCBwYSk7Citp bnQJaXNfY29oZXJlbnRfbWVtKHZtX29mZnNldF90IHBhKTsKIAogI2RlZmlu ZQlNSVBTX0RFQlVHICAgMAogCmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQv ZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9pbmNsdWRlL3BsdGZtLmgg Li9zeXMvbWlwcy9pbmNsdWRlL3BsdGZtLmgKLS0tIC91L25lZWxuYXR1L3A0 L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvaW5jbHVkZS9wbHRmbS5o CTIwMDktMDYtMTUgMjM6Mjc6NTEuNTY5MjM1MDAwIC0wNzAwCisrKyAuL3N5 cy9taXBzL2luY2x1ZGUvcGx0Zm0uaAkyMDA5LTA2LTE2IDE3OjMxOjIxLjgw MTQxNTAwMCAtMDcwMApAQCAtNiw2ICs2LDEyIEBACiAjaWZuZGVmIF9NQUNI SU5FX1BMVEZNX0hfCiAjZGVmaW5lCV9NQUNISU5FX1BMVEZNX0hfCiAKKyNp ZmRlZiBDUFVfU0IxCisvKgorICogWFhYIE1ha2Ugc3VyZSB0aGF0IHRoZXNl IG1hY3JvcyBhcmUgbm90IGRlZmluZWQgZm9yIHRoZSBTQi0xIGNwdQorICog c2luY2UgdGhleSBkb24ndCBtYWtlIGFueSBzZW5zZSBmb3IgaXQuCisgKi8K KyNlbHNlCiAvKgogICogVGhpcyBmaWxlcyBjb250YWlucyBwbGF0Zm9ybS1z cGVjaWZpYyBkZWZpbml0aW9ucy4KICAqLwpAQCAtMjUsNSArMzEsNiBAQAog I2VuZGlmCiAjZGVmaW5lCUFERFJfTlMxNjU1MF9VQVJUMQkweDFlZjE0MDAw CS8qIFVBUlQgKi8KICNkZWZpbmUJVkFERFJfTlMxNjU1MF9VQVJUMQkweGJl ZjE0MDAwCS8qIFVBUlQgKi8KKyNlbmRpZgogCiAjZW5kaWYgLyogIV9NQUNI SU5FX1BMVEZNX0hfICovCmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJl ZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9pbmNsdWRlL3B0ZS5oIC4vc3lz L21pcHMvaW5jbHVkZS9wdGUuaAotLS0gL3UvbmVlbG5hdHUvcDQvZnJlZWJz ZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9pbmNsdWRlL3B0ZS5oCTIwMDktMDYt MTUgMjM6Mjc6NTEuNTk0MjM2MDAwIC0wNzAwCisrKyAuL3N5cy9taXBzL2lu Y2x1ZGUvcHRlLmgJMjAwOS0wNi0xNiAxNzozMToyMS44MDg0MTIwMDAgLTA3 MDAKQEAgLTEwNSw3ICsxMDUsMTEgQEAKICNkZWZpbmUgUFRFX09ERFBHICAg ICAgIDB4MDAwMDEwMDAgCiAvKiNkZWZpbmUJUEdfQVRUUgkJMHgwMDAwMDAz ZiAgTm90IFVzZWQgKi8KICNkZWZpbmUJUFRFX1VOQ0FDSEVECTB4MDAwMDAw MTAKKyNpZmRlZiBDUFVfU0IxCisjZGVmaW5lCVBURV9DQUNIRQkweDAwMDAw MDI4CS8qIGNhY2hlYWJsZSBjb2hlcmVudCAqLworI2Vsc2UKICNkZWZpbmUJ UFRFX0NBQ0hFCTB4MDAwMDAwMTgKKyNlbmRpZgogLyojZGVmaW5lCVBHX0NB Q0hFTU9ERQkweDAwMDAwMDM4IE5vdCBVc2VkKi8KICNkZWZpbmUJUFRFX1JP UEFHRQkoUFRFX1YgfCBQVEVfUk8gfCBQVEVfQ0FDSEUpIC8qIFdyaXRlIHBy b3RlY3RlZCAqLwogI2RlZmluZQlQVEVfUldQQUdFCShQVEVfViB8IFBURV9N IHwgUFRFX0NBQ0hFKSAgLyogTm90IHdyLXByb3Qgbm90IGNsZWFuICovCmRp ZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9z eXMvbWlwcy9taXBzL2F1dG9jb25mLmMgLi9zeXMvbWlwcy9taXBzL2F1dG9j b25mLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMv c3lzL21pcHMvbWlwcy9hdXRvY29uZi5jCTIwMDktMDYtMTUgMjM6Mjc6NTEu NzA1MjM5MDAwIC0wNzAwCisrKyAuL3N5cy9taXBzL21pcHMvYXV0b2NvbmYu YwkyMDA5LTA2LTE2IDE3OjMxOjIxLjgxMzQxMjAwMCAtMDcwMApAQCAtOTMs NiArOTMsMTcgQEAKIGNvbmZpZ3VyZShkdW1teSkKIAl2b2lkICpkdW1teTsK IHsKKwlyZWdpc3Rlcl90IHNyOworCisJLyoKKwkgKiBFbmFibGUgaW50ZXJy dXB0cyBvbiB0aGUgcHJvY2Vzc29yLiBUaGUgaW50ZXJydXB0cyBhcmUgc3Rp bGwKKwkgKiBkaXNhYmxlZCBieSB0aGUgaW50ZXJydXB0IG1hc2sgYml0cyB1 bnRpbCBpbnRlcnJ1cHQgaGFuZGxlcnMKKwkgKiBhcmUgcmVnaXN0ZXJlZC4K KwkgKi8KKwlzciA9IG1pcHNfcmRfc3RhdHVzKCk7CisJc3IgJj0gfk1JUFNf SU5UX01BU0s7CisJc3IgfD0gTUlQU19TUl9JTlRfSUU7CisJbWlwc193cl9z dGF0dXMoc3IpOwogCiAJLyogaW5pdGlhbGl6ZSBuZXcgYnVzIGFyY2hpdGVj dHVyZSAqLwogCXJvb3RfYnVzX2NvbmZpZ3VyZSgpOwpkaWZmIC1OdXJkIC91 L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvbWlw cy9idXNkbWFfbWFjaGRlcC5jIC4vc3lzL21pcHMvbWlwcy9idXNkbWFfbWFj aGRlcC5jCi0tLSAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3Jj L3N5cy9taXBzL21pcHMvYnVzZG1hX21hY2hkZXAuYwkyMDA5LTA2LTE1IDIz OjI3OjUxLjcwNzI0MDAwMCAtMDcwMAorKysgLi9zeXMvbWlwcy9taXBzL2J1 c2RtYV9tYWNoZGVwLmMJMjAwOS0wNi0xNiAxNzozMToyMS44MTg0MTgwMDAg LTA3MDAKQEAgLTg4LDYgKzg4LDcgQEAKICNpbmNsdWRlIDxtYWNoaW5lL2J1 cy5oPgogI2luY2x1ZGUgPG1hY2hpbmUvY2FjaGUuaD4KICNpbmNsdWRlIDxt YWNoaW5lL2NwdWZ1bmMuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL21kX3Zhci5o PgogCiBzdHJ1Y3QgYnVzX2RtYV90YWcgewogCWJ1c19kbWFfdGFnX3QJCXBh cmVudDsKQEAgLTI3MCw4ICsyNzEsNyBAQAogCW5ld3RhZy0+bWFwX2NvdW50 ID0gMDsKIAluZXd0YWctPl93YmFzZSA9IDA7CiAJbmV3dGFnLT5fcGh5c2Jh c2UgPSAwOwotCS8qIFhYWE1JUFM6IFNob3VsZCB3ZSBsaW1pdCB3aW5kb3cg c2l6ZSB0byBhbW91bnQgb2YgcGh5c2ljYWwgbWVtb3J5ICovCi0JbmV3dGFn LT5fd3NpemUgPSBNSVBTX0tTRUcxX1NUQVJUIC0gTUlQU19LU0VHMF9TVEFS VDsKKwluZXd0YWctPl93c2l6ZSA9IHB0b2EoTWF4bWVtKTsKIAlpZiAobG9j a2Z1bmMgIT0gTlVMTCkgewogCQluZXd0YWctPmxvY2tmdW5jID0gbG9ja2Z1 bmM7CiAJCW5ld3RhZy0+bG9ja2Z1bmNhcmcgPSBsb2NrZnVuY2FyZzsKQEAg LTM5Nyw2ICszOTcsNyBAQAogICAgICAgICAgICAgICAgICBidXNfZG1hbWFw X3QgKm1hcHApCiB7CiAJYnVzX2RtYW1hcF90IG5ld21hcCA9IE5VTEw7CisJ dm9pZCAqdG1wYWRkcjsKIAogCWludCBtZmxhZ3M7CiAKQEAgLTQxNyw3ICs0 MTgsOSBAQAogCSptYXBwID0gbmV3bWFwOwogCW5ld21hcC0+ZG1hdCA9IGRt YXQ7CiAJCi0gICAgICAgIGlmIChkbWF0LT5tYXhzaXplIDw9IFBBR0VfU0la RSkgeworICAgICAgICBpZiAoZG1hdC0+bWF4c2l6ZSA8PSBQQUdFX1NJWkUg JiYKKwkgICAgZG1hdC0+YWxpZ25tZW50IDwgZG1hdC0+bWF4c2l6ZSAmJgor CSAgICBkbWF0LT5sb3dhZGRyID49IHB0b2EoKHZtX3BhZGRyX3QpTWF4bWVt KSkgewogICAgICAgICAgICAgICAgICp2YWRkciA9IG1hbGxvYyhkbWF0LT5t YXhzaXplLCBNX0RFVkJVRiwgbWZsYWdzKTsKICAgICAgICAgfSBlbHNlIHsK ICAgICAgICAgICAgICAgICAvKgpAQCAtNDUwLDE5ICs0NTMsMjAgQEAKIAkJ fQogCQkqbWFwcCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgcmV0dXJuIChF Tk9NRU0pOworCX0gZWxzZSBpZiAoKHVpbnRwdHJfdCkqdmFkZHIgJiAoZG1h dC0+YWxpZ25tZW50IC0gMSkpIHsKKwkJcHJpbnRmKCJidXNfZG1hbWVtX2Fs bG9jIGZhaWxlZCB0byBhbGlnbiBtZW1vcnkgcHJvcGVybHkuXG4iKTsKIAl9 Ci0JaWYgKGZsYWdzICYgQlVTX0RNQV9DT0hFUkVOVCkgewotCQl2b2lkICp0 bXBhZGRyID0gKHZvaWQgKikqdmFkZHI7CiAKLQkJaWYgKHRtcGFkZHIpIHsK LQkJCXRtcGFkZHIgPSAodm9pZCAqKU1JUFNfUEhZU19UT19LU0VHMSh2dG9w aHlzKHRtcGFkZHIpKTsKLQkJCW5ld21hcC0+b3JpZ2J1ZmZlciA9ICp2YWRk cjsKLQkJCW5ld21hcC0+YWxsb2NidWZmZXIgPSB0bXBhZGRyOwotCQkJbWlw c19kY2FjaGVfd2JpbnZfcmFuZ2UoKHZtX29mZnNldF90KSp2YWRkciwKLQkJ CSAgICBkbWF0LT5tYXhzaXplKTsKLQkJCSp2YWRkciA9IHRtcGFkZHI7Ci0J CX0gZWxzZQotCQkJbmV3bWFwLT5vcmlnYnVmZmVyID0gbmV3bWFwLT5hbGxv Y2J1ZmZlciA9IE5VTEw7CisJdG1wYWRkciA9ICh2b2lkICopKnZhZGRyOwor CWlmICgoZmxhZ3MgJiBCVVNfRE1BX0NPSEVSRU5UKSAmJiAhaXNfY29oZXJl bnRfbWVtKHZ0b3BoeXModG1wYWRkcikpKSB7CisJCUtBU1NFUlQodnRvcGh5 cyh0bXBhZGRyKSA8IE1JUFNfS1NFRzBfTEFSR0VTVF9QSFlTLAorCQkJKCJi dXNfZG1hbWVtX2FsbG9jOiBwaHlzYWRkciAweCUweCBjYW5ub3QgIgorCQkJ ICJiZSBtYXBwZWQgaW4gS1NFRzEiLCB2dG9waHlzKHRtcGFkZHIpKSk7CisJ CXRtcGFkZHIgPSAodm9pZCAqKU1JUFNfUEhZU19UT19LU0VHMSh2dG9waHlz KHRtcGFkZHIpKTsKKwkJbmV3bWFwLT5vcmlnYnVmZmVyID0gKnZhZGRyOwor CQluZXdtYXAtPmFsbG9jYnVmZmVyID0gdG1wYWRkcjsKKwkJbWlwc19kY2Fj aGVfd2JpbnZfcmFuZ2UoKHZtX29mZnNldF90KSp2YWRkciwgZG1hdC0+bWF4 c2l6ZSk7CisJCSp2YWRkciA9IHRtcGFkZHI7CiAJfSBlbHNlIAogCQluZXdt YXAtPm9yaWdidWZmZXIgPSBuZXdtYXAtPmFsbG9jYnVmZmVyID0gTlVMTDsK ICAgICAgICAgcmV0dXJuICgwKTsKQEAgLTQ4MSw3ICs0ODUsOSBAQAogCQkg ICAgKCJUcnlpbmcgdG8gZnJlZWluZyB0aGUgd3JvbmcgRE1BIGJ1ZmZlciIp KTsKIAkJdmFkZHIgPSBtYXAtPm9yaWdidWZmZXI7CiAJfQotICAgICAgICBp ZiAoZG1hdC0+bWF4c2l6ZSA8PSBQQUdFX1NJWkUpCisgICAgICAgIGlmIChk bWF0LT5tYXhzaXplIDw9IFBBR0VfU0laRSAmJgorCSAgICBkbWF0LT5hbGln bm1lbnQgPCBkbWF0LT5tYXhzaXplICYmCisJICAgIGRtYXQtPmxvd2FkZHIg Pj0gcHRvYShNYXhtZW0pKQogCQlmcmVlKHZhZGRyLCBNX0RFVkJVRik7CiAg ICAgICAgIGVsc2UgewogCQljb250aWdmcmVlKHZhZGRyLCBkbWF0LT5tYXhz aXplLCBNX0RFVkJVRik7CmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJl ZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9taXBzL2NwdS5jIC4vc3lzL21p cHMvbWlwcy9jcHUuYwotLS0gL3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJy ZW50L3NyYy9zeXMvbWlwcy9taXBzL2NwdS5jCTIwMDktMDYtMTUgMjM6Mjc6 NTEuNzE1MjM5MDAwIC0wNzAwCisrKyAuL3N5cy9taXBzL21pcHMvY3B1LmMJ MjAwOS0wNi0xNiAxNzozMToyMS44MjQ0MTEwMDAgLTA3MDAKQEAgLTkyLDkg KzkyLDkgQEAKICAgICBjcHVpbmZvLT50bGJfbmVudHJpZXMgPSAoKGNmZzEg JiBNSVBTX0NPTkZJRzFfVExCU1pfTUFTSykgPj4gTUlQU19DT05GSUcxX1RM QlNaX1NISUZUKSArIDE7CiAKICAgICAvKiBMMSBpbnN0cnVjdGlvbiBjYWNo ZS4gKi8KLSAgICB0bXAgPSAxIDw8ICgoKGNmZzEgJiBNSVBTX0NPTkZJRzFf SUxfTUFTSykgPj4gTUlQU19DT05GSUcxX0lMX1NISUZUKSArIDEpOworICAg IHRtcCA9IChjZmcxICYgTUlQU19DT05GSUcxX0lMX01BU0spID4+IE1JUFNf Q09ORklHMV9JTF9TSElGVDsKICAgICBpZiAodG1wICE9IDApIHsKLQljcHVp bmZvLT5sMS5pY19saW5lc2l6ZSA9IHRtcDsKKwljcHVpbmZvLT5sMS5pY19s aW5lc2l6ZSA9IDEgPDwgKHRtcCArIDEpOwogCWNwdWluZm8tPmwxLmljX253 YXlzID0gKCgoY2ZnMSAmIE1JUFNfQ09ORklHMV9JQV9NQVNLKSA+PiBNSVBT X0NPTkZJRzFfSUFfU0hJRlQpKSArIDE7CiAJY3B1aW5mby0+bDEuaWNfbnNl dHMgPSAxIDw8ICgoKGNmZzEgJiBNSVBTX0NPTkZJRzFfSVNfTUFTSykgPj4g TUlQU19DT05GSUcxX0lTX1NISUZUKSArIDYpOwogCWNwdWluZm8tPmwxLmlj X3NpemUgPSBjcHVpbmZvLT5sMS5pY19saW5lc2l6ZSAqIGNwdWluZm8tPmwx LmljX25zZXRzIApAQCAtMTAyLDkgKzEwMiw5IEBACiAgICAgfQogCiAgICAg LyogTDEgZGF0YSBjYWNoZS4gKi8KLSAgICB0bXAgPSAxIDw8ICgoKGNmZzEg JiBNSVBTX0NPTkZJRzFfRExfTUFTSykgPj4gTUlQU19DT05GSUcxX0RMX1NI SUZUKSArIDEpOworICAgIHRtcCA9IChjZmcxICYgTUlQU19DT05GSUcxX0RM X01BU0spID4+IE1JUFNfQ09ORklHMV9ETF9TSElGVDsKICAgICBpZiAodG1w ICE9IDApIHsKLQljcHVpbmZvLT5sMS5kY19saW5lc2l6ZSA9IHRtcDsKKwlj cHVpbmZvLT5sMS5kY19saW5lc2l6ZSA9IDEgPDwgKHRtcCArIDEpOwogCWNw dWluZm8tPmwxLmRjX253YXlzID0gKCgoY2ZnMSAmIE1JUFNfQ09ORklHMV9E QV9NQVNLKSA+PiBNSVBTX0NPTkZJRzFfREFfU0hJRlQpKSArIDE7CiAJY3B1 aW5mby0+bDEuZGNfbnNldHMgPSAxIDw8ICgoKGNmZzEgJiBNSVBTX0NPTkZJ RzFfRFNfTUFTSykgPj4gTUlQU19DT05GSUcxX0RTX1NISUZUKSArIDYpOwog I2lmZGVmIFRBUkdFVF9PQ1RFT04KZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9w NC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMvaW50cl9tYWNo ZGVwLmMgLi9zeXMvbWlwcy9taXBzL2ludHJfbWFjaGRlcC5jCi0tLSAvdS9u ZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMv aW50cl9tYWNoZGVwLmMJMjAwOS0wNi0xNSAyMzoyNzo1MS43MzcyNDIwMDAg LTA3MDAKKysrIC4vc3lzL21pcHMvbWlwcy9pbnRyX21hY2hkZXAuYwkyMDA5 LTA2LTE2IDE3OjMxOjIxLjgyOTQxMjAwMCAtMDcwMApAQCAtNTMsMTYgKzUz LDk3IEBACiBzdGF0aWMgaW50IGxhc3RfcHJpbnRlZCA9IDA7CiAjZW5kaWYK IAorc3RhdGljIHN0cnVjdCBpbnRzcmMgKmhhcmRpbnRyX3NyY3NbTkhBUkRf SVJRU107CitzdGF0aWMgc3RydWN0IGludHNyYyAqc29mdGludHJfc3Jjc1tO U09GVF9JUlFTXTsKKworc3RhdGljIGludAorY3B1X3JlZ2lzdGVyX2ludHNy YyhzdHJ1Y3QgaW50c3JjICppbnRzcmNzW10sIGludCBsaW1pdCwgc3RydWN0 IGludHNyYyAqaXNyYykKK3sKKwlpbnQgaW50cm51bTsKKwkKKwlpbnRybnVt ID0gaXNyYy0+aW50cm51bTsKKwlpZiAoaW50cm51bSA8IDAgfHwgaW50cm51 bSA+PSBsaW1pdCkKKwkJcmV0dXJuIChFSU5WQUwpOworCisJLyoKKwkgKiBY WFggbG9ja2luZz8KKwkgKi8KKwlpZiAoaW50c3Jjc1tpbnRybnVtXSAhPSBO VUxMKQorCQlyZXR1cm4gKEVFWElTVCk7CisJZWxzZQorCQlpbnRzcmNzW2lu dHJudW1dID0gaXNyYzsKKwlyZXR1cm4gKDApOworfQorCitpbnQKK2NwdV9y ZWdpc3Rlcl9oYXJkX2ludHNyYyhzdHJ1Y3QgaW50c3JjICppc3JjKQorewor CisJcmV0dXJuIChjcHVfcmVnaXN0ZXJfaW50c3JjKGhhcmRpbnRyX3NyY3Ms IE5IQVJEX0lSUVMsIGlzcmMpKTsKK30KKworaW50CitjcHVfcmVnaXN0ZXJf c29mdF9pbnRzcmMoc3RydWN0IGludHNyYyAqaXNyYykKK3sKKworCXJldHVy biAoY3B1X3JlZ2lzdGVyX2ludHNyYyhzb2Z0aW50cl9zcmNzLCBOU09GVF9J UlFTLCBpc3JjKSk7Cit9CisKIHZvaWQKLW1pcHNfbWFza19pcnEodm9pZCkK K21pcHNfbWFza19pcnEodm9pZCAqYXJnKQogeworCXN0cnVjdCBpbnRzcmMg KmlzcmMgPSBhcmc7CiAKKwlpZiAoaXNyYyAhPSBOVUxMKQorCQkoKmlzcmMt Pm1hc2tfZnVuYykoaXNyYyk7CiB9CiAKIHZvaWQKLW1pcHNfdW5tYXNrX2ly cSh2b2lkKQorbWlwc191bm1hc2tfaXJxKHZvaWQgKmFyZykKK3sKKwlzdHJ1 Y3QgaW50c3JjICppc3JjID0gYXJnOworCisJaWYgKGlzcmMgIT0gTlVMTCkK KwkJKCppc3JjLT51bm1hc2tfZnVuYykoaXNyYyk7Cit9CisKKyNkZWZpbmUJ U1JfSEFSRF9JUlFfTUFTSyhpcnEpICgoMSA8PCAoKGlycSkgKyAyKSkgPDwg OCkKKyNkZWZpbmUJU1JfU09GVF9JUlFfTUFTSyhpcnEpICgoMSA8PCAoKGly cSkgKyAwKSkgPDwgOCkKKworc3RhdGljIHZvaWQKK2NwdV9kaXNhYmxlX2hh cmRfaXJxKGludCBpcnEpCit7CisJS0FTU0VSVChpcnEgPj0gMCAmJiBpcnEg PCBOSEFSRF9JUlFTLAorCQkoImNwdV9kaXNhYmxlX2hhcmRfaXJxOiBpbnZh bGlkIGlycSAlZCIsIGlycSkpOworCisJbWlwc193cl9zdGF0dXMobWlwc19y ZF9zdGF0dXMoKSAmIH5TUl9IQVJEX0lSUV9NQVNLKGlycSkpOworfQorCitz dGF0aWMgdm9pZAorY3B1X2VuYWJsZV9oYXJkX2lycShpbnQgaXJxKQogewor CUtBU1NFUlQoaXJxID49IDAgJiYgaXJxIDwgTkhBUkRfSVJRUywKKwkJKCJj cHVfZW5hYmxlX2hhcmRfaXJxOiBpbnZhbGlkIGlycSAlZCIsIGlycSkpOwog CisJbWlwc193cl9zdGF0dXMobWlwc19yZF9zdGF0dXMoKSB8IFNSX0hBUkRf SVJRX01BU0soaXJxKSk7Cit9CisKK3N0YXRpYyB2b2lkCitjcHVfZGlzYWJs ZV9zb2Z0X2lycShpbnQgaXJxKQoreworCUtBU1NFUlQoaXJxID49IDAgJiYg aXJxIDwgTlNPRlRfSVJRUywKKwkJKCJjcHVfZGlzYWJsZV9zb2Z0X2lycTog aW52YWxpZCBpcnEgJWQiLCBpcnEpKTsKKworCW1pcHNfd3Jfc3RhdHVzKG1p cHNfcmRfc3RhdHVzKCkgJiB+U1JfU09GVF9JUlFfTUFTSyhpcnEpKTsKK30K Kworc3RhdGljIHZvaWQKK2NwdV9lbmFibGVfc29mdF9pcnEoaW50IGlycSkK K3sKKwlLQVNTRVJUKGlycSA+PSAwICYmIGlycSA8IE5TT0ZUX0lSUVMsCisJ CSgiY3B1X2VuYWJsZV9zb2Z0X2lycTogaW52YWxpZCBpcnEgJWQiLCBpcnEp KTsKKworCW1pcHNfd3Jfc3RhdHVzKG1pcHNfcmRfc3RhdHVzKCkgfCBTUl9T T0ZUX0lSUV9NQVNLKGlycSkpOwogfQogCiB2b2lkCkBAIC04MCw5ICsxNjEs MjAgQEAKIAlpZiAoaXJxIDwgMCB8fCBpcnEgPj0gTkhBUkRfSVJRUykKIAkJ cGFuaWMoIiVzIGNhbGxlZCBmb3IgdW5rbm93biBoYXJkIGludHIgJWQiLCBf X2Z1bmNfXywgaXJxKTsKIAorCS8qCisJICogWFhYIERpc2FibGUgdGhlIGhh cmQgaXJxCisJICoKKwkgKiBJdCBhcHBlYXJzIHRoYXQgdGhlcmUgaXMgYSBy YWNlIGJldHdlZW4gaW50cl9ldmVudF9hZGRfaGFuZGxlcigpCisJICogYW5k IGludHJfZXZlbnRfaGFuZGxlKCkgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGlm IHdlIHJlY2VpdmUgYW4KKwkgKiBpbnRlcnJ1cHQgd2hpbGUgd2UgYXJlIGFk ZGluZyB0aGUgaGFuZGxlci4KKwkgKgorCSAqIFdvcmsgYXJvdW5kIHRoYXQg YnkgZGlzYWJsaW5nIHRoZSBoYXJkIGlycSB0ZW1wb3JhcmlseS4KKwkgKi8K KwljcHVfZGlzYWJsZV9oYXJkX2lycShpcnEpOworCiAJZXZlbnQgPSBoYXJk aW50cl9ldmVudHNbaXJxXTsKIAlpZiAoZXZlbnQgPT0gTlVMTCkgewotCQll cnJvciA9IGludHJfZXZlbnRfY3JlYXRlKCZldmVudCwgKHZvaWQgKilpcnEs IDAsIGlycSwKKwkJZXJyb3IgPSBpbnRyX2V2ZW50X2NyZWF0ZSgmZXZlbnQs IGhhcmRpbnRyX3NyY3NbaXJxXSwgMCwgaXJxLAogCQkgICAgKG1hc2tfZm4p bWlwc19tYXNrX2lycSwgKG1hc2tfZm4pbWlwc191bm1hc2tfaXJxLAogCQkg ICAgTlVMTCwgTlVMTCwgImhhcmQgaW50ciVkOiIsIGlycSk7CiAJCWlmIChl cnJvcikKQEAgLTEwMSw3ICsxOTMsNyBAQAogCWludHJfZXZlbnRfYWRkX2hh bmRsZXIoZXZlbnQsIG5hbWUsIGZpbHQsIGhhbmRsZXIsIGFyZywKIAkgICAg aW50cl9wcmlvcml0eShmbGFncyksIGZsYWdzLCBjb29raWVwKTsKIAotCW1p cHNfd3Jfc3RhdHVzKG1pcHNfcmRfc3RhdHVzKCkgfCAoKCgxIDw8IGlycSkg PDwgOCkgPDwgMikpOworCWNwdV9lbmFibGVfaGFyZF9pcnEoaXJxKTsKIH0K IAogdm9pZApAQCAtMTE3LDkgKzIwOSwxMSBAQAogCWlmIChpcnEgPCAwIHx8 IGlycSA+IE5TT0ZUX0lSUVMpCiAJCXBhbmljKCIlcyBjYWxsZWQgZm9yIHVu a25vd24gaGFyZCBpbnRyICVkIiwgX19mdW5jX18sIGlycSk7CiAKKwljcHVf ZGlzYWJsZV9zb2Z0X2lycShpcnEpOworCiAJZXZlbnQgPSBzb2Z0aW50cl9l dmVudHNbaXJxXTsKIAlpZiAoZXZlbnQgPT0gTlVMTCkgewotCQllcnJvciA9 IGludHJfZXZlbnRfY3JlYXRlKCZldmVudCwgKHZvaWQgKilpcnEsIDAsIGly cSwKKwkJZXJyb3IgPSBpbnRyX2V2ZW50X2NyZWF0ZSgmZXZlbnQsIHNvZnRp bnRyX3NyY3NbaXJxXSwgMCwgaXJxLAogCQkgICAgKG1hc2tfZm4pbWlwc19t YXNrX2lycSwgKG1hc2tfZm4pbWlwc191bm1hc2tfaXJxLAogCQkgICAgTlVM TCwgTlVMTCwgImludHIlZDoiLCBpcnEpOwogCQlpZiAoZXJyb3IpCkBAIC0x MzAsNyArMjI0LDcgQEAKIAlpbnRyX2V2ZW50X2FkZF9oYW5kbGVyKGV2ZW50 LCBuYW1lLCBmaWx0LCBoYW5kbGVyLCBhcmcsCiAJICAgIGludHJfcHJpb3Jp dHkoZmxhZ3MpLCBmbGFncywgY29va2llcCk7CiAKLQltaXBzX3dyX3N0YXR1 cyhtaXBzX3JkX3N0YXR1cygpIHwgKCgoMTw8IGlycSkgPDwgOCkpKTsKKwlj cHVfZW5hYmxlX3NvZnRfaXJxKGlycSk7CiB9CiAKIHZvaWQKZGlmZiAtTnVy ZCAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBz L21pcHMvbG9jb3JlLlMgLi9zeXMvbWlwcy9taXBzL2xvY29yZS5TCi0tLSAv dS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL21p cHMvbG9jb3JlLlMJMjAwOS0wNi0xNSAyMzoyNzo1MS43MzkyNDEwMDAgLTA3 MDAKKysrIC4vc3lzL21pcHMvbWlwcy9sb2NvcmUuUwkyMDA5LTA2LTE2IDE3 OjMxOjIxLjgzNDQxNjAwMCAtMDcwMApAQCAtMTM4LDcgKzEzOCwxMSBAQAog CW10YzAJdDIsIENPUF8wX1NUQVRVU19SRUcKIAlDT1AwX1NZTkMKIAkvKiBN YWtlIHN1cmUgS1NFRzAgaXMgY2FjaGVkICovCisjaWZkZWYgQ1BVX1NCMQor CWxpCXQwLCBDRkdfSzBfQ09IRVJFTlQKKyNlbHNlCiAJbGkJdDAsIENGR19L MF9DQUNIRUQKKyNlbmRpZgogCW10YzAJdDAsIE1JUFNfQ09QXzBfQ09ORklH CiAJQ09QMF9TWU5DCiAKZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVl YnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMvbWFjaGRlcC5jIC4vc3lz L21pcHMvbWlwcy9tYWNoZGVwLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVi c2RfY3VycmVudC9zcmMvc3lzL21pcHMvbWlwcy9tYWNoZGVwLmMJMjAwOS0w Ni0xNSAyMzoyNzo1MS43NDgyNDAwMDAgLTA3MDAKKysrIC4vc3lzL21pcHMv bWlwcy9tYWNoZGVwLmMJMjAwOS0wNi0xNiAxNzozMToyMS44NDg0MTUwMDAg LTA3MDAKQEAgLTEwNCw2ICsxMDQsNyBAQAogCiBpbnQgY29sZCA9IDE7CiBs b25nIHJlYWxtZW0gPSAwOworbG9uZyBNYXhtZW0gPSAwOwogaW50IGNwdV9j bG9jayA9IE1JUFNfREVGQVVMVF9IWjsKIFNZU0NUTF9JTlQoX2h3LCBPSURf QVVUTywgY2xvY2tyYXRlLCBDVExGTEFHX1JELCAKICAgICAmY3B1X2Nsb2Nr LCAwLCAiQ1BVIGluc3RydWN0aW9uIGNsb2NrIHJhdGUiKTsKQEAgLTI1NSwx MCArMjU2LDcgQEAKIAlwcm9jX2xpbmt1cCgmcHJvYzAsICZ0aHJlYWQwKTsK IAl0aHJlYWQwLnRkX2tzdGFjayA9IGtzdGFjazA7CiAJdGhyZWFkMC50ZF9r c3RhY2tfcGFnZXMgPSBLU1RBQ0tfUEFHRVMgLSAxOwotCWlmICh0aHJlYWQw LnRkX2tzdGFjayAmICgxIDw8IFBBR0VfU0hJRlQpKQotCQl0aHJlYWQwLnRk X21kLm1kX3JlYWxzdGFjayA9IHRocmVhZDAudGRfa3N0YWNrICsgUEFHRV9T SVpFOwotCWVsc2UKLQkJdGhyZWFkMC50ZF9tZC5tZF9yZWFsc3RhY2sgPSB0 aHJlYWQwLnRkX2tzdGFjazsKKwl0aHJlYWQwLnRkX21kLm1kX3JlYWxzdGFj ayA9IHJvdW5kdXAyKHRocmVhZDAudGRfa3N0YWNrLCBQQUdFX1NJWkUgKiAy KTsKIAkvKiBJbml0aWFsaXplIHBjcHUgaW5mbyBvZiBjcHUtemVybyAqLwog I2lmZGVmIFNNUAogCXBjcHVfaW5pdCgmX19wY3B1WzBdLCAwLCBzaXplb2Yo c3RydWN0IHBjcHUpKTsKZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVl YnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMvbWVtLmMgLi9zeXMvbWlw cy9taXBzL21lbS5jCi0tLSAvdS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJl bnQvc3JjL3N5cy9taXBzL21pcHMvbWVtLmMJMjAwOS0wNi0xNSAyMzoyNzo1 MS43NTIyNDEwMDAgLTA3MDAKKysrIC4vc3lzL21pcHMvbWlwcy9tZW0uYwky MDA5LTA2LTE2IDE3OjMxOjIxLjg1MzQxOTAwMCAtMDcwMApAQCAtMTAxLDgg KzEwMSwxNSBAQAogCQkJdm1fcGFkZHJfdCBwYTsKIAkJCXJlZ2lzdGVyIGlu dCBvOwogCisjaWZkZWYgQ1BVX1NCMQorCQkJaWYgKCFpc19waHlzaWNhbF9t ZW1vcnkodikgfHwKKwkJCSAgICAhaXNfcGh5c2ljYWxfbWVtb3J5KHJvdW5k dXAyKHYsIFBBR0VfU0laRSkgLSAxKSkgeworCQkJCXJldHVybiAoRUZBVUxU KTsKKwkJCX0KKyNlbHNlCiAJCQlpZiAodiArIGMgPiAoU0RSQU1fQUREUl9T VEFSVCArIGN0b2IocGh5c21lbSkpKQogCQkJCXJldHVybiAoRUZBVUxUKTsK KyNlbmRpZgogCiAJCQlpZiAoaXNfY2FjaGVhYmxlX21lbSh2KSAmJiBpc19j YWNoZWFibGVfbWVtKHYgKyBjKSkgewogCQkJCXN0cnVjdCBmcGFnZSAqZnA7 CmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3Ny Yy9zeXMvbWlwcy9taXBzL25leHVzLmMgLi9zeXMvbWlwcy9taXBzL25leHVz LmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lz L21pcHMvbWlwcy9uZXh1cy5jCTIwMDktMDYtMTUgMjM6Mjc6NTEuNzYyMjQy MDAwIC0wNzAwCisrKyAuL3N5cy9taXBzL21pcHMvbmV4dXMuYwkyMDA5LTA2 LTE2IDE3OjMxOjIxLjg2NjQxODAwMCAtMDcwMApAQCAtNzYsNiArNzYsNyBA QAogCiBzdGF0aWMgc3RydWN0IHJtYW4gaXJxX3JtYW47CiBzdGF0aWMgc3Ry dWN0IHJtYW4gbWVtX3JtYW47CitzdGF0aWMgc3RydWN0IHJtYW4gcG9ydF9y bWFuOwogCiAjaWZkZWYgbm90eWV0CiAvKgpAQCAtMTczLDYgKzE3NCwyMSBA QAogCQlwYW5pYygiJXM6IG1lbV9ybWFuIiwgX19mdW5jX18pOwogCX0KIAor CS8qCisJICogTUlQUyBoYXMgbm8gY29uY2VwdCBvZiB0aGUgeDg2IEkvTyBh ZGRyZXNzIHNwYWNlIGJ1dCBzb21lIGNwdXMKKwkgKiBwcm92aWRlIGEgbWVt b3J5IG1hcHBlZCB3aW5kb3cgdG8gYWNjZXNzIHRoZSBQQ0kgSS9PIEJBUnMu CisJICovCisJcG9ydF9ybWFuLnJtX3N0YXJ0ID0gMDsKKyNpZmRlZiBQQ0lf SU9TUEFDRV9TSVpFCisJcG9ydF9ybWFuLnJtX2VuZCA9IFBDSV9JT1NQQUNF X1NJWkUgLSAxOworI2VuZGlmCisJcG9ydF9ybWFuLnJtX3R5cGUgPSBSTUFO X0FSUkFZOworCXBvcnRfcm1hbi5ybV9kZXNjciA9ICJJL08gcG9ydHMiOwor CWlmIChybWFuX2luaXQoJnBvcnRfcm1hbikgIT0gMCB8fAorCSAgICBybWFu X21hbmFnZV9yZWdpb24oJnBvcnRfcm1hbiwgMCwgcG9ydF9ybWFuLnJtX2Vu ZCkgIT0gMCkKKwkJcGFuaWMoIiVzOiBwb3J0X3JtYW4iLCBfX2Z1bmNfXyk7 CisKKwogCXJldHVybiAoMCk7CiB9CiAKQEAgLTE4MCwxNiArMTk2LDIxIEBA CiBuZXh1c19zZXR1cF9pbnRyKGRldmljZV90IGRldiwgZGV2aWNlX3QgY2hp bGQsIHN0cnVjdCByZXNvdXJjZSAqcmVzLCBpbnQgZmxhZ3MsCiAgICAgZHJp dmVyX2ZpbHRlcl90ICpmaWx0LCBkcml2ZXJfaW50cl90ICppbnRyLCB2b2lk ICphcmcsIHZvaWQgKipjb29raWVwKQogewotCWludCBpcnE7CisJaW50IGly cSwgZXJyb3I7CiAKLQlyZWdpc3Rlcl90IHNyID0gaW50cl9kaXNhYmxlKCk7 CiAJaXJxID0gcm1hbl9nZXRfc3RhcnQocmVzKTsKIAlpZiAoaXJxID49IE5V TV9NSVBTX0lSUVMpCiAJCXJldHVybiAoMCk7CiAKKwlpZiAoKHJtYW5fZ2V0 X2ZsYWdzKHJlcykgJiBSRl9TSEFSRUFCTEUpID09IDApCisJCWZsYWdzIHw9 IElOVFJfRVhDTDsKKworCWVycm9yID0gcm1hbl9hY3RpdmF0ZV9yZXNvdXJj ZShyZXMpOworCWlmIChlcnJvcikKKwkJcmV0dXJuIChlcnJvcik7CisKIAlj cHVfZXN0YWJsaXNoX2hhcmRpbnRyKGRldmljZV9nZXRfbmFtZXVuaXQoY2hp bGQpLCBmaWx0LCBpbnRyLCBhcmcsCiAJICAgIGlycSwgZmxhZ3MsIGNvb2tp ZXApOwotCWludHJfcmVzdG9yZShzcik7CiAJcmV0dXJuICgwKTsKIH0KIApA QCAtMjM4LDYgKzI1OSw3IEBACiAKIAlyZXR2YWwgKz0gcmVzb3VyY2VfbGlz dF9wcmludF90eXBlKHJsLCAibWVtIiwgU1lTX1JFU19NRU1PUlksICIlI2x4 Iik7CiAJcmV0dmFsICs9IHJlc291cmNlX2xpc3RfcHJpbnRfdHlwZShybCwg ImlycSIsIFNZU19SRVNfSVJRLCAiJWxkIik7CisJcmV0dmFsICs9IHJlc291 cmNlX2xpc3RfcHJpbnRfdHlwZShybCwgInBvcnQiLCBTWVNfUkVTX0lPUE9S VCwgIiUjbHgiKTsKIAogCXJldHVybiAocmV0dmFsKTsKIH0KQEAgLTMzOCw2 ICszNjAsOSBAQAogCWNhc2UgU1lTX1JFU19NRU1PUlk6CiAJCXJtID0gJm1l bV9ybWFuOwogCQlicmVhazsKKwljYXNlIFNZU19SRVNfSU9QT1JUOgorCQly bSA9ICZwb3J0X3JtYW47CisJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXByaW50 ZigiJXM6IHVua25vd24gcmVzb3VyY2UgdHlwZSAlZFxuIiwgX19mdW5jX18s IHR5cGUpOwogCQlyZXR1cm4gKDApOwpAQCAtMzgwLDYgKzQwNSwxMSBAQAog ICAgICAgICAgICAgICAgIHVfaW50MzJfdCBwb2ZmczsKICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICBwYWRkciA9IHJtYW5fZ2V0X3N0YXJ0 KHIpOworI2lmZGVmIFBDSV9JT1NQQUNFX0FERFIKKwkJaWYgKHR5cGUgPT0g U1lTX1JFU19JT1BPUlQpIHsKKwkJCXBhZGRyICs9IFBDSV9JT1NQQUNFX0FE RFI7CisJCX0KKyNlbmRpZgogICAgICAgICAgICAgICAgIHBzaXplID0gcm1h bl9nZXRfc2l6ZShyKTsKICAgICAgICAgICAgICAgICBwb2ZmcyA9IHBhZGRy IC0gdHJ1bmNfcGFnZShwYWRkcik7CiAgICAgICAgICAgICAgICAgdmFkZHIg PSAoY2FkZHJfdCkgcG1hcF9tYXBkZXYocGFkZHItcG9mZnMsIHBzaXplK3Bv ZmZzKSArIHBvZmZzOwpAQCAtNDczLDYgKzUwMywxMiBAQAogbmV4dXNfZGVh Y3RpdmF0ZV9yZXNvdXJjZShkZXZpY2VfdCBidXMsIGRldmljZV90IGNoaWxk LCBpbnQgdHlwZSwgaW50IHJpZCwKIAkJCSAgc3RydWN0IHJlc291cmNlICpy KQogeworCXZtX29mZnNldF90IHZhOworCQorCWlmICh0eXBlID09IFNZU19S RVNfTUVNT1JZIHx8IHR5cGUgPT0gU1lTX1JFU19JT1BPUlQpIHsKKwkJdmEg PSAodm1fb2Zmc2V0X3Qpcm1hbl9nZXRfdmlydHVhbChyKTsKKwkJcG1hcF91 bm1hcGRldih2YSwgcm1hbl9nZXRfc2l6ZShyKSk7CisJfQogCiAJcmV0dXJu IChybWFuX2RlYWN0aXZhdGVfcmVzb3VyY2UocikpOwogfQpkaWZmIC1OdXJk IC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMv bWlwcy9wbWFwLmMgLi9zeXMvbWlwcy9taXBzL3BtYXAuYwotLS0gL3UvbmVl bG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9taXBzL3Bt YXAuYwkyMDA5LTA2LTE1IDIzOjI3OjUxLjc2OTI0MzAwMCAtMDcwMAorKysg Li9zeXMvbWlwcy9taXBzL3BtYXAuYwkyMDA5LTA2LTE2IDE3OjMxOjIxLjg3 MzQxOTAwMCAtMDcwMApAQCAtMzEzLDYgKzMxMyw4IEBACiAJCX0KIAl9CiAK KwlNYXhtZW0gPSBhdG9wKHBoeXNfYXZhaWxbaSAtIDFdKTsKKwogCWlmIChi b290dmVyYm9zZSkgewogCQlwcmludGYoIlBoeXNpY2FsIG1lbW9yeSBjaHVu ayhzKTpcbiIpOwogCQlmb3IgKGkgPSAwOyBwaHlzX2F2YWlsW2kgKyAxXSAh PSAwOyBpICs9IDIpIHsKQEAgLTMyNCw2ICszMjYsNyBAQAogCQkJICAgICh1 aW50bWF4X3QpIHBoeXNfYXZhaWxbaSArIDFdIC0gMSwKIAkJCSAgICAodWlu dG1heF90KSBzaXplLCAodWludG1heF90KSBzaXplIC8gUEFHRV9TSVpFKTsK IAkJfQorCQlwcmludGYoIk1heG1lbSBpcyAweCUwbHhcbiIsIHB0b2EoTWF4 bWVtKSk7CiAJfQogCS8qCiAJICogU3RlYWwgdGhlIG1lc3NhZ2UgYnVmZmVy IGZyb20gdGhlIGJlZ2lubmluZyBvZiBtZW1vcnkuCkBAIC0yMjI2LDcgKzIy MjksNyBAQAogI2VuZGlmCiAJaWYgKHBoeXMgPCBNSVBTX0tTRUcwX0xBUkdF U1RfUEhZUykgewogCi0JCXZhID0gTUlQU19QSFlTX1RPX1VOQ0FDSEVEKHBo eXMpOworCQl2YSA9IE1JUFNfUEhZU19UT19DQUNIRUQocGh5cyk7CiAKIAkJ Ynplcm8oKGNhZGRyX3QpdmEsIFBBR0VfU0laRSk7CiAJCW1pcHNfZGNhY2hl X3diaW52X3JhbmdlKHZhLCBQQUdFX1NJWkUpOwpAQCAtMjI4Miw3ICsyMjg1 LDcgQEAKIAl9IGVsc2UKICNlbmRpZgogCWlmIChwaHlzIDwgTUlQU19LU0VH MF9MQVJHRVNUX1BIWVMpIHsKLQkJdmEgPSBNSVBTX1BIWVNfVE9fVU5DQUNI RUQocGh5cyk7CisJCXZhID0gTUlQU19QSFlTX1RPX0NBQ0hFRChwaHlzKTsK IAkJYnplcm8oKGNoYXIgKikoY2FkZHJfdCl2YSArIG9mZiwgc2l6ZSk7CiAJ CW1pcHNfZGNhY2hlX3diaW52X3JhbmdlKHZhICsgb2ZmLCBzaXplKTsKIAl9 IGVsc2UgewpAQCAtMjMyMSw3ICsyMzI0LDcgQEAKIAl9IGVsc2UKICNlbmRp ZgogCWlmIChwaHlzIDwgTUlQU19LU0VHMF9MQVJHRVNUX1BIWVMpIHsKLQkJ dmEgPSBNSVBTX1BIWVNfVE9fVU5DQUNIRUQocGh5cyk7CisJCXZhID0gTUlQ U19QSFlTX1RPX0NBQ0hFRChwaHlzKTsKIAkJYnplcm8oKGNhZGRyX3QpdmEs IFBBR0VfU0laRSk7CiAJCW1pcHNfZGNhY2hlX3diaW52X3JhbmdlKHZhLCBQ QUdFX1NJWkUpOwogCX0gZWxzZSB7CkBAIC0yODAzLDExICsyODA2LDEyIEBA CiAJCXJldHVybiAodm9pZCAqKU1JUFNfUEhZU19UT19LU0VHMShwYSk7CiAJ ZWxzZSB7CiAJCW9mZnNldCA9IHBhICYgUEFHRV9NQVNLOwotCQlzaXplID0g cm91bmR1cChzaXplLCBQQUdFX1NJWkUpOworCQlzaXplID0gcm91bmR1cChz aXplICsgb2Zmc2V0LCBQQUdFX1NJWkUpOwogICAgICAgICAKIAkJdmEgPSBr bWVtX2FsbG9jX25vZmF1bHQoa2VybmVsX21hcCwgc2l6ZSk7CiAJCWlmICgh dmEpCiAJCQlwYW5pYygicG1hcF9tYXBkZXY6IENvdWxkbid0IGFsbG9jIGtl cm5lbCB2aXJ0dWFsIG1lbW9yeSIpOworCQlwYSA9IHRydW5jX3BhZ2UocGEp OwogCQlmb3IgKHRtcHZhID0gdmE7IHNpemUgPiAwOykgewogCQkJcG1hcF9r ZW50ZXIodG1wdmEsIHBhKTsKIAkJCXNpemUgLT0gUEFHRV9TSVpFOwpAQCAt MjgyMiw2ICsyODI2LDE4IEBACiB2b2lkCiBwbWFwX3VubWFwZGV2KHZtX29m ZnNldF90IHZhLCB2bV9zaXplX3Qgc2l6ZSkKIHsKKwl2bV9vZmZzZXRfdCBi YXNlLCBvZmZzZXQsIHRtcHZhOworCisJLyogSWYgdGhlIGFkZHJlc3MgaXMg d2l0aGluIEtTRUcxIHRoZW4gdGhlcmUgaXMgbm90aGluZyB0byBkbyAqLwor CWlmICh2YSA+PSBNSVBTX0tTRUcxX1NUQVJUICYmIHZhIDw9IE1JUFNfS1NF RzFfRU5EKQorCQlyZXR1cm47CisKKwliYXNlID0gdHJ1bmNfcGFnZSh2YSk7 CisJb2Zmc2V0ID0gdmEgJiBQQUdFX01BU0s7CisJc2l6ZSA9IHJvdW5kdXAo c2l6ZSArIG9mZnNldCwgUEFHRV9TSVpFKTsKKwlmb3IgKHRtcHZhID0gYmFz ZTsgdG1wdmEgPCBiYXNlICsgc2l6ZTsgdG1wdmEgKz0gUEFHRV9TSVpFKQor CQlwbWFwX2tyZW1vdmUodG1wdmEpOworCWttZW1fZnJlZShrZXJuZWxfbWFw LCBiYXNlLCBzaXplKTsKIH0KIAogLyoKZGlmZiAtTnVyZCAvdS9uZWVsbmF0 dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMvc3d0Y2gu UyAuL3N5cy9taXBzL21pcHMvc3d0Y2guUwotLS0gL3UvbmVlbG5hdHUvcDQv ZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9taXBzL3N3dGNoLlMJMjAw OS0wNi0xNSAyMzoyNzo1MS43NzgyNDIwMDAgLTA3MDAKKysrIC4vc3lzL21p cHMvbWlwcy9zd3RjaC5TCTIwMDktMDYtMTYgMTc6MzE6MjEuODc4NDE2MDAw IC0wNzAwCkBAIC04MSwxNCArODEsMTQgQEAKICNkZWZpbmUJX01GQzAJZG1m YzAKICNkZWZpbmUJX01UQzAJZG10YzAKICNkZWZpbmUgV0lSRURfU0hJRlQg MzQKLSNkZWZpbmUgUEFHRV9TSElGVCAzNAorI2RlZmluZSBQQUdFX1NISUZU IDEyCiAjZWxzZQogI2RlZmluZSBfU0xMCXNsbAogI2RlZmluZQlfU1JMCXNy bAogI2RlZmluZQlfTUZDMAltZmMwCiAjZGVmaW5lCV9NVEMwCW10YzAKICNk ZWZpbmUgV0lSRURfU0hJRlQgMgotI2RlZmluZSBQQUdFX1NISUZUIDIKKyNk ZWZpbmUgUEFHRV9TSElGVCAxMgogI2VuZGlmCiAJLnNldAlub3Jlb3JkZXIJ CQkjIE5vcmVvcmRlciBpcyBkZWZhdWx0IHN0eWxlIQogI2lmIGRlZmluZWQo SVNBX01JUFMzMikKZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVlYnNk X2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMvdGljay5jIC4vc3lzL21pcHMv bWlwcy90aWNrLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVu dC9zcmMvc3lzL21pcHMvbWlwcy90aWNrLmMJMjAwOS0wNi0xNSAyMzoyNzo1 MS43NzkyNDcwMDAgLTA3MDAKKysrIC4vc3lzL21pcHMvbWlwcy90aWNrLmMJ MjAwOS0wNi0xNiAxNzozMToyMS44ODQ0MTUwMDAgLTA3MDAKQEAgLTIyOSw3 ICsyMjksNyBAQAogCiAJCS8qIENoZWNrIHRvIHNlZSBpZiB0aGUgdGltZXIg aGFzIHdyYXBwZWQgYXJvdW5kLiAqLwogCQlpZiAoY3VyIDwgbGFzdCkKLQkJ CWRlbHRhICs9IChjdXIgKyAoY3ljbGVzX3Blcl9oeiAtIGxhc3QpKTsKKwkJ CWRlbHRhICs9IChjdXIgKyAoMHhmZmZmZmZmZiAtIGxhc3QpICsgMSk7CiAJ CWVsc2UKIAkJCWRlbHRhICs9IChjdXIgLSBsYXN0KTsKIApkaWZmIC1OdXJk IC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMv bWlwcy90bGIuUyAuL3N5cy9taXBzL21pcHMvdGxiLlMKLS0tIC91L25lZWxu YXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvbWlwcy90bGIu UwkyMDA5LTA2LTE1IDIzOjI3OjUxLjc4MTI0MjAwMCAtMDcwMAorKysgLi9z eXMvbWlwcy9taXBzL3RsYi5TCTIwMDktMDYtMTYgMTc6MzE6MjEuODg5NDIy MDAwIC0wNzAwCkBAIC04MSwxNCArODEsMTQgQEAKICNkZWZpbmUJX01GQzAJ ZG1mYzAKICNkZWZpbmUJX01UQzAJZG10YzAKICNkZWZpbmUgV0lSRURfU0hJ RlQgMzQKLSNkZWZpbmUgUEFHRV9TSElGVCAzNAorI2RlZmluZSBQQUdFX1NI SUZUIDEyCiAjZWxzZQogI2RlZmluZSBfU0xMCXNsbAogI2RlZmluZQlfU1JM CXNybAogI2RlZmluZQlfTUZDMAltZmMwCiAjZGVmaW5lCV9NVEMwCW10YzAK ICNkZWZpbmUgV0lSRURfU0hJRlQgMgotI2RlZmluZSBQQUdFX1NISUZUIDIK KyNkZWZpbmUgUEFHRV9TSElGVCAxMgogI2VuZGlmCiAJLnNldAlub3Jlb3Jk ZXIJCQkjIE5vcmVvcmRlciBpcyBkZWZhdWx0IHN0eWxlIQogI2lmIGRlZmlu ZWQoSVNBX01JUFMzMikKQEAgLTQ3Myw3ICs0NzMsMTcgQEAKIAlfTUZDMAl0 NCwgQ09QXzBfVExCX0hJCQkjIEdldCBjdXJyZW50IFBJRAogCW1vdmUJdDIs IGEwCiAJbWZjMAl0MSwgQ09QXzBfVExCX1dJUkVECisKKwkjCisJIyBMb2Fk IGludmFsaWQgZW50cnksIGVhY2ggVExCIGVudHJ5IHNob3VsZCBoYXZlIGl0 J3Mgb3duIGJvZ3VzIAorCSMgYWRkcmVzcyBjYWxjdWxhdGVkIGJ5IGZvbGxv d2luZyBleHByZXNzaW9uOgorCSMgTUlQU19LU0VHMF9TVEFSVCArIDB4MGZm ZjAwMDAgKyAyICogaSAqIFBBR0VfU0laRTsKKwkjIE9uZSBib2d1cyB2YWx1 ZSBmb3IgZXZlcnkgVExCIGVudHJ5IG1pZ2h0IGNhdXNlIE1DSEVDSyBleGNl cHRpb24KKwkjCisJc2xsCXQzLCB0MSwgUEFHRV9TSElGVCArIDEKIAlsaQl2 MCwgTUlQU19LU0VHMF9TVEFSVCArIDB4MGZmZjAwMDAJIyBpbnZhbGlkIGFk ZHJlc3MKKwlhZGR1CXYwLCB0MworCiAJbWZjMAl0MywgQ09QXzBfVExCX1BH X01BU0sJCSMgc2F2ZSBjdXJyZW50IHBnTWFzawogCiAJIyBkbyB7fSB3aGls ZSAodDEgPCB0MikKZGlmZiAtTnVyZCAvdS9uZWVsbmF0dS9wNC9mcmVlYnNk X2N1cnJlbnQvc3JjL3N5cy9taXBzL21pcHMvdHJhcC5jIC4vc3lzL21pcHMv bWlwcy90cmFwLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVu dC9zcmMvc3lzL21pcHMvbWlwcy90cmFwLmMJMjAwOS0wNi0xNSAyMzoyNzo1 MS43ODMyNDQwMDAgLTA3MDAKKysrIC4vc3lzL21pcHMvbWlwcy90cmFwLmMJ MjAwOS0wNi0xNiAxNzozMToyMS44OTU0MjAwMDAgLTA3MDAKQEAgLTM2NSw3 ICszNjUsNyBAQAogCQlwcmludGYoImNwdWlkID0gJWRcbiIsIFBDUFVfR0VU KGNwdWlkKSk7CiAjZW5kaWYKIAkJTWFjaFRMQkdldFBJRChwaWQpOwotCQlw cmludGYoImJhZGFkZHIgPSAlcCwgcGMgPSAlcCwgcmEgPSAlcCwgc3AgPSAl cCwgc3IgPSAweCV4LCBwaWQgPSAlZCwgQVNJRCA9IDB4JXhcbiIsCisJCXBy aW50ZigiYmFkYWRkciA9IDB4JTB4LCBwYyA9IDB4JTB4LCByYSA9IDB4JTB4 LCBzcCA9IDB4JTB4LCBzciA9IDB4JXgsIHBpZCA9ICVkLCBBU0lEID0gMHgl eFxuIiwKIAkJICAgIHRyYXBmcmFtZS0+YmFkdmFkZHIsIHRyYXBmcmFtZS0+ cGMsIHRyYXBmcmFtZS0+cmEsCiAJCSAgICB0cmFwZnJhbWUtPnNwLCB0cmFw ZnJhbWUtPnNyLAogCQkgICAgKGN1cnByb2MgPyBjdXJwcm9jLT5wX3BpZCA6 IC0xKSwgcGlkKTsKQEAgLTM4OSw3ICszODksNyBAQAogCQkgICAgKCh0eXBl ICYgflRfVVNFUikgIT0gVF9TWVNDQUxMKSkgewogCQkJaWYgKCsrY291bnQg PT0gMykgewogCQkJCXRyYXBfZnJhbWVfZHVtcCh0cmFwZnJhbWUpOwotCQkJ CXBhbmljKCJ0b28gbWFueSBmYXVsdHMgYXQgJXBcbiIsIGxhc3RfYmFkdmFk ZHIpOworCQkJCXBhbmljKCJ0b28gbWFueSBmYXVsdHMgYXQgJXhcbiIsIGxh c3RfYmFkdmFkZHIpOwogCQkJfQogCQl9IGVsc2UgewogCQkJbGFzdF9iYWR2 YWRkciA9IHRoaXNfYmFkdmFkZHI7CkBAIC01NzAsNyArNTcwLDcgQEAKIAkJ CS0tcC0+cF9sb2NrOwogCQkJUFJPQ19VTkxPQ0socCk7CiAjaWZkZWYgVk1G QVVMVF9UUkFDRQotCQkJcHJpbnRmKCJ2bV9mYXVsdCgleCAocG1hcCAleCks ICV4ICgleCksICV4LCAlZCkgLT4gJXggYXQgcGMgJXhcbiIsCisJCQlwcmlu dGYoInZtX2ZhdWx0KCVwIChwbWFwICVwKSwgJXggKCV4KSwgJXgsICVkKSAt PiAleCBhdCBwYyAleFxuIiwKIAkJCSAgICBtYXAsICZ2bS0+dm1fcG1hcCwg dmEsIHRyYXBmcmFtZS0+YmFkdmFkZHIsIGZ0eXBlLCBmbGFnLAogCQkJICAg IHJ2LCB0cmFwZnJhbWUtPnBjKTsKICNlbmRpZgpkaWZmIC1OdXJkIC91L25l ZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvbWlwcy92 bV9tYWNoZGVwLmMgLi9zeXMvbWlwcy9taXBzL3ZtX21hY2hkZXAuYwotLS0g L3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9t aXBzL3ZtX21hY2hkZXAuYwkyMDA5LTA2LTE1IDIzOjI3OjUxLjc4NzI0MjAw MCAtMDcwMAorKysgLi9zeXMvbWlwcy9taXBzL3ZtX21hY2hkZXAuYwkyMDA5 LTA2LTE2IDE3OjMxOjIxLjkwMTQxNzAwMCAtMDcwMApAQCAtMzk1LDYgKzM5 NSwyNCBAQAogICogQ3VycmVudGx5IHVzZWQgYnkgdGhlIGtlcm5lbCBjb3Jl ZHVtcCBjb2RlIGluIG9yZGVyIHRvIGF2b2lkCiAgKiBkdW1waW5nIG5vbi1t ZW1vcnkgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS4KICAqLworI2lmZGVmIENQ VV9TQjEKK2ludAoraXNfcGh5c2ljYWxfbWVtb3J5KHZtX29mZnNldF90IGFk ZHIpCit7CisKKwlpZiAoKGFkZHIgPj0gMHgwMDAwMDAwMFVMICYmIGFkZHIg PCAweDEwMDAwMDAwVUwpIHx8CisJICAgIChhZGRyID49IDB4ODAwMDAwMDBV TCAmJiBhZGRyIDwgMHhhMDAwMDAwMFVMKSB8fAorCSAgICAoYWRkciA+PSAw eGMwMDAwMDAwVUwgJiYgYWRkciA8IDB4ZDAwMDAwMDBVTCkpIHsKKwkJcmV0 dXJuICgxKTsKKwl9CisjaWZkZWYgSVNBX01JUFM2NAorCWlmIChhZGRyID49 IDB4MDEwMDAwMDAwMFVMTCAmJiBhZGRyIDwgMHg4MDAwMDAwMDAwVUxMKSB7 CisJCXJldHVybiAoMSk7CisJfQorI2VuZGlmCisJcmV0dXJuICgwKTsKK30K KyNlbHNlCiBpbnQKIGlzX3BoeXNpY2FsX21lbW9yeSh2bV9vZmZzZXRfdCBh ZGRyKQogewpAQCAtNDAzLDcgKzQyMSwyNiBAQAogCWVsc2UKIAkJcmV0dXJu IDA7CiB9CisjZW5kaWYJLyogQ1BVX1NCMSAqLwogCisjaWZkZWYgQ1BVX1NC MQoraW50Citpc19jYWNoZWFibGVfbWVtKHZtX29mZnNldF90IHBhKQorewor CisJcmV0dXJuIChpc19waHlzaWNhbF9tZW1vcnkocGEpKTsKK30KKworaW50 Citpc19jb2hlcmVudF9tZW0odm1fb2Zmc2V0X3QgcGEpCit7CisJCisJLyoK KwkgKiBBbGwgcGh5c2ljYWwgbWVtb3J5IGlzIG1hcmtlZCBjYWNoZWFibGUt Y29oZXJlbnQgb24gdGhlIHNpYnl0ZS4KKwkgKi8KKwlyZXR1cm4gKGlzX3Bo eXNpY2FsX21lbW9yeShwYSkpOworfQorI2Vsc2UKIGludAogaXNfY2FjaGVh YmxlX21lbSh2bV9vZmZzZXRfdCBwYSkKIHsKQEAgLTQxOCw2ICs0NTUsMTQg QEAKIAkJcmV0dXJuIDA7CiB9CiAKK2ludAoraXNfY29oZXJlbnRfbWVtKHZt X29mZnNldF90IHBhKQoreworCisJcmV0dXJuICgwKTsKK30KKyNlbmRpZgkv KiBDUFVfU0IxICovCisKIC8qCiAgKiBBbGxvY2F0ZSBhIHBvb2wgb2Ygc2Zf YnVmcyAoc2VuZGZpbGUoMikgb3IgInN1cGVyLWZhc3QiIGlmIHlvdSBwcmVm ZXIuIDotKSkKICAqLwpkaWZmIC1OdXJkIC91L25lZWxuYXR1L3A0L2ZyZWVi c2RfY3VycmVudC9zcmMvc3lzL21pcHMvc2lieXRlL2F0YV96YmJ1cy5jIC4v c3lzL21pcHMvc2lieXRlL2F0YV96YmJ1cy5jCi0tLSAvdS9uZWVsbmF0dS9w NC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL3NpYnl0ZS9hdGFfemJi dXMuYwkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysg Li9zeXMvbWlwcy9zaWJ5dGUvYXRhX3piYnVzLmMJMjAwOS0wNS0yMSAyMzo0 MjoyNi45OTk5NjkwMDAgLTA3MDAKQEAgLTAsMCArMSwxNzAgQEAKKy8qLQor ICogQ29weXJpZ2h0IChjKSAyMDA5IE5lZWxrYW50aCBOYXR1CisgKiBBbGwg cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1 c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91 dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhP UiBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBFWFBS RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg VEhFIEFVVEhPUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1Ig QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVE SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU SVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICog SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwg T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB UklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg T0YKKyAqIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxzeXMvcGFy YW0uaD4KKyNpbmNsdWRlIDxzeXMva2VybmVsLmg+CisjaW5jbHVkZSA8c3lz L3N5c3RtLmg+CisjaW5jbHVkZSA8c3lzL21vZHVsZS5oPgorI2luY2x1ZGUg PHN5cy9idXMuaD4KKyNpbmNsdWRlIDxzeXMvcm1hbi5oPgorI2luY2x1ZGUg PHN5cy9sb2NrLmg+CisjaW5jbHVkZSA8c3lzL211dGV4Lmg+CisjaW5jbHVk ZSA8c3lzL3NlbWEuaD4KKyNpbmNsdWRlIDxzeXMvdGFza3F1ZXVlLmg+CisK KyNpbmNsdWRlIDxtYWNoaW5lL2J1cy5oPgorCisjaW5jbHVkZSA8dm0vdW1h Lmg+CisKKyNpbmNsdWRlIDxzeXMvYXRhLmg+CisjaW5jbHVkZSA8ZGV2L2F0 YS9hdGEtYWxsLmg+CisKKyNpbmNsdWRlIDxtYWNoaW5lL3Jlc291cmNlLmg+ CisKK19fRkJTRElEKCIkRnJlZUJTRCQiKTsKKworc3RhdGljIGludAorYXRh X3piYnVzX3Byb2JlKGRldmljZV90IGRldikKK3sKKworCXJldHVybiAoYXRh X3Byb2JlKGRldikpOworfQorCitzdGF0aWMgaW50CithdGFfemJidXNfYXR0 YWNoKGRldmljZV90IGRldikKK3sKKwlpbnQgaSwgcmlkLCByZWdzaGlmdCwg cmVnb2Zmc2V0OworCXN0cnVjdCBhdGFfY2hhbm5lbCAqY2g7CisJc3RydWN0 IHJlc291cmNlICppbzsKKwkKKwljaCA9IGRldmljZV9nZXRfc29mdGMoZGV2 KTsKKworCWlmIChjaC0+YXR0YWNoZWQpCisJCXJldHVybiAoMCk7CisJY2gt PmF0dGFjaGVkID0gMTsKKworCXJpZCA9IDA7CisJaW8gPSBidXNfYWxsb2Nf cmVzb3VyY2UoZGV2LCBTWVNfUkVTX01FTU9SWSwgJnJpZCwgMCwgfjAsIDEs IFJGX0FDVElWRSk7CisJaWYgKGlvID09IE5VTEwpCisJCXJldHVybiAoRU5Y SU8pOworCisJLyoKKwkgKiBTV0FSTSBuZWVkcyBhbiBhZGRyZXNzIHNoaWZ0 IG9mIDUgd2hlbiBhY2Nlc3NpbmcgQVRBIHJlZ2lzdGVycy4KKwkgKgorCSAq IEZvciBlLmcuIGFuIGFjY2VzcyB0byByZWdpc3RlciA0IGFjdHVhbGx5IG5l ZWRzIGFuIGFkZHJlc3MKKwkgKiBvZiAoNCA8PCA1KSB0byBiZSBvdXRwdXQg b24gdGhlIGdlbmVyaWMgYnVzLgorCSAqLworCXJlZ3NoaWZ0ID0gNTsKKwly ZXNvdXJjZV9pbnRfdmFsdWUoZGV2aWNlX2dldF9uYW1lKGRldiksIGRldmlj ZV9nZXRfdW5pdChkZXYpLAorCQkJICAgInJlZ3NoaWZ0IiwgJnJlZ3NoaWZ0 KTsKKwlpZiAocmVnc2hpZnQgJiYgYm9vdHZlcmJvc2UpCisJCWRldmljZV9w cmludGYoZGV2LCAidXNpbmcgYSByZWdpc3RlciBzaGlmdCBvZiAlZFxuIiwg cmVnc2hpZnQpOworCisJcmVnb2Zmc2V0ID0gMHgxRjA7CisJcmVzb3VyY2Vf aW50X3ZhbHVlKGRldmljZV9nZXRfbmFtZShkZXYpLCBkZXZpY2VfZ2V0X3Vu aXQoZGV2KSwKKwkJCSAgICJyZWdvZmZzZXQiLCAmcmVnb2Zmc2V0KTsKKwlp ZiAocmVnb2Zmc2V0ICYmIGJvb3R2ZXJib3NlKSB7CisJCWRldmljZV9wcmlu dGYoZGV2LCAidXNpbmcgYSByZWdpc3RlciBvZmZzZXQgb2YgMHglMHhcbiIs CisJCQkgICAgICByZWdvZmZzZXQpOworCX0KKworCS8qIHNldHVwIHRoZSBh dGEgcmVnaXN0ZXIgYWRkcmVzc2VzICovCisJZm9yIChpID0gQVRBX0RBVEE7 IGkgPD0gQVRBX0NPTU1BTkQ7ICsraSkgeworCQljaC0+cl9pb1tpXS5yZXMg PSBpbzsKKwkJY2gtPnJfaW9baV0ub2Zmc2V0ID0gKHJlZ29mZnNldCArIGkp IDw8IHJlZ3NoaWZ0OworCX0KKworCWNoLT5yX2lvW0FUQV9DT05UUk9MXS5y ZXMgPSBpbzsKKwljaC0+cl9pb1tBVEFfQ09OVFJPTF0ub2Zmc2V0ID0gKHJl Z29mZnNldCArIEFUQV9DVExPRkZTRVQpIDw8IHJlZ3NoaWZ0OworCWNoLT5y X2lvW0FUQV9JRFhfQUREUl0ucmVzID0gaW87CS8qIFhYWCB3aGF0IGlzIHRo aXMgdXNlZCBmb3IgKi8KKwlhdGFfZGVmYXVsdF9yZWdpc3RlcnMoZGV2KTsK KworCS8qIGluaXRpYWxpemUgc29mdGMgZm9yIHRoaXMgY2hhbm5lbCAqLwor CWNoLT51bml0ID0gMDsKKwljaC0+ZmxhZ3MgfD0gQVRBX1VTRV8xNkJJVDsK KwlhdGFfZ2VuZXJpY19odyhkZXYpOworCisJcmV0dXJuIChhdGFfYXR0YWNo KGRldikpOworfQorCitzdGF0aWMgaW50CithdGFfemJidXNfZGV0YWNoKGRl dmljZV90IGRldikKK3sKKwlpbnQgZXJyb3I7CisJc3RydWN0IGF0YV9jaGFu bmVsICpjaCA9IGRldmljZV9nZXRfc29mdGMoZGV2KTsKKworCWlmICghY2gt PmF0dGFjaGVkKQorCQlyZXR1cm4gKDApOworCWNoLT5hdHRhY2hlZCA9IDA7 CisKKwllcnJvciA9IGF0YV9kZXRhY2goZGV2KTsKKworCWJ1c19yZWxlYXNl X3Jlc291cmNlKGRldiwgU1lTX1JFU19NRU1PUlksIDAsCisJCQkgICAgIGNo LT5yX2lvW0FUQV9JRFhfQUREUl0ucmVzKTsKKworCXJldHVybiAoZXJyb3Ip OworfQorCitzdGF0aWMgaW50CithdGFfemJidXNfc3VzcGVuZChkZXZpY2Vf dCBkZXYpCit7CisJc3RydWN0IGF0YV9jaGFubmVsICpjaCA9IGRldmljZV9n ZXRfc29mdGMoZGV2KTsKKworCWlmICghY2gtPmF0dGFjaGVkKQorCQlyZXR1 cm4gKDApOworCisJcmV0dXJuIChhdGFfc3VzcGVuZChkZXYpKTsKK30KKwor c3RhdGljIGludAorYXRhX3piYnVzX3Jlc3VtZShkZXZpY2VfdCBkZXYpCit7 CisJc3RydWN0IGF0YV9jaGFubmVsICpjaCA9IGRldmljZV9nZXRfc29mdGMo ZGV2KTsKKworCWlmICghY2gtPmF0dGFjaGVkKQorCQlyZXR1cm4gKDApOwor CisJcmV0dXJuIChhdGFfcmVzdW1lKGRldikpOworfQorCitzdGF0aWMgZGV2 aWNlX21ldGhvZF90IGF0YV96YmJ1c19tZXRob2RzW10gPSB7CisJLyogZGV2 aWNlIGludGVyZmFjZSAqLworCURFVk1FVEhPRChkZXZpY2VfcHJvYmUsCQlh dGFfemJidXNfcHJvYmUpLAorCURFVk1FVEhPRChkZXZpY2VfYXR0YWNoLAlh dGFfemJidXNfYXR0YWNoKSwKKwlERVZNRVRIT0QoZGV2aWNlX2RldGFjaCwJ YXRhX3piYnVzX2RldGFjaCksCisJREVWTUVUSE9EKGRldmljZV9zdXNwZW5k LAlhdGFfemJidXNfc3VzcGVuZCksCisJREVWTUVUSE9EKGRldmljZV9yZXN1 bWUsCWF0YV96YmJ1c19yZXN1bWUpLAorCisJeyAwLCAwIH0KK307CisKK3N0 YXRpYyBkcml2ZXJfdCBhdGFfemJidXNfZHJpdmVyID0geworCSJhdGEiLAor CWF0YV96YmJ1c19tZXRob2RzLAorCXNpemVvZihzdHJ1Y3QgYXRhX2NoYW5u ZWwpCit9OworCitEUklWRVJfTU9EVUxFKGF0YSwgemJidXMsIGF0YV96YmJ1 c19kcml2ZXIsIGF0YV9kZXZjbGFzcywgMCwgMCk7CmRpZmYgLU51cmQgL3Uv bmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9zaWJ5 dGUvZmlsZXMuc2lieXRlIC4vc3lzL21pcHMvc2lieXRlL2ZpbGVzLnNpYnl0 ZQotLS0gL3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMv bWlwcy9zaWJ5dGUvZmlsZXMuc2lieXRlCTE5NjktMTItMzEgMTY6MDA6MDAu MDAwMDAwMDAwIC0wODAwCisrKyAuL3N5cy9taXBzL3NpYnl0ZS9maWxlcy5z aWJ5dGUJMjAwOS0wNS0yMSAyMzozNDoyNy4zMTM5MzgwMDAgLTA3MDAKQEAg LTAsMCArMSw5IEBACisjICRGcmVlQlNEJAorCittaXBzL3NpYnl0ZS9zYl9t YWNoZGVwLmMJCQlzdGFuZGFyZAorbWlwcy9zaWJ5dGUvc2JfemJidXMuYwkJ CQlzdGFuZGFyZAorbWlwcy9zaWJ5dGUvc2JfemJwY2kuYwkJCQlzdGFuZGFy ZAorbWlwcy9zaWJ5dGUvc2Jfc2NkLmMJCQkJc3RhbmRhcmQKK21pcHMvc2li eXRlL2F0YV96YmJ1cy5jCQkJCXN0YW5kYXJkCisKK21pcHMvc2lieXRlL3Ni X2FzbS5TCQkJCXN0YW5kYXJkCmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQv ZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9zaWJ5dGUvc2JfYXNtLlMg Li9zeXMvbWlwcy9zaWJ5dGUvc2JfYXNtLlMKLS0tIC91L25lZWxuYXR1L3A0 L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvc2lieXRlL3NiX2FzbS5T CTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyAuL3N5 cy9taXBzL3NpYnl0ZS9zYl9hc20uUwkyMDA5LTA1LTE4IDIwOjI1OjE3Ljc5 ODcwMjAwMCAtMDcwMApAQCAtMCwwICsxLDE1NSBAQAorLyotCisgKiBDb3B5 cmlnaHQgKGMpIDIwMDkgTmVlbGthbnRoIE5hdHUKKyAqIEFsbCByaWdodHMg cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0 IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBD T05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1Ig SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQor ICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVU SE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElS RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ LCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH T09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVS IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JU IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg SU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICog U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgPG1hY2hpbmUvYXNtLmg+ CisKKy8qCisgKiBXZSBjb21waWxlIGEgMzItYml0IGtlcm5lbCB0byBydW4g b24gdGhlIFNCLTEgcHJvY2Vzc29yIHdoaWNoIGlzIGEgNjQtYml0CisgKiBw cm9jZXNzb3IuIEl0IGhhcyBzb21lIHJlZ2lzdGVycyB0aGF0IG11c3QgYmUg YWNjZXNzZWQgdXNpbmcgNjQtYml0IGxvYWQKKyAqIGFuZCBzdG9yZSBpbnN0 cnVjdGlvbnMuCisgKgorICogU28gd2UgaGF2ZSB0byByZXNvcnQgdG8gYXNz ZW1ibHkgYmVjYXVzZSB0aGUgY29tcGlsZXIgZG9lcyBub3QgZW1pdCB0aGUK KyAqICdsZCcgYW5kICdzZCcgaW5zdHJ1Y3Rpb25zIHNpbmNlIGl0IHRoaW5r cyB0aGF0IGl0IGlzIGNvbXBpbGluZyBmb3IgYQorICogMzItYml0IG1pcHMg cHJvY2Vzc29yLgorICovCisKKy5zZXQJbWlwczY0Cisuc2V0CW5vYXQKKy5z ZXQJbm9yZW9yZGVyCisKKy8qCisgKiByZXR1cm4gKE1JUFNfUEhZU19UT19L U0VHMSgweDEwMDIwMDA4KSkKKyAqIFBhcmFtZXRlcnM6IG5vbmUKKyAqLwor TEVBRihzYl9yZWFkX3N5c2NmZykKKwlsdWkgICAgIHYwLCAweGIwMDIKKwlv cmkgICAgIHYwLCB2MCwgMHg4CisJbGQgICAgICB2MSwgMCh2MCkJLyogc3lz Y2ZnID0gTUlQU19QSFlTX1RPX0tTRUcxKDB4MTAwMjAwMDgpICovCisJbW92 ZQl2MCwgdjEKKwlkc2xsMzIJdjAsIHYwLCAwCisJZHNybDMyCXYwLCB2MCwg MAkvKiB2MCA9IGxvd2VyX3VpbnQzMihtYXNrKSAqLworCWpyCXJhCisJZHNy bDMyCXYxLCB2MSwgMAkvKiB2MSA9IHVwcGVyX3VpbnQzMihtYXNrKSAqLwor RU5EKHNiX3JlYWRfc3lzY2ZnKQorCisvKgorICogTUlQU19QSFlTX1RPX0tT RUcxKDB4MTAwMjAwMDgpID0gKHVpbnQ2NF90KXZhbAorICogUGFyYW1ldGVy czoKKyAqIC0gbG93ZXJfdWludDMyKHZhbCk6IGEwCisgKiAtIHVwcGVyX3Vp bnQzMih2YWwpOiBhMQorICovCitMRUFGKHNiX3dyaXRlX3N5c2NmZykKKwls dWkgICAgIHYwLCAweGIwMDIKKwlvcmkgICAgIHYwLCB2MCwgMHg4CisJZHNs bDMyCWExLCBhMSwgMAkvKiBjbGVhciBsb3dlciAzMiBiaXRzIG9mIGExICov CisJZHNsbDMyCWEwLCBhMCwgMAorCWRzcmwzMglhMCwgYTAsIDAJLyogY2xl YXIgdXBwZXIgMzIgYml0cyBvZiBhMCAqLworCW9yCWExLCBhMSwgYTAKKwlz ZAlhMSwgMCh2MCkJLyogTUlQU19QSFlTX1RPX0tTRUcxKDB4MTAwMjAwMDgp ID0gdmFsICovCisJanIJcmEKKwlub3AKKwlub3AKK0VORChzYl93cml0ZV9z eXNjZmcpCisKKy8qCisgKiBNSVBTX1BIWVNfVE9fS1NFRzEoMHgxMDAyMDAy OCkgfD0gKDEgPDwgaW50c3JjKQorICoKKyAqIFBhcmFtZXRlcnM6CisgKiAt IGludHNyYyAoYTApCisgKi8KK0xFQUYoc2JfZGlzYWJsZV9pbnRzcmMpCisJ bHVpICAgICB2MCwgMHhiMDAyCisJb3JpICAgICB2MCwgdjAsIDB4MjgKKwls ZCAgICAgIHYxLCAwKHYwKQkvKiBtYXNrID0gTUlQU19QSFlTX1RPX0tTRUcx KDB4MTAwMjAwMjgpICovCisJbGkgICAgICBhMSwgMQorCWRzbGx2ICAgYTEs IGExLCBhMAorCW9yICAgICAgYTEsIGExLCB2MQkvKiBtYXNrIHw9ICgxIDw8 IGludHNyYykgKi8KKwlqcglyYQorCXNkICAgICAgYTEsIDAodjApCS8qIE1J UFNfUEhZU19UT19LU0VHMSgweDEwMDIwMDI4KSA9IG1hc2sgKi8KK0VORChz Yl9kaXNhYmxlX2ludHNyYykKKworLyoKKyAqIE1JUFNfUEhZU19UT19LU0VH MSgweDEwMDIwMDI4KSAmPSB+KDEgPDwgaW50c3JjKQorICoKKyAqIFBhcmFt ZXRlcnM6CisgKiAtIGludHNyYyAoYTApCisgKi8KK0xFQUYoc2JfZW5hYmxl X2ludHNyYykKKwlsdWkgICAgIHYwLCAweGIwMDIKKwlvcmkgICAgIHYwLCB2 MCwgMHgyOAorCWxkICAgICAgdjEsIDAodjApCS8qIG1hc2sgPSBNSVBTX1BI WVNfVE9fS1NFRzEoMHgxMDAyMDAyOCkgKi8KKwlsaSAgICAgIGEyLCAxCisJ ZHNsbHYgICBhMiwgYTIsIGEwCisJbm9yICAgICBhMiwgemVybywgYTIKKwlh bmQgICAgIGEyLCBhMiwgdjEJLyogbWFzayAmPSB+KDEgPDwgaW50c3JjKSAq LworCXNkICAgICAgYTIsIDAodjApCS8qIE1JUFNfUEhZU19UT19LU0VHMSgw eDEwMDIwMDI4KSA9IG1hc2sgKi8KKwlqciAgICAgIHJhCisJbm9wCitFTkQo c2JfZW5hYmxlX2ludHNyYykKKworLyoKKyAqIHJldHVybiAoKHVpbnQ2NF90 KU1JUFNfUEhZU19UT19LU0VHMSgweDEwMDIwMDI4KSkKKyAqIFBhcmFtZXRl cnM6IG5vbmUKKyAqLworTEVBRihzYl9yZWFkX2ludHNyY19tYXNrKQorCWx1 aSAgICAgdjAsIDB4YjAwMgorCW9yaSAgICAgdjAsIHYwLCAweDI4CisJbGQg ICAgICB2MSwgMCh2MCkJLyogbWFzayA9IE1JUFNfUEhZU19UT19LU0VHMSgw eDEwMDIwMDI4KSAqLworCW1vdmUJdjAsIHYxCisJZHNsbDMyCXYwLCB2MCwg MAorCWRzcmwzMgl2MCwgdjAsIDAJLyogdjAgPSBsb3dlcl91aW50MzIobWFz aykgKi8KKwlqcglyYQorCWRzcmwzMgl2MSwgdjEsIDAJLyogdjEgPSB1cHBl cl91aW50MzIobWFzaykgKi8KK0VORChzYl9yZWFkX2ludHNyY19tYXNrKQor CisvKgorICogcmV0dXJuICgodWludDY0X3QgKilNSVBTX1BIWVNfVE9fS1NF RzEoMHgxMDAyMDIwMCkgKyBpbnRzcmMpCisgKiBQYXJhbWV0ZXJzOgorICog LSBpbnRzcmMgKGEwKQorICovCitMRUFGKHNiX3JlYWRfaW50bWFwKQorCXNs bAlhMCwgYTAsIDMJLyogY29tcHV0ZSB0aGUgb2Zmc2V0IG9mIHRoZSBpbnRt YXAgcmVnaXN0ZXIgKi8KKwlsdWkgICAgIHYwLCAweGIwMDIKKwlhZGR1ICAg IGEwLCBhMCwgdjAKKwlsZCAgICAgIHYwLCA1MTIoYTApCS8qIHYwID0gTUlQ U19QSFlTX1RPX0tTRUcxKDB4MTAwMjAyMDApICsgb2ZmICovCisJanIgICAg ICByYQorCW5vcAorRU5EKHNiX3JlYWRfaW50bWFwKQorCisvKgorICogKHVp bnQ2NF90ICopTUlQU19QSFlTX1RPX0tTRUcxKDB4MTAwMjAyMDApICsgaW50 c3JjID0gaXJxCisgKiBQYXJhbWV0ZXJzOgorICogLSBpbnRzcmMgKGEwKQor ICogLSBpcnEgICAgKGExKQorICovCitMRUFGKHNiX3dyaXRlX2ludG1hcCkK KwlzbGwgICAgIGEwLCBhMCwgMHgzIC8qIGNvbXB1dGUgdGhlIG9mZnNldCBv ZiB0aGUgaW50bWFwIHJlZ2lzdGVyICovCisJbHVpICAgICB2MCwgMHhiMDAy CisJYWRkdSAgICBhMCwgYTAsIHYwCisJc2QgICAgICBhMSwgNTEyKGEwKSAv KiBNSVBTX1BIWVNfVE9fS1NFRzEoMHgxMDAyMDIwMCkgKyBvZmYgPSBpcnEg Ki8KKwlqciAgICAgIHJhCisJbm9wCitFTkQoc2Jfd3JpdGVfaW50bWFwKQpk aWZmIC1OdXJkIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMv c3lzL21pcHMvc2lieXRlL3NiX21hY2hkZXAuYyAuL3N5cy9taXBzL3NpYnl0 ZS9zYl9tYWNoZGVwLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVic2RfY3Vy cmVudC9zcmMvc3lzL21pcHMvc2lieXRlL3NiX21hY2hkZXAuYwkxOTY5LTEy LTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAtMDgwMAorKysgLi9zeXMvbWlwcy9z aWJ5dGUvc2JfbWFjaGRlcC5jCTIwMDktMDYtMTAgMTM6NTM6MzAuMzMzMDg0 MDAwIC0wNzAwCkBAIC0wLDAgKzEsMjU5IEBACisvKi0KKyAqIENvcHlyaWdo dCAoYykgMjAwNyBCcnVjZSBNLiBTaW1wc29uLgorICogQWxsIHJpZ2h0cyBy ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5EIENP TlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJ TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisg KiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI T1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJF Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks IE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywgQlVU IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP T0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIg Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF UiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRPUlQg KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ TiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBT VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Citf X0ZCU0RJRCgiJEZyZWVCU0QkIik7CisKKyNpbmNsdWRlIDxzeXMvcGFyYW0u aD4KKyNpbmNsdWRlIDxtYWNoaW5lL2NwdXJlZ3MuaD4KKworI2luY2x1ZGUg Im9wdF9kZGIuaCIKKyNpbmNsdWRlICJvcHRfa2RiLmgiCisKKyNpbmNsdWRl IDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRlIDxzeXMvY29uZi5oPgorI2luY2x1 ZGUgPHN5cy9rZXJuZWwuaD4KKyNpbmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNp bmNsdWRlIDxzeXMvaW1nYWN0Lmg+CisjaW5jbHVkZSA8c3lzL2Jpby5oPgor I2luY2x1ZGUgPHN5cy9idWYuaD4KKyNpbmNsdWRlIDxzeXMvYnVzLmg+Cisj aW5jbHVkZSA8c3lzL2NwdS5oPgorI2luY2x1ZGUgPHN5cy9jb25zLmg+Cisj aW5jbHVkZSA8c3lzL2V4ZWMuaD4KKyNpbmNsdWRlIDxzeXMvdWNvbnRleHQu aD4KKyNpbmNsdWRlIDxzeXMvcHJvYy5oPgorI2luY2x1ZGUgPHN5cy9rZGIu aD4KKyNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+CisjaW5jbHVkZSA8c3lzL3Jl Ym9vdC5oPgorI2luY2x1ZGUgPHN5cy9zaWduYWx2YXIuaD4KKyNpbmNsdWRl IDxzeXMvc3lzZW50Lmg+CisjaW5jbHVkZSA8c3lzL3N5c3Byb3RvLmg+Cisj aW5jbHVkZSA8c3lzL3VzZXIuaD4KKworI2luY2x1ZGUgPHZtL3ZtLmg+Cisj aW5jbHVkZSA8dm0vdm1fb2JqZWN0Lmg+CisjaW5jbHVkZSA8dm0vdm1fcGFn ZS5oPgorI2luY2x1ZGUgPHZtL3ZtX3BhZ2VyLmg+CisKKyNpbmNsdWRlIDxt YWNoaW5lL2NhY2hlLmg+CisjaW5jbHVkZSA8bWFjaGluZS9jbG9jay5oPgor I2luY2x1ZGUgPG1hY2hpbmUvY3B1Lmg+CisjaW5jbHVkZSA8bWFjaGluZS9j cHVpbmZvLmg+CisjaW5jbHVkZSA8bWFjaGluZS9jcHVmdW5jLmg+CisjaW5j bHVkZSA8bWFjaGluZS9jcHVyZWdzLmg+CisjaW5jbHVkZSA8bWFjaGluZS9o d2Z1bmMuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL2ludHJfbWFjaGRlcC5oPgor I2luY2x1ZGUgPG1hY2hpbmUvbG9jb3JlLmg+CisjaW5jbHVkZSA8bWFjaGlu ZS9tZF92YXIuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3B0ZS5oPgorI2luY2x1 ZGUgPG1hY2hpbmUvc2lnZnJhbWUuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3Ry YXAuaD4KKyNpbmNsdWRlIDxtYWNoaW5lL3ZtcGFyYW0uaD4KKworI2lmZGVm IENGRQorI2luY2x1ZGUgPGRldi9jZmUvY2ZlX2FwaS5oPgorI2VuZGlmCisK KyNpbmNsdWRlICJzYl9zY2QuaCIKKworI2lmZGVmIEREQgorI2lmbmRlZiBL REIKKyNlcnJvciBLREIgbXVzdCBiZSBlbmFibGVkIGluIG9yZGVyIGZvciBE REIgdG8gd29yayEKKyNlbmRpZgorI2VuZGlmCisKKyNpZmRlZiBDRkUKK2V4 dGVybiB1aW50MzJfdCBjZmVfaGFuZGxlOworZXh0ZXJuIHVpbnQzMl90IGNm ZV92ZWN0b3I7CisjZW5kaWYKKworI2lmZGVmIENGRV9FTlYKK2V4dGVybiB2 b2lkIGNmZV9lbnZfaW5pdCh2b2lkKTsKKyNlbmRpZgorCitleHRlcm4gaW50 ICplZGF0YTsKK2V4dGVybiBpbnQgKmVuZDsKKworc3RhdGljIHZvaWQKK21p cHNfaW5pdCh2b2lkKQoreworCWludCBpLCBjZmVfbWVtX2lkeCwgdG1wOwor CXVpbnQ2NF90IG1heG1lbTsKKworI2lmZGVmIENGRV9FTlYKKwljZmVfZW52 X2luaXQoKTsKKyNlbmRpZgorCisJVFVOQUJMRV9JTlRfRkVUQ0goImJvb3Ro b3d0byIsICZib290aG93dG8pOworCisJaWYgKGJvb3Rob3d0byAmIFJCX1ZF UkJPU0UpCisJCWJvb3R2ZXJib3NlKys7CisKKyNpZmRlZiBNQVhNRU0KKwl0 bXAgPSBNQVhNRU07CisjZWxzZQorCXRtcCA9IDA7CisjZW5kaWYKKwlUVU5B QkxFX0lOVF9GRVRDSCgiaHcucGh5c21lbSIsICZ0bXApOworCW1heG1lbSA9 ICh1aW50NjRfdCl0bXAgKiAxMDI0OworCisjaWZkZWYgQ0ZFCisJLyoKKwkg KiBRdWVyeSBEUkFNIG1lbW9yeSBtYXAgZnJvbSBDRkUuCisJICovCisJcGh5 c21lbSA9IDA7CisJY2ZlX21lbV9pZHggPSAwOworCWZvciAoaSA9IDA7IGkg PCAxMDsgaSArPSAyKSB7CisJCWludCByZXN1bHQ7CisJCXVpbnQ2NF90IGFk ZHIsIGxlbiwgdHlwZTsKKworCQlyZXN1bHQgPSBjZmVfZW51bW1lbShjZmVf bWVtX2lkeCsrLCAwLCAmYWRkciwgJmxlbiwgJnR5cGUpOworCQlpZiAocmVz dWx0IDwgMCkgeworCQkJcGh5c19hdmFpbFtpXSA9IHBoeXNfYXZhaWxbaSAr IDFdID0gMDsKKwkJCWJyZWFrOworCQl9CisKKwkJS0FTU0VSVCh0eXBlID09 IENGRV9NSV9BVkFJTEFCTEUsCisJCQkoIkNGRSBEUkFNIHJlZ2lvbiBpcyBu b3QgYXZhaWxhYmxlPyIpKTsKKworCQlpZiAoYm9vdHZlcmJvc2UpCisJCQlw cmludGYoImNmZV9lbnVtbWVtOiAweCUwMTZqeC8lbGx1LlxuIiwgYWRkciwg bGVuKTsKKworCQlpZiAobWF4bWVtICE9IDApIHsKKwkJCWlmIChhZGRyID49 IG1heG1lbSkgeworCQkJCXByaW50ZigiSWdub3JpbmcgJWxsdSBieXRlcyBv ZiBtZW1vcnkgYXQgMHglanggIgorCQkJCSAgICAgICAidGhhdCBpcyBhYm92 ZSBtYXhtZW0gJWRNQlxuIiwKKwkJCQkgICAgICAgbGVuLCBhZGRyLAorCQkJ CSAgICAgICAoaW50KShtYXhtZW0gLyAoMTAyNCAqIDEwMjQpKSk7CisJCQkJ Y29udGludWU7CisJCQl9CisKKwkJCWlmIChhZGRyICsgbGVuID4gbWF4bWVt KSB7CisJCQkJcHJpbnRmKCJJZ25vcmluZyAlbGx1IGJ5dGVzIG9mIG1lbW9y eSAiCisJCQkJICAgICAgICJ0aGF0IGlzIGFib3ZlIG1heG1lbSAlZE1CXG4i LAorCQkJCSAgICAgICAoYWRkciArIGxlbikgLSBtYXhtZW0sCisJCQkJICAg ICAgIChpbnQpKG1heG1lbSAvICgxMDI0ICogMTAyNCkpKTsKKwkJCQlsZW4g PSBtYXhtZW0gLSBhZGRyOworCQkJfQorCQl9CisKKwkJcGh5c19hdmFpbFtp XSA9IGFkZHI7CisJCWlmIChpID09IDAgJiYgYWRkciA9PSAwKSB7CisJCQkv KgorCQkJICogSWYgdGhpcyBpcyB0aGUgZmlyc3QgcGh5c2ljYWwgbWVtb3J5 IHNlZ21lbnQgcHJvYmVkCisJCQkgKiBmcm9tIENGRSwgb21pdCB0aGUgcmVn aW9uIGF0IHRoZSBzdGFydCBvZiBwaHlzaWNhbAorCQkJICogbWVtb3J5IHdo ZXJlIHRoZSBrZXJuZWwgaGFzIGJlZW4gbG9hZGVkLgorCQkJICovCisJCQlw aHlzX2F2YWlsW2ldICs9IE1JUFNfS1NFRzBfVE9fUEhZUygodm1fb2Zmc2V0 X3QpJmVuZCk7CisJCX0KKwkJcGh5c19hdmFpbFtpICsgMV0gPSBhZGRyICsg bGVuOworCQlwaHlzbWVtICs9IGxlbjsKKwl9CisKKwlyZWFsbWVtID0gYnRv YyhwaHlzbWVtKTsKKyNlbmRpZgorCisJcGh5c21lbSA9IHJlYWxtZW07CisK Kwlpbml0X3BhcmFtMSgpOworCWluaXRfcGFyYW0yKHBoeXNtZW0pOworCW1p cHNfY3B1X2luaXQoKTsKKwlwbWFwX2Jvb3RzdHJhcCgpOworCW1pcHNfcHJv YzBfaW5pdCgpOworCW11dGV4X2luaXQoKTsKKworCWtkYl9pbml0KCk7Cisj aWZkZWYgS0RCCisJaWYgKGJvb3Rob3d0byAmIFJCX0tEQikKKwkJa2RiX2Vu dGVyKEtEQl9XSFlfQk9PVEZMQUdTLCAiQm9vdCBmbGFncyByZXF1ZXN0ZWQg ZGVidWdnZXIiKTsKKyNlbmRpZgorfQorCit2b2lkCitwbGF0Zm9ybV9oYWx0 KHZvaWQpCit7CisKK30KKworCit2b2lkCitwbGF0Zm9ybV9pZGVudGlmeSh2 b2lkKQoreworCit9CisKK3ZvaWQKK3BsYXRmb3JtX3Jlc2V0KHZvaWQpCit7 CisJCisJLyoKKwkgKiBYWFggU01QCisJICogWFhYIGZsdXNoIGRhdGEgY2Fj aGVzCisJICovCisJc2Jfc3lzdGVtX3Jlc2V0KCk7Cit9CisKK3ZvaWQKK3Bs YXRmb3JtX3RyYXBfZW50ZXIodm9pZCkKK3sKKworfQorCit2b2lkCitwbGF0 Zm9ybV90cmFwX2V4aXQodm9pZCkKK3sKKworfQorCit2b2lkCitwbGF0Zm9y bV9zdGFydChfX3JlZ2lzdGVyX3QgYTAgX191bnVzZWQsIF9fcmVnaXN0ZXJf dCBhMSBfX3VudXNlZCwgCisgICAgX19yZWdpc3Rlcl90IGEyIF9fdW51c2Vk LCBfX3JlZ2lzdGVyX3QgYTMgX191bnVzZWQpCit7CisJdm1fb2Zmc2V0X3Qg a2VybmVuZDsKKworCS8qIGNsZWFyIHRoZSBCU1MgYW5kIFNCU1Mgc2VnbWVu dHMgKi8KKwltZW1zZXQoJmVkYXRhLCAwLCAodm1fb2Zmc2V0X3QpJmVuZCAt ICh2bV9vZmZzZXRfdCkmZWRhdGEpOworCWtlcm5lbmQgPSByb3VuZF9wYWdl KCh2bV9vZmZzZXRfdCkmZW5kKTsKKworI2lmZGVmIENGRQorCS8qCisJICog SW5pdGlhbGl6ZSBDRkUgZmlybXdhcmUgdHJhbXBvbGluZXMgYmVmb3JlCisJ ICogd2UgaW5pdGlhbGl6ZSB0aGUgbG93LWxldmVsIGNvbnNvbGUuCisJICov CisJaWYgKGNmZV9oYW5kbGUgIT0gMCkKKwkJY2ZlX2luaXQoY2ZlX2hhbmRs ZSwgY2ZlX3ZlY3Rvcik7CisjZW5kaWYKKwljbmluaXQoKTsKKworI2lmZGVm IENGRQorCWlmIChjZmVfaGFuZGxlID09IDApCisJCXBhbmljKCJDRkUgd2Fz IG5vdCBkZXRlY3RlZCBieSBsb2NvcmUuXG4iKTsKKyNlbmRpZgorCW1pcHNf aW5pdCgpOworCisJbWlwc190aW1lcl9pbml0X3BhcmFtcyhzYl9jcHVfc3Bl ZWQoKSwgMCk7Cit9CmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJlZWJz ZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9zaWJ5dGUvc2Jfc2NkLmMgLi9zeXMv bWlwcy9zaWJ5dGUvc2Jfc2NkLmMKLS0tIC91L25lZWxuYXR1L3A0L2ZyZWVi c2RfY3VycmVudC9zcmMvc3lzL21pcHMvc2lieXRlL3NiX3NjZC5jCTE5Njkt MTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyAuL3N5cy9taXBz L3NpYnl0ZS9zYl9zY2QuYwkyMDA5LTA1LTE1IDE2OjUxOjU2LjM2MjY4ODAw MCAtMDcwMApAQCAtMCwwICsxLDE1MiBAQAorLyotCisgKiBDb3B5cmlnaHQg KGMpIDIwMDkgTmVlbGthbnRoIE5hdHUKKyAqIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93 aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1 dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0 cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIEFORCBDT05UUklC VVRPUlMgYGBBUyBJUycnIEFORAorICogQU5ZIEVYUFJFU1MgT1IgSU1QTElF RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQorICogQVJF IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9S IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAqIEZPUiBBTlkgRElSRUNULCBJ TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD T05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUwor ICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pCisgKiBIT1dFVkVSIENBVVNF RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g Q09OVFJBQ1QsIFNUUklDVAorICogTElBQklMSVRZLCBPUiBUT1JUIChJTkNM VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z IFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorICogU1VDSCBE QU1BR0UuCisgKi8KKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNpbmNsdWRl IDxzeXMva2VybmVsLmg+CisjaW5jbHVkZSA8c3lzL3N5c3RtLmg+CisjaW5j bHVkZSA8c3lzL21vZHVsZS5oPgorI2luY2x1ZGUgPHN5cy9idXMuaD4KKwor I2luY2x1ZGUgPG1hY2hpbmUvcmVzb3VyY2UuaD4KKworI2luY2x1ZGUgInNi X3NjZC5oIgorCitfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CisKKy8qCisgKiBT eXN0ZW0gQ29udHJvbCBhbmQgRGVidWcgKFNDRCkgdW5pdCBvbiB0aGUgU2li eXRlIFpCYnVzLgorICovCisKKy8qCisgKiBFeHRyYWN0IHRoZSB2YWx1ZSBz dGFydGluZyBhdCBiaXQgcG9zaXRpb24gJ2InIGZvciAnbicgYml0cyBmcm9t ICd4Jy4KKyAqLworI2RlZmluZQlHRVRfVkFMXzY0KHgsIGIsIG4pCSgoKHgp ID4+IChiKSkgJiAoKDFVTEwgPDwgKG4pKSAtIDEpKQorCisjZGVmaW5lIFNZ U0NGR19QTExESVYoeCkJR0VUX1ZBTF82NCgoeCksIDcsIDUpCisKK3VpbnQ2 NF90CitzYl9jcHVfc3BlZWQodm9pZCkKK3sKKwlpbnQgcGxsZGl2OworCWNv bnN0IHVpbnQ2NF90IE1IWiA9IDEwMDAwMDA7CisJCisJcGxsZGl2ID0gU1lT Q0ZHX1BMTERJVihzYl9yZWFkX3N5c2NmZygpKTsKKwlpZiAocGxsZGl2ID09 IDApIHsKKwkJcHJpbnRmKCJQTExfRElWIGlzIDAgLSBhc3N1bWluZyA2ICgz MDBNSHopLlxuIik7CisJCXBsbGRpdiA9IDY7CisJfQorCisJcmV0dXJuIChw bGxkaXYgKiA1MCAqIE1IWik7Cit9CisKK3ZvaWQKK3NiX3N5c3RlbV9yZXNl dCh2b2lkKQoreworCXVpbnQ2NF90IHN5c2NmZzsKKworCWNvbnN0IHVpbnQ2 NF90IFNZU1RFTV9SRVNFVCA9IDFVTEwgPDwgNjA7CisJY29uc3QgdWludDY0 X3QgRVhUX1JFU0VUID0gMVVMTCA8PCA1OTsKKwljb25zdCB1aW50NjRfdCBT T0ZUX1JFU0VUID0gMVVMTCA8PCA1ODsKKworCXN5c2NmZyA9IHNiX3JlYWRf c3lzY2ZnKCk7CisJc3lzY2ZnICY9IH5TT0ZUX1JFU0VUOworCXN5c2NmZyB8 PSBTWVNURU1fUkVTRVQgfCBFWFRfUkVTRVQ7CisJc2Jfd3JpdGVfc3lzY2Zn KHN5c2NmZyk7Cit9CisKK2ludAorc2Jfcm91dGVfaW50c3JjKGludCBpbnRz cmMpCit7CisJaW50IGludHJudW07CisKKwlLQVNTRVJUKGludHNyYyA+PSAw ICYmIGludHNyYyA8IE5VTV9JTlRTUkMsCisJCSgiSW52YWxpZCBpbnRlcnJ1 cHQgc291cmNlIG51bWJlciAoJWQpIiwgaW50c3JjKSk7CisKKwkvKgorCSAq IEludGVycnVwdCA1IGlzIHVzZWQgYnkgc291cmNlcyBpbnRlcm5hbCB0byB0 aGUgQ1BVIChlLmcuIHRpbWVyKS4KKwkgKiBVc2UgYSBkZXRlcm1pbmlzdGlj IG1hcHBpbmcgZm9yIHRoZSByZW1haW5pbmcgc291cmNlcyB0byBtYXAgdG8K KwkgKiBpbnRlcnJ1cHQgbnVtYmVycyAwIHRocm91Z2ggNC4KKwkgKi8KKwlp bnRybnVtID0gaW50c3JjICUgNTsKKworCS8qCisJICogUHJvZ3JhbSB0aGUg aW50ZXJydXB0IG1hcHBlciB3aGlsZSB3ZSBhcmUgaGVyZS4KKwkgKi8KKwlz Yl93cml0ZV9pbnRtYXAoaW50c3JjLCBpbnRybnVtKTsKKworCXJldHVybiAo aW50cm51bSk7Cit9CisKKyNkZWZpbmUJU0NEX1BIWVNBRERSCTB4MTAwMDAw MDAKKyNkZWZpbmUJU0NEX1NJWkUJMHgwMDA2MDAwMAorCitzdGF0aWMgaW50 CitzY2RfcHJvYmUoZGV2aWNlX3QgZGV2KQoreworCisJZGV2aWNlX3NldF9k ZXNjKGRldiwgIkJyb2FkY29tL1NpYnl0ZSBTeXN0ZW0gQ29udHJvbCBhbmQg RGVidWciKTsKKwlyZXR1cm4gKDApOworfQorCitzdGF0aWMgaW50CitzY2Rf YXR0YWNoKGRldmljZV90IGRldikKK3sKKwlpbnQgcmlkOworCXN0cnVjdCBy ZXNvdXJjZSAqcmVzOworCisJaWYgKGJvb3R2ZXJib3NlKSB7CisJCWRldmlj ZV9wcmludGYoZGV2LCAiYXR0YWNoZWQuXG4iKTsKKwl9CisKKwlyaWQgPSAw OworCXJlcyA9IGJ1c19hbGxvY19yZXNvdXJjZShkZXYsIFNZU19SRVNfTUVN T1JZLCAmcmlkLCBTQ0RfUEhZU0FERFIsCisJCQkJIFNDRF9QSFlTQUREUiAr IFNDRF9TSVpFIC0gMSwgU0NEX1NJWkUsIDApOworCWlmIChyZXMgPT0gTlVM TCkgeworCQlwYW5pYygiQ2Fubm90IGFsbG9jYXRlIHJlc291cmNlIGZvciBz eXN0ZW0gY29udHJvbCBhbmQgZGVidWcuIik7CisJfQorCQorCXJldHVybiAo MCk7Cit9CisKK3N0YXRpYyBkZXZpY2VfbWV0aG9kX3Qgc2NkX21ldGhvZHNb XSA9eworCS8qIERldmljZSBpbnRlcmZhY2UgKi8KKwlERVZNRVRIT0QoZGV2 aWNlX3Byb2JlLAkJc2NkX3Byb2JlKSwKKwlERVZNRVRIT0QoZGV2aWNlX2F0 dGFjaCwJc2NkX2F0dGFjaCksCisJREVWTUVUSE9EKGRldmljZV9kZXRhY2gs CWJ1c19nZW5lcmljX2RldGFjaCksCisJREVWTUVUSE9EKGRldmljZV9zaHV0 ZG93biwJYnVzX2dlbmVyaWNfc2h1dGRvd24pLAorCURFVk1FVEhPRChkZXZp Y2Vfc3VzcGVuZCwJYnVzX2dlbmVyaWNfc3VzcGVuZCksCisJREVWTUVUSE9E KGRldmljZV9yZXN1bWUsCWJ1c19nZW5lcmljX3Jlc3VtZSksCisKKwl7IDAs IDAgfQorfTsKKworc3RhdGljIGRyaXZlcl90IHNjZF9kcml2ZXIgPSB7CisJ InNjZCIsCisJc2NkX21ldGhvZHMKK307CisKK3N0YXRpYyBkZXZjbGFzc190 IHNjZF9kZXZjbGFzczsKKworRFJJVkVSX01PRFVMRShzY2QsIHpiYnVzLCBz Y2RfZHJpdmVyLCBzY2RfZGV2Y2xhc3MsIDAsIDApOwpkaWZmIC1OdXJkIC91 L25lZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvc2li eXRlL3NiX3NjZC5oIC4vc3lzL21pcHMvc2lieXRlL3NiX3NjZC5oCi0tLSAv dS9uZWVsbmF0dS9wNC9mcmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL3Np Ynl0ZS9zYl9zY2QuaAkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAwMCAt MDgwMAorKysgLi9zeXMvbWlwcy9zaWJ5dGUvc2Jfc2NkLmgJMjAwOS0wNS0x NSAwMTo1ODoxMi4zMTg0MjIwMDAgLTA3MDAKQEAgLTAsMCArMSw0NiBAQAor LyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkgTmVlbGthbnRoIE5hdHUKKyAq IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3 aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6 CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11 c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg QVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAorICogQU5Z IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT SEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUKKyAq IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1BR0VTIChJ TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg U1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p CisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICogTElBQklM SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBVU0UgT0Yg VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ TElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBfU0Jf U0NEX0hfCisjZGVmaW5lCV9TQl9TQ0RfSF8KKworI2RlZmluZQlOVU1fSU5U U1JDCQk2NAkvKiB0b3RhbCBudW1iZXIgb2YgaW50ZXJydXB0IHNvdXJjZXMg Ki8KKwordWludDY0X3QJc2JfY3B1X3NwZWVkKHZvaWQpOwordm9pZAkJc2Jf c3lzdGVtX3Jlc2V0KHZvaWQpOworCitpbnQJCXNiX3JvdXRlX2ludHNyYyhp bnQgc3JjKTsKK3ZvaWQJCXNiX2VuYWJsZV9pbnRzcmMoaW50IHNyYyk7Cit2 b2lkCQlzYl9kaXNhYmxlX2ludHNyYyhpbnQgc3JjKTsKK3VpbnQ2NF90CXNi X3JlYWRfaW50c3JjX21hc2sodm9pZCk7CisKK2ludAkJc2JfcmVhZF9pbnRt YXAoaW50IGludHNyYyk7Cit2b2lkCQlzYl93cml0ZV9pbnRtYXAoaW50IGlu dHNyYywgaW50IGludHJudW0pOworCit1aW50NjRfdAlzYl9yZWFkX3N5c2Nm Zyh2b2lkKTsKK3ZvaWQJCXNiX3dyaXRlX3N5c2NmZyh1aW50NjRfdCB2YWwp OworCisjZW5kaWYJLyogX1NCX1NDRF9IXyAqLwpkaWZmIC1OdXJkIC91L25l ZWxuYXR1L3A0L2ZyZWVic2RfY3VycmVudC9zcmMvc3lzL21pcHMvc2lieXRl L3NiX3piYnVzLmMgLi9zeXMvbWlwcy9zaWJ5dGUvc2JfemJidXMuYwotLS0g L3UvbmVlbG5hdHUvcDQvZnJlZWJzZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9z aWJ5dGUvc2JfemJidXMuYwkxOTY5LTEyLTMxIDE2OjAwOjAwLjAwMDAwMDAw MCAtMDgwMAorKysgLi9zeXMvbWlwcy9zaWJ5dGUvc2JfemJidXMuYwkyMDA5 LTA2LTEzIDEyOjI5OjM5LjUxNTA1NTAwMCAtMDcwMApAQCAtMCwwICsxLDUw MSBAQAorLyotCisgKiBDb3B5cmlnaHQgKGMpIDIwMDkgTmVlbGthbnRoIE5h dHUKKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0 aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0 cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC WSBUSEUgQVVUSE9SIEFORCBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORAor ICogQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRQorICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF VkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC TEUKKyAqIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisgKiBEQU1B R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F TlQgT0YgU1VCU1RJVFVURSBHT09EUworICogT1IgU0VSVklDRVM7IExPU1Mg T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV UFRJT04pCisgKiBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVAorICog TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWQorICogT1VUIE9GIFRIRSBV U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ T1NTSUJJTElUWSBPRgorICogU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1 ZGUgPHN5cy9wYXJhbS5oPgorI2luY2x1ZGUgPHN5cy9rZXJuZWwuaD4KKyNp bmNsdWRlIDxzeXMvc3lzdG0uaD4KKyNpbmNsdWRlIDxzeXMvbW9kdWxlLmg+ CisjaW5jbHVkZSA8c3lzL2J1cy5oPgorI2luY2x1ZGUgPHN5cy9tYWxsb2Mu aD4KKyNpbmNsdWRlIDxzeXMvcm1hbi5oPgorCisjaW5jbHVkZSA8bWFjaGlu ZS9yZXNvdXJjZS5oPgorI2luY2x1ZGUgPG1hY2hpbmUvaW50cl9tYWNoZGVw Lmg+CisKKyNpbmNsdWRlICJzYl9zY2QuaCIKKworX19GQlNESUQoIiRGcmVl QlNEJCIpOworCitzdGF0aWMgTUFMTE9DX0RFRklORShNX0lOVE1BUCwgInNi MTI1MCBpbnRtYXAiLCAiU2lieXRlIDEyNTAgSW50ZXJydXB0IE1hcHBlciIp OworCisjZGVmaW5lCU5VTV9IQVJEX0lSUVMJNgorCitzdHJ1Y3Qgc2JfaW50 bWFwIHsKKwlpbnQgaW50c3JjOwkJLyogaW50ZXJydXB0IG1hcHBlciByZWdp c3RlciBudW1iZXIgKDAgLSA2MykgKi8KKwlpbnQgYWN0aXZlOwkJLyogRG9l cyB0aGlzIHNvdXJjZSBnZW5lcmF0ZSBpbnRlcnJ1cHRzPyAqLworCisJLyoK KwkgKiBUaGUgZGV2aWNlIHRoYXQgdGhlIGludGVycnVwdCBiZWxvbmdzIHRv LiBOb3RlIHRoYXQgbXVsdGlwbGUKKwkgKiBkZXZpY2VzIG1heSBzaGFyZSBh biBpbnRlcnJ1cHQuIEZvciBlLmcuIFBDSV9JTlRfeCBsaW5lcy4KKwkgKgor CSAqIFRoZSBkZXZpY2UgJ2RldicgaW4gY29tYmluYXRpb24gd2l0aCB0aGUg J3JpZCcgdW5pcXVlbHkKKwkgKiBpZGVudGlmeSB0aGlzIGludGVycnVwdCBz b3VyY2UuCisJICovCisJZGV2aWNlX3QgZGV2OworCWludCByaWQ7CisKKwlT TElTVF9FTlRSWShzYl9pbnRtYXApIG5leHQ7Cit9OworCisvKgorICogV2Ug cmVnaXN0ZXIgJ3NiX2ludHNyYy5pc3JjJyB1c2luZyBjcHVfcmVnaXN0ZXJf aGFyZF9pbnRzcmMoKSBmb3IgZWFjaAorICogaGFyZCBpbnRlcnJ1cHQgc291 cmNlIFswLTVdLgorICoKKyAqIFRoZSBtYXNrL3VubWFzayBjYWxsYmFja3Mg dXNlIHRoZSBpbmZvcm1hdGlvbiBpbiAnc2JfaW50bWFwJyB0byBmaWd1cmUK KyAqIG91dCB0aGUgY29ycmVzcG9uZGluZyBpbnRlcnJ1cHQgc291cmNlcyB0 byBtYXNrL3VubWFzay4KKyAqLworc3RydWN0IHNiX2ludHNyYyB7CisJc3Ry dWN0IGludHNyYyBpc3JjOworCVNMSVNUX0hFQUQoLCBzYl9pbnRtYXApIHNi X2ludG1hcF9oZWFkOworfTsKKworc3RhdGljIHN0cnVjdCBzYl9pbnRzcmMg c2JfaW50c3JjW05VTV9IQVJEX0lSUVNdOworCitzdGF0aWMgc3RydWN0IHNi X2ludG1hcCAqCitzYl9pbnRtYXBfbG9va3VwKGludCBpbnRybnVtLCBkZXZp Y2VfdCBkZXYsIGludCByaWQpCit7CisJc3RydWN0IHNiX2ludHNyYyAqaXNy YzsKKwlzdHJ1Y3Qgc2JfaW50bWFwICptYXA7CisKKwlpc3JjID0gJnNiX2lu dHNyY1tpbnRybnVtXTsKKwlTTElTVF9GT1JFQUNIKG1hcCwgJmlzcmMtPnNi X2ludG1hcF9oZWFkLCBuZXh0KSB7CisJCWlmIChkZXYgPT0gbWFwLT5kZXYg JiYgcmlkID09IG1hcC0+cmlkKQorCQkJYnJlYWs7CisJfQorCXJldHVybiAo bWFwKTsKK30KKworLyoKKyAqIEtlZXAgdHJhY2sgb2Ygd2hpY2ggKGRldixy aWQpIHR1cGxlIGlzIHVzaW5nIHRoZSBpbnRlcnJ1cHQgc291cmNlLgorICoK KyAqIFdlIGRvbid0IGFjdHVhbGx5IHVubWFzayB0aGUgaW50ZXJydXB0IHNv dXJjZSB1bnRpbCB0aGUgZGV2aWNlIGNhbGxzCisgKiBhIGJ1c19zZXR1cF9p bnRyKCkgb24gdGhlIHJlc291cmNlLgorICovCitzdGF0aWMgdm9pZAorc2Jf aW50bWFwX2FkZChpbnQgaW50cm51bSwgZGV2aWNlX3QgZGV2LCBpbnQgcmlk LCBpbnQgaW50c3JjKQoreworCXN0cnVjdCBzYl9pbnRzcmMgKmlzcmM7CisJ c3RydWN0IHNiX2ludG1hcCAqbWFwOworCXJlZ2lzdGVyX3Qgc3I7CisJCisJ S0FTU0VSVChpbnRybnVtID49IDAgJiYgaW50cm51bSA8IE5VTV9IQVJEX0lS UVMsCisJCSgiaW50cm51bSBpcyBvdXQgb2YgcmFuZ2U6ICVkIiwgaW50cm51 bSkpOworCisJaXNyYyA9ICZzYl9pbnRzcmNbaW50cm51bV07CisJbWFwID0g c2JfaW50bWFwX2xvb2t1cChpbnRybnVtLCBkZXYsIHJpZCk7CisJaWYgKG1h cCkgeworCQlLQVNTRVJUKGludHNyYyA9PSBtYXAtPmludHNyYywKKwkJCSgi JXMlZCBhbGxvY2F0aW5nIFNZU19SRVNfSVJRIHJlc291cmNlIHdpdGggcmlk ICVkICIKKwkJCSAid2l0aCBhIGRpZmZlcmVudCBpbnRzcmMgKCVkIHZlcnN1 cyAlZCkiLAorCQkJZGV2aWNlX2dldF9uYW1lKGRldiksIGRldmljZV9nZXRf dW5pdChkZXYpLCByaWQsCisJCQlpbnRzcmMsIG1hcC0+aW50c3JjKSk7CisJ CXJldHVybjsKKwl9CisKKwltYXAgPSBtYWxsb2Moc2l6ZW9mKCptYXApLCBN X0lOVE1BUCwgTV9XQUlUT0sgfCBNX1pFUk8pOworCW1hcC0+aW50c3JjID0g aW50c3JjOworCW1hcC0+ZGV2ID0gZGV2OworCW1hcC0+cmlkID0gcmlkOwor CisJc3IgPSBpbnRyX2Rpc2FibGUoKTsKKwlTTElTVF9JTlNFUlRfSEVBRCgm aXNyYy0+c2JfaW50bWFwX2hlYWQsIG1hcCwgbmV4dCk7CisJaW50cl9yZXN0 b3JlKHNyKTsKK30KKworc3RhdGljIHZvaWQKK3NiX2ludG1hcF9hY3RpdmF0 ZShpbnQgaW50cm51bSwgZGV2aWNlX3QgZGV2LCBpbnQgcmlkKQoreworCXN0 cnVjdCBzYl9pbnRtYXAgKm1hcDsKKwlyZWdpc3Rlcl90IHNyOworCQorCUtB U1NFUlQoaW50cm51bSA+PSAwICYmIGludHJudW0gPCBOVU1fSEFSRF9JUlFT LAorCQkoImludHJudW0gaXMgb3V0IG9mIHJhbmdlOiAlZCIsIGludHJudW0p KTsKKworCW1hcCA9IHNiX2ludG1hcF9sb29rdXAoaW50cm51bSwgZGV2LCBy aWQpOworCWlmIChtYXApIHsKKwkJLyoKKwkJICogU2VlIGNvbW1lbnRzIGlu IHNiX3VubWFza19mdW5jKCkgYWJvdXQgZGlzYWJsaW5nIGNwdSBpbnRyCisJ CSAqLworCQlzciA9IGludHJfZGlzYWJsZSgpOworCQltYXAtPmFjdGl2ZSA9 IDE7CisJCXNiX2VuYWJsZV9pbnRzcmMobWFwLT5pbnRzcmMpOworCQlpbnRy X3Jlc3RvcmUoc3IpOworCX0gZWxzZSB7CisJCS8qCisJCSAqIEluIHpiYnVz X3NldHVwX2ludHIoKSB3ZSBibGluZGx5IGNhbGwgc2JfaW50bWFwX2FjdGl2 YXRlKCkKKwkJICogZm9yIGV2ZXJ5IGludGVycnVwdCBhY3RpdmF0aW9uIHRo YXQgY29tZXMgb3VyIHdheS4KKwkJICoKKwkJICogV2UgbWlnaHQgZW5kIHVw IGhlcmUgaWYgd2UgZGlkIG5vdCAiaGlqYWNrIiB0aGUgU1lTX1JFU19JUlEK KwkJICogcmVzb3VyY2UgaW4gemJidXNfYWxsb2NfcmVzb3VyY2UoKS4KKwkJ ICovCisJCXByaW50Zigic2JfaW50bWFwX2FjdGl2YXRlOiB1bmFibGUgdG8g YWN0aXZhdGUgaW50ZXJydXB0ICVkICIKKwkJICAgICAgICJmb3IgZGV2aWNl ICVzJWQgcmlkICVkLlxuIiwgaW50cm51bSwKKwkJICAgICAgIGRldmljZV9n ZXRfbmFtZShkZXYpLCBkZXZpY2VfZ2V0X3VuaXQoZGV2KSwgcmlkKTsKKwl9 Cit9CisKK3N0YXRpYyB2b2lkCitzYl9tYXNrX2Z1bmMoc3RydWN0IGludHNy YyAqYXJnKQoreworCXN0cnVjdCBzYl9pbnRtYXAgKm1hcDsKKwlzdHJ1Y3Qg c2JfaW50c3JjICppc3JjOworCXVpbnQ2NF90IGlzcmNfYml0bWFwOworCisJ aXNyY19iaXRtYXAgPSAwOworCWlzcmMgPSAoc3RydWN0IHNiX2ludHNyYyAq KWFyZzsKKwlTTElTVF9GT1JFQUNIKG1hcCwgJmlzcmMtPnNiX2ludG1hcF9o ZWFkLCBuZXh0KSB7CisJCWlmIChtYXAtPmFjdGl2ZSA9PSAwKQorCQkJY29u dGludWU7CisJCS8qCisJCSAqIElmIHdlIGhhdmUgYWxyZWFkeSBkaXNhYmxl ZCB0aGlzIGludGVycnVwdCBzb3VyY2UgdGhlbiBkb24ndAorCQkgKiBkbyBp dCBhZ2Fpbi4gVGhpcyBjYW4gaGFwcGVuIHdoZW4gbXVsdGlwbGUgZGV2aWNl cyBzaGFyZQorCQkgKiBhbiBpbnRlcnJ1cHQgc291cmNlIChlLmcuIFBDSV9J TlRfeCkuCisJCSAqLworCQlpZiAoaXNyY19iaXRtYXAgJiAoMVVMTCA8PCBt YXAtPmludHNyYykpCisJCQljb250aW51ZTsKKwkJc2JfZGlzYWJsZV9pbnRz cmMobWFwLT5pbnRzcmMpOworCQlpc3JjX2JpdG1hcCB8PSAxVUxMIDw8IG1h cC0+aW50c3JjOworCX0KK30KKworc3RhdGljIHZvaWQKK3NiX3VubWFza19m dW5jKHN0cnVjdCBpbnRzcmMgKmFyZykKK3sKKwlzdHJ1Y3Qgc2JfaW50bWFw ICptYXA7CisJc3RydWN0IHNiX2ludHNyYyAqc2JfaXNyYzsKKwl1aW50NjRf dCBpc3JjX2JpdG1hcDsKKwlyZWdpc3Rlcl90IHNyOworCQorCWlzcmNfYml0 bWFwID0gMDsKKwlzYl9pc3JjID0gKHN0cnVjdCBzYl9pbnRzcmMgKilhcmc7 CisKKwkvKgorCSAqIE1ha2Ugc3VyZSB3ZSBkaXNhYmxlIHRoZSBjcHUgaW50 ZXJydXB0cyB3aGVuIGVuYWJsaW5nIHRoZQorCSAqIGludGVycnVwdCBzb3Vy Y2VzLgorCSAqCisJICogVGhpcyBpcyB0byBwcmV2ZW50IGEgY29uZGl0aW9u IHdoZXJlIHNvbWUgaW50ZXJydXB0IHNvdXJjZXMgaGF2ZQorCSAqIGJlZW4g ZW5hYmxlZCAoYnV0IG5vdCBhbGwpIGFuZCBvbmUgb2YgdGhvc2UgaW50ZXJy dXB0IHNvdXJjZXMKKwkgKiB0cmlnZ2VycyBhbiBpbnRlcnJ1cHQuCisJICoK KwkgKiBJZiBhbnkgb2YgdGhlIGludGVycnVwdCBoYW5kbGVycyBleGVjdXRl cyBpbiBhbiBpdGhyZWFkIHRoZW4KKwkgKiBjcHVfaW50cigpIHdpbGwgcmV0 dXJuIHdpdGggYWxsIGludGVycnVwdCBzb3VyY2VzIGZlZWRpbmcgaW50bwor CSAqIHRoYXQgY3B1IGlycSBtYXNrZWQuIEJ1dCB3aGVuIHRoZSBsb29wIGJl bG93IHBpY2tzIHVwIHdoZXJlIGl0CisJICogbGVmdCBvZmYgaXQgd2lsbCBl bmFibGUgdGhlIHJlbWFpbmluZyBpbnRlcnJ1cHQgc291cmNlcyEhIQorCSAq CisJICogSWYgdGhlIGRpc2FibGUgdGhlIGNwdSBpbnRlcnJ1cHRzIHRoZW4g dGhpcyByYWNlIGRvZXMgbm90IGhhcHBlbi4KKwkgKi8KKwlzciA9IGludHJf ZGlzYWJsZSgpOworCisJU0xJU1RfRk9SRUFDSChtYXAsICZzYl9pc3JjLT5z Yl9pbnRtYXBfaGVhZCwgbmV4dCkgeworCQlpZiAobWFwLT5hY3RpdmUgPT0g MCkKKwkJCWNvbnRpbnVlOworCQkvKgorCQkgKiBJZiB3ZSBoYXZlIGFscmVh ZHkgZW5hYmxlZCB0aGlzIGludGVycnVwdCBzb3VyY2UgdGhlbiBkb24ndAor CQkgKiBkbyBpdCBhZ2Fpbi4gVGhpcyBjYW4gaGFwcGVuIHdoZW4gbXVsdGlw bGUgZGV2aWNlcyBzaGFyZQorCQkgKiBhbiBpbnRlcnJ1cHQgc291cmNlIChl LmcuIFBDSV9JTlRfeCkuCisJCSAqLworCQlpZiAoaXNyY19iaXRtYXAgJiAo MVVMTCA8PCBtYXAtPmludHNyYykpCisJCQljb250aW51ZTsKKwkJc2JfZW5h YmxlX2ludHNyYyhtYXAtPmludHNyYyk7CisJCWlzcmNfYml0bWFwIHw9IDFV TEwgPDwgbWFwLT5pbnRzcmM7CisJfQorCisJaW50cl9yZXN0b3JlKHNyKTsK K30KKworc3RydWN0IHpiYnVzX2RldmluZm8geworCXN0cnVjdCByZXNvdXJj ZV9saXN0IHJlc291cmNlczsKK307CisKK3N0YXRpYyBNQUxMT0NfREVGSU5F KE1fWkJCVVNERVYsICJ6YmJ1c2RldiIsICJ6YmJ1c2RldiIpOworCitzdGF0 aWMgaW50Cit6YmJ1c19wcm9iZShkZXZpY2VfdCBkZXYpCit7CisKKwlkZXZp Y2Vfc2V0X2Rlc2MoZGV2LCAiQnJvYWRjb20vU2lieXRlIFpCYnVzIik7CisJ cmV0dXJuICgwKTsKK30KKworc3RhdGljIGludAoremJidXNfYXR0YWNoKGRl dmljZV90IGRldikKK3sKKwlpbnQgaSwgZXJyb3I7CisJc3RydWN0IGludHNy YyAqaXNyYzsKKworCWlmIChib290dmVyYm9zZSkgeworCQlkZXZpY2VfcHJp bnRmKGRldiwgImF0dGFjaGVkLlxuIik7CisJfQorCisJZm9yIChpID0gMDsg aSA8IE5VTV9IQVJEX0lSUVM7ICsraSkgeworCQlpc3JjID0gJnNiX2ludHNy Y1tpXS5pc3JjOworCQlpc3JjLT5pbnRybnVtID0gaTsKKwkJaXNyYy0+bWFz a19mdW5jID0gc2JfbWFza19mdW5jOworCQlpc3JjLT51bm1hc2tfZnVuYyA9 IHNiX3VubWFza19mdW5jOworCQllcnJvciA9IGNwdV9yZWdpc3Rlcl9oYXJk X2ludHNyYyhpc3JjKTsKKwkJaWYgKGVycm9yKQorCQkJcGFuaWMoIkVycm9y ICVkIHJlZ2lzdGVyaW5nIGludHNyYyAlZCIsIGVycm9yLCBpKTsKKwl9CisJ CisJYnVzX2dlbmVyaWNfcHJvYmUoZGV2KTsKKwlidXNfZW51bWVyYXRlX2hp bnRlZF9jaGlsZHJlbihkZXYpOworCWJ1c19nZW5lcmljX2F0dGFjaChkZXYp OworCisJcmV0dXJuICgwKTsKK30KKworc3RhdGljIHZvaWQKK3piYnVzX2hp bnRlZF9jaGlsZChkZXZpY2VfdCBidXMsIGNvbnN0IGNoYXIgKmRuYW1lLCBp bnQgZHVuaXQpCit7CisJZGV2aWNlX3QgY2hpbGQ7CisJbG9uZyBtYWRkciwg bXNpemU7CisJaW50IGVyciwgaXJxOworCisJaWYgKHJlc291cmNlX2Rpc2Fi bGVkKGRuYW1lLCBkdW5pdCkpCisJCXJldHVybjsKKworCWNoaWxkID0gQlVT X0FERF9DSElMRChidXMsIDAsIGRuYW1lLCBkdW5pdCk7CisJaWYgKGNoaWxk ID09IE5VTEwpIHsKKwkJcGFuaWMoInpiYnVzOiBjb3VsZCBub3QgYWRkIGNo aWxkICVzIHVuaXQgJWRcbiIsIGRuYW1lLCBkdW5pdCk7CisJfQorCisJaWYg KGJvb3R2ZXJib3NlKQorCQlkZXZpY2VfcHJpbnRmKGJ1cywgIkFkZGluZyBo aW50ZWQgY2hpbGQgJXMlZFxuIiwgZG5hbWUsIGR1bml0KTsKKworCS8qCisJ ICogQXNzaWduIGFueSBwcmUtZGVmaW5lZCByZXNvdXJjZXMgdG8gdGhlIGNo aWxkLgorCSAqLworCWlmIChyZXNvdXJjZV9sb25nX3ZhbHVlKGRuYW1lLCBk dW5pdCwgIm1zaXplIiwgJm1zaXplKSA9PSAwICYmCisJICAgIHJlc291cmNl X2xvbmdfdmFsdWUoZG5hbWUsIGR1bml0LCAibWFkZHIiLCAmbWFkZHIpID09 IDApIHsKKwkJaWYgKGJvb3R2ZXJib3NlKSB7CisJCQlkZXZpY2VfcHJpbnRm KGJ1cywgIkFzc2lnbmluZyBtZW1vcnkgcmVzb3VyY2UgIgorCQkJCQkgICAi MHglMGx4LyVsZCB0byBjaGlsZCAlcyVkXG4iLAorCQkJCQkgICBtYWRkciwg bXNpemUsIGRuYW1lLCBkdW5pdCk7CisJCX0KKwkJZXJyID0gYnVzX3NldF9y ZXNvdXJjZShjaGlsZCwgU1lTX1JFU19NRU1PUlksIDAsIG1hZGRyLCBtc2l6 ZSk7CisJCWlmIChlcnIpIHsKKwkJCWRldmljZV9wcmludGYoYnVzLCAiVW5h YmxlIHRvIHNldCBtZW1vcnkgcmVzb3VyY2UgIgorCQkJCQkgICAiMHglMGx4 LyVsZCBmb3IgY2hpbGQgJXMlZDogJWRcbiIsCisJCQkJCSAgIG1hZGRyLCBt c2l6ZSwgZG5hbWUsIGR1bml0LCBlcnIpOworCQl9CisJfQorCisJaWYgKHJl c291cmNlX2ludF92YWx1ZShkbmFtZSwgZHVuaXQsICJpcnEiLCAmaXJxKSA9 PSAwKSB7CisJCWlmIChib290dmVyYm9zZSkgeworCQkJZGV2aWNlX3ByaW50 ZihidXMsICJBc3NpZ25pbmcgaXJxIHJlc291cmNlICVkIHRvICIKKwkJCQkJ ICAgImNoaWxkICVzJWRcbiIsIGlycSwgZG5hbWUsIGR1bml0KTsKKwkJfQor CQllcnIgPSBidXNfc2V0X3Jlc291cmNlKGNoaWxkLCBTWVNfUkVTX0lSUSwg MCwgaXJxLCAxKTsKKwkJaWYgKGVycikgeworCQkJZGV2aWNlX3ByaW50Zihi dXMsICJVbmFibGUgdG8gc2V0IGlycSByZXNvdXJjZSAlZCIKKwkJCQkJICAg ImZvciBjaGlsZCAlcyVkOiAlZFxuIiwKKwkJCQkJICAgaXJxLCBkbmFtZSwg ZHVuaXQsIGVycik7CisJCX0KKwl9Cit9CisKK3N0YXRpYyBzdHJ1Y3QgcmVz b3VyY2UgKgoremJidXNfYWxsb2NfcmVzb3VyY2UoZGV2aWNlX3QgYnVzLCBk ZXZpY2VfdCBjaGlsZCwgaW50IHR5cGUsIGludCAqcmlkLAorCQkgICAgIHVf bG9uZyBzdGFydCwgdV9sb25nIGVuZCwgdV9sb25nIGNvdW50LCB1X2ludCBm bGFncykKK3sKKwlzdHJ1Y3QgcmVzb3VyY2UgKnJlczsKKwlpbnQgaW50cm51 bSwgaW50c3JjLCBpc2RlZmF1bHQ7CisJc3RydWN0IHJlc291cmNlX2xpc3Qg KnJsOworCXN0cnVjdCByZXNvdXJjZV9saXN0X2VudHJ5ICpybGU7CisJc3Ry dWN0IHpiYnVzX2RldmluZm8gKmRpbmZvOworCisJaXNkZWZhdWx0ID0gKHN0 YXJ0ID09IDBVTCAmJiBlbmQgPT0gfjBVTCAmJiBjb3VudCA9PSAxKTsKKwor CS8qCisJICogT3VyIGRpcmVjdCBjaGlsZCBpcyBhc2tpbmcgZm9yIGEgZGVm YXVsdCByZXNvdXJjZSBhbGxvY2F0aW9uLgorCSAqLworCWlmIChkZXZpY2Vf Z2V0X3BhcmVudChjaGlsZCkgPT0gYnVzKSB7CisJCWRpbmZvID0gZGV2aWNl X2dldF9pdmFycyhjaGlsZCk7CisJCXJsID0gJmRpbmZvLT5yZXNvdXJjZXM7 CisJCXJsZSA9IHJlc291cmNlX2xpc3RfZmluZChybCwgdHlwZSwgKnJpZCk7 CisJCWlmIChybGUpIHsKKwkJCWlmIChybGUtPnJlcykKKwkJCQlwYW5pYygi emJidXNfYWxsb2NfcmVzb3VyY2U6IHJlc291cmNlIGlzIGJ1c3kiKTsKKwkJ CWlmIChpc2RlZmF1bHQpIHsKKwkJCQlzdGFydCA9IHJsZS0+c3RhcnQ7CisJ CQkJY291bnQgPSB1bG1heChjb3VudCwgcmxlLT5jb3VudCk7CisJCQkJZW5k ID0gdWxtYXgocmxlLT5lbmQsIHN0YXJ0ICsgY291bnQgLSAxKTsKKwkJCX0K KwkJfSBlbHNlIHsKKwkJCWlmIChpc2RlZmF1bHQpIHsKKwkJCQkvKgorCQkJ CSAqIE91ciBjaGlsZCBpcyByZXF1ZXN0aW5nIGEgZGVmYXVsdAorCQkJCSAq IHJlc291cmNlIGFsbG9jYXRpb24gYnV0IHdlIGRvbid0IGhhdmUgdGhlCisJ CQkJICogJ3R5cGUvcmlkJyB0dXBsZSBpbiB0aGUgcmVzb3VyY2UgbGlzdC4K KwkJCQkgKgorCQkJCSAqIFdlIGhhdmUgdG8gZmFpbCB0aGUgcmVzb3VyY2Ug YWxsb2NhdGlvbi4KKwkJCQkgKi8KKwkJCQlyZXR1cm4gKE5VTEwpOworCQkJ fSBlbHNlIHsKKwkJCQkvKgorCQkJCSAqIFRoZSBjaGlsZCBpcyByZXF1ZXN0 aW5nIGEgbm9uLWRlZmF1bHQKKwkJCQkgKiByZXNvdXJjZS4gV2UganVzdCBw YXNzIHRoZSByZXF1ZXN0IHVwCisJCQkJICogdG8gb3VyIHBhcmVudC4gSWYg dGhlIHJlc291cmNlIGFsbG9jYXRpb24KKwkJCQkgKiBzdWNjZWVkcyB3ZSB3 aWxsIGNyZWF0ZSBhIHJlc291cmNlIGxpc3QKKwkJCQkgKiBlbnRyeSBjb3Jy ZXNwb25kaW5nIHRvIHRoYXQgcmVzb3VyY2UuCisJCQkJICovCisJCQl9CisJ CX0KKwl9IGVsc2UgeworCQlybCA9IE5VTEw7CisJCXJsZSA9IE5VTEw7CisJ fQorCisJLyoKKwkgKiBuZXh1cyBkb2Vzbid0IGtub3cgYWJvdXQgdGhlIGlu dGVycnVwdCBtYXBwZXIgYW5kIG9ubHkgd2FudHMgdG8KKwkgKiBzZWUgdGhl IGhhcmQgaXJxIG51bWJlcnMgWzAtNl0uIFdlIHRyYW5zbGF0ZSBmcm9tIHRo ZSBpbnRlcnJ1cHQKKwkgKiBzb3VyY2UgcHJlc2VudGVkIHRvIHRoZSBtYXBw ZXIgdG8gdGhlIGludGVycnVwdCBudW1iZXIgcHJlc2VudGVkCisJICogdG8g dGhlIGNwdS4KKwkgKi8KKwlpZiAoKGNvdW50ID09IDEpICYmICh0eXBlID09 IFNZU19SRVNfSVJRKSkgeworCQlpbnRzcmMgPSBzdGFydDsKKwkJaW50cm51 bSA9IHNiX3JvdXRlX2ludHNyYyhpbnRzcmMpOworCQlzdGFydCA9IGVuZCA9 IGludHJudW07CisJfSBlbHNlIHsKKwkJaW50c3JjID0gLTE7CQkvKiBzYXRp c2Z5IGdjYyAqLworCQlpbnRybnVtID0gLTE7CisJfQorCisJcmVzID0gYnVz X2dlbmVyaWNfYWxsb2NfcmVzb3VyY2UoYnVzLCBjaGlsZCwgdHlwZSwgcmlk LAorIAkJCQkJIHN0YXJ0LCBlbmQsIGNvdW50LCBmbGFncyk7CisKKwkvKgor CSAqIEtlZXAgdHJhY2sgb2YgdGhlIGlucHV0IGludG8gdGhlIGludGVycnVw dCBtYXBwZXIgdGhhdCBtYXBzCisJICogdG8gdGhlIHJlc291cmNlIGFsbG9j YXRlZCBieSAnY2hpbGQnIHdpdGggcmVzb3VyY2UgaWQgJ3JpZCcuCisJICoK KwkgKiBJZiB3ZSBkb24ndCByZWNvcmQgdGhlIG1hcHBpbmcgaGVyZSB0aGVu IHdlIHdvbid0IGJlIGFibGUgdG8KKwkgKiBsb2NhdGUgdGhlIGludGVycnVw dCBzb3VyY2Ugd2hlbiBidXNfc2V0dXBfaW50cihjaGlsZCxyaWQpIGlzCisJ ICogY2FsbGVkLgorCSAqLworCWlmIChyZXMgIT0gTlVMTCAmJiBpbnRybnVt ICE9IC0xKQorCQlzYl9pbnRtYXBfYWRkKGludHJudW0sIGNoaWxkLCBybWFu X2dldF9yaWQocmVzKSwgaW50c3JjKTsKKworCS8qCisJICogSWYgYSBub24t ZGVmYXVsdCByZXNvdXJjZSBhbGxvY2F0aW9uIGJ5IG91ciBjaGlsZCB3YXMg c3VjY2Vzc2Z1bAorCSAqIHRoZW4ga2VlcCB0cmFjayBvZiB0aGUgcmVzb3Vy Y2UgaW4gdGhlIHJlc291cmNlIGxpc3QgYXNzb2NpYXRlZAorCSAqIHdpdGgg dGhlIGNoaWxkLgorCSAqLworCWlmIChyZXMgIT0gTlVMTCAmJiBybGUgPT0g TlVMTCAmJiBkZXZpY2VfZ2V0X3BhcmVudChjaGlsZCkgPT0gYnVzKSB7CisJ CXJlc291cmNlX2xpc3RfYWRkKHJsLCB0eXBlLCAqcmlkLCBzdGFydCwgZW5k LCBjb3VudCk7CisJCXJsZSA9IHJlc291cmNlX2xpc3RfZmluZChybCwgdHlw ZSwgKnJpZCk7CisJCWlmIChybGUgPT0gTlVMTCkKKwkJCXBhbmljKCJ6YmJ1 c19hbGxvY19yZXNvdXJjZTogY2Fubm90IGZpbmQgcmVzb3VyY2UiKTsKKwl9 CisKKwlpZiAocmxlICE9IE5VTEwpIHsKKwkJS0FTU0VSVChkZXZpY2VfZ2V0 X3BhcmVudChjaGlsZCkgPT0gYnVzLAorCQkJKCJybGUgc2hvdWxkIGJlIE5V TEwgZm9yIHBhc3N0aHJ1IGRldmljZSIpKTsKKwkJcmxlLT5yZXMgPSByZXM7 CisJCWlmIChybGUtPnJlcykgeworCQkJcmxlLT5zdGFydCA9IHJtYW5fZ2V0 X3N0YXJ0KHJsZS0+cmVzKTsKKwkJCXJsZS0+ZW5kID0gcm1hbl9nZXRfZW5k KHJsZS0+cmVzKTsKKwkJCXJsZS0+Y291bnQgPSBjb3VudDsKKwkJfQorCX0K KworCXJldHVybiAocmVzKTsKK30KKworc3RhdGljIGludAoremJidXNfc2V0 dXBfaW50cihkZXZpY2VfdCBkZXYsIGRldmljZV90IGNoaWxkLCBzdHJ1Y3Qg cmVzb3VyY2UgKmlycSwgaW50IGZsYWdzLAorCQkgZHJpdmVyX2ZpbHRlcl90 ICpmaWx0ZXIsIGRyaXZlcl9pbnRyX3QgKmludHIsIHZvaWQgKmFyZywgCisJ CSB2b2lkICoqY29va2llcCkKK3sKKwlpbnQgZXJyb3I7CisKKwllcnJvciA9 IGJ1c19nZW5lcmljX3NldHVwX2ludHIoZGV2LCBjaGlsZCwgaXJxLCBmbGFn cywKKwkJCQkgICAgICAgZmlsdGVyLCBpbnRyLCBhcmcsIGNvb2tpZXApOwor CWlmIChlcnJvciA9PSAwKQorCQlzYl9pbnRtYXBfYWN0aXZhdGUocm1hbl9n ZXRfc3RhcnQoaXJxKSwgY2hpbGQsCisJCQkJICAgcm1hbl9nZXRfcmlkKGly cSkpOworCisJcmV0dXJuIChlcnJvcik7Cit9CisKK3N0YXRpYyBkZXZpY2Vf dAoremJidXNfYWRkX2NoaWxkKGRldmljZV90IGJ1cywgaW50IG9yZGVyLCBj b25zdCBjaGFyICpuYW1lLCBpbnQgdW5pdCkKK3sKKwlkZXZpY2VfdCBjaGls ZDsKKwlzdHJ1Y3QgemJidXNfZGV2aW5mbyAqZGluZm87CisKKwljaGlsZCA9 IGRldmljZV9hZGRfY2hpbGRfb3JkZXJlZChidXMsIG9yZGVyLCBuYW1lLCB1 bml0KTsKKwlpZiAoY2hpbGQgIT0gTlVMTCkgeworCQlkaW5mbyA9IG1hbGxv YyhzaXplb2Yoc3RydWN0IHpiYnVzX2RldmluZm8pLCBNX1pCQlVTREVWLAor CQkJICAgICAgIE1fV0FJVE9LIHwgTV9aRVJPKTsKKwkJcmVzb3VyY2VfbGlz dF9pbml0KCZkaW5mby0+cmVzb3VyY2VzKTsKKwkJZGV2aWNlX3NldF9pdmFy cyhjaGlsZCwgZGluZm8pOworCX0KKworCXJldHVybiAoY2hpbGQpOworfQor CitzdGF0aWMgc3RydWN0IHJlc291cmNlX2xpc3QgKgoremJidXNfZ2V0X3Jl c291cmNlX2xpc3QoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCkKK3sK KwlzdHJ1Y3QgemJidXNfZGV2aW5mbyAqZGluZm8gPSBkZXZpY2VfZ2V0X2l2 YXJzKGNoaWxkKTsKKworCXJldHVybiAoJmRpbmZvLT5yZXNvdXJjZXMpOwor fQorCitzdGF0aWMgZGV2aWNlX21ldGhvZF90IHpiYnVzX21ldGhvZHNbXSA9 eworCS8qIERldmljZSBpbnRlcmZhY2UgKi8KKwlERVZNRVRIT0QoZGV2aWNl X3Byb2JlLAkJemJidXNfcHJvYmUpLAorCURFVk1FVEhPRChkZXZpY2VfYXR0 YWNoLAl6YmJ1c19hdHRhY2gpLAorCURFVk1FVEhPRChkZXZpY2VfZGV0YWNo LAlidXNfZ2VuZXJpY19kZXRhY2gpLAorCURFVk1FVEhPRChkZXZpY2Vfc2h1 dGRvd24sCWJ1c19nZW5lcmljX3NodXRkb3duKSwKKwlERVZNRVRIT0QoZGV2 aWNlX3N1c3BlbmQsCWJ1c19nZW5lcmljX3N1c3BlbmQpLAorCURFVk1FVEhP RChkZXZpY2VfcmVzdW1lLAlidXNfZ2VuZXJpY19yZXN1bWUpLAorCisJLyog QnVzIGludGVyZmFjZSAqLworCURFVk1FVEhPRChidXNfYWxsb2NfcmVzb3Vy Y2UsCXpiYnVzX2FsbG9jX3Jlc291cmNlKSwKKwlERVZNRVRIT0QoYnVzX2Fj dGl2YXRlX3Jlc291cmNlLCBidXNfZ2VuZXJpY19hY3RpdmF0ZV9yZXNvdXJj ZSksCisJREVWTUVUSE9EKGJ1c19kZWFjdGl2YXRlX3Jlc291cmNlLCBidXNf Z2VuZXJpY19kZWFjdGl2YXRlX3Jlc291cmNlKSwKKwlERVZNRVRIT0QoYnVz X3JlbGVhc2VfcmVzb3VyY2UsCWJ1c19nZW5lcmljX3JlbGVhc2VfcmVzb3Vy Y2UpLAorCURFVk1FVEhPRChidXNfZ2V0X3Jlc291cmNlX2xpc3QsemJidXNf Z2V0X3Jlc291cmNlX2xpc3QpLAorCURFVk1FVEhPRChidXNfc2V0X3Jlc291 cmNlLAlidXNfZ2VuZXJpY19ybF9zZXRfcmVzb3VyY2UpLAorCURFVk1FVEhP RChidXNfZ2V0X3Jlc291cmNlLAlidXNfZ2VuZXJpY19ybF9nZXRfcmVzb3Vy Y2UpLAorCURFVk1FVEhPRChidXNfZGVsZXRlX3Jlc291cmNlLAlidXNfZ2Vu ZXJpY19ybF9kZWxldGVfcmVzb3VyY2UpLAorCURFVk1FVEhPRChidXNfc2V0 dXBfaW50ciwJemJidXNfc2V0dXBfaW50ciksCisJREVWTUVUSE9EKGJ1c190 ZWFyZG93bl9pbnRyLAlidXNfZ2VuZXJpY190ZWFyZG93bl9pbnRyKSwKKwlE RVZNRVRIT0QoYnVzX2FkZF9jaGlsZCwJemJidXNfYWRkX2NoaWxkKSwKKwlE RVZNRVRIT0QoYnVzX2hpbnRlZF9jaGlsZCwJemJidXNfaGludGVkX2NoaWxk KSwKKwkKKwl7IDAsIDAgfQorfTsKKworc3RhdGljIGRyaXZlcl90IHpiYnVz X2RyaXZlciA9IHsKKwkiemJidXMiLAorCXpiYnVzX21ldGhvZHMKK307CisK K3N0YXRpYyBkZXZjbGFzc190IHpiYnVzX2RldmNsYXNzOworCitEUklWRVJf TU9EVUxFKHpiYnVzLCBuZXh1cywgemJidXNfZHJpdmVyLCB6YmJ1c19kZXZj bGFzcywgMCwgMCk7CmRpZmYgLU51cmQgL3UvbmVlbG5hdHUvcDQvZnJlZWJz ZF9jdXJyZW50L3NyYy9zeXMvbWlwcy9zaWJ5dGUvc2JfemJwY2kuYyAuL3N5 cy9taXBzL3NpYnl0ZS9zYl96YnBjaS5jCi0tLSAvdS9uZWVsbmF0dS9wNC9m cmVlYnNkX2N1cnJlbnQvc3JjL3N5cy9taXBzL3NpYnl0ZS9zYl96YnBjaS5j CTE5NjktMTItMzEgMTY6MDA6MDAuMDAwMDAwMDAwIC0wODAwCisrKyAuL3N5 cy9taXBzL3NpYnl0ZS9zYl96YnBjaS5jCTIwMDktMDYtMTMgMTI6MzE6NTIu MDQyMzI4MDAwIC0wNzAwCkBAIC0wLDAgKzEsMjgzIEBACisvKi0KKyAqIENv cHlyaWdodCAoYykgMjAwOSBOZWVsa2FudGggTmF0dQorICogQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1 Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0 ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgQU5E IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBP UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF CisgKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBB VVRIT1IgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBE SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB UlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERBTUFHRVMgKElOQ0xVRElORywg QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF IEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VW RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBMSUFCSUxJVFksIE9SIFRP UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO RyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisg KiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+ CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL2tlcm5l bC5oPgorI2luY2x1ZGUgPHN5cy9zeXN0bS5oPgorI2luY2x1ZGUgPHN5cy9t b2R1bGUuaD4KKyNpbmNsdWRlIDxzeXMvYnVzLmg+CisjaW5jbHVkZSA8c3lz L3BjcHUuaD4KKyNpbmNsdWRlIDxzeXMvc21wLmg+CisKKyNpbmNsdWRlIDx2 bS92bS5oPgorI2luY2x1ZGUgPHZtL3ZtX3BhcmFtLmg+CisjaW5jbHVkZSA8 dm0vdm1fa2Vybi5oPgorI2luY2x1ZGUgPHZtL3ZtX2V4dGVybi5oPgorI2lu Y2x1ZGUgPHZtL3BtYXAuaD4KKworI2luY2x1ZGUgPGRldi9wY2kvcGNpdmFy Lmg+CisjaW5jbHVkZSA8ZGV2L3BjaS9wY2liX3ByaXZhdGUuaD4KKworI2lu Y2x1ZGUgPG1hY2hpbmUvcG1hcC5oPgorI2luY2x1ZGUgPG1hY2hpbmUvcmVz b3VyY2UuaD4KKworI2luY2x1ZGUgInBjaWJfaWYuaCIKKworI2luY2x1ZGUg InNiX3NjZC5oIgorCitfX0ZCU0RJRCgiJEZyZWVCU0QkIik7CisKK3N0YXRp YyBzdHJ1Y3QgeworCXZtX29mZnNldF90IHZhZGRyOworCXZtX3BhZGRyX3Qg IHBhZGRyOworfSB6YnBjaV9jb25maWdfc3BhY2VbTUFYQ1BVXTsKKworc3Rh dGljIGNvbnN0IHZtX3BhZGRyX3QgQ0ZHX1BBRERSX0JBU0UgPSAweEZFMDAw MDAwOworCQorc3RhdGljIGludAoremJwY2lfcHJvYmUoZGV2aWNlX3QgZGV2 KQoreworCQorCWRldmljZV9zZXRfZGVzYyhkZXYsICJCcm9hZGNvbS9TaWJ5 dGUgUENJIEkvTyBCcmlkZ2UiKTsKKwlyZXR1cm4gKDApOworfQorCitzdGF0 aWMgaW50Cit6YnBjaV9hdHRhY2goZGV2aWNlX3QgZGV2KQoreworCWludCBu LCByaWQsIHNpemU7CisJdm1fb2Zmc2V0X3QgdmE7CisJc3RydWN0IHJlc291 cmNlICpyZXM7CisKKwkvKgorCSAqIFJlc2VydmUgdGhlIHRoZSBwaHlzaWNh bCBtZW1vcnkgdGhhdCBpcyB1c2VkIHRvIHJlYWQvd3JpdGUgdG8gdGhlCisJ ICogcGNpIGNvbmZpZyBzcGFjZSBidXQgZG9uJ3QgYWN0aXZhdGUgaXQuIFdl IGFyZSB1c2luZyBhIHBhZ2Ugd29ydGgKKwkgKiBvZiBLVkEgYXMgYSB3aW5k b3cgb3ZlciB0aGlzIHJlZ2lvbi4KKwkgKi8KKwlyaWQgPSAwOworCXNpemUg PSAoUENJX0JVU01BWCArIDEpICogKFBDSV9TTE9UTUFYICsgMSkgKiAoUENJ X0ZVTkNNQVggKyAxKSAqIDI1NjsKKwlyZXMgPSBidXNfYWxsb2NfcmVzb3Vy Y2UoZGV2LCBTWVNfUkVTX01FTU9SWSwgJnJpZCwgQ0ZHX1BBRERSX0JBU0Us CisJCQkJIENGR19QQUREUl9CQVNFICsgc2l6ZSAtIDEsIHNpemUsIDApOwor CWlmIChyZXMgPT0gTlVMTCkgeworCQlwYW5pYygiQ2Fubm90IGFsbG9jYXRl IHJlc291cmNlIGZvciBjb25maWcgc3BhY2UgYWNjZXNzZXMuIik7CisJfQor CisJLyoKKwkgKiBBbGxvY2F0ZSBLVkEgZm9yIGFjY2Vzc2luZyBQQ0kgY29u ZmlnIHNwYWNlLgorCSAqLworCXZhID0ga21lbV9hbGxvY19ub2ZhdWx0KGtl cm5lbF9tYXAsIFBBR0VfU0laRSAqIG1wX25jcHVzKTsKKwlpZiAodmEgPT0g MCkgeworCQlkZXZpY2VfcHJpbnRmKGRldiwgIkNhbm5vdCBhbGxvY2F0ZSB2 aXJ0dWFsIGFkZHJlc3NlcyBmb3IgIgorCQkJCSAgICJjb25maWcgc3BhY2Ug YWNjZXNzLlxuIik7CisJCXJldHVybiAoRU5PTUVNKTsKKwl9CisKKwlmb3Ig KG4gPSAwOyBuIDwgbXBfbmNwdXM7ICsrbikgeworCQl6YnBjaV9jb25maWdf c3BhY2Vbbl0udmFkZHIgPSB2YSArIG4gKiBQQUdFX1NJWkU7CisJfQorCisJ LyoKKwkgKiBTaWJ5dGUgaGFzIHRoZSBQQ0kgYnVzIGhpZXJhcmNoeSByb290 ZWQgYXQgYnVzIDAgYW5kIEhULVBDSQorCSAqIGhpZXJhcmNoeSByb290ZWQg YXQgYnVzIDEuCisJICovCisJaWYgKGRldmljZV9hZGRfY2hpbGQoZGV2LCAi cGNpIiwgMCkgPT0gTlVMTCkgeworCQlwYW5pYygiemJwY2lfYXR0YWNoOiBj b3VsZCBub3QgYWRkIHBjaSBidXMgMC5cbiIpOworCX0KKworCWlmIChkZXZp Y2VfYWRkX2NoaWxkKGRldiwgInBjaSIsIDEpID09IE5VTEwpIHsKKwkJcGFu aWMoInpicGNpX2F0dGFjaDogY291bGQgbm90IGFkZCBwY2kgYnVzIDEuXG4i KTsKKwl9CisKKwlpZiAoYm9vdHZlcmJvc2UpIHsKKwkJZGV2aWNlX3ByaW50 ZihkZXYsICJhdHRhY2hlZC5cbiIpOworCX0KKworCXJldHVybiAoYnVzX2dl bmVyaWNfYXR0YWNoKGRldikpOworfQorCitzdGF0aWMgaW50Cit6YnBjaV9y ZWFkX2l2YXIoZGV2aWNlX3QgZGV2LCBkZXZpY2VfdCBjaGlsZCwgaW50IHdo aWNoLCB1aW50cHRyX3QgKnJlc3VsdCkKK3sKKwkKKwlzd2l0Y2ggKHdoaWNo KSB7CisJY2FzZSBQQ0lCX0lWQVJfRE9NQUlOOgorCQkqcmVzdWx0ID0gMDsJ CQkJLyogc2luZ2xlIFBDSSBkb21haW4gKi8KKwkJcmV0dXJuICgwKTsKKwlj YXNlIFBDSUJfSVZBUl9CVVM6CisJCSpyZXN1bHQgPSBkZXZpY2VfZ2V0X3Vu aXQoY2hpbGQpOwkvKiBQQ0kgYnVzIDAgb3IgMSAqLworCQlyZXR1cm4gKDAp OworCWRlZmF1bHQ6CisJCXJldHVybiAoRU5PRU5UKTsKKwl9Cit9CisKKy8q CisgKiBXZSByZWx5IG9uIHRoZSBDRkUgdG8gaGF2ZSBjb25maWd1cmVkIHRo ZSBpbnRsaW5lIGNvcnJlY3RseSB0byBwb2ludCB0bworICogb25lIG9mIFBD SS1BL1BDSS1CL1BDSS1DL1BDSS1EIGluIHRoZSBpbnRlcnVwdCBtYXBwZXIu CisgKi8KK3N0YXRpYyBpbnQKK3picGNpX3JvdXRlX2ludGVycnVwdChkZXZp Y2VfdCBwY2liLCBkZXZpY2VfdCBkZXYsIGludCBwaW4pCit7CisKKwlyZXR1 cm4gKFBDSV9JTlZBTElEX0lSUSk7Cit9CisKKy8qCisgKiBUaGlzIGZ1bmN0 aW9uIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBpbiBhIGNyaXRpY2FsIHNl Y3Rpb24gc2luY2UgaXQKKyAqIGNoYW5nZXMgdGhlIHBlci1jcHUgcGNpIGNv bmZpZyBzcGFjZSB2YS10by1wYSBtYXBwaW5ncy4KKyAqLworc3RhdGljIHZt X29mZnNldF90Cit6YnBjaV9jb25maWdfc3BhY2VfdmEoaW50IGJ1cywgaW50 IHNsb3QsIGludCBmdW5jLCBpbnQgcmVnLCBpbnQgYnl0ZXMpCit7CisJaW50 IGNwdTsKKwl2bV9vZmZzZXRfdCB2YV9wYWdlOworCXZtX3BhZGRyX3QgcGEs IHBhX3BhZ2U7CisKKwlpZiAoYnVzIDw9IFBDSV9CVVNNQVggJiYgc2xvdCA8 PSBQQ0lfU0xPVE1BWCAmJiBmdW5jIDw9IFBDSV9GVU5DTUFYICYmCisJICAg IHJlZyA8PSBQQ0lfUkVHTUFYICYmIChieXRlcyA9PSAxIHx8IGJ5dGVzID09 IDIgfHwgYnl0ZXMgPT0gNCkgJiYKKwkgICAgKChyZWcgJiAoYnl0ZXMgLSAx KSkgPT0gMCkpIHsKKwkJY3B1ID0gUENQVV9HRVQoY3B1aWQpOworCQl2YV9w YWdlID0gemJwY2lfY29uZmlnX3NwYWNlW2NwdV0udmFkZHI7CisJCXBhID0g Q0ZHX1BBRERSX0JBU0UgfAorCQkgICAgIChidXMgPDwgMTYpIHwgKHNsb3Qg PDwgMTEpIHwgKGZ1bmMgPDwgOCkgfCByZWc7CisJCXBhX3BhZ2UgPSBwYSAm IH4oUEFHRV9TSVpFIC0gMSk7CisJCWlmICh6YnBjaV9jb25maWdfc3BhY2Vb Y3B1XS5wYWRkciAhPSBwYV9wYWdlKSB7CisJCQlwbWFwX2tyZW1vdmUodmFf cGFnZSk7CisJCQlwbWFwX2tlbnRlcih2YV9wYWdlLCBwYV9wYWdlKTsKKwkJ CXpicGNpX2NvbmZpZ19zcGFjZVtjcHVdLnBhZGRyID0gcGFfcGFnZTsKKwkJ fQorCQlyZXR1cm4gKHZhX3BhZ2UgKyAocGEgLSBwYV9wYWdlKSk7CisJfSBl bHNlIHsKKwkJcmV0dXJuICgwKTsKKwl9Cit9CisKK3N0YXRpYyB1aW50MzJf dAoremJwY2lfcmVhZF9jb25maWcoZGV2aWNlX3QgZGV2LCB1X2ludCBiLCB1 X2ludCBzLCB1X2ludCBmLCB1X2ludCByLCBpbnQgdykKK3sKKwl1aW50MzJf dCBkYXRhOworCXZtX29mZnNldF90IHZhOworCisJY3JpdGljYWxfZW50ZXIo KTsKKworCXZhID0gemJwY2lfY29uZmlnX3NwYWNlX3ZhKGIsIHMsIGYsIHIs IHcpOworCWlmICh2YSA9PSAwKSB7CisJCXBhbmljKCJ6YnBjaV9yZWFkX2Nv bmZpZzogaW52YWxpZCAlZC8lZC8lZFslZF0gJWRcbiIsCisJCSAgICAgIGIs IHMsIGYsIHIsIHcpOworCX0KKworCXN3aXRjaCAodykgeworCWNhc2UgNDoK KwkJZGF0YSA9ICoodWludDMyX3QgKil2YTsKKwkJYnJlYWs7CisJY2FzZSAy OgorCQlkYXRhID0gKih1aW50MTZfdCAqKXZhOworCQlicmVhazsKKwljYXNl IDE6CisJCWRhdGEgPSAqKHVpbnQ4X3QgKil2YTsKKwkJYnJlYWs7CisJZGVm YXVsdDoKKwkJcGFuaWMoInpicGNpX3JlYWRfY29uZmlnOiBpbnZhbGlkIHdp ZHRoICVkXG4iLCB3KTsKKwl9CisKKwljcml0aWNhbF9leGl0KCk7CisKKwly ZXR1cm4gKGRhdGEpOworfQorCitzdGF0aWMgdm9pZAoremJwY2lfd3JpdGVf Y29uZmlnKGRldmljZV90IGQsIHVfaW50IGIsIHVfaW50IHMsIHVfaW50IGYs IHVfaW50IHIsCisJCSAgIHVpbnQzMl90IGRhdGEsIGludCB3KQoreworCXZt X29mZnNldF90IHZhOworCisJY3JpdGljYWxfZW50ZXIoKTsKKworCXZhID0g emJwY2lfY29uZmlnX3NwYWNlX3ZhKGIsIHMsIGYsIHIsIHcpOworCWlmICh2 YSA9PSAwKSB7CisJCXBhbmljKCJ6YnBjaV93cml0ZV9jb25maWc6IGludmFs aWQgJWQvJWQvJWRbJWRdICVkLyVkXG4iLAorCQkgICAgICBiLCBzLCBmLCBy LCBkYXRhLCB3KTsKKwl9CisKKwlzd2l0Y2ggKHcpIHsKKwljYXNlIDQ6CisJ CSoodWludDMyX3QgKil2YSA9IGRhdGE7CisJCWJyZWFrOworCWNhc2UgMjoK KwkJKih1aW50MTZfdCAqKXZhID0gZGF0YTsKKwkJYnJlYWs7CisJY2FzZSAx OgorCQkqKHVpbnQ4X3QgKil2YSA9IGRhdGE7CisJCWJyZWFrOworCWRlZmF1 bHQ6CisJCXBhbmljKCJ6YnBjaV93cml0ZV9jb25maWc6IGludmFsaWQgd2lk dGggJWRcbiIsIHcpOworCX0KKworCWNyaXRpY2FsX2V4aXQoKTsKK30KKwor c3RhdGljIGRldmljZV9tZXRob2RfdCB6YnBjaV9tZXRob2RzW10gPXsKKwkv KiBEZXZpY2UgaW50ZXJmYWNlICovCisJREVWTUVUSE9EKGRldmljZV9wcm9i ZSwJCXpicGNpX3Byb2JlKSwKKwlERVZNRVRIT0QoZGV2aWNlX2F0dGFjaCwJ emJwY2lfYXR0YWNoKSwKKwlERVZNRVRIT0QoZGV2aWNlX2RldGFjaCwJYnVz X2dlbmVyaWNfZGV0YWNoKSwKKwlERVZNRVRIT0QoZGV2aWNlX3NodXRkb3du LAlidXNfZ2VuZXJpY19zaHV0ZG93biksCisJREVWTUVUSE9EKGRldmljZV9z dXNwZW5kLAlidXNfZ2VuZXJpY19zdXNwZW5kKSwKKwlERVZNRVRIT0QoZGV2 aWNlX3Jlc3VtZSwJYnVzX2dlbmVyaWNfcmVzdW1lKSwKKworCS8qIEJ1cyBp bnRlcmZhY2UgKi8KKwlERVZNRVRIT0QoYnVzX3JlYWRfaXZhciwJemJwY2lf cmVhZF9pdmFyKSwKKwlERVZNRVRIT0QoYnVzX3dyaXRlX2l2YXIsCWJ1c19n ZW5lcmljX3dyaXRlX2l2YXIpLAorCURFVk1FVEhPRChidXNfYWxsb2NfcmVz b3VyY2UsCWJ1c19nZW5lcmljX2FsbG9jX3Jlc291cmNlKSwKKwlERVZNRVRI T0QoYnVzX2FjdGl2YXRlX3Jlc291cmNlLCBidXNfZ2VuZXJpY19hY3RpdmF0 ZV9yZXNvdXJjZSksCisJREVWTUVUSE9EKGJ1c19kZWFjdGl2YXRlX3Jlc291 cmNlLCBidXNfZ2VuZXJpY19kZWFjdGl2YXRlX3Jlc291cmNlKSwKKwlERVZN RVRIT0QoYnVzX3JlbGVhc2VfcmVzb3VyY2UsCWJ1c19nZW5lcmljX3JlbGVh c2VfcmVzb3VyY2UpLAorCURFVk1FVEhPRChidXNfc2V0dXBfaW50ciwJYnVz X2dlbmVyaWNfc2V0dXBfaW50ciksCisJREVWTUVUSE9EKGJ1c190ZWFyZG93 bl9pbnRyLAlidXNfZ2VuZXJpY190ZWFyZG93bl9pbnRyKSwKKwlERVZNRVRI T0QoYnVzX2FkZF9jaGlsZCwJYnVzX2dlbmVyaWNfYWRkX2NoaWxkKSwKKwor CS8qIHBjaWIgaW50ZXJmYWNlICovCisJREVWTUVUSE9EKHBjaWJfbWF4c2xv dHMsCXBjaWJfbWF4c2xvdHMpLAorCURFVk1FVEhPRChwY2liX3JlYWRfY29u ZmlnLAl6YnBjaV9yZWFkX2NvbmZpZyksCisJREVWTUVUSE9EKHBjaWJfd3Jp dGVfY29uZmlnLAl6YnBjaV93cml0ZV9jb25maWcpLAorCURFVk1FVEhPRChw Y2liX3JvdXRlX2ludGVycnVwdCwJemJwY2lfcm91dGVfaW50ZXJydXB0KSwK KwkKKwl7IDAsIDAgfQorfTsKKworLyoKKyAqIFRoZSAiemJwY2kiIGNsYXNz IGluaGVyaXRzIGZyb20gdGhlICJwY2liIiBiYXNlIGNsYXNzLiBUaGVyZWZv cmUgaW4KKyAqIGFkZGl0aW9uIHRvIGRyaXZlcnMgdGhhdCBiZWxvbmcgdG8g dGhlICJ6YnBjaSIgY2xhc3Mgd2Ugd2lsbCBhbHNvCisgKiBjb25zaWRlciBk cml2ZXJzIGJlbG9uZ2luZyB0byB0aGUgInBjaWIiIHdoZW4gcHJvYmluZyBj aGlsZHJlbiBvZgorICogInpicGNpIi4KKyAqLworREVDTEFSRV9DTEFTUyhw Y2liX2RyaXZlcik7CitERUZJTkVfQ0xBU1NfMSh6YnBjaSwgemJwY2lfZHJp dmVyLCB6YnBjaV9tZXRob2RzLCAwLCBwY2liX2RyaXZlcik7CisKK3N0YXRp YyBkZXZjbGFzc190IHpicGNpX2RldmNsYXNzOworCitEUklWRVJfTU9EVUxF KHpicGNpLCB6YmJ1cywgemJwY2lfZHJpdmVyLCB6YnBjaV9kZXZjbGFzcywg MCwgMCk7Cg== --0-303183881-1245214347=:49433--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?25885.49433.qm>