From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S271010AbTGPUqg (ORCPT ); Wed, 16 Jul 2003 16:46:36 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S271079AbTGPUqg (ORCPT ); Wed, 16 Jul 2003 16:46:36 -0400 Received: from mta05-svc.ntlworld.com ([62.253.162.45]:20938 "EHLO mta05-svc.ntlworld.com") by vger.kernel.org with ESMTP id S271010AbTGPUoM (ORCPT ); Wed, 16 Jul 2003 16:44:12 -0400 X-Originating-IP: [62.254.0.11] From: To: linux-kernel@vger.kernel.org Subject: [PATCH] BadRAM for 2.6.0-test* Date: Wed, 16 Jul 2003 20:59:30 +0000 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=____1058389170363_DLbs9MDHyX" Message-Id: <20030716205903.CABY28183.mta05-svc.ntlworld.com@[10.137.100.71]> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a multi-part message in MIME format. ------=____1058389170363_DLbs9MDHyX Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Okay another try at a BadRAM patch, this time it includes all the needed patches ;-) I am sorry to anybody who tried the previous patch; it was incomplete. I delayed resending due to encountering instability that may have been due to the patch. Having continued testing I think it was instablitiy in the mainline kernel since I suffered also oopses without the patch. Things seem to have settled down a little now I having been running stable for a couple of days, but I make no guanantees that there are not oops causing bugs lurking... Anybody with a "BadRAM" system who wants to give 2.6-test a whirl can now do so... Please report any any problems encounted with this patch to lkml and CC to me. Thanks. __ Steve ----------------------------------------- Email provided by http://www.ntlhome.com/ ------=____1058389170363_DLbs9MDHyX Content-Transfer-Encoding: base64 Content-Type: application/octet-stream; name="BadRAM-2.6.0-test1-ac1.patch" Content-Disposition: inline; filename="BadRAM-2.6.0-test1-ac1.patch" ZGlmZiAtdXJOIGxpbnV4LTIuNi4wLXRlc3QxLWFjMS9DUkVESVRTIGxpbnV4LTIuNi4wLXRl c3QxLWFjMS1CYWRSQU0vQ1JFRElUUwotLS0gbGludXgtMi42LjAtdGVzdDEtYWMxL0NSRURJ VFMJMjAwMy0wNy0xNiAxNzo1NToxNy4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi4w LXRlc3QxLWFjMS1CYWRSQU0vQ1JFRElUUwkyMDAzLTA3LTE1IDAyOjU2OjI2LjAwMDAwMDAw MCArMDEwMApAQCAtMjM2NSw2ICsyMzY1LDEyIEBACiBTOiA1NTEyNyBNYWluegogUzogR2Vy bWFueQogCitOOiBTdGV2ZW4gTmV3YnVyeQorRTogc19qX25ld2J1cnlAeWFob28uY28udWsK K0Q6IEZvcndhcmQgcG9ydGVkIEJhZFJBTSBwYXRjaCB0byAyLjUuNzMgZnJvbSAyLjQuMjAK K1M6IERlcmJ5CitTOiBVbml0ZWQgS2luZ2RvbQorCiBOOiBEYXZpZCBDLiBOaWVtaQogRTog bmllbWlAdHV4Lm9yZwogVzogaHR0cDovL3d3dy50dXgub3JnL35uaWVtaS8KQEAgLTI2MDEs NiArMjYwNywxNCBAQAogUzogTWFsdmVybiwgUGVubnN5bHZhbmlhIDE5MzU1CiBTOiBVU0EK IAorTjogUmljayB2YW4gUmVpbgorRTogdmFucmVpbkBjcy51dHdlbnRlLm5sCitXOiBodHRw Oi8vd3d3LmNzLnV0d2VudGUubmwvfnZhbnJlaW4KK0Q6IE1lbW9yeSwgdGhlIEJhZFJBTSBz dWJzeXN0ZW0gZGVhbGluZyB3aXRoIHN0YXRpY2FsbHkgY2hhbGxhbmdlZCBSQU0gbW9kdWxl cy4KK1M6IEJpbm5lbmVzIDY3CitTOiA5NDA3IENYIEFzc2VuCitTOiBUaGUgTmV0aGVybGFu ZHMKKwogTjogU3RlZmFuIFJlaW5hdWVyCiBFOiBzdGVwYW5AbGludXguZGUKIFc6IGh0dHA6 Ly93d3cuZnJlaWJ1cmcubGludXguZGUvfnN0ZXBhbi8KQEAgLTI4MTksNiArMjgzMywxMyBA QAogRToKIEQ6IE1hY2ludG9zaCBJREUgRHJpdmVyCiAKK046IE5pY28gU2NobW9pZ2wKK0U6 IG5pY29Ad3JpdGVtYWlsLmNvbQorVzogaHR0cDovL3dlYnJ1bS51bmktbWFubmhlaW0uZGUv bWF0aC9zY2htb2lnbC9saW51eC8KK0Q6IE1pZ3JhdGlvbiBvZiBCYWRSQU0gcGF0Y2ggdG8g Mi40LjQgc2VyaWVzICh3aXRoIFJpY2sgdmFuIFJlaW4pCitTOiBNYW5uaGVpbSwgQlcsIEdl cm1hbnkKK1A6IDIwNDcvMzhGQzlFMDMgIDVEIERCIDA5IEU0IDNGIEYzIENEIDA5IDc1IDU5 IC0gMTEgMTcgOUMgMDMgNDYgRTMgMzggRkMgOUUgMDMKKwogTjogUGV0ZXIgRGUgU2Nocmlq dmVyCiBFOiBzdHVkMTFAY2M0Lmt1bGV1dmVuLmFjLmJlCiBEOiBNaXRzdW1pIENELVJPTSBk cml2ZXIgcGF0Y2hlcyBNYXJjaCB2ZXJzaW9uCmRpZmYgLXVyTiBsaW51eC0yLjYuMC10ZXN0 MS1hYzEvRG9jdW1lbnRhdGlvbi9iYWRyYW0udHh0IGxpbnV4LTIuNi4wLXRlc3QxLWFjMS1C YWRSQU0vRG9jdW1lbnRhdGlvbi9iYWRyYW0udHh0Ci0tLSBsaW51eC0yLjYuMC10ZXN0MS1h YzEvRG9jdW1lbnRhdGlvbi9iYWRyYW0udHh0CTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAw MDAwICswMTAwCisrKyBsaW51eC0yLjYuMC10ZXN0MS1hYzEtQmFkUkFNL0RvY3VtZW50YXRp b24vYmFkcmFtLnR4dAkyMDAzLTA3LTE1IDAyOjU2OjI2LjAwMDAwMDAwMCArMDEwMApAQCAt MCwwICsxLDI2NiBAQAorSU5GT1JNQVRJT04gT04gVVNJTkcgQkFEIFJBTSBNT0RVTEVTCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworSW50cm9kdWN0aW9uCisJ UkFNIGlzIGdldHRpbmcgc21hbGxlciBhbmQgc21hbGxlciwgYW5kIGFzIGEgcmVzdWx0LCBh bHNvIG1vcmUgYW5kIG1vcmUKKwl2dWxuZXJhYmxlLiBUaGlzIG1ha2VzIHRoZSBtYW51ZmFj dHVyaW5nIG9mIGhhcmR3YXJlIG1vcmUgZXhwZW5zaXZlLAorCXNpbmNlIGFuIGV4Y2Vzc2l2 ZSBhbW91bnQgb2YgUkFNIGNoaXBzIG11c3QgYmUgZGlzY2FyZGVkIG9uIGFjY291bnQgb2YK KwlhIHNpbmdsZSBjZWxsIHRoYXQgaXMgd3JvbmcuIFNpbWlsYXJseSwgc3RhdGljIGRpc2No YXJnZSBtYXkgZGFtYWdlIGEKKwlSQU0gbW9kdWxlIGZvcmV2ZXIsIHdoaWNoIGlzIHVzdWFs bHkgcmVtZWRpZWQgYnkgcmVwbGFjaW5nIGl0CisJZW50aXJlbHkuCisKKwlUaGlzIGlzIG5v dCBuZWNlc3NhcnksIGFzIHRoZSBCYWRSQU0gY29kZSBzaG93czogQnkgaW5mb3JtaW5nIHRo ZSBMaW51eAorCWtlcm5lbCB3aGljaCBhZGRyZXNzZXMgaW4gYSBSQU0gYXJlIGRhbWFnZWQs IHRoZSBrZXJuZWwgc2ltcGx5IGF2b2lkcworCWV2ZXIgYWxsb2NhdGluZyBzdWNoIGFkZHJl c3NlcyBidXQgbWFrZXMgYWxsIHRoZSByZXN0IGF2YWlsYWJsZS4KKworUmVhc29ucyBmb3Ig dGhpcyBmZWF0dXJlCisJVGhlcmUgYXJlIG1hbnkgcmVhc29ucyB3aHkgdGhpcyBrZXJuZWwg ZmVhdHVyZSBpcyB1c2VmdWw6CisJLSBDaGlwIG1hbnVmYWN0dXJlIGlzIHJlc291cmNlIGlu dGVuc2l2ZTsgd2FzdGUgbGVzcyBhbmQgc2xlZXAgYmV0dGVyCisJLSBJdCdzIGFub3RoZXIg Y2hhbmNlIHRvIHByb21vdGUgTGludXggYXMgInRoZSBmbGV4aWJsZSBPUyIKKwktIFNvbWUg bGFwdG9wcyBoYXZlIHRoZWlyIFJBTSBzb2xkZXJlZCBpbi4uLiBhbmQgdGhlbiBpdCBmYWls cyEKKwktIEl0J3MgcGxhaW4gY29vbCA7LSkKKworUnVubmluZyBleGFtcGxlCisJVG8gcnVu IHRoaXMgcHJvamVjdCwgSSB3YXMgZ2l2ZW4gdHdvIERJTU1zLCAzMiBNQiBlYWNoLiBPbmUs IHRoYXQgd2UKKwlzaGFsbCB1c2UgYXMgYSBydW5uaW5nIGV4YW1wbGUgaW4gdGhpcyB0ZXh0 LCBjb250YWluZWQgNTEyIGZhdWx0eSBiaXRzLAorCXNwcmVhZCBvdmVyIDEvNCBvZiB0aGUg YWRkcmVzcyByYW5nZSBpbiBhIHJlZ3VsYXIgcGF0dGVybi4gU29tZSB0cmlja3MKKwl3aXRo IGEgUkFNIHRlc3RlciBhbmQgYSBmZXcgYmluYXJ5IGNhbGN1bGF0aW9ucyB3ZXJlIHN1ZmZp Y2llbnQgdG8KKwl3cml0ZSB0aGVzZSBmYXVsdHMgZG93biBpbiAyIGxvbmd3b3JkIG51bWJl cnMuCisKKwlUaGUga2VybmVsIHJlY29nbmlzZWQgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIHBh Z2VzIHdpdGggZmF1bHRzIGFuZCBkaWQKKwlub3QgZ2l2ZSB0aGVtIG91dCBmb3IgYWxsb2Nh dGlvbi4gVGhlIGFsbG9jYXRpb24gcm91dGluZXMgY291bGQKKwl0aGVyZWZvcmUgcHJvZ3Jl c3MgYXMgbm9ybWFsbHksIHdpdGhvdXQgYW55IGFkYXB0aW9uLgorCVNvLCBJIGdhaW5lZCAz MCBNQiBvZiBESU1NIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBoYXZlIGJlZW4gdGhyb3duCisJ YXdheS4gQWZ0ZXIgYm9vdGluZyB0aGUga2VybmVsLCB0aGUga2VybmVsIGJlaGF2ZWQgZXhh Y3RseSBhcyBpdAorCWFsd2F5cyBoYWQuCisKK0luaXRpYWwgY2hlY2tzCisJSWYgeW91IGV4 cGVyaWVuY2UgUkFNIHRyb3VibGUsIGZpcnN0IHJlYWQgL3Vzci9zcmMvbGludXgvbWVtb3J5 LnR4dAorCWFuZCB0cnkgb3V0IHRoZSBtZW09NE0gdHJpY2sgdG8gc2VlIGlmIGF0IGxlYXN0 IHNvbWUgaW5pdGlhbCBwYXJ0cworCW9mIHlvdXIgUkFNIHdvcmsgd2VsbC4gVGhlIEJhZFJB TSByb3V0aW5lcyBoYWx0IHRoZSBrZXJuZWwgaW4gcGFuaWMKKwlpZiB0aGUgcmVzZXJ2ZWQg YXJlYSBvZiBtZW1vcnkgKGNvbnRhaW5pbmcga2VybmVsIHN0dWZmKSBjb250YWlucworCWEg ZmF1bHR5IGFkZHJlc3MuCisKK1J1bm5pbmcgYSBSQU0gY2hlY2tlcgorCVRoZSBtZW1vcnkg Y2hlY2tlciBpcyBub3QgYnVpbHQgaW50byB0aGUga2VybmVsLCB0byBhdm9pZCBkZWxheXMg YXQKKwlydW50aW1lLiBJZiB5b3UgZXhwZXJpZW5jZSBwcm9ibGVtcyB0aGF0IG1heSBiZSBj YXVzZWQgYnkgUkFNLCBydW4KKwlhIGdvb2QgUkFNIGNoZWNrZXIsIHN1Y2ggYXMKKwkJaHR0 cDovL3JlYWxpdHkuc2dpLmNvbS9jYnJhZHlfZGVudmVyL21lbXRlc3Q4NgorCVRoZSBvdXRw dXQgb2YgYSBSQU0gY2hlY2tlciBwcm92aWRlcyBhZGRyZXNzZXMgdGhhdCB3ZW50IHdyb25n LiBJbgorCXRoZSAzMiBNQiBjaGlwIHdpdGggNTEyIGZhdWx0eSBiaXRzIG1lbnRpb25lZCBh Ym92ZSwgdGhlIGVycm9ycyB3ZXJlCisJZm91bmQgaW4gdGhlIDhNQi0xNk1CIHJhbmdlICh0 aGUgRElNTSB3YXMgaW4gc2xvdCAjMCkgYXQgYWRkcmVzc2VzCisJCXh4eDQyZjQKKwkJeHh4 NjJmNAorCQl4eHhjMmY0CisJCXh4eGUyZjQKKwlhbmQgdGhlIGVycm9yIHdhcyBhICJzdGlj a3kgMSBiaXQiLCBhIG1lbW9yeSBiaXQgdGhhdCBzdGF5ZWQgIjEiIG5vCisJbWF0dGVyIHdo YXQgd2FzIHdyaXR0ZW4gdG8gaXQuIFRoZSByZWd1bGFyaXR5IG9mIHRoaXMgcGF0dGVybgor CXN1Z2dlc3RzIHRoZSBkZWF0aCBvZiBhIGJ1ZmZlciBhdCB0aGUgb3V0cHV0IHN0YWdlcyBv ZiBhIHJvdyBvbiBvbmUgb2YKKwl0aGUgY2hpcHMuIEkgZXhwZWN0IHN1Y2ggcmVndWxhcml0 eSB0byBiZSBjb21tb25wbGFjZS4gRmluZGluZyB0aGlzCisJcmVndWxhcml0eSBjdXJyZW50 bHkgaXMgaHVtYW4gZWZmb3J0LCBidXQgaXQgc2hvdWxkIG5vdCBiZSBoYXJkIHRvCisJYWx0 ZXIgYSBSQU0gY2hlY2tlciB0byBjYXB0dXJlIGl0IGluIHNvbWUgc29ydCBvZiBwYXR0ZXJu LCBwb3NzaWJseQorCXRoZSBCYWRSQU0gcGF0dGVybnMgZGVzY3JpYmVkIGJlbG93LgorCisJ QnkgdGhlIHdheSwgaWYgeW91IG1hbmFnZSB0byBnZXQgaG9sZCBvZiBtZW10ZXN0ODYgdmVy c2lvbiAyLjMgb3IKKwliZXlvbmQsIHlvdSBjYW4gY29uZmlndXJlIHRoZSBwcmludGluZyBt b2RlIHRvIHByb2R1Y2UgQmFkUkFNIHBhdHRlcm5zLAorCXdoaWNoIGZpbmQgb3V0IGV4YWN0 bHkgd2hhdCB5b3UgbXVzdCBlbnRlciBvbiB0aGUgTElMTzogY29tbWFuZGxpbmUsCisJZXhj ZXB0IHRoYXQgeW91IHNob3VsZG4ndCBtZW50aW9uIHRoZSBhZGRlZCBzcGFjaW5nLiBUaGF0 IG1lYW5zIHRoYXQKKwl5b3UgY2FuIHNraXAgdGhlIGZvbGxvd2luZyBzdGVwLCB3aGljaCBz YXZlcyB5b3UgYSAqbG90KiBvZiB3b3JrLgorCisJQWxzbyBieSB0aGUgd2F5LCBpZiB5b3Vy IG1hY2hpbmUgaGFzIHRoZSBJU0EgbWVtb3J5IGdhcCBpbiB0aGUgMTVNLTE2TQorCXJhbmdl IHVuc3RvcHBhYmxlLCBMaW51eCBjYW4gZ2V0IGluIHRyb3VibGUuIE9uZSB3YXkgb2YgaGFu ZGxpbmcgdGhhdAorCXNpdHVhdGlvbiBpcyBieSBzcGVjaWZ5aW5nIHRoZSB0b3RhbCBtZW1v cnkgc2l6ZSB0byBMaW51eCB3aXRoIGEgYm9vdAorCXBhcmFtZXRlciBtZW09Li4uIGFuZCB0 aGVuIHRvIHRlbGwgaXQgdG8gdHJlYXQgdGhlIDE1TS0xNk0gcmFuZ2UgYXMKKwlmYXVsdHkg d2l0aCBhbiBhZGRpdGlvbmFsIGJvb3QgcGFyYW1ldGVyLCBmb3IgaW5zdGFuY2U6CisJCW1l bT0yNE0gYmFkcmFtPTB4MDBmMDAwMDAsMHhmZmYwMDAwMAorCWlmIHlvdSBpbnN0YWxsZWQg MjRNQiBvZiBSQU0gaW4gdG90YWwuCisKK0NhcHR1cmluZyBlcnJvcnMgaW4gYSBwYXR0ZXJu CisJSW5zdGVhZCBvZiBtYW51YWxseSBwcm92aWRpbmcgYWxsIDUxMiBlcnJvcnMgdG8gdGhl IGtlcm5lbCwgaXQncyBuaWNlcgorCXRvIGdlbmVyYXRlIGEgcGF0dGVybi4gU2luY2UgdGhl IHJlZ3VsYXJpdHkgaXMgYmFzZWQgb24gYWRkcmVzcyBkZWNvZGluZworCXNvZnR3YXJlLCB3 aGljaCBnZW5lcmFsbHkgdGFrZXMgY2VydGFpbiBiaXRzIGludG8gYWNjb3VudCBhbmQgaWdu b3JlcworCW90aGVycywgd2Ugc2hhbGwgcHJvdmlkZSBhIGZhdWx0eSBhZGRyZXNzIEYsIHRv Z2V0aGVyIHdpdGggYSBiaXQgbWFzayBNCisJdGhhdCBzcGVjaWZpZXMgd2hpY2ggYml0cyBt dXN0IGJlIGVxdWFsIHRvIEYuIEluIEMgY29kZSwgYW4gYWRkcmVzcyBBCisJaXMgZmF1bHR5 IGlmIGFuZCBvbmx5IGlmCisJCShGICYgTSkgPT0gKEEgJiBNKQorCW9yIGFsdGVybmF0ZWx5 IChjbG9zZXIgdG8gYSBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbik6CisJCX4oKEYgXiBBKSAm IE0pCisJSW4gdGhlIGV4YW1wbGUgMzIgTUIgY2hpcCwgd2UgaGFkIHRoZSBmYXVsdHkgYWRk cmVzc2VzIGluIDhNQi0xNk1COgorCQl4eHg0MmY0ICAgICAgICAgLi4uLjAxMDAuLi4uCisJ CXh4eDYyZjQgICAgICAgICAuLi4uMDExMC4uLi4KKwkJeHh4YzJmNCAgICAgICAgIC4uLi4x MTAwLi4uLgorCQl4eHhlMmY0ICAgICAgICAgLi4uLjExMTAuLi4uCisJVGhlIHNlY29uZCBj b2x1bW4gcmVwcmVzZW50cyB0aGUgYWx0ZXJuYXRpbmcgaGV4IGRpZ2l0IGluIGJpbmFyeSBm b3JtLgorCUFwcGVyYW50bHksIHRoZSBmaXJzdCBhbmQgb25lLWJ1dCBsYXN0IGJpbmFyeSBk aWdpdCBjYW4gYmUgYW55dGhpbmcsCisJc28gdGhlIGJpbmFyeSBtYXNrIGZvciB0aGF0IHBh cnQgaXMgMDEwMS4gVGhlIG1hc2sgZm9yIHRoZSBwYXJ0IGFmdGVyCisJdGhpcyBpcyAweGZm ZiwgYW5kIHRoZSBwYXJ0IGJlZm9yZSBzaG91bGQgc2VsZWN0IGFueXRoaW5nIGluIHRoZSBy YW5nZQorCThNQi0xNk1CLCBvciAweDAwODAwMDAwLTB4MDEwMDAwMDA7IHRoaXMgaXMgZG9u ZSB3aXRoIGEgYml0bWFzaworCTB4ZmY4MHh4eHguIENvbWJpbmluZyB0aGVzZSBwYXJ0aWFs IG1hc2tzLCB3ZSBnZXQ6CisJCUY9MHgwMDgwNDJmNCAgICBNPTB4ZmY4MDVmZmYKKwlUaGF0 IGNvdmVycyBldmVyeXRoaW5nIGZvciB0aGlzIERJTU07IGZvciBtb3JlIGNvbXBsaWNhdGVk IGZhaWxpbmcKKwlESU1Ncywgb3IgZm9yIGEgY29tYmluYXRpb24gb2YgbXVsdGlwbGUgZmFp bGluZyBESU1NcywgaXQgY2FuIGJlCisJbmVjZXNzYXJ5IHRvIHNldCB1cCBhIG51bWJlciBv ZiBzdWNoIEYvTSBwYWlycy4KKworUmVib290aW5nIExpbnV4CisJTm93IHRoYXQgdGhlc2Ug cGF0dGVybnMgYXJlIGtub3duIChhbmQgZG91YmxlLWNoZWNrZWQsIHRoZSBjYWxjdWxhdGlv bnMKKwlhcmUgaGlnaGx5IGVycm9yLXByb25lLi4uIGl0IHdvdWxkIGJlIG5lYXQgdG8gdGVz dCB0aGVtIGluIHRoZSBSQU0KKwljaGVja2VyLi4uKSB3ZSBzaW1wbHkgcmVzdGFydCBMaW51 eCB3aXRoIHRoZXNlIEYvTSBwYWlycyBhcyBhIHBhcmFtZXRlci4KKwlJZiB5b3Ugbm9ybWFs bHkgYm9vdCBhcyBmb2xsb3dzOgorCSAgICAgICBMSUxPOiBsaW51eAorCXlvdSBzaG91bGQg bm93IGJvb3Qgd2l0aAorCSAgICAgICBMSUxPOiBsaW51eCBiYWRyYW09MHgwMDgwNDJmNCww eGZmODA1ZmZmCisJb3IgcGVyaGFwcyBieSBtZW50aW9uaW5nIG1vcmUgRi9NIHBhaXJzIGlu IGFuIG9yZGVyIEYwLE0wLEYxLE0xLC4uLgorCVdoZW4geW91IHByb3ZpZGUgYW4gb2RkIG51 bWJlciBvZiBhcmd1bWVudHMgdG8gYmFkcmFtLCB0aGUgZGVmYXVsdCBtYXNrCisJMHhmZmZm ZmZmZiAob25seSBvbmUgYWRkcmVzcyBtYXRjaGVkKSBpcyBhcHBsaWVkIHRvIHRoZSBwYXR0 ZXJuLgorCisJQmV3YXJlIG9mIHRoZSBjb21tYW5kbGluZSBsZW5ndGguIEF0IGxlYXN0IHVw IHRvIExJTE8gdmVyc2lvbiAwLjIxLAorCXRoZSBjb21tYW5kbGluZSBpcyBjdXQgb2ZmIGFm dGVyIHRoZSA3OHRoIGNoYXJhY3RlcjsgbGF0ZXIgdmVyc2lvbnMKKwltYXkgZ28gYXMgZmFy IGFzIHRoZSBrZXJuZWwgZ29lcywgbmFtZWx5IDI1NSBjaGFyYWN0ZXJzLiBJbiBubyB3YXkg aXMKKwlpdCBwb3NzaWJsZSB0byBlbnRlciBtb3JlIHRoYW4gMTAgbnVtYmVycyB0byB0aGUg YmFkcmFtIGJvb3Qgb3B0aW9uLgorCisJV2hlbiB0aGUga2VybmVsIG5vdyBib290cywgaXQg c2hvdWxkIG5vdCBnaXZlIGFueSB0cm91YmxlIHdpdGggUkFNLgorCU1pbmQgeW91LCB0aGlz IGlzIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIGtlcm5lbCBhbmQgaXRzIGRhdGEK KwlzdG9yYWdlIGRvIG5vdCBvdmVybGFwIGFuIGVycm9uZW91cyBwYXJ0LiBJZiB0aGlzIGhh cHBlbnMsIGFuZCB0aGUKKwlrZXJuZWwgZG9lcyBub3QgY2hva2Ugb24gaXQgcmlnaHQgYXdh eSwgaXQgd2lsbCBzdG9wIHdpdGggYSBwYW5pYy4KKwlZb3Ugd2lsbCBuZWVkIHRvIHByb3Zp ZGUgYSBSQU0gd2hlcmUgdGhlIGluaXRpYWwsIHNheSAyTUIsIGlzIGZhdWx0bGVzcy4KKwor CU5vdyBsb29rIHVwIHlvdXIgbWVtb3J5IHN0YXR1cyB3aXRoCisJICAgICAgIGRtZXNnIHwg Z3JlcCBeTWVtb3J5OgorCXdoaWNoIHByaW50cyBhIHNpbmdsZSBsaW5lIHdpdGggaW5mb3Jt YXRpb24gbGlrZQorCQlNZW1vcnk6IDE1ODUyNGsvMTYzODQwayBhdmFpbGFibGUKKwkJCSg5 NDBrIGtlcm5lbCBjb2RlLAorCQkJNDEyayByZXNlcnZlZCwKKwkJCTE4NTZrIGRhdGEsCisJ CQk2MGsgaW5pdCwKKwkJCTBrIGhpZ2htZW0sCisJCQkyMDQ4ayBCYWRSQU0pCisJVGhlIGxh dHRlciBlbnRyeSwgdGhlIGJhZHJhbSwgaXMgMjA0OGsgdG8gcmVwcmVzZW50IHRoZSBsb3Nz IG9mIDJNQgorCW9mIGdlbmVyYWwgcHVycG9zZSBSQU0gZHVlIHRvIHRoZSBlcnJvcnMuIE9y LCBwb3NpdGl2ZWx5IHJlcGhyYXNlZCwKKwlpbnN0ZWFkIG9mIHRocm93aW5nIG91dCAzMk1C IGFzIHVzZWxlc3MsIHlvdSBvbmx5IHRocm93IG91dCAyTUIuCisKKwlJZiB0aGUgc3lzdGVt IGlzIHN0YWJsZSAodHJ5IGNvbXBpbGluZyBhIGZldyBrZXJuZWxzLCBhbmQgZG8gYSBmZXcK KwlmaW5kcyBpbiAvIG9yIHNvKSB5b3UgbWF5IGFkZCB0aGUgYm9vdCBwYXJhbWV0ZXIgdG8g L2V0Yy9saWxvLmNvbmYKKwlhcyBhIGxpbmUgdG8gX2FsbF8gdGhlIGtlcm5lbHMgdGhhdCBo YW5kbGUgdGhpcyB0cm91YmxlIHdpdGggYSBsaW5lCisJCWFwcGVuZD0iYmFkcmFtPTB4MDA4 MDQyZjQsMHhmZjgwNWZmZiIKKwlhZnRlciB3aGljaCB5b3UgcnVuICJsaWxvIi4KKwlXYXJu aW5nOiBEb24ndCBleHBlcmltZW50IHdpdGggdGhlc2Ugc2V0dGluZ3Mgb24geW91ciBvbmx5 IGJvb3QgaW1hZ2UuCisJSWYgdGhlIEJhZFJBTSBvdmVybGF5cyBrZXJuZWwgY29kZSwgZGF0 YSwgaW5pdCwgb3Igb3RoZXIgcmVzZXJ2ZWQKKwltZW1vcnksIHRoZSBrZXJuZWwgd2lsbCBo YWx0IGluIHBhbmljLiBUcnkgc2V0dGluZ3Mgb24gYSB0ZXN0IGJvb3QKKwlpbWFnZSBmaXJz dCwgYW5kIGlmIHlvdSBnZXQgYSBwYW5pYyB5b3Ugc2hvdWxkIGNoYW5nZSB0aGUgb3JkZXIg b2YKKwl5b3VyIERJTU1zIFt3aGljaCBtYXkgaW52b2x2ZSBidXlpbmcgYSBuZXcgb25lIGp1 c3QgdG8gYmUgYWJsZSB0bworCWNoYW5nZSB0aGUgb3JkZXJdLgorCisJWW91IGFyZSBhbGxv d2VkIHRvIGVudGVyIGFueSBudW1iZXIgb2YgQmFkUkFNIHBhdHRlcm5zIGluIGFsbCB0aGUK KwlwbGFjZXMgZG9jdW1lbnRlZCBpbiB0aGlzIGZpbGUuIFRoZXkgd2lsbCBhbGwgYXBwbHku IEl0IGlzIGV2ZW4KKwlwb3NzaWJsZSB0byBtZW50aW9uIHNldmVyYWwgQmFkUkFNIHBhdHRl cm5zIGluIGEgc2luZ2xlIHBsYWNlLiBUaGUKKwljb21wbGV0aW9uIG9mIGFuIG9kZCBudW1i ZXIgb2YgYXJndW1lbnRzIHdpdGggdGhlIGRlZmF1bHQgbWFzayBpcworCWRvbmUgc2VwYXJh dGVseSBmb3IgZWFjaCBiYWRyYW09Li4uIG9wdGlvbi4KKworS2VybmVsIEN1c3RvbWlzYXRp b24KKwlTb21lIHBlb3BsZSBwcmVmZXIgdG8gZW50ZXIgdGhlaXIgYmFkcmFtIHBhdHRlcm5z IGluIHRoZSBrZXJuZWwsIGFuZAorCXRoaXMgaXMgYWxzbyBwb3NzaWJsZS4gSW4gbW0vcGFn ZV9hbGxvYy5jIHRoZXJlIGlzIGFuIGFycmF5IG9mIHVuc2lnbmVkCisJbG9uZyBpbnRlZ2Vy cyBpbnRvIHdoaWNoIHRoZSBwYXJhbWV0ZXJzIGNhbiBiZSBlbnRlcmVkLCBwcmVmaXhlZCB3 aXRoCisJdGhlIG51bWJlciBvZiBpbnRlZ2VycyAodHdpY2UgdGhlIG51bWJlciBvZiBwYXR0 ZXJucykuIFRoZSBhcnJheSBpcworCW5hbWVkIGJhZHJhbV9jdXN0b20gYW5kIGl0IHdpbGwg YmUgYWRkZWQgdG8gdGhlIEJhZFJBTSBsaXN0IHdoZW5ldmVyIGFuCisJb3B0aW9uICdiYWRy YW0nIGlzIHByb3ZpZGVkIG9uIHRoZSBjb21tYW5kbGluZSB3aGVuIGJvb3RpbmcsIGVpdGhl cgorCXdpdGggb3Igd2l0aG91dCBhZGRpdGlvbmFsIHBhdHRlcm5zLgorCisJRm9yIHRoZSBw cmV2aW91cyBleGFtcGxlLCB0aGUgY29kZSB3b3VsZCBiZWNvbWUKKworCXN0YXRpYyB1bnNp Z25lZCBsb25nIF9faW5pdCBiYWRyYW1fY3VzdG9tW10gPSB7CisJCTIsCS8vIE51bWJlciBv ZiBsb25nd29yZHMgdGhhdCBmb2xsb3csIGFzIEYvTSBwYWlycworCQkweDAwODA0MmY0TCwg MHhmZjgwNWZmZkwsCisJfTsKKworCUV2ZW4gb24gdGhpcyBwbGFjZSB5b3UgbWF5IGFzc3Vt ZSB0aGUgZGVmYXVsdCBtYXNrIHRvIGJlIGZpbGxlZCBpbgorCXdoZW4geW91IGVudGVyIGFu IG9kZCBudW1iZXIgb2YgbG9uZ3dvcmRzLiBTcGVjaWZ5IHRoZSBudW1iZXIgb2YKKwlsb25n d29yZHMgdG8gYmUgMCB0byBhdm9pZCBpbmZsdWVuY2Ugb2YgdGhpcyBjdXN0b20gQmFkUkFN IGxpc3QuCisKK0JhZFJBTSBjbGFzc2lmaWNhdGlvbgorCVRoaXMgdGVjaG5pcXVlIG1heSBz dGFydCBhIGxpdmVseSBtYXJrZXQgZm9yICJkZWFkIiBSQU0uIEl0IGlzIGltcG9ydGFudAor CXRvIHJlYWxpc2UgdGhhdCBzb21lIFJBTXMgYXJlIG1vcmUgZGVhZCB0aGFuIG90aGVycy4g U28sIGluc3RlYWQgb2YKKwlqdXN0IHByb3ZpZGluZyBhIFJBTSBzaXplLCBpdCBpcyBhbHNv IGltcG9ydGFudCB0byBrbm93IHRoZSBCYWRSQU0KKwljbGFzcywgd2hpY2ggaXMgZGVmaW5l ZCBhcyBmb2xsb3dzOgorCisJCUEgQmFkUkFNIGNsYXNzIE4gbWVhbnMgdGhhdCBhdCBtb3N0 IDJeTiBieXRlcyBoYXZlIGEgcHJvYmxlbSwKKwkJYW5kIHRoYXQgYWxsIHByb2JsZW1zIHdp dGggdGhlIFJBTXMgYXJlIHBlcnNpc3RlbnQ6IFRoZXkKKwkJYXJlIHByZWRpY3RhYmxlIGFu ZCBhbHdheXMgc2hvdyB1cC4KKworCVRoZSBESU1NIHRoYXQgc2VydmVzIGFzIGFuIGV4YW1w bGUgaGVyZSB3YXMgb2YgY2xhc3MgOSwgc2luY2UgNTEyPTJeOQorCWVycm9ycyB3ZXJlIGZv dW5kLiBIaWdoZXIgY2xhc3NlcyBhcmUgd29yc2UsICJjb3JyZWN0IiBSQU0gaXMgb2YgY2xh c3MKKwktMSAob3IgZXZlbiBsZXNzLCBhdCB5b3VyIGNob2ljZSkuCisJQ2xhc3MgTiBhbHNv IG1lYW5zIHRoYXQgdGhlIGJpdG1hc2sgZm9yIHlvdXIgY2hpcCAoaWYgdGhlcmUncyBqdXN0 IG9uZSwKKwl0aGF0IGlzKSBjb3VudHMgTiBiaXRzICIwIiBhbmQgaXQgbWVhbnMgdGhhdCAo aWYgbm8gZmF1bHRzIGZhbGwgaW4gdGhlCisJc2FtZSBwYWdlKSBhbiBhbW91bnQgb2YgMl5O KlBBR0VTSVpFIG1lbW9yeSBpcyBsb3N0LCBpbiB0aGUgZXhhbXBsZSBvbgorCWFuIGkzODYg YXJjaGl0ZWN0dXJlIHRoYXQgd291bGQgYmUgMl45KjRrPTJNQiwgd2hpY2ggYWNjb3VudHMg Zm9yIHRoZQorCWluaXRpYWwgY2xhaW0gb2YgMzBNQiBSQU0gZ2FpbmVkIHdpdGggdGhpcyBE SU1NLgorCisJTm90ZSB0aGF0IHRoaXMgc2NoZW1lIGhhcyBkZWxpYmVyYXRlbHkgYmVlbiBk ZWZpbmVkIHRvIGJlIGluZGVwZW5kZW50CisJb2YgbWVtb3J5IHRlY2hub2xvZ3kgYW5kIG9m IGNvbXB1dGVyIGFyY2hpdGVjdHVyZS4KKworS25vd24gQnVncworCUxJTE8gaXMga25vd24g dG8gY3V0IG9mZiBjb21tYW5kbGluZXMgd2hpY2ggYXJlIHRvbyBsb25nLiBGb3IgdGhlCisJ bGlsby0wLjIxIGRpc3RyaWJ1dGlvbiwgYSBjb21tYW5kbGluZSBtYXlGSUdfQkFEUkFNCisJ CQkJCWlmICghUGFnZUJhZChwYWdlKSkgeworCQkJCQkJc2V0X3BhZ2VfY291bnQocGFnZSwg MSk7CisJCQkJCQlfX2ZyZWVfcGFnZShwYWdlKTsKKwkJCQkJfQorI2Vsc2UKKwogCQkJCQlz ZXRfcGFnZV9jb3VudChwYWdlLCAxKTsKIAkJCQkJX19mcmVlX3BhZ2UocGFnZSk7CisjZW5k aWYKIAkJCQl9CiAJCQl9CiAJCX0gZWxzZSB7CkBAIC0yOTAsOCArMjk5LDE2IEBACiAJZm9y IChpID0gMDsgaSA8ICgoYmRhdGEtPm5vZGVfbG93X3Bmbi0oYmRhdGEtPm5vZGVfYm9vdF9z dGFydCA+PiBQQUdFX1NISUZUKSkvOCArIFBBR0VfU0laRS0xKS9QQUdFX1NJWkU7IGkrKyxw YWdlKyspIHsKIAkJY291bnQrKzsKIAkJQ2xlYXJQYWdlUmVzZXJ2ZWQocGFnZSk7Ci0JCXNl dF9wYWdlX2NvdW50KHBhZ2UsIDEpOworCisjaWZkZWYgQ09ORklHX0JBRFJBTQorCQlpZiAo IVBhZ2VCYWQocGFnZSkpIHsKKwkJCXNldF9wYWdlX2NvdW50KHBhZ2UsIDEpOworCQkJX19m cmVlX3BhZ2UocGFnZSk7CisJCX0KKyNlbHNlCisgCQlzZXRfcGFnZV9jb3VudChwYWdlLCAx KTsKIAkJX19mcmVlX3BhZ2UocGFnZSk7CisjZW5kaWYKIAl9CiAJdG90YWwgKz0gY291bnQ7 CiAJYmRhdGEtPm5vZGVfYm9vdG1lbV9tYXAgPSBOVUxMOwpkaWZmIC11ck4gbGludXgtMi42 LjAtdGVzdDEtYWMxL21tL3BhZ2VfYWxsb2MuYyBsaW51eC0yLjYuMC10ZXN0MS1hYzEtQmFk UkFNL21tL3BhZ2VfYWxsb2MuYwotLS0gbGludXgtMi42LjAtdGVzdDEtYWMxL21tL3BhZ2Vf YWxsb2MuYwkyMDAzLTA3LTE2IDE3OjU1OjQxLjAwMDAwMDAwMCArMDEwMAorKysgbGludXgt Mi42LjAtdGVzdDEtYWMxLUJhZFJBTS9tbS9wYWdlX2FsbG9jLmMJMjAwMy0wNy0xNSAwMzow MjozMi4wMDAwMDAwMDAgKzAxMDAKQEAgLTEyLDYgKzEyLDcgQEAKICAqICBab25lIGJhbGFu Y2luZywgS2Fub2ogU2FyY2FyLCBTR0ksIEphbiAyMDAwCiAgKiAgUGVyIGNwdSBob3QvY29s ZCBwYWdlIGxpc3RzLCBidWxrIGFsbG9jYXRpb24sIE1hcnRpbiBKLiBCbGlnaCwgU2VwdCAy MDAyCiAgKiAgICAgICAgICAobG90cyBvZiBiaXRzIGJvcnJvd2VkIGZyb20gSW5nbyBNb2xu YXIgJiBBbmRyZXcgTW9ydG9uKQorICogIEJhZFJBTSBoYW5kbGluZywgUmljayB2YW4gUmVp biwgRmViIDIwMDEKICAqLwogCiAjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CkBAIC0xNjE1 LDMgKzE2MTYsOTYgQEAKIAlzZXR1cF9wZXJfem9uZV9wYWdlc19taW4oKTsKIAlyZXR1cm4g MDsKIH0KKworCisjaWZkZWYgQ09ORklHX0JBRFJBTQorCisvKiBHaXZlbiBhIHBvaW50ZWQt YXQgYWRkcmVzcyBhbmQgYSBtYXNrLCBpbmNyZW1lbnQgdGhlIHBhZ2Ugc28gdGhhdCB0aGUK KyAqIG1hc2sgaGlkZXMgdGhlIGluY3JlbWVudC4gUmV0dXJuIDAgaWYgbm8gaW5jcmVtYiBh bGxvY2F0aW9uIHRpbWUsIGJ1dCBvbiB0aGUgb3RoZUZJR19CQURSQU0KKwkJCQkJaWYgKCFQ YWdlQmFkKHBhZ2UpKSB7CisJCQkJCQlzZXRfcGFnZV9jb3VudChwYWdlLCAxKTsKKwkJCQkJ CV9fZnJlZV9wYWdlKHBhZ2UpOworCQkJCQl9CisjZWxzZQorCiAJCQkJCXNldF9wYWdlX2Nv dW50KHBhZ2UsIDEpOwogCQkJCQlfX2ZyZWVfcGFnZShwYWdlKTsKKyNlbmRpZgogCQkJCX0K IAkJCX0KIAkJfSBlbHNlIHsKQEAgLTI5MCw4ICsyOTksMTYgQEAKIAlmb3IgKGkgPSAwOyBp IDwgKChiZGF0YS0+bm9kZV9sb3dfcGZuLShiZGF0YS0+bm9kZV9ib290X3N0YXJ0ID4+IFBB R0VfU0hJRlQpKS84ICsgUEFHRV9TSVpFLTEpL1BBR0VfU0laRTsgaSsrLHBhZ2UrKykgewog CQljb3VudCsrOwogCQlDbGVhclBhZ2VSZXNlcnZlZChwYWdlKTsKLQkJc2V0X3BhZ2VfY291 bnQocGFnZSwgMSk7CisKKyNpZmRlZiBDT05GSUdfQkFEUkFNCisJCWlmICghUGFnZUJhZChw YWdlKSkgeworCQkJc2V0X3BhZ2VfY291bnQocGFnZSwgMSk7CisJCQlfX2ZyZWVfcGFnZShw YWdlKTsKKwkJfQorI2Vsc2UKKyAJCXNldF9wYWdlX2NvdW50KHBhZ2UsIDEpOwogCQlfX2Zy ZWVfcGFnZShwYWdlKTsKKyNlbmRpZgogCX0KIAl0b3RhbCArPSBjb3VudDsKIAliZGF0YS0+ bm9kZV9ib290bWVtX21hcCA9IE5VTEw7CmRpZmYgLXVyTiBsaW51eC0yLjYuMC10ZXN0MS1h YzEvbW0vcGFnZV9hbGxvYy5jIGxpbnV4LTIuNi4wLXRlc3QxLWFjMS1CYWRSQU0vbW0vcGFn ZV9hbGxvYy5jCi0tLSBsaW51eC0yLjYuMC10ZXN0MS1hYzEvbW0vcGFnZV9hbGxvYy5jCTIw MDMtMDctMTYgMTc6NTU6NDEuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuMC10ZXN0 MS1hYzEtQmFkUkFNL21tL3BhZ2VfYWxsb2MuYwkyMDAzLTA3LTE1IDAzOjAyOjMyLjAwMDAw MDAwMCArMDEwMApAQCAtMTIsNiArMTIsNyBAQAogICogIFpvbmUgYmFsYW5jaW5nLCBLYW5v aiBTYXJjYXIsIFNHSSwgSmFuIDIwMDAKICAqICBQZXIgY3B1IGhvdC9jb2xkIHBhZ2UgbGlz dHMsIGJ1bGsgYWxsb2NhdGlvbiwgTWFydGluIEouIEJsaWdoLCBTZXB0IDIwMDIKICAqICAg ICAgICAgIChsb3RzIG9mIGJpdHMgYm9ycm93ZWQgZnJvbSBJbmdvIE1vbG5hciAmIEFuZHJl dyBNb3J0b24pCisgKiAgQmFkUkFNIGhhbmRsaW5nLCBSaWNrIHZhbiBSZWluLCBGZWIgMjAw MQogICovCiAKICNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KQEAgLTE2MTUsMyArMTYxNiw5 NiBAQAogCXNldHVwX3Blcl96b25lX3BhZ2VzX21pbigpOwogCXJldHVybiAwOwogfQorCisK KyNpZmRlZiBDT05GSUdfQkFEUkFNCisKKy8qIEdpdmVuIGEgcG9pbnRlZC1hdCBhZGRyZXNz IGFuZCBhIG1hc2ssIGluY3JlbWVudCB0aGUgcGFnZSBzbyB0aGF0IHRoZQorICogbWFzayBo aWRlcyB0aGUgaW5jcmVtZW50LiBSZXR1cm4gMCBpZiBubyBpbmNyZW0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRklHX0JBRFJBTQorCQkJCQlpZiAoIVBhZ2VCYWQocGFn ZSkpIHsKKwkJCQkJCXNldF9wYWdlX2NvdW50KHBhZ2UsIDEpOworCQkJCQkJX19mcmVlX3Bh Z2UocGFnZSk7CisJCQkJCX0KKyNlbHNlCisKIAkJCQkJc2V0X3BhZ2VfY291bnQocGFnZSwg MSk7CiAJCQkJCV9fZnJlZV9wYWdlKHBhZ2UpOworI2VuZGlmCiAJCQkJfQogCQkJfQogCQl9 IGVsc2UgewpAQCAtMjkwLDggKzI5OSwxNiBAQAogCWZvciAoaSA9IDA7IGkgPCAoKGJkYXRh LT5ub2RlX2xvd19wZm4tKGJkYXRhLT5ub2RlX2Jvb3Rfc3RhcnQgPj4gUEFHRV9TSElGVCkp LzggKyBQQUdFX1NJWkUtMSkvUEFHRV9TSVpFOyBpKysscGFnZSsrKSB7CiAJCWNvdW50Kys7 CiAJCUNsZWFyUGFnZVJlc2VydmVkKHBhZ2UpOwotCQlzZXRfcGFnZV9jb3VudChwYWdlLCAx KTsKKworI2lmZGVmIENPTkZJR19CQURSQU0KKwkJaWYgKCFQYWdlQmFkKHBhZ2UpKSB7CisJ CQlzZXRfcGFnZV9jb3VudChwYWdlLCAxKTsKKwkJCV9fZnJlZV9wYWdlKHBhZ2UpOworCQl9 CisjZWxzZQorIAkJc2V0X3BhZ2VfY291bnQocGFnZSwgMSk7CiAJCV9fZnJlZV9wYWdlKHBh Z2UpOworI2VuZGlmCiAJfQogCXRvdGFsICs9IGNvdW50OwogCWJkYXRhLT5ub2RlX2Jvb3Rt ZW1fbWFwID0gTlVMTDsKZGlmZiAtdXJOIGxpbnV4LTIuNi4wLXRlc3QxLWFjMS9tbS9wYWdl X2FsbG9jLmMgbGludXgtMi42LjAtdGVzdDEtYWMxLUJhZFJBTS9tbS9wYWdlX2FsbG9jLmMK LS0tIGxpbnV4LTIuNi4wLXRlc3QxLWFjMS9tbS9wYWdlX2FsbG9jLmMJMjAwMy0wNy0xNiAx Nzo1NTo0MS4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi4wLXRlc3QxLWFjMS1CYWRS QU0vbW0vcGFnZV9hbGxvYy5jCTIwMDMtMDctMTUgMDM6MDI6MzIuMDAwMDAwMDAwICswMTAw CkBAIC0xMiw2ICsxMiw3IEBACiAgKiAgWm9uZSBiYWxhbmNpbmcsIEthbm9qIFNhcmNhciwg U0dJLCBKYW4gMjAwMAogICogIFBlciBjcHUgaG90L2NvbGQgcGFnZSBsaXN0cywgYnVsayBh bGxvY2F0aW9uLCBNYXJ0aW4gSi4gQmxpZ2gsIFNlcHQgMjAwMgogICogICAgICAgICAgKGxv dHMgb2YgYml0cyBib3Jyb3dlZCBmcm9tIEluZ28gTW9sbmFyICYgQW5kcmV3IE1vcnRvbikK KyAqICBCYWRSQU0gaGFuZGxpbmcsIFJpY2sgdmFuIFJlaW4sIEZlYiAyMDAxCiAgKi8KIAog I2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgpAQCAtMTYxNSwzICsxNjE2LDk2IEBACiAJc2V0 dXBfcGVyX3pvbmVfcGFnZXNfbWluKCk7CiAJcmV0dXJuIDA7CiB9CisKKworI2lmZGVmIENP TkZJR19CQURSQU0KKworLyogR2l2ZW4gYSBwb2ludGVkLWF0IGFkZHJlc3MgYW5kIGEgbWFz aywgaW5jcmVtZW50IHRoZSBwYWdlIHNvIHRoYXQgdGhlCisgKiBtYXNrIGhpZGVzIHRoZSBp bmNyZW1lbnQuIFJldHVybiAwIGlmIG5vIGluY3JlbShwcmVkaWN0YWJsZSkgZXJyb3JzLCB1 c3VhbGx5IG1lYW5GSUdfQkFEUkFNCisJCQkJCWlmICghUGFnZUJhZChwYWdlKSkgeworCQkJ CQkJc2V0X3BhZ2VfY291bnQocGFnZSwgMSk7CisJCQkJCQlfX2ZyZWVfcGFnZShwYWdlKTsK KwkJCQkJfQorI2Vsc2UKKwogCQkJCQlzZXRfcGFnZV9jb3VudChwYWdlLCAxKTsKIAkJCQkJ X19mcmVlX3BhZ2UocGFnZSk7CisjZW5kaWYKIAkJCQl9CiAJCQl9CiAJCX0gZWxzZSB7CkBA IC0yOTAsOCArMjk5LDE2IEBACiAJZm9yIChpID0gMDsgaSA8ICgoYmRhdGEtPm5vZGVfbG93 X3Bmbi0oYmRhdGEtPm5vZGVfYm9vdF9zdGFydCA+PiBQQUdFX1NISUZUKSkvOCArIFBBR0Vf U0laRS0xKS9QQUdFX1NJWkU7IGkrKyxwYWdlKyspIHsKIAkJY291bnQrKzsKIAkJQ2xlYXJQ YWdlUmVzZXJ2ZWQocGFnZSk7Ci0JCXNldF9wYWdlX2NvdW50KHBhZ2UsIDEpOworCisjaWZk ZWYgQ09ORklHX0JBRFJBTQorCQlpZiAoIVBhZ2VCYWQocGFnZSkpIHsKKwkJCXNldF9wYWdl X2NvdW50KHBhZ2UsIDEpOworCQkJX19mcmVlX3BhZ2UocGFnZSk7CisJCX0KKyNlbHNlCisg CQlzZXRfcGFnZV9jb3VudChwYWdlLCAxKTsKIAkJX19mcmVlX3BhZ2UocGFnZSk7CisjZW5k aWYKIAl9CiAJdG90YWwgKz0gY291bnQ7CiAJYmRhdGEtPm5vZGVfYm9vdG1lbV9tYXAgPSBO VUxMOwpkaWZmIC11ck4gbGludXgtMi42LjAtdGVzdDEtYWMxL21tL3BhZ2VfYWxsb2MuYyBs aW51eC0yLjYuMC10ZXN0MS1hYzEtQmFkUkFNL21tL3BhZ2VfYWxsb2MuYwotLS0gbGludXgt Mi42LjAtdGVzdDEtYWMxL21tL3BhZ2VfYWxsb2MuYwkyMDAzLTA3LTE2IDE3OjU1OjQxLjAw MDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjAtdGVzdDEtYWMxLUJhZFJBTS9tbS9wYWdl X2FsbG9jLmMJMjAwMy0wNy0xNSAwMzowMjozMi4wMDAwMDAwMDAgKzAxMDAKQEAgLTEyLDYg KzEyLDcgQEAKICAqICBab25lIGJhbGFuY2luZywgS2Fub2ogU2FyY2FyLCBTR0ksIEphbiAy MDAwCiAgKiAgUGVyIGNwdSBob3QvY29sZCBwYWdlIGxpc3RzLCBidWxrIGFsbG9jYXRpb24s IE1hcnRpbiBKLiBCbGlnaCwgU2VwdCAyMDAyCiAgKiAgICAgICAgICAobG90cyBvZiBiaXRz IGJvcnJvd2VkIGZyb20gSW5nbyBNb2xuYXIgJiBBbmRyZXcgTW9ydG9uKQorICogIEJhZFJB TSBoYW5kbGluZywgUmljayB2YW4gUmVpbiwgRmViIDIwMDEKICAqLwogCiAjaW5jbHVkZSA8 bGludXgvY29uZmlnLmg+CkBAIC0xNjE1LDMgKzE2MTYsOTYgQEAKIAlzZXR1cF9wZXJfem9u ZV9wYWdlc19taW4oKTsKIAlyZXR1cm4gMDsKIH0KKworCisjaWZkZWYgQ09ORklHX0JBRFJB TQorCisvKiBHaXZlbiBhIHBvaW50ZWQtYXQgYWRkcmVzcyBhbmQgYSBtYXNrLCBpbmNyZW1l bnQgdGhlIHBhZ2Ugc28gdGhhdCB0aGUKKyAqIG1hc2sgaGlkZXMgdGhlIGluY3JlbWVudC4g UmV0dXJuIDAgaWYgbm8gaW5jcmVtZm9yIGluZm9ybWF0aW9uLgorCSAgCisJICBUaGlzIG9w dEZJR19CQURSQU0KKwkJCQkJaWYgKCFQYWdlQmFkKHBhZ2UpKSB7CisJCQkJCQlzZXRfcGFn ZV9jb3VudChwYWdlLCAxKTsKKwkJCQkJCV9fZnJlZV9wYWdlKHBhZ2UpOworCQkJCQl9Cisj ZWxzZQorCiAJCQkJCXNldF9wYWdlX2NvdW50KHBhZ2UsIDEpOwogCQkJCQlfX2ZyZWVfcGFn ZShwYWdlKTsKKyNlbmRpZgogCQkJCX0KIAkJCX0KIAkJfSBlbHNlIHsKQEAgLTI5MCw4ICsy OTksMTYgQEAKIAlmb3IgKGkgPSAwOyBpIDwgKChiZGF0YS0+bm9kZV9sb3dfcGZuLShiZGF0 YS0+bm9kZV9ib290X3N0YXJ0ID4+IFBBR0VfU0hJRlQpKS84ICsgUEFHRV9TSVpFLTEpL1BB R0VfU0laRTsgaSsrLHBhZ2UrKykgewogCQljb3VudCsrOwogCQlDbGVhclBhZ2VSZXNlcnZl ZChwYWdlKTsKLQkJc2V0X3BhZ2VfY291bnQocGFnZSwgMSk7CisKKyNpZmRlZiBDT05GSUdf QkFEUkFNCisJCWlmICghUGFnZUJhZChwYWdlKSkgeworCQkJc2V0X3BhZ2VfY291bnQocGFn ZSwgMSk7CisJCQlfX2ZyZWVfcGFnZShwYWdlKTsKKwkJfQorI2Vsc2UKKyAJCXNldF9wYWdl X2NvdW50KHBhZ2UsIDEpOwogCQlfX2ZyZWVfcGFnZShwYWdlKTsKKyNlbmRpZgogCX0KIAl0 b3RhbCArPSBjb3VudDsKIAliZGF0YS0+bm9kZV9ib290bWVtX21hcCA9IE5VTEw7CmRpZmYg LXVyTiBsaW51eC0yLjYuMC10ZXN0MS1hYzEvbW0vcGFnZV9hbGxvYy5jIGxpbnV4LTIuNi4w LXRlc3QxLWFjMS1CYWRSQU0vbW0vcGFnZV9hbGxvYy5jCi0tLSBsaW51eC0yLjYuMC10ZXN0 MS1hYzEvbW0vcGFnZV9hbGxvYy5jCTIwMDMtMDctMTYgMTc6NTU6NDEuMDAwMDAwMDAwICsw MTAwCisrKyBsaW51eC0yLjYuMC10ZXN0MS1hYzEtQmFkUkFNL21tL3BhZ2VfYWxsb2MuYwky MDAzLTA3LTE1IDAzOjAyOjMyLjAwMDAwMDAwMCArMDEwMApAQCAtMTIsNiArMTIsNyBAQAog ICogIFpvbmUgYmFsYW5jaW5nLCBLYW5vaiBTYXJjYXIsIFNHSSwgSmFuIDIwMDAKICAqICBQ ZXIgY3B1IGhvdC9jb2xkIHBhZ2UgbGlzdHMsIGJ1bGsgYWxsb2NhdGlvbiwgTWFydGluIEou IEJsaWdoLCBTZXB0IDIwMDIKICAqICAgICAgICAgIChsb3RzIG9mIGJpdHMgYm9ycm93ZWQg ZnJvbSBJbmdvIE1vbG5hciAmIEFuZHJldyBNb3J0b24pCisgKiAgQmFkUkFNIGhhbmRsaW5n LCBSaWNrIHZhbiBSZWluLCBGZWIgMjAwMQogICovCiAKICNpbmNsdWRlIDxsaW51eC9jb25m aWcuaD4KQEAgLTE2MTUsMyArMTYxNiw5NiBAQAogCXNldHVwX3Blcl96b25lX3BhZ2VzX21p bigpOwogCXJldHVybiAwOwogfQorCisKKyNpZmRlZiBDT05GSUdfQkFEUkFNCisKKy8qIEdp dmVuIGEgcG9pbnRlZC1hdCBhZGRyZXNzIGFuZCBhIG1hc2ssIGluY3JlbWVudCB0aGUgcGFn ZSBzbyB0aGF0IHRoZQorICogbWFzayBoaWRlcyB0aGUgaW5jcmVtZW50LiBSZXR1cm4gMCBp ZiBubyBpbmNyZW1lUmVzZXJ2ZWQocGFnZSk7CiAJCXNldF9iaXQoUEdfaGlnRklHX0JBRFJB TQorCQkJCQlpZiAoIVBhZ2VCYWQocGFnZSkpIHsKKwkJCQkJCXNldF9wYWdlX2NvdW50KHBh Z2UsIDEpOworCQkJCQkJX19mcmVlX3BhZ2UocGFnZSk7CisJCQkJCX0KKyNlbHNlCisKIAkJ CQkJc2V0X3BhZ2VfY291bnQocGFnZSwgMSk7CiAJCQkJCV9fZnJlZV9wYWdlKHBhZ2UpOwor I2VuZGlmCiAJCQkJfQogCQkJfQogCQl9IGVsc2UgewpAQCAtMjkwLDggKzI5OSwxNiBAQAog CWZvciAoaSA9IDA7IGkgPCAoKGJkYXRhLT5ub2RlX2xvd19wZm4tKGJkYXRhLT5ub2RlX2Jv b3Rfc3RhcnQgPj4gUEFHRV9TSElGVCkpLzggKyBQQUdFX1NJWkUtMSkvUEFHRV9TSVpFOyBp KysscGFnZSsrKSB7CiAJCWNvdW50Kys7CiAJCUNsZWFyUGFnZVJlc2VydmVkKHBhZ2UpOwot CQlzZXRfcGFnZV9jb3VudChwYWdlLCAxKTsKKworI2lmZGVmIENPTkZJR19CQURSQU0KKwkJ aWYgKCFQYWdlQmFkKHBhZ2UpKSB7CisJCQlzZXRfcGFnZV9jb3VudChwYWdlLCAxKTsKKwkJ CV9fZnJlZV9wYWdlKHBhZ2UpOworCQl9CisjZWxzZQorIAkJc2V0X3BhZ2VfY291bnQocGFn ZSwgMSk7CiAJCV9fZnJlZV9wYWdlKHBhZ2UpOworI2VuZGlmCiAJfQogCXRvdGFsICs9IGNv dW50OwogCWJkYXRhLT5ub2RlX2Jvb3RtZW1fbWFwID0gTlVMTDsKZGlmZiAtdXJOIGxpbnV4 LTIuNi4wLXRlc3QxLWFjMS9tbS9wYWdlX2FsbG9jLmMgbGludXgtMi42LjAtdGVzdDEtYWMx LUJhZFJBTS9tbS9wYWdlX2FsbG9jLmMKLS0tIGxpbnV4LTIuNi4wLXRlc3QxLWFjMS9tbS9w YWdlX2FsbG9jLmMJMjAwMy0wNy0xNiAxNzo1NTo0MS4wMDAwMDAwMDAgKzAxMDAKKysrIGxp bnV4LTIuNi4wLXRlc3QxLWFjMS1CYWRSQU0vbW0vcGFnZV9hbGxvYy5jCTIwMDMtMDctMTUg MDM6MDI6MzIuMDAwMDAwMDAwICswMTAwCkBAIC0xMiw2ICsxMiw3IEBACiAgKiAgWm9uZSBi YWxhbmNpbmcsIEthbm9qIFNhcmNhciwgU0dJLCBKYW4gMjAwMAogICogIFBlciBjcHUgaG90 L2NvbGQgcGFnZSBsaXN0cywgYnVsayBhbGxvY2F0aW9uLCBNYXJ0aW4gSi4gQmxpZ2gsIFNl cHQgMjAwMgogICogICAgICAgICAgKGxvdHMgb2YgYml0cyBib3Jyb3dlZCBmcm9tIEluZ28g TW9sbmFyICYgQW5kcmV3IE1vcnRvbikKKyAqICBCYWRSQU0gaGFuZGxpbmcsIFJpY2sgdmFu IFJlaW4sIEZlYiAyMDAxCiAgKi8KIAogI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPgpAQCAt MTYxNSwzICsxNjE2LDk2IEBACiAJc2V0dXBfcGVyX3pvbmVfcGFnZXNfbWluKCk7CiAJcmV0 dXJuIDA7CiB9CisKKworI2lmZGVmIENPTkZJR19CQURSQU0KKworLyogR2l2ZW4gYSBwb2lu dGVkLWF0IGFkZHJlc3MgYW5kIGEgbWFzaywgaW5jcmVtZW50IHRoZSBwYWdlIHNvIHRoYXQg dGhlCisgKiBtYXNrIGhpZGVzIHRoZSBpbmNyZW1lbnQuIFJldHVybiAwIGlmIG5vIGluY3Jl bWVmIENPTkZJR19CQURSQU0KKwlwcmludGsoS0VSTl9JTkZGSUdfQkFEUkFNCisJCQkJCWlm ICghUGFnZUJhZChwYWdlKSkgeworCQkJCQkJc2V0X3BhZ2VfY291bnQocGFnZSwgMSk7CisJ CQkJCQlfX2ZyZWVfcGFnZShwYWdlKTsKKwkJCQkJfQorI2Vsc2UKKwogCQkJCQlzZXRfcGFn ZV9jb3VudChwYWdlLCAxKTsKIAkJCQkJX19mcmVlX3BhZ2UocGFnZSk7CisjZW5kaWYKIAkJ CQl9CiAJCQl9CiAJCX0gZWxzZSB7CkBAIC0yOTAsOCArMjk5LDE2IEBACiAJZm9yIChpID0g MDsgaSA8ICgoYmRhdGEtPm5vZGVfbG93X3Bmbi0oYmRhdGEtPm5vZGVfYm9vdF9zdGFydCA+ PiBQQUdFX1NISUZUKSkvOCArIFBBR0VfU0laRS0xKS9QQUdFX1NJWkU7IGkrKyxwYWdlKysp IHsKIAkJY291bnQrKzsKIAkJQ2xlYXJQYWdlUmVzZXJ2ZWQocGFnZSk7Ci0JCXNldF9wYWdl X2NvdW50KHBhZ2UsIDEpOworCisjaWZkZWYgQ09ORklHX0JBRFJBTQorCQlpZiAoIVBhZ2VC YWQocGFnZSkpIHsKKwkJCXNldF9wYWdlX2NvdW50KHBhZ2UsIDEpOworCQkJX19mcmVlX3Bh Z2UocGFnZSk7CisJCX0KKyNlbHNlCisgCQlzZXRfcGFnZV9jb3VudChwYWdlLCAxKTsKIAkJ X19mcmVlX3BhZ2UocGFnZSk7CisjZW5kaWYKIAl9CiAJdG90YWwgKz0gY291bnQ7CiAJYmRh dGEtPm5vZGVfYm9vdG1lbV9tYXAgPSBOVUxMOwpkaWZmIC11ck4gbGludXgtMi42LjAtdGVz dDEtYWMxL21tL3BhZ2VfYWxsb2MuYyBsaW51eC0yLjYuMC10ZXN0MS1hYzEtQmFkUkFNL21t L3BhZ2VfYWxsb2MuYwotLS0gbGludXgtMi42LjAtdGVzdDEtYWMxL21tL3BhZ2VfYWxsb2Mu YwkyMDAzLTA3LTE2IDE3OjU1OjQxLjAwMDAwMDAwMCArMDEwMAorKysgbGludXgtMi42LjAt dGVzdDEtYWMxLUJhZFJBTS9tbS9wYWdlX2FsbG9jLmMJMjAwMy0wNy0xNSAwMzowMjozMi4w MDAwMDAwMDAgKzAxMDAKQEAgLTEyLDYgKzEyLDcgQEAKICAqICBab25lIGJhbGFuY2luZywg S2Fub2ogU2FyY2FyLCBTR0ksIEphbiAyMDAwCiAgKiAgUGVyIGNwdSBob3QvY29sZCBwYWdl IGxpc3RzLCBidWxrIGFsbG9jYXRpb24sIE1hcnRpbiBKLiBCbGlnaCwgU2VwdCAyMDAyCiAg KiAgICAgICAgICAobG90cyBvZiBiaXRzIGJvcnJvd2VkIGZyb20gSW5nbyBNb2xuYXIgJiBB bmRyZXcgTW9ydG9uKQorICogIEJhZFJBTSBoYW5kbGluZywgUmljayB2YW4gUmVpbiwgRmVi IDIwMDEKICAqLwogCiAjaW5jbHVkZSA8bGludXgvY29uZmlnLmg+CkBAIC0xNjE1LDMgKzE2 MTYsOTYgQEAKIAlzZXR1cF9wZXJfem9uZV9wYWdlc19taW4oKTsKIAlyZXR1cm4gMDsKIH0K KworCisjaWZkZWYgQ09ORklHX0JBRFJBTQorCisvKiBHaXZlbiBhIHBvaW50ZWQtYXQgYWRk cmVzcyBhbmQgYSBtYXNrLCBpbmNyZW1lbnQgdGhlIHBhZ2Ugc28gdGhhdCB0aGUKKyAqIG1h c2sgaGlkZXMgdGhlIGluY3JlbWVudC4gUmV0dXJuIDAgaWYgbm8gaW5jcmVtLjYuMC10ZXN0 MS1hYzEvaW5jbHVkZS9saW51eC9wYWdlLUZJR19CQURSQU0KKwkJCQkJaWYgKCFQYWdlQmFk KHBhZ2UpKSB7CisJCQkJCQlzZXRfcGFnZV9jb3VudChwYWdlLCAxKTsKKwkJCQkJCV9fZnJl ZV9wYWdlKHBhZ2UpOworCQkJCQl9CisjZWxzZQorCiAJCQkJCXNldF9wYWdlX2NvdW50KHBh Z2UsIDEpOwogCQkJCQlfX2ZyZWVfcGFnZShwYWdlKTsKKyNlbmRpZgogCQkJCX0KIAkJCX0K IAkJfSBlbHNlIHsKQEAgLTI5MCw4ICsyOTksMTYgQEAKIAlmb3IgKGkgPSAwOyBpIDwgKChi ZGF0YS0+bm9kZV9sb3dfcGZuLShiZGF0YS0+bm9kZV9ib290X3N0YXJ0ID4+IFBBR0VfU0hJ RlQpKS84ICsgUEFHRV9TSVpFLTEpL1BBR0VfU0laRTsgaSsrLHBhZ2UrKykgewogCQljb3Vu dCsrOwogCQlDbGVhclBhZ2VSZXNlcnZlZChwYWdlKTsKLQkJc2V0X3BhZ2VfY291bnQocGFn ZSwgMSk7CisKKyNpZmRlZiBDT05GSUdfQkFEUkFNCisJCWlmICghUGFnZUJhZChwYWdlKSkg eworCQkJc2V0X3BhZ2VfY291bnQocGFnZSwgMSk7CisJCQlfX2ZyZWVfcGFnZShwYWdlKTsK KwkJfQorI2Vsc2UKKyAJCXNldF9wYWdlX2NvdW50KHBhZ2UsIDEpOwogCQlfX2ZyZWVfcGFn ZShwYWdlKTsKKyNlbmRpZgogCX0KIAl0b3RhbCArPSBjb3VudDsKIAliZGF0YS0+bm9kZV9i b290bWVtX21hcCA9IE5VTEw7CmRpZmYgLXVyTiBsaW51eC0yLjYuMC10ZXN0MS1hYzEvbW0v cGFnZV9hbGxvYy5jIGxpbnV4LTIuNi4wLXRlc3QxLWFjMS1CYWRSQU0vbW0vcGFnZV9hbGxv Yy5jCi0tLSBsaW51eC0yLjYuMC10ZXN0MS1hYzEvbW0vcGFnZV9hbGxvYy5jCTIwMDMtMDct MTYgMTc6NTU6NDEuMDAwMDAwMDAwICswMTAwCisrKyBsaW51eC0yLjYuMC10ZXN0MS1hYzEt QmFkUkFNL21tL3BhZ2VfYWxsb2MuYwkyMDAzLTA3LTE1IDAzOjAyOjMyLjAwMDAwMDAwMCAr MDEwMApAQCAtMTIsNiArMTIsNyBAQAogICogIFpvbmUgYmFsYW5jaW5nLCBLYW5vaiBTYXJj YXIsIFNHSSwgSmFuIDIwMDAKICAqICBQZXIgY3B1IGhvdC9jb2xkIHBhZ2UgbGlzdHMsIGJ1 bGsgYWxsb2NhdGlvbiwgTWFydGluIEouIEJsaWdoLCBTZXB0IDIwMDIKICAqICAgICAgICAg IChsb3RzIG9mIGJpdHMgYm9ycm93ZWQgZnJvbSBJbmdvIE1vbG5hciAmIEFuZHJldyBNb3J0 b24pCisgKiAgQmFkUkFNIGhhbmRsaW5nLCBSaWNrIHZhbiBSZWluLCBGZWIgMjAwMQogICov CiAKICNpbmNsdWRlIDxsaW51eC9jb25maWcuaD4KQEAgLTE2MTUsMyArMTYxNiw5NiBAQAog CXNldHVwX3Blcl96b25lX3BhZ2VzX21pbigpOwogCXJldHVybiAwOwogfQorCisKKyNpZmRl ZiBDT05GSUdfQkFEUkFNCisKKy8qIEdpdmVuIGEgcG9pbnRlZC1hdCBhZGRyZXNzIGFuZCBh IG1hc2ssIGluY3JlbWVudCB0aGUgcGFnZSBzbyB0aGF0IHRoZQorICogbWFzayBoaWRlcyB0 aGUgaW5jcmVtZW50LiBSZXR1cm4gMCBpZiBubyBpbmNyZW1yUGFnZVJlc2VydmVkKHBhZ2Up OworCisjaWZkZWYgQ09ORklHX0JBRFJBTQorCQkJCQlpZiAoIVBhZ2VCYWQocGFnZSkpIHsK KwkJCQkJCXNldF9wYWdlX2NvdW50KHBhZ2UsIDEpOworCQkJCQkJX19mcmVlX3BhZ2UocGFn ZSk7CisJCQkJCX0KKyNlbHNlCisKIAkJCQkJc2V0X3BhZ2VfY291bnQocGFnZSwgMSk7CiAJ CQkJCV9fZnJlZV9wYWdlKHBhZ2UpOworI2VuZGlmCiAJCQkJfQogCQkJfQogCQl9IGVsc2Ug ewpAQCAtMjkwLDggKzI5OSwxNiBAQAogCWZvciAoaSA9IDA7IGkgPCAoKGJkYXRhLT5ub2Rl X2xvd19wZm4tKGJkYXRhLT5ub2RlX2Jvb3Rfc3RhcnQgPj4gUEFHRV9TSElGVCkpLzggKyBQ QUdFX1NJWkUtMSkvUEFHRV9TSVpFOyBpKysscGFnZSsrKSB7CiAJCWNvdW50Kys7CiAJCUNs ZWFyUGFnZVJlc2VydmVkKHBhZ2UpOwotCQlzZXRfcGFnZV9jb3VudChwYWdlLCAxKTsKKwor I2lmZGVmIENPTkZJR19CQURSQU0KKwkJaWYgKCFQYWdlQmFkKHBhZ2UpKSB7CisJCQlzZXRf cGFnZV9jb3VudChwYWdlLCAxKTsKKwkJCV9fZnJlZV9wYWdlKHBhZ2UpOworCQl9CisjZWxz ZQorIAkJc2V0X3BhZ2VfY291bnQocGFnZSwgMSk7CiAJCV9fZnJlZV9wYWdlKHBhZ2UpOwor I2VuZGlmCiAJfQogCXRvdGFsICs9IGNvdW50OwogCWJkYXRhLT5ub2RlX2Jvb3RtZW1fbWFw ID0gTlVMTDsKZGlmZiAtdXJOIGxpbnV4LTIuNi4wLXRlc3QxLWFjMS9tbS9wYWdlX2FsbG9j LmMgbGludXgtMi42LjAtdGVzdDEtYWMxLUJhZFJBTS9tbS9wYWdlX2FsbG9jLmMKLS0tIGxp bnV4LTIuNi4wLXRlc3QxLWFjMS9tbS9wYWdlX2FsbG9jLmMJMjAwMy0wNy0xNiAxNzo1NTo0 MS4wMDAwMDAwMDAgKzAxMDAKKysrIGxpbnV4LTIuNi4wLXRlc3QxLWFjMS1CYWRSQU0vbW0v cGFnZV9hbGxvYy5jCTIwMDMtMDctMTUgMDM6MDI6MzIuMDAwMDAwMDAwICswMTAwCkBAIC0x Miw2ICsxMiw3IEBACiAgKiAgWm9uZSBiYWxhbmNpbmcsIEthbm9qIFNhcmNhciwgU0dJLCBK YW4gMjAwMAogICogIFBlciBjcHUgaG90L2NvbGQgcGFnZSBsaXN0cywgYnVsayBhbGxvY2F0 aW9uLCBNYXJ0aW4gSi4gQmxpZ2gsIFNlcHQgMjAwMgogICogICAgICAgICAgKGxvdHMgb2Yg Yml0cyBib3Jyb3dlZCBmcm9tIEluZ28gTW9sbmFyICYgQW5kcmV3IE1vcnRvbikKKyAqICBC YWRSQU0gaGFuZGxpbmcsIFJpY2sgdmFuIFJlaW4sIEZlYiAyMDAxCiAgKi8KIAogI2luY2x1 ZGUgPGxpbnV4L2NvbmZpZy5oPgpAQCAtMTYxNSwzICsxNjE2LDk2IEBACiAJc2V0dXBfcGVy X3pvbmVfcGFnZXNfbWluKCk7CiAJcmV0dXJuIDA7CiB9CisKKworI2lmZGVmIENPTkZJR19C QURSQU0KKworLyogR2l2ZW4gYSBwb2ludGVkLWF0IGFkZHJlc3MgYW5kIGEgbWFzaywgaW5j cmVtZW50IHRoZSBwYWdlIHNvIHRoYXQgdGhlCisgKiBtYXNrIGhpZGVzIHRoZSBpbmNyZW1l bnQuIFJldHVybiAwIGlmIG5vIGluY3JlbWVudCBpcyBwb3NzaWJsZS4KKyAqLworc3RhdGlj IGludCBfX2luaXQgbmV4dF9tYXNrZWRfYWRkcmVzcyAodW5zaWduZWQgbG9uZyAqYWRkcnAs IHVuc2lnbmVkIGxvbmcgbWFzaykKK3sKKyAgICAgICAgdW5zaWduZWQgbG9uZyBpbmM9MTsK KyAgICAgICAgdW5zaWduZWQgbG9uZyBuZXd2YWwgPSAqYWRkcnA7CisJd2hpbGUgKGluYyAm IG1hc2spCisJCWluYyArPSBpbmM7CisgICAgICAgIHdoaWxlIChpbmMgIT0gMCkgeworCQlu ZXd2YWwgKz0gaW5jOworCQluZXd2YWwgJj0gfm1hc2s7CisJCW5ld3ZhbCB8PSAoKCphZGRy cCkgJiBtYXNrKTsKKwkJaWYgKG5ld3ZhbCA+ICphZGRycCkgeworCQkJKmFkZHJwID0gbmV3 dmFsOworCQkJcmV0dXJuIDE7CisJCX0KKwkJZG8geworCQkJaW5jICs9IGluYzsKKwkJfSB3 aGlsZSAoaW5jICYgfm1hc2spOworCQl3aGlsZSAoaW5jICYgbWFzaykKKwkJCWluYyArPSBp bmM7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7Cit9CisKKwordm9pZCBfX2luaXQg YmFkcmFtX21hcmtwYWdlcyAoaW50IGFyZ2MsIHVuc2lnbmVkIGxvbmcgKmFyZ3YpIHsKKwl1 bnNpZ25lZCBsb25nIGFkZHIsIG1hc2s7CisgICAgICAgIHdoaWxlIChhcmdjLS0gPiAwKSB7 CisgICAgICAgICAgICAgICAgYWRkciA9ICphcmd2Kys7CisgICAgICAgICAgICAgICAgbWFz ayA9IChhcmdjLS0gPiAwKSA/ICphcmd2KysgOiB+MEw7CisgICAgICAgICAgICAgICAgbWFz ayB8PSB+UEFHRV9NQVNLOwkvLyBPcHRpbWFsaXNhdGlvbgorCQlhZGRyICY9IG1hc2s7CQkv LyAgTm9ybWFsaXNhdGlvbgorICAgICAgICAgICAgICAgIGRvIHsKKwkJCXN0cnVjdCBwYWdl ICpwZyA9IHBoeXNfdG9fcGFnZShhZGRyKTsKK3ByaW50ayAoIiUwNWx4ICIsIF9fcGEoX192 YShhZGRyKSkgPj4gUEFHRV9TSElGVCk7CitwcmludGsgKCI9JTA1bHgvJTA1bHggIiwgKHVu c2lnbmVkIGxvbmcpIChwZy1tZW1fbWFwKSwgbWF4X21hcG5yKTsKKwkJCS8vIGlmIChWQUxJ RF9QQUdFKHBnKSkgeworCQkJCWlmIChQYWdlVGVzdGFuZFNldEJhZCAocGcpKSB7CisJCQkJ CXJlc2VydmVfYm9vdG1lbSAoYWRkciwgUEFHRV9TSVpFKTsKK3ByaW50ayAoIkJBRCAiKTsK KwkJCQl9CitlbHNlIHByaW50ayAoIkJGUiAiKTsKKwkJCS8vIH0KKy8vIGVsc2UgcHJpbnRr ICgiSU5WICIpOworICAgICAgICAgICAgICAgIH0gd2hpbGUgKG5leHRfbWFza2VkX2FkZHJl c3MgKCZhZGRyLG1hc2spKTsKKyAgICAgICAgfQorfQorCisKKworLyoqKioqKioqKioqIENP TkZJR19CQURSQU06IENVU1RPTUlTQUJMRSBTRUNUSU9OIFNUQVJUUyBIRVJFICoqKioqKioq KioqKioqKioqKi8KKworCisvLyBFbnRlciB5b3VyIGN1c3RvbSBCYWRSQU0gcGF0dGVybnMg aGVyZSBhcyBwYWlycyBvZiB1bnNpZ25lZCBsb25nIGludGVnZXJzLgorLy8gRm9yIG1vcmUg aW5mb3JtYXRpb24gb24gdGhlc2UgRi9NIHBhaXJzLCByZWZlciB0byBEb2N1bWVudGF0aW9u L2JhZHJhbS50eHQKKworCitzdGF0aWMgdW5zaWduZWQgbG9uZyBfX2RldmluaXRkYXRhIGJh ZHJhbV9jdXN0b21bXSA9IHsKKwkwLAkvLyBOdW1iZXIgb2YgbG9uZ3dvcmRzIHRoYXQgZm9s bG93LCBhcyBGL00gcGFpcnMKK307CisKKworLyoqKioqKioqKioqIENPTkZJR19CQURSQU06 IENVU1RPTUlTQUJMRSBTRUNUSU9OIEVORFMgSEVSRSAqKioqKioqKioqKioqKioqKioqKi8K KworCisKK3N0YXRpYyBpbnQgX19pbml0IGJhZHJhbV9zZXR1cCAoY2hhciAqc3RyKQorewor CXVuc2lnbmVkIGxvbmcgb3B0c1szXTsKKwlpZiAoIW1lbV9tYXApIEJVRygpOworcHJpbnRr ICgiUEFHRV9PRkZTRVQ9MHglMDhseFxuIiwgUEFHRV9PRkZTRVQpOworcHJpbnRrICgiQmFk UkFNIG9wdGlvbiBpcyAlc1xuIiwgc3RyKTsKKwlpZiAoKnN0cisrID09ICc9JykKKwkJd2hp bGUgKHN0cj1nZXRfb3B0aW9ucyAoc3RyLCAzLCAoaW50ICopIG9wdHMpLCAqb3B0cykgewor cHJpbnRrICgiICAgLS0+IG1hcmtpbmcgMHglMDhseCwgMHglMDhseCAgWyVsZF1cbiIsIG9w dHNbMV0sIG9wdHNbMl0sIG9wdHNbMF0pOworCQkJYmFkcmFtX21hcmtwYWdlcyAoKm9wdHMs IG9wdHMrMSk7CisJCQlpZiAoKm9wdHM9PTEpCisJCQkJYnJlYWs7CisJCX07CisJYmFkcmFt X21hcmtwYWdlcyAoKmJhZHJhbV9jdXN0b20sIGJhZHJhbV9jdXN0b20rMSk7CisJcmV0dXJu IDA7Cit9CisKK19fc2V0dXAoImJhZHJhbSIsIGJhZHJhbV9zZXR1cCk7CisKKyNlbmRpZiAv KiBDT05GSUdfQkFEUkFNICovCisK ------=____1058389170363_DLbs9MDHyX--