Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v2,2/2] x86: disable IRQs before changing CR4 From: Nadav Amit Message-Id: <20171125032907.2241-3-namit@vmware.com> Date: Fri, 24 Nov 2017 19:29:07 -0800 To: linux-kernel@vger.kernel.org, linux-edac@vger.kernel.org Cc: nadav.amit@gmail.com, Nadav Amit , Andy Lutomirski , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , x86@kernel.org, Tony Luck , Borislav Petkov , Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= List-ID: Q1I0IGNoYW5nZXMgbmVlZCB0byBiZSBwZXJmb3JtZWQgd2hpbGUgSVJRcyBhcmUgZGlzYWJsZWQg aW4gb3JkZXIgdG8KdXBkYXRlIHRoZSBDUjQgc2hhZG93IGFuZCB0aGUgYWN0dWFsIHJlZ2lzdGVy IGF0b21pY2FsbHkuIEFjdHVhbGx5LCB0aGV5CmFyZSBuZWVkZWQgcmVnYXJkbGVzcyBvZiBDUjQg c2hhZG93aW5nLCBzaW5jZSBDUjQgYXJlIHBlcmZvcm1lZCBpbiBhCnJlYWQtbW9kaWZ5LXdyaXRl IG1hbm5lci4KCkN1cnJlbnRseSwgaG93ZXZlciwgdGhpcyBpcyBub3QgdGhlIGNhc2UsIGFzIGNh biBiZSBleHBlcmllbmNlZCBieQphZGRpbmcgd2FybmluZ3Mgd2hlbiBDUjQgdXBkYXRlcyBhcmUg cGVyZm9ybWVkIGFuZCBpbnRlcnJ1cHRzIGFyZQplbmFibGVkLiBJdCBhbHNvIGFwcGVhcnMgdGhh dCBDUjQgY2hhbmdlcyB3aXRoIGVuYWJsZWQgaW50ZXJydXB0cyBjYW4gYmUKdHJpZ2dlcmVkIGJ5 IHRoZSB1c2VyIChQUl9TRVRfVFNDKS4KCklmIENSNCB1cGRhdGVzIGFyZSBkb25lIHdoaWxlIGlu dGVycnVwdHMgYXJlIGVuYWJsZWQsIGFuIGludGVycnVwdCBjYW4KYmUgZGVsaXZlcmVkIGJldHdl ZW4gdGhlIENSNCByZWFkIGFuZCB0aGUgY29ycmVzcG9uZGluZyB3cml0ZSBvZiB0aGUKbW9kaWZp ZWQgdmFsdWUgdG8gQ1I0LiBJZiB0aGUgaW50ZXJydXB0IGhhbmRsZXIgY2hhbmdlcyBDUjQsIHRo ZSB3cml0ZQp3b3VsZCBpZ25vcmUgdGhlIG1vZGlmaWVkIHZhbHVlLgoKSXQgaXMgbm90IGNsZWFy IHRoZXJlIGFyZSBjdXJyZW50bHkgaW50ZXJydXB0IGhhbmRsZXJzIHRoYXQgbW9kaWZ5IENSNAph bmQgZG8gbm90IHJlc3RvcmUgaW1tZWRpYXRlbHkgdGhlIG9yaWdpbmFsIHZhbHVlLCBidXQgdGhl cmUgaXMgYW4KaW50ZXJydXB0IGhhbmRsZXIgdGhhdCBjaGFuZ2VzIENSNCwgd2hlbiBnbG9iYWwg UFRFcyBhcmUgaW52YWxpZGF0ZWQuCk1vcmVvdmVyLCBhIHJlY2VudCBwYXRjaCBjb25zaWRlcmVk IGRvaW5nIGNoYW5nZSBDUjQgaW5zaWRlIHRoZQppbnRlcnJ1cHQgaGFuZGxlciwgZW1waGFzaXpp bmcgdGhhdCB0aGUgY3VycmVudCBzY2hlbWUgaXMgZXJyb3ItcHJvbmUuCgpQcmV2ZW50IHRoZSBp c3N1ZSBieTogYWRkaW5nIGEgZGVidWcgd2FybmluZyBpZiBDUjQgaXMgdXBkYXRlZCB3aXRoCmVu YWJsZWQgaW50ZXJydXB0czsgY2hhbmdpbmcgQ1I0IG1hbmlwdWxhdGlvbiBmdW5jdGlvbiBuYW1l cyB0byByZWZsZWN0CnRoZSBmYWN0IHRoZXkgbmVlZCBkaXNhYmxlZCBJUlFzIGFuZCBmaXggdGhl IGNhbGxlcnMuCgpOb3RlIHRoYXQgaW4gc29tZSBjYXNlcywgZS5nLiwga3ZtX2NwdV92bXhvbigp LCBpdCBhcHBlYXJzIHRoYXQgc2F2aW5nCmFuZCByZXN0b3JpbmcgdGhlIElSUXMgY291bGQgaGF2 ZSBiZWVuIHNwYXJlZC4gWWV0LCBzaW5jZSB0aGVzZSBjYWxscyBkbwpub3QgYXBwZWFyIHRvIGJl IG9uIHRoZSBob3QgcGF0aCwgc2F2ZSBhbmQgcmVzdG9yZSB0aGUgSVJRcyB0byBiZSBvbiB0aGUK c2FmZSBzaWRlLgoKQ2M6IEFuZHkgTHV0b21pcnNraSA8bHV0b0BrZXJuZWwub3JnPgpDYzogVGhv bWFzIEdsZWl4bmVyIDx0Z2x4QGxpbnV0cm9uaXguZGU+CkNjOiBJbmdvIE1vbG5hciA8bWluZ29A cmVkaGF0LmNvbT4KQ2M6ICJILiBQZXRlciBBbnZpbiIgPGhwYUB6eXRvci5jb20+CkNjOiB4ODZA a2VybmVsLm9yZwpDYzogVG9ueSBMdWNrIDx0b255Lmx1Y2tAaW50ZWwuY29tPgpDYzogQm9yaXNs YXYgUGV0a292IDxicEBhbGllbjguZGU+CkNjOiBQYW9sbyBCb256aW5pIDxwYm9uemluaUByZWRo YXQuY29tPgpDYzogIlJhZGltIEtyxI1tw6HFmSIgPHJrcmNtYXJAcmVkaGF0LmNvbT4KClNpZ25l ZC1vZmYtYnk6IE5hZGF2IEFtaXQgPG5hbWl0QHZtd2FyZS5jb20+Ci0tLQogYXJjaC94ODYvaW5j bHVkZS9hc20vbW11X2NvbnRleHQuaCAgIHwgIDQgKystLQogYXJjaC94ODYvaW5jbHVkZS9hc20v dGxiZmx1c2guaCAgICAgIHwgMTYgKysrKysrKysrKystLS0tCiBhcmNoL3g4Ni9pbmNsdWRlL2Fz bS92aXJ0ZXh0LmggICAgICAgfCAgMiArLQogYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYyAg ICAgICAgIHwgMzggKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCiBhcmNoL3g4 Ni9rZXJuZWwvY3B1L21jaGVjay9tY2UuYyAgICAgfCAgNSArKysrLQogYXJjaC94ODYva2VybmVs L2NwdS9tY2hlY2svcDUuYyAgICAgIHwgIDYgKysrKystCiBhcmNoL3g4Ni9rZXJuZWwvY3B1L21j aGVjay93aW5jaGlwLmMgfCAgNSArKysrLQogYXJjaC94ODYva2VybmVsL2ZwdS9pbml0LmMgICAg ICAgICAgIHwgIDIgKy0KIGFyY2gveDg2L2tlcm5lbC9mcHUveHN0YXRlLmMgICAgICAgICB8ICA0 ICsrLS0KIGFyY2gveDg2L2tlcm5lbC9wcm9jZXNzLmMgICAgICAgICAgICB8IDIwICsrKysrKysr KysrKysrLS0tLS0KIGFyY2gveDg2L2tlcm5lbC9yZWJvb3QuYyAgICAgICAgICAgICB8ICAyICst CiBhcmNoL3g4Ni9rdm0vdm14LmMgICAgICAgICAgICAgICAgICAgfCAxMyArKysrKysrKysrLS0K IGFyY2gveDg2L21tL2luaXQuYyAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysrLQogMTMgZmls ZXMgY2hhbmdlZCwgOTEgaW5zZXJ0aW9ucygrKSwgMzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vbW11X2NvbnRleHQuaCBiL2FyY2gveDg2L2luY2x1ZGUv YXNtL21tdV9jb250ZXh0LmgKaW5kZXggNjY5OWZjNDQxNjQ0Li42MzdjYmRhNzdlZGEgMTAwNjQ0 Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL21tdV9jb250ZXh0LmgKKysrIGIvYXJjaC94ODYv aW5jbHVkZS9hc20vbW11X2NvbnRleHQuaApAQCAtMzAsOSArMzAsOSBAQCBzdGF0aWMgaW5saW5l IHZvaWQgbG9hZF9tbV9jcjQoc3RydWN0IG1tX3N0cnVjdCAqbW0pCiB7CiAJaWYgKHN0YXRpY19r ZXlfZmFsc2UoJnJkcG1jX2Fsd2F5c19hdmFpbGFibGUpIHx8CiAJICAgIGF0b21pY19yZWFkKCZt bS0+Y29udGV4dC5wZXJmX3JkcG1jX2FsbG93ZWQpKQotCQljcjRfc2V0X2JpdHMoWDg2X0NSNF9Q Q0UpOworCQljcjRfc2V0X2JpdHNfaXJxc19vZmYoWDg2X0NSNF9QQ0UpOwogCWVsc2UKLQkJY3I0 X2NsZWFyX2JpdHMoWDg2X0NSNF9QQ0UpOworCQljcjRfY2xlYXJfYml0c19pcnFzX29mZihYODZf Q1I0X1BDRSk7CiB9CiAjZWxzZQogc3RhdGljIGlubGluZSB2b2lkIGxvYWRfbW1fY3I0KHN0cnVj dCBtbV9zdHJ1Y3QgKm1tKSB7fQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vdGxi Zmx1c2guaCBiL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RsYmZsdXNoLmgKaW5kZXggZTczNmY3ZjBi YTkyLi42Yjk0ZGNmOGM1MDAgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3RsYmZs dXNoLmgKKysrIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vdGxiZmx1c2guaApAQCAtMTc1LDEyICsx NzUsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIGNyNF9pbml0X3NoYWRvdyh2b2lkKQogCiBzdGF0 aWMgaW5saW5lIHZvaWQgX19jcjRfc2V0KHVuc2lnbmVkIGxvbmcgY3I0KQogeworI2lmZGVmIENP TkZJR19MT0NLREVQCisJV0FSTl9PTighaXJxc19kaXNhYmxlZCgpKTsKKyNlbmRpZgogCXRoaXNf Y3B1X3dyaXRlKGNwdV90bGJzdGF0ZS5jcjQsIGNyNCk7CiAJX193cml0ZV9jcjQoY3I0KTsKIH0K IAogLyogU2V0IGluIHRoaXMgY3B1J3MgQ1I0LiAqLwotc3RhdGljIGlubGluZSB2b2lkIGNyNF9z ZXRfYml0cyh1bnNpZ25lZCBsb25nIG1hc2spCitzdGF0aWMgaW5saW5lIHZvaWQgY3I0X3NldF9i aXRzX2lycXNfb2ZmKHVuc2lnbmVkIGxvbmcgbWFzaykKIHsKIAl1bnNpZ25lZCBsb25nIGNyNDsK IApAQCAtMTkwLDcgKzE5Myw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBjcjRfc2V0X2JpdHModW5z aWduZWQgbG9uZyBtYXNrKQogfQogCiAvKiBDbGVhciBpbiB0aGlzIGNwdSdzIENSNC4gKi8KLXN0 YXRpYyBpbmxpbmUgdm9pZCBjcjRfY2xlYXJfYml0cyh1bnNpZ25lZCBsb25nIG1hc2spCitzdGF0 aWMgaW5saW5lIHZvaWQgY3I0X2NsZWFyX2JpdHNfaXJxc19vZmYodW5zaWduZWQgbG9uZyBtYXNr KQogewogCXVuc2lnbmVkIGxvbmcgY3I0OwogCkBAIC0xOTksNyArMjAyLDcgQEAgc3RhdGljIGlu bGluZSB2b2lkIGNyNF9jbGVhcl9iaXRzKHVuc2lnbmVkIGxvbmcgbWFzaykKIAkJX19jcjRfc2V0 KGNyNCAmIH5tYXNrKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGNyNF90b2dnbGVfYml0cyh1 bnNpZ25lZCBsb25nIG1hc2spCitzdGF0aWMgaW5saW5lIHZvaWQgY3I0X3RvZ2dsZV9iaXRzX2ly cXNfb2ZmKHVuc2lnbmVkIGxvbmcgbWFzaykKIHsKIAl1bnNpZ25lZCBsb25nIGNyNDsKIApAQCAt MjI0LDEwICsyMjcsMTUgQEAgZXh0ZXJuIHUzMiAqdHJhbXBvbGluZV9jcjRfZmVhdHVyZXM7CiAK IHN0YXRpYyBpbmxpbmUgdm9pZCBjcjRfc2V0X2JpdHNfYW5kX3VwZGF0ZV9ib290KHVuc2lnbmVk IGxvbmcgbWFzaykKIHsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCiAJbW11X2NyNF9mZWF0dXJl cyB8PSBtYXNrOwogCWlmICh0cmFtcG9saW5lX2NyNF9mZWF0dXJlcykKIAkJKnRyYW1wb2xpbmVf Y3I0X2ZlYXR1cmVzID0gbW11X2NyNF9mZWF0dXJlczsKLQljcjRfc2V0X2JpdHMobWFzayk7CisK Kwlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CisJY3I0X3NldF9iaXRzX2lycXNfb2ZmKG1hc2spOwor CWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKIH0KIAogZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZV90 bGJzdGF0ZV9hbmRfZmx1c2godm9pZCk7CmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9pbmNsdWRlL2Fz bS92aXJ0ZXh0LmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS92aXJ0ZXh0LmgKaW5kZXggMDExNmIy ZWU5ZTY0Li5iNDAzY2E0MTdiN2QgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNtL3Zp cnRleHQuaAorKysgYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS92aXJ0ZXh0LmgKQEAgLTQxLDcgKzQx LDcgQEAgc3RhdGljIGlubGluZSBpbnQgY3B1X2hhc192bXgodm9pZCkKIHN0YXRpYyBpbmxpbmUg dm9pZCBjcHVfdm14b2ZmKHZvaWQpCiB7CiAJYXNtIHZvbGF0aWxlIChBU01fVk1YX1ZNWE9GRiA6 IDogOiAiY2MiKTsKLQljcjRfY2xlYXJfYml0cyhYODZfQ1I0X1ZNWEUpOworCWNyNF9jbGVhcl9i aXRzX2lycXNfb2ZmKFg4Nl9DUjRfVk1YRSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgaW50IGNwdV92 bXhfZW5hYmxlZCh2b2lkKQpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2VybmVsL2NwdS9jb21tb24u YyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMKaW5kZXggYzkxNzZiYWU3ZmQ4Li5mMzE4 OTA3ODdkMDEgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvY29tbW9uLmMKKysrIGIv YXJjaC94ODYva2VybmVsL2NwdS9jb21tb24uYwpAQCAtMzAyLDggKzMwMiwxNCBAQCBfX3NldHVw KCJub3NtZXAiLCBzZXR1cF9kaXNhYmxlX3NtZXApOwogCiBzdGF0aWMgX19hbHdheXNfaW5saW5l IHZvaWQgc2V0dXBfc21lcChzdHJ1Y3QgY3B1aW5mb194ODYgKmMpCiB7Ci0JaWYgKGNwdV9oYXMo YywgWDg2X0ZFQVRVUkVfU01FUCkpCi0JCWNyNF9zZXRfYml0cyhYODZfQ1I0X1NNRVApOworCXVu c2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoIWNwdV9oYXMoYywgWDg2X0ZFQVRVUkVfU01FUCkp CisJCXJldHVybjsKKworCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKKwljcjRfc2V0X2JpdHNfaXJx c19vZmYoWDg2X0NSNF9TTUVQKTsKKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CiB9CiAKIHN0 YXRpYyBfX2luaXQgaW50IHNldHVwX2Rpc2FibGVfc21hcChjaGFyICphcmcpCkBAIC0zMjAsMTMg KzMyNiwxNiBAQCBzdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWQgc2V0dXBfc21hcChzdHJ1Y3Qg Y3B1aW5mb194ODYgKmMpCiAJLyogVGhpcyBzaG91bGQgaGF2ZSBiZWVuIGNsZWFyZWQgbG9uZyBh Z28gKi8KIAlCVUdfT04oZWZsYWdzICYgWDg2X0VGTEFHU19BQyk7CiAKLQlpZiAoY3B1X2hhcyhj LCBYODZfRkVBVFVSRV9TTUFQKSkgeworCWlmICghY3B1X2hhcyhjLCBYODZfRkVBVFVSRV9TTUFQ KSkKKwkJcmV0dXJuOworCisJbG9jYWxfaXJxX3NhdmUoZWZsYWdzKTsKICNpZmRlZiBDT05GSUdf WDg2X1NNQVAKLQkJY3I0X3NldF9iaXRzKFg4Nl9DUjRfU01BUCk7CisJY3I0X3NldF9iaXRzX2ly cXNfb2ZmKFg4Nl9DUjRfU01BUCk7CiAjZWxzZQotCQljcjRfY2xlYXJfYml0cyhYODZfQ1I0X1NN QVApOworCWNyNF9jbGVhcl9iaXRzX2lycXNfb2ZmKFg4Nl9DUjRfU01BUCk7CiAjZW5kaWYKLQl9 CisJbG9jYWxfaXJxX3Jlc3RvcmUoZWZsYWdzKTsKIH0KIAogLyoKQEAgLTMzNiw2ICszNDUsOCBA QCBzdGF0aWMgYm9vbCBwa3VfZGlzYWJsZWQ7CiAKIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9p ZCBzZXR1cF9wa3Uoc3RydWN0IGNwdWluZm9feDg2ICpjKQogeworCXVuc2lnbmVkIGxvbmcgZmxh Z3M7CisKIAkvKiBjaGVjayB0aGUgYm9vdCBwcm9jZXNzb3IsIHBsdXMgY29tcGlsZSBvcHRpb25z IGZvciBQS1U6ICovCiAJaWYgKCFjcHVfZmVhdHVyZV9lbmFibGVkKFg4Nl9GRUFUVVJFX1BLVSkp CiAJCXJldHVybjsKQEAgLTM0NSw3ICszNTYsMTAgQEAgc3RhdGljIF9fYWx3YXlzX2lubGluZSB2 b2lkIHNldHVwX3BrdShzdHJ1Y3QgY3B1aW5mb194ODYgKmMpCiAJaWYgKHBrdV9kaXNhYmxlZCkK IAkJcmV0dXJuOwogCi0JY3I0X3NldF9iaXRzKFg4Nl9DUjRfUEtFKTsKKwlsb2NhbF9pcnFfc2F2 ZShmbGFncyk7CisJY3I0X3NldF9iaXRzX2lycXNfb2ZmKFg4Nl9DUjRfUEtFKTsKKwlsb2NhbF9p cnFfcmVzdG9yZShmbGFncyk7CisKIAkvKgogCSAqIFNldGluZyBYODZfQ1I0X1BLRSB3aWxsIGNh dXNlIHRoZSBYODZfRkVBVFVSRV9PU1BLRQogCSAqIGNwdWlkIGJpdCB0byBiZSBzZXQuICBXZSBu ZWVkIHRvIGVuc3VyZSB0aGF0IHdlCkBAIC0xMTQ3LDcgKzExNjEsMTAgQEAgc3RhdGljIHZvaWQg aWRlbnRpZnlfY3B1KHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKIAkvKiBEaXNhYmxlIHRoZSBQTiBp ZiBhcHByb3ByaWF0ZSAqLwogCXNxdWFzaF90aGVfc3R1cGlkX3NlcmlhbF9udW1iZXIoYyk7CiAK LQkvKiBTZXQgdXAgU01FUC9TTUFQICovCisJLyoKKwkgKiBTZXQgdXAgU01FUC9TTUFQLiBEaXNh YmxlIGludGVycnVwdHMgdG8gcHJldmVudCB0cmlnZ2VyaW5nIGEgd2FybmluZworCSAqIGFzIENS NCBjaGFuZ2VzIG11c3QgYmUgZG9uZSB3aXRoIGRpc2FibGVkIGludGVycnVwdHMuCisJICovCiAJ c2V0dXBfc21lcChjKTsKIAlzZXR1cF9zbWFwKGMpOwogCkBAIC0xNTIwLDcgKzE1MzcsNyBAQCB2 b2lkIGNwdV9pbml0KHZvaWQpCiAKIAlwcl9kZWJ1ZygiSW5pdGlhbGl6aW5nIENQVSMlZFxuIiwg Y3B1KTsKIAotCWNyNF9jbGVhcl9iaXRzKFg4Nl9DUjRfVk1FfFg4Nl9DUjRfUFZJfFg4Nl9DUjRf VFNEfFg4Nl9DUjRfREUpOworCWNyNF9jbGVhcl9iaXRzX2lycXNfb2ZmKFg4Nl9DUjRfVk1FfFg4 Nl9DUjRfUFZJfFg4Nl9DUjRfVFNEfFg4Nl9DUjRfREUpOwogCiAJLyoKIAkgKiBJbml0aWFsaXpl IHRoZSBwZXItQ1BVIEdEVCB3aXRoIHRoZSBib290IEdEVCwKQEAgLTE2MTMsNyArMTYzMCw4IEBA IHZvaWQgY3B1X2luaXQodm9pZCkKIAlpZiAoY3B1X2ZlYXR1cmVfZW5hYmxlZChYODZfRkVBVFVS RV9WTUUpIHx8CiAJICAgIGJvb3RfY3B1X2hhcyhYODZfRkVBVFVSRV9UU0MpIHx8CiAJICAgIGJv b3RfY3B1X2hhcyhYODZfRkVBVFVSRV9ERSkpCi0JCWNyNF9jbGVhcl9iaXRzKFg4Nl9DUjRfVk1F fFg4Nl9DUjRfUFZJfFg4Nl9DUjRfVFNEfFg4Nl9DUjRfREUpOworCQljcjRfY2xlYXJfYml0c19p cnFzX29mZihYODZfQ1I0X1ZNRXxYODZfQ1I0X1BWSXxYODZfQ1I0X1RTRHwKKwkJCQkJWDg2X0NS NF9ERSk7CiAKIAlsb2FkX2N1cnJlbnRfaWR0KCk7CiAJc3dpdGNoX3RvX25ld19nZHQoY3B1KTsK ZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jIGIvYXJjaC94ODYv a2VybmVsL2NwdS9tY2hlY2svbWNlLmMKaW5kZXggM2I0MTMwNjVjNjEzLi4xYWFjMTk2ZWIxNDUg MTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jCisrKyBiL2FyY2gv eDg2L2tlcm5lbC9jcHUvbWNoZWNrL21jZS5jCkBAIC0xNTA4LDYgKzE1MDgsNyBAQCBzdGF0aWMg dm9pZCBfX21jaGVja19jcHVfaW5pdF9nZW5lcmljKHZvaWQpCiB7CiAJZW51bSBtY3BfZmxhZ3Mg bV9mbCA9IDA7CiAJbWNlX2JhbmtzX3QgYWxsX2JhbmtzOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7 CiAJdTY0IGNhcDsKIAogCWlmICghbWNhX2NmZy5ib290bG9nKQpAQCAtMTUxOSw3ICsxNTIwLDkg QEAgc3RhdGljIHZvaWQgX19tY2hlY2tfY3B1X2luaXRfZ2VuZXJpYyh2b2lkKQogCWJpdG1hcF9m aWxsKGFsbF9iYW5rcywgTUFYX05SX0JBTktTKTsKIAltYWNoaW5lX2NoZWNrX3BvbGwoTUNQX1VD IHwgbV9mbCwgJmFsbF9iYW5rcyk7CiAKLQljcjRfc2V0X2JpdHMoWDg2X0NSNF9NQ0UpOworCWxv Y2FsX2lycV9zYXZlKGZsYWdzKTsKKwljcjRfc2V0X2JpdHNfaXJxc19vZmYoWDg2X0NSNF9NQ0Up OworCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKIAogCXJkbXNybChNU1JfSUEzMl9NQ0dfQ0FQ LCBjYXApOwogCWlmIChjYXAgJiBNQ0dfQ1RMX1ApCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9rZXJu ZWwvY3B1L21jaGVjay9wNS5jIGIvYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svcDUuYwppbmRl eCA1Y2RkZjgzMTcyMGYuLmU0YmI5NTczY2ZlNSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVs L2NwdS9tY2hlY2svcDUuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvY3B1L21jaGVjay9wNS5jCkBA IC00Myw2ICs0Myw3IEBAIHN0YXRpYyB2b2lkIHBlbnRpdW1fbWFjaGluZV9jaGVjayhzdHJ1Y3Qg cHRfcmVncyAqcmVncywgbG9uZyBlcnJvcl9jb2RlKQogLyogU2V0IHVwIG1hY2hpbmUgY2hlY2sg cmVwb3J0aW5nIGZvciBwcm9jZXNzb3JzIHdpdGggSW50ZWwgc3R5bGUgTUNFOiAqLwogdm9pZCBp bnRlbF9wNV9tY2hlY2tfaW5pdChzdHJ1Y3QgY3B1aW5mb194ODYgKmMpCiB7CisJdW5zaWduZWQg bG9uZyBmbGFnczsKIAl1MzIgbCwgaDsKIAogCS8qIERlZmF1bHQgUDUgdG8gb2ZmIGFzIGl0cyBv ZnRlbiBtaXNjb25uZWN0ZWQ6ICovCkBAIC02Myw3ICs2NCwxMCBAQCB2b2lkIGludGVsX3A1X21j aGVja19pbml0KHN0cnVjdCBjcHVpbmZvX3g4NiAqYykKIAlwcl9pbmZvKCJJbnRlbCBvbGQgc3R5 bGUgbWFjaGluZSBjaGVjayBhcmNoaXRlY3R1cmUgc3VwcG9ydGVkLlxuIik7CiAKIAkvKiBFbmFi bGUgTUNFOiAqLwotCWNyNF9zZXRfYml0cyhYODZfQ1I0X01DRSk7CisJbG9jYWxfaXJxX3NhdmUo ZmxhZ3MpOworCWNyNF9zZXRfYml0c19pcnFzX29mZihYODZfQ1I0X01DRSk7CisJbG9jYWxfaXJx X3Jlc3RvcmUoZmxhZ3MpOworCiAJcHJfaW5mbygiSW50ZWwgb2xkIHN0eWxlIG1hY2hpbmUgY2hl Y2sgcmVwb3J0aW5nIGVuYWJsZWQgb24gQ1BVIyVkLlxuIiwKIAkJc21wX3Byb2Nlc3Nvcl9pZCgp KTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL3dpbmNoaXAuYyBi L2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL3dpbmNoaXAuYwppbmRleCAzYjQ1YjI3MGE4NjUu LjcyMjEzZDc1Yzg2NSAxMDA2NDQKLS0tIGEvYXJjaC94ODYva2VybmVsL2NwdS9tY2hlY2svd2lu Y2hpcC5jCisrKyBiL2FyY2gveDg2L2tlcm5lbC9jcHUvbWNoZWNrL3dpbmNoaXAuYwpAQCAtMjcs NiArMjcsNyBAQCBzdGF0aWMgdm9pZCB3aW5jaGlwX21hY2hpbmVfY2hlY2soc3RydWN0IHB0X3Jl Z3MgKnJlZ3MsIGxvbmcgZXJyb3JfY29kZSkKIC8qIFNldCB1cCBtYWNoaW5lIGNoZWNrIHJlcG9y dGluZyBvbiB0aGUgV2luY2hpcCBDNiBzZXJpZXMgKi8KIHZvaWQgd2luY2hpcF9tY2hlY2tfaW5p dChzdHJ1Y3QgY3B1aW5mb194ODYgKmMpCiB7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKIAl1MzIg bG8sIGhpOwogCiAJbWFjaGluZV9jaGVja192ZWN0b3IgPSB3aW5jaGlwX21hY2hpbmVfY2hlY2s7 CkBAIC0zOCw3ICszOSw5IEBAIHZvaWQgd2luY2hpcF9tY2hlY2tfaW5pdChzdHJ1Y3QgY3B1aW5m b194ODYgKmMpCiAJbG8gJj0gfigxPDw0KTsJLyogRW5hYmxlIE1DRSAqLwogCXdybXNyKE1TUl9J RFRfRkNSMSwgbG8sIGhpKTsKIAotCWNyNF9zZXRfYml0cyhYODZfQ1I0X01DRSk7CisJbG9jYWxf aXJxX3NhdmUoZmxhZ3MpOworCWNyNF9zZXRfYml0c19pcnFzX29mZihYODZfQ1I0X01DRSk7CisJ bG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwogCiAJcHJfaW5mbygiV2luY2hpcCBtYWNoaW5lIGNo ZWNrIHJlcG9ydGluZyBlbmFibGVkIG9uIENQVSMwLlxuIik7CiB9CmRpZmYgLS1naXQgYS9hcmNo L3g4Ni9rZXJuZWwvZnB1L2luaXQuYyBiL2FyY2gveDg2L2tlcm5lbC9mcHUvaW5pdC5jCmluZGV4 IDdhZmZiN2UzZDlhNS4uZGI1N2IyMTdlMTIzIDEwMDY0NAotLS0gYS9hcmNoL3g4Ni9rZXJuZWwv ZnB1L2luaXQuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvZnB1L2luaXQuYwpAQCAtMjMsNyArMjMs NyBAQCBzdGF0aWMgdm9pZCBmcHVfX2luaXRfY3B1X2dlbmVyaWModm9pZCkKIAlpZiAoYm9vdF9j cHVfaGFzKFg4Nl9GRUFUVVJFX1hNTSkpCiAJCWNyNF9tYXNrIHw9IFg4Nl9DUjRfT1NYTU1FWENQ VDsKIAlpZiAoY3I0X21hc2spCi0JCWNyNF9zZXRfYml0cyhjcjRfbWFzayk7CisJCWNyNF9zZXRf Yml0c19pcnFzX29mZihjcjRfbWFzayk7CiAKIAljcjAgPSByZWFkX2NyMCgpOwogCWNyMCAmPSB+ KFg4Nl9DUjBfVFN8WDg2X0NSMF9FTSk7IC8qIGNsZWFyIFRTIGFuZCBFTSAqLwpkaWZmIC0tZ2l0 IGEvYXJjaC94ODYva2VybmVsL2ZwdS94c3RhdGUuYyBiL2FyY2gveDg2L2tlcm5lbC9mcHUveHN0 YXRlLmMKaW5kZXggZjFkNTQ3NmM5MDIyLi45ZDNjN2ExYTRjZTUgMTAwNjQ0Ci0tLSBhL2FyY2gv eDg2L2tlcm5lbC9mcHUveHN0YXRlLmMKKysrIGIvYXJjaC94ODYva2VybmVsL2ZwdS94c3RhdGUu YwpAQCAtMjM3LDcgKzIzNyw3IEBAIHZvaWQgZnB1X19pbml0X2NwdV94c3RhdGUodm9pZCkKIAog CXhmZWF0dXJlc19tYXNrICY9IH5YRkVBVFVSRV9NQVNLX1NVUEVSVklTT1I7CiAKLQljcjRfc2V0 X2JpdHMoWDg2X0NSNF9PU1hTQVZFKTsKKwljcjRfc2V0X2JpdHNfaXJxc19vZmYoWDg2X0NSNF9P U1hTQVZFKTsKIAl4c2V0YnYoWENSX1hGRUFUVVJFX0VOQUJMRURfTUFTSywgeGZlYXR1cmVzX21h c2spOwogfQogCkBAIC03MTMsNyArNzEzLDcgQEAgc3RhdGljIGludCBpbml0X3hzdGF0ZV9zaXpl KHZvaWQpCiBzdGF0aWMgdm9pZCBmcHVfX2luaXRfZGlzYWJsZV9zeXN0ZW1feHN0YXRlKHZvaWQp CiB7CiAJeGZlYXR1cmVzX21hc2sgPSAwOwotCWNyNF9jbGVhcl9iaXRzKFg4Nl9DUjRfT1NYU0FW RSk7CisJY3I0X2NsZWFyX2JpdHNfaXJxc19vZmYoWDg2X0NSNF9PU1hTQVZFKTsKIAlmcHVfX3hz dGF0ZV9jbGVhcl9hbGxfY3B1X2NhcHMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC94ODYva2Vy bmVsL3Byb2Nlc3MuYyBiL2FyY2gveDg2L2tlcm5lbC9wcm9jZXNzLmMKaW5kZXggYzY3Njg1MzM3 YzVhLi40MTIyNjVmZTE0ZGYgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5lbC9wcm9jZXNzLmMK KysrIGIvYXJjaC94ODYva2VybmVsL3Byb2Nlc3MuYwpAQCAtMTI4LDI1ICsxMjgsMzUgQEAgdm9p ZCBmbHVzaF90aHJlYWQodm9pZCkKIAogdm9pZCBkaXNhYmxlX1RTQyh2b2lkKQogeworCXVuc2ln bmVkIGxvbmcgZmxhZ3M7CisKIAlwcmVlbXB0X2Rpc2FibGUoKTsKLQlpZiAoIXRlc3RfYW5kX3Nl dF90aHJlYWRfZmxhZyhUSUZfTk9UU0MpKQorCWlmICghdGVzdF9hbmRfc2V0X3RocmVhZF9mbGFn KFRJRl9OT1RTQykpIHsKIAkJLyoKIAkJICogTXVzdCBmbGlwIHRoZSBDUFUgc3RhdGUgc3luY2hy b25vdXNseSB3aXRoCiAJCSAqIFRJRl9OT1RTQyBpbiB0aGUgY3VycmVudCBydW5uaW5nIGNvbnRl eHQuCiAJCSAqLwotCQljcjRfc2V0X2JpdHMoWDg2X0NSNF9UU0QpOworCQlsb2NhbF9pcnFfc2F2 ZShmbGFncyk7CisJCWNyNF9zZXRfYml0c19pcnFzX29mZihYODZfQ1I0X1RTRCk7CisJCWxvY2Fs X2lycV9yZXN0b3JlKGZsYWdzKTsKKwl9CiAJcHJlZW1wdF9lbmFibGUoKTsKIH0KIAogc3RhdGlj IHZvaWQgZW5hYmxlX1RTQyh2b2lkKQogeworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKIAlwcmVl bXB0X2Rpc2FibGUoKTsKLQlpZiAodGVzdF9hbmRfY2xlYXJfdGhyZWFkX2ZsYWcoVElGX05PVFND KSkKKwlpZiAodGVzdF9hbmRfY2xlYXJfdGhyZWFkX2ZsYWcoVElGX05PVFNDKSkgewogCQkvKgog CQkgKiBNdXN0IGZsaXAgdGhlIENQVSBzdGF0ZSBzeW5jaHJvbm91c2x5IHdpdGgKIAkJICogVElG X05PVFNDIGluIHRoZSBjdXJyZW50IHJ1bm5pbmcgY29udGV4dC4KIAkJICovCi0JCWNyNF9jbGVh cl9iaXRzKFg4Nl9DUjRfVFNEKTsKKwkJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworCQljcjRfY2xl YXJfYml0c19pcnFzX29mZihYODZfQ1I0X1RTRCk7CisJCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdz KTsKKwl9CiAJcHJlZW1wdF9lbmFibGUoKTsKIH0KIApAQCAtMjkzLDcgKzMwMyw3IEBAIHZvaWQg X19zd2l0Y2hfdG9feHRyYShzdHJ1Y3QgdGFza19zdHJ1Y3QgKnByZXZfcCwgc3RydWN0IHRhc2tf c3RydWN0ICpuZXh0X3AsCiAJfQogCiAJaWYgKCh0aWZwIF4gdGlmbikgJiBfVElGX05PVFNDKQot CQljcjRfdG9nZ2xlX2JpdHMoWDg2X0NSNF9UU0QpOworCQljcjRfdG9nZ2xlX2JpdHNfaXJxc19v ZmYoWDg2X0NSNF9UU0QpOwogCiAJaWYgKCh0aWZwIF4gdGlmbikgJiBfVElGX05PQ1BVSUQpCiAJ CXNldF9jcHVpZF9mYXVsdGluZyghISh0aWZuICYgX1RJRl9OT0NQVUlEKSk7CmRpZmYgLS1naXQg YS9hcmNoL3g4Ni9rZXJuZWwvcmVib290LmMgYi9hcmNoL3g4Ni9rZXJuZWwvcmVib290LmMKaW5k ZXggMjEyNmI5ZDI3YzM0Li44NmFkNzBjMDI2MDcgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2tlcm5l bC9yZWJvb3QuYworKysgYi9hcmNoL3g4Ni9rZXJuZWwvcmVib290LmMKQEAgLTEwOSw3ICsxMDks NyBAQCB2b2lkIF9fbm9yZXR1cm4gbWFjaGluZV9yZWFsX3Jlc3RhcnQodW5zaWduZWQgaW50IHR5 cGUpCiAKIAkvKiBFeGl0aW5nIGxvbmcgbW9kZSB3aWxsIGZhaWwgaWYgQ1I0LlBDSURFIGlzIHNl dC4gKi8KIAlpZiAoc3RhdGljX2NwdV9oYXMoWDg2X0ZFQVRVUkVfUENJRCkpCi0JCWNyNF9jbGVh cl9iaXRzKFg4Nl9DUjRfUENJREUpOworCQljcjRfY2xlYXJfYml0c19pcnFzX29mZihYODZfQ1I0 X1BDSURFKTsKICNlbmRpZgogCiAJLyogSnVtcCB0byB0aGUgaWRlbnRpdHktbWFwcGVkIGxvdyBt ZW1vcnkgY29kZSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC94ODYva3ZtL3ZteC5jIGIvYXJjaC94ODYv a3ZtL3ZteC5jCmluZGV4IGE2ZjRmMDk1ZjhmNC4uYTBiMzg3ZGZiZjVjIDEwMDY0NAotLS0gYS9h cmNoL3g4Ni9rdm0vdm14LmMKKysrIGIvYXJjaC94ODYva3ZtL3ZteC5jCkBAIC0zNTAwLDcgKzM1 MDAsMTIgQEAgc3RhdGljIF9faW5pdCBpbnQgdm14X2Rpc2FibGVkX2J5X2Jpb3Modm9pZCkKIAog c3RhdGljIHZvaWQga3ZtX2NwdV92bXhvbih1NjQgYWRkcikKIHsKLQljcjRfc2V0X2JpdHMoWDg2 X0NSNF9WTVhFKTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJbG9jYWxfaXJxX3NhdmUoZmxh Z3MpOworCWNyNF9zZXRfYml0c19pcnFzX29mZihYODZfQ1I0X1ZNWEUpOworCWxvY2FsX2lycV9y ZXN0b3JlKGZsYWdzKTsKKwogCWludGVsX3B0X2hhbmRsZV92bXgoMSk7CiAKIAlhc20gdm9sYXRp bGUgKEFTTV9WTVhfVk1YT05fUkFYCkBAIC0zNTY1LDEwICszNTcwLDE0IEBAIHN0YXRpYyB2b2lk IHZtY2xlYXJfbG9jYWxfbG9hZGVkX3ZtY3NzKHZvaWQpCiAgKi8KIHN0YXRpYyB2b2lkIGt2bV9j cHVfdm14b2ZmKHZvaWQpCiB7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKwogCWFzbSB2b2xhdGls ZSAoX19leChBU01fVk1YX1ZNWE9GRikgOiA6IDogImNjIik7CiAKIAlpbnRlbF9wdF9oYW5kbGVf dm14KDApOwotCWNyNF9jbGVhcl9iaXRzKFg4Nl9DUjRfVk1YRSk7CisJbG9jYWxfaXJxX3NhdmUo ZmxhZ3MpOworCWNyNF9jbGVhcl9iaXRzX2lycXNfb2ZmKFg4Nl9DUjRfVk1YRSk7CisJbG9jYWxf aXJxX3Jlc3RvcmUoZmxhZ3MpOwogfQogCiBzdGF0aWMgdm9pZCBoYXJkd2FyZV9kaXNhYmxlKHZv aWQpCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9tbS9pbml0LmMgYi9hcmNoL3g4Ni9tbS9pbml0LmMK aW5kZXggYWY1YzFlZDIxZDQzLi5kZGQyNDhhY2FiOGUgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L21t L2luaXQuYworKysgYi9hcmNoL3g4Ni9tbS9pbml0LmMKQEAgLTE5OSw2ICsxOTksOCBAQCBzdGF0 aWMgdm9pZCBzZXR1cF9wY2lkKHZvaWQpCiAjaWZkZWYgQ09ORklHX1g4Nl82NAogCWlmIChib290 X2NwdV9oYXMoWDg2X0ZFQVRVUkVfUENJRCkpIHsKIAkJaWYgKGJvb3RfY3B1X2hhcyhYODZfRkVB VFVSRV9QR0UpKSB7CisJCQl1bnNpZ25lZCBsb25nIGZsYWdzOworCiAJCQkvKgogCQkJICogVGhp cyBjYW4ndCBiZSBjcjRfc2V0X2JpdHNfYW5kX3VwZGF0ZV9ib290KCkgLS0KIAkJCSAqIHRoZSB0 cmFtcG9saW5lIGNvZGUgY2FuJ3QgaGFuZGxlIENSNC5QQ0lERSBhbmQKQEAgLTIxMCw3ICsyMTIs OSBAQCBzdGF0aWMgdm9pZCBzZXR1cF9wY2lkKHZvaWQpCiAJCQkgKiBJbnN0ZWFkLCB3ZSBicnV0 ZS1mb3JjZSBpdCBhbmQgc2V0IENSNC5QQ0lERQogCQkJICogbWFudWFsbHkgaW4gc3RhcnRfc2Vj b25kYXJ5KCkuCiAJCQkgKi8KLQkJCWNyNF9zZXRfYml0cyhYODZfQ1I0X1BDSURFKTsKKwkJCWxv Y2FsX2lycV9zYXZlKGZsYWdzKTsKKwkJCWNyNF9zZXRfYml0c19pcnFzX29mZihYODZfQ1I0X1BD SURFKTsKKwkJCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKIAkJfSBlbHNlIHsKIAkJCS8qCiAJ CQkgKiBmbHVzaF90bGJfYWxsKCksIGFzIGN1cnJlbnRseSBpbXBsZW1lbnRlZCwgd29uJ3QK